diff options
Diffstat (limited to 'wp-includes/blocks')
684 files changed, 34749 insertions, 0 deletions
diff --git a/wp-includes/blocks/archives.php b/wp-includes/blocks/archives.php new file mode 100644 index 0000000..695affd --- /dev/null +++ b/wp-includes/blocks/archives.php @@ -0,0 +1,118 @@ +<?php +/** + * Server-side rendering of the `core/archives` block. + * + * @package WordPress + */ + +/** + * Renders the `core/archives` block on server. + * + * @see WP_Widget_Archives + * + * @param array $attributes The block attributes. + * + * @return string Returns the post content with archives added. + */ +function render_block_core_archives( $attributes ) { + $show_post_count = ! empty( $attributes['showPostCounts'] ); + $type = isset( $attributes['type'] ) ? $attributes['type'] : 'monthly'; + + $class = 'wp-block-archives-list'; + + if ( ! empty( $attributes['displayAsDropdown'] ) ) { + + $class = 'wp-block-archives-dropdown'; + + $dropdown_id = wp_unique_id( 'wp-block-archives-' ); + $title = __( 'Archives' ); + + /** This filter is documented in wp-includes/widgets/class-wp-widget-archives.php */ + $dropdown_args = apply_filters( + 'widget_archives_dropdown_args', + array( + 'type' => $type, + 'format' => 'option', + 'show_post_count' => $show_post_count, + ) + ); + + $dropdown_args['echo'] = 0; + + $archives = wp_get_archives( $dropdown_args ); + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $class ) ); + + switch ( $dropdown_args['type'] ) { + case 'yearly': + $label = __( 'Select Year' ); + break; + case 'monthly': + $label = __( 'Select Month' ); + break; + case 'daily': + $label = __( 'Select Day' ); + break; + case 'weekly': + $label = __( 'Select Week' ); + break; + default: + $label = __( 'Select Post' ); + break; + } + + $show_label = empty( $attributes['showLabel'] ) ? ' screen-reader-text' : ''; + + $block_content = '<label for="' . $dropdown_id . '" class="wp-block-archives__label' . $show_label . '">' . esc_html( $title ) . '</label> + <select id="' . $dropdown_id . '" name="archive-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;"> + <option value="">' . esc_html( $label ) . '</option>' . $archives . '</select>'; + + return sprintf( + '<div %1$s>%2$s</div>', + $wrapper_attributes, + $block_content + ); + } + + /** This filter is documented in wp-includes/widgets/class-wp-widget-archives.php */ + $archives_args = apply_filters( + 'widget_archives_args', + array( + 'type' => $type, + 'show_post_count' => $show_post_count, + ) + ); + + $archives_args['echo'] = 0; + + $archives = wp_get_archives( $archives_args ); + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $class ) ); + + if ( empty( $archives ) ) { + return sprintf( + '<div %1$s>%2$s</div>', + $wrapper_attributes, + __( 'No archives to show.' ) + ); + } + + return sprintf( + '<ul %1$s>%2$s</ul>', + $wrapper_attributes, + $archives + ); +} + +/** + * Register archives block. + */ +function register_block_core_archives() { + register_block_type_from_metadata( + __DIR__ . '/archives', + array( + 'render_callback' => 'render_block_core_archives', + ) + ); +} +add_action( 'init', 'register_block_core_archives' ); diff --git a/wp-includes/blocks/archives/block.json b/wp-includes/blocks/archives/block.json new file mode 100644 index 0000000..7e0f518 --- /dev/null +++ b/wp-includes/blocks/archives/block.json @@ -0,0 +1,53 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/archives", + "title": "Archives", + "category": "widgets", + "description": "Display a date archive of your posts.", + "textdomain": "default", + "attributes": { + "displayAsDropdown": { + "type": "boolean", + "default": false + }, + "showLabel": { + "type": "boolean", + "default": true + }, + "showPostCounts": { + "type": "boolean", + "default": false + }, + "type": { + "type": "string", + "default": "monthly" + } + }, + "supports": { + "align": true, + "html": false, + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-archives-editor" +} diff --git a/wp-includes/blocks/archives/editor-rtl.css b/wp-includes/blocks/archives/editor-rtl.css new file mode 100644 index 0000000..172d787 --- /dev/null +++ b/wp-includes/blocks/archives/editor-rtl.css @@ -0,0 +1,3 @@ +ul.wp-block-archives{ + padding-right:2.5em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/archives/editor-rtl.min.css b/wp-includes/blocks/archives/editor-rtl.min.css new file mode 100644 index 0000000..acf5f4d --- /dev/null +++ b/wp-includes/blocks/archives/editor-rtl.min.css @@ -0,0 +1 @@ +ul.wp-block-archives{padding-right:2.5em}
\ No newline at end of file diff --git a/wp-includes/blocks/archives/editor.css b/wp-includes/blocks/archives/editor.css new file mode 100644 index 0000000..434d6cd --- /dev/null +++ b/wp-includes/blocks/archives/editor.css @@ -0,0 +1,3 @@ +ul.wp-block-archives{ + padding-left:2.5em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/archives/editor.min.css b/wp-includes/blocks/archives/editor.min.css new file mode 100644 index 0000000..aa6ba10 --- /dev/null +++ b/wp-includes/blocks/archives/editor.min.css @@ -0,0 +1 @@ +ul.wp-block-archives{padding-left:2.5em}
\ No newline at end of file diff --git a/wp-includes/blocks/archives/style-rtl.css b/wp-includes/blocks/archives/style-rtl.css new file mode 100644 index 0000000..703c91c --- /dev/null +++ b/wp-includes/blocks/archives/style-rtl.css @@ -0,0 +1,7 @@ +.wp-block-archives{ + box-sizing:border-box; +} + +.wp-block-archives-dropdown label{ + display:block; +}
\ No newline at end of file diff --git a/wp-includes/blocks/archives/style-rtl.min.css b/wp-includes/blocks/archives/style-rtl.min.css new file mode 100644 index 0000000..2c498f0 --- /dev/null +++ b/wp-includes/blocks/archives/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-archives{box-sizing:border-box}.wp-block-archives-dropdown label{display:block}
\ No newline at end of file diff --git a/wp-includes/blocks/archives/style.css b/wp-includes/blocks/archives/style.css new file mode 100644 index 0000000..703c91c --- /dev/null +++ b/wp-includes/blocks/archives/style.css @@ -0,0 +1,7 @@ +.wp-block-archives{ + box-sizing:border-box; +} + +.wp-block-archives-dropdown label{ + display:block; +}
\ No newline at end of file diff --git a/wp-includes/blocks/archives/style.min.css b/wp-includes/blocks/archives/style.min.css new file mode 100644 index 0000000..2c498f0 --- /dev/null +++ b/wp-includes/blocks/archives/style.min.css @@ -0,0 +1 @@ +.wp-block-archives{box-sizing:border-box}.wp-block-archives-dropdown label{display:block}
\ No newline at end of file diff --git a/wp-includes/blocks/audio/block.json b/wp-includes/blocks/audio/block.json new file mode 100644 index 0000000..a4740e3 --- /dev/null +++ b/wp-includes/blocks/audio/block.json @@ -0,0 +1,61 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/audio", + "title": "Audio", + "category": "media", + "description": "Embed a simple audio player.", + "keywords": [ "music", "sound", "podcast", "recording" ], + "textdomain": "default", + "attributes": { + "src": { + "type": "string", + "source": "attribute", + "selector": "audio", + "attribute": "src", + "__experimentalRole": "content" + }, + "caption": { + "type": "string", + "source": "html", + "selector": "figcaption", + "__experimentalRole": "content" + }, + "id": { + "type": "number", + "__experimentalRole": "content" + }, + "autoplay": { + "type": "boolean", + "source": "attribute", + "selector": "audio", + "attribute": "autoplay" + }, + "loop": { + "type": "boolean", + "source": "attribute", + "selector": "audio", + "attribute": "loop" + }, + "preload": { + "type": "string", + "source": "attribute", + "selector": "audio", + "attribute": "preload" + } + }, + "supports": { + "anchor": true, + "align": true, + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + } + }, + "editorStyle": "wp-block-audio-editor", + "style": "wp-block-audio" +} diff --git a/wp-includes/blocks/audio/editor-rtl.css b/wp-includes/blocks/audio/editor-rtl.css new file mode 100644 index 0000000..cf0ba57 --- /dev/null +++ b/wp-includes/blocks/audio/editor-rtl.css @@ -0,0 +1,15 @@ +.wp-block-audio{ + margin-left:0; + margin-right:0; + position:relative; +} +.wp-block-audio.is-transient audio{ + opacity:.3; +} +.wp-block-audio .components-spinner{ + margin-right:-9px; + margin-top:-9px; + position:absolute; + right:50%; + top:50%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/audio/editor-rtl.min.css b/wp-includes/blocks/audio/editor-rtl.min.css new file mode 100644 index 0000000..175a65f --- /dev/null +++ b/wp-includes/blocks/audio/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-audio{margin-left:0;margin-right:0;position:relative}.wp-block-audio.is-transient audio{opacity:.3}.wp-block-audio .components-spinner{margin-right:-9px;margin-top:-9px;position:absolute;right:50%;top:50%}
\ No newline at end of file diff --git a/wp-includes/blocks/audio/editor.css b/wp-includes/blocks/audio/editor.css new file mode 100644 index 0000000..435b3ca --- /dev/null +++ b/wp-includes/blocks/audio/editor.css @@ -0,0 +1,15 @@ +.wp-block-audio{ + margin-left:0; + margin-right:0; + position:relative; +} +.wp-block-audio.is-transient audio{ + opacity:.3; +} +.wp-block-audio .components-spinner{ + left:50%; + margin-left:-9px; + margin-top:-9px; + position:absolute; + top:50%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/audio/editor.min.css b/wp-includes/blocks/audio/editor.min.css new file mode 100644 index 0000000..05557ca --- /dev/null +++ b/wp-includes/blocks/audio/editor.min.css @@ -0,0 +1 @@ +.wp-block-audio{margin-left:0;margin-right:0;position:relative}.wp-block-audio.is-transient audio{opacity:.3}.wp-block-audio .components-spinner{left:50%;margin-left:-9px;margin-top:-9px;position:absolute;top:50%}
\ No newline at end of file diff --git a/wp-includes/blocks/audio/style-rtl.css b/wp-includes/blocks/audio/style-rtl.css new file mode 100644 index 0000000..015fc69 --- /dev/null +++ b/wp-includes/blocks/audio/style-rtl.css @@ -0,0 +1,11 @@ +.wp-block-audio{ + box-sizing:border-box; +} +.wp-block-audio figcaption{ + margin-bottom:1em; + margin-top:.5em; +} +.wp-block-audio audio{ + min-width:300px; + width:100%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/audio/style-rtl.min.css b/wp-includes/blocks/audio/style-rtl.min.css new file mode 100644 index 0000000..1d18616 --- /dev/null +++ b/wp-includes/blocks/audio/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-audio{box-sizing:border-box}.wp-block-audio figcaption{margin-bottom:1em;margin-top:.5em}.wp-block-audio audio{min-width:300px;width:100%}
\ No newline at end of file diff --git a/wp-includes/blocks/audio/style.css b/wp-includes/blocks/audio/style.css new file mode 100644 index 0000000..015fc69 --- /dev/null +++ b/wp-includes/blocks/audio/style.css @@ -0,0 +1,11 @@ +.wp-block-audio{ + box-sizing:border-box; +} +.wp-block-audio figcaption{ + margin-bottom:1em; + margin-top:.5em; +} +.wp-block-audio audio{ + min-width:300px; + width:100%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/audio/style.min.css b/wp-includes/blocks/audio/style.min.css new file mode 100644 index 0000000..1d18616 --- /dev/null +++ b/wp-includes/blocks/audio/style.min.css @@ -0,0 +1 @@ +.wp-block-audio{box-sizing:border-box}.wp-block-audio figcaption{margin-bottom:1em;margin-top:.5em}.wp-block-audio audio{min-width:300px;width:100%}
\ No newline at end of file diff --git a/wp-includes/blocks/audio/theme-rtl.css b/wp-includes/blocks/audio/theme-rtl.css new file mode 100644 index 0000000..f1ec35b --- /dev/null +++ b/wp-includes/blocks/audio/theme-rtl.css @@ -0,0 +1,12 @@ +.wp-block-audio figcaption{ + color:#555; + font-size:13px; + text-align:center; +} +.is-dark-theme .wp-block-audio figcaption{ + color:hsla(0,0%,100%,.65); +} + +.wp-block-audio{ + margin:0 0 1em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/audio/theme-rtl.min.css b/wp-includes/blocks/audio/theme-rtl.min.css new file mode 100644 index 0000000..632556a --- /dev/null +++ b/wp-includes/blocks/audio/theme-rtl.min.css @@ -0,0 +1 @@ +.wp-block-audio figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-audio figcaption{color:hsla(0,0%,100%,.65)}.wp-block-audio{margin:0 0 1em}
\ No newline at end of file diff --git a/wp-includes/blocks/audio/theme.css b/wp-includes/blocks/audio/theme.css new file mode 100644 index 0000000..f1ec35b --- /dev/null +++ b/wp-includes/blocks/audio/theme.css @@ -0,0 +1,12 @@ +.wp-block-audio figcaption{ + color:#555; + font-size:13px; + text-align:center; +} +.is-dark-theme .wp-block-audio figcaption{ + color:hsla(0,0%,100%,.65); +} + +.wp-block-audio{ + margin:0 0 1em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/audio/theme.min.css b/wp-includes/blocks/audio/theme.min.css new file mode 100644 index 0000000..632556a --- /dev/null +++ b/wp-includes/blocks/audio/theme.min.css @@ -0,0 +1 @@ +.wp-block-audio figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-audio figcaption{color:hsla(0,0%,100%,.65)}.wp-block-audio{margin:0 0 1em}
\ No newline at end of file diff --git a/wp-includes/blocks/avatar.php b/wp-includes/blocks/avatar.php new file mode 100644 index 0000000..d404fb8 --- /dev/null +++ b/wp-includes/blocks/avatar.php @@ -0,0 +1,150 @@ +<?php +/** + * Server-side rendering of the `core/avatar` block. + * + * @package WordPress + */ + +/** + * Renders the `core/avatar` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Return the avatar. + */ +function render_block_core_avatar( $attributes, $content, $block ) { + $size = isset( $attributes['size'] ) ? $attributes['size'] : 96; + $wrapper_attributes = get_block_wrapper_attributes(); + $border_attributes = get_block_core_avatar_border_attributes( $attributes ); + + // Class gets passed through `esc_attr` via `get_avatar`. + $image_classes = ! empty( $border_attributes['class'] ) + ? "wp-block-avatar__image {$border_attributes['class']}" + : 'wp-block-avatar__image'; + + // Unlike class, `get_avatar` doesn't filter the styles via `esc_attr`. + // The style engine does pass the border styles through + // `safecss_filter_attr` however. + $image_styles = ! empty( $border_attributes['style'] ) + ? sprintf( ' style="%s"', esc_attr( $border_attributes['style'] ) ) + : ''; + + if ( ! isset( $block->context['commentId'] ) ) { + $author_id = isset( $attributes['userId'] ) ? $attributes['userId'] : get_post_field( 'post_author', $block->context['postId'] ); + $author_name = get_the_author_meta( 'display_name', $author_id ); + // translators: %s is the Author name. + $alt = sprintf( __( '%s Avatar' ), $author_name ); + $avatar_block = get_avatar( + $author_id, + $size, + '', + $alt, + array( + 'extra_attr' => $image_styles, + 'class' => $image_classes, + ) + ); + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { + $label = ''; + if ( '_blank' === $attributes['linkTarget'] ) { + // translators: %s is the Author name. + $label = 'aria-label="' . sprintf( esc_attr__( '(%s author archive, opens in a new tab)' ), $author_name ) . '"'; + } + // translators: %1$s: Author archive link. %2$s: Link target. %3$s Aria label. %4$s Avatar image. + $avatar_block = sprintf( '<a href="%1$s" target="%2$s" %3$s class="wp-block-avatar__link">%4$s</a>', esc_url( get_author_posts_url( $author_id ) ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block ); + } + return sprintf( '<div %1s>%2s</div>', $wrapper_attributes, $avatar_block ); + } + $comment = get_comment( $block->context['commentId'] ); + if ( ! $comment ) { + return ''; + } + /* translators: %s is the Comment Author name */ + $alt = sprintf( __( '%s Avatar' ), $comment->comment_author ); + $avatar_block = get_avatar( + $comment, + $size, + '', + $alt, + array( + 'extra_attr' => $image_styles, + 'class' => $image_classes, + ) + ); + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] && isset( $comment->comment_author_url ) && '' !== $comment->comment_author_url ) { + $label = ''; + if ( '_blank' === $attributes['linkTarget'] ) { + // translators: %s is the Comment Author name. + $label = 'aria-label="' . sprintf( esc_attr__( '(%s website link, opens in a new tab)' ), $comment->comment_author ) . '"'; + } + // translators: %1$s: Comment Author website link. %2$s: Link target. %3$s Aria label. %4$s Avatar image. + $avatar_block = sprintf( '<a href="%1$s" target="%2$s" %3$s class="wp-block-avatar__link">%4$s</a>', esc_url( $comment->comment_author_url ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block ); + } + return sprintf( '<div %1s>%2s</div>', $wrapper_attributes, $avatar_block ); +} + +/** + * Generates class names and styles to apply the border support styles for + * the Avatar block. + * + * @param array $attributes The block attributes. + * @return array The border-related classnames and styles for the block. + */ +function get_block_core_avatar_border_attributes( $attributes ) { + $border_styles = array(); + $sides = array( 'top', 'right', 'bottom', 'left' ); + + // Border radius. + if ( isset( $attributes['style']['border']['radius'] ) ) { + $border_styles['radius'] = $attributes['style']['border']['radius']; + } + + // Border style. + if ( isset( $attributes['style']['border']['style'] ) ) { + $border_styles['style'] = $attributes['style']['border']['style']; + } + + // Border width. + if ( isset( $attributes['style']['border']['width'] ) ) { + $border_styles['width'] = $attributes['style']['border']['width']; + } + + // Border color. + $preset_color = array_key_exists( 'borderColor', $attributes ) ? "var:preset|color|{$attributes['borderColor']}" : null; + $custom_color = $attributes['style']['border']['color'] ?? null; + $border_styles['color'] = $preset_color ? $preset_color : $custom_color; + + // Individual border styles e.g. top, left etc. + foreach ( $sides as $side ) { + $border = $attributes['style']['border'][ $side ] ?? null; + $border_styles[ $side ] = array( + 'color' => isset( $border['color'] ) ? $border['color'] : null, + 'style' => isset( $border['style'] ) ? $border['style'] : null, + 'width' => isset( $border['width'] ) ? $border['width'] : null, + ); + } + + $styles = wp_style_engine_get_styles( array( 'border' => $border_styles ) ); + $attributes = array(); + if ( ! empty( $styles['classnames'] ) ) { + $attributes['class'] = $styles['classnames']; + } + if ( ! empty( $styles['css'] ) ) { + $attributes['style'] = $styles['css']; + } + return $attributes; +} + +/** + * Registers the `core/avatar` block on the server. + */ +function register_block_core_avatar() { + register_block_type_from_metadata( + __DIR__ . '/avatar', + array( + 'render_callback' => 'render_block_core_avatar', + ) + ); +} +add_action( 'init', 'register_block_core_avatar' ); diff --git a/wp-includes/blocks/avatar/block.json b/wp-includes/blocks/avatar/block.json new file mode 100644 index 0000000..3b4ac7c --- /dev/null +++ b/wp-includes/blocks/avatar/block.json @@ -0,0 +1,56 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/avatar", + "title": "Avatar", + "category": "theme", + "description": "Add a user’s avatar.", + "textdomain": "default", + "attributes": { + "userId": { + "type": "number" + }, + "size": { + "type": "number", + "default": 96 + }, + "isLink": { + "type": "boolean", + "default": false + }, + "linkTarget": { + "type": "string", + "default": "_self" + } + }, + "usesContext": [ "postType", "postId", "commentId" ], + "supports": { + "html": false, + "align": true, + "alignWide": false, + "spacing": { + "margin": true, + "padding": true + }, + "__experimentalBorder": { + "__experimentalSkipSerialization": true, + "radius": true, + "width": true, + "color": true, + "style": true, + "__experimentalDefaultControls": { + "radius": true + } + }, + "color": { + "text": false, + "background": false, + "__experimentalDuotone": "img" + } + }, + "selectors": { + "border": ".wp-block-avatar img" + }, + "editorStyle": "wp-block-avatar-editor", + "style": "wp-block-avatar" +} diff --git a/wp-includes/blocks/avatar/editor-rtl.css b/wp-includes/blocks/avatar/editor-rtl.css new file mode 100644 index 0000000..5e3ddc5 --- /dev/null +++ b/wp-includes/blocks/avatar/editor-rtl.css @@ -0,0 +1,7 @@ +.wp-block-avatar__image img{ + width:100%; +} + +.wp-block-avatar.aligncenter .components-resizable-box__container{ + margin:0 auto; +}
\ No newline at end of file diff --git a/wp-includes/blocks/avatar/editor-rtl.min.css b/wp-includes/blocks/avatar/editor-rtl.min.css new file mode 100644 index 0000000..88706a0 --- /dev/null +++ b/wp-includes/blocks/avatar/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-avatar__image img{width:100%}.wp-block-avatar.aligncenter .components-resizable-box__container{margin:0 auto}
\ No newline at end of file diff --git a/wp-includes/blocks/avatar/editor.css b/wp-includes/blocks/avatar/editor.css new file mode 100644 index 0000000..5e3ddc5 --- /dev/null +++ b/wp-includes/blocks/avatar/editor.css @@ -0,0 +1,7 @@ +.wp-block-avatar__image img{ + width:100%; +} + +.wp-block-avatar.aligncenter .components-resizable-box__container{ + margin:0 auto; +}
\ No newline at end of file diff --git a/wp-includes/blocks/avatar/editor.min.css b/wp-includes/blocks/avatar/editor.min.css new file mode 100644 index 0000000..88706a0 --- /dev/null +++ b/wp-includes/blocks/avatar/editor.min.css @@ -0,0 +1 @@ +.wp-block-avatar__image img{width:100%}.wp-block-avatar.aligncenter .components-resizable-box__container{margin:0 auto}
\ No newline at end of file diff --git a/wp-includes/blocks/avatar/style-rtl.css b/wp-includes/blocks/avatar/style-rtl.css new file mode 100644 index 0000000..8742c0f --- /dev/null +++ b/wp-includes/blocks/avatar/style-rtl.css @@ -0,0 +1,9 @@ +.wp-block-avatar{ + line-height:0; +} +.wp-block-avatar,.wp-block-avatar img{ + box-sizing:border-box; +} +.wp-block-avatar.aligncenter{ + text-align:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/avatar/style-rtl.min.css b/wp-includes/blocks/avatar/style-rtl.min.css new file mode 100644 index 0000000..c9989c1 --- /dev/null +++ b/wp-includes/blocks/avatar/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-avatar{line-height:0}.wp-block-avatar,.wp-block-avatar img{box-sizing:border-box}.wp-block-avatar.aligncenter{text-align:center}
\ No newline at end of file diff --git a/wp-includes/blocks/avatar/style.css b/wp-includes/blocks/avatar/style.css new file mode 100644 index 0000000..8742c0f --- /dev/null +++ b/wp-includes/blocks/avatar/style.css @@ -0,0 +1,9 @@ +.wp-block-avatar{ + line-height:0; +} +.wp-block-avatar,.wp-block-avatar img{ + box-sizing:border-box; +} +.wp-block-avatar.aligncenter{ + text-align:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/avatar/style.min.css b/wp-includes/blocks/avatar/style.min.css new file mode 100644 index 0000000..c9989c1 --- /dev/null +++ b/wp-includes/blocks/avatar/style.min.css @@ -0,0 +1 @@ +.wp-block-avatar{line-height:0}.wp-block-avatar,.wp-block-avatar img{box-sizing:border-box}.wp-block-avatar.aligncenter{text-align:center}
\ No newline at end of file diff --git a/wp-includes/blocks/block.php b/wp-includes/blocks/block.php new file mode 100644 index 0000000..d51b35d --- /dev/null +++ b/wp-includes/blocks/block.php @@ -0,0 +1,65 @@ +<?php +/** + * Server-side rendering of the `core/block` block. + * + * @package WordPress + */ + +/** + * Renders the `core/block` block on server. + * + * @param array $attributes The block attributes. + * + * @return string Rendered HTML of the referenced block. + */ +function render_block_core_block( $attributes ) { + static $seen_refs = array(); + + if ( empty( $attributes['ref'] ) ) { + return ''; + } + + $reusable_block = get_post( $attributes['ref'] ); + if ( ! $reusable_block || 'wp_block' !== $reusable_block->post_type ) { + return ''; + } + + if ( isset( $seen_refs[ $attributes['ref'] ] ) ) { + // WP_DEBUG_DISPLAY must only be honored when WP_DEBUG. This precedent + // is set in `wp_debug_mode()`. + $is_debug = WP_DEBUG && WP_DEBUG_DISPLAY; + + return $is_debug ? + // translators: Visible only in the front end, this warning takes the place of a faulty block. + __( '[block rendering halted]' ) : + ''; + } + + if ( 'publish' !== $reusable_block->post_status || ! empty( $reusable_block->post_password ) ) { + return ''; + } + + $seen_refs[ $attributes['ref'] ] = true; + + // Handle embeds for reusable blocks. + global $wp_embed; + $content = $wp_embed->run_shortcode( $reusable_block->post_content ); + $content = $wp_embed->autoembed( $content ); + + $content = do_blocks( $content ); + unset( $seen_refs[ $attributes['ref'] ] ); + return $content; +} + +/** + * Registers the `core/block` block. + */ +function register_block_core_block() { + register_block_type_from_metadata( + __DIR__ . '/block', + array( + 'render_callback' => 'render_block_core_block', + ) + ); +} +add_action( 'init', 'register_block_core_block' ); diff --git a/wp-includes/blocks/block/block.json b/wp-includes/blocks/block/block.json new file mode 100644 index 0000000..4cb5396 --- /dev/null +++ b/wp-includes/blocks/block/block.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/block", + "title": "Pattern", + "category": "reusable", + "description": "Create and save content to reuse across your site. Update the pattern, and the changes apply everywhere it’s used.", + "keywords": [ "reusable" ], + "textdomain": "default", + "attributes": { + "ref": { + "type": "number" + } + }, + "supports": { + "customClassName": false, + "html": false, + "inserter": false + } +} diff --git a/wp-includes/blocks/block/editor-rtl.css b/wp-includes/blocks/block/editor-rtl.css new file mode 100644 index 0000000..da6bc36 --- /dev/null +++ b/wp-includes/blocks/block/editor-rtl.css @@ -0,0 +1,20 @@ +.edit-post-visual-editor .block-library-block__reusable-block-container .is-root-container{ + padding-left:0; + padding-right:0; +} +.edit-post-visual-editor .block-library-block__reusable-block-container .block-editor-writing-flow{ + display:block; +} +.edit-post-visual-editor .block-library-block__reusable-block-container .components-disabled .block-list-appender{ + display:none; +} + +.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected{ + box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color); +} +.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{ + box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color); +} +.is-dark-theme .edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{ + box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff; +}
\ No newline at end of file diff --git a/wp-includes/blocks/block/editor-rtl.min.css b/wp-includes/blocks/block/editor-rtl.min.css new file mode 100644 index 0000000..cd6495b --- /dev/null +++ b/wp-includes/blocks/block/editor-rtl.min.css @@ -0,0 +1 @@ +.edit-post-visual-editor .block-library-block__reusable-block-container .is-root-container{padding-left:0;padding-right:0}.edit-post-visual-editor .block-library-block__reusable-block-container .block-editor-writing-flow{display:block}.edit-post-visual-editor .block-library-block__reusable-block-container .components-disabled .block-list-appender{display:none}.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color)}.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color)}.is-dark-theme .edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff}
\ No newline at end of file diff --git a/wp-includes/blocks/block/editor.css b/wp-includes/blocks/block/editor.css new file mode 100644 index 0000000..da6bc36 --- /dev/null +++ b/wp-includes/blocks/block/editor.css @@ -0,0 +1,20 @@ +.edit-post-visual-editor .block-library-block__reusable-block-container .is-root-container{ + padding-left:0; + padding-right:0; +} +.edit-post-visual-editor .block-library-block__reusable-block-container .block-editor-writing-flow{ + display:block; +} +.edit-post-visual-editor .block-library-block__reusable-block-container .components-disabled .block-list-appender{ + display:none; +} + +.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected{ + box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color); +} +.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{ + box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color); +} +.is-dark-theme .edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{ + box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff; +}
\ No newline at end of file diff --git a/wp-includes/blocks/block/editor.min.css b/wp-includes/blocks/block/editor.min.css new file mode 100644 index 0000000..cd6495b --- /dev/null +++ b/wp-includes/blocks/block/editor.min.css @@ -0,0 +1 @@ +.edit-post-visual-editor .block-library-block__reusable-block-container .is-root-container{padding-left:0;padding-right:0}.edit-post-visual-editor .block-library-block__reusable-block-container .block-editor-writing-flow{display:block}.edit-post-visual-editor .block-library-block__reusable-block-container .components-disabled .block-list-appender{display:none}.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color)}.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color)}.is-dark-theme .edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff}
\ No newline at end of file diff --git a/wp-includes/blocks/blocks-json.php b/wp-includes/blocks/blocks-json.php new file mode 100644 index 0000000..8565618 --- /dev/null +++ b/wp-includes/blocks/blocks-json.php @@ -0,0 +1,6073 @@ +<?php return array( + 'archives' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/archives', + 'title' => 'Archives', + 'category' => 'widgets', + 'description' => 'Display a date archive of your posts.', + 'textdomain' => 'default', + 'attributes' => array( + 'displayAsDropdown' => array( + 'type' => 'boolean', + 'default' => false + ), + 'showLabel' => array( + 'type' => 'boolean', + 'default' => true + ), + 'showPostCounts' => array( + 'type' => 'boolean', + 'default' => false + ), + 'type' => array( + 'type' => 'string', + 'default' => 'monthly' + ) + ), + 'supports' => array( + 'align' => true, + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-archives-editor' + ), + 'audio' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/audio', + 'title' => 'Audio', + 'category' => 'media', + 'description' => 'Embed a simple audio player.', + 'keywords' => array( + 'music', + 'sound', + 'podcast', + 'recording' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'src' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'audio', + 'attribute' => 'src', + '__experimentalRole' => 'content' + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'figcaption', + '__experimentalRole' => 'content' + ), + 'id' => array( + 'type' => 'number', + '__experimentalRole' => 'content' + ), + 'autoplay' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'audio', + 'attribute' => 'autoplay' + ), + 'loop' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'audio', + 'attribute' => 'loop' + ), + 'preload' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'audio', + 'attribute' => 'preload' + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => true, + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ) + ), + 'editorStyle' => 'wp-block-audio-editor', + 'style' => 'wp-block-audio' + ), + 'avatar' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/avatar', + 'title' => 'Avatar', + 'category' => 'theme', + 'description' => 'Add a user’s avatar.', + 'textdomain' => 'default', + 'attributes' => array( + 'userId' => array( + 'type' => 'number' + ), + 'size' => array( + 'type' => 'number', + 'default' => 96 + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => false + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ) + ), + 'usesContext' => array( + 'postType', + 'postId', + 'commentId' + ), + 'supports' => array( + 'html' => false, + 'align' => true, + 'alignWide' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + '__experimentalBorder' => array( + '__experimentalSkipSerialization' => true, + 'radius' => true, + 'width' => true, + 'color' => true, + 'style' => true, + '__experimentalDefaultControls' => array( + 'radius' => true + ) + ), + 'color' => array( + 'text' => false, + 'background' => false, + '__experimentalDuotone' => 'img' + ) + ), + 'selectors' => array( + 'border' => '.wp-block-avatar img' + ), + 'editorStyle' => 'wp-block-avatar-editor', + 'style' => 'wp-block-avatar' + ), + 'block' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/block', + 'title' => 'Pattern', + 'category' => 'reusable', + 'description' => 'Create and save content to reuse across your site. Update the pattern, and the changes apply everywhere it’s used.', + 'keywords' => array( + 'reusable' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'ref' => array( + 'type' => 'number' + ) + ), + 'supports' => array( + 'customClassName' => false, + 'html' => false, + 'inserter' => false + ) + ), + 'button' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/button', + 'title' => 'Button', + 'category' => 'design', + 'parent' => array( + 'core/buttons' + ), + 'description' => 'Prompt visitors to take action with a button-style link.', + 'keywords' => array( + 'link' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'tagName' => array( + 'type' => 'string', + 'enum' => array( + 'a', + 'button' + ), + 'default' => 'a' + ), + 'type' => array( + 'type' => 'string', + 'default' => 'button' + ), + 'textAlign' => array( + 'type' => 'string' + ), + 'url' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a', + 'attribute' => 'href', + '__experimentalRole' => 'content' + ), + 'title' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a,button', + 'attribute' => 'title', + '__experimentalRole' => 'content' + ), + 'text' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'a,button', + '__experimentalRole' => 'content' + ), + 'linkTarget' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a', + 'attribute' => 'target', + '__experimentalRole' => 'content' + ), + 'rel' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a', + 'attribute' => 'rel', + '__experimentalRole' => 'content' + ), + 'placeholder' => array( + 'type' => 'string' + ), + 'backgroundColor' => array( + 'type' => 'string' + ), + 'textColor' => array( + 'type' => 'string' + ), + 'gradient' => array( + 'type' => 'string' + ), + 'width' => array( + 'type' => 'number' + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => false, + 'alignWide' => false, + 'color' => array( + '__experimentalSkipSerialization' => true, + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'reusable' => false, + 'shadow' => true, + 'spacing' => array( + '__experimentalSkipSerialization' => true, + 'padding' => array( + 'horizontal', + 'vertical' + ), + '__experimentalDefaultControls' => array( + 'padding' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true, + '__experimentalSkipSerialization' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true + ) + ), + '__experimentalSelector' => '.wp-block-button .wp-block-button__link' + ), + 'styles' => array( + array( + 'name' => 'fill', + 'label' => 'Fill', + 'isDefault' => true + ), + array( + 'name' => 'outline', + 'label' => 'Outline' + ) + ), + 'editorStyle' => 'wp-block-button-editor', + 'style' => 'wp-block-button' + ), + 'buttons' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/buttons', + 'title' => 'Buttons', + 'category' => 'design', + 'description' => 'Prompt visitors to take action with a group of button-style links.', + 'keywords' => array( + 'link' + ), + 'textdomain' => 'default', + 'supports' => array( + 'anchor' => true, + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + '__experimentalExposeControlsToChildren' => true, + 'spacing' => array( + 'blockGap' => true, + 'margin' => array( + 'top', + 'bottom' + ), + '__experimentalDefaultControls' => array( + 'blockGap' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'default' => array( + 'type' => 'flex' + ) + ) + ), + 'editorStyle' => 'wp-block-buttons-editor', + 'style' => 'wp-block-buttons' + ), + 'calendar' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/calendar', + 'title' => 'Calendar', + 'category' => 'widgets', + 'description' => 'A calendar of your site’s posts.', + 'keywords' => array( + 'posts', + 'archive' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'month' => array( + 'type' => 'integer' + ), + 'year' => array( + 'type' => 'integer' + ) + ), + 'supports' => array( + 'align' => true, + 'color' => array( + 'link' => true, + '__experimentalSkipSerialization' => array( + 'text', + 'background' + ), + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ), + '__experimentalSelector' => 'table, th' + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'style' => 'wp-block-calendar' + ), + 'categories' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/categories', + 'title' => 'Categories List', + 'category' => 'widgets', + 'description' => 'Display a list of all categories.', + 'textdomain' => 'default', + 'attributes' => array( + 'displayAsDropdown' => array( + 'type' => 'boolean', + 'default' => false + ), + 'showHierarchy' => array( + 'type' => 'boolean', + 'default' => false + ), + 'showPostCounts' => array( + 'type' => 'boolean', + 'default' => false + ), + 'showOnlyTopLevel' => array( + 'type' => 'boolean', + 'default' => false + ), + 'showEmpty' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'supports' => array( + 'align' => true, + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-categories-editor', + 'style' => 'wp-block-categories' + ), + 'code' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/code', + 'title' => 'Code', + 'category' => 'text', + 'description' => 'Display code snippets that respect your spacing and tabs.', + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'code', + '__unstablePreserveWhiteSpace' => true + ) + ), + 'supports' => array( + 'align' => array( + 'wide' + ), + 'anchor' => true, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'spacing' => array( + 'margin' => array( + 'top', + 'bottom' + ), + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), + '__experimentalBorder' => array( + 'radius' => true, + 'color' => true, + 'width' => true, + 'style' => true, + '__experimentalDefaultControls' => array( + 'width' => true, + 'color' => true + ) + ), + 'color' => array( + 'text' => true, + 'background' => true, + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ) + ), + 'style' => 'wp-block-code' + ), + 'column' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/column', + 'title' => 'Column', + 'category' => 'design', + 'parent' => array( + 'core/columns' + ), + 'description' => 'A single column within a columns block.', + 'textdomain' => 'default', + 'attributes' => array( + 'verticalAlignment' => array( + 'type' => 'string' + ), + 'width' => array( + 'type' => 'string' + ), + 'allowedBlocks' => array( + 'type' => 'array' + ), + 'templateLock' => array( + 'type' => array( + 'string', + 'boolean' + ), + 'enum' => array( + 'all', + 'insert', + 'contentOnly', + false + ) + ) + ), + 'supports' => array( + '__experimentalOnEnter' => true, + 'anchor' => true, + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'heading' => true, + 'button' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'blockGap' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'padding' => true, + 'blockGap' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'style' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'style' => true, + 'width' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'layout' => true + ) + ), + 'columns' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/columns', + 'title' => 'Columns', + 'category' => 'design', + 'description' => 'Display content in multiple columns, with blocks added to each column.', + 'textdomain' => 'default', + 'attributes' => array( + 'verticalAlignment' => array( + 'type' => 'string' + ), + 'isStackedOnMobile' => array( + 'type' => 'boolean', + 'default' => true + ), + 'templateLock' => array( + 'type' => array( + 'string', + 'boolean' + ), + 'enum' => array( + 'all', + 'insert', + 'contentOnly', + false + ) + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + 'heading' => true, + 'button' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'blockGap' => array( + '__experimentalDefault' => '2em', + 'sides' => array( + 'horizontal', + 'vertical' + ) + ), + 'margin' => array( + 'top', + 'bottom' + ), + 'padding' => true, + '__experimentalDefaultControls' => array( + 'padding' => true, + 'blockGap' => true + ) + ), + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'allowEditing' => false, + 'default' => array( + 'type' => 'flex', + 'flexWrap' => 'nowrap' + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-columns-editor', + 'style' => 'wp-block-columns' + ), + 'comment-author-name' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comment-author-name', + 'title' => 'Comment Author Name', + 'category' => 'theme', + 'ancestor' => array( + 'core/comment-template' + ), + 'description' => 'Displays the name of the author of the comment.', + 'textdomain' => 'default', + 'attributes' => array( + 'isLink' => array( + 'type' => 'boolean', + 'default' => true + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ), + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'commentId' + ), + 'supports' => array( + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'comment-content' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comment-content', + 'title' => 'Comment Content', + 'category' => 'theme', + 'ancestor' => array( + 'core/comment-template' + ), + 'description' => 'Displays the contents of a comment.', + 'textdomain' => 'default', + 'usesContext' => array( + 'commentId' + ), + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'spacing' => array( + 'padding' => array( + 'horizontal', + 'vertical' + ), + '__experimentalDefaultControls' => array( + 'padding' => true + ) + ), + 'html' => false + ) + ), + 'comment-date' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comment-date', + 'title' => 'Comment Date', + 'category' => 'theme', + 'ancestor' => array( + 'core/comment-template' + ), + 'description' => 'Displays the date on which the comment was posted.', + 'textdomain' => 'default', + 'attributes' => array( + 'format' => array( + 'type' => 'string' + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => true + ) + ), + 'usesContext' => array( + 'commentId' + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'comment-edit-link' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comment-edit-link', + 'title' => 'Comment Edit Link', + 'category' => 'theme', + 'ancestor' => array( + 'core/comment-template' + ), + 'description' => 'Displays a link to edit the comment in the WordPress Dashboard. This link is only visible to users with the edit comment capability.', + 'textdomain' => 'default', + 'usesContext' => array( + 'commentId' + ), + 'attributes' => array( + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ), + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'link' => true, + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'comment-reply-link' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comment-reply-link', + 'title' => 'Comment Reply Link', + 'category' => 'theme', + 'ancestor' => array( + 'core/comment-template' + ), + 'description' => 'Displays a link to reply to a comment.', + 'textdomain' => 'default', + 'usesContext' => array( + 'commentId' + ), + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'color' => array( + 'gradients' => true, + 'link' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'html' => false + ) + ), + 'comment-template' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comment-template', + 'title' => 'Comment Template', + 'category' => 'design', + 'parent' => array( + 'core/comments' + ), + 'description' => 'Contains the block elements used to display a comment, like the title, date, author, avatar and more.', + 'textdomain' => 'default', + 'usesContext' => array( + 'postId' + ), + 'supports' => array( + 'align' => true, + 'html' => false, + 'reusable' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'style' => 'wp-block-comment-template' + ), + 'comments' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comments', + 'title' => 'Comments', + 'category' => 'theme', + 'description' => 'An advanced block that allows displaying post comments using different visual configurations.', + 'textdomain' => 'default', + 'attributes' => array( + 'tagName' => array( + 'type' => 'string', + 'default' => 'div' + ), + 'legacy' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + 'heading' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-comments-editor', + 'usesContext' => array( + 'postId', + 'postType' + ) + ), + 'comments-pagination' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comments-pagination', + 'title' => 'Comments Pagination', + 'category' => 'theme', + 'parent' => array( + 'core/comments' + ), + 'description' => 'Displays a paginated navigation to next/previous set of comments, when applicable.', + 'textdomain' => 'default', + 'attributes' => array( + 'paginationArrow' => array( + 'type' => 'string', + 'default' => 'none' + ) + ), + 'providesContext' => array( + 'comments/paginationArrow' => 'paginationArrow' + ), + 'supports' => array( + 'align' => true, + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'default' => array( + 'type' => 'flex' + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-comments-pagination-editor', + 'style' => 'wp-block-comments-pagination' + ), + 'comments-pagination-next' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comments-pagination-next', + 'title' => 'Comments Next Page', + 'category' => 'theme', + 'parent' => array( + 'core/comments-pagination' + ), + 'description' => 'Displays the next comment\'s page link.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'postId', + 'comments/paginationArrow' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'comments-pagination-numbers' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comments-pagination-numbers', + 'title' => 'Comments Page Numbers', + 'category' => 'theme', + 'parent' => array( + 'core/comments-pagination' + ), + 'description' => 'Displays a list of page numbers for comments pagination.', + 'textdomain' => 'default', + 'usesContext' => array( + 'postId' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'comments-pagination-previous' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comments-pagination-previous', + 'title' => 'Comments Previous Page', + 'category' => 'theme', + 'parent' => array( + 'core/comments-pagination' + ), + 'description' => 'Displays the previous comment\'s page link.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'postId', + 'comments/paginationArrow' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'comments-title' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/comments-title', + 'title' => 'Comments Title', + 'category' => 'theme', + 'ancestor' => array( + 'core/comments' + ), + 'description' => 'Displays a title with the number of comments', + 'textdomain' => 'default', + 'usesContext' => array( + 'postId', + 'postType' + ), + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'showPostTitle' => array( + 'type' => 'boolean', + 'default' => true + ), + 'showCommentsCount' => array( + 'type' => 'boolean', + 'default' => true + ), + 'level' => array( + 'type' => 'number', + 'default' => 2 + ) + ), + 'supports' => array( + 'anchor' => false, + 'align' => true, + 'html' => false, + '__experimentalBorder' => array( + 'radius' => true, + 'color' => true, + 'width' => true, + 'style' => true + ), + 'color' => array( + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + '__experimentalFontFamily' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true + ) + ) + ) + ), + 'cover' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/cover', + 'title' => 'Cover', + 'category' => 'media', + 'description' => 'Add an image or video with a text overlay.', + 'textdomain' => 'default', + 'attributes' => array( + 'url' => array( + 'type' => 'string' + ), + 'useFeaturedImage' => array( + 'type' => 'boolean', + 'default' => false + ), + 'id' => array( + 'type' => 'number' + ), + 'alt' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'alt', + 'default' => '' + ), + 'hasParallax' => array( + 'type' => 'boolean', + 'default' => false + ), + 'isRepeated' => array( + 'type' => 'boolean', + 'default' => false + ), + 'dimRatio' => array( + 'type' => 'number', + 'default' => 100 + ), + 'overlayColor' => array( + 'type' => 'string' + ), + 'customOverlayColor' => array( + 'type' => 'string' + ), + 'backgroundType' => array( + 'type' => 'string', + 'default' => 'image' + ), + 'focalPoint' => array( + 'type' => 'object' + ), + 'minHeight' => array( + 'type' => 'number' + ), + 'minHeightUnit' => array( + 'type' => 'string' + ), + 'gradient' => array( + 'type' => 'string' + ), + 'customGradient' => array( + 'type' => 'string' + ), + 'contentPosition' => array( + 'type' => 'string' + ), + 'isDark' => array( + 'type' => 'boolean', + 'default' => true + ), + 'allowedBlocks' => array( + 'type' => 'array' + ), + 'templateLock' => array( + 'type' => array( + 'string', + 'boolean' + ), + 'enum' => array( + 'all', + 'insert', + 'contentOnly', + false + ) + ), + 'tagName' => array( + 'type' => 'string', + 'default' => 'div' + ) + ), + 'usesContext' => array( + 'postId', + 'postType' + ), + 'supports' => array( + 'anchor' => true, + 'align' => true, + 'html' => false, + 'spacing' => array( + 'padding' => true, + 'margin' => array( + 'top', + 'bottom' + ), + 'blockGap' => true, + '__experimentalDefaultControls' => array( + 'padding' => true, + 'blockGap' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true + ) + ), + 'color' => array( + '__experimentalDuotone' => '> .wp-block-cover__image-background, > .wp-block-cover__video-background', + 'heading' => true, + 'text' => true, + 'background' => false, + '__experimentalSkipSerialization' => array( + 'gradients' + ), + 'enableContrastChecker' => false + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'layout' => array( + 'allowJustification' => false + ) + ), + 'editorStyle' => 'wp-block-cover-editor', + 'style' => 'wp-block-cover' + ), + 'details' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/details', + 'title' => 'Details', + 'category' => 'text', + 'description' => 'Hide and show additional content.', + 'keywords' => array( + 'accordion', + 'summary', + 'toggle', + 'disclosure' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'showContent' => array( + 'type' => 'boolean', + 'default' => false + ), + 'summary' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'summary' + ) + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'width' => true, + 'style' => true + ), + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true, + 'blockGap' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'layout' => array( + 'allowEditing' => false + ) + ), + 'editorStyle' => 'wp-block-details-editor', + 'style' => 'wp-block-details' + ), + 'embed' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/embed', + 'title' => 'Embed', + 'category' => 'embed', + 'description' => 'Add a block that displays content pulled from other sites, like Twitter or YouTube.', + 'textdomain' => 'default', + 'attributes' => array( + 'url' => array( + 'type' => 'string', + '__experimentalRole' => 'content' + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'figcaption', + '__experimentalRole' => 'content' + ), + 'type' => array( + 'type' => 'string', + '__experimentalRole' => 'content' + ), + 'providerNameSlug' => array( + 'type' => 'string', + '__experimentalRole' => 'content' + ), + 'allowResponsive' => array( + 'type' => 'boolean', + 'default' => true + ), + 'responsive' => array( + 'type' => 'boolean', + 'default' => false, + '__experimentalRole' => 'content' + ), + 'previewable' => array( + 'type' => 'boolean', + 'default' => true, + '__experimentalRole' => 'content' + ) + ), + 'supports' => array( + 'align' => true, + 'spacing' => array( + 'margin' => true + ) + ), + 'editorStyle' => 'wp-block-embed-editor', + 'style' => 'wp-block-embed' + ), + 'file' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/file', + 'title' => 'File', + 'category' => 'media', + 'description' => 'Add a link to a downloadable file.', + 'keywords' => array( + 'document', + 'pdf', + 'download' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'id' => array( + 'type' => 'number' + ), + 'href' => array( + 'type' => 'string' + ), + 'fileId' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a:not([download])', + 'attribute' => 'id' + ), + 'fileName' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'a:not([download])' + ), + 'textLinkHref' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a:not([download])', + 'attribute' => 'href' + ), + 'textLinkTarget' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'a:not([download])', + 'attribute' => 'target' + ), + 'showDownloadButton' => array( + 'type' => 'boolean', + 'default' => true + ), + 'downloadButtonText' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'a[download]' + ), + 'displayPreview' => array( + 'type' => 'boolean' + ), + 'previewHeight' => array( + 'type' => 'number', + 'default' => 600 + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => true, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true, + 'link' => true + ) + ), + 'interactivity' => true + ), + 'viewScript' => 'file:./view.min.js', + 'editorStyle' => 'wp-block-file-editor', + 'style' => 'wp-block-file' + ), + 'footnotes' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/footnotes', + 'title' => 'Footnotes', + 'category' => 'text', + 'description' => '', + 'keywords' => array( + 'references' + ), + 'textdomain' => 'default', + 'usesContext' => array( + 'postId', + 'postType' + ), + 'supports' => array( + '__experimentalBorder' => array( + 'radius' => true, + 'color' => true, + 'width' => true, + 'style' => true, + '__experimentalDefaultControls' => array( + 'radius' => false, + 'color' => false, + 'width' => false, + 'style' => false + ) + ), + 'color' => array( + 'background' => true, + 'link' => true, + 'text' => true, + '__experimentalDefaultControls' => array( + 'link' => true, + 'text' => true + ) + ), + 'html' => false, + 'multiple' => false, + 'reusable' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalTextDecoration' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalWritingMode' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'style' => 'wp-block-footnotes' + ), + 'freeform' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/freeform', + 'title' => 'Classic', + 'category' => 'text', + 'description' => 'Use the classic WordPress editor.', + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'raw' + ) + ), + 'supports' => array( + 'className' => false, + 'customClassName' => false, + 'reusable' => false + ), + 'editorStyle' => 'wp-block-freeform-editor' + ), + 'gallery' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/gallery', + 'title' => 'Gallery', + 'category' => 'media', + 'description' => 'Display multiple images in a rich gallery.', + 'keywords' => array( + 'images', + 'photos' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'images' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => '.blocks-gallery-item', + 'query' => array( + 'url' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'src' + ), + 'fullUrl' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'data-full-url' + ), + 'link' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'data-link' + ), + 'alt' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'alt', + 'default' => '' + ), + 'id' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'data-id' + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => '.blocks-gallery-item__caption' + ) + ) + ), + 'ids' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'number' + ), + 'default' => array( + + ) + ), + 'shortCodeTransforms' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'object' + ), + 'default' => array( + + ) + ), + 'columns' => array( + 'type' => 'number', + 'minimum' => 1, + 'maximum' => 8 + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => '.blocks-gallery-caption' + ), + 'imageCrop' => array( + 'type' => 'boolean', + 'default' => true + ), + 'fixedHeight' => array( + 'type' => 'boolean', + 'default' => true + ), + 'linkTarget' => array( + 'type' => 'string' + ), + 'linkTo' => array( + 'type' => 'string' + ), + 'sizeSlug' => array( + 'type' => 'string', + 'default' => 'large' + ), + 'allowResize' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'providesContext' => array( + 'allowResize' => 'allowResize', + 'imageCrop' => 'imageCrop', + 'fixedHeight' => 'fixedHeight' + ), + 'supports' => array( + 'anchor' => true, + 'align' => true, + 'html' => false, + 'units' => array( + 'px', + 'em', + 'rem', + 'vh', + 'vw' + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true, + 'blockGap' => array( + 'horizontal', + 'vertical' + ), + '__experimentalSkipSerialization' => array( + 'blockGap' + ), + '__experimentalDefaultControls' => array( + 'blockGap' => true, + 'margin' => false, + 'padding' => false + ) + ), + 'color' => array( + 'text' => false, + 'background' => true, + 'gradients' => true + ), + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'allowEditing' => false, + 'default' => array( + 'type' => 'flex' + ) + ) + ), + 'editorStyle' => 'wp-block-gallery-editor', + 'style' => 'wp-block-gallery' + ), + 'group' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/group', + 'title' => 'Group', + 'category' => 'design', + 'description' => 'Gather blocks in a layout container.', + 'keywords' => array( + 'container', + 'wrapper', + 'row', + 'section' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'tagName' => array( + 'type' => 'string', + 'default' => 'div' + ), + 'templateLock' => array( + 'type' => array( + 'string', + 'boolean' + ), + 'enum' => array( + 'all', + 'insert', + 'contentOnly', + false + ) + ), + 'allowedBlocks' => array( + 'type' => 'array' + ) + ), + 'supports' => array( + '__experimentalOnEnter' => true, + '__experimentalOnMerge' => true, + '__experimentalSettings' => true, + '__experimentalMetadata' => true, + 'align' => array( + 'wide', + 'full' + ), + 'anchor' => true, + 'ariaLabel' => true, + 'html' => false, + 'background' => array( + 'backgroundImage' => true + ), + 'color' => array( + 'gradients' => true, + 'heading' => true, + 'button' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => array( + 'top', + 'bottom' + ), + 'padding' => true, + 'blockGap' => true, + '__experimentalDefaultControls' => array( + 'padding' => true, + 'blockGap' => true + ) + ), + 'dimensions' => array( + 'minHeight' => true + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true + ) + ), + 'position' => array( + 'sticky' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'layout' => array( + 'allowSizingOnChildren' => true + ) + ), + 'editorStyle' => 'wp-block-group-editor', + 'style' => 'wp-block-group' + ), + 'heading' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/heading', + 'title' => 'Heading', + 'category' => 'text', + 'description' => 'Introduce new sections and organize content to help visitors (and search engines) understand the structure of your content.', + 'keywords' => array( + 'title', + 'subtitle' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'content' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'h1,h2,h3,h4,h5,h6', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'level' => array( + 'type' => 'number', + 'default' => 2 + ), + 'placeholder' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'anchor' => true, + 'className' => true, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalWritingMode' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'fontAppearance' => true, + 'textTransform' => true + ) + ), + '__unstablePasteTextInline' => true, + '__experimentalSlashInserter' => true + ), + 'editorStyle' => 'wp-block-heading-editor', + 'style' => 'wp-block-heading' + ), + 'home-link' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/home-link', + 'category' => 'design', + 'parent' => array( + 'core/navigation' + ), + 'title' => 'Home Link', + 'description' => 'Create a link that always points to the homepage of the site. Usually not necessary if there is already a site title link present in the header.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'textColor', + 'customTextColor', + 'backgroundColor', + 'customBackgroundColor', + 'fontSize', + 'customFontSize', + 'style' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-home-link-editor', + 'style' => 'wp-block-home-link' + ), + 'html' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/html', + 'title' => 'Custom HTML', + 'category' => 'widgets', + 'description' => 'Add custom HTML code and preview it as you edit.', + 'keywords' => array( + 'embed' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'raw' + ) + ), + 'supports' => array( + 'customClassName' => false, + 'className' => false, + 'html' => false + ), + 'editorStyle' => 'wp-block-html-editor' + ), + 'image' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/image', + 'title' => 'Image', + 'category' => 'media', + 'usesContext' => array( + 'allowResize', + 'imageCrop', + 'fixedHeight' + ), + 'description' => 'Insert an image to make a visual statement.', + 'keywords' => array( + 'img', + 'photo', + 'picture' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'align' => array( + 'type' => 'string' + ), + 'url' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'src', + '__experimentalRole' => 'content' + ), + 'alt' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'alt', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'figcaption', + '__experimentalRole' => 'content' + ), + 'lightbox' => array( + 'type' => 'object', + 'enabled' => array( + 'type' => 'boolean' + ) + ), + 'title' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'img', + 'attribute' => 'title', + '__experimentalRole' => 'content' + ), + 'href' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure > a', + 'attribute' => 'href', + '__experimentalRole' => 'content' + ), + 'rel' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure > a', + 'attribute' => 'rel' + ), + 'linkClass' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure > a', + 'attribute' => 'class' + ), + 'id' => array( + 'type' => 'number', + '__experimentalRole' => 'content' + ), + 'width' => array( + 'type' => 'string' + ), + 'height' => array( + 'type' => 'string' + ), + 'aspectRatio' => array( + 'type' => 'string' + ), + 'scale' => array( + 'type' => 'string' + ), + 'sizeSlug' => array( + 'type' => 'string' + ), + 'linkDestination' => array( + 'type' => 'string' + ), + 'linkTarget' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure > a', + 'attribute' => 'target' + ) + ), + 'supports' => array( + 'anchor' => true, + 'color' => array( + 'text' => false, + 'background' => false + ), + 'filter' => array( + 'duotone' => true + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'width' => true, + '__experimentalSkipSerialization' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'width' => true + ) + ) + ), + 'selectors' => array( + 'border' => '.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder', + 'filter' => array( + 'duotone' => '.wp-block-image img, .wp-block-image .components-placeholder' + ) + ), + 'styles' => array( + array( + 'name' => 'default', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'rounded', + 'label' => 'Rounded' + ) + ), + 'editorStyle' => 'wp-block-image-editor', + 'style' => 'wp-block-image', + 'viewScript' => 'file:./view.min.js' + ), + 'latest-comments' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/latest-comments', + 'title' => 'Latest Comments', + 'category' => 'widgets', + 'description' => 'Display a list of your most recent comments.', + 'keywords' => array( + 'recent comments' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'commentsToShow' => array( + 'type' => 'number', + 'default' => 5, + 'minimum' => 1, + 'maximum' => 100 + ), + 'displayAvatar' => array( + 'type' => 'boolean', + 'default' => true + ), + 'displayDate' => array( + 'type' => 'boolean', + 'default' => true + ), + 'displayExcerpt' => array( + 'type' => 'boolean', + 'default' => true + ) + ), + 'supports' => array( + 'align' => true, + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-latest-comments-editor', + 'style' => 'wp-block-latest-comments' + ), + 'latest-posts' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/latest-posts', + 'title' => 'Latest Posts', + 'category' => 'widgets', + 'description' => 'Display a list of your most recent posts.', + 'keywords' => array( + 'recent posts' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'categories' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'object' + ) + ), + 'selectedAuthor' => array( + 'type' => 'number' + ), + 'postsToShow' => array( + 'type' => 'number', + 'default' => 5 + ), + 'displayPostContent' => array( + 'type' => 'boolean', + 'default' => false + ), + 'displayPostContentRadio' => array( + 'type' => 'string', + 'default' => 'excerpt' + ), + 'excerptLength' => array( + 'type' => 'number', + 'default' => 55 + ), + 'displayAuthor' => array( + 'type' => 'boolean', + 'default' => false + ), + 'displayPostDate' => array( + 'type' => 'boolean', + 'default' => false + ), + 'postLayout' => array( + 'type' => 'string', + 'default' => 'list' + ), + 'columns' => array( + 'type' => 'number', + 'default' => 3 + ), + 'order' => array( + 'type' => 'string', + 'default' => 'desc' + ), + 'orderBy' => array( + 'type' => 'string', + 'default' => 'date' + ), + 'displayFeaturedImage' => array( + 'type' => 'boolean', + 'default' => false + ), + 'featuredImageAlign' => array( + 'type' => 'string', + 'enum' => array( + 'left', + 'center', + 'right' + ) + ), + 'featuredImageSizeSlug' => array( + 'type' => 'string', + 'default' => 'thumbnail' + ), + 'featuredImageSizeWidth' => array( + 'type' => 'number', + 'default' => null + ), + 'featuredImageSizeHeight' => array( + 'type' => 'number', + 'default' => null + ), + 'addLinkToFeaturedImage' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'supports' => array( + 'align' => true, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-latest-posts-editor', + 'style' => 'wp-block-latest-posts' + ), + 'legacy-widget' => array( + 'apiVersion' => 3, + 'name' => 'core/legacy-widget', + 'title' => 'Legacy Widget', + 'category' => 'widgets', + 'description' => 'Display a legacy widget.', + 'textdomain' => 'default', + 'attributes' => array( + 'id' => array( + 'type' => 'string', + 'default' => null + ), + 'idBase' => array( + 'type' => 'string', + 'default' => null + ), + 'instance' => array( + 'type' => 'object', + 'default' => null + ) + ), + 'supports' => array( + 'html' => false, + 'customClassName' => false, + 'reusable' => false + ), + 'editorStyle' => 'wp-block-legacy-widget-editor' + ), + 'list' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/list', + 'title' => 'List', + 'category' => 'text', + 'description' => 'Create a bulleted or numbered list.', + 'keywords' => array( + 'bullet list', + 'ordered list', + 'numbered list' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'ordered' => array( + 'type' => 'boolean', + 'default' => false, + '__experimentalRole' => 'content' + ), + 'values' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'ol,ul', + 'multiline' => 'li', + '__unstableMultilineWrapperTags' => array( + 'ol', + 'ul' + ), + 'default' => '', + '__experimentalRole' => 'content' + ), + 'type' => array( + 'type' => 'string' + ), + 'start' => array( + 'type' => 'number' + ), + 'reversed' => array( + 'type' => 'boolean' + ), + 'placeholder' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'anchor' => true, + 'className' => false, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), + '__unstablePasteTextInline' => true, + '__experimentalSelector' => 'ol,ul', + '__experimentalOnMerge' => true, + '__experimentalSlashInserter' => true + ), + 'editorStyle' => 'wp-block-list-editor', + 'style' => 'wp-block-list' + ), + 'list-item' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/list-item', + 'title' => 'List item', + 'category' => 'text', + 'parent' => array( + 'core/list' + ), + 'description' => 'Create a list item.', + 'textdomain' => 'default', + 'attributes' => array( + 'placeholder' => array( + 'type' => 'string' + ), + 'content' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'li', + 'default' => '', + '__experimentalRole' => 'content' + ) + ), + 'supports' => array( + 'className' => false, + '__experimentalSelector' => 'li', + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'loginout' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/loginout', + 'title' => 'Login/out', + 'category' => 'theme', + 'description' => 'Show login & logout links.', + 'keywords' => array( + 'login', + 'logout', + 'form' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'displayLoginAsForm' => array( + 'type' => 'boolean', + 'default' => false + ), + 'redirectToCurrent' => array( + 'type' => 'boolean', + 'default' => true + ) + ), + 'supports' => array( + 'className' => true, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'media-text' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/media-text', + 'title' => 'Media & Text', + 'category' => 'media', + 'description' => 'Set media and words side-by-side for a richer layout.', + 'keywords' => array( + 'image', + 'video' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'align' => array( + 'type' => 'string', + 'default' => 'none' + ), + 'mediaAlt' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure img', + 'attribute' => 'alt', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'mediaPosition' => array( + 'type' => 'string', + 'default' => 'left' + ), + 'mediaId' => array( + 'type' => 'number', + '__experimentalRole' => 'content' + ), + 'mediaUrl' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure video,figure img', + 'attribute' => 'src', + '__experimentalRole' => 'content' + ), + 'mediaLink' => array( + 'type' => 'string' + ), + 'linkDestination' => array( + 'type' => 'string' + ), + 'linkTarget' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure a', + 'attribute' => 'target' + ), + 'href' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure a', + 'attribute' => 'href', + '__experimentalRole' => 'content' + ), + 'rel' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure a', + 'attribute' => 'rel' + ), + 'linkClass' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'figure a', + 'attribute' => 'class' + ), + 'mediaType' => array( + 'type' => 'string', + '__experimentalRole' => 'content' + ), + 'mediaWidth' => array( + 'type' => 'number', + 'default' => 50 + ), + 'mediaSizeSlug' => array( + 'type' => 'string' + ), + 'isStackedOnMobile' => array( + 'type' => 'boolean', + 'default' => true + ), + 'verticalAlignment' => array( + 'type' => 'string' + ), + 'imageFill' => array( + 'type' => 'boolean' + ), + 'focalPoint' => array( + 'type' => 'object' + ), + 'allowedBlocks' => array( + 'type' => 'array' + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + 'heading' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-media-text-editor', + 'style' => 'wp-block-media-text' + ), + 'missing' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/missing', + 'title' => 'Unsupported', + 'category' => 'text', + 'description' => 'Your site doesn’t include support for this block.', + 'textdomain' => 'default', + 'attributes' => array( + 'originalName' => array( + 'type' => 'string' + ), + 'originalUndelimitedContent' => array( + 'type' => 'string' + ), + 'originalContent' => array( + 'type' => 'string', + 'source' => 'html' + ) + ), + 'supports' => array( + 'className' => false, + 'customClassName' => false, + 'inserter' => false, + 'html' => false, + 'reusable' => false + ) + ), + 'more' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/more', + 'title' => 'More', + 'category' => 'design', + 'description' => 'Content before this block will be shown in the excerpt on your archives page.', + 'keywords' => array( + 'read more' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'customText' => array( + 'type' => 'string' + ), + 'noTeaser' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'supports' => array( + 'customClassName' => false, + 'className' => false, + 'html' => false, + 'multiple' => false + ), + 'editorStyle' => 'wp-block-more-editor' + ), + 'navigation' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/navigation', + 'title' => 'Navigation', + 'category' => 'theme', + 'description' => 'A collection of blocks that allow visitors to get around your site.', + 'keywords' => array( + 'menu', + 'navigation', + 'links' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'ref' => array( + 'type' => 'number' + ), + 'textColor' => array( + 'type' => 'string' + ), + 'customTextColor' => array( + 'type' => 'string' + ), + 'rgbTextColor' => array( + 'type' => 'string' + ), + 'backgroundColor' => array( + 'type' => 'string' + ), + 'customBackgroundColor' => array( + 'type' => 'string' + ), + 'rgbBackgroundColor' => array( + 'type' => 'string' + ), + 'showSubmenuIcon' => array( + 'type' => 'boolean', + 'default' => true + ), + 'openSubmenusOnClick' => array( + 'type' => 'boolean', + 'default' => false + ), + 'overlayMenu' => array( + 'type' => 'string', + 'default' => 'mobile' + ), + 'icon' => array( + 'type' => 'string', + 'default' => 'handle' + ), + 'hasIcon' => array( + 'type' => 'boolean', + 'default' => true + ), + '__unstableLocation' => array( + 'type' => 'string' + ), + 'overlayBackgroundColor' => array( + 'type' => 'string' + ), + 'customOverlayBackgroundColor' => array( + 'type' => 'string' + ), + 'overlayTextColor' => array( + 'type' => 'string' + ), + 'customOverlayTextColor' => array( + 'type' => 'string' + ), + 'maxNestingLevel' => array( + 'type' => 'number', + 'default' => 5 + ), + 'templateLock' => array( + 'type' => array( + 'string', + 'boolean' + ), + 'enum' => array( + 'all', + 'insert', + 'contentOnly', + false + ) + ) + ), + 'providesContext' => array( + 'textColor' => 'textColor', + 'customTextColor' => 'customTextColor', + 'backgroundColor' => 'backgroundColor', + 'customBackgroundColor' => 'customBackgroundColor', + 'overlayTextColor' => 'overlayTextColor', + 'customOverlayTextColor' => 'customOverlayTextColor', + 'overlayBackgroundColor' => 'overlayBackgroundColor', + 'customOverlayBackgroundColor' => 'customOverlayBackgroundColor', + 'fontSize' => 'fontSize', + 'customFontSize' => 'customFontSize', + 'showSubmenuIcon' => 'showSubmenuIcon', + 'openSubmenusOnClick' => 'openSubmenusOnClick', + 'style' => 'style', + 'maxNestingLevel' => 'maxNestingLevel' + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'ariaLabel' => true, + 'html' => false, + 'inserter' => true, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalTextTransform' => true, + '__experimentalFontFamily' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextDecoration' => true, + '__experimentalSkipSerialization' => array( + 'textDecoration' + ), + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'spacing' => array( + 'blockGap' => true, + 'units' => array( + 'px', + 'em', + 'rem', + 'vh', + 'vw' + ), + '__experimentalDefaultControls' => array( + 'blockGap' => true + ) + ), + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'allowVerticalAlignment' => false, + 'allowSizingOnChildren' => true, + 'default' => array( + 'type' => 'flex' + ) + ), + '__experimentalStyle' => array( + 'elements' => array( + 'link' => array( + 'color' => array( + 'text' => 'inherit' + ) + ) + ) + ), + 'interactivity' => true + ), + 'viewScript' => 'file:./view.min.js', + 'editorStyle' => 'wp-block-navigation-editor', + 'style' => 'wp-block-navigation' + ), + 'navigation-link' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/navigation-link', + 'title' => 'Custom Link', + 'category' => 'design', + 'parent' => array( + 'core/navigation' + ), + 'description' => 'Add a page, link, or another item to your navigation.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ), + 'type' => array( + 'type' => 'string' + ), + 'description' => array( + 'type' => 'string' + ), + 'rel' => array( + 'type' => 'string' + ), + 'id' => array( + 'type' => 'number' + ), + 'opensInNewTab' => array( + 'type' => 'boolean', + 'default' => false + ), + 'url' => array( + 'type' => 'string' + ), + 'title' => array( + 'type' => 'string' + ), + 'kind' => array( + 'type' => 'string' + ), + 'isTopLevelLink' => array( + 'type' => 'boolean' + ) + ), + 'usesContext' => array( + 'textColor', + 'customTextColor', + 'backgroundColor', + 'customBackgroundColor', + 'overlayTextColor', + 'customOverlayTextColor', + 'overlayBackgroundColor', + 'customOverlayBackgroundColor', + 'fontSize', + 'customFontSize', + 'showSubmenuIcon', + 'maxNestingLevel', + 'style' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + '__experimentalSlashInserter' => true, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-navigation-link-editor', + 'style' => 'wp-block-navigation-link' + ), + 'navigation-submenu' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/navigation-submenu', + 'title' => 'Submenu', + 'category' => 'design', + 'parent' => array( + 'core/navigation' + ), + 'description' => 'Add a submenu to your navigation.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ), + 'type' => array( + 'type' => 'string' + ), + 'description' => array( + 'type' => 'string' + ), + 'rel' => array( + 'type' => 'string' + ), + 'id' => array( + 'type' => 'number' + ), + 'opensInNewTab' => array( + 'type' => 'boolean', + 'default' => false + ), + 'url' => array( + 'type' => 'string' + ), + 'title' => array( + 'type' => 'string' + ), + 'kind' => array( + 'type' => 'string' + ), + 'isTopLevelItem' => array( + 'type' => 'boolean' + ) + ), + 'usesContext' => array( + 'textColor', + 'customTextColor', + 'backgroundColor', + 'customBackgroundColor', + 'overlayTextColor', + 'customOverlayTextColor', + 'overlayBackgroundColor', + 'customOverlayBackgroundColor', + 'fontSize', + 'customFontSize', + 'showSubmenuIcon', + 'maxNestingLevel', + 'openSubmenusOnClick', + 'style' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false + ), + 'editorStyle' => 'wp-block-navigation-submenu-editor', + 'style' => 'wp-block-navigation-submenu' + ), + 'nextpage' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/nextpage', + 'title' => 'Page Break', + 'category' => 'design', + 'description' => 'Separate your content into a multi-page experience.', + 'keywords' => array( + 'next page', + 'pagination' + ), + 'parent' => array( + 'core/post-content' + ), + 'textdomain' => 'default', + 'supports' => array( + 'customClassName' => false, + 'className' => false, + 'html' => false + ), + 'editorStyle' => 'wp-block-nextpage-editor' + ), + 'page-list' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/page-list', + 'title' => 'Page List', + 'category' => 'widgets', + 'description' => 'Display a list of all pages.', + 'keywords' => array( + 'menu', + 'navigation' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'parentPageID' => array( + 'type' => 'integer', + 'default' => 0 + ), + 'isNested' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'usesContext' => array( + 'textColor', + 'customTextColor', + 'backgroundColor', + 'customBackgroundColor', + 'overlayTextColor', + 'customOverlayTextColor', + 'overlayBackgroundColor', + 'customOverlayBackgroundColor', + 'fontSize', + 'customFontSize', + 'showSubmenuIcon', + 'style', + 'openSubmenusOnClick' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-page-list-editor', + 'style' => 'wp-block-page-list' + ), + 'page-list-item' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/page-list-item', + 'title' => 'Page List Item', + 'category' => 'widgets', + 'parent' => array( + 'core/page-list' + ), + 'description' => 'Displays a page inside a list of all pages.', + 'keywords' => array( + 'page', + 'menu', + 'navigation' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'id' => array( + 'type' => 'number' + ), + 'label' => array( + 'type' => 'string' + ), + 'title' => array( + 'type' => 'string' + ), + 'link' => array( + 'type' => 'string' + ), + 'hasChildren' => array( + 'type' => 'boolean' + ) + ), + 'usesContext' => array( + 'textColor', + 'customTextColor', + 'backgroundColor', + 'customBackgroundColor', + 'overlayTextColor', + 'customOverlayTextColor', + 'overlayBackgroundColor', + 'customOverlayBackgroundColor', + 'fontSize', + 'customFontSize', + 'showSubmenuIcon', + 'style', + 'openSubmenusOnClick' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'lock' => false, + 'inserter' => false, + '__experimentalToolbar' => false + ), + 'editorStyle' => 'wp-block-page-list-editor', + 'style' => 'wp-block-page-list' + ), + 'paragraph' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/paragraph', + 'title' => 'Paragraph', + 'category' => 'text', + 'description' => 'Start with the basic building block of all narrative.', + 'keywords' => array( + 'text' + ), + 'textdomain' => 'default', + 'usesContext' => array( + 'postId' + ), + 'attributes' => array( + 'align' => array( + 'type' => 'string' + ), + 'content' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'p', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'dropCap' => array( + 'type' => 'boolean', + 'default' => false + ), + 'placeholder' => array( + 'type' => 'string' + ), + 'direction' => array( + 'type' => 'string', + 'enum' => array( + 'ltr', + 'rtl' + ) + ) + ), + 'supports' => array( + 'anchor' => true, + 'className' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + '__experimentalConnections' => true, + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalTextDecoration' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalWritingMode' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + '__experimentalSelector' => 'p', + '__unstablePasteTextInline' => true + ), + 'editorStyle' => 'wp-block-paragraph-editor', + 'style' => 'wp-block-paragraph' + ), + 'pattern' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/pattern', + 'title' => 'Pattern placeholder', + 'category' => 'theme', + 'description' => 'Show a block pattern.', + 'supports' => array( + 'html' => false, + 'inserter' => false + ), + 'textdomain' => 'default', + 'attributes' => array( + 'slug' => array( + 'type' => 'string' + ) + ) + ), + 'post-author' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-author', + 'title' => 'Author', + 'category' => 'theme', + 'description' => 'Display post author details such as name, avatar, and bio.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'avatarSize' => array( + 'type' => 'number', + 'default' => 48 + ), + 'showAvatar' => array( + 'type' => 'boolean', + 'default' => true + ), + 'showBio' => array( + 'type' => 'boolean' + ), + 'byline' => array( + 'type' => 'string' + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => false + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ) + ), + 'usesContext' => array( + 'postType', + 'postId', + 'queryId' + ), + 'supports' => array( + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDuotone' => '.wp-block-post-author__avatar img', + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ) + ), + 'style' => 'wp-block-post-author' + ), + 'post-author-biography' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-author-biography', + 'title' => 'Author Biography', + 'category' => 'theme', + 'description' => 'The author biography.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'postType', + 'postId' + ), + 'supports' => array( + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'post-author-name' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-author-name', + 'title' => 'Author Name', + 'category' => 'theme', + 'description' => 'The author name.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => false + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ) + ), + 'usesContext' => array( + 'postType', + 'postId' + ), + 'supports' => array( + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'post-comments-form' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-comments-form', + 'title' => 'Comments Form', + 'category' => 'theme', + 'description' => 'Display a post\'s comments form.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'postId', + 'postType' + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'gradients' => true, + 'heading' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-post-comments-form-editor', + 'style' => array( + 'wp-block-post-comments-form', + 'wp-block-buttons', + 'wp-block-button' + ) + ), + 'post-content' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-content', + 'title' => 'Content', + 'category' => 'theme', + 'description' => 'Displays the contents of a post or page.', + 'textdomain' => 'default', + 'usesContext' => array( + 'postId', + 'postType', + 'queryId' + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'layout' => true, + 'dimensions' => array( + 'minHeight' => true + ), + 'spacing' => array( + 'blockGap' => true + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => false, + 'text' => false + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-post-content-editor' + ), + 'post-date' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-date', + 'title' => 'Date', + 'category' => 'theme', + 'description' => 'Display the publish date for an entry such as a post or page.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'format' => array( + 'type' => 'string' + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => false + ), + 'displayType' => array( + 'type' => 'string', + 'default' => 'date' + ) + ), + 'usesContext' => array( + 'postId', + 'postType', + 'queryId' + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'post-excerpt' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-excerpt', + 'title' => 'Excerpt', + 'category' => 'theme', + 'description' => 'Display the excerpt.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'moreText' => array( + 'type' => 'string' + ), + 'showMoreOnNewLine' => array( + 'type' => 'boolean', + 'default' => true + ), + 'excerptLength' => array( + 'type' => 'number', + 'default' => 55 + ) + ), + 'usesContext' => array( + 'postId', + 'postType', + 'queryId' + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-post-excerpt-editor', + 'style' => 'wp-block-post-excerpt' + ), + 'post-featured-image' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-featured-image', + 'title' => 'Featured Image', + 'category' => 'theme', + 'description' => 'Display a post\'s featured image.', + 'textdomain' => 'default', + 'attributes' => array( + 'isLink' => array( + 'type' => 'boolean', + 'default' => false + ), + 'aspectRatio' => array( + 'type' => 'string' + ), + 'width' => array( + 'type' => 'string' + ), + 'height' => array( + 'type' => 'string' + ), + 'scale' => array( + 'type' => 'string', + 'default' => 'cover' + ), + 'sizeSlug' => array( + 'type' => 'string' + ), + 'rel' => array( + 'type' => 'string', + 'attribute' => 'rel', + 'default' => '' + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ), + 'overlayColor' => array( + 'type' => 'string' + ), + 'customOverlayColor' => array( + 'type' => 'string' + ), + 'dimRatio' => array( + 'type' => 'number', + 'default' => 0 + ), + 'gradient' => array( + 'type' => 'string' + ), + 'customGradient' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'postId', + 'postType', + 'queryId' + ), + 'supports' => array( + 'align' => array( + 'left', + 'right', + 'center', + 'wide', + 'full' + ), + 'color' => array( + '__experimentalDuotone' => 'img, .wp-block-post-featured-image__placeholder, .components-placeholder__illustration, .components-placeholder::before', + 'text' => false, + 'background' => false + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'width' => true, + '__experimentalSelector' => 'img, .block-editor-media-placeholder, .wp-block-post-featured-image__overlay', + '__experimentalSkipSerialization' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'width' => true + ) + ), + 'html' => false, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ) + ), + 'editorStyle' => 'wp-block-post-featured-image-editor', + 'style' => 'wp-block-post-featured-image' + ), + 'post-navigation-link' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-navigation-link', + 'title' => 'Post Navigation Link', + 'category' => 'theme', + 'description' => 'Displays the next or previous post link that is adjacent to the current post.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'type' => array( + 'type' => 'string', + 'default' => 'next' + ), + 'label' => array( + 'type' => 'string' + ), + 'showTitle' => array( + 'type' => 'boolean', + 'default' => false + ), + 'linkLabel' => array( + 'type' => 'boolean', + 'default' => false + ), + 'arrow' => array( + 'type' => 'string', + 'default' => 'none' + ) + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'link' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalWritingMode' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'style' => 'wp-block-post-navigation-link' + ), + 'post-template' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-template', + 'title' => 'Post Template', + 'category' => 'theme', + 'parent' => array( + 'core/query' + ), + 'description' => 'Contains the block elements used to render a post, like the title, date, featured image, content or excerpt, and more.', + 'textdomain' => 'default', + 'usesContext' => array( + 'queryId', + 'query', + 'queryContext', + 'displayLayout', + 'templateSlug', + 'previewPostType', + 'enhancedPagination' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'align' => array( + 'wide', + 'full' + ), + 'layout' => true, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + 'spacing' => array( + 'blockGap' => array( + '__experimentalDefault' => '1.25em' + ), + '__experimentalDefaultControls' => array( + 'blockGap' => true + ) + ) + ), + 'style' => 'wp-block-post-template', + 'editorStyle' => 'wp-block-post-template-editor' + ), + 'post-terms' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-terms', + 'title' => 'Post Terms', + 'category' => 'theme', + 'description' => 'Post terms.', + 'textdomain' => 'default', + 'attributes' => array( + 'term' => array( + 'type' => 'string' + ), + 'textAlign' => array( + 'type' => 'string' + ), + 'separator' => array( + 'type' => 'string', + 'default' => ', ' + ), + 'prefix' => array( + 'type' => 'string', + 'default' => '' + ), + 'suffix' => array( + 'type' => 'string', + 'default' => '' + ) + ), + 'usesContext' => array( + 'postId', + 'postType' + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'style' => 'wp-block-post-terms' + ), + 'post-title' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/post-title', + 'title' => 'Title', + 'category' => 'theme', + 'description' => 'Displays the title of a post, page, or any other content-type.', + 'textdomain' => 'default', + 'usesContext' => array( + 'postId', + 'postType', + 'queryId' + ), + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ), + 'level' => array( + 'type' => 'number', + 'default' => 2 + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => false + ), + 'rel' => array( + 'type' => 'string', + 'attribute' => 'rel', + 'default' => '' + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ) + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'fontAppearance' => true, + 'textTransform' => true + ) + ) + ), + 'style' => 'wp-block-post-title' + ), + 'preformatted' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/preformatted', + 'title' => 'Preformatted', + 'category' => 'text', + 'description' => 'Add text that respects your spacing and tabs, and also allows styling.', + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'pre', + 'default' => '', + '__unstablePreserveWhiteSpace' => true, + '__experimentalRole' => 'content' + ) + ), + 'supports' => array( + 'anchor' => true, + 'color' => array( + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'padding' => true, + 'margin' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'style' => 'wp-block-preformatted' + ), + 'pullquote' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/pullquote', + 'title' => 'Pullquote', + 'category' => 'text', + 'description' => 'Give special visual emphasis to a quote from your text.', + 'textdomain' => 'default', + 'attributes' => array( + 'value' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'p', + '__experimentalRole' => 'content' + ), + 'citation' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'cite', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => array( + 'left', + 'right', + 'wide', + 'full' + ), + 'color' => array( + 'gradients' => true, + 'background' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'fontAppearance' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'style' => true, + 'width' => true + ) + ), + '__experimentalStyle' => array( + 'typography' => array( + 'fontSize' => '1.5em', + 'lineHeight' => '1.6' + ) + ) + ), + 'editorStyle' => 'wp-block-pullquote-editor', + 'style' => 'wp-block-pullquote' + ), + 'query' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query', + 'title' => 'Query Loop', + 'category' => 'theme', + 'description' => 'An advanced block that allows displaying post types based on different query parameters and visual configurations.', + 'textdomain' => 'default', + 'attributes' => array( + 'queryId' => array( + 'type' => 'number' + ), + 'query' => array( + 'type' => 'object', + 'default' => array( + 'perPage' => null, + 'pages' => 0, + 'offset' => 0, + 'postType' => 'post', + 'order' => 'desc', + 'orderBy' => 'date', + 'author' => '', + 'search' => '', + 'exclude' => array( + + ), + 'sticky' => '', + 'inherit' => true, + 'taxQuery' => null, + 'parents' => array( + + ) + ) + ), + 'tagName' => array( + 'type' => 'string', + 'default' => 'div' + ), + 'namespace' => array( + 'type' => 'string' + ), + 'enhancedPagination' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'providesContext' => array( + 'queryId' => 'queryId', + 'query' => 'query', + 'displayLayout' => 'displayLayout', + 'enhancedPagination' => 'enhancedPagination' + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'layout' => true + ), + 'editorStyle' => 'wp-block-query-editor', + 'style' => 'wp-block-query', + 'viewScript' => 'file:./view.min.js' + ), + 'query-no-results' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query-no-results', + 'title' => 'No results', + 'category' => 'theme', + 'description' => 'Contains the block elements used to render content when no query results are found.', + 'parent' => array( + 'core/query' + ), + 'textdomain' => 'default', + 'usesContext' => array( + 'queryId', + 'query' + ), + 'supports' => array( + 'align' => true, + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'query-pagination' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query-pagination', + 'title' => 'Pagination', + 'category' => 'theme', + 'parent' => array( + 'core/query' + ), + 'description' => 'Displays a paginated navigation to next/previous set of posts, when applicable.', + 'textdomain' => 'default', + 'attributes' => array( + 'paginationArrow' => array( + 'type' => 'string', + 'default' => 'none' + ), + 'showLabel' => array( + 'type' => 'boolean', + 'default' => true + ) + ), + 'usesContext' => array( + 'queryId', + 'query' + ), + 'providesContext' => array( + 'paginationArrow' => 'paginationArrow', + 'showLabel' => 'showLabel' + ), + 'supports' => array( + 'align' => true, + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'default' => array( + 'type' => 'flex' + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-query-pagination-editor', + 'style' => 'wp-block-query-pagination' + ), + 'query-pagination-next' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query-pagination-next', + 'title' => 'Next Page', + 'category' => 'theme', + 'parent' => array( + 'core/query-pagination' + ), + 'description' => 'Displays the next posts page link.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'queryId', + 'query', + 'paginationArrow', + 'showLabel', + 'enhancedPagination' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'query-pagination-numbers' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query-pagination-numbers', + 'title' => 'Page Numbers', + 'category' => 'theme', + 'parent' => array( + 'core/query-pagination' + ), + 'description' => 'Displays a list of page numbers for pagination', + 'textdomain' => 'default', + 'attributes' => array( + 'midSize' => array( + 'type' => 'number', + 'default' => 2 + ) + ), + 'usesContext' => array( + 'queryId', + 'query', + 'enhancedPagination' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-query-pagination-numbers-editor' + ), + 'query-pagination-previous' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query-pagination-previous', + 'title' => 'Previous Page', + 'category' => 'theme', + 'parent' => array( + 'core/query-pagination' + ), + 'description' => 'Displays the previous posts page link.', + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'queryId', + 'query', + 'paginationArrow', + 'showLabel', + 'enhancedPagination' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'query-title' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/query-title', + 'title' => 'Query Title', + 'category' => 'theme', + 'description' => 'Display the query title.', + 'textdomain' => 'default', + 'attributes' => array( + 'type' => array( + 'type' => 'string' + ), + 'textAlign' => array( + 'type' => 'string' + ), + 'level' => array( + 'type' => 'number', + 'default' => 1 + ), + 'showPrefix' => array( + 'type' => 'boolean', + 'default' => true + ), + 'showSearchTerm' => array( + 'type' => 'boolean', + 'default' => true + ) + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'fontAppearance' => true, + 'textTransform' => true + ) + ) + ), + 'style' => 'wp-block-query-title' + ), + 'quote' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/quote', + 'title' => 'Quote', + 'category' => 'text', + 'description' => 'Give quoted text visual emphasis. "In quoting others, we cite ourselves." — Julio Cortázar', + 'keywords' => array( + 'blockquote', + 'cite' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'value' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'blockquote', + 'multiline' => 'p', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'citation' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'cite', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'align' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'anchor' => true, + 'html' => false, + '__experimentalOnEnter' => true, + '__experimentalOnMerge' => true, + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'fontAppearance' => true + ) + ), + 'color' => array( + 'gradients' => true, + 'heading' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ) + ), + 'styles' => array( + array( + 'name' => 'default', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'plain', + 'label' => 'Plain' + ) + ), + 'editorStyle' => 'wp-block-quote-editor', + 'style' => 'wp-block-quote' + ), + 'read-more' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/read-more', + 'title' => 'Read More', + 'category' => 'theme', + 'description' => 'Displays the link of a post, page, or any other content-type.', + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'string' + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ) + ), + 'usesContext' => array( + 'postId' + ), + 'supports' => array( + 'html' => false, + 'color' => array( + 'gradients' => true, + 'text' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextDecoration' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'textDecoration' => true + ) + ), + 'spacing' => array( + 'margin' => array( + 'top', + 'bottom' + ), + 'padding' => true, + '__experimentalDefaultControls' => array( + 'padding' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'width' => true + ) + ) + ), + 'style' => 'wp-block-read-more' + ), + 'rss' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/rss', + 'title' => 'RSS', + 'category' => 'widgets', + 'description' => 'Display entries from any RSS or Atom feed.', + 'keywords' => array( + 'atom', + 'feed' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'columns' => array( + 'type' => 'number', + 'default' => 2 + ), + 'blockLayout' => array( + 'type' => 'string', + 'default' => 'list' + ), + 'feedURL' => array( + 'type' => 'string', + 'default' => '' + ), + 'itemsToShow' => array( + 'type' => 'number', + 'default' => 5 + ), + 'displayExcerpt' => array( + 'type' => 'boolean', + 'default' => false + ), + 'displayAuthor' => array( + 'type' => 'boolean', + 'default' => false + ), + 'displayDate' => array( + 'type' => 'boolean', + 'default' => false + ), + 'excerptLength' => array( + 'type' => 'number', + 'default' => 55 + ) + ), + 'supports' => array( + 'align' => true, + 'html' => false + ), + 'editorStyle' => 'wp-block-rss-editor', + 'style' => 'wp-block-rss' + ), + 'search' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/search', + 'title' => 'Search', + 'category' => 'widgets', + 'description' => 'Help visitors find your content.', + 'keywords' => array( + 'find' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'label' => array( + 'type' => 'string', + '__experimentalRole' => 'content' + ), + 'showLabel' => array( + 'type' => 'boolean', + 'default' => true + ), + 'placeholder' => array( + 'type' => 'string', + 'default' => '', + '__experimentalRole' => 'content' + ), + 'width' => array( + 'type' => 'number' + ), + 'widthUnit' => array( + 'type' => 'string' + ), + 'buttonText' => array( + 'type' => 'string', + '__experimentalRole' => 'content' + ), + 'buttonPosition' => array( + 'type' => 'string', + 'default' => 'button-outside' + ), + 'buttonUseIcon' => array( + 'type' => 'boolean', + 'default' => false + ), + 'query' => array( + 'type' => 'object', + 'default' => array( + + ) + ), + 'buttonBehavior' => array( + 'type' => 'string', + 'default' => 'expand-searchfield' + ), + 'isSearchFieldHidden' => array( + 'type' => 'boolean', + 'default' => false + ) + ), + 'supports' => array( + 'align' => array( + 'left', + 'center', + 'right' + ), + 'color' => array( + 'gradients' => true, + '__experimentalSkipSerialization' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'interactivity' => true, + 'typography' => array( + '__experimentalSkipSerialization' => true, + '__experimentalSelector' => '.wp-block-search__label, .wp-block-search__input, .wp-block-search__button', + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + '__experimentalBorder' => array( + 'color' => true, + 'radius' => true, + 'width' => true, + '__experimentalSkipSerialization' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'radius' => true, + 'width' => true + ) + ), + 'html' => false + ), + 'viewScript' => 'file:./view.min.js', + 'editorStyle' => 'wp-block-search-editor', + 'style' => 'wp-block-search' + ), + 'separator' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/separator', + 'title' => 'Separator', + 'category' => 'design', + 'description' => 'Create a break between ideas or sections with a horizontal separator.', + 'keywords' => array( + 'horizontal-line', + 'hr', + 'divider' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'opacity' => array( + 'type' => 'string', + 'default' => 'alpha-channel' + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => array( + 'center', + 'wide', + 'full' + ), + 'color' => array( + 'enableContrastChecker' => false, + '__experimentalSkipSerialization' => true, + 'gradients' => true, + 'background' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => true + ) + ), + 'spacing' => array( + 'margin' => array( + 'top', + 'bottom' + ) + ) + ), + 'styles' => array( + array( + 'name' => 'default', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'wide', + 'label' => 'Wide Line' + ), + array( + 'name' => 'dots', + 'label' => 'Dots' + ) + ), + 'editorStyle' => 'wp-block-separator-editor', + 'style' => 'wp-block-separator' + ), + 'shortcode' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/shortcode', + 'title' => 'Shortcode', + 'category' => 'widgets', + 'description' => 'Insert additional custom elements with a WordPress shortcode.', + 'textdomain' => 'default', + 'attributes' => array( + 'text' => array( + 'type' => 'string', + 'source' => 'raw' + ) + ), + 'supports' => array( + 'className' => false, + 'customClassName' => false, + 'html' => false + ), + 'editorStyle' => 'wp-block-shortcode-editor' + ), + 'site-logo' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/site-logo', + 'title' => 'Site Logo', + 'category' => 'theme', + 'description' => 'Display an image to represent this site. Update this block and the changes apply everywhere.', + 'textdomain' => 'default', + 'attributes' => array( + 'width' => array( + 'type' => 'number' + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => true + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ), + 'shouldSyncIcon' => array( + 'type' => 'boolean' + ) + ), + 'example' => array( + 'viewportWidth' => 500, + 'attributes' => array( + 'width' => 350, + 'className' => 'block-editor-block-types-list__site-logo-example' + ) + ), + 'supports' => array( + 'html' => false, + 'align' => true, + 'alignWide' => false, + 'color' => array( + '__experimentalDuotone' => 'img, .components-placeholder__illustration, .components-placeholder::before', + 'text' => false, + 'background' => false + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ) + ), + 'styles' => array( + array( + 'name' => 'default', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'rounded', + 'label' => 'Rounded' + ) + ), + 'editorStyle' => 'wp-block-site-logo-editor', + 'style' => 'wp-block-site-logo' + ), + 'site-tagline' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/site-tagline', + 'title' => 'Site Tagline', + 'category' => 'theme', + 'description' => 'Describe in a few words what the site is about. The tagline can be used in search results or when sharing on social networks even if it’s not displayed in the theme design.', + 'keywords' => array( + 'description' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'example' => array( + + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ), + 'editorStyle' => 'wp-block-site-tagline-editor' + ), + 'site-title' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/site-title', + 'title' => 'Site Title', + 'category' => 'theme', + 'description' => 'Displays the name of this site. Update the block, and the changes apply everywhere it’s used. This will also appear in the browser title bar and in search results.', + 'textdomain' => 'default', + 'attributes' => array( + 'level' => array( + 'type' => 'number', + 'default' => 1 + ), + 'textAlign' => array( + 'type' => 'string' + ), + 'isLink' => array( + 'type' => 'boolean', + 'default' => true + ), + 'linkTarget' => array( + 'type' => 'string', + 'default' => '_self' + ) + ), + 'example' => array( + 'viewportWidth' => 500 + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + 'link' => true + ) + ), + 'spacing' => array( + 'padding' => true, + 'margin' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'lineHeight' => true, + 'fontAppearance' => true, + 'letterSpacing' => true, + 'textTransform' => true + ) + ) + ), + 'editorStyle' => 'wp-block-site-title-editor', + 'style' => 'wp-block-site-title' + ), + 'social-link' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/social-link', + 'title' => 'Social Icon', + 'category' => 'widgets', + 'parent' => array( + 'core/social-links' + ), + 'description' => 'Display an icon linking to a social media profile or site.', + 'textdomain' => 'default', + 'attributes' => array( + 'url' => array( + 'type' => 'string' + ), + 'service' => array( + 'type' => 'string' + ), + 'label' => array( + 'type' => 'string' + ), + 'rel' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'openInNewTab', + 'showLabels', + 'iconColor', + 'iconColorValue', + 'iconBackgroundColor', + 'iconBackgroundColorValue' + ), + 'supports' => array( + 'reusable' => false, + 'html' => false + ), + 'editorStyle' => 'wp-block-social-link-editor' + ), + 'social-links' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/social-links', + 'title' => 'Social Icons', + 'category' => 'widgets', + 'description' => 'Display icons linking to your social media profiles or sites.', + 'keywords' => array( + 'links' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'iconColor' => array( + 'type' => 'string' + ), + 'customIconColor' => array( + 'type' => 'string' + ), + 'iconColorValue' => array( + 'type' => 'string' + ), + 'iconBackgroundColor' => array( + 'type' => 'string' + ), + 'customIconBackgroundColor' => array( + 'type' => 'string' + ), + 'iconBackgroundColorValue' => array( + 'type' => 'string' + ), + 'openInNewTab' => array( + 'type' => 'boolean', + 'default' => false + ), + 'showLabels' => array( + 'type' => 'boolean', + 'default' => false + ), + 'size' => array( + 'type' => 'string' + ) + ), + 'providesContext' => array( + 'openInNewTab' => 'openInNewTab', + 'showLabels' => 'showLabels', + 'iconColor' => 'iconColor', + 'iconColorValue' => 'iconColorValue', + 'iconBackgroundColor' => 'iconBackgroundColor', + 'iconBackgroundColorValue' => 'iconBackgroundColorValue' + ), + 'supports' => array( + 'align' => array( + 'left', + 'center', + 'right' + ), + 'anchor' => true, + '__experimentalExposeControlsToChildren' => true, + 'layout' => array( + 'allowSwitching' => false, + 'allowInheriting' => false, + 'allowVerticalAlignment' => false, + 'default' => array( + 'type' => 'flex' + ) + ), + 'color' => array( + 'enableContrastChecker' => false, + 'background' => true, + 'gradients' => true, + 'text' => false, + '__experimentalDefaultControls' => array( + 'background' => false + ) + ), + 'spacing' => array( + 'blockGap' => array( + 'horizontal', + 'vertical' + ), + 'margin' => true, + 'padding' => true, + 'units' => array( + 'px', + 'em', + 'rem', + 'vh', + 'vw' + ), + '__experimentalDefaultControls' => array( + 'blockGap' => true, + 'margin' => true, + 'padding' => false + ) + ) + ), + 'styles' => array( + array( + 'name' => 'default', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'logos-only', + 'label' => 'Logos Only' + ), + array( + 'name' => 'pill-shape', + 'label' => 'Pill Shape' + ) + ), + 'editorStyle' => 'wp-block-social-links-editor', + 'style' => 'wp-block-social-links' + ), + 'spacer' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/spacer', + 'title' => 'Spacer', + 'category' => 'design', + 'description' => 'Add white space between blocks and customize its height.', + 'textdomain' => 'default', + 'attributes' => array( + 'height' => array( + 'type' => 'string', + 'default' => '100px' + ), + 'width' => array( + 'type' => 'string' + ) + ), + 'usesContext' => array( + 'orientation' + ), + 'supports' => array( + 'anchor' => true, + 'spacing' => array( + 'margin' => array( + 'top', + 'bottom' + ), + '__experimentalDefaultControls' => array( + 'margin' => true + ) + ) + ), + 'editorStyle' => 'wp-block-spacer-editor', + 'style' => 'wp-block-spacer' + ), + 'table' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/table', + 'title' => 'Table', + 'category' => 'text', + 'description' => 'Create structured content in rows and columns to display information.', + 'textdomain' => 'default', + 'attributes' => array( + 'hasFixedLayout' => array( + 'type' => 'boolean', + 'default' => false + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'figcaption', + 'default' => '' + ), + 'head' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => 'thead tr', + 'query' => array( + 'cells' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => 'td,th', + 'query' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'html' + ), + 'tag' => array( + 'type' => 'string', + 'default' => 'td', + 'source' => 'tag' + ), + 'scope' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'scope' + ), + 'align' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'data-align' + ), + 'colspan' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'colspan' + ), + 'rowspan' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'rowspan' + ) + ) + ) + ) + ), + 'body' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => 'tbody tr', + 'query' => array( + 'cells' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => 'td,th', + 'query' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'html' + ), + 'tag' => array( + 'type' => 'string', + 'default' => 'td', + 'source' => 'tag' + ), + 'scope' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'scope' + ), + 'align' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'data-align' + ), + 'colspan' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'colspan' + ), + 'rowspan' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'rowspan' + ) + ) + ) + ) + ), + 'foot' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => 'tfoot tr', + 'query' => array( + 'cells' => array( + 'type' => 'array', + 'default' => array( + + ), + 'source' => 'query', + 'selector' => 'td,th', + 'query' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'html' + ), + 'tag' => array( + 'type' => 'string', + 'default' => 'td', + 'source' => 'tag' + ), + 'scope' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'scope' + ), + 'align' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'data-align' + ), + 'colspan' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'colspan' + ), + 'rowspan' => array( + 'type' => 'string', + 'source' => 'attribute', + 'attribute' => 'rowspan' + ) + ) + ) + ) + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => true, + 'color' => array( + '__experimentalSkipSerialization' => true, + 'gradients' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ), + '__experimentalBorder' => array( + '__experimentalSkipSerialization' => true, + 'color' => true, + 'style' => true, + 'width' => true, + '__experimentalDefaultControls' => array( + 'color' => true, + 'style' => true, + 'width' => true + ) + ), + '__experimentalSelector' => '.wp-block-table > table' + ), + 'styles' => array( + array( + 'name' => 'regular', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'stripes', + 'label' => 'Stripes' + ) + ), + 'editorStyle' => 'wp-block-table-editor', + 'style' => 'wp-block-table' + ), + 'tag-cloud' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/tag-cloud', + 'title' => 'Tag Cloud', + 'category' => 'widgets', + 'description' => 'A cloud of your most used tags.', + 'textdomain' => 'default', + 'attributes' => array( + 'numberOfTags' => array( + 'type' => 'number', + 'default' => 45, + 'minimum' => 1, + 'maximum' => 100 + ), + 'taxonomy' => array( + 'type' => 'string', + 'default' => 'post_tag' + ), + 'showTagCounts' => array( + 'type' => 'boolean', + 'default' => false + ), + 'smallestFontSize' => array( + 'type' => 'string', + 'default' => '8pt' + ), + 'largestFontSize' => array( + 'type' => 'string', + 'default' => '22pt' + ) + ), + 'styles' => array( + array( + 'name' => 'default', + 'label' => 'Default', + 'isDefault' => true + ), + array( + 'name' => 'outline', + 'label' => 'Outline' + ) + ), + 'supports' => array( + 'html' => false, + 'align' => true, + 'spacing' => array( + 'margin' => true, + 'padding' => true + ), + 'typography' => array( + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalLetterSpacing' => true + ) + ), + 'editorStyle' => 'wp-block-tag-cloud-editor' + ), + 'template-part' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/template-part', + 'title' => 'Template Part', + 'category' => 'theme', + 'description' => 'Edit the different global regions of your site, like the header, footer, sidebar, or create your own.', + 'textdomain' => 'default', + 'attributes' => array( + 'slug' => array( + 'type' => 'string' + ), + 'theme' => array( + 'type' => 'string' + ), + 'tagName' => array( + 'type' => 'string' + ), + 'area' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'align' => true, + 'html' => false, + 'reusable' => false + ), + 'editorStyle' => 'wp-block-template-part-editor' + ), + 'term-description' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/term-description', + 'title' => 'Term Description', + 'category' => 'theme', + 'description' => 'Display the description of categories, tags and custom taxonomies when viewing an archive.', + 'textdomain' => 'default', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'align' => array( + 'wide', + 'full' + ), + 'html' => false, + 'color' => array( + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'spacing' => array( + 'padding' => true, + 'margin' => true + ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontFamily' => true, + '__experimentalFontWeight' => true, + '__experimentalFontStyle' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalLetterSpacing' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true + ) + ) + ) + ), + 'text-columns' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/text-columns', + 'title' => 'Text Columns (deprecated)', + 'icon' => 'columns', + 'category' => 'design', + 'description' => 'This block is deprecated. Please use the Columns block instead.', + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'array', + 'source' => 'query', + 'selector' => 'p', + 'query' => array( + 'children' => array( + 'type' => 'string', + 'source' => 'html' + ) + ), + 'default' => array( + array( + + ), + array( + + ) + ) + ), + 'columns' => array( + 'type' => 'number', + 'default' => 2 + ), + 'width' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'inserter' => false + ), + 'editorStyle' => 'wp-block-text-columns-editor', + 'style' => 'wp-block-text-columns' + ), + 'verse' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/verse', + 'title' => 'Verse', + 'category' => 'text', + 'description' => 'Insert poetry. Use special spacing formats. Or quote song lyrics.', + 'keywords' => array( + 'poetry', + 'poem' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'content' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'pre', + 'default' => '', + '__unstablePreserveWhiteSpace' => true, + '__experimentalRole' => 'content' + ), + 'textAlign' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'anchor' => true, + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true + ) + ), + 'typography' => array( + 'fontSize' => true, + '__experimentalFontFamily' => true, + 'lineHeight' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalTextDecoration' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + 'fontAppearance' => true + ) + ), + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ), + '__experimentalBorder' => array( + 'radius' => true, + 'width' => true, + 'color' => true, + 'style' => true + ) + ), + 'style' => 'wp-block-verse', + 'editorStyle' => 'wp-block-verse-editor' + ), + 'video' => array( + '$schema' => 'https://schemas.wp.org/trunk/block.json', + 'apiVersion' => 3, + 'name' => 'core/video', + 'title' => 'Video', + 'category' => 'media', + 'description' => 'Embed a video from your media library or upload a new one.', + 'keywords' => array( + 'movie' + ), + 'textdomain' => 'default', + 'attributes' => array( + 'autoplay' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'autoplay' + ), + 'caption' => array( + 'type' => 'string', + 'source' => 'html', + 'selector' => 'figcaption', + '__experimentalRole' => 'content' + ), + 'controls' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'controls', + 'default' => true + ), + 'id' => array( + 'type' => 'number', + '__experimentalRole' => 'content' + ), + 'loop' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'loop' + ), + 'muted' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'muted' + ), + 'poster' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'poster' + ), + 'preload' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'preload', + 'default' => 'metadata' + ), + 'src' => array( + 'type' => 'string', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'src', + '__experimentalRole' => 'content' + ), + 'playsInline' => array( + 'type' => 'boolean', + 'source' => 'attribute', + 'selector' => 'video', + 'attribute' => 'playsinline' + ), + 'tracks' => array( + '__experimentalRole' => 'content', + 'type' => 'array', + 'items' => array( + 'type' => 'object' + ), + 'default' => array( + + ) + ) + ), + 'supports' => array( + 'anchor' => true, + 'align' => true, + 'spacing' => array( + 'margin' => true, + 'padding' => true, + '__experimentalDefaultControls' => array( + 'margin' => false, + 'padding' => false + ) + ) + ), + 'editorStyle' => 'wp-block-video-editor', + 'style' => 'wp-block-video' + ), + 'widget-group' => array( + 'apiVersion' => 3, + 'name' => 'core/widget-group', + 'category' => 'widgets', + 'attributes' => array( + 'title' => array( + 'type' => 'string' + ) + ), + 'supports' => array( + 'html' => false, + 'inserter' => true, + 'customClassName' => true, + 'reusable' => false + ), + 'editorStyle' => 'wp-block-widget-group-editor', + 'style' => 'wp-block-widget-group' + ) +);
\ No newline at end of file diff --git a/wp-includes/blocks/button/block.json b/wp-includes/blocks/button/block.json new file mode 100644 index 0000000..eec327b --- /dev/null +++ b/wp-includes/blocks/button/block.json @@ -0,0 +1,129 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/button", + "title": "Button", + "category": "design", + "parent": [ "core/buttons" ], + "description": "Prompt visitors to take action with a button-style link.", + "keywords": [ "link" ], + "textdomain": "default", + "attributes": { + "tagName": { + "type": "string", + "enum": [ "a", "button" ], + "default": "a" + }, + "type": { + "type": "string", + "default": "button" + }, + "textAlign": { + "type": "string" + }, + "url": { + "type": "string", + "source": "attribute", + "selector": "a", + "attribute": "href", + "__experimentalRole": "content" + }, + "title": { + "type": "string", + "source": "attribute", + "selector": "a,button", + "attribute": "title", + "__experimentalRole": "content" + }, + "text": { + "type": "string", + "source": "html", + "selector": "a,button", + "__experimentalRole": "content" + }, + "linkTarget": { + "type": "string", + "source": "attribute", + "selector": "a", + "attribute": "target", + "__experimentalRole": "content" + }, + "rel": { + "type": "string", + "source": "attribute", + "selector": "a", + "attribute": "rel", + "__experimentalRole": "content" + }, + "placeholder": { + "type": "string" + }, + "backgroundColor": { + "type": "string" + }, + "textColor": { + "type": "string" + }, + "gradient": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "supports": { + "anchor": true, + "align": false, + "alignWide": false, + "color": { + "__experimentalSkipSerialization": true, + "gradients": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "reusable": false, + "shadow": true, + "spacing": { + "__experimentalSkipSerialization": true, + "padding": [ "horizontal", "vertical" ], + "__experimentalDefaultControls": { + "padding": true + } + }, + "__experimentalBorder": { + "color": true, + "radius": true, + "style": true, + "width": true, + "__experimentalSkipSerialization": true, + "__experimentalDefaultControls": { + "color": true, + "radius": true, + "style": true, + "width": true + } + }, + "__experimentalSelector": ".wp-block-button .wp-block-button__link" + }, + "styles": [ + { "name": "fill", "label": "Fill", "isDefault": true }, + { "name": "outline", "label": "Outline" } + ], + "editorStyle": "wp-block-button-editor", + "style": "wp-block-button" +} diff --git a/wp-includes/blocks/button/editor-rtl.css b/wp-includes/blocks/button/editor-rtl.css new file mode 100644 index 0000000..b44770c --- /dev/null +++ b/wp-includes/blocks/button/editor-rtl.css @@ -0,0 +1,92 @@ +.wp-block[data-align=center]>.wp-block-button{ + margin-left:auto; + margin-right:auto; + text-align:center; +} + +.wp-block[data-align=right]>.wp-block-button{ + text-align:right; +} + +.wp-block-button{ + cursor:text; + position:relative; +} +.wp-block-button:focus{ + box-shadow:0 0 0 1px #fff, 0 0 0 3px var(--wp-admin-theme-color); + outline:2px solid transparent; + outline-offset:-2px; +} +.wp-block-button[data-rich-text-placeholder]:after{ + opacity:.8; +} + +.wp-block-button__inline-link{ + color:#757575; + height:0; + max-width:290px; + overflow:hidden; +} +.wp-block-button__inline-link-input__suggestions{ + max-width:290px; +} +@media (min-width:782px){ + .wp-block-button__inline-link,.wp-block-button__inline-link-input__suggestions{ + max-width:260px; + } +} +@media (min-width:960px){ + .wp-block-button__inline-link,.wp-block-button__inline-link-input__suggestions{ + max-width:290px; + } +} +.is-selected .wp-block-button__inline-link{ + height:auto; + overflow:visible; +} + +.wp-button-label__width .components-button-group{ + display:block; +} +.wp-button-label__width .components-base-control__field{ + margin-bottom:12px; +} + +div[data-type="core/button"]{ + display:table; +} + +.editor-styles-wrapper .wp-block-button[style*=text-decoration] .wp-block-button__link{ + text-decoration:inherit; +} + +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where(.has-border-color){ + border-width:initial; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-color]){ + border-top-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-color]){ + border-left-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){ + border-bottom-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-color]){ + border-right-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-style]){ + border-width:initial; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-style]){ + border-top-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-style]){ + border-left-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){ + border-bottom-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-style]){ + border-right-width:medium; +}
\ No newline at end of file diff --git a/wp-includes/blocks/button/editor-rtl.min.css b/wp-includes/blocks/button/editor-rtl.min.css new file mode 100644 index 0000000..70b3555 --- /dev/null +++ b/wp-includes/blocks/button/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block[data-align=center]>.wp-block-button{margin-left:auto;margin-right:auto;text-align:center}.wp-block[data-align=right]>.wp-block-button{text-align:right}.wp-block-button{cursor:text;position:relative}.wp-block-button:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px var(--wp-admin-theme-color);outline:2px solid transparent;outline-offset:-2px}.wp-block-button[data-rich-text-placeholder]:after{opacity:.8}.wp-block-button__inline-link{color:#757575;height:0;max-width:290px;overflow:hidden}.wp-block-button__inline-link-input__suggestions{max-width:290px}@media (min-width:782px){.wp-block-button__inline-link,.wp-block-button__inline-link-input__suggestions{max-width:260px}}@media (min-width:960px){.wp-block-button__inline-link,.wp-block-button__inline-link-input__suggestions{max-width:290px}}.is-selected .wp-block-button__inline-link{height:auto;overflow:visible}.wp-button-label__width .components-button-group{display:block}.wp-button-label__width .components-base-control__field{margin-bottom:12px}div[data-type="core/button"]{display:table}.editor-styles-wrapper .wp-block-button[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where(.has-border-color){border-width:initial}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-color]){border-top-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-color]){border-left-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){border-bottom-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-color]){border-right-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-style]){border-width:initial}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-style]){border-top-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-style]){border-left-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){border-bottom-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-style]){border-right-width:medium}
\ No newline at end of file diff --git a/wp-includes/blocks/button/editor.css b/wp-includes/blocks/button/editor.css new file mode 100644 index 0000000..39d3b86 --- /dev/null +++ b/wp-includes/blocks/button/editor.css @@ -0,0 +1,92 @@ +.wp-block[data-align=center]>.wp-block-button{ + margin-left:auto; + margin-right:auto; + text-align:center; +} + +.wp-block[data-align=right]>.wp-block-button{ + text-align:right; +} + +.wp-block-button{ + cursor:text; + position:relative; +} +.wp-block-button:focus{ + box-shadow:0 0 0 1px #fff, 0 0 0 3px var(--wp-admin-theme-color); + outline:2px solid transparent; + outline-offset:-2px; +} +.wp-block-button[data-rich-text-placeholder]:after{ + opacity:.8; +} + +.wp-block-button__inline-link{ + color:#757575; + height:0; + max-width:290px; + overflow:hidden; +} +.wp-block-button__inline-link-input__suggestions{ + max-width:290px; +} +@media (min-width:782px){ + .wp-block-button__inline-link,.wp-block-button__inline-link-input__suggestions{ + max-width:260px; + } +} +@media (min-width:960px){ + .wp-block-button__inline-link,.wp-block-button__inline-link-input__suggestions{ + max-width:290px; + } +} +.is-selected .wp-block-button__inline-link{ + height:auto; + overflow:visible; +} + +.wp-button-label__width .components-button-group{ + display:block; +} +.wp-button-label__width .components-base-control__field{ + margin-bottom:12px; +} + +div[data-type="core/button"]{ + display:table; +} + +.editor-styles-wrapper .wp-block-button[style*=text-decoration] .wp-block-button__link{ + text-decoration:inherit; +} + +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where(.has-border-color){ + border-width:initial; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-color]){ + border-top-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-color]){ + border-right-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){ + border-bottom-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-color]){ + border-left-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-style]){ + border-width:initial; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-style]){ + border-top-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-style]){ + border-right-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){ + border-bottom-width:medium; +} +.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-style]){ + border-left-width:medium; +}
\ No newline at end of file diff --git a/wp-includes/blocks/button/editor.min.css b/wp-includes/blocks/button/editor.min.css new file mode 100644 index 0000000..32721ec --- /dev/null +++ b/wp-includes/blocks/button/editor.min.css @@ -0,0 +1,2 @@ +.wp-block[data-align=center]>.wp-block-button{margin-left:auto;margin-right:auto;text-align:center}.wp-block[data-align=right]>.wp-block-button{ + /*!rtl:ignore*/text-align:right}.wp-block-button{cursor:text;position:relative}.wp-block-button:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px var(--wp-admin-theme-color);outline:2px solid transparent;outline-offset:-2px}.wp-block-button[data-rich-text-placeholder]:after{opacity:.8}.wp-block-button__inline-link{color:#757575;height:0;max-width:290px;overflow:hidden}.wp-block-button__inline-link-input__suggestions{max-width:290px}@media (min-width:782px){.wp-block-button__inline-link,.wp-block-button__inline-link-input__suggestions{max-width:260px}}@media (min-width:960px){.wp-block-button__inline-link,.wp-block-button__inline-link-input__suggestions{max-width:290px}}.is-selected .wp-block-button__inline-link{height:auto;overflow:visible}.wp-button-label__width .components-button-group{display:block}.wp-button-label__width .components-base-control__field{margin-bottom:12px}div[data-type="core/button"]{display:table}.editor-styles-wrapper .wp-block-button[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where(.has-border-color){border-width:initial}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-color]){border-top-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-color]){border-right-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){border-bottom-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-color]){border-left-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-style]){border-width:initial}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-style]){border-top-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-style]){border-right-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){border-bottom-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-style]){border-left-width:medium}
\ No newline at end of file diff --git a/wp-includes/blocks/button/style-rtl.css b/wp-includes/blocks/button/style-rtl.css new file mode 100644 index 0000000..5e0c72e --- /dev/null +++ b/wp-includes/blocks/button/style-rtl.css @@ -0,0 +1,110 @@ +.wp-block-button__link{ + box-sizing:border-box; + cursor:pointer; + display:inline-block; + text-align:center; + word-break:break-word; +} +.wp-block-button__link.aligncenter{ + text-align:center; +} +.wp-block-button__link.alignright{ + text-align:right; +} + +:where(.wp-block-button__link){ + border-radius:9999px; + box-shadow:none; + padding:calc(.667em + 2px) calc(1.333em + 2px); + text-decoration:none; +} + +.wp-block-button[style*=text-decoration] .wp-block-button__link{ + text-decoration:inherit; +} + +.wp-block-buttons>.wp-block-button.has-custom-width{ + max-width:none; +} +.wp-block-buttons>.wp-block-button.has-custom-width .wp-block-button__link{ + width:100%; +} +.wp-block-buttons>.wp-block-button.has-custom-font-size .wp-block-button__link{ + font-size:inherit; +} +.wp-block-buttons>.wp-block-button.wp-block-button__width-25{ + width:calc(25% - var(--wp--style--block-gap, .5em)*.75); +} +.wp-block-buttons>.wp-block-button.wp-block-button__width-50{ + width:calc(50% - var(--wp--style--block-gap, .5em)*.5); +} +.wp-block-buttons>.wp-block-button.wp-block-button__width-75{ + width:calc(75% - var(--wp--style--block-gap, .5em)*.25); +} +.wp-block-buttons>.wp-block-button.wp-block-button__width-100{ + flex-basis:100%; + width:100%; +} + +.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-25{ + width:25%; +} +.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-50{ + width:50%; +} +.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-75{ + width:75%; +} + +.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{ + border-radius:0; +} + +.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{ + border-radius:0 !important; +} + +.wp-block-button .wp-block-button__link.is-style-outline,.wp-block-button.is-style-outline>.wp-block-button__link{ + border:2px solid; + padding:.667em 1.333em; +} + +.wp-block-button .wp-block-button__link.is-style-outline:not(.has-text-color),.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-text-color){ + color:currentColor; +} + +.wp-block-button .wp-block-button__link.is-style-outline:not(.has-background),.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-background){ + background-color:transparent; + background-image:none; +} + +.wp-block-button .wp-block-button__link:where(.has-border-color){ + border-width:initial; +} +.wp-block-button .wp-block-button__link:where([style*=border-top-color]){ + border-top-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-right-color]){ + border-left-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){ + border-bottom-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-left-color]){ + border-right-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-style]){ + border-width:initial; +} +.wp-block-button .wp-block-button__link:where([style*=border-top-style]){ + border-top-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-right-style]){ + border-left-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){ + border-bottom-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-left-style]){ + border-right-width:medium; +}
\ No newline at end of file diff --git a/wp-includes/blocks/button/style-rtl.min.css b/wp-includes/blocks/button/style-rtl.min.css new file mode 100644 index 0000000..307c048 --- /dev/null +++ b/wp-includes/blocks/button/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-button__link{box-sizing:border-box;cursor:pointer;display:inline-block;text-align:center;word-break:break-word}.wp-block-button__link.aligncenter{text-align:center}.wp-block-button__link.alignright{text-align:right}:where(.wp-block-button__link){border-radius:9999px;box-shadow:none;padding:calc(.667em + 2px) calc(1.333em + 2px);text-decoration:none}.wp-block-button[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.wp-block-buttons>.wp-block-button.has-custom-width{max-width:none}.wp-block-buttons>.wp-block-button.has-custom-width .wp-block-button__link{width:100%}.wp-block-buttons>.wp-block-button.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block-buttons>.wp-block-button.wp-block-button__width-25{width:calc(25% - var(--wp--style--block-gap, .5em)*.75)}.wp-block-buttons>.wp-block-button.wp-block-button__width-50{width:calc(50% - var(--wp--style--block-gap, .5em)*.5)}.wp-block-buttons>.wp-block-button.wp-block-button__width-75{width:calc(75% - var(--wp--style--block-gap, .5em)*.25)}.wp-block-buttons>.wp-block-button.wp-block-button__width-100{flex-basis:100%;width:100%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-25{width:25%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-50{width:50%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-75{width:75%}.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{border-radius:0}.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{border-radius:0!important}.wp-block-button .wp-block-button__link.is-style-outline,.wp-block-button.is-style-outline>.wp-block-button__link{border:2px solid;padding:.667em 1.333em}.wp-block-button .wp-block-button__link.is-style-outline:not(.has-text-color),.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-text-color){color:currentColor}.wp-block-button .wp-block-button__link.is-style-outline:not(.has-background),.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-background){background-color:transparent;background-image:none}.wp-block-button .wp-block-button__link:where(.has-border-color){border-width:initial}.wp-block-button .wp-block-button__link:where([style*=border-top-color]){border-top-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-right-color]){border-left-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){border-bottom-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-left-color]){border-right-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-style]){border-width:initial}.wp-block-button .wp-block-button__link:where([style*=border-top-style]){border-top-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-right-style]){border-left-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){border-bottom-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-left-style]){border-right-width:medium}
\ No newline at end of file diff --git a/wp-includes/blocks/button/style.css b/wp-includes/blocks/button/style.css new file mode 100644 index 0000000..09a46ed --- /dev/null +++ b/wp-includes/blocks/button/style.css @@ -0,0 +1,110 @@ +.wp-block-button__link{ + box-sizing:border-box; + cursor:pointer; + display:inline-block; + text-align:center; + word-break:break-word; +} +.wp-block-button__link.aligncenter{ + text-align:center; +} +.wp-block-button__link.alignright{ + text-align:right; +} + +:where(.wp-block-button__link){ + border-radius:9999px; + box-shadow:none; + padding:calc(.667em + 2px) calc(1.333em + 2px); + text-decoration:none; +} + +.wp-block-button[style*=text-decoration] .wp-block-button__link{ + text-decoration:inherit; +} + +.wp-block-buttons>.wp-block-button.has-custom-width{ + max-width:none; +} +.wp-block-buttons>.wp-block-button.has-custom-width .wp-block-button__link{ + width:100%; +} +.wp-block-buttons>.wp-block-button.has-custom-font-size .wp-block-button__link{ + font-size:inherit; +} +.wp-block-buttons>.wp-block-button.wp-block-button__width-25{ + width:calc(25% - var(--wp--style--block-gap, .5em)*.75); +} +.wp-block-buttons>.wp-block-button.wp-block-button__width-50{ + width:calc(50% - var(--wp--style--block-gap, .5em)*.5); +} +.wp-block-buttons>.wp-block-button.wp-block-button__width-75{ + width:calc(75% - var(--wp--style--block-gap, .5em)*.25); +} +.wp-block-buttons>.wp-block-button.wp-block-button__width-100{ + flex-basis:100%; + width:100%; +} + +.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-25{ + width:25%; +} +.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-50{ + width:50%; +} +.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-75{ + width:75%; +} + +.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{ + border-radius:0; +} + +.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{ + border-radius:0 !important; +} + +.wp-block-button .wp-block-button__link.is-style-outline,.wp-block-button.is-style-outline>.wp-block-button__link{ + border:2px solid; + padding:.667em 1.333em; +} + +.wp-block-button .wp-block-button__link.is-style-outline:not(.has-text-color),.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-text-color){ + color:currentColor; +} + +.wp-block-button .wp-block-button__link.is-style-outline:not(.has-background),.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-background){ + background-color:transparent; + background-image:none; +} + +.wp-block-button .wp-block-button__link:where(.has-border-color){ + border-width:initial; +} +.wp-block-button .wp-block-button__link:where([style*=border-top-color]){ + border-top-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-right-color]){ + border-right-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){ + border-bottom-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-left-color]){ + border-left-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-style]){ + border-width:initial; +} +.wp-block-button .wp-block-button__link:where([style*=border-top-style]){ + border-top-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-right-style]){ + border-right-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){ + border-bottom-width:medium; +} +.wp-block-button .wp-block-button__link:where([style*=border-left-style]){ + border-left-width:medium; +}
\ No newline at end of file diff --git a/wp-includes/blocks/button/style.min.css b/wp-includes/blocks/button/style.min.css new file mode 100644 index 0000000..cd8f86b --- /dev/null +++ b/wp-includes/blocks/button/style.min.css @@ -0,0 +1 @@ +.wp-block-button__link{box-sizing:border-box;cursor:pointer;display:inline-block;text-align:center;word-break:break-word}.wp-block-button__link.aligncenter{text-align:center}.wp-block-button__link.alignright{text-align:right}:where(.wp-block-button__link){border-radius:9999px;box-shadow:none;padding:calc(.667em + 2px) calc(1.333em + 2px);text-decoration:none}.wp-block-button[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.wp-block-buttons>.wp-block-button.has-custom-width{max-width:none}.wp-block-buttons>.wp-block-button.has-custom-width .wp-block-button__link{width:100%}.wp-block-buttons>.wp-block-button.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block-buttons>.wp-block-button.wp-block-button__width-25{width:calc(25% - var(--wp--style--block-gap, .5em)*.75)}.wp-block-buttons>.wp-block-button.wp-block-button__width-50{width:calc(50% - var(--wp--style--block-gap, .5em)*.5)}.wp-block-buttons>.wp-block-button.wp-block-button__width-75{width:calc(75% - var(--wp--style--block-gap, .5em)*.25)}.wp-block-buttons>.wp-block-button.wp-block-button__width-100{flex-basis:100%;width:100%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-25{width:25%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-50{width:50%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-75{width:75%}.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{border-radius:0}.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{border-radius:0!important}.wp-block-button .wp-block-button__link.is-style-outline,.wp-block-button.is-style-outline>.wp-block-button__link{border:2px solid;padding:.667em 1.333em}.wp-block-button .wp-block-button__link.is-style-outline:not(.has-text-color),.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-text-color){color:currentColor}.wp-block-button .wp-block-button__link.is-style-outline:not(.has-background),.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-background){background-color:transparent;background-image:none}.wp-block-button .wp-block-button__link:where(.has-border-color){border-width:initial}.wp-block-button .wp-block-button__link:where([style*=border-top-color]){border-top-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-right-color]){border-right-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){border-bottom-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-left-color]){border-left-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-style]){border-width:initial}.wp-block-button .wp-block-button__link:where([style*=border-top-style]){border-top-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-right-style]){border-right-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){border-bottom-width:medium}.wp-block-button .wp-block-button__link:where([style*=border-left-style]){border-left-width:medium}
\ No newline at end of file diff --git a/wp-includes/blocks/buttons/block.json b/wp-includes/blocks/buttons/block.json new file mode 100644 index 0000000..4dc420b --- /dev/null +++ b/wp-includes/blocks/buttons/block.json @@ -0,0 +1,45 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/buttons", + "title": "Buttons", + "category": "design", + "description": "Prompt visitors to take action with a group of button-style links.", + "keywords": [ "link" ], + "textdomain": "default", + "supports": { + "anchor": true, + "align": [ "wide", "full" ], + "html": false, + "__experimentalExposeControlsToChildren": true, + "spacing": { + "blockGap": true, + "margin": [ "top", "bottom" ], + "__experimentalDefaultControls": { + "blockGap": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "layout": { + "allowSwitching": false, + "allowInheriting": false, + "default": { + "type": "flex" + } + } + }, + "editorStyle": "wp-block-buttons-editor", + "style": "wp-block-buttons" +} diff --git a/wp-includes/blocks/buttons/editor-rtl.css b/wp-includes/blocks/buttons/editor-rtl.css new file mode 100644 index 0000000..af2ce7b --- /dev/null +++ b/wp-includes/blocks/buttons/editor-rtl.css @@ -0,0 +1,34 @@ +.wp-block-buttons>.wp-block,.wp-block-buttons>.wp-block-button.wp-block-button.wp-block-button.wp-block-button.wp-block-button{ + margin:0; +} +.wp-block-buttons>.block-list-appender{ + align-items:center; + display:inline-flex; +} +.wp-block-buttons.is-vertical>.block-list-appender .block-list-appender__toggle{ + justify-content:flex-start; +} +.wp-block-buttons>.wp-block-button:focus{ + box-shadow:none; +} +.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center]{ + margin-left:auto; + margin-right:auto; + margin-top:0; + width:100%; +} +.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center] .wp-block-button{ + margin-bottom:0; +} +.editor-styles-wrapper .wp-block-buttons.has-custom-font-size .wp-block-button__link{ + font-size:inherit; +} + +.wp-block[data-align=center]>.wp-block-buttons{ + align-items:center; + justify-content:center; +} + +.wp-block[data-align=right]>.wp-block-buttons{ + justify-content:flex-end; +}
\ No newline at end of file diff --git a/wp-includes/blocks/buttons/editor-rtl.min.css b/wp-includes/blocks/buttons/editor-rtl.min.css new file mode 100644 index 0000000..65396cd --- /dev/null +++ b/wp-includes/blocks/buttons/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-buttons>.wp-block,.wp-block-buttons>.wp-block-button.wp-block-button.wp-block-button.wp-block-button.wp-block-button{margin:0}.wp-block-buttons>.block-list-appender{align-items:center;display:inline-flex}.wp-block-buttons.is-vertical>.block-list-appender .block-list-appender__toggle{justify-content:flex-start}.wp-block-buttons>.wp-block-button:focus{box-shadow:none}.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center]{margin-left:auto;margin-right:auto;margin-top:0;width:100%}.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center] .wp-block-button{margin-bottom:0}.editor-styles-wrapper .wp-block-buttons.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block[data-align=center]>.wp-block-buttons{align-items:center;justify-content:center}.wp-block[data-align=right]>.wp-block-buttons{justify-content:flex-end}
\ No newline at end of file diff --git a/wp-includes/blocks/buttons/editor.css b/wp-includes/blocks/buttons/editor.css new file mode 100644 index 0000000..af2ce7b --- /dev/null +++ b/wp-includes/blocks/buttons/editor.css @@ -0,0 +1,34 @@ +.wp-block-buttons>.wp-block,.wp-block-buttons>.wp-block-button.wp-block-button.wp-block-button.wp-block-button.wp-block-button{ + margin:0; +} +.wp-block-buttons>.block-list-appender{ + align-items:center; + display:inline-flex; +} +.wp-block-buttons.is-vertical>.block-list-appender .block-list-appender__toggle{ + justify-content:flex-start; +} +.wp-block-buttons>.wp-block-button:focus{ + box-shadow:none; +} +.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center]{ + margin-left:auto; + margin-right:auto; + margin-top:0; + width:100%; +} +.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center] .wp-block-button{ + margin-bottom:0; +} +.editor-styles-wrapper .wp-block-buttons.has-custom-font-size .wp-block-button__link{ + font-size:inherit; +} + +.wp-block[data-align=center]>.wp-block-buttons{ + align-items:center; + justify-content:center; +} + +.wp-block[data-align=right]>.wp-block-buttons{ + justify-content:flex-end; +}
\ No newline at end of file diff --git a/wp-includes/blocks/buttons/editor.min.css b/wp-includes/blocks/buttons/editor.min.css new file mode 100644 index 0000000..65396cd --- /dev/null +++ b/wp-includes/blocks/buttons/editor.min.css @@ -0,0 +1 @@ +.wp-block-buttons>.wp-block,.wp-block-buttons>.wp-block-button.wp-block-button.wp-block-button.wp-block-button.wp-block-button{margin:0}.wp-block-buttons>.block-list-appender{align-items:center;display:inline-flex}.wp-block-buttons.is-vertical>.block-list-appender .block-list-appender__toggle{justify-content:flex-start}.wp-block-buttons>.wp-block-button:focus{box-shadow:none}.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center]{margin-left:auto;margin-right:auto;margin-top:0;width:100%}.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center] .wp-block-button{margin-bottom:0}.editor-styles-wrapper .wp-block-buttons.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block[data-align=center]>.wp-block-buttons{align-items:center;justify-content:center}.wp-block[data-align=right]>.wp-block-buttons{justify-content:flex-end}
\ No newline at end of file diff --git a/wp-includes/blocks/buttons/style-rtl.css b/wp-includes/blocks/buttons/style-rtl.css new file mode 100644 index 0000000..8ece307 --- /dev/null +++ b/wp-includes/blocks/buttons/style-rtl.css @@ -0,0 +1,49 @@ +.wp-block-buttons.is-vertical{ + flex-direction:column; +} +.wp-block-buttons.is-vertical>.wp-block-button:last-child{ + margin-bottom:0; +} +.wp-block-buttons>.wp-block-button{ + display:inline-block; + margin:0; +} +.wp-block-buttons.is-content-justification-left{ + justify-content:flex-start; +} +.wp-block-buttons.is-content-justification-left.is-vertical{ + align-items:flex-start; +} +.wp-block-buttons.is-content-justification-center{ + justify-content:center; +} +.wp-block-buttons.is-content-justification-center.is-vertical{ + align-items:center; +} +.wp-block-buttons.is-content-justification-right{ + justify-content:flex-end; +} +.wp-block-buttons.is-content-justification-right.is-vertical{ + align-items:flex-end; +} +.wp-block-buttons.is-content-justification-space-between{ + justify-content:space-between; +} +.wp-block-buttons.aligncenter{ + text-align:center; +} +.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block-button.aligncenter{ + margin-left:auto; + margin-right:auto; + width:100%; +} +.wp-block-buttons[style*=text-decoration] .wp-block-button,.wp-block-buttons[style*=text-decoration] .wp-block-button__link{ + text-decoration:inherit; +} +.wp-block-buttons.has-custom-font-size .wp-block-button__link{ + font-size:inherit; +} + +.wp-block-button.aligncenter{ + text-align:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/buttons/style-rtl.min.css b/wp-includes/blocks/buttons/style-rtl.min.css new file mode 100644 index 0000000..6816481 --- /dev/null +++ b/wp-includes/blocks/buttons/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-buttons.is-vertical{flex-direction:column}.wp-block-buttons.is-vertical>.wp-block-button:last-child{margin-bottom:0}.wp-block-buttons>.wp-block-button{display:inline-block;margin:0}.wp-block-buttons.is-content-justification-left{justify-content:flex-start}.wp-block-buttons.is-content-justification-left.is-vertical{align-items:flex-start}.wp-block-buttons.is-content-justification-center{justify-content:center}.wp-block-buttons.is-content-justification-center.is-vertical{align-items:center}.wp-block-buttons.is-content-justification-right{justify-content:flex-end}.wp-block-buttons.is-content-justification-right.is-vertical{align-items:flex-end}.wp-block-buttons.is-content-justification-space-between{justify-content:space-between}.wp-block-buttons.aligncenter{text-align:center}.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block-button.aligncenter{margin-left:auto;margin-right:auto;width:100%}.wp-block-buttons[style*=text-decoration] .wp-block-button,.wp-block-buttons[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.wp-block-buttons.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block-button.aligncenter{text-align:center}
\ No newline at end of file diff --git a/wp-includes/blocks/buttons/style.css b/wp-includes/blocks/buttons/style.css new file mode 100644 index 0000000..8ece307 --- /dev/null +++ b/wp-includes/blocks/buttons/style.css @@ -0,0 +1,49 @@ +.wp-block-buttons.is-vertical{ + flex-direction:column; +} +.wp-block-buttons.is-vertical>.wp-block-button:last-child{ + margin-bottom:0; +} +.wp-block-buttons>.wp-block-button{ + display:inline-block; + margin:0; +} +.wp-block-buttons.is-content-justification-left{ + justify-content:flex-start; +} +.wp-block-buttons.is-content-justification-left.is-vertical{ + align-items:flex-start; +} +.wp-block-buttons.is-content-justification-center{ + justify-content:center; +} +.wp-block-buttons.is-content-justification-center.is-vertical{ + align-items:center; +} +.wp-block-buttons.is-content-justification-right{ + justify-content:flex-end; +} +.wp-block-buttons.is-content-justification-right.is-vertical{ + align-items:flex-end; +} +.wp-block-buttons.is-content-justification-space-between{ + justify-content:space-between; +} +.wp-block-buttons.aligncenter{ + text-align:center; +} +.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block-button.aligncenter{ + margin-left:auto; + margin-right:auto; + width:100%; +} +.wp-block-buttons[style*=text-decoration] .wp-block-button,.wp-block-buttons[style*=text-decoration] .wp-block-button__link{ + text-decoration:inherit; +} +.wp-block-buttons.has-custom-font-size .wp-block-button__link{ + font-size:inherit; +} + +.wp-block-button.aligncenter{ + text-align:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/buttons/style.min.css b/wp-includes/blocks/buttons/style.min.css new file mode 100644 index 0000000..6816481 --- /dev/null +++ b/wp-includes/blocks/buttons/style.min.css @@ -0,0 +1 @@ +.wp-block-buttons.is-vertical{flex-direction:column}.wp-block-buttons.is-vertical>.wp-block-button:last-child{margin-bottom:0}.wp-block-buttons>.wp-block-button{display:inline-block;margin:0}.wp-block-buttons.is-content-justification-left{justify-content:flex-start}.wp-block-buttons.is-content-justification-left.is-vertical{align-items:flex-start}.wp-block-buttons.is-content-justification-center{justify-content:center}.wp-block-buttons.is-content-justification-center.is-vertical{align-items:center}.wp-block-buttons.is-content-justification-right{justify-content:flex-end}.wp-block-buttons.is-content-justification-right.is-vertical{align-items:flex-end}.wp-block-buttons.is-content-justification-space-between{justify-content:space-between}.wp-block-buttons.aligncenter{text-align:center}.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block-button.aligncenter{margin-left:auto;margin-right:auto;width:100%}.wp-block-buttons[style*=text-decoration] .wp-block-button,.wp-block-buttons[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.wp-block-buttons.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block-button.aligncenter{text-align:center}
\ No newline at end of file diff --git a/wp-includes/blocks/calendar.php b/wp-includes/blocks/calendar.php new file mode 100644 index 0000000..f1f7967 --- /dev/null +++ b/wp-includes/blocks/calendar.php @@ -0,0 +1,176 @@ +<?php +/** + * Server-side rendering of the `core/calendar` block. + * + * @package WordPress + */ + +/** + * Renders the `core/calendar` block on server. + * + * @param array $attributes The block attributes. + * + * @return string Returns the block content. + */ +function render_block_core_calendar( $attributes ) { + global $monthnum, $year; + + // Calendar shouldn't be rendered + // when there are no published posts on the site. + if ( ! block_core_calendar_has_published_posts() ) { + if ( is_user_logged_in() ) { + return '<div>' . __( 'The calendar block is hidden because there are no published posts.' ) . '</div>'; + } + return ''; + } + + $previous_monthnum = $monthnum; + $previous_year = $year; + + if ( isset( $attributes['month'] ) && isset( $attributes['year'] ) ) { + $permalink_structure = get_option( 'permalink_structure' ); + if ( + str_contains( $permalink_structure, '%monthnum%' ) && + str_contains( $permalink_structure, '%year%' ) + ) { + // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited + $monthnum = $attributes['month']; + // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited + $year = $attributes['year']; + } + } + + $color_block_styles = array(); + + // Text color. + $preset_text_color = array_key_exists( 'textColor', $attributes ) ? "var:preset|color|{$attributes['textColor']}" : null; + $custom_text_color = $attributes['style']['color']['text'] ?? null; + $color_block_styles['text'] = $preset_text_color ? $preset_text_color : $custom_text_color; + + // Background Color. + $preset_background_color = array_key_exists( 'backgroundColor', $attributes ) ? "var:preset|color|{$attributes['backgroundColor']}" : null; + $custom_background_color = $attributes['style']['color']['background'] ?? null; + $color_block_styles['background'] = $preset_background_color ? $preset_background_color : $custom_background_color; + + // Generate color styles and classes. + $styles = wp_style_engine_get_styles( array( 'color' => $color_block_styles ), array( 'convert_vars_to_classnames' => true ) ); + $inline_styles = empty( $styles['css'] ) ? '' : sprintf( ' style="%s"', esc_attr( $styles['css'] ) ); + $classnames = empty( $styles['classnames'] ) ? '' : ' ' . esc_attr( $styles['classnames'] ); + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classnames .= ' has-link-color'; + } + // Apply color classes and styles to the calendar. + $calendar = str_replace( '<table', '<table' . $inline_styles, get_calendar( true, false ) ); + $calendar = str_replace( 'class="wp-calendar-table', 'class="wp-calendar-table' . $classnames, $calendar ); + + $wrapper_attributes = get_block_wrapper_attributes(); + $output = sprintf( + '<div %1$s>%2$s</div>', + $wrapper_attributes, + $calendar + ); + + // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited + $monthnum = $previous_monthnum; + // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited + $year = $previous_year; + + return $output; +} + +/** + * Registers the `core/calendar` block on server. + */ +function register_block_core_calendar() { + register_block_type_from_metadata( + __DIR__ . '/calendar', + array( + 'render_callback' => 'render_block_core_calendar', + ) + ); +} + +add_action( 'init', 'register_block_core_calendar' ); + +/** + * Returns whether or not there are any published posts. + * + * Used to hide the calendar block when there are no published posts. + * This compensates for a known Core bug: https://core.trac.wordpress.org/ticket/12016 + * + * @return bool Has any published posts or not. + */ +function block_core_calendar_has_published_posts() { + // Multisite already has an option that stores the count of the published posts. + // Let's use that for multisites. + if ( is_multisite() ) { + return 0 < (int) get_option( 'post_count' ); + } + + // On single sites we try our own cached option first. + $has_published_posts = get_option( 'wp_calendar_block_has_published_posts', null ); + if ( null !== $has_published_posts ) { + return (bool) $has_published_posts; + } + + // No cache hit, let's update the cache and return the cached value. + return block_core_calendar_update_has_published_posts(); +} + +/** + * Queries the database for any published post and saves + * a flag whether any published post exists or not. + * + * @return bool Has any published posts or not. + */ +function block_core_calendar_update_has_published_posts() { + global $wpdb; + $has_published_posts = (bool) $wpdb->get_var( "SELECT 1 as test FROM {$wpdb->posts} WHERE post_type = 'post' AND post_status = 'publish' LIMIT 1" ); + update_option( 'wp_calendar_block_has_published_posts', $has_published_posts ); + return $has_published_posts; +} + +// We only want to register these functions and actions when +// we are on single sites. On multi sites we use `post_count` option. +if ( ! is_multisite() ) { + /** + * Handler for updating the has published posts flag when a post is deleted. + * + * @param int $post_id Deleted post ID. + */ + function block_core_calendar_update_has_published_post_on_delete( $post_id ) { + $post = get_post( $post_id ); + + if ( ! $post || 'publish' !== $post->post_status || 'post' !== $post->post_type ) { + return; + } + + block_core_calendar_update_has_published_posts(); + } + + /** + * Handler for updating the has published posts flag when a post status changes. + * + * @param string $new_status The status the post is changing to. + * @param string $old_status The status the post is changing from. + * @param WP_Post $post Post object. + */ + function block_core_calendar_update_has_published_post_on_transition_post_status( $new_status, $old_status, $post ) { + if ( $new_status === $old_status ) { + return; + } + + if ( 'post' !== get_post_type( $post ) ) { + return; + } + + if ( 'publish' !== $new_status && 'publish' !== $old_status ) { + return; + } + + block_core_calendar_update_has_published_posts(); + } + + add_action( 'delete_post', 'block_core_calendar_update_has_published_post_on_delete' ); + add_action( 'transition_post_status', 'block_core_calendar_update_has_published_post_on_transition_post_status', 10, 3 ); +} diff --git a/wp-includes/blocks/calendar/block.json b/wp-includes/blocks/calendar/block.json new file mode 100644 index 0000000..974d47f --- /dev/null +++ b/wp-includes/blocks/calendar/block.json @@ -0,0 +1,43 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/calendar", + "title": "Calendar", + "category": "widgets", + "description": "A calendar of your site’s posts.", + "keywords": [ "posts", "archive" ], + "textdomain": "default", + "attributes": { + "month": { + "type": "integer" + }, + "year": { + "type": "integer" + } + }, + "supports": { + "align": true, + "color": { + "link": true, + "__experimentalSkipSerialization": [ "text", "background" ], + "__experimentalDefaultControls": { + "background": true, + "text": true + }, + "__experimentalSelector": "table, th" + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "style": "wp-block-calendar" +} diff --git a/wp-includes/blocks/calendar/style-rtl.css b/wp-includes/blocks/calendar/style-rtl.css new file mode 100644 index 0000000..1f43997 --- /dev/null +++ b/wp-includes/blocks/calendar/style-rtl.css @@ -0,0 +1,33 @@ +.wp-block-calendar{ + text-align:center; +} +.wp-block-calendar td,.wp-block-calendar th{ + border:1px solid; + padding:.25em; +} +.wp-block-calendar th{ + font-weight:400; +} +.wp-block-calendar caption{ + background-color:inherit; +} +.wp-block-calendar table{ + border-collapse:collapse; + width:100%; +} +.wp-block-calendar table:where(:not(.has-text-color)){ + color:#40464d; +} +.wp-block-calendar table:where(:not(.has-text-color)) td,.wp-block-calendar table:where(:not(.has-text-color)) th{ + border-color:#ddd; +} +.wp-block-calendar table.has-background th{ + background-color:inherit; +} +.wp-block-calendar table.has-text-color th{ + color:inherit; +} + +:where(.wp-block-calendar table:not(.has-background) th){ + background:#ddd; +}
\ No newline at end of file diff --git a/wp-includes/blocks/calendar/style-rtl.min.css b/wp-includes/blocks/calendar/style-rtl.min.css new file mode 100644 index 0000000..d41b153 --- /dev/null +++ b/wp-includes/blocks/calendar/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-calendar{text-align:center}.wp-block-calendar td,.wp-block-calendar th{border:1px solid;padding:.25em}.wp-block-calendar th{font-weight:400}.wp-block-calendar caption{background-color:inherit}.wp-block-calendar table{border-collapse:collapse;width:100%}.wp-block-calendar table:where(:not(.has-text-color)){color:#40464d}.wp-block-calendar table:where(:not(.has-text-color)) td,.wp-block-calendar table:where(:not(.has-text-color)) th{border-color:#ddd}.wp-block-calendar table.has-background th{background-color:inherit}.wp-block-calendar table.has-text-color th{color:inherit}:where(.wp-block-calendar table:not(.has-background) th){background:#ddd}
\ No newline at end of file diff --git a/wp-includes/blocks/calendar/style.css b/wp-includes/blocks/calendar/style.css new file mode 100644 index 0000000..1f43997 --- /dev/null +++ b/wp-includes/blocks/calendar/style.css @@ -0,0 +1,33 @@ +.wp-block-calendar{ + text-align:center; +} +.wp-block-calendar td,.wp-block-calendar th{ + border:1px solid; + padding:.25em; +} +.wp-block-calendar th{ + font-weight:400; +} +.wp-block-calendar caption{ + background-color:inherit; +} +.wp-block-calendar table{ + border-collapse:collapse; + width:100%; +} +.wp-block-calendar table:where(:not(.has-text-color)){ + color:#40464d; +} +.wp-block-calendar table:where(:not(.has-text-color)) td,.wp-block-calendar table:where(:not(.has-text-color)) th{ + border-color:#ddd; +} +.wp-block-calendar table.has-background th{ + background-color:inherit; +} +.wp-block-calendar table.has-text-color th{ + color:inherit; +} + +:where(.wp-block-calendar table:not(.has-background) th){ + background:#ddd; +}
\ No newline at end of file diff --git a/wp-includes/blocks/calendar/style.min.css b/wp-includes/blocks/calendar/style.min.css new file mode 100644 index 0000000..d41b153 --- /dev/null +++ b/wp-includes/blocks/calendar/style.min.css @@ -0,0 +1 @@ +.wp-block-calendar{text-align:center}.wp-block-calendar td,.wp-block-calendar th{border:1px solid;padding:.25em}.wp-block-calendar th{font-weight:400}.wp-block-calendar caption{background-color:inherit}.wp-block-calendar table{border-collapse:collapse;width:100%}.wp-block-calendar table:where(:not(.has-text-color)){color:#40464d}.wp-block-calendar table:where(:not(.has-text-color)) td,.wp-block-calendar table:where(:not(.has-text-color)) th{border-color:#ddd}.wp-block-calendar table.has-background th{background-color:inherit}.wp-block-calendar table.has-text-color th{color:inherit}:where(.wp-block-calendar table:not(.has-background) th){background:#ddd}
\ No newline at end of file diff --git a/wp-includes/blocks/categories.php b/wp-includes/blocks/categories.php new file mode 100644 index 0000000..7e3979b --- /dev/null +++ b/wp-includes/blocks/categories.php @@ -0,0 +1,101 @@ +<?php +/** + * Server-side rendering of the `core/categories` block. + * + * @package WordPress + */ + +/** + * Renders the `core/categories` block on server. + * + * @param array $attributes The block attributes. + * + * @return string Returns the categories list/dropdown markup. + */ +function render_block_core_categories( $attributes ) { + static $block_id = 0; + ++$block_id; + + $args = array( + 'echo' => false, + 'hierarchical' => ! empty( $attributes['showHierarchy'] ), + 'orderby' => 'name', + 'show_count' => ! empty( $attributes['showPostCounts'] ), + 'title_li' => '', + 'hide_empty' => empty( $attributes['showEmpty'] ), + ); + if ( ! empty( $attributes['showOnlyTopLevel'] ) && $attributes['showOnlyTopLevel'] ) { + $args['parent'] = 0; + } + + if ( ! empty( $attributes['displayAsDropdown'] ) ) { + $id = 'wp-block-categories-' . $block_id; + $args['id'] = $id; + $args['show_option_none'] = __( 'Select Category' ); + $wrapper_markup = '<div %1$s><label class="screen-reader-text" for="' . esc_attr( $id ) . '">' . __( 'Categories' ) . '</label>%2$s</div>'; + $items_markup = wp_dropdown_categories( $args ); + $type = 'dropdown'; + + if ( ! is_admin() ) { + // Inject the dropdown script immediately after the select dropdown. + $items_markup = preg_replace( + '#(?<=</select>)#', + build_dropdown_script_block_core_categories( $id ), + $items_markup, + 1 + ); + } + } else { + $wrapper_markup = '<ul %1$s>%2$s</ul>'; + $items_markup = wp_list_categories( $args ); + $type = 'list'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => "wp-block-categories-{$type}" ) ); + + return sprintf( + $wrapper_markup, + $wrapper_attributes, + $items_markup + ); +} + +/** + * Generates the inline script for a categories dropdown field. + * + * @param string $dropdown_id ID of the dropdown field. + * + * @return string Returns the dropdown onChange redirection script. + */ +function build_dropdown_script_block_core_categories( $dropdown_id ) { + ob_start(); + ?> + <script type='text/javascript'> + /* <![CDATA[ */ + ( function() { + var dropdown = document.getElementById( '<?php echo esc_js( $dropdown_id ); ?>' ); + function onCatChange() { + if ( dropdown.options[ dropdown.selectedIndex ].value > 0 ) { + location.href = "<?php echo esc_url( home_url() ); ?>/?cat=" + dropdown.options[ dropdown.selectedIndex ].value; + } + } + dropdown.onchange = onCatChange; + })(); + /* ]]> */ + </script> + <?php + return ob_get_clean(); +} + +/** + * Registers the `core/categories` block on server. + */ +function register_block_core_categories() { + register_block_type_from_metadata( + __DIR__ . '/categories', + array( + 'render_callback' => 'render_block_core_categories', + ) + ); +} +add_action( 'init', 'register_block_core_categories' ); diff --git a/wp-includes/blocks/categories/block.json b/wp-includes/blocks/categories/block.json new file mode 100644 index 0000000..5014da8 --- /dev/null +++ b/wp-includes/blocks/categories/block.json @@ -0,0 +1,58 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/categories", + "title": "Categories List", + "category": "widgets", + "description": "Display a list of all categories.", + "textdomain": "default", + "attributes": { + "displayAsDropdown": { + "type": "boolean", + "default": false + }, + "showHierarchy": { + "type": "boolean", + "default": false + }, + "showPostCounts": { + "type": "boolean", + "default": false + }, + "showOnlyTopLevel": { + "type": "boolean", + "default": false + }, + "showEmpty": { + "type": "boolean", + "default": false + } + }, + "supports": { + "align": true, + "html": false, + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-categories-editor", + "style": "wp-block-categories" +} diff --git a/wp-includes/blocks/categories/editor-rtl.css b/wp-includes/blocks/categories/editor-rtl.css new file mode 100644 index 0000000..dce10f9 --- /dev/null +++ b/wp-includes/blocks/categories/editor-rtl.css @@ -0,0 +1,9 @@ +.wp-block-categories ul{ + padding-right:2.5em; +} +.wp-block-categories ul ul{ + margin-top:6px; +} +[data-align=center] .wp-block-categories{ + text-align:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/categories/editor-rtl.min.css b/wp-includes/blocks/categories/editor-rtl.min.css new file mode 100644 index 0000000..7ba0acd --- /dev/null +++ b/wp-includes/blocks/categories/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-categories ul{padding-right:2.5em}.wp-block-categories ul ul{margin-top:6px}[data-align=center] .wp-block-categories{text-align:center}
\ No newline at end of file diff --git a/wp-includes/blocks/categories/editor.css b/wp-includes/blocks/categories/editor.css new file mode 100644 index 0000000..77d3a4e --- /dev/null +++ b/wp-includes/blocks/categories/editor.css @@ -0,0 +1,9 @@ +.wp-block-categories ul{ + padding-left:2.5em; +} +.wp-block-categories ul ul{ + margin-top:6px; +} +[data-align=center] .wp-block-categories{ + text-align:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/categories/editor.min.css b/wp-includes/blocks/categories/editor.min.css new file mode 100644 index 0000000..e66d4e2 --- /dev/null +++ b/wp-includes/blocks/categories/editor.min.css @@ -0,0 +1 @@ +.wp-block-categories ul{padding-left:2.5em}.wp-block-categories ul ul{margin-top:6px}[data-align=center] .wp-block-categories{text-align:center}
\ No newline at end of file diff --git a/wp-includes/blocks/categories/style-rtl.css b/wp-includes/blocks/categories/style-rtl.css new file mode 100644 index 0000000..56392fe --- /dev/null +++ b/wp-includes/blocks/categories/style-rtl.css @@ -0,0 +1,12 @@ +.wp-block-categories{ + box-sizing:border-box; +} +.wp-block-categories.alignleft{ + margin-right:2em; +} +.wp-block-categories.alignright{ + margin-left:2em; +} +.wp-block-categories.wp-block-categories-dropdown.aligncenter{ + text-align:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/categories/style-rtl.min.css b/wp-includes/blocks/categories/style-rtl.min.css new file mode 100644 index 0000000..95f6dd0 --- /dev/null +++ b/wp-includes/blocks/categories/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-categories{box-sizing:border-box}.wp-block-categories.alignleft{margin-right:2em}.wp-block-categories.alignright{margin-left:2em}.wp-block-categories.wp-block-categories-dropdown.aligncenter{text-align:center}
\ No newline at end of file diff --git a/wp-includes/blocks/categories/style.css b/wp-includes/blocks/categories/style.css new file mode 100644 index 0000000..56392fe --- /dev/null +++ b/wp-includes/blocks/categories/style.css @@ -0,0 +1,12 @@ +.wp-block-categories{ + box-sizing:border-box; +} +.wp-block-categories.alignleft{ + margin-right:2em; +} +.wp-block-categories.alignright{ + margin-left:2em; +} +.wp-block-categories.wp-block-categories-dropdown.aligncenter{ + text-align:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/categories/style.min.css b/wp-includes/blocks/categories/style.min.css new file mode 100644 index 0000000..95f6dd0 --- /dev/null +++ b/wp-includes/blocks/categories/style.min.css @@ -0,0 +1 @@ +.wp-block-categories{box-sizing:border-box}.wp-block-categories.alignleft{margin-right:2em}.wp-block-categories.alignright{margin-left:2em}.wp-block-categories.wp-block-categories-dropdown.aligncenter{text-align:center}
\ No newline at end of file diff --git a/wp-includes/blocks/code/block.json b/wp-includes/blocks/code/block.json new file mode 100644 index 0000000..80df74b --- /dev/null +++ b/wp-includes/blocks/code/block.json @@ -0,0 +1,62 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/code", + "title": "Code", + "category": "text", + "description": "Display code snippets that respect your spacing and tabs.", + "textdomain": "default", + "attributes": { + "content": { + "type": "string", + "source": "html", + "selector": "code", + "__unstablePreserveWhiteSpace": true + } + }, + "supports": { + "align": [ "wide" ], + "anchor": true, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "spacing": { + "margin": [ "top", "bottom" ], + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, + "__experimentalBorder": { + "radius": true, + "color": true, + "width": true, + "style": true, + "__experimentalDefaultControls": { + "width": true, + "color": true + } + }, + "color": { + "text": true, + "background": true, + "gradients": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + } + }, + "style": "wp-block-code" +} diff --git a/wp-includes/blocks/code/editor-rtl.css b/wp-includes/blocks/code/editor-rtl.css new file mode 100644 index 0000000..4f771c6 --- /dev/null +++ b/wp-includes/blocks/code/editor-rtl.css @@ -0,0 +1,3 @@ +.wp-block-code code{ + background:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/code/editor-rtl.min.css b/wp-includes/blocks/code/editor-rtl.min.css new file mode 100644 index 0000000..83ce9e1 --- /dev/null +++ b/wp-includes/blocks/code/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-code code{background:none}
\ No newline at end of file diff --git a/wp-includes/blocks/code/editor.css b/wp-includes/blocks/code/editor.css new file mode 100644 index 0000000..4f771c6 --- /dev/null +++ b/wp-includes/blocks/code/editor.css @@ -0,0 +1,3 @@ +.wp-block-code code{ + background:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/code/editor.min.css b/wp-includes/blocks/code/editor.min.css new file mode 100644 index 0000000..83ce9e1 --- /dev/null +++ b/wp-includes/blocks/code/editor.min.css @@ -0,0 +1 @@ +.wp-block-code code{background:none}
\ No newline at end of file diff --git a/wp-includes/blocks/code/style-rtl.css b/wp-includes/blocks/code/style-rtl.css new file mode 100644 index 0000000..bfb5909 --- /dev/null +++ b/wp-includes/blocks/code/style-rtl.css @@ -0,0 +1,9 @@ +.wp-block-code{ + box-sizing:border-box; +} +.wp-block-code code{ + display:block; + font-family:inherit; + overflow-wrap:break-word; + white-space:pre-wrap; +}
\ No newline at end of file diff --git a/wp-includes/blocks/code/style-rtl.min.css b/wp-includes/blocks/code/style-rtl.min.css new file mode 100644 index 0000000..3ef3f33 --- /dev/null +++ b/wp-includes/blocks/code/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-code{box-sizing:border-box}.wp-block-code code{display:block;font-family:inherit;overflow-wrap:break-word;white-space:pre-wrap}
\ No newline at end of file diff --git a/wp-includes/blocks/code/style.css b/wp-includes/blocks/code/style.css new file mode 100644 index 0000000..bfb5909 --- /dev/null +++ b/wp-includes/blocks/code/style.css @@ -0,0 +1,9 @@ +.wp-block-code{ + box-sizing:border-box; +} +.wp-block-code code{ + display:block; + font-family:inherit; + overflow-wrap:break-word; + white-space:pre-wrap; +}
\ No newline at end of file diff --git a/wp-includes/blocks/code/style.min.css b/wp-includes/blocks/code/style.min.css new file mode 100644 index 0000000..3ef3f33 --- /dev/null +++ b/wp-includes/blocks/code/style.min.css @@ -0,0 +1 @@ +.wp-block-code{box-sizing:border-box}.wp-block-code code{display:block;font-family:inherit;overflow-wrap:break-word;white-space:pre-wrap}
\ No newline at end of file diff --git a/wp-includes/blocks/code/theme-rtl.css b/wp-includes/blocks/code/theme-rtl.css new file mode 100644 index 0000000..623f424 --- /dev/null +++ b/wp-includes/blocks/code/theme-rtl.css @@ -0,0 +1,6 @@ +.wp-block-code{ + border:1px solid #ccc; + border-radius:4px; + font-family:Menlo,Consolas,monaco,monospace; + padding:.8em 1em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/code/theme-rtl.min.css b/wp-includes/blocks/code/theme-rtl.min.css new file mode 100644 index 0000000..4d73f70 --- /dev/null +++ b/wp-includes/blocks/code/theme-rtl.min.css @@ -0,0 +1 @@ +.wp-block-code{border:1px solid #ccc;border-radius:4px;font-family:Menlo,Consolas,monaco,monospace;padding:.8em 1em}
\ No newline at end of file diff --git a/wp-includes/blocks/code/theme.css b/wp-includes/blocks/code/theme.css new file mode 100644 index 0000000..623f424 --- /dev/null +++ b/wp-includes/blocks/code/theme.css @@ -0,0 +1,6 @@ +.wp-block-code{ + border:1px solid #ccc; + border-radius:4px; + font-family:Menlo,Consolas,monaco,monospace; + padding:.8em 1em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/code/theme.min.css b/wp-includes/blocks/code/theme.min.css new file mode 100644 index 0000000..4d73f70 --- /dev/null +++ b/wp-includes/blocks/code/theme.min.css @@ -0,0 +1 @@ +.wp-block-code{border:1px solid #ccc;border-radius:4px;font-family:Menlo,Consolas,monaco,monospace;padding:.8em 1em}
\ No newline at end of file diff --git a/wp-includes/blocks/column/block.json b/wp-includes/blocks/column/block.json new file mode 100644 index 0000000..7f61f30 --- /dev/null +++ b/wp-includes/blocks/column/block.json @@ -0,0 +1,73 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/column", + "title": "Column", + "category": "design", + "parent": [ "core/columns" ], + "description": "A single column within a columns block.", + "textdomain": "default", + "attributes": { + "verticalAlignment": { + "type": "string" + }, + "width": { + "type": "string" + }, + "allowedBlocks": { + "type": "array" + }, + "templateLock": { + "type": [ "string", "boolean" ], + "enum": [ "all", "insert", "contentOnly", false ] + } + }, + "supports": { + "__experimentalOnEnter": true, + "anchor": true, + "reusable": false, + "html": false, + "color": { + "gradients": true, + "heading": true, + "button": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "spacing": { + "blockGap": true, + "padding": true, + "__experimentalDefaultControls": { + "padding": true, + "blockGap": true + } + }, + "__experimentalBorder": { + "color": true, + "style": true, + "width": true, + "__experimentalDefaultControls": { + "color": true, + "style": true, + "width": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "layout": true + } +} diff --git a/wp-includes/blocks/columns/block.json b/wp-includes/blocks/columns/block.json new file mode 100644 index 0000000..dff9c45 --- /dev/null +++ b/wp-includes/blocks/columns/block.json @@ -0,0 +1,85 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/columns", + "title": "Columns", + "category": "design", + "description": "Display content in multiple columns, with blocks added to each column.", + "textdomain": "default", + "attributes": { + "verticalAlignment": { + "type": "string" + }, + "isStackedOnMobile": { + "type": "boolean", + "default": true + }, + "templateLock": { + "type": [ "string", "boolean" ], + "enum": [ "all", "insert", "contentOnly", false ] + } + }, + "supports": { + "anchor": true, + "align": [ "wide", "full" ], + "html": false, + "color": { + "gradients": true, + "link": true, + "heading": true, + "button": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "spacing": { + "blockGap": { + "__experimentalDefault": "2em", + "sides": [ "horizontal", "vertical" ] + }, + "margin": [ "top", "bottom" ], + "padding": true, + "__experimentalDefaultControls": { + "padding": true, + "blockGap": true + } + }, + "layout": { + "allowSwitching": false, + "allowInheriting": false, + "allowEditing": false, + "default": { + "type": "flex", + "flexWrap": "nowrap" + } + }, + "__experimentalBorder": { + "color": true, + "radius": true, + "style": true, + "width": true, + "__experimentalDefaultControls": { + "color": true, + "radius": true, + "style": true, + "width": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-columns-editor", + "style": "wp-block-columns" +} diff --git a/wp-includes/blocks/columns/editor-rtl.css b/wp-includes/blocks/columns/editor-rtl.css new file mode 100644 index 0000000..567ad48 --- /dev/null +++ b/wp-includes/blocks/columns/editor-rtl.css @@ -0,0 +1,10 @@ +.wp-block-columns :where(.wp-block){ + margin-left:0; + margin-right:0; + max-width:none; +} + +html :where(.wp-block-column){ + margin-bottom:0; + margin-top:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/columns/editor-rtl.min.css b/wp-includes/blocks/columns/editor-rtl.min.css new file mode 100644 index 0000000..d908174 --- /dev/null +++ b/wp-includes/blocks/columns/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-columns :where(.wp-block){margin-left:0;margin-right:0;max-width:none}html :where(.wp-block-column){margin-bottom:0;margin-top:0}
\ No newline at end of file diff --git a/wp-includes/blocks/columns/editor.css b/wp-includes/blocks/columns/editor.css new file mode 100644 index 0000000..567ad48 --- /dev/null +++ b/wp-includes/blocks/columns/editor.css @@ -0,0 +1,10 @@ +.wp-block-columns :where(.wp-block){ + margin-left:0; + margin-right:0; + max-width:none; +} + +html :where(.wp-block-column){ + margin-bottom:0; + margin-top:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/columns/editor.min.css b/wp-includes/blocks/columns/editor.min.css new file mode 100644 index 0000000..d908174 --- /dev/null +++ b/wp-includes/blocks/columns/editor.min.css @@ -0,0 +1 @@ +.wp-block-columns :where(.wp-block){margin-left:0;margin-right:0;max-width:none}html :where(.wp-block-column){margin-bottom:0;margin-top:0}
\ No newline at end of file diff --git a/wp-includes/blocks/columns/style-rtl.css b/wp-includes/blocks/columns/style-rtl.css new file mode 100644 index 0000000..4004dbc --- /dev/null +++ b/wp-includes/blocks/columns/style-rtl.css @@ -0,0 +1,74 @@ +.wp-block-columns{ + align-items:normal !important; + box-sizing:border-box; + display:flex; + flex-wrap:wrap !important; +} +@media (min-width:782px){ + .wp-block-columns{ + flex-wrap:nowrap !important; + } +} +.wp-block-columns.are-vertically-aligned-top{ + align-items:flex-start; +} +.wp-block-columns.are-vertically-aligned-center{ + align-items:center; +} +.wp-block-columns.are-vertically-aligned-bottom{ + align-items:flex-end; +} +@media (max-width:781px){ + .wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{ + flex-basis:100% !important; + } +} +@media (min-width:782px){ + .wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{ + flex-basis:0; + flex-grow:1; + } + .wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{ + flex-grow:0; + } +} +.wp-block-columns.is-not-stacked-on-mobile{ + flex-wrap:nowrap !important; +} +.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{ + flex-basis:0; + flex-grow:1; +} +.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{ + flex-grow:0; +} + +:where(.wp-block-columns){ + margin-bottom:1.75em; +} + +:where(.wp-block-columns.has-background){ + padding:1.25em 2.375em; +} + +.wp-block-column{ + flex-grow:1; + min-width:0; + overflow-wrap:break-word; + word-break:break-word; +} +.wp-block-column.is-vertically-aligned-top{ + align-self:flex-start; +} +.wp-block-column.is-vertically-aligned-center{ + align-self:center; +} +.wp-block-column.is-vertically-aligned-bottom{ + align-self:flex-end; +} +.wp-block-column.is-vertically-aligned-stretch{ + align-self:stretch; +} +.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{ + width:100%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/columns/style-rtl.min.css b/wp-includes/blocks/columns/style-rtl.min.css new file mode 100644 index 0000000..e032de0 --- /dev/null +++ b/wp-includes/blocks/columns/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-columns{align-items:normal!important;box-sizing:border-box;display:flex;flex-wrap:wrap!important}@media (min-width:782px){.wp-block-columns{flex-wrap:nowrap!important}}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start}.wp-block-columns.are-vertically-aligned-center{align-items:center}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end}@media (max-width:781px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:100%!important}}@media (min-width:782px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{flex-grow:0}}.wp-block-columns.is-not-stacked-on-mobile{flex-wrap:nowrap!important}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{flex-grow:0}:where(.wp-block-columns){margin-bottom:1.75em}:where(.wp-block-columns.has-background){padding:1.25em 2.375em}.wp-block-column{flex-grow:1;min-width:0;overflow-wrap:break-word;word-break:break-word}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-column.is-vertically-aligned-stretch{align-self:stretch}.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{width:100%}
\ No newline at end of file diff --git a/wp-includes/blocks/columns/style.css b/wp-includes/blocks/columns/style.css new file mode 100644 index 0000000..4004dbc --- /dev/null +++ b/wp-includes/blocks/columns/style.css @@ -0,0 +1,74 @@ +.wp-block-columns{ + align-items:normal !important; + box-sizing:border-box; + display:flex; + flex-wrap:wrap !important; +} +@media (min-width:782px){ + .wp-block-columns{ + flex-wrap:nowrap !important; + } +} +.wp-block-columns.are-vertically-aligned-top{ + align-items:flex-start; +} +.wp-block-columns.are-vertically-aligned-center{ + align-items:center; +} +.wp-block-columns.are-vertically-aligned-bottom{ + align-items:flex-end; +} +@media (max-width:781px){ + .wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{ + flex-basis:100% !important; + } +} +@media (min-width:782px){ + .wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{ + flex-basis:0; + flex-grow:1; + } + .wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{ + flex-grow:0; + } +} +.wp-block-columns.is-not-stacked-on-mobile{ + flex-wrap:nowrap !important; +} +.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{ + flex-basis:0; + flex-grow:1; +} +.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{ + flex-grow:0; +} + +:where(.wp-block-columns){ + margin-bottom:1.75em; +} + +:where(.wp-block-columns.has-background){ + padding:1.25em 2.375em; +} + +.wp-block-column{ + flex-grow:1; + min-width:0; + overflow-wrap:break-word; + word-break:break-word; +} +.wp-block-column.is-vertically-aligned-top{ + align-self:flex-start; +} +.wp-block-column.is-vertically-aligned-center{ + align-self:center; +} +.wp-block-column.is-vertically-aligned-bottom{ + align-self:flex-end; +} +.wp-block-column.is-vertically-aligned-stretch{ + align-self:stretch; +} +.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{ + width:100%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/columns/style.min.css b/wp-includes/blocks/columns/style.min.css new file mode 100644 index 0000000..e032de0 --- /dev/null +++ b/wp-includes/blocks/columns/style.min.css @@ -0,0 +1 @@ +.wp-block-columns{align-items:normal!important;box-sizing:border-box;display:flex;flex-wrap:wrap!important}@media (min-width:782px){.wp-block-columns{flex-wrap:nowrap!important}}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start}.wp-block-columns.are-vertically-aligned-center{align-items:center}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end}@media (max-width:781px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:100%!important}}@media (min-width:782px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{flex-grow:0}}.wp-block-columns.is-not-stacked-on-mobile{flex-wrap:nowrap!important}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{flex-grow:0}:where(.wp-block-columns){margin-bottom:1.75em}:where(.wp-block-columns.has-background){padding:1.25em 2.375em}.wp-block-column{flex-grow:1;min-width:0;overflow-wrap:break-word;word-break:break-word}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-column.is-vertically-aligned-stretch{align-self:stretch}.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{width:100%}
\ No newline at end of file diff --git a/wp-includes/blocks/comment-author-name.php b/wp-includes/blocks/comment-author-name.php new file mode 100644 index 0000000..d3cd68c --- /dev/null +++ b/wp-includes/blocks/comment-author-name.php @@ -0,0 +1,65 @@ +<?php +/** + * Server-side rendering of the `core/comment-author-name` block. + * + * @package WordPress + */ + +/** + * Renders the `core/comment-author-name` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Return the post comment's author. + */ +function render_block_core_comment_author_name( $attributes, $content, $block ) { + if ( ! isset( $block->context['commentId'] ) ) { + return ''; + } + + $comment = get_comment( $block->context['commentId'] ); + $commenter = wp_get_current_commenter(); + $show_pending_links = isset( $commenter['comment_author'] ) && $commenter['comment_author']; + if ( empty( $comment ) ) { + return ''; + } + + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + $comment_author = get_comment_author( $comment ); + $link = get_comment_author_url( $comment ); + + if ( ! empty( $link ) && ! empty( $attributes['isLink'] ) && ! empty( $attributes['linkTarget'] ) ) { + $comment_author = sprintf( '<a rel="external nofollow ugc" href="%1s" target="%2s" >%3s</a>', esc_url( $link ), esc_attr( $attributes['linkTarget'] ), $comment_author ); + } + if ( '0' === $comment->comment_approved && ! $show_pending_links ) { + $comment_author = wp_kses( $comment_author, array() ); + } + + return sprintf( + '<div %1$s>%2$s</div>', + $wrapper_attributes, + $comment_author + ); +} + +/** + * Registers the `core/comment-author-name` block on the server. + */ +function register_block_core_comment_author_name() { + register_block_type_from_metadata( + __DIR__ . '/comment-author-name', + array( + 'render_callback' => 'render_block_core_comment_author_name', + ) + ); +} +add_action( 'init', 'register_block_core_comment_author_name' ); diff --git a/wp-includes/blocks/comment-author-name/block.json b/wp-includes/blocks/comment-author-name/block.json new file mode 100644 index 0000000..9335077 --- /dev/null +++ b/wp-includes/blocks/comment-author-name/block.json @@ -0,0 +1,53 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/comment-author-name", + "title": "Comment Author Name", + "category": "theme", + "ancestor": [ "core/comment-template" ], + "description": "Displays the name of the author of the comment.", + "textdomain": "default", + "attributes": { + "isLink": { + "type": "boolean", + "default": true + }, + "linkTarget": { + "type": "string", + "default": "_self" + }, + "textAlign": { + "type": "string" + } + }, + "usesContext": [ "commentId" ], + "supports": { + "html": false, + "spacing": { + "margin": true, + "padding": true + }, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true, + "link": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/comment-content.php b/wp-includes/blocks/comment-content.php new file mode 100644 index 0000000..50bca40 --- /dev/null +++ b/wp-includes/blocks/comment-content.php @@ -0,0 +1,81 @@ +<?php +/** + * Server-side rendering of the `core/comment-content` block. + * + * @package WordPress + */ + +/** + * Renders the `core/comment-content` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Return the post comment's content. + */ +function render_block_core_comment_content( $attributes, $content, $block ) { + if ( ! isset( $block->context['commentId'] ) ) { + return ''; + } + + $comment = get_comment( $block->context['commentId'] ); + $commenter = wp_get_current_commenter(); + $show_pending_links = isset( $commenter['comment_author'] ) && $commenter['comment_author']; + if ( empty( $comment ) ) { + return ''; + } + + $args = array(); + $comment_text = get_comment_text( $comment, $args ); + if ( ! $comment_text ) { + return ''; + } + + /** This filter is documented in wp-includes/comment-template.php */ + $comment_text = apply_filters( 'comment_text', $comment_text, $comment, $args ); + + $moderation_note = ''; + if ( '0' === $comment->comment_approved ) { + $commenter = wp_get_current_commenter(); + + if ( $commenter['comment_author_email'] ) { + $moderation_note = __( 'Your comment is awaiting moderation.' ); + } else { + $moderation_note = __( 'Your comment is awaiting moderation. This is a preview; your comment will be visible after it has been approved.' ); + } + $moderation_note = '<p><em class="comment-awaiting-moderation">' . $moderation_note . '</em></p>'; + if ( ! $show_pending_links ) { + $comment_text = wp_kses( $comment_text, array() ); + } + } + + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return sprintf( + '<div %1$s>%2$s%3$s</div>', + $wrapper_attributes, + $moderation_note, + $comment_text + ); +} + +/** + * Registers the `core/comment-content` block on the server. + */ +function register_block_core_comment_content() { + register_block_type_from_metadata( + __DIR__ . '/comment-content', + array( + 'render_callback' => 'render_block_core_comment_content', + ) + ); +} +add_action( 'init', 'register_block_core_comment_content' ); diff --git a/wp-includes/blocks/comment-content/block.json b/wp-includes/blocks/comment-content/block.json new file mode 100644 index 0000000..9ac4b54 --- /dev/null +++ b/wp-includes/blocks/comment-content/block.json @@ -0,0 +1,46 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/comment-content", + "title": "Comment Content", + "category": "theme", + "ancestor": [ "core/comment-template" ], + "description": "Displays the contents of a comment.", + "textdomain": "default", + "usesContext": [ "commentId" ], + "attributes": { + "textAlign": { + "type": "string" + } + }, + "supports": { + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "spacing": { + "padding": [ "horizontal", "vertical" ], + "__experimentalDefaultControls": { + "padding": true + } + }, + "html": false + } +} diff --git a/wp-includes/blocks/comment-content/style-rtl.css b/wp-includes/blocks/comment-content/style-rtl.css new file mode 100644 index 0000000..f0b0adb --- /dev/null +++ b/wp-includes/blocks/comment-content/style-rtl.css @@ -0,0 +1,5 @@ +.comment-awaiting-moderation{ + display:block; + font-size:.875em; + line-height:1.5; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comment-content/style-rtl.min.css b/wp-includes/blocks/comment-content/style-rtl.min.css new file mode 100644 index 0000000..421e6eb --- /dev/null +++ b/wp-includes/blocks/comment-content/style-rtl.min.css @@ -0,0 +1 @@ +.comment-awaiting-moderation{display:block;font-size:.875em;line-height:1.5}
\ No newline at end of file diff --git a/wp-includes/blocks/comment-content/style.css b/wp-includes/blocks/comment-content/style.css new file mode 100644 index 0000000..f0b0adb --- /dev/null +++ b/wp-includes/blocks/comment-content/style.css @@ -0,0 +1,5 @@ +.comment-awaiting-moderation{ + display:block; + font-size:.875em; + line-height:1.5; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comment-content/style.min.css b/wp-includes/blocks/comment-content/style.min.css new file mode 100644 index 0000000..421e6eb --- /dev/null +++ b/wp-includes/blocks/comment-content/style.min.css @@ -0,0 +1 @@ +.comment-awaiting-moderation{display:block;font-size:.875em;line-height:1.5}
\ No newline at end of file diff --git a/wp-includes/blocks/comment-date.php b/wp-includes/blocks/comment-date.php new file mode 100644 index 0000000..0f9c18b --- /dev/null +++ b/wp-includes/blocks/comment-date.php @@ -0,0 +1,58 @@ +<?php +/** + * Server-side rendering of the `core/comment-date` block. + * + * @package WordPress + */ + +/** + * Renders the `core/comment-date` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Return the post comment's date. + */ +function render_block_core_comment_date( $attributes, $content, $block ) { + if ( ! isset( $block->context['commentId'] ) ) { + return ''; + } + + $comment = get_comment( $block->context['commentId'] ); + if ( empty( $comment ) ) { + return ''; + } + + $classes = ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) ? 'has-link-color' : ''; + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) ); + $formatted_date = get_comment_date( + isset( $attributes['format'] ) ? $attributes['format'] : '', + $comment + ); + $link = get_comment_link( $comment ); + + if ( ! empty( $attributes['isLink'] ) ) { + $formatted_date = sprintf( '<a href="%1s">%2s</a>', esc_url( $link ), $formatted_date ); + } + + return sprintf( + '<div %1$s><time datetime="%2$s">%3$s</time></div>', + $wrapper_attributes, + esc_attr( get_comment_date( 'c', $comment ) ), + $formatted_date + ); +} + +/** + * Registers the `core/comment-date` block on the server. + */ +function register_block_core_comment_date() { + register_block_type_from_metadata( + __DIR__ . '/comment-date', + array( + 'render_callback' => 'render_block_core_comment_date', + ) + ); +} +add_action( 'init', 'register_block_core_comment_date' ); diff --git a/wp-includes/blocks/comment-date/block.json b/wp-includes/blocks/comment-date/block.json new file mode 100644 index 0000000..7e4776c --- /dev/null +++ b/wp-includes/blocks/comment-date/block.json @@ -0,0 +1,49 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/comment-date", + "title": "Comment Date", + "category": "theme", + "ancestor": [ "core/comment-template" ], + "description": "Displays the date on which the comment was posted.", + "textdomain": "default", + "attributes": { + "format": { + "type": "string" + }, + "isLink": { + "type": "boolean", + "default": true + } + }, + "usesContext": [ "commentId" ], + "supports": { + "html": false, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true, + "link": true + } + }, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/comment-edit-link.php b/wp-includes/blocks/comment-edit-link.php new file mode 100644 index 0000000..ce7ad9b --- /dev/null +++ b/wp-includes/blocks/comment-edit-link.php @@ -0,0 +1,61 @@ +<?php +/** + * Server-side rendering of the `core/comment-edit-link` block. + * + * @package WordPress + */ + +/** + * Renders the `core/comment-edit-link` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * + * @return string Return the post comment's date. + */ +function render_block_core_comment_edit_link( $attributes, $content, $block ) { + if ( ! isset( $block->context['commentId'] ) || ! current_user_can( 'edit_comment', $block->context['commentId'] ) ) { + return ''; + } + + $edit_comment_link = get_edit_comment_link( $block->context['commentId'] ); + + $link_atts = ''; + + if ( ! empty( $attributes['linkTarget'] ) ) { + $link_atts .= sprintf( 'target="%s"', esc_attr( $attributes['linkTarget'] ) ); + } + + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return sprintf( + '<div %1$s><a href="%2$s" %3$s>%4$s</a></div>', + $wrapper_attributes, + esc_url( $edit_comment_link ), + $link_atts, + esc_html__( 'Edit' ) + ); +} + +/** + * Registers the `core/comment-edit-link` block on the server. + */ +function register_block_core_comment_edit_link() { + register_block_type_from_metadata( + __DIR__ . '/comment-edit-link', + array( + 'render_callback' => 'render_block_core_comment_edit_link', + ) + ); +} + +add_action( 'init', 'register_block_core_comment_edit_link' ); diff --git a/wp-includes/blocks/comment-edit-link/block.json b/wp-includes/blocks/comment-edit-link/block.json new file mode 100644 index 0000000..505305f --- /dev/null +++ b/wp-includes/blocks/comment-edit-link/block.json @@ -0,0 +1,49 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/comment-edit-link", + "title": "Comment Edit Link", + "category": "theme", + "ancestor": [ "core/comment-template" ], + "description": "Displays a link to edit the comment in the WordPress Dashboard. This link is only visible to users with the edit comment capability.", + "textdomain": "default", + "usesContext": [ "commentId" ], + "attributes": { + "linkTarget": { + "type": "string", + "default": "_self" + }, + "textAlign": { + "type": "string" + } + }, + "supports": { + "html": false, + "color": { + "link": true, + "gradients": true, + "text": false, + "__experimentalDefaultControls": { + "background": true, + "link": true + } + }, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/comment-reply-link.php b/wp-includes/blocks/comment-reply-link.php new file mode 100644 index 0000000..3f7b6e4 --- /dev/null +++ b/wp-includes/blocks/comment-reply-link.php @@ -0,0 +1,83 @@ +<?php +/** + * Server-side rendering of the `core/comment-reply-link` block. + * + * @package WordPress + */ + +/** + * Renders the `core/comment-reply-link` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Return the post comment's reply link. + */ +function render_block_core_comment_reply_link( $attributes, $content, $block ) { + if ( ! isset( $block->context['commentId'] ) ) { + return ''; + } + + $thread_comments = get_option( 'thread_comments' ); + if ( ! $thread_comments ) { + return ''; + } + + $comment = get_comment( $block->context['commentId'] ); + if ( empty( $comment ) ) { + return ''; + } + + $depth = 1; + $max_depth = get_option( 'thread_comments_depth' ); + $parent_id = $comment->comment_parent; + + // Compute comment's depth iterating over its ancestors. + while ( ! empty( $parent_id ) ) { + ++$depth; + $parent_id = get_comment( $parent_id )->comment_parent; + } + + $comment_reply_link = get_comment_reply_link( + array( + 'depth' => $depth, + 'max_depth' => $max_depth, + ), + $comment + ); + + // Render nothing if the generated reply link is empty. + if ( empty( $comment_reply_link ) ) { + return; + } + + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return sprintf( + '<div %1$s>%2$s</div>', + $wrapper_attributes, + $comment_reply_link + ); +} + +/** + * Registers the `core/comment-reply-link` block on the server. + */ +function register_block_core_comment_reply_link() { + register_block_type_from_metadata( + __DIR__ . '/comment-reply-link', + array( + 'render_callback' => 'render_block_core_comment_reply_link', + ) + ); +} + +add_action( 'init', 'register_block_core_comment_reply_link' ); diff --git a/wp-includes/blocks/comment-reply-link/block.json b/wp-includes/blocks/comment-reply-link/block.json new file mode 100644 index 0000000..c101294 --- /dev/null +++ b/wp-includes/blocks/comment-reply-link/block.json @@ -0,0 +1,45 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/comment-reply-link", + "title": "Comment Reply Link", + "category": "theme", + "ancestor": [ "core/comment-template" ], + "description": "Displays a link to reply to a comment.", + "textdomain": "default", + "usesContext": [ "commentId" ], + "attributes": { + "textAlign": { + "type": "string" + } + }, + "supports": { + "color": { + "gradients": true, + "link": true, + "text": false, + "__experimentalDefaultControls": { + "background": true, + "link": true + } + }, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "html": false + } +} diff --git a/wp-includes/blocks/comment-template.php b/wp-includes/blocks/comment-template.php new file mode 100644 index 0000000..915c588 --- /dev/null +++ b/wp-includes/blocks/comment-template.php @@ -0,0 +1,149 @@ +<?php +/** + * Server-side rendering of the `core/comment-template` block. + * + * @package WordPress + */ + +/** + * Function that recursively renders a list of nested comments. + * + * @since 6.3.0 Changed render_block_context priority to `1`. + * + * @global int $comment_depth + * + * @param WP_Comment[] $comments The array of comments. + * @param WP_Block $block Block instance. + * @return string + */ +function block_core_comment_template_render_comments( $comments, $block ) { + global $comment_depth; + $thread_comments = get_option( 'thread_comments' ); + $thread_comments_depth = get_option( 'thread_comments_depth' ); + + if ( empty( $comment_depth ) ) { + $comment_depth = 1; + } + + $content = ''; + foreach ( $comments as $comment ) { + $comment_id = $comment->comment_ID; + $filter_block_context = static function ( $context ) use ( $comment_id ) { + $context['commentId'] = $comment_id; + return $context; + }; + + /* + * We set commentId context through the `render_block_context` filter so + * that dynamically inserted blocks (at `render_block` filter stage) + * will also receive that context. + * + * Use an early priority to so that other 'render_block_context' filters + * have access to the values. + */ + add_filter( 'render_block_context', $filter_block_context, 1 ); + + /* + * We construct a new WP_Block instance from the parsed block so that + * it'll receive any changes made by the `render_block_data` filter. + */ + $block_content = ( new WP_Block( $block->parsed_block ) )->render( array( 'dynamic' => false ) ); + + remove_filter( 'render_block_context', $filter_block_context, 1 ); + + $children = $comment->get_children(); + + /* + * We need to create the CSS classes BEFORE recursing into the children. + * This is because comment_class() uses globals like `$comment_alt` + * and `$comment_thread_alt` which are order-sensitive. + * + * The `false` parameter at the end means that we do NOT want the function + * to `echo` the output but to return a string. + * See https://developer.wordpress.org/reference/functions/comment_class/#parameters. + */ + $comment_classes = comment_class( '', $comment->comment_ID, $comment->comment_post_ID, false ); + + // If the comment has children, recurse to create the HTML for the nested + // comments. + if ( ! empty( $children ) && ! empty( $thread_comments ) ) { + if ( $comment_depth < $thread_comments_depth ) { + ++$comment_depth; + $inner_content = block_core_comment_template_render_comments( + $children, + $block + ); + $block_content .= sprintf( '<ol>%1$s</ol>', $inner_content ); + --$comment_depth; + } else { + $block_content .= block_core_comment_template_render_comments( + $children, + $block + ); + } + } + + $content .= sprintf( '<li id="comment-%1$s" %2$s>%3$s</li>', $comment->comment_ID, $comment_classes, $block_content ); + } + + return $content; +} + +/** + * Renders the `core/comment-template` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * + * @return string Returns the HTML representing the comments using the layout + * defined by the block's inner blocks. + */ +function render_block_core_comment_template( $attributes, $content, $block ) { + // Bail out early if the post ID is not set for some reason. + if ( empty( $block->context['postId'] ) ) { + return ''; + } + + if ( post_password_required( $block->context['postId'] ) ) { + return; + } + + $comment_query = new WP_Comment_Query( + build_comment_query_vars_from_block( $block ) + ); + + // Get an array of comments for the current post. + $comments = $comment_query->get_comments(); + if ( count( $comments ) === 0 ) { + return ''; + } + + $comment_order = get_option( 'comment_order' ); + + if ( 'desc' === $comment_order ) { + $comments = array_reverse( $comments ); + } + + $wrapper_attributes = get_block_wrapper_attributes(); + + return sprintf( + '<ol %1$s>%2$s</ol>', + $wrapper_attributes, + block_core_comment_template_render_comments( $comments, $block ) + ); +} + +/** + * Registers the `core/comment-template` block on the server. + */ +function register_block_core_comment_template() { + register_block_type_from_metadata( + __DIR__ . '/comment-template', + array( + 'render_callback' => 'render_block_core_comment_template', + 'skip_inner_blocks' => true, + ) + ); +} +add_action( 'init', 'register_block_core_comment_template' ); diff --git a/wp-includes/blocks/comment-template/block.json b/wp-includes/blocks/comment-template/block.json new file mode 100644 index 0000000..7b9bfc5 --- /dev/null +++ b/wp-includes/blocks/comment-template/block.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/comment-template", + "title": "Comment Template", + "category": "design", + "parent": [ "core/comments" ], + "description": "Contains the block elements used to display a comment, like the title, date, author, avatar and more.", + "textdomain": "default", + "usesContext": [ "postId" ], + "supports": { + "align": true, + "html": false, + "reusable": false, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "style": "wp-block-comment-template" +} diff --git a/wp-includes/blocks/comment-template/style-rtl.css b/wp-includes/blocks/comment-template/style-rtl.css new file mode 100644 index 0000000..51e5b89 --- /dev/null +++ b/wp-includes/blocks/comment-template/style-rtl.css @@ -0,0 +1,28 @@ +.wp-block-comment-template{ + box-sizing:border-box; + list-style:none; + margin-bottom:0; + max-width:100%; + padding:0; +} +.wp-block-comment-template li{ + clear:both; +} +.wp-block-comment-template ol{ + list-style:none; + margin-bottom:0; + max-width:100%; + padding-right:2rem; +} +.wp-block-comment-template.alignleft{ + float:right; +} +.wp-block-comment-template.aligncenter{ + margin-left:auto; + margin-right:auto; + width:-moz-fit-content; + width:fit-content; +} +.wp-block-comment-template.alignright{ + float:left; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comment-template/style-rtl.min.css b/wp-includes/blocks/comment-template/style-rtl.min.css new file mode 100644 index 0000000..d15f281 --- /dev/null +++ b/wp-includes/blocks/comment-template/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-comment-template{box-sizing:border-box;list-style:none;margin-bottom:0;max-width:100%;padding:0}.wp-block-comment-template li{clear:both}.wp-block-comment-template ol{list-style:none;margin-bottom:0;max-width:100%;padding-right:2rem}.wp-block-comment-template.alignleft{float:right}.wp-block-comment-template.aligncenter{margin-left:auto;margin-right:auto;width:-moz-fit-content;width:fit-content}.wp-block-comment-template.alignright{float:left}
\ No newline at end of file diff --git a/wp-includes/blocks/comment-template/style.css b/wp-includes/blocks/comment-template/style.css new file mode 100644 index 0000000..bfec572 --- /dev/null +++ b/wp-includes/blocks/comment-template/style.css @@ -0,0 +1,28 @@ +.wp-block-comment-template{ + box-sizing:border-box; + list-style:none; + margin-bottom:0; + max-width:100%; + padding:0; +} +.wp-block-comment-template li{ + clear:both; +} +.wp-block-comment-template ol{ + list-style:none; + margin-bottom:0; + max-width:100%; + padding-left:2rem; +} +.wp-block-comment-template.alignleft{ + float:left; +} +.wp-block-comment-template.aligncenter{ + margin-left:auto; + margin-right:auto; + width:-moz-fit-content; + width:fit-content; +} +.wp-block-comment-template.alignright{ + float:right; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comment-template/style.min.css b/wp-includes/blocks/comment-template/style.min.css new file mode 100644 index 0000000..631ba4f --- /dev/null +++ b/wp-includes/blocks/comment-template/style.min.css @@ -0,0 +1 @@ +.wp-block-comment-template{box-sizing:border-box;list-style:none;margin-bottom:0;max-width:100%;padding:0}.wp-block-comment-template li{clear:both}.wp-block-comment-template ol{list-style:none;margin-bottom:0;max-width:100%;padding-left:2rem}.wp-block-comment-template.alignleft{float:left}.wp-block-comment-template.aligncenter{margin-left:auto;margin-right:auto;width:-moz-fit-content;width:fit-content}.wp-block-comment-template.alignright{float:right}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-pagination-next.php b/wp-includes/blocks/comments-pagination-next.php new file mode 100644 index 0000000..51d1f75 --- /dev/null +++ b/wp-includes/blocks/comments-pagination-next.php @@ -0,0 +1,60 @@ +<?php +/** + * Server-side rendering of the `core/comments-pagination-next` block. + * + * @package WordPress + */ + +/** + * Renders the `core/comments-pagination-next` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * + * @return string Returns the next comments link for the query pagination. + */ +function render_block_core_comments_pagination_next( $attributes, $content, $block ) { + // Bail out early if the post ID is not set for some reason. + if ( empty( $block->context['postId'] ) ) { + return ''; + } + + $comment_vars = build_comment_query_vars_from_block( $block ); + $max_page = ( new WP_Comment_Query( $comment_vars ) )->max_num_pages; + $default_label = __( 'Newer Comments' ); + $label = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? $attributes['label'] : $default_label; + $pagination_arrow = get_comments_pagination_arrow( $block, 'next' ); + + $filter_link_attributes = static function () { + return get_block_wrapper_attributes(); + }; + add_filter( 'next_comments_link_attributes', $filter_link_attributes ); + + if ( $pagination_arrow ) { + $label .= $pagination_arrow; + } + + $next_comments_link = get_next_comments_link( $label, $max_page ); + + remove_filter( 'next_posts_link_attributes', $filter_link_attributes ); + + if ( ! isset( $next_comments_link ) ) { + return ''; + } + return $next_comments_link; +} + + +/** + * Registers the `core/comments-pagination-next` block on the server. + */ +function register_block_core_comments_pagination_next() { + register_block_type_from_metadata( + __DIR__ . '/comments-pagination-next', + array( + 'render_callback' => 'render_block_core_comments_pagination_next', + ) + ); +} +add_action( 'init', 'register_block_core_comments_pagination_next' ); diff --git a/wp-includes/blocks/comments-pagination-next/block.json b/wp-includes/blocks/comments-pagination-next/block.json new file mode 100644 index 0000000..d619865 --- /dev/null +++ b/wp-includes/blocks/comments-pagination-next/block.json @@ -0,0 +1,40 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/comments-pagination-next", + "title": "Comments Next Page", + "category": "theme", + "parent": [ "core/comments-pagination" ], + "description": "Displays the next comment's page link.", + "textdomain": "default", + "attributes": { + "label": { + "type": "string" + } + }, + "usesContext": [ "postId", "comments/paginationArrow" ], + "supports": { + "reusable": false, + "html": false, + "color": { + "gradients": true, + "text": false, + "__experimentalDefaultControls": { + "background": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/comments-pagination-numbers.php b/wp-includes/blocks/comments-pagination-numbers.php new file mode 100644 index 0000000..b172e0c --- /dev/null +++ b/wp-includes/blocks/comments-pagination-numbers.php @@ -0,0 +1,62 @@ +<?php +/** + * Server-side rendering of the `core/comments-pagination-numbers` block. + * + * @package WordPress + */ + +/** + * Renders the `core/comments-pagination-numbers` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * + * @return string Returns the pagination numbers for the comments. + */ +function render_block_core_comments_pagination_numbers( $attributes, $content, $block ) { + // Bail out early if the post ID is not set for some reason. + if ( empty( $block->context['postId'] ) ) { + return ''; + } + + $comment_vars = build_comment_query_vars_from_block( $block ); + + $total = ( new WP_Comment_Query( $comment_vars ) )->max_num_pages; + $current = ! empty( $comment_vars['paged'] ) ? $comment_vars['paged'] : null; + + // Render links. + $content = paginate_comments_links( + array( + 'total' => $total, + 'current' => $current, + 'prev_next' => false, + 'echo' => false, + ) + ); + + if ( empty( $content ) ) { + return ''; + } + + $wrapper_attributes = get_block_wrapper_attributes(); + + return sprintf( + '<div %1$s>%2$s</div>', + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/comments-pagination-numbers` block on the server. + */ +function register_block_core_comments_pagination_numbers() { + register_block_type_from_metadata( + __DIR__ . '/comments-pagination-numbers', + array( + 'render_callback' => 'render_block_core_comments_pagination_numbers', + ) + ); +} +add_action( 'init', 'register_block_core_comments_pagination_numbers' ); diff --git a/wp-includes/blocks/comments-pagination-numbers/block.json b/wp-includes/blocks/comments-pagination-numbers/block.json new file mode 100644 index 0000000..fcebb52 --- /dev/null +++ b/wp-includes/blocks/comments-pagination-numbers/block.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/comments-pagination-numbers", + "title": "Comments Page Numbers", + "category": "theme", + "parent": [ "core/comments-pagination" ], + "description": "Displays a list of page numbers for comments pagination.", + "textdomain": "default", + "usesContext": [ "postId" ], + "supports": { + "reusable": false, + "html": false, + "color": { + "gradients": true, + "text": false, + "__experimentalDefaultControls": { + "background": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/comments-pagination-numbers/editor-rtl.css b/wp-includes/blocks/comments-pagination-numbers/editor-rtl.css new file mode 100644 index 0000000..11a0357 --- /dev/null +++ b/wp-includes/blocks/comments-pagination-numbers/editor-rtl.css @@ -0,0 +1,9 @@ +.wp-block-comments-pagination-numbers a{ + text-decoration:underline; +} +.wp-block-comments-pagination-numbers .page-numbers{ + margin-left:2px; +} +.wp-block-comments-pagination-numbers .page-numbers:last-child{ + margin-right:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-pagination-numbers/editor-rtl.min.css b/wp-includes/blocks/comments-pagination-numbers/editor-rtl.min.css new file mode 100644 index 0000000..24ac424 --- /dev/null +++ b/wp-includes/blocks/comments-pagination-numbers/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-comments-pagination-numbers a{text-decoration:underline}.wp-block-comments-pagination-numbers .page-numbers{margin-left:2px}.wp-block-comments-pagination-numbers .page-numbers:last-child{margin-right:0}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-pagination-numbers/editor.css b/wp-includes/blocks/comments-pagination-numbers/editor.css new file mode 100644 index 0000000..a8711ed --- /dev/null +++ b/wp-includes/blocks/comments-pagination-numbers/editor.css @@ -0,0 +1,9 @@ +.wp-block-comments-pagination-numbers a{ + text-decoration:underline; +} +.wp-block-comments-pagination-numbers .page-numbers{ + margin-right:2px; +} +.wp-block-comments-pagination-numbers .page-numbers:last-child{ + margin-right:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-pagination-numbers/editor.min.css b/wp-includes/blocks/comments-pagination-numbers/editor.min.css new file mode 100644 index 0000000..b825f63 --- /dev/null +++ b/wp-includes/blocks/comments-pagination-numbers/editor.min.css @@ -0,0 +1 @@ +.wp-block-comments-pagination-numbers a{text-decoration:underline}.wp-block-comments-pagination-numbers .page-numbers{margin-right:2px}.wp-block-comments-pagination-numbers .page-numbers:last-child{margin-right:0}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-pagination-previous.php b/wp-includes/blocks/comments-pagination-previous.php new file mode 100644 index 0000000..f194e8a --- /dev/null +++ b/wp-includes/blocks/comments-pagination-previous.php @@ -0,0 +1,52 @@ +<?php +/** + * Server-side rendering of the `core/comments-pagination-previous` block. + * + * @package WordPress + */ + +/** + * Renders the `core/comments-pagination-previous` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * + * @return string Returns the previous posts link for the comments pagination. + */ +function render_block_core_comments_pagination_previous( $attributes, $content, $block ) { + $default_label = __( 'Older Comments' ); + $label = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? $attributes['label'] : $default_label; + $pagination_arrow = get_comments_pagination_arrow( $block, 'previous' ); + if ( $pagination_arrow ) { + $label = $pagination_arrow . $label; + } + + $filter_link_attributes = static function () { + return get_block_wrapper_attributes(); + }; + add_filter( 'previous_comments_link_attributes', $filter_link_attributes ); + + $previous_comments_link = get_previous_comments_link( $label ); + + remove_filter( 'previous_comments_link_attributes', $filter_link_attributes ); + + if ( ! isset( $previous_comments_link ) ) { + return ''; + } + + return $previous_comments_link; +} + +/** + * Registers the `core/comments-pagination-previous` block on the server. + */ +function register_block_core_comments_pagination_previous() { + register_block_type_from_metadata( + __DIR__ . '/comments-pagination-previous', + array( + 'render_callback' => 'render_block_core_comments_pagination_previous', + ) + ); +} +add_action( 'init', 'register_block_core_comments_pagination_previous' ); diff --git a/wp-includes/blocks/comments-pagination-previous/block.json b/wp-includes/blocks/comments-pagination-previous/block.json new file mode 100644 index 0000000..2dab1e9 --- /dev/null +++ b/wp-includes/blocks/comments-pagination-previous/block.json @@ -0,0 +1,40 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/comments-pagination-previous", + "title": "Comments Previous Page", + "category": "theme", + "parent": [ "core/comments-pagination" ], + "description": "Displays the previous comment's page link.", + "textdomain": "default", + "attributes": { + "label": { + "type": "string" + } + }, + "usesContext": [ "postId", "comments/paginationArrow" ], + "supports": { + "reusable": false, + "html": false, + "color": { + "gradients": true, + "text": false, + "__experimentalDefaultControls": { + "background": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/comments-pagination.php b/wp-includes/blocks/comments-pagination.php new file mode 100644 index 0000000..2f9cef2 --- /dev/null +++ b/wp-includes/blocks/comments-pagination.php @@ -0,0 +1,46 @@ +<?php +/** + * Server-side rendering of the `core/comments-pagination` block. + * + * @package WordPress + */ + +/** + * Renders the `core/comments-pagination` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * + * @return string Returns the wrapper for the Comments pagination. + */ +function render_block_core_comments_pagination( $attributes, $content ) { + if ( empty( trim( $content ) ) ) { + return ''; + } + + if ( post_password_required() ) { + return; + } + + $classes = ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) ? 'has-link-color' : ''; + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) ); + + return sprintf( + '<div %1$s>%2$s</div>', + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/comments-pagination` block on the server. + */ +function register_block_core_comments_pagination() { + register_block_type_from_metadata( + __DIR__ . '/comments-pagination', + array( + 'render_callback' => 'render_block_core_comments_pagination', + ) + ); +} +add_action( 'init', 'register_block_core_comments_pagination' ); diff --git a/wp-includes/blocks/comments-pagination/block.json b/wp-includes/blocks/comments-pagination/block.json new file mode 100644 index 0000000..a11decd --- /dev/null +++ b/wp-includes/blocks/comments-pagination/block.json @@ -0,0 +1,55 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/comments-pagination", + "title": "Comments Pagination", + "category": "theme", + "parent": [ "core/comments" ], + "description": "Displays a paginated navigation to next/previous set of comments, when applicable.", + "textdomain": "default", + "attributes": { + "paginationArrow": { + "type": "string", + "default": "none" + } + }, + "providesContext": { + "comments/paginationArrow": "paginationArrow" + }, + "supports": { + "align": true, + "reusable": false, + "html": false, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true, + "link": true + } + }, + "layout": { + "allowSwitching": false, + "allowInheriting": false, + "default": { + "type": "flex" + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-comments-pagination-editor", + "style": "wp-block-comments-pagination" +} diff --git a/wp-includes/blocks/comments-pagination/editor-rtl.css b/wp-includes/blocks/comments-pagination/editor-rtl.css new file mode 100644 index 0000000..357836e --- /dev/null +++ b/wp-includes/blocks/comments-pagination/editor-rtl.css @@ -0,0 +1,19 @@ +.wp-block[data-align=center]>.wp-block-comments-pagination{ + justify-content:center; +} + +.editor-styles-wrapper .wp-block-comments-pagination{ + max-width:100%; +} +.editor-styles-wrapper .wp-block-comments-pagination.block-editor-block-list__layout{ + margin:0; +} + +.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{ + margin-bottom:.5em; + margin-right:.5em; + margin-top:.5em; +} +.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{ + margin-right:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-pagination/editor-rtl.min.css b/wp-includes/blocks/comments-pagination/editor-rtl.min.css new file mode 100644 index 0000000..88f3633 --- /dev/null +++ b/wp-includes/blocks/comments-pagination/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block[data-align=center]>.wp-block-comments-pagination{justify-content:center}.editor-styles-wrapper .wp-block-comments-pagination{max-width:100%}.editor-styles-wrapper .wp-block-comments-pagination.block-editor-block-list__layout{margin:0}.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{margin-bottom:.5em;margin-right:.5em;margin-top:.5em}.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{margin-right:0}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-pagination/editor.css b/wp-includes/blocks/comments-pagination/editor.css new file mode 100644 index 0000000..adb220a --- /dev/null +++ b/wp-includes/blocks/comments-pagination/editor.css @@ -0,0 +1,17 @@ +.wp-block[data-align=center]>.wp-block-comments-pagination{ + justify-content:center; +} + +.editor-styles-wrapper .wp-block-comments-pagination{ + max-width:100%; +} +.editor-styles-wrapper .wp-block-comments-pagination.block-editor-block-list__layout{ + margin:0; +} + +.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{ + margin:.5em .5em .5em 0; +} +.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{ + margin-right:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-pagination/editor.min.css b/wp-includes/blocks/comments-pagination/editor.min.css new file mode 100644 index 0000000..79860b1 --- /dev/null +++ b/wp-includes/blocks/comments-pagination/editor.min.css @@ -0,0 +1 @@ +.wp-block[data-align=center]>.wp-block-comments-pagination{justify-content:center}.editor-styles-wrapper .wp-block-comments-pagination{max-width:100%}.editor-styles-wrapper .wp-block-comments-pagination.block-editor-block-list__layout{margin:0}.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{margin:.5em .5em .5em 0}.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{margin-right:0}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-pagination/style-rtl.css b/wp-includes/blocks/comments-pagination/style-rtl.css new file mode 100644 index 0000000..8922daf --- /dev/null +++ b/wp-includes/blocks/comments-pagination/style-rtl.css @@ -0,0 +1,24 @@ +.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{ + margin-bottom:.5em; + margin-right:.5em; +} +.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{ + margin-right:0; +} +.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow{ + display:inline-block; + margin-left:1ch; +} +.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow:not(.is-arrow-chevron){ + transform:scaleX(-1);; +} +.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow{ + display:inline-block; + margin-right:1ch; +} +.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow:not(.is-arrow-chevron){ + transform:scaleX(-1);; +} +.wp-block-comments-pagination.aligncenter{ + justify-content:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-pagination/style-rtl.min.css b/wp-includes/blocks/comments-pagination/style-rtl.min.css new file mode 100644 index 0000000..b470c0b --- /dev/null +++ b/wp-includes/blocks/comments-pagination/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{margin-bottom:.5em;margin-right:.5em}.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{margin-right:0}.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow{display:inline-block;margin-left:1ch}.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow:not(.is-arrow-chevron){transform:scaleX(-1)}.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow{display:inline-block;margin-right:1ch}.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow:not(.is-arrow-chevron){transform:scaleX(-1)}.wp-block-comments-pagination.aligncenter{justify-content:center}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-pagination/style.css b/wp-includes/blocks/comments-pagination/style.css new file mode 100644 index 0000000..4c3b883 --- /dev/null +++ b/wp-includes/blocks/comments-pagination/style.css @@ -0,0 +1,24 @@ +.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{ + margin-bottom:.5em; + margin-right:.5em; +} +.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{ + margin-right:0; +} +.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow{ + display:inline-block; + margin-right:1ch; +} +.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow:not(.is-arrow-chevron){ + transform:scaleX(1); +} +.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow{ + display:inline-block; + margin-left:1ch; +} +.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow:not(.is-arrow-chevron){ + transform:scaleX(1); +} +.wp-block-comments-pagination.aligncenter{ + justify-content:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-pagination/style.min.css b/wp-includes/blocks/comments-pagination/style.min.css new file mode 100644 index 0000000..7e7fb33 --- /dev/null +++ b/wp-includes/blocks/comments-pagination/style.min.css @@ -0,0 +1 @@ +.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{margin-bottom:.5em;margin-right:.5em}.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{margin-right:0}.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow{display:inline-block;margin-right:1ch}.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow{display:inline-block;margin-left:1ch}.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-comments-pagination.aligncenter{justify-content:center}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-title.php b/wp-includes/blocks/comments-title.php new file mode 100644 index 0000000..62119fc --- /dev/null +++ b/wp-includes/blocks/comments-title.php @@ -0,0 +1,97 @@ +<?php +/** + * Server-side rendering of the `core/comments-title` block. + * + * @package WordPress + */ + +/** + * Renders the `core/comments-title` block on the server. + * + * @param array $attributes Block attributes. + * + * @return string Return the post comments title. + */ +function render_block_core_comments_title( $attributes ) { + + if ( post_password_required() ) { + return; + } + + $align_class_name = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}"; + $show_post_title = ! empty( $attributes['showPostTitle'] ) && $attributes['showPostTitle']; + $show_comments_count = ! empty( $attributes['showCommentsCount'] ) && $attributes['showCommentsCount']; + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) ); + $comments_count = get_comments_number(); + /* translators: %s: Post title. */ + $post_title = sprintf( __( '“%s”' ), get_the_title() ); + $tag_name = 'h2'; + if ( isset( $attributes['level'] ) ) { + $tag_name = 'h' . $attributes['level']; + } + + if ( '0' === $comments_count ) { + return; + } + + if ( $show_comments_count ) { + if ( $show_post_title ) { + if ( '1' === $comments_count ) { + /* translators: %s: Post title. */ + $comments_title = sprintf( __( 'One response to %s' ), $post_title ); + } else { + $comments_title = sprintf( + /* translators: 1: Number of comments, 2: Post title. */ + _n( + '%1$s response to %2$s', + '%1$s responses to %2$s', + $comments_count + ), + number_format_i18n( $comments_count ), + $post_title + ); + } + } elseif ( '1' === $comments_count ) { + $comments_title = __( 'One response' ); + } else { + $comments_title = sprintf( + /* translators: %s: Number of comments. */ + _n( '%s response', '%s responses', $comments_count ), + number_format_i18n( $comments_count ) + ); + } + } elseif ( $show_post_title ) { + if ( '1' === $comments_count ) { + /* translators: %s: Post title. */ + $comments_title = sprintf( __( 'Response to %s' ), $post_title ); + } else { + /* translators: %s: Post title. */ + $comments_title = sprintf( __( 'Responses to %s' ), $post_title ); + } + } elseif ( '1' === $comments_count ) { + $comments_title = __( 'Response' ); + } else { + $comments_title = __( 'Responses' ); + } + + return sprintf( + '<%1$s id="comments" %2$s>%3$s</%1$s>', + $tag_name, + $wrapper_attributes, + $comments_title + ); +} + +/** + * Registers the `core/comments-title` block on the server. + */ +function register_block_core_comments_title() { + register_block_type_from_metadata( + __DIR__ . '/comments-title', + array( + 'render_callback' => 'render_block_core_comments_title', + ) + ); +} + +add_action( 'init', 'register_block_core_comments_title' ); diff --git a/wp-includes/blocks/comments-title/block.json b/wp-includes/blocks/comments-title/block.json new file mode 100644 index 0000000..12b105a --- /dev/null +++ b/wp-includes/blocks/comments-title/block.json @@ -0,0 +1,66 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/comments-title", + "title": "Comments Title", + "category": "theme", + "ancestor": [ "core/comments" ], + "description": "Displays a title with the number of comments", + "textdomain": "default", + "usesContext": [ "postId", "postType" ], + "attributes": { + "textAlign": { + "type": "string" + }, + "showPostTitle": { + "type": "boolean", + "default": true + }, + "showCommentsCount": { + "type": "boolean", + "default": true + }, + "level": { + "type": "number", + "default": 2 + } + }, + "supports": { + "anchor": false, + "align": true, + "html": false, + "__experimentalBorder": { + "radius": true, + "color": true, + "width": true, + "style": true + }, + "color": { + "gradients": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true, + "__experimentalFontFamily": true, + "__experimentalFontStyle": true, + "__experimentalFontWeight": true + } + } + } +} diff --git a/wp-includes/blocks/comments-title/editor-rtl.css b/wp-includes/blocks/comments-title/editor-rtl.css new file mode 100644 index 0000000..08eeb57 --- /dev/null +++ b/wp-includes/blocks/comments-title/editor-rtl.css @@ -0,0 +1,3 @@ +.wp-block-comments-title.has-background{ + padding:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-title/editor-rtl.min.css b/wp-includes/blocks/comments-title/editor-rtl.min.css new file mode 100644 index 0000000..502f0da --- /dev/null +++ b/wp-includes/blocks/comments-title/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-comments-title.has-background{padding:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-title/editor.css b/wp-includes/blocks/comments-title/editor.css new file mode 100644 index 0000000..08eeb57 --- /dev/null +++ b/wp-includes/blocks/comments-title/editor.css @@ -0,0 +1,3 @@ +.wp-block-comments-title.has-background{ + padding:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comments-title/editor.min.css b/wp-includes/blocks/comments-title/editor.min.css new file mode 100644 index 0000000..502f0da --- /dev/null +++ b/wp-includes/blocks/comments-title/editor.min.css @@ -0,0 +1 @@ +.wp-block-comments-title.has-background{padding:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/comments.php b/wp-includes/blocks/comments.php new file mode 100644 index 0000000..48aac15 --- /dev/null +++ b/wp-includes/blocks/comments.php @@ -0,0 +1,215 @@ +<?php +/** + * Server-side rendering of the `core/comments` block. + * + * @package WordPress + */ + +/** + * Renders the `core/comments` block on the server. + * + * This render callback is mainly for rendering a dynamic, legacy version of + * this block (the old `core/post-comments`). It uses the `comments_template()` + * function to generate the output, in the same way as classic PHP themes. + * + * As this callback will always run during SSR, first we need to check whether + * the block is in legacy mode. If not, the HTML generated in the editor is + * returned instead. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Returns the filtered post comments for the current post wrapped inside "p" tags. + */ +function render_block_core_comments( $attributes, $content, $block ) { + global $post; + + $post_id = $block->context['postId']; + if ( ! isset( $post_id ) ) { + return ''; + } + + // Return early if there are no comments and comments are closed. + if ( ! comments_open( $post_id ) && (int) get_comments_number( $post_id ) === 0 ) { + return ''; + } + + // If this isn't the legacy block, we need to render the static version of this block. + $is_legacy = 'core/post-comments' === $block->name || ! empty( $attributes['legacy'] ); + if ( ! $is_legacy ) { + return $block->render( array( 'dynamic' => false ) ); + } + + $post_before = $post; + $post = get_post( $post_id ); + setup_postdata( $post ); + + ob_start(); + + /* + * There's a deprecation warning generated by WP Core. + * Ideally this deprecation is removed from Core. + * In the meantime, this removes it from the output. + */ + add_filter( 'deprecated_file_trigger_error', '__return_false' ); + comments_template(); + remove_filter( 'deprecated_file_trigger_error', '__return_false' ); + + $output = ob_get_clean(); + $post = $post_before; + + $classnames = array(); + // Adds the old class name for styles' backwards compatibility. + if ( isset( $attributes['legacy'] ) ) { + $classnames[] = 'wp-block-post-comments'; + } + if ( isset( $attributes['textAlign'] ) ) { + $classnames[] = 'has-text-align-' . $attributes['textAlign']; + } + + $wrapper_attributes = get_block_wrapper_attributes( + array( 'class' => implode( ' ', $classnames ) ) + ); + + /* + * Enqueues scripts and styles required only for the legacy version. That is + * why they are not defined in `block.json`. + */ + wp_enqueue_script( 'comment-reply' ); + enqueue_legacy_post_comments_block_styles( $block->name ); + + return sprintf( '<div %1$s>%2$s</div>', $wrapper_attributes, $output ); +} + +/** + * Registers the `core/comments` block on the server. + */ +function register_block_core_comments() { + register_block_type_from_metadata( + __DIR__ . '/comments', + array( + 'render_callback' => 'render_block_core_comments', + 'skip_inner_blocks' => true, + ) + ); +} +add_action( 'init', 'register_block_core_comments' ); + +/** + * Use the button block classes for the form-submit button. + * + * @param array $fields The default comment form arguments. + * + * @return array Returns the modified fields. + */ +function comments_block_form_defaults( $fields ) { + if ( wp_is_block_theme() ) { + $fields['submit_button'] = '<input name="%1$s" type="submit" id="%2$s" class="%3$s wp-block-button__link ' . wp_theme_get_element_class_name( 'button' ) . '" value="%4$s" />'; + $fields['submit_field'] = '<p class="form-submit wp-block-button">%1$s %2$s</p>'; + } + + return $fields; +} +add_filter( 'comment_form_defaults', 'comments_block_form_defaults' ); + +/** + * Enqueues styles from the legacy `core/post-comments` block. These styles are + * required only by the block's fallback. + * + * @param string $block_name Name of the new block type. + */ +function enqueue_legacy_post_comments_block_styles( $block_name ) { + static $are_styles_enqueued = false; + + if ( ! $are_styles_enqueued ) { + $handles = array( + 'wp-block-post-comments', + 'wp-block-buttons', + 'wp-block-button', + ); + foreach ( $handles as $handle ) { + wp_enqueue_block_style( $block_name, array( 'handle' => $handle ) ); + } + $are_styles_enqueued = true; + } +} + +/** + * Ensures backwards compatibility for any users running the Gutenberg plugin + * who have used Post Comments before it was merged into Comments Query Loop. + * + * The same approach was followed when core/query-loop was renamed to + * core/post-template. + * + * @see https://github.com/WordPress/gutenberg/pull/41807 + * @see https://github.com/WordPress/gutenberg/pull/32514 + */ +function register_legacy_post_comments_block() { + $registry = WP_Block_Type_Registry::get_instance(); + + /* + * Remove the old `post-comments` block if it was already registered, as it + * is about to be replaced by the type defined below. + */ + if ( $registry->is_registered( 'core/post-comments' ) ) { + unregister_block_type( 'core/post-comments' ); + } + + // Recreate the legacy block metadata. + $metadata = array( + 'name' => 'core/post-comments', + 'category' => 'theme', + 'attributes' => array( + 'textAlign' => array( + 'type' => 'string', + ), + ), + 'uses_context' => array( + 'postId', + 'postType', + ), + 'supports' => array( + 'html' => false, + 'align' => array( 'wide', 'full' ), + 'typography' => array( + 'fontSize' => true, + 'lineHeight' => true, + '__experimentalFontStyle' => true, + '__experimentalFontWeight' => true, + '__experimentalLetterSpacing' => true, + '__experimentalTextTransform' => true, + '__experimentalDefaultControls' => array( + 'fontSize' => true, + ), + ), + 'color' => array( + 'gradients' => true, + 'link' => true, + '__experimentalDefaultControls' => array( + 'background' => true, + 'text' => true, + ), + ), + 'inserter' => false, + ), + 'style' => array( + 'wp-block-post-comments', + 'wp-block-buttons', + 'wp-block-button', + ), + 'render_callback' => 'render_block_core_comments', + 'skip_inner_blocks' => true, + ); + + /* + * Filters the metadata object, the same way it's done inside + * `register_block_type_from_metadata()`. This applies some default filters, + * like `_wp_multiple_block_styles`, which is required in this case because + * the block has multiple styles. + */ + /** This filter is documented in wp-includes/blocks.php */ + $metadata = apply_filters( 'block_type_metadata', $metadata ); + + register_block_type( 'core/post-comments', $metadata ); +} +add_action( 'init', 'register_legacy_post_comments_block', 21 ); diff --git a/wp-includes/blocks/comments/block.json b/wp-includes/blocks/comments/block.json new file mode 100644 index 0000000..b35ea35 --- /dev/null +++ b/wp-includes/blocks/comments/block.json @@ -0,0 +1,52 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/comments", + "title": "Comments", + "category": "theme", + "description": "An advanced block that allows displaying post comments using different visual configurations.", + "textdomain": "default", + "attributes": { + "tagName": { + "type": "string", + "default": "div" + }, + "legacy": { + "type": "boolean", + "default": false + } + }, + "supports": { + "align": [ "wide", "full" ], + "html": false, + "color": { + "gradients": true, + "heading": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true, + "link": true + } + }, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-comments-editor", + "usesContext": [ "postId", "postType" ] +} diff --git a/wp-includes/blocks/comments/editor-rtl.css b/wp-includes/blocks/comments/editor-rtl.css new file mode 100644 index 0000000..1957e9e --- /dev/null +++ b/wp-includes/blocks/comments/editor-rtl.css @@ -0,0 +1,111 @@ +.wp-block-comments__legacy-placeholder,.wp-block-post-comments{ + box-sizing:border-box; +} +.wp-block-comments__legacy-placeholder .alignleft,.wp-block-post-comments .alignleft{ + float:right; +} +.wp-block-comments__legacy-placeholder .alignright,.wp-block-post-comments .alignright{ + float:left; +} +.wp-block-comments__legacy-placeholder .navigation:after,.wp-block-post-comments .navigation:after{ + clear:both; + content:""; + display:table; +} +.wp-block-comments__legacy-placeholder .commentlist,.wp-block-post-comments .commentlist{ + clear:both; + list-style:none; + margin:0; + padding:0; +} +.wp-block-comments__legacy-placeholder .commentlist .comment,.wp-block-post-comments .commentlist .comment{ + min-height:2.25em; + padding-right:3.25em; +} +.wp-block-comments__legacy-placeholder .commentlist .comment p,.wp-block-post-comments .commentlist .comment p{ + font-size:1em; + line-height:1.8; + margin:1em 0; +} +.wp-block-comments__legacy-placeholder .commentlist .children,.wp-block-post-comments .commentlist .children{ + list-style:none; + margin:0; + padding:0; +} +.wp-block-comments__legacy-placeholder .comment-author,.wp-block-post-comments .comment-author{ + line-height:1.5; +} +.wp-block-comments__legacy-placeholder .comment-author .avatar,.wp-block-post-comments .comment-author .avatar{ + border-radius:1.5em; + display:block; + float:right; + height:2.5em; + margin-left:.75em; + margin-top:.5em; + width:2.5em; +} +.wp-block-comments__legacy-placeholder .comment-author cite,.wp-block-post-comments .comment-author cite{ + font-style:normal; +} +.wp-block-comments__legacy-placeholder .comment-meta,.wp-block-post-comments .comment-meta{ + font-size:.875em; + line-height:1.5; +} +.wp-block-comments__legacy-placeholder .comment-meta b,.wp-block-post-comments .comment-meta b{ + font-weight:400; +} +.wp-block-comments__legacy-placeholder .comment-meta .comment-awaiting-moderation,.wp-block-post-comments .comment-meta .comment-awaiting-moderation{ + display:block; + margin-bottom:1em; + margin-top:1em; +} +.wp-block-comments__legacy-placeholder .comment-body .commentmetadata,.wp-block-post-comments .comment-body .commentmetadata{ + font-size:.875em; +} +.wp-block-comments__legacy-placeholder .comment-form-author label,.wp-block-comments__legacy-placeholder .comment-form-comment label,.wp-block-comments__legacy-placeholder .comment-form-email label,.wp-block-comments__legacy-placeholder .comment-form-url label,.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{ + display:block; + margin-bottom:.25em; +} +.wp-block-comments__legacy-placeholder .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder .comment-form textarea,.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{ + box-sizing:border-box; + display:block; + width:100%; +} +.wp-block-comments__legacy-placeholder .comment-form-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent{ + display:flex; + gap:.25em; +} +.wp-block-comments__legacy-placeholder .comment-form-cookies-consent #wp-comment-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{ + margin-top:.35em; +} +.wp-block-comments__legacy-placeholder .comment-reply-title,.wp-block-post-comments .comment-reply-title{ + margin-bottom:0; +} +.wp-block-comments__legacy-placeholder .comment-reply-title :where(small),.wp-block-post-comments .comment-reply-title :where(small){ + font-size:var(--wp--preset--font-size--medium, smaller); + margin-right:.5em; +} +.wp-block-comments__legacy-placeholder .reply,.wp-block-post-comments .reply{ + font-size:.875em; + margin-bottom:1.4em; +} +.wp-block-comments__legacy-placeholder input:not([type=submit]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{ + border:1px solid #949494; + font-family:inherit; + font-size:1em; +} +.wp-block-comments__legacy-placeholder input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{ + padding:calc(.667em + 2px); +} + +:where(.wp-block-post-comments input[type=submit]){ + border:none; +} + +.block-library-comments-toolbar__popover .components-popover__content{ + min-width:230px; +} + +.wp-block-comments__legacy-placeholder *{ + pointer-events:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comments/editor-rtl.min.css b/wp-includes/blocks/comments/editor-rtl.min.css new file mode 100644 index 0000000..37af71b --- /dev/null +++ b/wp-includes/blocks/comments/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-comments__legacy-placeholder,.wp-block-post-comments{box-sizing:border-box}.wp-block-comments__legacy-placeholder .alignleft,.wp-block-post-comments .alignleft{float:right}.wp-block-comments__legacy-placeholder .alignright,.wp-block-post-comments .alignright{float:left}.wp-block-comments__legacy-placeholder .navigation:after,.wp-block-post-comments .navigation:after{clear:both;content:"";display:table}.wp-block-comments__legacy-placeholder .commentlist,.wp-block-post-comments .commentlist{clear:both;list-style:none;margin:0;padding:0}.wp-block-comments__legacy-placeholder .commentlist .comment,.wp-block-post-comments .commentlist .comment{min-height:2.25em;padding-right:3.25em}.wp-block-comments__legacy-placeholder .commentlist .comment p,.wp-block-post-comments .commentlist .comment p{font-size:1em;line-height:1.8;margin:1em 0}.wp-block-comments__legacy-placeholder .commentlist .children,.wp-block-post-comments .commentlist .children{list-style:none;margin:0;padding:0}.wp-block-comments__legacy-placeholder .comment-author,.wp-block-post-comments .comment-author{line-height:1.5}.wp-block-comments__legacy-placeholder .comment-author .avatar,.wp-block-post-comments .comment-author .avatar{border-radius:1.5em;display:block;float:right;height:2.5em;margin-left:.75em;margin-top:.5em;width:2.5em}.wp-block-comments__legacy-placeholder .comment-author cite,.wp-block-post-comments .comment-author cite{font-style:normal}.wp-block-comments__legacy-placeholder .comment-meta,.wp-block-post-comments .comment-meta{font-size:.875em;line-height:1.5}.wp-block-comments__legacy-placeholder .comment-meta b,.wp-block-post-comments .comment-meta b{font-weight:400}.wp-block-comments__legacy-placeholder .comment-meta .comment-awaiting-moderation,.wp-block-post-comments .comment-meta .comment-awaiting-moderation{display:block;margin-bottom:1em;margin-top:1em}.wp-block-comments__legacy-placeholder .comment-body .commentmetadata,.wp-block-post-comments .comment-body .commentmetadata{font-size:.875em}.wp-block-comments__legacy-placeholder .comment-form-author label,.wp-block-comments__legacy-placeholder .comment-form-comment label,.wp-block-comments__legacy-placeholder .comment-form-email label,.wp-block-comments__legacy-placeholder .comment-form-url label,.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{display:block;margin-bottom:.25em}.wp-block-comments__legacy-placeholder .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder .comment-form textarea,.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{box-sizing:border-box;display:block;width:100%}.wp-block-comments__legacy-placeholder .comment-form-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent{display:flex;gap:.25em}.wp-block-comments__legacy-placeholder .comment-form-cookies-consent #wp-comment-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{margin-top:.35em}.wp-block-comments__legacy-placeholder .comment-reply-title,.wp-block-post-comments .comment-reply-title{margin-bottom:0}.wp-block-comments__legacy-placeholder .comment-reply-title :where(small),.wp-block-post-comments .comment-reply-title :where(small){font-size:var(--wp--preset--font-size--medium,smaller);margin-right:.5em}.wp-block-comments__legacy-placeholder .reply,.wp-block-post-comments .reply{font-size:.875em;margin-bottom:1.4em}.wp-block-comments__legacy-placeholder input:not([type=submit]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{border:1px solid #949494;font-family:inherit;font-size:1em}.wp-block-comments__legacy-placeholder input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{padding:calc(.667em + 2px)}:where(.wp-block-post-comments input[type=submit]){border:none}.block-library-comments-toolbar__popover .components-popover__content{min-width:230px}.wp-block-comments__legacy-placeholder *{pointer-events:none}
\ No newline at end of file diff --git a/wp-includes/blocks/comments/editor.css b/wp-includes/blocks/comments/editor.css new file mode 100644 index 0000000..e1b3136 --- /dev/null +++ b/wp-includes/blocks/comments/editor.css @@ -0,0 +1,111 @@ +.wp-block-comments__legacy-placeholder,.wp-block-post-comments{ + box-sizing:border-box; +} +.wp-block-comments__legacy-placeholder .alignleft,.wp-block-post-comments .alignleft{ + float:left; +} +.wp-block-comments__legacy-placeholder .alignright,.wp-block-post-comments .alignright{ + float:right; +} +.wp-block-comments__legacy-placeholder .navigation:after,.wp-block-post-comments .navigation:after{ + clear:both; + content:""; + display:table; +} +.wp-block-comments__legacy-placeholder .commentlist,.wp-block-post-comments .commentlist{ + clear:both; + list-style:none; + margin:0; + padding:0; +} +.wp-block-comments__legacy-placeholder .commentlist .comment,.wp-block-post-comments .commentlist .comment{ + min-height:2.25em; + padding-left:3.25em; +} +.wp-block-comments__legacy-placeholder .commentlist .comment p,.wp-block-post-comments .commentlist .comment p{ + font-size:1em; + line-height:1.8; + margin:1em 0; +} +.wp-block-comments__legacy-placeholder .commentlist .children,.wp-block-post-comments .commentlist .children{ + list-style:none; + margin:0; + padding:0; +} +.wp-block-comments__legacy-placeholder .comment-author,.wp-block-post-comments .comment-author{ + line-height:1.5; +} +.wp-block-comments__legacy-placeholder .comment-author .avatar,.wp-block-post-comments .comment-author .avatar{ + border-radius:1.5em; + display:block; + float:left; + height:2.5em; + margin-right:.75em; + margin-top:.5em; + width:2.5em; +} +.wp-block-comments__legacy-placeholder .comment-author cite,.wp-block-post-comments .comment-author cite{ + font-style:normal; +} +.wp-block-comments__legacy-placeholder .comment-meta,.wp-block-post-comments .comment-meta{ + font-size:.875em; + line-height:1.5; +} +.wp-block-comments__legacy-placeholder .comment-meta b,.wp-block-post-comments .comment-meta b{ + font-weight:400; +} +.wp-block-comments__legacy-placeholder .comment-meta .comment-awaiting-moderation,.wp-block-post-comments .comment-meta .comment-awaiting-moderation{ + display:block; + margin-bottom:1em; + margin-top:1em; +} +.wp-block-comments__legacy-placeholder .comment-body .commentmetadata,.wp-block-post-comments .comment-body .commentmetadata{ + font-size:.875em; +} +.wp-block-comments__legacy-placeholder .comment-form-author label,.wp-block-comments__legacy-placeholder .comment-form-comment label,.wp-block-comments__legacy-placeholder .comment-form-email label,.wp-block-comments__legacy-placeholder .comment-form-url label,.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{ + display:block; + margin-bottom:.25em; +} +.wp-block-comments__legacy-placeholder .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder .comment-form textarea,.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{ + box-sizing:border-box; + display:block; + width:100%; +} +.wp-block-comments__legacy-placeholder .comment-form-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent{ + display:flex; + gap:.25em; +} +.wp-block-comments__legacy-placeholder .comment-form-cookies-consent #wp-comment-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{ + margin-top:.35em; +} +.wp-block-comments__legacy-placeholder .comment-reply-title,.wp-block-post-comments .comment-reply-title{ + margin-bottom:0; +} +.wp-block-comments__legacy-placeholder .comment-reply-title :where(small),.wp-block-post-comments .comment-reply-title :where(small){ + font-size:var(--wp--preset--font-size--medium, smaller); + margin-left:.5em; +} +.wp-block-comments__legacy-placeholder .reply,.wp-block-post-comments .reply{ + font-size:.875em; + margin-bottom:1.4em; +} +.wp-block-comments__legacy-placeholder input:not([type=submit]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{ + border:1px solid #949494; + font-family:inherit; + font-size:1em; +} +.wp-block-comments__legacy-placeholder input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{ + padding:calc(.667em + 2px); +} + +:where(.wp-block-post-comments input[type=submit]){ + border:none; +} + +.block-library-comments-toolbar__popover .components-popover__content{ + min-width:230px; +} + +.wp-block-comments__legacy-placeholder *{ + pointer-events:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comments/editor.min.css b/wp-includes/blocks/comments/editor.min.css new file mode 100644 index 0000000..995153d --- /dev/null +++ b/wp-includes/blocks/comments/editor.min.css @@ -0,0 +1 @@ +.wp-block-comments__legacy-placeholder,.wp-block-post-comments{box-sizing:border-box}.wp-block-comments__legacy-placeholder .alignleft,.wp-block-post-comments .alignleft{float:left}.wp-block-comments__legacy-placeholder .alignright,.wp-block-post-comments .alignright{float:right}.wp-block-comments__legacy-placeholder .navigation:after,.wp-block-post-comments .navigation:after{clear:both;content:"";display:table}.wp-block-comments__legacy-placeholder .commentlist,.wp-block-post-comments .commentlist{clear:both;list-style:none;margin:0;padding:0}.wp-block-comments__legacy-placeholder .commentlist .comment,.wp-block-post-comments .commentlist .comment{min-height:2.25em;padding-left:3.25em}.wp-block-comments__legacy-placeholder .commentlist .comment p,.wp-block-post-comments .commentlist .comment p{font-size:1em;line-height:1.8;margin:1em 0}.wp-block-comments__legacy-placeholder .commentlist .children,.wp-block-post-comments .commentlist .children{list-style:none;margin:0;padding:0}.wp-block-comments__legacy-placeholder .comment-author,.wp-block-post-comments .comment-author{line-height:1.5}.wp-block-comments__legacy-placeholder .comment-author .avatar,.wp-block-post-comments .comment-author .avatar{border-radius:1.5em;display:block;float:left;height:2.5em;margin-right:.75em;margin-top:.5em;width:2.5em}.wp-block-comments__legacy-placeholder .comment-author cite,.wp-block-post-comments .comment-author cite{font-style:normal}.wp-block-comments__legacy-placeholder .comment-meta,.wp-block-post-comments .comment-meta{font-size:.875em;line-height:1.5}.wp-block-comments__legacy-placeholder .comment-meta b,.wp-block-post-comments .comment-meta b{font-weight:400}.wp-block-comments__legacy-placeholder .comment-meta .comment-awaiting-moderation,.wp-block-post-comments .comment-meta .comment-awaiting-moderation{display:block;margin-bottom:1em;margin-top:1em}.wp-block-comments__legacy-placeholder .comment-body .commentmetadata,.wp-block-post-comments .comment-body .commentmetadata{font-size:.875em}.wp-block-comments__legacy-placeholder .comment-form-author label,.wp-block-comments__legacy-placeholder .comment-form-comment label,.wp-block-comments__legacy-placeholder .comment-form-email label,.wp-block-comments__legacy-placeholder .comment-form-url label,.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{display:block;margin-bottom:.25em}.wp-block-comments__legacy-placeholder .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder .comment-form textarea,.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{box-sizing:border-box;display:block;width:100%}.wp-block-comments__legacy-placeholder .comment-form-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent{display:flex;gap:.25em}.wp-block-comments__legacy-placeholder .comment-form-cookies-consent #wp-comment-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{margin-top:.35em}.wp-block-comments__legacy-placeholder .comment-reply-title,.wp-block-post-comments .comment-reply-title{margin-bottom:0}.wp-block-comments__legacy-placeholder .comment-reply-title :where(small),.wp-block-post-comments .comment-reply-title :where(small){font-size:var(--wp--preset--font-size--medium,smaller);margin-left:.5em}.wp-block-comments__legacy-placeholder .reply,.wp-block-post-comments .reply{font-size:.875em;margin-bottom:1.4em}.wp-block-comments__legacy-placeholder input:not([type=submit]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{border:1px solid #949494;font-family:inherit;font-size:1em}.wp-block-comments__legacy-placeholder input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{padding:calc(.667em + 2px)}:where(.wp-block-post-comments input[type=submit]){border:none}.block-library-comments-toolbar__popover .components-popover__content{min-width:230px}.wp-block-comments__legacy-placeholder *{pointer-events:none}
\ No newline at end of file diff --git a/wp-includes/blocks/comments/style-rtl.css b/wp-includes/blocks/comments/style-rtl.css new file mode 100644 index 0000000..636a8a1 --- /dev/null +++ b/wp-includes/blocks/comments/style-rtl.css @@ -0,0 +1,103 @@ +.wp-block-post-comments{ + box-sizing:border-box; +} +.wp-block-post-comments .alignleft{ + float:right; +} +.wp-block-post-comments .alignright{ + float:left; +} +.wp-block-post-comments .navigation:after{ + clear:both; + content:""; + display:table; +} +.wp-block-post-comments .commentlist{ + clear:both; + list-style:none; + margin:0; + padding:0; +} +.wp-block-post-comments .commentlist .comment{ + min-height:2.25em; + padding-right:3.25em; +} +.wp-block-post-comments .commentlist .comment p{ + font-size:1em; + line-height:1.8; + margin:1em 0; +} +.wp-block-post-comments .commentlist .children{ + list-style:none; + margin:0; + padding:0; +} +.wp-block-post-comments .comment-author{ + line-height:1.5; +} +.wp-block-post-comments .comment-author .avatar{ + border-radius:1.5em; + display:block; + float:right; + height:2.5em; + margin-left:.75em; + margin-top:.5em; + width:2.5em; +} +.wp-block-post-comments .comment-author cite{ + font-style:normal; +} +.wp-block-post-comments .comment-meta{ + font-size:.875em; + line-height:1.5; +} +.wp-block-post-comments .comment-meta b{ + font-weight:400; +} +.wp-block-post-comments .comment-meta .comment-awaiting-moderation{ + display:block; + margin-bottom:1em; + margin-top:1em; +} +.wp-block-post-comments .comment-body .commentmetadata{ + font-size:.875em; +} +.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{ + display:block; + margin-bottom:.25em; +} +.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{ + box-sizing:border-box; + display:block; + width:100%; +} +.wp-block-post-comments .comment-form-cookies-consent{ + display:flex; + gap:.25em; +} +.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{ + margin-top:.35em; +} +.wp-block-post-comments .comment-reply-title{ + margin-bottom:0; +} +.wp-block-post-comments .comment-reply-title :where(small){ + font-size:var(--wp--preset--font-size--medium, smaller); + margin-right:.5em; +} +.wp-block-post-comments .reply{ + font-size:.875em; + margin-bottom:1.4em; +} +.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{ + border:1px solid #949494; + font-family:inherit; + font-size:1em; +} +.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{ + padding:calc(.667em + 2px); +} + +:where(.wp-block-post-comments input[type=submit]){ + border:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comments/style-rtl.min.css b/wp-includes/blocks/comments/style-rtl.min.css new file mode 100644 index 0000000..8a27a27 --- /dev/null +++ b/wp-includes/blocks/comments/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-post-comments{box-sizing:border-box}.wp-block-post-comments .alignleft{float:right}.wp-block-post-comments .alignright{float:left}.wp-block-post-comments .navigation:after{clear:both;content:"";display:table}.wp-block-post-comments .commentlist{clear:both;list-style:none;margin:0;padding:0}.wp-block-post-comments .commentlist .comment{min-height:2.25em;padding-right:3.25em}.wp-block-post-comments .commentlist .comment p{font-size:1em;line-height:1.8;margin:1em 0}.wp-block-post-comments .commentlist .children{list-style:none;margin:0;padding:0}.wp-block-post-comments .comment-author{line-height:1.5}.wp-block-post-comments .comment-author .avatar{border-radius:1.5em;display:block;float:right;height:2.5em;margin-left:.75em;margin-top:.5em;width:2.5em}.wp-block-post-comments .comment-author cite{font-style:normal}.wp-block-post-comments .comment-meta{font-size:.875em;line-height:1.5}.wp-block-post-comments .comment-meta b{font-weight:400}.wp-block-post-comments .comment-meta .comment-awaiting-moderation{display:block;margin-bottom:1em;margin-top:1em}.wp-block-post-comments .comment-body .commentmetadata{font-size:.875em}.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{display:block;margin-bottom:.25em}.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{box-sizing:border-box;display:block;width:100%}.wp-block-post-comments .comment-form-cookies-consent{display:flex;gap:.25em}.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{margin-top:.35em}.wp-block-post-comments .comment-reply-title{margin-bottom:0}.wp-block-post-comments .comment-reply-title :where(small){font-size:var(--wp--preset--font-size--medium,smaller);margin-right:.5em}.wp-block-post-comments .reply{font-size:.875em;margin-bottom:1.4em}.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{border:1px solid #949494;font-family:inherit;font-size:1em}.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{padding:calc(.667em + 2px)}:where(.wp-block-post-comments input[type=submit]){border:none}
\ No newline at end of file diff --git a/wp-includes/blocks/comments/style.css b/wp-includes/blocks/comments/style.css new file mode 100644 index 0000000..c34c2db --- /dev/null +++ b/wp-includes/blocks/comments/style.css @@ -0,0 +1,103 @@ +.wp-block-post-comments{ + box-sizing:border-box; +} +.wp-block-post-comments .alignleft{ + float:left; +} +.wp-block-post-comments .alignright{ + float:right; +} +.wp-block-post-comments .navigation:after{ + clear:both; + content:""; + display:table; +} +.wp-block-post-comments .commentlist{ + clear:both; + list-style:none; + margin:0; + padding:0; +} +.wp-block-post-comments .commentlist .comment{ + min-height:2.25em; + padding-left:3.25em; +} +.wp-block-post-comments .commentlist .comment p{ + font-size:1em; + line-height:1.8; + margin:1em 0; +} +.wp-block-post-comments .commentlist .children{ + list-style:none; + margin:0; + padding:0; +} +.wp-block-post-comments .comment-author{ + line-height:1.5; +} +.wp-block-post-comments .comment-author .avatar{ + border-radius:1.5em; + display:block; + float:left; + height:2.5em; + margin-right:.75em; + margin-top:.5em; + width:2.5em; +} +.wp-block-post-comments .comment-author cite{ + font-style:normal; +} +.wp-block-post-comments .comment-meta{ + font-size:.875em; + line-height:1.5; +} +.wp-block-post-comments .comment-meta b{ + font-weight:400; +} +.wp-block-post-comments .comment-meta .comment-awaiting-moderation{ + display:block; + margin-bottom:1em; + margin-top:1em; +} +.wp-block-post-comments .comment-body .commentmetadata{ + font-size:.875em; +} +.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{ + display:block; + margin-bottom:.25em; +} +.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{ + box-sizing:border-box; + display:block; + width:100%; +} +.wp-block-post-comments .comment-form-cookies-consent{ + display:flex; + gap:.25em; +} +.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{ + margin-top:.35em; +} +.wp-block-post-comments .comment-reply-title{ + margin-bottom:0; +} +.wp-block-post-comments .comment-reply-title :where(small){ + font-size:var(--wp--preset--font-size--medium, smaller); + margin-left:.5em; +} +.wp-block-post-comments .reply{ + font-size:.875em; + margin-bottom:1.4em; +} +.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{ + border:1px solid #949494; + font-family:inherit; + font-size:1em; +} +.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{ + padding:calc(.667em + 2px); +} + +:where(.wp-block-post-comments input[type=submit]){ + border:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/comments/style.min.css b/wp-includes/blocks/comments/style.min.css new file mode 100644 index 0000000..e359e5d --- /dev/null +++ b/wp-includes/blocks/comments/style.min.css @@ -0,0 +1 @@ +.wp-block-post-comments{box-sizing:border-box}.wp-block-post-comments .alignleft{float:left}.wp-block-post-comments .alignright{float:right}.wp-block-post-comments .navigation:after{clear:both;content:"";display:table}.wp-block-post-comments .commentlist{clear:both;list-style:none;margin:0;padding:0}.wp-block-post-comments .commentlist .comment{min-height:2.25em;padding-left:3.25em}.wp-block-post-comments .commentlist .comment p{font-size:1em;line-height:1.8;margin:1em 0}.wp-block-post-comments .commentlist .children{list-style:none;margin:0;padding:0}.wp-block-post-comments .comment-author{line-height:1.5}.wp-block-post-comments .comment-author .avatar{border-radius:1.5em;display:block;float:left;height:2.5em;margin-right:.75em;margin-top:.5em;width:2.5em}.wp-block-post-comments .comment-author cite{font-style:normal}.wp-block-post-comments .comment-meta{font-size:.875em;line-height:1.5}.wp-block-post-comments .comment-meta b{font-weight:400}.wp-block-post-comments .comment-meta .comment-awaiting-moderation{display:block;margin-bottom:1em;margin-top:1em}.wp-block-post-comments .comment-body .commentmetadata{font-size:.875em}.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{display:block;margin-bottom:.25em}.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{box-sizing:border-box;display:block;width:100%}.wp-block-post-comments .comment-form-cookies-consent{display:flex;gap:.25em}.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{margin-top:.35em}.wp-block-post-comments .comment-reply-title{margin-bottom:0}.wp-block-post-comments .comment-reply-title :where(small){font-size:var(--wp--preset--font-size--medium,smaller);margin-left:.5em}.wp-block-post-comments .reply{font-size:.875em;margin-bottom:1.4em}.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{border:1px solid #949494;font-family:inherit;font-size:1em}.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{padding:calc(.667em + 2px)}:where(.wp-block-post-comments input[type=submit]){border:none}
\ No newline at end of file diff --git a/wp-includes/blocks/cover.php b/wp-includes/blocks/cover.php new file mode 100644 index 0000000..5f6b2ca --- /dev/null +++ b/wp-includes/blocks/cover.php @@ -0,0 +1,78 @@ +<?php +/** + * Server-side rendering of the `core/cover` block. + * + * @package WordPress + */ + +/** + * Renders the `core/cover` block on server. + * + * @param array $attributes The block attributes. + * @param string $content The block rendered content. + * + * @return string Returns the cover block markup, if useFeaturedImage is true. + */ +function render_block_core_cover( $attributes, $content ) { + if ( 'image' !== $attributes['backgroundType'] || false === $attributes['useFeaturedImage'] ) { + return $content; + } + + if ( ! ( $attributes['hasParallax'] || $attributes['isRepeated'] ) ) { + $attr = array( + 'class' => 'wp-block-cover__image-background', + 'data-object-fit' => 'cover', + ); + + if ( isset( $attributes['focalPoint'] ) ) { + $object_position = round( $attributes['focalPoint']['x'] * 100 ) . '% ' . round( $attributes['focalPoint']['y'] * 100 ) . '%'; + $attr['data-object-position'] = $object_position; + $attr['style'] = 'object-position: ' . $object_position; + } + + $image = get_the_post_thumbnail( null, 'post-thumbnail', $attr ); + + /* + * Inserts the featured image between the (1st) cover 'background' `span` and 'inner_container' `div`, + * and removes eventual whitespace characters between the two (typically introduced at template level) + */ + $inner_container_start = '/<div\b[^>]+wp-block-cover__inner-container[\s|"][^>]*>/U'; + if ( 1 === preg_match( $inner_container_start, $content, $matches, PREG_OFFSET_CAPTURE ) ) { + $offset = $matches[0][1]; + $content = substr( $content, 0, $offset ) . $image . substr( $content, $offset ); + } + } else { + if ( in_the_loop() ) { + update_post_thumbnail_cache(); + } + $current_featured_image = get_the_post_thumbnail_url(); + if ( ! $current_featured_image ) { + return $content; + } + + $processor = new WP_HTML_Tag_Processor( $content ); + $processor->next_tag(); + + $styles = $processor->get_attribute( 'style' ); + $merged_styles = ! empty( $styles ) ? $styles . ';' : ''; + $merged_styles .= 'background-image:url(' . esc_url( $current_featured_image ) . ');'; + + $processor->set_attribute( 'style', $merged_styles ); + $content = $processor->get_updated_html(); + } + + return $content; +} + +/** + * Registers the `core/cover` block renderer on server. + */ +function register_block_core_cover() { + register_block_type_from_metadata( + __DIR__ . '/cover', + array( + 'render_callback' => 'render_block_core_cover', + ) + ); +} +add_action( 'init', 'register_block_core_cover' ); diff --git a/wp-includes/blocks/cover/block.json b/wp-includes/blocks/cover/block.json new file mode 100644 index 0000000..e88dd2d --- /dev/null +++ b/wp-includes/blocks/cover/block.json @@ -0,0 +1,136 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/cover", + "title": "Cover", + "category": "media", + "description": "Add an image or video with a text overlay.", + "textdomain": "default", + "attributes": { + "url": { + "type": "string" + }, + "useFeaturedImage": { + "type": "boolean", + "default": false + }, + "id": { + "type": "number" + }, + "alt": { + "type": "string", + "source": "attribute", + "selector": "img", + "attribute": "alt", + "default": "" + }, + "hasParallax": { + "type": "boolean", + "default": false + }, + "isRepeated": { + "type": "boolean", + "default": false + }, + "dimRatio": { + "type": "number", + "default": 100 + }, + "overlayColor": { + "type": "string" + }, + "customOverlayColor": { + "type": "string" + }, + "backgroundType": { + "type": "string", + "default": "image" + }, + "focalPoint": { + "type": "object" + }, + "minHeight": { + "type": "number" + }, + "minHeightUnit": { + "type": "string" + }, + "gradient": { + "type": "string" + }, + "customGradient": { + "type": "string" + }, + "contentPosition": { + "type": "string" + }, + "isDark": { + "type": "boolean", + "default": true + }, + "allowedBlocks": { + "type": "array" + }, + "templateLock": { + "type": [ "string", "boolean" ], + "enum": [ "all", "insert", "contentOnly", false ] + }, + "tagName": { + "type": "string", + "default": "div" + } + }, + "usesContext": [ "postId", "postType" ], + "supports": { + "anchor": true, + "align": true, + "html": false, + "spacing": { + "padding": true, + "margin": [ "top", "bottom" ], + "blockGap": true, + "__experimentalDefaultControls": { + "padding": true, + "blockGap": true + } + }, + "__experimentalBorder": { + "color": true, + "radius": true, + "style": true, + "width": true, + "__experimentalDefaultControls": { + "color": true, + "radius": true, + "style": true, + "width": true + } + }, + "color": { + "__experimentalDuotone": "> .wp-block-cover__image-background, > .wp-block-cover__video-background", + "heading": true, + "text": true, + "background": false, + "__experimentalSkipSerialization": [ "gradients" ], + "enableContrastChecker": false + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "layout": { + "allowJustification": false + } + }, + "editorStyle": "wp-block-cover-editor", + "style": "wp-block-cover" +} diff --git a/wp-includes/blocks/cover/editor-rtl.css b/wp-includes/blocks/cover/editor-rtl.css new file mode 100644 index 0000000..ef0c8a8 --- /dev/null +++ b/wp-includes/blocks/cover/editor-rtl.css @@ -0,0 +1,85 @@ +.editor-styles-wrapper .wp-block-cover{ + box-sizing:border-box; +} +.wp-block-cover.is-placeholder{ + align-items:stretch; + display:flex; + min-height:240px; + padding:0 !important; +} +.wp-block-cover.is-placeholder .components-placeholder.is-large{ + justify-content:flex-start; + z-index:1; +} +.wp-block-cover.is-placeholder:focus:after{ + min-height:auto; +} +.wp-block-cover.components-placeholder h2{ + color:inherit; +} +.wp-block-cover.is-transient:before{ + background-color:#fff; + opacity:.3; +} +.wp-block-cover .components-spinner{ + margin:0; + position:absolute; + right:50%; + top:50%; + transform:translate(50%, -50%); + z-index:1; +} +.wp-block-cover .wp-block-cover__inner-container{ + margin-left:0; + margin-right:0; + text-align:right; +} +.wp-block-cover .wp-block-cover__placeholder-background-options{ + width:100%; +} +.wp-block-cover .wp-block-cover__image--placeholder-image{ + bottom:0; + left:0; + position:absolute; + right:0; + top:0; +} + +[data-align=left]>.wp-block-cover,[data-align=right]>.wp-block-cover{ + max-width:420px; + width:100%; +} + +.block-library-cover__reset-button{ + margin-right:auto; +} + +.block-library-cover__resize-container{ + bottom:0; + left:0; + min-height:50px; + position:absolute !important; + right:0; + top:0; +} + +.components-popover.block-editor-block-popover.block-library-cover__resizable-box-popover .block-library-cover__resize-container,.components-popover.block-editor-block-popover.block-library-cover__resizable-box-popover .components-popover__content>div{ + overflow:visible; + pointer-events:none; +} + +.wp-block-cover>.components-drop-zone .components-drop-zone__content{ + opacity:.8 !important; +} + +.block-editor-block-patterns-list__list-item .has-parallax.wp-block-cover{ + background-attachment:scroll; +} + +.color-block-support-panel__inner-wrapper>:not(.block-editor-tools-panel-color-gradient-settings__item){ + margin-top:24px; +} + +.wp-block-cover:after{ + min-height:auto; +}
\ No newline at end of file diff --git a/wp-includes/blocks/cover/editor-rtl.min.css b/wp-includes/blocks/cover/editor-rtl.min.css new file mode 100644 index 0000000..0e57f82 --- /dev/null +++ b/wp-includes/blocks/cover/editor-rtl.min.css @@ -0,0 +1 @@ +.editor-styles-wrapper .wp-block-cover{box-sizing:border-box}.wp-block-cover.is-placeholder{align-items:stretch;display:flex;min-height:240px;padding:0!important}.wp-block-cover.is-placeholder .components-placeholder.is-large{justify-content:flex-start;z-index:1}.wp-block-cover.is-placeholder:focus:after{min-height:auto}.wp-block-cover.components-placeholder h2{color:inherit}.wp-block-cover.is-transient:before{background-color:#fff;opacity:.3}.wp-block-cover .components-spinner{margin:0;position:absolute;right:50%;top:50%;transform:translate(50%,-50%);z-index:1}.wp-block-cover .wp-block-cover__inner-container{margin-left:0;margin-right:0;text-align:right}.wp-block-cover .wp-block-cover__placeholder-background-options{width:100%}.wp-block-cover .wp-block-cover__image--placeholder-image{bottom:0;left:0;position:absolute;right:0;top:0}[data-align=left]>.wp-block-cover,[data-align=right]>.wp-block-cover{max-width:420px;width:100%}.block-library-cover__reset-button{margin-right:auto}.block-library-cover__resize-container{bottom:0;left:0;min-height:50px;position:absolute!important;right:0;top:0}.components-popover.block-editor-block-popover.block-library-cover__resizable-box-popover .block-library-cover__resize-container,.components-popover.block-editor-block-popover.block-library-cover__resizable-box-popover .components-popover__content>div{overflow:visible;pointer-events:none}.wp-block-cover>.components-drop-zone .components-drop-zone__content{opacity:.8!important}.block-editor-block-patterns-list__list-item .has-parallax.wp-block-cover{background-attachment:scroll}.color-block-support-panel__inner-wrapper>:not(.block-editor-tools-panel-color-gradient-settings__item){margin-top:24px}.wp-block-cover:after{min-height:auto}
\ No newline at end of file diff --git a/wp-includes/blocks/cover/editor.css b/wp-includes/blocks/cover/editor.css new file mode 100644 index 0000000..23d4345 --- /dev/null +++ b/wp-includes/blocks/cover/editor.css @@ -0,0 +1,85 @@ +.editor-styles-wrapper .wp-block-cover{ + box-sizing:border-box; +} +.wp-block-cover.is-placeholder{ + align-items:stretch; + display:flex; + min-height:240px; + padding:0 !important; +} +.wp-block-cover.is-placeholder .components-placeholder.is-large{ + justify-content:flex-start; + z-index:1; +} +.wp-block-cover.is-placeholder:focus:after{ + min-height:auto; +} +.wp-block-cover.components-placeholder h2{ + color:inherit; +} +.wp-block-cover.is-transient:before{ + background-color:#fff; + opacity:.3; +} +.wp-block-cover .components-spinner{ + left:50%; + margin:0; + position:absolute; + top:50%; + transform:translate(-50%, -50%); + z-index:1; +} +.wp-block-cover .wp-block-cover__inner-container{ + margin-left:0; + margin-right:0; + text-align:left; +} +.wp-block-cover .wp-block-cover__placeholder-background-options{ + width:100%; +} +.wp-block-cover .wp-block-cover__image--placeholder-image{ + bottom:0; + left:0; + position:absolute; + right:0; + top:0; +} + +[data-align=left]>.wp-block-cover,[data-align=right]>.wp-block-cover{ + max-width:420px; + width:100%; +} + +.block-library-cover__reset-button{ + margin-left:auto; +} + +.block-library-cover__resize-container{ + bottom:0; + left:0; + min-height:50px; + position:absolute !important; + right:0; + top:0; +} + +.components-popover.block-editor-block-popover.block-library-cover__resizable-box-popover .block-library-cover__resize-container,.components-popover.block-editor-block-popover.block-library-cover__resizable-box-popover .components-popover__content>div{ + overflow:visible; + pointer-events:none; +} + +.wp-block-cover>.components-drop-zone .components-drop-zone__content{ + opacity:.8 !important; +} + +.block-editor-block-patterns-list__list-item .has-parallax.wp-block-cover{ + background-attachment:scroll; +} + +.color-block-support-panel__inner-wrapper>:not(.block-editor-tools-panel-color-gradient-settings__item){ + margin-top:24px; +} + +.wp-block-cover:after{ + min-height:auto; +}
\ No newline at end of file diff --git a/wp-includes/blocks/cover/editor.min.css b/wp-includes/blocks/cover/editor.min.css new file mode 100644 index 0000000..5b54b34 --- /dev/null +++ b/wp-includes/blocks/cover/editor.min.css @@ -0,0 +1 @@ +.editor-styles-wrapper .wp-block-cover{box-sizing:border-box}.wp-block-cover.is-placeholder{align-items:stretch;display:flex;min-height:240px;padding:0!important}.wp-block-cover.is-placeholder .components-placeholder.is-large{justify-content:flex-start;z-index:1}.wp-block-cover.is-placeholder:focus:after{min-height:auto}.wp-block-cover.components-placeholder h2{color:inherit}.wp-block-cover.is-transient:before{background-color:#fff;opacity:.3}.wp-block-cover .components-spinner{left:50%;margin:0;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}.wp-block-cover .wp-block-cover__inner-container{margin-left:0;margin-right:0;text-align:left}.wp-block-cover .wp-block-cover__placeholder-background-options{width:100%}.wp-block-cover .wp-block-cover__image--placeholder-image{bottom:0;left:0;position:absolute;right:0;top:0}[data-align=left]>.wp-block-cover,[data-align=right]>.wp-block-cover{max-width:420px;width:100%}.block-library-cover__reset-button{margin-left:auto}.block-library-cover__resize-container{bottom:0;left:0;min-height:50px;position:absolute!important;right:0;top:0}.components-popover.block-editor-block-popover.block-library-cover__resizable-box-popover .block-library-cover__resize-container,.components-popover.block-editor-block-popover.block-library-cover__resizable-box-popover .components-popover__content>div{overflow:visible;pointer-events:none}.wp-block-cover>.components-drop-zone .components-drop-zone__content{opacity:.8!important}.block-editor-block-patterns-list__list-item .has-parallax.wp-block-cover{background-attachment:scroll}.color-block-support-panel__inner-wrapper>:not(.block-editor-tools-panel-color-gradient-settings__item){margin-top:24px}.wp-block-cover:after{min-height:auto}
\ No newline at end of file diff --git a/wp-includes/blocks/cover/style-rtl.css b/wp-includes/blocks/cover/style-rtl.css new file mode 100644 index 0000000..2144332 --- /dev/null +++ b/wp-includes/blocks/cover/style-rtl.css @@ -0,0 +1,242 @@ +.wp-block-cover,.wp-block-cover-image{ + align-items:center; + background-position:50%; + box-sizing:border-box; direction:ltr; + display:flex; + justify-content:center; + min-height:430px; + overflow:hidden; + overflow:clip; + padding:1em; + position:relative; +} +.wp-block-cover .has-background-dim:not([class*=-background-color]),.wp-block-cover-image .has-background-dim:not([class*=-background-color]),.wp-block-cover-image.has-background-dim:not([class*=-background-color]),.wp-block-cover.has-background-dim:not([class*=-background-color]){ + background-color:#000; +} +.wp-block-cover .has-background-dim.has-background-gradient,.wp-block-cover-image .has-background-dim.has-background-gradient{ + background-color:transparent; +} +.wp-block-cover-image.has-background-dim:before,.wp-block-cover.has-background-dim:before{ + background-color:inherit; + content:""; +} +.wp-block-cover .wp-block-cover__background,.wp-block-cover .wp-block-cover__gradient-background,.wp-block-cover-image .wp-block-cover__background,.wp-block-cover-image .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim:not(.has-background-gradient):before,.wp-block-cover.has-background-dim:not(.has-background-gradient):before{ + bottom:0; + left:0; + opacity:.5; + position:absolute; + right:0; + top:0; + z-index:1; +} +.wp-block-cover-image.has-background-dim.has-background-dim-10 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-10 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-10:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-10 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-10 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-10:not(.has-background-gradient):before{ + opacity:.1; +} +.wp-block-cover-image.has-background-dim.has-background-dim-20 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-20 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-20:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-20 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-20 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-20:not(.has-background-gradient):before{ + opacity:.2; +} +.wp-block-cover-image.has-background-dim.has-background-dim-30 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-30 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-30:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-30 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-30 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-30:not(.has-background-gradient):before{ + opacity:.3; +} +.wp-block-cover-image.has-background-dim.has-background-dim-40 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-40 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-40:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-40 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-40 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-40:not(.has-background-gradient):before{ + opacity:.4; +} +.wp-block-cover-image.has-background-dim.has-background-dim-50 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-50 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-50:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-50 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-50 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-50:not(.has-background-gradient):before{ + opacity:.5; +} +.wp-block-cover-image.has-background-dim.has-background-dim-60 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-60 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-60:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-60 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-60 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-60:not(.has-background-gradient):before{ + opacity:.6; +} +.wp-block-cover-image.has-background-dim.has-background-dim-70 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-70 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-70:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-70 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-70 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-70:not(.has-background-gradient):before{ + opacity:.7; +} +.wp-block-cover-image.has-background-dim.has-background-dim-80 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-80 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-80:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-80 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-80 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-80:not(.has-background-gradient):before{ + opacity:.8; +} +.wp-block-cover-image.has-background-dim.has-background-dim-90 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-90 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-90:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-90 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-90 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-90:not(.has-background-gradient):before{ + opacity:.9; +} +.wp-block-cover-image.has-background-dim.has-background-dim-100 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-100 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-100:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-100 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-100 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-100:not(.has-background-gradient):before{ + opacity:1; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-0,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-0,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-0,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-0{ + opacity:0; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-10,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-10,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-10,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-10{ + opacity:.1; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-20,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-20,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-20,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-20{ + opacity:.2; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-30,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-30,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-30,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-30{ + opacity:.3; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-40,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-40,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-40,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-40{ + opacity:.4; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-50,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-50,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-50,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-50{ + opacity:.5; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-60,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-60,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-60,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-60{ + opacity:.6; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-70,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-70,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-70,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-70{ + opacity:.7; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-80,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-80,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-80,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-80{ + opacity:.8; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-90,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-90,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-90,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-90{ + opacity:.9; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-100,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-100,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-100,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-100{ + opacity:1; +} +.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.alignleft,.wp-block-cover.alignright{ + max-width:420px; + width:100%; +} +.wp-block-cover-image:after,.wp-block-cover:after{ + content:""; + display:block; + font-size:0; + min-height:inherit; +} +@supports (position:sticky){ + .wp-block-cover-image:after,.wp-block-cover:after{ + content:none; + } +} +.wp-block-cover-image.aligncenter,.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.aligncenter,.wp-block-cover.alignleft,.wp-block-cover.alignright{ + display:flex; +} +.wp-block-cover .wp-block-cover__inner-container,.wp-block-cover-image .wp-block-cover__inner-container{ + color:inherit; direction:rtl; + width:100%; + z-index:1; +} +.wp-block-cover h1:where(:not(.has-text-color)),.wp-block-cover h2:where(:not(.has-text-color)),.wp-block-cover h3:where(:not(.has-text-color)),.wp-block-cover h4:where(:not(.has-text-color)),.wp-block-cover h5:where(:not(.has-text-color)),.wp-block-cover h6:where(:not(.has-text-color)),.wp-block-cover p:where(:not(.has-text-color)),.wp-block-cover-image h1:where(:not(.has-text-color)),.wp-block-cover-image h2:where(:not(.has-text-color)),.wp-block-cover-image h3:where(:not(.has-text-color)),.wp-block-cover-image h4:where(:not(.has-text-color)),.wp-block-cover-image h5:where(:not(.has-text-color)),.wp-block-cover-image h6:where(:not(.has-text-color)),.wp-block-cover-image p:where(:not(.has-text-color)){ + color:inherit; +} +.wp-block-cover-image.is-position-top-left,.wp-block-cover.is-position-top-left{ + align-items:flex-start; + justify-content:flex-start; +} +.wp-block-cover-image.is-position-top-center,.wp-block-cover.is-position-top-center{ + align-items:flex-start; + justify-content:center; +} +.wp-block-cover-image.is-position-top-right,.wp-block-cover.is-position-top-right{ + align-items:flex-start; + justify-content:flex-end; +} +.wp-block-cover-image.is-position-center-left,.wp-block-cover.is-position-center-left{ + align-items:center; + justify-content:flex-start; +} +.wp-block-cover-image.is-position-center-center,.wp-block-cover.is-position-center-center{ + align-items:center; + justify-content:center; +} +.wp-block-cover-image.is-position-center-right,.wp-block-cover.is-position-center-right{ + align-items:center; + justify-content:flex-end; +} +.wp-block-cover-image.is-position-bottom-left,.wp-block-cover.is-position-bottom-left{ + align-items:flex-end; + justify-content:flex-start; +} +.wp-block-cover-image.is-position-bottom-center,.wp-block-cover.is-position-bottom-center{ + align-items:flex-end; + justify-content:center; +} +.wp-block-cover-image.is-position-bottom-right,.wp-block-cover.is-position-bottom-right{ + align-items:flex-end; + justify-content:flex-end; +} +.wp-block-cover-image.has-custom-content-position.has-custom-content-position .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position .wp-block-cover__inner-container{ + margin:0; +} +.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-bottom-left .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-bottom-right .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-center-left .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-center-right .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-top-left .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-top-right .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-bottom-left .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-bottom-right .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-center-left .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-center-right .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-top-left .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-top-right .wp-block-cover__inner-container{ + margin:0; + width:auto; +} +.wp-block-cover .wp-block-cover__image-background,.wp-block-cover video.wp-block-cover__video-background,.wp-block-cover-image .wp-block-cover__image-background,.wp-block-cover-image video.wp-block-cover__video-background{ + border:none; + bottom:0; + box-shadow:none; + height:100%; + left:0; + margin:0; + max-height:none; + max-width:none; + object-fit:cover; + outline:none; + padding:0; + position:absolute; + right:0; + top:0; + width:100%; +} + +.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax,.wp-block-cover__image-background.has-parallax,video.wp-block-cover__video-background.has-parallax{ + background-attachment:fixed; + background-repeat:no-repeat; + background-size:cover; +} +@supports (-webkit-touch-callout:inherit){ + .wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax,.wp-block-cover__image-background.has-parallax,video.wp-block-cover__video-background.has-parallax{ + background-attachment:scroll; + } +} +@media (prefers-reduced-motion:reduce){ + .wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax,.wp-block-cover__image-background.has-parallax,video.wp-block-cover__video-background.has-parallax{ + background-attachment:scroll; + } +} +.wp-block-cover-image.is-repeated,.wp-block-cover.is-repeated,.wp-block-cover__image-background.is-repeated,video.wp-block-cover__video-background.is-repeated{ + background-repeat:repeat; + background-size:auto; +} + +.wp-block-cover__image-background,.wp-block-cover__video-background{ + z-index:0; +} +.wp-block-cover-image-text,.wp-block-cover-image-text a,.wp-block-cover-image-text a:active,.wp-block-cover-image-text a:focus,.wp-block-cover-image-text a:hover,.wp-block-cover-text,.wp-block-cover-text a,.wp-block-cover-text a:active,.wp-block-cover-text a:focus,.wp-block-cover-text a:hover,section.wp-block-cover-image h2,section.wp-block-cover-image h2 a,section.wp-block-cover-image h2 a:active,section.wp-block-cover-image h2 a:focus,section.wp-block-cover-image h2 a:hover{ + color:#fff; +} + +.wp-block-cover-image .wp-block-cover.has-left-content{ + justify-content:flex-start; +} +.wp-block-cover-image .wp-block-cover.has-right-content{ + justify-content:flex-end; +} + +.wp-block-cover-image.has-left-content .wp-block-cover-image-text,.wp-block-cover.has-left-content .wp-block-cover-text,section.wp-block-cover-image.has-left-content>h2{ + margin-right:0; + text-align:right; +} + +.wp-block-cover-image.has-right-content .wp-block-cover-image-text,.wp-block-cover.has-right-content .wp-block-cover-text,section.wp-block-cover-image.has-right-content>h2{ + margin-left:0; + text-align:left; +} + +.wp-block-cover .wp-block-cover-text,.wp-block-cover-image .wp-block-cover-image-text,section.wp-block-cover-image>h2{ + font-size:2em; + line-height:1.25; + margin-bottom:0; + max-width:840px; + padding:.44em; + text-align:center; + z-index:1; +} + +:where(.wp-block-cover-image:not(.has-text-color)),:where(.wp-block-cover:not(.has-text-color)){ + color:#fff; +} + +:where(.wp-block-cover-image.is-light:not(.has-text-color)),:where(.wp-block-cover.is-light:not(.has-text-color)){ + color:#000; +}
\ No newline at end of file diff --git a/wp-includes/blocks/cover/style-rtl.min.css b/wp-includes/blocks/cover/style-rtl.min.css new file mode 100644 index 0000000..e7823ed --- /dev/null +++ b/wp-includes/blocks/cover/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-cover,.wp-block-cover-image{align-items:center;background-position:50%;box-sizing:border-box;direction:ltr;display:flex;justify-content:center;min-height:430px;overflow:hidden;overflow:clip;padding:1em;position:relative}.wp-block-cover .has-background-dim:not([class*=-background-color]),.wp-block-cover-image .has-background-dim:not([class*=-background-color]),.wp-block-cover-image.has-background-dim:not([class*=-background-color]),.wp-block-cover.has-background-dim:not([class*=-background-color]){background-color:#000}.wp-block-cover .has-background-dim.has-background-gradient,.wp-block-cover-image .has-background-dim.has-background-gradient{background-color:transparent}.wp-block-cover-image.has-background-dim:before,.wp-block-cover.has-background-dim:before{background-color:inherit;content:""}.wp-block-cover .wp-block-cover__background,.wp-block-cover .wp-block-cover__gradient-background,.wp-block-cover-image .wp-block-cover__background,.wp-block-cover-image .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim:not(.has-background-gradient):before,.wp-block-cover.has-background-dim:not(.has-background-gradient):before{bottom:0;left:0;opacity:.5;position:absolute;right:0;top:0;z-index:1}.wp-block-cover-image.has-background-dim.has-background-dim-10 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-10 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-10:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-10 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-10 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-10:not(.has-background-gradient):before{opacity:.1}.wp-block-cover-image.has-background-dim.has-background-dim-20 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-20 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-20:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-20 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-20 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-20:not(.has-background-gradient):before{opacity:.2}.wp-block-cover-image.has-background-dim.has-background-dim-30 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-30 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-30:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-30 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-30 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-30:not(.has-background-gradient):before{opacity:.3}.wp-block-cover-image.has-background-dim.has-background-dim-40 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-40 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-40:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-40 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-40 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-40:not(.has-background-gradient):before{opacity:.4}.wp-block-cover-image.has-background-dim.has-background-dim-50 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-50 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-50:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-50 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-50 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-50:not(.has-background-gradient):before{opacity:.5}.wp-block-cover-image.has-background-dim.has-background-dim-60 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-60 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-60:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-60 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-60 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-60:not(.has-background-gradient):before{opacity:.6}.wp-block-cover-image.has-background-dim.has-background-dim-70 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-70 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-70:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-70 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-70 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-70:not(.has-background-gradient):before{opacity:.7}.wp-block-cover-image.has-background-dim.has-background-dim-80 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-80 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-80:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-80 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-80 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-80:not(.has-background-gradient):before{opacity:.8}.wp-block-cover-image.has-background-dim.has-background-dim-90 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-90 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-90:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-90 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-90 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-90:not(.has-background-gradient):before{opacity:.9}.wp-block-cover-image.has-background-dim.has-background-dim-100 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-100 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-100:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-100 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-100 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-100:not(.has-background-gradient):before{opacity:1}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-0,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-0,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-0,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-0{opacity:0}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-10,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-10,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-10,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-10{opacity:.1}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-20,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-20,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-20,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-20{opacity:.2}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-30,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-30,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-30,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-30{opacity:.3}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-40,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-40,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-40,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-40{opacity:.4}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-50,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-50,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-50,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-50{opacity:.5}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-60,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-60,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-60,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-60{opacity:.6}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-70,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-70,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-70,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-70{opacity:.7}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-80,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-80,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-80,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-80{opacity:.8}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-90,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-90,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-90,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-90{opacity:.9}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-100,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-100,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-100,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-100{opacity:1}.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.alignleft,.wp-block-cover.alignright{max-width:420px;width:100%}.wp-block-cover-image:after,.wp-block-cover:after{content:"";display:block;font-size:0;min-height:inherit}@supports (position:sticky){.wp-block-cover-image:after,.wp-block-cover:after{content:none}}.wp-block-cover-image.aligncenter,.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.aligncenter,.wp-block-cover.alignleft,.wp-block-cover.alignright{display:flex}.wp-block-cover .wp-block-cover__inner-container,.wp-block-cover-image .wp-block-cover__inner-container{color:inherit;direction:rtl;width:100%;z-index:1}.wp-block-cover h1:where(:not(.has-text-color)),.wp-block-cover h2:where(:not(.has-text-color)),.wp-block-cover h3:where(:not(.has-text-color)),.wp-block-cover h4:where(:not(.has-text-color)),.wp-block-cover h5:where(:not(.has-text-color)),.wp-block-cover h6:where(:not(.has-text-color)),.wp-block-cover p:where(:not(.has-text-color)),.wp-block-cover-image h1:where(:not(.has-text-color)),.wp-block-cover-image h2:where(:not(.has-text-color)),.wp-block-cover-image h3:where(:not(.has-text-color)),.wp-block-cover-image h4:where(:not(.has-text-color)),.wp-block-cover-image h5:where(:not(.has-text-color)),.wp-block-cover-image h6:where(:not(.has-text-color)),.wp-block-cover-image p:where(:not(.has-text-color)){color:inherit}.wp-block-cover-image.is-position-top-left,.wp-block-cover.is-position-top-left{align-items:flex-start;justify-content:flex-start}.wp-block-cover-image.is-position-top-center,.wp-block-cover.is-position-top-center{align-items:flex-start;justify-content:center}.wp-block-cover-image.is-position-top-right,.wp-block-cover.is-position-top-right{align-items:flex-start;justify-content:flex-end}.wp-block-cover-image.is-position-center-left,.wp-block-cover.is-position-center-left{align-items:center;justify-content:flex-start}.wp-block-cover-image.is-position-center-center,.wp-block-cover.is-position-center-center{align-items:center;justify-content:center}.wp-block-cover-image.is-position-center-right,.wp-block-cover.is-position-center-right{align-items:center;justify-content:flex-end}.wp-block-cover-image.is-position-bottom-left,.wp-block-cover.is-position-bottom-left{align-items:flex-end;justify-content:flex-start}.wp-block-cover-image.is-position-bottom-center,.wp-block-cover.is-position-bottom-center{align-items:flex-end;justify-content:center}.wp-block-cover-image.is-position-bottom-right,.wp-block-cover.is-position-bottom-right{align-items:flex-end;justify-content:flex-end}.wp-block-cover-image.has-custom-content-position.has-custom-content-position .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position .wp-block-cover__inner-container{margin:0}.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-bottom-left .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-bottom-right .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-center-left .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-center-right .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-top-left .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-top-right .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-bottom-left .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-bottom-right .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-center-left .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-center-right .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-top-left .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-top-right .wp-block-cover__inner-container{margin:0;width:auto}.wp-block-cover .wp-block-cover__image-background,.wp-block-cover video.wp-block-cover__video-background,.wp-block-cover-image .wp-block-cover__image-background,.wp-block-cover-image video.wp-block-cover__video-background{border:none;bottom:0;box-shadow:none;height:100%;left:0;margin:0;max-height:none;max-width:none;object-fit:cover;outline:none;padding:0;position:absolute;right:0;top:0;width:100%}.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax,.wp-block-cover__image-background.has-parallax,video.wp-block-cover__video-background.has-parallax{background-attachment:fixed;background-repeat:no-repeat;background-size:cover}@supports (-webkit-touch-callout:inherit){.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax,.wp-block-cover__image-background.has-parallax,video.wp-block-cover__video-background.has-parallax{background-attachment:scroll}}@media (prefers-reduced-motion:reduce){.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax,.wp-block-cover__image-background.has-parallax,video.wp-block-cover__video-background.has-parallax{background-attachment:scroll}}.wp-block-cover-image.is-repeated,.wp-block-cover.is-repeated,.wp-block-cover__image-background.is-repeated,video.wp-block-cover__video-background.is-repeated{background-repeat:repeat;background-size:auto}.wp-block-cover__image-background,.wp-block-cover__video-background{z-index:0}.wp-block-cover-image-text,.wp-block-cover-image-text a,.wp-block-cover-image-text a:active,.wp-block-cover-image-text a:focus,.wp-block-cover-image-text a:hover,.wp-block-cover-text,.wp-block-cover-text a,.wp-block-cover-text a:active,.wp-block-cover-text a:focus,.wp-block-cover-text a:hover,section.wp-block-cover-image h2,section.wp-block-cover-image h2 a,section.wp-block-cover-image h2 a:active,section.wp-block-cover-image h2 a:focus,section.wp-block-cover-image h2 a:hover{color:#fff}.wp-block-cover-image .wp-block-cover.has-left-content{justify-content:flex-start}.wp-block-cover-image .wp-block-cover.has-right-content{justify-content:flex-end}.wp-block-cover-image.has-left-content .wp-block-cover-image-text,.wp-block-cover.has-left-content .wp-block-cover-text,section.wp-block-cover-image.has-left-content>h2{margin-right:0;text-align:right}.wp-block-cover-image.has-right-content .wp-block-cover-image-text,.wp-block-cover.has-right-content .wp-block-cover-text,section.wp-block-cover-image.has-right-content>h2{margin-left:0;text-align:left}.wp-block-cover .wp-block-cover-text,.wp-block-cover-image .wp-block-cover-image-text,section.wp-block-cover-image>h2{font-size:2em;line-height:1.25;margin-bottom:0;max-width:840px;padding:.44em;text-align:center;z-index:1}:where(.wp-block-cover-image:not(.has-text-color)),:where(.wp-block-cover:not(.has-text-color)){color:#fff}:where(.wp-block-cover-image.is-light:not(.has-text-color)),:where(.wp-block-cover.is-light:not(.has-text-color)){color:#000}
\ No newline at end of file diff --git a/wp-includes/blocks/cover/style.css b/wp-includes/blocks/cover/style.css new file mode 100644 index 0000000..79c70ae --- /dev/null +++ b/wp-includes/blocks/cover/style.css @@ -0,0 +1,242 @@ +.wp-block-cover,.wp-block-cover-image{ + align-items:center; + background-position:50%; + box-sizing:border-box; + display:flex; + justify-content:center; + min-height:430px; + overflow:hidden; + overflow:clip; + padding:1em; + position:relative; +} +.wp-block-cover .has-background-dim:not([class*=-background-color]),.wp-block-cover-image .has-background-dim:not([class*=-background-color]),.wp-block-cover-image.has-background-dim:not([class*=-background-color]),.wp-block-cover.has-background-dim:not([class*=-background-color]){ + background-color:#000; +} +.wp-block-cover .has-background-dim.has-background-gradient,.wp-block-cover-image .has-background-dim.has-background-gradient{ + background-color:transparent; +} +.wp-block-cover-image.has-background-dim:before,.wp-block-cover.has-background-dim:before{ + background-color:inherit; + content:""; +} +.wp-block-cover .wp-block-cover__background,.wp-block-cover .wp-block-cover__gradient-background,.wp-block-cover-image .wp-block-cover__background,.wp-block-cover-image .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim:not(.has-background-gradient):before,.wp-block-cover.has-background-dim:not(.has-background-gradient):before{ + bottom:0; + left:0; + opacity:.5; + position:absolute; + right:0; + top:0; + z-index:1; +} +.wp-block-cover-image.has-background-dim.has-background-dim-10 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-10 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-10:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-10 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-10 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-10:not(.has-background-gradient):before{ + opacity:.1; +} +.wp-block-cover-image.has-background-dim.has-background-dim-20 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-20 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-20:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-20 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-20 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-20:not(.has-background-gradient):before{ + opacity:.2; +} +.wp-block-cover-image.has-background-dim.has-background-dim-30 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-30 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-30:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-30 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-30 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-30:not(.has-background-gradient):before{ + opacity:.3; +} +.wp-block-cover-image.has-background-dim.has-background-dim-40 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-40 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-40:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-40 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-40 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-40:not(.has-background-gradient):before{ + opacity:.4; +} +.wp-block-cover-image.has-background-dim.has-background-dim-50 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-50 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-50:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-50 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-50 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-50:not(.has-background-gradient):before{ + opacity:.5; +} +.wp-block-cover-image.has-background-dim.has-background-dim-60 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-60 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-60:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-60 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-60 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-60:not(.has-background-gradient):before{ + opacity:.6; +} +.wp-block-cover-image.has-background-dim.has-background-dim-70 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-70 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-70:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-70 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-70 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-70:not(.has-background-gradient):before{ + opacity:.7; +} +.wp-block-cover-image.has-background-dim.has-background-dim-80 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-80 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-80:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-80 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-80 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-80:not(.has-background-gradient):before{ + opacity:.8; +} +.wp-block-cover-image.has-background-dim.has-background-dim-90 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-90 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-90:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-90 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-90 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-90:not(.has-background-gradient):before{ + opacity:.9; +} +.wp-block-cover-image.has-background-dim.has-background-dim-100 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-100 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-100:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-100 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-100 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-100:not(.has-background-gradient):before{ + opacity:1; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-0,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-0,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-0,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-0{ + opacity:0; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-10,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-10,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-10,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-10{ + opacity:.1; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-20,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-20,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-20,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-20{ + opacity:.2; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-30,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-30,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-30,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-30{ + opacity:.3; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-40,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-40,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-40,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-40{ + opacity:.4; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-50,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-50,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-50,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-50{ + opacity:.5; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-60,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-60,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-60,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-60{ + opacity:.6; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-70,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-70,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-70,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-70{ + opacity:.7; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-80,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-80,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-80,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-80{ + opacity:.8; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-90,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-90,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-90,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-90{ + opacity:.9; +} +.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-100,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-100,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-100,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-100{ + opacity:1; +} +.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.alignleft,.wp-block-cover.alignright{ + max-width:420px; + width:100%; +} +.wp-block-cover-image:after,.wp-block-cover:after{ + content:""; + display:block; + font-size:0; + min-height:inherit; +} +@supports (position:sticky){ + .wp-block-cover-image:after,.wp-block-cover:after{ + content:none; + } +} +.wp-block-cover-image.aligncenter,.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.aligncenter,.wp-block-cover.alignleft,.wp-block-cover.alignright{ + display:flex; +} +.wp-block-cover .wp-block-cover__inner-container,.wp-block-cover-image .wp-block-cover__inner-container{ + color:inherit; + width:100%; + z-index:1; +} +.wp-block-cover h1:where(:not(.has-text-color)),.wp-block-cover h2:where(:not(.has-text-color)),.wp-block-cover h3:where(:not(.has-text-color)),.wp-block-cover h4:where(:not(.has-text-color)),.wp-block-cover h5:where(:not(.has-text-color)),.wp-block-cover h6:where(:not(.has-text-color)),.wp-block-cover p:where(:not(.has-text-color)),.wp-block-cover-image h1:where(:not(.has-text-color)),.wp-block-cover-image h2:where(:not(.has-text-color)),.wp-block-cover-image h3:where(:not(.has-text-color)),.wp-block-cover-image h4:where(:not(.has-text-color)),.wp-block-cover-image h5:where(:not(.has-text-color)),.wp-block-cover-image h6:where(:not(.has-text-color)),.wp-block-cover-image p:where(:not(.has-text-color)){ + color:inherit; +} +.wp-block-cover-image.is-position-top-left,.wp-block-cover.is-position-top-left{ + align-items:flex-start; + justify-content:flex-start; +} +.wp-block-cover-image.is-position-top-center,.wp-block-cover.is-position-top-center{ + align-items:flex-start; + justify-content:center; +} +.wp-block-cover-image.is-position-top-right,.wp-block-cover.is-position-top-right{ + align-items:flex-start; + justify-content:flex-end; +} +.wp-block-cover-image.is-position-center-left,.wp-block-cover.is-position-center-left{ + align-items:center; + justify-content:flex-start; +} +.wp-block-cover-image.is-position-center-center,.wp-block-cover.is-position-center-center{ + align-items:center; + justify-content:center; +} +.wp-block-cover-image.is-position-center-right,.wp-block-cover.is-position-center-right{ + align-items:center; + justify-content:flex-end; +} +.wp-block-cover-image.is-position-bottom-left,.wp-block-cover.is-position-bottom-left{ + align-items:flex-end; + justify-content:flex-start; +} +.wp-block-cover-image.is-position-bottom-center,.wp-block-cover.is-position-bottom-center{ + align-items:flex-end; + justify-content:center; +} +.wp-block-cover-image.is-position-bottom-right,.wp-block-cover.is-position-bottom-right{ + align-items:flex-end; + justify-content:flex-end; +} +.wp-block-cover-image.has-custom-content-position.has-custom-content-position .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position .wp-block-cover__inner-container{ + margin:0; +} +.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-bottom-left .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-bottom-right .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-center-left .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-center-right .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-top-left .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-top-right .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-bottom-left .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-bottom-right .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-center-left .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-center-right .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-top-left .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-top-right .wp-block-cover__inner-container{ + margin:0; + width:auto; +} +.wp-block-cover .wp-block-cover__image-background,.wp-block-cover video.wp-block-cover__video-background,.wp-block-cover-image .wp-block-cover__image-background,.wp-block-cover-image video.wp-block-cover__video-background{ + border:none; + bottom:0; + box-shadow:none; + height:100%; + left:0; + margin:0; + max-height:none; + max-width:none; + object-fit:cover; + outline:none; + padding:0; + position:absolute; + right:0; + top:0; + width:100%; +} + +.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax,.wp-block-cover__image-background.has-parallax,video.wp-block-cover__video-background.has-parallax{ + background-attachment:fixed; + background-repeat:no-repeat; + background-size:cover; +} +@supports (-webkit-touch-callout:inherit){ + .wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax,.wp-block-cover__image-background.has-parallax,video.wp-block-cover__video-background.has-parallax{ + background-attachment:scroll; + } +} +@media (prefers-reduced-motion:reduce){ + .wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax,.wp-block-cover__image-background.has-parallax,video.wp-block-cover__video-background.has-parallax{ + background-attachment:scroll; + } +} +.wp-block-cover-image.is-repeated,.wp-block-cover.is-repeated,.wp-block-cover__image-background.is-repeated,video.wp-block-cover__video-background.is-repeated{ + background-repeat:repeat; + background-size:auto; +} + +.wp-block-cover__image-background,.wp-block-cover__video-background{ + z-index:0; +} +.wp-block-cover-image-text,.wp-block-cover-image-text a,.wp-block-cover-image-text a:active,.wp-block-cover-image-text a:focus,.wp-block-cover-image-text a:hover,.wp-block-cover-text,.wp-block-cover-text a,.wp-block-cover-text a:active,.wp-block-cover-text a:focus,.wp-block-cover-text a:hover,section.wp-block-cover-image h2,section.wp-block-cover-image h2 a,section.wp-block-cover-image h2 a:active,section.wp-block-cover-image h2 a:focus,section.wp-block-cover-image h2 a:hover{ + color:#fff; +} + +.wp-block-cover-image .wp-block-cover.has-left-content{ + justify-content:flex-start; +} +.wp-block-cover-image .wp-block-cover.has-right-content{ + justify-content:flex-end; +} + +.wp-block-cover-image.has-left-content .wp-block-cover-image-text,.wp-block-cover.has-left-content .wp-block-cover-text,section.wp-block-cover-image.has-left-content>h2{ + margin-left:0; + text-align:left; +} + +.wp-block-cover-image.has-right-content .wp-block-cover-image-text,.wp-block-cover.has-right-content .wp-block-cover-text,section.wp-block-cover-image.has-right-content>h2{ + margin-right:0; + text-align:right; +} + +.wp-block-cover .wp-block-cover-text,.wp-block-cover-image .wp-block-cover-image-text,section.wp-block-cover-image>h2{ + font-size:2em; + line-height:1.25; + margin-bottom:0; + max-width:840px; + padding:.44em; + text-align:center; + z-index:1; +} + +:where(.wp-block-cover-image:not(.has-text-color)),:where(.wp-block-cover:not(.has-text-color)){ + color:#fff; +} + +:where(.wp-block-cover-image.is-light:not(.has-text-color)),:where(.wp-block-cover.is-light:not(.has-text-color)){ + color:#000; +}
\ No newline at end of file diff --git a/wp-includes/blocks/cover/style.min.css b/wp-includes/blocks/cover/style.min.css new file mode 100644 index 0000000..3f00933 --- /dev/null +++ b/wp-includes/blocks/cover/style.min.css @@ -0,0 +1 @@ +.wp-block-cover,.wp-block-cover-image{align-items:center;background-position:50%;box-sizing:border-box;display:flex;justify-content:center;min-height:430px;overflow:hidden;overflow:clip;padding:1em;position:relative}.wp-block-cover .has-background-dim:not([class*=-background-color]),.wp-block-cover-image .has-background-dim:not([class*=-background-color]),.wp-block-cover-image.has-background-dim:not([class*=-background-color]),.wp-block-cover.has-background-dim:not([class*=-background-color]){background-color:#000}.wp-block-cover .has-background-dim.has-background-gradient,.wp-block-cover-image .has-background-dim.has-background-gradient{background-color:transparent}.wp-block-cover-image.has-background-dim:before,.wp-block-cover.has-background-dim:before{background-color:inherit;content:""}.wp-block-cover .wp-block-cover__background,.wp-block-cover .wp-block-cover__gradient-background,.wp-block-cover-image .wp-block-cover__background,.wp-block-cover-image .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim:not(.has-background-gradient):before,.wp-block-cover.has-background-dim:not(.has-background-gradient):before{bottom:0;left:0;opacity:.5;position:absolute;right:0;top:0;z-index:1}.wp-block-cover-image.has-background-dim.has-background-dim-10 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-10 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-10:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-10 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-10 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-10:not(.has-background-gradient):before{opacity:.1}.wp-block-cover-image.has-background-dim.has-background-dim-20 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-20 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-20:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-20 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-20 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-20:not(.has-background-gradient):before{opacity:.2}.wp-block-cover-image.has-background-dim.has-background-dim-30 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-30 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-30:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-30 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-30 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-30:not(.has-background-gradient):before{opacity:.3}.wp-block-cover-image.has-background-dim.has-background-dim-40 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-40 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-40:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-40 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-40 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-40:not(.has-background-gradient):before{opacity:.4}.wp-block-cover-image.has-background-dim.has-background-dim-50 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-50 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-50:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-50 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-50 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-50:not(.has-background-gradient):before{opacity:.5}.wp-block-cover-image.has-background-dim.has-background-dim-60 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-60 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-60:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-60 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-60 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-60:not(.has-background-gradient):before{opacity:.6}.wp-block-cover-image.has-background-dim.has-background-dim-70 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-70 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-70:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-70 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-70 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-70:not(.has-background-gradient):before{opacity:.7}.wp-block-cover-image.has-background-dim.has-background-dim-80 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-80 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-80:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-80 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-80 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-80:not(.has-background-gradient):before{opacity:.8}.wp-block-cover-image.has-background-dim.has-background-dim-90 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-90 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-90:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-90 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-90 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-90:not(.has-background-gradient):before{opacity:.9}.wp-block-cover-image.has-background-dim.has-background-dim-100 .wp-block-cover__background,.wp-block-cover-image.has-background-dim.has-background-dim-100 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-100:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-100 .wp-block-cover__background,.wp-block-cover.has-background-dim.has-background-dim-100 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-100:not(.has-background-gradient):before{opacity:1}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-0,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-0,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-0,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-0{opacity:0}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-10,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-10,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-10,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-10{opacity:.1}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-20,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-20,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-20,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-20{opacity:.2}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-30,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-30,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-30,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-30{opacity:.3}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-40,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-40,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-40,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-40{opacity:.4}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-50,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-50,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-50,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-50{opacity:.5}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-60,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-60,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-60,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-60{opacity:.6}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-70,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-70,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-70,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-70{opacity:.7}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-80,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-80,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-80,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-80{opacity:.8}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-90,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-90,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-90,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-90{opacity:.9}.wp-block-cover .wp-block-cover__background.has-background-dim.has-background-dim-100,.wp-block-cover .wp-block-cover__gradient-background.has-background-dim.has-background-dim-100,.wp-block-cover-image .wp-block-cover__background.has-background-dim.has-background-dim-100,.wp-block-cover-image .wp-block-cover__gradient-background.has-background-dim.has-background-dim-100{opacity:1}.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.alignleft,.wp-block-cover.alignright{max-width:420px;width:100%}.wp-block-cover-image:after,.wp-block-cover:after{content:"";display:block;font-size:0;min-height:inherit}@supports (position:sticky){.wp-block-cover-image:after,.wp-block-cover:after{content:none}}.wp-block-cover-image.aligncenter,.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.aligncenter,.wp-block-cover.alignleft,.wp-block-cover.alignright{display:flex}.wp-block-cover .wp-block-cover__inner-container,.wp-block-cover-image .wp-block-cover__inner-container{color:inherit;width:100%;z-index:1}.wp-block-cover h1:where(:not(.has-text-color)),.wp-block-cover h2:where(:not(.has-text-color)),.wp-block-cover h3:where(:not(.has-text-color)),.wp-block-cover h4:where(:not(.has-text-color)),.wp-block-cover h5:where(:not(.has-text-color)),.wp-block-cover h6:where(:not(.has-text-color)),.wp-block-cover p:where(:not(.has-text-color)),.wp-block-cover-image h1:where(:not(.has-text-color)),.wp-block-cover-image h2:where(:not(.has-text-color)),.wp-block-cover-image h3:where(:not(.has-text-color)),.wp-block-cover-image h4:where(:not(.has-text-color)),.wp-block-cover-image h5:where(:not(.has-text-color)),.wp-block-cover-image h6:where(:not(.has-text-color)),.wp-block-cover-image p:where(:not(.has-text-color)){color:inherit}.wp-block-cover-image.is-position-top-left,.wp-block-cover.is-position-top-left{align-items:flex-start;justify-content:flex-start}.wp-block-cover-image.is-position-top-center,.wp-block-cover.is-position-top-center{align-items:flex-start;justify-content:center}.wp-block-cover-image.is-position-top-right,.wp-block-cover.is-position-top-right{align-items:flex-start;justify-content:flex-end}.wp-block-cover-image.is-position-center-left,.wp-block-cover.is-position-center-left{align-items:center;justify-content:flex-start}.wp-block-cover-image.is-position-center-center,.wp-block-cover.is-position-center-center{align-items:center;justify-content:center}.wp-block-cover-image.is-position-center-right,.wp-block-cover.is-position-center-right{align-items:center;justify-content:flex-end}.wp-block-cover-image.is-position-bottom-left,.wp-block-cover.is-position-bottom-left{align-items:flex-end;justify-content:flex-start}.wp-block-cover-image.is-position-bottom-center,.wp-block-cover.is-position-bottom-center{align-items:flex-end;justify-content:center}.wp-block-cover-image.is-position-bottom-right,.wp-block-cover.is-position-bottom-right{align-items:flex-end;justify-content:flex-end}.wp-block-cover-image.has-custom-content-position.has-custom-content-position .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position .wp-block-cover__inner-container{margin:0}.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-bottom-left .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-bottom-right .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-center-left .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-center-right .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-top-left .wp-block-cover__inner-container,.wp-block-cover-image.has-custom-content-position.has-custom-content-position.is-position-top-right .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-bottom-left .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-bottom-right .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-center-left .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-center-right .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-top-left .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position.is-position-top-right .wp-block-cover__inner-container{margin:0;width:auto}.wp-block-cover .wp-block-cover__image-background,.wp-block-cover video.wp-block-cover__video-background,.wp-block-cover-image .wp-block-cover__image-background,.wp-block-cover-image video.wp-block-cover__video-background{border:none;bottom:0;box-shadow:none;height:100%;left:0;margin:0;max-height:none;max-width:none;object-fit:cover;outline:none;padding:0;position:absolute;right:0;top:0;width:100%}.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax,.wp-block-cover__image-background.has-parallax,video.wp-block-cover__video-background.has-parallax{background-attachment:fixed;background-repeat:no-repeat;background-size:cover}@supports (-webkit-touch-callout:inherit){.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax,.wp-block-cover__image-background.has-parallax,video.wp-block-cover__video-background.has-parallax{background-attachment:scroll}}@media (prefers-reduced-motion:reduce){.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax,.wp-block-cover__image-background.has-parallax,video.wp-block-cover__video-background.has-parallax{background-attachment:scroll}}.wp-block-cover-image.is-repeated,.wp-block-cover.is-repeated,.wp-block-cover__image-background.is-repeated,video.wp-block-cover__video-background.is-repeated{background-repeat:repeat;background-size:auto}.wp-block-cover__image-background,.wp-block-cover__video-background{z-index:0}.wp-block-cover-image-text,.wp-block-cover-image-text a,.wp-block-cover-image-text a:active,.wp-block-cover-image-text a:focus,.wp-block-cover-image-text a:hover,.wp-block-cover-text,.wp-block-cover-text a,.wp-block-cover-text a:active,.wp-block-cover-text a:focus,.wp-block-cover-text a:hover,section.wp-block-cover-image h2,section.wp-block-cover-image h2 a,section.wp-block-cover-image h2 a:active,section.wp-block-cover-image h2 a:focus,section.wp-block-cover-image h2 a:hover{color:#fff}.wp-block-cover-image .wp-block-cover.has-left-content{justify-content:flex-start}.wp-block-cover-image .wp-block-cover.has-right-content{justify-content:flex-end}.wp-block-cover-image.has-left-content .wp-block-cover-image-text,.wp-block-cover.has-left-content .wp-block-cover-text,section.wp-block-cover-image.has-left-content>h2{margin-left:0;text-align:left}.wp-block-cover-image.has-right-content .wp-block-cover-image-text,.wp-block-cover.has-right-content .wp-block-cover-text,section.wp-block-cover-image.has-right-content>h2{margin-right:0;text-align:right}.wp-block-cover .wp-block-cover-text,.wp-block-cover-image .wp-block-cover-image-text,section.wp-block-cover-image>h2{font-size:2em;line-height:1.25;margin-bottom:0;max-width:840px;padding:.44em;text-align:center;z-index:1}:where(.wp-block-cover-image:not(.has-text-color)),:where(.wp-block-cover:not(.has-text-color)){color:#fff}:where(.wp-block-cover-image.is-light:not(.has-text-color)),:where(.wp-block-cover.is-light:not(.has-text-color)){color:#000}
\ No newline at end of file diff --git a/wp-includes/blocks/details/block.json b/wp-includes/blocks/details/block.json new file mode 100644 index 0000000..d449d42 --- /dev/null +++ b/wp-includes/blocks/details/block.json @@ -0,0 +1,65 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/details", + "title": "Details", + "category": "text", + "description": "Hide and show additional content.", + "keywords": [ "accordion", "summary", "toggle", "disclosure" ], + "textdomain": "default", + "attributes": { + "showContent": { + "type": "boolean", + "default": false + }, + "summary": { + "type": "string", + "source": "html", + "selector": "summary" + } + }, + "supports": { + "align": [ "wide", "full" ], + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "__experimentalBorder": { + "color": true, + "width": true, + "style": true + }, + "html": false, + "spacing": { + "margin": true, + "padding": true, + "blockGap": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "layout": { + "allowEditing": false + } + }, + "editorStyle": "wp-block-details-editor", + "style": "wp-block-details" +} diff --git a/wp-includes/blocks/details/editor-rtl.css b/wp-includes/blocks/details/editor-rtl.css new file mode 100644 index 0000000..01ecaad --- /dev/null +++ b/wp-includes/blocks/details/editor-rtl.css @@ -0,0 +1,3 @@ +.wp-block-details summary div{ + display:inline; +}
\ No newline at end of file diff --git a/wp-includes/blocks/details/editor-rtl.min.css b/wp-includes/blocks/details/editor-rtl.min.css new file mode 100644 index 0000000..2a43fec --- /dev/null +++ b/wp-includes/blocks/details/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-details summary div{display:inline}
\ No newline at end of file diff --git a/wp-includes/blocks/details/editor.css b/wp-includes/blocks/details/editor.css new file mode 100644 index 0000000..01ecaad --- /dev/null +++ b/wp-includes/blocks/details/editor.css @@ -0,0 +1,3 @@ +.wp-block-details summary div{ + display:inline; +}
\ No newline at end of file diff --git a/wp-includes/blocks/details/editor.min.css b/wp-includes/blocks/details/editor.min.css new file mode 100644 index 0000000..2a43fec --- /dev/null +++ b/wp-includes/blocks/details/editor.min.css @@ -0,0 +1 @@ +.wp-block-details summary div{display:inline}
\ No newline at end of file diff --git a/wp-includes/blocks/details/style-rtl.css b/wp-includes/blocks/details/style-rtl.css new file mode 100644 index 0000000..4e36410 --- /dev/null +++ b/wp-includes/blocks/details/style-rtl.css @@ -0,0 +1,8 @@ +.wp-block-details{ + box-sizing:border-box; + overflow:hidden; +} + +.wp-block-details summary{ + cursor:pointer; +}
\ No newline at end of file diff --git a/wp-includes/blocks/details/style-rtl.min.css b/wp-includes/blocks/details/style-rtl.min.css new file mode 100644 index 0000000..dc382dc --- /dev/null +++ b/wp-includes/blocks/details/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-details{box-sizing:border-box;overflow:hidden}.wp-block-details summary{cursor:pointer}
\ No newline at end of file diff --git a/wp-includes/blocks/details/style.css b/wp-includes/blocks/details/style.css new file mode 100644 index 0000000..4e36410 --- /dev/null +++ b/wp-includes/blocks/details/style.css @@ -0,0 +1,8 @@ +.wp-block-details{ + box-sizing:border-box; + overflow:hidden; +} + +.wp-block-details summary{ + cursor:pointer; +}
\ No newline at end of file diff --git a/wp-includes/blocks/details/style.min.css b/wp-includes/blocks/details/style.min.css new file mode 100644 index 0000000..dc382dc --- /dev/null +++ b/wp-includes/blocks/details/style.min.css @@ -0,0 +1 @@ +.wp-block-details{box-sizing:border-box;overflow:hidden}.wp-block-details summary{cursor:pointer}
\ No newline at end of file diff --git a/wp-includes/blocks/embed/block.json b/wp-includes/blocks/embed/block.json new file mode 100644 index 0000000..9ca54db --- /dev/null +++ b/wp-includes/blocks/embed/block.json @@ -0,0 +1,51 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/embed", + "title": "Embed", + "category": "embed", + "description": "Add a block that displays content pulled from other sites, like Twitter or YouTube.", + "textdomain": "default", + "attributes": { + "url": { + "type": "string", + "__experimentalRole": "content" + }, + "caption": { + "type": "string", + "source": "html", + "selector": "figcaption", + "__experimentalRole": "content" + }, + "type": { + "type": "string", + "__experimentalRole": "content" + }, + "providerNameSlug": { + "type": "string", + "__experimentalRole": "content" + }, + "allowResponsive": { + "type": "boolean", + "default": true + }, + "responsive": { + "type": "boolean", + "default": false, + "__experimentalRole": "content" + }, + "previewable": { + "type": "boolean", + "default": true, + "__experimentalRole": "content" + } + }, + "supports": { + "align": true, + "spacing": { + "margin": true + } + }, + "editorStyle": "wp-block-embed-editor", + "style": "wp-block-embed" +} diff --git a/wp-includes/blocks/embed/editor-rtl.css b/wp-includes/blocks/embed/editor-rtl.css new file mode 100644 index 0000000..60a774d --- /dev/null +++ b/wp-includes/blocks/embed/editor-rtl.css @@ -0,0 +1,32 @@ +.wp-block-embed{ + clear:both; + margin-left:0; + margin-right:0; +} +.wp-block-embed.is-loading{ + display:flex; + justify-content:center; +} +.wp-block-embed .components-placeholder__error{ + word-break:break-word; +} +.wp-block-embed .components-placeholder__learn-more{ + margin-top:1em; +} + +.block-library-embed__interactive-overlay{ + bottom:0; + left:0; + opacity:0; + position:absolute; + right:0; + top:0; +} + +.wp-block[data-align=left]>.wp-block-embed,.wp-block[data-align=right]>.wp-block-embed{ + max-width:360px; + width:100%; +} +.wp-block[data-align=left]>.wp-block-embed .wp-block-embed__wrapper,.wp-block[data-align=right]>.wp-block-embed .wp-block-embed__wrapper{ + min-width:280px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/embed/editor-rtl.min.css b/wp-includes/blocks/embed/editor-rtl.min.css new file mode 100644 index 0000000..684be7d --- /dev/null +++ b/wp-includes/blocks/embed/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-embed{clear:both;margin-left:0;margin-right:0}.wp-block-embed.is-loading{display:flex;justify-content:center}.wp-block-embed .components-placeholder__error{word-break:break-word}.wp-block-embed .components-placeholder__learn-more{margin-top:1em}.block-library-embed__interactive-overlay{bottom:0;left:0;opacity:0;position:absolute;right:0;top:0}.wp-block[data-align=left]>.wp-block-embed,.wp-block[data-align=right]>.wp-block-embed{max-width:360px;width:100%}.wp-block[data-align=left]>.wp-block-embed .wp-block-embed__wrapper,.wp-block[data-align=right]>.wp-block-embed .wp-block-embed__wrapper{min-width:280px}
\ No newline at end of file diff --git a/wp-includes/blocks/embed/editor.css b/wp-includes/blocks/embed/editor.css new file mode 100644 index 0000000..60a774d --- /dev/null +++ b/wp-includes/blocks/embed/editor.css @@ -0,0 +1,32 @@ +.wp-block-embed{ + clear:both; + margin-left:0; + margin-right:0; +} +.wp-block-embed.is-loading{ + display:flex; + justify-content:center; +} +.wp-block-embed .components-placeholder__error{ + word-break:break-word; +} +.wp-block-embed .components-placeholder__learn-more{ + margin-top:1em; +} + +.block-library-embed__interactive-overlay{ + bottom:0; + left:0; + opacity:0; + position:absolute; + right:0; + top:0; +} + +.wp-block[data-align=left]>.wp-block-embed,.wp-block[data-align=right]>.wp-block-embed{ + max-width:360px; + width:100%; +} +.wp-block[data-align=left]>.wp-block-embed .wp-block-embed__wrapper,.wp-block[data-align=right]>.wp-block-embed .wp-block-embed__wrapper{ + min-width:280px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/embed/editor.min.css b/wp-includes/blocks/embed/editor.min.css new file mode 100644 index 0000000..684be7d --- /dev/null +++ b/wp-includes/blocks/embed/editor.min.css @@ -0,0 +1 @@ +.wp-block-embed{clear:both;margin-left:0;margin-right:0}.wp-block-embed.is-loading{display:flex;justify-content:center}.wp-block-embed .components-placeholder__error{word-break:break-word}.wp-block-embed .components-placeholder__learn-more{margin-top:1em}.block-library-embed__interactive-overlay{bottom:0;left:0;opacity:0;position:absolute;right:0;top:0}.wp-block[data-align=left]>.wp-block-embed,.wp-block[data-align=right]>.wp-block-embed{max-width:360px;width:100%}.wp-block[data-align=left]>.wp-block-embed .wp-block-embed__wrapper,.wp-block[data-align=right]>.wp-block-embed .wp-block-embed__wrapper{min-width:280px}
\ No newline at end of file diff --git a/wp-includes/blocks/embed/style-rtl.css b/wp-includes/blocks/embed/style-rtl.css new file mode 100644 index 0000000..65a1112 --- /dev/null +++ b/wp-includes/blocks/embed/style-rtl.css @@ -0,0 +1,64 @@ +.wp-block-embed.alignleft,.wp-block-embed.alignright,.wp-block[data-align=left]>[data-type="core/embed"],.wp-block[data-align=right]>[data-type="core/embed"]{ + max-width:360px; + width:100%; +} +.wp-block-embed.alignleft .wp-block-embed__wrapper,.wp-block-embed.alignright .wp-block-embed__wrapper,.wp-block[data-align=left]>[data-type="core/embed"] .wp-block-embed__wrapper,.wp-block[data-align=right]>[data-type="core/embed"] .wp-block-embed__wrapper{ + min-width:280px; +} + +.wp-block-cover .wp-block-embed{ + min-height:240px; + min-width:320px; +} + +.wp-block-embed{ + overflow-wrap:break-word; +} +.wp-block-embed figcaption{ + margin-bottom:1em; + margin-top:.5em; +} +.wp-block-embed iframe{ + max-width:100%; +} + +.wp-block-embed__wrapper{ + position:relative; +} + +.wp-embed-responsive .wp-has-aspect-ratio .wp-block-embed__wrapper:before{ + content:""; + display:block; + padding-top:50%; +} +.wp-embed-responsive .wp-has-aspect-ratio iframe{ + bottom:0; + height:100%; + left:0; + position:absolute; + right:0; + top:0; + width:100%; +} + +.wp-embed-responsive .wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{ + padding-top:42.85%; +} +.wp-embed-responsive .wp-embed-aspect-18-9 .wp-block-embed__wrapper:before{ + padding-top:50%; +} +.wp-embed-responsive .wp-embed-aspect-16-9 .wp-block-embed__wrapper:before{ + padding-top:56.25%; +} +.wp-embed-responsive .wp-embed-aspect-4-3 .wp-block-embed__wrapper:before{ + padding-top:75%; +} +.wp-embed-responsive .wp-embed-aspect-1-1 .wp-block-embed__wrapper:before{ + padding-top:100%; +} +.wp-embed-responsive .wp-embed-aspect-9-16 .wp-block-embed__wrapper:before{ + padding-top:177.77%; +} +.wp-embed-responsive .wp-embed-aspect-1-2 .wp-block-embed__wrapper:before{ + padding-top:200%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/embed/style-rtl.min.css b/wp-includes/blocks/embed/style-rtl.min.css new file mode 100644 index 0000000..e3dea7f --- /dev/null +++ b/wp-includes/blocks/embed/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-embed.alignleft,.wp-block-embed.alignright,.wp-block[data-align=left]>[data-type="core/embed"],.wp-block[data-align=right]>[data-type="core/embed"]{max-width:360px;width:100%}.wp-block-embed.alignleft .wp-block-embed__wrapper,.wp-block-embed.alignright .wp-block-embed__wrapper,.wp-block[data-align=left]>[data-type="core/embed"] .wp-block-embed__wrapper,.wp-block[data-align=right]>[data-type="core/embed"] .wp-block-embed__wrapper{min-width:280px}.wp-block-cover .wp-block-embed{min-height:240px;min-width:320px}.wp-block-embed{overflow-wrap:break-word}.wp-block-embed figcaption{margin-bottom:1em;margin-top:.5em}.wp-block-embed iframe{max-width:100%}.wp-block-embed__wrapper{position:relative}.wp-embed-responsive .wp-has-aspect-ratio .wp-block-embed__wrapper:before{content:"";display:block;padding-top:50%}.wp-embed-responsive .wp-has-aspect-ratio iframe{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.wp-embed-responsive .wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{padding-top:42.85%}.wp-embed-responsive .wp-embed-aspect-18-9 .wp-block-embed__wrapper:before{padding-top:50%}.wp-embed-responsive .wp-embed-aspect-16-9 .wp-block-embed__wrapper:before{padding-top:56.25%}.wp-embed-responsive .wp-embed-aspect-4-3 .wp-block-embed__wrapper:before{padding-top:75%}.wp-embed-responsive .wp-embed-aspect-1-1 .wp-block-embed__wrapper:before{padding-top:100%}.wp-embed-responsive .wp-embed-aspect-9-16 .wp-block-embed__wrapper:before{padding-top:177.77%}.wp-embed-responsive .wp-embed-aspect-1-2 .wp-block-embed__wrapper:before{padding-top:200%}
\ No newline at end of file diff --git a/wp-includes/blocks/embed/style.css b/wp-includes/blocks/embed/style.css new file mode 100644 index 0000000..65a1112 --- /dev/null +++ b/wp-includes/blocks/embed/style.css @@ -0,0 +1,64 @@ +.wp-block-embed.alignleft,.wp-block-embed.alignright,.wp-block[data-align=left]>[data-type="core/embed"],.wp-block[data-align=right]>[data-type="core/embed"]{ + max-width:360px; + width:100%; +} +.wp-block-embed.alignleft .wp-block-embed__wrapper,.wp-block-embed.alignright .wp-block-embed__wrapper,.wp-block[data-align=left]>[data-type="core/embed"] .wp-block-embed__wrapper,.wp-block[data-align=right]>[data-type="core/embed"] .wp-block-embed__wrapper{ + min-width:280px; +} + +.wp-block-cover .wp-block-embed{ + min-height:240px; + min-width:320px; +} + +.wp-block-embed{ + overflow-wrap:break-word; +} +.wp-block-embed figcaption{ + margin-bottom:1em; + margin-top:.5em; +} +.wp-block-embed iframe{ + max-width:100%; +} + +.wp-block-embed__wrapper{ + position:relative; +} + +.wp-embed-responsive .wp-has-aspect-ratio .wp-block-embed__wrapper:before{ + content:""; + display:block; + padding-top:50%; +} +.wp-embed-responsive .wp-has-aspect-ratio iframe{ + bottom:0; + height:100%; + left:0; + position:absolute; + right:0; + top:0; + width:100%; +} + +.wp-embed-responsive .wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{ + padding-top:42.85%; +} +.wp-embed-responsive .wp-embed-aspect-18-9 .wp-block-embed__wrapper:before{ + padding-top:50%; +} +.wp-embed-responsive .wp-embed-aspect-16-9 .wp-block-embed__wrapper:before{ + padding-top:56.25%; +} +.wp-embed-responsive .wp-embed-aspect-4-3 .wp-block-embed__wrapper:before{ + padding-top:75%; +} +.wp-embed-responsive .wp-embed-aspect-1-1 .wp-block-embed__wrapper:before{ + padding-top:100%; +} +.wp-embed-responsive .wp-embed-aspect-9-16 .wp-block-embed__wrapper:before{ + padding-top:177.77%; +} +.wp-embed-responsive .wp-embed-aspect-1-2 .wp-block-embed__wrapper:before{ + padding-top:200%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/embed/style.min.css b/wp-includes/blocks/embed/style.min.css new file mode 100644 index 0000000..e3dea7f --- /dev/null +++ b/wp-includes/blocks/embed/style.min.css @@ -0,0 +1 @@ +.wp-block-embed.alignleft,.wp-block-embed.alignright,.wp-block[data-align=left]>[data-type="core/embed"],.wp-block[data-align=right]>[data-type="core/embed"]{max-width:360px;width:100%}.wp-block-embed.alignleft .wp-block-embed__wrapper,.wp-block-embed.alignright .wp-block-embed__wrapper,.wp-block[data-align=left]>[data-type="core/embed"] .wp-block-embed__wrapper,.wp-block[data-align=right]>[data-type="core/embed"] .wp-block-embed__wrapper{min-width:280px}.wp-block-cover .wp-block-embed{min-height:240px;min-width:320px}.wp-block-embed{overflow-wrap:break-word}.wp-block-embed figcaption{margin-bottom:1em;margin-top:.5em}.wp-block-embed iframe{max-width:100%}.wp-block-embed__wrapper{position:relative}.wp-embed-responsive .wp-has-aspect-ratio .wp-block-embed__wrapper:before{content:"";display:block;padding-top:50%}.wp-embed-responsive .wp-has-aspect-ratio iframe{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.wp-embed-responsive .wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{padding-top:42.85%}.wp-embed-responsive .wp-embed-aspect-18-9 .wp-block-embed__wrapper:before{padding-top:50%}.wp-embed-responsive .wp-embed-aspect-16-9 .wp-block-embed__wrapper:before{padding-top:56.25%}.wp-embed-responsive .wp-embed-aspect-4-3 .wp-block-embed__wrapper:before{padding-top:75%}.wp-embed-responsive .wp-embed-aspect-1-1 .wp-block-embed__wrapper:before{padding-top:100%}.wp-embed-responsive .wp-embed-aspect-9-16 .wp-block-embed__wrapper:before{padding-top:177.77%}.wp-embed-responsive .wp-embed-aspect-1-2 .wp-block-embed__wrapper:before{padding-top:200%}
\ No newline at end of file diff --git a/wp-includes/blocks/embed/theme-rtl.css b/wp-includes/blocks/embed/theme-rtl.css new file mode 100644 index 0000000..a297d33 --- /dev/null +++ b/wp-includes/blocks/embed/theme-rtl.css @@ -0,0 +1,12 @@ +.wp-block-embed figcaption{ + color:#555; + font-size:13px; + text-align:center; +} +.is-dark-theme .wp-block-embed figcaption{ + color:hsla(0,0%,100%,.65); +} + +.wp-block-embed{ + margin:0 0 1em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/embed/theme-rtl.min.css b/wp-includes/blocks/embed/theme-rtl.min.css new file mode 100644 index 0000000..d1e9572 --- /dev/null +++ b/wp-includes/blocks/embed/theme-rtl.min.css @@ -0,0 +1 @@ +.wp-block-embed figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed figcaption{color:hsla(0,0%,100%,.65)}.wp-block-embed{margin:0 0 1em}
\ No newline at end of file diff --git a/wp-includes/blocks/embed/theme.css b/wp-includes/blocks/embed/theme.css new file mode 100644 index 0000000..a297d33 --- /dev/null +++ b/wp-includes/blocks/embed/theme.css @@ -0,0 +1,12 @@ +.wp-block-embed figcaption{ + color:#555; + font-size:13px; + text-align:center; +} +.is-dark-theme .wp-block-embed figcaption{ + color:hsla(0,0%,100%,.65); +} + +.wp-block-embed{ + margin:0 0 1em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/embed/theme.min.css b/wp-includes/blocks/embed/theme.min.css new file mode 100644 index 0000000..d1e9572 --- /dev/null +++ b/wp-includes/blocks/embed/theme.min.css @@ -0,0 +1 @@ +.wp-block-embed figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed figcaption{color:hsla(0,0%,100%,.65)}.wp-block-embed{margin:0 0 1em}
\ No newline at end of file diff --git a/wp-includes/blocks/file.php b/wp-includes/blocks/file.php new file mode 100644 index 0000000..042ea89 --- /dev/null +++ b/wp-includes/blocks/file.php @@ -0,0 +1,100 @@ +<?php +/** + * Server-side rendering of the `core/file` block. + * + * @package WordPress + */ + +/** + * When the `core/file` block is rendering, check if we need to enqueue the `wp-block-file-view` script. + * + * @param array $attributes The block attributes. + * @param string $content The block content. + * @param WP_Block $block The parsed block. + * + * @return string Returns the block content. + */ +function render_block_core_file( $attributes, $content, $block ) { + $should_load_view_script = ! empty( $attributes['displayPreview'] ); + $view_js_file = 'wp-block-file-view'; + // If the script already exists, there is no point in removing it from viewScript. + if ( ! wp_script_is( $view_js_file ) ) { + $script_handles = $block->block_type->view_script_handles; + + // If the script is not needed, and it is still in the `view_script_handles`, remove it. + if ( ! $should_load_view_script && in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); + } + // If the script is needed, but it was previously removed, add it again. + if ( $should_load_view_script && ! in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file ) ); + } + } + + // Update object's aria-label attribute if present in block HTML. + + // Match an aria-label attribute from an object tag. + $pattern = '@<object.+(?<attribute>aria-label="(?<filename>[^"]+)?")@i'; + $content = preg_replace_callback( + $pattern, + static function ( $matches ) { + $filename = ! empty( $matches['filename'] ) ? $matches['filename'] : ''; + $has_filename = ! empty( $filename ) && 'PDF embed' !== $filename; + $label = $has_filename ? + sprintf( + /* translators: %s: filename. */ + __( 'Embed of %s.' ), + $filename + ) + : __( 'PDF embed' ); + + return str_replace( $matches['attribute'], sprintf( 'aria-label="%s"', $label ), $matches[0] ); + }, + $content + ); + + // If it uses the Interactivity API, add the directives. + if ( $should_load_view_script ) { + $processor = new WP_HTML_Tag_Processor( $content ); + $processor->next_tag(); + $processor->set_attribute( 'data-wp-interactive', '' ); + $processor->next_tag( 'object' ); + $processor->set_attribute( 'data-wp-bind--hidden', '!selectors.core.file.hasPdfPreview' ); + $processor->set_attribute( 'hidden', true ); + return $processor->get_updated_html(); + } + + return $content; +} + +/** + * Ensure that the view script has the `wp-interactivity` dependency. + * + * @since 6.4.0 + * + * @global WP_Scripts $wp_scripts + */ +function block_core_file_ensure_interactivity_dependency() { + global $wp_scripts; + if ( + isset( $wp_scripts->registered['wp-block-file-view'] ) && + ! in_array( 'wp-interactivity', $wp_scripts->registered['wp-block-file-view']->deps, true ) + ) { + $wp_scripts->registered['wp-block-file-view']->deps[] = 'wp-interactivity'; + } +} + +add_action( 'wp_print_scripts', 'block_core_file_ensure_interactivity_dependency' ); + +/** + * Registers the `core/file` block on server. + */ +function register_block_core_file() { + register_block_type_from_metadata( + __DIR__ . '/file', + array( + 'render_callback' => 'render_block_core_file', + ) + ); +} +add_action( 'init', 'register_block_core_file' ); diff --git a/wp-includes/blocks/file/block.json b/wp-includes/blocks/file/block.json new file mode 100644 index 0000000..0cc20b3 --- /dev/null +++ b/wp-includes/blocks/file/block.json @@ -0,0 +1,78 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/file", + "title": "File", + "category": "media", + "description": "Add a link to a downloadable file.", + "keywords": [ "document", "pdf", "download" ], + "textdomain": "default", + "attributes": { + "id": { + "type": "number" + }, + "href": { + "type": "string" + }, + "fileId": { + "type": "string", + "source": "attribute", + "selector": "a:not([download])", + "attribute": "id" + }, + "fileName": { + "type": "string", + "source": "html", + "selector": "a:not([download])" + }, + "textLinkHref": { + "type": "string", + "source": "attribute", + "selector": "a:not([download])", + "attribute": "href" + }, + "textLinkTarget": { + "type": "string", + "source": "attribute", + "selector": "a:not([download])", + "attribute": "target" + }, + "showDownloadButton": { + "type": "boolean", + "default": true + }, + "downloadButtonText": { + "type": "string", + "source": "html", + "selector": "a[download]" + }, + "displayPreview": { + "type": "boolean" + }, + "previewHeight": { + "type": "number", + "default": 600 + } + }, + "supports": { + "anchor": true, + "align": true, + "spacing": { + "margin": true, + "padding": true + }, + "color": { + "gradients": true, + "link": true, + "text": false, + "__experimentalDefaultControls": { + "background": true, + "link": true + } + }, + "interactivity": true + }, + "viewScript": "file:./view.min.js", + "editorStyle": "wp-block-file-editor", + "style": "wp-block-file" +} diff --git a/wp-includes/blocks/file/editor-rtl.css b/wp-includes/blocks/file/editor-rtl.css new file mode 100644 index 0000000..a606f31 --- /dev/null +++ b/wp-includes/blocks/file/editor-rtl.css @@ -0,0 +1,38 @@ +.wp-block-file{ + align-items:center; + display:flex; + flex-wrap:wrap; + justify-content:space-between; + margin-bottom:0; +} +.wp-block[data-align=left]>.wp-block-file,.wp-block[data-align=right]>.wp-block-file{ + height:auto; +} +.wp-block-file .components-resizable-box__container{ + margin-bottom:1em; +} +.wp-block-file .wp-block-file__preview{ + height:100%; + margin-bottom:1em; + width:100%; +} +.wp-block-file .wp-block-file__preview-overlay{ + bottom:0; + left:0; + position:absolute; + right:0; + top:0; +} +.wp-block-file .wp-block-file__content-wrapper{ + flex-grow:1; +} +.wp-block-file a{ + min-width:1em; +} +.wp-block-file a:not(.wp-block-file__button){ + display:inline-block; +} +.wp-block-file .wp-block-file__button-richtext-wrapper{ + display:inline-block; + margin-right:.75em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/file/editor-rtl.min.css b/wp-includes/blocks/file/editor-rtl.min.css new file mode 100644 index 0000000..cd00681 --- /dev/null +++ b/wp-includes/blocks/file/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-file{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;margin-bottom:0}.wp-block[data-align=left]>.wp-block-file,.wp-block[data-align=right]>.wp-block-file{height:auto}.wp-block-file .components-resizable-box__container{margin-bottom:1em}.wp-block-file .wp-block-file__preview{height:100%;margin-bottom:1em;width:100%}.wp-block-file .wp-block-file__preview-overlay{bottom:0;left:0;position:absolute;right:0;top:0}.wp-block-file .wp-block-file__content-wrapper{flex-grow:1}.wp-block-file a{min-width:1em}.wp-block-file a:not(.wp-block-file__button){display:inline-block}.wp-block-file .wp-block-file__button-richtext-wrapper{display:inline-block;margin-right:.75em}
\ No newline at end of file diff --git a/wp-includes/blocks/file/editor.css b/wp-includes/blocks/file/editor.css new file mode 100644 index 0000000..94638c0 --- /dev/null +++ b/wp-includes/blocks/file/editor.css @@ -0,0 +1,38 @@ +.wp-block-file{ + align-items:center; + display:flex; + flex-wrap:wrap; + justify-content:space-between; + margin-bottom:0; +} +.wp-block[data-align=left]>.wp-block-file,.wp-block[data-align=right]>.wp-block-file{ + height:auto; +} +.wp-block-file .components-resizable-box__container{ + margin-bottom:1em; +} +.wp-block-file .wp-block-file__preview{ + height:100%; + margin-bottom:1em; + width:100%; +} +.wp-block-file .wp-block-file__preview-overlay{ + bottom:0; + left:0; + position:absolute; + right:0; + top:0; +} +.wp-block-file .wp-block-file__content-wrapper{ + flex-grow:1; +} +.wp-block-file a{ + min-width:1em; +} +.wp-block-file a:not(.wp-block-file__button){ + display:inline-block; +} +.wp-block-file .wp-block-file__button-richtext-wrapper{ + display:inline-block; + margin-left:.75em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/file/editor.min.css b/wp-includes/blocks/file/editor.min.css new file mode 100644 index 0000000..df5ac14 --- /dev/null +++ b/wp-includes/blocks/file/editor.min.css @@ -0,0 +1 @@ +.wp-block-file{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;margin-bottom:0}.wp-block[data-align=left]>.wp-block-file,.wp-block[data-align=right]>.wp-block-file{height:auto}.wp-block-file .components-resizable-box__container{margin-bottom:1em}.wp-block-file .wp-block-file__preview{height:100%;margin-bottom:1em;width:100%}.wp-block-file .wp-block-file__preview-overlay{bottom:0;left:0;position:absolute;right:0;top:0}.wp-block-file .wp-block-file__content-wrapper{flex-grow:1}.wp-block-file a{min-width:1em}.wp-block-file a:not(.wp-block-file__button){display:inline-block}.wp-block-file .wp-block-file__button-richtext-wrapper{display:inline-block;margin-left:.75em}
\ No newline at end of file diff --git a/wp-includes/blocks/file/style-rtl.css b/wp-includes/blocks/file/style-rtl.css new file mode 100644 index 0000000..6b23129 --- /dev/null +++ b/wp-includes/blocks/file/style-rtl.css @@ -0,0 +1,35 @@ +.wp-block-file{ + box-sizing:border-box; +} +.wp-block-file:not(.wp-element-button){ + font-size:.8em; +} +.wp-block-file.aligncenter{ + text-align:center; +} +.wp-block-file.alignright{ + text-align:right; +} +.wp-block-file *+.wp-block-file__button{ + margin-right:.75em; +} + +:where(.wp-block-file){ + margin-bottom:1.5em; +} + +.wp-block-file__embed{ + margin-bottom:1em; +} + +:where(.wp-block-file__button){ + border-radius:2em; + display:inline-block; + padding:.5em 1em; +} +:where(.wp-block-file__button):is(a):active,:where(.wp-block-file__button):is(a):focus,:where(.wp-block-file__button):is(a):hover,:where(.wp-block-file__button):is(a):visited{ + box-shadow:none; + color:#fff; + opacity:.85; + text-decoration:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/file/style-rtl.min.css b/wp-includes/blocks/file/style-rtl.min.css new file mode 100644 index 0000000..c2b5651 --- /dev/null +++ b/wp-includes/blocks/file/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-file{box-sizing:border-box}.wp-block-file:not(.wp-element-button){font-size:.8em}.wp-block-file.aligncenter{text-align:center}.wp-block-file.alignright{text-align:right}.wp-block-file *+.wp-block-file__button{margin-right:.75em}:where(.wp-block-file){margin-bottom:1.5em}.wp-block-file__embed{margin-bottom:1em}:where(.wp-block-file__button){border-radius:2em;display:inline-block;padding:.5em 1em}:where(.wp-block-file__button):is(a):active,:where(.wp-block-file__button):is(a):focus,:where(.wp-block-file__button):is(a):hover,:where(.wp-block-file__button):is(a):visited{box-shadow:none;color:#fff;opacity:.85;text-decoration:none}
\ No newline at end of file diff --git a/wp-includes/blocks/file/style.css b/wp-includes/blocks/file/style.css new file mode 100644 index 0000000..2a00211 --- /dev/null +++ b/wp-includes/blocks/file/style.css @@ -0,0 +1,35 @@ +.wp-block-file{ + box-sizing:border-box; +} +.wp-block-file:not(.wp-element-button){ + font-size:.8em; +} +.wp-block-file.aligncenter{ + text-align:center; +} +.wp-block-file.alignright{ + text-align:right; +} +.wp-block-file *+.wp-block-file__button{ + margin-left:.75em; +} + +:where(.wp-block-file){ + margin-bottom:1.5em; +} + +.wp-block-file__embed{ + margin-bottom:1em; +} + +:where(.wp-block-file__button){ + border-radius:2em; + display:inline-block; + padding:.5em 1em; +} +:where(.wp-block-file__button):is(a):active,:where(.wp-block-file__button):is(a):focus,:where(.wp-block-file__button):is(a):hover,:where(.wp-block-file__button):is(a):visited{ + box-shadow:none; + color:#fff; + opacity:.85; + text-decoration:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/file/style.min.css b/wp-includes/blocks/file/style.min.css new file mode 100644 index 0000000..aa2fe3d --- /dev/null +++ b/wp-includes/blocks/file/style.min.css @@ -0,0 +1 @@ +.wp-block-file{box-sizing:border-box}.wp-block-file:not(.wp-element-button){font-size:.8em}.wp-block-file.aligncenter{text-align:center}.wp-block-file.alignright{text-align:right}.wp-block-file *+.wp-block-file__button{margin-left:.75em}:where(.wp-block-file){margin-bottom:1.5em}.wp-block-file__embed{margin-bottom:1em}:where(.wp-block-file__button){border-radius:2em;display:inline-block;padding:.5em 1em}:where(.wp-block-file__button):is(a):active,:where(.wp-block-file__button):is(a):focus,:where(.wp-block-file__button):is(a):hover,:where(.wp-block-file__button):is(a):visited{box-shadow:none;color:#fff;opacity:.85;text-decoration:none}
\ No newline at end of file diff --git a/wp-includes/blocks/file/view.asset.php b/wp-includes/blocks/file/view.asset.php new file mode 100644 index 0000000..a9c9136 --- /dev/null +++ b/wp-includes/blocks/file/view.asset.php @@ -0,0 +1 @@ +<?php return array('dependencies' => array(), 'version' => '3fd0154de23a0ecc28af'); diff --git a/wp-includes/blocks/file/view.js b/wp-includes/blocks/file/view.js new file mode 100644 index 0000000..9d66df5 --- /dev/null +++ b/wp-includes/blocks/file/view.js @@ -0,0 +1,82 @@ +"use strict"; +(self["__WordPressPrivateInteractivityAPI__"] = self["__WordPressPrivateInteractivityAPI__"] || []).push([[81],{ + +/***/ 149: +/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) { + + +// EXTERNAL MODULE: ./node_modules/@wordpress/interactivity/src/index.js + 15 modules +var src = __webpack_require__(754); +;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/file/utils/index.js +/** + * Uses a combination of user agent matching and feature detection to determine whether + * the current browser supports rendering PDFs inline. + * + * @return {boolean} Whether or not the browser supports inline PDFs. + */ +const browserSupportsPdfs = () => { + // Most mobile devices include "Mobi" in their UA. + if (window.navigator.userAgent.indexOf('Mobi') > -1) { + return false; + } + + // Android tablets are the noteable exception. + if (window.navigator.userAgent.indexOf('Android') > -1) { + return false; + } + + // iPad pretends to be a Mac. + if (window.navigator.userAgent.indexOf('Macintosh') > -1 && window.navigator.maxTouchPoints && window.navigator.maxTouchPoints > 2) { + return false; + } + + // IE only supports PDFs when there's an ActiveX object available for it. + if (!!(window.ActiveXObject || 'ActiveXObject' in window) && !(createActiveXObject('AcroPDF.PDF') || createActiveXObject('PDF.PdfCtrl'))) { + return false; + } + return true; +}; + +/** + * Helper function for creating ActiveX objects, catching any errors that are thrown + * when it's generated. + * + * @param {string} type The name of the ActiveX object to create. + * @return {window.ActiveXObject|undefined} The generated ActiveXObject, or null if it failed. + */ +const createActiveXObject = type => { + let ax; + try { + ax = new window.ActiveXObject(type); + } catch (e) { + ax = undefined; + } + return ax; +}; +;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/file/view.js +/** + * WordPress dependencies + */ + +/** + * Internal dependencies + */ + +(0,src/* store */.h)({ + selectors: { + core: { + file: { + hasPdfPreview: browserSupportsPdfs + } + } + } +}); + +/***/ }) + +}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); } +/******/ var __webpack_exports__ = (__webpack_exec__(149)); +/******/ } +]);
\ No newline at end of file diff --git a/wp-includes/blocks/file/view.min.asset.php b/wp-includes/blocks/file/view.min.asset.php new file mode 100644 index 0000000..990e381 --- /dev/null +++ b/wp-includes/blocks/file/view.min.asset.php @@ -0,0 +1 @@ +<?php return array('dependencies' => array(), 'version' => '8a0237493a27c0d781aa'); diff --git a/wp-includes/blocks/file/view.min.js b/wp-includes/blocks/file/view.min.js new file mode 100644 index 0000000..8015cb7 --- /dev/null +++ b/wp-includes/blocks/file/view.min.js @@ -0,0 +1 @@ +"use strict";(self.__WordPressPrivateInteractivityAPI__=self.__WordPressPrivateInteractivityAPI__||[]).push([[81],{149:function(i,t,e){var n=e(754);const o=i=>{let t;try{t=new window.ActiveXObject(i)}catch(i){t=void 0}return t};(0,n.h)({selectors:{core:{file:{hasPdfPreview:()=>!(window.navigator.userAgent.indexOf("Mobi")>-1)&&(!(window.navigator.userAgent.indexOf("Android")>-1)&&(!(window.navigator.userAgent.indexOf("Macintosh")>-1&&window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>2)&&!((window.ActiveXObject||"ActiveXObject"in window)&&!o("AcroPDF.PDF")&&!o("PDF.PdfCtrl"))))}}}})}},function(i){var t;t=149,i(i.s=t)}]);
\ No newline at end of file diff --git a/wp-includes/blocks/footnotes.php b/wp-includes/blocks/footnotes.php new file mode 100644 index 0000000..bc6291d --- /dev/null +++ b/wp-includes/blocks/footnotes.php @@ -0,0 +1,120 @@ +<?php +/** + * Server-side rendering of the `core/footnotes` block. + * + * @package WordPress + */ + +/** + * Renders the `core/footnotes` block on the server. + * + * @since 6.3.0 + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * + * @return string Returns the HTML representing the footnotes. + */ +function render_block_core_footnotes( $attributes, $content, $block ) { + // Bail out early if the post ID is not set for some reason. + if ( empty( $block->context['postId'] ) ) { + return ''; + } + + if ( post_password_required( $block->context['postId'] ) ) { + return; + } + + $footnotes = get_post_meta( $block->context['postId'], 'footnotes', true ); + + if ( ! $footnotes ) { + return; + } + + $footnotes = json_decode( $footnotes, true ); + + if ( ! is_array( $footnotes ) || count( $footnotes ) === 0 ) { + return ''; + } + + $wrapper_attributes = get_block_wrapper_attributes(); + $footnote_index = 1; + + $block_content = ''; + + foreach ( $footnotes as $footnote ) { + // Translators: %d: Integer representing the number of return links on the page. + $aria_label = sprintf( __( 'Jump to footnote reference %1$d' ), $footnote_index ); + $block_content .= sprintf( + '<li id="%1$s">%2$s <a href="#%1$s-link" aria-label="%3$s">↩︎</a></li>', + $footnote['id'], + $footnote['content'], + $aria_label + ); + ++$footnote_index; + } + + return sprintf( + '<ol %1$s>%2$s</ol>', + $wrapper_attributes, + $block_content + ); +} + +/** + * Registers the `core/footnotes` block on the server. + * + * @since 6.3.0 + */ +function register_block_core_footnotes() { + foreach ( array( 'post', 'page' ) as $post_type ) { + register_post_meta( + $post_type, + 'footnotes', + array( + 'show_in_rest' => true, + 'single' => true, + 'type' => 'string', + 'revisions_enabled' => true, + ) + ); + } + register_block_type_from_metadata( + __DIR__ . '/footnotes', + array( + 'render_callback' => 'render_block_core_footnotes', + ) + ); +} +add_action( 'init', 'register_block_core_footnotes' ); + +/** + * Adds the footnotes field to the revisions display. + * + * @since 6.3.0 + * + * @param array $fields The revision fields. + * @return array The revision fields. + */ +function wp_add_footnotes_to_revision( $fields ) { + $fields['footnotes'] = __( 'Footnotes' ); + return $fields; +} +add_filter( '_wp_post_revision_fields', 'wp_add_footnotes_to_revision' ); + +/** + * Gets the footnotes field from the revision for the revisions screen. + * + * @since 6.3.0 + * + * @param string $revision_field The field value, but $revision->$field + * (footnotes) does not exist. + * @param string $field The field name, in this case "footnotes". + * @param object $revision The revision object to compare against. + * @return string The field value. + */ +function wp_get_footnotes_from_revision( $revision_field, $field, $revision ) { + return get_metadata( 'post', $revision->ID, $field, true ); +} +add_filter( '_wp_post_revision_field_footnotes', 'wp_get_footnotes_from_revision', 10, 3 ); diff --git a/wp-includes/blocks/footnotes/block.json b/wp-includes/blocks/footnotes/block.json new file mode 100644 index 0000000..28b094f --- /dev/null +++ b/wp-includes/blocks/footnotes/block.json @@ -0,0 +1,60 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/footnotes", + "title": "Footnotes", + "category": "text", + "description": "", + "keywords": [ "references" ], + "textdomain": "default", + "usesContext": [ "postId", "postType" ], + "supports": { + "__experimentalBorder": { + "radius": true, + "color": true, + "width": true, + "style": true, + "__experimentalDefaultControls": { + "radius": false, + "color": false, + "width": false, + "style": false + } + }, + "color": { + "background": true, + "link": true, + "text": true, + "__experimentalDefaultControls": { + "link": true, + "text": true + } + }, + "html": false, + "multiple": false, + "reusable": false, + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalTextDecoration": true, + "__experimentalFontStyle": true, + "__experimentalFontWeight": true, + "__experimentalLetterSpacing": true, + "__experimentalTextTransform": true, + "__experimentalWritingMode": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "style": "wp-block-footnotes" +} diff --git a/wp-includes/blocks/footnotes/style-rtl.css b/wp-includes/blocks/footnotes/style-rtl.css new file mode 100644 index 0000000..bfec43f --- /dev/null +++ b/wp-includes/blocks/footnotes/style-rtl.css @@ -0,0 +1,18 @@ +.editor-styles-wrapper,.entry-content{ + counter-reset:footnotes; +} + +a[data-fn].fn{ + counter-increment:footnotes; + display:inline-flex; + font-size:smaller; + text-decoration:none; + text-indent:-9999999px; + vertical-align:super; +} + +a[data-fn].fn:after{ + content:"[" counter(footnotes) "]"; + float:right; + text-indent:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/footnotes/style-rtl.min.css b/wp-includes/blocks/footnotes/style-rtl.min.css new file mode 100644 index 0000000..3d62c34 --- /dev/null +++ b/wp-includes/blocks/footnotes/style-rtl.min.css @@ -0,0 +1 @@ +.editor-styles-wrapper,.entry-content{counter-reset:footnotes}a[data-fn].fn{counter-increment:footnotes;display:inline-flex;font-size:smaller;text-decoration:none;text-indent:-9999999px;vertical-align:super}a[data-fn].fn:after{content:"[" counter(footnotes) "]";float:right;text-indent:0}
\ No newline at end of file diff --git a/wp-includes/blocks/footnotes/style.css b/wp-includes/blocks/footnotes/style.css new file mode 100644 index 0000000..acdeafd --- /dev/null +++ b/wp-includes/blocks/footnotes/style.css @@ -0,0 +1,18 @@ +.editor-styles-wrapper,.entry-content{ + counter-reset:footnotes; +} + +a[data-fn].fn{ + counter-increment:footnotes; + display:inline-flex; + font-size:smaller; + text-decoration:none; + text-indent:-9999999px; + vertical-align:super; +} + +a[data-fn].fn:after{ + content:"[" counter(footnotes) "]"; + float:left; + text-indent:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/footnotes/style.min.css b/wp-includes/blocks/footnotes/style.min.css new file mode 100644 index 0000000..28f6084 --- /dev/null +++ b/wp-includes/blocks/footnotes/style.min.css @@ -0,0 +1 @@ +.editor-styles-wrapper,.entry-content{counter-reset:footnotes}a[data-fn].fn{counter-increment:footnotes;display:inline-flex;font-size:smaller;text-decoration:none;text-indent:-9999999px;vertical-align:super}a[data-fn].fn:after{content:"[" counter(footnotes) "]";float:left;text-indent:0}
\ No newline at end of file diff --git a/wp-includes/blocks/freeform/block.json b/wp-includes/blocks/freeform/block.json new file mode 100644 index 0000000..d40e8ea --- /dev/null +++ b/wp-includes/blocks/freeform/block.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/freeform", + "title": "Classic", + "category": "text", + "description": "Use the classic WordPress editor.", + "textdomain": "default", + "attributes": { + "content": { + "type": "string", + "source": "raw" + } + }, + "supports": { + "className": false, + "customClassName": false, + "reusable": false + }, + "editorStyle": "wp-block-freeform-editor" +} diff --git a/wp-includes/blocks/freeform/editor-rtl.css b/wp-includes/blocks/freeform/editor-rtl.css new file mode 100644 index 0000000..80222ec --- /dev/null +++ b/wp-includes/blocks/freeform/editor-rtl.css @@ -0,0 +1,335 @@ +.wp-block-freeform.block-library-rich-text__tinymce{ + height:auto; +} +.wp-block-freeform.block-library-rich-text__tinymce li,.wp-block-freeform.block-library-rich-text__tinymce p{ + line-height:1.8; +} +.wp-block-freeform.block-library-rich-text__tinymce ol,.wp-block-freeform.block-library-rich-text__tinymce ul{ + margin-right:0; + padding-right:2.5em; +} +.wp-block-freeform.block-library-rich-text__tinymce blockquote{ + border-right:4px solid #000; + box-shadow:inset 0 0 0 0 #ddd; + margin:0; + padding-right:1em; +} +.wp-block-freeform.block-library-rich-text__tinymce pre{ + color:#1e1e1e; + font-family:Menlo,Consolas,monaco,monospace; + font-size:15px; + white-space:pre-wrap; +} +.wp-block-freeform.block-library-rich-text__tinymce>:first-child{ + margin-top:0; +} +.wp-block-freeform.block-library-rich-text__tinymce>:last-child{ + margin-bottom:0; +} +.wp-block-freeform.block-library-rich-text__tinymce.mce-edit-focus{ + outline:none; +} +.wp-block-freeform.block-library-rich-text__tinymce a{ + color:var(--wp-admin-theme-color); +} +.wp-block-freeform.block-library-rich-text__tinymce:focus a[data-mce-selected]{ + background:#e5f5fa; + border-radius:2px; + box-shadow:0 0 0 1px #e5f5fa; + margin:0 -2px; + padding:0 2px; +} +.wp-block-freeform.block-library-rich-text__tinymce code{ + background:#f0f0f0; + border-radius:2px; + color:#1e1e1e; + font-family:Menlo,Consolas,monaco,monospace; + font-size:14px; + padding:2px; +} +.wp-block-freeform.block-library-rich-text__tinymce:focus code[data-mce-selected]{ + background:#ddd; +} +.wp-block-freeform.block-library-rich-text__tinymce .alignright{ + float:right; + margin:.5em 0 .5em 1em; +} +.wp-block-freeform.block-library-rich-text__tinymce .alignleft{ + float:left; + margin:.5em 1em .5em 0; +} +.wp-block-freeform.block-library-rich-text__tinymce .aligncenter{ + display:block; + margin-left:auto; + margin-right:auto; +} +.wp-block-freeform.block-library-rich-text__tinymce .wp-more-tag{ + background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAADtgAAAAoBAMAAAA86gLBAAAAJFBMVEVMaXG7u7vBwcHDw8POzs68vLzGxsbMzMy+vr7AwMDQ0NDGxsYKLGzpAAAADHRSTlMA///zWf+/f///TMxNVGuqAAABwklEQVR4Ae3dMXLaQBTH4bfj8UCpx8hq0vgKvgFNemhT6Qo6gg6R+0ZahM2QLmyBJ99XWP9V5+o3jIUcLQEAAAAAAAAAAAAAAAAAAAAAAABQ8j0WL9lfTtlt18uNXAUA8O/KVtfa1tdcrOdSh9gCQAMlh1hMNbZZ1bsrsQWABsrhLRbz7z5in/32UbfUMUbkMQCAh5RfGYv82UdMdZ6HS2wjT2ILAI8r3XmM2B3WvM59vfO2xXYW2yYAENuPU8S+X/N67mKxzy225yaxBQCxLV392UdcvwV0jPVUj98ntkBWT7C7+9u2/V/vGtvXIWJ6/4rtbottWa6Ri0NUT/u72LYttrb97LHdvUXMxxrb8TO2W2TF1rYbbLG1bbGNjMi4+2Sbi1FsbbvNFlvbFtt5fDnE3d9sP1/XeIyV2Nr2U2/guZUuptNrH/dPI9eLB6SaAEBs6wPJf3/PNk9tYgsAYrv/8TFuzx/fvkFqGtrEFgDEdpcZUb7ejXy6ntrEFgDENvL6gsas4vbdyKt4DACI7TxElJv/Z7udpqFNbAFAbKduy2uU2trttM/x28UWAAAAAAAAAAAAAAAAAAAAAAAAAADgDyPwGmGTCZp7AAAAAElFTkSuQmCC); + background-position:50%; + background-repeat:no-repeat; + background-size:1900px 20px; + cursor:default; + display:block; + height:20px; + margin:15px auto; + outline:0; + width:96%; +} +.wp-block-freeform.block-library-rich-text__tinymce img::selection{ + background-color:transparent; +} +.wp-block-freeform.block-library-rich-text__tinymce div.mceTemp{ + -ms-user-select:element; +} +.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption{ + margin:0; + max-width:100%; +} +.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption a,.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption img{ + display:block; +} +.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption,.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption *{ + -webkit-user-drag:none; +} +.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption .wp-caption-dd{ + margin:0; + padding-top:.5em; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview{ + border:1px solid transparent; + clear:both; + margin-bottom:16px; + position:relative; + width:99.99%; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview iframe{ + background:transparent; + display:block; + max-width:100%; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview .mce-shim{ + bottom:0; + left:0; + position:absolute; + right:0; + top:0; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview[data-mce-selected="2"] .mce-shim{ + display:none; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview .loading-placeholder{ + border:1px dashed #ddd; + padding:10px; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview .wpview-error{ + word-wrap:break-word; + border:1px solid #ddd; + margin:0; + padding:1em 0; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview .wpview-error p{ + margin:0; + text-align:center; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview[data-mce-selected] .loading-placeholder,.wp-block-freeform.block-library-rich-text__tinymce .wpview[data-mce-selected] .wpview-error{ + border-color:transparent; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview .dashicons{ + display:block; + font-size:32px; + height:32px; + margin:0 auto; + width:32px; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview.wpview-type-gallery:after{ + clear:both; + content:""; + display:table; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery img[data-mce-selected]:focus{ + outline:none; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery a{ + cursor:default; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery{ + line-height:1; + margin:auto -6px; + overflow-x:hidden; + padding:6px 0; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-item{ + box-sizing:border-box; + float:right; + margin:0; + padding:6px; + text-align:center; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-caption,.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-icon{ + margin:0; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-caption{ + font-size:13px; + margin:4px 0; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-1 .gallery-item{ + width:100%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-2 .gallery-item{ + width:50%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-3 .gallery-item{ + width:33.3333333333%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-4 .gallery-item{ + width:25%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-5 .gallery-item{ + width:20%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-6 .gallery-item{ + width:16.6666666667%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-7 .gallery-item{ + width:14.2857142857%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-8 .gallery-item{ + width:12.5%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-9 .gallery-item{ + width:11.1111111111%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery img{ + border:none; + height:auto; + max-width:100%; + padding:0; +} + +div[data-type="core/freeform"]:before{ + border:1px solid #ddd; + outline:1px solid transparent; + transition:border-color .1s linear,box-shadow .1s linear; +} +@media (prefers-reduced-motion:reduce){ + div[data-type="core/freeform"]:before{ + transition-delay:0s; + transition-duration:0s; + } +} +div[data-type="core/freeform"].is-selected:before{ + border-color:#1e1e1e; +} +div[data-type="core/freeform"] .block-editor-block-contextual-toolbar+div{ + margin-top:0; + padding-top:0; +} +div[data-type="core/freeform"].is-selected .block-library-rich-text__tinymce:after{ + clear:both; + content:""; + display:table; +} + +.mce-toolbar-grp .mce-btn.mce-active button,.mce-toolbar-grp .mce-btn.mce-active i,.mce-toolbar-grp .mce-btn.mce-active:hover button,.mce-toolbar-grp .mce-btn.mce-active:hover i{ + color:#1e1e1e; +} +.mce-toolbar-grp .mce-rtl .mce-flow-layout-item.mce-last{ + margin-left:0; + margin-right:8px; +} +.mce-toolbar-grp .mce-btn i{ + font-style:normal; +} + +.block-library-classic__toolbar{ + border:1px solid #ddd; + border-bottom:none; + border-radius:2px; + display:none; + margin:0 0 8px; + padding:0; + position:sticky; + top:0; + width:auto; + z-index:31; +} +div[data-type="core/freeform"].is-selected .block-library-classic__toolbar{ + border-color:#1e1e1e; + display:block; +} +.block-library-classic__toolbar .mce-tinymce{ + box-shadow:none; +} +@media (min-width:600px){ + .block-library-classic__toolbar{ + padding:0; + } +} +.block-library-classic__toolbar:empty{ + background:#f5f5f5; + border-bottom:1px solid #e2e4e7; + display:block; +} +.block-library-classic__toolbar:empty:before{ + color:#555d66; + content:attr(data-placeholder); + font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; + font-size:13px; + line-height:37px; + padding:14px; +} +.block-library-classic__toolbar div.mce-toolbar-grp{ + border-bottom:1px solid #1e1e1e; +} +.block-library-classic__toolbar .mce-menubar,.block-library-classic__toolbar .mce-menubar>div,.block-library-classic__toolbar .mce-tinymce-inline,.block-library-classic__toolbar .mce-tinymce-inline>div,.block-library-classic__toolbar div.mce-toolbar-grp,.block-library-classic__toolbar div.mce-toolbar-grp>div{ + height:auto !important; + width:100% !important; +} +.block-library-classic__toolbar .mce-container-body.mce-abs-layout{ + overflow:visible; +} +.block-library-classic__toolbar .mce-menubar,.block-library-classic__toolbar div.mce-toolbar-grp{ + position:static; +} +.block-library-classic__toolbar .mce-toolbar-grp>div{ + padding:1px 3px; +} +.block-library-classic__toolbar .mce-toolbar-grp .mce-toolbar:not(:first-child){ + display:none; +} +.block-library-classic__toolbar.has-advanced-toolbar .mce-toolbar-grp .mce-toolbar{ + display:block; +} + +.block-editor-freeform-modal .block-editor-freeform-modal__content .mce-edit-area iframe{ + height:50vh !important; +} +@media (min-width:960px){ + .block-editor-freeform-modal .block-editor-freeform-modal__content:not(.is-full-screen){ + height:9999rem; + } + .block-editor-freeform-modal .block-editor-freeform-modal__content .components-modal__header+div{ + height:100%; + } + .block-editor-freeform-modal .block-editor-freeform-modal__content .mce-tinymce{ + height:calc(100% - 52px); + } + .block-editor-freeform-modal .block-editor-freeform-modal__content .mce-container-body{ + display:flex; + flex-direction:column; + height:100%; + min-width:50vw; + } + .block-editor-freeform-modal .block-editor-freeform-modal__content .mce-edit-area{ + display:flex; + flex-direction:column; + flex-grow:1; + } + .block-editor-freeform-modal .block-editor-freeform-modal__content .mce-edit-area iframe{ + flex-grow:1; + height:10px !important; + } +} +.block-editor-freeform-modal__actions{ + margin-top:16px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/freeform/editor-rtl.min.css b/wp-includes/blocks/freeform/editor-rtl.min.css new file mode 100644 index 0000000..c2661d4 --- /dev/null +++ b/wp-includes/blocks/freeform/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-freeform.block-library-rich-text__tinymce{height:auto}.wp-block-freeform.block-library-rich-text__tinymce li,.wp-block-freeform.block-library-rich-text__tinymce p{line-height:1.8}.wp-block-freeform.block-library-rich-text__tinymce ol,.wp-block-freeform.block-library-rich-text__tinymce ul{margin-right:0;padding-right:2.5em}.wp-block-freeform.block-library-rich-text__tinymce blockquote{border-right:4px solid #000;box-shadow:inset 0 0 0 0 #ddd;margin:0;padding-right:1em}.wp-block-freeform.block-library-rich-text__tinymce pre{color:#1e1e1e;font-family:Menlo,Consolas,monaco,monospace;font-size:15px;white-space:pre-wrap}.wp-block-freeform.block-library-rich-text__tinymce>:first-child{margin-top:0}.wp-block-freeform.block-library-rich-text__tinymce>:last-child{margin-bottom:0}.wp-block-freeform.block-library-rich-text__tinymce.mce-edit-focus{outline:none}.wp-block-freeform.block-library-rich-text__tinymce a{color:var(--wp-admin-theme-color)}.wp-block-freeform.block-library-rich-text__tinymce:focus a[data-mce-selected]{background:#e5f5fa;border-radius:2px;box-shadow:0 0 0 1px #e5f5fa;margin:0 -2px;padding:0 2px}.wp-block-freeform.block-library-rich-text__tinymce code{background:#f0f0f0;border-radius:2px;color:#1e1e1e;font-family:Menlo,Consolas,monaco,monospace;font-size:14px;padding:2px}.wp-block-freeform.block-library-rich-text__tinymce:focus code[data-mce-selected]{background:#ddd}.wp-block-freeform.block-library-rich-text__tinymce .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-freeform.block-library-rich-text__tinymce .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-freeform.block-library-rich-text__tinymce .aligncenter{display:block;margin-left:auto;margin-right:auto}.wp-block-freeform.block-library-rich-text__tinymce .wp-more-tag{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAADtgAAAAoBAMAAAA86gLBAAAAJFBMVEVMaXG7u7vBwcHDw8POzs68vLzGxsbMzMy+vr7AwMDQ0NDGxsYKLGzpAAAADHRSTlMA///zWf+/f///TMxNVGuqAAABwklEQVR4Ae3dMXLaQBTH4bfj8UCpx8hq0vgKvgFNemhT6Qo6gg6R+0ZahM2QLmyBJ99XWP9V5+o3jIUcLQEAAAAAAAAAAAAAAAAAAAAAAABQ8j0WL9lfTtlt18uNXAUA8O/KVtfa1tdcrOdSh9gCQAMlh1hMNbZZ1bsrsQWABsrhLRbz7z5in/32UbfUMUbkMQCAh5RfGYv82UdMdZ6HS2wjT2ILAI8r3XmM2B3WvM59vfO2xXYW2yYAENuPU8S+X/N67mKxzy225yaxBQCxLV392UdcvwV0jPVUj98ntkBWT7C7+9u2/V/vGtvXIWJ6/4rtbottWa6Ri0NUT/u72LYttrb97LHdvUXMxxrb8TO2W2TF1rYbbLG1bbGNjMi4+2Sbi1FsbbvNFlvbFtt5fDnE3d9sP1/XeIyV2Nr2U2/guZUuptNrH/dPI9eLB6SaAEBs6wPJf3/PNk9tYgsAYrv/8TFuzx/fvkFqGtrEFgDEdpcZUb7ejXy6ntrEFgDENvL6gsas4vbdyKt4DACI7TxElJv/Z7udpqFNbAFAbKduy2uU2trttM/x28UWAAAAAAAAAAAAAAAAAAAAAAAAAADgDyPwGmGTCZp7AAAAAElFTkSuQmCC);background-position:50%;background-repeat:no-repeat;background-size:1900px 20px;cursor:default;display:block;height:20px;margin:15px auto;outline:0;width:96%}.wp-block-freeform.block-library-rich-text__tinymce img::selection{background-color:transparent}.wp-block-freeform.block-library-rich-text__tinymce div.mceTemp{-ms-user-select:element}.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption{margin:0;max-width:100%}.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption a,.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption img{display:block}.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption,.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption *{-webkit-user-drag:none}.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption .wp-caption-dd{margin:0;padding-top:.5em}.wp-block-freeform.block-library-rich-text__tinymce .wpview{border:1px solid transparent;clear:both;margin-bottom:16px;position:relative;width:99.99%}.wp-block-freeform.block-library-rich-text__tinymce .wpview iframe{background:transparent;display:block;max-width:100%}.wp-block-freeform.block-library-rich-text__tinymce .wpview .mce-shim{bottom:0;left:0;position:absolute;right:0;top:0}.wp-block-freeform.block-library-rich-text__tinymce .wpview[data-mce-selected="2"] .mce-shim{display:none}.wp-block-freeform.block-library-rich-text__tinymce .wpview .loading-placeholder{border:1px dashed #ddd;padding:10px}.wp-block-freeform.block-library-rich-text__tinymce .wpview .wpview-error{word-wrap:break-word;border:1px solid #ddd;margin:0;padding:1em 0}.wp-block-freeform.block-library-rich-text__tinymce .wpview .wpview-error p{margin:0;text-align:center}.wp-block-freeform.block-library-rich-text__tinymce .wpview[data-mce-selected] .loading-placeholder,.wp-block-freeform.block-library-rich-text__tinymce .wpview[data-mce-selected] .wpview-error{border-color:transparent}.wp-block-freeform.block-library-rich-text__tinymce .wpview .dashicons{display:block;font-size:32px;height:32px;margin:0 auto;width:32px}.wp-block-freeform.block-library-rich-text__tinymce .wpview.wpview-type-gallery:after{clear:both;content:"";display:table}.wp-block-freeform.block-library-rich-text__tinymce .gallery img[data-mce-selected]:focus{outline:none}.wp-block-freeform.block-library-rich-text__tinymce .gallery a{cursor:default}.wp-block-freeform.block-library-rich-text__tinymce .gallery{line-height:1;margin:auto -6px;overflow-x:hidden;padding:6px 0}.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-item{box-sizing:border-box;float:right;margin:0;padding:6px;text-align:center}.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-caption,.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-icon{margin:0}.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-caption{font-size:13px;margin:4px 0}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-1 .gallery-item{width:100%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-2 .gallery-item{width:50%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-3 .gallery-item{width:33.3333333333%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-4 .gallery-item{width:25%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-5 .gallery-item{width:20%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-6 .gallery-item{width:16.6666666667%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-7 .gallery-item{width:14.2857142857%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-8 .gallery-item{width:12.5%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-9 .gallery-item{width:11.1111111111%}.wp-block-freeform.block-library-rich-text__tinymce .gallery img{border:none;height:auto;max-width:100%;padding:0}div[data-type="core/freeform"]:before{border:1px solid #ddd;outline:1px solid transparent;transition:border-color .1s linear,box-shadow .1s linear}@media (prefers-reduced-motion:reduce){div[data-type="core/freeform"]:before{transition-delay:0s;transition-duration:0s}}div[data-type="core/freeform"].is-selected:before{border-color:#1e1e1e}div[data-type="core/freeform"] .block-editor-block-contextual-toolbar+div{margin-top:0;padding-top:0}div[data-type="core/freeform"].is-selected .block-library-rich-text__tinymce:after{clear:both;content:"";display:table}.mce-toolbar-grp .mce-btn.mce-active button,.mce-toolbar-grp .mce-btn.mce-active i,.mce-toolbar-grp .mce-btn.mce-active:hover button,.mce-toolbar-grp .mce-btn.mce-active:hover i{color:#1e1e1e}.mce-toolbar-grp .mce-rtl .mce-flow-layout-item.mce-last{margin-left:0;margin-right:8px}.mce-toolbar-grp .mce-btn i{font-style:normal}.block-library-classic__toolbar{border:1px solid #ddd;border-bottom:none;border-radius:2px;display:none;margin:0 0 8px;padding:0;position:sticky;top:0;width:auto;z-index:31}div[data-type="core/freeform"].is-selected .block-library-classic__toolbar{border-color:#1e1e1e;display:block}.block-library-classic__toolbar .mce-tinymce{box-shadow:none}@media (min-width:600px){.block-library-classic__toolbar{padding:0}}.block-library-classic__toolbar:empty{background:#f5f5f5;border-bottom:1px solid #e2e4e7;display:block}.block-library-classic__toolbar:empty:before{color:#555d66;content:attr(data-placeholder);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:37px;padding:14px}.block-library-classic__toolbar div.mce-toolbar-grp{border-bottom:1px solid #1e1e1e}.block-library-classic__toolbar .mce-menubar,.block-library-classic__toolbar .mce-menubar>div,.block-library-classic__toolbar .mce-tinymce-inline,.block-library-classic__toolbar .mce-tinymce-inline>div,.block-library-classic__toolbar div.mce-toolbar-grp,.block-library-classic__toolbar div.mce-toolbar-grp>div{height:auto!important;width:100%!important}.block-library-classic__toolbar .mce-container-body.mce-abs-layout{overflow:visible}.block-library-classic__toolbar .mce-menubar,.block-library-classic__toolbar div.mce-toolbar-grp{position:static}.block-library-classic__toolbar .mce-toolbar-grp>div{padding:1px 3px}.block-library-classic__toolbar .mce-toolbar-grp .mce-toolbar:not(:first-child){display:none}.block-library-classic__toolbar.has-advanced-toolbar .mce-toolbar-grp .mce-toolbar{display:block}.block-editor-freeform-modal .block-editor-freeform-modal__content .mce-edit-area iframe{height:50vh!important}@media (min-width:960px){.block-editor-freeform-modal .block-editor-freeform-modal__content:not(.is-full-screen){height:9999rem}.block-editor-freeform-modal .block-editor-freeform-modal__content .components-modal__header+div{height:100%}.block-editor-freeform-modal .block-editor-freeform-modal__content .mce-tinymce{height:calc(100% - 52px)}.block-editor-freeform-modal .block-editor-freeform-modal__content .mce-container-body{display:flex;flex-direction:column;height:100%;min-width:50vw}.block-editor-freeform-modal .block-editor-freeform-modal__content .mce-edit-area{display:flex;flex-direction:column;flex-grow:1}.block-editor-freeform-modal .block-editor-freeform-modal__content .mce-edit-area iframe{flex-grow:1;height:10px!important}}.block-editor-freeform-modal__actions{margin-top:16px}
\ No newline at end of file diff --git a/wp-includes/blocks/freeform/editor.css b/wp-includes/blocks/freeform/editor.css new file mode 100644 index 0000000..aaec43f --- /dev/null +++ b/wp-includes/blocks/freeform/editor.css @@ -0,0 +1,335 @@ +.wp-block-freeform.block-library-rich-text__tinymce{ + height:auto; +} +.wp-block-freeform.block-library-rich-text__tinymce li,.wp-block-freeform.block-library-rich-text__tinymce p{ + line-height:1.8; +} +.wp-block-freeform.block-library-rich-text__tinymce ol,.wp-block-freeform.block-library-rich-text__tinymce ul{ + margin-left:0; + padding-left:2.5em; +} +.wp-block-freeform.block-library-rich-text__tinymce blockquote{ + border-left:4px solid #000; + box-shadow:inset 0 0 0 0 #ddd; + margin:0; + padding-left:1em; +} +.wp-block-freeform.block-library-rich-text__tinymce pre{ + color:#1e1e1e; + font-family:Menlo,Consolas,monaco,monospace; + font-size:15px; + white-space:pre-wrap; +} +.wp-block-freeform.block-library-rich-text__tinymce>:first-child{ + margin-top:0; +} +.wp-block-freeform.block-library-rich-text__tinymce>:last-child{ + margin-bottom:0; +} +.wp-block-freeform.block-library-rich-text__tinymce.mce-edit-focus{ + outline:none; +} +.wp-block-freeform.block-library-rich-text__tinymce a{ + color:var(--wp-admin-theme-color); +} +.wp-block-freeform.block-library-rich-text__tinymce:focus a[data-mce-selected]{ + background:#e5f5fa; + border-radius:2px; + box-shadow:0 0 0 1px #e5f5fa; + margin:0 -2px; + padding:0 2px; +} +.wp-block-freeform.block-library-rich-text__tinymce code{ + background:#f0f0f0; + border-radius:2px; + color:#1e1e1e; + font-family:Menlo,Consolas,monaco,monospace; + font-size:14px; + padding:2px; +} +.wp-block-freeform.block-library-rich-text__tinymce:focus code[data-mce-selected]{ + background:#ddd; +} +.wp-block-freeform.block-library-rich-text__tinymce .alignright{ + float:right; + margin:.5em 0 .5em 1em; +} +.wp-block-freeform.block-library-rich-text__tinymce .alignleft{ + float:left; + margin:.5em 1em .5em 0; +} +.wp-block-freeform.block-library-rich-text__tinymce .aligncenter{ + display:block; + margin-left:auto; + margin-right:auto; +} +.wp-block-freeform.block-library-rich-text__tinymce .wp-more-tag{ + background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAADtgAAAAoBAMAAAA86gLBAAAAJFBMVEVMaXG7u7vBwcHDw8POzs68vLzGxsbMzMy+vr7AwMDQ0NDGxsYKLGzpAAAADHRSTlMA///zWf+/f///TMxNVGuqAAABwklEQVR4Ae3dMXLaQBTH4bfj8UCpx8hq0vgKvgFNemhT6Qo6gg6R+0ZahM2QLmyBJ99XWP9V5+o3jIUcLQEAAAAAAAAAAAAAAAAAAAAAAABQ8j0WL9lfTtlt18uNXAUA8O/KVtfa1tdcrOdSh9gCQAMlh1hMNbZZ1bsrsQWABsrhLRbz7z5in/32UbfUMUbkMQCAh5RfGYv82UdMdZ6HS2wjT2ILAI8r3XmM2B3WvM59vfO2xXYW2yYAENuPU8S+X/N67mKxzy225yaxBQCxLV392UdcvwV0jPVUj98ntkBWT7C7+9u2/V/vGtvXIWJ6/4rtbottWa6Ri0NUT/u72LYttrb97LHdvUXMxxrb8TO2W2TF1rYbbLG1bbGNjMi4+2Sbi1FsbbvNFlvbFtt5fDnE3d9sP1/XeIyV2Nr2U2/guZUuptNrH/dPI9eLB6SaAEBs6wPJf3/PNk9tYgsAYrv/8TFuzx/fvkFqGtrEFgDEdpcZUb7ejXy6ntrEFgDENvL6gsas4vbdyKt4DACI7TxElJv/Z7udpqFNbAFAbKduy2uU2trttM/x28UWAAAAAAAAAAAAAAAAAAAAAAAAAADgDyPwGmGTCZp7AAAAAElFTkSuQmCC); + background-position:50%; + background-repeat:no-repeat; + background-size:1900px 20px; + cursor:default; + display:block; + height:20px; + margin:15px auto; + outline:0; + width:96%; +} +.wp-block-freeform.block-library-rich-text__tinymce img::selection{ + background-color:transparent; +} +.wp-block-freeform.block-library-rich-text__tinymce div.mceTemp{ + -ms-user-select:element; +} +.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption{ + margin:0; + max-width:100%; +} +.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption a,.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption img{ + display:block; +} +.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption,.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption *{ + -webkit-user-drag:none; +} +.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption .wp-caption-dd{ + margin:0; + padding-top:.5em; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview{ + border:1px solid transparent; + clear:both; + margin-bottom:16px; + position:relative; + width:99.99%; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview iframe{ + background:transparent; + display:block; + max-width:100%; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview .mce-shim{ + bottom:0; + left:0; + position:absolute; + right:0; + top:0; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview[data-mce-selected="2"] .mce-shim{ + display:none; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview .loading-placeholder{ + border:1px dashed #ddd; + padding:10px; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview .wpview-error{ + word-wrap:break-word; + border:1px solid #ddd; + margin:0; + padding:1em 0; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview .wpview-error p{ + margin:0; + text-align:center; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview[data-mce-selected] .loading-placeholder,.wp-block-freeform.block-library-rich-text__tinymce .wpview[data-mce-selected] .wpview-error{ + border-color:transparent; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview .dashicons{ + display:block; + font-size:32px; + height:32px; + margin:0 auto; + width:32px; +} +.wp-block-freeform.block-library-rich-text__tinymce .wpview.wpview-type-gallery:after{ + clear:both; + content:""; + display:table; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery img[data-mce-selected]:focus{ + outline:none; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery a{ + cursor:default; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery{ + line-height:1; + margin:auto -6px; + overflow-x:hidden; + padding:6px 0; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-item{ + box-sizing:border-box; + float:left; + margin:0; + padding:6px; + text-align:center; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-caption,.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-icon{ + margin:0; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-caption{ + font-size:13px; + margin:4px 0; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-1 .gallery-item{ + width:100%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-2 .gallery-item{ + width:50%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-3 .gallery-item{ + width:33.3333333333%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-4 .gallery-item{ + width:25%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-5 .gallery-item{ + width:20%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-6 .gallery-item{ + width:16.6666666667%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-7 .gallery-item{ + width:14.2857142857%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-8 .gallery-item{ + width:12.5%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-9 .gallery-item{ + width:11.1111111111%; +} +.wp-block-freeform.block-library-rich-text__tinymce .gallery img{ + border:none; + height:auto; + max-width:100%; + padding:0; +} + +div[data-type="core/freeform"]:before{ + border:1px solid #ddd; + outline:1px solid transparent; + transition:border-color .1s linear,box-shadow .1s linear; +} +@media (prefers-reduced-motion:reduce){ + div[data-type="core/freeform"]:before{ + transition-delay:0s; + transition-duration:0s; + } +} +div[data-type="core/freeform"].is-selected:before{ + border-color:#1e1e1e; +} +div[data-type="core/freeform"] .block-editor-block-contextual-toolbar+div{ + margin-top:0; + padding-top:0; +} +div[data-type="core/freeform"].is-selected .block-library-rich-text__tinymce:after{ + clear:both; + content:""; + display:table; +} + +.mce-toolbar-grp .mce-btn.mce-active button,.mce-toolbar-grp .mce-btn.mce-active i,.mce-toolbar-grp .mce-btn.mce-active:hover button,.mce-toolbar-grp .mce-btn.mce-active:hover i{ + color:#1e1e1e; +} +.mce-toolbar-grp .mce-rtl .mce-flow-layout-item.mce-last{ + margin-left:8px; + margin-right:0; +} +.mce-toolbar-grp .mce-btn i{ + font-style:normal; +} + +.block-library-classic__toolbar{ + border:1px solid #ddd; + border-bottom:none; + border-radius:2px; + display:none; + margin:0 0 8px; + padding:0; + position:sticky; + top:0; + width:auto; + z-index:31; +} +div[data-type="core/freeform"].is-selected .block-library-classic__toolbar{ + border-color:#1e1e1e; + display:block; +} +.block-library-classic__toolbar .mce-tinymce{ + box-shadow:none; +} +@media (min-width:600px){ + .block-library-classic__toolbar{ + padding:0; + } +} +.block-library-classic__toolbar:empty{ + background:#f5f5f5; + border-bottom:1px solid #e2e4e7; + display:block; +} +.block-library-classic__toolbar:empty:before{ + color:#555d66; + content:attr(data-placeholder); + font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; + font-size:13px; + line-height:37px; + padding:14px; +} +.block-library-classic__toolbar div.mce-toolbar-grp{ + border-bottom:1px solid #1e1e1e; +} +.block-library-classic__toolbar .mce-menubar,.block-library-classic__toolbar .mce-menubar>div,.block-library-classic__toolbar .mce-tinymce-inline,.block-library-classic__toolbar .mce-tinymce-inline>div,.block-library-classic__toolbar div.mce-toolbar-grp,.block-library-classic__toolbar div.mce-toolbar-grp>div{ + height:auto !important; + width:100% !important; +} +.block-library-classic__toolbar .mce-container-body.mce-abs-layout{ + overflow:visible; +} +.block-library-classic__toolbar .mce-menubar,.block-library-classic__toolbar div.mce-toolbar-grp{ + position:static; +} +.block-library-classic__toolbar .mce-toolbar-grp>div{ + padding:1px 3px; +} +.block-library-classic__toolbar .mce-toolbar-grp .mce-toolbar:not(:first-child){ + display:none; +} +.block-library-classic__toolbar.has-advanced-toolbar .mce-toolbar-grp .mce-toolbar{ + display:block; +} + +.block-editor-freeform-modal .block-editor-freeform-modal__content .mce-edit-area iframe{ + height:50vh !important; +} +@media (min-width:960px){ + .block-editor-freeform-modal .block-editor-freeform-modal__content:not(.is-full-screen){ + height:9999rem; + } + .block-editor-freeform-modal .block-editor-freeform-modal__content .components-modal__header+div{ + height:100%; + } + .block-editor-freeform-modal .block-editor-freeform-modal__content .mce-tinymce{ + height:calc(100% - 52px); + } + .block-editor-freeform-modal .block-editor-freeform-modal__content .mce-container-body{ + display:flex; + flex-direction:column; + height:100%; + min-width:50vw; + } + .block-editor-freeform-modal .block-editor-freeform-modal__content .mce-edit-area{ + display:flex; + flex-direction:column; + flex-grow:1; + } + .block-editor-freeform-modal .block-editor-freeform-modal__content .mce-edit-area iframe{ + flex-grow:1; + height:10px !important; + } +} +.block-editor-freeform-modal__actions{ + margin-top:16px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/freeform/editor.min.css b/wp-includes/blocks/freeform/editor.min.css new file mode 100644 index 0000000..83dc8e4 --- /dev/null +++ b/wp-includes/blocks/freeform/editor.min.css @@ -0,0 +1 @@ +.wp-block-freeform.block-library-rich-text__tinymce{height:auto}.wp-block-freeform.block-library-rich-text__tinymce li,.wp-block-freeform.block-library-rich-text__tinymce p{line-height:1.8}.wp-block-freeform.block-library-rich-text__tinymce ol,.wp-block-freeform.block-library-rich-text__tinymce ul{margin-left:0;padding-left:2.5em}.wp-block-freeform.block-library-rich-text__tinymce blockquote{border-left:4px solid #000;box-shadow:inset 0 0 0 0 #ddd;margin:0;padding-left:1em}.wp-block-freeform.block-library-rich-text__tinymce pre{color:#1e1e1e;font-family:Menlo,Consolas,monaco,monospace;font-size:15px;white-space:pre-wrap}.wp-block-freeform.block-library-rich-text__tinymce>:first-child{margin-top:0}.wp-block-freeform.block-library-rich-text__tinymce>:last-child{margin-bottom:0}.wp-block-freeform.block-library-rich-text__tinymce.mce-edit-focus{outline:none}.wp-block-freeform.block-library-rich-text__tinymce a{color:var(--wp-admin-theme-color)}.wp-block-freeform.block-library-rich-text__tinymce:focus a[data-mce-selected]{background:#e5f5fa;border-radius:2px;box-shadow:0 0 0 1px #e5f5fa;margin:0 -2px;padding:0 2px}.wp-block-freeform.block-library-rich-text__tinymce code{background:#f0f0f0;border-radius:2px;color:#1e1e1e;font-family:Menlo,Consolas,monaco,monospace;font-size:14px;padding:2px}.wp-block-freeform.block-library-rich-text__tinymce:focus code[data-mce-selected]{background:#ddd}.wp-block-freeform.block-library-rich-text__tinymce .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-freeform.block-library-rich-text__tinymce .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-freeform.block-library-rich-text__tinymce .aligncenter{display:block;margin-left:auto;margin-right:auto}.wp-block-freeform.block-library-rich-text__tinymce .wp-more-tag{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAADtgAAAAoBAMAAAA86gLBAAAAJFBMVEVMaXG7u7vBwcHDw8POzs68vLzGxsbMzMy+vr7AwMDQ0NDGxsYKLGzpAAAADHRSTlMA///zWf+/f///TMxNVGuqAAABwklEQVR4Ae3dMXLaQBTH4bfj8UCpx8hq0vgKvgFNemhT6Qo6gg6R+0ZahM2QLmyBJ99XWP9V5+o3jIUcLQEAAAAAAAAAAAAAAAAAAAAAAABQ8j0WL9lfTtlt18uNXAUA8O/KVtfa1tdcrOdSh9gCQAMlh1hMNbZZ1bsrsQWABsrhLRbz7z5in/32UbfUMUbkMQCAh5RfGYv82UdMdZ6HS2wjT2ILAI8r3XmM2B3WvM59vfO2xXYW2yYAENuPU8S+X/N67mKxzy225yaxBQCxLV392UdcvwV0jPVUj98ntkBWT7C7+9u2/V/vGtvXIWJ6/4rtbottWa6Ri0NUT/u72LYttrb97LHdvUXMxxrb8TO2W2TF1rYbbLG1bbGNjMi4+2Sbi1FsbbvNFlvbFtt5fDnE3d9sP1/XeIyV2Nr2U2/guZUuptNrH/dPI9eLB6SaAEBs6wPJf3/PNk9tYgsAYrv/8TFuzx/fvkFqGtrEFgDEdpcZUb7ejXy6ntrEFgDENvL6gsas4vbdyKt4DACI7TxElJv/Z7udpqFNbAFAbKduy2uU2trttM/x28UWAAAAAAAAAAAAAAAAAAAAAAAAAADgDyPwGmGTCZp7AAAAAElFTkSuQmCC);background-position:50%;background-repeat:no-repeat;background-size:1900px 20px;cursor:default;display:block;height:20px;margin:15px auto;outline:0;width:96%}.wp-block-freeform.block-library-rich-text__tinymce img::selection{background-color:transparent}.wp-block-freeform.block-library-rich-text__tinymce div.mceTemp{-ms-user-select:element}.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption{margin:0;max-width:100%}.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption a,.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption img{display:block}.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption,.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption *{-webkit-user-drag:none}.wp-block-freeform.block-library-rich-text__tinymce dl.wp-caption .wp-caption-dd{margin:0;padding-top:.5em}.wp-block-freeform.block-library-rich-text__tinymce .wpview{border:1px solid transparent;clear:both;margin-bottom:16px;position:relative;width:99.99%}.wp-block-freeform.block-library-rich-text__tinymce .wpview iframe{background:transparent;display:block;max-width:100%}.wp-block-freeform.block-library-rich-text__tinymce .wpview .mce-shim{bottom:0;left:0;position:absolute;right:0;top:0}.wp-block-freeform.block-library-rich-text__tinymce .wpview[data-mce-selected="2"] .mce-shim{display:none}.wp-block-freeform.block-library-rich-text__tinymce .wpview .loading-placeholder{border:1px dashed #ddd;padding:10px}.wp-block-freeform.block-library-rich-text__tinymce .wpview .wpview-error{word-wrap:break-word;border:1px solid #ddd;margin:0;padding:1em 0}.wp-block-freeform.block-library-rich-text__tinymce .wpview .wpview-error p{margin:0;text-align:center}.wp-block-freeform.block-library-rich-text__tinymce .wpview[data-mce-selected] .loading-placeholder,.wp-block-freeform.block-library-rich-text__tinymce .wpview[data-mce-selected] .wpview-error{border-color:transparent}.wp-block-freeform.block-library-rich-text__tinymce .wpview .dashicons{display:block;font-size:32px;height:32px;margin:0 auto;width:32px}.wp-block-freeform.block-library-rich-text__tinymce .wpview.wpview-type-gallery:after{clear:both;content:"";display:table}.wp-block-freeform.block-library-rich-text__tinymce .gallery img[data-mce-selected]:focus{outline:none}.wp-block-freeform.block-library-rich-text__tinymce .gallery a{cursor:default}.wp-block-freeform.block-library-rich-text__tinymce .gallery{line-height:1;margin:auto -6px;overflow-x:hidden;padding:6px 0}.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-item{box-sizing:border-box;float:left;margin:0;padding:6px;text-align:center}.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-caption,.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-icon{margin:0}.wp-block-freeform.block-library-rich-text__tinymce .gallery .gallery-caption{font-size:13px;margin:4px 0}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-1 .gallery-item{width:100%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-2 .gallery-item{width:50%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-3 .gallery-item{width:33.3333333333%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-4 .gallery-item{width:25%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-5 .gallery-item{width:20%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-6 .gallery-item{width:16.6666666667%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-7 .gallery-item{width:14.2857142857%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-8 .gallery-item{width:12.5%}.wp-block-freeform.block-library-rich-text__tinymce .gallery-columns-9 .gallery-item{width:11.1111111111%}.wp-block-freeform.block-library-rich-text__tinymce .gallery img{border:none;height:auto;max-width:100%;padding:0}div[data-type="core/freeform"]:before{border:1px solid #ddd;outline:1px solid transparent;transition:border-color .1s linear,box-shadow .1s linear}@media (prefers-reduced-motion:reduce){div[data-type="core/freeform"]:before{transition-delay:0s;transition-duration:0s}}div[data-type="core/freeform"].is-selected:before{border-color:#1e1e1e}div[data-type="core/freeform"] .block-editor-block-contextual-toolbar+div{margin-top:0;padding-top:0}div[data-type="core/freeform"].is-selected .block-library-rich-text__tinymce:after{clear:both;content:"";display:table}.mce-toolbar-grp .mce-btn.mce-active button,.mce-toolbar-grp .mce-btn.mce-active i,.mce-toolbar-grp .mce-btn.mce-active:hover button,.mce-toolbar-grp .mce-btn.mce-active:hover i{color:#1e1e1e}.mce-toolbar-grp .mce-rtl .mce-flow-layout-item.mce-last{margin-left:8px;margin-right:0}.mce-toolbar-grp .mce-btn i{font-style:normal}.block-library-classic__toolbar{border:1px solid #ddd;border-bottom:none;border-radius:2px;display:none;margin:0 0 8px;padding:0;position:sticky;top:0;width:auto;z-index:31}div[data-type="core/freeform"].is-selected .block-library-classic__toolbar{border-color:#1e1e1e;display:block}.block-library-classic__toolbar .mce-tinymce{box-shadow:none}@media (min-width:600px){.block-library-classic__toolbar{padding:0}}.block-library-classic__toolbar:empty{background:#f5f5f5;border-bottom:1px solid #e2e4e7;display:block}.block-library-classic__toolbar:empty:before{color:#555d66;content:attr(data-placeholder);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:37px;padding:14px}.block-library-classic__toolbar div.mce-toolbar-grp{border-bottom:1px solid #1e1e1e}.block-library-classic__toolbar .mce-menubar,.block-library-classic__toolbar .mce-menubar>div,.block-library-classic__toolbar .mce-tinymce-inline,.block-library-classic__toolbar .mce-tinymce-inline>div,.block-library-classic__toolbar div.mce-toolbar-grp,.block-library-classic__toolbar div.mce-toolbar-grp>div{height:auto!important;width:100%!important}.block-library-classic__toolbar .mce-container-body.mce-abs-layout{overflow:visible}.block-library-classic__toolbar .mce-menubar,.block-library-classic__toolbar div.mce-toolbar-grp{position:static}.block-library-classic__toolbar .mce-toolbar-grp>div{padding:1px 3px}.block-library-classic__toolbar .mce-toolbar-grp .mce-toolbar:not(:first-child){display:none}.block-library-classic__toolbar.has-advanced-toolbar .mce-toolbar-grp .mce-toolbar{display:block}.block-editor-freeform-modal .block-editor-freeform-modal__content .mce-edit-area iframe{height:50vh!important}@media (min-width:960px){.block-editor-freeform-modal .block-editor-freeform-modal__content:not(.is-full-screen){height:9999rem}.block-editor-freeform-modal .block-editor-freeform-modal__content .components-modal__header+div{height:100%}.block-editor-freeform-modal .block-editor-freeform-modal__content .mce-tinymce{height:calc(100% - 52px)}.block-editor-freeform-modal .block-editor-freeform-modal__content .mce-container-body{display:flex;flex-direction:column;height:100%;min-width:50vw}.block-editor-freeform-modal .block-editor-freeform-modal__content .mce-edit-area{display:flex;flex-direction:column;flex-grow:1}.block-editor-freeform-modal .block-editor-freeform-modal__content .mce-edit-area iframe{flex-grow:1;height:10px!important}}.block-editor-freeform-modal__actions{margin-top:16px}
\ No newline at end of file diff --git a/wp-includes/blocks/gallery.php b/wp-includes/blocks/gallery.php new file mode 100644 index 0000000..edde9b4 --- /dev/null +++ b/wp-includes/blocks/gallery.php @@ -0,0 +1,132 @@ +<?php +/** + * Server-side rendering of the `core/gallery` block. + * + * @package WordPress + */ + +/** + * Handles backwards compatibility for Gallery Blocks, + * whose images feature a `data-id` attribute. + * + * Now that the Gallery Block contains inner Image Blocks, + * we add a custom `data-id` attribute before rendering the gallery + * so that the Image Block can pick it up in its render_callback. + * + * @param array $parsed_block The block being rendered. + * @return array The migrated block object. + */ +function block_core_gallery_data_id_backcompatibility( $parsed_block ) { + if ( 'core/gallery' === $parsed_block['blockName'] ) { + foreach ( $parsed_block['innerBlocks'] as $key => $inner_block ) { + if ( 'core/image' === $inner_block['blockName'] ) { + if ( ! isset( $parsed_block['innerBlocks'][ $key ]['attrs']['data-id'] ) && isset( $inner_block['attrs']['id'] ) ) { + $parsed_block['innerBlocks'][ $key ]['attrs']['data-id'] = esc_attr( $inner_block['attrs']['id'] ); + } + } + } + } + + return $parsed_block; +} + +add_filter( 'render_block_data', 'block_core_gallery_data_id_backcompatibility' ); + +/** + * Adds a style tag for the --wp--style--unstable-gallery-gap var. + * + * The Gallery block needs to recalculate Image block width based on + * the current gap setting in order to maintain the number of flex columns + * so a css var is added to allow this. + * + * @param array $attributes Attributes of the block being rendered. + * @param string $content Content of the block being rendered. + * @return string The content of the block being rendered. + */ +function block_core_gallery_render( $attributes, $content ) { + $gap = $attributes['style']['spacing']['blockGap'] ?? null; + // Skip if gap value contains unsupported characters. + // Regex for CSS value borrowed from `safecss_filter_attr`, and used here + // because we only want to match against the value, not the CSS attribute. + if ( is_array( $gap ) ) { + foreach ( $gap as $key => $value ) { + // Make sure $value is a string to avoid PHP 8.1 deprecation error in preg_match() when the value is null. + $value = is_string( $value ) ? $value : ''; + $value = $value && preg_match( '%[\\\(&=}]|/\*%', $value ) ? null : $value; + + // Get spacing CSS variable from preset value if provided. + if ( is_string( $value ) && str_contains( $value, 'var:preset|spacing|' ) ) { + $index_to_splice = strrpos( $value, '|' ) + 1; + $slug = _wp_to_kebab_case( substr( $value, $index_to_splice ) ); + $value = "var(--wp--preset--spacing--$slug)"; + } + + $gap[ $key ] = $value; + } + } else { + // Make sure $gap is a string to avoid PHP 8.1 deprecation error in preg_match() when the value is null. + $gap = is_string( $gap ) ? $gap : ''; + $gap = $gap && preg_match( '%[\\\(&=}]|/\*%', $gap ) ? null : $gap; + + // Get spacing CSS variable from preset value if provided. + if ( is_string( $gap ) && str_contains( $gap, 'var:preset|spacing|' ) ) { + $index_to_splice = strrpos( $gap, '|' ) + 1; + $slug = _wp_to_kebab_case( substr( $gap, $index_to_splice ) ); + $gap = "var(--wp--preset--spacing--$slug)"; + } + } + + $unique_gallery_classname = wp_unique_id( 'wp-block-gallery-' ); + $processed_content = new WP_HTML_Tag_Processor( $content ); + $processed_content->next_tag(); + $processed_content->add_class( $unique_gallery_classname ); + + // --gallery-block--gutter-size is deprecated. --wp--style--gallery-gap-default should be used by themes that want to set a default + // gap on the gallery. + $fallback_gap = 'var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )'; + $gap_value = $gap ? $gap : $fallback_gap; + $gap_column = $gap_value; + + if ( is_array( $gap_value ) ) { + $gap_row = isset( $gap_value['top'] ) ? $gap_value['top'] : $fallback_gap; + $gap_column = isset( $gap_value['left'] ) ? $gap_value['left'] : $fallback_gap; + $gap_value = $gap_row === $gap_column ? $gap_row : $gap_row . ' ' . $gap_column; + } + + // The unstable gallery gap calculation requires a real value (such as `0px`) and not `0`. + if ( '0' === $gap_column ) { + $gap_column = '0px'; + } + + // Set the CSS variable to the column value, and the `gap` property to the combined gap value. + $gallery_styles = array( + array( + 'selector' => ".wp-block-gallery.{$unique_gallery_classname}", + 'declarations' => array( + '--wp--style--unstable-gallery-gap' => $gap_column, + 'gap' => $gap_value, + ), + ), + ); + + wp_style_engine_get_stylesheet_from_css_rules( + $gallery_styles, + array( + 'context' => 'block-supports', + ) + ); + return (string) $processed_content; +} +/** + * Registers the `core/gallery` block on server. + */ +function register_block_core_gallery() { + register_block_type_from_metadata( + __DIR__ . '/gallery', + array( + 'render_callback' => 'block_core_gallery_render', + ) + ); +} + +add_action( 'init', 'register_block_core_gallery' ); diff --git a/wp-includes/blocks/gallery/block.json b/wp-includes/blocks/gallery/block.json new file mode 100644 index 0000000..0867989 --- /dev/null +++ b/wp-includes/blocks/gallery/block.json @@ -0,0 +1,139 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/gallery", + "title": "Gallery", + "category": "media", + "description": "Display multiple images in a rich gallery.", + "keywords": [ "images", "photos" ], + "textdomain": "default", + "attributes": { + "images": { + "type": "array", + "default": [], + "source": "query", + "selector": ".blocks-gallery-item", + "query": { + "url": { + "type": "string", + "source": "attribute", + "selector": "img", + "attribute": "src" + }, + "fullUrl": { + "type": "string", + "source": "attribute", + "selector": "img", + "attribute": "data-full-url" + }, + "link": { + "type": "string", + "source": "attribute", + "selector": "img", + "attribute": "data-link" + }, + "alt": { + "type": "string", + "source": "attribute", + "selector": "img", + "attribute": "alt", + "default": "" + }, + "id": { + "type": "string", + "source": "attribute", + "selector": "img", + "attribute": "data-id" + }, + "caption": { + "type": "string", + "source": "html", + "selector": ".blocks-gallery-item__caption" + } + } + }, + "ids": { + "type": "array", + "items": { + "type": "number" + }, + "default": [] + }, + "shortCodeTransforms": { + "type": "array", + "items": { + "type": "object" + }, + "default": [] + }, + "columns": { + "type": "number", + "minimum": 1, + "maximum": 8 + }, + "caption": { + "type": "string", + "source": "html", + "selector": ".blocks-gallery-caption" + }, + "imageCrop": { + "type": "boolean", + "default": true + }, + "fixedHeight": { + "type": "boolean", + "default": true + }, + "linkTarget": { + "type": "string" + }, + "linkTo": { + "type": "string" + }, + "sizeSlug": { + "type": "string", + "default": "large" + }, + "allowResize": { + "type": "boolean", + "default": false + } + }, + "providesContext": { + "allowResize": "allowResize", + "imageCrop": "imageCrop", + "fixedHeight": "fixedHeight" + }, + "supports": { + "anchor": true, + "align": true, + "html": false, + "units": [ "px", "em", "rem", "vh", "vw" ], + "spacing": { + "margin": true, + "padding": true, + "blockGap": [ "horizontal", "vertical" ], + "__experimentalSkipSerialization": [ "blockGap" ], + "__experimentalDefaultControls": { + "blockGap": true, + "margin": false, + "padding": false + } + }, + "color": { + "text": false, + "background": true, + "gradients": true + }, + "layout": { + "allowSwitching": false, + "allowInheriting": false, + "allowEditing": false, + "default": { + "type": "flex" + } + } + }, + "editorStyle": "wp-block-gallery-editor", + "style": "wp-block-gallery" +} diff --git a/wp-includes/blocks/gallery/editor-rtl.css b/wp-includes/blocks/gallery/editor-rtl.css new file mode 100644 index 0000000..1995473 --- /dev/null +++ b/wp-includes/blocks/gallery/editor-rtl.css @@ -0,0 +1,147 @@ +figure.wp-block-gallery{ + display:block; +} +figure.wp-block-gallery>.blocks-gallery-caption{ + flex:0 0 100%; +} +figure.wp-block-gallery>.blocks-gallery-media-placeholder-wrapper{ + flex-basis:100%; +} +figure.wp-block-gallery .wp-block-image .components-notice.is-error{ + display:block; +} +figure.wp-block-gallery .wp-block-image .components-notice__content{ + margin:4px 0; +} +figure.wp-block-gallery .wp-block-image .components-notice__dismiss{ + left:5px; + position:absolute; + top:0; +} +figure.wp-block-gallery .block-editor-media-placeholder.is-appender .components-placeholder__label{ + display:none; +} +figure.wp-block-gallery .block-editor-media-placeholder.is-appender .block-editor-media-placeholder__button{ + margin-bottom:0; +} +figure.wp-block-gallery .block-editor-media-placeholder{ + margin:0; +} +figure.wp-block-gallery .block-editor-media-placeholder .components-placeholder__label{ + display:flex; +} +figure.wp-block-gallery .block-editor-media-placeholder figcaption{ + z-index:2; +} +figure.wp-block-gallery .components-spinner{ + margin-right:-9px; + margin-top:-9px; + position:absolute; + right:50%; + top:50%; +} +.gallery-settings-buttons .components-button:first-child{ + margin-left:8px; +} + +.gallery-image-sizes .components-base-control__label{ + display:block; + margin-bottom:4px; +} +.gallery-image-sizes .gallery-image-sizes__loading{ + align-items:center; + color:#757575; + display:flex; + font-size:12px; +} +.gallery-image-sizes .components-spinner{ + margin:0 4px 0 8px; +} +.blocks-gallery-item figure:not(.is-selected):focus,.blocks-gallery-item img:focus{ + outline:none; +} +.blocks-gallery-item figure.is-selected:before{ + bottom:0; + box-shadow:0 0 0 1px #fff inset, 0 0 0 3px var(--wp-admin-theme-color) inset; + content:""; + left:0; + outline:2px solid transparent; + pointer-events:none; + position:absolute; + right:0; + top:0; + z-index:1; +} +.blocks-gallery-item figure.is-transient img{ + opacity:.3; +} +.blocks-gallery-item .is-selected .block-library-gallery-item__inline-menu{ + display:inline-flex; +} +.blocks-gallery-item .block-editor-media-placeholder{ + height:100%; + margin:0; +} +.blocks-gallery-item .block-editor-media-placeholder .components-placeholder__label{ + display:flex; +} + +.block-library-gallery-item__inline-menu{ + background:#fff; + border:1px solid #1e1e1e; + border-radius:2px; + display:none; + margin:8px; + position:absolute; + top:-2px; + transition:box-shadow .2s ease-out; + z-index:20; +} +@media (prefers-reduced-motion:reduce){ + .block-library-gallery-item__inline-menu{ + transition-delay:0s; + transition-duration:0s; + } +} +.block-library-gallery-item__inline-menu:hover{ + box-shadow:0 .7px 1px rgba(0,0,0,.1),0 1.2px 1.7px -.2px rgba(0,0,0,.1),0 2.3px 3.3px -.5px rgba(0,0,0,.1); +} +@media (min-width:600px){ + .columns-7 .block-library-gallery-item__inline-menu,.columns-8 .block-library-gallery-item__inline-menu{ + padding:2px; + } +} +.block-library-gallery-item__inline-menu .components-button.has-icon:not(:focus){ + border:none; + box-shadow:none; +} +@media (min-width:600px){ + .columns-7 .block-library-gallery-item__inline-menu .components-button.has-icon,.columns-8 .block-library-gallery-item__inline-menu .components-button.has-icon{ + height:inherit; + padding:0; + width:inherit; + } +} +.block-library-gallery-item__inline-menu.is-left{ + right:-2px; +} +.block-library-gallery-item__inline-menu.is-right{ + left:-2px; +} + +.wp-block-gallery ul.blocks-gallery-grid{ + margin:0; + padding:0; +} + +@media (min-width:600px){ + .wp-block-update-gallery-modal{ + max-width:480px; + } +} + +.wp-block-update-gallery-modal-buttons{ + display:flex; + gap:12px; + justify-content:flex-end; +}
\ No newline at end of file diff --git a/wp-includes/blocks/gallery/editor-rtl.min.css b/wp-includes/blocks/gallery/editor-rtl.min.css new file mode 100644 index 0000000..4129abb --- /dev/null +++ b/wp-includes/blocks/gallery/editor-rtl.min.css @@ -0,0 +1 @@ +figure.wp-block-gallery{display:block}figure.wp-block-gallery>.blocks-gallery-caption{flex:0 0 100%}figure.wp-block-gallery>.blocks-gallery-media-placeholder-wrapper{flex-basis:100%}figure.wp-block-gallery .wp-block-image .components-notice.is-error{display:block}figure.wp-block-gallery .wp-block-image .components-notice__content{margin:4px 0}figure.wp-block-gallery .wp-block-image .components-notice__dismiss{left:5px;position:absolute;top:0}figure.wp-block-gallery .block-editor-media-placeholder.is-appender .components-placeholder__label{display:none}figure.wp-block-gallery .block-editor-media-placeholder.is-appender .block-editor-media-placeholder__button{margin-bottom:0}figure.wp-block-gallery .block-editor-media-placeholder{margin:0}figure.wp-block-gallery .block-editor-media-placeholder .components-placeholder__label{display:flex}figure.wp-block-gallery .block-editor-media-placeholder figcaption{z-index:2}figure.wp-block-gallery .components-spinner{margin-right:-9px;margin-top:-9px;position:absolute;right:50%;top:50%}.gallery-settings-buttons .components-button:first-child{margin-left:8px}.gallery-image-sizes .components-base-control__label{display:block;margin-bottom:4px}.gallery-image-sizes .gallery-image-sizes__loading{align-items:center;color:#757575;display:flex;font-size:12px}.gallery-image-sizes .components-spinner{margin:0 4px 0 8px}.blocks-gallery-item figure:not(.is-selected):focus,.blocks-gallery-item img:focus{outline:none}.blocks-gallery-item figure.is-selected:before{bottom:0;box-shadow:0 0 0 1px #fff inset,0 0 0 3px var(--wp-admin-theme-color) inset;content:"";left:0;outline:2px solid transparent;pointer-events:none;position:absolute;right:0;top:0;z-index:1}.blocks-gallery-item figure.is-transient img{opacity:.3}.blocks-gallery-item .is-selected .block-library-gallery-item__inline-menu{display:inline-flex}.blocks-gallery-item .block-editor-media-placeholder{height:100%;margin:0}.blocks-gallery-item .block-editor-media-placeholder .components-placeholder__label{display:flex}.block-library-gallery-item__inline-menu{background:#fff;border:1px solid #1e1e1e;border-radius:2px;display:none;margin:8px;position:absolute;top:-2px;transition:box-shadow .2s ease-out;z-index:20}@media (prefers-reduced-motion:reduce){.block-library-gallery-item__inline-menu{transition-delay:0s;transition-duration:0s}}.block-library-gallery-item__inline-menu:hover{box-shadow:0 .7px 1px rgba(0,0,0,.1),0 1.2px 1.7px -.2px rgba(0,0,0,.1),0 2.3px 3.3px -.5px rgba(0,0,0,.1)}@media (min-width:600px){.columns-7 .block-library-gallery-item__inline-menu,.columns-8 .block-library-gallery-item__inline-menu{padding:2px}}.block-library-gallery-item__inline-menu .components-button.has-icon:not(:focus){border:none;box-shadow:none}@media (min-width:600px){.columns-7 .block-library-gallery-item__inline-menu .components-button.has-icon,.columns-8 .block-library-gallery-item__inline-menu .components-button.has-icon{height:inherit;padding:0;width:inherit}}.block-library-gallery-item__inline-menu.is-left{right:-2px}.block-library-gallery-item__inline-menu.is-right{left:-2px}.wp-block-gallery ul.blocks-gallery-grid{margin:0;padding:0}@media (min-width:600px){.wp-block-update-gallery-modal{max-width:480px}}.wp-block-update-gallery-modal-buttons{display:flex;gap:12px;justify-content:flex-end}
\ No newline at end of file diff --git a/wp-includes/blocks/gallery/editor.css b/wp-includes/blocks/gallery/editor.css new file mode 100644 index 0000000..b8493cb --- /dev/null +++ b/wp-includes/blocks/gallery/editor.css @@ -0,0 +1,147 @@ +figure.wp-block-gallery{ + display:block; +} +figure.wp-block-gallery>.blocks-gallery-caption{ + flex:0 0 100%; +} +figure.wp-block-gallery>.blocks-gallery-media-placeholder-wrapper{ + flex-basis:100%; +} +figure.wp-block-gallery .wp-block-image .components-notice.is-error{ + display:block; +} +figure.wp-block-gallery .wp-block-image .components-notice__content{ + margin:4px 0; +} +figure.wp-block-gallery .wp-block-image .components-notice__dismiss{ + position:absolute; + right:5px; + top:0; +} +figure.wp-block-gallery .block-editor-media-placeholder.is-appender .components-placeholder__label{ + display:none; +} +figure.wp-block-gallery .block-editor-media-placeholder.is-appender .block-editor-media-placeholder__button{ + margin-bottom:0; +} +figure.wp-block-gallery .block-editor-media-placeholder{ + margin:0; +} +figure.wp-block-gallery .block-editor-media-placeholder .components-placeholder__label{ + display:flex; +} +figure.wp-block-gallery .block-editor-media-placeholder figcaption{ + z-index:2; +} +figure.wp-block-gallery .components-spinner{ + left:50%; + margin-left:-9px; + margin-top:-9px; + position:absolute; + top:50%; +} +.gallery-settings-buttons .components-button:first-child{ + margin-right:8px; +} + +.gallery-image-sizes .components-base-control__label{ + display:block; + margin-bottom:4px; +} +.gallery-image-sizes .gallery-image-sizes__loading{ + align-items:center; + color:#757575; + display:flex; + font-size:12px; +} +.gallery-image-sizes .components-spinner{ + margin:0 8px 0 4px; +} +.blocks-gallery-item figure:not(.is-selected):focus,.blocks-gallery-item img:focus{ + outline:none; +} +.blocks-gallery-item figure.is-selected:before{ + bottom:0; + box-shadow:0 0 0 1px #fff inset, 0 0 0 3px var(--wp-admin-theme-color) inset; + content:""; + left:0; + outline:2px solid transparent; + pointer-events:none; + position:absolute; + right:0; + top:0; + z-index:1; +} +.blocks-gallery-item figure.is-transient img{ + opacity:.3; +} +.blocks-gallery-item .is-selected .block-library-gallery-item__inline-menu{ + display:inline-flex; +} +.blocks-gallery-item .block-editor-media-placeholder{ + height:100%; + margin:0; +} +.blocks-gallery-item .block-editor-media-placeholder .components-placeholder__label{ + display:flex; +} + +.block-library-gallery-item__inline-menu{ + background:#fff; + border:1px solid #1e1e1e; + border-radius:2px; + display:none; + margin:8px; + position:absolute; + top:-2px; + transition:box-shadow .2s ease-out; + z-index:20; +} +@media (prefers-reduced-motion:reduce){ + .block-library-gallery-item__inline-menu{ + transition-delay:0s; + transition-duration:0s; + } +} +.block-library-gallery-item__inline-menu:hover{ + box-shadow:0 .7px 1px rgba(0,0,0,.1),0 1.2px 1.7px -.2px rgba(0,0,0,.1),0 2.3px 3.3px -.5px rgba(0,0,0,.1); +} +@media (min-width:600px){ + .columns-7 .block-library-gallery-item__inline-menu,.columns-8 .block-library-gallery-item__inline-menu{ + padding:2px; + } +} +.block-library-gallery-item__inline-menu .components-button.has-icon:not(:focus){ + border:none; + box-shadow:none; +} +@media (min-width:600px){ + .columns-7 .block-library-gallery-item__inline-menu .components-button.has-icon,.columns-8 .block-library-gallery-item__inline-menu .components-button.has-icon{ + height:inherit; + padding:0; + width:inherit; + } +} +.block-library-gallery-item__inline-menu.is-left{ + left:-2px; +} +.block-library-gallery-item__inline-menu.is-right{ + right:-2px; +} + +.wp-block-gallery ul.blocks-gallery-grid{ + margin:0; + padding:0; +} + +@media (min-width:600px){ + .wp-block-update-gallery-modal{ + max-width:480px; + } +} + +.wp-block-update-gallery-modal-buttons{ + display:flex; + gap:12px; + justify-content:flex-end; +}
\ No newline at end of file diff --git a/wp-includes/blocks/gallery/editor.min.css b/wp-includes/blocks/gallery/editor.min.css new file mode 100644 index 0000000..35550e9 --- /dev/null +++ b/wp-includes/blocks/gallery/editor.min.css @@ -0,0 +1 @@ +figure.wp-block-gallery{display:block}figure.wp-block-gallery>.blocks-gallery-caption{flex:0 0 100%}figure.wp-block-gallery>.blocks-gallery-media-placeholder-wrapper{flex-basis:100%}figure.wp-block-gallery .wp-block-image .components-notice.is-error{display:block}figure.wp-block-gallery .wp-block-image .components-notice__content{margin:4px 0}figure.wp-block-gallery .wp-block-image .components-notice__dismiss{position:absolute;right:5px;top:0}figure.wp-block-gallery .block-editor-media-placeholder.is-appender .components-placeholder__label{display:none}figure.wp-block-gallery .block-editor-media-placeholder.is-appender .block-editor-media-placeholder__button{margin-bottom:0}figure.wp-block-gallery .block-editor-media-placeholder{margin:0}figure.wp-block-gallery .block-editor-media-placeholder .components-placeholder__label{display:flex}figure.wp-block-gallery .block-editor-media-placeholder figcaption{z-index:2}figure.wp-block-gallery .components-spinner{left:50%;margin-left:-9px;margin-top:-9px;position:absolute;top:50%}.gallery-settings-buttons .components-button:first-child{margin-right:8px}.gallery-image-sizes .components-base-control__label{display:block;margin-bottom:4px}.gallery-image-sizes .gallery-image-sizes__loading{align-items:center;color:#757575;display:flex;font-size:12px}.gallery-image-sizes .components-spinner{margin:0 8px 0 4px}.blocks-gallery-item figure:not(.is-selected):focus,.blocks-gallery-item img:focus{outline:none}.blocks-gallery-item figure.is-selected:before{bottom:0;box-shadow:0 0 0 1px #fff inset,0 0 0 3px var(--wp-admin-theme-color) inset;content:"";left:0;outline:2px solid transparent;pointer-events:none;position:absolute;right:0;top:0;z-index:1}.blocks-gallery-item figure.is-transient img{opacity:.3}.blocks-gallery-item .is-selected .block-library-gallery-item__inline-menu{display:inline-flex}.blocks-gallery-item .block-editor-media-placeholder{height:100%;margin:0}.blocks-gallery-item .block-editor-media-placeholder .components-placeholder__label{display:flex}.block-library-gallery-item__inline-menu{background:#fff;border:1px solid #1e1e1e;border-radius:2px;display:none;margin:8px;position:absolute;top:-2px;transition:box-shadow .2s ease-out;z-index:20}@media (prefers-reduced-motion:reduce){.block-library-gallery-item__inline-menu{transition-delay:0s;transition-duration:0s}}.block-library-gallery-item__inline-menu:hover{box-shadow:0 .7px 1px rgba(0,0,0,.1),0 1.2px 1.7px -.2px rgba(0,0,0,.1),0 2.3px 3.3px -.5px rgba(0,0,0,.1)}@media (min-width:600px){.columns-7 .block-library-gallery-item__inline-menu,.columns-8 .block-library-gallery-item__inline-menu{padding:2px}}.block-library-gallery-item__inline-menu .components-button.has-icon:not(:focus){border:none;box-shadow:none}@media (min-width:600px){.columns-7 .block-library-gallery-item__inline-menu .components-button.has-icon,.columns-8 .block-library-gallery-item__inline-menu .components-button.has-icon{height:inherit;padding:0;width:inherit}}.block-library-gallery-item__inline-menu.is-left{left:-2px}.block-library-gallery-item__inline-menu.is-right{right:-2px}.wp-block-gallery ul.blocks-gallery-grid{margin:0;padding:0}@media (min-width:600px){.wp-block-update-gallery-modal{max-width:480px}}.wp-block-update-gallery-modal-buttons{display:flex;gap:12px;justify-content:flex-end}
\ No newline at end of file diff --git a/wp-includes/blocks/gallery/style-rtl.css b/wp-includes/blocks/gallery/style-rtl.css new file mode 100644 index 0000000..bbfa0b0 --- /dev/null +++ b/wp-includes/blocks/gallery/style-rtl.css @@ -0,0 +1,230 @@ +.blocks-gallery-grid:not(.has-nested-images),.wp-block-gallery:not(.has-nested-images){ + display:flex; + flex-wrap:wrap; + list-style-type:none; + margin:0; + padding:0; +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item{ + display:flex; + flex-direction:column; + flex-grow:1; + justify-content:center; + margin:0 0 1em 1em; + position:relative; + width:calc(50% - 1em); +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item:nth-of-type(2n){ + margin-left:0; +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image figure,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item figure,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image figure,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item figure{ + align-items:flex-end; + display:flex; + height:100%; + justify-content:flex-start; + margin:0; +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image img,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item img{ + display:block; + height:auto; + max-width:100%; + width:auto; +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image figcaption,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item figcaption,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image figcaption,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item figcaption{ + background:linear-gradient(0deg, rgba(0,0,0,.7), rgba(0,0,0,.3) 70%, transparent); + bottom:0; + box-sizing:border-box; + color:#fff; + font-size:.8em; + margin:0; + max-height:100%; + overflow:auto; + padding:3em .77em .7em; + position:absolute; + text-align:center; + width:100%; + z-index:2; +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image figcaption img,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item figcaption img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image figcaption img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item figcaption img{ + display:inline; +} +.blocks-gallery-grid:not(.has-nested-images) figcaption,.wp-block-gallery:not(.has-nested-images) figcaption{ + flex-grow:1; +} +.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-image a,.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-image img,.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-item a,.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-item img,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-image a,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-image img,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-item a,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-item img{ + flex:1; + height:100%; + object-fit:cover; + width:100%; +} +.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-item{ + margin-left:0; + width:100%; +} +@media (min-width:600px){ + .blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-item{ + margin-left:1em; + width:calc(33.33333% - .66667em); + } + .blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-item{ + margin-left:1em; + width:calc(25% - .75em); + } + .blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-item{ + margin-left:1em; + width:calc(20% - .8em); + } + .blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-item{ + margin-left:1em; + width:calc(16.66667% - .83333em); + } + .blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-item{ + margin-left:1em; + width:calc(14.28571% - .85714em); + } + .blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-item{ + margin-left:1em; + width:calc(12.5% - .875em); + } + .blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-image:nth-of-type(1n),.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-item:nth-of-type(1n),.blocks-gallery-grid:not(.has-nested-images).columns-2 .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid:not(.has-nested-images).columns-2 .blocks-gallery-item:nth-of-type(2n),.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-image:nth-of-type(3n),.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-item:nth-of-type(3n),.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-image:nth-of-type(4n),.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-item:nth-of-type(4n),.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-image:nth-of-type(5n),.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-item:nth-of-type(5n),.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-image:nth-of-type(6n),.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-item:nth-of-type(6n),.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-image:nth-of-type(7n),.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-item:nth-of-type(7n),.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-image:nth-of-type(8n),.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-item:nth-of-type(8n),.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-image:nth-of-type(1n),.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-item:nth-of-type(1n),.wp-block-gallery:not(.has-nested-images).columns-2 .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images).columns-2 .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-image:nth-of-type(3n),.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-item:nth-of-type(3n),.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-image:nth-of-type(4n),.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-item:nth-of-type(4n),.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-image:nth-of-type(5n),.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-item:nth-of-type(5n),.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-image:nth-of-type(6n),.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-item:nth-of-type(6n),.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-image:nth-of-type(7n),.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-item:nth-of-type(7n),.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-image:nth-of-type(8n),.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-item:nth-of-type(8n){ + margin-left:0; + } +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image:last-child,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item:last-child,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image:last-child,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item:last-child{ + margin-left:0; +} +.blocks-gallery-grid:not(.has-nested-images).alignleft,.blocks-gallery-grid:not(.has-nested-images).alignright,.wp-block-gallery:not(.has-nested-images).alignleft,.wp-block-gallery:not(.has-nested-images).alignright{ + max-width:420px; + width:100%; +} +.blocks-gallery-grid:not(.has-nested-images).aligncenter .blocks-gallery-item figure,.wp-block-gallery:not(.has-nested-images).aligncenter .blocks-gallery-item figure{ + justify-content:center; +} + +.wp-block-gallery:not(.is-cropped) .blocks-gallery-item{ + align-self:flex-start; +} + +figure.wp-block-gallery.has-nested-images{ + align-items:normal; +} + +.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image){ + margin:0; + width:calc(50% - var(--wp--style--unstable-gallery-gap, 16px)/2); +} +.wp-block-gallery.has-nested-images figure.wp-block-image{ + box-sizing:border-box; + display:flex; + flex-direction:column; + flex-grow:1; + justify-content:center; + max-width:100%; + position:relative; +} +.wp-block-gallery.has-nested-images figure.wp-block-image>a,.wp-block-gallery.has-nested-images figure.wp-block-image>div{ + flex-direction:column; + flex-grow:1; + margin:0; +} +.wp-block-gallery.has-nested-images figure.wp-block-image img{ + display:block; + height:auto; + max-width:100% !important; + width:auto; +} +.wp-block-gallery.has-nested-images figure.wp-block-image figcaption{ + background:linear-gradient(0deg, rgba(0,0,0,.7), rgba(0,0,0,.3) 70%, transparent); + bottom:0; + box-sizing:border-box; + color:#fff; + font-size:13px; + margin-bottom:0; + max-height:60%; + overflow:auto; + padding:0 8px 8px; + position:absolute; + right:0; + text-align:center; + width:100%; +} +.wp-block-gallery.has-nested-images figure.wp-block-image figcaption img{ + display:inline; +} +.wp-block-gallery.has-nested-images figure.wp-block-image figcaption a{ + color:inherit; +} +.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border img{ + box-sizing:border-box; +} +.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border>a,.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border>div,.wp-block-gallery.has-nested-images figure.wp-block-image.is-style-rounded>a,.wp-block-gallery.has-nested-images figure.wp-block-image.is-style-rounded>div{ + flex:1 1 auto; +} +.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border figcaption,.wp-block-gallery.has-nested-images figure.wp-block-image.is-style-rounded figcaption{ + background:none; + color:inherit; + flex:initial; + margin:0; + padding:10px 10px 9px; + position:relative; +} +.wp-block-gallery.has-nested-images figcaption{ + flex-basis:100%; + flex-grow:1; + text-align:center; +} +.wp-block-gallery.has-nested-images:not(.is-cropped) figure.wp-block-image:not(#individual-image){ + margin-bottom:auto; + margin-top:0; +} +.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image){ + align-self:inherit; +} +.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image)>a,.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image)>div:not(.components-drop-zone){ + display:flex; +} +.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image) a,.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image) img{ + flex:1 0 0%; + height:100%; + object-fit:cover; + width:100%; +} +.wp-block-gallery.has-nested-images.columns-1 figure.wp-block-image:not(#individual-image){ + width:100%; +} +@media (min-width:600px){ + .wp-block-gallery.has-nested-images.columns-3 figure.wp-block-image:not(#individual-image){ + width:calc(33.33333% - var(--wp--style--unstable-gallery-gap, 16px)*.66667); + } + .wp-block-gallery.has-nested-images.columns-4 figure.wp-block-image:not(#individual-image){ + width:calc(25% - var(--wp--style--unstable-gallery-gap, 16px)*.75); + } + .wp-block-gallery.has-nested-images.columns-5 figure.wp-block-image:not(#individual-image){ + width:calc(20% - var(--wp--style--unstable-gallery-gap, 16px)*.8); + } + .wp-block-gallery.has-nested-images.columns-6 figure.wp-block-image:not(#individual-image){ + width:calc(16.66667% - var(--wp--style--unstable-gallery-gap, 16px)*.83333); + } + .wp-block-gallery.has-nested-images.columns-7 figure.wp-block-image:not(#individual-image){ + width:calc(14.28571% - var(--wp--style--unstable-gallery-gap, 16px)*.85714); + } + .wp-block-gallery.has-nested-images.columns-8 figure.wp-block-image:not(#individual-image){ + width:calc(12.5% - var(--wp--style--unstable-gallery-gap, 16px)*.875); + } + .wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image){ + width:calc(33.33% - var(--wp--style--unstable-gallery-gap, 16px)*.66667); + } + .wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:nth-last-child(2),.wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:nth-last-child(2)~figure.wp-block-image:not(#individual-image){ + width:calc(50% - var(--wp--style--unstable-gallery-gap, 16px)*.5); + } + .wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:last-child{ + width:100%; + } +} +.wp-block-gallery.has-nested-images.alignleft,.wp-block-gallery.has-nested-images.alignright{ + max-width:420px; + width:100%; +} +.wp-block-gallery.has-nested-images.aligncenter{ + justify-content:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/gallery/style-rtl.min.css b/wp-includes/blocks/gallery/style-rtl.min.css new file mode 100644 index 0000000..ec4c42e --- /dev/null +++ b/wp-includes/blocks/gallery/style-rtl.min.css @@ -0,0 +1 @@ +.blocks-gallery-grid:not(.has-nested-images),.wp-block-gallery:not(.has-nested-images){display:flex;flex-wrap:wrap;list-style-type:none;margin:0;padding:0}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item{display:flex;flex-direction:column;flex-grow:1;justify-content:center;margin:0 0 1em 1em;position:relative;width:calc(50% - 1em)}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item:nth-of-type(2n){margin-left:0}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image figure,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item figure,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image figure,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item figure{align-items:flex-end;display:flex;height:100%;justify-content:flex-start;margin:0}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image img,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item img{display:block;height:auto;max-width:100%;width:auto}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image figcaption,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item figcaption,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image figcaption,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item figcaption{background:linear-gradient(0deg,rgba(0,0,0,.7),rgba(0,0,0,.3) 70%,transparent);bottom:0;box-sizing:border-box;color:#fff;font-size:.8em;margin:0;max-height:100%;overflow:auto;padding:3em .77em .7em;position:absolute;text-align:center;width:100%;z-index:2}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image figcaption img,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item figcaption img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image figcaption img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item figcaption img{display:inline}.blocks-gallery-grid:not(.has-nested-images) figcaption,.wp-block-gallery:not(.has-nested-images) figcaption{flex-grow:1}.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-image a,.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-image img,.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-item a,.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-item img,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-image a,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-image img,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-item a,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-item img{flex:1;height:100%;object-fit:cover;width:100%}.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-item{margin-left:0;width:100%}@media (min-width:600px){.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-item{margin-left:1em;width:calc(33.33333% - .66667em)}.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-item{margin-left:1em;width:calc(25% - .75em)}.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-item{margin-left:1em;width:calc(20% - .8em)}.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-item{margin-left:1em;width:calc(16.66667% - .83333em)}.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-item{margin-left:1em;width:calc(14.28571% - .85714em)}.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-item{margin-left:1em;width:calc(12.5% - .875em)}.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-image:nth-of-type(1n),.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-item:nth-of-type(1n),.blocks-gallery-grid:not(.has-nested-images).columns-2 .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid:not(.has-nested-images).columns-2 .blocks-gallery-item:nth-of-type(2n),.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-image:nth-of-type(3n),.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-item:nth-of-type(3n),.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-image:nth-of-type(4n),.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-item:nth-of-type(4n),.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-image:nth-of-type(5n),.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-item:nth-of-type(5n),.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-image:nth-of-type(6n),.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-item:nth-of-type(6n),.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-image:nth-of-type(7n),.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-item:nth-of-type(7n),.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-image:nth-of-type(8n),.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-item:nth-of-type(8n),.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-image:nth-of-type(1n),.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-item:nth-of-type(1n),.wp-block-gallery:not(.has-nested-images).columns-2 .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images).columns-2 .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-image:nth-of-type(3n),.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-item:nth-of-type(3n),.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-image:nth-of-type(4n),.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-item:nth-of-type(4n),.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-image:nth-of-type(5n),.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-item:nth-of-type(5n),.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-image:nth-of-type(6n),.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-item:nth-of-type(6n),.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-image:nth-of-type(7n),.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-item:nth-of-type(7n),.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-image:nth-of-type(8n),.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-item:nth-of-type(8n){margin-left:0}}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image:last-child,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item:last-child,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image:last-child,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item:last-child{margin-left:0}.blocks-gallery-grid:not(.has-nested-images).alignleft,.blocks-gallery-grid:not(.has-nested-images).alignright,.wp-block-gallery:not(.has-nested-images).alignleft,.wp-block-gallery:not(.has-nested-images).alignright{max-width:420px;width:100%}.blocks-gallery-grid:not(.has-nested-images).aligncenter .blocks-gallery-item figure,.wp-block-gallery:not(.has-nested-images).aligncenter .blocks-gallery-item figure{justify-content:center}.wp-block-gallery:not(.is-cropped) .blocks-gallery-item{align-self:flex-start}figure.wp-block-gallery.has-nested-images{align-items:normal}.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image){margin:0;width:calc(50% - var(--wp--style--unstable-gallery-gap, 16px)/2)}.wp-block-gallery.has-nested-images figure.wp-block-image{box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;max-width:100%;position:relative}.wp-block-gallery.has-nested-images figure.wp-block-image>a,.wp-block-gallery.has-nested-images figure.wp-block-image>div{flex-direction:column;flex-grow:1;margin:0}.wp-block-gallery.has-nested-images figure.wp-block-image img{display:block;height:auto;max-width:100%!important;width:auto}.wp-block-gallery.has-nested-images figure.wp-block-image figcaption{background:linear-gradient(0deg,rgba(0,0,0,.7),rgba(0,0,0,.3) 70%,transparent);bottom:0;box-sizing:border-box;color:#fff;font-size:13px;margin-bottom:0;max-height:60%;overflow:auto;padding:0 8px 8px;position:absolute;right:0;text-align:center;width:100%}.wp-block-gallery.has-nested-images figure.wp-block-image figcaption img{display:inline}.wp-block-gallery.has-nested-images figure.wp-block-image figcaption a{color:inherit}.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border>a,.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border>div,.wp-block-gallery.has-nested-images figure.wp-block-image.is-style-rounded>a,.wp-block-gallery.has-nested-images figure.wp-block-image.is-style-rounded>div{flex:1 1 auto}.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border figcaption,.wp-block-gallery.has-nested-images figure.wp-block-image.is-style-rounded figcaption{background:none;color:inherit;flex:initial;margin:0;padding:10px 10px 9px;position:relative}.wp-block-gallery.has-nested-images figcaption{flex-basis:100%;flex-grow:1;text-align:center}.wp-block-gallery.has-nested-images:not(.is-cropped) figure.wp-block-image:not(#individual-image){margin-bottom:auto;margin-top:0}.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image){align-self:inherit}.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image)>a,.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image)>div:not(.components-drop-zone){display:flex}.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image) a,.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image) img{flex:1 0 0%;height:100%;object-fit:cover;width:100%}.wp-block-gallery.has-nested-images.columns-1 figure.wp-block-image:not(#individual-image){width:100%}@media (min-width:600px){.wp-block-gallery.has-nested-images.columns-3 figure.wp-block-image:not(#individual-image){width:calc(33.33333% - var(--wp--style--unstable-gallery-gap, 16px)*.66667)}.wp-block-gallery.has-nested-images.columns-4 figure.wp-block-image:not(#individual-image){width:calc(25% - var(--wp--style--unstable-gallery-gap, 16px)*.75)}.wp-block-gallery.has-nested-images.columns-5 figure.wp-block-image:not(#individual-image){width:calc(20% - var(--wp--style--unstable-gallery-gap, 16px)*.8)}.wp-block-gallery.has-nested-images.columns-6 figure.wp-block-image:not(#individual-image){width:calc(16.66667% - var(--wp--style--unstable-gallery-gap, 16px)*.83333)}.wp-block-gallery.has-nested-images.columns-7 figure.wp-block-image:not(#individual-image){width:calc(14.28571% - var(--wp--style--unstable-gallery-gap, 16px)*.85714)}.wp-block-gallery.has-nested-images.columns-8 figure.wp-block-image:not(#individual-image){width:calc(12.5% - var(--wp--style--unstable-gallery-gap, 16px)*.875)}.wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image){width:calc(33.33% - var(--wp--style--unstable-gallery-gap, 16px)*.66667)}.wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:nth-last-child(2),.wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:nth-last-child(2)~figure.wp-block-image:not(#individual-image){width:calc(50% - var(--wp--style--unstable-gallery-gap, 16px)*.5)}.wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:last-child{width:100%}}.wp-block-gallery.has-nested-images.alignleft,.wp-block-gallery.has-nested-images.alignright{max-width:420px;width:100%}.wp-block-gallery.has-nested-images.aligncenter{justify-content:center}
\ No newline at end of file diff --git a/wp-includes/blocks/gallery/style.css b/wp-includes/blocks/gallery/style.css new file mode 100644 index 0000000..fb2a073 --- /dev/null +++ b/wp-includes/blocks/gallery/style.css @@ -0,0 +1,230 @@ +.blocks-gallery-grid:not(.has-nested-images),.wp-block-gallery:not(.has-nested-images){ + display:flex; + flex-wrap:wrap; + list-style-type:none; + margin:0; + padding:0; +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item{ + display:flex; + flex-direction:column; + flex-grow:1; + justify-content:center; + margin:0 1em 1em 0; + position:relative; + width:calc(50% - 1em); +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item:nth-of-type(2n){ + margin-right:0; +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image figure,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item figure,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image figure,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item figure{ + align-items:flex-end; + display:flex; + height:100%; + justify-content:flex-start; + margin:0; +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image img,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item img{ + display:block; + height:auto; + max-width:100%; + width:auto; +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image figcaption,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item figcaption,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image figcaption,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item figcaption{ + background:linear-gradient(0deg, rgba(0,0,0,.7), rgba(0,0,0,.3) 70%, transparent); + bottom:0; + box-sizing:border-box; + color:#fff; + font-size:.8em; + margin:0; + max-height:100%; + overflow:auto; + padding:3em .77em .7em; + position:absolute; + text-align:center; + width:100%; + z-index:2; +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image figcaption img,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item figcaption img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image figcaption img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item figcaption img{ + display:inline; +} +.blocks-gallery-grid:not(.has-nested-images) figcaption,.wp-block-gallery:not(.has-nested-images) figcaption{ + flex-grow:1; +} +.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-image a,.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-image img,.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-item a,.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-item img,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-image a,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-image img,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-item a,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-item img{ + flex:1; + height:100%; + object-fit:cover; + width:100%; +} +.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-item{ + margin-right:0; + width:100%; +} +@media (min-width:600px){ + .blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-item{ + margin-right:1em; + width:calc(33.33333% - .66667em); + } + .blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-item{ + margin-right:1em; + width:calc(25% - .75em); + } + .blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-item{ + margin-right:1em; + width:calc(20% - .8em); + } + .blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-item{ + margin-right:1em; + width:calc(16.66667% - .83333em); + } + .blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-item{ + margin-right:1em; + width:calc(14.28571% - .85714em); + } + .blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-item{ + margin-right:1em; + width:calc(12.5% - .875em); + } + .blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-image:nth-of-type(1n),.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-item:nth-of-type(1n),.blocks-gallery-grid:not(.has-nested-images).columns-2 .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid:not(.has-nested-images).columns-2 .blocks-gallery-item:nth-of-type(2n),.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-image:nth-of-type(3n),.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-item:nth-of-type(3n),.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-image:nth-of-type(4n),.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-item:nth-of-type(4n),.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-image:nth-of-type(5n),.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-item:nth-of-type(5n),.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-image:nth-of-type(6n),.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-item:nth-of-type(6n),.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-image:nth-of-type(7n),.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-item:nth-of-type(7n),.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-image:nth-of-type(8n),.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-item:nth-of-type(8n),.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-image:nth-of-type(1n),.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-item:nth-of-type(1n),.wp-block-gallery:not(.has-nested-images).columns-2 .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images).columns-2 .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-image:nth-of-type(3n),.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-item:nth-of-type(3n),.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-image:nth-of-type(4n),.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-item:nth-of-type(4n),.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-image:nth-of-type(5n),.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-item:nth-of-type(5n),.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-image:nth-of-type(6n),.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-item:nth-of-type(6n),.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-image:nth-of-type(7n),.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-item:nth-of-type(7n),.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-image:nth-of-type(8n),.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-item:nth-of-type(8n){ + margin-right:0; + } +} +.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image:last-child,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item:last-child,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image:last-child,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item:last-child{ + margin-right:0; +} +.blocks-gallery-grid:not(.has-nested-images).alignleft,.blocks-gallery-grid:not(.has-nested-images).alignright,.wp-block-gallery:not(.has-nested-images).alignleft,.wp-block-gallery:not(.has-nested-images).alignright{ + max-width:420px; + width:100%; +} +.blocks-gallery-grid:not(.has-nested-images).aligncenter .blocks-gallery-item figure,.wp-block-gallery:not(.has-nested-images).aligncenter .blocks-gallery-item figure{ + justify-content:center; +} + +.wp-block-gallery:not(.is-cropped) .blocks-gallery-item{ + align-self:flex-start; +} + +figure.wp-block-gallery.has-nested-images{ + align-items:normal; +} + +.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image){ + margin:0; + width:calc(50% - var(--wp--style--unstable-gallery-gap, 16px)/2); +} +.wp-block-gallery.has-nested-images figure.wp-block-image{ + box-sizing:border-box; + display:flex; + flex-direction:column; + flex-grow:1; + justify-content:center; + max-width:100%; + position:relative; +} +.wp-block-gallery.has-nested-images figure.wp-block-image>a,.wp-block-gallery.has-nested-images figure.wp-block-image>div{ + flex-direction:column; + flex-grow:1; + margin:0; +} +.wp-block-gallery.has-nested-images figure.wp-block-image img{ + display:block; + height:auto; + max-width:100% !important; + width:auto; +} +.wp-block-gallery.has-nested-images figure.wp-block-image figcaption{ + background:linear-gradient(0deg, rgba(0,0,0,.7), rgba(0,0,0,.3) 70%, transparent); + bottom:0; + box-sizing:border-box; + color:#fff; + font-size:13px; + left:0; + margin-bottom:0; + max-height:60%; + overflow:auto; + padding:0 8px 8px; + position:absolute; + text-align:center; + width:100%; +} +.wp-block-gallery.has-nested-images figure.wp-block-image figcaption img{ + display:inline; +} +.wp-block-gallery.has-nested-images figure.wp-block-image figcaption a{ + color:inherit; +} +.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border img{ + box-sizing:border-box; +} +.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border>a,.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border>div,.wp-block-gallery.has-nested-images figure.wp-block-image.is-style-rounded>a,.wp-block-gallery.has-nested-images figure.wp-block-image.is-style-rounded>div{ + flex:1 1 auto; +} +.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border figcaption,.wp-block-gallery.has-nested-images figure.wp-block-image.is-style-rounded figcaption{ + background:none; + color:inherit; + flex:initial; + margin:0; + padding:10px 10px 9px; + position:relative; +} +.wp-block-gallery.has-nested-images figcaption{ + flex-basis:100%; + flex-grow:1; + text-align:center; +} +.wp-block-gallery.has-nested-images:not(.is-cropped) figure.wp-block-image:not(#individual-image){ + margin-bottom:auto; + margin-top:0; +} +.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image){ + align-self:inherit; +} +.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image)>a,.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image)>div:not(.components-drop-zone){ + display:flex; +} +.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image) a,.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image) img{ + flex:1 0 0%; + height:100%; + object-fit:cover; + width:100%; +} +.wp-block-gallery.has-nested-images.columns-1 figure.wp-block-image:not(#individual-image){ + width:100%; +} +@media (min-width:600px){ + .wp-block-gallery.has-nested-images.columns-3 figure.wp-block-image:not(#individual-image){ + width:calc(33.33333% - var(--wp--style--unstable-gallery-gap, 16px)*.66667); + } + .wp-block-gallery.has-nested-images.columns-4 figure.wp-block-image:not(#individual-image){ + width:calc(25% - var(--wp--style--unstable-gallery-gap, 16px)*.75); + } + .wp-block-gallery.has-nested-images.columns-5 figure.wp-block-image:not(#individual-image){ + width:calc(20% - var(--wp--style--unstable-gallery-gap, 16px)*.8); + } + .wp-block-gallery.has-nested-images.columns-6 figure.wp-block-image:not(#individual-image){ + width:calc(16.66667% - var(--wp--style--unstable-gallery-gap, 16px)*.83333); + } + .wp-block-gallery.has-nested-images.columns-7 figure.wp-block-image:not(#individual-image){ + width:calc(14.28571% - var(--wp--style--unstable-gallery-gap, 16px)*.85714); + } + .wp-block-gallery.has-nested-images.columns-8 figure.wp-block-image:not(#individual-image){ + width:calc(12.5% - var(--wp--style--unstable-gallery-gap, 16px)*.875); + } + .wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image){ + width:calc(33.33% - var(--wp--style--unstable-gallery-gap, 16px)*.66667); + } + .wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:nth-last-child(2),.wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:nth-last-child(2)~figure.wp-block-image:not(#individual-image){ + width:calc(50% - var(--wp--style--unstable-gallery-gap, 16px)*.5); + } + .wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:last-child{ + width:100%; + } +} +.wp-block-gallery.has-nested-images.alignleft,.wp-block-gallery.has-nested-images.alignright{ + max-width:420px; + width:100%; +} +.wp-block-gallery.has-nested-images.aligncenter{ + justify-content:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/gallery/style.min.css b/wp-includes/blocks/gallery/style.min.css new file mode 100644 index 0000000..a5ab123 --- /dev/null +++ b/wp-includes/blocks/gallery/style.min.css @@ -0,0 +1 @@ +.blocks-gallery-grid:not(.has-nested-images),.wp-block-gallery:not(.has-nested-images){display:flex;flex-wrap:wrap;list-style-type:none;margin:0;padding:0}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item{display:flex;flex-direction:column;flex-grow:1;justify-content:center;margin:0 1em 1em 0;position:relative;width:calc(50% - 1em)}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item:nth-of-type(2n){margin-right:0}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image figure,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item figure,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image figure,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item figure{align-items:flex-end;display:flex;height:100%;justify-content:flex-start;margin:0}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image img,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item img{display:block;height:auto;max-width:100%;width:auto}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image figcaption,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item figcaption,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image figcaption,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item figcaption{background:linear-gradient(0deg,rgba(0,0,0,.7),rgba(0,0,0,.3) 70%,transparent);bottom:0;box-sizing:border-box;color:#fff;font-size:.8em;margin:0;max-height:100%;overflow:auto;padding:3em .77em .7em;position:absolute;text-align:center;width:100%;z-index:2}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image figcaption img,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item figcaption img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image figcaption img,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item figcaption img{display:inline}.blocks-gallery-grid:not(.has-nested-images) figcaption,.wp-block-gallery:not(.has-nested-images) figcaption{flex-grow:1}.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-image a,.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-image img,.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-item a,.blocks-gallery-grid:not(.has-nested-images).is-cropped .blocks-gallery-item img,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-image a,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-image img,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-item a,.wp-block-gallery:not(.has-nested-images).is-cropped .blocks-gallery-item img{flex:1;height:100%;object-fit:cover;width:100%}.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-item{margin-right:0;width:100%}@media (min-width:600px){.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-item{margin-right:1em;width:calc(33.33333% - .66667em)}.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-item{margin-right:1em;width:calc(25% - .75em)}.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-item{margin-right:1em;width:calc(20% - .8em)}.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-item{margin-right:1em;width:calc(16.66667% - .83333em)}.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-item{margin-right:1em;width:calc(14.28571% - .85714em)}.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-image,.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-item,.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-image,.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-item{margin-right:1em;width:calc(12.5% - .875em)}.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-image:nth-of-type(1n),.blocks-gallery-grid:not(.has-nested-images).columns-1 .blocks-gallery-item:nth-of-type(1n),.blocks-gallery-grid:not(.has-nested-images).columns-2 .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid:not(.has-nested-images).columns-2 .blocks-gallery-item:nth-of-type(2n),.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-image:nth-of-type(3n),.blocks-gallery-grid:not(.has-nested-images).columns-3 .blocks-gallery-item:nth-of-type(3n),.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-image:nth-of-type(4n),.blocks-gallery-grid:not(.has-nested-images).columns-4 .blocks-gallery-item:nth-of-type(4n),.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-image:nth-of-type(5n),.blocks-gallery-grid:not(.has-nested-images).columns-5 .blocks-gallery-item:nth-of-type(5n),.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-image:nth-of-type(6n),.blocks-gallery-grid:not(.has-nested-images).columns-6 .blocks-gallery-item:nth-of-type(6n),.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-image:nth-of-type(7n),.blocks-gallery-grid:not(.has-nested-images).columns-7 .blocks-gallery-item:nth-of-type(7n),.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-image:nth-of-type(8n),.blocks-gallery-grid:not(.has-nested-images).columns-8 .blocks-gallery-item:nth-of-type(8n),.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-image:nth-of-type(1n),.wp-block-gallery:not(.has-nested-images).columns-1 .blocks-gallery-item:nth-of-type(1n),.wp-block-gallery:not(.has-nested-images).columns-2 .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images).columns-2 .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-image:nth-of-type(3n),.wp-block-gallery:not(.has-nested-images).columns-3 .blocks-gallery-item:nth-of-type(3n),.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-image:nth-of-type(4n),.wp-block-gallery:not(.has-nested-images).columns-4 .blocks-gallery-item:nth-of-type(4n),.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-image:nth-of-type(5n),.wp-block-gallery:not(.has-nested-images).columns-5 .blocks-gallery-item:nth-of-type(5n),.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-image:nth-of-type(6n),.wp-block-gallery:not(.has-nested-images).columns-6 .blocks-gallery-item:nth-of-type(6n),.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-image:nth-of-type(7n),.wp-block-gallery:not(.has-nested-images).columns-7 .blocks-gallery-item:nth-of-type(7n),.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-image:nth-of-type(8n),.wp-block-gallery:not(.has-nested-images).columns-8 .blocks-gallery-item:nth-of-type(8n){margin-right:0}}.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-image:last-child,.blocks-gallery-grid:not(.has-nested-images) .blocks-gallery-item:last-child,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-image:last-child,.wp-block-gallery:not(.has-nested-images) .blocks-gallery-item:last-child{margin-right:0}.blocks-gallery-grid:not(.has-nested-images).alignleft,.blocks-gallery-grid:not(.has-nested-images).alignright,.wp-block-gallery:not(.has-nested-images).alignleft,.wp-block-gallery:not(.has-nested-images).alignright{max-width:420px;width:100%}.blocks-gallery-grid:not(.has-nested-images).aligncenter .blocks-gallery-item figure,.wp-block-gallery:not(.has-nested-images).aligncenter .blocks-gallery-item figure{justify-content:center}.wp-block-gallery:not(.is-cropped) .blocks-gallery-item{align-self:flex-start}figure.wp-block-gallery.has-nested-images{align-items:normal}.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image){margin:0;width:calc(50% - var(--wp--style--unstable-gallery-gap, 16px)/2)}.wp-block-gallery.has-nested-images figure.wp-block-image{box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;max-width:100%;position:relative}.wp-block-gallery.has-nested-images figure.wp-block-image>a,.wp-block-gallery.has-nested-images figure.wp-block-image>div{flex-direction:column;flex-grow:1;margin:0}.wp-block-gallery.has-nested-images figure.wp-block-image img{display:block;height:auto;max-width:100%!important;width:auto}.wp-block-gallery.has-nested-images figure.wp-block-image figcaption{background:linear-gradient(0deg,rgba(0,0,0,.7),rgba(0,0,0,.3) 70%,transparent);bottom:0;box-sizing:border-box;color:#fff;font-size:13px;left:0;margin-bottom:0;max-height:60%;overflow:auto;padding:0 8px 8px;position:absolute;text-align:center;width:100%}.wp-block-gallery.has-nested-images figure.wp-block-image figcaption img{display:inline}.wp-block-gallery.has-nested-images figure.wp-block-image figcaption a{color:inherit}.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border>a,.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border>div,.wp-block-gallery.has-nested-images figure.wp-block-image.is-style-rounded>a,.wp-block-gallery.has-nested-images figure.wp-block-image.is-style-rounded>div{flex:1 1 auto}.wp-block-gallery.has-nested-images figure.wp-block-image.has-custom-border figcaption,.wp-block-gallery.has-nested-images figure.wp-block-image.is-style-rounded figcaption{background:none;color:inherit;flex:initial;margin:0;padding:10px 10px 9px;position:relative}.wp-block-gallery.has-nested-images figcaption{flex-basis:100%;flex-grow:1;text-align:center}.wp-block-gallery.has-nested-images:not(.is-cropped) figure.wp-block-image:not(#individual-image){margin-bottom:auto;margin-top:0}.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image){align-self:inherit}.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image)>a,.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image)>div:not(.components-drop-zone){display:flex}.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image) a,.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image) img{flex:1 0 0%;height:100%;object-fit:cover;width:100%}.wp-block-gallery.has-nested-images.columns-1 figure.wp-block-image:not(#individual-image){width:100%}@media (min-width:600px){.wp-block-gallery.has-nested-images.columns-3 figure.wp-block-image:not(#individual-image){width:calc(33.33333% - var(--wp--style--unstable-gallery-gap, 16px)*.66667)}.wp-block-gallery.has-nested-images.columns-4 figure.wp-block-image:not(#individual-image){width:calc(25% - var(--wp--style--unstable-gallery-gap, 16px)*.75)}.wp-block-gallery.has-nested-images.columns-5 figure.wp-block-image:not(#individual-image){width:calc(20% - var(--wp--style--unstable-gallery-gap, 16px)*.8)}.wp-block-gallery.has-nested-images.columns-6 figure.wp-block-image:not(#individual-image){width:calc(16.66667% - var(--wp--style--unstable-gallery-gap, 16px)*.83333)}.wp-block-gallery.has-nested-images.columns-7 figure.wp-block-image:not(#individual-image){width:calc(14.28571% - var(--wp--style--unstable-gallery-gap, 16px)*.85714)}.wp-block-gallery.has-nested-images.columns-8 figure.wp-block-image:not(#individual-image){width:calc(12.5% - var(--wp--style--unstable-gallery-gap, 16px)*.875)}.wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image){width:calc(33.33% - var(--wp--style--unstable-gallery-gap, 16px)*.66667)}.wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:nth-last-child(2),.wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:nth-last-child(2)~figure.wp-block-image:not(#individual-image){width:calc(50% - var(--wp--style--unstable-gallery-gap, 16px)*.5)}.wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:last-child{width:100%}}.wp-block-gallery.has-nested-images.alignleft,.wp-block-gallery.has-nested-images.alignright{max-width:420px;width:100%}.wp-block-gallery.has-nested-images.aligncenter{justify-content:center}
\ No newline at end of file diff --git a/wp-includes/blocks/gallery/theme-rtl.css b/wp-includes/blocks/gallery/theme-rtl.css new file mode 100644 index 0000000..94a485a --- /dev/null +++ b/wp-includes/blocks/gallery/theme-rtl.css @@ -0,0 +1,8 @@ +.blocks-gallery-caption{ + color:#555; + font-size:13px; + text-align:center; +} +.is-dark-theme .blocks-gallery-caption{ + color:hsla(0,0%,100%,.65); +}
\ No newline at end of file diff --git a/wp-includes/blocks/gallery/theme-rtl.min.css b/wp-includes/blocks/gallery/theme-rtl.min.css new file mode 100644 index 0000000..fe8cd6a --- /dev/null +++ b/wp-includes/blocks/gallery/theme-rtl.min.css @@ -0,0 +1 @@ +.blocks-gallery-caption{color:#555;font-size:13px;text-align:center}.is-dark-theme .blocks-gallery-caption{color:hsla(0,0%,100%,.65)}
\ No newline at end of file diff --git a/wp-includes/blocks/gallery/theme.css b/wp-includes/blocks/gallery/theme.css new file mode 100644 index 0000000..94a485a --- /dev/null +++ b/wp-includes/blocks/gallery/theme.css @@ -0,0 +1,8 @@ +.blocks-gallery-caption{ + color:#555; + font-size:13px; + text-align:center; +} +.is-dark-theme .blocks-gallery-caption{ + color:hsla(0,0%,100%,.65); +}
\ No newline at end of file diff --git a/wp-includes/blocks/gallery/theme.min.css b/wp-includes/blocks/gallery/theme.min.css new file mode 100644 index 0000000..fe8cd6a --- /dev/null +++ b/wp-includes/blocks/gallery/theme.min.css @@ -0,0 +1 @@ +.blocks-gallery-caption{color:#555;font-size:13px;text-align:center}.is-dark-theme .blocks-gallery-caption{color:hsla(0,0%,100%,.65)}
\ No newline at end of file diff --git a/wp-includes/blocks/group/block.json b/wp-includes/blocks/group/block.json new file mode 100644 index 0000000..4b89d86 --- /dev/null +++ b/wp-includes/blocks/group/block.json @@ -0,0 +1,91 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/group", + "title": "Group", + "category": "design", + "description": "Gather blocks in a layout container.", + "keywords": [ "container", "wrapper", "row", "section" ], + "textdomain": "default", + "attributes": { + "tagName": { + "type": "string", + "default": "div" + }, + "templateLock": { + "type": [ "string", "boolean" ], + "enum": [ "all", "insert", "contentOnly", false ] + }, + "allowedBlocks": { + "type": "array" + } + }, + "supports": { + "__experimentalOnEnter": true, + "__experimentalOnMerge": true, + "__experimentalSettings": true, + "__experimentalMetadata": true, + "align": [ "wide", "full" ], + "anchor": true, + "ariaLabel": true, + "html": false, + "background": { + "backgroundImage": true + }, + "color": { + "gradients": true, + "heading": true, + "button": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "spacing": { + "margin": [ "top", "bottom" ], + "padding": true, + "blockGap": true, + "__experimentalDefaultControls": { + "padding": true, + "blockGap": true + } + }, + "dimensions": { + "minHeight": true + }, + "__experimentalBorder": { + "color": true, + "radius": true, + "style": true, + "width": true, + "__experimentalDefaultControls": { + "color": true, + "radius": true, + "style": true, + "width": true + } + }, + "position": { + "sticky": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "layout": { + "allowSizingOnChildren": true + } + }, + "editorStyle": "wp-block-group-editor", + "style": "wp-block-group" +} diff --git a/wp-includes/blocks/group/editor-rtl.css b/wp-includes/blocks/group/editor-rtl.css new file mode 100644 index 0000000..78cb04e --- /dev/null +++ b/wp-includes/blocks/group/editor-rtl.css @@ -0,0 +1,90 @@ +.wp-block-group .block-editor-block-list__insertion-point{ + left:0; + right:0; +} + +[data-type="core/group"].is-selected .block-list-appender{ + margin-left:0; + margin-right:0; +} +[data-type="core/group"].is-selected .has-background .block-list-appender{ + margin-bottom:18px; + margin-top:18px; +} + +.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child{ + gap:inherit; + pointer-events:none; +} +.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child,.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child .block-editor-default-block-appender__content,.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child .block-editor-inserter{ + display:inherit; + flex:1; + flex-direction:inherit; + width:100%; +} +.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child:after{ + border:1px dashed; + border-radius:2px; + content:""; + display:flex; + flex:1 0 48px; + min-height:46px; + pointer-events:none; +} +.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child:after:before{ + background:currentColor; + bottom:0; + content:""; + left:0; + opacity:.1; + pointer-events:none; + position:absolute; + right:0; + top:0; +} +.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child .block-editor-inserter{ + pointer-events:all; +} + +.wp-block-group__placeholder .wp-block-group-placeholder__variations{ + display:flex; + flex-direction:row; + flex-wrap:wrap; + justify-content:center; + list-style:none; + margin:0; + padding:0; + width:100%; +} +.wp-block-group__placeholder .components-placeholder__instructions{ + margin-bottom:18px; + text-align:center; +} +.wp-block-group__placeholder .wp-block-group-placeholder__variations svg{ + fill:#ccc !important; +} +.wp-block-group__placeholder .wp-block-group-placeholder__variations svg:hover{ + fill:var(--wp-admin-theme-color) !important; +} +.wp-block-group__placeholder .wp-block-group-placeholder__variations>li{ + align-items:center; + display:flex; + flex-direction:column; + margin:0 12px 12px; + width:auto; +} +.wp-block-group__placeholder .wp-block-group-placeholder__variations li>.wp-block-group-placeholder__variation-button{ + height:32px; + padding:0; + width:44px; +} +.wp-block-group__placeholder .wp-block-group-placeholder__variations li>.wp-block-group-placeholder__variation-button:hover{ + box-shadow:none; +} +.wp-block-group__placeholder .components-placeholder{ + min-height:auto; + padding:24px; +} +.wp-block-group__placeholder .is-medium .wp-block-group-placeholder__variations>li,.wp-block-group__placeholder .is-small .wp-block-group-placeholder__variations>li{ + margin:12px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/group/editor-rtl.min.css b/wp-includes/blocks/group/editor-rtl.min.css new file mode 100644 index 0000000..ff863a8 --- /dev/null +++ b/wp-includes/blocks/group/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-group .block-editor-block-list__insertion-point{left:0;right:0}[data-type="core/group"].is-selected .block-list-appender{margin-left:0;margin-right:0}[data-type="core/group"].is-selected .has-background .block-list-appender{margin-bottom:18px;margin-top:18px}.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child{gap:inherit;pointer-events:none}.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child,.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child .block-editor-default-block-appender__content,.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child .block-editor-inserter{display:inherit;flex:1;flex-direction:inherit;width:100%}.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child:after{border:1px dashed;border-radius:2px;content:"";display:flex;flex:1 0 48px;min-height:46px;pointer-events:none}.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child:after:before{background:currentColor;bottom:0;content:"";left:0;opacity:.1;pointer-events:none;position:absolute;right:0;top:0}.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child .block-editor-inserter{pointer-events:all}.wp-block-group__placeholder .wp-block-group-placeholder__variations{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;list-style:none;margin:0;padding:0;width:100%}.wp-block-group__placeholder .components-placeholder__instructions{margin-bottom:18px;text-align:center}.wp-block-group__placeholder .wp-block-group-placeholder__variations svg{fill:#ccc!important}.wp-block-group__placeholder .wp-block-group-placeholder__variations svg:hover{fill:var(--wp-admin-theme-color)!important}.wp-block-group__placeholder .wp-block-group-placeholder__variations>li{align-items:center;display:flex;flex-direction:column;margin:0 12px 12px;width:auto}.wp-block-group__placeholder .wp-block-group-placeholder__variations li>.wp-block-group-placeholder__variation-button{height:32px;padding:0;width:44px}.wp-block-group__placeholder .wp-block-group-placeholder__variations li>.wp-block-group-placeholder__variation-button:hover{box-shadow:none}.wp-block-group__placeholder .components-placeholder{min-height:auto;padding:24px}.wp-block-group__placeholder .is-medium .wp-block-group-placeholder__variations>li,.wp-block-group__placeholder .is-small .wp-block-group-placeholder__variations>li{margin:12px}
\ No newline at end of file diff --git a/wp-includes/blocks/group/editor.css b/wp-includes/blocks/group/editor.css new file mode 100644 index 0000000..78cb04e --- /dev/null +++ b/wp-includes/blocks/group/editor.css @@ -0,0 +1,90 @@ +.wp-block-group .block-editor-block-list__insertion-point{ + left:0; + right:0; +} + +[data-type="core/group"].is-selected .block-list-appender{ + margin-left:0; + margin-right:0; +} +[data-type="core/group"].is-selected .has-background .block-list-appender{ + margin-bottom:18px; + margin-top:18px; +} + +.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child{ + gap:inherit; + pointer-events:none; +} +.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child,.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child .block-editor-default-block-appender__content,.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child .block-editor-inserter{ + display:inherit; + flex:1; + flex-direction:inherit; + width:100%; +} +.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child:after{ + border:1px dashed; + border-radius:2px; + content:""; + display:flex; + flex:1 0 48px; + min-height:46px; + pointer-events:none; +} +.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child:after:before{ + background:currentColor; + bottom:0; + content:""; + left:0; + opacity:.1; + pointer-events:none; + position:absolute; + right:0; + top:0; +} +.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child .block-editor-inserter{ + pointer-events:all; +} + +.wp-block-group__placeholder .wp-block-group-placeholder__variations{ + display:flex; + flex-direction:row; + flex-wrap:wrap; + justify-content:center; + list-style:none; + margin:0; + padding:0; + width:100%; +} +.wp-block-group__placeholder .components-placeholder__instructions{ + margin-bottom:18px; + text-align:center; +} +.wp-block-group__placeholder .wp-block-group-placeholder__variations svg{ + fill:#ccc !important; +} +.wp-block-group__placeholder .wp-block-group-placeholder__variations svg:hover{ + fill:var(--wp-admin-theme-color) !important; +} +.wp-block-group__placeholder .wp-block-group-placeholder__variations>li{ + align-items:center; + display:flex; + flex-direction:column; + margin:0 12px 12px; + width:auto; +} +.wp-block-group__placeholder .wp-block-group-placeholder__variations li>.wp-block-group-placeholder__variation-button{ + height:32px; + padding:0; + width:44px; +} +.wp-block-group__placeholder .wp-block-group-placeholder__variations li>.wp-block-group-placeholder__variation-button:hover{ + box-shadow:none; +} +.wp-block-group__placeholder .components-placeholder{ + min-height:auto; + padding:24px; +} +.wp-block-group__placeholder .is-medium .wp-block-group-placeholder__variations>li,.wp-block-group__placeholder .is-small .wp-block-group-placeholder__variations>li{ + margin:12px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/group/editor.min.css b/wp-includes/blocks/group/editor.min.css new file mode 100644 index 0000000..ff863a8 --- /dev/null +++ b/wp-includes/blocks/group/editor.min.css @@ -0,0 +1 @@ +.wp-block-group .block-editor-block-list__insertion-point{left:0;right:0}[data-type="core/group"].is-selected .block-list-appender{margin-left:0;margin-right:0}[data-type="core/group"].is-selected .has-background .block-list-appender{margin-bottom:18px;margin-top:18px}.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child{gap:inherit;pointer-events:none}.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child,.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child .block-editor-default-block-appender__content,.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child .block-editor-inserter{display:inherit;flex:1;flex-direction:inherit;width:100%}.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child:after{border:1px dashed;border-radius:2px;content:"";display:flex;flex:1 0 48px;min-height:46px;pointer-events:none}.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child:after:before{background:currentColor;bottom:0;content:"";left:0;opacity:.1;pointer-events:none;position:absolute;right:0;top:0}.wp-block-group.is-layout-flex.block-editor-block-list__block>.block-list-appender:only-child .block-editor-inserter{pointer-events:all}.wp-block-group__placeholder .wp-block-group-placeholder__variations{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;list-style:none;margin:0;padding:0;width:100%}.wp-block-group__placeholder .components-placeholder__instructions{margin-bottom:18px;text-align:center}.wp-block-group__placeholder .wp-block-group-placeholder__variations svg{fill:#ccc!important}.wp-block-group__placeholder .wp-block-group-placeholder__variations svg:hover{fill:var(--wp-admin-theme-color)!important}.wp-block-group__placeholder .wp-block-group-placeholder__variations>li{align-items:center;display:flex;flex-direction:column;margin:0 12px 12px;width:auto}.wp-block-group__placeholder .wp-block-group-placeholder__variations li>.wp-block-group-placeholder__variation-button{height:32px;padding:0;width:44px}.wp-block-group__placeholder .wp-block-group-placeholder__variations li>.wp-block-group-placeholder__variation-button:hover{box-shadow:none}.wp-block-group__placeholder .components-placeholder{min-height:auto;padding:24px}.wp-block-group__placeholder .is-medium .wp-block-group-placeholder__variations>li,.wp-block-group__placeholder .is-small .wp-block-group-placeholder__variations>li{margin:12px}
\ No newline at end of file diff --git a/wp-includes/blocks/group/style-rtl.css b/wp-includes/blocks/group/style-rtl.css new file mode 100644 index 0000000..5128c34 --- /dev/null +++ b/wp-includes/blocks/group/style-rtl.css @@ -0,0 +1,3 @@ +.wp-block-group{ + box-sizing:border-box; +}
\ No newline at end of file diff --git a/wp-includes/blocks/group/style-rtl.min.css b/wp-includes/blocks/group/style-rtl.min.css new file mode 100644 index 0000000..9124e9b --- /dev/null +++ b/wp-includes/blocks/group/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-group{box-sizing:border-box}
\ No newline at end of file diff --git a/wp-includes/blocks/group/style.css b/wp-includes/blocks/group/style.css new file mode 100644 index 0000000..5128c34 --- /dev/null +++ b/wp-includes/blocks/group/style.css @@ -0,0 +1,3 @@ +.wp-block-group{ + box-sizing:border-box; +}
\ No newline at end of file diff --git a/wp-includes/blocks/group/style.min.css b/wp-includes/blocks/group/style.min.css new file mode 100644 index 0000000..9124e9b --- /dev/null +++ b/wp-includes/blocks/group/style.min.css @@ -0,0 +1 @@ +.wp-block-group{box-sizing:border-box}
\ No newline at end of file diff --git a/wp-includes/blocks/group/theme-rtl.css b/wp-includes/blocks/group/theme-rtl.css new file mode 100644 index 0000000..d232b03 --- /dev/null +++ b/wp-includes/blocks/group/theme-rtl.css @@ -0,0 +1,3 @@ +:where(.wp-block-group.has-background){ + padding:1.25em 2.375em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/group/theme-rtl.min.css b/wp-includes/blocks/group/theme-rtl.min.css new file mode 100644 index 0000000..df68e7e --- /dev/null +++ b/wp-includes/blocks/group/theme-rtl.min.css @@ -0,0 +1 @@ +:where(.wp-block-group.has-background){padding:1.25em 2.375em}
\ No newline at end of file diff --git a/wp-includes/blocks/group/theme.css b/wp-includes/blocks/group/theme.css new file mode 100644 index 0000000..d232b03 --- /dev/null +++ b/wp-includes/blocks/group/theme.css @@ -0,0 +1,3 @@ +:where(.wp-block-group.has-background){ + padding:1.25em 2.375em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/group/theme.min.css b/wp-includes/blocks/group/theme.min.css new file mode 100644 index 0000000..df68e7e --- /dev/null +++ b/wp-includes/blocks/group/theme.min.css @@ -0,0 +1 @@ +:where(.wp-block-group.has-background){padding:1.25em 2.375em}
\ No newline at end of file diff --git a/wp-includes/blocks/heading.php b/wp-includes/blocks/heading.php new file mode 100644 index 0000000..5a7e8db --- /dev/null +++ b/wp-includes/blocks/heading.php @@ -0,0 +1,52 @@ +<?php +/** + * Appending the wp-block-heading to before rendering the stored `core/heading` block contents. + * + * @package WordPress + */ + +/** + * Adds a wp-block-heading class to the heading block content. + * + * For example, the following block content: + * <h2 class="align-left">Hello World</h2> + * + * Would be transformed to: + * <h2 class="align-left wp-block-heading">Hello World</h2> + * + * @param array $attributes Attributes of the block being rendered. + * @param string $content Content of the block being rendered. + * + * @return string The content of the block being rendered. + */ +function block_core_heading_render( $attributes, $content ) { + if ( ! $content ) { + return $content; + } + + $p = new WP_HTML_Tag_Processor( $content ); + + $header_tags = array( 'H1', 'H2', 'H3', 'H4', 'H5', 'H6' ); + while ( $p->next_tag() ) { + if ( in_array( $p->get_tag(), $header_tags, true ) ) { + $p->add_class( 'wp-block-heading' ); + break; + } + } + + return $p->get_updated_html(); +} + +/** + * Registers the `core/heading` block on server. + */ +function register_block_core_heading() { + register_block_type_from_metadata( + __DIR__ . '/heading', + array( + 'render_callback' => 'block_core_heading_render', + ) + ); +} + +add_action( 'init', 'register_block_core_heading' ); diff --git a/wp-includes/blocks/heading/block.json b/wp-includes/blocks/heading/block.json new file mode 100644 index 0000000..7c018f8 --- /dev/null +++ b/wp-includes/blocks/heading/block.json @@ -0,0 +1,70 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/heading", + "title": "Heading", + "category": "text", + "description": "Introduce new sections and organize content to help visitors (and search engines) understand the structure of your content.", + "keywords": [ "title", "subtitle" ], + "textdomain": "default", + "attributes": { + "textAlign": { + "type": "string" + }, + "content": { + "type": "string", + "source": "html", + "selector": "h1,h2,h3,h4,h5,h6", + "default": "", + "__experimentalRole": "content" + }, + "level": { + "type": "number", + "default": 2 + }, + "placeholder": { + "type": "string" + } + }, + "supports": { + "align": [ "wide", "full" ], + "anchor": true, + "className": true, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontStyle": true, + "__experimentalFontWeight": true, + "__experimentalLetterSpacing": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalWritingMode": true, + "__experimentalDefaultControls": { + "fontSize": true, + "fontAppearance": true, + "textTransform": true + } + }, + "__unstablePasteTextInline": true, + "__experimentalSlashInserter": true + }, + "editorStyle": "wp-block-heading-editor", + "style": "wp-block-heading" +} diff --git a/wp-includes/blocks/heading/style-rtl.css b/wp-includes/blocks/heading/style-rtl.css new file mode 100644 index 0000000..a6bf013 --- /dev/null +++ b/wp-includes/blocks/heading/style-rtl.css @@ -0,0 +1,6 @@ +h1.has-background,h2.has-background,h3.has-background,h4.has-background,h5.has-background,h6.has-background{ + padding:1.25em 2.375em; +} +h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){ + rotate:180deg; +}
\ No newline at end of file diff --git a/wp-includes/blocks/heading/style-rtl.min.css b/wp-includes/blocks/heading/style-rtl.min.css new file mode 100644 index 0000000..1578691 --- /dev/null +++ b/wp-includes/blocks/heading/style-rtl.min.css @@ -0,0 +1 @@ +h1.has-background,h2.has-background,h3.has-background,h4.has-background,h5.has-background,h6.has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg}
\ No newline at end of file diff --git a/wp-includes/blocks/heading/style.css b/wp-includes/blocks/heading/style.css new file mode 100644 index 0000000..a6bf013 --- /dev/null +++ b/wp-includes/blocks/heading/style.css @@ -0,0 +1,6 @@ +h1.has-background,h2.has-background,h3.has-background,h4.has-background,h5.has-background,h6.has-background{ + padding:1.25em 2.375em; +} +h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){ + rotate:180deg; +}
\ No newline at end of file diff --git a/wp-includes/blocks/heading/style.min.css b/wp-includes/blocks/heading/style.min.css new file mode 100644 index 0000000..1578691 --- /dev/null +++ b/wp-includes/blocks/heading/style.min.css @@ -0,0 +1 @@ +h1.has-background,h2.has-background,h3.has-background,h4.has-background,h5.has-background,h6.has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg}
\ No newline at end of file diff --git a/wp-includes/blocks/home-link.php b/wp-includes/blocks/home-link.php new file mode 100644 index 0000000..8fb5ed1 --- /dev/null +++ b/wp-includes/blocks/home-link.php @@ -0,0 +1,166 @@ +<?php +/** + * Server-side rendering of the `core/home-link` block. + * + * @package WordPress + */ + +/** + * Build an array with CSS classes and inline styles defining the colors + * which will be applied to the home link markup in the front-end. + * + * @param array $context home link block context. + * @return array Colors CSS classes and inline styles. + */ +function block_core_home_link_build_css_colors( $context ) { + $colors = array( + 'css_classes' => array(), + 'inline_styles' => '', + ); + + // Text color. + $has_named_text_color = array_key_exists( 'textColor', $context ); + $has_custom_text_color = isset( $context['style']['color']['text'] ); + + // If has text color. + if ( $has_custom_text_color || $has_named_text_color ) { + // Add has-text-color class. + $colors['css_classes'][] = 'has-text-color'; + } + + if ( $has_named_text_color ) { + // Add the color class. + $colors['css_classes'][] = sprintf( 'has-%s-color', $context['textColor'] ); + } elseif ( $has_custom_text_color ) { + // Add the custom color inline style. + $colors['inline_styles'] .= sprintf( 'color: %s;', $context['style']['color']['text'] ); + } + + // Background color. + $has_named_background_color = array_key_exists( 'backgroundColor', $context ); + $has_custom_background_color = isset( $context['style']['color']['background'] ); + + // If has background color. + if ( $has_custom_background_color || $has_named_background_color ) { + // Add has-background class. + $colors['css_classes'][] = 'has-background'; + } + + if ( $has_named_background_color ) { + // Add the background-color class. + $colors['css_classes'][] = sprintf( 'has-%s-background-color', $context['backgroundColor'] ); + } elseif ( $has_custom_background_color ) { + // Add the custom background-color inline style. + $colors['inline_styles'] .= sprintf( 'background-color: %s;', $context['style']['color']['background'] ); + } + + return $colors; +} + +/** + * Build an array with CSS classes and inline styles defining the font sizes + * which will be applied to the home link markup in the front-end. + * + * @param array $context Home link block context. + * @return array Font size CSS classes and inline styles. + */ +function block_core_home_link_build_css_font_sizes( $context ) { + // CSS classes. + $font_sizes = array( + 'css_classes' => array(), + 'inline_styles' => '', + ); + + $has_named_font_size = array_key_exists( 'fontSize', $context ); + $has_custom_font_size = isset( $context['style']['typography']['fontSize'] ); + + if ( $has_named_font_size ) { + // Add the font size class. + $font_sizes['css_classes'][] = sprintf( 'has-%s-font-size', $context['fontSize'] ); + } elseif ( $has_custom_font_size ) { + // Add the custom font size inline style. + $font_sizes['inline_styles'] = sprintf( 'font-size: %s;', $context['style']['typography']['fontSize'] ); + } + + return $font_sizes; +} + +/** + * Builds an array with classes and style for the li wrapper + * + * @param array $context Home link block context. + * @return string The li wrapper attributes. + */ +function block_core_home_link_build_li_wrapper_attributes( $context ) { + $colors = block_core_home_link_build_css_colors( $context ); + $font_sizes = block_core_home_link_build_css_font_sizes( $context ); + $classes = array_merge( + $colors['css_classes'], + $font_sizes['css_classes'] + ); + $style_attribute = ( $colors['inline_styles'] . $font_sizes['inline_styles'] ); + $classes[] = 'wp-block-navigation-item'; + + if ( is_front_page() ) { + $classes[] = 'current-menu-item'; + } elseif ( is_home() && ( (int) get_option( 'page_for_posts' ) !== get_queried_object_id() ) ) { + // Edge case where the Reading settings has a posts page set but not a static homepage. + $classes[] = 'current-menu-item'; + } + + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => implode( ' ', $classes ), + 'style' => $style_attribute, + ) + ); + + return $wrapper_attributes; +} + +/** + * Renders the `core/home-link` block. + * + * @param array $attributes The block attributes. + * @param string $content The saved content. + * @param WP_Block $block The parsed block. + * + * @return string Returns the post content with the home url added. + */ +function render_block_core_home_link( $attributes, $content, $block ) { + if ( empty( $attributes['label'] ) ) { + return ''; + } + $aria_current = ''; + + if ( is_front_page() ) { + $aria_current = ' aria-current="page"'; + } elseif ( is_home() && ( (int) get_option( 'page_for_posts' ) !== get_queried_object_id() ) ) { + // Edge case where the Reading settings has a posts page set but not a static homepage. + $aria_current = ' aria-current="page"'; + } + + return sprintf( + '<li %1$s><a class="wp-block-home-link__content wp-block-navigation-item__content" href="%2$s" rel="home"%3$s>%4$s</a></li>', + block_core_home_link_build_li_wrapper_attributes( $block->context ), + esc_url( home_url() ), + $aria_current, + wp_kses_post( $attributes['label'] ) + ); +} + +/** + * Register the home block + * + * @uses render_block_core_home_link() + * @throws WP_Error An WP_Error exception parsing the block definition. + */ +function register_block_core_home_link() { + register_block_type_from_metadata( + __DIR__ . '/home-link', + array( + 'render_callback' => 'render_block_core_home_link', + ) + ); +} +add_action( 'init', 'register_block_core_home_link' ); diff --git a/wp-includes/blocks/home-link/block.json b/wp-includes/blocks/home-link/block.json new file mode 100644 index 0000000..a9827b7 --- /dev/null +++ b/wp-includes/blocks/home-link/block.json @@ -0,0 +1,43 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/home-link", + "category": "design", + "parent": [ "core/navigation" ], + "title": "Home Link", + "description": "Create a link that always points to the homepage of the site. Usually not necessary if there is already a site title link present in the header.", + "textdomain": "default", + "attributes": { + "label": { + "type": "string" + } + }, + "usesContext": [ + "textColor", + "customTextColor", + "backgroundColor", + "customBackgroundColor", + "fontSize", + "customFontSize", + "style" + ], + "supports": { + "reusable": false, + "html": false, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-home-link-editor", + "style": "wp-block-home-link" +} diff --git a/wp-includes/blocks/html/block.json b/wp-includes/blocks/html/block.json new file mode 100644 index 0000000..b1a2ad6 --- /dev/null +++ b/wp-includes/blocks/html/block.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/html", + "title": "Custom HTML", + "category": "widgets", + "description": "Add custom HTML code and preview it as you edit.", + "keywords": [ "embed" ], + "textdomain": "default", + "attributes": { + "content": { + "type": "string", + "source": "raw" + } + }, + "supports": { + "customClassName": false, + "className": false, + "html": false + }, + "editorStyle": "wp-block-html-editor" +} diff --git a/wp-includes/blocks/html/editor-rtl.css b/wp-includes/blocks/html/editor-rtl.css new file mode 100644 index 0000000..6419368 --- /dev/null +++ b/wp-includes/blocks/html/editor-rtl.css @@ -0,0 +1,29 @@ +.block-library-html__edit .block-library-html__preview-overlay{ + height:100%; + position:absolute; + right:0; + top:0; + width:100%; +} +.block-library-html__edit .block-editor-plain-text{ + background:#fff !important; + border:1px solid #1e1e1e !important; + border-radius:2px !important; + box-shadow:none !important; + box-sizing:border-box; + color:#1e1e1e !important; + font-family:Menlo,Consolas,monaco,monospace !important; + font-size:16px !important; + max-height:250px; + padding:12px !important; +} +@media (min-width:600px){ + .block-library-html__edit .block-editor-plain-text{ + font-size:13px !important; + } +} +.block-library-html__edit .block-editor-plain-text:focus{ + border-color:var(--wp-admin-theme-color) !important; + box-shadow:0 0 0 1px var(--wp-admin-theme-color) !important; + outline:2px solid transparent !important; +}
\ No newline at end of file diff --git a/wp-includes/blocks/html/editor-rtl.min.css b/wp-includes/blocks/html/editor-rtl.min.css new file mode 100644 index 0000000..aad3497 --- /dev/null +++ b/wp-includes/blocks/html/editor-rtl.min.css @@ -0,0 +1 @@ +.block-library-html__edit .block-library-html__preview-overlay{height:100%;position:absolute;right:0;top:0;width:100%}.block-library-html__edit .block-editor-plain-text{background:#fff!important;border:1px solid #1e1e1e!important;border-radius:2px!important;box-shadow:none!important;box-sizing:border-box;color:#1e1e1e!important;font-family:Menlo,Consolas,monaco,monospace!important;font-size:16px!important;max-height:250px;padding:12px!important}@media (min-width:600px){.block-library-html__edit .block-editor-plain-text{font-size:13px!important}}.block-library-html__edit .block-editor-plain-text:focus{border-color:var(--wp-admin-theme-color)!important;box-shadow:0 0 0 1px var(--wp-admin-theme-color)!important;outline:2px solid transparent!important}
\ No newline at end of file diff --git a/wp-includes/blocks/html/editor.css b/wp-includes/blocks/html/editor.css new file mode 100644 index 0000000..28fcf6f --- /dev/null +++ b/wp-includes/blocks/html/editor.css @@ -0,0 +1,29 @@ +.block-library-html__edit .block-library-html__preview-overlay{ + height:100%; + left:0; + position:absolute; + top:0; + width:100%; +} +.block-library-html__edit .block-editor-plain-text{ + background:#fff !important; + border:1px solid #1e1e1e !important; + border-radius:2px !important; + box-shadow:none !important; + box-sizing:border-box; + color:#1e1e1e !important; + font-family:Menlo,Consolas,monaco,monospace !important; + font-size:16px !important; + max-height:250px; + padding:12px !important; +} +@media (min-width:600px){ + .block-library-html__edit .block-editor-plain-text{ + font-size:13px !important; + } +} +.block-library-html__edit .block-editor-plain-text:focus{ + border-color:var(--wp-admin-theme-color) !important; + box-shadow:0 0 0 1px var(--wp-admin-theme-color) !important; + outline:2px solid transparent !important; +}
\ No newline at end of file diff --git a/wp-includes/blocks/html/editor.min.css b/wp-includes/blocks/html/editor.min.css new file mode 100644 index 0000000..068a199 --- /dev/null +++ b/wp-includes/blocks/html/editor.min.css @@ -0,0 +1 @@ +.block-library-html__edit .block-library-html__preview-overlay{height:100%;left:0;position:absolute;top:0;width:100%}.block-library-html__edit .block-editor-plain-text{background:#fff!important;border:1px solid #1e1e1e!important;border-radius:2px!important;box-shadow:none!important;box-sizing:border-box;color:#1e1e1e!important;font-family:Menlo,Consolas,monaco,monospace!important;font-size:16px!important;max-height:250px;padding:12px!important}@media (min-width:600px){.block-library-html__edit .block-editor-plain-text{font-size:13px!important}}.block-library-html__edit .block-editor-plain-text:focus{border-color:var(--wp-admin-theme-color)!important;box-shadow:0 0 0 1px var(--wp-admin-theme-color)!important;outline:2px solid transparent!important}
\ No newline at end of file diff --git a/wp-includes/blocks/image.php b/wp-includes/blocks/image.php new file mode 100644 index 0000000..acefd57 --- /dev/null +++ b/wp-includes/blocks/image.php @@ -0,0 +1,366 @@ +<?php +/** + * Server-side rendering of the `core/image` block. + * + * @package WordPress + */ + +/** + * Renders the `core/image` block on the server, + * adding a data-id attribute to the element if core/gallery has added on pre-render. + * + * @param array $attributes The block attributes. + * @param string $content The block content. + * @param WP_Block $block The block object. + * + * @return string The block content with the data-id attribute added. + */ +function render_block_core_image( $attributes, $content, $block ) { + if ( false === stripos( $content, '<img' ) ) { + return ''; + } + + $processor = new WP_HTML_Tag_Processor( $content ); + + if ( ! $processor->next_tag( 'img' ) || null === $processor->get_attribute( 'src' ) ) { + return ''; + } + + if ( isset( $attributes['data-id'] ) ) { + // Add the data-id="$id" attribute to the img element + // to provide backwards compatibility for the Gallery Block, + // which now wraps Image Blocks within innerBlocks. + // The data-id attribute is added in a core/gallery `render_block_data` hook. + $processor->set_attribute( 'data-id', $attributes['data-id'] ); + } + + $link_destination = isset( $attributes['linkDestination'] ) ? $attributes['linkDestination'] : 'none'; + $lightbox_settings = block_core_image_get_lightbox_settings( $block->parsed_block ); + + $view_js_file_handle = 'wp-block-image-view'; + $script_handles = $block->block_type->view_script_handles; + + /* + * If the lightbox is enabled and the image is not linked, add the filter + * and the JavaScript view file. + */ + if ( + isset( $lightbox_settings ) && + 'none' === $link_destination && + isset( $lightbox_settings['enabled'] ) && + true === $lightbox_settings['enabled'] + ) { + $block->block_type->supports['interactivity'] = true; + + if ( ! in_array( $view_js_file_handle, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file_handle ) ); + } + + /* + * This render needs to happen in a filter with priority 15 to ensure + * that it runs after the duotone filter and that duotone styles are + * applied to the image in the lightbox. We also need to ensure that the + * lightbox works with any plugins that might use filters as well. We + * can consider removing this in the future if the way the blocks are + * rendered changes, or if a new kind of filter is introduced. + */ + add_filter( 'render_block_core/image', 'block_core_image_render_lightbox', 15, 2 ); + } else { + /* + * Remove the filter and the JavaScript view file if previously added by + * other Image blocks. + */ + remove_filter( 'render_block_core/image', 'block_core_image_render_lightbox', 15 ); + // If the script is not needed, and it is still in the `view_script_handles`, remove it. + if ( in_array( $view_js_file_handle, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file_handle ) ); + } + } + + return $processor->get_updated_html(); +} + +/** + * Adds the lightboxEnabled flag to the block data. + * + * This is used to determine whether the lightbox should be rendered or not. + * + * @param array $block Block data. + * + * @return array Filtered block data. + */ +function block_core_image_get_lightbox_settings( $block ) { + // Get the lightbox setting from the block attributes. + if ( isset( $block['attrs']['lightbox'] ) ) { + $lightbox_settings = $block['attrs']['lightbox']; + // If the lightbox setting is not set in the block attributes, + // check the legacy lightbox settings that are set using the + // `gutenberg_should_render_lightbox` filter. + // We can remove this elseif statement when the legacy lightbox settings are removed. + } elseif ( isset( $block['legacyLightboxSettings'] ) ) { + $lightbox_settings = $block['legacyLightboxSettings']; + } + + if ( ! isset( $lightbox_settings ) ) { + $lightbox_settings = wp_get_global_settings( array( 'lightbox' ), array( 'block_name' => 'core/image' ) ); + + // If not present in global settings, check the top-level global settings. + // + // NOTE: If no block-level settings are found, the previous call to + // `wp_get_global_settings` will return the whole `theme.json` + // structure in which case we can check if the "lightbox" key is present at + // the top-level of the global settings and use its value. + if ( isset( $lightbox_settings['lightbox'] ) ) { + $lightbox_settings = wp_get_global_settings( array( 'lightbox' ) ); + } + } + + return $lightbox_settings ?? null; +} + +/** + * Adds the directives and layout needed for the lightbox behavior. + * + * @param string $block_content Rendered block content. + * @param array $block Block object. + * + * @return string Filtered block content. + */ +function block_core_image_render_lightbox( $block_content, $block ) { + /* + * If it's not possible that an IMG element exists then return the given + * block content as-is. It may be that there's no actual image in the block + * or it could be that another plugin already modified this HTML. + */ + if ( false === stripos( $block_content, '<img' ) ) { + return $block_content; + } + + $processor = new WP_HTML_Tag_Processor( $block_content ); + + $aria_label = __( 'Enlarge image' ); + + /* + * If there's definitely no IMG element in the block then return the given + * block content as-is. There's nothing that this code can knowingly modify + * to add the lightbox behavior. + */ + if ( ! $processor->next_tag( 'img' ) ) { + return $block_content; + } + + $alt_attribute = $processor->get_attribute( 'alt' ); + + // An empty alt attribute `alt=""` is valid for decorative images. + if ( is_string( $alt_attribute ) ) { + $alt_attribute = trim( $alt_attribute ); + } + + // It only makes sense to append the alt text to the button aria-label when the alt text is non-empty. + if ( $alt_attribute ) { + /* translators: %s: Image alt text. */ + $aria_label = sprintf( __( 'Enlarge image: %s' ), $alt_attribute ); + } + + // Currently, we are only enabling the zoom animation. + $lightbox_animation = 'zoom'; + + // Note: We want to store the `src` in the context so we + // can set it dynamically when the lightbox is opened. + if ( isset( $block['attrs']['id'] ) ) { + $img_uploaded_src = wp_get_attachment_url( $block['attrs']['id'] ); + $img_metadata = wp_get_attachment_metadata( $block['attrs']['id'] ); + $img_width = $img_metadata['width'] ?? 'none'; + $img_height = $img_metadata['height'] ?? 'none'; + } else { + $img_uploaded_src = $processor->get_attribute( 'src' ); + $img_width = 'none'; + $img_height = 'none'; + } + + if ( isset( $block['attrs']['scale'] ) ) { + $scale_attr = $block['attrs']['scale']; + } else { + $scale_attr = false; + } + + $w = new WP_HTML_Tag_Processor( $block_content ); + $w->next_tag( 'figure' ); + $w->add_class( 'wp-lightbox-container' ); + $w->set_attribute( 'data-wp-interactive', true ); + + $w->set_attribute( + 'data-wp-context', + sprintf( + '{ "core": + { "image": + { "imageLoaded": false, + "initialized": false, + "lightboxEnabled": false, + "hideAnimationEnabled": false, + "preloadInitialized": false, + "lightboxAnimation": "%s", + "imageUploadedSrc": "%s", + "imageCurrentSrc": "", + "targetWidth": "%s", + "targetHeight": "%s", + "scaleAttr": "%s", + "dialogLabel": "%s" + } + } + }', + $lightbox_animation, + $img_uploaded_src, + $img_width, + $img_height, + $scale_attr, + __( 'Enlarged image' ) + ) + ); + $w->next_tag( 'img' ); + $w->set_attribute( 'data-wp-init', 'effects.core.image.initOriginImage' ); + $w->set_attribute( 'data-wp-on--load', 'actions.core.image.handleLoad' ); + $w->set_attribute( 'data-wp-effect', 'effects.core.image.setButtonStyles' ); + // We need to set an event callback on the `img` specifically + // because the `figure` element can also contain a caption, and + // we don't want to trigger the lightbox when the caption is clicked. + $w->set_attribute( 'data-wp-on--click', 'actions.core.image.showLightbox' ); + $w->set_attribute( 'data-wp-effect--setStylesOnResize', 'effects.core.image.setStylesOnResize' ); + $body_content = $w->get_updated_html(); + + // Add a button alongside image in the body content. + $img = null; + preg_match( '/<img[^>]+>/', $body_content, $img ); + + $button = + $img[0] + . '<button + class="lightbox-trigger" + type="button" + aria-haspopup="dialog" + aria-label="' . esc_attr( $aria_label ) . '" + data-wp-on--click="actions.core.image.showLightbox" + data-wp-style--right="context.core.image.imageButtonRight" + data-wp-style--top="context.core.image.imageButtonTop" + > + <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12"> + <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" /> + </svg> + </button>'; + + $body_content = preg_replace( '/<img[^>]+>/', $button, $body_content ); + + // We need both a responsive image and an enlarged image to animate + // the zoom seamlessly on slow internet connections; the responsive + // image is a copy of the one in the body, which animates immediately + // as the lightbox is opened, while the enlarged one is a full-sized + // version that will likely still be loading as the animation begins. + $m = new WP_HTML_Tag_Processor( $block_content ); + $m->next_tag( 'figure' ); + $m->add_class( 'responsive-image' ); + $m->next_tag( 'img' ); + // We want to set the 'src' attribute to an empty string in the responsive image + // because otherwise, as of this writing, the wp_filter_content_tags() function in + // WordPress will automatically add a 'srcset' attribute to the image, which will at + // times cause the incorrectly sized image to be loaded in the lightbox on Firefox. + // Because of this, we bind the 'src' attribute explicitly the current src to reliably + // use the exact same image as in the content when the lightbox is first opened while + // we wait for the larger image to load. + $m->set_attribute( 'src', '' ); + $m->set_attribute( 'data-wp-bind--src', 'context.core.image.imageCurrentSrc' ); + $m->set_attribute( 'data-wp-style--object-fit', 'selectors.core.image.lightboxObjectFit' ); + $initial_image_content = $m->get_updated_html(); + + $q = new WP_HTML_Tag_Processor( $block_content ); + $q->next_tag( 'figure' ); + $q->add_class( 'enlarged-image' ); + $q->next_tag( 'img' ); + + // We set the 'src' attribute to an empty string to prevent the browser from loading the image + // on initial page load, then bind the attribute to a selector that returns the full-sized image src when + // the lightbox is opened. We could use 'loading=lazy' in combination with the 'hidden' attribute to + // accomplish the same behavior, but that approach breaks progressive loading of the image in Safari + // and Chrome (see https://github.com/WordPress/gutenberg/pull/52765#issuecomment-1674008151). Until that + // is resolved, manually setting the 'src' seems to be the best solution to load the large image on demand. + $q->set_attribute( 'src', '' ); + $q->set_attribute( 'data-wp-bind--src', 'selectors.core.image.enlargedImgSrc' ); + $q->set_attribute( 'data-wp-style--object-fit', 'selectors.core.image.lightboxObjectFit' ); + $enlarged_image_content = $q->get_updated_html(); + + // If the current theme does NOT have a `theme.json`, or the colors are not defined, + // we need to set the background color & close button color to some default values + // because we can't get them from the Global Styles. + $background_color = '#fff'; + $close_button_color = '#000'; + if ( wp_theme_has_theme_json() ) { + $global_styles_color = wp_get_global_styles( array( 'color' ) ); + if ( ! empty( $global_styles_color['background'] ) ) { + $background_color = esc_attr( $global_styles_color['background'] ); + } + if ( ! empty( $global_styles_color['text'] ) ) { + $close_button_color = esc_attr( $global_styles_color['text'] ); + } + } + + $close_button_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" focusable="false"><path d="M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"></path></svg>'; + $close_button_label = esc_attr__( 'Close' ); + + $lightbox_html = <<<HTML + <div data-wp-body="" class="wp-lightbox-overlay $lightbox_animation" + data-wp-bind--role="selectors.core.image.roleAttribute" + data-wp-bind--aria-label="selectors.core.image.dialogLabel" + data-wp-class--initialized="context.core.image.initialized" + data-wp-class--active="context.core.image.lightboxEnabled" + data-wp-class--hideAnimationEnabled="context.core.image.hideAnimationEnabled" + data-wp-bind--aria-modal="selectors.core.image.ariaModal" + data-wp-effect="effects.core.image.initLightbox" + data-wp-on--keydown="actions.core.image.handleKeydown" + data-wp-on--touchstart="actions.core.image.handleTouchStart" + data-wp-on--touchmove="actions.core.image.handleTouchMove" + data-wp-on--touchend="actions.core.image.handleTouchEnd" + data-wp-on--click="actions.core.image.hideLightbox" + tabindex="-1" + > + <button type="button" aria-label="$close_button_label" style="fill: $close_button_color" class="close-button" data-wp-on--click="actions.core.image.hideLightbox"> + $close_button_icon + </button> + <div class="lightbox-image-container">$initial_image_content</div> + <div class="lightbox-image-container">$enlarged_image_content</div> + <div class="scrim" style="background-color: $background_color" aria-hidden="true"></div> + </div> +HTML; + + return str_replace( '</figure>', $lightbox_html . '</figure>', $body_content ); +} + +/** + * Ensures that the view script has the `wp-interactivity` dependency. + * + * @since 6.4.0 + * + * @global WP_Scripts $wp_scripts + */ +function block_core_image_ensure_interactivity_dependency() { + global $wp_scripts; + if ( + isset( $wp_scripts->registered['wp-block-image-view'] ) && + ! in_array( 'wp-interactivity', $wp_scripts->registered['wp-block-image-view']->deps, true ) + ) { + $wp_scripts->registered['wp-block-image-view']->deps[] = 'wp-interactivity'; + } +} + +add_action( 'wp_print_scripts', 'block_core_image_ensure_interactivity_dependency' ); + +/** + * Registers the `core/image` block on server. + */ +function register_block_core_image() { + register_block_type_from_metadata( + __DIR__ . '/image', + array( + 'render_callback' => 'render_block_core_image', + ) + ); +} +add_action( 'init', 'register_block_core_image' ); diff --git a/wp-includes/blocks/image/block.json b/wp-includes/blocks/image/block.json new file mode 100644 index 0000000..d665a8a --- /dev/null +++ b/wp-includes/blocks/image/block.json @@ -0,0 +1,135 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/image", + "title": "Image", + "category": "media", + "usesContext": [ "allowResize", "imageCrop", "fixedHeight" ], + "description": "Insert an image to make a visual statement.", + "keywords": [ "img", "photo", "picture" ], + "textdomain": "default", + "attributes": { + "align": { + "type": "string" + }, + "url": { + "type": "string", + "source": "attribute", + "selector": "img", + "attribute": "src", + "__experimentalRole": "content" + }, + "alt": { + "type": "string", + "source": "attribute", + "selector": "img", + "attribute": "alt", + "default": "", + "__experimentalRole": "content" + }, + "caption": { + "type": "string", + "source": "html", + "selector": "figcaption", + "__experimentalRole": "content" + }, + "lightbox": { + "type": "object", + "enabled": { + "type": "boolean" + } + }, + "title": { + "type": "string", + "source": "attribute", + "selector": "img", + "attribute": "title", + "__experimentalRole": "content" + }, + "href": { + "type": "string", + "source": "attribute", + "selector": "figure > a", + "attribute": "href", + "__experimentalRole": "content" + }, + "rel": { + "type": "string", + "source": "attribute", + "selector": "figure > a", + "attribute": "rel" + }, + "linkClass": { + "type": "string", + "source": "attribute", + "selector": "figure > a", + "attribute": "class" + }, + "id": { + "type": "number", + "__experimentalRole": "content" + }, + "width": { + "type": "string" + }, + "height": { + "type": "string" + }, + "aspectRatio": { + "type": "string" + }, + "scale": { + "type": "string" + }, + "sizeSlug": { + "type": "string" + }, + "linkDestination": { + "type": "string" + }, + "linkTarget": { + "type": "string", + "source": "attribute", + "selector": "figure > a", + "attribute": "target" + } + }, + "supports": { + "anchor": true, + "color": { + "text": false, + "background": false + }, + "filter": { + "duotone": true + }, + "__experimentalBorder": { + "color": true, + "radius": true, + "width": true, + "__experimentalSkipSerialization": true, + "__experimentalDefaultControls": { + "color": true, + "radius": true, + "width": true + } + } + }, + "selectors": { + "border": ".wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder", + "filter": { + "duotone": ".wp-block-image img, .wp-block-image .components-placeholder" + } + }, + "styles": [ + { + "name": "default", + "label": "Default", + "isDefault": true + }, + { "name": "rounded", "label": "Rounded" } + ], + "editorStyle": "wp-block-image-editor", + "style": "wp-block-image", + "viewScript": "file:./view.min.js" +} diff --git a/wp-includes/blocks/image/editor-rtl.css b/wp-includes/blocks/image/editor-rtl.css new file mode 100644 index 0000000..41c1e01 --- /dev/null +++ b/wp-includes/blocks/image/editor-rtl.css @@ -0,0 +1,127 @@ +.wp-block-image.wp-block-image.is-selected .components-placeholder{ + background-color:#fff; + border:none; + border-radius:2px; + box-shadow:inset 0 0 0 1px #1e1e1e; + color:#1e1e1e; + filter:none !important; +} +.wp-block-image.wp-block-image.is-selected .components-placeholder>svg{ + opacity:0; +} +.wp-block-image.wp-block-image.is-selected .components-placeholder .components-placeholder__illustration{ + display:none; +} +.wp-block-image.wp-block-image.is-selected .components-placeholder:before{ + opacity:0; +} +.wp-block-image.wp-block-image .components-button,.wp-block-image.wp-block-image .components-placeholder__instructions,.wp-block-image.wp-block-image .components-placeholder__label{ + transition:none; +} + +figure.wp-block-image:not(.wp-block){ + margin:0; +} + +.wp-block-image{ + position:relative; +} +.wp-block-image .is-applying img,.wp-block-image.is-transient img{ + opacity:.3; +} +.wp-block-image figcaption img{ + display:inline; +} +.wp-block-image .components-spinner{ + position:absolute; + right:50%; + top:50%; + transform:translate(50%, -50%); +} + +.wp-block-image .components-resizable-box__container{ + display:table; +} +.wp-block-image .components-resizable-box__container img{ + display:block; + height:inherit; + width:inherit; +} + +.block-editor-block-list__block[data-type="core/image"] .block-editor-block-toolbar .block-editor-url-input__button-modal{ + left:0; + margin:-1px 0; + position:absolute; + right:0; +} +@media (min-width:600px){ + .block-editor-block-list__block[data-type="core/image"] .block-editor-block-toolbar .block-editor-url-input__button-modal{ + margin:-1px; + } +} + +[data-align=full]>.wp-block-image img,[data-align=wide]>.wp-block-image img{ + height:auto; + width:100%; +} + +.wp-block[data-align=center]>.wp-block-image,.wp-block[data-align=left]>.wp-block-image,.wp-block[data-align=right]>.wp-block-image{ + display:table; +} +.wp-block[data-align=center]>.wp-block-image>figcaption,.wp-block[data-align=left]>.wp-block-image>figcaption,.wp-block[data-align=right]>.wp-block-image>figcaption{ + caption-side:bottom; + display:table-caption; +} + +.wp-block[data-align=left]>.wp-block-image{ + margin:.5em 0 .5em 1em; +} + +.wp-block[data-align=right]>.wp-block-image{ + margin:.5em 1em .5em 0; +} + +.wp-block[data-align=center]>.wp-block-image{ + margin-left:auto; + margin-right:auto; + text-align:center; +} + +.wp-block-image__crop-area{ + max-width:100%; + overflow:hidden; + position:relative; + width:100%; +} +.wp-block-image__crop-area .reactEasyCrop_Container .reactEasyCrop_Image{ + border:none; + border-radius:0; +} + +.wp-block-image__crop-icon{ + align-items:center; + display:flex; + justify-content:center; + min-width:48px; + padding:0 8px; +} +.wp-block-image__crop-icon svg{ + fill:currentColor; +} + +.wp-block-image__zoom .components-popover__content{ + min-width:260px; + overflow:visible !important; +} + +.wp-block-image__aspect-ratio{ + align-items:center; + display:flex; + height:46px; + margin-bottom:-8px; +} +.wp-block-image__aspect-ratio .components-button{ + padding-left:0; + padding-right:0; + width:36px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/image/editor-rtl.min.css b/wp-includes/blocks/image/editor-rtl.min.css new file mode 100644 index 0000000..76b3aa4 --- /dev/null +++ b/wp-includes/blocks/image/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-image.wp-block-image.is-selected .components-placeholder{background-color:#fff;border:none;border-radius:2px;box-shadow:inset 0 0 0 1px #1e1e1e;color:#1e1e1e;filter:none!important}.wp-block-image.wp-block-image.is-selected .components-placeholder>svg{opacity:0}.wp-block-image.wp-block-image.is-selected .components-placeholder .components-placeholder__illustration{display:none}.wp-block-image.wp-block-image.is-selected .components-placeholder:before{opacity:0}.wp-block-image.wp-block-image .components-button,.wp-block-image.wp-block-image .components-placeholder__instructions,.wp-block-image.wp-block-image .components-placeholder__label{transition:none}figure.wp-block-image:not(.wp-block){margin:0}.wp-block-image{position:relative}.wp-block-image .is-applying img,.wp-block-image.is-transient img{opacity:.3}.wp-block-image figcaption img{display:inline}.wp-block-image .components-spinner{position:absolute;right:50%;top:50%;transform:translate(50%,-50%)}.wp-block-image .components-resizable-box__container{display:table}.wp-block-image .components-resizable-box__container img{display:block;height:inherit;width:inherit}.block-editor-block-list__block[data-type="core/image"] .block-editor-block-toolbar .block-editor-url-input__button-modal{left:0;margin:-1px 0;position:absolute;right:0}@media (min-width:600px){.block-editor-block-list__block[data-type="core/image"] .block-editor-block-toolbar .block-editor-url-input__button-modal{margin:-1px}}[data-align=full]>.wp-block-image img,[data-align=wide]>.wp-block-image img{height:auto;width:100%}.wp-block[data-align=center]>.wp-block-image,.wp-block[data-align=left]>.wp-block-image,.wp-block[data-align=right]>.wp-block-image{display:table}.wp-block[data-align=center]>.wp-block-image>figcaption,.wp-block[data-align=left]>.wp-block-image>figcaption,.wp-block[data-align=right]>.wp-block-image>figcaption{caption-side:bottom;display:table-caption}.wp-block[data-align=left]>.wp-block-image{margin:.5em 0 .5em 1em}.wp-block[data-align=right]>.wp-block-image{margin:.5em 1em .5em 0}.wp-block[data-align=center]>.wp-block-image{margin-left:auto;margin-right:auto;text-align:center}.wp-block-image__crop-area{max-width:100%;overflow:hidden;position:relative;width:100%}.wp-block-image__crop-area .reactEasyCrop_Container .reactEasyCrop_Image{border:none;border-radius:0}.wp-block-image__crop-icon{align-items:center;display:flex;justify-content:center;min-width:48px;padding:0 8px}.wp-block-image__crop-icon svg{fill:currentColor}.wp-block-image__zoom .components-popover__content{min-width:260px;overflow:visible!important}.wp-block-image__aspect-ratio{align-items:center;display:flex;height:46px;margin-bottom:-8px}.wp-block-image__aspect-ratio .components-button{padding-left:0;padding-right:0;width:36px}
\ No newline at end of file diff --git a/wp-includes/blocks/image/editor.css b/wp-includes/blocks/image/editor.css new file mode 100644 index 0000000..ccdc0d0 --- /dev/null +++ b/wp-includes/blocks/image/editor.css @@ -0,0 +1,127 @@ +.wp-block-image.wp-block-image.is-selected .components-placeholder{ + background-color:#fff; + border:none; + border-radius:2px; + box-shadow:inset 0 0 0 1px #1e1e1e; + color:#1e1e1e; + filter:none !important; +} +.wp-block-image.wp-block-image.is-selected .components-placeholder>svg{ + opacity:0; +} +.wp-block-image.wp-block-image.is-selected .components-placeholder .components-placeholder__illustration{ + display:none; +} +.wp-block-image.wp-block-image.is-selected .components-placeholder:before{ + opacity:0; +} +.wp-block-image.wp-block-image .components-button,.wp-block-image.wp-block-image .components-placeholder__instructions,.wp-block-image.wp-block-image .components-placeholder__label{ + transition:none; +} + +figure.wp-block-image:not(.wp-block){ + margin:0; +} + +.wp-block-image{ + position:relative; +} +.wp-block-image .is-applying img,.wp-block-image.is-transient img{ + opacity:.3; +} +.wp-block-image figcaption img{ + display:inline; +} +.wp-block-image .components-spinner{ + left:50%; + position:absolute; + top:50%; + transform:translate(-50%, -50%); +} + +.wp-block-image .components-resizable-box__container{ + display:table; +} +.wp-block-image .components-resizable-box__container img{ + display:block; + height:inherit; + width:inherit; +} + +.block-editor-block-list__block[data-type="core/image"] .block-editor-block-toolbar .block-editor-url-input__button-modal{ + left:0; + margin:-1px 0; + position:absolute; + right:0; +} +@media (min-width:600px){ + .block-editor-block-list__block[data-type="core/image"] .block-editor-block-toolbar .block-editor-url-input__button-modal{ + margin:-1px; + } +} + +[data-align=full]>.wp-block-image img,[data-align=wide]>.wp-block-image img{ + height:auto; + width:100%; +} + +.wp-block[data-align=center]>.wp-block-image,.wp-block[data-align=left]>.wp-block-image,.wp-block[data-align=right]>.wp-block-image{ + display:table; +} +.wp-block[data-align=center]>.wp-block-image>figcaption,.wp-block[data-align=left]>.wp-block-image>figcaption,.wp-block[data-align=right]>.wp-block-image>figcaption{ + caption-side:bottom; + display:table-caption; +} + +.wp-block[data-align=left]>.wp-block-image{ + margin:.5em 1em .5em 0; +} + +.wp-block[data-align=right]>.wp-block-image{ + margin:.5em 0 .5em 1em; +} + +.wp-block[data-align=center]>.wp-block-image{ + margin-left:auto; + margin-right:auto; + text-align:center; +} + +.wp-block-image__crop-area{ + max-width:100%; + overflow:hidden; + position:relative; + width:100%; +} +.wp-block-image__crop-area .reactEasyCrop_Container .reactEasyCrop_Image{ + border:none; + border-radius:0; +} + +.wp-block-image__crop-icon{ + align-items:center; + display:flex; + justify-content:center; + min-width:48px; + padding:0 8px; +} +.wp-block-image__crop-icon svg{ + fill:currentColor; +} + +.wp-block-image__zoom .components-popover__content{ + min-width:260px; + overflow:visible !important; +} + +.wp-block-image__aspect-ratio{ + align-items:center; + display:flex; + height:46px; + margin-bottom:-8px; +} +.wp-block-image__aspect-ratio .components-button{ + padding-left:0; + padding-right:0; + width:36px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/image/editor.min.css b/wp-includes/blocks/image/editor.min.css new file mode 100644 index 0000000..89b31b0 --- /dev/null +++ b/wp-includes/blocks/image/editor.min.css @@ -0,0 +1 @@ +.wp-block-image.wp-block-image.is-selected .components-placeholder{background-color:#fff;border:none;border-radius:2px;box-shadow:inset 0 0 0 1px #1e1e1e;color:#1e1e1e;filter:none!important}.wp-block-image.wp-block-image.is-selected .components-placeholder>svg{opacity:0}.wp-block-image.wp-block-image.is-selected .components-placeholder .components-placeholder__illustration{display:none}.wp-block-image.wp-block-image.is-selected .components-placeholder:before{opacity:0}.wp-block-image.wp-block-image .components-button,.wp-block-image.wp-block-image .components-placeholder__instructions,.wp-block-image.wp-block-image .components-placeholder__label{transition:none}figure.wp-block-image:not(.wp-block){margin:0}.wp-block-image{position:relative}.wp-block-image .is-applying img,.wp-block-image.is-transient img{opacity:.3}.wp-block-image figcaption img{display:inline}.wp-block-image .components-spinner{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.wp-block-image .components-resizable-box__container{display:table}.wp-block-image .components-resizable-box__container img{display:block;height:inherit;width:inherit}.block-editor-block-list__block[data-type="core/image"] .block-editor-block-toolbar .block-editor-url-input__button-modal{left:0;margin:-1px 0;position:absolute;right:0}@media (min-width:600px){.block-editor-block-list__block[data-type="core/image"] .block-editor-block-toolbar .block-editor-url-input__button-modal{margin:-1px}}[data-align=full]>.wp-block-image img,[data-align=wide]>.wp-block-image img{height:auto;width:100%}.wp-block[data-align=center]>.wp-block-image,.wp-block[data-align=left]>.wp-block-image,.wp-block[data-align=right]>.wp-block-image{display:table}.wp-block[data-align=center]>.wp-block-image>figcaption,.wp-block[data-align=left]>.wp-block-image>figcaption,.wp-block[data-align=right]>.wp-block-image>figcaption{caption-side:bottom;display:table-caption}.wp-block[data-align=left]>.wp-block-image{margin:.5em 1em .5em 0}.wp-block[data-align=right]>.wp-block-image{margin:.5em 0 .5em 1em}.wp-block[data-align=center]>.wp-block-image{margin-left:auto;margin-right:auto;text-align:center}.wp-block-image__crop-area{max-width:100%;overflow:hidden;position:relative;width:100%}.wp-block-image__crop-area .reactEasyCrop_Container .reactEasyCrop_Image{border:none;border-radius:0}.wp-block-image__crop-icon{align-items:center;display:flex;justify-content:center;min-width:48px;padding:0 8px}.wp-block-image__crop-icon svg{fill:currentColor}.wp-block-image__zoom .components-popover__content{min-width:260px;overflow:visible!important}.wp-block-image__aspect-ratio{align-items:center;display:flex;height:46px;margin-bottom:-8px}.wp-block-image__aspect-ratio .components-button{padding-left:0;padding-right:0;width:36px}
\ No newline at end of file diff --git a/wp-includes/blocks/image/style-rtl.css b/wp-includes/blocks/image/style-rtl.css new file mode 100644 index 0000000..363e38a --- /dev/null +++ b/wp-includes/blocks/image/style-rtl.css @@ -0,0 +1,301 @@ +.wp-block-image img{ + box-sizing:border-box; + height:auto; + max-width:100%; + vertical-align:bottom; +} +.wp-block-image[style*=border-radius] img,.wp-block-image[style*=border-radius]>a{ + border-radius:inherit; +} +.wp-block-image.has-custom-border img{ + box-sizing:border-box; +} +.wp-block-image.aligncenter{ + text-align:center; +} +.wp-block-image.alignfull img,.wp-block-image.alignwide img{ + height:auto; + width:100%; +} +.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{ + display:table; +} +.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{ + caption-side:bottom; + display:table-caption; +} +.wp-block-image .alignleft{ + float:left; + margin:.5em 1em .5em 0; +} +.wp-block-image .alignright{ + float:right; + margin:.5em 0 .5em 1em; +} +.wp-block-image .aligncenter{ + margin-left:auto; + margin-right:auto; +} +.wp-block-image figcaption{ + margin-bottom:1em; + margin-top:.5em; +} +.wp-block-image .is-style-rounded img,.wp-block-image.is-style-circle-mask img,.wp-block-image.is-style-rounded img{ + border-radius:9999px; +} +@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){ + .wp-block-image.is-style-circle-mask img{ + border-radius:0; + -webkit-mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>'); + mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>'); + mask-mode:alpha; + -webkit-mask-position:center; + mask-position:center; + -webkit-mask-repeat:no-repeat; + mask-repeat:no-repeat; + -webkit-mask-size:contain; + mask-size:contain; + } +} +.wp-block-image :where(.has-border-color){ + border-style:solid; +} +.wp-block-image :where([style*=border-top-color]){ + border-top-style:solid; +} +.wp-block-image :where([style*=border-right-color]){ + border-left-style:solid; +} +.wp-block-image :where([style*=border-bottom-color]){ + border-bottom-style:solid; +} +.wp-block-image :where([style*=border-left-color]){ + border-right-style:solid; +} +.wp-block-image :where([style*=border-width]){ + border-style:solid; +} +.wp-block-image :where([style*=border-top-width]){ + border-top-style:solid; +} +.wp-block-image :where([style*=border-right-width]){ + border-left-style:solid; +} +.wp-block-image :where([style*=border-bottom-width]){ + border-bottom-style:solid; +} +.wp-block-image :where([style*=border-left-width]){ + border-right-style:solid; +} + +.wp-block-image figure{ + margin:0; +} + +.wp-lightbox-container{ + display:flex; + flex-direction:column; + position:relative; +} +.wp-lightbox-container img{ + cursor:zoom-in; +} +.wp-lightbox-container img:hover+button{ + opacity:1; +} +.wp-lightbox-container button{ + align-items:center; + -webkit-backdrop-filter:blur(16px) saturate(180%); + backdrop-filter:blur(16px) saturate(180%); + background-color:rgba(90,90,90,.25); + border:none; + border-radius:4px; + cursor:zoom-in; + display:flex; + height:20px; + justify-content:center; + left:16px; + opacity:0; + padding:0; + position:absolute; + text-align:center; + top:16px; + transition:opacity .2s ease; + width:20px; + z-index:100; +} +.wp-lightbox-container button:focus-visible{ + outline:3px auto rgba(90,90,90,.25); + outline:3px auto -webkit-focus-ring-color; + outline-offset:3px; +} +.wp-lightbox-container button:hover{ + cursor:pointer; + opacity:1; +} +.wp-lightbox-container button:focus{ + opacity:1; +} +.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){ + background-color:rgba(90,90,90,.25); + border:none; +} + +.wp-lightbox-overlay{ + box-sizing:border-box; + cursor:zoom-out; + height:100vh; + overflow:hidden; + position:fixed; + right:0; + top:0; + visibility:hidden; + width:100vw; + z-index:100000; +} +.wp-lightbox-overlay .close-button{ + align-items:center; + cursor:pointer; + display:flex; + justify-content:center; + left:calc(env(safe-area-inset-left) + 16px); + min-height:40px; + min-width:40px; + padding:0; + position:absolute; + top:calc(env(safe-area-inset-top) + 16px); + z-index:5000000; +} +.wp-lightbox-overlay .close-button:focus,.wp-lightbox-overlay .close-button:hover,.wp-lightbox-overlay .close-button:not(:hover):not(:active):not(.has-background){ + background:none; + border:none; +} +.wp-lightbox-overlay .lightbox-image-container{ + height:var(--wp--lightbox-container-height); + overflow:hidden; + position:absolute; + right:50%; + top:50%; + transform:translate(50%, -50%); + transform-origin:top right; + width:var(--wp--lightbox-container-width); + z-index:9999999999; +} +.wp-lightbox-overlay .wp-block-image{ + align-items:center; + box-sizing:border-box; + display:flex; + height:100%; + justify-content:center; + margin:0; + position:relative; + transform-origin:100% 0; + width:100%; + z-index:3000000; +} +.wp-lightbox-overlay .wp-block-image img{ + height:var(--wp--lightbox-image-height); + min-height:var(--wp--lightbox-image-height); + min-width:var(--wp--lightbox-image-width); + width:var(--wp--lightbox-image-width); +} +.wp-lightbox-overlay .wp-block-image figcaption{ + display:none; +} +.wp-lightbox-overlay button{ + background:none; + border:none; +} +.wp-lightbox-overlay .scrim{ + background-color:#fff; + height:100%; + opacity:.9; + position:absolute; + width:100%; + z-index:2000000; +} +.wp-lightbox-overlay.active{ + animation:turn-on-visibility .25s both; + visibility:visible; +} +.wp-lightbox-overlay.active img{ + animation:turn-on-visibility .35s both; +} +.wp-lightbox-overlay.hideanimationenabled:not(.active){ + animation:turn-off-visibility .35s both; +} +.wp-lightbox-overlay.hideanimationenabled:not(.active) img{ + animation:turn-off-visibility .25s both; +} +@media (prefers-reduced-motion:no-preference){ + .wp-lightbox-overlay.zoom.active{ + animation:none; + opacity:1; + visibility:visible; + } + .wp-lightbox-overlay.zoom.active .lightbox-image-container{ + animation:lightbox-zoom-in .4s; + } + .wp-lightbox-overlay.zoom.active .lightbox-image-container img{ + animation:none; + } + .wp-lightbox-overlay.zoom.active .scrim{ + animation:turn-on-visibility .4s forwards; + } + .wp-lightbox-overlay.zoom.hideanimationenabled:not(.active){ + animation:none; + } + .wp-lightbox-overlay.zoom.hideanimationenabled:not(.active) .lightbox-image-container{ + animation:lightbox-zoom-out .4s; + } + .wp-lightbox-overlay.zoom.hideanimationenabled:not(.active) .lightbox-image-container img{ + animation:none; + } + .wp-lightbox-overlay.zoom.hideanimationenabled:not(.active) .scrim{ + animation:turn-off-visibility .4s forwards; + } +} + +@keyframes turn-on-visibility{ + 0%{ + opacity:0; + } + to{ + opacity:1; + } +} +@keyframes turn-off-visibility{ + 0%{ + opacity:1; + visibility:visible; + } + 99%{ + opacity:0; + visibility:visible; + } + to{ + opacity:0; + visibility:hidden; + } +} +@keyframes lightbox-zoom-in{ + 0%{ + transform:translate(calc((-50vw + var(--wp--lightbox-initial-left-position))*-1), calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale)); + } + to{ + transform:translate(50%, -50%) scale(1); + } +} +@keyframes lightbox-zoom-out{ + 0%{ + transform:translate(50%, -50%) scale(1); + visibility:visible; + } + 99%{ + visibility:visible; + } + to{ + transform:translate(calc((-50vw + var(--wp--lightbox-initial-left-position))*-1), calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale)); + visibility:hidden; + } +}
\ No newline at end of file diff --git a/wp-includes/blocks/image/style-rtl.min.css b/wp-includes/blocks/image/style-rtl.min.css new file mode 100644 index 0000000..25bf896 --- /dev/null +++ b/wp-includes/blocks/image/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom}.wp-block-image[style*=border-radius] img,.wp-block-image[style*=border-radius]>a{border-radius:inherit}.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull img,.wp-block-image.alignwide img{height:auto;width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{display:table}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{caption-side:bottom;display:table-caption}.wp-block-image .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-image .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image figcaption{margin-bottom:1em;margin-top:.5em}.wp-block-image .is-style-rounded img,.wp-block-image.is-style-circle-mask img,.wp-block-image.is-style-rounded img{border-radius:9999px}@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){.wp-block-image.is-style-circle-mask img{border-radius:0;-webkit-mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-mode:alpha;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}}.wp-block-image :where(.has-border-color){border-style:solid}.wp-block-image :where([style*=border-top-color]){border-top-style:solid}.wp-block-image :where([style*=border-right-color]){border-left-style:solid}.wp-block-image :where([style*=border-bottom-color]){border-bottom-style:solid}.wp-block-image :where([style*=border-left-color]){border-right-style:solid}.wp-block-image :where([style*=border-width]){border-style:solid}.wp-block-image :where([style*=border-top-width]){border-top-style:solid}.wp-block-image :where([style*=border-right-width]){border-left-style:solid}.wp-block-image :where([style*=border-bottom-width]){border-bottom-style:solid}.wp-block-image :where([style*=border-left-width]){border-right-style:solid}.wp-block-image figure{margin:0}.wp-lightbox-container{display:flex;flex-direction:column;position:relative}.wp-lightbox-container img{cursor:zoom-in}.wp-lightbox-container img:hover+button{opacity:1}.wp-lightbox-container button{align-items:center;-webkit-backdrop-filter:blur(16px) saturate(180%);backdrop-filter:blur(16px) saturate(180%);background-color:rgba(90,90,90,.25);border:none;border-radius:4px;cursor:zoom-in;display:flex;height:20px;justify-content:center;left:16px;opacity:0;padding:0;position:absolute;text-align:center;top:16px;transition:opacity .2s ease;width:20px;z-index:100}.wp-lightbox-container button:focus-visible{outline:3px auto rgba(90,90,90,.25);outline:3px auto -webkit-focus-ring-color;outline-offset:3px}.wp-lightbox-container button:hover{cursor:pointer;opacity:1}.wp-lightbox-container button:focus{opacity:1}.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){background-color:rgba(90,90,90,.25);border:none}.wp-lightbox-overlay{box-sizing:border-box;cursor:zoom-out;height:100vh;overflow:hidden;position:fixed;right:0;top:0;visibility:hidden;width:100vw;z-index:100000}.wp-lightbox-overlay .close-button{align-items:center;cursor:pointer;display:flex;justify-content:center;left:calc(env(safe-area-inset-left) + 16px);min-height:40px;min-width:40px;padding:0;position:absolute;top:calc(env(safe-area-inset-top) + 16px);z-index:5000000}.wp-lightbox-overlay .close-button:focus,.wp-lightbox-overlay .close-button:hover,.wp-lightbox-overlay .close-button:not(:hover):not(:active):not(.has-background){background:none;border:none}.wp-lightbox-overlay .lightbox-image-container{height:var(--wp--lightbox-container-height);overflow:hidden;position:absolute;right:50%;top:50%;transform:translate(50%,-50%);transform-origin:top right;width:var(--wp--lightbox-container-width);z-index:9999999999}.wp-lightbox-overlay .wp-block-image{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;margin:0;position:relative;transform-origin:100% 0;width:100%;z-index:3000000}.wp-lightbox-overlay .wp-block-image img{height:var(--wp--lightbox-image-height);min-height:var(--wp--lightbox-image-height);min-width:var(--wp--lightbox-image-width);width:var(--wp--lightbox-image-width)}.wp-lightbox-overlay .wp-block-image figcaption{display:none}.wp-lightbox-overlay button{background:none;border:none}.wp-lightbox-overlay .scrim{background-color:#fff;height:100%;opacity:.9;position:absolute;width:100%;z-index:2000000}.wp-lightbox-overlay.active{animation:turn-on-visibility .25s both;visibility:visible}.wp-lightbox-overlay.active img{animation:turn-on-visibility .35s both}.wp-lightbox-overlay.hideanimationenabled:not(.active){animation:turn-off-visibility .35s both}.wp-lightbox-overlay.hideanimationenabled:not(.active) img{animation:turn-off-visibility .25s both}@media (prefers-reduced-motion:no-preference){.wp-lightbox-overlay.zoom.active{animation:none;opacity:1;visibility:visible}.wp-lightbox-overlay.zoom.active .lightbox-image-container{animation:lightbox-zoom-in .4s}.wp-lightbox-overlay.zoom.active .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.active .scrim{animation:turn-on-visibility .4s forwards}.wp-lightbox-overlay.zoom.hideanimationenabled:not(.active){animation:none}.wp-lightbox-overlay.zoom.hideanimationenabled:not(.active) .lightbox-image-container{animation:lightbox-zoom-out .4s}.wp-lightbox-overlay.zoom.hideanimationenabled:not(.active) .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.hideanimationenabled:not(.active) .scrim{animation:turn-off-visibility .4s forwards}}@keyframes turn-on-visibility{0%{opacity:0}to{opacity:1}}@keyframes turn-off-visibility{0%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}to{opacity:0;visibility:hidden}}@keyframes lightbox-zoom-in{0%{transform:translate(calc((-50vw + var(--wp--lightbox-initial-left-position))*-1),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale))}to{transform:translate(50%,-50%) scale(1)}}@keyframes lightbox-zoom-out{0%{transform:translate(50%,-50%) scale(1);visibility:visible}99%{visibility:visible}to{transform:translate(calc((-50vw + var(--wp--lightbox-initial-left-position))*-1),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale));visibility:hidden}}
\ No newline at end of file diff --git a/wp-includes/blocks/image/style.css b/wp-includes/blocks/image/style.css new file mode 100644 index 0000000..d06a868 --- /dev/null +++ b/wp-includes/blocks/image/style.css @@ -0,0 +1,301 @@ +.wp-block-image img{ + box-sizing:border-box; + height:auto; + max-width:100%; + vertical-align:bottom; +} +.wp-block-image[style*=border-radius] img,.wp-block-image[style*=border-radius]>a{ + border-radius:inherit; +} +.wp-block-image.has-custom-border img{ + box-sizing:border-box; +} +.wp-block-image.aligncenter{ + text-align:center; +} +.wp-block-image.alignfull img,.wp-block-image.alignwide img{ + height:auto; + width:100%; +} +.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{ + display:table; +} +.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{ + caption-side:bottom; + display:table-caption; +} +.wp-block-image .alignleft{ + float:left; + margin:.5em 1em .5em 0; +} +.wp-block-image .alignright{ + float:right; + margin:.5em 0 .5em 1em; +} +.wp-block-image .aligncenter{ + margin-left:auto; + margin-right:auto; +} +.wp-block-image figcaption{ + margin-bottom:1em; + margin-top:.5em; +} +.wp-block-image .is-style-rounded img,.wp-block-image.is-style-circle-mask img,.wp-block-image.is-style-rounded img{ + border-radius:9999px; +} +@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){ + .wp-block-image.is-style-circle-mask img{ + border-radius:0; + -webkit-mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>'); + mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>'); + mask-mode:alpha; + -webkit-mask-position:center; + mask-position:center; + -webkit-mask-repeat:no-repeat; + mask-repeat:no-repeat; + -webkit-mask-size:contain; + mask-size:contain; + } +} +.wp-block-image :where(.has-border-color){ + border-style:solid; +} +.wp-block-image :where([style*=border-top-color]){ + border-top-style:solid; +} +.wp-block-image :where([style*=border-right-color]){ + border-right-style:solid; +} +.wp-block-image :where([style*=border-bottom-color]){ + border-bottom-style:solid; +} +.wp-block-image :where([style*=border-left-color]){ + border-left-style:solid; +} +.wp-block-image :where([style*=border-width]){ + border-style:solid; +} +.wp-block-image :where([style*=border-top-width]){ + border-top-style:solid; +} +.wp-block-image :where([style*=border-right-width]){ + border-right-style:solid; +} +.wp-block-image :where([style*=border-bottom-width]){ + border-bottom-style:solid; +} +.wp-block-image :where([style*=border-left-width]){ + border-left-style:solid; +} + +.wp-block-image figure{ + margin:0; +} + +.wp-lightbox-container{ + display:flex; + flex-direction:column; + position:relative; +} +.wp-lightbox-container img{ + cursor:zoom-in; +} +.wp-lightbox-container img:hover+button{ + opacity:1; +} +.wp-lightbox-container button{ + align-items:center; + -webkit-backdrop-filter:blur(16px) saturate(180%); + backdrop-filter:blur(16px) saturate(180%); + background-color:rgba(90,90,90,.25); + border:none; + border-radius:4px; + cursor:zoom-in; + display:flex; + height:20px; + justify-content:center; + opacity:0; + padding:0; + position:absolute; + right:16px; + text-align:center; + top:16px; + transition:opacity .2s ease; + width:20px; + z-index:100; +} +.wp-lightbox-container button:focus-visible{ + outline:3px auto rgba(90,90,90,.25); + outline:3px auto -webkit-focus-ring-color; + outline-offset:3px; +} +.wp-lightbox-container button:hover{ + cursor:pointer; + opacity:1; +} +.wp-lightbox-container button:focus{ + opacity:1; +} +.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){ + background-color:rgba(90,90,90,.25); + border:none; +} + +.wp-lightbox-overlay{ + box-sizing:border-box; + cursor:zoom-out; + height:100vh; + left:0; + overflow:hidden; + position:fixed; + top:0; + visibility:hidden; + width:100vw; + z-index:100000; +} +.wp-lightbox-overlay .close-button{ + align-items:center; + cursor:pointer; + display:flex; + justify-content:center; + min-height:40px; + min-width:40px; + padding:0; + position:absolute; + right:calc(env(safe-area-inset-right) + 16px); + top:calc(env(safe-area-inset-top) + 16px); + z-index:5000000; +} +.wp-lightbox-overlay .close-button:focus,.wp-lightbox-overlay .close-button:hover,.wp-lightbox-overlay .close-button:not(:hover):not(:active):not(.has-background){ + background:none; + border:none; +} +.wp-lightbox-overlay .lightbox-image-container{ + height:var(--wp--lightbox-container-height); + left:50%; + overflow:hidden; + position:absolute; + top:50%; + transform:translate(-50%, -50%); + transform-origin:top left; + width:var(--wp--lightbox-container-width); + z-index:9999999999; +} +.wp-lightbox-overlay .wp-block-image{ + align-items:center; + box-sizing:border-box; + display:flex; + height:100%; + justify-content:center; + margin:0; + position:relative; + transform-origin:0 0; + width:100%; + z-index:3000000; +} +.wp-lightbox-overlay .wp-block-image img{ + height:var(--wp--lightbox-image-height); + min-height:var(--wp--lightbox-image-height); + min-width:var(--wp--lightbox-image-width); + width:var(--wp--lightbox-image-width); +} +.wp-lightbox-overlay .wp-block-image figcaption{ + display:none; +} +.wp-lightbox-overlay button{ + background:none; + border:none; +} +.wp-lightbox-overlay .scrim{ + background-color:#fff; + height:100%; + opacity:.9; + position:absolute; + width:100%; + z-index:2000000; +} +.wp-lightbox-overlay.active{ + animation:turn-on-visibility .25s both; + visibility:visible; +} +.wp-lightbox-overlay.active img{ + animation:turn-on-visibility .35s both; +} +.wp-lightbox-overlay.hideanimationenabled:not(.active){ + animation:turn-off-visibility .35s both; +} +.wp-lightbox-overlay.hideanimationenabled:not(.active) img{ + animation:turn-off-visibility .25s both; +} +@media (prefers-reduced-motion:no-preference){ + .wp-lightbox-overlay.zoom.active{ + animation:none; + opacity:1; + visibility:visible; + } + .wp-lightbox-overlay.zoom.active .lightbox-image-container{ + animation:lightbox-zoom-in .4s; + } + .wp-lightbox-overlay.zoom.active .lightbox-image-container img{ + animation:none; + } + .wp-lightbox-overlay.zoom.active .scrim{ + animation:turn-on-visibility .4s forwards; + } + .wp-lightbox-overlay.zoom.hideanimationenabled:not(.active){ + animation:none; + } + .wp-lightbox-overlay.zoom.hideanimationenabled:not(.active) .lightbox-image-container{ + animation:lightbox-zoom-out .4s; + } + .wp-lightbox-overlay.zoom.hideanimationenabled:not(.active) .lightbox-image-container img{ + animation:none; + } + .wp-lightbox-overlay.zoom.hideanimationenabled:not(.active) .scrim{ + animation:turn-off-visibility .4s forwards; + } +} + +@keyframes turn-on-visibility{ + 0%{ + opacity:0; + } + to{ + opacity:1; + } +} +@keyframes turn-off-visibility{ + 0%{ + opacity:1; + visibility:visible; + } + 99%{ + opacity:0; + visibility:visible; + } + to{ + opacity:0; + visibility:hidden; + } +} +@keyframes lightbox-zoom-in{ + 0%{ + transform:translate(calc(-50vw + var(--wp--lightbox-initial-left-position)), calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale)); + } + to{ + transform:translate(-50%, -50%) scale(1); + } +} +@keyframes lightbox-zoom-out{ + 0%{ + transform:translate(-50%, -50%) scale(1); + visibility:visible; + } + 99%{ + visibility:visible; + } + to{ + transform:translate(calc(-50vw + var(--wp--lightbox-initial-left-position)), calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale)); + visibility:hidden; + } +}
\ No newline at end of file diff --git a/wp-includes/blocks/image/style.min.css b/wp-includes/blocks/image/style.min.css new file mode 100644 index 0000000..0ee2855 --- /dev/null +++ b/wp-includes/blocks/image/style.min.css @@ -0,0 +1 @@ +.wp-block-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom}.wp-block-image[style*=border-radius] img,.wp-block-image[style*=border-radius]>a{border-radius:inherit}.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull img,.wp-block-image.alignwide img{height:auto;width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{display:table}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{caption-side:bottom;display:table-caption}.wp-block-image .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-image .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image figcaption{margin-bottom:1em;margin-top:.5em}.wp-block-image .is-style-rounded img,.wp-block-image.is-style-circle-mask img,.wp-block-image.is-style-rounded img{border-radius:9999px}@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){.wp-block-image.is-style-circle-mask img{border-radius:0;-webkit-mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-mode:alpha;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}}.wp-block-image :where(.has-border-color){border-style:solid}.wp-block-image :where([style*=border-top-color]){border-top-style:solid}.wp-block-image :where([style*=border-right-color]){border-right-style:solid}.wp-block-image :where([style*=border-bottom-color]){border-bottom-style:solid}.wp-block-image :where([style*=border-left-color]){border-left-style:solid}.wp-block-image :where([style*=border-width]){border-style:solid}.wp-block-image :where([style*=border-top-width]){border-top-style:solid}.wp-block-image :where([style*=border-right-width]){border-right-style:solid}.wp-block-image :where([style*=border-bottom-width]){border-bottom-style:solid}.wp-block-image :where([style*=border-left-width]){border-left-style:solid}.wp-block-image figure{margin:0}.wp-lightbox-container{display:flex;flex-direction:column;position:relative}.wp-lightbox-container img{cursor:zoom-in}.wp-lightbox-container img:hover+button{opacity:1}.wp-lightbox-container button{align-items:center;-webkit-backdrop-filter:blur(16px) saturate(180%);backdrop-filter:blur(16px) saturate(180%);background-color:rgba(90,90,90,.25);border:none;border-radius:4px;cursor:zoom-in;display:flex;height:20px;justify-content:center;opacity:0;padding:0;position:absolute;right:16px;text-align:center;top:16px;transition:opacity .2s ease;width:20px;z-index:100}.wp-lightbox-container button:focus-visible{outline:3px auto rgba(90,90,90,.25);outline:3px auto -webkit-focus-ring-color;outline-offset:3px}.wp-lightbox-container button:hover{cursor:pointer;opacity:1}.wp-lightbox-container button:focus{opacity:1}.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){background-color:rgba(90,90,90,.25);border:none}.wp-lightbox-overlay{box-sizing:border-box;cursor:zoom-out;height:100vh;left:0;overflow:hidden;position:fixed;top:0;visibility:hidden;width:100vw;z-index:100000}.wp-lightbox-overlay .close-button{align-items:center;cursor:pointer;display:flex;justify-content:center;min-height:40px;min-width:40px;padding:0;position:absolute;right:calc(env(safe-area-inset-right) + 16px);top:calc(env(safe-area-inset-top) + 16px);z-index:5000000}.wp-lightbox-overlay .close-button:focus,.wp-lightbox-overlay .close-button:hover,.wp-lightbox-overlay .close-button:not(:hover):not(:active):not(.has-background){background:none;border:none}.wp-lightbox-overlay .lightbox-image-container{height:var(--wp--lightbox-container-height);left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:top left;width:var(--wp--lightbox-container-width);z-index:9999999999}.wp-lightbox-overlay .wp-block-image{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;margin:0;position:relative;transform-origin:0 0;width:100%;z-index:3000000}.wp-lightbox-overlay .wp-block-image img{height:var(--wp--lightbox-image-height);min-height:var(--wp--lightbox-image-height);min-width:var(--wp--lightbox-image-width);width:var(--wp--lightbox-image-width)}.wp-lightbox-overlay .wp-block-image figcaption{display:none}.wp-lightbox-overlay button{background:none;border:none}.wp-lightbox-overlay .scrim{background-color:#fff;height:100%;opacity:.9;position:absolute;width:100%;z-index:2000000}.wp-lightbox-overlay.active{animation:turn-on-visibility .25s both;visibility:visible}.wp-lightbox-overlay.active img{animation:turn-on-visibility .35s both}.wp-lightbox-overlay.hideanimationenabled:not(.active){animation:turn-off-visibility .35s both}.wp-lightbox-overlay.hideanimationenabled:not(.active) img{animation:turn-off-visibility .25s both}@media (prefers-reduced-motion:no-preference){.wp-lightbox-overlay.zoom.active{animation:none;opacity:1;visibility:visible}.wp-lightbox-overlay.zoom.active .lightbox-image-container{animation:lightbox-zoom-in .4s}.wp-lightbox-overlay.zoom.active .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.active .scrim{animation:turn-on-visibility .4s forwards}.wp-lightbox-overlay.zoom.hideanimationenabled:not(.active){animation:none}.wp-lightbox-overlay.zoom.hideanimationenabled:not(.active) .lightbox-image-container{animation:lightbox-zoom-out .4s}.wp-lightbox-overlay.zoom.hideanimationenabled:not(.active) .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.hideanimationenabled:not(.active) .scrim{animation:turn-off-visibility .4s forwards}}@keyframes turn-on-visibility{0%{opacity:0}to{opacity:1}}@keyframes turn-off-visibility{0%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}to{opacity:0;visibility:hidden}}@keyframes lightbox-zoom-in{0%{transform:translate(calc(-50vw + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale))}to{transform:translate(-50%,-50%) scale(1)}}@keyframes lightbox-zoom-out{0%{transform:translate(-50%,-50%) scale(1);visibility:visible}99%{visibility:visible}to{transform:translate(calc(-50vw + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale));visibility:hidden}}
\ No newline at end of file diff --git a/wp-includes/blocks/image/theme-rtl.css b/wp-includes/blocks/image/theme-rtl.css new file mode 100644 index 0000000..4d1a839 --- /dev/null +++ b/wp-includes/blocks/image/theme-rtl.css @@ -0,0 +1,12 @@ +.wp-block-image figcaption{ + color:#555; + font-size:13px; + text-align:center; +} +.is-dark-theme .wp-block-image figcaption{ + color:hsla(0,0%,100%,.65); +} + +.wp-block-image{ + margin:0 0 1em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/image/theme-rtl.min.css b/wp-includes/blocks/image/theme-rtl.min.css new file mode 100644 index 0000000..52ef804 --- /dev/null +++ b/wp-includes/blocks/image/theme-rtl.min.css @@ -0,0 +1 @@ +.wp-block-image figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-image figcaption{color:hsla(0,0%,100%,.65)}.wp-block-image{margin:0 0 1em}
\ No newline at end of file diff --git a/wp-includes/blocks/image/theme.css b/wp-includes/blocks/image/theme.css new file mode 100644 index 0000000..4d1a839 --- /dev/null +++ b/wp-includes/blocks/image/theme.css @@ -0,0 +1,12 @@ +.wp-block-image figcaption{ + color:#555; + font-size:13px; + text-align:center; +} +.is-dark-theme .wp-block-image figcaption{ + color:hsla(0,0%,100%,.65); +} + +.wp-block-image{ + margin:0 0 1em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/image/theme.min.css b/wp-includes/blocks/image/theme.min.css new file mode 100644 index 0000000..52ef804 --- /dev/null +++ b/wp-includes/blocks/image/theme.min.css @@ -0,0 +1 @@ +.wp-block-image figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-image figcaption{color:hsla(0,0%,100%,.65)}.wp-block-image{margin:0 0 1em}
\ No newline at end of file diff --git a/wp-includes/blocks/image/view.asset.php b/wp-includes/blocks/image/view.asset.php new file mode 100644 index 0000000..a646d36 --- /dev/null +++ b/wp-includes/blocks/image/view.asset.php @@ -0,0 +1 @@ +<?php return array('dependencies' => array(), 'version' => '749bd8d7dd37390bdeea'); diff --git a/wp-includes/blocks/image/view.js b/wp-includes/blocks/image/view.js new file mode 100644 index 0000000..4d022ef --- /dev/null +++ b/wp-includes/blocks/image/view.js @@ -0,0 +1,533 @@ +"use strict"; +(self["__WordPressPrivateInteractivityAPI__"] = self["__WordPressPrivateInteractivityAPI__"] || []).push([[354],{ + +/***/ 699: +/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) { + +/* harmony import */ var _wordpress_interactivity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(754); +/** + * WordPress dependencies + */ + +const focusableSelectors = ['a[href]', 'area[href]', 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', 'select:not([disabled]):not([aria-hidden])', 'textarea:not([disabled]):not([aria-hidden])', 'button:not([disabled]):not([aria-hidden])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^="-"])']; + +/* + * Stores a context-bound scroll handler. + * + * This callback could be defined inline inside of the store + * object but it's created externally to avoid confusion about + * how its logic is called. This logic is not referenced directly + * by the directives in the markup because the scroll event we + * need to listen to is triggered on the window; so by defining it + * outside of the store, we signal that the behavior here is different. + * If we find a compelling reason to move it to the store, feel free. + * + * @type {Function} + */ +let scrollCallback; + +/* + * Tracks whether user is touching screen; used to + * differentiate behavior for touch and mouse input. + * + * @type {boolean} + */ +let isTouching = false; + +/* + * Tracks the last time the screen was touched; used to + * differentiate behavior for touch and mouse input. + * + * @type {number} + */ +let lastTouchTime = 0; + +/* + * Lightbox page-scroll handler: prevents scrolling. + * + * This handler is added to prevent scrolling behaviors that + * trigger content shift while the lightbox is open. + * + * It would be better to accomplish this through CSS alone, but + * using overflow: hidden is currently the only way to do so, and + * that causes the layout to shift and prevents the zoom animation + * from working in some cases because we're unable to account for + * the layout shift when doing the animation calculations. Instead, + * here we use JavaScript to prevent and reset the scrolling + * behavior. In the future, we may be able to use CSS or overflow: hidden + * instead to not rely on JavaScript, but this seems to be the best approach + * for now that provides the best visual experience. + * + * @param {Object} context Interactivity page context? + */ +function handleScroll(context) { + // We can't override the scroll behavior on mobile devices + // because doing so breaks the pinch to zoom functionality, and we + // want to allow users to zoom in further on the high-res image. + if (!isTouching && Date.now() - lastTouchTime > 450) { + // We are unable to use event.preventDefault() to prevent scrolling + // because the scroll event can't be canceled, so we reset the position instead. + window.scrollTo(context.core.image.scrollLeftReset, context.core.image.scrollTopReset); + } +} +(0,_wordpress_interactivity__WEBPACK_IMPORTED_MODULE_0__/* .store */ .h)({ + state: { + core: { + image: { + windowWidth: window.innerWidth, + windowHeight: window.innerHeight + } + } + }, + actions: { + core: { + image: { + showLightbox: ({ + context, + event + }) => { + // We can't initialize the lightbox until the reference + // image is loaded, otherwise the UX is broken. + if (!context.core.image.imageLoaded) { + return; + } + context.core.image.initialized = true; + context.core.image.lastFocusedElement = window.document.activeElement; + context.core.image.scrollDelta = 0; + context.core.image.pointerType = event.pointerType; + context.core.image.lightboxEnabled = true; + setStyles(context, context.core.image.imageRef); + context.core.image.scrollTopReset = window.pageYOffset || document.documentElement.scrollTop; + + // In most cases, this value will be 0, but this is included + // in case a user has created a page with horizontal scrolling. + context.core.image.scrollLeftReset = window.pageXOffset || document.documentElement.scrollLeft; + + // We define and bind the scroll callback here so + // that we can pass the context and as an argument. + // We may be able to change this in the future if we + // define the scroll callback in the store instead, but + // this approach seems to tbe clearest for now. + scrollCallback = handleScroll.bind(null, context); + + // We need to add a scroll event listener to the window + // here because we are unable to otherwise access it via + // the Interactivity API directives. If we add a native way + // to access the window, we can remove this. + window.addEventListener('scroll', scrollCallback, false); + }, + hideLightbox: async ({ + context + }) => { + context.core.image.hideAnimationEnabled = true; + if (context.core.image.lightboxEnabled) { + // We want to wait until the close animation is completed + // before allowing a user to scroll again. The duration of this + // animation is defined in the styles.scss and depends on if the + // animation is 'zoom' or 'fade', but in any case we should wait + // a few milliseconds longer than the duration, otherwise a user + // may scroll too soon and cause the animation to look sloppy. + setTimeout(function () { + window.removeEventListener('scroll', scrollCallback); + // If we don't delay before changing the focus, + // the focus ring will appear on Firefox before + // the image has finished animating, which looks broken. + context.core.image.lightboxTriggerRef.focus({ + preventScroll: true + }); + }, 450); + context.core.image.lightboxEnabled = false; + } + }, + handleKeydown: ({ + context, + actions, + event + }) => { + if (context.core.image.lightboxEnabled) { + if (event.key === 'Tab' || event.keyCode === 9) { + // If shift + tab it change the direction + if (event.shiftKey && window.document.activeElement === context.core.image.firstFocusableElement) { + event.preventDefault(); + context.core.image.lastFocusableElement.focus(); + } else if (!event.shiftKey && window.document.activeElement === context.core.image.lastFocusableElement) { + event.preventDefault(); + context.core.image.firstFocusableElement.focus(); + } + } + if (event.key === 'Escape' || event.keyCode === 27) { + actions.core.image.hideLightbox({ + context, + event + }); + } + } + }, + // This is fired just by lazily loaded + // images on the page, not all images. + handleLoad: ({ + context, + effects, + ref + }) => { + context.core.image.imageLoaded = true; + context.core.image.imageCurrentSrc = ref.currentSrc; + effects.core.image.setButtonStyles({ + context, + ref + }); + }, + handleTouchStart: () => { + isTouching = true; + }, + handleTouchMove: ({ + context, + event + }) => { + // On mobile devices, we want to prevent triggering the + // scroll event because otherwise the page jumps around as + // we reset the scroll position. This also means that closing + // the lightbox requires that a user perform a simple tap. This + // may be changed in the future if we find a better alternative + // to override or reset the scroll position during swipe actions. + if (context.core.image.lightboxEnabled) { + event.preventDefault(); + } + }, + handleTouchEnd: () => { + // We need to wait a few milliseconds before resetting + // to ensure that pinch to zoom works consistently + // on mobile devices when the lightbox is open. + lastTouchTime = Date.now(); + isTouching = false; + } + } + } + }, + selectors: { + core: { + image: { + roleAttribute: ({ + context + }) => { + return context.core.image.lightboxEnabled ? 'dialog' : null; + }, + ariaModal: ({ + context + }) => { + return context.core.image.lightboxEnabled ? 'true' : null; + }, + dialogLabel: ({ + context + }) => { + return context.core.image.lightboxEnabled ? context.core.image.dialogLabel : null; + }, + lightboxObjectFit: ({ + context + }) => { + if (context.core.image.initialized) { + return 'cover'; + } + }, + enlargedImgSrc: ({ + context + }) => { + return context.core.image.initialized ? context.core.image.imageUploadedSrc : 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='; + } + } + } + }, + effects: { + core: { + image: { + initOriginImage: ({ + context, + ref + }) => { + context.core.image.imageRef = ref; + context.core.image.lightboxTriggerRef = ref.parentElement.querySelector('.lightbox-trigger'); + if (ref.complete) { + context.core.image.imageLoaded = true; + context.core.image.imageCurrentSrc = ref.currentSrc; + } + }, + initLightbox: async ({ + context, + ref + }) => { + if (context.core.image.lightboxEnabled) { + const focusableElements = ref.querySelectorAll(focusableSelectors); + context.core.image.firstFocusableElement = focusableElements[0]; + context.core.image.lastFocusableElement = focusableElements[focusableElements.length - 1]; + + // Move focus to the dialog when opening it. + ref.focus(); + } + }, + setButtonStyles: ({ + context, + ref + }) => { + const { + naturalWidth, + naturalHeight, + offsetWidth, + offsetHeight + } = ref; + + // If the image isn't loaded yet, we can't + // calculate where the button should be. + if (naturalWidth === 0 || naturalHeight === 0) { + return; + } + const figure = ref.parentElement; + const figureWidth = ref.parentElement.clientWidth; + + // We need special handling for the height because + // a caption will cause the figure to be taller than + // the image, which means we need to account for that + // when calculating the placement of the button in the + // top right corner of the image. + let figureHeight = ref.parentElement.clientHeight; + const caption = figure.querySelector('figcaption'); + if (caption) { + const captionComputedStyle = window.getComputedStyle(caption); + figureHeight = figureHeight - caption.offsetHeight - parseFloat(captionComputedStyle.marginTop) - parseFloat(captionComputedStyle.marginBottom); + } + const buttonOffsetTop = figureHeight - offsetHeight; + const buttonOffsetRight = figureWidth - offsetWidth; + + // In the case of an image with object-fit: contain, the + // size of the <img> element can be larger than the image itself, + // so we need to calculate where to place the button. + if (context.core.image.scaleAttr === 'contain') { + // Natural ratio of the image. + const naturalRatio = naturalWidth / naturalHeight; + // Offset ratio of the image. + const offsetRatio = offsetWidth / offsetHeight; + if (naturalRatio >= offsetRatio) { + // If it reaches the width first, keep + // the width and compute the height. + const referenceHeight = offsetWidth / naturalRatio; + context.core.image.imageButtonTop = (offsetHeight - referenceHeight) / 2 + buttonOffsetTop + 16; + context.core.image.imageButtonRight = buttonOffsetRight + 16; + } else { + // If it reaches the height first, keep + // the height and compute the width. + const referenceWidth = offsetHeight * naturalRatio; + context.core.image.imageButtonTop = buttonOffsetTop + 16; + context.core.image.imageButtonRight = (offsetWidth - referenceWidth) / 2 + buttonOffsetRight + 16; + } + } else { + context.core.image.imageButtonTop = buttonOffsetTop + 16; + context.core.image.imageButtonRight = buttonOffsetRight + 16; + } + }, + setStylesOnResize: ({ + state, + context, + ref + }) => { + if (context.core.image.lightboxEnabled && (state.core.image.windowWidth || state.core.image.windowHeight)) { + setStyles(context, ref); + } + } + } + } + } +}, { + afterLoad: ({ + state + }) => { + window.addEventListener('resize', debounce(() => { + state.core.image.windowWidth = window.innerWidth; + state.core.image.windowHeight = window.innerHeight; + })); + } +}); + +/* + * Computes styles for the lightbox and adds them to the document. + * + * @function + * @param {Object} context - An Interactivity API context + * @param {Object} event - A triggering event + */ +function setStyles(context, ref) { + // The reference img element lies adjacent + // to the event target button in the DOM. + let { + naturalWidth, + naturalHeight, + offsetWidth: originalWidth, + offsetHeight: originalHeight + } = ref; + let { + x: screenPosX, + y: screenPosY + } = ref.getBoundingClientRect(); + + // Natural ratio of the image clicked to open the lightbox. + const naturalRatio = naturalWidth / naturalHeight; + // Original ratio of the image clicked to open the lightbox. + let originalRatio = originalWidth / originalHeight; + + // If it has object-fit: contain, recalculate the original sizes + // and the screen position without the blank spaces. + if (context.core.image.scaleAttr === 'contain') { + if (naturalRatio > originalRatio) { + const heightWithoutSpace = originalWidth / naturalRatio; + // Recalculate screen position without the top space. + screenPosY += (originalHeight - heightWithoutSpace) / 2; + originalHeight = heightWithoutSpace; + } else { + const widthWithoutSpace = originalHeight * naturalRatio; + // Recalculate screen position without the left space. + screenPosX += (originalWidth - widthWithoutSpace) / 2; + originalWidth = widthWithoutSpace; + } + } + originalRatio = originalWidth / originalHeight; + + // Typically, we use the image's full-sized dimensions. If those + // dimensions have not been set (i.e. an external image with only one size), + // the image's dimensions in the lightbox are the same + // as those of the image in the content. + let imgMaxWidth = parseFloat(context.core.image.targetWidth !== 'none' ? context.core.image.targetWidth : naturalWidth); + let imgMaxHeight = parseFloat(context.core.image.targetHeight !== 'none' ? context.core.image.targetHeight : naturalHeight); + + // Ratio of the biggest image stored in the database. + let imgRatio = imgMaxWidth / imgMaxHeight; + let containerMaxWidth = imgMaxWidth; + let containerMaxHeight = imgMaxHeight; + let containerWidth = imgMaxWidth; + let containerHeight = imgMaxHeight; + // Check if the target image has a different ratio than the original one (thumbnail). + // Recalculate the width and height. + if (naturalRatio.toFixed(2) !== imgRatio.toFixed(2)) { + if (naturalRatio > imgRatio) { + // If the width is reached before the height, we keep the maxWidth + // and recalculate the height. + // Unless the difference between the maxHeight and the reducedHeight + // is higher than the maxWidth, where we keep the reducedHeight and + // recalculate the width. + const reducedHeight = imgMaxWidth / naturalRatio; + if (imgMaxHeight - reducedHeight > imgMaxWidth) { + imgMaxHeight = reducedHeight; + imgMaxWidth = reducedHeight * naturalRatio; + } else { + imgMaxHeight = imgMaxWidth / naturalRatio; + } + } else { + // If the height is reached before the width, we keep the maxHeight + // and recalculate the width. + // Unless the difference between the maxWidth and the reducedWidth + // is higher than the maxHeight, where we keep the reducedWidth and + // recalculate the height. + const reducedWidth = imgMaxHeight * naturalRatio; + if (imgMaxWidth - reducedWidth > imgMaxHeight) { + imgMaxWidth = reducedWidth; + imgMaxHeight = reducedWidth / naturalRatio; + } else { + imgMaxWidth = imgMaxHeight * naturalRatio; + } + } + containerWidth = imgMaxWidth; + containerHeight = imgMaxHeight; + imgRatio = imgMaxWidth / imgMaxHeight; + + // Calculate the max size of the container. + if (originalRatio > imgRatio) { + containerMaxWidth = imgMaxWidth; + containerMaxHeight = containerMaxWidth / originalRatio; + } else { + containerMaxHeight = imgMaxHeight; + containerMaxWidth = containerMaxHeight * originalRatio; + } + } + + // If the image has been pixelated on purpose, keep that size. + if (originalWidth > containerWidth || originalHeight > containerHeight) { + containerWidth = originalWidth; + containerHeight = originalHeight; + } + + // Calculate the final lightbox image size and the + // scale factor. MaxWidth is either the window container + // (accounting for padding) or the image resolution. + let horizontalPadding = 0; + if (window.innerWidth > 480) { + horizontalPadding = 80; + } else if (window.innerWidth > 1920) { + horizontalPadding = 160; + } + const verticalPadding = 80; + const targetMaxWidth = Math.min(window.innerWidth - horizontalPadding, containerWidth); + const targetMaxHeight = Math.min(window.innerHeight - verticalPadding, containerHeight); + const targetContainerRatio = targetMaxWidth / targetMaxHeight; + if (originalRatio > targetContainerRatio) { + // If targetMaxWidth is reached before targetMaxHeight + containerWidth = targetMaxWidth; + containerHeight = containerWidth / originalRatio; + } else { + // If targetMaxHeight is reached before targetMaxWidth + containerHeight = targetMaxHeight; + containerWidth = containerHeight * originalRatio; + } + const containerScale = originalWidth / containerWidth; + const lightboxImgWidth = imgMaxWidth * (containerWidth / containerMaxWidth); + const lightboxImgHeight = imgMaxHeight * (containerHeight / containerMaxHeight); + + // Add the CSS variables needed. + let styleTag = document.getElementById('wp-lightbox-styles'); + if (!styleTag) { + styleTag = document.createElement('style'); + styleTag.id = 'wp-lightbox-styles'; + document.head.appendChild(styleTag); + } + + // As of this writing, using the calculations above will render the lightbox + // with a small, erroneous whitespace on the left side of the image in iOS Safari, + // perhaps due to an inconsistency in how browsers handle absolute positioning and CSS + // transformation. In any case, adding 1 pixel to the container width and height solves + // the problem, though this can be removed if the issue is fixed in the future. + styleTag.innerHTML = ` + :root { + --wp--lightbox-initial-top-position: ${screenPosY}px; + --wp--lightbox-initial-left-position: ${screenPosX}px; + --wp--lightbox-container-width: ${containerWidth + 1}px; + --wp--lightbox-container-height: ${containerHeight + 1}px; + --wp--lightbox-image-width: ${lightboxImgWidth}px; + --wp--lightbox-image-height: ${lightboxImgHeight}px; + --wp--lightbox-scale: ${containerScale}; + } + `; +} + +/* + * Debounces a function call. + * + * @function + * @param {Function} func - A function to be called + * @param {number} wait - The time to wait before calling the function + */ +function debounce(func, wait = 50) { + let timeout; + return () => { + const later = () => { + timeout = null; + func(); + }; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + }; +} + +/***/ }) + +}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); } +/******/ var __webpack_exports__ = (__webpack_exec__(699)); +/******/ } +]);
\ No newline at end of file diff --git a/wp-includes/blocks/image/view.min.asset.php b/wp-includes/blocks/image/view.min.asset.php new file mode 100644 index 0000000..d1b4a61 --- /dev/null +++ b/wp-includes/blocks/image/view.min.asset.php @@ -0,0 +1 @@ +<?php return array('dependencies' => array(), 'version' => '32caaf5e7c6834efef4c'); diff --git a/wp-includes/blocks/image/view.min.js b/wp-includes/blocks/image/view.min.js new file mode 100644 index 0000000..af1d512 --- /dev/null +++ b/wp-includes/blocks/image/view.min.js @@ -0,0 +1 @@ +"use strict";(self.__WordPressPrivateInteractivityAPI__=self.__WordPressPrivateInteractivityAPI__||[]).push([[354],{699:function(e,t,i){var o=i(754);const n=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])","button:not([disabled]):not([aria-hidden])","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex^="-"])'];let a,r=!1,c=0;function l(e){!r&&Date.now()-c>450&&window.scrollTo(e.core.image.scrollLeftReset,e.core.image.scrollTopReset)}function g(e,t){let{naturalWidth:i,naturalHeight:o,offsetWidth:n,offsetHeight:a}=t,{x:r,y:c}=t.getBoundingClientRect();const l=i/o;let g=n/a;if("contain"===e.core.image.scaleAttr)if(l>g){const e=n/l;c+=(a-e)/2,a=e}else{const e=a*l;r+=(n-e)/2,n=e}g=n/a;let d=parseFloat("none"!==e.core.image.targetWidth?e.core.image.targetWidth:i),m=parseFloat("none"!==e.core.image.targetHeight?e.core.image.targetHeight:o),s=d/m,h=d,u=m,f=d,w=m;if(l.toFixed(2)!==s.toFixed(2)){if(l>s){const e=d/l;m-e>d?(m=e,d=e*l):m=d/l}else{const e=m*l;d-e>m?(d=e,m=e/l):d=m*l}f=d,w=m,s=d/m,g>s?(h=d,u=h/g):(u=m,h=u*g)}(n>f||a>w)&&(f=n,w=a);let b=0;window.innerWidth>480?b=80:window.innerWidth>1920&&(b=160);const x=Math.min(window.innerWidth-b,f),p=Math.min(window.innerHeight-80,w);g>x/p?(f=x,w=f/g):(w=p,f=w*g);const E=n/f,y=d*(f/h),v=m*(w/u);let A=document.getElementById("wp-lightbox-styles");A||(A=document.createElement("style"),A.id="wp-lightbox-styles",document.head.appendChild(A)),A.innerHTML=`\n\t\t:root {\n\t\t\t--wp--lightbox-initial-top-position: ${c}px;\n\t\t\t--wp--lightbox-initial-left-position: ${r}px;\n\t\t\t--wp--lightbox-container-width: ${f+1}px;\n\t\t\t--wp--lightbox-container-height: ${w+1}px;\n\t\t\t--wp--lightbox-image-width: ${y}px;\n\t\t\t--wp--lightbox-image-height: ${v}px;\n\t\t\t--wp--lightbox-scale: ${E};\n\t\t}\n\t`}(0,o.h)({state:{core:{image:{windowWidth:window.innerWidth,windowHeight:window.innerHeight}}},actions:{core:{image:{showLightbox:({context:e,event:t})=>{e.core.image.imageLoaded&&(e.core.image.initialized=!0,e.core.image.lastFocusedElement=window.document.activeElement,e.core.image.scrollDelta=0,e.core.image.pointerType=t.pointerType,e.core.image.lightboxEnabled=!0,g(e,e.core.image.imageRef),e.core.image.scrollTopReset=window.pageYOffset||document.documentElement.scrollTop,e.core.image.scrollLeftReset=window.pageXOffset||document.documentElement.scrollLeft,a=l.bind(null,e),window.addEventListener("scroll",a,!1))},hideLightbox:async({context:e})=>{e.core.image.hideAnimationEnabled=!0,e.core.image.lightboxEnabled&&(setTimeout((function(){window.removeEventListener("scroll",a),e.core.image.lightboxTriggerRef.focus({preventScroll:!0})}),450),e.core.image.lightboxEnabled=!1)},handleKeydown:({context:e,actions:t,event:i})=>{e.core.image.lightboxEnabled&&("Tab"!==i.key&&9!==i.keyCode||(i.shiftKey&&window.document.activeElement===e.core.image.firstFocusableElement?(i.preventDefault(),e.core.image.lastFocusableElement.focus()):i.shiftKey||window.document.activeElement!==e.core.image.lastFocusableElement||(i.preventDefault(),e.core.image.firstFocusableElement.focus())),"Escape"!==i.key&&27!==i.keyCode||t.core.image.hideLightbox({context:e,event:i}))},handleLoad:({context:e,effects:t,ref:i})=>{e.core.image.imageLoaded=!0,e.core.image.imageCurrentSrc=i.currentSrc,t.core.image.setButtonStyles({context:e,ref:i})},handleTouchStart:()=>{r=!0},handleTouchMove:({context:e,event:t})=>{e.core.image.lightboxEnabled&&t.preventDefault()},handleTouchEnd:()=>{c=Date.now(),r=!1}}}},selectors:{core:{image:{roleAttribute:({context:e})=>e.core.image.lightboxEnabled?"dialog":null,ariaModal:({context:e})=>e.core.image.lightboxEnabled?"true":null,dialogLabel:({context:e})=>e.core.image.lightboxEnabled?e.core.image.dialogLabel:null,lightboxObjectFit:({context:e})=>{if(e.core.image.initialized)return"cover"},enlargedImgSrc:({context:e})=>e.core.image.initialized?e.core.image.imageUploadedSrc:"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="}}},effects:{core:{image:{initOriginImage:({context:e,ref:t})=>{e.core.image.imageRef=t,e.core.image.lightboxTriggerRef=t.parentElement.querySelector(".lightbox-trigger"),t.complete&&(e.core.image.imageLoaded=!0,e.core.image.imageCurrentSrc=t.currentSrc)},initLightbox:async({context:e,ref:t})=>{if(e.core.image.lightboxEnabled){const i=t.querySelectorAll(n);e.core.image.firstFocusableElement=i[0],e.core.image.lastFocusableElement=i[i.length-1],t.focus()}},setButtonStyles:({context:e,ref:t})=>{const{naturalWidth:i,naturalHeight:o,offsetWidth:n,offsetHeight:a}=t;if(0===i||0===o)return;const r=t.parentElement,c=t.parentElement.clientWidth;let l=t.parentElement.clientHeight;const g=r.querySelector("figcaption");if(g){const e=window.getComputedStyle(g);l=l-g.offsetHeight-parseFloat(e.marginTop)-parseFloat(e.marginBottom)}const d=l-a,m=c-n;if("contain"===e.core.image.scaleAttr){const t=i/o;if(t>=n/a){const i=n/t;e.core.image.imageButtonTop=(a-i)/2+d+16,e.core.image.imageButtonRight=m+16}else{const i=a*t;e.core.image.imageButtonTop=d+16,e.core.image.imageButtonRight=(n-i)/2+m+16}}else e.core.image.imageButtonTop=d+16,e.core.image.imageButtonRight=m+16},setStylesOnResize:({state:e,context:t,ref:i})=>{t.core.image.lightboxEnabled&&(e.core.image.windowWidth||e.core.image.windowHeight)&&g(t,i)}}}}},{afterLoad:({state:e})=>{window.addEventListener("resize",function(e,t=50){let i;return()=>{const o=()=>{i=null,e()};clearTimeout(i),i=setTimeout(o,t)}}((()=>{e.core.image.windowWidth=window.innerWidth,e.core.image.windowHeight=window.innerHeight})))}})}},function(e){var t;t=699,e(e.s=t)}]);
\ No newline at end of file diff --git a/wp-includes/blocks/index.php b/wp-includes/blocks/index.php new file mode 100644 index 0000000..4096772 --- /dev/null +++ b/wp-includes/blocks/index.php @@ -0,0 +1,157 @@ +<?php +/** + * Used to set up all core blocks used with the block editor. + * + * @package WordPress + */ + +define( 'BLOCKS_PATH', ABSPATH . WPINC . '/blocks/' ); + +// Include files required for core blocks registration. +require BLOCKS_PATH . 'legacy-widget.php'; +require BLOCKS_PATH . 'widget-group.php'; +require BLOCKS_PATH . 'require-dynamic-blocks.php'; + +/** + * Registers core block style handles. + * + * While {@see register_block_style_handle()} is typically used for that, the way it is + * implemented is inefficient for core block styles. Registering those style handles here + * avoids unnecessary logic and filesystem lookups in the other function. + * + * @since 6.3.0 + * + * @global string $wp_version The WordPress version string. + */ +function register_core_block_style_handles() { + global $wp_version; + + if ( ! wp_should_load_separate_core_block_assets() ) { + return; + } + + $blocks_url = includes_url( 'blocks/' ); + $suffix = wp_scripts_get_suffix(); + $wp_styles = wp_styles(); + $style_fields = array( + 'style' => 'style', + 'editorStyle' => 'editor', + ); + + static $core_blocks_meta; + if ( ! $core_blocks_meta ) { + $core_blocks_meta = require BLOCKS_PATH . 'blocks-json.php'; + } + + $files = false; + $transient_name = 'wp_core_block_css_files'; + + /* + * Ignore transient cache when the development mode is set to 'core'. Why? To avoid interfering with + * the core developer's workflow. + */ + $can_use_cached = ! wp_is_development_mode( 'core' ); + + if ( $can_use_cached ) { + $cached_files = get_transient( $transient_name ); + + // Check the validity of cached values by checking against the current WordPress version. + if ( + is_array( $cached_files ) + && isset( $cached_files['version'] ) + && $cached_files['version'] === $wp_version + && isset( $cached_files['files'] ) + ) { + $files = $cached_files['files']; + } + } + + if ( ! $files ) { + $files = glob( wp_normalize_path( BLOCKS_PATH . '**/**.css' ) ); + + // Normalize BLOCKS_PATH prior to substitution for Windows environments. + $normalized_blocks_path = wp_normalize_path( BLOCKS_PATH ); + + $files = array_map( + static function ( $file ) use ( $normalized_blocks_path ) { + return str_replace( $normalized_blocks_path, '', $file ); + }, + $files + ); + + // Save core block style paths in cache when not in development mode. + if ( $can_use_cached ) { + set_transient( + $transient_name, + array( + 'version' => $wp_version, + 'files' => $files, + ) + ); + } + } + + $register_style = static function ( $name, $filename, $style_handle ) use ( $blocks_url, $suffix, $wp_styles, $files ) { + $style_path = "{$name}/{$filename}{$suffix}.css"; + $path = wp_normalize_path( BLOCKS_PATH . $style_path ); + + if ( ! in_array( $style_path, $files, true ) ) { + $wp_styles->add( + $style_handle, + false + ); + return; + } + + $wp_styles->add( $style_handle, $blocks_url . $style_path ); + $wp_styles->add_data( $style_handle, 'path', $path ); + + $rtl_file = "{$name}/{$filename}-rtl{$suffix}.css"; + if ( is_rtl() && in_array( $rtl_file, $files, true ) ) { + $wp_styles->add_data( $style_handle, 'rtl', 'replace' ); + $wp_styles->add_data( $style_handle, 'suffix', $suffix ); + $wp_styles->add_data( $style_handle, 'path', str_replace( "{$suffix}.css", "-rtl{$suffix}.css", $path ) ); + } + }; + + foreach ( $core_blocks_meta as $name => $schema ) { + /** This filter is documented in wp-includes/blocks.php */ + $schema = apply_filters( 'block_type_metadata', $schema ); + + // Backfill these properties similar to `register_block_type_from_metadata()`. + if ( ! isset( $schema['style'] ) ) { + $schema['style'] = "wp-block-{$name}"; + } + if ( ! isset( $schema['editorStyle'] ) ) { + $schema['editorStyle'] = "wp-block-{$name}-editor"; + } + + // Register block theme styles. + $register_style( $name, 'theme', "wp-block-{$name}-theme" ); + + foreach ( $style_fields as $style_field => $filename ) { + $style_handle = $schema[ $style_field ]; + if ( is_array( $style_handle ) ) { + continue; + } + $register_style( $name, $filename, $style_handle ); + } + } +} +add_action( 'init', 'register_core_block_style_handles', 9 ); + +/** + * Registers core block types using metadata files. + * Dynamic core blocks are registered separately. + * + * @since 5.5.0 + */ +function register_core_block_types_from_metadata() { + $block_folders = require BLOCKS_PATH . 'require-static-blocks.php'; + foreach ( $block_folders as $block_folder ) { + register_block_type_from_metadata( + BLOCKS_PATH . $block_folder + ); + } +} +add_action( 'init', 'register_core_block_types_from_metadata' ); diff --git a/wp-includes/blocks/latest-comments.php b/wp-includes/blocks/latest-comments.php new file mode 100644 index 0000000..830e22a --- /dev/null +++ b/wp-includes/blocks/latest-comments.php @@ -0,0 +1,158 @@ +<?php +/** + * Server-side rendering of the `core/latest-comments` block. + * + * @package WordPress + */ + +/** + * Get the post title. + * + * The post title is fetched and if it is blank then a default string is + * returned. + * + * Copied from `wp-admin/includes/template.php`, but we can't include that + * file because: + * + * 1. It causes bugs with test fixture generation and strange Docker 255 error + * codes. + * 2. It's in the admin; ideally we *shouldn't* be including files from the + * admin for a block's output. It's a very small/simple function as well, + * so duplicating it isn't too terrible. + * + * @since 3.3.0 + * + * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global $post. + * @return string The post title if set; "(no title)" if no title is set. + */ +function wp_latest_comments_draft_or_post_title( $post = 0 ) { + $title = get_the_title( $post ); + if ( empty( $title ) ) { + $title = __( '(no title)' ); + } + return $title; +} + +/** + * Renders the `core/latest-comments` block on server. + * + * @param array $attributes The block attributes. + * + * @return string Returns the post content with latest comments added. + */ +function render_block_core_latest_comments( $attributes = array() ) { + $comments = get_comments( + /** This filter is documented in wp-includes/widgets/class-wp-widget-recent-comments.php */ + apply_filters( + 'widget_comments_args', + array( + 'number' => $attributes['commentsToShow'], + 'status' => 'approve', + 'post_status' => 'publish', + ), + array() + ) + ); + + $list_items_markup = ''; + if ( ! empty( $comments ) ) { + // Prime the cache for associated posts. This is copied from \WP_Widget_Recent_Comments::widget(). + $post_ids = array_unique( wp_list_pluck( $comments, 'comment_post_ID' ) ); + _prime_post_caches( $post_ids, strpos( get_option( 'permalink_structure' ), '%category%' ), false ); + + foreach ( $comments as $comment ) { + $list_items_markup .= '<li class="wp-block-latest-comments__comment">'; + if ( $attributes['displayAvatar'] ) { + $avatar = get_avatar( + $comment, + 48, + '', + '', + array( + 'class' => 'wp-block-latest-comments__comment-avatar', + ) + ); + if ( $avatar ) { + $list_items_markup .= $avatar; + } + } + + $list_items_markup .= '<article>'; + $list_items_markup .= '<footer class="wp-block-latest-comments__comment-meta">'; + $author_url = get_comment_author_url( $comment ); + if ( empty( $author_url ) && ! empty( $comment->user_id ) ) { + $author_url = get_author_posts_url( $comment->user_id ); + } + + $author_markup = ''; + if ( $author_url ) { + $author_markup .= '<a class="wp-block-latest-comments__comment-author" href="' . esc_url( $author_url ) . '">' . get_comment_author( $comment ) . '</a>'; + } else { + $author_markup .= '<span class="wp-block-latest-comments__comment-author">' . get_comment_author( $comment ) . '</span>'; + } + + // `_draft_or_post_title` calls `esc_html()` so we don't need to wrap that call in + // `esc_html`. + $post_title = '<a class="wp-block-latest-comments__comment-link" href="' . esc_url( get_comment_link( $comment ) ) . '">' . wp_latest_comments_draft_or_post_title( $comment->comment_post_ID ) . '</a>'; + + $list_items_markup .= sprintf( + /* translators: 1: author name (inside <a> or <span> tag, based on if they have a URL), 2: post title related to this comment */ + __( '%1$s on %2$s' ), + $author_markup, + $post_title + ); + + if ( $attributes['displayDate'] ) { + $list_items_markup .= sprintf( + '<time datetime="%1$s" class="wp-block-latest-comments__comment-date">%2$s</time>', + esc_attr( get_comment_date( 'c', $comment ) ), + date_i18n( get_option( 'date_format' ), get_comment_date( 'U', $comment ) ) + ); + } + $list_items_markup .= '</footer>'; + if ( $attributes['displayExcerpt'] ) { + $list_items_markup .= '<div class="wp-block-latest-comments__comment-excerpt">' . wpautop( get_comment_excerpt( $comment ) ) . '</div>'; + } + $list_items_markup .= '</article></li>'; + } + } + + $classnames = array(); + if ( $attributes['displayAvatar'] ) { + $classnames[] = 'has-avatars'; + } + if ( $attributes['displayDate'] ) { + $classnames[] = 'has-dates'; + } + if ( $attributes['displayExcerpt'] ) { + $classnames[] = 'has-excerpts'; + } + if ( empty( $comments ) ) { + $classnames[] = 'no-comments'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classnames ) ) ); + + return ! empty( $comments ) ? sprintf( + '<ol %1$s>%2$s</ol>', + $wrapper_attributes, + $list_items_markup + ) : sprintf( + '<div %1$s>%2$s</div>', + $wrapper_attributes, + __( 'No comments to show.' ) + ); +} + +/** + * Registers the `core/latest-comments` block. + */ +function register_block_core_latest_comments() { + register_block_type_from_metadata( + __DIR__ . '/latest-comments', + array( + 'render_callback' => 'render_block_core_latest_comments', + ) + ); +} + +add_action( 'init', 'register_block_core_latest_comments' ); diff --git a/wp-includes/blocks/latest-comments/block.json b/wp-includes/blocks/latest-comments/block.json new file mode 100644 index 0000000..0b213e9 --- /dev/null +++ b/wp-includes/blocks/latest-comments/block.json @@ -0,0 +1,53 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/latest-comments", + "title": "Latest Comments", + "category": "widgets", + "description": "Display a list of your most recent comments.", + "keywords": [ "recent comments" ], + "textdomain": "default", + "attributes": { + "commentsToShow": { + "type": "number", + "default": 5, + "minimum": 1, + "maximum": 100 + }, + "displayAvatar": { + "type": "boolean", + "default": true + }, + "displayDate": { + "type": "boolean", + "default": true + }, + "displayExcerpt": { + "type": "boolean", + "default": true + } + }, + "supports": { + "align": true, + "html": false, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-latest-comments-editor", + "style": "wp-block-latest-comments" +} diff --git a/wp-includes/blocks/latest-comments/style-rtl.css b/wp-includes/blocks/latest-comments/style-rtl.css new file mode 100644 index 0000000..0736691 --- /dev/null +++ b/wp-includes/blocks/latest-comments/style-rtl.css @@ -0,0 +1,55 @@ +ol.wp-block-latest-comments{ + box-sizing:border-box; + margin-right:0; +} + +:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment)){ + line-height:1.1; +} + +:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment-excerpt p)){ + line-height:1.8; +} + +.has-dates :where(.wp-block-latest-comments:not([style*=line-height])),.has-excerpts :where(.wp-block-latest-comments:not([style*=line-height])){ + line-height:1.5; +} + +.wp-block-latest-comments .wp-block-latest-comments{ + padding-right:0; +} + +.wp-block-latest-comments__comment{ + list-style:none; + margin-bottom:1em; +} +.has-avatars .wp-block-latest-comments__comment{ + list-style:none; + min-height:2.25em; +} +.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{ + margin-right:3.25em; +} + +.wp-block-latest-comments__comment-excerpt p{ + font-size:.875em; + margin:.36em 0 1.4em; +} + +.wp-block-latest-comments__comment-date{ + display:block; + font-size:.75em; +} + +.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{ + border-radius:1.5em; + display:block; + float:right; + height:2.5em; + margin-left:.75em; + width:2.5em; +} + +.wp-block-latest-comments[class*=-font-size] a,.wp-block-latest-comments[style*=font-size] a{ + font-size:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/latest-comments/style-rtl.min.css b/wp-includes/blocks/latest-comments/style-rtl.min.css new file mode 100644 index 0000000..7823263 --- /dev/null +++ b/wp-includes/blocks/latest-comments/style-rtl.min.css @@ -0,0 +1 @@ +ol.wp-block-latest-comments{box-sizing:border-box;margin-right:0}:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment)){line-height:1.1}:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment-excerpt p)){line-height:1.8}.has-dates :where(.wp-block-latest-comments:not([style*=line-height])),.has-excerpts :where(.wp-block-latest-comments:not([style*=line-height])){line-height:1.5}.wp-block-latest-comments .wp-block-latest-comments{padding-right:0}.wp-block-latest-comments__comment{list-style:none;margin-bottom:1em}.has-avatars .wp-block-latest-comments__comment{list-style:none;min-height:2.25em}.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{margin-right:3.25em}.wp-block-latest-comments__comment-excerpt p{font-size:.875em;margin:.36em 0 1.4em}.wp-block-latest-comments__comment-date{display:block;font-size:.75em}.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{border-radius:1.5em;display:block;float:right;height:2.5em;margin-left:.75em;width:2.5em}.wp-block-latest-comments[class*=-font-size] a,.wp-block-latest-comments[style*=font-size] a{font-size:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/latest-comments/style.css b/wp-includes/blocks/latest-comments/style.css new file mode 100644 index 0000000..148a2b7 --- /dev/null +++ b/wp-includes/blocks/latest-comments/style.css @@ -0,0 +1,55 @@ +ol.wp-block-latest-comments{ + box-sizing:border-box; + margin-left:0; +} + +:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment)){ + line-height:1.1; +} + +:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment-excerpt p)){ + line-height:1.8; +} + +.has-dates :where(.wp-block-latest-comments:not([style*=line-height])),.has-excerpts :where(.wp-block-latest-comments:not([style*=line-height])){ + line-height:1.5; +} + +.wp-block-latest-comments .wp-block-latest-comments{ + padding-left:0; +} + +.wp-block-latest-comments__comment{ + list-style:none; + margin-bottom:1em; +} +.has-avatars .wp-block-latest-comments__comment{ + list-style:none; + min-height:2.25em; +} +.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{ + margin-left:3.25em; +} + +.wp-block-latest-comments__comment-excerpt p{ + font-size:.875em; + margin:.36em 0 1.4em; +} + +.wp-block-latest-comments__comment-date{ + display:block; + font-size:.75em; +} + +.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{ + border-radius:1.5em; + display:block; + float:left; + height:2.5em; + margin-right:.75em; + width:2.5em; +} + +.wp-block-latest-comments[class*=-font-size] a,.wp-block-latest-comments[style*=font-size] a{ + font-size:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/latest-comments/style.min.css b/wp-includes/blocks/latest-comments/style.min.css new file mode 100644 index 0000000..6e36bd7 --- /dev/null +++ b/wp-includes/blocks/latest-comments/style.min.css @@ -0,0 +1 @@ +ol.wp-block-latest-comments{box-sizing:border-box;margin-left:0}:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment)){line-height:1.1}:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment-excerpt p)){line-height:1.8}.has-dates :where(.wp-block-latest-comments:not([style*=line-height])),.has-excerpts :where(.wp-block-latest-comments:not([style*=line-height])){line-height:1.5}.wp-block-latest-comments .wp-block-latest-comments{padding-left:0}.wp-block-latest-comments__comment{list-style:none;margin-bottom:1em}.has-avatars .wp-block-latest-comments__comment{list-style:none;min-height:2.25em}.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{margin-left:3.25em}.wp-block-latest-comments__comment-excerpt p{font-size:.875em;margin:.36em 0 1.4em}.wp-block-latest-comments__comment-date{display:block;font-size:.75em}.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{border-radius:1.5em;display:block;float:left;height:2.5em;margin-right:.75em;width:2.5em}.wp-block-latest-comments[class*=-font-size] a,.wp-block-latest-comments[style*=font-size] a{font-size:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/latest-posts.php b/wp-includes/blocks/latest-posts.php new file mode 100644 index 0000000..adc51d0 --- /dev/null +++ b/wp-includes/blocks/latest-posts.php @@ -0,0 +1,261 @@ +<?php +/** + * Server-side rendering of the `core/latest-posts` block. + * + * @package WordPress + */ + +/** + * The excerpt length set by the Latest Posts core block + * set at render time and used by the block itself. + * + * @var int + */ +global $block_core_latest_posts_excerpt_length; +$block_core_latest_posts_excerpt_length = 0; + +/** + * Callback for the excerpt_length filter used by + * the Latest Posts block at render time. + * + * @return int Returns the global $block_core_latest_posts_excerpt_length variable + * to allow the excerpt_length filter respect the Latest Block setting. + */ +function block_core_latest_posts_get_excerpt_length() { + global $block_core_latest_posts_excerpt_length; + return $block_core_latest_posts_excerpt_length; +} + +/** + * Renders the `core/latest-posts` block on server. + * + * @param array $attributes The block attributes. + * + * @return string Returns the post content with latest posts added. + */ +function render_block_core_latest_posts( $attributes ) { + global $post, $block_core_latest_posts_excerpt_length; + + $args = array( + 'posts_per_page' => $attributes['postsToShow'], + 'post_status' => 'publish', + 'order' => $attributes['order'], + 'orderby' => $attributes['orderBy'], + 'ignore_sticky_posts' => true, + 'no_found_rows' => true, + ); + + $block_core_latest_posts_excerpt_length = $attributes['excerptLength']; + add_filter( 'excerpt_length', 'block_core_latest_posts_get_excerpt_length', 20 ); + + if ( ! empty( $attributes['categories'] ) ) { + $args['category__in'] = array_column( $attributes['categories'], 'id' ); + } + if ( isset( $attributes['selectedAuthor'] ) ) { + $args['author'] = $attributes['selectedAuthor']; + } + + $query = new WP_Query(); + $recent_posts = $query->query( $args ); + + if ( isset( $attributes['displayFeaturedImage'] ) && $attributes['displayFeaturedImage'] ) { + update_post_thumbnail_cache( $query ); + } + + $list_items_markup = ''; + + foreach ( $recent_posts as $post ) { + $post_link = esc_url( get_permalink( $post ) ); + $title = get_the_title( $post ); + + if ( ! $title ) { + $title = __( '(no title)' ); + } + + $list_items_markup .= '<li>'; + + if ( $attributes['displayFeaturedImage'] && has_post_thumbnail( $post ) ) { + $image_style = ''; + if ( isset( $attributes['featuredImageSizeWidth'] ) ) { + $image_style .= sprintf( 'max-width:%spx;', $attributes['featuredImageSizeWidth'] ); + } + if ( isset( $attributes['featuredImageSizeHeight'] ) ) { + $image_style .= sprintf( 'max-height:%spx;', $attributes['featuredImageSizeHeight'] ); + } + + $image_classes = 'wp-block-latest-posts__featured-image'; + if ( isset( $attributes['featuredImageAlign'] ) ) { + $image_classes .= ' align' . $attributes['featuredImageAlign']; + } + + $featured_image = get_the_post_thumbnail( + $post, + $attributes['featuredImageSizeSlug'], + array( + 'style' => esc_attr( $image_style ), + ) + ); + if ( $attributes['addLinkToFeaturedImage'] ) { + $featured_image = sprintf( + '<a href="%1$s" aria-label="%2$s">%3$s</a>', + esc_url( $post_link ), + esc_attr( $title ), + $featured_image + ); + } + $list_items_markup .= sprintf( + '<div class="%1$s">%2$s</div>', + esc_attr( $image_classes ), + $featured_image + ); + } + + $list_items_markup .= sprintf( + '<a class="wp-block-latest-posts__post-title" href="%1$s">%2$s</a>', + esc_url( $post_link ), + $title + ); + + if ( isset( $attributes['displayAuthor'] ) && $attributes['displayAuthor'] ) { + $author_display_name = get_the_author_meta( 'display_name', $post->post_author ); + + /* translators: byline. %s: current author. */ + $byline = sprintf( __( 'by %s' ), $author_display_name ); + + if ( ! empty( $author_display_name ) ) { + $list_items_markup .= sprintf( + '<div class="wp-block-latest-posts__post-author">%1$s</div>', + $byline + ); + } + } + + if ( isset( $attributes['displayPostDate'] ) && $attributes['displayPostDate'] ) { + $list_items_markup .= sprintf( + '<time datetime="%1$s" class="wp-block-latest-posts__post-date">%2$s</time>', + esc_attr( get_the_date( 'c', $post ) ), + get_the_date( '', $post ) + ); + } + + if ( isset( $attributes['displayPostContent'] ) && $attributes['displayPostContent'] + && isset( $attributes['displayPostContentRadio'] ) && 'excerpt' === $attributes['displayPostContentRadio'] ) { + + $trimmed_excerpt = get_the_excerpt( $post ); + + /* + * Adds a "Read more" link with screen reader text. + * […] is the default excerpt ending from wp_trim_excerpt() in Core. + */ + if ( str_ends_with( $trimmed_excerpt, ' […]' ) ) { + $excerpt_length = (int) apply_filters( 'excerpt_length', $block_core_latest_posts_excerpt_length ); + if ( $excerpt_length <= $block_core_latest_posts_excerpt_length ) { + $trimmed_excerpt = substr( $trimmed_excerpt, 0, -11 ); + $trimmed_excerpt .= sprintf( + /* translators: 1: A URL to a post, 2: Hidden accessibility text: Post title */ + __( '… <a href="%1$s" rel="noopener noreferrer">Read more<span class="screen-reader-text">: %2$s</span></a>' ), + esc_url( $post_link ), + esc_html( $title ) + ); + } + } + + if ( post_password_required( $post ) ) { + $trimmed_excerpt = __( 'This content is password protected.' ); + } + + $list_items_markup .= sprintf( + '<div class="wp-block-latest-posts__post-excerpt">%1$s</div>', + $trimmed_excerpt + ); + } + + if ( isset( $attributes['displayPostContent'] ) && $attributes['displayPostContent'] + && isset( $attributes['displayPostContentRadio'] ) && 'full_post' === $attributes['displayPostContentRadio'] ) { + + $post_content = html_entity_decode( $post->post_content, ENT_QUOTES, get_option( 'blog_charset' ) ); + + if ( post_password_required( $post ) ) { + $post_content = __( 'This content is password protected.' ); + } + + $list_items_markup .= sprintf( + '<div class="wp-block-latest-posts__post-full-content">%1$s</div>', + wp_kses_post( $post_content ) + ); + } + + $list_items_markup .= "</li>\n"; + } + + remove_filter( 'excerpt_length', 'block_core_latest_posts_get_excerpt_length', 20 ); + + $classes = array( 'wp-block-latest-posts__list' ); + if ( isset( $attributes['postLayout'] ) && 'grid' === $attributes['postLayout'] ) { + $classes[] = 'is-grid'; + } + if ( isset( $attributes['columns'] ) && 'grid' === $attributes['postLayout'] ) { + $classes[] = 'columns-' . $attributes['columns']; + } + if ( isset( $attributes['displayPostDate'] ) && $attributes['displayPostDate'] ) { + $classes[] = 'has-dates'; + } + if ( isset( $attributes['displayAuthor'] ) && $attributes['displayAuthor'] ) { + $classes[] = 'has-author'; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return sprintf( + '<ul %1$s>%2$s</ul>', + $wrapper_attributes, + $list_items_markup + ); +} + +/** + * Registers the `core/latest-posts` block on server. + */ +function register_block_core_latest_posts() { + register_block_type_from_metadata( + __DIR__ . '/latest-posts', + array( + 'render_callback' => 'render_block_core_latest_posts', + ) + ); +} +add_action( 'init', 'register_block_core_latest_posts' ); + +/** + * Handles outdated versions of the `core/latest-posts` block by converting + * attribute `categories` from a numeric string to an array with key `id`. + * + * This is done to accommodate the changes introduced in #20781 that sought to + * add support for multiple categories to the block. However, given that this + * block is dynamic, the usual provisions for block migration are insufficient, + * as they only act when a block is loaded in the editor. + * + * TODO: Remove when and if the bottom client-side deprecation for this block + * is removed. + * + * @param array $block A single parsed block object. + * + * @return array The migrated block object. + */ +function block_core_latest_posts_migrate_categories( $block ) { + if ( + 'core/latest-posts' === $block['blockName'] && + ! empty( $block['attrs']['categories'] ) && + is_string( $block['attrs']['categories'] ) + ) { + $block['attrs']['categories'] = array( + array( 'id' => absint( $block['attrs']['categories'] ) ), + ); + } + + return $block; +} +add_filter( 'render_block_data', 'block_core_latest_posts_migrate_categories' ); diff --git a/wp-includes/blocks/latest-posts/block.json b/wp-includes/blocks/latest-posts/block.json new file mode 100644 index 0000000..f361646 --- /dev/null +++ b/wp-includes/blocks/latest-posts/block.json @@ -0,0 +1,117 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/latest-posts", + "title": "Latest Posts", + "category": "widgets", + "description": "Display a list of your most recent posts.", + "keywords": [ "recent posts" ], + "textdomain": "default", + "attributes": { + "categories": { + "type": "array", + "items": { + "type": "object" + } + }, + "selectedAuthor": { + "type": "number" + }, + "postsToShow": { + "type": "number", + "default": 5 + }, + "displayPostContent": { + "type": "boolean", + "default": false + }, + "displayPostContentRadio": { + "type": "string", + "default": "excerpt" + }, + "excerptLength": { + "type": "number", + "default": 55 + }, + "displayAuthor": { + "type": "boolean", + "default": false + }, + "displayPostDate": { + "type": "boolean", + "default": false + }, + "postLayout": { + "type": "string", + "default": "list" + }, + "columns": { + "type": "number", + "default": 3 + }, + "order": { + "type": "string", + "default": "desc" + }, + "orderBy": { + "type": "string", + "default": "date" + }, + "displayFeaturedImage": { + "type": "boolean", + "default": false + }, + "featuredImageAlign": { + "type": "string", + "enum": [ "left", "center", "right" ] + }, + "featuredImageSizeSlug": { + "type": "string", + "default": "thumbnail" + }, + "featuredImageSizeWidth": { + "type": "number", + "default": null + }, + "featuredImageSizeHeight": { + "type": "number", + "default": null + }, + "addLinkToFeaturedImage": { + "type": "boolean", + "default": false + } + }, + "supports": { + "align": true, + "html": false, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true, + "link": true + } + }, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-latest-posts-editor", + "style": "wp-block-latest-posts" +} diff --git a/wp-includes/blocks/latest-posts/editor-rtl.css b/wp-includes/blocks/latest-posts/editor-rtl.css new file mode 100644 index 0000000..4b51e11 --- /dev/null +++ b/wp-includes/blocks/latest-posts/editor-rtl.css @@ -0,0 +1,24 @@ +.wp-block-latest-posts{ + padding-right:2.5em; +} +.wp-block-latest-posts.is-grid{ + padding-right:0; +} +.wp-block-latest-posts>li{ + overflow:hidden; +} + +.wp-block-latest-posts li a>div{ + display:inline; +} + +.edit-post-visual-editor .wp-block-latest-posts.is-grid li{ + margin-bottom:20px; +} + +.editor-latest-posts-image-alignment-control .components-base-control__label{ + display:block; +} +.editor-latest-posts-image-alignment-control .components-toolbar{ + border-radius:2px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/latest-posts/editor-rtl.min.css b/wp-includes/blocks/latest-posts/editor-rtl.min.css new file mode 100644 index 0000000..b389b8e --- /dev/null +++ b/wp-includes/blocks/latest-posts/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-latest-posts{padding-right:2.5em}.wp-block-latest-posts.is-grid{padding-right:0}.wp-block-latest-posts>li{overflow:hidden}.wp-block-latest-posts li a>div{display:inline}.edit-post-visual-editor .wp-block-latest-posts.is-grid li{margin-bottom:20px}.editor-latest-posts-image-alignment-control .components-base-control__label{display:block}.editor-latest-posts-image-alignment-control .components-toolbar{border-radius:2px}
\ No newline at end of file diff --git a/wp-includes/blocks/latest-posts/editor.css b/wp-includes/blocks/latest-posts/editor.css new file mode 100644 index 0000000..850c367 --- /dev/null +++ b/wp-includes/blocks/latest-posts/editor.css @@ -0,0 +1,24 @@ +.wp-block-latest-posts{ + padding-left:2.5em; +} +.wp-block-latest-posts.is-grid{ + padding-left:0; +} +.wp-block-latest-posts>li{ + overflow:hidden; +} + +.wp-block-latest-posts li a>div{ + display:inline; +} + +.edit-post-visual-editor .wp-block-latest-posts.is-grid li{ + margin-bottom:20px; +} + +.editor-latest-posts-image-alignment-control .components-base-control__label{ + display:block; +} +.editor-latest-posts-image-alignment-control .components-toolbar{ + border-radius:2px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/latest-posts/editor.min.css b/wp-includes/blocks/latest-posts/editor.min.css new file mode 100644 index 0000000..b34b815 --- /dev/null +++ b/wp-includes/blocks/latest-posts/editor.min.css @@ -0,0 +1 @@ +.wp-block-latest-posts{padding-left:2.5em}.wp-block-latest-posts.is-grid{padding-left:0}.wp-block-latest-posts>li{overflow:hidden}.wp-block-latest-posts li a>div{display:inline}.edit-post-visual-editor .wp-block-latest-posts.is-grid li{margin-bottom:20px}.editor-latest-posts-image-alignment-control .components-base-control__label{display:block}.editor-latest-posts-image-alignment-control .components-toolbar{border-radius:2px}
\ No newline at end of file diff --git a/wp-includes/blocks/latest-posts/style-rtl.css b/wp-includes/blocks/latest-posts/style-rtl.css new file mode 100644 index 0000000..cad7683 --- /dev/null +++ b/wp-includes/blocks/latest-posts/style-rtl.css @@ -0,0 +1,88 @@ +.wp-block-latest-posts{ + box-sizing:border-box; +} +.wp-block-latest-posts.alignleft{ + margin-right:2em; +} +.wp-block-latest-posts.alignright{ + margin-left:2em; +} +.wp-block-latest-posts.wp-block-latest-posts__list{ + list-style:none; + padding-right:0; +} +.wp-block-latest-posts.wp-block-latest-posts__list li{ + clear:both; +} +.wp-block-latest-posts.is-grid{ + display:flex; + flex-wrap:wrap; + padding:0; +} +.wp-block-latest-posts.is-grid li{ + margin:0 0 1.25em 1.25em; + width:100%; +} +@media (min-width:600px){ + .wp-block-latest-posts.columns-2 li{ + width:calc(50% - .625em); + } + .wp-block-latest-posts.columns-2 li:nth-child(2n){ + margin-left:0; + } + .wp-block-latest-posts.columns-3 li{ + width:calc(33.33333% - .83333em); + } + .wp-block-latest-posts.columns-3 li:nth-child(3n){ + margin-left:0; + } + .wp-block-latest-posts.columns-4 li{ + width:calc(25% - .9375em); + } + .wp-block-latest-posts.columns-4 li:nth-child(4n){ + margin-left:0; + } + .wp-block-latest-posts.columns-5 li{ + width:calc(20% - 1em); + } + .wp-block-latest-posts.columns-5 li:nth-child(5n){ + margin-left:0; + } + .wp-block-latest-posts.columns-6 li{ + width:calc(16.66667% - 1.04167em); + } + .wp-block-latest-posts.columns-6 li:nth-child(6n){ + margin-left:0; + } +} + +.wp-block-latest-posts__post-author,.wp-block-latest-posts__post-date{ + display:block; + font-size:.8125em; +} + +.wp-block-latest-posts__post-excerpt{ + margin-bottom:1em; + margin-top:.5em; +} + +.wp-block-latest-posts__featured-image a{ + display:inline-block; +} +.wp-block-latest-posts__featured-image img{ + height:auto; + max-width:100%; + width:auto; +} +.wp-block-latest-posts__featured-image.alignleft{ + float:left; + margin-right:1em; +} +.wp-block-latest-posts__featured-image.alignright{ + float:right; + margin-left:1em; +} +.wp-block-latest-posts__featured-image.aligncenter{ + margin-bottom:1em; + text-align:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/latest-posts/style-rtl.min.css b/wp-includes/blocks/latest-posts/style-rtl.min.css new file mode 100644 index 0000000..ff16e58 --- /dev/null +++ b/wp-includes/blocks/latest-posts/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-latest-posts{box-sizing:border-box}.wp-block-latest-posts.alignleft{margin-right:2em}.wp-block-latest-posts.alignright{margin-left:2em}.wp-block-latest-posts.wp-block-latest-posts__list{list-style:none;padding-right:0}.wp-block-latest-posts.wp-block-latest-posts__list li{clear:both}.wp-block-latest-posts.is-grid{display:flex;flex-wrap:wrap;padding:0}.wp-block-latest-posts.is-grid li{margin:0 0 1.25em 1.25em;width:100%}@media (min-width:600px){.wp-block-latest-posts.columns-2 li{width:calc(50% - .625em)}.wp-block-latest-posts.columns-2 li:nth-child(2n){margin-left:0}.wp-block-latest-posts.columns-3 li{width:calc(33.33333% - .83333em)}.wp-block-latest-posts.columns-3 li:nth-child(3n){margin-left:0}.wp-block-latest-posts.columns-4 li{width:calc(25% - .9375em)}.wp-block-latest-posts.columns-4 li:nth-child(4n){margin-left:0}.wp-block-latest-posts.columns-5 li{width:calc(20% - 1em)}.wp-block-latest-posts.columns-5 li:nth-child(5n){margin-left:0}.wp-block-latest-posts.columns-6 li{width:calc(16.66667% - 1.04167em)}.wp-block-latest-posts.columns-6 li:nth-child(6n){margin-left:0}}.wp-block-latest-posts__post-author,.wp-block-latest-posts__post-date{display:block;font-size:.8125em}.wp-block-latest-posts__post-excerpt{margin-bottom:1em;margin-top:.5em}.wp-block-latest-posts__featured-image a{display:inline-block}.wp-block-latest-posts__featured-image img{height:auto;max-width:100%;width:auto}.wp-block-latest-posts__featured-image.alignleft{float:left;margin-right:1em}.wp-block-latest-posts__featured-image.alignright{float:right;margin-left:1em}.wp-block-latest-posts__featured-image.aligncenter{margin-bottom:1em;text-align:center}
\ No newline at end of file diff --git a/wp-includes/blocks/latest-posts/style.css b/wp-includes/blocks/latest-posts/style.css new file mode 100644 index 0000000..63f0115 --- /dev/null +++ b/wp-includes/blocks/latest-posts/style.css @@ -0,0 +1,88 @@ +.wp-block-latest-posts{ + box-sizing:border-box; +} +.wp-block-latest-posts.alignleft{ + margin-right:2em; +} +.wp-block-latest-posts.alignright{ + margin-left:2em; +} +.wp-block-latest-posts.wp-block-latest-posts__list{ + list-style:none; + padding-left:0; +} +.wp-block-latest-posts.wp-block-latest-posts__list li{ + clear:both; +} +.wp-block-latest-posts.is-grid{ + display:flex; + flex-wrap:wrap; + padding:0; +} +.wp-block-latest-posts.is-grid li{ + margin:0 1.25em 1.25em 0; + width:100%; +} +@media (min-width:600px){ + .wp-block-latest-posts.columns-2 li{ + width:calc(50% - .625em); + } + .wp-block-latest-posts.columns-2 li:nth-child(2n){ + margin-right:0; + } + .wp-block-latest-posts.columns-3 li{ + width:calc(33.33333% - .83333em); + } + .wp-block-latest-posts.columns-3 li:nth-child(3n){ + margin-right:0; + } + .wp-block-latest-posts.columns-4 li{ + width:calc(25% - .9375em); + } + .wp-block-latest-posts.columns-4 li:nth-child(4n){ + margin-right:0; + } + .wp-block-latest-posts.columns-5 li{ + width:calc(20% - 1em); + } + .wp-block-latest-posts.columns-5 li:nth-child(5n){ + margin-right:0; + } + .wp-block-latest-posts.columns-6 li{ + width:calc(16.66667% - 1.04167em); + } + .wp-block-latest-posts.columns-6 li:nth-child(6n){ + margin-right:0; + } +} + +.wp-block-latest-posts__post-author,.wp-block-latest-posts__post-date{ + display:block; + font-size:.8125em; +} + +.wp-block-latest-posts__post-excerpt{ + margin-bottom:1em; + margin-top:.5em; +} + +.wp-block-latest-posts__featured-image a{ + display:inline-block; +} +.wp-block-latest-posts__featured-image img{ + height:auto; + max-width:100%; + width:auto; +} +.wp-block-latest-posts__featured-image.alignleft{ + float:left; + margin-right:1em; +} +.wp-block-latest-posts__featured-image.alignright{ + float:right; + margin-left:1em; +} +.wp-block-latest-posts__featured-image.aligncenter{ + margin-bottom:1em; + text-align:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/latest-posts/style.min.css b/wp-includes/blocks/latest-posts/style.min.css new file mode 100644 index 0000000..a71b476 --- /dev/null +++ b/wp-includes/blocks/latest-posts/style.min.css @@ -0,0 +1 @@ +.wp-block-latest-posts{box-sizing:border-box}.wp-block-latest-posts.alignleft{margin-right:2em}.wp-block-latest-posts.alignright{margin-left:2em}.wp-block-latest-posts.wp-block-latest-posts__list{list-style:none;padding-left:0}.wp-block-latest-posts.wp-block-latest-posts__list li{clear:both}.wp-block-latest-posts.is-grid{display:flex;flex-wrap:wrap;padding:0}.wp-block-latest-posts.is-grid li{margin:0 1.25em 1.25em 0;width:100%}@media (min-width:600px){.wp-block-latest-posts.columns-2 li{width:calc(50% - .625em)}.wp-block-latest-posts.columns-2 li:nth-child(2n){margin-right:0}.wp-block-latest-posts.columns-3 li{width:calc(33.33333% - .83333em)}.wp-block-latest-posts.columns-3 li:nth-child(3n){margin-right:0}.wp-block-latest-posts.columns-4 li{width:calc(25% - .9375em)}.wp-block-latest-posts.columns-4 li:nth-child(4n){margin-right:0}.wp-block-latest-posts.columns-5 li{width:calc(20% - 1em)}.wp-block-latest-posts.columns-5 li:nth-child(5n){margin-right:0}.wp-block-latest-posts.columns-6 li{width:calc(16.66667% - 1.04167em)}.wp-block-latest-posts.columns-6 li:nth-child(6n){margin-right:0}}.wp-block-latest-posts__post-author,.wp-block-latest-posts__post-date{display:block;font-size:.8125em}.wp-block-latest-posts__post-excerpt{margin-bottom:1em;margin-top:.5em}.wp-block-latest-posts__featured-image a{display:inline-block}.wp-block-latest-posts__featured-image img{height:auto;max-width:100%;width:auto}.wp-block-latest-posts__featured-image.alignleft{float:left;margin-right:1em}.wp-block-latest-posts__featured-image.alignright{float:right;margin-left:1em}.wp-block-latest-posts__featured-image.aligncenter{margin-bottom:1em;text-align:center}
\ No newline at end of file diff --git a/wp-includes/blocks/legacy-widget.php b/wp-includes/blocks/legacy-widget.php new file mode 100644 index 0000000..94cfb9b --- /dev/null +++ b/wp-includes/blocks/legacy-widget.php @@ -0,0 +1,149 @@ +<?php +/** + * Server-side rendering of the `core/legacy-widget` block. + * + * @package WordPress + */ + +/** + * Renders the 'core/legacy-widget' block. + * + * @param array $attributes The block attributes. + * + * @return string Rendered block. + */ +function render_block_core_legacy_widget( $attributes ) { + global $wp_widget_factory; + + if ( isset( $attributes['id'] ) ) { + $sidebar_id = wp_find_widgets_sidebar( $attributes['id'] ); + return wp_render_widget( $attributes['id'], $sidebar_id ); + } + + if ( ! isset( $attributes['idBase'] ) ) { + return ''; + } + + $id_base = $attributes['idBase']; + $widget_key = $wp_widget_factory->get_widget_key( $id_base ); + $widget_object = $wp_widget_factory->get_widget_object( $id_base ); + + if ( ! $widget_key || ! $widget_object ) { + return ''; + } + + if ( isset( $attributes['instance']['encoded'], $attributes['instance']['hash'] ) ) { + $serialized_instance = base64_decode( $attributes['instance']['encoded'] ); + if ( ! hash_equals( wp_hash( $serialized_instance ), (string) $attributes['instance']['hash'] ) ) { + return ''; + } + $instance = unserialize( $serialized_instance ); + } else { + $instance = array(); + } + + $args = array( + 'widget_id' => $widget_object->id, + 'widget_name' => $widget_object->name, + ); + + ob_start(); + the_widget( $widget_key, $instance, $args ); + return ob_get_clean(); +} + +/** + * Registers the 'core/legacy-widget' block. + */ +function register_block_core_legacy_widget() { + register_block_type_from_metadata( + __DIR__ . '/legacy-widget', + array( + 'render_callback' => 'render_block_core_legacy_widget', + ) + ); +} + +add_action( 'init', 'register_block_core_legacy_widget' ); + +/** + * Intercepts any request with legacy-widget-preview in the query param and, if + * set, renders a page containing a preview of the requested Legacy Widget + * block. + */ +function handle_legacy_widget_preview_iframe() { + if ( empty( $_GET['legacy-widget-preview'] ) ) { + return; + } + + if ( ! current_user_can( 'edit_theme_options' ) ) { + return; + } + + define( 'IFRAME_REQUEST', true ); + + ?> + <!doctype html> + <html <?php language_attributes(); ?>> + <head> + <meta charset="<?php bloginfo( 'charset' ); ?>" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <link rel="profile" href="https://gmpg.org/xfn/11" /> + <?php wp_head(); ?> + <style> + /* Reset theme styles */ + html, body, #page, #content { + padding: 0 !important; + margin: 0 !important; + } + + /* Hide root level text nodes */ + body { + font-size: 0 !important; + } + + /* Hide non-widget elements */ + body *:not(#page):not(#content):not(.widget):not(.widget *) { + display: none !important; + font-size: 0 !important; + height: 0 !important; + left: -9999px !important; + max-height: 0 !important; + max-width: 0 !important; + opacity: 0 !important; + pointer-events: none !important; + position: absolute !important; + top: -9999px !important; + transform: translate(-9999px, -9999px) !important; + visibility: hidden !important; + z-index: -999 !important; + } + + /* Restore widget font-size */ + .widget { + font-size: var(--global--font-size-base); + } + </style> + </head> + <body <?php body_class(); ?>> + <div id="page" class="site"> + <div id="content" class="site-content"> + <?php + $registry = WP_Block_Type_Registry::get_instance(); + $block = $registry->get_registered( 'core/legacy-widget' ); + echo $block->render( $_GET['legacy-widget-preview'] ); + ?> + </div><!-- #content --> + </div><!-- #page --> + <?php wp_footer(); ?> + </body> + </html> + <?php + + exit; +} + +// Use admin_init instead of init to ensure get_current_screen function is already available. +// This isn't strictly required, but enables better compatibility with existing plugins. +// See: https://github.com/WordPress/gutenberg/issues/32624. +add_action( 'admin_init', 'handle_legacy_widget_preview_iframe', 20 ); diff --git a/wp-includes/blocks/legacy-widget/block.json b/wp-includes/blocks/legacy-widget/block.json new file mode 100644 index 0000000..6b0c1e2 --- /dev/null +++ b/wp-includes/blocks/legacy-widget/block.json @@ -0,0 +1,28 @@ +{ + "apiVersion": 3, + "name": "core/legacy-widget", + "title": "Legacy Widget", + "category": "widgets", + "description": "Display a legacy widget.", + "textdomain": "default", + "attributes": { + "id": { + "type": "string", + "default": null + }, + "idBase": { + "type": "string", + "default": null + }, + "instance": { + "type": "object", + "default": null + } + }, + "supports": { + "html": false, + "customClassName": false, + "reusable": false + }, + "editorStyle": "wp-block-legacy-widget-editor" +} diff --git a/wp-includes/blocks/list-item/block.json b/wp-includes/blocks/list-item/block.json new file mode 100644 index 0000000..41221f1 --- /dev/null +++ b/wp-includes/blocks/list-item/block.json @@ -0,0 +1,39 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/list-item", + "title": "List item", + "category": "text", + "parent": [ "core/list" ], + "description": "Create a list item.", + "textdomain": "default", + "attributes": { + "placeholder": { + "type": "string" + }, + "content": { + "type": "string", + "source": "html", + "selector": "li", + "default": "", + "__experimentalRole": "content" + } + }, + "supports": { + "className": false, + "__experimentalSelector": "li", + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/list/block.json b/wp-includes/blocks/list/block.json new file mode 100644 index 0000000..e2fb9e4 --- /dev/null +++ b/wp-includes/blocks/list/block.json @@ -0,0 +1,77 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/list", + "title": "List", + "category": "text", + "description": "Create a bulleted or numbered list.", + "keywords": [ "bullet list", "ordered list", "numbered list" ], + "textdomain": "default", + "attributes": { + "ordered": { + "type": "boolean", + "default": false, + "__experimentalRole": "content" + }, + "values": { + "type": "string", + "source": "html", + "selector": "ol,ul", + "multiline": "li", + "__unstableMultilineWrapperTags": [ "ol", "ul" ], + "default": "", + "__experimentalRole": "content" + }, + "type": { + "type": "string" + }, + "start": { + "type": "number" + }, + "reversed": { + "type": "boolean" + }, + "placeholder": { + "type": "string" + } + }, + "supports": { + "anchor": true, + "className": false, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, + "__unstablePasteTextInline": true, + "__experimentalSelector": "ol,ul", + "__experimentalOnMerge": true, + "__experimentalSlashInserter": true + }, + "editorStyle": "wp-block-list-editor", + "style": "wp-block-list" +} diff --git a/wp-includes/blocks/list/style-rtl.css b/wp-includes/blocks/list/style-rtl.css new file mode 100644 index 0000000..aef9754 --- /dev/null +++ b/wp-includes/blocks/list/style-rtl.css @@ -0,0 +1,6 @@ +ol,ul{ + box-sizing:border-box; +} +ol.has-background,ul.has-background{ + padding:1.25em 2.375em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/list/style-rtl.min.css b/wp-includes/blocks/list/style-rtl.min.css new file mode 100644 index 0000000..d840bee --- /dev/null +++ b/wp-includes/blocks/list/style-rtl.min.css @@ -0,0 +1 @@ +ol,ul{box-sizing:border-box}ol.has-background,ul.has-background{padding:1.25em 2.375em}
\ No newline at end of file diff --git a/wp-includes/blocks/list/style.css b/wp-includes/blocks/list/style.css new file mode 100644 index 0000000..aef9754 --- /dev/null +++ b/wp-includes/blocks/list/style.css @@ -0,0 +1,6 @@ +ol,ul{ + box-sizing:border-box; +} +ol.has-background,ul.has-background{ + padding:1.25em 2.375em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/list/style.min.css b/wp-includes/blocks/list/style.min.css new file mode 100644 index 0000000..d840bee --- /dev/null +++ b/wp-includes/blocks/list/style.min.css @@ -0,0 +1 @@ +ol,ul{box-sizing:border-box}ol.has-background,ul.has-background{padding:1.25em 2.375em}
\ No newline at end of file diff --git a/wp-includes/blocks/loginout.php b/wp-includes/blocks/loginout.php new file mode 100644 index 0000000..ac10ced --- /dev/null +++ b/wp-includes/blocks/loginout.php @@ -0,0 +1,51 @@ +<?php +/** + * Server-side rendering of the `core/loginout` block. + * + * @package WordPress + */ + +/** + * Renders the `core/loginout` block on server. + * + * @param array $attributes The block attributes. + * + * @return string Returns the login-out link or form. + */ +function render_block_core_loginout( $attributes ) { + + // Build the redirect URL. + $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + + $classes = is_user_logged_in() ? 'logged-in' : 'logged-out'; + $contents = wp_loginout( + isset( $attributes['redirectToCurrent'] ) && $attributes['redirectToCurrent'] ? $current_url : '', + false + ); + + // If logged-out and displayLoginAsForm is true, show the login form. + if ( ! is_user_logged_in() && ! empty( $attributes['displayLoginAsForm'] ) ) { + // Add a class. + $classes .= ' has-login-form'; + + // Get the form. + $contents = wp_login_form( array( 'echo' => false ) ); + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) ); + + return '<div ' . $wrapper_attributes . '>' . $contents . '</div>'; +} + +/** + * Registers the `core/loginout` block on server. + */ +function register_block_core_loginout() { + register_block_type_from_metadata( + __DIR__ . '/loginout', + array( + 'render_callback' => 'render_block_core_loginout', + ) + ); +} +add_action( 'init', 'register_block_core_loginout' ); diff --git a/wp-includes/blocks/loginout/block.json b/wp-includes/blocks/loginout/block.json new file mode 100644 index 0000000..3593961 --- /dev/null +++ b/wp-includes/blocks/loginout/block.json @@ -0,0 +1,36 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/loginout", + "title": "Login/out", + "category": "theme", + "description": "Show login & logout links.", + "keywords": [ "login", "logout", "form" ], + "textdomain": "default", + "attributes": { + "displayLoginAsForm": { + "type": "boolean", + "default": false + }, + "redirectToCurrent": { + "type": "boolean", + "default": true + } + }, + "supports": { + "className": true, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/media-text/block.json b/wp-includes/blocks/media-text/block.json new file mode 100644 index 0000000..cdeb4ce --- /dev/null +++ b/wp-includes/blocks/media-text/block.json @@ -0,0 +1,130 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/media-text", + "title": "Media & Text", + "category": "media", + "description": "Set media and words side-by-side for a richer layout.", + "keywords": [ "image", "video" ], + "textdomain": "default", + "attributes": { + "align": { + "type": "string", + "default": "none" + }, + "mediaAlt": { + "type": "string", + "source": "attribute", + "selector": "figure img", + "attribute": "alt", + "default": "", + "__experimentalRole": "content" + }, + "mediaPosition": { + "type": "string", + "default": "left" + }, + "mediaId": { + "type": "number", + "__experimentalRole": "content" + }, + "mediaUrl": { + "type": "string", + "source": "attribute", + "selector": "figure video,figure img", + "attribute": "src", + "__experimentalRole": "content" + }, + "mediaLink": { + "type": "string" + }, + "linkDestination": { + "type": "string" + }, + "linkTarget": { + "type": "string", + "source": "attribute", + "selector": "figure a", + "attribute": "target" + }, + "href": { + "type": "string", + "source": "attribute", + "selector": "figure a", + "attribute": "href", + "__experimentalRole": "content" + }, + "rel": { + "type": "string", + "source": "attribute", + "selector": "figure a", + "attribute": "rel" + }, + "linkClass": { + "type": "string", + "source": "attribute", + "selector": "figure a", + "attribute": "class" + }, + "mediaType": { + "type": "string", + "__experimentalRole": "content" + }, + "mediaWidth": { + "type": "number", + "default": 50 + }, + "mediaSizeSlug": { + "type": "string" + }, + "isStackedOnMobile": { + "type": "boolean", + "default": true + }, + "verticalAlignment": { + "type": "string" + }, + "imageFill": { + "type": "boolean" + }, + "focalPoint": { + "type": "object" + }, + "allowedBlocks": { + "type": "array" + } + }, + "supports": { + "anchor": true, + "align": [ "wide", "full" ], + "html": false, + "color": { + "gradients": true, + "heading": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-media-text-editor", + "style": "wp-block-media-text" +} diff --git a/wp-includes/blocks/media-text/editor-rtl.css b/wp-includes/blocks/media-text/editor-rtl.css new file mode 100644 index 0000000..de69c8b --- /dev/null +++ b/wp-includes/blocks/media-text/editor-rtl.css @@ -0,0 +1,30 @@ +.wp-block-media-text__media{ + position:relative; +} +.wp-block-media-text__media.is-transient img{ + opacity:.3; +} +.wp-block-media-text__media .components-spinner{ + margin-right:-9px; + margin-top:-9px; + position:absolute; + right:50%; + top:50%; +} + +.wp-block-media-text .__resizable_base__{ + grid-column:1 / span 2; + grid-row:2; +} + +.wp-block-media-text .editor-media-container__resizer{ + width:100% !important; +} + +.wp-block-media-text.is-image-fill .editor-media-container__resizer{ + height:100% !important; +} + +.wp-block-media-text>.block-editor-block-list__layout>.block-editor-block-list__block{ + max-width:unset; +}
\ No newline at end of file diff --git a/wp-includes/blocks/media-text/editor-rtl.min.css b/wp-includes/blocks/media-text/editor-rtl.min.css new file mode 100644 index 0000000..2532ed3 --- /dev/null +++ b/wp-includes/blocks/media-text/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-media-text__media{position:relative}.wp-block-media-text__media.is-transient img{opacity:.3}.wp-block-media-text__media .components-spinner{margin-right:-9px;margin-top:-9px;position:absolute;right:50%;top:50%}.wp-block-media-text .__resizable_base__{grid-column:1/span 2;grid-row:2}.wp-block-media-text .editor-media-container__resizer{width:100%!important}.wp-block-media-text.is-image-fill .editor-media-container__resizer{height:100%!important}.wp-block-media-text>.block-editor-block-list__layout>.block-editor-block-list__block{max-width:unset}
\ No newline at end of file diff --git a/wp-includes/blocks/media-text/editor.css b/wp-includes/blocks/media-text/editor.css new file mode 100644 index 0000000..5cf1785 --- /dev/null +++ b/wp-includes/blocks/media-text/editor.css @@ -0,0 +1,30 @@ +.wp-block-media-text__media{ + position:relative; +} +.wp-block-media-text__media.is-transient img{ + opacity:.3; +} +.wp-block-media-text__media .components-spinner{ + left:50%; + margin-left:-9px; + margin-top:-9px; + position:absolute; + top:50%; +} + +.wp-block-media-text .__resizable_base__{ + grid-column:1 / span 2; + grid-row:2; +} + +.wp-block-media-text .editor-media-container__resizer{ + width:100% !important; +} + +.wp-block-media-text.is-image-fill .editor-media-container__resizer{ + height:100% !important; +} + +.wp-block-media-text>.block-editor-block-list__layout>.block-editor-block-list__block{ + max-width:unset; +}
\ No newline at end of file diff --git a/wp-includes/blocks/media-text/editor.min.css b/wp-includes/blocks/media-text/editor.min.css new file mode 100644 index 0000000..743ac03 --- /dev/null +++ b/wp-includes/blocks/media-text/editor.min.css @@ -0,0 +1 @@ +.wp-block-media-text__media{position:relative}.wp-block-media-text__media.is-transient img{opacity:.3}.wp-block-media-text__media .components-spinner{left:50%;margin-left:-9px;margin-top:-9px;position:absolute;top:50%}.wp-block-media-text .__resizable_base__{grid-column:1/span 2;grid-row:2}.wp-block-media-text .editor-media-container__resizer{width:100%!important}.wp-block-media-text.is-image-fill .editor-media-container__resizer{height:100%!important}.wp-block-media-text>.block-editor-block-list__layout>.block-editor-block-list__block{max-width:unset}
\ No newline at end of file diff --git a/wp-includes/blocks/media-text/style-rtl.css b/wp-includes/blocks/media-text/style-rtl.css new file mode 100644 index 0000000..d9bf156 --- /dev/null +++ b/wp-includes/blocks/media-text/style-rtl.css @@ -0,0 +1,88 @@ +.wp-block-media-text{ + box-sizing:border-box; + direction:ltr; + display:grid; + grid-template-columns:50% 1fr; + grid-template-rows:auto; +} +.wp-block-media-text.has-media-on-the-right{ + grid-template-columns:1fr 50%; +} + +.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__media{ + align-self:start; +} + +.wp-block-media-text .wp-block-media-text__content,.wp-block-media-text .wp-block-media-text__media,.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__media{ + align-self:center; +} + +.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__media{ + align-self:end; +} + +.wp-block-media-text .wp-block-media-text__media{ + grid-column:1; + grid-row:1; + margin:0; +} + +.wp-block-media-text .wp-block-media-text__content{ + direction:rtl; + grid-column:2; + grid-row:1; + padding:0 8%; + word-break:break-word; +} + +.wp-block-media-text.has-media-on-the-right .wp-block-media-text__media{ + grid-column:2; + grid-row:1; +} + +.wp-block-media-text.has-media-on-the-right .wp-block-media-text__content{ + grid-column:1; + grid-row:1; +} + +.wp-block-media-text__media img,.wp-block-media-text__media video{ + height:auto; + max-width:unset; + vertical-align:middle; + width:100%; +} + +.wp-block-media-text.is-image-fill .wp-block-media-text__media{ + background-size:cover; + height:100%; + min-height:250px; +} + +.wp-block-media-text.is-image-fill .wp-block-media-text__media>a{ + display:block; + height:100%; +} + +.wp-block-media-text.is-image-fill .wp-block-media-text__media img{ + clip:rect(0, 0, 0, 0); + border:0; + height:1px; + margin:-1px; + overflow:hidden; + padding:0; + position:absolute; + width:1px; +} +@media (max-width:600px){ + .wp-block-media-text.is-stacked-on-mobile{ + grid-template-columns:100% !important; + } + .wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__media{ + grid-column:1; + grid-row:1; + } + .wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__content{ + grid-column:1; + grid-row:2; + } +}
\ No newline at end of file diff --git a/wp-includes/blocks/media-text/style-rtl.min.css b/wp-includes/blocks/media-text/style-rtl.min.css new file mode 100644 index 0000000..3e8440f --- /dev/null +++ b/wp-includes/blocks/media-text/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-media-text{box-sizing:border-box;direction:ltr;display:grid;grid-template-columns:50% 1fr;grid-template-rows:auto}.wp-block-media-text.has-media-on-the-right{grid-template-columns:1fr 50%}.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__media{align-self:start}.wp-block-media-text .wp-block-media-text__content,.wp-block-media-text .wp-block-media-text__media,.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__media{align-self:center}.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__media{align-self:end}.wp-block-media-text .wp-block-media-text__media{grid-column:1;grid-row:1;margin:0}.wp-block-media-text .wp-block-media-text__content{direction:rtl;grid-column:2;grid-row:1;padding:0 8%;word-break:break-word}.wp-block-media-text.has-media-on-the-right .wp-block-media-text__media{grid-column:2;grid-row:1}.wp-block-media-text.has-media-on-the-right .wp-block-media-text__content{grid-column:1;grid-row:1}.wp-block-media-text__media img,.wp-block-media-text__media video{height:auto;max-width:unset;vertical-align:middle;width:100%}.wp-block-media-text.is-image-fill .wp-block-media-text__media{background-size:cover;height:100%;min-height:250px}.wp-block-media-text.is-image-fill .wp-block-media-text__media>a{display:block;height:100%}.wp-block-media-text.is-image-fill .wp-block-media-text__media img{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}@media (max-width:600px){.wp-block-media-text.is-stacked-on-mobile{grid-template-columns:100%!important}.wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__media{grid-column:1;grid-row:1}.wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__content{grid-column:1;grid-row:2}}
\ No newline at end of file diff --git a/wp-includes/blocks/media-text/style.css b/wp-includes/blocks/media-text/style.css new file mode 100644 index 0000000..199d4da --- /dev/null +++ b/wp-includes/blocks/media-text/style.css @@ -0,0 +1,88 @@ +.wp-block-media-text{ + box-sizing:border-box; + direction:ltr; + display:grid; + grid-template-columns:50% 1fr; + grid-template-rows:auto; +} +.wp-block-media-text.has-media-on-the-right{ + grid-template-columns:1fr 50%; +} + +.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__media{ + align-self:start; +} + +.wp-block-media-text .wp-block-media-text__content,.wp-block-media-text .wp-block-media-text__media,.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__media{ + align-self:center; +} + +.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__media{ + align-self:end; +} + +.wp-block-media-text .wp-block-media-text__media{ + grid-column:1; + grid-row:1; + margin:0; +} + +.wp-block-media-text .wp-block-media-text__content{ + direction:ltr; + grid-column:2; + grid-row:1; + padding:0 8%; + word-break:break-word; +} + +.wp-block-media-text.has-media-on-the-right .wp-block-media-text__media{ + grid-column:2; + grid-row:1; +} + +.wp-block-media-text.has-media-on-the-right .wp-block-media-text__content{ + grid-column:1; + grid-row:1; +} + +.wp-block-media-text__media img,.wp-block-media-text__media video{ + height:auto; + max-width:unset; + vertical-align:middle; + width:100%; +} + +.wp-block-media-text.is-image-fill .wp-block-media-text__media{ + background-size:cover; + height:100%; + min-height:250px; +} + +.wp-block-media-text.is-image-fill .wp-block-media-text__media>a{ + display:block; + height:100%; +} + +.wp-block-media-text.is-image-fill .wp-block-media-text__media img{ + clip:rect(0, 0, 0, 0); + border:0; + height:1px; + margin:-1px; + overflow:hidden; + padding:0; + position:absolute; + width:1px; +} +@media (max-width:600px){ + .wp-block-media-text.is-stacked-on-mobile{ + grid-template-columns:100% !important; + } + .wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__media{ + grid-column:1; + grid-row:1; + } + .wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__content{ + grid-column:1; + grid-row:2; + } +}
\ No newline at end of file diff --git a/wp-includes/blocks/media-text/style.min.css b/wp-includes/blocks/media-text/style.min.css new file mode 100644 index 0000000..88094d3 --- /dev/null +++ b/wp-includes/blocks/media-text/style.min.css @@ -0,0 +1,11 @@ +.wp-block-media-text{box-sizing:border-box; + /*!rtl:begin:ignore*/direction:ltr; + /*!rtl:end:ignore*/display:grid;grid-template-columns:50% 1fr;grid-template-rows:auto}.wp-block-media-text.has-media-on-the-right{grid-template-columns:1fr 50%}.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__media{align-self:start}.wp-block-media-text .wp-block-media-text__content,.wp-block-media-text .wp-block-media-text__media,.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__media{align-self:center}.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__media{align-self:end}.wp-block-media-text .wp-block-media-text__media{ + /*!rtl:begin:ignore*/grid-column:1;grid-row:1; + /*!rtl:end:ignore*/margin:0}.wp-block-media-text .wp-block-media-text__content{direction:ltr; + /*!rtl:begin:ignore*/grid-column:2;grid-row:1; + /*!rtl:end:ignore*/padding:0 8%;word-break:break-word}.wp-block-media-text.has-media-on-the-right .wp-block-media-text__media{ + /*!rtl:begin:ignore*/grid-column:2;grid-row:1 + /*!rtl:end:ignore*/}.wp-block-media-text.has-media-on-the-right .wp-block-media-text__content{ + /*!rtl:begin:ignore*/grid-column:1;grid-row:1 + /*!rtl:end:ignore*/}.wp-block-media-text__media img,.wp-block-media-text__media video{height:auto;max-width:unset;vertical-align:middle;width:100%}.wp-block-media-text.is-image-fill .wp-block-media-text__media{background-size:cover;height:100%;min-height:250px}.wp-block-media-text.is-image-fill .wp-block-media-text__media>a{display:block;height:100%}.wp-block-media-text.is-image-fill .wp-block-media-text__media img{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}@media (max-width:600px){.wp-block-media-text.is-stacked-on-mobile{grid-template-columns:100%!important}.wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__media{grid-column:1;grid-row:1}.wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__content{grid-column:1;grid-row:2}}
\ No newline at end of file diff --git a/wp-includes/blocks/missing/block.json b/wp-includes/blocks/missing/block.json new file mode 100644 index 0000000..0bc512b --- /dev/null +++ b/wp-includes/blocks/missing/block.json @@ -0,0 +1,28 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/missing", + "title": "Unsupported", + "category": "text", + "description": "Your site doesn’t include support for this block.", + "textdomain": "default", + "attributes": { + "originalName": { + "type": "string" + }, + "originalUndelimitedContent": { + "type": "string" + }, + "originalContent": { + "type": "string", + "source": "html" + } + }, + "supports": { + "className": false, + "customClassName": false, + "inserter": false, + "html": false, + "reusable": false + } +} diff --git a/wp-includes/blocks/more/block.json b/wp-includes/blocks/more/block.json new file mode 100644 index 0000000..bfd9565 --- /dev/null +++ b/wp-includes/blocks/more/block.json @@ -0,0 +1,26 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/more", + "title": "More", + "category": "design", + "description": "Content before this block will be shown in the excerpt on your archives page.", + "keywords": [ "read more" ], + "textdomain": "default", + "attributes": { + "customText": { + "type": "string" + }, + "noTeaser": { + "type": "boolean", + "default": false + } + }, + "supports": { + "customClassName": false, + "className": false, + "html": false, + "multiple": false + }, + "editorStyle": "wp-block-more-editor" +} diff --git a/wp-includes/blocks/more/editor-rtl.css b/wp-includes/blocks/more/editor-rtl.css new file mode 100644 index 0000000..81da913 --- /dev/null +++ b/wp-includes/blocks/more/editor-rtl.css @@ -0,0 +1,41 @@ +.block-editor-block-list__block[data-type="core/more"]{ + margin-bottom:28px; + margin-top:28px; + max-width:100%; + text-align:center; +} + +.wp-block-more{ + display:block; + text-align:center; + white-space:nowrap; +} +.wp-block-more input[type=text]{ + background:#fff; + border:none; + border-radius:4px; + box-shadow:none; + color:#757575; + font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; + font-size:13px; + font-weight:600; + height:24px; + margin:0; + max-width:100%; + padding:6px 8px; + position:relative; + text-align:center; + text-transform:uppercase; + white-space:nowrap; +} +.wp-block-more input[type=text]:focus{ + box-shadow:none; +} +.wp-block-more:before{ + border-top:3px dashed #ccc; + content:""; + left:0; + position:absolute; + right:0; + top:50%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/more/editor-rtl.min.css b/wp-includes/blocks/more/editor-rtl.min.css new file mode 100644 index 0000000..3b15fba --- /dev/null +++ b/wp-includes/blocks/more/editor-rtl.min.css @@ -0,0 +1 @@ +.block-editor-block-list__block[data-type="core/more"]{margin-bottom:28px;margin-top:28px;max-width:100%;text-align:center}.wp-block-more{display:block;text-align:center;white-space:nowrap}.wp-block-more input[type=text]{background:#fff;border:none;border-radius:4px;box-shadow:none;color:#757575;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;font-weight:600;height:24px;margin:0;max-width:100%;padding:6px 8px;position:relative;text-align:center;text-transform:uppercase;white-space:nowrap}.wp-block-more input[type=text]:focus{box-shadow:none}.wp-block-more:before{border-top:3px dashed #ccc;content:"";left:0;position:absolute;right:0;top:50%}
\ No newline at end of file diff --git a/wp-includes/blocks/more/editor.css b/wp-includes/blocks/more/editor.css new file mode 100644 index 0000000..81da913 --- /dev/null +++ b/wp-includes/blocks/more/editor.css @@ -0,0 +1,41 @@ +.block-editor-block-list__block[data-type="core/more"]{ + margin-bottom:28px; + margin-top:28px; + max-width:100%; + text-align:center; +} + +.wp-block-more{ + display:block; + text-align:center; + white-space:nowrap; +} +.wp-block-more input[type=text]{ + background:#fff; + border:none; + border-radius:4px; + box-shadow:none; + color:#757575; + font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; + font-size:13px; + font-weight:600; + height:24px; + margin:0; + max-width:100%; + padding:6px 8px; + position:relative; + text-align:center; + text-transform:uppercase; + white-space:nowrap; +} +.wp-block-more input[type=text]:focus{ + box-shadow:none; +} +.wp-block-more:before{ + border-top:3px dashed #ccc; + content:""; + left:0; + position:absolute; + right:0; + top:50%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/more/editor.min.css b/wp-includes/blocks/more/editor.min.css new file mode 100644 index 0000000..3b15fba --- /dev/null +++ b/wp-includes/blocks/more/editor.min.css @@ -0,0 +1 @@ +.block-editor-block-list__block[data-type="core/more"]{margin-bottom:28px;margin-top:28px;max-width:100%;text-align:center}.wp-block-more{display:block;text-align:center;white-space:nowrap}.wp-block-more input[type=text]{background:#fff;border:none;border-radius:4px;box-shadow:none;color:#757575;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;font-weight:600;height:24px;margin:0;max-width:100%;padding:6px 8px;position:relative;text-align:center;text-transform:uppercase;white-space:nowrap}.wp-block-more input[type=text]:focus{box-shadow:none}.wp-block-more:before{border-top:3px dashed #ccc;content:"";left:0;position:absolute;right:0;top:50%}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation-link.php b/wp-includes/blocks/navigation-link.php new file mode 100644 index 0000000..5333ab6 --- /dev/null +++ b/wp-includes/blocks/navigation-link.php @@ -0,0 +1,371 @@ +<?php +/** + * Server-side rendering of the `core/navigation-link` block. + * + * @package WordPress + */ + +/** + * Build an array with CSS classes and inline styles defining the colors + * which will be applied to the navigation markup in the front-end. + * + * @param array $context Navigation block context. + * @param array $attributes Block attributes. + * @param bool $is_sub_menu Whether the link is part of a sub-menu. + * @return array Colors CSS classes and inline styles. + */ +function block_core_navigation_link_build_css_colors( $context, $attributes, $is_sub_menu = false ) { + $colors = array( + 'css_classes' => array(), + 'inline_styles' => '', + ); + + // Text color. + $named_text_color = null; + $custom_text_color = null; + + if ( $is_sub_menu && array_key_exists( 'customOverlayTextColor', $context ) ) { + $custom_text_color = $context['customOverlayTextColor']; + } elseif ( $is_sub_menu && array_key_exists( 'overlayTextColor', $context ) ) { + $named_text_color = $context['overlayTextColor']; + } elseif ( array_key_exists( 'customTextColor', $context ) ) { + $custom_text_color = $context['customTextColor']; + } elseif ( array_key_exists( 'textColor', $context ) ) { + $named_text_color = $context['textColor']; + } elseif ( isset( $context['style']['color']['text'] ) ) { + $custom_text_color = $context['style']['color']['text']; + } + + // If has text color. + if ( ! is_null( $named_text_color ) ) { + // Add the color class. + array_push( $colors['css_classes'], 'has-text-color', sprintf( 'has-%s-color', $named_text_color ) ); + } elseif ( ! is_null( $custom_text_color ) ) { + // Add the custom color inline style. + $colors['css_classes'][] = 'has-text-color'; + $colors['inline_styles'] .= sprintf( 'color: %s;', $custom_text_color ); + } + + // Background color. + $named_background_color = null; + $custom_background_color = null; + + if ( $is_sub_menu && array_key_exists( 'customOverlayBackgroundColor', $context ) ) { + $custom_background_color = $context['customOverlayBackgroundColor']; + } elseif ( $is_sub_menu && array_key_exists( 'overlayBackgroundColor', $context ) ) { + $named_background_color = $context['overlayBackgroundColor']; + } elseif ( array_key_exists( 'customBackgroundColor', $context ) ) { + $custom_background_color = $context['customBackgroundColor']; + } elseif ( array_key_exists( 'backgroundColor', $context ) ) { + $named_background_color = $context['backgroundColor']; + } elseif ( isset( $context['style']['color']['background'] ) ) { + $custom_background_color = $context['style']['color']['background']; + } + + // If has background color. + if ( ! is_null( $named_background_color ) ) { + // Add the background-color class. + array_push( $colors['css_classes'], 'has-background', sprintf( 'has-%s-background-color', $named_background_color ) ); + } elseif ( ! is_null( $custom_background_color ) ) { + // Add the custom background-color inline style. + $colors['css_classes'][] = 'has-background'; + $colors['inline_styles'] .= sprintf( 'background-color: %s;', $custom_background_color ); + } + + return $colors; +} + +/** + * Build an array with CSS classes and inline styles defining the font sizes + * which will be applied to the navigation markup in the front-end. + * + * @param array $context Navigation block context. + * @return array Font size CSS classes and inline styles. + */ +function block_core_navigation_link_build_css_font_sizes( $context ) { + // CSS classes. + $font_sizes = array( + 'css_classes' => array(), + 'inline_styles' => '', + ); + + $has_named_font_size = array_key_exists( 'fontSize', $context ); + $has_custom_font_size = isset( $context['style']['typography']['fontSize'] ); + + if ( $has_named_font_size ) { + // Add the font size class. + $font_sizes['css_classes'][] = sprintf( 'has-%s-font-size', $context['fontSize'] ); + } elseif ( $has_custom_font_size ) { + // Add the custom font size inline style. + $font_sizes['inline_styles'] = sprintf( + 'font-size: %s;', + wp_get_typography_font_size_value( + array( + 'size' => $context['style']['typography']['fontSize'], + ) + ) + ); + } + + return $font_sizes; +} + +/** + * Returns the top-level submenu SVG chevron icon. + * + * @return string + */ +function block_core_navigation_link_render_submenu_icon() { + return '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" focusable="false"><path d="M1.50002 4L6.00002 8L10.5 4" stroke-width="1.5"></path></svg>'; +} + +/** + * Decodes a url if it's encoded, returning the same url if not. + * + * @param string $url The url to decode. + * + * @return string $url Returns the decoded url. + */ +function block_core_navigation_link_maybe_urldecode( $url ) { + $is_url_encoded = false; + $query = parse_url( $url, PHP_URL_QUERY ); + $query_params = wp_parse_args( $query ); + + foreach ( $query_params as $query_param ) { + if ( rawurldecode( $query_param ) !== $query_param ) { + $is_url_encoded = true; + break; + } + } + + if ( $is_url_encoded ) { + return rawurldecode( $url ); + } + + return $url; +} + + +/** + * Renders the `core/navigation-link` block. + * + * @param array $attributes The block attributes. + * @param string $content The saved content. + * @param WP_Block $block The parsed block. + * + * @return string Returns the post content with the legacy widget added. + */ +function render_block_core_navigation_link( $attributes, $content, $block ) { + $navigation_link_has_id = isset( $attributes['id'] ) && is_numeric( $attributes['id'] ); + $is_post_type = isset( $attributes['kind'] ) && 'post-type' === $attributes['kind']; + $is_post_type = $is_post_type || isset( $attributes['type'] ) && ( 'post' === $attributes['type'] || 'page' === $attributes['type'] ); + + // Don't render the block's subtree if it is a draft or if the ID does not exist. + if ( $is_post_type && $navigation_link_has_id ) { + $post = get_post( $attributes['id'] ); + if ( ! $post || 'publish' !== $post->post_status ) { + return ''; + } + } + + // Don't render the block's subtree if it has no label. + if ( empty( $attributes['label'] ) ) { + return ''; + } + + $font_sizes = block_core_navigation_link_build_css_font_sizes( $block->context ); + $classes = array_merge( + $font_sizes['css_classes'] + ); + $style_attribute = $font_sizes['inline_styles']; + + $css_classes = trim( implode( ' ', $classes ) ); + $has_submenu = count( $block->inner_blocks ) > 0; + $kind = empty( $attributes['kind'] ) ? 'post_type' : str_replace( '-', '_', $attributes['kind'] ); + $is_active = ! empty( $attributes['id'] ) && get_queried_object_id() === (int) $attributes['id'] && ! empty( get_queried_object()->$kind ); + + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => $css_classes . ' wp-block-navigation-item' . ( $has_submenu ? ' has-child' : '' ) . + ( $is_active ? ' current-menu-item' : '' ), + 'style' => $style_attribute, + ) + ); + $html = '<li ' . $wrapper_attributes . '>' . + '<a class="wp-block-navigation-item__content" '; + + // Start appending HTML attributes to anchor tag. + if ( isset( $attributes['url'] ) ) { + $html .= ' href="' . esc_url( block_core_navigation_link_maybe_urldecode( $attributes['url'] ) ) . '"'; + } + + if ( $is_active ) { + $html .= ' aria-current="page"'; + } + + if ( isset( $attributes['opensInNewTab'] ) && true === $attributes['opensInNewTab'] ) { + $html .= ' target="_blank" '; + } + + if ( isset( $attributes['rel'] ) ) { + $html .= ' rel="' . esc_attr( $attributes['rel'] ) . '"'; + } elseif ( isset( $attributes['nofollow'] ) && $attributes['nofollow'] ) { + $html .= ' rel="nofollow"'; + } + + if ( isset( $attributes['title'] ) ) { + $html .= ' title="' . esc_attr( $attributes['title'] ) . '"'; + } + + // End appending HTML attributes to anchor tag. + + // Start anchor tag content. + $html .= '>' . + // Wrap title with span to isolate it from submenu icon. + '<span class="wp-block-navigation-item__label">'; + + if ( isset( $attributes['label'] ) ) { + $html .= wp_kses_post( $attributes['label'] ); + } + + $html .= '</span>'; + + // Add description if available. + if ( ! empty( $attributes['description'] ) ) { + $html .= '<span class="wp-block-navigation-item__description">'; + $html .= wp_kses_post( $attributes['description'] ); + $html .= '</span>'; + } + + $html .= '</a>'; + // End anchor tag content. + + if ( isset( $block->context['showSubmenuIcon'] ) && $block->context['showSubmenuIcon'] && $has_submenu ) { + // The submenu icon can be hidden by a CSS rule on the Navigation Block. + $html .= '<span class="wp-block-navigation__submenu-icon">' . block_core_navigation_link_render_submenu_icon() . '</span>'; + } + + if ( $has_submenu ) { + $inner_blocks_html = ''; + foreach ( $block->inner_blocks as $inner_block ) { + $inner_blocks_html .= $inner_block->render(); + } + + $html .= sprintf( + '<ul class="wp-block-navigation__submenu-container">%s</ul>', + $inner_blocks_html + ); + } + + $html .= '</li>'; + + return $html; +} + +/** + * Returns a navigation link variation + * + * @param WP_Taxonomy|WP_Post_Type $entity post type or taxonomy entity. + * @param string $kind string of value 'taxonomy' or 'post-type'. + * + * @return array + */ +function build_variation_for_navigation_link( $entity, $kind ) { + $title = ''; + $description = ''; + + if ( property_exists( $entity->labels, 'item_link' ) ) { + $title = $entity->labels->item_link; + } + if ( property_exists( $entity->labels, 'item_link_description' ) ) { + $description = $entity->labels->item_link_description; + } + + $variation = array( + 'name' => $entity->name, + 'title' => $title, + 'description' => $description, + 'attributes' => array( + 'type' => $entity->name, + 'kind' => $kind, + ), + ); + + // Tweak some value for the variations. + $variation_overrides = array( + 'post_tag' => array( + 'name' => 'tag', + 'attributes' => array( + 'type' => 'tag', + 'kind' => $kind, + ), + ), + 'post_format' => array( + // The item_link and item_link_description for post formats is the + // same as for tags, so need to be overridden. + 'title' => __( 'Post Format Link' ), + 'description' => __( 'A link to a post format' ), + 'attributes' => array( + 'type' => 'post_format', + 'kind' => $kind, + ), + ), + ); + + if ( array_key_exists( $entity->name, $variation_overrides ) ) { + $variation = array_merge( + $variation, + $variation_overrides[ $entity->name ] + ); + } + + return $variation; +} + +/** + * Register the navigation link block. + * + * @uses render_block_core_navigation() + * @throws WP_Error An WP_Error exception parsing the block definition. + */ +function register_block_core_navigation_link() { + $post_types = get_post_types( array( 'show_in_nav_menus' => true ), 'objects' ); + $taxonomies = get_taxonomies( array( 'show_in_nav_menus' => true ), 'objects' ); + + // Use two separate arrays as a way to order the variations in the UI. + // Known variations (like Post Link and Page Link) are added to the + // `built_ins` array. Variations for custom post types and taxonomies are + // added to the `variations` array and will always appear after `built-ins. + $built_ins = array(); + $variations = array(); + + if ( $post_types ) { + foreach ( $post_types as $post_type ) { + $variation = build_variation_for_navigation_link( $post_type, 'post-type' ); + if ( $post_type->_builtin ) { + $built_ins[] = $variation; + } else { + $variations[] = $variation; + } + } + } + if ( $taxonomies ) { + foreach ( $taxonomies as $taxonomy ) { + $variation = build_variation_for_navigation_link( $taxonomy, 'taxonomy' ); + if ( $taxonomy->_builtin ) { + $built_ins[] = $variation; + } else { + $variations[] = $variation; + } + } + } + + register_block_type_from_metadata( + __DIR__ . '/navigation-link', + array( + 'render_callback' => 'render_block_core_navigation_link', + 'variations' => array_merge( $built_ins, $variations ), + ) + ); +} +add_action( 'init', 'register_block_core_navigation_link' ); diff --git a/wp-includes/blocks/navigation-link/block.json b/wp-includes/blocks/navigation-link/block.json new file mode 100644 index 0000000..b2cbeae --- /dev/null +++ b/wp-includes/blocks/navigation-link/block.json @@ -0,0 +1,78 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/navigation-link", + "title": "Custom Link", + "category": "design", + "parent": [ "core/navigation" ], + "description": "Add a page, link, or another item to your navigation.", + "textdomain": "default", + "attributes": { + "label": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "rel": { + "type": "string" + }, + "id": { + "type": "number" + }, + "opensInNewTab": { + "type": "boolean", + "default": false + }, + "url": { + "type": "string" + }, + "title": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "isTopLevelLink": { + "type": "boolean" + } + }, + "usesContext": [ + "textColor", + "customTextColor", + "backgroundColor", + "customBackgroundColor", + "overlayTextColor", + "customOverlayTextColor", + "overlayBackgroundColor", + "customOverlayBackgroundColor", + "fontSize", + "customFontSize", + "showSubmenuIcon", + "maxNestingLevel", + "style" + ], + "supports": { + "reusable": false, + "html": false, + "__experimentalSlashInserter": true, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-navigation-link-editor", + "style": "wp-block-navigation-link" +} diff --git a/wp-includes/blocks/navigation-link/editor-rtl.css b/wp-includes/blocks/navigation-link/editor-rtl.css new file mode 100644 index 0000000..c7811c0 --- /dev/null +++ b/wp-includes/blocks/navigation-link/editor-rtl.css @@ -0,0 +1,77 @@ +.wp-block-navigation .block-list-appender{ + position:relative; +} +.wp-block-navigation .has-child{ + cursor:pointer; +} +.wp-block-navigation .has-child .wp-block-navigation__submenu-container{ + z-index:28; +} +.wp-block-navigation .has-child:hover .wp-block-navigation__submenu-container{ + z-index:29; +} +.wp-block-navigation .has-child.has-child-selected>.wp-block-navigation__submenu-container,.wp-block-navigation .has-child.is-selected>.wp-block-navigation__submenu-container{ + height:auto !important; + min-width:200px !important; + opacity:1 !important; + overflow:visible !important; + visibility:visible !important; + width:auto !important; +} +.wp-block-navigation-item .wp-block-navigation-item__content{ + cursor:text; +} +.wp-block-navigation-item.is-editing,.wp-block-navigation-item.is-selected{ + min-width:20px; +} +.wp-block-navigation-item .block-list-appender{ + margin:16px 16px 16px auto; +} + +.wp-block-navigation-link__invalid-item{ + color:#000; +} +.wp-block-navigation-link__placeholder{ + background-image:none !important; + box-shadow:none !important; + position:relative; + text-decoration:none !important; +} +.wp-block-navigation-link__placeholder .wp-block-navigation-link__placeholder-text span{ + --wp-underline-color:var(--wp-admin-theme-color); + background-image:linear-gradient(-45deg, transparent 20%, var(--wp-underline-color) 30%, var(--wp-underline-color) 36%, transparent 46%), linear-gradient(-135deg, transparent 54%, var(--wp-underline-color) 64%, var(--wp-underline-color) 70%, transparent 80%); + background-position:100% 100%; + background-repeat:repeat-x; + background-size:6px 3px; + padding-bottom:.1em; +} +.is-dark-theme .wp-block-navigation-link__placeholder .wp-block-navigation-link__placeholder-text span{ + --wp-underline-color:#fff; +} +.wp-block-navigation-link__placeholder.wp-block-navigation-item__content{ + cursor:pointer; +} +.link-control-transform{ + border-top:1px solid #ccc; + padding:0 16px 8px; +} + +.link-control-transform__subheading{ + color:#1e1e1e; + font-size:11px; + font-weight:500; + margin-bottom:1.5em; + text-transform:uppercase; +} + +.link-control-transform__items{ + display:flex; + justify-content:space-between; +} + +.link-control-transform__item{ + flex-basis:33%; + flex-direction:column; + gap:8px; + height:auto; +}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation-link/editor-rtl.min.css b/wp-includes/blocks/navigation-link/editor-rtl.min.css new file mode 100644 index 0000000..78accfe --- /dev/null +++ b/wp-includes/blocks/navigation-link/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-navigation .block-list-appender{position:relative}.wp-block-navigation .has-child{cursor:pointer}.wp-block-navigation .has-child .wp-block-navigation__submenu-container{z-index:28}.wp-block-navigation .has-child:hover .wp-block-navigation__submenu-container{z-index:29}.wp-block-navigation .has-child.has-child-selected>.wp-block-navigation__submenu-container,.wp-block-navigation .has-child.is-selected>.wp-block-navigation__submenu-container{height:auto!important;min-width:200px!important;opacity:1!important;overflow:visible!important;visibility:visible!important;width:auto!important}.wp-block-navigation-item .wp-block-navigation-item__content{cursor:text}.wp-block-navigation-item.is-editing,.wp-block-navigation-item.is-selected{min-width:20px}.wp-block-navigation-item .block-list-appender{margin:16px 16px 16px auto}.wp-block-navigation-link__invalid-item{color:#000}.wp-block-navigation-link__placeholder{background-image:none!important;box-shadow:none!important;position:relative;text-decoration:none!important}.wp-block-navigation-link__placeholder .wp-block-navigation-link__placeholder-text span{--wp-underline-color:var(--wp-admin-theme-color);background-image:linear-gradient(-45deg,transparent 20%,var(--wp-underline-color) 30%,var(--wp-underline-color) 36%,transparent 46%),linear-gradient(-135deg,transparent 54%,var(--wp-underline-color) 64%,var(--wp-underline-color) 70%,transparent 80%);background-position:100% 100%;background-repeat:repeat-x;background-size:6px 3px;padding-bottom:.1em}.is-dark-theme .wp-block-navigation-link__placeholder .wp-block-navigation-link__placeholder-text span{--wp-underline-color:#fff}.wp-block-navigation-link__placeholder.wp-block-navigation-item__content{cursor:pointer}.link-control-transform{border-top:1px solid #ccc;padding:0 16px 8px}.link-control-transform__subheading{color:#1e1e1e;font-size:11px;font-weight:500;margin-bottom:1.5em;text-transform:uppercase}.link-control-transform__items{display:flex;justify-content:space-between}.link-control-transform__item{flex-basis:33%;flex-direction:column;gap:8px;height:auto}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation-link/editor.css b/wp-includes/blocks/navigation-link/editor.css new file mode 100644 index 0000000..e1faecb --- /dev/null +++ b/wp-includes/blocks/navigation-link/editor.css @@ -0,0 +1,77 @@ +.wp-block-navigation .block-list-appender{ + position:relative; +} +.wp-block-navigation .has-child{ + cursor:pointer; +} +.wp-block-navigation .has-child .wp-block-navigation__submenu-container{ + z-index:28; +} +.wp-block-navigation .has-child:hover .wp-block-navigation__submenu-container{ + z-index:29; +} +.wp-block-navigation .has-child.has-child-selected>.wp-block-navigation__submenu-container,.wp-block-navigation .has-child.is-selected>.wp-block-navigation__submenu-container{ + height:auto !important; + min-width:200px !important; + opacity:1 !important; + overflow:visible !important; + visibility:visible !important; + width:auto !important; +} +.wp-block-navigation-item .wp-block-navigation-item__content{ + cursor:text; +} +.wp-block-navigation-item.is-editing,.wp-block-navigation-item.is-selected{ + min-width:20px; +} +.wp-block-navigation-item .block-list-appender{ + margin:16px auto 16px 16px; +} + +.wp-block-navigation-link__invalid-item{ + color:#000; +} +.wp-block-navigation-link__placeholder{ + background-image:none !important; + box-shadow:none !important; + position:relative; + text-decoration:none !important; +} +.wp-block-navigation-link__placeholder .wp-block-navigation-link__placeholder-text span{ + --wp-underline-color:var(--wp-admin-theme-color); + background-image:linear-gradient(45deg, transparent 20%, var(--wp-underline-color) 30%, var(--wp-underline-color) 36%, transparent 46%), linear-gradient(135deg, transparent 54%, var(--wp-underline-color) 64%, var(--wp-underline-color) 70%, transparent 80%); + background-position:0 100%; + background-repeat:repeat-x; + background-size:6px 3px; + padding-bottom:.1em; +} +.is-dark-theme .wp-block-navigation-link__placeholder .wp-block-navigation-link__placeholder-text span{ + --wp-underline-color:#fff; +} +.wp-block-navigation-link__placeholder.wp-block-navigation-item__content{ + cursor:pointer; +} +.link-control-transform{ + border-top:1px solid #ccc; + padding:0 16px 8px; +} + +.link-control-transform__subheading{ + color:#1e1e1e; + font-size:11px; + font-weight:500; + margin-bottom:1.5em; + text-transform:uppercase; +} + +.link-control-transform__items{ + display:flex; + justify-content:space-between; +} + +.link-control-transform__item{ + flex-basis:33%; + flex-direction:column; + gap:8px; + height:auto; +}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation-link/editor.min.css b/wp-includes/blocks/navigation-link/editor.min.css new file mode 100644 index 0000000..92e6313 --- /dev/null +++ b/wp-includes/blocks/navigation-link/editor.min.css @@ -0,0 +1 @@ +.wp-block-navigation .block-list-appender{position:relative}.wp-block-navigation .has-child{cursor:pointer}.wp-block-navigation .has-child .wp-block-navigation__submenu-container{z-index:28}.wp-block-navigation .has-child:hover .wp-block-navigation__submenu-container{z-index:29}.wp-block-navigation .has-child.has-child-selected>.wp-block-navigation__submenu-container,.wp-block-navigation .has-child.is-selected>.wp-block-navigation__submenu-container{height:auto!important;min-width:200px!important;opacity:1!important;overflow:visible!important;visibility:visible!important;width:auto!important}.wp-block-navigation-item .wp-block-navigation-item__content{cursor:text}.wp-block-navigation-item.is-editing,.wp-block-navigation-item.is-selected{min-width:20px}.wp-block-navigation-item .block-list-appender{margin:16px auto 16px 16px}.wp-block-navigation-link__invalid-item{color:#000}.wp-block-navigation-link__placeholder{background-image:none!important;box-shadow:none!important;position:relative;text-decoration:none!important}.wp-block-navigation-link__placeholder .wp-block-navigation-link__placeholder-text span{--wp-underline-color:var(--wp-admin-theme-color);background-image:linear-gradient(45deg,transparent 20%,var(--wp-underline-color) 30%,var(--wp-underline-color) 36%,transparent 46%),linear-gradient(135deg,transparent 54%,var(--wp-underline-color) 64%,var(--wp-underline-color) 70%,transparent 80%);background-position:0 100%;background-repeat:repeat-x;background-size:6px 3px;padding-bottom:.1em}.is-dark-theme .wp-block-navigation-link__placeholder .wp-block-navigation-link__placeholder-text span{--wp-underline-color:#fff}.wp-block-navigation-link__placeholder.wp-block-navigation-item__content{cursor:pointer}.link-control-transform{border-top:1px solid #ccc;padding:0 16px 8px}.link-control-transform__subheading{color:#1e1e1e;font-size:11px;font-weight:500;margin-bottom:1.5em;text-transform:uppercase}.link-control-transform__items{display:flex;justify-content:space-between}.link-control-transform__item{flex-basis:33%;flex-direction:column;gap:8px;height:auto}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation-link/style-rtl.css b/wp-includes/blocks/navigation-link/style-rtl.css new file mode 100644 index 0000000..c1a6879 --- /dev/null +++ b/wp-includes/blocks/navigation-link/style-rtl.css @@ -0,0 +1,6 @@ +.wp-block-navigation .wp-block-navigation-item__label{ + overflow-wrap:break-word; +} +.wp-block-navigation .wp-block-navigation-item__description{ + display:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation-link/style-rtl.min.css b/wp-includes/blocks/navigation-link/style-rtl.min.css new file mode 100644 index 0000000..6515ef8 --- /dev/null +++ b/wp-includes/blocks/navigation-link/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-navigation .wp-block-navigation-item__label{overflow-wrap:break-word}.wp-block-navigation .wp-block-navigation-item__description{display:none}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation-link/style.css b/wp-includes/blocks/navigation-link/style.css new file mode 100644 index 0000000..c1a6879 --- /dev/null +++ b/wp-includes/blocks/navigation-link/style.css @@ -0,0 +1,6 @@ +.wp-block-navigation .wp-block-navigation-item__label{ + overflow-wrap:break-word; +} +.wp-block-navigation .wp-block-navigation-item__description{ + display:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation-link/style.min.css b/wp-includes/blocks/navigation-link/style.min.css new file mode 100644 index 0000000..6515ef8 --- /dev/null +++ b/wp-includes/blocks/navigation-link/style.min.css @@ -0,0 +1 @@ +.wp-block-navigation .wp-block-navigation-item__label{overflow-wrap:break-word}.wp-block-navigation .wp-block-navigation-item__description{display:none}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation-submenu.php b/wp-includes/blocks/navigation-submenu.php new file mode 100644 index 0000000..2ae23a9 --- /dev/null +++ b/wp-includes/blocks/navigation-submenu.php @@ -0,0 +1,252 @@ +<?php +/** + * Server-side rendering of the `core/navigation-submenu` block. + * + * @package WordPress + */ + +/** + * Build an array with CSS classes and inline styles defining the font sizes + * which will be applied to the navigation markup in the front-end. + * + * @param array $context Navigation block context. + * @return array Font size CSS classes and inline styles. + */ +function block_core_navigation_submenu_build_css_font_sizes( $context ) { + // CSS classes. + $font_sizes = array( + 'css_classes' => array(), + 'inline_styles' => '', + ); + + $has_named_font_size = array_key_exists( 'fontSize', $context ); + $has_custom_font_size = isset( $context['style']['typography']['fontSize'] ); + + if ( $has_named_font_size ) { + // Add the font size class. + $font_sizes['css_classes'][] = sprintf( 'has-%s-font-size', $context['fontSize'] ); + } elseif ( $has_custom_font_size ) { + // Add the custom font size inline style. + $font_sizes['inline_styles'] = sprintf( + 'font-size: %s;', + wp_get_typography_font_size_value( + array( + 'size' => $context['style']['typography']['fontSize'], + ) + ) + ); + } + + return $font_sizes; +} + +/** + * Returns the top-level submenu SVG chevron icon. + * + * @return string + */ +function block_core_navigation_submenu_render_submenu_icon() { + return '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" focusable="false"><path d="M1.50002 4L6.00002 8L10.5 4" stroke-width="1.5"></path></svg>'; +} + +/** + * Renders the `core/navigation-submenu` block. + * + * @param array $attributes The block attributes. + * @param string $content The saved content. + * @param WP_Block $block The parsed block. + * + * @return string Returns the post content with the legacy widget added. + */ +function render_block_core_navigation_submenu( $attributes, $content, $block ) { + $navigation_link_has_id = isset( $attributes['id'] ) && is_numeric( $attributes['id'] ); + $is_post_type = isset( $attributes['kind'] ) && 'post-type' === $attributes['kind']; + $is_post_type = $is_post_type || isset( $attributes['type'] ) && ( 'post' === $attributes['type'] || 'page' === $attributes['type'] ); + + // Don't render the block's subtree if it is a draft. + if ( $is_post_type && $navigation_link_has_id && 'publish' !== get_post_status( $attributes['id'] ) ) { + return ''; + } + + // Don't render the block's subtree if it has no label. + if ( empty( $attributes['label'] ) ) { + return ''; + } + + $font_sizes = block_core_navigation_submenu_build_css_font_sizes( $block->context ); + $style_attribute = $font_sizes['inline_styles']; + + $css_classes = trim( implode( ' ', $font_sizes['css_classes'] ) ); + $has_submenu = count( $block->inner_blocks ) > 0; + $kind = empty( $attributes['kind'] ) ? 'post_type' : str_replace( '-', '_', $attributes['kind'] ); + $is_active = ! empty( $attributes['id'] ) && get_queried_object_id() === (int) $attributes['id'] && ! empty( get_queried_object()->$kind ); + + $show_submenu_indicators = isset( $block->context['showSubmenuIcon'] ) && $block->context['showSubmenuIcon']; + $open_on_click = isset( $block->context['openSubmenusOnClick'] ) && $block->context['openSubmenusOnClick']; + $open_on_hover_and_click = isset( $block->context['openSubmenusOnClick'] ) && ! $block->context['openSubmenusOnClick'] && + $show_submenu_indicators; + + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => $css_classes . ' wp-block-navigation-item' . ( $has_submenu ? ' has-child' : '' ) . + ( $open_on_click ? ' open-on-click' : '' ) . ( $open_on_hover_and_click ? ' open-on-hover-click' : '' ) . + ( $is_active ? ' current-menu-item' : '' ), + 'style' => $style_attribute, + ) + ); + + $label = ''; + + if ( isset( $attributes['label'] ) ) { + $label .= wp_kses_post( $attributes['label'] ); + } + + $aria_label = sprintf( + /* translators: Accessibility text. %s: Parent page title. */ + __( '%s submenu' ), + wp_strip_all_tags( $label ) + ); + + $html = '<li ' . $wrapper_attributes . '>'; + + // If Submenus open on hover, we render an anchor tag with attributes. + // If submenu icons are set to show, we also render a submenu button, so the submenu can be opened on click. + if ( ! $open_on_click ) { + $item_url = isset( $attributes['url'] ) ? $attributes['url'] : ''; + // Start appending HTML attributes to anchor tag. + $html .= '<a class="wp-block-navigation-item__content"'; + + // The href attribute on a and area elements is not required; + // when those elements do not have href attributes they do not create hyperlinks. + // But also The href attribute must have a value that is a valid URL potentially + // surrounded by spaces. + // see: https://html.spec.whatwg.org/multipage/links.html#links-created-by-a-and-area-elements. + if ( ! empty( $item_url ) ) { + $html .= ' href="' . esc_url( $item_url ) . '"'; + } + + if ( $is_active ) { + $html .= ' aria-current="page"'; + } + + if ( isset( $attributes['opensInNewTab'] ) && true === $attributes['opensInNewTab'] ) { + $html .= ' target="_blank" '; + } + + if ( isset( $attributes['rel'] ) ) { + $html .= ' rel="' . esc_attr( $attributes['rel'] ) . '"'; + } elseif ( isset( $attributes['nofollow'] ) && $attributes['nofollow'] ) { + $html .= ' rel="nofollow"'; + } + + if ( isset( $attributes['title'] ) ) { + $html .= ' title="' . esc_attr( $attributes['title'] ) . '"'; + } + + $html .= '>'; + // End appending HTML attributes to anchor tag. + + $html .= $label; + + $html .= '</a>'; + // End anchor tag content. + + if ( $show_submenu_indicators ) { + // The submenu icon is rendered in a button here + // so that there's a clickable element to open the submenu. + $html .= '<button aria-label="' . esc_attr( $aria_label ) . '" class="wp-block-navigation__submenu-icon wp-block-navigation-submenu__toggle" aria-expanded="false">' . block_core_navigation_submenu_render_submenu_icon() . '</button>'; + } + } else { + // If menus open on click, we render the parent as a button. + $html .= '<button aria-label="' . esc_attr( $aria_label ) . '" class="wp-block-navigation-item__content wp-block-navigation-submenu__toggle" aria-expanded="false">'; + + // Wrap title with span to isolate it from submenu icon. + $html .= '<span class="wp-block-navigation-item__label">'; + + $html .= $label; + + $html .= '</span>'; + + $html .= '</button>'; + + $html .= '<span class="wp-block-navigation__submenu-icon">' . block_core_navigation_submenu_render_submenu_icon() . '</span>'; + + } + + if ( $has_submenu ) { + // Copy some attributes from the parent block to this one. + // Ideally this would happen in the client when the block is created. + if ( array_key_exists( 'overlayTextColor', $block->context ) ) { + $attributes['textColor'] = $block->context['overlayTextColor']; + } + if ( array_key_exists( 'overlayBackgroundColor', $block->context ) ) { + $attributes['backgroundColor'] = $block->context['overlayBackgroundColor']; + } + if ( array_key_exists( 'customOverlayTextColor', $block->context ) ) { + $attributes['style']['color']['text'] = $block->context['customOverlayTextColor']; + } + if ( array_key_exists( 'customOverlayBackgroundColor', $block->context ) ) { + $attributes['style']['color']['background'] = $block->context['customOverlayBackgroundColor']; + } + + // This allows us to be able to get a response from wp_apply_colors_support. + $block->block_type->supports['color'] = true; + $colors_supports = wp_apply_colors_support( $block->block_type, $attributes ); + $css_classes = 'wp-block-navigation__submenu-container'; + if ( array_key_exists( 'class', $colors_supports ) ) { + $css_classes .= ' ' . $colors_supports['class']; + } + + $style_attribute = ''; + if ( array_key_exists( 'style', $colors_supports ) ) { + $style_attribute = $colors_supports['style']; + } + + $inner_blocks_html = ''; + foreach ( $block->inner_blocks as $inner_block ) { + $inner_blocks_html .= $inner_block->render(); + } + + if ( strpos( $inner_blocks_html, 'current-menu-item' ) ) { + $tag_processor = new WP_HTML_Tag_Processor( $html ); + while ( $tag_processor->next_tag( array( 'class_name' => 'wp-block-navigation-item__content' ) ) ) { + $tag_processor->add_class( 'current-menu-ancestor' ); + } + $html = $tag_processor->get_updated_html(); + } + + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => $css_classes, + 'style' => $style_attribute, + ) + ); + + $html .= sprintf( + '<ul %s>%s</ul>', + $wrapper_attributes, + $inner_blocks_html + ); + + } + + $html .= '</li>'; + + return $html; +} + +/** + * Register the navigation submenu block. + * + * @uses render_block_core_navigation_submenu() + * @throws WP_Error An WP_Error exception parsing the block definition. + */ +function register_block_core_navigation_submenu() { + register_block_type_from_metadata( + __DIR__ . '/navigation-submenu', + array( + 'render_callback' => 'render_block_core_navigation_submenu', + ) + ); +} +add_action( 'init', 'register_block_core_navigation_submenu' ); diff --git a/wp-includes/blocks/navigation-submenu/block.json b/wp-includes/blocks/navigation-submenu/block.json new file mode 100644 index 0000000..9136410 --- /dev/null +++ b/wp-includes/blocks/navigation-submenu/block.json @@ -0,0 +1,65 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/navigation-submenu", + "title": "Submenu", + "category": "design", + "parent": [ "core/navigation" ], + "description": "Add a submenu to your navigation.", + "textdomain": "default", + "attributes": { + "label": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "rel": { + "type": "string" + }, + "id": { + "type": "number" + }, + "opensInNewTab": { + "type": "boolean", + "default": false + }, + "url": { + "type": "string" + }, + "title": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "isTopLevelItem": { + "type": "boolean" + } + }, + "usesContext": [ + "textColor", + "customTextColor", + "backgroundColor", + "customBackgroundColor", + "overlayTextColor", + "customOverlayTextColor", + "overlayBackgroundColor", + "customOverlayBackgroundColor", + "fontSize", + "customFontSize", + "showSubmenuIcon", + "maxNestingLevel", + "openSubmenusOnClick", + "style" + ], + "supports": { + "reusable": false, + "html": false + }, + "editorStyle": "wp-block-navigation-submenu-editor", + "style": "wp-block-navigation-submenu" +} diff --git a/wp-includes/blocks/navigation-submenu/editor-rtl.css b/wp-includes/blocks/navigation-submenu/editor-rtl.css new file mode 100644 index 0000000..e13b9ba --- /dev/null +++ b/wp-includes/blocks/navigation-submenu/editor-rtl.css @@ -0,0 +1,31 @@ +.wp-block-navigation-submenu{ + display:block; +} +.wp-block-navigation-submenu .wp-block-navigation__submenu-container{ + z-index:28; +} +.wp-block-navigation-submenu.has-child-selected>.wp-block-navigation__submenu-container,.wp-block-navigation-submenu.is-selected>.wp-block-navigation__submenu-container{ + height:auto !important; + min-width:200px !important; + opacity:1 !important; + position:absolute; + right:-1px; + top:100%; + visibility:visible !important; + width:auto !important; +} +@media (min-width:782px){ + .wp-block-navigation-submenu.has-child-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation-submenu.is-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{ + right:100%; + top:-1px; + } + .wp-block-navigation-submenu.has-child-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before,.wp-block-navigation-submenu.is-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before{ + background:transparent; + content:""; + display:block; + height:100%; + left:100%; + position:absolute; + width:.5em; + } +}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation-submenu/editor-rtl.min.css b/wp-includes/blocks/navigation-submenu/editor-rtl.min.css new file mode 100644 index 0000000..85f8d79 --- /dev/null +++ b/wp-includes/blocks/navigation-submenu/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-navigation-submenu{display:block}.wp-block-navigation-submenu .wp-block-navigation__submenu-container{z-index:28}.wp-block-navigation-submenu.has-child-selected>.wp-block-navigation__submenu-container,.wp-block-navigation-submenu.is-selected>.wp-block-navigation__submenu-container{height:auto!important;min-width:200px!important;opacity:1!important;position:absolute;right:-1px;top:100%;visibility:visible!important;width:auto!important}@media (min-width:782px){.wp-block-navigation-submenu.has-child-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation-submenu.is-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{right:100%;top:-1px}.wp-block-navigation-submenu.has-child-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before,.wp-block-navigation-submenu.is-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before{background:transparent;content:"";display:block;height:100%;left:100%;position:absolute;width:.5em}}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation-submenu/editor.css b/wp-includes/blocks/navigation-submenu/editor.css new file mode 100644 index 0000000..866c2d3 --- /dev/null +++ b/wp-includes/blocks/navigation-submenu/editor.css @@ -0,0 +1,31 @@ +.wp-block-navigation-submenu{ + display:block; +} +.wp-block-navigation-submenu .wp-block-navigation__submenu-container{ + z-index:28; +} +.wp-block-navigation-submenu.has-child-selected>.wp-block-navigation__submenu-container,.wp-block-navigation-submenu.is-selected>.wp-block-navigation__submenu-container{ + height:auto !important; + left:-1px; + min-width:200px !important; + opacity:1 !important; + position:absolute; + top:100%; + visibility:visible !important; + width:auto !important; +} +@media (min-width:782px){ + .wp-block-navigation-submenu.has-child-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation-submenu.is-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{ + left:100%; + top:-1px; + } + .wp-block-navigation-submenu.has-child-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before,.wp-block-navigation-submenu.is-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before{ + background:transparent; + content:""; + display:block; + height:100%; + position:absolute; + right:100%; + width:.5em; + } +}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation-submenu/editor.min.css b/wp-includes/blocks/navigation-submenu/editor.min.css new file mode 100644 index 0000000..e55a4d8 --- /dev/null +++ b/wp-includes/blocks/navigation-submenu/editor.min.css @@ -0,0 +1 @@ +.wp-block-navigation-submenu{display:block}.wp-block-navigation-submenu .wp-block-navigation__submenu-container{z-index:28}.wp-block-navigation-submenu.has-child-selected>.wp-block-navigation__submenu-container,.wp-block-navigation-submenu.is-selected>.wp-block-navigation__submenu-container{height:auto!important;left:-1px;min-width:200px!important;opacity:1!important;position:absolute;top:100%;visibility:visible!important;width:auto!important}@media (min-width:782px){.wp-block-navigation-submenu.has-child-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation-submenu.is-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:100%;top:-1px}.wp-block-navigation-submenu.has-child-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before,.wp-block-navigation-submenu.is-selected>.wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before{background:transparent;content:"";display:block;height:100%;position:absolute;right:100%;width:.5em}}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation.php b/wp-includes/blocks/navigation.php new file mode 100644 index 0000000..4d9fe4a --- /dev/null +++ b/wp-includes/blocks/navigation.php @@ -0,0 +1,1068 @@ +<?php +/** + * Server-side rendering of the `core/navigation` block. + * + * @package WordPress + */ + +// These functions are used for the __unstableLocation feature and only active +// when the gutenberg plugin is active. +if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + /** + * Returns the menu items for a WordPress menu location. + * + * @param string $location The menu location. + * @return array Menu items for the location. + */ + function block_core_navigation_get_menu_items_at_location( $location ) { + if ( empty( $location ) ) { + return; + } + + // Build menu data. The following approximates the code in + // `wp_nav_menu()` and `gutenberg_output_block_nav_menu`. + + // Find the location in the list of locations, returning early if the + // location can't be found. + $locations = get_nav_menu_locations(); + if ( ! isset( $locations[ $location ] ) ) { + return; + } + + // Get the menu from the location, returning early if there is no + // menu or there was an error. + $menu = wp_get_nav_menu_object( $locations[ $location ] ); + if ( ! $menu || is_wp_error( $menu ) ) { + return; + } + + $menu_items = wp_get_nav_menu_items( $menu->term_id, array( 'update_post_term_cache' => false ) ); + _wp_menu_item_classes_by_context( $menu_items ); + + return $menu_items; + } + + + /** + * Sorts a standard array of menu items into a nested structure keyed by the + * id of the parent menu. + * + * @param array $menu_items Menu items to sort. + * @return array An array keyed by the id of the parent menu where each element + * is an array of menu items that belong to that parent. + */ + function block_core_navigation_sort_menu_items_by_parent_id( $menu_items ) { + $sorted_menu_items = array(); + foreach ( (array) $menu_items as $menu_item ) { + $sorted_menu_items[ $menu_item->menu_order ] = $menu_item; + } + unset( $menu_items, $menu_item ); + + $menu_items_by_parent_id = array(); + foreach ( $sorted_menu_items as $menu_item ) { + $menu_items_by_parent_id[ $menu_item->menu_item_parent ][] = $menu_item; + } + + return $menu_items_by_parent_id; + } +} + + +/** + * Add Interactivity API directives to the navigation-submenu and page-list + * blocks markup using the Tag Processor. + * + * @param string $w Markup of the navigation block. + * @param array $block_attributes Block attributes. + * + * @return string Submenu markup with the directives injected. + */ +function block_core_navigation_add_directives_to_submenu( $w, $block_attributes ) { + while ( $w->next_tag( + array( + 'tag_name' => 'LI', + 'class_name' => 'has-child', + ) + ) ) { + // Add directives to the parent `<li>`. + $w->set_attribute( 'data-wp-interactive', true ); + $w->set_attribute( 'data-wp-context', '{ "core": { "navigation": { "submenuOpenedBy": {}, "type": "submenu" } } }' ); + $w->set_attribute( 'data-wp-effect', 'effects.core.navigation.initMenu' ); + $w->set_attribute( 'data-wp-on--focusout', 'actions.core.navigation.handleMenuFocusout' ); + $w->set_attribute( 'data-wp-on--keydown', 'actions.core.navigation.handleMenuKeydown' ); + + // This is a fix for Safari. Without it, Safari doesn't change the active + // element when the user clicks on a button. It can be removed once we add + // an overlay to capture the clicks, instead of relying on the focusout + // event. + $w->set_attribute( 'tabindex', '-1' ); + + if ( ! isset( $block_attributes['openSubmenusOnClick'] ) || false === $block_attributes['openSubmenusOnClick'] ) { + $w->set_attribute( 'data-wp-on--mouseenter', 'actions.core.navigation.openMenuOnHover' ); + $w->set_attribute( 'data-wp-on--mouseleave', 'actions.core.navigation.closeMenuOnHover' ); + } + + // Add directives to the toggle submenu button. + if ( $w->next_tag( + array( + 'tag_name' => 'BUTTON', + 'class_name' => 'wp-block-navigation-submenu__toggle', + ) + ) ) { + $w->set_attribute( 'data-wp-on--click', 'actions.core.navigation.toggleMenuOnClick' ); + $w->set_attribute( 'data-wp-bind--aria-expanded', 'selectors.core.navigation.isMenuOpen' ); + // The `aria-expanded` attribute for SSR is already added in the submenu block. + } + // Add directives to the submenu. + if ( $w->next_tag( + array( + 'tag_name' => 'UL', + 'class_name' => 'wp-block-navigation__submenu-container', + ) + ) ) { + $w->set_attribute( 'data-wp-on--focus', 'actions.core.navigation.openMenuOnFocus' ); + } + + // Iterate through subitems if exist. + block_core_navigation_add_directives_to_submenu( $w, $block_attributes ); + } + return $w->get_updated_html(); +} + +/** + * Build an array with CSS classes and inline styles defining the colors + * which will be applied to the navigation markup in the front-end. + * + * @param array $attributes Navigation block attributes. + * + * @return array Colors CSS classes and inline styles. + */ +function block_core_navigation_build_css_colors( $attributes ) { + $colors = array( + 'css_classes' => array(), + 'inline_styles' => '', + 'overlay_css_classes' => array(), + 'overlay_inline_styles' => '', + ); + + // Text color. + $has_named_text_color = array_key_exists( 'textColor', $attributes ); + $has_custom_text_color = array_key_exists( 'customTextColor', $attributes ); + + // If has text color. + if ( $has_custom_text_color || $has_named_text_color ) { + // Add has-text-color class. + $colors['css_classes'][] = 'has-text-color'; + } + + if ( $has_named_text_color ) { + // Add the color class. + $colors['css_classes'][] = sprintf( 'has-%s-color', $attributes['textColor'] ); + } elseif ( $has_custom_text_color ) { + // Add the custom color inline style. + $colors['inline_styles'] .= sprintf( 'color: %s;', $attributes['customTextColor'] ); + } + + // Background color. + $has_named_background_color = array_key_exists( 'backgroundColor', $attributes ); + $has_custom_background_color = array_key_exists( 'customBackgroundColor', $attributes ); + + // If has background color. + if ( $has_custom_background_color || $has_named_background_color ) { + // Add has-background class. + $colors['css_classes'][] = 'has-background'; + } + + if ( $has_named_background_color ) { + // Add the background-color class. + $colors['css_classes'][] = sprintf( 'has-%s-background-color', $attributes['backgroundColor'] ); + } elseif ( $has_custom_background_color ) { + // Add the custom background-color inline style. + $colors['inline_styles'] .= sprintf( 'background-color: %s;', $attributes['customBackgroundColor'] ); + } + + // Overlay text color. + $has_named_overlay_text_color = array_key_exists( 'overlayTextColor', $attributes ); + $has_custom_overlay_text_color = array_key_exists( 'customOverlayTextColor', $attributes ); + + // If has overlay text color. + if ( $has_custom_overlay_text_color || $has_named_overlay_text_color ) { + // Add has-text-color class. + $colors['overlay_css_classes'][] = 'has-text-color'; + } + + if ( $has_named_overlay_text_color ) { + // Add the overlay color class. + $colors['overlay_css_classes'][] = sprintf( 'has-%s-color', $attributes['overlayTextColor'] ); + } elseif ( $has_custom_overlay_text_color ) { + // Add the custom overlay color inline style. + $colors['overlay_inline_styles'] .= sprintf( 'color: %s;', $attributes['customOverlayTextColor'] ); + } + + // Overlay background color. + $has_named_overlay_background_color = array_key_exists( 'overlayBackgroundColor', $attributes ); + $has_custom_overlay_background_color = array_key_exists( 'customOverlayBackgroundColor', $attributes ); + + // If has overlay background color. + if ( $has_custom_overlay_background_color || $has_named_overlay_background_color ) { + // Add has-background class. + $colors['overlay_css_classes'][] = 'has-background'; + } + + if ( $has_named_overlay_background_color ) { + // Add the overlay background-color class. + $colors['overlay_css_classes'][] = sprintf( 'has-%s-background-color', $attributes['overlayBackgroundColor'] ); + } elseif ( $has_custom_overlay_background_color ) { + // Add the custom overlay background-color inline style. + $colors['overlay_inline_styles'] .= sprintf( 'background-color: %s;', $attributes['customOverlayBackgroundColor'] ); + } + + return $colors; +} + +/** + * Build an array with CSS classes and inline styles defining the font sizes + * which will be applied to the navigation markup in the front-end. + * + * @param array $attributes Navigation block attributes. + * + * @return array Font size CSS classes and inline styles. + */ +function block_core_navigation_build_css_font_sizes( $attributes ) { + // CSS classes. + $font_sizes = array( + 'css_classes' => array(), + 'inline_styles' => '', + ); + + $has_named_font_size = array_key_exists( 'fontSize', $attributes ); + $has_custom_font_size = array_key_exists( 'customFontSize', $attributes ); + + if ( $has_named_font_size ) { + // Add the font size class. + $font_sizes['css_classes'][] = sprintf( 'has-%s-font-size', $attributes['fontSize'] ); + } elseif ( $has_custom_font_size ) { + // Add the custom font size inline style. + $font_sizes['inline_styles'] = sprintf( 'font-size: %spx;', $attributes['customFontSize'] ); + } + + return $font_sizes; +} + +/** + * Returns the top-level submenu SVG chevron icon. + * + * @return string + */ +function block_core_navigation_render_submenu_icon() { + return '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" focusable="false"><path d="M1.50002 4L6.00002 8L10.5 4" stroke-width="1.5"></path></svg>'; +} + +/** + * Filter out empty "null" blocks from the block list. + * 'parse_blocks' includes a null block with '\n\n' as the content when + * it encounters whitespace. This is not a bug but rather how the parser + * is designed. + * + * @param array $parsed_blocks the parsed blocks to be normalized. + * @return array the normalized parsed blocks. + */ +function block_core_navigation_filter_out_empty_blocks( $parsed_blocks ) { + $filtered = array_filter( + $parsed_blocks, + static function ( $block ) { + return isset( $block['blockName'] ); + } + ); + + // Reset keys. + return array_values( $filtered ); +} + +/** + * Returns true if the navigation block contains a nested navigation block. + * + * @param WP_Block_List $inner_blocks Inner block instance to be normalized. + * @return bool true if the navigation block contains a nested navigation block. + */ +function block_core_navigation_block_contains_core_navigation( $inner_blocks ) { + foreach ( $inner_blocks as $block ) { + if ( 'core/navigation' === $block->name ) { + return true; + } + if ( $block->inner_blocks && block_core_navigation_block_contains_core_navigation( $block->inner_blocks ) ) { + return true; + } + } + + return false; +} + +/** + * Retrieves the appropriate fallback to be used on the front of the + * site when there is no menu assigned to the Nav block. + * + * This aims to mirror how the fallback mechanic for wp_nav_menu works. + * See https://developer.wordpress.org/reference/functions/wp_nav_menu/#more-information. + * + * @return array the array of blocks to be used as a fallback. + */ +function block_core_navigation_get_fallback_blocks() { + $page_list_fallback = array( + array( + 'blockName' => 'core/page-list', + ), + ); + + $registry = WP_Block_Type_Registry::get_instance(); + + // If `core/page-list` is not registered then return empty blocks. + $fallback_blocks = $registry->is_registered( 'core/page-list' ) ? $page_list_fallback : array(); + + if ( class_exists( 'WP_Navigation_Fallback' ) ) { + $navigation_post = WP_Navigation_Fallback::get_fallback(); + } else { + $navigation_post = Gutenberg_Navigation_Fallback::get_fallback(); + } + + // Use the first non-empty Navigation as fallback if available. + if ( $navigation_post ) { + $parsed_blocks = parse_blocks( $navigation_post->post_content ); + $maybe_fallback = block_core_navigation_filter_out_empty_blocks( $parsed_blocks ); + + // Normalizing blocks may result in an empty array of blocks if they were all `null` blocks. + // In this case default to the (Page List) fallback. + $fallback_blocks = ! empty( $maybe_fallback ) ? $maybe_fallback : $fallback_blocks; + } + + /** + * Filters the fallback experience for the Navigation block. + * + * Returning a falsey value will opt out of the fallback and cause the block not to render. + * To customise the blocks provided return an array of blocks - these should be valid + * children of the `core/navigation` block. + * + * @since 5.9.0 + * + * @param array[] default fallback blocks provided by the default block mechanic. + */ + return apply_filters( 'block_core_navigation_render_fallback', $fallback_blocks ); +} + +/** + * Iterate through all inner blocks recursively and get navigation link block's post IDs. + * + * @param WP_Block_List $inner_blocks Block list class instance. + * + * @return array Array of post IDs. + */ +function block_core_navigation_get_post_ids( $inner_blocks ) { + $post_ids = array_map( 'block_core_navigation_from_block_get_post_ids', iterator_to_array( $inner_blocks ) ); + return array_unique( array_merge( ...$post_ids ) ); +} + +/** + * Get post IDs from a navigation link block instance. + * + * @param WP_Block $block Instance of a block. + * + * @return array Array of post IDs. + */ +function block_core_navigation_from_block_get_post_ids( $block ) { + $post_ids = array(); + + if ( $block->inner_blocks ) { + $post_ids = block_core_navigation_get_post_ids( $block->inner_blocks ); + } + + if ( 'core/navigation-link' === $block->name || 'core/navigation-submenu' === $block->name ) { + if ( $block->attributes && isset( $block->attributes['kind'] ) && 'post-type' === $block->attributes['kind'] && isset( $block->attributes['id'] ) ) { + $post_ids[] = $block->attributes['id']; + } + } + + return $post_ids; +} + +/** + * Renders the `core/navigation` block on server. + * + * @param array $attributes The block attributes. + * @param string $content The saved content. + * @param WP_Block $block The parsed block. + * + * @return string Returns the post content with the legacy widget added. + */ +function render_block_core_navigation( $attributes, $content, $block ) { + static $seen_menu_names = array(); + + // Flag used to indicate whether the rendered output is considered to be + // a fallback (i.e. the block has no menu associated with it). + $is_fallback = false; + + $nav_menu_name = $attributes['ariaLabel'] ?? ''; + + /** + * Deprecated: + * The rgbTextColor and rgbBackgroundColor attributes + * have been deprecated in favor of + * customTextColor and customBackgroundColor ones. + * Move the values from old attrs to the new ones. + */ + if ( isset( $attributes['rgbTextColor'] ) && empty( $attributes['textColor'] ) ) { + $attributes['customTextColor'] = $attributes['rgbTextColor']; + } + + if ( isset( $attributes['rgbBackgroundColor'] ) && empty( $attributes['backgroundColor'] ) ) { + $attributes['customBackgroundColor'] = $attributes['rgbBackgroundColor']; + } + + unset( $attributes['rgbTextColor'], $attributes['rgbBackgroundColor'] ); + + /** + * This is for backwards compatibility after `isResponsive` attribute has been removed. + */ + $has_old_responsive_attribute = ! empty( $attributes['isResponsive'] ) && $attributes['isResponsive']; + $is_responsive_menu = isset( $attributes['overlayMenu'] ) && 'never' !== $attributes['overlayMenu'] || $has_old_responsive_attribute; + + $inner_blocks = $block->inner_blocks; + + // Ensure that blocks saved with the legacy ref attribute name (navigationMenuId) continue to render. + if ( array_key_exists( 'navigationMenuId', $attributes ) ) { + $attributes['ref'] = $attributes['navigationMenuId']; + } + + // If: + // - the gutenberg plugin is active + // - `__unstableLocation` is defined + // - we have menu items at the defined location + // - we don't have a relationship to a `wp_navigation` Post (via `ref`). + // ...then create inner blocks from the classic menu assigned to that location. + if ( + defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN && + array_key_exists( '__unstableLocation', $attributes ) && + ! array_key_exists( 'ref', $attributes ) && + ! empty( block_core_navigation_get_menu_items_at_location( $attributes['__unstableLocation'] ) ) + ) { + $menu_items = block_core_navigation_get_menu_items_at_location( $attributes['__unstableLocation'] ); + if ( empty( $menu_items ) ) { + return ''; + } + + $menu_items_by_parent_id = block_core_navigation_sort_menu_items_by_parent_id( $menu_items ); + $parsed_blocks = block_core_navigation_parse_blocks_from_menu_items( $menu_items_by_parent_id[0], $menu_items_by_parent_id ); + $inner_blocks = new WP_Block_List( $parsed_blocks, $attributes ); + } + + // Load inner blocks from the navigation post. + if ( array_key_exists( 'ref', $attributes ) ) { + $navigation_post = get_post( $attributes['ref'] ); + if ( ! isset( $navigation_post ) ) { + return ''; + } + + // Only published posts are valid. If this is changed then a corresponding change + // must also be implemented in `use-navigation-menu.js`. + if ( 'publish' === $navigation_post->post_status ) { + $nav_menu_name = $navigation_post->post_title; + + if ( isset( $seen_menu_names[ $nav_menu_name ] ) ) { + ++$seen_menu_names[ $nav_menu_name ]; + } else { + $seen_menu_names[ $nav_menu_name ] = 1; + } + + $parsed_blocks = parse_blocks( $navigation_post->post_content ); + + // 'parse_blocks' includes a null block with '\n\n' as the content when + // it encounters whitespace. This code strips it. + $compacted_blocks = block_core_navigation_filter_out_empty_blocks( $parsed_blocks ); + + // TODO - this uses the full navigation block attributes for the + // context which could be refined. + $inner_blocks = new WP_Block_List( $compacted_blocks, $attributes ); + } + } + + // If there are no inner blocks then fallback to rendering an appropriate fallback. + if ( empty( $inner_blocks ) ) { + $is_fallback = true; // indicate we are rendering the fallback. + + $fallback_blocks = block_core_navigation_get_fallback_blocks(); + + // Fallback my have been filtered so do basic test for validity. + if ( empty( $fallback_blocks ) || ! is_array( $fallback_blocks ) ) { + return ''; + } + + $inner_blocks = new WP_Block_List( $fallback_blocks, $attributes ); + } + + if ( block_core_navigation_block_contains_core_navigation( $inner_blocks ) ) { + return ''; + } + + /** + * Filter navigation block $inner_blocks. + * Allows modification of a navigation block menu items. + * + * @since 6.1.0 + * + * @param \WP_Block_List $inner_blocks + */ + $inner_blocks = apply_filters( 'block_core_navigation_render_inner_blocks', $inner_blocks ); + + $layout_justification = array( + 'left' => 'items-justified-left', + 'right' => 'items-justified-right', + 'center' => 'items-justified-center', + 'space-between' => 'items-justified-space-between', + ); + + // Restore legacy classnames for submenu positioning. + $layout_class = ''; + if ( + isset( $attributes['layout']['justifyContent'] ) && + isset( $layout_justification[ $attributes['layout']['justifyContent'] ] ) + ) { + $layout_class .= $layout_justification[ $attributes['layout']['justifyContent'] ]; + } + if ( isset( $attributes['layout']['orientation'] ) && 'vertical' === $attributes['layout']['orientation'] ) { + $layout_class .= ' is-vertical'; + } + + if ( isset( $attributes['layout']['flexWrap'] ) && 'nowrap' === $attributes['layout']['flexWrap'] ) { + $layout_class .= ' no-wrap'; + } + + // Manually add block support text decoration as CSS class. + $text_decoration = $attributes['style']['typography']['textDecoration'] ?? null; + $text_decoration_class = sprintf( 'has-text-decoration-%s', $text_decoration ); + + $colors = block_core_navigation_build_css_colors( $attributes ); + $font_sizes = block_core_navigation_build_css_font_sizes( $attributes ); + $classes = array_merge( + $colors['css_classes'], + $font_sizes['css_classes'], + $is_responsive_menu ? array( 'is-responsive' ) : array(), + $layout_class ? array( $layout_class ) : array(), + $is_fallback ? array( 'is-fallback' ) : array(), + $text_decoration ? array( $text_decoration_class ) : array() + ); + + $post_ids = block_core_navigation_get_post_ids( $inner_blocks ); + if ( $post_ids ) { + _prime_post_caches( $post_ids, false, false ); + } + + $list_item_nav_blocks = array( + 'core/navigation-link', + 'core/home-link', + 'core/site-title', + 'core/site-logo', + 'core/navigation-submenu', + ); + + $needs_list_item_wrapper = array( + 'core/site-title', + 'core/site-logo', + ); + + $block_styles = isset( $attributes['styles'] ) ? $attributes['styles'] : ''; + $style = $block_styles . $colors['inline_styles'] . $font_sizes['inline_styles']; + $class = implode( ' ', $classes ); + + // If the menu name has been used previously then append an ID + // to the name to ensure uniqueness across a given post. + if ( isset( $seen_menu_names[ $nav_menu_name ] ) && $seen_menu_names[ $nav_menu_name ] > 1 ) { + $count = $seen_menu_names[ $nav_menu_name ]; + $nav_menu_name = $nav_menu_name . ' ' . ( $count ); + } + + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => $class, + 'style' => $style, + 'aria-label' => $nav_menu_name, + ) + ); + + $container_attributes = get_block_wrapper_attributes( + array( + 'class' => 'wp-block-navigation__container ' . $class, + 'style' => $style, + ) + ); + + $inner_blocks_html = ''; + $is_list_open = false; + $has_submenus = false; + foreach ( $inner_blocks as $inner_block ) { + $is_list_item = in_array( $inner_block->name, $list_item_nav_blocks, true ); + + if ( $is_list_item && ! $is_list_open ) { + $is_list_open = true; + $inner_blocks_html .= sprintf( + '<ul %1$s>', + $container_attributes + ); + } + + if ( ! $is_list_item && $is_list_open ) { + $is_list_open = false; + $inner_blocks_html .= '</ul>'; + } + + $inner_block_content = $inner_block->render(); + $p = new WP_HTML_Tag_Processor( $inner_block_content ); + if ( $p->next_tag( + array( + 'name' => 'LI', + 'class_name' => 'has-child', + ) + ) ) { + $has_submenus = true; + } + if ( ! empty( $inner_block_content ) ) { + if ( in_array( $inner_block->name, $needs_list_item_wrapper, true ) ) { + $inner_blocks_html .= '<li class="wp-block-navigation-item">' . $inner_block_content . '</li>'; + } else { + $inner_blocks_html .= $inner_block_content; + } + } + } + + if ( $is_list_open ) { + $inner_blocks_html .= '</ul>'; + } + + $should_load_view_script = ( $has_submenus && ( $attributes['openSubmenusOnClick'] || $attributes['showSubmenuIcon'] ) ) || $is_responsive_menu; + $view_js_file = 'wp-block-navigation-view'; + + // If the script already exists, there is no point in removing it from viewScript. + if ( ! wp_script_is( $view_js_file ) ) { + $script_handles = $block->block_type->view_script_handles; + + // If the script is not needed, and it is still in the `view_script_handles`, remove it. + if ( ! $should_load_view_script && in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); + } + // If the script is needed, but it was previously removed, add it again. + if ( $should_load_view_script && ! in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file ) ); + } + } + + // Add directives to the submenu if needed. + if ( $has_submenus && $should_load_view_script ) { + $w = new WP_HTML_Tag_Processor( $inner_blocks_html ); + $inner_blocks_html = block_core_navigation_add_directives_to_submenu( $w, $attributes ); + } + + $modal_unique_id = wp_unique_id( 'modal-' ); + + // Determine whether or not navigation elements should be wrapped in the markup required to make it responsive, + // return early if they don't. + if ( ! $is_responsive_menu ) { + return sprintf( + '<nav %1$s>%2$s</nav>', + $wrapper_attributes, + $inner_blocks_html + ); + } + + $is_hidden_by_default = isset( $attributes['overlayMenu'] ) && 'always' === $attributes['overlayMenu']; + + $responsive_container_classes = array( + 'wp-block-navigation__responsive-container', + $is_hidden_by_default ? 'hidden-by-default' : '', + implode( ' ', $colors['overlay_css_classes'] ), + ); + $open_button_classes = array( + 'wp-block-navigation__responsive-container-open', + $is_hidden_by_default ? 'always-shown' : '', + ); + + $should_display_icon_label = isset( $attributes['hasIcon'] ) && true === $attributes['hasIcon']; + $toggle_button_icon = '<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><rect x="4" y="7.5" width="16" height="1.5" /><rect x="4" y="15" width="16" height="1.5" /></svg>'; + if ( isset( $attributes['icon'] ) ) { + if ( 'menu' === $attributes['icon'] ) { + $toggle_button_icon = '<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5 5v1.5h14V5H5zm0 7.8h14v-1.5H5v1.5zM5 19h14v-1.5H5V19z" /></svg>'; + } + } + $toggle_button_content = $should_display_icon_label ? $toggle_button_icon : __( 'Menu' ); + $toggle_close_button_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" focusable="false"><path d="M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"></path></svg>'; + $toggle_close_button_content = $should_display_icon_label ? $toggle_close_button_icon : __( 'Close' ); + $toggle_aria_label_open = $should_display_icon_label ? 'aria-label="' . __( 'Open menu' ) . '"' : ''; // Open button label. + $toggle_aria_label_close = $should_display_icon_label ? 'aria-label="' . __( 'Close menu' ) . '"' : ''; // Close button label. + + // Add Interactivity API directives to the markup if needed. + $nav_element_directives = ''; + $open_button_directives = ''; + $responsive_container_directives = ''; + $responsive_dialog_directives = ''; + $close_button_directives = ''; + if ( $should_load_view_script ) { + $nav_element_context = wp_json_encode( + array( + 'core' => array( + 'navigation' => array( + 'overlayOpenedBy' => array(), + 'type' => 'overlay', + 'roleAttribute' => '', + 'ariaLabel' => __( 'Menu' ), + ), + ), + ), + JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP + ); + $nav_element_directives = ' + data-wp-interactive + data-wp-context=\'' . $nav_element_context . '\' + '; + $open_button_directives = ' + data-wp-on--click="actions.core.navigation.openMenuOnClick" + data-wp-on--keydown="actions.core.navigation.handleMenuKeydown" + '; + $responsive_container_directives = ' + data-wp-class--has-modal-open="selectors.core.navigation.isMenuOpen" + data-wp-class--is-menu-open="selectors.core.navigation.isMenuOpen" + data-wp-effect="effects.core.navigation.initMenu" + data-wp-on--keydown="actions.core.navigation.handleMenuKeydown" + data-wp-on--focusout="actions.core.navigation.handleMenuFocusout" + tabindex="-1" + '; + $responsive_dialog_directives = ' + data-wp-bind--aria-modal="selectors.core.navigation.ariaModal" + data-wp-bind--aria-label="selectors.core.navigation.ariaLabel" + data-wp-bind--role="selectors.core.navigation.roleAttribute" + data-wp-effect="effects.core.navigation.focusFirstElement" + '; + $close_button_directives = ' + data-wp-on--click="actions.core.navigation.closeMenuOnClick" + '; + } + + $responsive_container_markup = sprintf( + '<button aria-haspopup="true" %3$s class="%6$s" %10$s>%8$s</button> + <div class="%5$s" style="%7$s" id="%1$s" %11$s> + <div class="wp-block-navigation__responsive-close" tabindex="-1"> + <div class="wp-block-navigation__responsive-dialog" %12$s> + <button %4$s class="wp-block-navigation__responsive-container-close" %13$s>%9$s</button> + <div class="wp-block-navigation__responsive-container-content" id="%1$s-content"> + %2$s + </div> + </div> + </div> + </div>', + esc_attr( $modal_unique_id ), + $inner_blocks_html, + $toggle_aria_label_open, + $toggle_aria_label_close, + esc_attr( implode( ' ', $responsive_container_classes ) ), + esc_attr( implode( ' ', $open_button_classes ) ), + esc_attr( safecss_filter_attr( $colors['overlay_inline_styles'] ) ), + $toggle_button_content, + $toggle_close_button_content, + $open_button_directives, + $responsive_container_directives, + $responsive_dialog_directives, + $close_button_directives + ); + + return sprintf( + '<nav %1$s %3$s>%2$s</nav>', + $wrapper_attributes, + $responsive_container_markup, + $nav_element_directives + ); +} + +/** + * Register the navigation block. + * + * @uses render_block_core_navigation() + * @throws WP_Error An WP_Error exception parsing the block definition. + */ +function register_block_core_navigation() { + register_block_type_from_metadata( + __DIR__ . '/navigation', + array( + 'render_callback' => 'render_block_core_navigation', + ) + ); +} + +add_action( 'init', 'register_block_core_navigation' ); + +/** + * Filter that changes the parsed attribute values of navigation blocks contain typographic presets to contain the values directly. + * + * @param array $parsed_block The block being rendered. + * + * @return array The block being rendered without typographic presets. + */ +function block_core_navigation_typographic_presets_backcompatibility( $parsed_block ) { + if ( 'core/navigation' === $parsed_block['blockName'] ) { + $attribute_to_prefix_map = array( + 'fontStyle' => 'var:preset|font-style|', + 'fontWeight' => 'var:preset|font-weight|', + 'textDecoration' => 'var:preset|text-decoration|', + 'textTransform' => 'var:preset|text-transform|', + ); + foreach ( $attribute_to_prefix_map as $style_attribute => $prefix ) { + if ( ! empty( $parsed_block['attrs']['style']['typography'][ $style_attribute ] ) ) { + $prefix_len = strlen( $prefix ); + $attribute_value = &$parsed_block['attrs']['style']['typography'][ $style_attribute ]; + if ( 0 === strncmp( $attribute_value, $prefix, $prefix_len ) ) { + $attribute_value = substr( $attribute_value, $prefix_len ); + } + if ( 'textDecoration' === $style_attribute && 'strikethrough' === $attribute_value ) { + $attribute_value = 'line-through'; + } + } + } + } + + return $parsed_block; +} + +add_filter( 'render_block_data', 'block_core_navigation_typographic_presets_backcompatibility' ); + +/** + * Ensure that the view script has the `wp-interactivity` dependency. + * + * @since 6.4.0 + * + * @global WP_Scripts $wp_scripts + */ +function block_core_navigation_ensure_interactivity_dependency() { + global $wp_scripts; + if ( + isset( $wp_scripts->registered['wp-block-navigation-view'] ) && + ! in_array( 'wp-interactivity', $wp_scripts->registered['wp-block-navigation-view']->deps, true ) + ) { + $wp_scripts->registered['wp-block-navigation-view']->deps[] = 'wp-interactivity'; + } +} + +add_action( 'wp_print_scripts', 'block_core_navigation_ensure_interactivity_dependency' ); + +/** + * Turns menu item data into a nested array of parsed blocks + * + * @deprecated 6.3.0 Use WP_Navigation_Fallback::parse_blocks_from_menu_items() instead. + * + * @param array $menu_items An array of menu items that represent + * an individual level of a menu. + * @param array $menu_items_by_parent_id An array keyed by the id of the + * parent menu where each element is an + * array of menu items that belong to + * that parent. + * @return array An array of parsed block data. + */ +function block_core_navigation_parse_blocks_from_menu_items( $menu_items, $menu_items_by_parent_id ) { + + _deprecated_function( __FUNCTION__, '6.3.0', 'WP_Navigation_Fallback::parse_blocks_from_menu_items' ); + + if ( empty( $menu_items ) ) { + return array(); + } + + $blocks = array(); + + foreach ( $menu_items as $menu_item ) { + $class_name = ! empty( $menu_item->classes ) ? implode( ' ', (array) $menu_item->classes ) : null; + $id = ( null !== $menu_item->object_id && 'custom' !== $menu_item->object ) ? $menu_item->object_id : null; + $opens_in_new_tab = null !== $menu_item->target && '_blank' === $menu_item->target; + $rel = ( null !== $menu_item->xfn && '' !== $menu_item->xfn ) ? $menu_item->xfn : null; + $kind = null !== $menu_item->type ? str_replace( '_', '-', $menu_item->type ) : 'custom'; + + $block = array( + 'blockName' => isset( $menu_items_by_parent_id[ $menu_item->ID ] ) ? 'core/navigation-submenu' : 'core/navigation-link', + 'attrs' => array( + 'className' => $class_name, + 'description' => $menu_item->description, + 'id' => $id, + 'kind' => $kind, + 'label' => $menu_item->title, + 'opensInNewTab' => $opens_in_new_tab, + 'rel' => $rel, + 'title' => $menu_item->attr_title, + 'type' => $menu_item->object, + 'url' => $menu_item->url, + ), + ); + + $block['innerBlocks'] = isset( $menu_items_by_parent_id[ $menu_item->ID ] ) + ? block_core_navigation_parse_blocks_from_menu_items( $menu_items_by_parent_id[ $menu_item->ID ], $menu_items_by_parent_id ) + : array(); + $block['innerContent'] = array_map( 'serialize_block', $block['innerBlocks'] ); + + $blocks[] = $block; + } + + return $blocks; +} + +/** + * Get the classic navigation menu to use as a fallback. + * + * @deprecated 6.3.0 Use WP_Navigation_Fallback::get_classic_menu_fallback() instead. + * + * @return object WP_Term The classic navigation. + */ +function block_core_navigation_get_classic_menu_fallback() { + + _deprecated_function( __FUNCTION__, '6.3.0', 'WP_Navigation_Fallback::get_classic_menu_fallback' ); + + $classic_nav_menus = wp_get_nav_menus(); + + // If menus exist. + if ( $classic_nav_menus && ! is_wp_error( $classic_nav_menus ) ) { + // Handles simple use case where user has a classic menu and switches to a block theme. + + // Returns the menu assigned to location `primary`. + $locations = get_nav_menu_locations(); + if ( isset( $locations['primary'] ) ) { + $primary_menu = wp_get_nav_menu_object( $locations['primary'] ); + if ( $primary_menu ) { + return $primary_menu; + } + } + + // Returns a menu if `primary` is its slug. + foreach ( $classic_nav_menus as $classic_nav_menu ) { + if ( 'primary' === $classic_nav_menu->slug ) { + return $classic_nav_menu; + } + } + + // Otherwise return the most recently created classic menu. + usort( + $classic_nav_menus, + static function ( $a, $b ) { + return $b->term_id - $a->term_id; + } + ); + return $classic_nav_menus[0]; + } +} + +/** + * Converts a classic navigation to blocks. + * + * @deprecated 6.3.0 Use WP_Navigation_Fallback::get_classic_menu_fallback_blocks() instead. + * + * @param object $classic_nav_menu WP_Term The classic navigation object to convert. + * @return array the normalized parsed blocks. + */ +function block_core_navigation_get_classic_menu_fallback_blocks( $classic_nav_menu ) { + + _deprecated_function( __FUNCTION__, '6.3.0', 'WP_Navigation_Fallback::get_classic_menu_fallback_blocks' ); + + // BEGIN: Code that already exists in wp_nav_menu(). + $menu_items = wp_get_nav_menu_items( $classic_nav_menu->term_id, array( 'update_post_term_cache' => false ) ); + + // Set up the $menu_item variables. + _wp_menu_item_classes_by_context( $menu_items ); + + $sorted_menu_items = array(); + foreach ( (array) $menu_items as $menu_item ) { + $sorted_menu_items[ $menu_item->menu_order ] = $menu_item; + } + + unset( $menu_items, $menu_item ); + + // END: Code that already exists in wp_nav_menu(). + + $menu_items_by_parent_id = array(); + foreach ( $sorted_menu_items as $menu_item ) { + $menu_items_by_parent_id[ $menu_item->menu_item_parent ][] = $menu_item; + } + + $inner_blocks = block_core_navigation_parse_blocks_from_menu_items( + isset( $menu_items_by_parent_id[0] ) + ? $menu_items_by_parent_id[0] + : array(), + $menu_items_by_parent_id + ); + + return serialize_blocks( $inner_blocks ); +} + +/** + * If there's a classic menu then use it as a fallback. + * + * @deprecated 6.3.0 Use WP_Navigation_Fallback::create_classic_menu_fallback() instead. + * + * @return array the normalized parsed blocks. + */ +function block_core_navigation_maybe_use_classic_menu_fallback() { + + _deprecated_function( __FUNCTION__, '6.3.0', 'WP_Navigation_Fallback::create_classic_menu_fallback' ); + + // See if we have a classic menu. + $classic_nav_menu = block_core_navigation_get_classic_menu_fallback(); + + if ( ! $classic_nav_menu ) { + return; + } + + // If we have a classic menu then convert it to blocks. + $classic_nav_menu_blocks = block_core_navigation_get_classic_menu_fallback_blocks( $classic_nav_menu ); + + if ( empty( $classic_nav_menu_blocks ) ) { + return; + } + + // Create a new navigation menu from the classic menu. + $wp_insert_post_result = wp_insert_post( + array( + 'post_content' => $classic_nav_menu_blocks, + 'post_title' => $classic_nav_menu->name, + 'post_name' => $classic_nav_menu->slug, + 'post_status' => 'publish', + 'post_type' => 'wp_navigation', + ), + true // So that we can check whether the result is an error. + ); + + if ( is_wp_error( $wp_insert_post_result ) ) { + return; + } + + // Fetch the most recently published navigation which will be the classic one created above. + return block_core_navigation_get_most_recently_published_navigation(); +} + +/** + * Finds the most recently published `wp_navigation` Post. + * + * @deprecated 6.3.0 Use WP_Navigation_Fallback::get_most_recently_published_navigation() instead. + * + * @return WP_Post|null the first non-empty Navigation or null. + */ +function block_core_navigation_get_most_recently_published_navigation() { + + _deprecated_function( __FUNCTION__, '6.3.0', 'WP_Navigation_Fallback::get_most_recently_published_navigation' ); + + // Default to the most recently created menu. + $parsed_args = array( + 'post_type' => 'wp_navigation', + 'no_found_rows' => true, + 'update_post_meta_cache' => false, + 'update_post_term_cache' => false, + 'order' => 'DESC', + 'orderby' => 'date', + 'post_status' => 'publish', + 'posts_per_page' => 1, // get only the most recent. + ); + + $navigation_post = new WP_Query( $parsed_args ); + if ( count( $navigation_post->posts ) > 0 ) { + return $navigation_post->posts[0]; + } + + return null; +} diff --git a/wp-includes/blocks/navigation/block.json b/wp-includes/blocks/navigation/block.json new file mode 100644 index 0000000..cb5ca4f --- /dev/null +++ b/wp-includes/blocks/navigation/block.json @@ -0,0 +1,141 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/navigation", + "title": "Navigation", + "category": "theme", + "description": "A collection of blocks that allow visitors to get around your site.", + "keywords": [ "menu", "navigation", "links" ], + "textdomain": "default", + "attributes": { + "ref": { + "type": "number" + }, + "textColor": { + "type": "string" + }, + "customTextColor": { + "type": "string" + }, + "rgbTextColor": { + "type": "string" + }, + "backgroundColor": { + "type": "string" + }, + "customBackgroundColor": { + "type": "string" + }, + "rgbBackgroundColor": { + "type": "string" + }, + "showSubmenuIcon": { + "type": "boolean", + "default": true + }, + "openSubmenusOnClick": { + "type": "boolean", + "default": false + }, + "overlayMenu": { + "type": "string", + "default": "mobile" + }, + "icon": { + "type": "string", + "default": "handle" + }, + "hasIcon": { + "type": "boolean", + "default": true + }, + "__unstableLocation": { + "type": "string" + }, + "overlayBackgroundColor": { + "type": "string" + }, + "customOverlayBackgroundColor": { + "type": "string" + }, + "overlayTextColor": { + "type": "string" + }, + "customOverlayTextColor": { + "type": "string" + }, + "maxNestingLevel": { + "type": "number", + "default": 5 + }, + "templateLock": { + "type": [ "string", "boolean" ], + "enum": [ "all", "insert", "contentOnly", false ] + } + }, + "providesContext": { + "textColor": "textColor", + "customTextColor": "customTextColor", + "backgroundColor": "backgroundColor", + "customBackgroundColor": "customBackgroundColor", + "overlayTextColor": "overlayTextColor", + "customOverlayTextColor": "customOverlayTextColor", + "overlayBackgroundColor": "overlayBackgroundColor", + "customOverlayBackgroundColor": "customOverlayBackgroundColor", + "fontSize": "fontSize", + "customFontSize": "customFontSize", + "showSubmenuIcon": "showSubmenuIcon", + "openSubmenusOnClick": "openSubmenusOnClick", + "style": "style", + "maxNestingLevel": "maxNestingLevel" + }, + "supports": { + "align": [ "wide", "full" ], + "ariaLabel": true, + "html": false, + "inserter": true, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontStyle": true, + "__experimentalFontWeight": true, + "__experimentalTextTransform": true, + "__experimentalFontFamily": true, + "__experimentalLetterSpacing": true, + "__experimentalTextDecoration": true, + "__experimentalSkipSerialization": [ "textDecoration" ], + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "spacing": { + "blockGap": true, + "units": [ "px", "em", "rem", "vh", "vw" ], + "__experimentalDefaultControls": { + "blockGap": true + } + }, + "layout": { + "allowSwitching": false, + "allowInheriting": false, + "allowVerticalAlignment": false, + "allowSizingOnChildren": true, + "default": { + "type": "flex" + } + }, + "__experimentalStyle": { + "elements": { + "link": { + "color": { + "text": "inherit" + } + } + } + }, + "interactivity": true + }, + "viewScript": "file:./view.min.js", + "editorStyle": "wp-block-navigation-editor", + "style": "wp-block-navigation" +} diff --git a/wp-includes/blocks/navigation/editor-rtl.css b/wp-includes/blocks/navigation/editor-rtl.css new file mode 100644 index 0000000..aeaa09c --- /dev/null +++ b/wp-includes/blocks/navigation/editor-rtl.css @@ -0,0 +1,476 @@ +.editor-styles-wrapper .wp-block-navigation ul{ + margin-bottom:0; + margin-right:0; + margin-top:0; + padding-right:0; +} +.editor-styles-wrapper .wp-block-navigation .wp-block-navigation-item.wp-block{ + margin:revert; +} + +.wp-block-navigation-item__label{ + display:inline; +} +.wp-block-navigation-item,.wp-block-navigation__container{ + background-color:inherit; +} + +.wp-block-navigation:not(.is-selected):not(.has-child-selected) .has-child:hover>.wp-block-navigation__submenu-container{ + opacity:0; + visibility:hidden; +} + +.has-child.has-child-selected>.wp-block-navigation__submenu-container,.has-child.is-selected>.wp-block-navigation__submenu-container{ + display:flex; + opacity:1; + visibility:visible; +} + +.is-dragging-components-draggable .has-child.is-dragging-within>.wp-block-navigation__submenu-container{ + opacity:1; + visibility:visible; +} + +.is-editing>.wp-block-navigation__container{ + display:flex; + flex-direction:column; + opacity:1; + visibility:visible; +} + +.is-dragging-components-draggable .wp-block-navigation-link>.wp-block-navigation__container{ + opacity:1; + visibility:hidden; +} +.is-dragging-components-draggable .wp-block-navigation-link>.wp-block-navigation__container .block-editor-block-draggable-chip-wrapper{ + visibility:visible; +} + +.is-editing>.wp-block-navigation__submenu-container>.block-list-appender{ + display:block; + position:static; + width:100%; +} +.is-editing>.wp-block-navigation__submenu-container>.block-list-appender .block-editor-button-block-appender{ + background:#1e1e1e; + border-radius:2px; + color:#fff; + margin-left:0; + margin-right:auto; + padding:0; + width:24px; +} + +.wp-block-navigation__submenu-container .block-list-appender{ + display:none; +} +.block-library-colors-selector{ + width:auto; +} +.block-library-colors-selector .block-library-colors-selector__toggle{ + display:block; + margin:0 auto; + padding:3px; + width:auto; +} +.block-library-colors-selector .block-library-colors-selector__icon-container{ + align-items:center; + border-radius:4px; + display:flex; + height:30px; + margin:0 auto; + padding:3px; + position:relative; +} +.block-library-colors-selector .block-library-colors-selector__state-selection{ + border-radius:11px; + box-shadow:inset 0 0 0 1px rgba(0,0,0,.2); + height:22px; + line-height:20px; + margin-left:auto; + margin-right:auto; + min-height:22px; + min-width:22px; + padding:2px; + width:22px; +} +.block-library-colors-selector .block-library-colors-selector__state-selection>svg{ + min-width:auto !important; +} +.block-library-colors-selector .block-library-colors-selector__state-selection.has-text-color>svg,.block-library-colors-selector .block-library-colors-selector__state-selection.has-text-color>svg path{ + color:inherit; +} + +.block-library-colors-selector__popover .color-palette-controller-container{ + padding:16px; +} +.block-library-colors-selector__popover .components-base-control__label{ + height:20px; + line-height:20px; +} +.block-library-colors-selector__popover .component-color-indicator{ + float:left; + margin-top:2px; +} +.block-library-colors-selector__popover .components-panel__body-title{ + display:none; +} + +.wp-block-navigation .wp-block+.block-list-appender .block-editor-button-block-appender{ + background-color:#1e1e1e; + color:#fff; +} +.wp-block-navigation .wp-block+.block-list-appender .block-editor-button-block-appender.block-editor-button-block-appender.block-editor-button-block-appender{ + padding:0; +} + +.wp-block-navigation .wp-block .wp-block .block-editor-button-block-appender{ + background-color:transparent; + color:#1e1e1e; +} +@keyframes loadingpulse{ + 0%{ + opacity:1; + } + 50%{ + opacity:.5; + } + to{ + opacity:1; + } +} +.components-placeholder.wp-block-navigation-placeholder{ + background:none; + box-shadow:none; + color:inherit; + min-height:0; + outline:none; + padding:0; +} +.components-placeholder.wp-block-navigation-placeholder .components-placeholder__fieldset{ + font-size:inherit; +} +.components-placeholder.wp-block-navigation-placeholder .components-placeholder__fieldset .components-button{ + margin-bottom:0; +} +.wp-block-navigation.is-selected .components-placeholder.wp-block-navigation-placeholder{ + color:#1e1e1e; +} + +.wp-block-navigation-placeholder__preview{ + align-items:center; + background:transparent; + color:currentColor; + display:flex; + font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; + font-size:13px; + min-width:96px; +} +.wp-block-navigation.is-selected .wp-block-navigation-placeholder__preview{ + display:none; +} +.wp-block-navigation-placeholder__preview:before{ + border:1px dashed; + border-radius:2px; + border-radius:inherit; + bottom:0; + content:""; + display:block; + left:0; + pointer-events:none; + position:absolute; + right:0; + top:0; +} +.wp-block-navigation-placeholder__preview:before:before{ + background:currentColor; + bottom:0; + content:""; + left:0; + opacity:.1; + pointer-events:none; + position:absolute; + right:0; + top:0; +} +.wp-block-navigation-placeholder__preview>svg{ + fill:currentColor; +} + +.wp-block-navigation.is-vertical .is-medium .components-placeholder__fieldset,.wp-block-navigation.is-vertical .is-small .components-placeholder__fieldset{ + min-height:90px; +} + +.wp-block-navigation.is-vertical .is-large .components-placeholder__fieldset{ + min-height:132px; +} + +.wp-block-navigation-placeholder__controls,.wp-block-navigation-placeholder__preview{ + align-items:flex-start; + flex-direction:row; + padding:6px 8px; +} + +.wp-block-navigation-placeholder__controls{ + background-color:#fff; + border-radius:2px; + box-shadow:inset 0 0 0 1px #1e1e1e; + display:none; + float:right; + position:relative; + width:100%; + z-index:1; +} +.wp-block-navigation.is-selected .wp-block-navigation-placeholder__controls{ + display:flex; +} +.is-medium .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator,.is-medium .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator+hr,.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator,.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator+hr{ + display:none; +} +.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions,.wp-block-navigation.is-vertical .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions{ + align-items:flex-start; + flex-direction:column; +} +.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions hr,.wp-block-navigation.is-vertical .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions hr{ + display:none; +} +.wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__icon{ + height:36px; + margin-left:12px; +} + +.wp-block-navigation-placeholder__actions__indicator{ + align-items:center; + display:flex; + height:36px; + justify-content:flex-start; + line-height:0; + margin-right:4px; + padding:0 0 0 6px; +} +.wp-block-navigation-placeholder__actions__indicator svg{ + fill:currentColor; + margin-left:4px; +} + +.wp-block-navigation .components-placeholder.is-medium .components-placeholder__fieldset{ + flex-direction:row !important; +} + +.wp-block-navigation-placeholder__actions{ + align-items:center; + display:flex; + font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; + font-size:13px; + gap:6px; + height:100%; +} +.wp-block-navigation-placeholder__actions .components-dropdown,.wp-block-navigation-placeholder__actions>.components-button{ + margin-left:0; +} +.wp-block-navigation-placeholder__actions.wp-block-navigation-placeholder__actions hr{ + background-color:#1e1e1e; + border:0; + height:100%; + margin:auto 0; + max-height:16px; + min-height:1px; + min-width:1px; +} +@media (min-width:600px){ + .wp-block-navigation__responsive-container:not(.is-menu-open) .components-button.wp-block-navigation__responsive-container-close{ + display:none; + } +} + +.wp-block-navigation__responsive-container.is-menu-open{ + position:fixed; + top:155px; +} +@media (min-width:782px){ + .wp-block-navigation__responsive-container.is-menu-open{ + right:36px; + top:93px; + } +} +@media (min-width:960px){ + .wp-block-navigation__responsive-container.is-menu-open{ + right:160px; + } +} + +@media (min-width:782px){ + .has-fixed-toolbar .wp-block-navigation__responsive-container.is-menu-open{ + top:141px; + } +} + +.is-mobile-preview .wp-block-navigation__responsive-container.is-menu-open,.is-tablet-preview .wp-block-navigation__responsive-container.is-menu-open{ + top:141px; +} + +.is-sidebar-opened .wp-block-navigation__responsive-container.is-menu-open{ + left:280px; +} + +.is-fullscreen-mode .wp-block-navigation__responsive-container.is-menu-open{ + right:0; + top:155px; +} +@media (min-width:782px){ + .is-fullscreen-mode .wp-block-navigation__responsive-container.is-menu-open{ + top:61px; + } + .is-fullscreen-mode .has-fixed-toolbar .wp-block-navigation__responsive-container.is-menu-open{ + top:109px; + } +} +.is-fullscreen-mode .is-mobile-preview .wp-block-navigation__responsive-container.is-menu-open,.is-fullscreen-mode .is-tablet-preview .wp-block-navigation__responsive-container.is-menu-open{ + top:109px; +} + +body.editor-styles-wrapper .wp-block-navigation__responsive-container.is-menu-open{ + bottom:0; + left:0; + right:0; + top:0; +} + +.components-button.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close,.components-button.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open{ + color:inherit; + height:auto; + padding:0; +} + +.components-heading.wp-block-navigation-off-canvas-editor__title{ + margin:0; +} + +.wp-block-navigation-off-canvas-editor__header{ + margin-bottom:8px; +} + +.is-menu-open .wp-block-navigation__responsive-container-content * .block-list-appender{ + margin-top:16px; +} + +@keyframes fadein{ + 0%{ + opacity:0; + } + to{ + opacity:1; + } +} +.wp-block-navigation__loading-indicator-container{ + padding:8px 12px; +} + +.wp-block-navigation .wp-block-navigation__uncontrolled-inner-blocks-loading-indicator{ + margin-top:0; +} + +@keyframes fadeouthalf{ + 0%{ + opacity:1; + } + to{ + opacity:.5; + } +} +.wp-block-navigation-delete-menu-button{ + justify-content:center; + margin-bottom:16px; + width:100%; +} + +.components-button.is-link.wp-block-navigation-manage-menus-button{ + margin-bottom:16px; +} + +.wp-block-navigation__overlay-menu-preview{ + align-items:center; + background-color:#f0f0f0; + display:flex; + height:64px; + justify-content:space-between; + margin-bottom:12px; + padding:0 24px; + width:100%; +} +.wp-block-navigation__overlay-menu-preview.open{ + background-color:#fff; + box-shadow:inset 0 0 0 1px #e0e0e0; + outline:1px solid transparent; +} + +.wp-block-navigation-placeholder__actions hr+hr,.wp-block-navigation__toolbar-menu-selector.components-toolbar-group:empty{ + display:none; +} +.wp-block-navigation__navigation-selector{ + margin-bottom:16px; + width:100%; +} + +.wp-block-navigation__navigation-selector-button{ + border:1px solid; + justify-content:space-between; + width:100%; +} + +.wp-block-navigation__navigation-selector-button__icon{ + flex:0 0 auto; +} + +.wp-block-navigation__navigation-selector-button__label{ + flex:0 1 auto; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; +} + +.wp-block-navigation__navigation-selector-button--createnew{ + border:1px solid; + margin-bottom:16px; + width:100%; +} + +.wp-block-navigation__responsive-container-open.components-button{ + opacity:1; +} + +.wp-block-navigation__menu-inspector-controls{ + overflow-x:auto; + scrollbar-color:transparent transparent; + scrollbar-gutter:stable both-edges; + scrollbar-width:thin; + will-change:transform; +} +.wp-block-navigation__menu-inspector-controls::-webkit-scrollbar{ + height:12px; + width:12px; +} +.wp-block-navigation__menu-inspector-controls::-webkit-scrollbar-track{ + background-color:transparent; +} +.wp-block-navigation__menu-inspector-controls::-webkit-scrollbar-thumb{ + background-clip:padding-box; + background-color:transparent; + border:3px solid transparent; + border-radius:8px; +} +.wp-block-navigation__menu-inspector-controls:focus-within::-webkit-scrollbar-thumb,.wp-block-navigation__menu-inspector-controls:focus::-webkit-scrollbar-thumb,.wp-block-navigation__menu-inspector-controls:hover::-webkit-scrollbar-thumb{ + background-color:#949494; +} +.wp-block-navigation__menu-inspector-controls:focus,.wp-block-navigation__menu-inspector-controls:focus-within,.wp-block-navigation__menu-inspector-controls:hover{ + scrollbar-color:#949494 transparent; +} +@media (hover:none){ + .wp-block-navigation__menu-inspector-controls{ + scrollbar-color:#949494 transparent; + } +} + +.wp-block-navigation__menu-inspector-controls__empty-message{ + margin-right:24px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation/editor-rtl.min.css b/wp-includes/blocks/navigation/editor-rtl.min.css new file mode 100644 index 0000000..c5618b8 --- /dev/null +++ b/wp-includes/blocks/navigation/editor-rtl.min.css @@ -0,0 +1 @@ +.editor-styles-wrapper .wp-block-navigation ul{margin-bottom:0;margin-right:0;margin-top:0;padding-right:0}.editor-styles-wrapper .wp-block-navigation .wp-block-navigation-item.wp-block{margin:revert}.wp-block-navigation-item__label{display:inline}.wp-block-navigation-item,.wp-block-navigation__container{background-color:inherit}.wp-block-navigation:not(.is-selected):not(.has-child-selected) .has-child:hover>.wp-block-navigation__submenu-container{opacity:0;visibility:hidden}.has-child.has-child-selected>.wp-block-navigation__submenu-container,.has-child.is-selected>.wp-block-navigation__submenu-container{display:flex;opacity:1;visibility:visible}.is-dragging-components-draggable .has-child.is-dragging-within>.wp-block-navigation__submenu-container{opacity:1;visibility:visible}.is-editing>.wp-block-navigation__container{display:flex;flex-direction:column;opacity:1;visibility:visible}.is-dragging-components-draggable .wp-block-navigation-link>.wp-block-navigation__container{opacity:1;visibility:hidden}.is-dragging-components-draggable .wp-block-navigation-link>.wp-block-navigation__container .block-editor-block-draggable-chip-wrapper{visibility:visible}.is-editing>.wp-block-navigation__submenu-container>.block-list-appender{display:block;position:static;width:100%}.is-editing>.wp-block-navigation__submenu-container>.block-list-appender .block-editor-button-block-appender{background:#1e1e1e;border-radius:2px;color:#fff;margin-left:0;margin-right:auto;padding:0;width:24px}.wp-block-navigation__submenu-container .block-list-appender{display:none}.block-library-colors-selector{width:auto}.block-library-colors-selector .block-library-colors-selector__toggle{display:block;margin:0 auto;padding:3px;width:auto}.block-library-colors-selector .block-library-colors-selector__icon-container{align-items:center;border-radius:4px;display:flex;height:30px;margin:0 auto;padding:3px;position:relative}.block-library-colors-selector .block-library-colors-selector__state-selection{border-radius:11px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2);height:22px;line-height:20px;margin-left:auto;margin-right:auto;min-height:22px;min-width:22px;padding:2px;width:22px}.block-library-colors-selector .block-library-colors-selector__state-selection>svg{min-width:auto!important}.block-library-colors-selector .block-library-colors-selector__state-selection.has-text-color>svg,.block-library-colors-selector .block-library-colors-selector__state-selection.has-text-color>svg path{color:inherit}.block-library-colors-selector__popover .color-palette-controller-container{padding:16px}.block-library-colors-selector__popover .components-base-control__label{height:20px;line-height:20px}.block-library-colors-selector__popover .component-color-indicator{float:left;margin-top:2px}.block-library-colors-selector__popover .components-panel__body-title{display:none}.wp-block-navigation .wp-block+.block-list-appender .block-editor-button-block-appender{background-color:#1e1e1e;color:#fff}.wp-block-navigation .wp-block+.block-list-appender .block-editor-button-block-appender.block-editor-button-block-appender.block-editor-button-block-appender{padding:0}.wp-block-navigation .wp-block .wp-block .block-editor-button-block-appender{background-color:transparent;color:#1e1e1e}@keyframes loadingpulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.components-placeholder.wp-block-navigation-placeholder{background:none;box-shadow:none;color:inherit;min-height:0;outline:none;padding:0}.components-placeholder.wp-block-navigation-placeholder .components-placeholder__fieldset{font-size:inherit}.components-placeholder.wp-block-navigation-placeholder .components-placeholder__fieldset .components-button{margin-bottom:0}.wp-block-navigation.is-selected .components-placeholder.wp-block-navigation-placeholder{color:#1e1e1e}.wp-block-navigation-placeholder__preview{align-items:center;background:transparent;color:currentColor;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;min-width:96px}.wp-block-navigation.is-selected .wp-block-navigation-placeholder__preview{display:none}.wp-block-navigation-placeholder__preview:before{border:1px dashed;border-radius:2px;border-radius:inherit;bottom:0;content:"";display:block;left:0;pointer-events:none;position:absolute;right:0;top:0}.wp-block-navigation-placeholder__preview:before:before{background:currentColor;bottom:0;content:"";left:0;opacity:.1;pointer-events:none;position:absolute;right:0;top:0}.wp-block-navigation-placeholder__preview>svg{fill:currentColor}.wp-block-navigation.is-vertical .is-medium .components-placeholder__fieldset,.wp-block-navigation.is-vertical .is-small .components-placeholder__fieldset{min-height:90px}.wp-block-navigation.is-vertical .is-large .components-placeholder__fieldset{min-height:132px}.wp-block-navigation-placeholder__controls,.wp-block-navigation-placeholder__preview{align-items:flex-start;flex-direction:row;padding:6px 8px}.wp-block-navigation-placeholder__controls{background-color:#fff;border-radius:2px;box-shadow:inset 0 0 0 1px #1e1e1e;display:none;float:right;position:relative;width:100%;z-index:1}.wp-block-navigation.is-selected .wp-block-navigation-placeholder__controls{display:flex}.is-medium .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator,.is-medium .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator+hr,.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator,.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator+hr{display:none}.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions,.wp-block-navigation.is-vertical .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions{align-items:flex-start;flex-direction:column}.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions hr,.wp-block-navigation.is-vertical .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions hr{display:none}.wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__icon{height:36px;margin-left:12px}.wp-block-navigation-placeholder__actions__indicator{align-items:center;display:flex;height:36px;justify-content:flex-start;line-height:0;margin-right:4px;padding:0 0 0 6px}.wp-block-navigation-placeholder__actions__indicator svg{fill:currentColor;margin-left:4px}.wp-block-navigation .components-placeholder.is-medium .components-placeholder__fieldset{flex-direction:row!important}.wp-block-navigation-placeholder__actions{align-items:center;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;gap:6px;height:100%}.wp-block-navigation-placeholder__actions .components-dropdown,.wp-block-navigation-placeholder__actions>.components-button{margin-left:0}.wp-block-navigation-placeholder__actions.wp-block-navigation-placeholder__actions hr{background-color:#1e1e1e;border:0;height:100%;margin:auto 0;max-height:16px;min-height:1px;min-width:1px}@media (min-width:600px){.wp-block-navigation__responsive-container:not(.is-menu-open) .components-button.wp-block-navigation__responsive-container-close{display:none}}.wp-block-navigation__responsive-container.is-menu-open{position:fixed;top:155px}@media (min-width:782px){.wp-block-navigation__responsive-container.is-menu-open{right:36px;top:93px}}@media (min-width:960px){.wp-block-navigation__responsive-container.is-menu-open{right:160px}}@media (min-width:782px){.has-fixed-toolbar .wp-block-navigation__responsive-container.is-menu-open{top:141px}}.is-mobile-preview .wp-block-navigation__responsive-container.is-menu-open,.is-tablet-preview .wp-block-navigation__responsive-container.is-menu-open{top:141px}.is-sidebar-opened .wp-block-navigation__responsive-container.is-menu-open{left:280px}.is-fullscreen-mode .wp-block-navigation__responsive-container.is-menu-open{right:0;top:155px}@media (min-width:782px){.is-fullscreen-mode .wp-block-navigation__responsive-container.is-menu-open{top:61px}.is-fullscreen-mode .has-fixed-toolbar .wp-block-navigation__responsive-container.is-menu-open{top:109px}}.is-fullscreen-mode .is-mobile-preview .wp-block-navigation__responsive-container.is-menu-open,.is-fullscreen-mode .is-tablet-preview .wp-block-navigation__responsive-container.is-menu-open{top:109px}body.editor-styles-wrapper .wp-block-navigation__responsive-container.is-menu-open{bottom:0;left:0;right:0;top:0}.components-button.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close,.components-button.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open{color:inherit;height:auto;padding:0}.components-heading.wp-block-navigation-off-canvas-editor__title{margin:0}.wp-block-navigation-off-canvas-editor__header{margin-bottom:8px}.is-menu-open .wp-block-navigation__responsive-container-content * .block-list-appender{margin-top:16px}@keyframes fadein{0%{opacity:0}to{opacity:1}}.wp-block-navigation__loading-indicator-container{padding:8px 12px}.wp-block-navigation .wp-block-navigation__uncontrolled-inner-blocks-loading-indicator{margin-top:0}@keyframes fadeouthalf{0%{opacity:1}to{opacity:.5}}.wp-block-navigation-delete-menu-button{justify-content:center;margin-bottom:16px;width:100%}.components-button.is-link.wp-block-navigation-manage-menus-button{margin-bottom:16px}.wp-block-navigation__overlay-menu-preview{align-items:center;background-color:#f0f0f0;display:flex;height:64px;justify-content:space-between;margin-bottom:12px;padding:0 24px;width:100%}.wp-block-navigation__overlay-menu-preview.open{background-color:#fff;box-shadow:inset 0 0 0 1px #e0e0e0;outline:1px solid transparent}.wp-block-navigation-placeholder__actions hr+hr,.wp-block-navigation__toolbar-menu-selector.components-toolbar-group:empty{display:none}.wp-block-navigation__navigation-selector{margin-bottom:16px;width:100%}.wp-block-navigation__navigation-selector-button{border:1px solid;justify-content:space-between;width:100%}.wp-block-navigation__navigation-selector-button__icon{flex:0 0 auto}.wp-block-navigation__navigation-selector-button__label{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wp-block-navigation__navigation-selector-button--createnew{border:1px solid;margin-bottom:16px;width:100%}.wp-block-navigation__responsive-container-open.components-button{opacity:1}.wp-block-navigation__menu-inspector-controls{overflow-x:auto;scrollbar-color:transparent transparent;scrollbar-gutter:stable both-edges;scrollbar-width:thin;will-change:transform}.wp-block-navigation__menu-inspector-controls::-webkit-scrollbar{height:12px;width:12px}.wp-block-navigation__menu-inspector-controls::-webkit-scrollbar-track{background-color:transparent}.wp-block-navigation__menu-inspector-controls::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:transparent;border:3px solid transparent;border-radius:8px}.wp-block-navigation__menu-inspector-controls:focus-within::-webkit-scrollbar-thumb,.wp-block-navigation__menu-inspector-controls:focus::-webkit-scrollbar-thumb,.wp-block-navigation__menu-inspector-controls:hover::-webkit-scrollbar-thumb{background-color:#949494}.wp-block-navigation__menu-inspector-controls:focus,.wp-block-navigation__menu-inspector-controls:focus-within,.wp-block-navigation__menu-inspector-controls:hover{scrollbar-color:#949494 transparent}@media (hover:none){.wp-block-navigation__menu-inspector-controls{scrollbar-color:#949494 transparent}}.wp-block-navigation__menu-inspector-controls__empty-message{margin-right:24px}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation/editor.css b/wp-includes/blocks/navigation/editor.css new file mode 100644 index 0000000..581c748 --- /dev/null +++ b/wp-includes/blocks/navigation/editor.css @@ -0,0 +1,476 @@ +.editor-styles-wrapper .wp-block-navigation ul{ + margin-bottom:0; + margin-left:0; + margin-top:0; + padding-left:0; +} +.editor-styles-wrapper .wp-block-navigation .wp-block-navigation-item.wp-block{ + margin:revert; +} + +.wp-block-navigation-item__label{ + display:inline; +} +.wp-block-navigation-item,.wp-block-navigation__container{ + background-color:inherit; +} + +.wp-block-navigation:not(.is-selected):not(.has-child-selected) .has-child:hover>.wp-block-navigation__submenu-container{ + opacity:0; + visibility:hidden; +} + +.has-child.has-child-selected>.wp-block-navigation__submenu-container,.has-child.is-selected>.wp-block-navigation__submenu-container{ + display:flex; + opacity:1; + visibility:visible; +} + +.is-dragging-components-draggable .has-child.is-dragging-within>.wp-block-navigation__submenu-container{ + opacity:1; + visibility:visible; +} + +.is-editing>.wp-block-navigation__container{ + display:flex; + flex-direction:column; + opacity:1; + visibility:visible; +} + +.is-dragging-components-draggable .wp-block-navigation-link>.wp-block-navigation__container{ + opacity:1; + visibility:hidden; +} +.is-dragging-components-draggable .wp-block-navigation-link>.wp-block-navigation__container .block-editor-block-draggable-chip-wrapper{ + visibility:visible; +} + +.is-editing>.wp-block-navigation__submenu-container>.block-list-appender{ + display:block; + position:static; + width:100%; +} +.is-editing>.wp-block-navigation__submenu-container>.block-list-appender .block-editor-button-block-appender{ + background:#1e1e1e; + border-radius:2px; + color:#fff; + margin-left:auto; + margin-right:0; + padding:0; + width:24px; +} + +.wp-block-navigation__submenu-container .block-list-appender{ + display:none; +} +.block-library-colors-selector{ + width:auto; +} +.block-library-colors-selector .block-library-colors-selector__toggle{ + display:block; + margin:0 auto; + padding:3px; + width:auto; +} +.block-library-colors-selector .block-library-colors-selector__icon-container{ + align-items:center; + border-radius:4px; + display:flex; + height:30px; + margin:0 auto; + padding:3px; + position:relative; +} +.block-library-colors-selector .block-library-colors-selector__state-selection{ + border-radius:11px; + box-shadow:inset 0 0 0 1px rgba(0,0,0,.2); + height:22px; + line-height:20px; + margin-left:auto; + margin-right:auto; + min-height:22px; + min-width:22px; + padding:2px; + width:22px; +} +.block-library-colors-selector .block-library-colors-selector__state-selection>svg{ + min-width:auto !important; +} +.block-library-colors-selector .block-library-colors-selector__state-selection.has-text-color>svg,.block-library-colors-selector .block-library-colors-selector__state-selection.has-text-color>svg path{ + color:inherit; +} + +.block-library-colors-selector__popover .color-palette-controller-container{ + padding:16px; +} +.block-library-colors-selector__popover .components-base-control__label{ + height:20px; + line-height:20px; +} +.block-library-colors-selector__popover .component-color-indicator{ + float:right; + margin-top:2px; +} +.block-library-colors-selector__popover .components-panel__body-title{ + display:none; +} + +.wp-block-navigation .wp-block+.block-list-appender .block-editor-button-block-appender{ + background-color:#1e1e1e; + color:#fff; +} +.wp-block-navigation .wp-block+.block-list-appender .block-editor-button-block-appender.block-editor-button-block-appender.block-editor-button-block-appender{ + padding:0; +} + +.wp-block-navigation .wp-block .wp-block .block-editor-button-block-appender{ + background-color:transparent; + color:#1e1e1e; +} +@keyframes loadingpulse{ + 0%{ + opacity:1; + } + 50%{ + opacity:.5; + } + to{ + opacity:1; + } +} +.components-placeholder.wp-block-navigation-placeholder{ + background:none; + box-shadow:none; + color:inherit; + min-height:0; + outline:none; + padding:0; +} +.components-placeholder.wp-block-navigation-placeholder .components-placeholder__fieldset{ + font-size:inherit; +} +.components-placeholder.wp-block-navigation-placeholder .components-placeholder__fieldset .components-button{ + margin-bottom:0; +} +.wp-block-navigation.is-selected .components-placeholder.wp-block-navigation-placeholder{ + color:#1e1e1e; +} + +.wp-block-navigation-placeholder__preview{ + align-items:center; + background:transparent; + color:currentColor; + display:flex; + font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; + font-size:13px; + min-width:96px; +} +.wp-block-navigation.is-selected .wp-block-navigation-placeholder__preview{ + display:none; +} +.wp-block-navigation-placeholder__preview:before{ + border:1px dashed; + border-radius:2px; + border-radius:inherit; + bottom:0; + content:""; + display:block; + left:0; + pointer-events:none; + position:absolute; + right:0; + top:0; +} +.wp-block-navigation-placeholder__preview:before:before{ + background:currentColor; + bottom:0; + content:""; + left:0; + opacity:.1; + pointer-events:none; + position:absolute; + right:0; + top:0; +} +.wp-block-navigation-placeholder__preview>svg{ + fill:currentColor; +} + +.wp-block-navigation.is-vertical .is-medium .components-placeholder__fieldset,.wp-block-navigation.is-vertical .is-small .components-placeholder__fieldset{ + min-height:90px; +} + +.wp-block-navigation.is-vertical .is-large .components-placeholder__fieldset{ + min-height:132px; +} + +.wp-block-navigation-placeholder__controls,.wp-block-navigation-placeholder__preview{ + align-items:flex-start; + flex-direction:row; + padding:6px 8px; +} + +.wp-block-navigation-placeholder__controls{ + background-color:#fff; + border-radius:2px; + box-shadow:inset 0 0 0 1px #1e1e1e; + display:none; + float:left; + position:relative; + width:100%; + z-index:1; +} +.wp-block-navigation.is-selected .wp-block-navigation-placeholder__controls{ + display:flex; +} +.is-medium .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator,.is-medium .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator+hr,.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator,.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator+hr{ + display:none; +} +.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions,.wp-block-navigation.is-vertical .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions{ + align-items:flex-start; + flex-direction:column; +} +.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions hr,.wp-block-navigation.is-vertical .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions hr{ + display:none; +} +.wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__icon{ + height:36px; + margin-right:12px; +} + +.wp-block-navigation-placeholder__actions__indicator{ + align-items:center; + display:flex; + height:36px; + justify-content:flex-start; + line-height:0; + margin-left:4px; + padding:0 6px 0 0; +} +.wp-block-navigation-placeholder__actions__indicator svg{ + fill:currentColor; + margin-right:4px; +} + +.wp-block-navigation .components-placeholder.is-medium .components-placeholder__fieldset{ + flex-direction:row !important; +} + +.wp-block-navigation-placeholder__actions{ + align-items:center; + display:flex; + font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; + font-size:13px; + gap:6px; + height:100%; +} +.wp-block-navigation-placeholder__actions .components-dropdown,.wp-block-navigation-placeholder__actions>.components-button{ + margin-right:0; +} +.wp-block-navigation-placeholder__actions.wp-block-navigation-placeholder__actions hr{ + background-color:#1e1e1e; + border:0; + height:100%; + margin:auto 0; + max-height:16px; + min-height:1px; + min-width:1px; +} +@media (min-width:600px){ + .wp-block-navigation__responsive-container:not(.is-menu-open) .components-button.wp-block-navigation__responsive-container-close{ + display:none; + } +} + +.wp-block-navigation__responsive-container.is-menu-open{ + position:fixed; + top:155px; +} +@media (min-width:782px){ + .wp-block-navigation__responsive-container.is-menu-open{ + left:36px; + top:93px; + } +} +@media (min-width:960px){ + .wp-block-navigation__responsive-container.is-menu-open{ + left:160px; + } +} + +@media (min-width:782px){ + .has-fixed-toolbar .wp-block-navigation__responsive-container.is-menu-open{ + top:141px; + } +} + +.is-mobile-preview .wp-block-navigation__responsive-container.is-menu-open,.is-tablet-preview .wp-block-navigation__responsive-container.is-menu-open{ + top:141px; +} + +.is-sidebar-opened .wp-block-navigation__responsive-container.is-menu-open{ + right:280px; +} + +.is-fullscreen-mode .wp-block-navigation__responsive-container.is-menu-open{ + left:0; + top:155px; +} +@media (min-width:782px){ + .is-fullscreen-mode .wp-block-navigation__responsive-container.is-menu-open{ + top:61px; + } + .is-fullscreen-mode .has-fixed-toolbar .wp-block-navigation__responsive-container.is-menu-open{ + top:109px; + } +} +.is-fullscreen-mode .is-mobile-preview .wp-block-navigation__responsive-container.is-menu-open,.is-fullscreen-mode .is-tablet-preview .wp-block-navigation__responsive-container.is-menu-open{ + top:109px; +} + +body.editor-styles-wrapper .wp-block-navigation__responsive-container.is-menu-open{ + bottom:0; + left:0; + right:0; + top:0; +} + +.components-button.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close,.components-button.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open{ + color:inherit; + height:auto; + padding:0; +} + +.components-heading.wp-block-navigation-off-canvas-editor__title{ + margin:0; +} + +.wp-block-navigation-off-canvas-editor__header{ + margin-bottom:8px; +} + +.is-menu-open .wp-block-navigation__responsive-container-content * .block-list-appender{ + margin-top:16px; +} + +@keyframes fadein{ + 0%{ + opacity:0; + } + to{ + opacity:1; + } +} +.wp-block-navigation__loading-indicator-container{ + padding:8px 12px; +} + +.wp-block-navigation .wp-block-navigation__uncontrolled-inner-blocks-loading-indicator{ + margin-top:0; +} + +@keyframes fadeouthalf{ + 0%{ + opacity:1; + } + to{ + opacity:.5; + } +} +.wp-block-navigation-delete-menu-button{ + justify-content:center; + margin-bottom:16px; + width:100%; +} + +.components-button.is-link.wp-block-navigation-manage-menus-button{ + margin-bottom:16px; +} + +.wp-block-navigation__overlay-menu-preview{ + align-items:center; + background-color:#f0f0f0; + display:flex; + height:64px; + justify-content:space-between; + margin-bottom:12px; + padding:0 24px; + width:100%; +} +.wp-block-navigation__overlay-menu-preview.open{ + background-color:#fff; + box-shadow:inset 0 0 0 1px #e0e0e0; + outline:1px solid transparent; +} + +.wp-block-navigation-placeholder__actions hr+hr,.wp-block-navigation__toolbar-menu-selector.components-toolbar-group:empty{ + display:none; +} +.wp-block-navigation__navigation-selector{ + margin-bottom:16px; + width:100%; +} + +.wp-block-navigation__navigation-selector-button{ + border:1px solid; + justify-content:space-between; + width:100%; +} + +.wp-block-navigation__navigation-selector-button__icon{ + flex:0 0 auto; +} + +.wp-block-navigation__navigation-selector-button__label{ + flex:0 1 auto; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; +} + +.wp-block-navigation__navigation-selector-button--createnew{ + border:1px solid; + margin-bottom:16px; + width:100%; +} + +.wp-block-navigation__responsive-container-open.components-button{ + opacity:1; +} + +.wp-block-navigation__menu-inspector-controls{ + overflow-x:auto; + scrollbar-color:transparent transparent; + scrollbar-gutter:stable both-edges; + scrollbar-width:thin; + will-change:transform; +} +.wp-block-navigation__menu-inspector-controls::-webkit-scrollbar{ + height:12px; + width:12px; +} +.wp-block-navigation__menu-inspector-controls::-webkit-scrollbar-track{ + background-color:transparent; +} +.wp-block-navigation__menu-inspector-controls::-webkit-scrollbar-thumb{ + background-clip:padding-box; + background-color:transparent; + border:3px solid transparent; + border-radius:8px; +} +.wp-block-navigation__menu-inspector-controls:focus-within::-webkit-scrollbar-thumb,.wp-block-navigation__menu-inspector-controls:focus::-webkit-scrollbar-thumb,.wp-block-navigation__menu-inspector-controls:hover::-webkit-scrollbar-thumb{ + background-color:#949494; +} +.wp-block-navigation__menu-inspector-controls:focus,.wp-block-navigation__menu-inspector-controls:focus-within,.wp-block-navigation__menu-inspector-controls:hover{ + scrollbar-color:#949494 transparent; +} +@media (hover:none){ + .wp-block-navigation__menu-inspector-controls{ + scrollbar-color:#949494 transparent; + } +} + +.wp-block-navigation__menu-inspector-controls__empty-message{ + margin-left:24px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation/editor.min.css b/wp-includes/blocks/navigation/editor.min.css new file mode 100644 index 0000000..d601f57 --- /dev/null +++ b/wp-includes/blocks/navigation/editor.min.css @@ -0,0 +1 @@ +.editor-styles-wrapper .wp-block-navigation ul{margin-bottom:0;margin-left:0;margin-top:0;padding-left:0}.editor-styles-wrapper .wp-block-navigation .wp-block-navigation-item.wp-block{margin:revert}.wp-block-navigation-item__label{display:inline}.wp-block-navigation-item,.wp-block-navigation__container{background-color:inherit}.wp-block-navigation:not(.is-selected):not(.has-child-selected) .has-child:hover>.wp-block-navigation__submenu-container{opacity:0;visibility:hidden}.has-child.has-child-selected>.wp-block-navigation__submenu-container,.has-child.is-selected>.wp-block-navigation__submenu-container{display:flex;opacity:1;visibility:visible}.is-dragging-components-draggable .has-child.is-dragging-within>.wp-block-navigation__submenu-container{opacity:1;visibility:visible}.is-editing>.wp-block-navigation__container{display:flex;flex-direction:column;opacity:1;visibility:visible}.is-dragging-components-draggable .wp-block-navigation-link>.wp-block-navigation__container{opacity:1;visibility:hidden}.is-dragging-components-draggable .wp-block-navigation-link>.wp-block-navigation__container .block-editor-block-draggable-chip-wrapper{visibility:visible}.is-editing>.wp-block-navigation__submenu-container>.block-list-appender{display:block;position:static;width:100%}.is-editing>.wp-block-navigation__submenu-container>.block-list-appender .block-editor-button-block-appender{background:#1e1e1e;border-radius:2px;color:#fff;margin-left:auto;margin-right:0;padding:0;width:24px}.wp-block-navigation__submenu-container .block-list-appender{display:none}.block-library-colors-selector{width:auto}.block-library-colors-selector .block-library-colors-selector__toggle{display:block;margin:0 auto;padding:3px;width:auto}.block-library-colors-selector .block-library-colors-selector__icon-container{align-items:center;border-radius:4px;display:flex;height:30px;margin:0 auto;padding:3px;position:relative}.block-library-colors-selector .block-library-colors-selector__state-selection{border-radius:11px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2);height:22px;line-height:20px;margin-left:auto;margin-right:auto;min-height:22px;min-width:22px;padding:2px;width:22px}.block-library-colors-selector .block-library-colors-selector__state-selection>svg{min-width:auto!important}.block-library-colors-selector .block-library-colors-selector__state-selection.has-text-color>svg,.block-library-colors-selector .block-library-colors-selector__state-selection.has-text-color>svg path{color:inherit}.block-library-colors-selector__popover .color-palette-controller-container{padding:16px}.block-library-colors-selector__popover .components-base-control__label{height:20px;line-height:20px}.block-library-colors-selector__popover .component-color-indicator{float:right;margin-top:2px}.block-library-colors-selector__popover .components-panel__body-title{display:none}.wp-block-navigation .wp-block+.block-list-appender .block-editor-button-block-appender{background-color:#1e1e1e;color:#fff}.wp-block-navigation .wp-block+.block-list-appender .block-editor-button-block-appender.block-editor-button-block-appender.block-editor-button-block-appender{padding:0}.wp-block-navigation .wp-block .wp-block .block-editor-button-block-appender{background-color:transparent;color:#1e1e1e}@keyframes loadingpulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.components-placeholder.wp-block-navigation-placeholder{background:none;box-shadow:none;color:inherit;min-height:0;outline:none;padding:0}.components-placeholder.wp-block-navigation-placeholder .components-placeholder__fieldset{font-size:inherit}.components-placeholder.wp-block-navigation-placeholder .components-placeholder__fieldset .components-button{margin-bottom:0}.wp-block-navigation.is-selected .components-placeholder.wp-block-navigation-placeholder{color:#1e1e1e}.wp-block-navigation-placeholder__preview{align-items:center;background:transparent;color:currentColor;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;min-width:96px}.wp-block-navigation.is-selected .wp-block-navigation-placeholder__preview{display:none}.wp-block-navigation-placeholder__preview:before{border:1px dashed;border-radius:2px;border-radius:inherit;bottom:0;content:"";display:block;left:0;pointer-events:none;position:absolute;right:0;top:0}.wp-block-navigation-placeholder__preview:before:before{background:currentColor;bottom:0;content:"";left:0;opacity:.1;pointer-events:none;position:absolute;right:0;top:0}.wp-block-navigation-placeholder__preview>svg{fill:currentColor}.wp-block-navigation.is-vertical .is-medium .components-placeholder__fieldset,.wp-block-navigation.is-vertical .is-small .components-placeholder__fieldset{min-height:90px}.wp-block-navigation.is-vertical .is-large .components-placeholder__fieldset{min-height:132px}.wp-block-navigation-placeholder__controls,.wp-block-navigation-placeholder__preview{align-items:flex-start;flex-direction:row;padding:6px 8px}.wp-block-navigation-placeholder__controls{background-color:#fff;border-radius:2px;box-shadow:inset 0 0 0 1px #1e1e1e;display:none;float:left;position:relative;width:100%;z-index:1}.wp-block-navigation.is-selected .wp-block-navigation-placeholder__controls{display:flex}.is-medium .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator,.is-medium .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator+hr,.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator,.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions__indicator+hr{display:none}.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions,.wp-block-navigation.is-vertical .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions{align-items:flex-start;flex-direction:column}.is-small .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions hr,.wp-block-navigation.is-vertical .wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__actions hr{display:none}.wp-block-navigation-placeholder__controls .wp-block-navigation-placeholder__icon{height:36px;margin-right:12px}.wp-block-navigation-placeholder__actions__indicator{align-items:center;display:flex;height:36px;justify-content:flex-start;line-height:0;margin-left:4px;padding:0 6px 0 0}.wp-block-navigation-placeholder__actions__indicator svg{fill:currentColor;margin-right:4px}.wp-block-navigation .components-placeholder.is-medium .components-placeholder__fieldset{flex-direction:row!important}.wp-block-navigation-placeholder__actions{align-items:center;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;gap:6px;height:100%}.wp-block-navigation-placeholder__actions .components-dropdown,.wp-block-navigation-placeholder__actions>.components-button{margin-right:0}.wp-block-navigation-placeholder__actions.wp-block-navigation-placeholder__actions hr{background-color:#1e1e1e;border:0;height:100%;margin:auto 0;max-height:16px;min-height:1px;min-width:1px}@media (min-width:600px){.wp-block-navigation__responsive-container:not(.is-menu-open) .components-button.wp-block-navigation__responsive-container-close{display:none}}.wp-block-navigation__responsive-container.is-menu-open{position:fixed;top:155px}@media (min-width:782px){.wp-block-navigation__responsive-container.is-menu-open{left:36px;top:93px}}@media (min-width:960px){.wp-block-navigation__responsive-container.is-menu-open{left:160px}}@media (min-width:782px){.has-fixed-toolbar .wp-block-navigation__responsive-container.is-menu-open{top:141px}}.is-mobile-preview .wp-block-navigation__responsive-container.is-menu-open,.is-tablet-preview .wp-block-navigation__responsive-container.is-menu-open{top:141px}.is-sidebar-opened .wp-block-navigation__responsive-container.is-menu-open{right:280px}.is-fullscreen-mode .wp-block-navigation__responsive-container.is-menu-open{left:0;top:155px}@media (min-width:782px){.is-fullscreen-mode .wp-block-navigation__responsive-container.is-menu-open{top:61px}.is-fullscreen-mode .has-fixed-toolbar .wp-block-navigation__responsive-container.is-menu-open{top:109px}}.is-fullscreen-mode .is-mobile-preview .wp-block-navigation__responsive-container.is-menu-open,.is-fullscreen-mode .is-tablet-preview .wp-block-navigation__responsive-container.is-menu-open{top:109px}body.editor-styles-wrapper .wp-block-navigation__responsive-container.is-menu-open{bottom:0;left:0;right:0;top:0}.components-button.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close,.components-button.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open{color:inherit;height:auto;padding:0}.components-heading.wp-block-navigation-off-canvas-editor__title{margin:0}.wp-block-navigation-off-canvas-editor__header{margin-bottom:8px}.is-menu-open .wp-block-navigation__responsive-container-content * .block-list-appender{margin-top:16px}@keyframes fadein{0%{opacity:0}to{opacity:1}}.wp-block-navigation__loading-indicator-container{padding:8px 12px}.wp-block-navigation .wp-block-navigation__uncontrolled-inner-blocks-loading-indicator{margin-top:0}@keyframes fadeouthalf{0%{opacity:1}to{opacity:.5}}.wp-block-navigation-delete-menu-button{justify-content:center;margin-bottom:16px;width:100%}.components-button.is-link.wp-block-navigation-manage-menus-button{margin-bottom:16px}.wp-block-navigation__overlay-menu-preview{align-items:center;background-color:#f0f0f0;display:flex;height:64px;justify-content:space-between;margin-bottom:12px;padding:0 24px;width:100%}.wp-block-navigation__overlay-menu-preview.open{background-color:#fff;box-shadow:inset 0 0 0 1px #e0e0e0;outline:1px solid transparent}.wp-block-navigation-placeholder__actions hr+hr,.wp-block-navigation__toolbar-menu-selector.components-toolbar-group:empty{display:none}.wp-block-navigation__navigation-selector{margin-bottom:16px;width:100%}.wp-block-navigation__navigation-selector-button{border:1px solid;justify-content:space-between;width:100%}.wp-block-navigation__navigation-selector-button__icon{flex:0 0 auto}.wp-block-navigation__navigation-selector-button__label{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wp-block-navigation__navigation-selector-button--createnew{border:1px solid;margin-bottom:16px;width:100%}.wp-block-navigation__responsive-container-open.components-button{opacity:1}.wp-block-navigation__menu-inspector-controls{overflow-x:auto;scrollbar-color:transparent transparent;scrollbar-gutter:stable both-edges;scrollbar-width:thin;will-change:transform}.wp-block-navigation__menu-inspector-controls::-webkit-scrollbar{height:12px;width:12px}.wp-block-navigation__menu-inspector-controls::-webkit-scrollbar-track{background-color:transparent}.wp-block-navigation__menu-inspector-controls::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:transparent;border:3px solid transparent;border-radius:8px}.wp-block-navigation__menu-inspector-controls:focus-within::-webkit-scrollbar-thumb,.wp-block-navigation__menu-inspector-controls:focus::-webkit-scrollbar-thumb,.wp-block-navigation__menu-inspector-controls:hover::-webkit-scrollbar-thumb{background-color:#949494}.wp-block-navigation__menu-inspector-controls:focus,.wp-block-navigation__menu-inspector-controls:focus-within,.wp-block-navigation__menu-inspector-controls:hover{scrollbar-color:#949494 transparent}@media (hover:none){.wp-block-navigation__menu-inspector-controls{scrollbar-color:#949494 transparent}}.wp-block-navigation__menu-inspector-controls__empty-message{margin-left:24px}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation/style-rtl.css b/wp-includes/blocks/navigation/style-rtl.css new file mode 100644 index 0000000..8d9606d --- /dev/null +++ b/wp-includes/blocks/navigation/style-rtl.css @@ -0,0 +1,465 @@ +.wp-block-navigation{ + --navigation-layout-justification-setting:flex-start; + --navigation-layout-direction:row; + --navigation-layout-wrap:wrap; + --navigation-layout-justify:flex-start; + --navigation-layout-align:center; + position:relative; +} +.wp-block-navigation ul{ + margin-bottom:0; + margin-right:0; + margin-top:0; + padding-right:0; +} +.wp-block-navigation ul,.wp-block-navigation ul li{ + list-style:none; + padding:0; +} +.wp-block-navigation .wp-block-navigation-item{ + align-items:center; + background-color:inherit; + display:flex; + position:relative; +} +.wp-block-navigation .wp-block-navigation-item .wp-block-navigation__submenu-container:empty{ + display:none; +} +.wp-block-navigation .wp-block-navigation-item__content{ + display:block; +} +.wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content{ + color:inherit; +} +.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:focus{ + text-decoration:underline; +} +.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:focus{ + text-decoration:line-through; +} +.wp-block-navigation:where(:not([class*=has-text-decoration])) a{ + text-decoration:none; +} +.wp-block-navigation:where(:not([class*=has-text-decoration])) a:active,.wp-block-navigation:where(:not([class*=has-text-decoration])) a:focus{ + text-decoration:none; +} +.wp-block-navigation .wp-block-navigation__submenu-icon{ + align-self:center; + background-color:inherit; + border:none; + color:currentColor; + display:inline-block; + font-size:inherit; + height:.6em; + line-height:0; + margin-right:.25em; + padding:0; + width:.6em; +} +.wp-block-navigation .wp-block-navigation__submenu-icon svg{ + stroke:currentColor; + display:inline-block; + height:inherit; + margin-top:.075em; + width:inherit; +} +.wp-block-navigation.is-vertical{ + --navigation-layout-direction:column; + --navigation-layout-justify:initial; + --navigation-layout-align:flex-start; +} +.wp-block-navigation.no-wrap{ + --navigation-layout-wrap:nowrap; +} +.wp-block-navigation.items-justified-center{ + --navigation-layout-justification-setting:center; + --navigation-layout-justify:center; +} +.wp-block-navigation.items-justified-center.is-vertical{ + --navigation-layout-align:center; +} +.wp-block-navigation.items-justified-right{ + --navigation-layout-justification-setting:flex-end; + --navigation-layout-justify:flex-end; +} +.wp-block-navigation.items-justified-right.is-vertical{ + --navigation-layout-align:flex-end; +} +.wp-block-navigation.items-justified-space-between{ + --navigation-layout-justification-setting:space-between; + --navigation-layout-justify:space-between; +} + +.wp-block-navigation .has-child .wp-block-navigation__submenu-container{ + align-items:normal; + background-color:inherit; + color:inherit; + display:flex; + flex-direction:column; + height:0; + opacity:0; + overflow:hidden; + position:absolute; + right:-1px; + top:100%; + transition:opacity .1s linear; + visibility:hidden; + width:0; + z-index:2; +} +.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content{ + display:flex; + flex-grow:1; +} +.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content .wp-block-navigation__submenu-icon{ + margin-left:0; + margin-right:auto; +} +.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation-item__content{ + margin:0; +} +@media (min-width:782px){ + .wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{ + right:100%; + top:-1px; + } + .wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before{ + background:transparent; + content:""; + display:block; + height:100%; + left:100%; + position:absolute; + width:.5em; + } + .wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon{ + margin-left:.25em; + } + .wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon svg{ + transform:rotate(90deg); + } +} +.wp-block-navigation .has-child:not(.open-on-click):hover>.wp-block-navigation__submenu-container{ + height:auto; + min-width:200px; + opacity:1; + overflow:visible; + visibility:visible; + width:auto; +} +.wp-block-navigation .has-child:not(.open-on-click):not(.open-on-hover-click):focus-within>.wp-block-navigation__submenu-container{ + height:auto; + min-width:200px; + opacity:1; + overflow:visible; + visibility:visible; + width:auto; +} +.wp-block-navigation .has-child .wp-block-navigation-submenu__toggle[aria-expanded=true]~.wp-block-navigation__submenu-container{ + height:auto; + min-width:200px; + opacity:1; + overflow:visible; + visibility:visible; + width:auto; +} + +.wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container{ + right:0; + top:100%; +} +@media (min-width:782px){ + .wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{ + right:100%; + top:0; + } +} + +.wp-block-navigation-submenu{ + display:flex; + position:relative; +} +.wp-block-navigation-submenu .wp-block-navigation__submenu-icon svg{ + stroke:currentColor; +} + +button.wp-block-navigation-item__content{ + background-color:transparent; + border:none; + color:currentColor; + font-family:inherit; + font-size:inherit; + font-style:inherit; + font-weight:inherit; + line-height:inherit; + text-align:right; + text-transform:inherit; +} + +.wp-block-navigation-submenu__toggle{ + cursor:pointer; +} + +.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle{ + padding-left:.85em; +} +.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle+.wp-block-navigation__submenu-icon{ + margin-right:-.6em; + pointer-events:none; +} +.wp-block-navigation .wp-block-page-list,.wp-block-navigation__container,.wp-block-navigation__responsive-close,.wp-block-navigation__responsive-container,.wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-dialog{ + gap:inherit; +} +:where(.wp-block-navigation.has-background .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation.has-background .wp-block-navigation-submenu a:not(.wp-element-button)){ + padding:.5em 1em; +} + +:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu button.wp-block-navigation-item__content),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-pages-list__item button.wp-block-navigation-item__content){ + padding:.5em 1em; +} +.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container{ + left:0; + right:auto; +} +.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{ + left:-1px; + right:-1px; +} +@media (min-width:782px){ + .wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{ + left:100%; + right:auto; + } +} + +.wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container{ + background-color:#fff; + border:1px solid rgba(0,0,0,.15); +} + +.wp-block-navigation.has-background .wp-block-navigation__submenu-container{ + background-color:inherit; +} + +.wp-block-navigation:not(.has-text-color) .wp-block-navigation__submenu-container{ + color:#000; +} + +.wp-block-navigation__container{ + align-items:var(--navigation-layout-align, initial); + display:flex; + flex-direction:var(--navigation-layout-direction, initial); + flex-wrap:var(--navigation-layout-wrap, wrap); + justify-content:var(--navigation-layout-justify, initial); + list-style:none; + margin:0; + padding-right:0; +} +.wp-block-navigation__container .is-responsive{ + display:none; +} + +.wp-block-navigation__container:only-child,.wp-block-page-list:only-child{ + flex-grow:1; +} +@keyframes overlay-menu__fade-in-animation{ + 0%{ + opacity:0; + transform:translateY(.5em); + } + to{ + opacity:1; + transform:translateY(0); + } +} +.wp-block-navigation__responsive-container{ + bottom:0; + display:none; + left:0; + position:fixed; + right:0; + top:0; +} +.wp-block-navigation__responsive-container :where(.wp-block-navigation-item a){ + color:inherit; +} +.wp-block-navigation__responsive-container .wp-block-navigation__responsive-container-content{ + align-items:var(--navigation-layout-align, initial); + display:flex; + flex-direction:var(--navigation-layout-direction, initial); + flex-wrap:var(--navigation-layout-wrap, wrap); + justify-content:var(--navigation-layout-justify, initial); +} +.wp-block-navigation__responsive-container:not(.is-menu-open.is-menu-open){ + background-color:inherit !important; + color:inherit !important; +} +.wp-block-navigation__responsive-container.is-menu-open{ + animation:overlay-menu__fade-in-animation .1s ease-out; + animation-fill-mode:forwards; + background-color:inherit; + display:flex; + flex-direction:column; + overflow:auto; + padding:clamp(1rem, var(--wp--style--root--padding-top), 20rem) clamp(1rem, var(--wp--style--root--padding-left), 20em) clamp(1rem, var(--wp--style--root--padding-bottom), 20rem) clamp(1rem, var(--wp--style--root--padding-right), 20rem); + z-index:100000; +} +@media (prefers-reduced-motion:reduce){ + .wp-block-navigation__responsive-container.is-menu-open{ + animation-delay:0s; + animation-duration:1ms; + } +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{ + align-items:var(--navigation-layout-justification-setting, inherit); + display:flex; + flex-direction:column; + flex-wrap:nowrap; + overflow:visible; + padding-top:calc(2rem + 24px); +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{ + justify-content:flex-start; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-icon{ + display:none; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .has-child .wp-block-navigation__submenu-container{ + border:none; + height:auto; + min-width:200px; + opacity:1; + overflow:initial; + padding-left:2rem; + padding-right:2rem; + position:static; + visibility:visible; + width:auto; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{ + gap:inherit; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{ + padding-top:var(--wp--style--block-gap, 2em); +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content{ + padding:0; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{ + align-items:var(--navigation-layout-justification-setting, initial); + display:flex; + flex-direction:column; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item .wp-block-navigation__submenu-container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-page-list{ + background:transparent !important; + color:inherit !important; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{ + left:auto; + right:auto; +} +@media (min-width:600px){ + .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open){ + background-color:inherit; + display:block; + position:relative; + width:100%; + z-index:auto; + } + .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) .wp-block-navigation__responsive-container-close{ + display:none; + } + .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{ + right:0; + } +} + +.wp-block-navigation:not(.has-background) .wp-block-navigation__responsive-container.is-menu-open{ + background-color:#fff; +} + +.wp-block-navigation:not(.has-text-color) .wp-block-navigation__responsive-container.is-menu-open{ + color:#000; +} + +.wp-block-navigation__toggle_button_label{ + font-size:1rem; + font-weight:700; +} + +.wp-block-navigation__responsive-container-close,.wp-block-navigation__responsive-container-open{ + background:transparent; + border:none; + color:currentColor; + cursor:pointer; + margin:0; + padding:0; + text-transform:inherit; + vertical-align:middle; +} +.wp-block-navigation__responsive-container-close svg,.wp-block-navigation__responsive-container-open svg{ + fill:currentColor; + display:block; + height:24px; + pointer-events:none; + width:24px; +} + +.wp-block-navigation__responsive-container-open{ + display:flex; +} +.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open{ + font-family:inherit; + font-size:inherit; + font-weight:inherit; +} +@media (min-width:600px){ + .wp-block-navigation__responsive-container-open:not(.always-shown){ + display:none; + } +} + +.wp-block-navigation__responsive-container-close{ + left:0; + position:absolute; + top:0; + z-index:2; +} +.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close{ + font-family:inherit; + font-size:inherit; + font-weight:inherit; +} + +.wp-block-navigation__responsive-close{ + width:100%; +} +.has-modal-open .wp-block-navigation__responsive-close{ + margin-left:auto; + margin-right:auto; + max-width:var(--wp--style--global--wide-size, 100%); +} +.wp-block-navigation__responsive-close:focus{ + outline:none; +} + +.is-menu-open .wp-block-navigation__responsive-close,.is-menu-open .wp-block-navigation__responsive-container-content,.is-menu-open .wp-block-navigation__responsive-dialog{ + box-sizing:border-box; +} + +.wp-block-navigation__responsive-dialog{ + position:relative; +} + +.has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{ + margin-top:46px; +} +@media (min-width:782px){ + .has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{ + margin-top:32px; + } +} + +html.has-modal-open{ + overflow:hidden; +}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation/style-rtl.min.css b/wp-includes/blocks/navigation/style-rtl.min.css new file mode 100644 index 0000000..4e5f7bc --- /dev/null +++ b/wp-includes/blocks/navigation/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-navigation{--navigation-layout-justification-setting:flex-start;--navigation-layout-direction:row;--navigation-layout-wrap:wrap;--navigation-layout-justify:flex-start;--navigation-layout-align:center;position:relative}.wp-block-navigation ul{margin-bottom:0;margin-right:0;margin-top:0;padding-right:0}.wp-block-navigation ul,.wp-block-navigation ul li{list-style:none;padding:0}.wp-block-navigation .wp-block-navigation-item{align-items:center;background-color:inherit;display:flex;position:relative}.wp-block-navigation .wp-block-navigation-item .wp-block-navigation__submenu-container:empty{display:none}.wp-block-navigation .wp-block-navigation-item__content{display:block}.wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content{color:inherit}.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:focus{text-decoration:underline}.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:focus{text-decoration:line-through}.wp-block-navigation:where(:not([class*=has-text-decoration])) a{text-decoration:none}.wp-block-navigation:where(:not([class*=has-text-decoration])) a:active,.wp-block-navigation:where(:not([class*=has-text-decoration])) a:focus{text-decoration:none}.wp-block-navigation .wp-block-navigation__submenu-icon{align-self:center;background-color:inherit;border:none;color:currentColor;display:inline-block;font-size:inherit;height:.6em;line-height:0;margin-right:.25em;padding:0;width:.6em}.wp-block-navigation .wp-block-navigation__submenu-icon svg{stroke:currentColor;display:inline-block;height:inherit;margin-top:.075em;width:inherit}.wp-block-navigation.is-vertical{--navigation-layout-direction:column;--navigation-layout-justify:initial;--navigation-layout-align:flex-start}.wp-block-navigation.no-wrap{--navigation-layout-wrap:nowrap}.wp-block-navigation.items-justified-center{--navigation-layout-justification-setting:center;--navigation-layout-justify:center}.wp-block-navigation.items-justified-center.is-vertical{--navigation-layout-align:center}.wp-block-navigation.items-justified-right{--navigation-layout-justification-setting:flex-end;--navigation-layout-justify:flex-end}.wp-block-navigation.items-justified-right.is-vertical{--navigation-layout-align:flex-end}.wp-block-navigation.items-justified-space-between{--navigation-layout-justification-setting:space-between;--navigation-layout-justify:space-between}.wp-block-navigation .has-child .wp-block-navigation__submenu-container{align-items:normal;background-color:inherit;color:inherit;display:flex;flex-direction:column;height:0;opacity:0;overflow:hidden;position:absolute;right:-1px;top:100%;transition:opacity .1s linear;visibility:hidden;width:0;z-index:2}.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content{display:flex;flex-grow:1}.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content .wp-block-navigation__submenu-icon{margin-left:0;margin-right:auto}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation-item__content{margin:0}@media (min-width:782px){.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{right:100%;top:-1px}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before{background:transparent;content:"";display:block;height:100%;left:100%;position:absolute;width:.5em}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon{margin-left:.25em}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon svg{transform:rotate(90deg)}}.wp-block-navigation .has-child:not(.open-on-click):hover>.wp-block-navigation__submenu-container{height:auto;min-width:200px;opacity:1;overflow:visible;visibility:visible;width:auto}.wp-block-navigation .has-child:not(.open-on-click):not(.open-on-hover-click):focus-within>.wp-block-navigation__submenu-container{height:auto;min-width:200px;opacity:1;overflow:visible;visibility:visible;width:auto}.wp-block-navigation .has-child .wp-block-navigation-submenu__toggle[aria-expanded=true]~.wp-block-navigation__submenu-container{height:auto;min-width:200px;opacity:1;overflow:visible;visibility:visible;width:auto}.wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container{right:0;top:100%}@media (min-width:782px){.wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{right:100%;top:0}}.wp-block-navigation-submenu{display:flex;position:relative}.wp-block-navigation-submenu .wp-block-navigation__submenu-icon svg{stroke:currentColor}button.wp-block-navigation-item__content{background-color:transparent;border:none;color:currentColor;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;text-align:right;text-transform:inherit}.wp-block-navigation-submenu__toggle{cursor:pointer}.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle{padding-left:.85em}.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle+.wp-block-navigation__submenu-icon{margin-right:-.6em;pointer-events:none}.wp-block-navigation .wp-block-page-list,.wp-block-navigation__container,.wp-block-navigation__responsive-close,.wp-block-navigation__responsive-container,.wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-dialog{gap:inherit}:where(.wp-block-navigation.has-background .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation.has-background .wp-block-navigation-submenu a:not(.wp-element-button)){padding:.5em 1em}:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu button.wp-block-navigation-item__content),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-pages-list__item button.wp-block-navigation-item__content){padding:.5em 1em}.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container{left:0;right:auto}.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:-1px;right:-1px}@media (min-width:782px){.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:100%;right:auto}}.wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container{background-color:#fff;border:1px solid rgba(0,0,0,.15)}.wp-block-navigation.has-background .wp-block-navigation__submenu-container{background-color:inherit}.wp-block-navigation:not(.has-text-color) .wp-block-navigation__submenu-container{color:#000}.wp-block-navigation__container{align-items:var(--navigation-layout-align,initial);display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial);list-style:none;margin:0;padding-right:0}.wp-block-navigation__container .is-responsive{display:none}.wp-block-navigation__container:only-child,.wp-block-page-list:only-child{flex-grow:1}@keyframes overlay-menu__fade-in-animation{0%{opacity:0;transform:translateY(.5em)}to{opacity:1;transform:translateY(0)}}.wp-block-navigation__responsive-container{bottom:0;display:none;left:0;position:fixed;right:0;top:0}.wp-block-navigation__responsive-container :where(.wp-block-navigation-item a){color:inherit}.wp-block-navigation__responsive-container .wp-block-navigation__responsive-container-content{align-items:var(--navigation-layout-align,initial);display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial)}.wp-block-navigation__responsive-container:not(.is-menu-open.is-menu-open){background-color:inherit!important;color:inherit!important}.wp-block-navigation__responsive-container.is-menu-open{animation:overlay-menu__fade-in-animation .1s ease-out;animation-fill-mode:forwards;background-color:inherit;display:flex;flex-direction:column;overflow:auto;padding:clamp(1rem,var(--wp--style--root--padding-top),20rem) clamp(1rem,var(--wp--style--root--padding-left),20em) clamp(1rem,var(--wp--style--root--padding-bottom),20rem) clamp(1rem,var(--wp--style--root--padding-right),20rem);z-index:100000}@media (prefers-reduced-motion:reduce){.wp-block-navigation__responsive-container.is-menu-open{animation-delay:0s;animation-duration:1ms}}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{align-items:var(--navigation-layout-justification-setting,inherit);display:flex;flex-direction:column;flex-wrap:nowrap;overflow:visible;padding-top:calc(2rem + 24px)}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{justify-content:flex-start}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-icon{display:none}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .has-child .wp-block-navigation__submenu-container{border:none;height:auto;min-width:200px;opacity:1;overflow:initial;padding-left:2rem;padding-right:2rem;position:static;visibility:visible;width:auto}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{gap:inherit}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{padding-top:var(--wp--style--block-gap,2em)}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content{padding:0}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{align-items:var(--navigation-layout-justification-setting,initial);display:flex;flex-direction:column}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item .wp-block-navigation__submenu-container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-page-list{background:transparent!important;color:inherit!important}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{left:auto;right:auto}@media (min-width:600px){.wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open){background-color:inherit;display:block;position:relative;width:100%;z-index:auto}.wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) .wp-block-navigation__responsive-container-close{display:none}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{right:0}}.wp-block-navigation:not(.has-background) .wp-block-navigation__responsive-container.is-menu-open{background-color:#fff}.wp-block-navigation:not(.has-text-color) .wp-block-navigation__responsive-container.is-menu-open{color:#000}.wp-block-navigation__toggle_button_label{font-size:1rem;font-weight:700}.wp-block-navigation__responsive-container-close,.wp-block-navigation__responsive-container-open{background:transparent;border:none;color:currentColor;cursor:pointer;margin:0;padding:0;text-transform:inherit;vertical-align:middle}.wp-block-navigation__responsive-container-close svg,.wp-block-navigation__responsive-container-open svg{fill:currentColor;display:block;height:24px;pointer-events:none;width:24px}.wp-block-navigation__responsive-container-open{display:flex}.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open{font-family:inherit;font-size:inherit;font-weight:inherit}@media (min-width:600px){.wp-block-navigation__responsive-container-open:not(.always-shown){display:none}}.wp-block-navigation__responsive-container-close{left:0;position:absolute;top:0;z-index:2}.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close{font-family:inherit;font-size:inherit;font-weight:inherit}.wp-block-navigation__responsive-close{width:100%}.has-modal-open .wp-block-navigation__responsive-close{margin-left:auto;margin-right:auto;max-width:var(--wp--style--global--wide-size,100%)}.wp-block-navigation__responsive-close:focus{outline:none}.is-menu-open .wp-block-navigation__responsive-close,.is-menu-open .wp-block-navigation__responsive-container-content,.is-menu-open .wp-block-navigation__responsive-dialog{box-sizing:border-box}.wp-block-navigation__responsive-dialog{position:relative}.has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{margin-top:46px}@media (min-width:782px){.has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{margin-top:32px}}html.has-modal-open{overflow:hidden}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation/style.css b/wp-includes/blocks/navigation/style.css new file mode 100644 index 0000000..6c7ebaf --- /dev/null +++ b/wp-includes/blocks/navigation/style.css @@ -0,0 +1,465 @@ +.wp-block-navigation{ + --navigation-layout-justification-setting:flex-start; + --navigation-layout-direction:row; + --navigation-layout-wrap:wrap; + --navigation-layout-justify:flex-start; + --navigation-layout-align:center; + position:relative; +} +.wp-block-navigation ul{ + margin-bottom:0; + margin-left:0; + margin-top:0; + padding-left:0; +} +.wp-block-navigation ul,.wp-block-navigation ul li{ + list-style:none; + padding:0; +} +.wp-block-navigation .wp-block-navigation-item{ + align-items:center; + background-color:inherit; + display:flex; + position:relative; +} +.wp-block-navigation .wp-block-navigation-item .wp-block-navigation__submenu-container:empty{ + display:none; +} +.wp-block-navigation .wp-block-navigation-item__content{ + display:block; +} +.wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content{ + color:inherit; +} +.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:focus{ + text-decoration:underline; +} +.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:focus{ + text-decoration:line-through; +} +.wp-block-navigation:where(:not([class*=has-text-decoration])) a{ + text-decoration:none; +} +.wp-block-navigation:where(:not([class*=has-text-decoration])) a:active,.wp-block-navigation:where(:not([class*=has-text-decoration])) a:focus{ + text-decoration:none; +} +.wp-block-navigation .wp-block-navigation__submenu-icon{ + align-self:center; + background-color:inherit; + border:none; + color:currentColor; + display:inline-block; + font-size:inherit; + height:.6em; + line-height:0; + margin-left:.25em; + padding:0; + width:.6em; +} +.wp-block-navigation .wp-block-navigation__submenu-icon svg{ + stroke:currentColor; + display:inline-block; + height:inherit; + margin-top:.075em; + width:inherit; +} +.wp-block-navigation.is-vertical{ + --navigation-layout-direction:column; + --navigation-layout-justify:initial; + --navigation-layout-align:flex-start; +} +.wp-block-navigation.no-wrap{ + --navigation-layout-wrap:nowrap; +} +.wp-block-navigation.items-justified-center{ + --navigation-layout-justification-setting:center; + --navigation-layout-justify:center; +} +.wp-block-navigation.items-justified-center.is-vertical{ + --navigation-layout-align:center; +} +.wp-block-navigation.items-justified-right{ + --navigation-layout-justification-setting:flex-end; + --navigation-layout-justify:flex-end; +} +.wp-block-navigation.items-justified-right.is-vertical{ + --navigation-layout-align:flex-end; +} +.wp-block-navigation.items-justified-space-between{ + --navigation-layout-justification-setting:space-between; + --navigation-layout-justify:space-between; +} + +.wp-block-navigation .has-child .wp-block-navigation__submenu-container{ + align-items:normal; + background-color:inherit; + color:inherit; + display:flex; + flex-direction:column; + height:0; + left:-1px; + opacity:0; + overflow:hidden; + position:absolute; + top:100%; + transition:opacity .1s linear; + visibility:hidden; + width:0; + z-index:2; +} +.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content{ + display:flex; + flex-grow:1; +} +.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content .wp-block-navigation__submenu-icon{ + margin-left:auto; + margin-right:0; +} +.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation-item__content{ + margin:0; +} +@media (min-width:782px){ + .wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{ + left:100%; + top:-1px; + } + .wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before{ + background:transparent; + content:""; + display:block; + height:100%; + position:absolute; + right:100%; + width:.5em; + } + .wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon{ + margin-right:.25em; + } + .wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon svg{ + transform:rotate(-90deg); + } +} +.wp-block-navigation .has-child:not(.open-on-click):hover>.wp-block-navigation__submenu-container{ + height:auto; + min-width:200px; + opacity:1; + overflow:visible; + visibility:visible; + width:auto; +} +.wp-block-navigation .has-child:not(.open-on-click):not(.open-on-hover-click):focus-within>.wp-block-navigation__submenu-container{ + height:auto; + min-width:200px; + opacity:1; + overflow:visible; + visibility:visible; + width:auto; +} +.wp-block-navigation .has-child .wp-block-navigation-submenu__toggle[aria-expanded=true]~.wp-block-navigation__submenu-container{ + height:auto; + min-width:200px; + opacity:1; + overflow:visible; + visibility:visible; + width:auto; +} + +.wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container{ + left:0; + top:100%; +} +@media (min-width:782px){ + .wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{ + left:100%; + top:0; + } +} + +.wp-block-navigation-submenu{ + display:flex; + position:relative; +} +.wp-block-navigation-submenu .wp-block-navigation__submenu-icon svg{ + stroke:currentColor; +} + +button.wp-block-navigation-item__content{ + background-color:transparent; + border:none; + color:currentColor; + font-family:inherit; + font-size:inherit; + font-style:inherit; + font-weight:inherit; + line-height:inherit; + text-align:left; + text-transform:inherit; +} + +.wp-block-navigation-submenu__toggle{ + cursor:pointer; +} + +.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle{ + padding-right:.85em; +} +.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle+.wp-block-navigation__submenu-icon{ + margin-left:-.6em; + pointer-events:none; +} +.wp-block-navigation .wp-block-page-list,.wp-block-navigation__container,.wp-block-navigation__responsive-close,.wp-block-navigation__responsive-container,.wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-dialog{ + gap:inherit; +} +:where(.wp-block-navigation.has-background .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation.has-background .wp-block-navigation-submenu a:not(.wp-element-button)){ + padding:.5em 1em; +} + +:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu button.wp-block-navigation-item__content),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-pages-list__item button.wp-block-navigation-item__content){ + padding:.5em 1em; +} +.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container{ + left:auto; + right:0; +} +.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{ + left:-1px; + right:-1px; +} +@media (min-width:782px){ + .wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{ + left:auto; + right:100%; + } +} + +.wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container{ + background-color:#fff; + border:1px solid rgba(0,0,0,.15); +} + +.wp-block-navigation.has-background .wp-block-navigation__submenu-container{ + background-color:inherit; +} + +.wp-block-navigation:not(.has-text-color) .wp-block-navigation__submenu-container{ + color:#000; +} + +.wp-block-navigation__container{ + align-items:var(--navigation-layout-align, initial); + display:flex; + flex-direction:var(--navigation-layout-direction, initial); + flex-wrap:var(--navigation-layout-wrap, wrap); + justify-content:var(--navigation-layout-justify, initial); + list-style:none; + margin:0; + padding-left:0; +} +.wp-block-navigation__container .is-responsive{ + display:none; +} + +.wp-block-navigation__container:only-child,.wp-block-page-list:only-child{ + flex-grow:1; +} +@keyframes overlay-menu__fade-in-animation{ + 0%{ + opacity:0; + transform:translateY(.5em); + } + to{ + opacity:1; + transform:translateY(0); + } +} +.wp-block-navigation__responsive-container{ + bottom:0; + display:none; + left:0; + position:fixed; + right:0; + top:0; +} +.wp-block-navigation__responsive-container :where(.wp-block-navigation-item a){ + color:inherit; +} +.wp-block-navigation__responsive-container .wp-block-navigation__responsive-container-content{ + align-items:var(--navigation-layout-align, initial); + display:flex; + flex-direction:var(--navigation-layout-direction, initial); + flex-wrap:var(--navigation-layout-wrap, wrap); + justify-content:var(--navigation-layout-justify, initial); +} +.wp-block-navigation__responsive-container:not(.is-menu-open.is-menu-open){ + background-color:inherit !important; + color:inherit !important; +} +.wp-block-navigation__responsive-container.is-menu-open{ + animation:overlay-menu__fade-in-animation .1s ease-out; + animation-fill-mode:forwards; + background-color:inherit; + display:flex; + flex-direction:column; + overflow:auto; + padding:clamp(1rem, var(--wp--style--root--padding-top), 20rem) clamp(1rem, var(--wp--style--root--padding-right), 20rem) clamp(1rem, var(--wp--style--root--padding-bottom), 20rem) clamp(1rem, var(--wp--style--root--padding-left), 20em); + z-index:100000; +} +@media (prefers-reduced-motion:reduce){ + .wp-block-navigation__responsive-container.is-menu-open{ + animation-delay:0s; + animation-duration:1ms; + } +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{ + align-items:var(--navigation-layout-justification-setting, inherit); + display:flex; + flex-direction:column; + flex-wrap:nowrap; + overflow:visible; + padding-top:calc(2rem + 24px); +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{ + justify-content:flex-start; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-icon{ + display:none; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .has-child .wp-block-navigation__submenu-container{ + border:none; + height:auto; + min-width:200px; + opacity:1; + overflow:initial; + padding-left:2rem; + padding-right:2rem; + position:static; + visibility:visible; + width:auto; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{ + gap:inherit; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{ + padding-top:var(--wp--style--block-gap, 2em); +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content{ + padding:0; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{ + align-items:var(--navigation-layout-justification-setting, initial); + display:flex; + flex-direction:column; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item .wp-block-navigation__submenu-container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-page-list{ + background:transparent !important; + color:inherit !important; +} +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{ + left:auto; + right:auto; +} +@media (min-width:600px){ + .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open){ + background-color:inherit; + display:block; + position:relative; + width:100%; + z-index:auto; + } + .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) .wp-block-navigation__responsive-container-close{ + display:none; + } + .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{ + left:0; + } +} + +.wp-block-navigation:not(.has-background) .wp-block-navigation__responsive-container.is-menu-open{ + background-color:#fff; +} + +.wp-block-navigation:not(.has-text-color) .wp-block-navigation__responsive-container.is-menu-open{ + color:#000; +} + +.wp-block-navigation__toggle_button_label{ + font-size:1rem; + font-weight:700; +} + +.wp-block-navigation__responsive-container-close,.wp-block-navigation__responsive-container-open{ + background:transparent; + border:none; + color:currentColor; + cursor:pointer; + margin:0; + padding:0; + text-transform:inherit; + vertical-align:middle; +} +.wp-block-navigation__responsive-container-close svg,.wp-block-navigation__responsive-container-open svg{ + fill:currentColor; + display:block; + height:24px; + pointer-events:none; + width:24px; +} + +.wp-block-navigation__responsive-container-open{ + display:flex; +} +.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open{ + font-family:inherit; + font-size:inherit; + font-weight:inherit; +} +@media (min-width:600px){ + .wp-block-navigation__responsive-container-open:not(.always-shown){ + display:none; + } +} + +.wp-block-navigation__responsive-container-close{ + position:absolute; + right:0; + top:0; + z-index:2; +} +.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close{ + font-family:inherit; + font-size:inherit; + font-weight:inherit; +} + +.wp-block-navigation__responsive-close{ + width:100%; +} +.has-modal-open .wp-block-navigation__responsive-close{ + margin-left:auto; + margin-right:auto; + max-width:var(--wp--style--global--wide-size, 100%); +} +.wp-block-navigation__responsive-close:focus{ + outline:none; +} + +.is-menu-open .wp-block-navigation__responsive-close,.is-menu-open .wp-block-navigation__responsive-container-content,.is-menu-open .wp-block-navigation__responsive-dialog{ + box-sizing:border-box; +} + +.wp-block-navigation__responsive-dialog{ + position:relative; +} + +.has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{ + margin-top:46px; +} +@media (min-width:782px){ + .has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{ + margin-top:32px; + } +} + +html.has-modal-open{ + overflow:hidden; +}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation/style.min.css b/wp-includes/blocks/navigation/style.min.css new file mode 100644 index 0000000..67a42cf --- /dev/null +++ b/wp-includes/blocks/navigation/style.min.css @@ -0,0 +1 @@ +.wp-block-navigation{--navigation-layout-justification-setting:flex-start;--navigation-layout-direction:row;--navigation-layout-wrap:wrap;--navigation-layout-justify:flex-start;--navigation-layout-align:center;position:relative}.wp-block-navigation ul{margin-bottom:0;margin-left:0;margin-top:0;padding-left:0}.wp-block-navigation ul,.wp-block-navigation ul li{list-style:none;padding:0}.wp-block-navigation .wp-block-navigation-item{align-items:center;background-color:inherit;display:flex;position:relative}.wp-block-navigation .wp-block-navigation-item .wp-block-navigation__submenu-container:empty{display:none}.wp-block-navigation .wp-block-navigation-item__content{display:block}.wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content{color:inherit}.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:focus{text-decoration:underline}.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:focus{text-decoration:line-through}.wp-block-navigation:where(:not([class*=has-text-decoration])) a{text-decoration:none}.wp-block-navigation:where(:not([class*=has-text-decoration])) a:active,.wp-block-navigation:where(:not([class*=has-text-decoration])) a:focus{text-decoration:none}.wp-block-navigation .wp-block-navigation__submenu-icon{align-self:center;background-color:inherit;border:none;color:currentColor;display:inline-block;font-size:inherit;height:.6em;line-height:0;margin-left:.25em;padding:0;width:.6em}.wp-block-navigation .wp-block-navigation__submenu-icon svg{stroke:currentColor;display:inline-block;height:inherit;margin-top:.075em;width:inherit}.wp-block-navigation.is-vertical{--navigation-layout-direction:column;--navigation-layout-justify:initial;--navigation-layout-align:flex-start}.wp-block-navigation.no-wrap{--navigation-layout-wrap:nowrap}.wp-block-navigation.items-justified-center{--navigation-layout-justification-setting:center;--navigation-layout-justify:center}.wp-block-navigation.items-justified-center.is-vertical{--navigation-layout-align:center}.wp-block-navigation.items-justified-right{--navigation-layout-justification-setting:flex-end;--navigation-layout-justify:flex-end}.wp-block-navigation.items-justified-right.is-vertical{--navigation-layout-align:flex-end}.wp-block-navigation.items-justified-space-between{--navigation-layout-justification-setting:space-between;--navigation-layout-justify:space-between}.wp-block-navigation .has-child .wp-block-navigation__submenu-container{align-items:normal;background-color:inherit;color:inherit;display:flex;flex-direction:column;height:0;left:-1px;opacity:0;overflow:hidden;position:absolute;top:100%;transition:opacity .1s linear;visibility:hidden;width:0;z-index:2}.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content{display:flex;flex-grow:1}.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content .wp-block-navigation__submenu-icon{margin-left:auto;margin-right:0}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation-item__content{margin:0}@media (min-width:782px){.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:100%;top:-1px}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before{background:transparent;content:"";display:block;height:100%;position:absolute;right:100%;width:.5em}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon{margin-right:.25em}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon svg{transform:rotate(-90deg)}}.wp-block-navigation .has-child:not(.open-on-click):hover>.wp-block-navigation__submenu-container{height:auto;min-width:200px;opacity:1;overflow:visible;visibility:visible;width:auto}.wp-block-navigation .has-child:not(.open-on-click):not(.open-on-hover-click):focus-within>.wp-block-navigation__submenu-container{height:auto;min-width:200px;opacity:1;overflow:visible;visibility:visible;width:auto}.wp-block-navigation .has-child .wp-block-navigation-submenu__toggle[aria-expanded=true]~.wp-block-navigation__submenu-container{height:auto;min-width:200px;opacity:1;overflow:visible;visibility:visible;width:auto}.wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container{left:0;top:100%}@media (min-width:782px){.wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:100%;top:0}}.wp-block-navigation-submenu{display:flex;position:relative}.wp-block-navigation-submenu .wp-block-navigation__submenu-icon svg{stroke:currentColor}button.wp-block-navigation-item__content{background-color:transparent;border:none;color:currentColor;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;text-align:left;text-transform:inherit}.wp-block-navigation-submenu__toggle{cursor:pointer}.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle{padding-right:.85em}.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle+.wp-block-navigation__submenu-icon{margin-left:-.6em;pointer-events:none}.wp-block-navigation .wp-block-page-list,.wp-block-navigation__container,.wp-block-navigation__responsive-close,.wp-block-navigation__responsive-container,.wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-dialog{gap:inherit}:where(.wp-block-navigation.has-background .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation.has-background .wp-block-navigation-submenu a:not(.wp-element-button)){padding:.5em 1em}:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu button.wp-block-navigation-item__content),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-pages-list__item button.wp-block-navigation-item__content){padding:.5em 1em}.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container{left:auto;right:0}.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:-1px;right:-1px}@media (min-width:782px){.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:auto;right:100%}}.wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container{background-color:#fff;border:1px solid rgba(0,0,0,.15)}.wp-block-navigation.has-background .wp-block-navigation__submenu-container{background-color:inherit}.wp-block-navigation:not(.has-text-color) .wp-block-navigation__submenu-container{color:#000}.wp-block-navigation__container{align-items:var(--navigation-layout-align,initial);display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial);list-style:none;margin:0;padding-left:0}.wp-block-navigation__container .is-responsive{display:none}.wp-block-navigation__container:only-child,.wp-block-page-list:only-child{flex-grow:1}@keyframes overlay-menu__fade-in-animation{0%{opacity:0;transform:translateY(.5em)}to{opacity:1;transform:translateY(0)}}.wp-block-navigation__responsive-container{bottom:0;display:none;left:0;position:fixed;right:0;top:0}.wp-block-navigation__responsive-container :where(.wp-block-navigation-item a){color:inherit}.wp-block-navigation__responsive-container .wp-block-navigation__responsive-container-content{align-items:var(--navigation-layout-align,initial);display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial)}.wp-block-navigation__responsive-container:not(.is-menu-open.is-menu-open){background-color:inherit!important;color:inherit!important}.wp-block-navigation__responsive-container.is-menu-open{animation:overlay-menu__fade-in-animation .1s ease-out;animation-fill-mode:forwards;background-color:inherit;display:flex;flex-direction:column;overflow:auto;padding:clamp(1rem,var(--wp--style--root--padding-top),20rem) clamp(1rem,var(--wp--style--root--padding-right),20rem) clamp(1rem,var(--wp--style--root--padding-bottom),20rem) clamp(1rem,var(--wp--style--root--padding-left),20em);z-index:100000}@media (prefers-reduced-motion:reduce){.wp-block-navigation__responsive-container.is-menu-open{animation-delay:0s;animation-duration:1ms}}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{align-items:var(--navigation-layout-justification-setting,inherit);display:flex;flex-direction:column;flex-wrap:nowrap;overflow:visible;padding-top:calc(2rem + 24px)}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{justify-content:flex-start}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-icon{display:none}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .has-child .wp-block-navigation__submenu-container{border:none;height:auto;min-width:200px;opacity:1;overflow:initial;padding-left:2rem;padding-right:2rem;position:static;visibility:visible;width:auto}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{gap:inherit}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{padding-top:var(--wp--style--block-gap,2em)}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content{padding:0}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{align-items:var(--navigation-layout-justification-setting,initial);display:flex;flex-direction:column}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item .wp-block-navigation__submenu-container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-page-list{background:transparent!important;color:inherit!important}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{left:auto;right:auto}@media (min-width:600px){.wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open){background-color:inherit;display:block;position:relative;width:100%;z-index:auto}.wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) .wp-block-navigation__responsive-container-close{display:none}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{left:0}}.wp-block-navigation:not(.has-background) .wp-block-navigation__responsive-container.is-menu-open{background-color:#fff}.wp-block-navigation:not(.has-text-color) .wp-block-navigation__responsive-container.is-menu-open{color:#000}.wp-block-navigation__toggle_button_label{font-size:1rem;font-weight:700}.wp-block-navigation__responsive-container-close,.wp-block-navigation__responsive-container-open{background:transparent;border:none;color:currentColor;cursor:pointer;margin:0;padding:0;text-transform:inherit;vertical-align:middle}.wp-block-navigation__responsive-container-close svg,.wp-block-navigation__responsive-container-open svg{fill:currentColor;display:block;height:24px;pointer-events:none;width:24px}.wp-block-navigation__responsive-container-open{display:flex}.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open{font-family:inherit;font-size:inherit;font-weight:inherit}@media (min-width:600px){.wp-block-navigation__responsive-container-open:not(.always-shown){display:none}}.wp-block-navigation__responsive-container-close{position:absolute;right:0;top:0;z-index:2}.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close{font-family:inherit;font-size:inherit;font-weight:inherit}.wp-block-navigation__responsive-close{width:100%}.has-modal-open .wp-block-navigation__responsive-close{margin-left:auto;margin-right:auto;max-width:var(--wp--style--global--wide-size,100%)}.wp-block-navigation__responsive-close:focus{outline:none}.is-menu-open .wp-block-navigation__responsive-close,.is-menu-open .wp-block-navigation__responsive-container-content,.is-menu-open .wp-block-navigation__responsive-dialog{box-sizing:border-box}.wp-block-navigation__responsive-dialog{position:relative}.has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{margin-top:46px}@media (min-width:782px){.has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{margin-top:32px}}html.has-modal-open{overflow:hidden}
\ No newline at end of file diff --git a/wp-includes/blocks/navigation/view-modal.asset.php b/wp-includes/blocks/navigation/view-modal.asset.php new file mode 100644 index 0000000..9438565 --- /dev/null +++ b/wp-includes/blocks/navigation/view-modal.asset.php @@ -0,0 +1 @@ +<?php return array('dependencies' => array(), 'version' => 'a145d0113e969f692877'); diff --git a/wp-includes/blocks/navigation/view-modal.min.asset.php b/wp-includes/blocks/navigation/view-modal.min.asset.php new file mode 100644 index 0000000..42722aa --- /dev/null +++ b/wp-includes/blocks/navigation/view-modal.min.asset.php @@ -0,0 +1 @@ +<?php return array('dependencies' => array(), 'version' => 'b478fa3cd1475dec97d3'); diff --git a/wp-includes/blocks/navigation/view.asset.php b/wp-includes/blocks/navigation/view.asset.php new file mode 100644 index 0000000..fbf69db --- /dev/null +++ b/wp-includes/blocks/navigation/view.asset.php @@ -0,0 +1 @@ +<?php return array('dependencies' => array(), 'version' => 'b3eba25769c9fe5ec0fa'); diff --git a/wp-includes/blocks/navigation/view.js b/wp-includes/blocks/navigation/view.js new file mode 100644 index 0000000..46b2c68 --- /dev/null +++ b/wp-includes/blocks/navigation/view.js @@ -0,0 +1,213 @@ +"use strict"; +(self["__WordPressPrivateInteractivityAPI__"] = self["__WordPressPrivateInteractivityAPI__"] || []).push([[3],{ + +/***/ 932: +/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) { + +/* harmony import */ var _wordpress_interactivity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(754); +/** + * WordPress dependencies + */ + +const focusableSelectors = ['a[href]', 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', 'select:not([disabled]):not([aria-hidden])', 'textarea:not([disabled]):not([aria-hidden])', 'button:not([disabled]):not([aria-hidden])', '[contenteditable]', '[tabindex]:not([tabindex^="-"])']; + +// This is a fix for Safari in iOS/iPadOS. Without it, Safari doesn't focus out +// when the user taps in the body. It can be removed once we add an overlay to +// capture the clicks, instead of relying on the focusout event. +document.addEventListener('click', () => {}); +const openMenu = (store, menuOpenedOn) => { + const { + context, + selectors + } = store; + selectors.core.navigation.menuOpenedBy(store)[menuOpenedOn] = true; + if (context.core.navigation.type === 'overlay') { + // Add a `has-modal-open` class to the <html> root. + document.documentElement.classList.add('has-modal-open'); + } +}; +const closeMenu = (store, menuClosedOn) => { + const { + context, + selectors + } = store; + selectors.core.navigation.menuOpenedBy(store)[menuClosedOn] = false; + // Check if the menu is still open or not. + if (!selectors.core.navigation.isMenuOpen(store)) { + if (context.core.navigation.modal?.contains(window.document.activeElement)) { + context.core.navigation.previousFocus?.focus(); + } + context.core.navigation.modal = null; + context.core.navigation.previousFocus = null; + if (context.core.navigation.type === 'overlay') { + document.documentElement.classList.remove('has-modal-open'); + } + } +}; +(0,_wordpress_interactivity__WEBPACK_IMPORTED_MODULE_0__/* .store */ .h)({ + effects: { + core: { + navigation: { + initMenu: store => { + const { + context, + selectors, + ref + } = store; + if (selectors.core.navigation.isMenuOpen(store)) { + const focusableElements = ref.querySelectorAll(focusableSelectors); + context.core.navigation.modal = ref; + context.core.navigation.firstFocusableElement = focusableElements[0]; + context.core.navigation.lastFocusableElement = focusableElements[focusableElements.length - 1]; + } + }, + focusFirstElement: store => { + const { + selectors, + ref + } = store; + if (selectors.core.navigation.isMenuOpen(store)) { + ref.querySelector('.wp-block-navigation-item > *:first-child').focus(); + } + } + } + } + }, + selectors: { + core: { + navigation: { + roleAttribute: store => { + const { + context, + selectors + } = store; + return context.core.navigation.type === 'overlay' && selectors.core.navigation.isMenuOpen(store) ? 'dialog' : null; + }, + ariaModal: store => { + const { + context, + selectors + } = store; + return context.core.navigation.type === 'overlay' && selectors.core.navigation.isMenuOpen(store) ? 'true' : null; + }, + ariaLabel: store => { + const { + context, + selectors + } = store; + return context.core.navigation.type === 'overlay' && selectors.core.navigation.isMenuOpen(store) ? context.core.navigation.ariaLabel : null; + }, + isMenuOpen: ({ + context + }) => + // The menu is opened if either `click`, `hover` or `focus` is true. + Object.values(context.core.navigation[context.core.navigation.type === 'overlay' ? 'overlayOpenedBy' : 'submenuOpenedBy']).filter(Boolean).length > 0, + menuOpenedBy: ({ + context + }) => context.core.navigation[context.core.navigation.type === 'overlay' ? 'overlayOpenedBy' : 'submenuOpenedBy'] + } + } + }, + actions: { + core: { + navigation: { + openMenuOnHover(store) { + const { + navigation + } = store.context.core; + if (navigation.type === 'submenu' && + // Only open on hover if the overlay is closed. + Object.values(navigation.overlayOpenedBy || {}).filter(Boolean).length === 0) openMenu(store, 'hover'); + }, + closeMenuOnHover(store) { + closeMenu(store, 'hover'); + }, + openMenuOnClick(store) { + const { + context, + ref + } = store; + context.core.navigation.previousFocus = ref; + openMenu(store, 'click'); + }, + closeMenuOnClick(store) { + closeMenu(store, 'click'); + closeMenu(store, 'focus'); + }, + openMenuOnFocus(store) { + openMenu(store, 'focus'); + }, + toggleMenuOnClick: store => { + const { + selectors, + context, + ref + } = store; + // Safari won't send focus to the clicked element, so we need to manually place it: https://bugs.webkit.org/show_bug.cgi?id=22261 + if (window.document.activeElement !== ref) ref.focus(); + const menuOpenedBy = selectors.core.navigation.menuOpenedBy(store); + if (menuOpenedBy.click || menuOpenedBy.focus) { + closeMenu(store, 'click'); + closeMenu(store, 'focus'); + } else { + context.core.navigation.previousFocus = ref; + openMenu(store, 'click'); + } + }, + handleMenuKeydown: store => { + const { + context, + selectors, + event + } = store; + if (selectors.core.navigation.menuOpenedBy(store).click) { + // If Escape close the menu. + if (event?.key === 'Escape') { + closeMenu(store, 'click'); + closeMenu(store, 'focus'); + return; + } + + // Trap focus if it is an overlay (main menu). + if (context.core.navigation.type === 'overlay' && event.key === 'Tab') { + // If shift + tab it change the direction. + if (event.shiftKey && window.document.activeElement === context.core.navigation.firstFocusableElement) { + event.preventDefault(); + context.core.navigation.lastFocusableElement.focus(); + } else if (!event.shiftKey && window.document.activeElement === context.core.navigation.lastFocusableElement) { + event.preventDefault(); + context.core.navigation.firstFocusableElement.focus(); + } + } + } + }, + handleMenuFocusout: store => { + const { + context, + event + } = store; + // If focus is outside modal, and in the document, close menu + // event.target === The element losing focus + // event.relatedTarget === The element receiving focus (if any) + // When focusout is outsite the document, + // `window.document.activeElement` doesn't change. + + // The event.relatedTarget is null when something outside the navigation menu is clicked. This is only necessary for Safari. + if (event.relatedTarget === null || !context.core.navigation.modal?.contains(event.relatedTarget) && event.target !== window.document.activeElement) { + closeMenu(store, 'click'); + closeMenu(store, 'focus'); + } + } + } + } + } +}); + +/***/ }) + +}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); } +/******/ var __webpack_exports__ = (__webpack_exec__(932)); +/******/ } +]);
\ No newline at end of file diff --git a/wp-includes/blocks/navigation/view.min.asset.php b/wp-includes/blocks/navigation/view.min.asset.php new file mode 100644 index 0000000..5675933 --- /dev/null +++ b/wp-includes/blocks/navigation/view.min.asset.php @@ -0,0 +1 @@ +<?php return array('dependencies' => array(), 'version' => 'e3d6f3216904b5b42831'); diff --git a/wp-includes/blocks/navigation/view.min.js b/wp-includes/blocks/navigation/view.min.js new file mode 100644 index 0000000..37f1ffd --- /dev/null +++ b/wp-includes/blocks/navigation/view.min.js @@ -0,0 +1 @@ +"use strict";(self.__WordPressPrivateInteractivityAPI__=self.__WordPressPrivateInteractivityAPI__||[]).push([[3],{932:function(e,n,o){var t=o(754);const a=["a[href]",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])","button:not([disabled]):not([aria-hidden])","[contenteditable]",'[tabindex]:not([tabindex^="-"])'];document.addEventListener("click",(()=>{}));const i=(e,n)=>{const{context:o,selectors:t}=e;t.core.navigation.menuOpenedBy(e)[n]=!0,"overlay"===o.core.navigation.type&&document.documentElement.classList.add("has-modal-open")},c=(e,n)=>{const{context:o,selectors:t}=e;t.core.navigation.menuOpenedBy(e)[n]=!1,t.core.navigation.isMenuOpen(e)||(o.core.navigation.modal?.contains(window.document.activeElement)&&o.core.navigation.previousFocus?.focus(),o.core.navigation.modal=null,o.core.navigation.previousFocus=null,"overlay"===o.core.navigation.type&&document.documentElement.classList.remove("has-modal-open"))};(0,t.h)({effects:{core:{navigation:{initMenu:e=>{const{context:n,selectors:o,ref:t}=e;if(o.core.navigation.isMenuOpen(e)){const e=t.querySelectorAll(a);n.core.navigation.modal=t,n.core.navigation.firstFocusableElement=e[0],n.core.navigation.lastFocusableElement=e[e.length-1]}},focusFirstElement:e=>{const{selectors:n,ref:o}=e;n.core.navigation.isMenuOpen(e)&&o.querySelector(".wp-block-navigation-item > *:first-child").focus()}}}},selectors:{core:{navigation:{roleAttribute:e=>{const{context:n,selectors:o}=e;return"overlay"===n.core.navigation.type&&o.core.navigation.isMenuOpen(e)?"dialog":null},ariaModal:e=>{const{context:n,selectors:o}=e;return"overlay"===n.core.navigation.type&&o.core.navigation.isMenuOpen(e)?"true":null},ariaLabel:e=>{const{context:n,selectors:o}=e;return"overlay"===n.core.navigation.type&&o.core.navigation.isMenuOpen(e)?n.core.navigation.ariaLabel:null},isMenuOpen:({context:e})=>Object.values(e.core.navigation["overlay"===e.core.navigation.type?"overlayOpenedBy":"submenuOpenedBy"]).filter(Boolean).length>0,menuOpenedBy:({context:e})=>e.core.navigation["overlay"===e.core.navigation.type?"overlayOpenedBy":"submenuOpenedBy"]}}},actions:{core:{navigation:{openMenuOnHover(e){const{navigation:n}=e.context.core;"submenu"===n.type&&0===Object.values(n.overlayOpenedBy||{}).filter(Boolean).length&&i(e,"hover")},closeMenuOnHover(e){c(e,"hover")},openMenuOnClick(e){const{context:n,ref:o}=e;n.core.navigation.previousFocus=o,i(e,"click")},closeMenuOnClick(e){c(e,"click"),c(e,"focus")},openMenuOnFocus(e){i(e,"focus")},toggleMenuOnClick:e=>{const{selectors:n,context:o,ref:t}=e;window.document.activeElement!==t&&t.focus();const a=n.core.navigation.menuOpenedBy(e);a.click||a.focus?(c(e,"click"),c(e,"focus")):(o.core.navigation.previousFocus=t,i(e,"click"))},handleMenuKeydown:e=>{const{context:n,selectors:o,event:t}=e;if(o.core.navigation.menuOpenedBy(e).click){if("Escape"===t?.key)return c(e,"click"),void c(e,"focus");"overlay"===n.core.navigation.type&&"Tab"===t.key&&(t.shiftKey&&window.document.activeElement===n.core.navigation.firstFocusableElement?(t.preventDefault(),n.core.navigation.lastFocusableElement.focus()):t.shiftKey||window.document.activeElement!==n.core.navigation.lastFocusableElement||(t.preventDefault(),n.core.navigation.firstFocusableElement.focus()))}},handleMenuFocusout:e=>{const{context:n,event:o}=e;(null===o.relatedTarget||!n.core.navigation.modal?.contains(o.relatedTarget)&&o.target!==window.document.activeElement)&&(c(e,"click"),c(e,"focus"))}}}}})}},function(e){var n;n=932,e(e.s=n)}]);
\ No newline at end of file diff --git a/wp-includes/blocks/nextpage/block.json b/wp-includes/blocks/nextpage/block.json new file mode 100644 index 0000000..ab88d4a --- /dev/null +++ b/wp-includes/blocks/nextpage/block.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/nextpage", + "title": "Page Break", + "category": "design", + "description": "Separate your content into a multi-page experience.", + "keywords": [ "next page", "pagination" ], + "parent": [ "core/post-content" ], + "textdomain": "default", + "supports": { + "customClassName": false, + "className": false, + "html": false + }, + "editorStyle": "wp-block-nextpage-editor" +} diff --git a/wp-includes/blocks/nextpage/editor-rtl.css b/wp-includes/blocks/nextpage/editor-rtl.css new file mode 100644 index 0000000..c34f689 --- /dev/null +++ b/wp-includes/blocks/nextpage/editor-rtl.css @@ -0,0 +1,32 @@ +.block-editor-block-list__block[data-type="core/nextpage"]{ + margin-bottom:28px; + margin-top:28px; + max-width:100%; + text-align:center; +} + +.wp-block-nextpage{ + display:block; + text-align:center; + white-space:nowrap; +} +.wp-block-nextpage>span{ + background:#fff; + border-radius:4px; + color:#757575; + font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; + font-size:13px; + font-weight:600; + height:24px; + padding:6px 8px; + position:relative; + text-transform:uppercase; +} +.wp-block-nextpage:before{ + border-top:3px dashed #ccc; + content:""; + left:0; + position:absolute; + right:0; + top:50%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/nextpage/editor-rtl.min.css b/wp-includes/blocks/nextpage/editor-rtl.min.css new file mode 100644 index 0000000..b947fdb --- /dev/null +++ b/wp-includes/blocks/nextpage/editor-rtl.min.css @@ -0,0 +1 @@ +.block-editor-block-list__block[data-type="core/nextpage"]{margin-bottom:28px;margin-top:28px;max-width:100%;text-align:center}.wp-block-nextpage{display:block;text-align:center;white-space:nowrap}.wp-block-nextpage>span{background:#fff;border-radius:4px;color:#757575;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;font-weight:600;height:24px;padding:6px 8px;position:relative;text-transform:uppercase}.wp-block-nextpage:before{border-top:3px dashed #ccc;content:"";left:0;position:absolute;right:0;top:50%}
\ No newline at end of file diff --git a/wp-includes/blocks/nextpage/editor.css b/wp-includes/blocks/nextpage/editor.css new file mode 100644 index 0000000..c34f689 --- /dev/null +++ b/wp-includes/blocks/nextpage/editor.css @@ -0,0 +1,32 @@ +.block-editor-block-list__block[data-type="core/nextpage"]{ + margin-bottom:28px; + margin-top:28px; + max-width:100%; + text-align:center; +} + +.wp-block-nextpage{ + display:block; + text-align:center; + white-space:nowrap; +} +.wp-block-nextpage>span{ + background:#fff; + border-radius:4px; + color:#757575; + font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; + font-size:13px; + font-weight:600; + height:24px; + padding:6px 8px; + position:relative; + text-transform:uppercase; +} +.wp-block-nextpage:before{ + border-top:3px dashed #ccc; + content:""; + left:0; + position:absolute; + right:0; + top:50%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/nextpage/editor.min.css b/wp-includes/blocks/nextpage/editor.min.css new file mode 100644 index 0000000..b947fdb --- /dev/null +++ b/wp-includes/blocks/nextpage/editor.min.css @@ -0,0 +1 @@ +.block-editor-block-list__block[data-type="core/nextpage"]{margin-bottom:28px;margin-top:28px;max-width:100%;text-align:center}.wp-block-nextpage{display:block;text-align:center;white-space:nowrap}.wp-block-nextpage>span{background:#fff;border-radius:4px;color:#757575;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;font-weight:600;height:24px;padding:6px 8px;position:relative;text-transform:uppercase}.wp-block-nextpage:before{border-top:3px dashed #ccc;content:"";left:0;position:absolute;right:0;top:50%}
\ No newline at end of file diff --git a/wp-includes/blocks/page-list-item.php b/wp-includes/blocks/page-list-item.php new file mode 100644 index 0000000..2955c79 --- /dev/null +++ b/wp-includes/blocks/page-list-item.php @@ -0,0 +1,14 @@ +<?php +/** + * Server-side rendering of the `core/page-list-item` block. + * + * @package WordPress + */ + +/** + * Registers the `core/page-list-item` block on server. + */ +function register_block_core_page_list_item() { + register_block_type_from_metadata( __DIR__ . '/page-list-item' ); +} +add_action( 'init', 'register_block_core_page_list_item' ); diff --git a/wp-includes/blocks/page-list-item/block.json b/wp-includes/blocks/page-list-item/block.json new file mode 100644 index 0000000..abd8692 --- /dev/null +++ b/wp-includes/blocks/page-list-item/block.json @@ -0,0 +1,52 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/page-list-item", + "title": "Page List Item", + "category": "widgets", + "parent": [ "core/page-list" ], + "description": "Displays a page inside a list of all pages.", + "keywords": [ "page", "menu", "navigation" ], + "textdomain": "default", + "attributes": { + "id": { + "type": "number" + }, + "label": { + "type": "string" + }, + "title": { + "type": "string" + }, + "link": { + "type": "string" + }, + "hasChildren": { + "type": "boolean" + } + }, + "usesContext": [ + "textColor", + "customTextColor", + "backgroundColor", + "customBackgroundColor", + "overlayTextColor", + "customOverlayTextColor", + "overlayBackgroundColor", + "customOverlayBackgroundColor", + "fontSize", + "customFontSize", + "showSubmenuIcon", + "style", + "openSubmenusOnClick" + ], + "supports": { + "reusable": false, + "html": false, + "lock": false, + "inserter": false, + "__experimentalToolbar": false + }, + "editorStyle": "wp-block-page-list-editor", + "style": "wp-block-page-list" +} diff --git a/wp-includes/blocks/page-list.php b/wp-includes/blocks/page-list.php new file mode 100644 index 0000000..b9ef8bf --- /dev/null +++ b/wp-includes/blocks/page-list.php @@ -0,0 +1,357 @@ +<?php +/** + * Server-side rendering of the `core/pages` block. + * + * @package WordPress + */ + +/** + * Build an array with CSS classes and inline styles defining the colors + * which will be applied to the pages markup in the front-end when it is a descendant of navigation. + * + * @param array $attributes Block attributes. + * @param array $context Navigation block context. + * @return array Colors CSS classes and inline styles. + */ +function block_core_page_list_build_css_colors( $attributes, $context ) { + $colors = array( + 'css_classes' => array(), + 'inline_styles' => '', + 'overlay_css_classes' => array(), + 'overlay_inline_styles' => '', + ); + + // Text color. + $has_named_text_color = array_key_exists( 'textColor', $context ); + $has_picked_text_color = array_key_exists( 'customTextColor', $context ); + $has_custom_text_color = isset( $context['style']['color']['text'] ); + + // If has text color. + if ( $has_custom_text_color || $has_picked_text_color || $has_named_text_color ) { + // Add has-text-color class. + $colors['css_classes'][] = 'has-text-color'; + } + + if ( $has_named_text_color ) { + // Add the color class. + $colors['css_classes'][] = sprintf( 'has-%s-color', _wp_to_kebab_case( $context['textColor'] ) ); + } elseif ( $has_picked_text_color ) { + $colors['inline_styles'] .= sprintf( 'color: %s;', $context['customTextColor'] ); + } elseif ( $has_custom_text_color ) { + // Add the custom color inline style. + $colors['inline_styles'] .= sprintf( 'color: %s;', $context['style']['color']['text'] ); + } + + // Background color. + $has_named_background_color = array_key_exists( 'backgroundColor', $context ); + $has_picked_background_color = array_key_exists( 'customBackgroundColor', $context ); + $has_custom_background_color = isset( $context['style']['color']['background'] ); + + // If has background color. + if ( $has_custom_background_color || $has_picked_background_color || $has_named_background_color ) { + // Add has-background class. + $colors['css_classes'][] = 'has-background'; + } + + if ( $has_named_background_color ) { + // Add the background-color class. + $colors['css_classes'][] = sprintf( 'has-%s-background-color', _wp_to_kebab_case( $context['backgroundColor'] ) ); + } elseif ( $has_picked_background_color ) { + $colors['inline_styles'] .= sprintf( 'background-color: %s;', $context['customBackgroundColor'] ); + } elseif ( $has_custom_background_color ) { + // Add the custom background-color inline style. + $colors['inline_styles'] .= sprintf( 'background-color: %s;', $context['style']['color']['background'] ); + } + + // Overlay text color. + $has_named_overlay_text_color = array_key_exists( 'overlayTextColor', $context ); + $has_picked_overlay_text_color = array_key_exists( 'customOverlayTextColor', $context ); + + // If it has a text color. + if ( $has_named_overlay_text_color || $has_picked_overlay_text_color ) { + $colors['overlay_css_classes'][] = 'has-text-color'; + } + + // Give overlay colors priority, fall back to Navigation block colors, then global styles. + if ( $has_named_overlay_text_color ) { + $colors['overlay_css_classes'][] = sprintf( 'has-%s-color', _wp_to_kebab_case( $context['overlayTextColor'] ) ); + } elseif ( $has_picked_overlay_text_color ) { + $colors['overlay_inline_styles'] .= sprintf( 'color: %s;', $context['customOverlayTextColor'] ); + } + + // Overlay background colors. + $has_named_overlay_background_color = array_key_exists( 'overlayBackgroundColor', $context ); + $has_picked_overlay_background_color = array_key_exists( 'customOverlayBackgroundColor', $context ); + + // If has background color. + if ( $has_named_overlay_background_color || $has_picked_overlay_background_color ) { + $colors['overlay_css_classes'][] = 'has-background'; + } + + if ( $has_named_overlay_background_color ) { + $colors['overlay_css_classes'][] = sprintf( 'has-%s-background-color', _wp_to_kebab_case( $context['overlayBackgroundColor'] ) ); + } elseif ( $has_picked_overlay_background_color ) { + $colors['overlay_inline_styles'] .= sprintf( 'background-color: %s;', $context['customOverlayBackgroundColor'] ); + } + + return $colors; +} + +/** + * Build an array with CSS classes and inline styles defining the font sizes + * which will be applied to the pages markup in the front-end when it is a descendant of navigation. + * + * @param array $context Navigation block context. + * @return array Font size CSS classes and inline styles. + */ +function block_core_page_list_build_css_font_sizes( $context ) { + // CSS classes. + $font_sizes = array( + 'css_classes' => array(), + 'inline_styles' => '', + ); + + $has_named_font_size = array_key_exists( 'fontSize', $context ); + $has_custom_font_size = isset( $context['style']['typography']['fontSize'] ); + + if ( $has_named_font_size ) { + // Add the font size class. + $font_sizes['css_classes'][] = sprintf( 'has-%s-font-size', $context['fontSize'] ); + } elseif ( $has_custom_font_size ) { + // Add the custom font size inline style. + $font_sizes['inline_styles'] = sprintf( + 'font-size: %s;', + wp_get_typography_font_size_value( + array( + 'size' => $context['style']['typography']['fontSize'], + ) + ) + ); + } + + return $font_sizes; +} + +/** + * Outputs Page list markup from an array of pages with nested children. + * + * @param boolean $open_submenus_on_click Whether to open submenus on click instead of hover. + * @param boolean $show_submenu_icons Whether to show submenu indicator icons. + * @param boolean $is_navigation_child If block is a child of Navigation block. + * @param array $nested_pages The array of nested pages. + * @param boolean $is_nested Whether the submenu is nested or not. + * @param array $active_page_ancestor_ids An array of ancestor ids for active page. + * @param array $colors Color information for overlay styles. + * @param integer $depth The nesting depth. + * + * @return string List markup. + */ +function block_core_page_list_render_nested_page_list( $open_submenus_on_click, $show_submenu_icons, $is_navigation_child, $nested_pages, $is_nested, $active_page_ancestor_ids = array(), $colors = array(), $depth = 0 ) { + if ( empty( $nested_pages ) ) { + return; + } + $front_page_id = (int) get_option( 'page_on_front' ); + $markup = ''; + foreach ( (array) $nested_pages as $page ) { + $css_class = $page['is_active'] ? ' current-menu-item' : ''; + $aria_current = $page['is_active'] ? ' aria-current="page"' : ''; + $style_attribute = ''; + + $css_class .= in_array( $page['page_id'], $active_page_ancestor_ids, true ) ? ' current-menu-ancestor' : ''; + if ( isset( $page['children'] ) ) { + $css_class .= ' has-child'; + } + + if ( $is_navigation_child ) { + $css_class .= ' wp-block-navigation-item'; + + if ( $open_submenus_on_click ) { + $css_class .= ' open-on-click'; + } elseif ( $show_submenu_icons ) { + $css_class .= ' open-on-hover-click'; + } + } + + $navigation_child_content_class = $is_navigation_child ? ' wp-block-navigation-item__content' : ''; + + // If this is the first level of submenus, include the overlay colors. + if ( ( ( 0 < $depth && ! $is_nested ) || $is_nested ) && isset( $colors['overlay_css_classes'], $colors['overlay_inline_styles'] ) ) { + $css_class .= ' ' . trim( implode( ' ', $colors['overlay_css_classes'] ) ); + if ( '' !== $colors['overlay_inline_styles'] ) { + $style_attribute = sprintf( ' style="%s"', esc_attr( $colors['overlay_inline_styles'] ) ); + } + } + + if ( (int) $page['page_id'] === $front_page_id ) { + $css_class .= ' menu-item-home'; + } + + $title = wp_kses_post( $page['title'] ); + $aria_label = sprintf( + /* translators: Accessibility text. %s: Parent page title. */ + __( '%s submenu' ), + wp_strip_all_tags( $title ) + ); + + $markup .= '<li class="wp-block-pages-list__item' . esc_attr( $css_class ) . '"' . $style_attribute . '>'; + + if ( isset( $page['children'] ) && $is_navigation_child && $open_submenus_on_click ) { + $markup .= '<button aria-label="' . esc_attr( $aria_label ) . '" class="' . esc_attr( $navigation_child_content_class ) . ' wp-block-navigation-submenu__toggle" aria-expanded="false">' . esc_html( $title ) . + '</button><span class="wp-block-page-list__submenu-icon wp-block-navigation__submenu-icon"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" focusable="false"><path d="M1.50002 4L6.00002 8L10.5 4" stroke-width="1.5"></path></svg></span>'; + } else { + $markup .= '<a class="wp-block-pages-list__item__link' . esc_attr( $navigation_child_content_class ) . '" href="' . esc_url( $page['link'] ) . '"' . $aria_current . '>' . $title . '</a>'; + } + + if ( isset( $page['children'] ) ) { + if ( $is_navigation_child && $show_submenu_icons && ! $open_submenus_on_click ) { + $markup .= '<button aria-label="' . esc_attr( $aria_label ) . '" class="wp-block-navigation__submenu-icon wp-block-navigation-submenu__toggle" aria-expanded="false">'; + $markup .= '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" focusable="false"><path d="M1.50002 4L6.00002 8L10.5 4" stroke-width="1.5"></path></svg>'; + $markup .= '</button>'; + } + $markup .= '<ul class="wp-block-navigation__submenu-container">'; + $markup .= block_core_page_list_render_nested_page_list( $open_submenus_on_click, $show_submenu_icons, $is_navigation_child, $page['children'], $is_nested, $active_page_ancestor_ids, $colors, $depth + 1 ); + $markup .= '</ul>'; + } + $markup .= '</li>'; + } + return $markup; +} + +/** + * Outputs nested array of pages + * + * @param array $current_level The level being iterated through. + * @param array $children The children grouped by parent post ID. + * + * @return array The nested array of pages. + */ +function block_core_page_list_nest_pages( $current_level, $children ) { + if ( empty( $current_level ) ) { + return; + } + foreach ( (array) $current_level as $key => $current ) { + if ( isset( $children[ $key ] ) ) { + $current_level[ $key ]['children'] = block_core_page_list_nest_pages( $children[ $key ], $children ); + } + } + return $current_level; +} + +/** + * Renders the `core/page-list` block on server. + * + * @param array $attributes The block attributes. + * @param string $content The saved content. + * @param WP_Block $block The parsed block. + * + * @return string Returns the page list markup. + */ +function render_block_core_page_list( $attributes, $content, $block ) { + static $block_id = 0; + ++$block_id; + + $parent_page_id = $attributes['parentPageID']; + $is_nested = $attributes['isNested']; + + $all_pages = get_pages( + array( + 'sort_column' => 'menu_order,post_title', + 'order' => 'asc', + ) + ); + + // If there are no pages, there is nothing to show. + if ( empty( $all_pages ) ) { + return; + } + + $top_level_pages = array(); + + $pages_with_children = array(); + + $active_page_ancestor_ids = array(); + + foreach ( (array) $all_pages as $page ) { + $is_active = ! empty( $page->ID ) && ( get_queried_object_id() === $page->ID ); + + if ( $is_active ) { + $active_page_ancestor_ids = get_post_ancestors( $page->ID ); + } + + if ( $page->post_parent ) { + $pages_with_children[ $page->post_parent ][ $page->ID ] = array( + 'page_id' => $page->ID, + 'title' => $page->post_title, + 'link' => get_permalink( $page ), + 'is_active' => $is_active, + ); + } else { + $top_level_pages[ $page->ID ] = array( + 'page_id' => $page->ID, + 'title' => $page->post_title, + 'link' => get_permalink( $page ), + 'is_active' => $is_active, + ); + + } + } + + $colors = block_core_page_list_build_css_colors( $attributes, $block->context ); + $font_sizes = block_core_page_list_build_css_font_sizes( $block->context ); + $classes = array_merge( + $colors['css_classes'], + $font_sizes['css_classes'] + ); + $style_attribute = ( $colors['inline_styles'] . $font_sizes['inline_styles'] ); + $css_classes = trim( implode( ' ', $classes ) ); + + $nested_pages = block_core_page_list_nest_pages( $top_level_pages, $pages_with_children ); + + if ( 0 !== $parent_page_id ) { + // If the parent page has no child pages, there is nothing to show. + if ( ! array_key_exists( $parent_page_id, $pages_with_children ) ) { + return; + } + + $nested_pages = block_core_page_list_nest_pages( + $pages_with_children[ $parent_page_id ], + $pages_with_children + ); + } + + $is_navigation_child = array_key_exists( 'showSubmenuIcon', $block->context ); + + $open_submenus_on_click = array_key_exists( 'openSubmenusOnClick', $block->context ) ? $block->context['openSubmenusOnClick'] : false; + + $show_submenu_icons = array_key_exists( 'showSubmenuIcon', $block->context ) ? $block->context['showSubmenuIcon'] : false; + + $wrapper_markup = $is_nested ? '%2$s' : '<ul %1$s>%2$s</ul>'; + + $items_markup = block_core_page_list_render_nested_page_list( $open_submenus_on_click, $show_submenu_icons, $is_navigation_child, $nested_pages, $is_nested, $active_page_ancestor_ids, $colors ); + + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => $css_classes, + 'style' => $style_attribute, + ) + ); + + return sprintf( + $wrapper_markup, + $wrapper_attributes, + $items_markup + ); +} + +/** + * Registers the `core/pages` block on server. + */ +function register_block_core_page_list() { + register_block_type_from_metadata( + __DIR__ . '/page-list', + array( + 'render_callback' => 'render_block_core_page_list', + ) + ); +} +add_action( 'init', 'register_block_core_page_list' ); diff --git a/wp-includes/blocks/page-list/block.json b/wp-includes/blocks/page-list/block.json new file mode 100644 index 0000000..7f4f2ce --- /dev/null +++ b/wp-includes/blocks/page-list/block.json @@ -0,0 +1,54 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/page-list", + "title": "Page List", + "category": "widgets", + "description": "Display a list of all pages.", + "keywords": [ "menu", "navigation" ], + "textdomain": "default", + "attributes": { + "parentPageID": { + "type": "integer", + "default": 0 + }, + "isNested": { + "type": "boolean", + "default": false + } + }, + "usesContext": [ + "textColor", + "customTextColor", + "backgroundColor", + "customBackgroundColor", + "overlayTextColor", + "customOverlayTextColor", + "overlayBackgroundColor", + "customOverlayBackgroundColor", + "fontSize", + "customFontSize", + "showSubmenuIcon", + "style", + "openSubmenusOnClick" + ], + "supports": { + "reusable": false, + "html": false, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-page-list-editor", + "style": "wp-block-page-list" +} diff --git a/wp-includes/blocks/page-list/editor-rtl.css b/wp-includes/blocks/page-list/editor-rtl.css new file mode 100644 index 0000000..d3679e9 --- /dev/null +++ b/wp-includes/blocks/page-list/editor-rtl.css @@ -0,0 +1,46 @@ +.wp-block-navigation .wp-block-page-list,.wp-block-navigation .wp-block-page-list>div{ + background-color:inherit; +} +.wp-block-navigation.items-justified-space-between .wp-block-page-list,.wp-block-navigation.items-justified-space-between .wp-block-page-list>div{ + display:contents; + flex:1; +} +.wp-block-navigation.items-justified-space-between.has-child-selected .wp-block-page-list,.wp-block-navigation.items-justified-space-between.has-child-selected .wp-block-page-list>div,.wp-block-navigation.items-justified-space-between.is-selected .wp-block-page-list,.wp-block-navigation.items-justified-space-between.is-selected .wp-block-page-list>div{ + flex:inherit; +} + +.wp-block-navigation .wp-block-navigation__submenu-container>.wp-block-page-list{ + display:block; +} + +.wp-block-pages-list__item__link{ + pointer-events:none; +} + +@media (min-width:600px){ + .wp-block-page-list-modal{ + max-width:480px; + } +} + +.wp-block-page-list-modal-buttons{ + display:flex; + gap:12px; + justify-content:flex-end; +} + +.wp-block-page-list .open-on-click:focus-within>.wp-block-navigation__submenu-container{ + height:auto; + min-width:200px; + opacity:1; + visibility:visible; + width:auto; +} + +.wp-block-page-list .components-notice{ + margin-right:0; +} + +.wp-block-page-list__loading-indicator-container{ + padding:8px 12px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/page-list/editor-rtl.min.css b/wp-includes/blocks/page-list/editor-rtl.min.css new file mode 100644 index 0000000..4c18630 --- /dev/null +++ b/wp-includes/blocks/page-list/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-navigation .wp-block-page-list,.wp-block-navigation .wp-block-page-list>div{background-color:inherit}.wp-block-navigation.items-justified-space-between .wp-block-page-list,.wp-block-navigation.items-justified-space-between .wp-block-page-list>div{display:contents;flex:1}.wp-block-navigation.items-justified-space-between.has-child-selected .wp-block-page-list,.wp-block-navigation.items-justified-space-between.has-child-selected .wp-block-page-list>div,.wp-block-navigation.items-justified-space-between.is-selected .wp-block-page-list,.wp-block-navigation.items-justified-space-between.is-selected .wp-block-page-list>div{flex:inherit}.wp-block-navigation .wp-block-navigation__submenu-container>.wp-block-page-list{display:block}.wp-block-pages-list__item__link{pointer-events:none}@media (min-width:600px){.wp-block-page-list-modal{max-width:480px}}.wp-block-page-list-modal-buttons{display:flex;gap:12px;justify-content:flex-end}.wp-block-page-list .open-on-click:focus-within>.wp-block-navigation__submenu-container{height:auto;min-width:200px;opacity:1;visibility:visible;width:auto}.wp-block-page-list .components-notice{margin-right:0}.wp-block-page-list__loading-indicator-container{padding:8px 12px}
\ No newline at end of file diff --git a/wp-includes/blocks/page-list/editor.css b/wp-includes/blocks/page-list/editor.css new file mode 100644 index 0000000..82610f9 --- /dev/null +++ b/wp-includes/blocks/page-list/editor.css @@ -0,0 +1,46 @@ +.wp-block-navigation .wp-block-page-list,.wp-block-navigation .wp-block-page-list>div{ + background-color:inherit; +} +.wp-block-navigation.items-justified-space-between .wp-block-page-list,.wp-block-navigation.items-justified-space-between .wp-block-page-list>div{ + display:contents; + flex:1; +} +.wp-block-navigation.items-justified-space-between.has-child-selected .wp-block-page-list,.wp-block-navigation.items-justified-space-between.has-child-selected .wp-block-page-list>div,.wp-block-navigation.items-justified-space-between.is-selected .wp-block-page-list,.wp-block-navigation.items-justified-space-between.is-selected .wp-block-page-list>div{ + flex:inherit; +} + +.wp-block-navigation .wp-block-navigation__submenu-container>.wp-block-page-list{ + display:block; +} + +.wp-block-pages-list__item__link{ + pointer-events:none; +} + +@media (min-width:600px){ + .wp-block-page-list-modal{ + max-width:480px; + } +} + +.wp-block-page-list-modal-buttons{ + display:flex; + gap:12px; + justify-content:flex-end; +} + +.wp-block-page-list .open-on-click:focus-within>.wp-block-navigation__submenu-container{ + height:auto; + min-width:200px; + opacity:1; + visibility:visible; + width:auto; +} + +.wp-block-page-list .components-notice{ + margin-left:0; +} + +.wp-block-page-list__loading-indicator-container{ + padding:8px 12px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/page-list/editor.min.css b/wp-includes/blocks/page-list/editor.min.css new file mode 100644 index 0000000..f0ac772 --- /dev/null +++ b/wp-includes/blocks/page-list/editor.min.css @@ -0,0 +1 @@ +.wp-block-navigation .wp-block-page-list,.wp-block-navigation .wp-block-page-list>div{background-color:inherit}.wp-block-navigation.items-justified-space-between .wp-block-page-list,.wp-block-navigation.items-justified-space-between .wp-block-page-list>div{display:contents;flex:1}.wp-block-navigation.items-justified-space-between.has-child-selected .wp-block-page-list,.wp-block-navigation.items-justified-space-between.has-child-selected .wp-block-page-list>div,.wp-block-navigation.items-justified-space-between.is-selected .wp-block-page-list,.wp-block-navigation.items-justified-space-between.is-selected .wp-block-page-list>div{flex:inherit}.wp-block-navigation .wp-block-navigation__submenu-container>.wp-block-page-list{display:block}.wp-block-pages-list__item__link{pointer-events:none}@media (min-width:600px){.wp-block-page-list-modal{max-width:480px}}.wp-block-page-list-modal-buttons{display:flex;gap:12px;justify-content:flex-end}.wp-block-page-list .open-on-click:focus-within>.wp-block-navigation__submenu-container{height:auto;min-width:200px;opacity:1;visibility:visible;width:auto}.wp-block-page-list .components-notice{margin-left:0}.wp-block-page-list__loading-indicator-container{padding:8px 12px}
\ No newline at end of file diff --git a/wp-includes/blocks/page-list/style-rtl.css b/wp-includes/blocks/page-list/style-rtl.css new file mode 100644 index 0000000..f0cb762 --- /dev/null +++ b/wp-includes/blocks/page-list/style-rtl.css @@ -0,0 +1,11 @@ +.wp-block-navigation .wp-block-page-list{ + align-items:var(--navigation-layout-align, initial); + background-color:inherit; + display:flex; + flex-direction:var(--navigation-layout-direction, initial); + flex-wrap:var(--navigation-layout-wrap, wrap); + justify-content:var(--navigation-layout-justify, initial); +} +.wp-block-navigation .wp-block-navigation-item{ + background-color:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/page-list/style-rtl.min.css b/wp-includes/blocks/page-list/style-rtl.min.css new file mode 100644 index 0000000..68fc6f7 --- /dev/null +++ b/wp-includes/blocks/page-list/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-navigation .wp-block-page-list{align-items:var(--navigation-layout-align,initial);background-color:inherit;display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial)}.wp-block-navigation .wp-block-navigation-item{background-color:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/page-list/style.css b/wp-includes/blocks/page-list/style.css new file mode 100644 index 0000000..f0cb762 --- /dev/null +++ b/wp-includes/blocks/page-list/style.css @@ -0,0 +1,11 @@ +.wp-block-navigation .wp-block-page-list{ + align-items:var(--navigation-layout-align, initial); + background-color:inherit; + display:flex; + flex-direction:var(--navigation-layout-direction, initial); + flex-wrap:var(--navigation-layout-wrap, wrap); + justify-content:var(--navigation-layout-justify, initial); +} +.wp-block-navigation .wp-block-navigation-item{ + background-color:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/page-list/style.min.css b/wp-includes/blocks/page-list/style.min.css new file mode 100644 index 0000000..68fc6f7 --- /dev/null +++ b/wp-includes/blocks/page-list/style.min.css @@ -0,0 +1 @@ +.wp-block-navigation .wp-block-page-list{align-items:var(--navigation-layout-align,initial);background-color:inherit;display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial)}.wp-block-navigation .wp-block-navigation-item{background-color:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/paragraph/block.json b/wp-includes/blocks/paragraph/block.json new file mode 100644 index 0000000..85f56f4 --- /dev/null +++ b/wp-includes/blocks/paragraph/block.json @@ -0,0 +1,73 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/paragraph", + "title": "Paragraph", + "category": "text", + "description": "Start with the basic building block of all narrative.", + "keywords": [ "text" ], + "textdomain": "default", + "usesContext": [ "postId" ], + "attributes": { + "align": { + "type": "string" + }, + "content": { + "type": "string", + "source": "html", + "selector": "p", + "default": "", + "__experimentalRole": "content" + }, + "dropCap": { + "type": "boolean", + "default": false + }, + "placeholder": { + "type": "string" + }, + "direction": { + "type": "string", + "enum": [ "ltr", "rtl" ] + } + }, + "supports": { + "anchor": true, + "className": false, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "__experimentalConnections": true, + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalTextDecoration": true, + "__experimentalFontStyle": true, + "__experimentalFontWeight": true, + "__experimentalLetterSpacing": true, + "__experimentalTextTransform": true, + "__experimentalWritingMode": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "__experimentalSelector": "p", + "__unstablePasteTextInline": true + }, + "editorStyle": "wp-block-paragraph-editor", + "style": "wp-block-paragraph" +} diff --git a/wp-includes/blocks/paragraph/editor-rtl.css b/wp-includes/blocks/paragraph/editor-rtl.css new file mode 100644 index 0000000..335deb0 --- /dev/null +++ b/wp-includes/blocks/paragraph/editor-rtl.css @@ -0,0 +1,15 @@ +.block-editor-block-list__block[data-type="core/paragraph"].has-drop-cap:focus{ + min-height:auto !important; +} + +.block-editor-block-list__block[data-empty=true] [data-rich-text-placeholder]{ + opacity:1; +} + +.block-editor-block-list__block[data-empty=true]+.block-editor-block-list__block[data-empty=true]:not([data-custom-placeholder=true]) [data-rich-text-placeholder]{ + opacity:0; +} + +.block-editor-block-list__block[data-type="core/paragraph"].has-text-align-left[style*="writing-mode: vertical-lr"],.block-editor-block-list__block[data-type="core/paragraph"].has-text-align-right[style*="writing-mode: vertical-rl"]{ + rotate:180deg; +}
\ No newline at end of file diff --git a/wp-includes/blocks/paragraph/editor-rtl.min.css b/wp-includes/blocks/paragraph/editor-rtl.min.css new file mode 100644 index 0000000..97cee94 --- /dev/null +++ b/wp-includes/blocks/paragraph/editor-rtl.min.css @@ -0,0 +1 @@ +.block-editor-block-list__block[data-type="core/paragraph"].has-drop-cap:focus{min-height:auto!important}.block-editor-block-list__block[data-empty=true] [data-rich-text-placeholder]{opacity:1}.block-editor-block-list__block[data-empty=true]+.block-editor-block-list__block[data-empty=true]:not([data-custom-placeholder=true]) [data-rich-text-placeholder]{opacity:0}.block-editor-block-list__block[data-type="core/paragraph"].has-text-align-left[style*="writing-mode: vertical-lr"],.block-editor-block-list__block[data-type="core/paragraph"].has-text-align-right[style*="writing-mode: vertical-rl"]{rotate:180deg}
\ No newline at end of file diff --git a/wp-includes/blocks/paragraph/editor.css b/wp-includes/blocks/paragraph/editor.css new file mode 100644 index 0000000..335deb0 --- /dev/null +++ b/wp-includes/blocks/paragraph/editor.css @@ -0,0 +1,15 @@ +.block-editor-block-list__block[data-type="core/paragraph"].has-drop-cap:focus{ + min-height:auto !important; +} + +.block-editor-block-list__block[data-empty=true] [data-rich-text-placeholder]{ + opacity:1; +} + +.block-editor-block-list__block[data-empty=true]+.block-editor-block-list__block[data-empty=true]:not([data-custom-placeholder=true]) [data-rich-text-placeholder]{ + opacity:0; +} + +.block-editor-block-list__block[data-type="core/paragraph"].has-text-align-left[style*="writing-mode: vertical-lr"],.block-editor-block-list__block[data-type="core/paragraph"].has-text-align-right[style*="writing-mode: vertical-rl"]{ + rotate:180deg; +}
\ No newline at end of file diff --git a/wp-includes/blocks/paragraph/editor.min.css b/wp-includes/blocks/paragraph/editor.min.css new file mode 100644 index 0000000..97cee94 --- /dev/null +++ b/wp-includes/blocks/paragraph/editor.min.css @@ -0,0 +1 @@ +.block-editor-block-list__block[data-type="core/paragraph"].has-drop-cap:focus{min-height:auto!important}.block-editor-block-list__block[data-empty=true] [data-rich-text-placeholder]{opacity:1}.block-editor-block-list__block[data-empty=true]+.block-editor-block-list__block[data-empty=true]:not([data-custom-placeholder=true]) [data-rich-text-placeholder]{opacity:0}.block-editor-block-list__block[data-type="core/paragraph"].has-text-align-left[style*="writing-mode: vertical-lr"],.block-editor-block-list__block[data-type="core/paragraph"].has-text-align-right[style*="writing-mode: vertical-rl"]{rotate:180deg}
\ No newline at end of file diff --git a/wp-includes/blocks/paragraph/style-rtl.css b/wp-includes/blocks/paragraph/style-rtl.css new file mode 100644 index 0000000..b420b54 --- /dev/null +++ b/wp-includes/blocks/paragraph/style-rtl.css @@ -0,0 +1,46 @@ +.is-small-text{ + font-size:.875em; +} + +.is-regular-text{ + font-size:1em; +} + +.is-large-text{ + font-size:2.25em; +} + +.is-larger-text{ + font-size:3em; +} + +.has-drop-cap:not(:focus):first-letter{ + float:right; + font-size:8.4em; + font-style:normal; + font-weight:100; + line-height:.68; + margin:.05em 0 0 .1em; + text-transform:uppercase; +} + +body.rtl .has-drop-cap:not(:focus):first-letter{ + float:none; + margin-right:.1em; +} + +p.has-drop-cap.has-background{ + overflow:hidden; +} + +p.has-background{ + padding:1.25em 2.375em; +} + +:where(p.has-text-color:not(.has-link-color)) a{ + color:inherit; +} + +p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{ + rotate:180deg; +}
\ No newline at end of file diff --git a/wp-includes/blocks/paragraph/style-rtl.min.css b/wp-includes/blocks/paragraph/style-rtl.min.css new file mode 100644 index 0000000..d48810f --- /dev/null +++ b/wp-includes/blocks/paragraph/style-rtl.min.css @@ -0,0 +1 @@ +.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:right;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em 0 0 .1em;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-right:.1em}p.has-drop-cap.has-background{overflow:hidden}p.has-background{padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}
\ No newline at end of file diff --git a/wp-includes/blocks/paragraph/style.css b/wp-includes/blocks/paragraph/style.css new file mode 100644 index 0000000..849c89a --- /dev/null +++ b/wp-includes/blocks/paragraph/style.css @@ -0,0 +1,46 @@ +.is-small-text{ + font-size:.875em; +} + +.is-regular-text{ + font-size:1em; +} + +.is-large-text{ + font-size:2.25em; +} + +.is-larger-text{ + font-size:3em; +} + +.has-drop-cap:not(:focus):first-letter{ + float:left; + font-size:8.4em; + font-style:normal; + font-weight:100; + line-height:.68; + margin:.05em .1em 0 0; + text-transform:uppercase; +} + +body.rtl .has-drop-cap:not(:focus):first-letter{ + float:none; + margin-left:.1em; +} + +p.has-drop-cap.has-background{ + overflow:hidden; +} + +p.has-background{ + padding:1.25em 2.375em; +} + +:where(p.has-text-color:not(.has-link-color)) a{ + color:inherit; +} + +p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{ + rotate:180deg; +}
\ No newline at end of file diff --git a/wp-includes/blocks/paragraph/style.min.css b/wp-includes/blocks/paragraph/style.min.css new file mode 100644 index 0000000..5a0f9cb --- /dev/null +++ b/wp-includes/blocks/paragraph/style.min.css @@ -0,0 +1 @@ +.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}p.has-background{padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}
\ No newline at end of file diff --git a/wp-includes/blocks/pattern.php b/wp-includes/blocks/pattern.php new file mode 100644 index 0000000..f05bb33 --- /dev/null +++ b/wp-includes/blocks/pattern.php @@ -0,0 +1,54 @@ +<?php +/** + * Server-side rendering of the `core/pattern` block. + * + * @package WordPress + */ + +/** + * Registers the `core/pattern` block on the server. + */ +function register_block_core_pattern() { + register_block_type_from_metadata( + __DIR__ . '/pattern', + array( + 'render_callback' => 'render_block_core_pattern', + ) + ); +} + +/** + * Renders the `core/pattern` block on the server. + * + * @since 6.3.0 Backwards compatibility: blocks with no `syncStatus` attribute do not receive block wrapper. + * + * @param array $attributes Block attributes. + * + * @return string Returns the output of the pattern. + */ +function render_block_core_pattern( $attributes ) { + if ( empty( $attributes['slug'] ) ) { + return ''; + } + + $slug = $attributes['slug']; + $registry = WP_Block_Patterns_Registry::get_instance(); + + if ( ! $registry->is_registered( $slug ) ) { + return ''; + } + + $pattern = $registry->get_registered( $slug ); + $content = $pattern['content']; + + // Backward compatibility for handling Block Hooks and injecting the theme attribute in the Gutenberg plugin. + // This can be removed when the minimum supported WordPress is >= 6.4. + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN && ! function_exists( 'traverse_and_serialize_blocks' ) ) { + $blocks = parse_blocks( $content ); + $content = gutenberg_serialize_blocks( $blocks ); + } + + return do_blocks( $content ); +} + +add_action( 'init', 'register_block_core_pattern' ); diff --git a/wp-includes/blocks/pattern/block.json b/wp-includes/blocks/pattern/block.json new file mode 100644 index 0000000..e9a85a9 --- /dev/null +++ b/wp-includes/blocks/pattern/block.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/pattern", + "title": "Pattern placeholder", + "category": "theme", + "description": "Show a block pattern.", + "supports": { + "html": false, + "inserter": false + }, + "textdomain": "default", + "attributes": { + "slug": { + "type": "string" + } + } +} diff --git a/wp-includes/blocks/post-author-biography.php b/wp-includes/blocks/post-author-biography.php new file mode 100644 index 0000000..3ea6ecb --- /dev/null +++ b/wp-includes/blocks/post-author-biography.php @@ -0,0 +1,48 @@ +<?php +/** + * Server-side rendering of the `core/post-author-biography` block. + * + * @package WordPress + */ + +/** + * Renders the `core/post-author-biography` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Returns the rendered post author biography block. + */ +function render_block_core_post_author_biography( $attributes, $content, $block ) { + if ( ! isset( $block->context['postId'] ) ) { + return ''; + } + + $author_id = get_post_field( 'post_author', $block->context['postId'] ); + if ( empty( $author_id ) ) { + return ''; + } + + $author_biography = get_the_author_meta( 'description', $author_id ); + if ( empty( $author_biography ) ) { + return ''; + } + + $align_class_name = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}"; + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) ); + + return sprintf( '<div %1$s>', $wrapper_attributes ) . $author_biography . '</div>'; +} + +/** + * Registers the `core/post-author-biography` block on the server. + */ +function register_block_core_post_author_biography() { + register_block_type_from_metadata( + __DIR__ . '/post-author-biography', + array( + 'render_callback' => 'render_block_core_post_author_biography', + ) + ); +} +add_action( 'init', 'register_block_core_post_author_biography' ); diff --git a/wp-includes/blocks/post-author-biography/block.json b/wp-includes/blocks/post-author-biography/block.json new file mode 100644 index 0000000..5d7a4d4 --- /dev/null +++ b/wp-includes/blocks/post-author-biography/block.json @@ -0,0 +1,42 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/post-author-biography", + "title": "Author Biography", + "category": "theme", + "description": "The author biography.", + "textdomain": "default", + "attributes": { + "textAlign": { + "type": "string" + } + }, + "usesContext": [ "postType", "postId" ], + "supports": { + "spacing": { + "margin": true, + "padding": true + }, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/post-author-name.php b/wp-includes/blocks/post-author-name.php new file mode 100644 index 0000000..c5c6d14 --- /dev/null +++ b/wp-includes/blocks/post-author-name.php @@ -0,0 +1,54 @@ +<?php +/** + * Server-side rendering of the `core/post-author-name` block. + * + * @package WordPress + */ + +/** + * Renders the `core/post-author-name` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Returns the rendered post author name block. + */ +function render_block_core_post_author_name( $attributes, $content, $block ) { + if ( ! isset( $block->context['postId'] ) ) { + return ''; + } + + $author_id = get_post_field( 'post_author', $block->context['postId'] ); + if ( empty( $author_id ) ) { + return ''; + } + + $author_name = get_the_author_meta( 'display_name', $author_id ); + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { + $author_name = sprintf( '<a href="%1$s" target="%2$s" class="wp-block-post-author-name__link">%3$s</a>', get_author_posts_url( $author_id ), esc_attr( $attributes['linkTarget'] ), $author_name ); + } + + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return sprintf( '<div %1$s>%2$s</div>', $wrapper_attributes, $author_name ); +} + +/** + * Registers the `core/post-author-name` block on the server. + */ +function register_block_core_post_author_name() { + register_block_type_from_metadata( + __DIR__ . '/post-author-name', + array( + 'render_callback' => 'render_block_core_post_author_name', + ) + ); +} +add_action( 'init', 'register_block_core_post_author_name' ); diff --git a/wp-includes/blocks/post-author-name/block.json b/wp-includes/blocks/post-author-name/block.json new file mode 100644 index 0000000..89e4b38 --- /dev/null +++ b/wp-includes/blocks/post-author-name/block.json @@ -0,0 +1,52 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/post-author-name", + "title": "Author Name", + "category": "theme", + "description": "The author name.", + "textdomain": "default", + "attributes": { + "textAlign": { + "type": "string" + }, + "isLink": { + "type": "boolean", + "default": false + }, + "linkTarget": { + "type": "string", + "default": "_self" + } + }, + "usesContext": [ "postType", "postId" ], + "supports": { + "html": false, + "spacing": { + "margin": true, + "padding": true + }, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true, + "link": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/post-author.php b/wp-includes/blocks/post-author.php new file mode 100644 index 0000000..898d947 --- /dev/null +++ b/wp-includes/blocks/post-author.php @@ -0,0 +1,73 @@ +<?php +/** + * Server-side rendering of the `core/post-author` block. + * + * @package WordPress + */ + +/** + * Renders the `core/post-author` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Returns the rendered author block. + */ +function render_block_core_post_author( $attributes, $content, $block ) { + if ( ! isset( $block->context['postId'] ) ) { + $author_id = get_query_var( 'author' ); + } else { + $author_id = get_post_field( 'post_author', $block->context['postId'] ); + } + + if ( empty( $author_id ) ) { + return ''; + } + + $avatar = ! empty( $attributes['avatarSize'] ) ? get_avatar( + $author_id, + $attributes['avatarSize'] + ) : null; + + $link = get_author_posts_url( $author_id ); + $author_name = get_the_author_meta( 'display_name', $author_id ); + if ( ! empty( $attributes['isLink'] && ! empty( $attributes['linkTarget'] ) ) ) { + $author_name = sprintf( '<a href="%1$s" target="%2$s">%3$s</a>', esc_url( $link ), esc_attr( $attributes['linkTarget'] ), $author_name ); + } + + $byline = ! empty( $attributes['byline'] ) ? $attributes['byline'] : false; + $classes = array(); + if ( isset( $attributes['itemsJustification'] ) ) { + $classes[] = 'items-justified-' . $attributes['itemsJustification']; + } + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return sprintf( '<div %1$s>', $wrapper_attributes ) . + ( ! empty( $attributes['showAvatar'] ) ? '<div class="wp-block-post-author__avatar">' . $avatar . '</div>' : '' ) . + '<div class="wp-block-post-author__content">' . + ( ! empty( $byline ) ? '<p class="wp-block-post-author__byline">' . wp_kses_post( $byline ) . '</p>' : '' ) . + '<p class="wp-block-post-author__name">' . $author_name . '</p>' . + ( ! empty( $attributes['showBio'] ) ? '<p class="wp-block-post-author__bio">' . get_the_author_meta( 'user_description', $author_id ) . '</p>' : '' ) . + '</div>' . + '</div>'; +} + +/** + * Registers the `core/post-author` block on the server. + */ +function register_block_core_post_author() { + register_block_type_from_metadata( + __DIR__ . '/post-author', + array( + 'render_callback' => 'render_block_core_post_author', + ) + ); +} +add_action( 'init', 'register_block_core_post_author' ); diff --git a/wp-includes/blocks/post-author/block.json b/wp-includes/blocks/post-author/block.json new file mode 100644 index 0000000..47dceef --- /dev/null +++ b/wp-includes/blocks/post-author/block.json @@ -0,0 +1,67 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/post-author", + "title": "Author", + "category": "theme", + "description": "Display post author details such as name, avatar, and bio.", + "textdomain": "default", + "attributes": { + "textAlign": { + "type": "string" + }, + "avatarSize": { + "type": "number", + "default": 48 + }, + "showAvatar": { + "type": "boolean", + "default": true + }, + "showBio": { + "type": "boolean" + }, + "byline": { + "type": "string" + }, + "isLink": { + "type": "boolean", + "default": false + }, + "linkTarget": { + "type": "string", + "default": "_self" + } + }, + "usesContext": [ "postType", "postId", "queryId" ], + "supports": { + "html": false, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "color": { + "gradients": true, + "link": true, + "__experimentalDuotone": ".wp-block-post-author__avatar img", + "__experimentalDefaultControls": { + "background": true, + "text": true + } + } + }, + "style": "wp-block-post-author" +} diff --git a/wp-includes/blocks/post-author/style-rtl.css b/wp-includes/blocks/post-author/style-rtl.css new file mode 100644 index 0000000..88ef6ef --- /dev/null +++ b/wp-includes/blocks/post-author/style-rtl.css @@ -0,0 +1,24 @@ +.wp-block-post-author{ + display:flex; + flex-wrap:wrap; +} +.wp-block-post-author__byline{ + font-size:.5em; + margin-bottom:0; + margin-top:0; + width:100%; +} +.wp-block-post-author__avatar{ + margin-left:1em; +} +.wp-block-post-author__bio{ + font-size:.7em; + margin-bottom:.7em; +} +.wp-block-post-author__content{ + flex-basis:0; + flex-grow:1; +} +.wp-block-post-author__name{ + margin:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-author/style-rtl.min.css b/wp-includes/blocks/post-author/style-rtl.min.css new file mode 100644 index 0000000..36ddfd1 --- /dev/null +++ b/wp-includes/blocks/post-author/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-post-author{display:flex;flex-wrap:wrap}.wp-block-post-author__byline{font-size:.5em;margin-bottom:0;margin-top:0;width:100%}.wp-block-post-author__avatar{margin-left:1em}.wp-block-post-author__bio{font-size:.7em;margin-bottom:.7em}.wp-block-post-author__content{flex-basis:0;flex-grow:1}.wp-block-post-author__name{margin:0}
\ No newline at end of file diff --git a/wp-includes/blocks/post-author/style.css b/wp-includes/blocks/post-author/style.css new file mode 100644 index 0000000..6dc3e56 --- /dev/null +++ b/wp-includes/blocks/post-author/style.css @@ -0,0 +1,24 @@ +.wp-block-post-author{ + display:flex; + flex-wrap:wrap; +} +.wp-block-post-author__byline{ + font-size:.5em; + margin-bottom:0; + margin-top:0; + width:100%; +} +.wp-block-post-author__avatar{ + margin-right:1em; +} +.wp-block-post-author__bio{ + font-size:.7em; + margin-bottom:.7em; +} +.wp-block-post-author__content{ + flex-basis:0; + flex-grow:1; +} +.wp-block-post-author__name{ + margin:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-author/style.min.css b/wp-includes/blocks/post-author/style.min.css new file mode 100644 index 0000000..049ef12 --- /dev/null +++ b/wp-includes/blocks/post-author/style.min.css @@ -0,0 +1 @@ +.wp-block-post-author{display:flex;flex-wrap:wrap}.wp-block-post-author__byline{font-size:.5em;margin-bottom:0;margin-top:0;width:100%}.wp-block-post-author__avatar{margin-right:1em}.wp-block-post-author__bio{font-size:.7em;margin-bottom:.7em}.wp-block-post-author__content{flex-basis:0;flex-grow:1}.wp-block-post-author__name{margin:0}
\ No newline at end of file diff --git a/wp-includes/blocks/post-comments-form.php b/wp-includes/blocks/post-comments-form.php new file mode 100644 index 0000000..644b02a --- /dev/null +++ b/wp-includes/blocks/post-comments-form.php @@ -0,0 +1,82 @@ +<?php +/** + * Server-side rendering of the `core/post-comments-form` block. + * + * @package WordPress + */ + +/** + * Renders the `core/post-comments-form` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Returns the filtered post comments form for the current post. + */ +function render_block_core_post_comments_form( $attributes, $content, $block ) { + if ( ! isset( $block->context['postId'] ) ) { + return ''; + } + + if ( post_password_required( $block->context['postId'] ) ) { + return; + } + + $classes = array( 'comment-respond' ); // See comment further below. + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + add_filter( 'comment_form_defaults', 'post_comments_form_block_form_defaults' ); + + ob_start(); + comment_form( array(), $block->context['postId'] ); + $form = ob_get_clean(); + + remove_filter( 'comment_form_defaults', 'post_comments_form_block_form_defaults' ); + + // We use the outermost wrapping `<div />` returned by `comment_form()` + // which is identified by its default classname `comment-respond` to inject + // our wrapper attributes. This way, it is guaranteed that all styling applied + // to the block is carried along when the comment form is moved to the location + // of the 'Reply' link that the user clicked by Core's `comment-reply.js` script. + $form = str_replace( 'class="comment-respond"', $wrapper_attributes, $form ); + + // Enqueue the comment-reply script. + wp_enqueue_script( 'comment-reply' ); + + return $form; +} + +/** + * Registers the `core/post-comments-form` block on the server. + */ +function register_block_core_post_comments_form() { + register_block_type_from_metadata( + __DIR__ . '/post-comments-form', + array( + 'render_callback' => 'render_block_core_post_comments_form', + ) + ); +} +add_action( 'init', 'register_block_core_post_comments_form' ); + +/** + * Use the button block classes for the form-submit button. + * + * @param array $fields The default comment form arguments. + * + * @return array Returns the modified fields. + */ +function post_comments_form_block_form_defaults( $fields ) { + if ( wp_is_block_theme() ) { + $fields['submit_button'] = '<input name="%1$s" type="submit" id="%2$s" class="wp-block-button__link ' . wp_theme_get_element_class_name( 'button' ) . '" value="%4$s" />'; + $fields['submit_field'] = '<p class="form-submit wp-block-button">%1$s %2$s</p>'; + } + + return $fields; +} diff --git a/wp-includes/blocks/post-comments-form/block.json b/wp-includes/blocks/post-comments-form/block.json new file mode 100644 index 0000000..ff157be --- /dev/null +++ b/wp-includes/blocks/post-comments-form/block.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/post-comments-form", + "title": "Comments Form", + "category": "theme", + "description": "Display a post's comments form.", + "textdomain": "default", + "attributes": { + "textAlign": { + "type": "string" + } + }, + "usesContext": [ "postId", "postType" ], + "supports": { + "html": false, + "color": { + "gradients": true, + "heading": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontStyle": true, + "__experimentalFontWeight": true, + "__experimentalLetterSpacing": true, + "__experimentalTextTransform": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-post-comments-form-editor", + "style": [ + "wp-block-post-comments-form", + "wp-block-buttons", + "wp-block-button" + ] +} diff --git a/wp-includes/blocks/post-comments-form/editor-rtl.css b/wp-includes/blocks/post-comments-form/editor-rtl.css new file mode 100644 index 0000000..0e92022 --- /dev/null +++ b/wp-includes/blocks/post-comments-form/editor-rtl.css @@ -0,0 +1,6 @@ +.wp-block-post-comments-form *{ + pointer-events:none; +} +.wp-block-post-comments-form .block-editor-warning *{ + pointer-events:auto; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-comments-form/editor-rtl.min.css b/wp-includes/blocks/post-comments-form/editor-rtl.min.css new file mode 100644 index 0000000..bff24e5 --- /dev/null +++ b/wp-includes/blocks/post-comments-form/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-post-comments-form *{pointer-events:none}.wp-block-post-comments-form .block-editor-warning *{pointer-events:auto}
\ No newline at end of file diff --git a/wp-includes/blocks/post-comments-form/editor.css b/wp-includes/blocks/post-comments-form/editor.css new file mode 100644 index 0000000..0e92022 --- /dev/null +++ b/wp-includes/blocks/post-comments-form/editor.css @@ -0,0 +1,6 @@ +.wp-block-post-comments-form *{ + pointer-events:none; +} +.wp-block-post-comments-form .block-editor-warning *{ + pointer-events:auto; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-comments-form/editor.min.css b/wp-includes/blocks/post-comments-form/editor.min.css new file mode 100644 index 0000000..bff24e5 --- /dev/null +++ b/wp-includes/blocks/post-comments-form/editor.min.css @@ -0,0 +1 @@ +.wp-block-post-comments-form *{pointer-events:none}.wp-block-post-comments-form .block-editor-warning *{pointer-events:auto}
\ No newline at end of file diff --git a/wp-includes/blocks/post-comments-form/style-rtl.css b/wp-includes/blocks/post-comments-form/style-rtl.css new file mode 100644 index 0000000..7e14dd1 --- /dev/null +++ b/wp-includes/blocks/post-comments-form/style-rtl.css @@ -0,0 +1,59 @@ +.wp-block-post-comments-form{ + box-sizing:border-box; +} +.wp-block-post-comments-form[style*=font-weight] :where(.comment-reply-title){ + font-weight:inherit; +} +.wp-block-post-comments-form[style*=font-family] :where(.comment-reply-title){ + font-family:inherit; +} +.wp-block-post-comments-form[class*=-font-size] :where(.comment-reply-title),.wp-block-post-comments-form[style*=font-size] :where(.comment-reply-title){ + font-size:inherit; +} +.wp-block-post-comments-form[style*=line-height] :where(.comment-reply-title){ + line-height:inherit; +} +.wp-block-post-comments-form[style*=font-style] :where(.comment-reply-title){ + font-style:inherit; +} +.wp-block-post-comments-form[style*=letter-spacing] :where(.comment-reply-title){ + letter-spacing:inherit; +} +.wp-block-post-comments-form input[type=submit]{ + box-shadow:none; + cursor:pointer; + display:inline-block; + overflow-wrap:break-word; + text-align:center; +} +.wp-block-post-comments-form input:not([type=submit]),.wp-block-post-comments-form textarea{ + border:1px solid #949494; + font-family:inherit; + font-size:1em; +} +.wp-block-post-comments-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments-form textarea{ + padding:calc(.667em + 2px); +} +.wp-block-post-comments-form .comment-form input:not([type=submit]):not([type=checkbox]):not([type=hidden]),.wp-block-post-comments-form .comment-form textarea{ + box-sizing:border-box; + display:block; + width:100%; +} +.wp-block-post-comments-form .comment-form-author label,.wp-block-post-comments-form .comment-form-email label,.wp-block-post-comments-form .comment-form-url label{ + display:block; + margin-bottom:.25em; +} +.wp-block-post-comments-form .comment-form-cookies-consent{ + display:flex; + gap:.25em; +} +.wp-block-post-comments-form .comment-form-cookies-consent #wp-comment-cookies-consent{ + margin-top:.35em; +} +.wp-block-post-comments-form .comment-reply-title{ + margin-bottom:0; +} +.wp-block-post-comments-form .comment-reply-title :where(small){ + font-size:var(--wp--preset--font-size--medium, smaller); + margin-right:.5em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-comments-form/style-rtl.min.css b/wp-includes/blocks/post-comments-form/style-rtl.min.css new file mode 100644 index 0000000..8195389 --- /dev/null +++ b/wp-includes/blocks/post-comments-form/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-post-comments-form{box-sizing:border-box}.wp-block-post-comments-form[style*=font-weight] :where(.comment-reply-title){font-weight:inherit}.wp-block-post-comments-form[style*=font-family] :where(.comment-reply-title){font-family:inherit}.wp-block-post-comments-form[class*=-font-size] :where(.comment-reply-title),.wp-block-post-comments-form[style*=font-size] :where(.comment-reply-title){font-size:inherit}.wp-block-post-comments-form[style*=line-height] :where(.comment-reply-title){line-height:inherit}.wp-block-post-comments-form[style*=font-style] :where(.comment-reply-title){font-style:inherit}.wp-block-post-comments-form[style*=letter-spacing] :where(.comment-reply-title){letter-spacing:inherit}.wp-block-post-comments-form input[type=submit]{box-shadow:none;cursor:pointer;display:inline-block;overflow-wrap:break-word;text-align:center}.wp-block-post-comments-form input:not([type=submit]),.wp-block-post-comments-form textarea{border:1px solid #949494;font-family:inherit;font-size:1em}.wp-block-post-comments-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments-form textarea{padding:calc(.667em + 2px)}.wp-block-post-comments-form .comment-form input:not([type=submit]):not([type=checkbox]):not([type=hidden]),.wp-block-post-comments-form .comment-form textarea{box-sizing:border-box;display:block;width:100%}.wp-block-post-comments-form .comment-form-author label,.wp-block-post-comments-form .comment-form-email label,.wp-block-post-comments-form .comment-form-url label{display:block;margin-bottom:.25em}.wp-block-post-comments-form .comment-form-cookies-consent{display:flex;gap:.25em}.wp-block-post-comments-form .comment-form-cookies-consent #wp-comment-cookies-consent{margin-top:.35em}.wp-block-post-comments-form .comment-reply-title{margin-bottom:0}.wp-block-post-comments-form .comment-reply-title :where(small){font-size:var(--wp--preset--font-size--medium,smaller);margin-right:.5em}
\ No newline at end of file diff --git a/wp-includes/blocks/post-comments-form/style.css b/wp-includes/blocks/post-comments-form/style.css new file mode 100644 index 0000000..fac2c07 --- /dev/null +++ b/wp-includes/blocks/post-comments-form/style.css @@ -0,0 +1,59 @@ +.wp-block-post-comments-form{ + box-sizing:border-box; +} +.wp-block-post-comments-form[style*=font-weight] :where(.comment-reply-title){ + font-weight:inherit; +} +.wp-block-post-comments-form[style*=font-family] :where(.comment-reply-title){ + font-family:inherit; +} +.wp-block-post-comments-form[class*=-font-size] :where(.comment-reply-title),.wp-block-post-comments-form[style*=font-size] :where(.comment-reply-title){ + font-size:inherit; +} +.wp-block-post-comments-form[style*=line-height] :where(.comment-reply-title){ + line-height:inherit; +} +.wp-block-post-comments-form[style*=font-style] :where(.comment-reply-title){ + font-style:inherit; +} +.wp-block-post-comments-form[style*=letter-spacing] :where(.comment-reply-title){ + letter-spacing:inherit; +} +.wp-block-post-comments-form input[type=submit]{ + box-shadow:none; + cursor:pointer; + display:inline-block; + overflow-wrap:break-word; + text-align:center; +} +.wp-block-post-comments-form input:not([type=submit]),.wp-block-post-comments-form textarea{ + border:1px solid #949494; + font-family:inherit; + font-size:1em; +} +.wp-block-post-comments-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments-form textarea{ + padding:calc(.667em + 2px); +} +.wp-block-post-comments-form .comment-form input:not([type=submit]):not([type=checkbox]):not([type=hidden]),.wp-block-post-comments-form .comment-form textarea{ + box-sizing:border-box; + display:block; + width:100%; +} +.wp-block-post-comments-form .comment-form-author label,.wp-block-post-comments-form .comment-form-email label,.wp-block-post-comments-form .comment-form-url label{ + display:block; + margin-bottom:.25em; +} +.wp-block-post-comments-form .comment-form-cookies-consent{ + display:flex; + gap:.25em; +} +.wp-block-post-comments-form .comment-form-cookies-consent #wp-comment-cookies-consent{ + margin-top:.35em; +} +.wp-block-post-comments-form .comment-reply-title{ + margin-bottom:0; +} +.wp-block-post-comments-form .comment-reply-title :where(small){ + font-size:var(--wp--preset--font-size--medium, smaller); + margin-left:.5em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-comments-form/style.min.css b/wp-includes/blocks/post-comments-form/style.min.css new file mode 100644 index 0000000..db9afc1 --- /dev/null +++ b/wp-includes/blocks/post-comments-form/style.min.css @@ -0,0 +1 @@ +.wp-block-post-comments-form{box-sizing:border-box}.wp-block-post-comments-form[style*=font-weight] :where(.comment-reply-title){font-weight:inherit}.wp-block-post-comments-form[style*=font-family] :where(.comment-reply-title){font-family:inherit}.wp-block-post-comments-form[class*=-font-size] :where(.comment-reply-title),.wp-block-post-comments-form[style*=font-size] :where(.comment-reply-title){font-size:inherit}.wp-block-post-comments-form[style*=line-height] :where(.comment-reply-title){line-height:inherit}.wp-block-post-comments-form[style*=font-style] :where(.comment-reply-title){font-style:inherit}.wp-block-post-comments-form[style*=letter-spacing] :where(.comment-reply-title){letter-spacing:inherit}.wp-block-post-comments-form input[type=submit]{box-shadow:none;cursor:pointer;display:inline-block;overflow-wrap:break-word;text-align:center}.wp-block-post-comments-form input:not([type=submit]),.wp-block-post-comments-form textarea{border:1px solid #949494;font-family:inherit;font-size:1em}.wp-block-post-comments-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments-form textarea{padding:calc(.667em + 2px)}.wp-block-post-comments-form .comment-form input:not([type=submit]):not([type=checkbox]):not([type=hidden]),.wp-block-post-comments-form .comment-form textarea{box-sizing:border-box;display:block;width:100%}.wp-block-post-comments-form .comment-form-author label,.wp-block-post-comments-form .comment-form-email label,.wp-block-post-comments-form .comment-form-url label{display:block;margin-bottom:.25em}.wp-block-post-comments-form .comment-form-cookies-consent{display:flex;gap:.25em}.wp-block-post-comments-form .comment-form-cookies-consent #wp-comment-cookies-consent{margin-top:.35em}.wp-block-post-comments-form .comment-reply-title{margin-bottom:0}.wp-block-post-comments-form .comment-reply-title :where(small){font-size:var(--wp--preset--font-size--medium,smaller);margin-left:.5em}
\ No newline at end of file diff --git a/wp-includes/blocks/post-content.php b/wp-includes/blocks/post-content.php new file mode 100644 index 0000000..dd84574 --- /dev/null +++ b/wp-includes/blocks/post-content.php @@ -0,0 +1,75 @@ +<?php +/** + * Server-side rendering of the `core/post-content` block. + * + * @package WordPress + */ + +/** + * Renders the `core/post-content` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Returns the filtered post content of the current post. + */ +function render_block_core_post_content( $attributes, $content, $block ) { + static $seen_ids = array(); + + if ( ! isset( $block->context['postId'] ) ) { + return ''; + } + + $post_id = $block->context['postId']; + + if ( isset( $seen_ids[ $post_id ] ) ) { + // WP_DEBUG_DISPLAY must only be honored when WP_DEBUG. This precedent + // is set in `wp_debug_mode()`. + $is_debug = WP_DEBUG && WP_DEBUG_DISPLAY; + + return $is_debug ? + // translators: Visible only in the front end, this warning takes the place of a faulty block. + __( '[block rendering halted]' ) : + ''; + } + + $seen_ids[ $post_id ] = true; + + // When inside the main loop, we want to use queried object + // so that `the_preview` for the current post can apply. + // We force this behavior by omitting the third argument (post ID) from the `get_the_content`. + $content = get_the_content(); + // Check for nextpage to display page links for paginated posts. + if ( has_block( 'core/nextpage' ) ) { + $content .= wp_link_pages( array( 'echo' => 0 ) ); + } + + /** This filter is documented in wp-includes/post-template.php */ + $content = apply_filters( 'the_content', str_replace( ']]>', ']]>', $content ) ); + unset( $seen_ids[ $post_id ] ); + + if ( empty( $content ) ) { + return ''; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => 'entry-content' ) ); + + return ( + '<div ' . $wrapper_attributes . '>' . + $content . + '</div>' + ); +} + +/** + * Registers the `core/post-content` block on the server. + */ +function register_block_core_post_content() { + register_block_type_from_metadata( + __DIR__ . '/post-content', + array( + 'render_callback' => 'render_block_core_post_content', + ) + ); +} +add_action( 'init', 'register_block_core_post_content' ); diff --git a/wp-includes/blocks/post-content/block.json b/wp-includes/blocks/post-content/block.json new file mode 100644 index 0000000..b0e0487 --- /dev/null +++ b/wp-includes/blocks/post-content/block.json @@ -0,0 +1,43 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/post-content", + "title": "Content", + "category": "theme", + "description": "Displays the contents of a post or page.", + "textdomain": "default", + "usesContext": [ "postId", "postType", "queryId" ], + "supports": { + "align": [ "wide", "full" ], + "html": false, + "layout": true, + "dimensions": { + "minHeight": true + }, + "spacing": { + "blockGap": true + }, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": false, + "text": false + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-post-content-editor" +} diff --git a/wp-includes/blocks/post-date.php b/wp-includes/blocks/post-date.php new file mode 100644 index 0000000..b59db80 --- /dev/null +++ b/wp-includes/blocks/post-date.php @@ -0,0 +1,72 @@ +<?php +/** + * Server-side rendering of the `core/post-date` block. + * + * @package WordPress + */ + +/** + * Renders the `core/post-date` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Returns the filtered post date for the current post wrapped inside "time" tags. + */ +function render_block_core_post_date( $attributes, $content, $block ) { + if ( ! isset( $block->context['postId'] ) ) { + return ''; + } + + $post_ID = $block->context['postId']; + $formatted_date = get_the_date( empty( $attributes['format'] ) ? '' : $attributes['format'], $post_ID ); + $unformatted_date = esc_attr( get_the_date( 'c', $post_ID ) ); + $classes = array(); + + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + + /* + * If the "Display last modified date" setting is enabled, + * only display the modified date if it is later than the publishing date. + */ + if ( isset( $attributes['displayType'] ) && 'modified' === $attributes['displayType'] ) { + if ( get_the_modified_date( 'Ymdhi', $post_ID ) > get_the_date( 'Ymdhi', $post_ID ) ) { + $formatted_date = get_the_modified_date( empty( $attributes['format'] ) ? '' : $attributes['format'], $post_ID ); + $unformatted_date = esc_attr( get_the_modified_date( 'c', $post_ID ) ); + $classes[] = 'wp-block-post-date__modified-date'; + } else { + return ''; + } + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { + $formatted_date = sprintf( '<a href="%1s">%2s</a>', get_the_permalink( $post_ID ), $formatted_date ); + } + + return sprintf( + '<div %1$s><time datetime="%2$s">%3$s</time></div>', + $wrapper_attributes, + $unformatted_date, + $formatted_date + ); +} + +/** + * Registers the `core/post-date` block on the server. + */ +function register_block_core_post_date() { + register_block_type_from_metadata( + __DIR__ . '/post-date', + array( + 'render_callback' => 'render_block_core_post_date', + ) + ); +} +add_action( 'init', 'register_block_core_post_date' ); diff --git a/wp-includes/blocks/post-date/block.json b/wp-includes/blocks/post-date/block.json new file mode 100644 index 0000000..11ebc32 --- /dev/null +++ b/wp-includes/blocks/post-date/block.json @@ -0,0 +1,55 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/post-date", + "title": "Date", + "category": "theme", + "description": "Display the publish date for an entry such as a post or page.", + "textdomain": "default", + "attributes": { + "textAlign": { + "type": "string" + }, + "format": { + "type": "string" + }, + "isLink": { + "type": "boolean", + "default": false + }, + "displayType": { + "type": "string", + "default": "date" + } + }, + "usesContext": [ "postId", "postType", "queryId" ], + "supports": { + "html": false, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true, + "link": true + } + }, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/post-date/style-rtl.css b/wp-includes/blocks/post-date/style-rtl.css new file mode 100644 index 0000000..f8a38e2 --- /dev/null +++ b/wp-includes/blocks/post-date/style-rtl.css @@ -0,0 +1,3 @@ +.wp-block-post-date{ + box-sizing:border-box; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-date/style-rtl.min.css b/wp-includes/blocks/post-date/style-rtl.min.css new file mode 100644 index 0000000..644e013 --- /dev/null +++ b/wp-includes/blocks/post-date/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-post-date{box-sizing:border-box}
\ No newline at end of file diff --git a/wp-includes/blocks/post-date/style.css b/wp-includes/blocks/post-date/style.css new file mode 100644 index 0000000..f8a38e2 --- /dev/null +++ b/wp-includes/blocks/post-date/style.css @@ -0,0 +1,3 @@ +.wp-block-post-date{ + box-sizing:border-box; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-date/style.min.css b/wp-includes/blocks/post-date/style.min.css new file mode 100644 index 0000000..644e013 --- /dev/null +++ b/wp-includes/blocks/post-date/style.min.css @@ -0,0 +1 @@ +.wp-block-post-date{box-sizing:border-box}
\ No newline at end of file diff --git a/wp-includes/blocks/post-excerpt.php b/wp-includes/blocks/post-excerpt.php new file mode 100644 index 0000000..09d6b6f --- /dev/null +++ b/wp-includes/blocks/post-excerpt.php @@ -0,0 +1,95 @@ +<?php +/** + * Server-side rendering of the `core/post-excerpt` block. + * + * @package WordPress + */ + +/** + * Renders the `core/post-excerpt` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Returns the filtered post excerpt for the current post wrapped inside "p" tags. + */ +function render_block_core_post_excerpt( $attributes, $content, $block ) { + if ( ! isset( $block->context['postId'] ) ) { + return ''; + } + + /* + * The purpose of the excerpt length setting is to limit the length of both + * automatically generated and user-created excerpts. + * Because the excerpt_length filter only applies to auto generated excerpts, + * wp_trim_words is used instead. + */ + $excerpt_length = $attributes['excerptLength']; + $excerpt = get_the_excerpt( $block->context['postId'] ); + if ( isset( $excerpt_length ) ) { + $excerpt = wp_trim_words( $excerpt, $excerpt_length ); + } + + $more_text = ! empty( $attributes['moreText'] ) ? '<a class="wp-block-post-excerpt__more-link" href="' . esc_url( get_the_permalink( $block->context['postId'] ) ) . '">' . wp_kses_post( $attributes['moreText'] ) . '</a>' : ''; + $filter_excerpt_more = static function ( $more ) use ( $more_text ) { + return empty( $more_text ) ? $more : ''; + }; + /** + * Some themes might use `excerpt_more` filter to handle the + * `more` link displayed after a trimmed excerpt. Since the + * block has a `more text` attribute we have to check and + * override if needed the return value from this filter. + * So if the block's attribute is not empty override the + * `excerpt_more` filter and return nothing. This will + * result in showing only one `read more` link at a time. + */ + add_filter( 'excerpt_more', $filter_excerpt_more ); + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + $content = '<p class="wp-block-post-excerpt__excerpt">' . $excerpt; + $show_more_on_new_line = ! isset( $attributes['showMoreOnNewLine'] ) || $attributes['showMoreOnNewLine']; + if ( $show_more_on_new_line && ! empty( $more_text ) ) { + $content .= '</p><p class="wp-block-post-excerpt__more-text">' . $more_text . '</p>'; + } else { + $content .= " $more_text</p>"; + } + remove_filter( 'excerpt_more', $filter_excerpt_more ); + return sprintf( '<div %1$s>%2$s</div>', $wrapper_attributes, $content ); +} + +/** + * Registers the `core/post-excerpt` block on the server. + */ +function register_block_core_post_excerpt() { + register_block_type_from_metadata( + __DIR__ . '/post-excerpt', + array( + 'render_callback' => 'render_block_core_post_excerpt', + ) + ); +} +add_action( 'init', 'register_block_core_post_excerpt' ); + +/** + * If themes or plugins filter the excerpt_length, we need to + * override the filter in the editor, otherwise + * the excerpt length block setting has no effect. + * Returns 100 because 100 is the max length in the setting. + */ +if ( is_admin() || + defined( 'REST_REQUEST' ) && REST_REQUEST ) { + add_filter( + 'excerpt_length', + static function () { + return 100; + }, + PHP_INT_MAX + ); +} diff --git a/wp-includes/blocks/post-excerpt/block.json b/wp-includes/blocks/post-excerpt/block.json new file mode 100644 index 0000000..33b7818 --- /dev/null +++ b/wp-includes/blocks/post-excerpt/block.json @@ -0,0 +1,57 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/post-excerpt", + "title": "Excerpt", + "category": "theme", + "description": "Display the excerpt.", + "textdomain": "default", + "attributes": { + "textAlign": { + "type": "string" + }, + "moreText": { + "type": "string" + }, + "showMoreOnNewLine": { + "type": "boolean", + "default": true + }, + "excerptLength": { + "type": "number", + "default": 55 + } + }, + "usesContext": [ "postId", "postType", "queryId" ], + "supports": { + "html": false, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true, + "link": true + } + }, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-post-excerpt-editor", + "style": "wp-block-post-excerpt" +} diff --git a/wp-includes/blocks/post-excerpt/editor-rtl.css b/wp-includes/blocks/post-excerpt/editor-rtl.css new file mode 100644 index 0000000..c3cf6e7 --- /dev/null +++ b/wp-includes/blocks/post-excerpt/editor-rtl.css @@ -0,0 +1,3 @@ +.wp-block-post-excerpt .wp-block-post-excerpt__excerpt.is-inline{ + display:inline; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-excerpt/editor-rtl.min.css b/wp-includes/blocks/post-excerpt/editor-rtl.min.css new file mode 100644 index 0000000..4e238fa --- /dev/null +++ b/wp-includes/blocks/post-excerpt/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-post-excerpt .wp-block-post-excerpt__excerpt.is-inline{display:inline}
\ No newline at end of file diff --git a/wp-includes/blocks/post-excerpt/editor.css b/wp-includes/blocks/post-excerpt/editor.css new file mode 100644 index 0000000..c3cf6e7 --- /dev/null +++ b/wp-includes/blocks/post-excerpt/editor.css @@ -0,0 +1,3 @@ +.wp-block-post-excerpt .wp-block-post-excerpt__excerpt.is-inline{ + display:inline; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-excerpt/editor.min.css b/wp-includes/blocks/post-excerpt/editor.min.css new file mode 100644 index 0000000..4e238fa --- /dev/null +++ b/wp-includes/blocks/post-excerpt/editor.min.css @@ -0,0 +1 @@ +.wp-block-post-excerpt .wp-block-post-excerpt__excerpt.is-inline{display:inline}
\ No newline at end of file diff --git a/wp-includes/blocks/post-excerpt/style-rtl.css b/wp-includes/blocks/post-excerpt/style-rtl.css new file mode 100644 index 0000000..492a11e --- /dev/null +++ b/wp-includes/blocks/post-excerpt/style-rtl.css @@ -0,0 +1,18 @@ +:where(.wp-block-post-excerpt){ + margin-bottom:var(--wp--style--block-gap); + margin-top:var(--wp--style--block-gap); +} + +.wp-block-post-excerpt__excerpt{ + margin-bottom:0; + margin-top:0; +} + +.wp-block-post-excerpt__more-text{ + margin-bottom:0; + margin-top:var(--wp--style--block-gap); +} + +.wp-block-post-excerpt__more-link{ + display:inline-block; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-excerpt/style-rtl.min.css b/wp-includes/blocks/post-excerpt/style-rtl.min.css new file mode 100644 index 0000000..e7503a7 --- /dev/null +++ b/wp-includes/blocks/post-excerpt/style-rtl.min.css @@ -0,0 +1 @@ +:where(.wp-block-post-excerpt){margin-bottom:var(--wp--style--block-gap);margin-top:var(--wp--style--block-gap)}.wp-block-post-excerpt__excerpt{margin-bottom:0;margin-top:0}.wp-block-post-excerpt__more-text{margin-bottom:0;margin-top:var(--wp--style--block-gap)}.wp-block-post-excerpt__more-link{display:inline-block}
\ No newline at end of file diff --git a/wp-includes/blocks/post-excerpt/style.css b/wp-includes/blocks/post-excerpt/style.css new file mode 100644 index 0000000..492a11e --- /dev/null +++ b/wp-includes/blocks/post-excerpt/style.css @@ -0,0 +1,18 @@ +:where(.wp-block-post-excerpt){ + margin-bottom:var(--wp--style--block-gap); + margin-top:var(--wp--style--block-gap); +} + +.wp-block-post-excerpt__excerpt{ + margin-bottom:0; + margin-top:0; +} + +.wp-block-post-excerpt__more-text{ + margin-bottom:0; + margin-top:var(--wp--style--block-gap); +} + +.wp-block-post-excerpt__more-link{ + display:inline-block; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-excerpt/style.min.css b/wp-includes/blocks/post-excerpt/style.min.css new file mode 100644 index 0000000..e7503a7 --- /dev/null +++ b/wp-includes/blocks/post-excerpt/style.min.css @@ -0,0 +1 @@ +:where(.wp-block-post-excerpt){margin-bottom:var(--wp--style--block-gap);margin-top:var(--wp--style--block-gap)}.wp-block-post-excerpt__excerpt{margin-bottom:0;margin-top:0}.wp-block-post-excerpt__more-text{margin-bottom:0;margin-top:var(--wp--style--block-gap)}.wp-block-post-excerpt__more-link{display:inline-block}
\ No newline at end of file diff --git a/wp-includes/blocks/post-featured-image.php b/wp-includes/blocks/post-featured-image.php new file mode 100644 index 0000000..4a7aa2f --- /dev/null +++ b/wp-includes/blocks/post-featured-image.php @@ -0,0 +1,222 @@ +<?php +/** + * Server-side rendering of the `core/post-featured-image` block. + * + * @package WordPress + */ + +/** + * Renders the `core/post-featured-image` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Returns the featured image for the current post. + */ +function render_block_core_post_featured_image( $attributes, $content, $block ) { + if ( ! isset( $block->context['postId'] ) ) { + return ''; + } + $post_ID = $block->context['postId']; + + $is_link = isset( $attributes['isLink'] ) && $attributes['isLink']; + $size_slug = isset( $attributes['sizeSlug'] ) ? $attributes['sizeSlug'] : 'post-thumbnail'; + $attr = get_block_core_post_featured_image_border_attributes( $attributes ); + $overlay_markup = get_block_core_post_featured_image_overlay_element_markup( $attributes ); + + if ( $is_link ) { + if ( get_the_title( $post_ID ) ) { + $attr['alt'] = trim( strip_tags( get_the_title( $post_ID ) ) ); + } else { + $attr['alt'] = sprintf( + // translators: %d is the post ID. + __( 'Untitled post %d' ), + $post_ID + ); + } + } + + $extra_styles = ''; + + // Aspect ratio with a height set needs to override the default width/height. + if ( ! empty( $attributes['aspectRatio'] ) ) { + $extra_styles .= 'width:100%;height:100%;'; + } elseif ( ! empty( $attributes['height'] ) ) { + $extra_styles .= "height:{$attributes['height']};"; + } + + if ( ! empty( $attributes['scale'] ) ) { + $extra_styles .= "object-fit:{$attributes['scale']};"; + } + + if ( ! empty( $extra_styles ) ) { + $attr['style'] = empty( $attr['style'] ) ? $extra_styles : $attr['style'] . $extra_styles; + } + + $featured_image = get_the_post_thumbnail( $post_ID, $size_slug, $attr ); + if ( ! $featured_image ) { + return ''; + } + if ( $is_link ) { + $link_target = $attributes['linkTarget']; + $rel = ! empty( $attributes['rel'] ) ? 'rel="' . esc_attr( $attributes['rel'] ) . '"' : ''; + $height = ! empty( $attributes['height'] ) ? 'style="' . esc_attr( safecss_filter_attr( 'height:' . $attributes['height'] ) ) . '"' : ''; + $featured_image = sprintf( + '<a href="%1$s" target="%2$s" %3$s %4$s>%5$s%6$s</a>', + get_the_permalink( $post_ID ), + esc_attr( $link_target ), + $rel, + $height, + $featured_image, + $overlay_markup + ); + } else { + $featured_image = $featured_image . $overlay_markup; + } + + $aspect_ratio = ! empty( $attributes['aspectRatio'] ) + ? esc_attr( safecss_filter_attr( 'aspect-ratio:' . $attributes['aspectRatio'] ) ) . ';' + : ''; + $width = ! empty( $attributes['width'] ) + ? esc_attr( safecss_filter_attr( 'width:' . $attributes['width'] ) ) . ';' + : ''; + $height = ! empty( $attributes['height'] ) + ? esc_attr( safecss_filter_attr( 'height:' . $attributes['height'] ) ) . ';' + : ''; + if ( ! $height && ! $width && ! $aspect_ratio ) { + $wrapper_attributes = get_block_wrapper_attributes(); + } else { + $wrapper_attributes = get_block_wrapper_attributes( array( 'style' => $aspect_ratio . $width . $height ) ); + } + return "<figure {$wrapper_attributes}>{$featured_image}</figure>"; +} + +/** + * Generate markup for the HTML element that will be used for the overlay. + * + * @param array $attributes Block attributes. + * + * @return string HTML markup in string format. + */ +function get_block_core_post_featured_image_overlay_element_markup( $attributes ) { + $has_dim_background = isset( $attributes['dimRatio'] ) && $attributes['dimRatio']; + $has_gradient = isset( $attributes['gradient'] ) && $attributes['gradient']; + $has_custom_gradient = isset( $attributes['customGradient'] ) && $attributes['customGradient']; + $has_solid_overlay = isset( $attributes['overlayColor'] ) && $attributes['overlayColor']; + $has_custom_overlay = isset( $attributes['customOverlayColor'] ) && $attributes['customOverlayColor']; + $class_names = array( 'wp-block-post-featured-image__overlay' ); + $styles = array(); + + if ( ! $has_dim_background ) { + return ''; + } + + // Apply border classes and styles. + $border_attributes = get_block_core_post_featured_image_border_attributes( $attributes ); + + if ( ! empty( $border_attributes['class'] ) ) { + $class_names[] = $border_attributes['class']; + } + + if ( ! empty( $border_attributes['style'] ) ) { + $styles[] = $border_attributes['style']; + } + + // Apply overlay and gradient classes. + if ( $has_dim_background ) { + $class_names[] = 'has-background-dim'; + $class_names[] = "has-background-dim-{$attributes['dimRatio']}"; + } + + if ( $has_solid_overlay ) { + $class_names[] = "has-{$attributes['overlayColor']}-background-color"; + } + + if ( $has_gradient || $has_custom_gradient ) { + $class_names[] = 'has-background-gradient'; + } + + if ( $has_gradient ) { + $class_names[] = "has-{$attributes['gradient']}-gradient-background"; + } + + // Apply background styles. + if ( $has_custom_gradient ) { + $styles[] = sprintf( 'background-image: %s;', $attributes['customGradient'] ); + } + + if ( $has_custom_overlay ) { + $styles[] = sprintf( 'background-color: %s;', $attributes['customOverlayColor'] ); + } + + return sprintf( + '<span class="%s" style="%s" aria-hidden="true"></span>', + esc_attr( implode( ' ', $class_names ) ), + esc_attr( safecss_filter_attr( implode( ' ', $styles ) ) ) + ); +} + +/** + * Generates class names and styles to apply the border support styles for + * the Post Featured Image block. + * + * @param array $attributes The block attributes. + * @return array The border-related classnames and styles for the block. + */ +function get_block_core_post_featured_image_border_attributes( $attributes ) { + $border_styles = array(); + $sides = array( 'top', 'right', 'bottom', 'left' ); + + // Border radius. + if ( isset( $attributes['style']['border']['radius'] ) ) { + $border_styles['radius'] = $attributes['style']['border']['radius']; + } + + // Border style. + if ( isset( $attributes['style']['border']['style'] ) ) { + $border_styles['style'] = $attributes['style']['border']['style']; + } + + // Border width. + if ( isset( $attributes['style']['border']['width'] ) ) { + $border_styles['width'] = $attributes['style']['border']['width']; + } + + // Border color. + $preset_color = array_key_exists( 'borderColor', $attributes ) ? "var:preset|color|{$attributes['borderColor']}" : null; + $custom_color = $attributes['style']['border']['color'] ?? null; + $border_styles['color'] = $preset_color ? $preset_color : $custom_color; + + // Individual border styles e.g. top, left etc. + foreach ( $sides as $side ) { + $border = $attributes['style']['border'][ $side ] ?? null; + $border_styles[ $side ] = array( + 'color' => isset( $border['color'] ) ? $border['color'] : null, + 'style' => isset( $border['style'] ) ? $border['style'] : null, + 'width' => isset( $border['width'] ) ? $border['width'] : null, + ); + } + + $styles = wp_style_engine_get_styles( array( 'border' => $border_styles ) ); + $attributes = array(); + if ( ! empty( $styles['classnames'] ) ) { + $attributes['class'] = $styles['classnames']; + } + if ( ! empty( $styles['css'] ) ) { + $attributes['style'] = $styles['css']; + } + return $attributes; +} + +/** + * Registers the `core/post-featured-image` block on the server. + */ +function register_block_core_post_featured_image() { + register_block_type_from_metadata( + __DIR__ . '/post-featured-image', + array( + 'render_callback' => 'render_block_core_post_featured_image', + ) + ); +} +add_action( 'init', 'register_block_core_post_featured_image' ); diff --git a/wp-includes/blocks/post-featured-image/block.json b/wp-includes/blocks/post-featured-image/block.json new file mode 100644 index 0000000..34e3bd6 --- /dev/null +++ b/wp-includes/blocks/post-featured-image/block.json @@ -0,0 +1,84 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/post-featured-image", + "title": "Featured Image", + "category": "theme", + "description": "Display a post's featured image.", + "textdomain": "default", + "attributes": { + "isLink": { + "type": "boolean", + "default": false + }, + "aspectRatio": { + "type": "string" + }, + "width": { + "type": "string" + }, + "height": { + "type": "string" + }, + "scale": { + "type": "string", + "default": "cover" + }, + "sizeSlug": { + "type": "string" + }, + "rel": { + "type": "string", + "attribute": "rel", + "default": "" + }, + "linkTarget": { + "type": "string", + "default": "_self" + }, + "overlayColor": { + "type": "string" + }, + "customOverlayColor": { + "type": "string" + }, + "dimRatio": { + "type": "number", + "default": 0 + }, + "gradient": { + "type": "string" + }, + "customGradient": { + "type": "string" + } + }, + "usesContext": [ "postId", "postType", "queryId" ], + "supports": { + "align": [ "left", "right", "center", "wide", "full" ], + "color": { + "__experimentalDuotone": "img, .wp-block-post-featured-image__placeholder, .components-placeholder__illustration, .components-placeholder::before", + "text": false, + "background": false + }, + "__experimentalBorder": { + "color": true, + "radius": true, + "width": true, + "__experimentalSelector": "img, .block-editor-media-placeholder, .wp-block-post-featured-image__overlay", + "__experimentalSkipSerialization": true, + "__experimentalDefaultControls": { + "color": true, + "radius": true, + "width": true + } + }, + "html": false, + "spacing": { + "margin": true, + "padding": true + } + }, + "editorStyle": "wp-block-post-featured-image-editor", + "style": "wp-block-post-featured-image" +} diff --git a/wp-includes/blocks/post-featured-image/editor-rtl.css b/wp-includes/blocks/post-featured-image/editor-rtl.css new file mode 100644 index 0000000..7b4087d --- /dev/null +++ b/wp-includes/blocks/post-featured-image/editor-rtl.css @@ -0,0 +1,74 @@ +.wp-block-post-featured-image .block-editor-media-placeholder{ + -webkit-backdrop-filter:none; + backdrop-filter:none; + z-index:1; +} +.wp-block-post-featured-image .components-placeholder,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder{ + align-items:center; + display:flex; + justify-content:center; + min-height:200px; + padding:0; +} +.wp-block-post-featured-image .components-placeholder .components-form-file-upload,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder .components-form-file-upload{ + display:none; +} +.wp-block-post-featured-image .components-placeholder .components-button,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder .components-button{ + align-items:center; + background:var(--wp-admin-theme-color); + border-color:var(--wp-admin-theme-color); + border-radius:50%; + border-style:solid; + color:#fff; + display:flex; + height:48px; + justify-content:center; + padding:0; + position:relative; + width:48px; +} +.wp-block-post-featured-image .components-placeholder .components-button>svg,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder .components-button>svg{ + color:inherit; +} +.wp-block-post-featured-image .components-placeholder:where(.has-border-color),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where(.has-border-color),.wp-block-post-featured-image img:where(.has-border-color){ + border-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-top-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-top-color]),.wp-block-post-featured-image img:where([style*=border-top-color]){ + border-top-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-right-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-right-color]),.wp-block-post-featured-image img:where([style*=border-right-color]){ + border-left-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-bottom-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-bottom-color]),.wp-block-post-featured-image img:where([style*=border-bottom-color]){ + border-bottom-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-left-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-left-color]),.wp-block-post-featured-image img:where([style*=border-left-color]){ + border-right-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-width]),.wp-block-post-featured-image img:where([style*=border-width]){ + border-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-top-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-top-width]),.wp-block-post-featured-image img:where([style*=border-top-width]){ + border-top-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-right-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-right-width]),.wp-block-post-featured-image img:where([style*=border-right-width]){ + border-left-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-bottom-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-bottom-width]),.wp-block-post-featured-image img:where([style*=border-bottom-width]){ + border-bottom-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-left-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-left-width]),.wp-block-post-featured-image img:where([style*=border-left-width]){ + border-right-style:solid; +} +.wp-block-post-featured-image[style*=height] .components-placeholder{ + height:100%; + min-height:48px; + min-width:48px; + width:100%; +} + +div[data-type="core/post-featured-image"] img{ + display:block; + height:auto; + max-width:100%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-featured-image/editor-rtl.min.css b/wp-includes/blocks/post-featured-image/editor-rtl.min.css new file mode 100644 index 0000000..f36d0ed --- /dev/null +++ b/wp-includes/blocks/post-featured-image/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-post-featured-image .block-editor-media-placeholder{-webkit-backdrop-filter:none;backdrop-filter:none;z-index:1}.wp-block-post-featured-image .components-placeholder,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder{align-items:center;display:flex;justify-content:center;min-height:200px;padding:0}.wp-block-post-featured-image .components-placeholder .components-form-file-upload,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder .components-form-file-upload{display:none}.wp-block-post-featured-image .components-placeholder .components-button,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder .components-button{align-items:center;background:var(--wp-admin-theme-color);border-color:var(--wp-admin-theme-color);border-radius:50%;border-style:solid;color:#fff;display:flex;height:48px;justify-content:center;padding:0;position:relative;width:48px}.wp-block-post-featured-image .components-placeholder .components-button>svg,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder .components-button>svg{color:inherit}.wp-block-post-featured-image .components-placeholder:where(.has-border-color),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where(.has-border-color),.wp-block-post-featured-image img:where(.has-border-color){border-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-top-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-top-color]),.wp-block-post-featured-image img:where([style*=border-top-color]){border-top-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-right-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-right-color]),.wp-block-post-featured-image img:where([style*=border-right-color]){border-left-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-bottom-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-bottom-color]),.wp-block-post-featured-image img:where([style*=border-bottom-color]){border-bottom-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-left-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-left-color]),.wp-block-post-featured-image img:where([style*=border-left-color]){border-right-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-width]),.wp-block-post-featured-image img:where([style*=border-width]){border-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-top-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-top-width]),.wp-block-post-featured-image img:where([style*=border-top-width]){border-top-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-right-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-right-width]),.wp-block-post-featured-image img:where([style*=border-right-width]){border-left-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-bottom-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-bottom-width]),.wp-block-post-featured-image img:where([style*=border-bottom-width]){border-bottom-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-left-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-left-width]),.wp-block-post-featured-image img:where([style*=border-left-width]){border-right-style:solid}.wp-block-post-featured-image[style*=height] .components-placeholder{height:100%;min-height:48px;min-width:48px;width:100%}div[data-type="core/post-featured-image"] img{display:block;height:auto;max-width:100%}
\ No newline at end of file diff --git a/wp-includes/blocks/post-featured-image/editor.css b/wp-includes/blocks/post-featured-image/editor.css new file mode 100644 index 0000000..0a451d3 --- /dev/null +++ b/wp-includes/blocks/post-featured-image/editor.css @@ -0,0 +1,74 @@ +.wp-block-post-featured-image .block-editor-media-placeholder{ + -webkit-backdrop-filter:none; + backdrop-filter:none; + z-index:1; +} +.wp-block-post-featured-image .components-placeholder,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder{ + align-items:center; + display:flex; + justify-content:center; + min-height:200px; + padding:0; +} +.wp-block-post-featured-image .components-placeholder .components-form-file-upload,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder .components-form-file-upload{ + display:none; +} +.wp-block-post-featured-image .components-placeholder .components-button,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder .components-button{ + align-items:center; + background:var(--wp-admin-theme-color); + border-color:var(--wp-admin-theme-color); + border-radius:50%; + border-style:solid; + color:#fff; + display:flex; + height:48px; + justify-content:center; + padding:0; + position:relative; + width:48px; +} +.wp-block-post-featured-image .components-placeholder .components-button>svg,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder .components-button>svg{ + color:inherit; +} +.wp-block-post-featured-image .components-placeholder:where(.has-border-color),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where(.has-border-color),.wp-block-post-featured-image img:where(.has-border-color){ + border-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-top-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-top-color]),.wp-block-post-featured-image img:where([style*=border-top-color]){ + border-top-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-right-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-right-color]),.wp-block-post-featured-image img:where([style*=border-right-color]){ + border-right-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-bottom-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-bottom-color]),.wp-block-post-featured-image img:where([style*=border-bottom-color]){ + border-bottom-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-left-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-left-color]),.wp-block-post-featured-image img:where([style*=border-left-color]){ + border-left-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-width]),.wp-block-post-featured-image img:where([style*=border-width]){ + border-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-top-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-top-width]),.wp-block-post-featured-image img:where([style*=border-top-width]){ + border-top-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-right-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-right-width]),.wp-block-post-featured-image img:where([style*=border-right-width]){ + border-right-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-bottom-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-bottom-width]),.wp-block-post-featured-image img:where([style*=border-bottom-width]){ + border-bottom-style:solid; +} +.wp-block-post-featured-image .components-placeholder:where([style*=border-left-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-left-width]),.wp-block-post-featured-image img:where([style*=border-left-width]){ + border-left-style:solid; +} +.wp-block-post-featured-image[style*=height] .components-placeholder{ + height:100%; + min-height:48px; + min-width:48px; + width:100%; +} + +div[data-type="core/post-featured-image"] img{ + display:block; + height:auto; + max-width:100%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-featured-image/editor.min.css b/wp-includes/blocks/post-featured-image/editor.min.css new file mode 100644 index 0000000..1da64e1 --- /dev/null +++ b/wp-includes/blocks/post-featured-image/editor.min.css @@ -0,0 +1 @@ +.wp-block-post-featured-image .block-editor-media-placeholder{-webkit-backdrop-filter:none;backdrop-filter:none;z-index:1}.wp-block-post-featured-image .components-placeholder,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder{align-items:center;display:flex;justify-content:center;min-height:200px;padding:0}.wp-block-post-featured-image .components-placeholder .components-form-file-upload,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder .components-form-file-upload{display:none}.wp-block-post-featured-image .components-placeholder .components-button,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder .components-button{align-items:center;background:var(--wp-admin-theme-color);border-color:var(--wp-admin-theme-color);border-radius:50%;border-style:solid;color:#fff;display:flex;height:48px;justify-content:center;padding:0;position:relative;width:48px}.wp-block-post-featured-image .components-placeholder .components-button>svg,.wp-block-post-featured-image .wp-block-post-featured-image__placeholder .components-button>svg{color:inherit}.wp-block-post-featured-image .components-placeholder:where(.has-border-color),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where(.has-border-color),.wp-block-post-featured-image img:where(.has-border-color){border-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-top-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-top-color]),.wp-block-post-featured-image img:where([style*=border-top-color]){border-top-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-right-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-right-color]),.wp-block-post-featured-image img:where([style*=border-right-color]){border-right-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-bottom-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-bottom-color]),.wp-block-post-featured-image img:where([style*=border-bottom-color]){border-bottom-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-left-color]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-left-color]),.wp-block-post-featured-image img:where([style*=border-left-color]){border-left-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-width]),.wp-block-post-featured-image img:where([style*=border-width]){border-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-top-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-top-width]),.wp-block-post-featured-image img:where([style*=border-top-width]){border-top-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-right-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-right-width]),.wp-block-post-featured-image img:where([style*=border-right-width]){border-right-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-bottom-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-bottom-width]),.wp-block-post-featured-image img:where([style*=border-bottom-width]){border-bottom-style:solid}.wp-block-post-featured-image .components-placeholder:where([style*=border-left-width]),.wp-block-post-featured-image .wp-block-post-featured-image__placeholder:where([style*=border-left-width]),.wp-block-post-featured-image img:where([style*=border-left-width]){border-left-style:solid}.wp-block-post-featured-image[style*=height] .components-placeholder{height:100%;min-height:48px;min-width:48px;width:100%}div[data-type="core/post-featured-image"] img{display:block;height:auto;max-width:100%}
\ No newline at end of file diff --git a/wp-includes/blocks/post-featured-image/style-rtl.css b/wp-includes/blocks/post-featured-image/style-rtl.css new file mode 100644 index 0000000..b802d2a --- /dev/null +++ b/wp-includes/blocks/post-featured-image/style-rtl.css @@ -0,0 +1,66 @@ +.wp-block-post-featured-image{ + margin-left:0; + margin-right:0; +} +.wp-block-post-featured-image a{ + display:block; + height:100%; +} +.wp-block-post-featured-image img{ + box-sizing:border-box; + height:auto; + max-width:100%; + vertical-align:bottom; + width:100%; +} +.wp-block-post-featured-image.alignfull img,.wp-block-post-featured-image.alignwide img{ + width:100%; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim{ + background-color:#000; + inset:0; + position:absolute; +} +.wp-block-post-featured-image{ + position:relative; +} + +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-gradient{ + background-color:transparent; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-0{ + opacity:0; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-10{ + opacity:.1; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-20{ + opacity:.2; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-30{ + opacity:.3; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-40{ + opacity:.4; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-50{ + opacity:.5; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-60{ + opacity:.6; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-70{ + opacity:.7; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-80{ + opacity:.8; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-90{ + opacity:.9; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-100{ + opacity:1; +} +.wp-block-post-featured-image:where(.alignleft,.alignright){ + width:100%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-featured-image/style-rtl.min.css b/wp-includes/blocks/post-featured-image/style-rtl.min.css new file mode 100644 index 0000000..5af6fe1 --- /dev/null +++ b/wp-includes/blocks/post-featured-image/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-post-featured-image{margin-left:0;margin-right:0}.wp-block-post-featured-image a{display:block;height:100%}.wp-block-post-featured-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom;width:100%}.wp-block-post-featured-image.alignfull img,.wp-block-post-featured-image.alignwide img{width:100%}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim{background-color:#000;inset:0;position:absolute}.wp-block-post-featured-image{position:relative}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-gradient{background-color:transparent}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-0{opacity:0}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-10{opacity:.1}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-20{opacity:.2}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-30{opacity:.3}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-40{opacity:.4}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-50{opacity:.5}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-60{opacity:.6}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-70{opacity:.7}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-80{opacity:.8}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-90{opacity:.9}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-100{opacity:1}.wp-block-post-featured-image:where(.alignleft,.alignright){width:100%}
\ No newline at end of file diff --git a/wp-includes/blocks/post-featured-image/style.css b/wp-includes/blocks/post-featured-image/style.css new file mode 100644 index 0000000..b802d2a --- /dev/null +++ b/wp-includes/blocks/post-featured-image/style.css @@ -0,0 +1,66 @@ +.wp-block-post-featured-image{ + margin-left:0; + margin-right:0; +} +.wp-block-post-featured-image a{ + display:block; + height:100%; +} +.wp-block-post-featured-image img{ + box-sizing:border-box; + height:auto; + max-width:100%; + vertical-align:bottom; + width:100%; +} +.wp-block-post-featured-image.alignfull img,.wp-block-post-featured-image.alignwide img{ + width:100%; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim{ + background-color:#000; + inset:0; + position:absolute; +} +.wp-block-post-featured-image{ + position:relative; +} + +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-gradient{ + background-color:transparent; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-0{ + opacity:0; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-10{ + opacity:.1; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-20{ + opacity:.2; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-30{ + opacity:.3; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-40{ + opacity:.4; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-50{ + opacity:.5; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-60{ + opacity:.6; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-70{ + opacity:.7; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-80{ + opacity:.8; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-90{ + opacity:.9; +} +.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-100{ + opacity:1; +} +.wp-block-post-featured-image:where(.alignleft,.alignright){ + width:100%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-featured-image/style.min.css b/wp-includes/blocks/post-featured-image/style.min.css new file mode 100644 index 0000000..5af6fe1 --- /dev/null +++ b/wp-includes/blocks/post-featured-image/style.min.css @@ -0,0 +1 @@ +.wp-block-post-featured-image{margin-left:0;margin-right:0}.wp-block-post-featured-image a{display:block;height:100%}.wp-block-post-featured-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom;width:100%}.wp-block-post-featured-image.alignfull img,.wp-block-post-featured-image.alignwide img{width:100%}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim{background-color:#000;inset:0;position:absolute}.wp-block-post-featured-image{position:relative}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-gradient{background-color:transparent}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-0{opacity:0}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-10{opacity:.1}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-20{opacity:.2}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-30{opacity:.3}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-40{opacity:.4}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-50{opacity:.5}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-60{opacity:.6}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-70{opacity:.7}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-80{opacity:.8}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-90{opacity:.9}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-100{opacity:1}.wp-block-post-featured-image:where(.alignleft,.alignright){width:100%}
\ No newline at end of file diff --git a/wp-includes/blocks/post-navigation-link.php b/wp-includes/blocks/post-navigation-link.php new file mode 100644 index 0000000..add112c --- /dev/null +++ b/wp-includes/blocks/post-navigation-link.php @@ -0,0 +1,124 @@ +<?php +/** + * Server-side rendering of the `core/post-navigation-link` block. + * + * @package WordPress + */ + +/** + * Renders the `core/post-navigation-link` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * + * @return string Returns the next or previous post link that is adjacent to the current post. + */ +function render_block_core_post_navigation_link( $attributes, $content ) { + if ( ! is_singular() ) { + return ''; + } + + // Get the navigation type to show the proper link. Available options are `next|previous`. + $navigation_type = isset( $attributes['type'] ) ? $attributes['type'] : 'next'; + // Allow only `next` and `previous` in `$navigation_type`. + if ( ! in_array( $navigation_type, array( 'next', 'previous' ), true ) ) { + return ''; + } + $classes = "post-navigation-link-$navigation_type"; + if ( isset( $attributes['textAlign'] ) ) { + $classes .= " has-text-align-{$attributes['textAlign']}"; + } + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => $classes, + ) + ); + // Set default values. + $format = '%link'; + $link = 'next' === $navigation_type ? _x( 'Next', 'label for next post link' ) : _x( 'Previous', 'label for previous post link' ); + $label = ''; + + // Only use hardcoded values here, otherwise we need to add escaping where these values are used. + $arrow_map = array( + 'none' => '', + 'arrow' => array( + 'next' => '→', + 'previous' => '←', + ), + 'chevron' => array( + 'next' => '»', + 'previous' => '«', + ), + ); + + // If a custom label is provided, make this a link. + // `$label` is used to prepend the provided label, if we want to show the page title as well. + if ( isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ) { + $label = "{$attributes['label']}"; + $link = $label; + } + + // If we want to also show the page title, make the page title a link and prepend the label. + if ( isset( $attributes['showTitle'] ) && $attributes['showTitle'] ) { + /* + * If the label link option is not enabled but there is a custom label, + * display the custom label as text before the linked title. + */ + if ( ! $attributes['linkLabel'] ) { + if ( $label ) { + $format = '<span class="post-navigation-link__label">' . wp_kses_post( $label ) . '</span> %link'; + } + $link = '%title'; + } elseif ( isset( $attributes['linkLabel'] ) && $attributes['linkLabel'] ) { + // If the label link option is enabled and there is a custom label, display it before the title. + if ( $label ) { + $link = '<span class="post-navigation-link__label">' . wp_kses_post( $label ) . '</span> <span class="post-navigation-link__title">%title</span>'; + } else { + /* + * If the label link option is enabled and there is no custom label, + * add a colon between the label and the post title. + */ + $label = 'next' === $navigation_type ? _x( 'Next:', 'label before the title of the next post' ) : _x( 'Previous:', 'label before the title of the previous post' ); + $link = sprintf( + '<span class="post-navigation-link__label">%1$s</span> <span class="post-navigation-link__title">%2$s</span>', + wp_kses_post( $label ), + '%title' + ); + } + } + } + + // Display arrows. + if ( isset( $attributes['arrow'] ) && 'none' !== $attributes['arrow'] && isset( $arrow_map[ $attributes['arrow'] ] ) ) { + $arrow = $arrow_map[ $attributes['arrow'] ][ $navigation_type ]; + + if ( 'next' === $navigation_type ) { + $format = '%link<span class="wp-block-post-navigation-link__arrow-next is-arrow-' . $attributes['arrow'] . '" aria-hidden="true">' . $arrow . '</span>'; + } else { + $format = '<span class="wp-block-post-navigation-link__arrow-previous is-arrow-' . $attributes['arrow'] . '" aria-hidden="true">' . $arrow . '</span>%link'; + } + } + + // The dynamic portion of the function name, `$navigation_type`, + // refers to the type of adjacency, 'next' or 'previous'. + $get_link_function = "get_{$navigation_type}_post_link"; + $content = $get_link_function( $format, $link ); + return sprintf( + '<div %1$s>%2$s</div>', + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/post-navigation-link` block on the server. + */ +function register_block_core_post_navigation_link() { + register_block_type_from_metadata( + __DIR__ . '/post-navigation-link', + array( + 'render_callback' => 'render_block_core_post_navigation_link', + ) + ); +} +add_action( 'init', 'register_block_core_post_navigation_link' ); diff --git a/wp-includes/blocks/post-navigation-link/block.json b/wp-includes/blocks/post-navigation-link/block.json new file mode 100644 index 0000000..e1b6d4f --- /dev/null +++ b/wp-includes/blocks/post-navigation-link/block.json @@ -0,0 +1,55 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/post-navigation-link", + "title": "Post Navigation Link", + "category": "theme", + "description": "Displays the next or previous post link that is adjacent to the current post.", + "textdomain": "default", + "attributes": { + "textAlign": { + "type": "string" + }, + "type": { + "type": "string", + "default": "next" + }, + "label": { + "type": "string" + }, + "showTitle": { + "type": "boolean", + "default": false + }, + "linkLabel": { + "type": "boolean", + "default": false + }, + "arrow": { + "type": "string", + "default": "none" + } + }, + "supports": { + "reusable": false, + "html": false, + "color": { + "link": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalWritingMode": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "style": "wp-block-post-navigation-link" +} diff --git a/wp-includes/blocks/post-navigation-link/style-rtl.css b/wp-includes/blocks/post-navigation-link/style-rtl.css new file mode 100644 index 0000000..acc74dc --- /dev/null +++ b/wp-includes/blocks/post-navigation-link/style-rtl.css @@ -0,0 +1,17 @@ +.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-previous{ + display:inline-block; + margin-left:1ch; +} +.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-previous:not(.is-arrow-chevron){ + transform:scaleX(-1);; +} +.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-next{ + display:inline-block; + margin-right:1ch; +} +.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-next:not(.is-arrow-chevron){ + transform:scaleX(-1);; +} +.wp-block-post-navigation-link.has-text-align-left[style*="writing-mode: vertical-lr"],.wp-block-post-navigation-link.has-text-align-right[style*="writing-mode: vertical-rl"]{ + rotate:180deg; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-navigation-link/style-rtl.min.css b/wp-includes/blocks/post-navigation-link/style-rtl.min.css new file mode 100644 index 0000000..bad3523 --- /dev/null +++ b/wp-includes/blocks/post-navigation-link/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-previous{display:inline-block;margin-left:1ch}.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-previous:not(.is-arrow-chevron){transform:scaleX(-1)}.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-next{display:inline-block;margin-right:1ch}.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-next:not(.is-arrow-chevron){transform:scaleX(-1)}.wp-block-post-navigation-link.has-text-align-left[style*="writing-mode: vertical-lr"],.wp-block-post-navigation-link.has-text-align-right[style*="writing-mode: vertical-rl"]{rotate:180deg}
\ No newline at end of file diff --git a/wp-includes/blocks/post-navigation-link/style.css b/wp-includes/blocks/post-navigation-link/style.css new file mode 100644 index 0000000..66c1722 --- /dev/null +++ b/wp-includes/blocks/post-navigation-link/style.css @@ -0,0 +1,17 @@ +.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-previous{ + display:inline-block; + margin-right:1ch; +} +.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-previous:not(.is-arrow-chevron){ + transform:scaleX(1); +} +.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-next{ + display:inline-block; + margin-left:1ch; +} +.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-next:not(.is-arrow-chevron){ + transform:scaleX(1); +} +.wp-block-post-navigation-link.has-text-align-left[style*="writing-mode: vertical-lr"],.wp-block-post-navigation-link.has-text-align-right[style*="writing-mode: vertical-rl"]{ + rotate:180deg; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-navigation-link/style.min.css b/wp-includes/blocks/post-navigation-link/style.min.css new file mode 100644 index 0000000..bc14451 --- /dev/null +++ b/wp-includes/blocks/post-navigation-link/style.min.css @@ -0,0 +1 @@ +.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-previous{display:inline-block;margin-right:1ch}.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-previous:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-next{display:inline-block;margin-left:1ch}.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-next:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-post-navigation-link.has-text-align-left[style*="writing-mode: vertical-lr"],.wp-block-post-navigation-link.has-text-align-right[style*="writing-mode: vertical-rl"]{rotate:180deg}
\ No newline at end of file diff --git a/wp-includes/blocks/post-template.php b/wp-includes/blocks/post-template.php new file mode 100644 index 0000000..2c7502c --- /dev/null +++ b/wp-includes/blocks/post-template.php @@ -0,0 +1,156 @@ +<?php +/** + * Server-side rendering of the `core/post-template` block. + * + * @package WordPress + */ + +/** + * Determines whether a block list contains a block that uses the featured image. + * + * @param WP_Block_List $inner_blocks Inner block instance. + * + * @return bool Whether the block list contains a block that uses the featured image. + */ +function block_core_post_template_uses_featured_image( $inner_blocks ) { + foreach ( $inner_blocks as $block ) { + if ( 'core/post-featured-image' === $block->name ) { + return true; + } + if ( + 'core/cover' === $block->name && + ! empty( $block->attributes['useFeaturedImage'] ) + ) { + return true; + } + if ( $block->inner_blocks && block_core_post_template_uses_featured_image( $block->inner_blocks ) ) { + return true; + } + } + + return false; +} + +/** + * Renders the `core/post-template` block on the server. + * + * @since 6.3.0 Changed render_block_context priority to `1`. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * + * @return string Returns the output of the query, structured using the layout defined by the block's inner blocks. + */ +function render_block_core_post_template( $attributes, $content, $block ) { + $page_key = isset( $block->context['queryId'] ) ? 'query-' . $block->context['queryId'] . '-page' : 'query-page'; + $enhanced_pagination = isset( $block->context['enhancedPagination'] ) && $block->context['enhancedPagination']; + $page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ]; + + // Use global query if needed. + $use_global_query = ( isset( $block->context['query']['inherit'] ) && $block->context['query']['inherit'] ); + if ( $use_global_query ) { + global $wp_query; + + /* + * If already in the main query loop, duplicate the query instance to not tamper with the main instance. + * Since this is a nested query, it should start at the beginning, therefore rewind posts. + * Otherwise, the main query loop has not started yet and this block is responsible for doing so. + */ + if ( in_the_loop() ) { + $query = clone $wp_query; + $query->rewind_posts(); + } else { + $query = $wp_query; + } + } else { + $query_args = build_query_vars_from_query_block( $block, $page ); + $query = new WP_Query( $query_args ); + } + + if ( ! $query->have_posts() ) { + return ''; + } + + if ( block_core_post_template_uses_featured_image( $block->inner_blocks ) ) { + update_post_thumbnail_cache( $query ); + } + + $classnames = ''; + if ( isset( $block->context['displayLayout'] ) && isset( $block->context['query'] ) ) { + if ( isset( $block->context['displayLayout']['type'] ) && 'flex' === $block->context['displayLayout']['type'] ) { + $classnames = "is-flex-container columns-{$block->context['displayLayout']['columns']}"; + } + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classnames .= ' has-link-color'; + } + + // Ensure backwards compatibility by flagging the number of columns via classname when using grid layout. + if ( isset( $attributes['layout']['type'] ) && 'grid' === $attributes['layout']['type'] && ! empty( $attributes['layout']['columnCount'] ) ) { + $classnames .= ' ' . sanitize_title( 'columns-' . $attributes['layout']['columnCount'] ); + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => trim( $classnames ) ) ); + + $content = ''; + while ( $query->have_posts() ) { + $query->the_post(); + + // Get an instance of the current Post Template block. + $block_instance = $block->parsed_block; + + // Set the block name to one that does not correspond to an existing registered block. + // This ensures that for the inner instances of the Post Template block, we do not render any block supports. + $block_instance['blockName'] = 'core/null'; + + $post_id = get_the_ID(); + $post_type = get_post_type(); + $filter_block_context = static function ( $context ) use ( $post_id, $post_type ) { + $context['postType'] = $post_type; + $context['postId'] = $post_id; + return $context; + }; + + // Use an early priority to so that other 'render_block_context' filters have access to the values. + add_filter( 'render_block_context', $filter_block_context, 1 ); + // Render the inner blocks of the Post Template block with `dynamic` set to `false` to prevent calling + // `render_callback` and ensure that no wrapper markup is included. + $block_content = ( new WP_Block( $block_instance ) )->render( array( 'dynamic' => false ) ); + remove_filter( 'render_block_context', $filter_block_context, 1 ); + + // Wrap the render inner blocks in a `li` element with the appropriate post classes. + $post_classes = implode( ' ', get_post_class( 'wp-block-post' ) ); + + $inner_block_directives = $enhanced_pagination ? ' data-wp-key="post-template-item-' . $post_id . '"' : ''; + + $content .= '<li' . $inner_block_directives . ' class="' . esc_attr( $post_classes ) . '">' . $block_content . '</li>'; + } + + /* + * Use this function to restore the context of the template tags + * from a secondary query loop back to the main query loop. + * Since we use two custom loops, it's safest to always restore. + */ + wp_reset_postdata(); + + return sprintf( + '<ul %1$s>%2$s</ul>', + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/post-template` block on the server. + */ +function register_block_core_post_template() { + register_block_type_from_metadata( + __DIR__ . '/post-template', + array( + 'render_callback' => 'render_block_core_post_template', + 'skip_inner_blocks' => true, + ) + ); +} +add_action( 'init', 'register_block_core_post_template' ); diff --git a/wp-includes/blocks/post-template/block.json b/wp-includes/blocks/post-template/block.json new file mode 100644 index 0000000..48804de --- /dev/null +++ b/wp-includes/blocks/post-template/block.json @@ -0,0 +1,56 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/post-template", + "title": "Post Template", + "category": "theme", + "parent": [ "core/query" ], + "description": "Contains the block elements used to render a post, like the title, date, featured image, content or excerpt, and more.", + "textdomain": "default", + "usesContext": [ + "queryId", + "query", + "queryContext", + "displayLayout", + "templateSlug", + "previewPostType", + "enhancedPagination" + ], + "supports": { + "reusable": false, + "html": false, + "align": [ "wide", "full" ], + "layout": true, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "spacing": { + "blockGap": { + "__experimentalDefault": "1.25em" + }, + "__experimentalDefaultControls": { + "blockGap": true + } + } + }, + "style": "wp-block-post-template", + "editorStyle": "wp-block-post-template-editor" +} diff --git a/wp-includes/blocks/post-template/editor-rtl.css b/wp-includes/blocks/post-template/editor-rtl.css new file mode 100644 index 0000000..92e578f --- /dev/null +++ b/wp-includes/blocks/post-template/editor-rtl.css @@ -0,0 +1,5 @@ +.editor-styles-wrapper ul.wp-block-post-template{ + list-style:none; + margin-right:0; + padding-right:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-template/editor-rtl.min.css b/wp-includes/blocks/post-template/editor-rtl.min.css new file mode 100644 index 0000000..fe8eccc --- /dev/null +++ b/wp-includes/blocks/post-template/editor-rtl.min.css @@ -0,0 +1 @@ +.editor-styles-wrapper ul.wp-block-post-template{list-style:none;margin-right:0;padding-right:0}
\ No newline at end of file diff --git a/wp-includes/blocks/post-template/editor.css b/wp-includes/blocks/post-template/editor.css new file mode 100644 index 0000000..ba8d9f2 --- /dev/null +++ b/wp-includes/blocks/post-template/editor.css @@ -0,0 +1,5 @@ +.editor-styles-wrapper ul.wp-block-post-template{ + list-style:none; + margin-left:0; + padding-left:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-template/editor.min.css b/wp-includes/blocks/post-template/editor.min.css new file mode 100644 index 0000000..3532597 --- /dev/null +++ b/wp-includes/blocks/post-template/editor.min.css @@ -0,0 +1 @@ +.editor-styles-wrapper ul.wp-block-post-template{list-style:none;margin-left:0;padding-left:0}
\ No newline at end of file diff --git a/wp-includes/blocks/post-template/style-rtl.css b/wp-includes/blocks/post-template/style-rtl.css new file mode 100644 index 0000000..2275f6f --- /dev/null +++ b/wp-includes/blocks/post-template/style-rtl.css @@ -0,0 +1,65 @@ +.wp-block-post-template{ + list-style:none; + margin-bottom:0; + margin-top:0; + max-width:100%; + padding:0; +} +.wp-block-post-template.wp-block-post-template{ + background:none; +} +.wp-block-post-template.is-flex-container{ + display:flex; + flex-direction:row; + flex-wrap:wrap; + gap:1.25em; +} +.wp-block-post-template.is-flex-container>li{ + margin:0; + width:100%; +} +@media (min-width:600px){ + .wp-block-post-template.is-flex-container.is-flex-container.columns-2>li{ + width:calc(50% - .625em); + } + .wp-block-post-template.is-flex-container.is-flex-container.columns-3>li{ + width:calc(33.33333% - .83333em); + } + .wp-block-post-template.is-flex-container.is-flex-container.columns-4>li{ + width:calc(25% - .9375em); + } + .wp-block-post-template.is-flex-container.is-flex-container.columns-5>li{ + width:calc(20% - 1em); + } + .wp-block-post-template.is-flex-container.is-flex-container.columns-6>li{ + width:calc(16.66667% - 1.04167em); + } +} + +@media (max-width:600px){ + .wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid{ + grid-template-columns:1fr; + } +} +.wp-block-post-template-is-layout-constrained>li>.alignright,.wp-block-post-template-is-layout-flow>li>.alignright{ + -webkit-margin-start:2em; + -webkit-margin-end:0; + float:left; + margin-inline-end:0; + margin-inline-start:2em; +} + +.wp-block-post-template-is-layout-constrained>li>.alignleft,.wp-block-post-template-is-layout-flow>li>.alignleft{ + -webkit-margin-start:0; + -webkit-margin-end:2em; + float:right; + margin-inline-end:2em; + margin-inline-start:0; +} + +.wp-block-post-template-is-layout-constrained>li>.aligncenter,.wp-block-post-template-is-layout-flow>li>.aligncenter{ + -webkit-margin-start:auto; + -webkit-margin-end:auto; + margin-inline-end:auto; + margin-inline-start:auto; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-template/style-rtl.min.css b/wp-includes/blocks/post-template/style-rtl.min.css new file mode 100644 index 0000000..fec44d4 --- /dev/null +++ b/wp-includes/blocks/post-template/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-post-template{list-style:none;margin-bottom:0;margin-top:0;max-width:100%;padding:0}.wp-block-post-template.wp-block-post-template{background:none}.wp-block-post-template.is-flex-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:1.25em}.wp-block-post-template.is-flex-container>li{margin:0;width:100%}@media (min-width:600px){.wp-block-post-template.is-flex-container.is-flex-container.columns-2>li{width:calc(50% - .625em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-3>li{width:calc(33.33333% - .83333em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-4>li{width:calc(25% - .9375em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-5>li{width:calc(20% - 1em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-6>li{width:calc(16.66667% - 1.04167em)}}@media (max-width:600px){.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid{grid-template-columns:1fr}}.wp-block-post-template-is-layout-constrained>li>.alignright,.wp-block-post-template-is-layout-flow>li>.alignright{-webkit-margin-start:2em;-webkit-margin-end:0;float:left;margin-inline-end:0;margin-inline-start:2em}.wp-block-post-template-is-layout-constrained>li>.alignleft,.wp-block-post-template-is-layout-flow>li>.alignleft{-webkit-margin-start:0;-webkit-margin-end:2em;float:right;margin-inline-end:2em;margin-inline-start:0}.wp-block-post-template-is-layout-constrained>li>.aligncenter,.wp-block-post-template-is-layout-flow>li>.aligncenter{-webkit-margin-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-inline-start:auto}
\ No newline at end of file diff --git a/wp-includes/blocks/post-template/style.css b/wp-includes/blocks/post-template/style.css new file mode 100644 index 0000000..133d38d --- /dev/null +++ b/wp-includes/blocks/post-template/style.css @@ -0,0 +1,65 @@ +.wp-block-post-template{ + list-style:none; + margin-bottom:0; + margin-top:0; + max-width:100%; + padding:0; +} +.wp-block-post-template.wp-block-post-template{ + background:none; +} +.wp-block-post-template.is-flex-container{ + display:flex; + flex-direction:row; + flex-wrap:wrap; + gap:1.25em; +} +.wp-block-post-template.is-flex-container>li{ + margin:0; + width:100%; +} +@media (min-width:600px){ + .wp-block-post-template.is-flex-container.is-flex-container.columns-2>li{ + width:calc(50% - .625em); + } + .wp-block-post-template.is-flex-container.is-flex-container.columns-3>li{ + width:calc(33.33333% - .83333em); + } + .wp-block-post-template.is-flex-container.is-flex-container.columns-4>li{ + width:calc(25% - .9375em); + } + .wp-block-post-template.is-flex-container.is-flex-container.columns-5>li{ + width:calc(20% - 1em); + } + .wp-block-post-template.is-flex-container.is-flex-container.columns-6>li{ + width:calc(16.66667% - 1.04167em); + } +} + +@media (max-width:600px){ + .wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid{ + grid-template-columns:1fr; + } +} +.wp-block-post-template-is-layout-constrained>li>.alignright,.wp-block-post-template-is-layout-flow>li>.alignright{ + -webkit-margin-start:2em; + -webkit-margin-end:0; + float:right; + margin-inline-end:0; + margin-inline-start:2em; +} + +.wp-block-post-template-is-layout-constrained>li>.alignleft,.wp-block-post-template-is-layout-flow>li>.alignleft{ + -webkit-margin-start:0; + -webkit-margin-end:2em; + float:left; + margin-inline-end:2em; + margin-inline-start:0; +} + +.wp-block-post-template-is-layout-constrained>li>.aligncenter,.wp-block-post-template-is-layout-flow>li>.aligncenter{ + -webkit-margin-start:auto; + -webkit-margin-end:auto; + margin-inline-end:auto; + margin-inline-start:auto; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-template/style.min.css b/wp-includes/blocks/post-template/style.min.css new file mode 100644 index 0000000..d1f6d76 --- /dev/null +++ b/wp-includes/blocks/post-template/style.min.css @@ -0,0 +1 @@ +.wp-block-post-template{list-style:none;margin-bottom:0;margin-top:0;max-width:100%;padding:0}.wp-block-post-template.wp-block-post-template{background:none}.wp-block-post-template.is-flex-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:1.25em}.wp-block-post-template.is-flex-container>li{margin:0;width:100%}@media (min-width:600px){.wp-block-post-template.is-flex-container.is-flex-container.columns-2>li{width:calc(50% - .625em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-3>li{width:calc(33.33333% - .83333em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-4>li{width:calc(25% - .9375em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-5>li{width:calc(20% - 1em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-6>li{width:calc(16.66667% - 1.04167em)}}@media (max-width:600px){.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid{grid-template-columns:1fr}}.wp-block-post-template-is-layout-constrained>li>.alignright,.wp-block-post-template-is-layout-flow>li>.alignright{-webkit-margin-start:2em;-webkit-margin-end:0;float:right;margin-inline-end:0;margin-inline-start:2em}.wp-block-post-template-is-layout-constrained>li>.alignleft,.wp-block-post-template-is-layout-flow>li>.alignleft{-webkit-margin-start:0;-webkit-margin-end:2em;float:left;margin-inline-end:2em;margin-inline-start:0}.wp-block-post-template-is-layout-constrained>li>.aligncenter,.wp-block-post-template-is-layout-flow>li>.aligncenter{-webkit-margin-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-inline-start:auto}
\ No newline at end of file diff --git a/wp-includes/blocks/post-terms.php b/wp-includes/blocks/post-terms.php new file mode 100644 index 0000000..c97155b --- /dev/null +++ b/wp-includes/blocks/post-terms.php @@ -0,0 +1,114 @@ +<?php +/** + * Server-side rendering of the `core/post-terms` block. + * + * @package WordPress + */ + +/** + * Renders the `core/post-terms` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Returns the filtered post terms for the current post wrapped inside "a" tags. + */ +function render_block_core_post_terms( $attributes, $content, $block ) { + if ( ! isset( $block->context['postId'] ) || ! isset( $attributes['term'] ) ) { + return ''; + } + + if ( ! is_taxonomy_viewable( $attributes['term'] ) ) { + return ''; + } + + $post_terms = get_the_terms( $block->context['postId'], $attributes['term'] ); + if ( is_wp_error( $post_terms ) || empty( $post_terms ) ) { + return ''; + } + + $classes = array( 'taxonomy-' . $attributes['term'] ); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + + $separator = empty( $attributes['separator'] ) ? ' ' : $attributes['separator']; + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + $prefix = "<div $wrapper_attributes>"; + if ( isset( $attributes['prefix'] ) && $attributes['prefix'] ) { + $prefix .= '<span class="wp-block-post-terms__prefix">' . $attributes['prefix'] . '</span>'; + } + + $suffix = '</div>'; + if ( isset( $attributes['suffix'] ) && $attributes['suffix'] ) { + $suffix = '<span class="wp-block-post-terms__suffix">' . $attributes['suffix'] . '</span>' . $suffix; + } + + return get_the_term_list( + $block->context['postId'], + $attributes['term'], + wp_kses_post( $prefix ), + '<span class="wp-block-post-terms__separator">' . esc_html( $separator ) . '</span>', + wp_kses_post( $suffix ) + ); +} + +/** + * Registers the `core/post-terms` block on the server. + */ +function register_block_core_post_terms() { + $taxonomies = get_taxonomies( + array( + 'publicly_queryable' => true, + 'show_in_rest' => true, + ), + 'objects' + ); + + // Split the available taxonomies to `built_in` and custom ones, + // in order to prioritize the `built_in` taxonomies at the + // search results. + $built_ins = array(); + $custom_variations = array(); + + // Create and register the eligible taxonomies variations. + foreach ( $taxonomies as $taxonomy ) { + $variation = array( + 'name' => $taxonomy->name, + 'title' => $taxonomy->label, + 'description' => sprintf( + /* translators: %s: taxonomy's label */ + __( 'Display a list of assigned terms from the taxonomy: %s' ), + $taxonomy->label + ), + 'attributes' => array( + 'term' => $taxonomy->name, + ), + 'isActive' => array( 'term' ), + 'scope' => array( 'inserter', 'transform' ), + ); + // Set the category variation as the default one. + if ( 'category' === $taxonomy->name ) { + $variation['isDefault'] = true; + } + if ( $taxonomy->_builtin ) { + $built_ins[] = $variation; + } else { + $custom_variations[] = $variation; + } + } + + register_block_type_from_metadata( + __DIR__ . '/post-terms', + array( + 'render_callback' => 'render_block_core_post_terms', + 'variations' => array_merge( $built_ins, $custom_variations ), + ) + ); +} +add_action( 'init', 'register_block_core_post_terms' ); diff --git a/wp-includes/blocks/post-terms/block.json b/wp-includes/blocks/post-terms/block.json new file mode 100644 index 0000000..0da7fb0 --- /dev/null +++ b/wp-includes/blocks/post-terms/block.json @@ -0,0 +1,60 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/post-terms", + "title": "Post Terms", + "category": "theme", + "description": "Post terms.", + "textdomain": "default", + "attributes": { + "term": { + "type": "string" + }, + "textAlign": { + "type": "string" + }, + "separator": { + "type": "string", + "default": ", " + }, + "prefix": { + "type": "string", + "default": "" + }, + "suffix": { + "type": "string", + "default": "" + } + }, + "usesContext": [ "postId", "postType" ], + "supports": { + "html": false, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true, + "link": true + } + }, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "style": "wp-block-post-terms" +} diff --git a/wp-includes/blocks/post-terms/style-rtl.css b/wp-includes/blocks/post-terms/style-rtl.css new file mode 100644 index 0000000..819c1cb --- /dev/null +++ b/wp-includes/blocks/post-terms/style-rtl.css @@ -0,0 +1,6 @@ +.wp-block-post-terms{ + box-sizing:border-box; +} +.wp-block-post-terms .wp-block-post-terms__separator{ + white-space:pre-wrap; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-terms/style-rtl.min.css b/wp-includes/blocks/post-terms/style-rtl.min.css new file mode 100644 index 0000000..3762d4c --- /dev/null +++ b/wp-includes/blocks/post-terms/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-post-terms{box-sizing:border-box}.wp-block-post-terms .wp-block-post-terms__separator{white-space:pre-wrap}
\ No newline at end of file diff --git a/wp-includes/blocks/post-terms/style.css b/wp-includes/blocks/post-terms/style.css new file mode 100644 index 0000000..819c1cb --- /dev/null +++ b/wp-includes/blocks/post-terms/style.css @@ -0,0 +1,6 @@ +.wp-block-post-terms{ + box-sizing:border-box; +} +.wp-block-post-terms .wp-block-post-terms__separator{ + white-space:pre-wrap; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-terms/style.min.css b/wp-includes/blocks/post-terms/style.min.css new file mode 100644 index 0000000..3762d4c --- /dev/null +++ b/wp-includes/blocks/post-terms/style.min.css @@ -0,0 +1 @@ +.wp-block-post-terms{box-sizing:border-box}.wp-block-post-terms .wp-block-post-terms__separator{white-space:pre-wrap}
\ No newline at end of file diff --git a/wp-includes/blocks/post-title.php b/wp-includes/blocks/post-title.php new file mode 100644 index 0000000..8b0e431 --- /dev/null +++ b/wp-includes/blocks/post-title.php @@ -0,0 +1,72 @@ +<?php +/** + * Server-side rendering of the `core/post-title` block. + * + * @package WordPress + */ + +/** + * Renders the `core/post-title` block on the server. + * + * @since 6.3.0 Omitting the $post argument from the `get_the_title`. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * + * @return string Returns the filtered post title for the current post wrapped inside "h1" tags. + */ +function render_block_core_post_title( $attributes, $content, $block ) { + if ( ! isset( $block->context['postId'] ) ) { + return ''; + } + + /** + * The `$post` argument is intentionally omitted so that changes are reflected when previewing a post. + * See: https://github.com/WordPress/gutenberg/pull/37622#issuecomment-1000932816. + */ + $title = get_the_title(); + + if ( ! $title ) { + return ''; + } + + $tag_name = 'h2'; + if ( isset( $attributes['level'] ) ) { + $tag_name = 'h' . $attributes['level']; + } + + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { + $rel = ! empty( $attributes['rel'] ) ? 'rel="' . esc_attr( $attributes['rel'] ) . '"' : ''; + $title = sprintf( '<a href="%1$s" target="%2$s" %3$s>%4$s</a>', get_the_permalink( $block->context['postId'] ), esc_attr( $attributes['linkTarget'] ), $rel, $title ); + } + + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return sprintf( + '<%1$s %2$s>%3$s</%1$s>', + $tag_name, + $wrapper_attributes, + $title + ); +} + +/** + * Registers the `core/post-title` block on the server. + */ +function register_block_core_post_title() { + register_block_type_from_metadata( + __DIR__ . '/post-title', + array( + 'render_callback' => 'render_block_core_post_title', + ) + ); +} +add_action( 'init', 'register_block_core_post_title' ); diff --git a/wp-includes/blocks/post-title/block.json b/wp-includes/blocks/post-title/block.json new file mode 100644 index 0000000..eda5332 --- /dev/null +++ b/wp-includes/blocks/post-title/block.json @@ -0,0 +1,65 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/post-title", + "title": "Title", + "category": "theme", + "description": "Displays the title of a post, page, or any other content-type.", + "textdomain": "default", + "usesContext": [ "postId", "postType", "queryId" ], + "attributes": { + "textAlign": { + "type": "string" + }, + "level": { + "type": "number", + "default": 2 + }, + "isLink": { + "type": "boolean", + "default": false + }, + "rel": { + "type": "string", + "attribute": "rel", + "default": "" + }, + "linkTarget": { + "type": "string", + "default": "_self" + } + }, + "supports": { + "align": [ "wide", "full" ], + "html": false, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true, + "link": true + } + }, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true, + "fontAppearance": true, + "textTransform": true + } + } + }, + "style": "wp-block-post-title" +} diff --git a/wp-includes/blocks/post-title/style-rtl.css b/wp-includes/blocks/post-title/style-rtl.css new file mode 100644 index 0000000..0ca7fa1 --- /dev/null +++ b/wp-includes/blocks/post-title/style-rtl.css @@ -0,0 +1,7 @@ +.wp-block-post-title{ + box-sizing:border-box; + word-break:break-word; +} +.wp-block-post-title a{ + display:inline-block; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-title/style-rtl.min.css b/wp-includes/blocks/post-title/style-rtl.min.css new file mode 100644 index 0000000..99ae4b3 --- /dev/null +++ b/wp-includes/blocks/post-title/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-post-title{box-sizing:border-box;word-break:break-word}.wp-block-post-title a{display:inline-block}
\ No newline at end of file diff --git a/wp-includes/blocks/post-title/style.css b/wp-includes/blocks/post-title/style.css new file mode 100644 index 0000000..0ca7fa1 --- /dev/null +++ b/wp-includes/blocks/post-title/style.css @@ -0,0 +1,7 @@ +.wp-block-post-title{ + box-sizing:border-box; + word-break:break-word; +} +.wp-block-post-title a{ + display:inline-block; +}
\ No newline at end of file diff --git a/wp-includes/blocks/post-title/style.min.css b/wp-includes/blocks/post-title/style.min.css new file mode 100644 index 0000000..99ae4b3 --- /dev/null +++ b/wp-includes/blocks/post-title/style.min.css @@ -0,0 +1 @@ +.wp-block-post-title{box-sizing:border-box;word-break:break-word}.wp-block-post-title a{display:inline-block}
\ No newline at end of file diff --git a/wp-includes/blocks/preformatted/block.json b/wp-includes/blocks/preformatted/block.json new file mode 100644 index 0000000..ec6ea83 --- /dev/null +++ b/wp-includes/blocks/preformatted/block.json @@ -0,0 +1,47 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/preformatted", + "title": "Preformatted", + "category": "text", + "description": "Add text that respects your spacing and tabs, and also allows styling.", + "textdomain": "default", + "attributes": { + "content": { + "type": "string", + "source": "html", + "selector": "pre", + "default": "", + "__unstablePreserveWhiteSpace": true, + "__experimentalRole": "content" + } + }, + "supports": { + "anchor": true, + "color": { + "gradients": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "spacing": { + "padding": true, + "margin": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "style": "wp-block-preformatted" +} diff --git a/wp-includes/blocks/preformatted/style-rtl.css b/wp-includes/blocks/preformatted/style-rtl.css new file mode 100644 index 0000000..ffca458 --- /dev/null +++ b/wp-includes/blocks/preformatted/style-rtl.css @@ -0,0 +1,8 @@ +.wp-block-preformatted{ + box-sizing:border-box; + white-space:pre-wrap; +} + +:where(.wp-block-preformatted.has-background){ + padding:1.25em 2.375em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/preformatted/style-rtl.min.css b/wp-includes/blocks/preformatted/style-rtl.min.css new file mode 100644 index 0000000..cfb25c3 --- /dev/null +++ b/wp-includes/blocks/preformatted/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-preformatted{box-sizing:border-box;white-space:pre-wrap}:where(.wp-block-preformatted.has-background){padding:1.25em 2.375em}
\ No newline at end of file diff --git a/wp-includes/blocks/preformatted/style.css b/wp-includes/blocks/preformatted/style.css new file mode 100644 index 0000000..ffca458 --- /dev/null +++ b/wp-includes/blocks/preformatted/style.css @@ -0,0 +1,8 @@ +.wp-block-preformatted{ + box-sizing:border-box; + white-space:pre-wrap; +} + +:where(.wp-block-preformatted.has-background){ + padding:1.25em 2.375em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/preformatted/style.min.css b/wp-includes/blocks/preformatted/style.min.css new file mode 100644 index 0000000..cfb25c3 --- /dev/null +++ b/wp-includes/blocks/preformatted/style.min.css @@ -0,0 +1 @@ +.wp-block-preformatted{box-sizing:border-box;white-space:pre-wrap}:where(.wp-block-preformatted.has-background){padding:1.25em 2.375em}
\ No newline at end of file diff --git a/wp-includes/blocks/pullquote/block.json b/wp-includes/blocks/pullquote/block.json new file mode 100644 index 0000000..54c4175 --- /dev/null +++ b/wp-includes/blocks/pullquote/block.json @@ -0,0 +1,74 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/pullquote", + "title": "Pullquote", + "category": "text", + "description": "Give special visual emphasis to a quote from your text.", + "textdomain": "default", + "attributes": { + "value": { + "type": "string", + "source": "html", + "selector": "p", + "__experimentalRole": "content" + }, + "citation": { + "type": "string", + "source": "html", + "selector": "cite", + "default": "", + "__experimentalRole": "content" + }, + "textAlign": { + "type": "string" + } + }, + "supports": { + "anchor": true, + "align": [ "left", "right", "wide", "full" ], + "color": { + "gradients": true, + "background": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true, + "fontAppearance": true + } + }, + "__experimentalBorder": { + "color": true, + "radius": true, + "style": true, + "width": true, + "__experimentalDefaultControls": { + "color": true, + "radius": true, + "style": true, + "width": true + } + }, + "__experimentalStyle": { + "typography": { + "fontSize": "1.5em", + "lineHeight": "1.6" + } + } + }, + "editorStyle": "wp-block-pullquote-editor", + "style": "wp-block-pullquote" +} diff --git a/wp-includes/blocks/pullquote/editor-rtl.css b/wp-includes/blocks/pullquote/editor-rtl.css new file mode 100644 index 0000000..969221b --- /dev/null +++ b/wp-includes/blocks/pullquote/editor-rtl.css @@ -0,0 +1,11 @@ +.wp-block-pullquote.is-style-solid-color blockquote p{ + font-size:32px; +} +.wp-block-pullquote.is-style-solid-color .wp-block-pullquote__citation{ + font-style:normal; + text-transform:none; +} + +.wp-block-pullquote .wp-block-pullquote__citation{ + color:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/pullquote/editor-rtl.min.css b/wp-includes/blocks/pullquote/editor-rtl.min.css new file mode 100644 index 0000000..0e11af8 --- /dev/null +++ b/wp-includes/blocks/pullquote/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-pullquote.is-style-solid-color blockquote p{font-size:32px}.wp-block-pullquote.is-style-solid-color .wp-block-pullquote__citation{font-style:normal;text-transform:none}.wp-block-pullquote .wp-block-pullquote__citation{color:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/pullquote/editor.css b/wp-includes/blocks/pullquote/editor.css new file mode 100644 index 0000000..969221b --- /dev/null +++ b/wp-includes/blocks/pullquote/editor.css @@ -0,0 +1,11 @@ +.wp-block-pullquote.is-style-solid-color blockquote p{ + font-size:32px; +} +.wp-block-pullquote.is-style-solid-color .wp-block-pullquote__citation{ + font-style:normal; + text-transform:none; +} + +.wp-block-pullquote .wp-block-pullquote__citation{ + color:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/pullquote/editor.min.css b/wp-includes/blocks/pullquote/editor.min.css new file mode 100644 index 0000000..0e11af8 --- /dev/null +++ b/wp-includes/blocks/pullquote/editor.min.css @@ -0,0 +1 @@ +.wp-block-pullquote.is-style-solid-color blockquote p{font-size:32px}.wp-block-pullquote.is-style-solid-color .wp-block-pullquote__citation{font-style:normal;text-transform:none}.wp-block-pullquote .wp-block-pullquote__citation{color:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/pullquote/style-rtl.css b/wp-includes/blocks/pullquote/style-rtl.css new file mode 100644 index 0000000..94d1ff5 --- /dev/null +++ b/wp-includes/blocks/pullquote/style-rtl.css @@ -0,0 +1,52 @@ +.wp-block-pullquote{ + box-sizing:border-box; + overflow-wrap:break-word; + padding:3em 0; + text-align:center; +} +.wp-block-pullquote blockquote,.wp-block-pullquote cite,.wp-block-pullquote p{ + color:inherit; +} +.wp-block-pullquote.alignleft,.wp-block-pullquote.alignright{ + max-width:420px; +} +.wp-block-pullquote cite,.wp-block-pullquote footer{ + position:relative; +} +.wp-block-pullquote .has-text-color a{ + color:inherit; +} + +:where(.wp-block-pullquote){ + margin:0 0 1em; +} + +.wp-block-pullquote.has-text-align-left blockquote{ + text-align:right; +} + +.wp-block-pullquote.has-text-align-right blockquote{ + text-align:left; +} + +.wp-block-pullquote.is-style-solid-color{ + border:none; +} +.wp-block-pullquote.is-style-solid-color blockquote{ + margin-left:auto; + margin-right:auto; + max-width:60%; +} +.wp-block-pullquote.is-style-solid-color blockquote p{ + font-size:2em; + margin-bottom:0; + margin-top:0; +} +.wp-block-pullquote.is-style-solid-color blockquote cite{ + font-style:normal; + text-transform:none; +} + +.wp-block-pullquote cite{ + color:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/pullquote/style-rtl.min.css b/wp-includes/blocks/pullquote/style-rtl.min.css new file mode 100644 index 0000000..6980ae9 --- /dev/null +++ b/wp-includes/blocks/pullquote/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-pullquote{box-sizing:border-box;overflow-wrap:break-word;padding:3em 0;text-align:center}.wp-block-pullquote blockquote,.wp-block-pullquote cite,.wp-block-pullquote p{color:inherit}.wp-block-pullquote.alignleft,.wp-block-pullquote.alignright{max-width:420px}.wp-block-pullquote cite,.wp-block-pullquote footer{position:relative}.wp-block-pullquote .has-text-color a{color:inherit}:where(.wp-block-pullquote){margin:0 0 1em}.wp-block-pullquote.has-text-align-left blockquote{text-align:right}.wp-block-pullquote.has-text-align-right blockquote{text-align:left}.wp-block-pullquote.is-style-solid-color{border:none}.wp-block-pullquote.is-style-solid-color blockquote{margin-left:auto;margin-right:auto;max-width:60%}.wp-block-pullquote.is-style-solid-color blockquote p{font-size:2em;margin-bottom:0;margin-top:0}.wp-block-pullquote.is-style-solid-color blockquote cite{font-style:normal;text-transform:none}.wp-block-pullquote cite{color:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/pullquote/style.css b/wp-includes/blocks/pullquote/style.css new file mode 100644 index 0000000..6380ab3 --- /dev/null +++ b/wp-includes/blocks/pullquote/style.css @@ -0,0 +1,52 @@ +.wp-block-pullquote{ + box-sizing:border-box; + overflow-wrap:break-word; + padding:3em 0; + text-align:center; +} +.wp-block-pullquote blockquote,.wp-block-pullquote cite,.wp-block-pullquote p{ + color:inherit; +} +.wp-block-pullquote.alignleft,.wp-block-pullquote.alignright{ + max-width:420px; +} +.wp-block-pullquote cite,.wp-block-pullquote footer{ + position:relative; +} +.wp-block-pullquote .has-text-color a{ + color:inherit; +} + +:where(.wp-block-pullquote){ + margin:0 0 1em; +} + +.wp-block-pullquote.has-text-align-left blockquote{ + text-align:left; +} + +.wp-block-pullquote.has-text-align-right blockquote{ + text-align:right; +} + +.wp-block-pullquote.is-style-solid-color{ + border:none; +} +.wp-block-pullquote.is-style-solid-color blockquote{ + margin-left:auto; + margin-right:auto; + max-width:60%; +} +.wp-block-pullquote.is-style-solid-color blockquote p{ + font-size:2em; + margin-bottom:0; + margin-top:0; +} +.wp-block-pullquote.is-style-solid-color blockquote cite{ + font-style:normal; + text-transform:none; +} + +.wp-block-pullquote cite{ + color:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/pullquote/style.min.css b/wp-includes/blocks/pullquote/style.min.css new file mode 100644 index 0000000..04ea27f --- /dev/null +++ b/wp-includes/blocks/pullquote/style.min.css @@ -0,0 +1 @@ +.wp-block-pullquote{box-sizing:border-box;overflow-wrap:break-word;padding:3em 0;text-align:center}.wp-block-pullquote blockquote,.wp-block-pullquote cite,.wp-block-pullquote p{color:inherit}.wp-block-pullquote.alignleft,.wp-block-pullquote.alignright{max-width:420px}.wp-block-pullquote cite,.wp-block-pullquote footer{position:relative}.wp-block-pullquote .has-text-color a{color:inherit}:where(.wp-block-pullquote){margin:0 0 1em}.wp-block-pullquote.has-text-align-left blockquote{text-align:left}.wp-block-pullquote.has-text-align-right blockquote{text-align:right}.wp-block-pullquote.is-style-solid-color{border:none}.wp-block-pullquote.is-style-solid-color blockquote{margin-left:auto;margin-right:auto;max-width:60%}.wp-block-pullquote.is-style-solid-color blockquote p{font-size:2em;margin-bottom:0;margin-top:0}.wp-block-pullquote.is-style-solid-color blockquote cite{font-style:normal;text-transform:none}.wp-block-pullquote cite{color:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/pullquote/theme-rtl.css b/wp-includes/blocks/pullquote/theme-rtl.css new file mode 100644 index 0000000..ba06da5 --- /dev/null +++ b/wp-includes/blocks/pullquote/theme-rtl.css @@ -0,0 +1,12 @@ +.wp-block-pullquote{ + border-bottom:4px solid; + border-top:4px solid; + color:currentColor; + margin-bottom:1.75em; +} +.wp-block-pullquote cite,.wp-block-pullquote footer,.wp-block-pullquote__citation{ + color:currentColor; + font-size:.8125em; + font-style:normal; + text-transform:uppercase; +}
\ No newline at end of file diff --git a/wp-includes/blocks/pullquote/theme-rtl.min.css b/wp-includes/blocks/pullquote/theme-rtl.min.css new file mode 100644 index 0000000..74a35ef --- /dev/null +++ b/wp-includes/blocks/pullquote/theme-rtl.min.css @@ -0,0 +1 @@ +.wp-block-pullquote{border-bottom:4px solid;border-top:4px solid;color:currentColor;margin-bottom:1.75em}.wp-block-pullquote cite,.wp-block-pullquote footer,.wp-block-pullquote__citation{color:currentColor;font-size:.8125em;font-style:normal;text-transform:uppercase}
\ No newline at end of file diff --git a/wp-includes/blocks/pullquote/theme.css b/wp-includes/blocks/pullquote/theme.css new file mode 100644 index 0000000..ba06da5 --- /dev/null +++ b/wp-includes/blocks/pullquote/theme.css @@ -0,0 +1,12 @@ +.wp-block-pullquote{ + border-bottom:4px solid; + border-top:4px solid; + color:currentColor; + margin-bottom:1.75em; +} +.wp-block-pullquote cite,.wp-block-pullquote footer,.wp-block-pullquote__citation{ + color:currentColor; + font-size:.8125em; + font-style:normal; + text-transform:uppercase; +}
\ No newline at end of file diff --git a/wp-includes/blocks/pullquote/theme.min.css b/wp-includes/blocks/pullquote/theme.min.css new file mode 100644 index 0000000..74a35ef --- /dev/null +++ b/wp-includes/blocks/pullquote/theme.min.css @@ -0,0 +1 @@ +.wp-block-pullquote{border-bottom:4px solid;border-top:4px solid;color:currentColor;margin-bottom:1.75em}.wp-block-pullquote cite,.wp-block-pullquote footer,.wp-block-pullquote__citation{color:currentColor;font-size:.8125em;font-style:normal;text-transform:uppercase}
\ No newline at end of file diff --git a/wp-includes/blocks/query-no-results.php b/wp-includes/blocks/query-no-results.php new file mode 100644 index 0000000..a6f4bd1 --- /dev/null +++ b/wp-includes/blocks/query-no-results.php @@ -0,0 +1,59 @@ +<?php +/** + * Server-side rendering of the `core/query-no-results` block. + * + * @package WordPress + */ + +/** + * Renders the `core/query-no-results` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * + * @return string Returns the wrapper for the no results block. + */ +function render_block_core_query_no_results( $attributes, $content, $block ) { + if ( empty( trim( $content ) ) ) { + return ''; + } + + $page_key = isset( $block->context['queryId'] ) ? 'query-' . $block->context['queryId'] . '-page' : 'query-page'; + $page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ]; + + // Override the custom query with the global query if needed. + $use_global_query = ( isset( $block->context['query']['inherit'] ) && $block->context['query']['inherit'] ); + if ( $use_global_query ) { + global $wp_query; + $query = $wp_query; + } else { + $query_args = build_query_vars_from_query_block( $block, $page ); + $query = new WP_Query( $query_args ); + } + + if ( $query->post_count > 0 ) { + return ''; + } + + $classes = ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) ? 'has-link-color' : ''; + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) ); + return sprintf( + '<div %1$s>%2$s</div>', + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/query-no-results` block on the server. + */ +function register_block_core_query_no_results() { + register_block_type_from_metadata( + __DIR__ . '/query-no-results', + array( + 'render_callback' => 'render_block_core_query_no_results', + ) + ); +} +add_action( 'init', 'register_block_core_query_no_results' ); diff --git a/wp-includes/blocks/query-no-results/block.json b/wp-includes/blocks/query-no-results/block.json new file mode 100644 index 0000000..3208875 --- /dev/null +++ b/wp-includes/blocks/query-no-results/block.json @@ -0,0 +1,33 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/query-no-results", + "title": "No results", + "category": "theme", + "description": "Contains the block elements used to render content when no query results are found.", + "parent": [ "core/query" ], + "textdomain": "default", + "usesContext": [ "queryId", "query" ], + "supports": { + "align": true, + "reusable": false, + "html": false, + "color": { + "gradients": true, + "link": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/query-pagination-next.php b/wp-includes/blocks/query-pagination-next.php new file mode 100644 index 0000000..768fde5 --- /dev/null +++ b/wp-includes/blocks/query-pagination-next.php @@ -0,0 +1,96 @@ +<?php +/** + * Server-side rendering of the `core/query-pagination-next` block. + * + * @package WordPress + */ + +/** + * Renders the `core/query-pagination-next` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * + * @return string Returns the next posts link for the query pagination. + */ +function render_block_core_query_pagination_next( $attributes, $content, $block ) { + $page_key = isset( $block->context['queryId'] ) ? 'query-' . $block->context['queryId'] . '-page' : 'query-page'; + $enhanced_pagination = isset( $block->context['enhancedPagination'] ) && $block->context['enhancedPagination']; + $page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ]; + $max_page = isset( $block->context['query']['pages'] ) ? (int) $block->context['query']['pages'] : 0; + + $wrapper_attributes = get_block_wrapper_attributes(); + $show_label = isset( $block->context['showLabel'] ) ? (bool) $block->context['showLabel'] : true; + $default_label = __( 'Next Page' ); + $label_text = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? esc_html( $attributes['label'] ) : $default_label; + $label = $show_label ? $label_text : ''; + $pagination_arrow = get_query_pagination_arrow( $block, true ); + + if ( ! $label ) { + $wrapper_attributes .= ' aria-label="' . $label_text . '"'; + } + if ( $pagination_arrow ) { + $label .= $pagination_arrow; + } + $content = ''; + + // Check if the pagination is for Query that inherits the global context. + if ( isset( $block->context['query']['inherit'] ) && $block->context['query']['inherit'] ) { + $filter_link_attributes = static function () use ( $wrapper_attributes ) { + return $wrapper_attributes; + }; + add_filter( 'next_posts_link_attributes', $filter_link_attributes ); + // Take into account if we have set a bigger `max page` + // than what the query has. + global $wp_query; + if ( $max_page > $wp_query->max_num_pages ) { + $max_page = $wp_query->max_num_pages; + } + $content = get_next_posts_link( $label, $max_page ); + remove_filter( 'next_posts_link_attributes', $filter_link_attributes ); + } elseif ( ! $max_page || $max_page > $page ) { + $custom_query = new WP_Query( build_query_vars_from_query_block( $block, $page ) ); + $custom_query_max_pages = (int) $custom_query->max_num_pages; + if ( $custom_query_max_pages && $custom_query_max_pages !== $page ) { + $content = sprintf( + '<a href="%1$s" %2$s>%3$s</a>', + esc_url( add_query_arg( $page_key, $page + 1 ) ), + $wrapper_attributes, + $label + ); + } + wp_reset_postdata(); // Restore original Post Data. + } + + if ( $enhanced_pagination && isset( $content ) ) { + $p = new WP_HTML_Tag_Processor( $content ); + if ( $p->next_tag( + array( + 'tag_name' => 'a', + 'class_name' => 'wp-block-query-pagination-next', + ) + ) ) { + $p->set_attribute( 'data-wp-key', 'query-pagination-next' ); + $p->set_attribute( 'data-wp-on--click', 'actions.core.query.navigate' ); + $p->set_attribute( 'data-wp-on--mouseenter', 'actions.core.query.prefetch' ); + $p->set_attribute( 'data-wp-effect', 'effects.core.query.prefetch' ); + $content = $p->get_updated_html(); + } + } + + return $content; +} + +/** + * Registers the `core/query-pagination-next` block on the server. + */ +function register_block_core_query_pagination_next() { + register_block_type_from_metadata( + __DIR__ . '/query-pagination-next', + array( + 'render_callback' => 'render_block_core_query_pagination_next', + ) + ); +} +add_action( 'init', 'register_block_core_query_pagination_next' ); diff --git a/wp-includes/blocks/query-pagination-next/block.json b/wp-includes/blocks/query-pagination-next/block.json new file mode 100644 index 0000000..95b1169 --- /dev/null +++ b/wp-includes/blocks/query-pagination-next/block.json @@ -0,0 +1,46 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/query-pagination-next", + "title": "Next Page", + "category": "theme", + "parent": [ "core/query-pagination" ], + "description": "Displays the next posts page link.", + "textdomain": "default", + "attributes": { + "label": { + "type": "string" + } + }, + "usesContext": [ + "queryId", + "query", + "paginationArrow", + "showLabel", + "enhancedPagination" + ], + "supports": { + "reusable": false, + "html": false, + "color": { + "gradients": true, + "text": false, + "__experimentalDefaultControls": { + "background": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/query-pagination-numbers.php b/wp-includes/blocks/query-pagination-numbers.php new file mode 100644 index 0000000..9809853 --- /dev/null +++ b/wp-includes/blocks/query-pagination-numbers.php @@ -0,0 +1,124 @@ +<?php +/** + * Server-side rendering of the `core/query-pagination-numbers` block. + * + * @package WordPress + */ + +/** + * Renders the `core/query-pagination-numbers` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * + * @return string Returns the pagination numbers for the Query. + */ +function render_block_core_query_pagination_numbers( $attributes, $content, $block ) { + $page_key = isset( $block->context['queryId'] ) ? 'query-' . $block->context['queryId'] . '-page' : 'query-page'; + $enhanced_pagination = isset( $block->context['enhancedPagination'] ) && $block->context['enhancedPagination']; + $page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ]; + $max_page = isset( $block->context['query']['pages'] ) ? (int) $block->context['query']['pages'] : 0; + + $wrapper_attributes = get_block_wrapper_attributes(); + $content = ''; + global $wp_query; + $mid_size = isset( $block->attributes['midSize'] ) ? (int) $block->attributes['midSize'] : null; + if ( isset( $block->context['query']['inherit'] ) && $block->context['query']['inherit'] ) { + // Take into account if we have set a bigger `max page` + // than what the query has. + $total = ! $max_page || $max_page > $wp_query->max_num_pages ? $wp_query->max_num_pages : $max_page; + $paginate_args = array( + 'prev_next' => false, + 'total' => $total, + ); + if ( null !== $mid_size ) { + $paginate_args['mid_size'] = $mid_size; + } + $content = paginate_links( $paginate_args ); + } else { + $block_query = new WP_Query( build_query_vars_from_query_block( $block, $page ) ); + // `paginate_links` works with the global $wp_query, so we have to + // temporarily switch it with our custom query. + $prev_wp_query = $wp_query; + $wp_query = $block_query; + $total = ! $max_page || $max_page > $wp_query->max_num_pages ? $wp_query->max_num_pages : $max_page; + $paginate_args = array( + 'base' => '%_%', + 'format' => "?$page_key=%#%", + 'current' => max( 1, $page ), + 'total' => $total, + 'prev_next' => false, + ); + if ( null !== $mid_size ) { + $paginate_args['mid_size'] = $mid_size; + } + if ( 1 !== $page ) { + /** + * `paginate_links` doesn't use the provided `format` when the page is `1`. + * This is great for the main query as it removes the extra query params + * making the URL shorter, but in the case of multiple custom queries is + * problematic. It results in returning an empty link which ends up with + * a link to the current page. + * + * A way to address this is to add a `fake` query arg with no value that + * is the same for all custom queries. This way the link is not empty and + * preserves all the other existent query args. + * + * @see https://developer.wordpress.org/reference/functions/paginate_links/ + * + * The proper fix of this should be in core. Track Ticket: + * @see https://core.trac.wordpress.org/ticket/53868 + * + * TODO: After two WP versions (starting from the WP version the core patch landed), + * we should remove this and call `paginate_links` with the proper new arg. + */ + $paginate_args['add_args'] = array( 'cst' => '' ); + } + // We still need to preserve `paged` query param if exists, as is used + // for Queries that inherit from global context. + $paged = empty( $_GET['paged'] ) ? null : (int) $_GET['paged']; + if ( $paged ) { + $paginate_args['add_args'] = array( 'paged' => $paged ); + } + $content = paginate_links( $paginate_args ); + wp_reset_postdata(); // Restore original Post Data. + $wp_query = $prev_wp_query; + } + + if ( empty( $content ) ) { + return ''; + } + + if ( $enhanced_pagination ) { + $p = new WP_HTML_Tag_Processor( $content ); + while ( $p->next_tag( + array( + 'tag_name' => 'a', + 'class_name' => 'page-numbers', + ) + ) ) { + $p->set_attribute( 'data-wp-on--click', 'actions.core.query.navigate' ); + } + $content = $p->get_updated_html(); + } + + return sprintf( + '<div %1$s>%2$s</div>', + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/query-pagination-numbers` block on the server. + */ +function register_block_core_query_pagination_numbers() { + register_block_type_from_metadata( + __DIR__ . '/query-pagination-numbers', + array( + 'render_callback' => 'render_block_core_query_pagination_numbers', + ) + ); +} +add_action( 'init', 'register_block_core_query_pagination_numbers' ); diff --git a/wp-includes/blocks/query-pagination-numbers/block.json b/wp-includes/blocks/query-pagination-numbers/block.json new file mode 100644 index 0000000..f05e269 --- /dev/null +++ b/wp-includes/blocks/query-pagination-numbers/block.json @@ -0,0 +1,42 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/query-pagination-numbers", + "title": "Page Numbers", + "category": "theme", + "parent": [ "core/query-pagination" ], + "description": "Displays a list of page numbers for pagination", + "textdomain": "default", + "attributes": { + "midSize": { + "type": "number", + "default": 2 + } + }, + "usesContext": [ "queryId", "query", "enhancedPagination" ], + "supports": { + "reusable": false, + "html": false, + "color": { + "gradients": true, + "text": false, + "__experimentalDefaultControls": { + "background": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-query-pagination-numbers-editor" +} diff --git a/wp-includes/blocks/query-pagination-numbers/editor-rtl.css b/wp-includes/blocks/query-pagination-numbers/editor-rtl.css new file mode 100644 index 0000000..cbebc0f --- /dev/null +++ b/wp-includes/blocks/query-pagination-numbers/editor-rtl.css @@ -0,0 +1,9 @@ +.wp-block-query-pagination-numbers a{ + text-decoration:underline; +} +.wp-block-query-pagination-numbers .page-numbers{ + margin-left:2px; +} +.wp-block-query-pagination-numbers .page-numbers:last-child{ + margin-right:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/query-pagination-numbers/editor-rtl.min.css b/wp-includes/blocks/query-pagination-numbers/editor-rtl.min.css new file mode 100644 index 0000000..ef698af --- /dev/null +++ b/wp-includes/blocks/query-pagination-numbers/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-query-pagination-numbers a{text-decoration:underline}.wp-block-query-pagination-numbers .page-numbers{margin-left:2px}.wp-block-query-pagination-numbers .page-numbers:last-child{margin-right:0}
\ No newline at end of file diff --git a/wp-includes/blocks/query-pagination-numbers/editor.css b/wp-includes/blocks/query-pagination-numbers/editor.css new file mode 100644 index 0000000..3a5e4ba --- /dev/null +++ b/wp-includes/blocks/query-pagination-numbers/editor.css @@ -0,0 +1,9 @@ +.wp-block-query-pagination-numbers a{ + text-decoration:underline; +} +.wp-block-query-pagination-numbers .page-numbers{ + margin-right:2px; +} +.wp-block-query-pagination-numbers .page-numbers:last-child{ + margin-right:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/query-pagination-numbers/editor.min.css b/wp-includes/blocks/query-pagination-numbers/editor.min.css new file mode 100644 index 0000000..9b7081c --- /dev/null +++ b/wp-includes/blocks/query-pagination-numbers/editor.min.css @@ -0,0 +1 @@ +.wp-block-query-pagination-numbers a{text-decoration:underline}.wp-block-query-pagination-numbers .page-numbers{margin-right:2px}.wp-block-query-pagination-numbers .page-numbers:last-child{margin-right:0}
\ No newline at end of file diff --git a/wp-includes/blocks/query-pagination-previous.php b/wp-includes/blocks/query-pagination-previous.php new file mode 100644 index 0000000..fc1fee0 --- /dev/null +++ b/wp-includes/blocks/query-pagination-previous.php @@ -0,0 +1,84 @@ +<?php +/** + * Server-side rendering of the `core/query-pagination-previous` block. + * + * @package WordPress + */ + +/** + * Renders the `core/query-pagination-previous` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * + * @return string Returns the previous posts link for the query. + */ +function render_block_core_query_pagination_previous( $attributes, $content, $block ) { + $page_key = isset( $block->context['queryId'] ) ? 'query-' . $block->context['queryId'] . '-page' : 'query-page'; + $enhanced_pagination = isset( $block->context['enhancedPagination'] ) && $block->context['enhancedPagination']; + $page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ]; + + $wrapper_attributes = get_block_wrapper_attributes(); + $show_label = isset( $block->context['showLabel'] ) ? (bool) $block->context['showLabel'] : true; + $default_label = __( 'Previous Page' ); + $label_text = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? esc_html( $attributes['label'] ) : $default_label; + $label = $show_label ? $label_text : ''; + $pagination_arrow = get_query_pagination_arrow( $block, false ); + if ( ! $label ) { + $wrapper_attributes .= ' aria-label="' . $label_text . '"'; + } + if ( $pagination_arrow ) { + $label = $pagination_arrow . $label; + } + $content = ''; + // Check if the pagination is for Query that inherits the global context + // and handle appropriately. + if ( isset( $block->context['query']['inherit'] ) && $block->context['query']['inherit'] ) { + $filter_link_attributes = static function () use ( $wrapper_attributes ) { + return $wrapper_attributes; + }; + + add_filter( 'previous_posts_link_attributes', $filter_link_attributes ); + $content = get_previous_posts_link( $label ); + remove_filter( 'previous_posts_link_attributes', $filter_link_attributes ); + } elseif ( 1 !== $page ) { + $content = sprintf( + '<a href="%1$s" %2$s>%3$s</a>', + esc_url( add_query_arg( $page_key, $page - 1 ) ), + $wrapper_attributes, + $label + ); + } + + if ( $enhanced_pagination && isset( $content ) ) { + $p = new WP_HTML_Tag_Processor( $content ); + if ( $p->next_tag( + array( + 'tag_name' => 'a', + 'class_name' => 'wp-block-query-pagination-previous', + ) + ) ) { + $p->set_attribute( 'data-wp-key', 'query-pagination-previous' ); + $p->set_attribute( 'data-wp-on--click', 'actions.core.query.navigate' ); + $p->set_attribute( 'data-wp-on--mouseenter', 'actions.core.query.prefetch' ); + $p->set_attribute( 'data-wp-effect', 'effects.core.query.prefetch' ); + $content = $p->get_updated_html(); + } + } + + return $content; +} + +/** + * Registers the `core/query-pagination-previous` block on the server. + */ +function register_block_core_query_pagination_previous() { + register_block_type_from_metadata( + __DIR__ . '/query-pagination-previous', + array( + 'render_callback' => 'render_block_core_query_pagination_previous', + ) + ); +} +add_action( 'init', 'register_block_core_query_pagination_previous' ); diff --git a/wp-includes/blocks/query-pagination-previous/block.json b/wp-includes/blocks/query-pagination-previous/block.json new file mode 100644 index 0000000..fbaac54 --- /dev/null +++ b/wp-includes/blocks/query-pagination-previous/block.json @@ -0,0 +1,46 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/query-pagination-previous", + "title": "Previous Page", + "category": "theme", + "parent": [ "core/query-pagination" ], + "description": "Displays the previous posts page link.", + "textdomain": "default", + "attributes": { + "label": { + "type": "string" + } + }, + "usesContext": [ + "queryId", + "query", + "paginationArrow", + "showLabel", + "enhancedPagination" + ], + "supports": { + "reusable": false, + "html": false, + "color": { + "gradients": true, + "text": false, + "__experimentalDefaultControls": { + "background": true + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/query-pagination.php b/wp-includes/blocks/query-pagination.php new file mode 100644 index 0000000..9b7289e --- /dev/null +++ b/wp-includes/blocks/query-pagination.php @@ -0,0 +1,47 @@ +<?php +/** + * Server-side rendering of the `core/query-pagination` block. + * + * @package WordPress + */ + +/** + * Renders the `core/query-pagination` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * + * @return string Returns the wrapper for the Query pagination. + */ +function render_block_core_query_pagination( $attributes, $content ) { + if ( empty( trim( $content ) ) ) { + return ''; + } + + $classes = ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) ? 'has-link-color' : ''; + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'aria-label' => __( 'Pagination' ), + 'class' => $classes, + ) + ); + + return sprintf( + '<nav %1$s>%2$s</nav>', + $wrapper_attributes, + $content + ); +} + +/** + * Registers the `core/query-pagination` block on the server. + */ +function register_block_core_query_pagination() { + register_block_type_from_metadata( + __DIR__ . '/query-pagination', + array( + 'render_callback' => 'render_block_core_query_pagination', + ) + ); +} +add_action( 'init', 'register_block_core_query_pagination' ); diff --git a/wp-includes/blocks/query-pagination/block.json b/wp-includes/blocks/query-pagination/block.json new file mode 100644 index 0000000..e32a9ba --- /dev/null +++ b/wp-includes/blocks/query-pagination/block.json @@ -0,0 +1,61 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/query-pagination", + "title": "Pagination", + "category": "theme", + "parent": [ "core/query" ], + "description": "Displays a paginated navigation to next/previous set of posts, when applicable.", + "textdomain": "default", + "attributes": { + "paginationArrow": { + "type": "string", + "default": "none" + }, + "showLabel": { + "type": "boolean", + "default": true + } + }, + "usesContext": [ "queryId", "query" ], + "providesContext": { + "paginationArrow": "paginationArrow", + "showLabel": "showLabel" + }, + "supports": { + "align": true, + "reusable": false, + "html": false, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true, + "link": true + } + }, + "layout": { + "allowSwitching": false, + "allowInheriting": false, + "default": { + "type": "flex" + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-query-pagination-editor", + "style": "wp-block-query-pagination" +} diff --git a/wp-includes/blocks/query-pagination/editor-rtl.css b/wp-includes/blocks/query-pagination/editor-rtl.css new file mode 100644 index 0000000..7f72d3c --- /dev/null +++ b/wp-includes/blocks/query-pagination/editor-rtl.css @@ -0,0 +1,19 @@ +.wp-block[data-align=center]>.wp-block-query-pagination{ + justify-content:center; +} + +.editor-styles-wrapper .wp-block-query-pagination{ + max-width:100%; +} +.editor-styles-wrapper .wp-block-query-pagination.block-editor-block-list__layout{ + margin:0; +} + +.wp-block-query-pagination>.wp-block-query-pagination-next,.wp-block-query-pagination>.wp-block-query-pagination-numbers,.wp-block-query-pagination>.wp-block-query-pagination-previous{ + margin-bottom:.5em; + margin-right:.5em; + margin-top:.5em; +} +.wp-block-query-pagination>.wp-block-query-pagination-next:last-child,.wp-block-query-pagination>.wp-block-query-pagination-numbers:last-child,.wp-block-query-pagination>.wp-block-query-pagination-previous:last-child{ + margin-right:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/query-pagination/editor-rtl.min.css b/wp-includes/blocks/query-pagination/editor-rtl.min.css new file mode 100644 index 0000000..52af693 --- /dev/null +++ b/wp-includes/blocks/query-pagination/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block[data-align=center]>.wp-block-query-pagination{justify-content:center}.editor-styles-wrapper .wp-block-query-pagination{max-width:100%}.editor-styles-wrapper .wp-block-query-pagination.block-editor-block-list__layout{margin:0}.wp-block-query-pagination>.wp-block-query-pagination-next,.wp-block-query-pagination>.wp-block-query-pagination-numbers,.wp-block-query-pagination>.wp-block-query-pagination-previous{margin-bottom:.5em;margin-right:.5em;margin-top:.5em}.wp-block-query-pagination>.wp-block-query-pagination-next:last-child,.wp-block-query-pagination>.wp-block-query-pagination-numbers:last-child,.wp-block-query-pagination>.wp-block-query-pagination-previous:last-child{margin-right:0}
\ No newline at end of file diff --git a/wp-includes/blocks/query-pagination/editor.css b/wp-includes/blocks/query-pagination/editor.css new file mode 100644 index 0000000..0ad7b63 --- /dev/null +++ b/wp-includes/blocks/query-pagination/editor.css @@ -0,0 +1,17 @@ +.wp-block[data-align=center]>.wp-block-query-pagination{ + justify-content:center; +} + +.editor-styles-wrapper .wp-block-query-pagination{ + max-width:100%; +} +.editor-styles-wrapper .wp-block-query-pagination.block-editor-block-list__layout{ + margin:0; +} + +.wp-block-query-pagination>.wp-block-query-pagination-next,.wp-block-query-pagination>.wp-block-query-pagination-numbers,.wp-block-query-pagination>.wp-block-query-pagination-previous{ + margin:.5em .5em .5em 0; +} +.wp-block-query-pagination>.wp-block-query-pagination-next:last-child,.wp-block-query-pagination>.wp-block-query-pagination-numbers:last-child,.wp-block-query-pagination>.wp-block-query-pagination-previous:last-child{ + margin-right:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/query-pagination/editor.min.css b/wp-includes/blocks/query-pagination/editor.min.css new file mode 100644 index 0000000..ca79311 --- /dev/null +++ b/wp-includes/blocks/query-pagination/editor.min.css @@ -0,0 +1 @@ +.wp-block[data-align=center]>.wp-block-query-pagination{justify-content:center}.editor-styles-wrapper .wp-block-query-pagination{max-width:100%}.editor-styles-wrapper .wp-block-query-pagination.block-editor-block-list__layout{margin:0}.wp-block-query-pagination>.wp-block-query-pagination-next,.wp-block-query-pagination>.wp-block-query-pagination-numbers,.wp-block-query-pagination>.wp-block-query-pagination-previous{margin:.5em .5em .5em 0}.wp-block-query-pagination>.wp-block-query-pagination-next:last-child,.wp-block-query-pagination>.wp-block-query-pagination-numbers:last-child,.wp-block-query-pagination>.wp-block-query-pagination-previous:last-child{margin-right:0}
\ No newline at end of file diff --git a/wp-includes/blocks/query-pagination/style-rtl.css b/wp-includes/blocks/query-pagination/style-rtl.css new file mode 100644 index 0000000..886dd36 --- /dev/null +++ b/wp-includes/blocks/query-pagination/style-rtl.css @@ -0,0 +1,32 @@ +.wp-block-query-pagination>.wp-block-query-pagination-next,.wp-block-query-pagination>.wp-block-query-pagination-numbers,.wp-block-query-pagination>.wp-block-query-pagination-previous{ + margin-bottom:.5em; + margin-right:.5em; +} +.wp-block-query-pagination>.wp-block-query-pagination-next:last-child,.wp-block-query-pagination>.wp-block-query-pagination-numbers:last-child,.wp-block-query-pagination>.wp-block-query-pagination-previous:last-child{ + margin-right:0; +} +.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-next:last-of-type{ + -webkit-margin-start:auto; + margin-inline-start:auto; +} +.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-previous:first-child{ + -webkit-margin-end:auto; + margin-inline-end:auto; +} +.wp-block-query-pagination .wp-block-query-pagination-previous-arrow{ + display:inline-block; + margin-left:1ch; +} +.wp-block-query-pagination .wp-block-query-pagination-previous-arrow:not(.is-arrow-chevron){ + transform:scaleX(-1);; +} +.wp-block-query-pagination .wp-block-query-pagination-next-arrow{ + display:inline-block; + margin-right:1ch; +} +.wp-block-query-pagination .wp-block-query-pagination-next-arrow:not(.is-arrow-chevron){ + transform:scaleX(-1);; +} +.wp-block-query-pagination.aligncenter{ + justify-content:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/query-pagination/style-rtl.min.css b/wp-includes/blocks/query-pagination/style-rtl.min.css new file mode 100644 index 0000000..79c2bf0 --- /dev/null +++ b/wp-includes/blocks/query-pagination/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-query-pagination>.wp-block-query-pagination-next,.wp-block-query-pagination>.wp-block-query-pagination-numbers,.wp-block-query-pagination>.wp-block-query-pagination-previous{margin-bottom:.5em;margin-right:.5em}.wp-block-query-pagination>.wp-block-query-pagination-next:last-child,.wp-block-query-pagination>.wp-block-query-pagination-numbers:last-child,.wp-block-query-pagination>.wp-block-query-pagination-previous:last-child{margin-right:0}.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-next:last-of-type{-webkit-margin-start:auto;margin-inline-start:auto}.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-previous:first-child{-webkit-margin-end:auto;margin-inline-end:auto}.wp-block-query-pagination .wp-block-query-pagination-previous-arrow{display:inline-block;margin-left:1ch}.wp-block-query-pagination .wp-block-query-pagination-previous-arrow:not(.is-arrow-chevron){transform:scaleX(-1)}.wp-block-query-pagination .wp-block-query-pagination-next-arrow{display:inline-block;margin-right:1ch}.wp-block-query-pagination .wp-block-query-pagination-next-arrow:not(.is-arrow-chevron){transform:scaleX(-1)}.wp-block-query-pagination.aligncenter{justify-content:center}
\ No newline at end of file diff --git a/wp-includes/blocks/query-pagination/style.css b/wp-includes/blocks/query-pagination/style.css new file mode 100644 index 0000000..79f6c2c --- /dev/null +++ b/wp-includes/blocks/query-pagination/style.css @@ -0,0 +1,32 @@ +.wp-block-query-pagination>.wp-block-query-pagination-next,.wp-block-query-pagination>.wp-block-query-pagination-numbers,.wp-block-query-pagination>.wp-block-query-pagination-previous{ + margin-bottom:.5em; + margin-right:.5em; +} +.wp-block-query-pagination>.wp-block-query-pagination-next:last-child,.wp-block-query-pagination>.wp-block-query-pagination-numbers:last-child,.wp-block-query-pagination>.wp-block-query-pagination-previous:last-child{ + margin-right:0; +} +.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-next:last-of-type{ + -webkit-margin-start:auto; + margin-inline-start:auto; +} +.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-previous:first-child{ + -webkit-margin-end:auto; + margin-inline-end:auto; +} +.wp-block-query-pagination .wp-block-query-pagination-previous-arrow{ + display:inline-block; + margin-right:1ch; +} +.wp-block-query-pagination .wp-block-query-pagination-previous-arrow:not(.is-arrow-chevron){ + transform:scaleX(1); +} +.wp-block-query-pagination .wp-block-query-pagination-next-arrow{ + display:inline-block; + margin-left:1ch; +} +.wp-block-query-pagination .wp-block-query-pagination-next-arrow:not(.is-arrow-chevron){ + transform:scaleX(1); +} +.wp-block-query-pagination.aligncenter{ + justify-content:center; +}
\ No newline at end of file diff --git a/wp-includes/blocks/query-pagination/style.min.css b/wp-includes/blocks/query-pagination/style.min.css new file mode 100644 index 0000000..cd42648 --- /dev/null +++ b/wp-includes/blocks/query-pagination/style.min.css @@ -0,0 +1 @@ +.wp-block-query-pagination>.wp-block-query-pagination-next,.wp-block-query-pagination>.wp-block-query-pagination-numbers,.wp-block-query-pagination>.wp-block-query-pagination-previous{margin-bottom:.5em;margin-right:.5em}.wp-block-query-pagination>.wp-block-query-pagination-next:last-child,.wp-block-query-pagination>.wp-block-query-pagination-numbers:last-child,.wp-block-query-pagination>.wp-block-query-pagination-previous:last-child{margin-right:0}.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-next:last-of-type{-webkit-margin-start:auto;margin-inline-start:auto}.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-previous:first-child{-webkit-margin-end:auto;margin-inline-end:auto}.wp-block-query-pagination .wp-block-query-pagination-previous-arrow{display:inline-block;margin-right:1ch}.wp-block-query-pagination .wp-block-query-pagination-previous-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-query-pagination .wp-block-query-pagination-next-arrow{display:inline-block;margin-left:1ch}.wp-block-query-pagination .wp-block-query-pagination-next-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-query-pagination.aligncenter{justify-content:center}
\ No newline at end of file diff --git a/wp-includes/blocks/query-title.php b/wp-includes/blocks/query-title.php new file mode 100644 index 0000000..29793e5 --- /dev/null +++ b/wp-includes/blocks/query-title.php @@ -0,0 +1,72 @@ +<?php +/** + * Server-side rendering of the `core/query-title` block. + * + * @package WordPress + */ + +/** + * Renders the `core/query-title` block on the server. + * For now it only supports Archive title, + * using queried object information + * + * @param array $attributes Block attributes. + * + * @return string Returns the query title based on the queried object. + */ +function render_block_core_query_title( $attributes ) { + $type = isset( $attributes['type'] ) ? $attributes['type'] : null; + $is_archive = is_archive(); + $is_search = is_search(); + if ( ! $type || + ( 'archive' === $type && ! $is_archive ) || + ( 'search' === $type && ! $is_search ) + ) { + return ''; + } + $title = ''; + if ( $is_archive ) { + $show_prefix = isset( $attributes['showPrefix'] ) ? $attributes['showPrefix'] : true; + if ( ! $show_prefix ) { + add_filter( 'get_the_archive_title_prefix', '__return_empty_string', 1 ); + $title = get_the_archive_title(); + remove_filter( 'get_the_archive_title_prefix', '__return_empty_string', 1 ); + } else { + $title = get_the_archive_title(); + } + } + if ( $is_search ) { + $title = __( 'Search results' ); + + if ( isset( $attributes['showSearchTerm'] ) && $attributes['showSearchTerm'] ) { + $title = sprintf( + /* translators: %s is the search term. */ + __( 'Search results for: "%s"' ), + get_search_query() + ); + } + } + + $tag_name = isset( $attributes['level'] ) ? 'h' . (int) $attributes['level'] : 'h1'; + $align_class_name = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}"; + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) ); + return sprintf( + '<%1$s %2$s>%3$s</%1$s>', + $tag_name, + $wrapper_attributes, + $title + ); +} + +/** + * Registers the `core/query-title` block on the server. + */ +function register_block_core_query_title() { + register_block_type_from_metadata( + __DIR__ . '/query-title', + array( + 'render_callback' => 'render_block_core_query_title', + ) + ); +} +add_action( 'init', 'register_block_core_query_title' ); diff --git a/wp-includes/blocks/query-title/block.json b/wp-includes/blocks/query-title/block.json new file mode 100644 index 0000000..2db349e --- /dev/null +++ b/wp-includes/blocks/query-title/block.json @@ -0,0 +1,60 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/query-title", + "title": "Query Title", + "category": "theme", + "description": "Display the query title.", + "textdomain": "default", + "attributes": { + "type": { + "type": "string" + }, + "textAlign": { + "type": "string" + }, + "level": { + "type": "number", + "default": 1 + }, + "showPrefix": { + "type": "boolean", + "default": true + }, + "showSearchTerm": { + "type": "boolean", + "default": true + } + }, + "supports": { + "align": [ "wide", "full" ], + "html": false, + "color": { + "gradients": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontStyle": true, + "__experimentalFontWeight": true, + "__experimentalLetterSpacing": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalDefaultControls": { + "fontSize": true, + "fontAppearance": true, + "textTransform": true + } + } + }, + "style": "wp-block-query-title" +} diff --git a/wp-includes/blocks/query-title/style-rtl.css b/wp-includes/blocks/query-title/style-rtl.css new file mode 100644 index 0000000..9371ffa --- /dev/null +++ b/wp-includes/blocks/query-title/style-rtl.css @@ -0,0 +1,3 @@ +.wp-block-query-title{ + box-sizing:border-box; +}
\ No newline at end of file diff --git a/wp-includes/blocks/query-title/style-rtl.min.css b/wp-includes/blocks/query-title/style-rtl.min.css new file mode 100644 index 0000000..13d9b6d --- /dev/null +++ b/wp-includes/blocks/query-title/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-query-title{box-sizing:border-box}
\ No newline at end of file diff --git a/wp-includes/blocks/query-title/style.css b/wp-includes/blocks/query-title/style.css new file mode 100644 index 0000000..9371ffa --- /dev/null +++ b/wp-includes/blocks/query-title/style.css @@ -0,0 +1,3 @@ +.wp-block-query-title{ + box-sizing:border-box; +}
\ No newline at end of file diff --git a/wp-includes/blocks/query-title/style.min.css b/wp-includes/blocks/query-title/style.min.css new file mode 100644 index 0000000..13d9b6d --- /dev/null +++ b/wp-includes/blocks/query-title/style.min.css @@ -0,0 +1 @@ +.wp-block-query-title{box-sizing:border-box}
\ No newline at end of file diff --git a/wp-includes/blocks/query.php b/wp-includes/blocks/query.php new file mode 100644 index 0000000..b6a5733 --- /dev/null +++ b/wp-includes/blocks/query.php @@ -0,0 +1,218 @@ +<?php +/** + * Server-side rendering of the `core/query` block. + * + * @package WordPress + */ + +/** + * Modifies the static `core/query` block on the server. + * + * @since 6.4.0 + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block The block instance. + * + * @return string Returns the modified output of the query block. + */ +function render_block_core_query( $attributes, $content, $block ) { + if ( $attributes['enhancedPagination'] && isset( $attributes['queryId'] ) ) { + $p = new WP_HTML_Tag_Processor( $content ); + if ( $p->next_tag() ) { + // Add the necessary directives. + $p->set_attribute( 'data-wp-interactive', true ); + $p->set_attribute( 'data-wp-navigation-id', 'query-' . $attributes['queryId'] ); + // Use context to send translated strings. + $p->set_attribute( + 'data-wp-context', + wp_json_encode( + array( + 'core' => array( + 'query' => array( + 'loadingText' => __( 'Loading page, please wait.' ), + 'loadedText' => __( 'Page Loaded.' ), + ), + ), + ), + JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP + ) + ); + $content = $p->get_updated_html(); + + // Mark the block as interactive. + $block->block_type->supports['interactivity'] = true; + + // Add a div to announce messages using `aria-live`. + $html_tag = 'div'; + if ( ! empty( $attributes['tagName'] ) ) { + $html_tag = esc_attr( $attributes['tagName'] ); + } + $last_tag_position = strripos( $content, '</' . $html_tag . '>' ); + $content = substr_replace( + $content, + '<div + class="screen-reader-text" + aria-live="polite" + data-wp-text="context.core.query.message" + ></div> + <div + class="wp-block-query__enhanced-pagination-animation" + data-wp-class--start-animation="selectors.core.query.startAnimation" + data-wp-class--finish-animation="selectors.core.query.finishAnimation" + ></div>', + $last_tag_position, + 0 + ); + } + } + + $view_asset = 'wp-block-query-view'; + if ( ! wp_script_is( $view_asset ) ) { + $script_handles = $block->block_type->view_script_handles; + // If the script is not needed, and it is still in the `view_script_handles`, remove it. + if ( + ( ! $attributes['enhancedPagination'] || ! isset( $attributes['queryId'] ) ) + && in_array( $view_asset, $script_handles, true ) + ) { + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_asset ) ); + } + // If the script is needed, but it was previously removed, add it again. + if ( $attributes['enhancedPagination'] && isset( $attributes['queryId'] ) && ! in_array( $view_asset, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_asset ) ); + } + } + + $style_asset = 'wp-block-query'; + if ( ! wp_style_is( $style_asset ) ) { + $style_handles = $block->block_type->style_handles; + // If the styles are not needed, and they are still in the `style_handles`, remove them. + if ( + ( ! $attributes['enhancedPagination'] || ! isset( $attributes['queryId'] ) ) + && in_array( $style_asset, $style_handles, true ) + ) { + $block->block_type->style_handles = array_diff( $style_handles, array( $style_asset ) ); + } + // If the styles are needed, but they were previously removed, add them again. + if ( $attributes['enhancedPagination'] && isset( $attributes['queryId'] ) && ! in_array( $style_asset, $style_handles, true ) ) { + $block->block_type->style_handles = array_merge( $style_handles, array( $style_asset ) ); + } + } + + return $content; +} + +/** + * Ensure that the view script has the `wp-interactivity` dependency. + * + * @since 6.4.0 + * + * @global WP_Scripts $wp_scripts + */ +function block_core_query_ensure_interactivity_dependency() { + global $wp_scripts; + if ( + isset( $wp_scripts->registered['wp-block-query-view'] ) && + ! in_array( 'wp-interactivity', $wp_scripts->registered['wp-block-query-view']->deps, true ) + ) { + $wp_scripts->registered['wp-block-query-view']->deps[] = 'wp-interactivity'; + } +} + +add_action( 'wp_print_scripts', 'block_core_query_ensure_interactivity_dependency' ); + +/** + * Registers the `core/query` block on the server. + */ +function register_block_core_query() { + register_block_type_from_metadata( + __DIR__ . '/query', + array( + 'render_callback' => 'render_block_core_query', + ) + ); +} +add_action( 'init', 'register_block_core_query' ); + +/** + * Traverse the tree of blocks looking for any plugin block (i.e., a block from + * an installed plugin) inside a Query block with the enhanced pagination + * enabled. If at least one is found, the enhanced pagination is effectively + * disabled to prevent any potential incompatibilities. + * + * @since 6.4.0 + * + * @param array $parsed_block The block being rendered. + * @return string Returns the parsed block, unmodified. + */ +function block_core_query_disable_enhanced_pagination( $parsed_block ) { + static $enhanced_query_stack = array(); + static $dirty_enhanced_queries = array(); + static $render_query_callback = null; + + $block_name = $parsed_block['blockName']; + + if ( + 'core/query' === $block_name && + isset( $parsed_block['attrs']['enhancedPagination'] ) && + true === $parsed_block['attrs']['enhancedPagination'] && + isset( $parsed_block['attrs']['queryId'] ) + ) { + $enhanced_query_stack[] = $parsed_block['attrs']['queryId']; + + if ( ! isset( $render_query_callback ) ) { + /** + * Filter that disables the enhanced pagination feature during block + * rendering when a plugin block has been found inside. It does so + * by adding an attribute called `data-wp-navigation-disabled` which + * is later handled by the front-end logic. + * + * @param string $content The block content. + * @param array $block The full block, including name and attributes. + * @return string Returns the modified output of the query block. + */ + $render_query_callback = static function ( $content, $block ) use ( &$enhanced_query_stack, &$dirty_enhanced_queries, &$render_query_callback ) { + $has_enhanced_pagination = + isset( $block['attrs']['enhancedPagination'] ) && + true === $block['attrs']['enhancedPagination'] && + isset( $block['attrs']['queryId'] ); + + if ( ! $has_enhanced_pagination ) { + return $content; + } + + if ( isset( $dirty_enhanced_queries[ $block['attrs']['queryId'] ] ) ) { + $p = new WP_HTML_Tag_Processor( $content ); + if ( $p->next_tag() ) { + $p->set_attribute( 'data-wp-navigation-disabled', 'true' ); + } + $content = $p->get_updated_html(); + $dirty_enhanced_queries[ $block['attrs']['queryId'] ] = null; + } + + array_pop( $enhanced_query_stack ); + + if ( empty( $enhanced_query_stack ) ) { + remove_filter( 'render_block_core/query', $render_query_callback ); + $render_query_callback = null; + } + + return $content; + }; + + add_filter( 'render_block_core/query', $render_query_callback, 10, 2 ); + } + } elseif ( + ! empty( $enhanced_query_stack ) && + isset( $block_name ) && + ( ! str_starts_with( $block_name, 'core/' ) || 'core/post-content' === $block_name ) + ) { + foreach ( $enhanced_query_stack as $query_id ) { + $dirty_enhanced_queries[ $query_id ] = true; + } + } + + return $parsed_block; +} + +add_filter( 'render_block_data', 'block_core_query_disable_enhanced_pagination', 10, 1 ); diff --git a/wp-includes/blocks/query/block.json b/wp-includes/blocks/query/block.json new file mode 100644 index 0000000..d30eccf --- /dev/null +++ b/wp-includes/blocks/query/block.json @@ -0,0 +1,57 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/query", + "title": "Query Loop", + "category": "theme", + "description": "An advanced block that allows displaying post types based on different query parameters and visual configurations.", + "textdomain": "default", + "attributes": { + "queryId": { + "type": "number" + }, + "query": { + "type": "object", + "default": { + "perPage": null, + "pages": 0, + "offset": 0, + "postType": "post", + "order": "desc", + "orderBy": "date", + "author": "", + "search": "", + "exclude": [], + "sticky": "", + "inherit": true, + "taxQuery": null, + "parents": [] + } + }, + "tagName": { + "type": "string", + "default": "div" + }, + "namespace": { + "type": "string" + }, + "enhancedPagination": { + "type": "boolean", + "default": false + } + }, + "providesContext": { + "queryId": "queryId", + "query": "query", + "displayLayout": "displayLayout", + "enhancedPagination": "enhancedPagination" + }, + "supports": { + "align": [ "wide", "full" ], + "html": false, + "layout": true + }, + "editorStyle": "wp-block-query-editor", + "style": "wp-block-query", + "viewScript": "file:./view.min.js" +} diff --git a/wp-includes/blocks/query/editor-rtl.css b/wp-includes/blocks/query/editor-rtl.css new file mode 100644 index 0000000..bf715b2 --- /dev/null +++ b/wp-includes/blocks/query/editor-rtl.css @@ -0,0 +1,57 @@ +.block-library-query-toolbar__popover .components-popover__content{ + min-width:230px; +} + +.wp-block-query__create-new-link{ + padding:0 52px 16px 16px; +} + +.block-library-query__pattern-selection-content .block-editor-block-patterns-list{ + grid-gap:8px; + display:grid; + grid-template-columns:1fr 1fr 1fr; +} +.block-library-query__pattern-selection-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{ + margin-bottom:0; +} +.block-library-query__pattern-selection-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item .block-editor-block-preview__container{ + max-height:250px; +} + +.block-library-query-pattern__selection-modal .block-editor-block-patterns-list{ + column-count:2; + column-gap:24px; +} +@media (min-width:1280px){ + .block-library-query-pattern__selection-modal .block-editor-block-patterns-list{ + column-count:3; + } +} +.block-library-query-pattern__selection-modal .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{ + break-inside:avoid-column; +} +.block-library-query-pattern__selection-modal .block-library-query-pattern__selection-search{ + background:#fff; + margin-bottom:2px; + padding:16px 0; + position:sticky; + top:0; + z-index:2; +} + +.block-library-query-toolspanel__filters .components-form-token-field__help{ + margin-bottom:0; +} +.block-library-query-toolspanel__filters .block-library-query-inspector__taxonomy-control:not(:last-child){ + margin-bottom:24px; +} + +@media (min-width:600px){ + .wp-block-query__enhanced-pagination-modal{ + max-width:480px; + } +} + +.wp-block-query__enhanced-pagination-notice{ + margin:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/query/editor-rtl.min.css b/wp-includes/blocks/query/editor-rtl.min.css new file mode 100644 index 0000000..7c01abd --- /dev/null +++ b/wp-includes/blocks/query/editor-rtl.min.css @@ -0,0 +1 @@ +.block-library-query-toolbar__popover .components-popover__content{min-width:230px}.wp-block-query__create-new-link{padding:0 52px 16px 16px}.block-library-query__pattern-selection-content .block-editor-block-patterns-list{grid-gap:8px;display:grid;grid-template-columns:1fr 1fr 1fr}.block-library-query__pattern-selection-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{margin-bottom:0}.block-library-query__pattern-selection-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item .block-editor-block-preview__container{max-height:250px}.block-library-query-pattern__selection-modal .block-editor-block-patterns-list{column-count:2;column-gap:24px}@media (min-width:1280px){.block-library-query-pattern__selection-modal .block-editor-block-patterns-list{column-count:3}}.block-library-query-pattern__selection-modal .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{break-inside:avoid-column}.block-library-query-pattern__selection-modal .block-library-query-pattern__selection-search{background:#fff;margin-bottom:2px;padding:16px 0;position:sticky;top:0;z-index:2}.block-library-query-toolspanel__filters .components-form-token-field__help{margin-bottom:0}.block-library-query-toolspanel__filters .block-library-query-inspector__taxonomy-control:not(:last-child){margin-bottom:24px}@media (min-width:600px){.wp-block-query__enhanced-pagination-modal{max-width:480px}}.wp-block-query__enhanced-pagination-notice{margin:0}
\ No newline at end of file diff --git a/wp-includes/blocks/query/editor.css b/wp-includes/blocks/query/editor.css new file mode 100644 index 0000000..61dc7f7 --- /dev/null +++ b/wp-includes/blocks/query/editor.css @@ -0,0 +1,57 @@ +.block-library-query-toolbar__popover .components-popover__content{ + min-width:230px; +} + +.wp-block-query__create-new-link{ + padding:0 16px 16px 52px; +} + +.block-library-query__pattern-selection-content .block-editor-block-patterns-list{ + grid-gap:8px; + display:grid; + grid-template-columns:1fr 1fr 1fr; +} +.block-library-query__pattern-selection-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{ + margin-bottom:0; +} +.block-library-query__pattern-selection-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item .block-editor-block-preview__container{ + max-height:250px; +} + +.block-library-query-pattern__selection-modal .block-editor-block-patterns-list{ + column-count:2; + column-gap:24px; +} +@media (min-width:1280px){ + .block-library-query-pattern__selection-modal .block-editor-block-patterns-list{ + column-count:3; + } +} +.block-library-query-pattern__selection-modal .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{ + break-inside:avoid-column; +} +.block-library-query-pattern__selection-modal .block-library-query-pattern__selection-search{ + background:#fff; + margin-bottom:2px; + padding:16px 0; + position:sticky; + top:0; + z-index:2; +} + +.block-library-query-toolspanel__filters .components-form-token-field__help{ + margin-bottom:0; +} +.block-library-query-toolspanel__filters .block-library-query-inspector__taxonomy-control:not(:last-child){ + margin-bottom:24px; +} + +@media (min-width:600px){ + .wp-block-query__enhanced-pagination-modal{ + max-width:480px; + } +} + +.wp-block-query__enhanced-pagination-notice{ + margin:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/query/editor.min.css b/wp-includes/blocks/query/editor.min.css new file mode 100644 index 0000000..c36952d --- /dev/null +++ b/wp-includes/blocks/query/editor.min.css @@ -0,0 +1 @@ +.block-library-query-toolbar__popover .components-popover__content{min-width:230px}.wp-block-query__create-new-link{padding:0 16px 16px 52px}.block-library-query__pattern-selection-content .block-editor-block-patterns-list{grid-gap:8px;display:grid;grid-template-columns:1fr 1fr 1fr}.block-library-query__pattern-selection-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{margin-bottom:0}.block-library-query__pattern-selection-content .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item .block-editor-block-preview__container{max-height:250px}.block-library-query-pattern__selection-modal .block-editor-block-patterns-list{column-count:2;column-gap:24px}@media (min-width:1280px){.block-library-query-pattern__selection-modal .block-editor-block-patterns-list{column-count:3}}.block-library-query-pattern__selection-modal .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{break-inside:avoid-column}.block-library-query-pattern__selection-modal .block-library-query-pattern__selection-search{background:#fff;margin-bottom:2px;padding:16px 0;position:sticky;top:0;z-index:2}.block-library-query-toolspanel__filters .components-form-token-field__help{margin-bottom:0}.block-library-query-toolspanel__filters .block-library-query-inspector__taxonomy-control:not(:last-child){margin-bottom:24px}@media (min-width:600px){.wp-block-query__enhanced-pagination-modal{max-width:480px}}.wp-block-query__enhanced-pagination-notice{margin:0}
\ No newline at end of file diff --git a/wp-includes/blocks/query/style-rtl.css b/wp-includes/blocks/query/style-rtl.css new file mode 100644 index 0000000..cfd727e --- /dev/null +++ b/wp-includes/blocks/query/style-rtl.css @@ -0,0 +1,42 @@ +.wp-block-query__enhanced-pagination-animation{ + background-color:var(--wp--preset--color--primary, #000); + height:4px; + margin:0; + max-width:100vw !important; + opacity:0; + padding:0; + position:fixed; + right:0; + top:0; + width:100vw; +} +.wp-block-query__enhanced-pagination-animation.start-animation{ + animation:wp-block-query__enhanced-pagination-start-animation 30s cubic-bezier(.03, .5, 0, 1) forwards; +} +.wp-block-query__enhanced-pagination-animation.finish-animation{ + animation:wp-block-query__enhanced-pagination-finish-animation .3s ease-in; +} + +@keyframes wp-block-query__enhanced-pagination-start-animation{ + 0%{ + opacity:1; + transform:scaleX(0); + transform-origin:100% 0; + } + to{ + opacity:1; + transform:scaleX(1); + transform-origin:100% 0; + } +} +@keyframes wp-block-query__enhanced-pagination-finish-animation{ + 0%{ + opacity:1; + } + 50%{ + opacity:1; + } + to{ + opacity:0; + } +}
\ No newline at end of file diff --git a/wp-includes/blocks/query/style-rtl.min.css b/wp-includes/blocks/query/style-rtl.min.css new file mode 100644 index 0000000..6849acf --- /dev/null +++ b/wp-includes/blocks/query/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-query__enhanced-pagination-animation{background-color:var(--wp--preset--color--primary,#000);height:4px;margin:0;max-width:100vw!important;opacity:0;padding:0;position:fixed;right:0;top:0;width:100vw}.wp-block-query__enhanced-pagination-animation.start-animation{animation:wp-block-query__enhanced-pagination-start-animation 30s cubic-bezier(.03,.5,0,1) forwards}.wp-block-query__enhanced-pagination-animation.finish-animation{animation:wp-block-query__enhanced-pagination-finish-animation .3s ease-in}@keyframes wp-block-query__enhanced-pagination-start-animation{0%{opacity:1;transform:scaleX(0);transform-origin:100% 0}to{opacity:1;transform:scaleX(1);transform-origin:100% 0}}@keyframes wp-block-query__enhanced-pagination-finish-animation{0%{opacity:1}50%{opacity:1}to{opacity:0}}
\ No newline at end of file diff --git a/wp-includes/blocks/query/style.css b/wp-includes/blocks/query/style.css new file mode 100644 index 0000000..241cdc8 --- /dev/null +++ b/wp-includes/blocks/query/style.css @@ -0,0 +1,42 @@ +.wp-block-query__enhanced-pagination-animation{ + background-color:var(--wp--preset--color--primary, #000); + height:4px; + left:0; + margin:0; + max-width:100vw !important; + opacity:0; + padding:0; + position:fixed; + top:0; + width:100vw; +} +.wp-block-query__enhanced-pagination-animation.start-animation{ + animation:wp-block-query__enhanced-pagination-start-animation 30s cubic-bezier(.03, .5, 0, 1) forwards; +} +.wp-block-query__enhanced-pagination-animation.finish-animation{ + animation:wp-block-query__enhanced-pagination-finish-animation .3s ease-in; +} + +@keyframes wp-block-query__enhanced-pagination-start-animation{ + 0%{ + opacity:1; + transform:scaleX(0); + transform-origin:0 0; + } + to{ + opacity:1; + transform:scaleX(1); + transform-origin:0 0; + } +} +@keyframes wp-block-query__enhanced-pagination-finish-animation{ + 0%{ + opacity:1; + } + 50%{ + opacity:1; + } + to{ + opacity:0; + } +}
\ No newline at end of file diff --git a/wp-includes/blocks/query/style.min.css b/wp-includes/blocks/query/style.min.css new file mode 100644 index 0000000..7627634 --- /dev/null +++ b/wp-includes/blocks/query/style.min.css @@ -0,0 +1 @@ +.wp-block-query__enhanced-pagination-animation{background-color:var(--wp--preset--color--primary,#000);height:4px;left:0;margin:0;max-width:100vw!important;opacity:0;padding:0;position:fixed;top:0;width:100vw}.wp-block-query__enhanced-pagination-animation.start-animation{animation:wp-block-query__enhanced-pagination-start-animation 30s cubic-bezier(.03,.5,0,1) forwards}.wp-block-query__enhanced-pagination-animation.finish-animation{animation:wp-block-query__enhanced-pagination-finish-animation .3s ease-in}@keyframes wp-block-query__enhanced-pagination-start-animation{0%{opacity:1;transform:scaleX(0);transform-origin:0 0}to{opacity:1;transform:scaleX(1);transform-origin:0 0}}@keyframes wp-block-query__enhanced-pagination-finish-animation{0%{opacity:1}50%{opacity:1}to{opacity:0}}
\ No newline at end of file diff --git a/wp-includes/blocks/query/view.asset.php b/wp-includes/blocks/query/view.asset.php new file mode 100644 index 0000000..09db564 --- /dev/null +++ b/wp-includes/blocks/query/view.asset.php @@ -0,0 +1 @@ +<?php return array('dependencies' => array(), 'version' => 'f932eea8999458215fe1'); diff --git a/wp-includes/blocks/query/view.js b/wp-includes/blocks/query/view.js new file mode 100644 index 0000000..55083bf --- /dev/null +++ b/wp-includes/blocks/query/view.js @@ -0,0 +1,104 @@ +"use strict"; +(self["__WordPressPrivateInteractivityAPI__"] = self["__WordPressPrivateInteractivityAPI__"] || []).push([[155],{ + +/***/ 890: +/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) { + +/* harmony import */ var _wordpress_interactivity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(754); +/** + * WordPress dependencies + */ + +const isValidLink = ref => ref && ref instanceof window.HTMLAnchorElement && ref.href && (!ref.target || ref.target === '_self') && ref.origin === window.location.origin; +const isValidEvent = event => event.button === 0 && +// left clicks only +!event.metaKey && +// open in new tab (mac) +!event.ctrlKey && +// open in new tab (windows) +!event.altKey && +// download +!event.shiftKey && !event.defaultPrevented; +(0,_wordpress_interactivity__WEBPACK_IMPORTED_MODULE_0__/* .store */ .h)({ + selectors: { + core: { + query: { + startAnimation: ({ + context + }) => context.core.query.animation === 'start', + finishAnimation: ({ + context + }) => context.core.query.animation === 'finish' + } + } + }, + actions: { + core: { + query: { + navigate: async ({ + event, + ref, + context + }) => { + const isDisabled = ref.closest('[data-wp-navigation-id]')?.dataset.wpNavigationDisabled; + if (isValidLink(ref) && isValidEvent(event) && !isDisabled) { + event.preventDefault(); + const id = ref.closest('[data-wp-navigation-id]').dataset.wpNavigationId; + + // Don't announce the navigation immediately, wait 300 ms. + const timeout = setTimeout(() => { + context.core.query.message = context.core.query.loadingText; + context.core.query.animation = 'start'; + }, 400); + await (0,_wordpress_interactivity__WEBPACK_IMPORTED_MODULE_0__/* .navigate */ .c4)(ref.href); + + // Dismiss loading message if it hasn't been added yet. + clearTimeout(timeout); + + // Announce that the page has been loaded. If the message is the + // same, we use a no-break space similar to the @wordpress/a11y + // package: https://github.com/WordPress/gutenberg/blob/c395242b8e6ee20f8b06c199e4fc2920d7018af1/packages/a11y/src/filter-message.js#L20-L26 + context.core.query.message = context.core.query.loadedText + (context.core.query.message === context.core.query.loadedText ? '\u00A0' : ''); + context.core.query.animation = 'finish'; + context.core.query.url = ref.href; + + // Focus the first anchor of the Query block. + const firstAnchor = `[data-wp-navigation-id=${id}] .wp-block-post-template a[href]`; + document.querySelector(firstAnchor)?.focus(); + } + }, + prefetch: async ({ + ref + }) => { + const isDisabled = ref.closest('[data-wp-navigation-id]')?.dataset.wpNavigationDisabled; + if (isValidLink(ref) && !isDisabled) { + await (0,_wordpress_interactivity__WEBPACK_IMPORTED_MODULE_0__/* .prefetch */ .tL)(ref.href); + } + } + } + } + }, + effects: { + core: { + query: { + prefetch: async ({ + ref, + context + }) => { + if (context.core.query.url && isValidLink(ref)) { + await (0,_wordpress_interactivity__WEBPACK_IMPORTED_MODULE_0__/* .prefetch */ .tL)(ref.href); + } + } + } + } + } +}); + +/***/ }) + +}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); } +/******/ var __webpack_exports__ = (__webpack_exec__(890)); +/******/ } +]);
\ No newline at end of file diff --git a/wp-includes/blocks/query/view.min.asset.php b/wp-includes/blocks/query/view.min.asset.php new file mode 100644 index 0000000..c028c0e --- /dev/null +++ b/wp-includes/blocks/query/view.min.asset.php @@ -0,0 +1 @@ +<?php return array('dependencies' => array(), 'version' => 'ecab5647d5d9321e0101'); diff --git a/wp-includes/blocks/query/view.min.js b/wp-includes/blocks/query/view.min.js new file mode 100644 index 0000000..be86dbf --- /dev/null +++ b/wp-includes/blocks/query/view.min.js @@ -0,0 +1 @@ +"use strict";(self.__WordPressPrivateInteractivityAPI__=self.__WordPressPrivateInteractivityAPI__||[]).push([[155],{890:function(e,t,a){var r=a(754);const i=e=>e&&e instanceof window.HTMLAnchorElement&&e.href&&(!e.target||"_self"===e.target)&&e.origin===window.location.origin;(0,r.h)({selectors:{core:{query:{startAnimation:({context:e})=>"start"===e.core.query.animation,finishAnimation:({context:e})=>"finish"===e.core.query.animation}}},actions:{core:{query:{navigate:async({event:e,ref:t,context:a})=>{const o=t.closest("[data-wp-navigation-id]")?.dataset.wpNavigationDisabled;if(i(t)&&(e=>!(0!==e.button||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey||e.defaultPrevented))(e)&&!o){e.preventDefault();const i=t.closest("[data-wp-navigation-id]").dataset.wpNavigationId,o=setTimeout((()=>{a.core.query.message=a.core.query.loadingText,a.core.query.animation="start"}),400);await(0,r.c4)(t.href),clearTimeout(o),a.core.query.message=a.core.query.loadedText+(a.core.query.message===a.core.query.loadedText?" ":""),a.core.query.animation="finish",a.core.query.url=t.href;const n=`[data-wp-navigation-id=${i}] .wp-block-post-template a[href]`;document.querySelector(n)?.focus()}},prefetch:async({ref:e})=>{const t=e.closest("[data-wp-navigation-id]")?.dataset.wpNavigationDisabled;i(e)&&!t&&await(0,r.tL)(e.href)}}}},effects:{core:{query:{prefetch:async({ref:e,context:t})=>{t.core.query.url&&i(e)&&await(0,r.tL)(e.href)}}}}})}},function(e){var t;t=890,e(e.s=t)}]);
\ No newline at end of file diff --git a/wp-includes/blocks/quote/block.json b/wp-includes/blocks/quote/block.json new file mode 100644 index 0000000..eff4649 --- /dev/null +++ b/wp-includes/blocks/quote/block.json @@ -0,0 +1,69 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/quote", + "title": "Quote", + "category": "text", + "description": "Give quoted text visual emphasis. \"In quoting others, we cite ourselves.\" — Julio Cortázar", + "keywords": [ "blockquote", "cite" ], + "textdomain": "default", + "attributes": { + "value": { + "type": "string", + "source": "html", + "selector": "blockquote", + "multiline": "p", + "default": "", + "__experimentalRole": "content" + }, + "citation": { + "type": "string", + "source": "html", + "selector": "cite", + "default": "", + "__experimentalRole": "content" + }, + "align": { + "type": "string" + } + }, + "supports": { + "anchor": true, + "html": false, + "__experimentalOnEnter": true, + "__experimentalOnMerge": true, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true, + "fontAppearance": true + } + }, + "color": { + "gradients": true, + "heading": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + } + }, + "styles": [ + { + "name": "default", + "label": "Default", + "isDefault": true + }, + { "name": "plain", "label": "Plain" } + ], + "editorStyle": "wp-block-quote-editor", + "style": "wp-block-quote" +} diff --git a/wp-includes/blocks/quote/style-rtl.css b/wp-includes/blocks/quote/style-rtl.css new file mode 100644 index 0000000..e99e31e --- /dev/null +++ b/wp-includes/blocks/quote/style-rtl.css @@ -0,0 +1,17 @@ +.wp-block-quote{ + box-sizing:border-box; + overflow-wrap:break-word; +} +.wp-block-quote.is-large:where(:not(.is-style-plain)),.wp-block-quote.is-style-large:where(:not(.is-style-plain)){ + margin-bottom:1em; + padding:0 1em; +} +.wp-block-quote.is-large:where(:not(.is-style-plain)) p,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) p{ + font-size:1.5em; + font-style:italic; + line-height:1.6; +} +.wp-block-quote.is-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-large:where(:not(.is-style-plain)) footer,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) footer{ + font-size:1.125em; + text-align:left; +}
\ No newline at end of file diff --git a/wp-includes/blocks/quote/style-rtl.min.css b/wp-includes/blocks/quote/style-rtl.min.css new file mode 100644 index 0000000..84c4c8e --- /dev/null +++ b/wp-includes/blocks/quote/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-quote{box-sizing:border-box;overflow-wrap:break-word}.wp-block-quote.is-large:where(:not(.is-style-plain)),.wp-block-quote.is-style-large:where(:not(.is-style-plain)){margin-bottom:1em;padding:0 1em}.wp-block-quote.is-large:where(:not(.is-style-plain)) p,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) p{font-size:1.5em;font-style:italic;line-height:1.6}.wp-block-quote.is-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-large:where(:not(.is-style-plain)) footer,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) footer{font-size:1.125em;text-align:left}
\ No newline at end of file diff --git a/wp-includes/blocks/quote/style.css b/wp-includes/blocks/quote/style.css new file mode 100644 index 0000000..366962d --- /dev/null +++ b/wp-includes/blocks/quote/style.css @@ -0,0 +1,17 @@ +.wp-block-quote{ + box-sizing:border-box; + overflow-wrap:break-word; +} +.wp-block-quote.is-large:where(:not(.is-style-plain)),.wp-block-quote.is-style-large:where(:not(.is-style-plain)){ + margin-bottom:1em; + padding:0 1em; +} +.wp-block-quote.is-large:where(:not(.is-style-plain)) p,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) p{ + font-size:1.5em; + font-style:italic; + line-height:1.6; +} +.wp-block-quote.is-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-large:where(:not(.is-style-plain)) footer,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) footer{ + font-size:1.125em; + text-align:right; +}
\ No newline at end of file diff --git a/wp-includes/blocks/quote/style.min.css b/wp-includes/blocks/quote/style.min.css new file mode 100644 index 0000000..81cdcd9 --- /dev/null +++ b/wp-includes/blocks/quote/style.min.css @@ -0,0 +1 @@ +.wp-block-quote{box-sizing:border-box;overflow-wrap:break-word}.wp-block-quote.is-large:where(:not(.is-style-plain)),.wp-block-quote.is-style-large:where(:not(.is-style-plain)){margin-bottom:1em;padding:0 1em}.wp-block-quote.is-large:where(:not(.is-style-plain)) p,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) p{font-size:1.5em;font-style:italic;line-height:1.6}.wp-block-quote.is-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-large:where(:not(.is-style-plain)) footer,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) footer{font-size:1.125em;text-align:right}
\ No newline at end of file diff --git a/wp-includes/blocks/quote/theme-rtl.css b/wp-includes/blocks/quote/theme-rtl.css new file mode 100644 index 0000000..0b72bd7 --- /dev/null +++ b/wp-includes/blocks/quote/theme-rtl.css @@ -0,0 +1,24 @@ +.wp-block-quote{ + border-right:.25em solid; + margin:0 0 1.75em; + padding-right:1em; +} +.wp-block-quote cite,.wp-block-quote footer{ + color:currentColor; + font-size:.8125em; + font-style:normal; + position:relative; +} +.wp-block-quote.has-text-align-right{ + border-left:.25em solid; + border-right:none; + padding-left:1em; + padding-right:0; +} +.wp-block-quote.has-text-align-center{ + border:none; + padding-right:0; +} +.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote.is-style-plain{ + border:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/quote/theme-rtl.min.css b/wp-includes/blocks/quote/theme-rtl.min.css new file mode 100644 index 0000000..1a08a72 --- /dev/null +++ b/wp-includes/blocks/quote/theme-rtl.min.css @@ -0,0 +1 @@ +.wp-block-quote{border-right:.25em solid;margin:0 0 1.75em;padding-right:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;font-style:normal;position:relative}.wp-block-quote.has-text-align-right{border-left:.25em solid;border-right:none;padding-left:1em;padding-right:0}.wp-block-quote.has-text-align-center{border:none;padding-right:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote.is-style-plain{border:none}
\ No newline at end of file diff --git a/wp-includes/blocks/quote/theme.css b/wp-includes/blocks/quote/theme.css new file mode 100644 index 0000000..538f1f0 --- /dev/null +++ b/wp-includes/blocks/quote/theme.css @@ -0,0 +1,24 @@ +.wp-block-quote{ + border-left:.25em solid; + margin:0 0 1.75em; + padding-left:1em; +} +.wp-block-quote cite,.wp-block-quote footer{ + color:currentColor; + font-size:.8125em; + font-style:normal; + position:relative; +} +.wp-block-quote.has-text-align-right{ + border-left:none; + border-right:.25em solid; + padding-left:0; + padding-right:1em; +} +.wp-block-quote.has-text-align-center{ + border:none; + padding-left:0; +} +.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote.is-style-plain{ + border:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/quote/theme.min.css b/wp-includes/blocks/quote/theme.min.css new file mode 100644 index 0000000..8ea2748 --- /dev/null +++ b/wp-includes/blocks/quote/theme.min.css @@ -0,0 +1 @@ +.wp-block-quote{border-left:.25em solid;margin:0 0 1.75em;padding-left:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;font-style:normal;position:relative}.wp-block-quote.has-text-align-right{border-left:none;border-right:.25em solid;padding-left:0;padding-right:1em}.wp-block-quote.has-text-align-center{border:none;padding-left:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote.is-style-plain{border:none}
\ No newline at end of file diff --git a/wp-includes/blocks/read-more.php b/wp-includes/blocks/read-more.php new file mode 100644 index 0000000..c59dd2b --- /dev/null +++ b/wp-includes/blocks/read-more.php @@ -0,0 +1,59 @@ +<?php +/** + * Server-side rendering of the `core/read-more` block. + * + * @package WordPress + */ + +/** + * Renders the `core/read-more` block on the server. + * + * @param array $attributes Block attributes. + * @param string $content Block default content. + * @param WP_Block $block Block instance. + * @return string Returns the post link. + */ +function render_block_core_read_more( $attributes, $content, $block ) { + if ( ! isset( $block->context['postId'] ) ) { + return ''; + } + + $post_ID = $block->context['postId']; + $post_title = get_the_title( $post_ID ); + if ( '' === $post_title ) { + $post_title = sprintf( + /* translators: %s is post ID to describe the link for screen readers. */ + __( 'untitled post %s' ), + $post_ID + ); + } + $screen_reader_text = sprintf( + /* translators: %s is either the post title or post ID to describe the link for screen readers. */ + __( ': %s' ), + $post_title + ); + $justify_class_name = empty( $attributes['justifyContent'] ) ? '' : "is-justified-{$attributes['justifyContent']}"; + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $justify_class_name ) ); + $more_text = ! empty( $attributes['content'] ) ? wp_kses_post( $attributes['content'] ) : __( 'Read more' ); + return sprintf( + '<a %1s href="%2s" target="%3s">%4s<span class="screen-reader-text">%5s</span></a>', + $wrapper_attributes, + get_the_permalink( $post_ID ), + esc_attr( $attributes['linkTarget'] ), + $more_text, + $screen_reader_text + ); +} + +/** + * Registers the `core/read-more` block on the server. + */ +function register_block_core_read_more() { + register_block_type_from_metadata( + __DIR__ . '/read-more', + array( + 'render_callback' => 'render_block_core_read_more', + ) + ); +} +add_action( 'init', 'register_block_core_read_more' ); diff --git a/wp-includes/blocks/read-more/block.json b/wp-includes/blocks/read-more/block.json new file mode 100644 index 0000000..d3386a4 --- /dev/null +++ b/wp-includes/blocks/read-more/block.json @@ -0,0 +1,56 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/read-more", + "title": "Read More", + "category": "theme", + "description": "Displays the link of a post, page, or any other content-type.", + "textdomain": "default", + "attributes": { + "content": { + "type": "string" + }, + "linkTarget": { + "type": "string", + "default": "_self" + } + }, + "usesContext": [ "postId" ], + "supports": { + "html": false, + "color": { + "gradients": true, + "text": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalLetterSpacing": true, + "__experimentalTextDecoration": true, + "__experimentalDefaultControls": { + "fontSize": true, + "textDecoration": true + } + }, + "spacing": { + "margin": [ "top", "bottom" ], + "padding": true, + "__experimentalDefaultControls": { + "padding": true + } + }, + "__experimentalBorder": { + "color": true, + "radius": true, + "width": true, + "__experimentalDefaultControls": { + "width": true + } + } + }, + "style": "wp-block-read-more" +} diff --git a/wp-includes/blocks/read-more/style-rtl.css b/wp-includes/blocks/read-more/style-rtl.css new file mode 100644 index 0000000..8cfefa8 --- /dev/null +++ b/wp-includes/blocks/read-more/style-rtl.css @@ -0,0 +1,8 @@ +.wp-block-read-more{ + display:block; + width:-moz-fit-content; + width:fit-content; +} +.wp-block-read-more:not([style*=text-decoration]),.wp-block-read-more:not([style*=text-decoration]):active,.wp-block-read-more:not([style*=text-decoration]):focus{ + text-decoration:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/read-more/style-rtl.min.css b/wp-includes/blocks/read-more/style-rtl.min.css new file mode 100644 index 0000000..4f750e6 --- /dev/null +++ b/wp-includes/blocks/read-more/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-read-more{display:block;width:-moz-fit-content;width:fit-content}.wp-block-read-more:not([style*=text-decoration]),.wp-block-read-more:not([style*=text-decoration]):active,.wp-block-read-more:not([style*=text-decoration]):focus{text-decoration:none}
\ No newline at end of file diff --git a/wp-includes/blocks/read-more/style.css b/wp-includes/blocks/read-more/style.css new file mode 100644 index 0000000..8cfefa8 --- /dev/null +++ b/wp-includes/blocks/read-more/style.css @@ -0,0 +1,8 @@ +.wp-block-read-more{ + display:block; + width:-moz-fit-content; + width:fit-content; +} +.wp-block-read-more:not([style*=text-decoration]),.wp-block-read-more:not([style*=text-decoration]):active,.wp-block-read-more:not([style*=text-decoration]):focus{ + text-decoration:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/read-more/style.min.css b/wp-includes/blocks/read-more/style.min.css new file mode 100644 index 0000000..4f750e6 --- /dev/null +++ b/wp-includes/blocks/read-more/style.min.css @@ -0,0 +1 @@ +.wp-block-read-more{display:block;width:-moz-fit-content;width:fit-content}.wp-block-read-more:not([style*=text-decoration]),.wp-block-read-more:not([style*=text-decoration]):active,.wp-block-read-more:not([style*=text-decoration]):focus{text-decoration:none}
\ No newline at end of file diff --git a/wp-includes/blocks/require-dynamic-blocks.php b/wp-includes/blocks/require-dynamic-blocks.php new file mode 100644 index 0000000..229a031 --- /dev/null +++ b/wp-includes/blocks/require-dynamic-blocks.php @@ -0,0 +1,67 @@ +<?php + +// This file was autogenerated by tools/release/sync-stable-blocks.js, do not change manually! +// Requires files for dynamic blocks necessary for core blocks registration. +require_once ABSPATH . WPINC . '/blocks/archives.php'; +require_once ABSPATH . WPINC . '/blocks/avatar.php'; +require_once ABSPATH . WPINC . '/blocks/block.php'; +require_once ABSPATH . WPINC . '/blocks/calendar.php'; +require_once ABSPATH . WPINC . '/blocks/categories.php'; +require_once ABSPATH . WPINC . '/blocks/comment-author-name.php'; +require_once ABSPATH . WPINC . '/blocks/comment-content.php'; +require_once ABSPATH . WPINC . '/blocks/comment-date.php'; +require_once ABSPATH . WPINC . '/blocks/comment-edit-link.php'; +require_once ABSPATH . WPINC . '/blocks/comment-reply-link.php'; +require_once ABSPATH . WPINC . '/blocks/comment-template.php'; +require_once ABSPATH . WPINC . '/blocks/comments.php'; +require_once ABSPATH . WPINC . '/blocks/comments-pagination.php'; +require_once ABSPATH . WPINC . '/blocks/comments-pagination-next.php'; +require_once ABSPATH . WPINC . '/blocks/comments-pagination-numbers.php'; +require_once ABSPATH . WPINC . '/blocks/comments-pagination-previous.php'; +require_once ABSPATH . WPINC . '/blocks/comments-title.php'; +require_once ABSPATH . WPINC . '/blocks/cover.php'; +require_once ABSPATH . WPINC . '/blocks/file.php'; +require_once ABSPATH . WPINC . '/blocks/footnotes.php'; +require_once ABSPATH . WPINC . '/blocks/gallery.php'; +require_once ABSPATH . WPINC . '/blocks/heading.php'; +require_once ABSPATH . WPINC . '/blocks/home-link.php'; +require_once ABSPATH . WPINC . '/blocks/image.php'; +require_once ABSPATH . WPINC . '/blocks/latest-comments.php'; +require_once ABSPATH . WPINC . '/blocks/latest-posts.php'; +require_once ABSPATH . WPINC . '/blocks/loginout.php'; +require_once ABSPATH . WPINC . '/blocks/navigation.php'; +require_once ABSPATH . WPINC . '/blocks/navigation-link.php'; +require_once ABSPATH . WPINC . '/blocks/navigation-submenu.php'; +require_once ABSPATH . WPINC . '/blocks/page-list.php'; +require_once ABSPATH . WPINC . '/blocks/page-list-item.php'; +require_once ABSPATH . WPINC . '/blocks/pattern.php'; +require_once ABSPATH . WPINC . '/blocks/post-author.php'; +require_once ABSPATH . WPINC . '/blocks/post-author-biography.php'; +require_once ABSPATH . WPINC . '/blocks/post-author-name.php'; +require_once ABSPATH . WPINC . '/blocks/post-comments-form.php'; +require_once ABSPATH . WPINC . '/blocks/post-content.php'; +require_once ABSPATH . WPINC . '/blocks/post-date.php'; +require_once ABSPATH . WPINC . '/blocks/post-excerpt.php'; +require_once ABSPATH . WPINC . '/blocks/post-featured-image.php'; +require_once ABSPATH . WPINC . '/blocks/post-navigation-link.php'; +require_once ABSPATH . WPINC . '/blocks/post-template.php'; +require_once ABSPATH . WPINC . '/blocks/post-terms.php'; +require_once ABSPATH . WPINC . '/blocks/post-title.php'; +require_once ABSPATH . WPINC . '/blocks/query.php'; +require_once ABSPATH . WPINC . '/blocks/query-no-results.php'; +require_once ABSPATH . WPINC . '/blocks/query-pagination.php'; +require_once ABSPATH . WPINC . '/blocks/query-pagination-next.php'; +require_once ABSPATH . WPINC . '/blocks/query-pagination-numbers.php'; +require_once ABSPATH . WPINC . '/blocks/query-pagination-previous.php'; +require_once ABSPATH . WPINC . '/blocks/query-title.php'; +require_once ABSPATH . WPINC . '/blocks/read-more.php'; +require_once ABSPATH . WPINC . '/blocks/rss.php'; +require_once ABSPATH . WPINC . '/blocks/search.php'; +require_once ABSPATH . WPINC . '/blocks/shortcode.php'; +require_once ABSPATH . WPINC . '/blocks/site-logo.php'; +require_once ABSPATH . WPINC . '/blocks/site-tagline.php'; +require_once ABSPATH . WPINC . '/blocks/site-title.php'; +require_once ABSPATH . WPINC . '/blocks/social-link.php'; +require_once ABSPATH . WPINC . '/blocks/tag-cloud.php'; +require_once ABSPATH . WPINC . '/blocks/template-part.php'; +require_once ABSPATH . WPINC . '/blocks/term-description.php'; diff --git a/wp-includes/blocks/require-static-blocks.php b/wp-includes/blocks/require-static-blocks.php new file mode 100644 index 0000000..69f6d68 --- /dev/null +++ b/wp-includes/blocks/require-static-blocks.php @@ -0,0 +1,34 @@ +<?php + +// This file was autogenerated by tools/release/sync-stable-blocks.js, do not change manually! +// Returns folder names for static blocks necessary for core blocks registration. +return array( + 'audio', + 'button', + 'buttons', + 'code', + 'column', + 'columns', + 'details', + 'embed', + 'freeform', + 'group', + 'html', + 'list', + 'list-item', + 'media-text', + 'missing', + 'more', + 'nextpage', + 'paragraph', + 'preformatted', + 'pullquote', + 'quote', + 'separator', + 'social-links', + 'spacer', + 'table', + 'text-columns', + 'verse', + 'video', +); diff --git a/wp-includes/blocks/rss.php b/wp-includes/blocks/rss.php new file mode 100644 index 0000000..91cdab3 --- /dev/null +++ b/wp-includes/blocks/rss.php @@ -0,0 +1,119 @@ +<?php +/** + * Server-side rendering of the `core/rss` block. + * + * @package WordPress + */ + +/** + * Renders the `core/rss` block on server. + * + * @param array $attributes The block attributes. + * + * @return string Returns the block content with received rss items. + */ +function render_block_core_rss( $attributes ) { + if ( in_array( untrailingslashit( $attributes['feedURL'] ), array( site_url(), home_url() ), true ) ) { + return '<div class="components-placeholder"><div class="notice notice-error">' . __( 'Adding an RSS feed to this site’s homepage is not supported, as it could lead to a loop that slows down your site. Try using another block, like the <strong>Latest Posts</strong> block, to list posts from the site.' ) . '</div></div>'; + } + + $rss = fetch_feed( $attributes['feedURL'] ); + + if ( is_wp_error( $rss ) ) { + return '<div class="components-placeholder"><div class="notice notice-error"><strong>' . __( 'RSS Error:' ) . '</strong> ' . esc_html( $rss->get_error_message() ) . '</div></div>'; + } + + if ( ! $rss->get_item_quantity() ) { + return '<div class="components-placeholder"><div class="notice notice-error">' . __( 'An error has occurred, which probably means the feed is down. Try again later.' ) . '</div></div>'; + } + + $rss_items = $rss->get_items( 0, $attributes['itemsToShow'] ); + $list_items = ''; + foreach ( $rss_items as $item ) { + $title = esc_html( trim( strip_tags( $item->get_title() ) ) ); + if ( empty( $title ) ) { + $title = __( '(no title)' ); + } + $link = $item->get_link(); + $link = esc_url( $link ); + if ( $link ) { + $title = "<a href='{$link}'>{$title}</a>"; + } + $title = "<div class='wp-block-rss__item-title'>{$title}</div>"; + + $date = ''; + if ( $attributes['displayDate'] ) { + $date = $item->get_date( 'U' ); + + if ( $date ) { + $date = sprintf( + '<time datetime="%1$s" class="wp-block-rss__item-publish-date">%2$s</time> ', + esc_attr( date_i18n( 'c', $date ) ), + esc_attr( date_i18n( get_option( 'date_format' ), $date ) ) + ); + } + } + + $author = ''; + if ( $attributes['displayAuthor'] ) { + $author = $item->get_author(); + if ( is_object( $author ) ) { + $author = $author->get_name(); + $author = '<span class="wp-block-rss__item-author">' . sprintf( + /* translators: %s: the author. */ + __( 'by %s' ), + esc_html( strip_tags( $author ) ) + ) . '</span>'; + } + } + + $excerpt = ''; + if ( $attributes['displayExcerpt'] ) { + $excerpt = html_entity_decode( $item->get_description(), ENT_QUOTES, get_option( 'blog_charset' ) ); + $excerpt = esc_attr( wp_trim_words( $excerpt, $attributes['excerptLength'], ' […]' ) ); + + // Change existing [...] to […]. + if ( '[...]' === substr( $excerpt, -5 ) ) { + $excerpt = substr( $excerpt, 0, -5 ) . '[…]'; + } + + $excerpt = '<div class="wp-block-rss__item-excerpt">' . esc_html( $excerpt ) . '</div>'; + } + + $list_items .= "<li class='wp-block-rss__item'>{$title}{$date}{$author}{$excerpt}</li>"; + } + + $classnames = array(); + if ( isset( $attributes['blockLayout'] ) && 'grid' === $attributes['blockLayout'] ) { + $classnames[] = 'is-grid'; + } + if ( isset( $attributes['columns'] ) && 'grid' === $attributes['blockLayout'] ) { + $classnames[] = 'columns-' . $attributes['columns']; + } + if ( $attributes['displayDate'] ) { + $classnames[] = 'has-dates'; + } + if ( $attributes['displayAuthor'] ) { + $classnames[] = 'has-authors'; + } + if ( $attributes['displayExcerpt'] ) { + $classnames[] = 'has-excerpts'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classnames ) ) ); + + return sprintf( '<ul %s>%s</ul>', $wrapper_attributes, $list_items ); +} + +/** + * Registers the `core/rss` block on server. + */ +function register_block_core_rss() { + register_block_type_from_metadata( + __DIR__ . '/rss', + array( + 'render_callback' => 'render_block_core_rss', + ) + ); +} +add_action( 'init', 'register_block_core_rss' ); diff --git a/wp-includes/blocks/rss/block.json b/wp-includes/blocks/rss/block.json new file mode 100644 index 0000000..2535eda --- /dev/null +++ b/wp-includes/blocks/rss/block.json @@ -0,0 +1,50 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/rss", + "title": "RSS", + "category": "widgets", + "description": "Display entries from any RSS or Atom feed.", + "keywords": [ "atom", "feed" ], + "textdomain": "default", + "attributes": { + "columns": { + "type": "number", + "default": 2 + }, + "blockLayout": { + "type": "string", + "default": "list" + }, + "feedURL": { + "type": "string", + "default": "" + }, + "itemsToShow": { + "type": "number", + "default": 5 + }, + "displayExcerpt": { + "type": "boolean", + "default": false + }, + "displayAuthor": { + "type": "boolean", + "default": false + }, + "displayDate": { + "type": "boolean", + "default": false + }, + "excerptLength": { + "type": "number", + "default": 55 + } + }, + "supports": { + "align": true, + "html": false + }, + "editorStyle": "wp-block-rss-editor", + "style": "wp-block-rss" +} diff --git a/wp-includes/blocks/rss/editor-rtl.css b/wp-includes/blocks/rss/editor-rtl.css new file mode 100644 index 0000000..43815b9 --- /dev/null +++ b/wp-includes/blocks/rss/editor-rtl.css @@ -0,0 +1,16 @@ +.wp-block-rss li a>div{ + display:inline; +} + +.wp-block-rss__placeholder-form>*{ + margin-bottom:8px; +} +@media (min-width:782px){ + .wp-block-rss__placeholder-form>*{ + margin-bottom:0; + } +} +.wp-block-rss__placeholder-form .wp-block-rss__placeholder-input{ + flex:1; + min-width:80%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/rss/editor-rtl.min.css b/wp-includes/blocks/rss/editor-rtl.min.css new file mode 100644 index 0000000..25774d0 --- /dev/null +++ b/wp-includes/blocks/rss/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-rss li a>div{display:inline}.wp-block-rss__placeholder-form>*{margin-bottom:8px}@media (min-width:782px){.wp-block-rss__placeholder-form>*{margin-bottom:0}}.wp-block-rss__placeholder-form .wp-block-rss__placeholder-input{flex:1;min-width:80%}
\ No newline at end of file diff --git a/wp-includes/blocks/rss/editor.css b/wp-includes/blocks/rss/editor.css new file mode 100644 index 0000000..43815b9 --- /dev/null +++ b/wp-includes/blocks/rss/editor.css @@ -0,0 +1,16 @@ +.wp-block-rss li a>div{ + display:inline; +} + +.wp-block-rss__placeholder-form>*{ + margin-bottom:8px; +} +@media (min-width:782px){ + .wp-block-rss__placeholder-form>*{ + margin-bottom:0; + } +} +.wp-block-rss__placeholder-form .wp-block-rss__placeholder-input{ + flex:1; + min-width:80%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/rss/editor.min.css b/wp-includes/blocks/rss/editor.min.css new file mode 100644 index 0000000..25774d0 --- /dev/null +++ b/wp-includes/blocks/rss/editor.min.css @@ -0,0 +1 @@ +.wp-block-rss li a>div{display:inline}.wp-block-rss__placeholder-form>*{margin-bottom:8px}@media (min-width:782px){.wp-block-rss__placeholder-form>*{margin-bottom:0}}.wp-block-rss__placeholder-form .wp-block-rss__placeholder-input{flex:1;min-width:80%}
\ No newline at end of file diff --git a/wp-includes/blocks/rss/style-rtl.css b/wp-includes/blocks/rss/style-rtl.css new file mode 100644 index 0000000..2e5edd0 --- /dev/null +++ b/wp-includes/blocks/rss/style-rtl.css @@ -0,0 +1,45 @@ +ul.wp-block-rss{ + list-style:none; + padding:0; +} +ul.wp-block-rss.wp-block-rss{ + box-sizing:border-box; +} +ul.wp-block-rss.alignleft{ + margin-right:2em; +} +ul.wp-block-rss.alignright{ + margin-left:2em; +} +ul.wp-block-rss.is-grid{ + display:flex; + flex-wrap:wrap; + list-style:none; + padding:0; +} +ul.wp-block-rss.is-grid li{ + margin:0 0 1em 1em; + width:100%; +} +@media (min-width:600px){ + ul.wp-block-rss.columns-2 li{ + width:calc(50% - 1em); + } + ul.wp-block-rss.columns-3 li{ + width:calc(33.33333% - 1em); + } + ul.wp-block-rss.columns-4 li{ + width:calc(25% - 1em); + } + ul.wp-block-rss.columns-5 li{ + width:calc(20% - 1em); + } + ul.wp-block-rss.columns-6 li{ + width:calc(16.66667% - 1em); + } +} + +.wp-block-rss__item-author,.wp-block-rss__item-publish-date{ + display:block; + font-size:.8125em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/rss/style-rtl.min.css b/wp-includes/blocks/rss/style-rtl.min.css new file mode 100644 index 0000000..6db26a0 --- /dev/null +++ b/wp-includes/blocks/rss/style-rtl.min.css @@ -0,0 +1 @@ +ul.wp-block-rss{list-style:none;padding:0}ul.wp-block-rss.wp-block-rss{box-sizing:border-box}ul.wp-block-rss.alignleft{margin-right:2em}ul.wp-block-rss.alignright{margin-left:2em}ul.wp-block-rss.is-grid{display:flex;flex-wrap:wrap;list-style:none;padding:0}ul.wp-block-rss.is-grid li{margin:0 0 1em 1em;width:100%}@media (min-width:600px){ul.wp-block-rss.columns-2 li{width:calc(50% - 1em)}ul.wp-block-rss.columns-3 li{width:calc(33.33333% - 1em)}ul.wp-block-rss.columns-4 li{width:calc(25% - 1em)}ul.wp-block-rss.columns-5 li{width:calc(20% - 1em)}ul.wp-block-rss.columns-6 li{width:calc(16.66667% - 1em)}}.wp-block-rss__item-author,.wp-block-rss__item-publish-date{display:block;font-size:.8125em}
\ No newline at end of file diff --git a/wp-includes/blocks/rss/style.css b/wp-includes/blocks/rss/style.css new file mode 100644 index 0000000..e25bf93 --- /dev/null +++ b/wp-includes/blocks/rss/style.css @@ -0,0 +1,45 @@ +ul.wp-block-rss{ + list-style:none; + padding:0; +} +ul.wp-block-rss.wp-block-rss{ + box-sizing:border-box; +} +ul.wp-block-rss.alignleft{ + margin-right:2em; +} +ul.wp-block-rss.alignright{ + margin-left:2em; +} +ul.wp-block-rss.is-grid{ + display:flex; + flex-wrap:wrap; + list-style:none; + padding:0; +} +ul.wp-block-rss.is-grid li{ + margin:0 1em 1em 0; + width:100%; +} +@media (min-width:600px){ + ul.wp-block-rss.columns-2 li{ + width:calc(50% - 1em); + } + ul.wp-block-rss.columns-3 li{ + width:calc(33.33333% - 1em); + } + ul.wp-block-rss.columns-4 li{ + width:calc(25% - 1em); + } + ul.wp-block-rss.columns-5 li{ + width:calc(20% - 1em); + } + ul.wp-block-rss.columns-6 li{ + width:calc(16.66667% - 1em); + } +} + +.wp-block-rss__item-author,.wp-block-rss__item-publish-date{ + display:block; + font-size:.8125em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/rss/style.min.css b/wp-includes/blocks/rss/style.min.css new file mode 100644 index 0000000..4ec346d --- /dev/null +++ b/wp-includes/blocks/rss/style.min.css @@ -0,0 +1 @@ +ul.wp-block-rss{list-style:none;padding:0}ul.wp-block-rss.wp-block-rss{box-sizing:border-box}ul.wp-block-rss.alignleft{margin-right:2em}ul.wp-block-rss.alignright{margin-left:2em}ul.wp-block-rss.is-grid{display:flex;flex-wrap:wrap;list-style:none;padding:0}ul.wp-block-rss.is-grid li{margin:0 1em 1em 0;width:100%}@media (min-width:600px){ul.wp-block-rss.columns-2 li{width:calc(50% - 1em)}ul.wp-block-rss.columns-3 li{width:calc(33.33333% - 1em)}ul.wp-block-rss.columns-4 li{width:calc(25% - 1em)}ul.wp-block-rss.columns-5 li{width:calc(20% - 1em)}ul.wp-block-rss.columns-6 li{width:calc(16.66667% - 1em)}}.wp-block-rss__item-author,.wp-block-rss__item-publish-date{display:block;font-size:.8125em}
\ No newline at end of file diff --git a/wp-includes/blocks/search.php b/wp-includes/blocks/search.php new file mode 100644 index 0000000..f00ecfe --- /dev/null +++ b/wp-includes/blocks/search.php @@ -0,0 +1,607 @@ +<?php +/** + * Server-side rendering of the `core/search` block. + * + * @package WordPress + */ + +/** + * Dynamically renders the `core/search` block. + * + * @since 6.3.0 Using block.json `viewScript` to register script, and update `view_script_handles()` only when needed. + * + * @param array $attributes The block attributes. + * @param string $content The saved content. + * @param WP_Block $block The parsed block. + * + * @return string The search block markup. + */ +function render_block_core_search( $attributes, $content, $block ) { + // Older versions of the Search block defaulted the label and buttonText + // attributes to `__( 'Search' )` meaning that many posts contain `<!-- + // wp:search /-->`. Support these by defaulting an undefined label and + // buttonText to `__( 'Search' )`. + $attributes = wp_parse_args( + $attributes, + array( + 'label' => __( 'Search' ), + 'buttonText' => __( 'Search' ), + ) + ); + + $input_id = wp_unique_id( 'wp-block-search__input-' ); + $classnames = classnames_for_block_core_search( $attributes ); + $show_label = ( ! empty( $attributes['showLabel'] ) ) ? true : false; + $use_icon_button = ( ! empty( $attributes['buttonUseIcon'] ) ) ? true : false; + $show_button = ( ! empty( $attributes['buttonPosition'] ) && 'no-button' === $attributes['buttonPosition'] ) ? false : true; + $button_position = $show_button ? $attributes['buttonPosition'] : null; + $query_params = ( ! empty( $attributes['query'] ) ) ? $attributes['query'] : array(); + $button_behavior = ( ! empty( $attributes['buttonBehavior'] ) ) ? $attributes['buttonBehavior'] : 'default'; + $button = ''; + $query_params_markup = ''; + $inline_styles = styles_for_block_core_search( $attributes ); + $color_classes = get_color_classes_for_block_core_search( $attributes ); + $typography_classes = get_typography_classes_for_block_core_search( $attributes ); + $is_button_inside = ! empty( $attributes['buttonPosition'] ) && + 'button-inside' === $attributes['buttonPosition']; + // Border color classes need to be applied to the elements that have a border color. + $border_color_classes = get_border_color_classes_for_block_core_search( $attributes ); + // This variable is a constant and its value is always false at this moment. + // It is defined this way because some values depend on it, in case it changes in the future. + $open_by_default = 'false'; + + $label_inner_html = empty( $attributes['label'] ) ? __( 'Search' ) : wp_kses_post( $attributes['label'] ); + $label = new WP_HTML_Tag_Processor( sprintf( '<label %1$s>%2$s</label>', $inline_styles['label'], $label_inner_html ) ); + if ( $label->next_tag() ) { + $label->set_attribute( 'for', $input_id ); + $label->add_class( 'wp-block-search__label' ); + if ( $show_label && ! empty( $attributes['label'] ) ) { + if ( ! empty( $typography_classes ) ) { + $label->add_class( $typography_classes ); + } + } else { + $label->add_class( 'screen-reader-text' ); + } + } + + $input = new WP_HTML_Tag_Processor( sprintf( '<input type="search" name="s" required %s/>', $inline_styles['input'] ) ); + $input_classes = array( 'wp-block-search__input' ); + if ( ! $is_button_inside && ! empty( $border_color_classes ) ) { + $input_classes[] = $border_color_classes; + } + if ( ! empty( $typography_classes ) ) { + $input_classes[] = $typography_classes; + } + if ( $input->next_tag() ) { + $input->add_class( implode( ' ', $input_classes ) ); + $input->set_attribute( 'id', $input_id ); + $input->set_attribute( 'value', get_search_query() ); + $input->set_attribute( 'placeholder', $attributes['placeholder'] ); + + $is_expandable_searchfield = 'button-only' === $button_position && 'expand-searchfield' === $button_behavior; + if ( $is_expandable_searchfield ) { + $input->set_attribute( 'data-wp-bind--aria-hidden', '!context.core.search.isSearchInputVisible' ); + $input->set_attribute( 'data-wp-bind--tabindex', 'selectors.core.search.tabindex' ); + // Adding these attributes manually is needed until the Interactivity API SSR logic is added to core. + $input->set_attribute( 'aria-hidden', 'true' ); + $input->set_attribute( 'tabindex', '-1' ); + } + + // If the script already exists, there is no point in removing it from viewScript. + $view_js_file = 'wp-block-search-view'; + if ( ! wp_script_is( $view_js_file ) ) { + $script_handles = $block->block_type->view_script_handles; + + // If the script is not needed, and it is still in the `view_script_handles`, remove it. + if ( ! $is_expandable_searchfield && in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file ) ); + } + // If the script is needed, but it was previously removed, add it again. + if ( $is_expandable_searchfield && ! in_array( $view_js_file, $script_handles, true ) ) { + $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file ) ); + } + } + } + + if ( count( $query_params ) > 0 ) { + foreach ( $query_params as $param => $value ) { + $query_params_markup .= sprintf( + '<input type="hidden" name="%s" value="%s" />', + esc_attr( $param ), + esc_attr( $value ) + ); + } + } + + if ( $show_button ) { + $button_classes = array( 'wp-block-search__button' ); + $button_internal_markup = ''; + if ( ! empty( $color_classes ) ) { + $button_classes[] = $color_classes; + } + if ( ! empty( $typography_classes ) ) { + $button_classes[] = $typography_classes; + } + + if ( ! $is_button_inside && ! empty( $border_color_classes ) ) { + $button_classes[] = $border_color_classes; + } + if ( ! $use_icon_button ) { + if ( ! empty( $attributes['buttonText'] ) ) { + $button_internal_markup = wp_kses_post( $attributes['buttonText'] ); + } + } else { + $button_classes[] = 'has-icon'; + $button_internal_markup = + '<svg class="search-icon" viewBox="0 0 24 24" width="24" height="24"> + <path d="M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z"></path> + </svg>'; + } + + // Include the button element class. + $button_classes[] = wp_theme_get_element_class_name( 'button' ); + $button = new WP_HTML_Tag_Processor( sprintf( '<button type="submit" %s>%s</button>', $inline_styles['button'], $button_internal_markup ) ); + + if ( $button->next_tag() ) { + $button->add_class( implode( ' ', $button_classes ) ); + if ( 'expand-searchfield' === $attributes['buttonBehavior'] && 'button-only' === $attributes['buttonPosition'] ) { + $button->set_attribute( 'data-wp-bind--aria-label', 'selectors.core.search.ariaLabel' ); + $button->set_attribute( 'data-wp-bind--aria-controls', 'selectors.core.search.ariaControls' ); + $button->set_attribute( 'data-wp-bind--aria-expanded', 'context.core.search.isSearchInputVisible' ); + $button->set_attribute( 'data-wp-bind--type', 'selectors.core.search.type' ); + $button->set_attribute( 'data-wp-on--click', 'actions.core.search.openSearchInput' ); + // Adding these attributes manually is needed until the Interactivity API SSR logic is added to core. + $button->set_attribute( 'aria-label', __( 'Expand search field' ) ); + $button->set_attribute( 'aria-controls', 'wp-block-search__input-' . $input_id ); + $button->set_attribute( 'aria-expanded', 'false' ); + $button->set_attribute( 'type', 'button' ); + } else { + $button->set_attribute( 'aria-label', wp_strip_all_tags( $attributes['buttonText'] ) ); + } + } + } + + $field_markup_classes = $is_button_inside ? $border_color_classes : ''; + $field_markup = sprintf( + '<div class="wp-block-search__inside-wrapper %s" %s>%s</div>', + esc_attr( $field_markup_classes ), + $inline_styles['wrapper'], + $input . $query_params_markup . $button + ); + $wrapper_attributes = get_block_wrapper_attributes( + array( 'class' => $classnames ) + ); + $form_directives = ''; + if ( $is_expandable_searchfield ) { + $aria_label_expanded = __( 'Submit Search' ); + $aria_label_collapsed = __( 'Expand search field' ); + $form_directives = ' + data-wp-interactive + data-wp-context=\'{ "core": { "search": { "isSearchInputVisible": ' . $open_by_default . ', "inputId": "' . $input_id . '", "ariaLabelExpanded": "' . $aria_label_expanded . '", "ariaLabelCollapsed": "' . $aria_label_collapsed . '" } } }\' + data-wp-class--wp-block-search__searchfield-hidden="!context.core.search.isSearchInputVisible" + data-wp-on--keydown="actions.core.search.handleSearchKeydown" + data-wp-on--focusout="actions.core.search.handleSearchFocusout" + '; + } + + return sprintf( + '<form role="search" method="get" action="%1s" %2s %3s>%4s</form>', + esc_url( home_url( '/' ) ), + $wrapper_attributes, + $form_directives, + $label . $field_markup + ); +} + +/** + * Registers the `core/search` block on the server. + */ +function register_block_core_search() { + register_block_type_from_metadata( + __DIR__ . '/search', + array( + 'render_callback' => 'render_block_core_search', + ) + ); +} +add_action( 'init', 'register_block_core_search' ); + +/** + * Ensure that the view script has the `wp-interactivity` dependency. + * + * @since 6.4.0 + * + * @global WP_Scripts $wp_scripts + */ +function block_core_search_ensure_interactivity_dependency() { + global $wp_scripts; + if ( + isset( $wp_scripts->registered['wp-block-search-view'] ) && + ! in_array( 'wp-interactivity', $wp_scripts->registered['wp-block-search-view']->deps, true ) + ) { + $wp_scripts->registered['wp-block-search-view']->deps[] = 'wp-interactivity'; + } +} + +add_action( 'wp_print_scripts', 'block_core_search_ensure_interactivity_dependency' ); + +/** + * Builds the correct top level classnames for the 'core/search' block. + * + * @param array $attributes The block attributes. + * + * @return string The classnames used in the block. + */ +function classnames_for_block_core_search( $attributes ) { + $classnames = array(); + + if ( ! empty( $attributes['buttonPosition'] ) ) { + if ( 'button-inside' === $attributes['buttonPosition'] ) { + $classnames[] = 'wp-block-search__button-inside'; + } + + if ( 'button-outside' === $attributes['buttonPosition'] ) { + $classnames[] = 'wp-block-search__button-outside'; + } + + if ( 'no-button' === $attributes['buttonPosition'] ) { + $classnames[] = 'wp-block-search__no-button'; + } + + if ( 'button-only' === $attributes['buttonPosition'] ) { + $classnames[] = 'wp-block-search__button-only'; + if ( ! empty( $attributes['buttonBehavior'] ) && 'expand-searchfield' === $attributes['buttonBehavior'] ) { + $classnames[] = 'wp-block-search__button-behavior-expand wp-block-search__searchfield-hidden'; + } + } + } + + if ( isset( $attributes['buttonUseIcon'] ) ) { + if ( ! empty( $attributes['buttonPosition'] ) && 'no-button' !== $attributes['buttonPosition'] ) { + if ( $attributes['buttonUseIcon'] ) { + $classnames[] = 'wp-block-search__icon-button'; + } else { + $classnames[] = 'wp-block-search__text-button'; + } + } + } + + return implode( ' ', $classnames ); +} + +/** + * This generates a CSS rule for the given border property and side if provided. + * Based on whether the Search block is configured to display the button inside + * or not, the generated rule is injected into the appropriate collection of + * styles for later application in the block's markup. + * + * @param array $attributes The block attributes. + * @param string $property Border property to generate rule for e.g. width or color. + * @param string $side Optional side border. The dictates the value retrieved and final CSS property. + * @param array $wrapper_styles Current collection of wrapper styles. + * @param array $button_styles Current collection of button styles. + * @param array $input_styles Current collection of input styles. + */ +function apply_block_core_search_border_style( $attributes, $property, $side, &$wrapper_styles, &$button_styles, &$input_styles ) { + $is_button_inside = isset( $attributes['buttonPosition'] ) && 'button-inside' === $attributes['buttonPosition']; + + $path = array( 'style', 'border', $property ); + + if ( $side ) { + array_splice( $path, 2, 0, $side ); + } + + $value = _wp_array_get( $attributes, $path, false ); + + if ( empty( $value ) ) { + return; + } + + if ( 'color' === $property && $side ) { + $has_color_preset = str_contains( $value, 'var:preset|color|' ); + if ( $has_color_preset ) { + $named_color_value = substr( $value, strrpos( $value, '|' ) + 1 ); + $value = sprintf( 'var(--wp--preset--color--%s)', $named_color_value ); + } + } + + $property_suffix = $side ? sprintf( '%s-%s', $side, $property ) : $property; + + if ( $is_button_inside ) { + $wrapper_styles[] = sprintf( 'border-%s: %s;', $property_suffix, esc_attr( $value ) ); + } else { + $button_styles[] = sprintf( 'border-%s: %s;', $property_suffix, esc_attr( $value ) ); + $input_styles[] = sprintf( 'border-%s: %s;', $property_suffix, esc_attr( $value ) ); + } +} + +/** + * This adds CSS rules for a given border property e.g. width or color. It + * injects rules into the provided wrapper, button and input style arrays for + * uniform "flat" borders or those with individual sides configured. + * + * @param array $attributes The block attributes. + * @param string $property Border property to generate rule for e.g. width or color. + * @param array $wrapper_styles Current collection of wrapper styles. + * @param array $button_styles Current collection of button styles. + * @param array $input_styles Current collection of input styles. + */ +function apply_block_core_search_border_styles( $attributes, $property, &$wrapper_styles, &$button_styles, &$input_styles ) { + apply_block_core_search_border_style( $attributes, $property, null, $wrapper_styles, $button_styles, $input_styles ); + apply_block_core_search_border_style( $attributes, $property, 'top', $wrapper_styles, $button_styles, $input_styles ); + apply_block_core_search_border_style( $attributes, $property, 'right', $wrapper_styles, $button_styles, $input_styles ); + apply_block_core_search_border_style( $attributes, $property, 'bottom', $wrapper_styles, $button_styles, $input_styles ); + apply_block_core_search_border_style( $attributes, $property, 'left', $wrapper_styles, $button_styles, $input_styles ); +} + +/** + * Builds an array of inline styles for the search block. + * + * The result will contain one entry for shared styles such as those for the + * inner input or button and a second for the inner wrapper should the block + * be positioning the button "inside". + * + * @param array $attributes The block attributes. + * + * @return array Style HTML attribute. + */ +function styles_for_block_core_search( $attributes ) { + $wrapper_styles = array(); + $button_styles = array(); + $input_styles = array(); + $label_styles = array(); + $is_button_inside = ! empty( $attributes['buttonPosition'] ) && + 'button-inside' === $attributes['buttonPosition']; + $show_label = ( isset( $attributes['showLabel'] ) ) && false !== $attributes['showLabel']; + + // Add width styles. + $has_width = ! empty( $attributes['width'] ) && ! empty( $attributes['widthUnit'] ); + + if ( $has_width ) { + $wrapper_styles[] = sprintf( + 'width: %d%s;', + esc_attr( $attributes['width'] ), + esc_attr( $attributes['widthUnit'] ) + ); + } + + // Add border width and color styles. + apply_block_core_search_border_styles( $attributes, 'width', $wrapper_styles, $button_styles, $input_styles ); + apply_block_core_search_border_styles( $attributes, 'color', $wrapper_styles, $button_styles, $input_styles ); + apply_block_core_search_border_styles( $attributes, 'style', $wrapper_styles, $button_styles, $input_styles ); + + // Add border radius styles. + $has_border_radius = ! empty( $attributes['style']['border']['radius'] ); + + if ( $has_border_radius ) { + $default_padding = '4px'; + $border_radius = $attributes['style']['border']['radius']; + + if ( is_array( $border_radius ) ) { + // Apply styles for individual corner border radii. + foreach ( $border_radius as $key => $value ) { + if ( null !== $value ) { + // Convert camelCase key to kebab-case. + $name = strtolower( preg_replace( '/(?<!^)[A-Z]/', '-$0', $key ) ); + + // Add shared styles for individual border radii for input & button. + $border_style = sprintf( + 'border-%s-radius: %s;', + esc_attr( $name ), + esc_attr( $value ) + ); + $input_styles[] = $border_style; + $button_styles[] = $border_style; + + // Add adjusted border radius styles for the wrapper element + // if button is positioned inside. + if ( $is_button_inside && intval( $value ) !== 0 ) { + $wrapper_styles[] = sprintf( + 'border-%s-radius: calc(%s + %s);', + esc_attr( $name ), + esc_attr( $value ), + $default_padding + ); + } + } + } + } else { + // Numeric check is for backwards compatibility purposes. + $border_radius = is_numeric( $border_radius ) ? $border_radius . 'px' : $border_radius; + $border_style = sprintf( 'border-radius: %s;', esc_attr( $border_radius ) ); + $input_styles[] = $border_style; + $button_styles[] = $border_style; + + if ( $is_button_inside && intval( $border_radius ) !== 0 ) { + // Adjust wrapper border radii to maintain visual consistency + // with inner elements when button is positioned inside. + $wrapper_styles[] = sprintf( + 'border-radius: calc(%s + %s);', + esc_attr( $border_radius ), + $default_padding + ); + } + } + } + + // Add color styles. + $has_text_color = ! empty( $attributes['style']['color']['text'] ); + if ( $has_text_color ) { + $button_styles[] = sprintf( 'color: %s;', $attributes['style']['color']['text'] ); + } + + $has_background_color = ! empty( $attributes['style']['color']['background'] ); + if ( $has_background_color ) { + $button_styles[] = sprintf( 'background-color: %s;', $attributes['style']['color']['background'] ); + } + + $has_custom_gradient = ! empty( $attributes['style']['color']['gradient'] ); + if ( $has_custom_gradient ) { + $button_styles[] = sprintf( 'background: %s;', $attributes['style']['color']['gradient'] ); + } + + // Get typography styles to be shared across inner elements. + $typography_styles = esc_attr( get_typography_styles_for_block_core_search( $attributes ) ); + if ( ! empty( $typography_styles ) ) { + $label_styles [] = $typography_styles; + $button_styles[] = $typography_styles; + $input_styles [] = $typography_styles; + } + + // Typography text-decoration is only applied to the label and button. + if ( ! empty( $attributes['style']['typography']['textDecoration'] ) ) { + $text_decoration_value = sprintf( 'text-decoration: %s;', esc_attr( $attributes['style']['typography']['textDecoration'] ) ); + $button_styles[] = $text_decoration_value; + // Input opts out of text decoration. + if ( $show_label ) { + $label_styles[] = $text_decoration_value; + } + } + + return array( + 'input' => ! empty( $input_styles ) ? sprintf( ' style="%s"', esc_attr( safecss_filter_attr( implode( ' ', $input_styles ) ) ) ) : '', + 'button' => ! empty( $button_styles ) ? sprintf( ' style="%s"', esc_attr( safecss_filter_attr( implode( ' ', $button_styles ) ) ) ) : '', + 'wrapper' => ! empty( $wrapper_styles ) ? sprintf( ' style="%s"', esc_attr( safecss_filter_attr( implode( ' ', $wrapper_styles ) ) ) ) : '', + 'label' => ! empty( $label_styles ) ? sprintf( ' style="%s"', esc_attr( safecss_filter_attr( implode( ' ', $label_styles ) ) ) ) : '', + ); +} + +/** + * Returns typography classnames depending on whether there are named font sizes/families . + * + * @param array $attributes The block attributes. + * + * @return string The typography color classnames to be applied to the block elements. + */ +function get_typography_classes_for_block_core_search( $attributes ) { + $typography_classes = array(); + $has_named_font_family = ! empty( $attributes['fontFamily'] ); + $has_named_font_size = ! empty( $attributes['fontSize'] ); + + if ( $has_named_font_size ) { + $typography_classes[] = sprintf( 'has-%s-font-size', esc_attr( $attributes['fontSize'] ) ); + } + + if ( $has_named_font_family ) { + $typography_classes[] = sprintf( 'has-%s-font-family', esc_attr( $attributes['fontFamily'] ) ); + } + + return implode( ' ', $typography_classes ); +} + +/** + * Returns typography styles to be included in an HTML style tag. + * This excludes text-decoration, which is applied only to the label and button elements of the search block. + * + * @param array $attributes The block attributes. + * + * @return string A string of typography CSS declarations. + */ +function get_typography_styles_for_block_core_search( $attributes ) { + $typography_styles = array(); + + // Add typography styles. + if ( ! empty( $attributes['style']['typography']['fontSize'] ) ) { + $typography_styles[] = sprintf( + 'font-size: %s;', + wp_get_typography_font_size_value( + array( + 'size' => $attributes['style']['typography']['fontSize'], + ) + ) + ); + + } + + if ( ! empty( $attributes['style']['typography']['fontFamily'] ) ) { + $typography_styles[] = sprintf( 'font-family: %s;', $attributes['style']['typography']['fontFamily'] ); + } + + if ( ! empty( $attributes['style']['typography']['letterSpacing'] ) ) { + $typography_styles[] = sprintf( 'letter-spacing: %s;', $attributes['style']['typography']['letterSpacing'] ); + } + + if ( ! empty( $attributes['style']['typography']['fontWeight'] ) ) { + $typography_styles[] = sprintf( 'font-weight: %s;', $attributes['style']['typography']['fontWeight'] ); + } + + if ( ! empty( $attributes['style']['typography']['fontStyle'] ) ) { + $typography_styles[] = sprintf( 'font-style: %s;', $attributes['style']['typography']['fontStyle'] ); + } + + if ( ! empty( $attributes['style']['typography']['lineHeight'] ) ) { + $typography_styles[] = sprintf( 'line-height: %s;', $attributes['style']['typography']['lineHeight'] ); + } + + if ( ! empty( $attributes['style']['typography']['textTransform'] ) ) { + $typography_styles[] = sprintf( 'text-transform: %s;', $attributes['style']['typography']['textTransform'] ); + } + + return implode( '', $typography_styles ); +} + +/** + * Returns border color classnames depending on whether there are named or custom border colors. + * + * @param array $attributes The block attributes. + * + * @return string The border color classnames to be applied to the block elements. + */ +function get_border_color_classes_for_block_core_search( $attributes ) { + $border_color_classes = array(); + $has_custom_border_color = ! empty( $attributes['style']['border']['color'] ); + $has_named_border_color = ! empty( $attributes['borderColor'] ); + + if ( $has_custom_border_color || $has_named_border_color ) { + $border_color_classes[] = 'has-border-color'; + } + + if ( $has_named_border_color ) { + $border_color_classes[] = sprintf( 'has-%s-border-color', esc_attr( $attributes['borderColor'] ) ); + } + + return implode( ' ', $border_color_classes ); +} + +/** + * Returns color classnames depending on whether there are named or custom text and background colors. + * + * @param array $attributes The block attributes. + * + * @return string The color classnames to be applied to the block elements. + */ +function get_color_classes_for_block_core_search( $attributes ) { + $classnames = array(); + + // Text color. + $has_named_text_color = ! empty( $attributes['textColor'] ); + $has_custom_text_color = ! empty( $attributes['style']['color']['text'] ); + if ( $has_named_text_color ) { + $classnames[] = sprintf( 'has-text-color has-%s-color', $attributes['textColor'] ); + } elseif ( $has_custom_text_color ) { + // If a custom 'textColor' was selected instead of a preset, still add the generic `has-text-color` class. + $classnames[] = 'has-text-color'; + } + + // Background color. + $has_named_background_color = ! empty( $attributes['backgroundColor'] ); + $has_custom_background_color = ! empty( $attributes['style']['color']['background'] ); + $has_named_gradient = ! empty( $attributes['gradient'] ); + $has_custom_gradient = ! empty( $attributes['style']['color']['gradient'] ); + if ( + $has_named_background_color || + $has_custom_background_color || + $has_named_gradient || + $has_custom_gradient + ) { + $classnames[] = 'has-background'; + } + if ( $has_named_background_color ) { + $classnames[] = sprintf( 'has-%s-background-color', $attributes['backgroundColor'] ); + } + if ( $has_named_gradient ) { + $classnames[] = sprintf( 'has-%s-gradient-background', $attributes['gradient'] ); + } + + return implode( ' ', $classnames ); +} diff --git a/wp-includes/blocks/search/block.json b/wp-includes/blocks/search/block.json new file mode 100644 index 0000000..5669a90 --- /dev/null +++ b/wp-includes/blocks/search/block.json @@ -0,0 +1,97 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/search", + "title": "Search", + "category": "widgets", + "description": "Help visitors find your content.", + "keywords": [ "find" ], + "textdomain": "default", + "attributes": { + "label": { + "type": "string", + "__experimentalRole": "content" + }, + "showLabel": { + "type": "boolean", + "default": true + }, + "placeholder": { + "type": "string", + "default": "", + "__experimentalRole": "content" + }, + "width": { + "type": "number" + }, + "widthUnit": { + "type": "string" + }, + "buttonText": { + "type": "string", + "__experimentalRole": "content" + }, + "buttonPosition": { + "type": "string", + "default": "button-outside" + }, + "buttonUseIcon": { + "type": "boolean", + "default": false + }, + "query": { + "type": "object", + "default": {} + }, + "buttonBehavior": { + "type": "string", + "default": "expand-searchfield" + }, + "isSearchFieldHidden": { + "type": "boolean", + "default": false + } + }, + "supports": { + "align": [ "left", "center", "right" ], + "color": { + "gradients": true, + "__experimentalSkipSerialization": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "interactivity": true, + "typography": { + "__experimentalSkipSerialization": true, + "__experimentalSelector": ".wp-block-search__label, .wp-block-search__input, .wp-block-search__button", + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "__experimentalBorder": { + "color": true, + "radius": true, + "width": true, + "__experimentalSkipSerialization": true, + "__experimentalDefaultControls": { + "color": true, + "radius": true, + "width": true + } + }, + "html": false + }, + "viewScript": "file:./view.min.js", + "editorStyle": "wp-block-search-editor", + "style": "wp-block-search" +} diff --git a/wp-includes/blocks/search/editor-rtl.css b/wp-includes/blocks/search/editor-rtl.css new file mode 100644 index 0000000..05eeacf --- /dev/null +++ b/wp-includes/blocks/search/editor-rtl.css @@ -0,0 +1,14 @@ +.wp-block[data-align=center] .wp-block-search .wp-block-search__inside-wrapper{ + margin:auto; +} + +.wp-block-search .wp-block-search__button{ + align-items:center; + border-radius:initial; + display:flex; + height:auto; + justify-content:center; +} +.wp-block-search__components-button-group{ + margin-top:10px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/search/editor-rtl.min.css b/wp-includes/blocks/search/editor-rtl.min.css new file mode 100644 index 0000000..b9c22f4 --- /dev/null +++ b/wp-includes/blocks/search/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block[data-align=center] .wp-block-search .wp-block-search__inside-wrapper{margin:auto}.wp-block-search .wp-block-search__button{align-items:center;border-radius:initial;display:flex;height:auto;justify-content:center}.wp-block-search__components-button-group{margin-top:10px}
\ No newline at end of file diff --git a/wp-includes/blocks/search/editor.css b/wp-includes/blocks/search/editor.css new file mode 100644 index 0000000..05eeacf --- /dev/null +++ b/wp-includes/blocks/search/editor.css @@ -0,0 +1,14 @@ +.wp-block[data-align=center] .wp-block-search .wp-block-search__inside-wrapper{ + margin:auto; +} + +.wp-block-search .wp-block-search__button{ + align-items:center; + border-radius:initial; + display:flex; + height:auto; + justify-content:center; +} +.wp-block-search__components-button-group{ + margin-top:10px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/search/editor.min.css b/wp-includes/blocks/search/editor.min.css new file mode 100644 index 0000000..b9c22f4 --- /dev/null +++ b/wp-includes/blocks/search/editor.min.css @@ -0,0 +1 @@ +.wp-block[data-align=center] .wp-block-search .wp-block-search__inside-wrapper{margin:auto}.wp-block-search .wp-block-search__button{align-items:center;border-radius:initial;display:flex;height:auto;justify-content:center}.wp-block-search__components-button-group{margin-top:10px}
\ No newline at end of file diff --git a/wp-includes/blocks/search/style-rtl.css b/wp-includes/blocks/search/style-rtl.css new file mode 100644 index 0000000..ff60086 --- /dev/null +++ b/wp-includes/blocks/search/style-rtl.css @@ -0,0 +1,95 @@ +.wp-block-search__button{ + margin-right:10px; + word-break:normal; +} +.wp-block-search__button.has-icon{ + line-height:0; +} +.wp-block-search__button svg{ + fill:currentColor; + min-height:24px; + min-width:24px; + vertical-align:text-bottom; +} + +:where(.wp-block-search__button){ + border:1px solid #ccc; + padding:6px 10px; +} + +.wp-block-search__inside-wrapper{ + display:flex; + flex:auto; + flex-wrap:nowrap; + max-width:100%; +} + +.wp-block-search__label{ + width:100%; +} + +.wp-block-search__input{ + -webkit-appearance:initial; + appearance:none; + border:1px solid #949494; + flex-grow:1; + margin-left:0; + margin-right:0; + min-width:3rem; + padding:8px; + text-decoration:unset !important; +} + +.wp-block-search.wp-block-search__button-only .wp-block-search__button{ + flex-shrink:0; + margin-right:0; + max-width:calc(100% - 100px); +} + +:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper){ + border:1px solid #949494; + box-sizing:border-box; + padding:4px; +} +:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input{ + border:none; + border-radius:0; + padding:0 4px; +} +:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input:focus{ + outline:none; +} +:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) :where(.wp-block-search__button){ + padding:4px 8px; +} + +.wp-block-search.aligncenter .wp-block-search__inside-wrapper{ + margin:auto; +} + +.wp-block-search__button-behavior-expand .wp-block-search__inside-wrapper{ + min-width:0 !important; + transition-property:width; +} +.wp-block-search__button-behavior-expand .wp-block-search__input{ + flex-basis:100%; + transition-duration:.3s; +} +.wp-block-search__button-behavior-expand.wp-block-search__searchfield-hidden,.wp-block-search__button-behavior-expand.wp-block-search__searchfield-hidden .wp-block-search__inside-wrapper{ + overflow:hidden; +} +.wp-block-search__button-behavior-expand.wp-block-search__searchfield-hidden .wp-block-search__input{ + border-left-width:0 !important; + border-right-width:0 !important; + flex-basis:0; + flex-grow:0; + margin:0; + min-width:0 !important; + padding-left:0 !important; + padding-right:0 !important; + width:0 !important; +} + +.wp-block[data-align=right] .wp-block-search__button-behavior-expand .wp-block-search__inside-wrapper{ + float:left; +}
\ No newline at end of file diff --git a/wp-includes/blocks/search/style-rtl.min.css b/wp-includes/blocks/search/style-rtl.min.css new file mode 100644 index 0000000..73dea5a --- /dev/null +++ b/wp-includes/blocks/search/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-search__button{margin-right:10px;word-break:normal}.wp-block-search__button.has-icon{line-height:0}.wp-block-search__button svg{fill:currentColor;min-height:24px;min-width:24px;vertical-align:text-bottom}:where(.wp-block-search__button){border:1px solid #ccc;padding:6px 10px}.wp-block-search__inside-wrapper{display:flex;flex:auto;flex-wrap:nowrap;max-width:100%}.wp-block-search__label{width:100%}.wp-block-search__input{-webkit-appearance:initial;appearance:none;border:1px solid #949494;flex-grow:1;margin-left:0;margin-right:0;min-width:3rem;padding:8px;text-decoration:unset!important}.wp-block-search.wp-block-search__button-only .wp-block-search__button{flex-shrink:0;margin-right:0;max-width:calc(100% - 100px)}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper){border:1px solid #949494;box-sizing:border-box;padding:4px}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input{border:none;border-radius:0;padding:0 4px}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input:focus{outline:none}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) :where(.wp-block-search__button){padding:4px 8px}.wp-block-search.aligncenter .wp-block-search__inside-wrapper{margin:auto}.wp-block-search__button-behavior-expand .wp-block-search__inside-wrapper{min-width:0!important;transition-property:width}.wp-block-search__button-behavior-expand .wp-block-search__input{flex-basis:100%;transition-duration:.3s}.wp-block-search__button-behavior-expand.wp-block-search__searchfield-hidden,.wp-block-search__button-behavior-expand.wp-block-search__searchfield-hidden .wp-block-search__inside-wrapper{overflow:hidden}.wp-block-search__button-behavior-expand.wp-block-search__searchfield-hidden .wp-block-search__input{border-left-width:0!important;border-right-width:0!important;flex-basis:0;flex-grow:0;margin:0;min-width:0!important;padding-left:0!important;padding-right:0!important;width:0!important}.wp-block[data-align=right] .wp-block-search__button-behavior-expand .wp-block-search__inside-wrapper{float:left}
\ No newline at end of file diff --git a/wp-includes/blocks/search/style.css b/wp-includes/blocks/search/style.css new file mode 100644 index 0000000..91fe4f7 --- /dev/null +++ b/wp-includes/blocks/search/style.css @@ -0,0 +1,95 @@ +.wp-block-search__button{ + margin-left:10px; + word-break:normal; +} +.wp-block-search__button.has-icon{ + line-height:0; +} +.wp-block-search__button svg{ + fill:currentColor; + min-height:24px; + min-width:24px; + vertical-align:text-bottom; +} + +:where(.wp-block-search__button){ + border:1px solid #ccc; + padding:6px 10px; +} + +.wp-block-search__inside-wrapper{ + display:flex; + flex:auto; + flex-wrap:nowrap; + max-width:100%; +} + +.wp-block-search__label{ + width:100%; +} + +.wp-block-search__input{ + -webkit-appearance:initial; + appearance:none; + border:1px solid #949494; + flex-grow:1; + margin-left:0; + margin-right:0; + min-width:3rem; + padding:8px; + text-decoration:unset !important; +} + +.wp-block-search.wp-block-search__button-only .wp-block-search__button{ + flex-shrink:0; + margin-left:0; + max-width:calc(100% - 100px); +} + +:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper){ + border:1px solid #949494; + box-sizing:border-box; + padding:4px; +} +:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input{ + border:none; + border-radius:0; + padding:0 4px; +} +:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input:focus{ + outline:none; +} +:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) :where(.wp-block-search__button){ + padding:4px 8px; +} + +.wp-block-search.aligncenter .wp-block-search__inside-wrapper{ + margin:auto; +} + +.wp-block-search__button-behavior-expand .wp-block-search__inside-wrapper{ + min-width:0 !important; + transition-property:width; +} +.wp-block-search__button-behavior-expand .wp-block-search__input{ + flex-basis:100%; + transition-duration:.3s; +} +.wp-block-search__button-behavior-expand.wp-block-search__searchfield-hidden,.wp-block-search__button-behavior-expand.wp-block-search__searchfield-hidden .wp-block-search__inside-wrapper{ + overflow:hidden; +} +.wp-block-search__button-behavior-expand.wp-block-search__searchfield-hidden .wp-block-search__input{ + border-left-width:0 !important; + border-right-width:0 !important; + flex-basis:0; + flex-grow:0; + margin:0; + min-width:0 !important; + padding-left:0 !important; + padding-right:0 !important; + width:0 !important; +} + +.wp-block[data-align=right] .wp-block-search__button-behavior-expand .wp-block-search__inside-wrapper{ + float:right; +}
\ No newline at end of file diff --git a/wp-includes/blocks/search/style.min.css b/wp-includes/blocks/search/style.min.css new file mode 100644 index 0000000..c744f37 --- /dev/null +++ b/wp-includes/blocks/search/style.min.css @@ -0,0 +1 @@ +.wp-block-search__button{margin-left:10px;word-break:normal}.wp-block-search__button.has-icon{line-height:0}.wp-block-search__button svg{fill:currentColor;min-height:24px;min-width:24px;vertical-align:text-bottom}:where(.wp-block-search__button){border:1px solid #ccc;padding:6px 10px}.wp-block-search__inside-wrapper{display:flex;flex:auto;flex-wrap:nowrap;max-width:100%}.wp-block-search__label{width:100%}.wp-block-search__input{-webkit-appearance:initial;appearance:none;border:1px solid #949494;flex-grow:1;margin-left:0;margin-right:0;min-width:3rem;padding:8px;text-decoration:unset!important}.wp-block-search.wp-block-search__button-only .wp-block-search__button{flex-shrink:0;margin-left:0;max-width:calc(100% - 100px)}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper){border:1px solid #949494;box-sizing:border-box;padding:4px}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input{border:none;border-radius:0;padding:0 4px}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input:focus{outline:none}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) :where(.wp-block-search__button){padding:4px 8px}.wp-block-search.aligncenter .wp-block-search__inside-wrapper{margin:auto}.wp-block-search__button-behavior-expand .wp-block-search__inside-wrapper{min-width:0!important;transition-property:width}.wp-block-search__button-behavior-expand .wp-block-search__input{flex-basis:100%;transition-duration:.3s}.wp-block-search__button-behavior-expand.wp-block-search__searchfield-hidden,.wp-block-search__button-behavior-expand.wp-block-search__searchfield-hidden .wp-block-search__inside-wrapper{overflow:hidden}.wp-block-search__button-behavior-expand.wp-block-search__searchfield-hidden .wp-block-search__input{border-left-width:0!important;border-right-width:0!important;flex-basis:0;flex-grow:0;margin:0;min-width:0!important;padding-left:0!important;padding-right:0!important;width:0!important}.wp-block[data-align=right] .wp-block-search__button-behavior-expand .wp-block-search__inside-wrapper{float:right}
\ No newline at end of file diff --git a/wp-includes/blocks/search/theme-rtl.css b/wp-includes/blocks/search/theme-rtl.css new file mode 100644 index 0000000..18713bb --- /dev/null +++ b/wp-includes/blocks/search/theme-rtl.css @@ -0,0 +1,8 @@ +.wp-block-search .wp-block-search__label{ + font-weight:700; +} + +.wp-block-search__button{ + border:1px solid #ccc; + padding:.375em .625em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/search/theme-rtl.min.css b/wp-includes/blocks/search/theme-rtl.min.css new file mode 100644 index 0000000..8938965 --- /dev/null +++ b/wp-includes/blocks/search/theme-rtl.min.css @@ -0,0 +1 @@ +.wp-block-search .wp-block-search__label{font-weight:700}.wp-block-search__button{border:1px solid #ccc;padding:.375em .625em}
\ No newline at end of file diff --git a/wp-includes/blocks/search/theme.css b/wp-includes/blocks/search/theme.css new file mode 100644 index 0000000..18713bb --- /dev/null +++ b/wp-includes/blocks/search/theme.css @@ -0,0 +1,8 @@ +.wp-block-search .wp-block-search__label{ + font-weight:700; +} + +.wp-block-search__button{ + border:1px solid #ccc; + padding:.375em .625em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/search/theme.min.css b/wp-includes/blocks/search/theme.min.css new file mode 100644 index 0000000..8938965 --- /dev/null +++ b/wp-includes/blocks/search/theme.min.css @@ -0,0 +1 @@ +.wp-block-search .wp-block-search__label{font-weight:700}.wp-block-search__button{border:1px solid #ccc;padding:.375em .625em}
\ No newline at end of file diff --git a/wp-includes/blocks/search/view.asset.php b/wp-includes/blocks/search/view.asset.php new file mode 100644 index 0000000..9ecb989 --- /dev/null +++ b/wp-includes/blocks/search/view.asset.php @@ -0,0 +1 @@ +<?php return array('dependencies' => array(), 'version' => 'bbd4958a430d8ba14c4c'); diff --git a/wp-includes/blocks/search/view.js b/wp-includes/blocks/search/view.js new file mode 100644 index 0000000..9d18abf --- /dev/null +++ b/wp-includes/blocks/search/view.js @@ -0,0 +1,101 @@ +"use strict"; +(self["__WordPressPrivateInteractivityAPI__"] = self["__WordPressPrivateInteractivityAPI__"] || []).push([[222],{ + +/***/ 534: +/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) { + +/* harmony import */ var _wordpress_interactivity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(754); +/** + * WordPress dependencies + */ + +(0,_wordpress_interactivity__WEBPACK_IMPORTED_MODULE_0__/* .store */ .h)({ + selectors: { + core: { + search: { + ariaLabel: ({ + context + }) => { + const { + ariaLabelCollapsed, + ariaLabelExpanded + } = context.core.search; + return context.core.search.isSearchInputVisible ? ariaLabelExpanded : ariaLabelCollapsed; + }, + ariaControls: ({ + context + }) => { + return context.core.search.isSearchInputVisible ? null : context.core.search.inputId; + }, + type: ({ + context + }) => { + return context.core.search.isSearchInputVisible ? 'submit' : 'button'; + }, + tabindex: ({ + context + }) => { + return context.core.search.isSearchInputVisible ? '0' : '-1'; + } + } + } + }, + actions: { + core: { + search: { + openSearchInput: ({ + context, + event, + ref + }) => { + if (!context.core.search.isSearchInputVisible) { + event.preventDefault(); + context.core.search.isSearchInputVisible = true; + ref.parentElement.querySelector('input').focus(); + } + }, + closeSearchInput: ({ + context + }) => { + context.core.search.isSearchInputVisible = false; + }, + handleSearchKeydown: store => { + const { + actions, + event, + ref + } = store; + // If Escape close the menu. + if (event?.key === 'Escape') { + actions.core.search.closeSearchInput(store); + ref.querySelector('button').focus(); + } + }, + handleSearchFocusout: store => { + const { + actions, + event, + ref + } = store; + // If focus is outside search form, and in the document, close menu + // event.target === The element losing focus + // event.relatedTarget === The element receiving focus (if any) + // When focusout is outside the document, + // `window.document.activeElement` doesn't change. + if (!ref.contains(event.relatedTarget) && event.target !== window.document.activeElement) { + actions.core.search.closeSearchInput(store); + } + } + } + } + } +}); + +/***/ }) + +}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); } +/******/ var __webpack_exports__ = (__webpack_exec__(534)); +/******/ } +]);
\ No newline at end of file diff --git a/wp-includes/blocks/search/view.min.asset.php b/wp-includes/blocks/search/view.min.asset.php new file mode 100644 index 0000000..dc204c9 --- /dev/null +++ b/wp-includes/blocks/search/view.min.asset.php @@ -0,0 +1 @@ +<?php return array('dependencies' => array(), 'version' => 'ff76b5016de2df424c55'); diff --git a/wp-includes/blocks/search/view.min.js b/wp-includes/blocks/search/view.min.js new file mode 100644 index 0000000..f38519d --- /dev/null +++ b/wp-includes/blocks/search/view.min.js @@ -0,0 +1 @@ +"use strict";(self.__WordPressPrivateInteractivityAPI__=self.__WordPressPrivateInteractivityAPI__||[]).push([[222],{534:function(e,t,c){(0,c(754).h)({selectors:{core:{search:{ariaLabel:({context:e})=>{const{ariaLabelCollapsed:t,ariaLabelExpanded:c}=e.core.search;return e.core.search.isSearchInputVisible?c:t},ariaControls:({context:e})=>e.core.search.isSearchInputVisible?null:e.core.search.inputId,type:({context:e})=>e.core.search.isSearchInputVisible?"submit":"button",tabindex:({context:e})=>e.core.search.isSearchInputVisible?"0":"-1"}}},actions:{core:{search:{openSearchInput:({context:e,event:t,ref:c})=>{e.core.search.isSearchInputVisible||(t.preventDefault(),e.core.search.isSearchInputVisible=!0,c.parentElement.querySelector("input").focus())},closeSearchInput:({context:e})=>{e.core.search.isSearchInputVisible=!1},handleSearchKeydown:e=>{const{actions:t,event:c,ref:r}=e;"Escape"===c?.key&&(t.core.search.closeSearchInput(e),r.querySelector("button").focus())},handleSearchFocusout:e=>{const{actions:t,event:c,ref:r}=e;r.contains(c.relatedTarget)||c.target===window.document.activeElement||t.core.search.closeSearchInput(e)}}}}})}},function(e){var t;t=534,e(e.s=t)}]);
\ No newline at end of file diff --git a/wp-includes/blocks/separator/block.json b/wp-includes/blocks/separator/block.json new file mode 100644 index 0000000..970f6b5 --- /dev/null +++ b/wp-includes/blocks/separator/block.json @@ -0,0 +1,40 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/separator", + "title": "Separator", + "category": "design", + "description": "Create a break between ideas or sections with a horizontal separator.", + "keywords": [ "horizontal-line", "hr", "divider" ], + "textdomain": "default", + "attributes": { + "opacity": { + "type": "string", + "default": "alpha-channel" + } + }, + "supports": { + "anchor": true, + "align": [ "center", "wide", "full" ], + "color": { + "enableContrastChecker": false, + "__experimentalSkipSerialization": true, + "gradients": true, + "background": true, + "text": false, + "__experimentalDefaultControls": { + "background": true + } + }, + "spacing": { + "margin": [ "top", "bottom" ] + } + }, + "styles": [ + { "name": "default", "label": "Default", "isDefault": true }, + { "name": "wide", "label": "Wide Line" }, + { "name": "dots", "label": "Dots" } + ], + "editorStyle": "wp-block-separator-editor", + "style": "wp-block-separator" +} diff --git a/wp-includes/blocks/separator/editor-rtl.css b/wp-includes/blocks/separator/editor-rtl.css new file mode 100644 index 0000000..61ef708 --- /dev/null +++ b/wp-includes/blocks/separator/editor-rtl.css @@ -0,0 +1,8 @@ +.block-editor-block-list__block[data-type="core/separator"]{ + padding-bottom:.1px; + padding-top:.1px; +} +.block-editor-block-list__block[data-type="core/separator"].wp-block-separator.is-style-dots{ + background:none !important; + border:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/separator/editor-rtl.min.css b/wp-includes/blocks/separator/editor-rtl.min.css new file mode 100644 index 0000000..2f5b244 --- /dev/null +++ b/wp-includes/blocks/separator/editor-rtl.min.css @@ -0,0 +1 @@ +.block-editor-block-list__block[data-type="core/separator"]{padding-bottom:.1px;padding-top:.1px}.block-editor-block-list__block[data-type="core/separator"].wp-block-separator.is-style-dots{background:none!important;border:none}
\ No newline at end of file diff --git a/wp-includes/blocks/separator/editor.css b/wp-includes/blocks/separator/editor.css new file mode 100644 index 0000000..61ef708 --- /dev/null +++ b/wp-includes/blocks/separator/editor.css @@ -0,0 +1,8 @@ +.block-editor-block-list__block[data-type="core/separator"]{ + padding-bottom:.1px; + padding-top:.1px; +} +.block-editor-block-list__block[data-type="core/separator"].wp-block-separator.is-style-dots{ + background:none !important; + border:none; +}
\ No newline at end of file diff --git a/wp-includes/blocks/separator/editor.min.css b/wp-includes/blocks/separator/editor.min.css new file mode 100644 index 0000000..2f5b244 --- /dev/null +++ b/wp-includes/blocks/separator/editor.min.css @@ -0,0 +1 @@ +.block-editor-block-list__block[data-type="core/separator"]{padding-bottom:.1px;padding-top:.1px}.block-editor-block-list__block[data-type="core/separator"].wp-block-separator.is-style-dots{background:none!important;border:none}
\ No newline at end of file diff --git a/wp-includes/blocks/separator/style-rtl.css b/wp-includes/blocks/separator/style-rtl.css new file mode 100644 index 0000000..e0faf6d --- /dev/null +++ b/wp-includes/blocks/separator/style-rtl.css @@ -0,0 +1,21 @@ +@charset "UTF-8"; +.wp-block-separator{ + border:1px solid; + border-left:none; + border-right:none; +} +.wp-block-separator.is-style-dots{ + background:none !important; + border:none; + height:auto; + line-height:1; + text-align:center; +} +.wp-block-separator.is-style-dots:before{ + color:currentColor; + content:"···"; + font-family:serif; + font-size:1.5em; + letter-spacing:2em; + padding-left:2em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/separator/style-rtl.min.css b/wp-includes/blocks/separator/style-rtl.min.css new file mode 100644 index 0000000..20f594b --- /dev/null +++ b/wp-includes/blocks/separator/style-rtl.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.wp-block-separator{border:1px solid;border-left:none;border-right:none}.wp-block-separator.is-style-dots{background:none!important;border:none;height:auto;line-height:1;text-align:center}.wp-block-separator.is-style-dots:before{color:currentColor;content:"···";font-family:serif;font-size:1.5em;letter-spacing:2em;padding-left:2em}
\ No newline at end of file diff --git a/wp-includes/blocks/separator/style.css b/wp-includes/blocks/separator/style.css new file mode 100644 index 0000000..e0faf6d --- /dev/null +++ b/wp-includes/blocks/separator/style.css @@ -0,0 +1,21 @@ +@charset "UTF-8"; +.wp-block-separator{ + border:1px solid; + border-left:none; + border-right:none; +} +.wp-block-separator.is-style-dots{ + background:none !important; + border:none; + height:auto; + line-height:1; + text-align:center; +} +.wp-block-separator.is-style-dots:before{ + color:currentColor; + content:"···"; + font-family:serif; + font-size:1.5em; + letter-spacing:2em; + padding-left:2em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/separator/style.min.css b/wp-includes/blocks/separator/style.min.css new file mode 100644 index 0000000..20f594b --- /dev/null +++ b/wp-includes/blocks/separator/style.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.wp-block-separator{border:1px solid;border-left:none;border-right:none}.wp-block-separator.is-style-dots{background:none!important;border:none;height:auto;line-height:1;text-align:center}.wp-block-separator.is-style-dots:before{color:currentColor;content:"···";font-family:serif;font-size:1.5em;letter-spacing:2em;padding-left:2em}
\ No newline at end of file diff --git a/wp-includes/blocks/separator/theme-rtl.css b/wp-includes/blocks/separator/theme-rtl.css new file mode 100644 index 0000000..57b48e4 --- /dev/null +++ b/wp-includes/blocks/separator/theme-rtl.css @@ -0,0 +1,23 @@ +.wp-block-separator.has-css-opacity{ + opacity:.4; +} + +.wp-block-separator{ + border:none; + border-bottom:2px solid; + margin-left:auto; + margin-right:auto; +} +.wp-block-separator.has-alpha-channel-opacity{ + opacity:1; +} +.wp-block-separator:not(.is-style-wide):not(.is-style-dots){ + width:100px; +} +.wp-block-separator.has-background:not(.is-style-dots){ + border-bottom:none; + height:1px; +} +.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){ + height:2px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/separator/theme-rtl.min.css b/wp-includes/blocks/separator/theme-rtl.min.css new file mode 100644 index 0000000..6ed5d13 --- /dev/null +++ b/wp-includes/blocks/separator/theme-rtl.min.css @@ -0,0 +1 @@ +.wp-block-separator.has-css-opacity{opacity:.4}.wp-block-separator{border:none;border-bottom:2px solid;margin-left:auto;margin-right:auto}.wp-block-separator.has-alpha-channel-opacity{opacity:1}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots){border-bottom:none;height:1px}.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){height:2px}
\ No newline at end of file diff --git a/wp-includes/blocks/separator/theme.css b/wp-includes/blocks/separator/theme.css new file mode 100644 index 0000000..57b48e4 --- /dev/null +++ b/wp-includes/blocks/separator/theme.css @@ -0,0 +1,23 @@ +.wp-block-separator.has-css-opacity{ + opacity:.4; +} + +.wp-block-separator{ + border:none; + border-bottom:2px solid; + margin-left:auto; + margin-right:auto; +} +.wp-block-separator.has-alpha-channel-opacity{ + opacity:1; +} +.wp-block-separator:not(.is-style-wide):not(.is-style-dots){ + width:100px; +} +.wp-block-separator.has-background:not(.is-style-dots){ + border-bottom:none; + height:1px; +} +.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){ + height:2px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/separator/theme.min.css b/wp-includes/blocks/separator/theme.min.css new file mode 100644 index 0000000..6ed5d13 --- /dev/null +++ b/wp-includes/blocks/separator/theme.min.css @@ -0,0 +1 @@ +.wp-block-separator.has-css-opacity{opacity:.4}.wp-block-separator{border:none;border-bottom:2px solid;margin-left:auto;margin-right:auto}.wp-block-separator.has-alpha-channel-opacity{opacity:1}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots){border-bottom:none;height:1px}.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){height:2px}
\ No newline at end of file diff --git a/wp-includes/blocks/shortcode.php b/wp-includes/blocks/shortcode.php new file mode 100644 index 0000000..97a40b3 --- /dev/null +++ b/wp-includes/blocks/shortcode.php @@ -0,0 +1,31 @@ +<?php +/** + * Server-side rendering of the `core/shortcode` block. + * + * @package WordPress + */ + +/** + * Performs wpautop() on the shortcode block content. + * + * @param array $attributes The block attributes. + * @param string $content The block content. + * + * @return string Returns the block content. + */ +function render_block_core_shortcode( $attributes, $content ) { + return wpautop( $content ); +} + +/** + * Registers the `core/shortcode` block on server. + */ +function register_block_core_shortcode() { + register_block_type_from_metadata( + __DIR__ . '/shortcode', + array( + 'render_callback' => 'render_block_core_shortcode', + ) + ); +} +add_action( 'init', 'register_block_core_shortcode' ); diff --git a/wp-includes/blocks/shortcode/block.json b/wp-includes/blocks/shortcode/block.json new file mode 100644 index 0000000..22d838a --- /dev/null +++ b/wp-includes/blocks/shortcode/block.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/shortcode", + "title": "Shortcode", + "category": "widgets", + "description": "Insert additional custom elements with a WordPress shortcode.", + "textdomain": "default", + "attributes": { + "text": { + "type": "string", + "source": "raw" + } + }, + "supports": { + "className": false, + "customClassName": false, + "html": false + }, + "editorStyle": "wp-block-shortcode-editor" +} diff --git a/wp-includes/blocks/shortcode/editor-rtl.css b/wp-includes/blocks/shortcode/editor-rtl.css new file mode 100644 index 0000000..47d6207 --- /dev/null +++ b/wp-includes/blocks/shortcode/editor-rtl.css @@ -0,0 +1,27 @@ +[data-type="core/shortcode"].components-placeholder{ + min-height:0; +} + +.blocks-shortcode__textarea{ + background:#fff !important; + border:1px solid #1e1e1e !important; + border-radius:2px !important; + box-shadow:none !important; + box-sizing:border-box; + color:#1e1e1e !important; + font-family:Menlo,Consolas,monaco,monospace !important; + font-size:16px !important; + max-height:250px; + padding:12px !important; + resize:none; +} +@media (min-width:600px){ + .blocks-shortcode__textarea{ + font-size:13px !important; + } +} +.blocks-shortcode__textarea:focus{ + border-color:var(--wp-admin-theme-color) !important; + box-shadow:0 0 0 1px var(--wp-admin-theme-color) !important; + outline:2px solid transparent !important; +}
\ No newline at end of file diff --git a/wp-includes/blocks/shortcode/editor-rtl.min.css b/wp-includes/blocks/shortcode/editor-rtl.min.css new file mode 100644 index 0000000..8128a65 --- /dev/null +++ b/wp-includes/blocks/shortcode/editor-rtl.min.css @@ -0,0 +1 @@ +[data-type="core/shortcode"].components-placeholder{min-height:0}.blocks-shortcode__textarea{background:#fff!important;border:1px solid #1e1e1e!important;border-radius:2px!important;box-shadow:none!important;box-sizing:border-box;color:#1e1e1e!important;font-family:Menlo,Consolas,monaco,monospace!important;font-size:16px!important;max-height:250px;padding:12px!important;resize:none}@media (min-width:600px){.blocks-shortcode__textarea{font-size:13px!important}}.blocks-shortcode__textarea:focus{border-color:var(--wp-admin-theme-color)!important;box-shadow:0 0 0 1px var(--wp-admin-theme-color)!important;outline:2px solid transparent!important}
\ No newline at end of file diff --git a/wp-includes/blocks/shortcode/editor.css b/wp-includes/blocks/shortcode/editor.css new file mode 100644 index 0000000..47d6207 --- /dev/null +++ b/wp-includes/blocks/shortcode/editor.css @@ -0,0 +1,27 @@ +[data-type="core/shortcode"].components-placeholder{ + min-height:0; +} + +.blocks-shortcode__textarea{ + background:#fff !important; + border:1px solid #1e1e1e !important; + border-radius:2px !important; + box-shadow:none !important; + box-sizing:border-box; + color:#1e1e1e !important; + font-family:Menlo,Consolas,monaco,monospace !important; + font-size:16px !important; + max-height:250px; + padding:12px !important; + resize:none; +} +@media (min-width:600px){ + .blocks-shortcode__textarea{ + font-size:13px !important; + } +} +.blocks-shortcode__textarea:focus{ + border-color:var(--wp-admin-theme-color) !important; + box-shadow:0 0 0 1px var(--wp-admin-theme-color) !important; + outline:2px solid transparent !important; +}
\ No newline at end of file diff --git a/wp-includes/blocks/shortcode/editor.min.css b/wp-includes/blocks/shortcode/editor.min.css new file mode 100644 index 0000000..8128a65 --- /dev/null +++ b/wp-includes/blocks/shortcode/editor.min.css @@ -0,0 +1 @@ +[data-type="core/shortcode"].components-placeholder{min-height:0}.blocks-shortcode__textarea{background:#fff!important;border:1px solid #1e1e1e!important;border-radius:2px!important;box-shadow:none!important;box-sizing:border-box;color:#1e1e1e!important;font-family:Menlo,Consolas,monaco,monospace!important;font-size:16px!important;max-height:250px;padding:12px!important;resize:none}@media (min-width:600px){.blocks-shortcode__textarea{font-size:13px!important}}.blocks-shortcode__textarea:focus{border-color:var(--wp-admin-theme-color)!important;box-shadow:0 0 0 1px var(--wp-admin-theme-color)!important;outline:2px solid transparent!important}
\ No newline at end of file diff --git a/wp-includes/blocks/site-logo.php b/wp-includes/blocks/site-logo.php new file mode 100644 index 0000000..f1819fc --- /dev/null +++ b/wp-includes/blocks/site-logo.php @@ -0,0 +1,206 @@ +<?php +/** + * Server-side rendering of the `core/site-logo` block. + * + * @package WordPress + */ + +/** + * Renders the `core/site-logo` block on the server. + * + * @param array $attributes The block attributes. + * + * @return string The render. + */ +function render_block_core_site_logo( $attributes ) { + $adjust_width_height_filter = static function ( $image ) use ( $attributes ) { + if ( empty( $attributes['width'] ) || empty( $image ) || ! $image[1] || ! $image[2] ) { + return $image; + } + $height = (float) $attributes['width'] / ( (float) $image[1] / (float) $image[2] ); + return array( $image[0], (int) $attributes['width'], (int) $height ); + }; + + add_filter( 'wp_get_attachment_image_src', $adjust_width_height_filter ); + + $custom_logo = get_custom_logo(); + + remove_filter( 'wp_get_attachment_image_src', $adjust_width_height_filter ); + + if ( empty( $custom_logo ) ) { + return ''; // Return early if no custom logo is set, avoiding extraneous wrapper div. + } + + if ( ! $attributes['isLink'] ) { + // Remove the link. + $custom_logo = preg_replace( '#<a.*?>(.*?)</a>#i', '\1', $custom_logo ); + } + + if ( $attributes['isLink'] && '_blank' === $attributes['linkTarget'] ) { + // Add the link target after the rel="home". + // Add an aria-label for informing that the page opens in a new tab. + $processor = new WP_HTML_Tag_Processor( $custom_logo ); + $processor->next_tag( 'a' ); + if ( 'home' === $processor->get_attribute( 'rel' ) ) { + $processor->set_attribute( 'aria-label', __( '(Home link, opens in a new tab)' ) ); + $processor->set_attribute( 'target', $attributes['linkTarget'] ); + } + $custom_logo = $processor->get_updated_html(); + } + + $classnames = array(); + if ( empty( $attributes['width'] ) ) { + $classnames[] = 'is-default-size'; + } + + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classnames ) ) ); + $html = sprintf( '<div %s>%s</div>', $wrapper_attributes, $custom_logo ); + return $html; +} + +/** + * Register a core site setting for a site logo + */ +function register_block_core_site_logo_setting() { + register_setting( + 'general', + 'site_logo', + array( + 'show_in_rest' => array( + 'name' => 'site_logo', + ), + 'type' => 'integer', + 'description' => __( 'Site logo.' ), + ) + ); +} + +add_action( 'rest_api_init', 'register_block_core_site_logo_setting', 10 ); + +/** + * Register a core site setting for a site icon + */ +function register_block_core_site_icon_setting() { + register_setting( + 'general', + 'site_icon', + array( + 'show_in_rest' => true, + 'type' => 'integer', + 'description' => __( 'Site icon.' ), + ) + ); +} + +add_action( 'rest_api_init', 'register_block_core_site_icon_setting', 10 ); + +/** + * Registers the `core/site-logo` block on the server. + */ +function register_block_core_site_logo() { + register_block_type_from_metadata( + __DIR__ . '/site-logo', + array( + 'render_callback' => 'render_block_core_site_logo', + ) + ); +} + +add_action( 'init', 'register_block_core_site_logo' ); + +/** + * Overrides the custom logo with a site logo, if the option is set. + * + * @param string $custom_logo The custom logo set by a theme. + * + * @return string The site logo if set. + */ +function _override_custom_logo_theme_mod( $custom_logo ) { + $site_logo = get_option( 'site_logo' ); + return false === $site_logo ? $custom_logo : $site_logo; +} + +add_filter( 'theme_mod_custom_logo', '_override_custom_logo_theme_mod' ); + +/** + * Updates the site_logo option when the custom_logo theme-mod gets updated. + * + * @param mixed $value Attachment ID of the custom logo or an empty value. + * @return mixed + */ +function _sync_custom_logo_to_site_logo( $value ) { + if ( empty( $value ) ) { + delete_option( 'site_logo' ); + } else { + update_option( 'site_logo', $value ); + } + + return $value; +} + +add_filter( 'pre_set_theme_mod_custom_logo', '_sync_custom_logo_to_site_logo' ); + +/** + * Deletes the site_logo when the custom_logo theme mod is removed. + * + * @param array $old_value Previous theme mod settings. + * @param array $value Updated theme mod settings. + */ +function _delete_site_logo_on_remove_custom_logo( $old_value, $value ) { + global $_ignore_site_logo_changes; + + if ( $_ignore_site_logo_changes ) { + return; + } + + // If the custom_logo is being unset, it's being removed from theme mods. + if ( isset( $old_value['custom_logo'] ) && ! isset( $value['custom_logo'] ) ) { + delete_option( 'site_logo' ); + } +} + +/** + * Deletes the site logo when all theme mods are being removed. + */ +function _delete_site_logo_on_remove_theme_mods() { + global $_ignore_site_logo_changes; + + if ( $_ignore_site_logo_changes ) { + return; + } + + if ( false !== get_theme_support( 'custom-logo' ) ) { + delete_option( 'site_logo' ); + } +} + +/** + * Hooks `_delete_site_logo_on_remove_custom_logo` in `update_option_theme_mods_$theme`. + * Hooks `_delete_site_logo_on_remove_theme_mods` in `delete_option_theme_mods_$theme`. + * + * Runs on `setup_theme` to account for dynamically-switched themes in the Customizer. + */ +function _delete_site_logo_on_remove_custom_logo_on_setup_theme() { + $theme = get_option( 'stylesheet' ); + add_action( "update_option_theme_mods_$theme", '_delete_site_logo_on_remove_custom_logo', 10, 2 ); + add_action( "delete_option_theme_mods_$theme", '_delete_site_logo_on_remove_theme_mods' ); +} +add_action( 'setup_theme', '_delete_site_logo_on_remove_custom_logo_on_setup_theme', 11 ); + +/** + * Removes the custom_logo theme-mod when the site_logo option gets deleted. + */ +function _delete_custom_logo_on_remove_site_logo() { + global $_ignore_site_logo_changes; + + // Prevent _delete_site_logo_on_remove_custom_logo and + // _delete_site_logo_on_remove_theme_mods from firing and causing an + // infinite loop. + $_ignore_site_logo_changes = true; + + // Remove the custom logo. + remove_theme_mod( 'custom_logo' ); + + $_ignore_site_logo_changes = false; +} +add_action( 'delete_option_site_logo', '_delete_custom_logo_on_remove_site_logo' ); diff --git a/wp-includes/blocks/site-logo/block.json b/wp-includes/blocks/site-logo/block.json new file mode 100644 index 0000000..d1e3d1b --- /dev/null +++ b/wp-includes/blocks/site-logo/block.json @@ -0,0 +1,60 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/site-logo", + "title": "Site Logo", + "category": "theme", + "description": "Display an image to represent this site. Update this block and the changes apply everywhere.", + "textdomain": "default", + "attributes": { + "width": { + "type": "number" + }, + "isLink": { + "type": "boolean", + "default": true + }, + "linkTarget": { + "type": "string", + "default": "_self" + }, + "shouldSyncIcon": { + "type": "boolean" + } + }, + "example": { + "viewportWidth": 500, + "attributes": { + "width": 350, + "className": "block-editor-block-types-list__site-logo-example" + } + }, + "supports": { + "html": false, + "align": true, + "alignWide": false, + "color": { + "__experimentalDuotone": "img, .components-placeholder__illustration, .components-placeholder::before", + "text": false, + "background": false + }, + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + } + }, + "styles": [ + { + "name": "default", + "label": "Default", + "isDefault": true + }, + { "name": "rounded", "label": "Rounded" } + ], + "editorStyle": "wp-block-site-logo-editor", + "style": "wp-block-site-logo" +} diff --git a/wp-includes/blocks/site-logo/editor-rtl.css b/wp-includes/blocks/site-logo/editor-rtl.css new file mode 100644 index 0000000..78cb454 --- /dev/null +++ b/wp-includes/blocks/site-logo/editor-rtl.css @@ -0,0 +1,105 @@ +.wp-block-site-logo.aligncenter>div,.wp-block[data-align=center]>.wp-block-site-logo{ + display:table; + margin-left:auto; + margin-right:auto; +} + +.wp-block-site-logo a{ + pointer-events:none; +} +.wp-block-site-logo .custom-logo-link{ + cursor:inherit; +} +.wp-block-site-logo .custom-logo-link:focus{ + box-shadow:none; +} +.wp-block-site-logo .custom-logo-link.is-transient img{ + opacity:.3; +} +.wp-block-site-logo img{ + display:block; + height:auto; + max-width:100%; +} + +.wp-block-site-logo.wp-block-site-logo.is-default-size .components-placeholder{ + height:60px; + width:60px; +} +.wp-block-site-logo.wp-block-site-logo .components-resizable-box__container,.wp-block-site-logo.wp-block-site-logo>div{ + border-radius:inherit; +} +.wp-block-site-logo.wp-block-site-logo .components-placeholder{ + align-items:center; + border-radius:inherit; + display:flex; + height:100%; + justify-content:center; + min-height:48px; + min-width:48px; + padding:0; + width:100%; +} +.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-drop-zone__content-text,.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-form-file-upload{ + display:none; +} +.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-button.components-button{ + align-items:center; + background:var(--wp-admin-theme-color); + border-color:var(--wp-admin-theme-color); + border-radius:50%; + border-style:solid; + color:#fff; + display:flex; + height:48px; + justify-content:center; + padding:0; + position:relative; + width:48px; +} +.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-button.components-button>svg{ + color:inherit; +} + +.block-library-site-logo__inspector-upload-container{ + position:relative; +} +.block-library-site-logo__inspector-upload-container .components-drop-zone__content-icon{ + display:none; +} + +.block-library-site-logo__inspector-media-replace-container button.components-button,.block-library-site-logo__inspector-upload-container button.components-button{ + box-shadow:inset 0 0 0 1px #ccc; + color:#1e1e1e; + display:block; + height:40px; + width:100%; +} +.block-library-site-logo__inspector-media-replace-container button.components-button:hover,.block-library-site-logo__inspector-upload-container button.components-button:hover{ + color:var(--wp-admin-theme-color); +} +.block-library-site-logo__inspector-media-replace-container button.components-button:focus,.block-library-site-logo__inspector-upload-container button.components-button:focus{ + box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color); +} +.block-library-site-logo__inspector-media-replace-container .block-library-site-logo__inspector-media-replace-title,.block-library-site-logo__inspector-upload-container .block-library-site-logo__inspector-media-replace-title{ + text-align:start; + text-align-last:center; + white-space:normal; + word-break:break-all; +} + +.block-library-site-logo__inspector-media-replace-container .components-dropdown{ + display:block; +} +.block-library-site-logo__inspector-media-replace-container img{ + aspect-ratio:1; + border-radius:50% !important; + box-shadow:inset 0 0 0 1px rgba(0,0,0,.2); + min-width:20px; + width:20px; +} +.block-library-site-logo__inspector-media-replace-container .block-library-site-logo__inspector-readonly-logo-preview{ + display:flex; + height:40px; + padding:6px 12px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/site-logo/editor-rtl.min.css b/wp-includes/blocks/site-logo/editor-rtl.min.css new file mode 100644 index 0000000..4d7d777 --- /dev/null +++ b/wp-includes/blocks/site-logo/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-site-logo.aligncenter>div,.wp-block[data-align=center]>.wp-block-site-logo{display:table;margin-left:auto;margin-right:auto}.wp-block-site-logo a{pointer-events:none}.wp-block-site-logo .custom-logo-link{cursor:inherit}.wp-block-site-logo .custom-logo-link:focus{box-shadow:none}.wp-block-site-logo .custom-logo-link.is-transient img{opacity:.3}.wp-block-site-logo img{display:block;height:auto;max-width:100%}.wp-block-site-logo.wp-block-site-logo.is-default-size .components-placeholder{height:60px;width:60px}.wp-block-site-logo.wp-block-site-logo .components-resizable-box__container,.wp-block-site-logo.wp-block-site-logo>div{border-radius:inherit}.wp-block-site-logo.wp-block-site-logo .components-placeholder{align-items:center;border-radius:inherit;display:flex;height:100%;justify-content:center;min-height:48px;min-width:48px;padding:0;width:100%}.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-drop-zone__content-text,.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-form-file-upload{display:none}.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-button.components-button{align-items:center;background:var(--wp-admin-theme-color);border-color:var(--wp-admin-theme-color);border-radius:50%;border-style:solid;color:#fff;display:flex;height:48px;justify-content:center;padding:0;position:relative;width:48px}.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-button.components-button>svg{color:inherit}.block-library-site-logo__inspector-upload-container{position:relative}.block-library-site-logo__inspector-upload-container .components-drop-zone__content-icon{display:none}.block-library-site-logo__inspector-media-replace-container button.components-button,.block-library-site-logo__inspector-upload-container button.components-button{box-shadow:inset 0 0 0 1px #ccc;color:#1e1e1e;display:block;height:40px;width:100%}.block-library-site-logo__inspector-media-replace-container button.components-button:hover,.block-library-site-logo__inspector-upload-container button.components-button:hover{color:var(--wp-admin-theme-color)}.block-library-site-logo__inspector-media-replace-container button.components-button:focus,.block-library-site-logo__inspector-upload-container button.components-button:focus{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color)}.block-library-site-logo__inspector-media-replace-container .block-library-site-logo__inspector-media-replace-title,.block-library-site-logo__inspector-upload-container .block-library-site-logo__inspector-media-replace-title{text-align:start;text-align-last:center;white-space:normal;word-break:break-all}.block-library-site-logo__inspector-media-replace-container .components-dropdown{display:block}.block-library-site-logo__inspector-media-replace-container img{aspect-ratio:1;border-radius:50%!important;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2);min-width:20px;width:20px}.block-library-site-logo__inspector-media-replace-container .block-library-site-logo__inspector-readonly-logo-preview{display:flex;height:40px;padding:6px 12px}
\ No newline at end of file diff --git a/wp-includes/blocks/site-logo/editor.css b/wp-includes/blocks/site-logo/editor.css new file mode 100644 index 0000000..78cb454 --- /dev/null +++ b/wp-includes/blocks/site-logo/editor.css @@ -0,0 +1,105 @@ +.wp-block-site-logo.aligncenter>div,.wp-block[data-align=center]>.wp-block-site-logo{ + display:table; + margin-left:auto; + margin-right:auto; +} + +.wp-block-site-logo a{ + pointer-events:none; +} +.wp-block-site-logo .custom-logo-link{ + cursor:inherit; +} +.wp-block-site-logo .custom-logo-link:focus{ + box-shadow:none; +} +.wp-block-site-logo .custom-logo-link.is-transient img{ + opacity:.3; +} +.wp-block-site-logo img{ + display:block; + height:auto; + max-width:100%; +} + +.wp-block-site-logo.wp-block-site-logo.is-default-size .components-placeholder{ + height:60px; + width:60px; +} +.wp-block-site-logo.wp-block-site-logo .components-resizable-box__container,.wp-block-site-logo.wp-block-site-logo>div{ + border-radius:inherit; +} +.wp-block-site-logo.wp-block-site-logo .components-placeholder{ + align-items:center; + border-radius:inherit; + display:flex; + height:100%; + justify-content:center; + min-height:48px; + min-width:48px; + padding:0; + width:100%; +} +.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-drop-zone__content-text,.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-form-file-upload{ + display:none; +} +.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-button.components-button{ + align-items:center; + background:var(--wp-admin-theme-color); + border-color:var(--wp-admin-theme-color); + border-radius:50%; + border-style:solid; + color:#fff; + display:flex; + height:48px; + justify-content:center; + padding:0; + position:relative; + width:48px; +} +.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-button.components-button>svg{ + color:inherit; +} + +.block-library-site-logo__inspector-upload-container{ + position:relative; +} +.block-library-site-logo__inspector-upload-container .components-drop-zone__content-icon{ + display:none; +} + +.block-library-site-logo__inspector-media-replace-container button.components-button,.block-library-site-logo__inspector-upload-container button.components-button{ + box-shadow:inset 0 0 0 1px #ccc; + color:#1e1e1e; + display:block; + height:40px; + width:100%; +} +.block-library-site-logo__inspector-media-replace-container button.components-button:hover,.block-library-site-logo__inspector-upload-container button.components-button:hover{ + color:var(--wp-admin-theme-color); +} +.block-library-site-logo__inspector-media-replace-container button.components-button:focus,.block-library-site-logo__inspector-upload-container button.components-button:focus{ + box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color); +} +.block-library-site-logo__inspector-media-replace-container .block-library-site-logo__inspector-media-replace-title,.block-library-site-logo__inspector-upload-container .block-library-site-logo__inspector-media-replace-title{ + text-align:start; + text-align-last:center; + white-space:normal; + word-break:break-all; +} + +.block-library-site-logo__inspector-media-replace-container .components-dropdown{ + display:block; +} +.block-library-site-logo__inspector-media-replace-container img{ + aspect-ratio:1; + border-radius:50% !important; + box-shadow:inset 0 0 0 1px rgba(0,0,0,.2); + min-width:20px; + width:20px; +} +.block-library-site-logo__inspector-media-replace-container .block-library-site-logo__inspector-readonly-logo-preview{ + display:flex; + height:40px; + padding:6px 12px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/site-logo/editor.min.css b/wp-includes/blocks/site-logo/editor.min.css new file mode 100644 index 0000000..4d7d777 --- /dev/null +++ b/wp-includes/blocks/site-logo/editor.min.css @@ -0,0 +1 @@ +.wp-block-site-logo.aligncenter>div,.wp-block[data-align=center]>.wp-block-site-logo{display:table;margin-left:auto;margin-right:auto}.wp-block-site-logo a{pointer-events:none}.wp-block-site-logo .custom-logo-link{cursor:inherit}.wp-block-site-logo .custom-logo-link:focus{box-shadow:none}.wp-block-site-logo .custom-logo-link.is-transient img{opacity:.3}.wp-block-site-logo img{display:block;height:auto;max-width:100%}.wp-block-site-logo.wp-block-site-logo.is-default-size .components-placeholder{height:60px;width:60px}.wp-block-site-logo.wp-block-site-logo .components-resizable-box__container,.wp-block-site-logo.wp-block-site-logo>div{border-radius:inherit}.wp-block-site-logo.wp-block-site-logo .components-placeholder{align-items:center;border-radius:inherit;display:flex;height:100%;justify-content:center;min-height:48px;min-width:48px;padding:0;width:100%}.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-drop-zone__content-text,.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-form-file-upload{display:none}.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-button.components-button{align-items:center;background:var(--wp-admin-theme-color);border-color:var(--wp-admin-theme-color);border-radius:50%;border-style:solid;color:#fff;display:flex;height:48px;justify-content:center;padding:0;position:relative;width:48px}.wp-block-site-logo.wp-block-site-logo .components-placeholder .components-button.components-button>svg{color:inherit}.block-library-site-logo__inspector-upload-container{position:relative}.block-library-site-logo__inspector-upload-container .components-drop-zone__content-icon{display:none}.block-library-site-logo__inspector-media-replace-container button.components-button,.block-library-site-logo__inspector-upload-container button.components-button{box-shadow:inset 0 0 0 1px #ccc;color:#1e1e1e;display:block;height:40px;width:100%}.block-library-site-logo__inspector-media-replace-container button.components-button:hover,.block-library-site-logo__inspector-upload-container button.components-button:hover{color:var(--wp-admin-theme-color)}.block-library-site-logo__inspector-media-replace-container button.components-button:focus,.block-library-site-logo__inspector-upload-container button.components-button:focus{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color)}.block-library-site-logo__inspector-media-replace-container .block-library-site-logo__inspector-media-replace-title,.block-library-site-logo__inspector-upload-container .block-library-site-logo__inspector-media-replace-title{text-align:start;text-align-last:center;white-space:normal;word-break:break-all}.block-library-site-logo__inspector-media-replace-container .components-dropdown{display:block}.block-library-site-logo__inspector-media-replace-container img{aspect-ratio:1;border-radius:50%!important;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2);min-width:20px;width:20px}.block-library-site-logo__inspector-media-replace-container .block-library-site-logo__inspector-readonly-logo-preview{display:flex;height:40px;padding:6px 12px}
\ No newline at end of file diff --git a/wp-includes/blocks/site-logo/style-rtl.css b/wp-includes/blocks/site-logo/style-rtl.css new file mode 100644 index 0000000..560a5cd --- /dev/null +++ b/wp-includes/blocks/site-logo/style-rtl.css @@ -0,0 +1,27 @@ +.wp-block-site-logo{ + box-sizing:border-box; + line-height:0; +} +.wp-block-site-logo a{ + display:inline-block; + line-height:0; +} +.wp-block-site-logo.is-default-size img{ + height:auto; + width:120px; +} +.wp-block-site-logo img{ + height:auto; + max-width:100%; +} +.wp-block-site-logo a,.wp-block-site-logo img{ + border-radius:inherit; +} +.wp-block-site-logo.aligncenter{ + margin-left:auto; + margin-right:auto; + text-align:center; +} +.wp-block-site-logo.is-style-rounded{ + border-radius:9999px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/site-logo/style-rtl.min.css b/wp-includes/blocks/site-logo/style-rtl.min.css new file mode 100644 index 0000000..1339639 --- /dev/null +++ b/wp-includes/blocks/site-logo/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-site-logo{box-sizing:border-box;line-height:0}.wp-block-site-logo a{display:inline-block;line-height:0}.wp-block-site-logo.is-default-size img{height:auto;width:120px}.wp-block-site-logo img{height:auto;max-width:100%}.wp-block-site-logo a,.wp-block-site-logo img{border-radius:inherit}.wp-block-site-logo.aligncenter{margin-left:auto;margin-right:auto;text-align:center}.wp-block-site-logo.is-style-rounded{border-radius:9999px}
\ No newline at end of file diff --git a/wp-includes/blocks/site-logo/style.css b/wp-includes/blocks/site-logo/style.css new file mode 100644 index 0000000..560a5cd --- /dev/null +++ b/wp-includes/blocks/site-logo/style.css @@ -0,0 +1,27 @@ +.wp-block-site-logo{ + box-sizing:border-box; + line-height:0; +} +.wp-block-site-logo a{ + display:inline-block; + line-height:0; +} +.wp-block-site-logo.is-default-size img{ + height:auto; + width:120px; +} +.wp-block-site-logo img{ + height:auto; + max-width:100%; +} +.wp-block-site-logo a,.wp-block-site-logo img{ + border-radius:inherit; +} +.wp-block-site-logo.aligncenter{ + margin-left:auto; + margin-right:auto; + text-align:center; +} +.wp-block-site-logo.is-style-rounded{ + border-radius:9999px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/site-logo/style.min.css b/wp-includes/blocks/site-logo/style.min.css new file mode 100644 index 0000000..1339639 --- /dev/null +++ b/wp-includes/blocks/site-logo/style.min.css @@ -0,0 +1 @@ +.wp-block-site-logo{box-sizing:border-box;line-height:0}.wp-block-site-logo a{display:inline-block;line-height:0}.wp-block-site-logo.is-default-size img{height:auto;width:120px}.wp-block-site-logo img{height:auto;max-width:100%}.wp-block-site-logo a,.wp-block-site-logo img{border-radius:inherit}.wp-block-site-logo.aligncenter{margin-left:auto;margin-right:auto;text-align:center}.wp-block-site-logo.is-style-rounded{border-radius:9999px}
\ No newline at end of file diff --git a/wp-includes/blocks/site-tagline.php b/wp-includes/blocks/site-tagline.php new file mode 100644 index 0000000..75375e5 --- /dev/null +++ b/wp-includes/blocks/site-tagline.php @@ -0,0 +1,41 @@ +<?php +/** + * Server-side rendering of the `core/site-tagline` block. + * + * @package WordPress + */ + +/** + * Renders the `core/site-tagline` block on the server. + * + * @param array $attributes The block attributes. + * + * @return string The render. + */ +function render_block_core_site_tagline( $attributes ) { + $site_tagline = get_bloginfo( 'description' ); + if ( ! $site_tagline ) { + return; + } + $align_class_name = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}"; + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) ); + + return sprintf( + '<p %1$s>%2$s</p>', + $wrapper_attributes, + $site_tagline + ); +} + +/** + * Registers the `core/site-tagline` block on the server. + */ +function register_block_core_site_tagline() { + register_block_type_from_metadata( + __DIR__ . '/site-tagline', + array( + 'render_callback' => 'render_block_core_site_tagline', + ) + ); +} +add_action( 'init', 'register_block_core_site_tagline' ); diff --git a/wp-includes/blocks/site-tagline/block.json b/wp-includes/blocks/site-tagline/block.json new file mode 100644 index 0000000..22fb59a --- /dev/null +++ b/wp-includes/blocks/site-tagline/block.json @@ -0,0 +1,49 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/site-tagline", + "title": "Site Tagline", + "category": "theme", + "description": "Describe in a few words what the site is about. The tagline can be used in search results or when sharing on social networks even if it’s not displayed in the theme design.", + "keywords": [ "description" ], + "textdomain": "default", + "attributes": { + "textAlign": { + "type": "string" + } + }, + "example": {}, + "supports": { + "align": [ "wide", "full" ], + "html": false, + "color": { + "gradients": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalFontStyle": true, + "__experimentalFontWeight": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + }, + "editorStyle": "wp-block-site-tagline-editor" +} diff --git a/wp-includes/blocks/site-tagline/editor-rtl.css b/wp-includes/blocks/site-tagline/editor-rtl.css new file mode 100644 index 0000000..b96a395 --- /dev/null +++ b/wp-includes/blocks/site-tagline/editor-rtl.css @@ -0,0 +1,4 @@ +.wp-block-site-tagline__placeholder{ + border:1px dashed; + padding:1em 0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/site-tagline/editor-rtl.min.css b/wp-includes/blocks/site-tagline/editor-rtl.min.css new file mode 100644 index 0000000..71eb738 --- /dev/null +++ b/wp-includes/blocks/site-tagline/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-site-tagline__placeholder{border:1px dashed;padding:1em 0}
\ No newline at end of file diff --git a/wp-includes/blocks/site-tagline/editor.css b/wp-includes/blocks/site-tagline/editor.css new file mode 100644 index 0000000..b96a395 --- /dev/null +++ b/wp-includes/blocks/site-tagline/editor.css @@ -0,0 +1,4 @@ +.wp-block-site-tagline__placeholder{ + border:1px dashed; + padding:1em 0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/site-tagline/editor.min.css b/wp-includes/blocks/site-tagline/editor.min.css new file mode 100644 index 0000000..71eb738 --- /dev/null +++ b/wp-includes/blocks/site-tagline/editor.min.css @@ -0,0 +1 @@ +.wp-block-site-tagline__placeholder{border:1px dashed;padding:1em 0}
\ No newline at end of file diff --git a/wp-includes/blocks/site-title.php b/wp-includes/blocks/site-title.php new file mode 100644 index 0000000..255615b --- /dev/null +++ b/wp-includes/blocks/site-title.php @@ -0,0 +1,65 @@ +<?php +/** + * Server-side rendering of the `core/site-title` block. + * + * @package WordPress + */ + +/** + * Renders the `core/site-title` block on the server. + * + * @param array $attributes The block attributes. + * + * @return string The render. + */ +function render_block_core_site_title( $attributes ) { + $site_title = get_bloginfo( 'name' ); + if ( ! $site_title ) { + return; + } + + $tag_name = 'h1'; + $classes = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}"; + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes .= ' has-link-color'; + } + + if ( isset( $attributes['level'] ) ) { + $tag_name = 0 === $attributes['level'] ? 'p' : 'h' . (int) $attributes['level']; + } + + if ( $attributes['isLink'] ) { + $aria_current = is_home() || ( is_front_page() && 'page' === get_option( 'show_on_front' ) ) ? ' aria-current="page"' : ''; + $link_target = ! empty( $attributes['linkTarget'] ) ? $attributes['linkTarget'] : '_self'; + + $site_title = sprintf( + '<a href="%1$s" target="%2$s" rel="home"%3$s>%4$s</a>', + esc_url( home_url() ), + esc_attr( $link_target ), + $aria_current, + esc_html( $site_title ) + ); + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => trim( $classes ) ) ); + + return sprintf( + '<%1$s %2$s>%3$s</%1$s>', + $tag_name, + $wrapper_attributes, + // already pre-escaped if it is a link. + $attributes['isLink'] ? $site_title : esc_html( $site_title ) + ); +} + +/** + * Registers the `core/site-title` block on the server. + */ +function register_block_core_site_title() { + register_block_type_from_metadata( + __DIR__ . '/site-title', + array( + 'render_callback' => 'render_block_core_site_title', + ) + ); +} +add_action( 'init', 'register_block_core_site_title' ); diff --git a/wp-includes/blocks/site-title/block.json b/wp-includes/blocks/site-title/block.json new file mode 100644 index 0000000..e936bad --- /dev/null +++ b/wp-includes/blocks/site-title/block.json @@ -0,0 +1,69 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/site-title", + "title": "Site Title", + "category": "theme", + "description": "Displays the name of this site. Update the block, and the changes apply everywhere it’s used. This will also appear in the browser title bar and in search results.", + "textdomain": "default", + "attributes": { + "level": { + "type": "number", + "default": 1 + }, + "textAlign": { + "type": "string" + }, + "isLink": { + "type": "boolean", + "default": true + }, + "linkTarget": { + "type": "string", + "default": "_self" + } + }, + "example": { + "viewportWidth": 500 + }, + "supports": { + "align": [ "wide", "full" ], + "html": false, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true, + "link": true + } + }, + "spacing": { + "padding": true, + "margin": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalFontStyle": true, + "__experimentalFontWeight": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true, + "lineHeight": true, + "fontAppearance": true, + "letterSpacing": true, + "textTransform": true + } + } + }, + "editorStyle": "wp-block-site-title-editor", + "style": "wp-block-site-title" +} diff --git a/wp-includes/blocks/site-title/editor-rtl.css b/wp-includes/blocks/site-title/editor-rtl.css new file mode 100644 index 0000000..173e08f --- /dev/null +++ b/wp-includes/blocks/site-title/editor-rtl.css @@ -0,0 +1,8 @@ +.wp-block-site-title__placeholder{ + border:1px dashed; + padding:1em 0; +} + +.editor-styles-wrapper .wp-block-site-title a{ + color:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/site-title/editor-rtl.min.css b/wp-includes/blocks/site-title/editor-rtl.min.css new file mode 100644 index 0000000..84aabb4 --- /dev/null +++ b/wp-includes/blocks/site-title/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-site-title__placeholder{border:1px dashed;padding:1em 0}.editor-styles-wrapper .wp-block-site-title a{color:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/site-title/editor.css b/wp-includes/blocks/site-title/editor.css new file mode 100644 index 0000000..173e08f --- /dev/null +++ b/wp-includes/blocks/site-title/editor.css @@ -0,0 +1,8 @@ +.wp-block-site-title__placeholder{ + border:1px dashed; + padding:1em 0; +} + +.editor-styles-wrapper .wp-block-site-title a{ + color:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/site-title/editor.min.css b/wp-includes/blocks/site-title/editor.min.css new file mode 100644 index 0000000..84aabb4 --- /dev/null +++ b/wp-includes/blocks/site-title/editor.min.css @@ -0,0 +1 @@ +.wp-block-site-title__placeholder{border:1px dashed;padding:1em 0}.editor-styles-wrapper .wp-block-site-title a{color:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/site-title/style-rtl.css b/wp-includes/blocks/site-title/style-rtl.css new file mode 100644 index 0000000..eacca37 --- /dev/null +++ b/wp-includes/blocks/site-title/style-rtl.css @@ -0,0 +1,3 @@ +.wp-block-site-title a{ + color:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/site-title/style-rtl.min.css b/wp-includes/blocks/site-title/style-rtl.min.css new file mode 100644 index 0000000..1f01948 --- /dev/null +++ b/wp-includes/blocks/site-title/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-site-title a{color:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/site-title/style.css b/wp-includes/blocks/site-title/style.css new file mode 100644 index 0000000..eacca37 --- /dev/null +++ b/wp-includes/blocks/site-title/style.css @@ -0,0 +1,3 @@ +.wp-block-site-title a{ + color:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/site-title/style.min.css b/wp-includes/blocks/site-title/style.min.css new file mode 100644 index 0000000..1f01948 --- /dev/null +++ b/wp-includes/blocks/site-title/style.min.css @@ -0,0 +1 @@ +.wp-block-site-title a{color:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/social-link.php b/wp-includes/blocks/social-link.php new file mode 100644 index 0000000..cda8e12 --- /dev/null +++ b/wp-includes/blocks/social-link.php @@ -0,0 +1,368 @@ +<?php +/** + * Server-side rendering of the `core/social-link` blocks. + * + * @package WordPress + */ + +/** + * Renders the `core/social-link` block on server. + * + * @param Array $attributes The block attributes. + * @param String $content InnerBlocks content of the Block. + * @param WP_Block $block Block object. + * + * @return string Rendered HTML of the referenced block. + */ +function render_block_core_social_link( $attributes, $content, $block ) { + $open_in_new_tab = isset( $block->context['openInNewTab'] ) ? $block->context['openInNewTab'] : false; + + $service = ( isset( $attributes['service'] ) ) ? $attributes['service'] : 'Icon'; + $url = ( isset( $attributes['url'] ) ) ? $attributes['url'] : false; + $label = ( isset( $attributes['label'] ) ) ? $attributes['label'] : block_core_social_link_get_name( $service ); + $rel = ( isset( $attributes['rel'] ) ) ? $attributes['rel'] : ''; + $show_labels = array_key_exists( 'showLabels', $block->context ) ? $block->context['showLabels'] : false; + + // Don't render a link if there is no URL set. + if ( ! $url ) { + return ''; + } + + /** + * Prepend emails with `mailto:` if not set. + * The `is_email` returns false for emails with schema. + */ + if ( is_email( $url ) ) { + $url = 'mailto:' . $url; + } + + /** + * Prepend URL with https:// if it doesn't appear to contain a scheme + * and it's not a relative link starting with //. + */ + if ( ! parse_url( $url, PHP_URL_SCHEME ) && ! str_starts_with( $url, '//' ) ) { + $url = 'https://' . $url; + } + + $icon = block_core_social_link_get_icon( $service ); + $wrapper_attributes = get_block_wrapper_attributes( + array( + 'class' => 'wp-social-link wp-social-link-' . $service . block_core_social_link_get_color_classes( $block->context ), + 'style' => block_core_social_link_get_color_styles( $block->context ), + ) + ); + + $link = '<li ' . $wrapper_attributes . '>'; + $link .= '<a href="' . esc_url( $url ) . '" class="wp-block-social-link-anchor">'; + $link .= $icon; + $link .= '<span class="wp-block-social-link-label' . ( $show_labels ? '' : ' screen-reader-text' ) . '">'; + $link .= esc_html( $label ); + $link .= '</span></a></li>'; + + $processor = new WP_HTML_Tag_Processor( $link ); + $processor->next_tag( 'a' ); + if ( $open_in_new_tab ) { + $processor->set_attribute( 'rel', esc_attr( $rel ) . ' noopener nofollow' ); + $processor->set_attribute( 'target', '_blank' ); + } elseif ( '' !== $rel ) { + $processor->set_attribute( 'rel', esc_attr( $rel ) ); + } + return $processor->get_updated_html(); +} + +/** + * Registers the `core/social-link` blocks. + */ +function register_block_core_social_link() { + register_block_type_from_metadata( + __DIR__ . '/social-link', + array( + 'render_callback' => 'render_block_core_social_link', + ) + ); +} +add_action( 'init', 'register_block_core_social_link' ); + + +/** + * Returns the SVG for social link. + * + * @param string $service The service icon. + * + * @return string SVG Element for service icon. + */ +function block_core_social_link_get_icon( $service ) { + $services = block_core_social_link_services(); + if ( isset( $services[ $service ] ) && isset( $services[ $service ]['icon'] ) ) { + return $services[ $service ]['icon']; + } + + return $services['share']['icon']; +} + +/** + * Returns the brand name for social link. + * + * @param string $service The service icon. + * + * @return string Brand label. + */ +function block_core_social_link_get_name( $service ) { + $services = block_core_social_link_services(); + if ( isset( $services[ $service ] ) && isset( $services[ $service ]['name'] ) ) { + return $services[ $service ]['name']; + } + + return $services['share']['name']; +} + +/** + * Returns the SVG for social link. + * + * @param string $service The service slug to extract data from. + * @param string $field The field ('name', 'icon', etc) to extract for a service. + * + * @return array|string + */ +function block_core_social_link_services( $service = '', $field = '' ) { + $services_data = array( + 'fivehundredpx' => array( + 'name' => '500px', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M6.94026,15.1412c.00437.01213.108.29862.168.44064a6.55008,6.55008,0,1,0,6.03191-9.09557,6.68654,6.68654,0,0,0-2.58357.51467A8.53914,8.53914,0,0,0,8.21268,8.61344L8.209,8.61725V3.22948l9.0504-.00008c.32934-.0036.32934-.46353.32934-.61466s0-.61091-.33035-.61467L7.47248,2a.43.43,0,0,0-.43131.42692v7.58355c0,.24466.30476.42131.58793.4819.553.11812.68074-.05864.81617-.2457l.018-.02481A10.52673,10.52673,0,0,1,9.32258,9.258a5.35268,5.35268,0,1,1,7.58985,7.54976,5.417,5.417,0,0,1-3.80867,1.56365,5.17483,5.17483,0,0,1-2.69822-.74478l.00342-4.61111a2.79372,2.79372,0,0,1,.71372-1.78792,2.61611,2.61611,0,0,1,1.98282-.89477,2.75683,2.75683,0,0,1,1.95525.79477,2.66867,2.66867,0,0,1,.79656,1.909,2.724,2.724,0,0,1-2.75849,2.748,4.94651,4.94651,0,0,1-.86254-.13719c-.31234-.093-.44519.34058-.48892.48349-.16811.54966.08453.65862.13687.67489a3.75751,3.75751,0,0,0,1.25234.18375,3.94634,3.94634,0,1,0-2.82444-6.742,3.67478,3.67478,0,0,0-1.13028,2.584l-.00041.02323c-.0035.11667-.00579,2.881-.00644,3.78811l-.00407-.00451a6.18521,6.18521,0,0,1-1.0851-1.86092c-.10544-.27856-.34358-.22925-.66857-.12917-.14192.04372-.57386.17677-.47833.489Zm4.65165-1.08338a.51346.51346,0,0,0,.19513.31818l.02276.022a.52945.52945,0,0,0,.3517.18416.24242.24242,0,0,0,.16577-.0611c.05473-.05082.67382-.67812.73287-.738l.69041.68819a.28978.28978,0,0,0,.21437.11032.53239.53239,0,0,0,.35708-.19486c.29792-.30419.14885-.46821.07676-.54751l-.69954-.69975.72952-.73469c.16-.17311.01874-.35708-.12218-.498-.20461-.20461-.402-.25742-.52855-.14083l-.7254.72665-.73354-.73375a.20128.20128,0,0,0-.14179-.05695.54135.54135,0,0,0-.34379.19648c-.22561.22555-.274.38149-.15656.5059l.73374.7315-.72942.73072A.26589.26589,0,0,0,11.59191,14.05782Zm1.59866-9.915A8.86081,8.86081,0,0,0,9.854,4.776a.26169.26169,0,0,0-.16938.22759.92978.92978,0,0,0,.08619.42094c.05682.14524.20779.531.50006.41955a8.40969,8.40969,0,0,1,2.91968-.55484,7.87875,7.87875,0,0,1,3.086.62286,8.61817,8.61817,0,0,1,2.30562,1.49315.2781.2781,0,0,0,.18318.07586c.15529,0,.30425-.15253.43167-.29551.21268-.23861.35873-.4369.1492-.63538a8.50425,8.50425,0,0,0-2.62312-1.694A9.0177,9.0177,0,0,0,13.19058,4.14283ZM19.50945,18.6236h0a.93171.93171,0,0,0-.36642-.25406.26589.26589,0,0,0-.27613.06613l-.06943.06929A7.90606,7.90606,0,0,1,7.60639,18.505a7.57284,7.57284,0,0,1-1.696-2.51537,8.58715,8.58715,0,0,1-.5147-1.77754l-.00871-.04864c-.04939-.25873-.28755-.27684-.62981-.22448-.14234.02178-.5755.088-.53426.39969l.001.00712a9.08807,9.08807,0,0,0,15.406,4.99094c.00193-.00192.04753-.04718.0725-.07436C19.79425,19.16234,19.87422,18.98728,19.50945,18.6236Z"></path></svg>', + ), + 'amazon' => array( + 'name' => 'Amazon', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.582,8.182C11.934,8.367,9.78,8.49,8.238,9.166c-1.781,0.769-3.03,2.337-3.03,4.644 c0,2.953,1.86,4.429,4.253,4.429c2.02,0,3.125-0.477,4.685-2.065c0.516,0.747,0.685,1.109,1.629,1.894 c0.212,0.114,0.483,0.103,0.672-0.066l0.006,0.006c0.567-0.505,1.599-1.401,2.18-1.888c0.231-0.188,0.19-0.496,0.009-0.754 c-0.52-0.718-1.072-1.303-1.072-2.634V8.305c0-1.876,0.133-3.599-1.249-4.891C15.23,2.369,13.422,2,12.04,2 C9.336,2,6.318,3.01,5.686,6.351C5.618,6.706,5.877,6.893,6.109,6.945l2.754,0.298C9.121,7.23,9.308,6.977,9.357,6.72 c0.236-1.151,1.2-1.706,2.284-1.706c0.584,0,1.249,0.215,1.595,0.738c0.398,0.584,0.346,1.384,0.346,2.061V8.182z M13.049,14.088 c-0.451,0.8-1.169,1.291-1.967,1.291c-1.09,0-1.728-0.83-1.728-2.061c0-2.42,2.171-2.86,4.227-2.86v0.615 C13.582,12.181,13.608,13.104,13.049,14.088z M20.683,19.339C18.329,21.076,14.917,22,11.979,22c-4.118,0-7.826-1.522-10.632-4.057 c-0.22-0.199-0.024-0.471,0.241-0.317c3.027,1.762,6.771,2.823,10.639,2.823c2.608,0,5.476-0.541,8.115-1.66 C20.739,18.62,21.072,19.051,20.683,19.339z M21.336,21.043c-0.194,0.163-0.379,0.076-0.293-0.139 c0.284-0.71,0.92-2.298,0.619-2.684c-0.301-0.386-1.99-0.183-2.749-0.092c-0.23,0.027-0.266-0.173-0.059-0.319 c1.348-0.946,3.555-0.673,3.811-0.356C22.925,17.773,22.599,19.986,21.336,21.043z"></path></svg>', + ), + 'bandcamp' => array( + 'name' => 'Bandcamp', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M15.27 17.289 3 17.289 8.73 6.711 21 6.711 15.27 17.289"></path></svg>', + ), + 'behance' => array( + 'name' => 'Behance', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M7.799,5.698c0.589,0,1.12,0.051,1.606,0.156c0.482,0.102,0.894,0.273,1.241,0.507c0.344,0.235,0.612,0.546,0.804,0.938 c0.188,0.387,0.281,0.871,0.281,1.443c0,0.619-0.141,1.137-0.421,1.551c-0.284,0.413-0.7,0.751-1.255,1.014 c0.756,0.218,1.317,0.601,1.689,1.146c0.374,0.549,0.557,1.205,0.557,1.975c0,0.623-0.12,1.161-0.359,1.612 c-0.241,0.457-0.569,0.828-0.973,1.114c-0.408,0.288-0.876,0.5-1.399,0.637C9.052,17.931,8.514,18,7.963,18H2V5.698H7.799 M7.449,10.668c0.481,0,0.878-0.114,1.192-0.345c0.311-0.228,0.463-0.603,0.463-1.119c0-0.286-0.051-0.523-0.152-0.707 C8.848,8.315,8.711,8.171,8.536,8.07C8.362,7.966,8.166,7.894,7.94,7.854c-0.224-0.044-0.457-0.06-0.697-0.06H4.709v2.874H7.449z M7.6,15.905c0.267,0,0.521-0.024,0.759-0.077c0.243-0.053,0.457-0.137,0.637-0.261c0.182-0.12,0.332-0.283,0.441-0.491 C9.547,14.87,9.6,14.602,9.6,14.278c0-0.633-0.18-1.084-0.533-1.357c-0.356-0.27-0.83-0.404-1.413-0.404H4.709v3.388L7.6,15.905z M16.162,15.864c0.367,0.358,0.897,0.538,1.583,0.538c0.493,0,0.92-0.125,1.277-0.374c0.354-0.248,0.571-0.514,0.654-0.79h2.155 c-0.347,1.072-0.872,1.838-1.589,2.299C19.534,18,18.67,18.23,17.662,18.23c-0.701,0-1.332-0.113-1.899-0.337 c-0.567-0.227-1.041-0.544-1.439-0.958c-0.389-0.415-0.689-0.907-0.904-1.484c-0.213-0.574-0.32-1.21-0.32-1.899 c0-0.666,0.11-1.288,0.329-1.863c0.222-0.577,0.529-1.075,0.933-1.492c0.406-0.42,0.885-0.751,1.444-0.994 c0.558-0.241,1.175-0.363,1.857-0.363c0.754,0,1.414,0.145,1.98,0.44c0.563,0.291,1.026,0.686,1.389,1.181 c0.363,0.493,0.622,1.057,0.783,1.69c0.16,0.632,0.217,1.292,0.171,1.983h-6.428C15.557,14.84,15.795,15.506,16.162,15.864 M18.973,11.184c-0.291-0.321-0.783-0.496-1.384-0.496c-0.39,0-0.714,0.066-0.973,0.2c-0.254,0.132-0.461,0.297-0.621,0.491 c-0.157,0.197-0.265,0.405-0.328,0.628c-0.063,0.217-0.101,0.413-0.111,0.587h3.98C19.478,11.969,19.265,11.509,18.973,11.184z M15.057,7.738h4.985V6.524h-4.985L15.057,7.738z"></path></svg>', + ), + 'chain' => array( + 'name' => 'Link', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M15.6,7.2H14v1.5h1.6c2,0,3.7,1.7,3.7,3.7s-1.7,3.7-3.7,3.7H14v1.5h1.6c2.8,0,5.2-2.3,5.2-5.2,0-2.9-2.3-5.2-5.2-5.2zM4.7,12.4c0-2,1.7-3.7,3.7-3.7H10V7.2H8.4c-2.9,0-5.2,2.3-5.2,5.2,0,2.9,2.3,5.2,5.2,5.2H10v-1.5H8.4c-2,0-3.7-1.7-3.7-3.7zm4.6.9h5.3v-1.5H9.3v1.5z"></path></svg>', + ), + 'codepen' => array( + 'name' => 'CodePen', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M22.016,8.84c-0.002-0.013-0.005-0.025-0.007-0.037c-0.005-0.025-0.008-0.048-0.015-0.072 c-0.003-0.015-0.01-0.028-0.013-0.042c-0.008-0.02-0.015-0.04-0.023-0.062c-0.007-0.015-0.013-0.028-0.02-0.042 c-0.008-0.02-0.018-0.037-0.03-0.057c-0.007-0.013-0.017-0.027-0.025-0.038c-0.012-0.018-0.023-0.035-0.035-0.052 c-0.01-0.013-0.02-0.025-0.03-0.037c-0.015-0.017-0.028-0.032-0.043-0.045c-0.01-0.012-0.022-0.023-0.035-0.035 c-0.015-0.015-0.032-0.028-0.048-0.04c-0.012-0.01-0.025-0.02-0.037-0.03c-0.005-0.003-0.01-0.008-0.015-0.012l-9.161-6.096 c-0.289-0.192-0.666-0.192-0.955,0L2.359,8.237C2.354,8.24,2.349,8.245,2.344,8.249L2.306,8.277 c-0.017,0.013-0.033,0.027-0.048,0.04C2.246,8.331,2.234,8.342,2.222,8.352c-0.015,0.015-0.028,0.03-0.042,0.047 c-0.012,0.013-0.022,0.023-0.03,0.037C2.139,8.453,2.125,8.471,2.115,8.488C2.107,8.501,2.099,8.514,2.09,8.526 C2.079,8.548,2.069,8.565,2.06,8.585C2.054,8.6,2.047,8.613,2.04,8.626C2.032,8.648,2.025,8.67,2.019,8.69 c-0.005,0.013-0.01,0.027-0.013,0.042C1.999,8.755,1.995,8.778,1.99,8.803C1.989,8.817,1.985,8.828,1.984,8.84 C1.978,8.879,1.975,8.915,1.975,8.954v6.093c0,0.037,0.003,0.075,0.008,0.112c0.002,0.012,0.005,0.025,0.007,0.038 c0.005,0.023,0.008,0.047,0.015,0.072c0.003,0.015,0.008,0.028,0.013,0.04c0.007,0.022,0.013,0.042,0.022,0.063 c0.007,0.015,0.013,0.028,0.02,0.04c0.008,0.02,0.018,0.038,0.03,0.058c0.007,0.013,0.015,0.027,0.025,0.038 c0.012,0.018,0.023,0.035,0.035,0.052c0.01,0.013,0.02,0.025,0.03,0.037c0.013,0.015,0.028,0.032,0.042,0.045 c0.012,0.012,0.023,0.023,0.035,0.035c0.015,0.013,0.032,0.028,0.048,0.04l0.038,0.03c0.005,0.003,0.01,0.007,0.013,0.01 l9.163,6.095C11.668,21.953,11.833,22,12,22c0.167,0,0.332-0.047,0.478-0.144l9.163-6.095l0.015-0.01 c0.013-0.01,0.027-0.02,0.037-0.03c0.018-0.013,0.035-0.028,0.048-0.04c0.013-0.012,0.025-0.023,0.035-0.035 c0.017-0.015,0.03-0.032,0.043-0.045c0.01-0.013,0.02-0.025,0.03-0.037c0.013-0.018,0.025-0.035,0.035-0.052 c0.008-0.013,0.018-0.027,0.025-0.038c0.012-0.02,0.022-0.038,0.03-0.058c0.007-0.013,0.013-0.027,0.02-0.04 c0.008-0.022,0.015-0.042,0.023-0.063c0.003-0.013,0.01-0.027,0.013-0.04c0.007-0.025,0.01-0.048,0.015-0.072 c0.002-0.013,0.005-0.027,0.007-0.037c0.003-0.042,0.007-0.079,0.007-0.117V8.954C22.025,8.915,22.022,8.879,22.016,8.84z M12.862,4.464l6.751,4.49l-3.016,2.013l-3.735-2.492V4.464z M11.138,4.464v4.009l-3.735,2.494L4.389,8.954L11.138,4.464z M3.699,10.562L5.853,12l-2.155,1.438V10.562z M11.138,19.536l-6.749-4.491l3.015-2.011l3.735,2.492V19.536z M12,14.035L8.953,12 L12,9.966L15.047,12L12,14.035z M12.862,19.536v-4.009l3.735-2.492l3.016,2.011L12.862,19.536z M20.303,13.438L18.147,12 l2.156-1.438L20.303,13.438z"></path></svg>', + ), + 'deviantart' => array( + 'name' => 'DeviantArt', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M 18.19 5.636 18.19 2 18.188 2 14.553 2 14.19 2.366 12.474 5.636 11.935 6 5.81 6 5.81 10.994 9.177 10.994 9.477 11.357 5.81 18.363 5.81 22 5.811 22 9.447 22 9.81 21.634 11.526 18.364 12.065 18 18.19 18 18.19 13.006 14.823 13.006 14.523 12.641 18.19 5.636z"></path></svg>', + ), + 'dribbble' => array( + 'name' => 'Dribbble', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,22C6.486,22,2,17.514,2,12S6.486,2,12,2c5.514,0,10,4.486,10,10S17.514,22,12,22z M20.434,13.369 c-0.292-0.092-2.644-0.794-5.32-0.365c1.117,3.07,1.572,5.57,1.659,6.09C18.689,17.798,20.053,15.745,20.434,13.369z M15.336,19.876c-0.127-0.749-0.623-3.361-1.822-6.477c-0.019,0.006-0.038,0.013-0.056,0.019c-4.818,1.679-6.547,5.02-6.701,5.334 c1.448,1.129,3.268,1.803,5.243,1.803C13.183,20.555,14.311,20.313,15.336,19.876z M5.654,17.724 c0.193-0.331,2.538-4.213,6.943-5.637c0.111-0.036,0.224-0.07,0.337-0.102c-0.214-0.485-0.448-0.971-0.692-1.45 c-4.266,1.277-8.405,1.223-8.778,1.216c-0.003,0.087-0.004,0.174-0.004,0.261C3.458,14.207,4.29,16.21,5.654,17.724z M3.639,10.264 c0.382,0.005,3.901,0.02,7.897-1.041c-1.415-2.516-2.942-4.631-3.167-4.94C5.979,5.41,4.193,7.613,3.639,10.264z M9.998,3.709 c0.236,0.316,1.787,2.429,3.187,5c3.037-1.138,4.323-2.867,4.477-3.085C16.154,4.286,14.17,3.471,12,3.471 C11.311,3.471,10.641,3.554,9.998,3.709z M18.612,6.612C18.432,6.855,17,8.69,13.842,9.979c0.199,0.407,0.389,0.821,0.567,1.237 c0.063,0.148,0.124,0.295,0.184,0.441c2.842-0.357,5.666,0.215,5.948,0.275C20.522,9.916,19.801,8.065,18.612,6.612z"></path></svg>', + ), + 'dropbox' => array( + 'name' => 'Dropbox', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,6.134L6.069,9.797L2,6.54l5.883-3.843L12,6.134z M2,13.054l5.883,3.843L12,13.459L6.069,9.797L2,13.054z M12,13.459 l4.116,3.439L22,13.054l-4.069-3.257L12,13.459z M22,6.54l-5.884-3.843L12,6.134l5.931,3.663L22,6.54z M12.011,14.2l-4.129,3.426 l-1.767-1.153v1.291l5.896,3.539l5.897-3.539v-1.291l-1.769,1.153L12.011,14.2z"></path></svg>', + ), + 'etsy' => array( + 'name' => 'Etsy', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M9.16033,4.038c0-.27174.02717-.43478.48913-.43478h6.22283c1.087,0,1.68478.92391,2.11957,2.663l.35326,1.38587h1.05978C19.59511,3.712,19.75815,2,19.75815,2s-2.663.29891-4.23913.29891h-7.962L3.29076,2.163v1.1413L4.731,3.57609c1.00543.19022,1.25.40761,1.33152,1.33152,0,0,.08152,2.71739.08152,7.20109s-.08152,7.17391-.08152,7.17391c0,.81522-.32609,1.11413-1.33152,1.30435l-1.44022.27174V22l4.2663-.13587h7.11957c1.60326,0,5.32609.13587,5.32609.13587.08152-.97826.625-5.40761.70652-5.89674H19.7038L18.644,18.52174c-.84239,1.90217-2.06522,2.038-3.42391,2.038H11.1712c-1.3587,0-2.01087-.54348-2.01087-1.712V12.65217s3.0163,0,3.99457.08152c.76087.05435,1.22283.27174,1.46739,1.33152l.32609,1.413h1.16848l-.08152-3.55978.163-3.587H15.02989l-.38043,1.57609c-.24457,1.03261-.40761,1.22283-1.46739,1.33152-1.38587.13587-4.02174.1087-4.02174.1087Z"></path></svg>', + ), + 'facebook' => array( + 'name' => 'Facebook', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg>', + ), + 'feed' => array( + 'name' => 'RSS Feed', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M2,8.667V12c5.515,0,10,4.485,10,10h3.333C15.333,14.637,9.363,8.667,2,8.667z M2,2v3.333 c9.19,0,16.667,7.477,16.667,16.667H22C22,10.955,13.045,2,2,2z M4.5,17C3.118,17,2,18.12,2,19.5S3.118,22,4.5,22S7,20.88,7,19.5 S5.882,17,4.5,17z"></path></svg>', + ), + 'flickr' => array( + 'name' => 'Flickr', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M6.5,7c-2.75,0-5,2.25-5,5s2.25,5,5,5s5-2.25,5-5S9.25,7,6.5,7z M17.5,7c-2.75,0-5,2.25-5,5s2.25,5,5,5s5-2.25,5-5 S20.25,7,17.5,7z"></path></svg>', + ), + 'foursquare' => array( + 'name' => 'Foursquare', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M17.573,2c0,0-9.197,0-10.668,0S5,3.107,5,3.805s0,16.948,0,16.948c0,0.785,0.422,1.077,0.66,1.172 c0.238,0.097,0.892,0.177,1.285-0.275c0,0,5.035-5.843,5.122-5.93c0.132-0.132,0.132-0.132,0.262-0.132h3.26 c1.368,0,1.588-0.977,1.732-1.552c0.078-0.318,0.692-3.428,1.225-6.122l0.675-3.368C19.56,2.893,19.14,2,17.573,2z M16.495,7.22 c-0.053,0.252-0.372,0.518-0.665,0.518c-0.293,0-4.157,0-4.157,0c-0.467,0-0.802,0.318-0.802,0.787v0.508 c0,0.467,0.337,0.798,0.805,0.798c0,0,3.197,0,3.528,0s0.655,0.362,0.583,0.715c-0.072,0.353-0.407,2.102-0.448,2.295 c-0.04,0.193-0.262,0.523-0.655,0.523c-0.33,0-2.88,0-2.88,0c-0.523,0-0.683,0.068-1.033,0.503 c-0.35,0.437-3.505,4.223-3.505,4.223c-0.032,0.035-0.063,0.027-0.063-0.015V4.852c0-0.298,0.26-0.648,0.648-0.648 c0,0,8.228,0,8.562,0c0.315,0,0.61,0.297,0.528,0.683L16.495,7.22z"></path></svg>', + ), + 'goodreads' => array( + 'name' => 'Goodreads', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M17.3,17.5c-0.2,0.8-0.5,1.4-1,1.9c-0.4,0.5-1,0.9-1.7,1.2C13.9,20.9,13.1,21,12,21c-0.6,0-1.3-0.1-1.9-0.2 c-0.6-0.1-1.1-0.4-1.6-0.7c-0.5-0.3-0.9-0.7-1.2-1.2c-0.3-0.5-0.5-1.1-0.5-1.7h1.5c0.1,0.5,0.2,0.9,0.5,1.2 c0.2,0.3,0.5,0.6,0.9,0.8c0.3,0.2,0.7,0.3,1.1,0.4c0.4,0.1,0.8,0.1,1.2,0.1c1.4,0,2.5-0.4,3.1-1.2c0.6-0.8,1-2,1-3.5v-1.7h0 c-0.4,0.8-0.9,1.4-1.6,1.9c-0.7,0.5-1.5,0.7-2.4,0.7c-1,0-1.9-0.2-2.6-0.5C8.7,15,8.1,14.5,7.7,14c-0.5-0.6-0.8-1.3-1-2.1 c-0.2-0.8-0.3-1.6-0.3-2.5c0-0.9,0.1-1.7,0.4-2.5c0.3-0.8,0.6-1.5,1.1-2c0.5-0.6,1.1-1,1.8-1.4C10.3,3.2,11.1,3,12,3 c0.5,0,0.9,0.1,1.3,0.2c0.4,0.1,0.8,0.3,1.1,0.5c0.3,0.2,0.6,0.5,0.9,0.8c0.3,0.3,0.5,0.6,0.6,1h0V3.4h1.5V15 C17.6,15.9,17.5,16.7,17.3,17.5z M13.8,14.1c0.5-0.3,0.9-0.7,1.3-1.1c0.3-0.5,0.6-1,0.8-1.6c0.2-0.6,0.3-1.2,0.3-1.9 c0-0.6-0.1-1.2-0.2-1.9c-0.1-0.6-0.4-1.2-0.7-1.7c-0.3-0.5-0.7-0.9-1.3-1.2c-0.5-0.3-1.1-0.5-1.9-0.5s-1.4,0.2-1.9,0.5 c-0.5,0.3-1,0.7-1.3,1.2C8.5,6.4,8.3,7,8.1,7.6C8,8.2,7.9,8.9,7.9,9.5c0,0.6,0.1,1.3,0.2,1.9C8.3,12,8.6,12.5,8.9,13 c0.3,0.5,0.8,0.8,1.3,1.1c0.5,0.3,1.1,0.4,1.9,0.4C12.7,14.5,13.3,14.4,13.8,14.1z"></path></svg>', + ), + 'google' => array( + 'name' => 'Google', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12.02,10.18v3.72v0.01h5.51c-0.26,1.57-1.67,4.22-5.5,4.22c-3.31,0-6.01-2.75-6.01-6.12s2.7-6.12,6.01-6.12 c1.87,0,3.13,0.8,3.85,1.48l2.84-2.76C16.99,2.99,14.73,2,12.03,2c-5.52,0-10,4.48-10,10s4.48,10,10,10c5.77,0,9.6-4.06,9.6-9.77 c0-0.83-0.11-1.42-0.25-2.05H12.02z"></path></svg>', + ), + 'github' => array( + 'name' => 'GitHub', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg>', + ), + 'instagram' => array( + 'name' => 'Instagram', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,4.622c2.403,0,2.688,0.009,3.637,0.052c0.877,0.04,1.354,0.187,1.671,0.31c0.42,0.163,0.72,0.358,1.035,0.673 c0.315,0.315,0.51,0.615,0.673,1.035c0.123,0.317,0.27,0.794,0.31,1.671c0.043,0.949,0.052,1.234,0.052,3.637 s-0.009,2.688-0.052,3.637c-0.04,0.877-0.187,1.354-0.31,1.671c-0.163,0.42-0.358,0.72-0.673,1.035 c-0.315,0.315-0.615,0.51-1.035,0.673c-0.317,0.123-0.794,0.27-1.671,0.31c-0.949,0.043-1.233,0.052-3.637,0.052 s-2.688-0.009-3.637-0.052c-0.877-0.04-1.354-0.187-1.671-0.31c-0.42-0.163-0.72-0.358-1.035-0.673 c-0.315-0.315-0.51-0.615-0.673-1.035c-0.123-0.317-0.27-0.794-0.31-1.671C4.631,14.688,4.622,14.403,4.622,12 s0.009-2.688,0.052-3.637c0.04-0.877,0.187-1.354,0.31-1.671c0.163-0.42,0.358-0.72,0.673-1.035 c0.315-0.315,0.615-0.51,1.035-0.673c0.317-0.123,0.794-0.27,1.671-0.31C9.312,4.631,9.597,4.622,12,4.622 M12,3 C9.556,3,9.249,3.01,8.289,3.054C7.331,3.098,6.677,3.25,6.105,3.472C5.513,3.702,5.011,4.01,4.511,4.511 c-0.5,0.5-0.808,1.002-1.038,1.594C3.25,6.677,3.098,7.331,3.054,8.289C3.01,9.249,3,9.556,3,12c0,2.444,0.01,2.751,0.054,3.711 c0.044,0.958,0.196,1.612,0.418,2.185c0.23,0.592,0.538,1.094,1.038,1.594c0.5,0.5,1.002,0.808,1.594,1.038 c0.572,0.222,1.227,0.375,2.185,0.418C9.249,20.99,9.556,21,12,21s2.751-0.01,3.711-0.054c0.958-0.044,1.612-0.196,2.185-0.418 c0.592-0.23,1.094-0.538,1.594-1.038c0.5-0.5,0.808-1.002,1.038-1.594c0.222-0.572,0.375-1.227,0.418-2.185 C20.99,14.751,21,14.444,21,12s-0.01-2.751-0.054-3.711c-0.044-0.958-0.196-1.612-0.418-2.185c-0.23-0.592-0.538-1.094-1.038-1.594 c-0.5-0.5-1.002-0.808-1.594-1.038c-0.572-0.222-1.227-0.375-2.185-0.418C14.751,3.01,14.444,3,12,3L12,3z M12,7.378 c-2.552,0-4.622,2.069-4.622,4.622S9.448,16.622,12,16.622s4.622-2.069,4.622-4.622S14.552,7.378,12,7.378z M12,15 c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3S13.657,15,12,15z M16.804,6.116c-0.596,0-1.08,0.484-1.08,1.08 s0.484,1.08,1.08,1.08c0.596,0,1.08-0.484,1.08-1.08S17.401,6.116,16.804,6.116z"></path></svg>', + ), + 'lastfm' => array( + 'name' => 'Last.fm', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M10.5002,0 C4.7006,0 0,4.70109753 0,10.4998496 C0,16.2989526 4.7006,21 10.5002,21 C16.299,21 21,16.2989526 21,10.4998496 C21,4.70109753 16.299,0 10.5002,0 Z M14.69735,14.7204413 C13.3164,14.7151781 12.4346,14.0870017 11.83445,12.6859357 L11.6816001,12.3451305 L10.35405,9.31011397 C9.92709997,8.26875064 8.85260001,7.57120012 7.68010001,7.57120012 C6.06945001,7.57120012 4.75925001,8.88509738 4.75925001,10.5009524 C4.75925001,12.1164565 6.06945001,13.4303036 7.68010001,13.4303036 C8.77200001,13.4303036 9.76514999,12.827541 10.2719501,11.8567047 C10.2893,11.8235214 10.3239,11.8019673 10.36305,11.8038219 C10.4007,11.8053759 10.43535,11.8287847 10.4504,11.8631709 L10.98655,13.1045863 C11.0016,13.1389726 10.9956,13.17782 10.97225,13.2068931 C10.1605001,14.1995341 8.96020001,14.7683115 7.68010001,14.7683115 C5.33305,14.7683115 3.42340001,12.8535563 3.42340001,10.5009524 C3.42340001,8.14679459 5.33300001,6.23203946 7.68010001,6.23203946 C9.45720002,6.23203946 10.8909,7.19074535 11.6138,8.86359341 C11.6205501,8.88018505 12.3412,10.5707777 12.97445,12.0190621 C13.34865,12.8739575 13.64615,13.3959676 14.6288,13.4291508 C15.5663001,13.4612814 16.25375,12.9121534 16.25375,12.1484869 C16.25375,11.4691321 15.8320501,11.3003585 14.8803,10.98216 C13.2365,10.4397989 12.34495,9.88605929 12.34495,8.51817658 C12.34495,7.1809207 13.26665,6.31615054 14.692,6.31615054 C15.62875,6.31615054 16.3155,6.7286858 16.79215,7.5768142 C16.80495,7.60062396 16.8079001,7.62814302 16.8004001,7.65420843 C16.7929,7.68027384 16.7748,7.70212868 16.7507001,7.713808 L15.86145,8.16900031 C15.8178001,8.19200805 15.7643,8.17807308 15.73565,8.13847371 C15.43295,7.71345711 15.0956,7.52513451 14.6423,7.52513451 C14.05125,7.52513451 13.6220001,7.92899802 13.6220001,8.48649708 C13.6220001,9.17382194 14.1529001,9.34144259 15.0339,9.61923972 C15.14915,9.65578139 15.26955,9.69397731 15.39385,9.73432853 C16.7763,10.1865133 17.57675,10.7311301 17.57675,12.1836251 C17.57685,13.629654 16.3389,14.7204413 14.69735,14.7204413 Z"></path></svg>', + ), + 'linkedin' => array( + 'name' => 'LinkedIn', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg>', + ), + 'mail' => array( + 'name' => 'Mail', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19,5H5c-1.1,0-2,.9-2,2v10c0,1.1.9,2,2,2h14c1.1,0,2-.9,2-2V7c0-1.1-.9-2-2-2zm.5,12c0,.3-.2.5-.5.5H5c-.3,0-.5-.2-.5-.5V9.8l7.5,5.6,7.5-5.6V17zm0-9.1L12,13.6,4.5,7.9V7c0-.3.2-.5.5-.5h14c.3,0,.5.2.5.5v.9z"></path></svg>', + ), + 'mastodon' => array( + 'name' => 'Mastodon', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M23.193 7.879c0-5.206-3.411-6.732-3.411-6.732C18.062.357 15.108.025 12.041 0h-.076c-3.068.025-6.02.357-7.74 1.147 0 0-3.411 1.526-3.411 6.732 0 1.192-.023 2.618.015 4.129.124 5.092.934 10.109 5.641 11.355 2.17.574 4.034.695 5.535.612 2.722-.15 4.25-.972 4.25-.972l-.09-1.975s-1.945.613-4.129.539c-2.165-.074-4.449-.233-4.799-2.891a5.499 5.499 0 0 1-.048-.745s2.125.52 4.817.643c1.646.075 3.19-.097 4.758-.283 3.007-.359 5.625-2.212 5.954-3.905.517-2.665.475-6.507.475-6.507zm-4.024 6.709h-2.497V8.469c0-1.29-.543-1.944-1.628-1.944-1.2 0-1.802.776-1.802 2.312v3.349h-2.483v-3.35c0-1.536-.602-2.312-1.802-2.312-1.085 0-1.628.655-1.628 1.944v6.119H4.832V8.284c0-1.289.328-2.313.987-3.07.68-.758 1.569-1.146 2.674-1.146 1.278 0 2.246.491 2.886 1.474L12 6.585l.622-1.043c.64-.983 1.608-1.474 2.886-1.474 1.104 0 1.994.388 2.674 1.146.658.757.986 1.781.986 3.07v6.304z"/></svg>', + ), + 'meetup' => array( + 'name' => 'Meetup', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.24775,14.722a3.57032,3.57032,0,0,1-2.94457,3.52073,3.61886,3.61886,0,0,1-.64652.05634c-.07314-.0008-.10187.02846-.12507.09547A2.38881,2.38881,0,0,1,13.49453,20.094a2.33092,2.33092,0,0,1-1.827-.50716.13635.13635,0,0,0-.19878-.00408,3.191,3.191,0,0,1-2.104.60248,3.26309,3.26309,0,0,1-3.00324-2.71993,2.19076,2.19076,0,0,1-.03512-.30865c-.00156-.08579-.03413-.1189-.11608-.13493a2.86421,2.86421,0,0,1-1.23189-.56111,2.945,2.945,0,0,1-1.166-2.05749,2.97484,2.97484,0,0,1,.87524-2.50774.112.112,0,0,0,.02091-.16107,2.7213,2.7213,0,0,1-.36648-1.48A2.81256,2.81256,0,0,1,6.57673,7.58838a.35764.35764,0,0,0,.28869-.22819,4.2208,4.2208,0,0,1,6.02892-1.90111.25161.25161,0,0,0,.22023.0243,3.65608,3.65608,0,0,1,3.76031.90678A3.57244,3.57244,0,0,1,17.95918,8.626a2.97339,2.97339,0,0,1,.01829.57356.10637.10637,0,0,0,.0853.12792,1.97669,1.97669,0,0,1,1.27939,1.33733,2.00266,2.00266,0,0,1-.57112,2.12652c-.05284.05166-.04168.08328-.01173.13489A3.51189,3.51189,0,0,1,19.24775,14.722Zm-6.35959-.27836a1.6984,1.6984,0,0,0,1.14556,1.61113,3.82039,3.82039,0,0,0,1.036.17935,1.46888,1.46888,0,0,0,.73509-.12255.44082.44082,0,0,0,.26057-.44274.45312.45312,0,0,0-.29211-.43375.97191.97191,0,0,0-.20678-.063c-.21326-.03806-.42754-.0701-.63973-.11215a.54787.54787,0,0,1-.50172-.60926,2.75864,2.75864,0,0,1,.1773-.901c.1763-.535.414-1.045.64183-1.55913A12.686,12.686,0,0,0,15.85,10.47863a1.58461,1.58461,0,0,0,.04861-.87208,1.04531,1.04531,0,0,0-.85432-.83981,1.60658,1.60658,0,0,0-1.23654.16594.27593.27593,0,0,1-.36286-.03413c-.085-.0747-.16594-.15379-.24918-.23055a.98682.98682,0,0,0-1.33577-.04933,6.1468,6.1468,0,0,1-.4989.41615.47762.47762,0,0,1-.51535.03566c-.17448-.09307-.35512-.175-.53531-.25665a1.74949,1.74949,0,0,0-.56476-.2016,1.69943,1.69943,0,0,0-1.61654.91787,8.05815,8.05815,0,0,0-.32952.80126c-.45471,1.2557-.82507,2.53825-1.20838,3.81639a1.24151,1.24151,0,0,0,.51532,1.44389,1.42659,1.42659,0,0,0,1.22008.17166,1.09728,1.09728,0,0,0,.66994-.69764c.44145-1.04111.839-2.09989,1.25981-3.14926.11581-.28876.22792-.57874.35078-.86438a.44548.44548,0,0,1,.69189-.19539.50521.50521,0,0,1,.15044.43836,1.75625,1.75625,0,0,1-.14731.50453c-.27379.69219-.55265,1.38236-.82766,2.074a2.0836,2.0836,0,0,0-.14038.42876.50719.50719,0,0,0,.27082.57722.87236.87236,0,0,0,.66145.02739.99137.99137,0,0,0,.53406-.532q.61571-1.20914,1.228-2.42031.28423-.55863.57585-1.1133a.87189.87189,0,0,1,.29055-.35253.34987.34987,0,0,1,.37634-.01265.30291.30291,0,0,1,.12434.31459.56716.56716,0,0,1-.04655.1915c-.05318.12739-.10286.25669-.16183.38156-.34118.71775-.68754,1.43273-1.02568,2.152A2.00213,2.00213,0,0,0,12.88816,14.44366Zm4.78568,5.28972a.88573.88573,0,0,0-1.77139.00465.8857.8857,0,0,0,1.77139-.00465Zm-14.83838-7.296a.84329.84329,0,1,0,.00827-1.68655.8433.8433,0,0,0-.00827,1.68655Zm10.366-9.43673a.83506.83506,0,1,0-.0091,1.67.83505.83505,0,0,0,.0091-1.67Zm6.85014,5.22a.71651.71651,0,0,0-1.433.0093.71656.71656,0,0,0,1.433-.0093ZM5.37528,6.17908A.63823.63823,0,1,0,6.015,5.54483.62292.62292,0,0,0,5.37528,6.17908Zm6.68214,14.80843a.54949.54949,0,1,0-.55052.541A.54556.54556,0,0,0,12.05742,20.98752Zm8.53235-8.49689a.54777.54777,0,0,0-.54027.54023.53327.53327,0,0,0,.532.52293.51548.51548,0,0,0,.53272-.5237A.53187.53187,0,0,0,20.58977,12.49063ZM7.82846,2.4715a.44927.44927,0,1,0,.44484.44766A.43821.43821,0,0,0,7.82846,2.4715Zm13.775,7.60492a.41186.41186,0,0,0-.40065.39623.40178.40178,0,0,0,.40168.40168A.38994.38994,0,0,0,22,10.48172.39946.39946,0,0,0,21.60349,10.07642ZM5.79193,17.96207a.40469.40469,0,0,0-.397-.39646.399.399,0,0,0-.396.405.39234.39234,0,0,0,.39939.389A.39857.39857,0,0,0,5.79193,17.96207Z"></path></svg>', + ), + 'medium' => array( + 'name' => 'Medium', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z"></path></svg>', + ), + 'patreon' => array( + 'name' => 'Patreon', + 'icon' => '<svg width="24" height="24" viewBox="0 0 569 546" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><circle cx="363" cy="205" r="205" /><rect width="100" height="546" x="0" y="0" /></svg>', + ), + 'pinterest' => array( + 'name' => 'Pinterest', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12.289,2C6.617,2,3.606,5.648,3.606,9.622c0,1.846,1.025,4.146,2.666,4.878c0.25,0.111,0.381,0.063,0.439-0.169 c0.044-0.175,0.267-1.029,0.365-1.428c0.032-0.128,0.017-0.237-0.091-0.362C6.445,11.911,6.01,10.75,6.01,9.668 c0-2.777,2.194-5.464,5.933-5.464c3.23,0,5.49,2.108,5.49,5.122c0,3.407-1.794,5.768-4.13,5.768c-1.291,0-2.257-1.021-1.948-2.277 c0.372-1.495,1.089-3.112,1.089-4.191c0-0.967-0.542-1.775-1.663-1.775c-1.319,0-2.379,1.309-2.379,3.059 c0,1.115,0.394,1.869,0.394,1.869s-1.302,5.279-1.54,6.261c-0.405,1.666,0.053,4.368,0.094,4.604 c0.021,0.126,0.167,0.169,0.25,0.063c0.129-0.165,1.699-2.419,2.142-4.051c0.158-0.59,0.817-2.995,0.817-2.995 c0.43,0.784,1.681,1.446,3.013,1.446c3.963,0,6.822-3.494,6.822-7.833C20.394,5.112,16.849,2,12.289,2"></path></svg>', + ), + 'pocket' => array( + 'name' => 'Pocket', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.927,4.194C21.667,3.48,20.982,3,20.222,3h-0.01h-1.721H3.839C3.092,3,2.411,3.47,2.145,4.17 C2.066,4.378,2.026,4.594,2.026,4.814v6.035l0.069,1.2c0.29,2.73,1.707,5.115,3.899,6.778c0.039,0.03,0.079,0.059,0.119,0.089 l0.025,0.018c1.175,0.859,2.491,1.441,3.91,1.727c0.655,0.132,1.325,0.2,1.991,0.2c0.615,0,1.232-0.057,1.839-0.17 c0.073-0.014,0.145-0.028,0.219-0.044c0.02-0.004,0.042-0.012,0.064-0.023c1.359-0.297,2.621-0.864,3.753-1.691l0.025-0.018 c0.04-0.029,0.08-0.058,0.119-0.089c2.192-1.664,3.609-4.049,3.898-6.778l0.069-1.2V4.814C22.026,4.605,22,4.398,21.927,4.194z M17.692,10.481l-4.704,4.512c-0.266,0.254-0.608,0.382-0.949,0.382c-0.342,0-0.684-0.128-0.949-0.382l-4.705-4.512 C5.838,9.957,5.82,9.089,6.344,8.542c0.524-0.547,1.392-0.565,1.939-0.04l3.756,3.601l3.755-3.601 c0.547-0.524,1.415-0.506,1.939,0.04C18.256,9.089,18.238,9.956,17.692,10.481z"></path></svg>', + ), + 'reddit' => array( + 'name' => 'Reddit', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M22 12.068a2.184 2.184 0 0 0-2.186-2.186c-.592 0-1.13.233-1.524.609-1.505-1.075-3.566-1.774-5.86-1.864l1.004-4.695 3.261.699A1.56 1.56 0 1 0 18.255 3c-.61-.001-1.147.357-1.398.877l-3.638-.77a.382.382 0 0 0-.287.053.348.348 0 0 0-.161.251l-1.112 5.233c-2.33.072-4.426.77-5.95 1.864a2.201 2.201 0 0 0-1.523-.61 2.184 2.184 0 0 0-.896 4.176c-.036.215-.053.43-.053.663 0 3.37 3.924 6.111 8.763 6.111s8.763-2.724 8.763-6.11c0-.216-.017-.449-.053-.664A2.207 2.207 0 0 0 22 12.068Zm-15.018 1.56a1.56 1.56 0 0 1 3.118 0c0 .86-.699 1.558-1.559 1.558-.86.018-1.559-.699-1.559-1.559Zm8.728 4.139c-1.076 1.075-3.119 1.147-3.71 1.147-.61 0-2.652-.09-3.71-1.147a.4.4 0 0 1 0-.573.4.4 0 0 1 .574 0c.68.68 2.114.914 3.136.914 1.022 0 2.473-.233 3.136-.914a.4.4 0 0 1 .574 0 .436.436 0 0 1 0 .573Zm-.287-2.563a1.56 1.56 0 0 1 0-3.118c.86 0 1.56.699 1.56 1.56 0 .841-.7 1.558-1.56 1.558Z"></path></svg>', + ), + 'share' => array( + 'name' => 'Share Icon', + 'icon' => '<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9 11.8l6.1-4.5c.1.4.4.7.9.7h2c.6 0 1-.4 1-1V5c0-.6-.4-1-1-1h-2c-.6 0-1 .4-1 1v.4l-6.4 4.8c-.2-.1-.4-.2-.6-.2H6c-.6 0-1 .4-1 1v2c0 .6.4 1 1 1h2c.2 0 .4-.1.6-.2l6.4 4.8v.4c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-2c0-.6-.4-1-1-1h-2c-.5 0-.8.3-.9.7L9 12.2v-.4z"/></svg>', + ), + 'skype' => array( + 'name' => 'Skype', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M10.113,2.699c0.033-0.006,0.067-0.013,0.1-0.02c0.033,0.017,0.066,0.033,0.098,0.051L10.113,2.699z M2.72,10.223 c-0.006,0.034-0.011,0.069-0.017,0.103c0.018,0.032,0.033,0.064,0.051,0.095L2.72,10.223z M21.275,13.771 c0.007-0.035,0.011-0.071,0.018-0.106c-0.018-0.031-0.033-0.064-0.052-0.095L21.275,13.771z M13.563,21.199 c0.032,0.019,0.065,0.035,0.096,0.053c0.036-0.006,0.071-0.011,0.105-0.017L13.563,21.199z M22,16.386 c0,1.494-0.581,2.898-1.637,3.953c-1.056,1.057-2.459,1.637-3.953,1.637c-0.967,0-1.914-0.251-2.75-0.725 c0.036-0.006,0.071-0.011,0.105-0.017l-0.202-0.035c0.032,0.019,0.065,0.035,0.096,0.053c-0.543,0.096-1.099,0.147-1.654,0.147 c-1.275,0-2.512-0.25-3.676-0.743c-1.125-0.474-2.135-1.156-3.002-2.023c-0.867-0.867-1.548-1.877-2.023-3.002 c-0.493-1.164-0.743-2.401-0.743-3.676c0-0.546,0.049-1.093,0.142-1.628c0.018,0.032,0.033,0.064,0.051,0.095L2.72,10.223 c-0.006,0.034-0.011,0.069-0.017,0.103C2.244,9.5,2,8.566,2,7.615c0-1.493,0.582-2.898,1.637-3.953 c1.056-1.056,2.46-1.638,3.953-1.638c0.915,0,1.818,0.228,2.622,0.655c-0.033,0.007-0.067,0.013-0.1,0.02l0.199,0.031 c-0.032-0.018-0.066-0.034-0.098-0.051c0.002,0,0.003-0.001,0.004-0.001c0.586-0.112,1.187-0.169,1.788-0.169 c1.275,0,2.512,0.249,3.676,0.742c1.124,0.476,2.135,1.156,3.002,2.024c0.868,0.867,1.548,1.877,2.024,3.002 c0.493,1.164,0.743,2.401,0.743,3.676c0,0.575-0.054,1.15-0.157,1.712c-0.018-0.031-0.033-0.064-0.052-0.095l0.034,0.201 c0.007-0.035,0.011-0.071,0.018-0.106C21.754,14.494,22,15.432,22,16.386z M16.817,14.138c0-1.331-0.613-2.743-3.033-3.282 l-2.209-0.49c-0.84-0.192-1.807-0.444-1.807-1.237c0-0.794,0.679-1.348,1.903-1.348c2.468,0,2.243,1.696,3.468,1.696 c0.645,0,1.209-0.379,1.209-1.031c0-1.521-2.435-2.663-4.5-2.663c-2.242,0-4.63,0.952-4.63,3.488c0,1.221,0.436,2.521,2.839,3.123 l2.984,0.745c0.903,0.223,1.129,0.731,1.129,1.189c0,0.762-0.758,1.507-2.129,1.507c-2.679,0-2.307-2.062-3.743-2.062 c-0.645,0-1.113,0.444-1.113,1.078c0,1.236,1.501,2.886,4.856,2.886C15.236,17.737,16.817,16.199,16.817,14.138z"></path></svg>', + ), + 'snapchat' => array( + 'name' => 'Snapchat', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12.065,2a5.526,5.526,0,0,1,3.132.892A5.854,5.854,0,0,1,17.326,5.4a5.821,5.821,0,0,1,.351,2.33q0,.612-.117,2.487a.809.809,0,0,0,.365.091,1.93,1.93,0,0,0,.664-.176,1.93,1.93,0,0,1,.664-.176,1.3,1.3,0,0,1,.729.234.7.7,0,0,1,.351.6.839.839,0,0,1-.41.7,2.732,2.732,0,0,1-.9.41,3.192,3.192,0,0,0-.9.378.728.728,0,0,0-.41.618,1.575,1.575,0,0,0,.156.56,6.9,6.9,0,0,0,1.334,1.953,5.6,5.6,0,0,0,1.881,1.315,5.875,5.875,0,0,0,1.042.3.42.42,0,0,1,.365.456q0,.911-2.852,1.341a1.379,1.379,0,0,0-.143.507,1.8,1.8,0,0,1-.182.605.451.451,0,0,1-.429.241,5.878,5.878,0,0,1-.807-.085,5.917,5.917,0,0,0-.833-.085,4.217,4.217,0,0,0-.807.065,2.42,2.42,0,0,0-.82.293,6.682,6.682,0,0,0-.755.5q-.351.267-.755.527a3.886,3.886,0,0,1-.989.436A4.471,4.471,0,0,1,11.831,22a4.307,4.307,0,0,1-1.256-.176,3.784,3.784,0,0,1-.976-.436q-.4-.26-.749-.527a6.682,6.682,0,0,0-.755-.5,2.422,2.422,0,0,0-.807-.293,4.432,4.432,0,0,0-.82-.065,5.089,5.089,0,0,0-.853.1,5,5,0,0,1-.762.1.474.474,0,0,1-.456-.241,1.819,1.819,0,0,1-.182-.618,1.411,1.411,0,0,0-.143-.521q-2.852-.429-2.852-1.341a.42.42,0,0,1,.365-.456,5.793,5.793,0,0,0,1.042-.3,5.524,5.524,0,0,0,1.881-1.315,6.789,6.789,0,0,0,1.334-1.953A1.575,1.575,0,0,0,6,12.9a.728.728,0,0,0-.41-.618,3.323,3.323,0,0,0-.9-.384,2.912,2.912,0,0,1-.9-.41.814.814,0,0,1-.41-.684.71.71,0,0,1,.338-.593,1.208,1.208,0,0,1,.716-.241,1.976,1.976,0,0,1,.625.169,2.008,2.008,0,0,0,.69.169.919.919,0,0,0,.416-.091q-.117-1.849-.117-2.474A5.861,5.861,0,0,1,6.385,5.4,5.516,5.516,0,0,1,8.625,2.819,7.075,7.075,0,0,1,12.062,2Z"></path></svg>', + ), + 'soundcloud' => array( + 'name' => 'Soundcloud', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M8.9,16.1L9,14L8.9,9.5c0-0.1,0-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1c-0.1,0-0.1,0-0.1,0.1c0,0-0.1,0.1-0.1,0.1L8.3,14l0.1,2.1 c0,0.1,0,0.1,0.1,0.1c0,0,0.1,0.1,0.1,0.1C8.8,16.3,8.9,16.3,8.9,16.1z M11.4,15.9l0.1-1.8L11.4,9c0-0.1,0-0.2-0.1-0.2 c0,0-0.1,0-0.1,0s-0.1,0-0.1,0c-0.1,0-0.1,0.1-0.1,0.2l0,0.1l-0.1,5c0,0,0,0.7,0.1,2v0c0,0.1,0,0.1,0.1,0.1c0.1,0.1,0.1,0.1,0.2,0.1 c0.1,0,0.1,0,0.2-0.1c0.1,0,0.1-0.1,0.1-0.2L11.4,15.9z M2.4,12.9L2.5,14l-0.2,1.1c0,0.1,0,0.1-0.1,0.1c0,0-0.1,0-0.1-0.1L2.1,14 l0.1-1.1C2.2,12.9,2.3,12.9,2.4,12.9C2.3,12.9,2.4,12.9,2.4,12.9z M3.1,12.2L3.3,14l-0.2,1.8c0,0.1,0,0.1-0.1,0.1 c-0.1,0-0.1,0-0.1-0.1L2.8,14L3,12.2C3,12.2,3,12.2,3.1,12.2C3.1,12.2,3.1,12.2,3.1,12.2z M3.9,11.9L4.1,14l-0.2,2.1 c0,0.1,0,0.1-0.1,0.1c-0.1,0-0.1,0-0.1-0.1L3.5,14l0.2-2.1c0-0.1,0-0.1,0.1-0.1C3.9,11.8,3.9,11.8,3.9,11.9z M4.7,11.9L4.9,14 l-0.2,2.1c0,0.1-0.1,0.1-0.1,0.1c-0.1,0-0.1,0-0.1-0.1L4.3,14l0.2-2.2c0-0.1,0-0.1,0.1-0.1C4.7,11.7,4.7,11.8,4.7,11.9z M5.6,12 l0.2,2l-0.2,2.1c0,0.1-0.1,0.1-0.1,0.1c0,0-0.1,0-0.1,0c0,0,0-0.1,0-0.1L5.1,14l0.2-2c0,0,0-0.1,0-0.1s0.1,0,0.1,0 C5.5,11.9,5.5,11.9,5.6,12L5.6,12z M6.4,10.7L6.6,14l-0.2,2.1c0,0,0,0.1,0,0.1c0,0-0.1,0-0.1,0c-0.1,0-0.1-0.1-0.2-0.2L5.9,14 l0.2-3.3c0-0.1,0.1-0.2,0.2-0.2c0,0,0.1,0,0.1,0C6.4,10.7,6.4,10.7,6.4,10.7z M7.2,10l0.2,4.1l-0.2,2.1c0,0,0,0.1,0,0.1 c0,0-0.1,0-0.1,0c-0.1,0-0.2-0.1-0.2-0.2l-0.1-2.1L6.8,10c0-0.1,0.1-0.2,0.2-0.2c0,0,0.1,0,0.1,0S7.2,9.9,7.2,10z M8,9.6L8.2,14 L8,16.1c0,0.1-0.1,0.2-0.2,0.2c-0.1,0-0.2-0.1-0.2-0.2L7.5,14l0.1-4.4c0-0.1,0-0.1,0.1-0.1c0,0,0.1-0.1,0.1-0.1c0.1,0,0.1,0,0.1,0.1 C8,9.6,8,9.6,8,9.6z M11.4,16.1L11.4,16.1L11.4,16.1z M9.7,9.6L9.8,14l-0.1,2.1c0,0.1,0,0.1-0.1,0.2s-0.1,0.1-0.2,0.1 c-0.1,0-0.1,0-0.1-0.1s-0.1-0.1-0.1-0.2L9.2,14l0.1-4.4c0-0.1,0-0.1,0.1-0.2s0.1-0.1,0.2-0.1c0.1,0,0.1,0,0.2,0.1S9.7,9.5,9.7,9.6 L9.7,9.6z M10.6,9.8l0.1,4.3l-0.1,2c0,0.1,0,0.1-0.1,0.2c0,0-0.1,0.1-0.2,0.1c-0.1,0-0.1,0-0.2-0.1c0,0-0.1-0.1-0.1-0.2L10,14 l0.1-4.3c0-0.1,0-0.1,0.1-0.2c0,0,0.1-0.1,0.2-0.1c0.1,0,0.1,0,0.2,0.1S10.6,9.7,10.6,9.8z M12.4,14l-0.1,2c0,0.1,0,0.1-0.1,0.2 c-0.1,0.1-0.1,0.1-0.2,0.1c-0.1,0-0.1,0-0.2-0.1c-0.1-0.1-0.1-0.1-0.1-0.2l-0.1-1l-0.1-1l0.1-5.5v0c0-0.1,0-0.2,0.1-0.2 c0.1,0,0.1-0.1,0.2-0.1c0,0,0.1,0,0.1,0c0.1,0,0.1,0.1,0.1,0.2L12.4,14z M22.1,13.9c0,0.7-0.2,1.3-0.7,1.7c-0.5,0.5-1.1,0.7-1.7,0.7 h-6.8c-0.1,0-0.1,0-0.2-0.1c-0.1-0.1-0.1-0.1-0.1-0.2V8.2c0-0.1,0.1-0.2,0.2-0.3c0.5-0.2,1-0.3,1.6-0.3c1.1,0,2.1,0.4,2.9,1.1 c0.8,0.8,1.3,1.7,1.4,2.8c0.3-0.1,0.6-0.2,1-0.2c0.7,0,1.3,0.2,1.7,0.7C21.8,12.6,22.1,13.2,22.1,13.9L22.1,13.9z"></path></svg>', + ), + 'spotify' => array( + 'name' => 'Spotify', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,5.523,4.477,10,10,10c5.523,0,10-4.477,10-10C22,6.477,17.523,2,12,2 M16.586,16.424 c-0.18,0.295-0.563,0.387-0.857,0.207c-2.348-1.435-5.304-1.76-8.785-0.964c-0.335,0.077-0.67-0.133-0.746-0.469 c-0.077-0.335,0.132-0.67,0.469-0.746c3.809-0.871,7.077-0.496,9.713,1.115C16.673,15.746,16.766,16.13,16.586,16.424 M17.81,13.7 c-0.226,0.367-0.706,0.482-1.072,0.257c-2.687-1.652-6.785-2.131-9.965-1.166C6.36,12.917,5.925,12.684,5.8,12.273 C5.675,11.86,5.908,11.425,6.32,11.3c3.632-1.102,8.147-0.568,11.234,1.328C17.92,12.854,18.035,13.335,17.81,13.7 M17.915,10.865 c-3.223-1.914-8.54-2.09-11.618-1.156C5.804,9.859,5.281,9.58,5.131,9.086C4.982,8.591,5.26,8.069,5.755,7.919 c3.532-1.072,9.404-0.865,13.115,1.338c0.445,0.264,0.59,0.838,0.327,1.282C18.933,10.983,18.359,11.129,17.915,10.865"></path></svg>', + ), + 'telegram' => array( + 'name' => 'Telegram', + 'icon' => '<svg width="24" height="24" viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M28.9700376,63.3244248 C47.6273373,55.1957357 60.0684594,49.8368063 66.2934036,47.2476366 C84.0668845,39.855031 87.7600616,38.5708563 90.1672227,38.528 C90.6966555,38.5191258 91.8804274,38.6503351 92.6472251,39.2725385 C93.294694,39.7979149 93.4728387,40.5076237 93.5580865,41.0057381 C93.6433345,41.5038525 93.7494885,42.63857 93.6651041,43.5252052 C92.7019529,53.6451182 88.5344133,78.2034783 86.4142057,89.5379542 C85.5170662,94.3339958 83.750571,95.9420841 82.0403991,96.0994568 C78.3237996,96.4414641 75.5015827,93.6432685 71.9018743,91.2836143 C66.2690414,87.5912212 63.0868492,85.2926952 57.6192095,81.6896017 C51.3004058,77.5256038 55.3966232,75.2369981 58.9976911,71.4967761 C59.9401076,70.5179421 76.3155302,55.6232293 76.6324771,54.2720454 C76.6721165,54.1030573 76.7089039,53.4731496 76.3346867,53.1405352 C75.9604695,52.8079208 75.4081573,52.921662 75.0095933,53.0121213 C74.444641,53.1403447 65.4461175,59.0880351 48.0140228,70.8551922 C45.4598218,72.6091037 43.1463059,73.4636682 41.0734751,73.4188859 C38.7883453,73.3695169 34.3926725,72.1268388 31.1249416,71.0646282 C27.1169366,69.7617838 23.931454,69.0729605 24.208838,66.8603276 C24.3533167,65.7078514 25.9403832,64.5292172 28.9700376,63.3244248 Z" /></svg>', + ), + 'threads' => array( + 'name' => 'Threads', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M16.3 11.3c-.1 0-.2-.1-.2-.1-.1-2.6-1.5-4-3.9-4-1.4 0-2.6.6-3.3 1.7l1.3.9c.5-.8 1.4-1 2-1 .8 0 1.4.2 1.7.7.3.3.5.8.5 1.3-.7-.1-1.4-.2-2.2-.1-2.2.1-3.7 1.4-3.6 3.2 0 .9.5 1.7 1.3 2.2.7.4 1.5.6 2.4.6 1.2-.1 2.1-.5 2.7-1.3.5-.6.8-1.4.9-2.4.6.3 1 .8 1.2 1.3.4.9.4 2.4-.8 3.6-1.1 1.1-2.3 1.5-4.3 1.5-2.1 0-3.8-.7-4.8-2S5.7 14.3 5.7 12c0-2.3.5-4.1 1.5-5.4 1.1-1.3 2.7-2 4.8-2 2.2 0 3.8.7 4.9 2 .5.7.9 1.5 1.2 2.5l1.5-.4c-.3-1.2-.8-2.2-1.5-3.1-1.3-1.7-3.3-2.6-6-2.6-2.6 0-4.7.9-6 2.6C4.9 7.2 4.3 9.3 4.3 12s.6 4.8 1.9 6.4c1.4 1.7 3.4 2.6 6 2.6 2.3 0 4-.6 5.3-2 1.8-1.8 1.7-4 1.1-5.4-.4-.9-1.2-1.7-2.3-2.3zm-4 3.8c-1 .1-2-.4-2-1.3 0-.7.5-1.5 2.1-1.6h.5c.6 0 1.1.1 1.6.2-.2 2.3-1.3 2.7-2.2 2.7z"/></svg>', + ), + 'tiktok' => array( + 'name' => 'TikTok', + 'icon' => '<svg width="24" height="24" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M16.708 0.027c1.745-0.027 3.48-0.011 5.213-0.027 0.105 2.041 0.839 4.12 2.333 5.563 1.491 1.479 3.6 2.156 5.652 2.385v5.369c-1.923-0.063-3.855-0.463-5.6-1.291-0.76-0.344-1.468-0.787-2.161-1.24-0.009 3.896 0.016 7.787-0.025 11.667-0.104 1.864-0.719 3.719-1.803 5.255-1.744 2.557-4.771 4.224-7.88 4.276-1.907 0.109-3.812-0.411-5.437-1.369-2.693-1.588-4.588-4.495-4.864-7.615-0.032-0.667-0.043-1.333-0.016-1.984 0.24-2.537 1.495-4.964 3.443-6.615 2.208-1.923 5.301-2.839 8.197-2.297 0.027 1.975-0.052 3.948-0.052 5.923-1.323-0.428-2.869-0.308-4.025 0.495-0.844 0.547-1.485 1.385-1.819 2.333-0.276 0.676-0.197 1.427-0.181 2.145 0.317 2.188 2.421 4.027 4.667 3.828 1.489-0.016 2.916-0.88 3.692-2.145 0.251-0.443 0.532-0.896 0.547-1.417 0.131-2.385 0.079-4.76 0.095-7.145 0.011-5.375-0.016-10.735 0.025-16.093z" /></svg>', + ), + 'tumblr' => array( + 'name' => 'Tumblr', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M17.04 21.28h-3.28c-2.84 0-4.94-1.37-4.94-5.02v-5.67H6.08V7.5c2.93-.73 4.11-3.3 4.3-5.48h3.01v4.93h3.47v3.65H13.4v4.93c0 1.47.73 2.01 1.92 2.01h1.73v3.75z" /></path></svg>', + ), + 'twitch' => array( + 'name' => 'Twitch', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M16.499,8.089h-1.636v4.91h1.636V8.089z M12,8.089h-1.637v4.91H12V8.089z M4.228,3.178L3,6.451v13.092h4.499V22h2.456 l2.454-2.456h3.681L21,14.636V3.178H4.228z M19.364,13.816l-2.864,2.865H12l-2.453,2.453V16.68H5.863V4.814h13.501V13.816z"></path></svg>', + ), + 'twitter' => array( + 'name' => 'Twitter', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z"></path></svg>', + ), + 'vimeo' => array( + 'name' => 'Vimeo', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M22.396,7.164c-0.093,2.026-1.507,4.799-4.245,8.32C15.322,19.161,12.928,21,10.97,21c-1.214,0-2.24-1.119-3.079-3.359 c-0.56-2.053-1.119-4.106-1.68-6.159C5.588,9.243,4.921,8.122,4.206,8.122c-0.156,0-0.701,0.328-1.634,0.98L1.594,7.841 c1.027-0.902,2.04-1.805,3.037-2.708C6.001,3.95,7.03,3.327,7.715,3.264c1.619-0.156,2.616,0.951,2.99,3.321 c0.404,2.557,0.685,4.147,0.841,4.769c0.467,2.121,0.981,3.181,1.542,3.181c0.435,0,1.09-0.688,1.963-2.065 c0.871-1.376,1.338-2.422,1.401-3.142c0.125-1.187-0.343-1.782-1.401-1.782c-0.498,0-1.012,0.115-1.541,0.341 c1.023-3.35,2.977-4.977,5.862-4.884C21.511,3.066,22.52,4.453,22.396,7.164z"></path></svg>', + ), + 'vk' => array( + 'name' => 'VK', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M22,7.1c0.2,0.4-0.4,1.5-1.6,3.1c-0.2,0.2-0.4,0.5-0.7,0.9c-0.5,0.7-0.9,1.1-0.9,1.4c-0.1,0.3-0.1,0.6,0.1,0.8 c0.1,0.1,0.4,0.4,0.8,0.9h0l0,0c1,0.9,1.6,1.7,2,2.3c0,0,0,0.1,0.1,0.1c0,0.1,0,0.1,0.1,0.3c0,0.1,0,0.2,0,0.4 c0,0.1-0.1,0.2-0.3,0.3c-0.1,0.1-0.4,0.1-0.6,0.1l-2.7,0c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.4-0.1-0.5-0.2l-0.2-0.1 c-0.2-0.1-0.5-0.4-0.7-0.7s-0.5-0.6-0.7-0.8c-0.2-0.2-0.4-0.4-0.6-0.6C14.8,15,14.6,15,14.4,15c0,0,0,0-0.1,0c0,0-0.1,0.1-0.2,0.2 c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.1-0.1,0.3-0.2,0.5c-0.1,0.2-0.1,0.5-0.1,0.8c0,0.1,0,0.2,0,0.3c0,0.1-0.1,0.2-0.1,0.2l0,0.1 c-0.1,0.1-0.3,0.2-0.6,0.2h-1.2c-0.5,0-1,0-1.5-0.2c-0.5-0.1-1-0.3-1.4-0.6s-0.7-0.5-1.1-0.7s-0.6-0.4-0.7-0.6l-0.3-0.3 c-0.1-0.1-0.2-0.2-0.3-0.3s-0.4-0.5-0.7-0.9s-0.7-1-1.1-1.6c-0.4-0.6-0.8-1.3-1.3-2.2C2.9,9.4,2.5,8.5,2.1,7.5C2,7.4,2,7.3,2,7.2 c0-0.1,0-0.1,0-0.2l0-0.1c0.1-0.1,0.3-0.2,0.6-0.2l2.9,0c0.1,0,0.2,0,0.2,0.1S5.9,6.9,5.9,7L6,7c0.1,0.1,0.2,0.2,0.3,0.3 C6.4,7.7,6.5,8,6.7,8.4C6.9,8.8,7,9,7.1,9.2l0.2,0.3c0.2,0.4,0.4,0.8,0.6,1.1c0.2,0.3,0.4,0.5,0.5,0.7s0.3,0.3,0.4,0.4 c0.1,0.1,0.3,0.1,0.4,0.1c0.1,0,0.2,0,0.3-0.1c0,0,0,0,0.1-0.1c0,0,0.1-0.1,0.1-0.2c0.1-0.1,0.1-0.3,0.1-0.5c0-0.2,0.1-0.5,0.1-0.8 c0-0.4,0-0.8,0-1.3c0-0.3,0-0.5-0.1-0.8c0-0.2-0.1-0.4-0.1-0.5L9.6,7.6C9.4,7.3,9.1,7.2,8.7,7.1C8.6,7.1,8.6,7,8.7,6.9 C8.9,6.7,9,6.6,9.1,6.5c0.4-0.2,1.2-0.3,2.5-0.3c0.6,0,1,0.1,1.4,0.1c0.1,0,0.3,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.2,0.3 c0,0.1,0.1,0.2,0.1,0.3s0,0.3,0,0.5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.7c0,0.3,0,0.6,0,0.9c0,0.1,0,0.2,0,0.4c0,0.2,0,0.4,0,0.5 c0,0.1,0,0.3,0,0.4s0.1,0.3,0.1,0.4c0.1,0.1,0.1,0.2,0.2,0.3c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.2-0.2,0.4-0.4 s0.3-0.4,0.5-0.7c0.2-0.3,0.5-0.7,0.7-1.1c0.4-0.7,0.8-1.5,1.1-2.3c0-0.1,0.1-0.1,0.1-0.2c0-0.1,0.1-0.1,0.1-0.1l0,0l0.1,0 c0,0,0,0,0.1,0s0.2,0,0.2,0l3,0c0.3,0,0.5,0,0.7,0S21.9,7,21.9,7L22,7.1z"></path></svg>', + ), + 'wordpress' => array( + 'name' => 'WordPress', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12.158,12.786L9.46,20.625c0.806,0.237,1.657,0.366,2.54,0.366c1.047,0,2.051-0.181,2.986-0.51 c-0.024-0.038-0.046-0.079-0.065-0.124L12.158,12.786z M3.009,12c0,3.559,2.068,6.634,5.067,8.092L3.788,8.341 C3.289,9.459,3.009,10.696,3.009,12z M18.069,11.546c0-1.112-0.399-1.881-0.741-2.48c-0.456-0.741-0.883-1.368-0.883-2.109 c0-0.826,0.627-1.596,1.51-1.596c0.04,0,0.078,0.005,0.116,0.007C16.472,3.904,14.34,3.009,12,3.009 c-3.141,0-5.904,1.612-7.512,4.052c0.211,0.007,0.41,0.011,0.579,0.011c0.94,0,2.396-0.114,2.396-0.114 C7.947,6.93,8.004,7.642,7.52,7.699c0,0-0.487,0.057-1.029,0.085l3.274,9.739l1.968-5.901l-1.401-3.838 C9.848,7.756,9.389,7.699,9.389,7.699C8.904,7.67,8.961,6.93,9.446,6.958c0,0,1.484,0.114,2.368,0.114 c0.94,0,2.397-0.114,2.397-0.114c0.485-0.028,0.542,0.684,0.057,0.741c0,0-0.488,0.057-1.029,0.085l3.249,9.665l0.897-2.996 C17.841,13.284,18.069,12.316,18.069,11.546z M19.889,7.686c0.039,0.286,0.06,0.593,0.06,0.924c0,0.912-0.171,1.938-0.684,3.22 l-2.746,7.94c2.673-1.558,4.47-4.454,4.47-7.771C20.991,10.436,20.591,8.967,19.889,7.686z M12,22C6.486,22,2,17.514,2,12 C2,6.486,6.486,2,12,2c5.514,0,10,4.486,10,10C22,17.514,17.514,22,12,22z"></path></svg>', + ), + 'whatsapp' => array( + 'name' => 'WhatsApp', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M 12.011719 2 C 6.5057187 2 2.0234844 6.478375 2.0214844 11.984375 C 2.0204844 13.744375 2.4814687 15.462563 3.3554688 16.976562 L 2 22 L 7.2324219 20.763672 C 8.6914219 21.559672 10.333859 21.977516 12.005859 21.978516 L 12.009766 21.978516 C 17.514766 21.978516 21.995047 17.499141 21.998047 11.994141 C 22.000047 9.3251406 20.962172 6.8157344 19.076172 4.9277344 C 17.190172 3.0407344 14.683719 2.001 12.011719 2 z M 12.009766 4 C 14.145766 4.001 16.153109 4.8337969 17.662109 6.3417969 C 19.171109 7.8517969 20.000047 9.8581875 19.998047 11.992188 C 19.996047 16.396187 16.413812 19.978516 12.007812 19.978516 C 10.674812 19.977516 9.3544062 19.642812 8.1914062 19.007812 L 7.5175781 18.640625 L 6.7734375 18.816406 L 4.8046875 19.28125 L 5.2851562 17.496094 L 5.5019531 16.695312 L 5.0878906 15.976562 C 4.3898906 14.768562 4.0204844 13.387375 4.0214844 11.984375 C 4.0234844 7.582375 7.6067656 4 12.009766 4 z M 8.4765625 7.375 C 8.3095625 7.375 8.0395469 7.4375 7.8105469 7.6875 C 7.5815469 7.9365 6.9355469 8.5395781 6.9355469 9.7675781 C 6.9355469 10.995578 7.8300781 12.182609 7.9550781 12.349609 C 8.0790781 12.515609 9.68175 15.115234 12.21875 16.115234 C 14.32675 16.946234 14.754891 16.782234 15.212891 16.740234 C 15.670891 16.699234 16.690438 16.137687 16.898438 15.554688 C 17.106437 14.971687 17.106922 14.470187 17.044922 14.367188 C 16.982922 14.263188 16.816406 14.201172 16.566406 14.076172 C 16.317406 13.951172 15.090328 13.348625 14.861328 13.265625 C 14.632328 13.182625 14.464828 13.140625 14.298828 13.390625 C 14.132828 13.640625 13.655766 14.201187 13.509766 14.367188 C 13.363766 14.534188 13.21875 14.556641 12.96875 14.431641 C 12.71875 14.305641 11.914938 14.041406 10.960938 13.191406 C 10.218937 12.530406 9.7182656 11.714844 9.5722656 11.464844 C 9.4272656 11.215844 9.5585938 11.079078 9.6835938 10.955078 C 9.7955938 10.843078 9.9316406 10.663578 10.056641 10.517578 C 10.180641 10.371578 10.223641 10.267562 10.306641 10.101562 C 10.389641 9.9355625 10.347156 9.7890625 10.285156 9.6640625 C 10.223156 9.5390625 9.737625 8.3065 9.515625 7.8125 C 9.328625 7.3975 9.131125 7.3878594 8.953125 7.3808594 C 8.808125 7.3748594 8.6425625 7.375 8.4765625 7.375 z"></path></svg>', + ), + 'x' => array( + 'name' => 'X', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg>', + ), + 'yelp' => array( + 'name' => 'Yelp', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12.271,16.718v1.417q-.011,3.257-.067,3.4a.707.707,0,0,1-.569.446,4.637,4.637,0,0,1-2.024-.424A4.609,4.609,0,0,1,7.8,20.565a.844.844,0,0,1-.19-.4.692.692,0,0,1,.044-.29,3.181,3.181,0,0,1,.379-.524q.335-.412,2.019-2.409.011,0,.669-.781a.757.757,0,0,1,.44-.274.965.965,0,0,1,.552.039.945.945,0,0,1,.418.324.732.732,0,0,1,.139.468Zm-1.662-2.8a.783.783,0,0,1-.58.781l-1.339.435q-3.067.981-3.257.981a.711.711,0,0,1-.6-.4,2.636,2.636,0,0,1-.19-.836,9.134,9.134,0,0,1,.011-1.857,3.559,3.559,0,0,1,.335-1.389.659.659,0,0,1,.625-.357,22.629,22.629,0,0,1,2.253.859q.781.324,1.283.524l.937.379a.771.771,0,0,1,.4.34A.982.982,0,0,1,10.609,13.917Zm9.213,3.313a4.467,4.467,0,0,1-1.021,1.8,4.559,4.559,0,0,1-1.512,1.417.671.671,0,0,1-.7-.078q-.156-.112-2.052-3.2l-.524-.859a.761.761,0,0,1-.128-.513.957.957,0,0,1,.217-.513.774.774,0,0,1,.926-.29q.011.011,1.327.446,2.264.736,2.7.887a2.082,2.082,0,0,1,.524.229.673.673,0,0,1,.245.68Zm-7.5-7.049q.056,1.137-.6,1.361-.647.19-1.272-.792L6.237,4.08a.7.7,0,0,1,.212-.691,5.788,5.788,0,0,1,2.314-1,5.928,5.928,0,0,1,2.5-.352.681.681,0,0,1,.547.5q.034.2.245,3.407T12.327,10.181Zm7.384,1.2a.679.679,0,0,1-.29.658q-.167.112-3.67.959-.747.167-1.015.257l.011-.022a.769.769,0,0,1-.513-.044.914.914,0,0,1-.413-.357.786.786,0,0,1,0-.971q.011-.011.836-1.137,1.394-1.908,1.673-2.275a2.423,2.423,0,0,1,.379-.435A.7.7,0,0,1,17.435,8a4.482,4.482,0,0,1,1.372,1.489,4.81,4.81,0,0,1,.9,1.868v.034Z"></path></svg>', + ), + 'youtube' => array( + 'name' => 'YouTube', + 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg>', + ), + ); + + if ( ! empty( $service ) + && ! empty( $field ) + && isset( $services_data[ $service ] ) + && ( 'icon' === $field || 'name' === $field ) + ) { + return $services_data[ $service ][ $field ]; + } elseif ( ! empty( $service ) && isset( $services_data[ $service ] ) ) { + return $services_data[ $service ]; + } + + return $services_data; +} + +/** + * Returns CSS styles for icon and icon background colors. + * + * @param array $context Block context passed to Social Link. + * + * @return string Inline CSS styles for link's icon and background colors. + */ +function block_core_social_link_get_color_styles( $context ) { + $styles = array(); + + if ( array_key_exists( 'iconColorValue', $context ) ) { + $styles[] = 'color: ' . $context['iconColorValue'] . '; '; + } + + if ( array_key_exists( 'iconBackgroundColorValue', $context ) ) { + $styles[] = 'background-color: ' . $context['iconBackgroundColorValue'] . '; '; + } + + return implode( '', $styles ); +} + +/** + * Returns CSS classes for icon and icon background colors. + * + * @param array $context Block context passed to Social Sharing Link. + * + * @return string CSS classes for link's icon and background colors. + */ +function block_core_social_link_get_color_classes( $context ) { + $classes = array(); + + if ( array_key_exists( 'iconColor', $context ) ) { + $classes[] = 'has-' . $context['iconColor'] . '-color'; + } + + if ( array_key_exists( 'iconBackgroundColor', $context ) ) { + $classes[] = 'has-' . $context['iconBackgroundColor'] . '-background-color'; + } + + return ' ' . implode( ' ', $classes ); +} diff --git a/wp-includes/blocks/social-link/block.json b/wp-includes/blocks/social-link/block.json new file mode 100644 index 0000000..50e95ef --- /dev/null +++ b/wp-includes/blocks/social-link/block.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/social-link", + "title": "Social Icon", + "category": "widgets", + "parent": [ "core/social-links" ], + "description": "Display an icon linking to a social media profile or site.", + "textdomain": "default", + "attributes": { + "url": { + "type": "string" + }, + "service": { + "type": "string" + }, + "label": { + "type": "string" + }, + "rel": { + "type": "string" + } + }, + "usesContext": [ + "openInNewTab", + "showLabels", + "iconColor", + "iconColorValue", + "iconBackgroundColor", + "iconBackgroundColorValue" + ], + "supports": { + "reusable": false, + "html": false + }, + "editorStyle": "wp-block-social-link-editor" +} diff --git a/wp-includes/blocks/social-link/editor-rtl.css b/wp-includes/blocks/social-link/editor-rtl.css new file mode 100644 index 0000000..8c16bcf --- /dev/null +++ b/wp-includes/blocks/social-link/editor-rtl.css @@ -0,0 +1,20 @@ +.wp-block-social-links .wp-social-link{ + line-height:0; +} +.wp-block-social-links .wp-social-link button{ + color:currentColor; + font-size:inherit; + height:auto; + line-height:0; + opacity:1; + padding:.25em; +} + +.wp-block-social-links.is-style-pill-shape .wp-social-link button{ + padding-left:.66667em; + padding-right:.66667em; +} + +.wp-block-social-links.is-style-logos-only .wp-social-link button{ + padding:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/social-link/editor-rtl.min.css b/wp-includes/blocks/social-link/editor-rtl.min.css new file mode 100644 index 0000000..ff5a4b8 --- /dev/null +++ b/wp-includes/blocks/social-link/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-social-links .wp-social-link{line-height:0}.wp-block-social-links .wp-social-link button{color:currentColor;font-size:inherit;height:auto;line-height:0;opacity:1;padding:.25em}.wp-block-social-links.is-style-pill-shape .wp-social-link button{padding-left:.66667em;padding-right:.66667em}.wp-block-social-links.is-style-logos-only .wp-social-link button{padding:0}
\ No newline at end of file diff --git a/wp-includes/blocks/social-link/editor.css b/wp-includes/blocks/social-link/editor.css new file mode 100644 index 0000000..8c16bcf --- /dev/null +++ b/wp-includes/blocks/social-link/editor.css @@ -0,0 +1,20 @@ +.wp-block-social-links .wp-social-link{ + line-height:0; +} +.wp-block-social-links .wp-social-link button{ + color:currentColor; + font-size:inherit; + height:auto; + line-height:0; + opacity:1; + padding:.25em; +} + +.wp-block-social-links.is-style-pill-shape .wp-social-link button{ + padding-left:.66667em; + padding-right:.66667em; +} + +.wp-block-social-links.is-style-logos-only .wp-social-link button{ + padding:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/social-link/editor.min.css b/wp-includes/blocks/social-link/editor.min.css new file mode 100644 index 0000000..ff5a4b8 --- /dev/null +++ b/wp-includes/blocks/social-link/editor.min.css @@ -0,0 +1 @@ +.wp-block-social-links .wp-social-link{line-height:0}.wp-block-social-links .wp-social-link button{color:currentColor;font-size:inherit;height:auto;line-height:0;opacity:1;padding:.25em}.wp-block-social-links.is-style-pill-shape .wp-social-link button{padding-left:.66667em;padding-right:.66667em}.wp-block-social-links.is-style-logos-only .wp-social-link button{padding:0}
\ No newline at end of file diff --git a/wp-includes/blocks/social-links/block.json b/wp-includes/blocks/social-links/block.json new file mode 100644 index 0000000..2020651 --- /dev/null +++ b/wp-includes/blocks/social-links/block.json @@ -0,0 +1,89 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/social-links", + "title": "Social Icons", + "category": "widgets", + "description": "Display icons linking to your social media profiles or sites.", + "keywords": [ "links" ], + "textdomain": "default", + "attributes": { + "iconColor": { + "type": "string" + }, + "customIconColor": { + "type": "string" + }, + "iconColorValue": { + "type": "string" + }, + "iconBackgroundColor": { + "type": "string" + }, + "customIconBackgroundColor": { + "type": "string" + }, + "iconBackgroundColorValue": { + "type": "string" + }, + "openInNewTab": { + "type": "boolean", + "default": false + }, + "showLabels": { + "type": "boolean", + "default": false + }, + "size": { + "type": "string" + } + }, + "providesContext": { + "openInNewTab": "openInNewTab", + "showLabels": "showLabels", + "iconColor": "iconColor", + "iconColorValue": "iconColorValue", + "iconBackgroundColor": "iconBackgroundColor", + "iconBackgroundColorValue": "iconBackgroundColorValue" + }, + "supports": { + "align": [ "left", "center", "right" ], + "anchor": true, + "__experimentalExposeControlsToChildren": true, + "layout": { + "allowSwitching": false, + "allowInheriting": false, + "allowVerticalAlignment": false, + "default": { + "type": "flex" + } + }, + "color": { + "enableContrastChecker": false, + "background": true, + "gradients": true, + "text": false, + "__experimentalDefaultControls": { + "background": false + } + }, + "spacing": { + "blockGap": [ "horizontal", "vertical" ], + "margin": true, + "padding": true, + "units": [ "px", "em", "rem", "vh", "vw" ], + "__experimentalDefaultControls": { + "blockGap": true, + "margin": true, + "padding": false + } + } + }, + "styles": [ + { "name": "default", "label": "Default", "isDefault": true }, + { "name": "logos-only", "label": "Logos Only" }, + { "name": "pill-shape", "label": "Pill Shape" } + ], + "editorStyle": "wp-block-social-links-editor", + "style": "wp-block-social-links" +} diff --git a/wp-includes/blocks/social-links/editor-rtl.css b/wp-includes/blocks/social-links/editor-rtl.css new file mode 100644 index 0000000..87d1c65 --- /dev/null +++ b/wp-includes/blocks/social-links/editor-rtl.css @@ -0,0 +1,87 @@ +.wp-block-social-links div.block-editor-url-input{ + display:inline-block; + margin-right:8px; +} +.wp-block-social-links.wp-block-social-links{ + background:none; +} + +.wp-social-link:hover{ + transform:none; +} + +.editor-styles-wrapper .wp-block-social-links{ + padding:0; +} + +.wp-block-social-links__social-placeholder{ + display:flex; + list-style:none; + opacity:.8; +} +.wp-block-social-links__social-placeholder>.wp-social-link{ + margin-left:0 !important; + margin-right:0 !important; + padding-left:0 !important; + padding-right:0 !important; + visibility:hidden; + width:0 !important; +} +.wp-block-social-links__social-placeholder>.wp-block-social-links__social-placeholder-icons{ + display:flex; +} +.wp-block-social-links__social-placeholder .wp-social-link{ + padding:.25em; +} +.is-style-pill-shape .wp-block-social-links__social-placeholder .wp-social-link{ + padding-left:.66667em; + padding-right:.66667em; +} +.is-style-logos-only .wp-block-social-links__social-placeholder .wp-social-link{ + padding:0; +} +.wp-block-social-links__social-placeholder .wp-social-link:before{ + border-radius:50%; + content:""; + display:block; + height:1em; + width:1em; +} +.is-style-logos-only .wp-block-social-links__social-placeholder .wp-social-link:before{ + background:currentColor; +} + +.wp-block-social-links .wp-block-social-links__social-prompt{ + cursor:default; + font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; + font-size:13px; + line-height:24px; + list-style:none; + margin-bottom:auto; + margin-top:auto; + min-height:24px; + order:2; + padding-left:8px; +} + +.wp-block.wp-block-social-links.aligncenter,.wp-block[data-align=center]>.wp-block-social-links{ + justify-content:center; +} + +.block-editor-block-preview__content .components-button:disabled{ + opacity:1; +} + +.wp-social-link.wp-social-link__is-incomplete{ + opacity:.5; +} +@media (prefers-reduced-motion:reduce){ + .wp-social-link.wp-social-link__is-incomplete{ + transition-delay:0s; + transition-duration:0s; + } +} + +.wp-block-social-links .is-selected .wp-social-link__is-incomplete,.wp-social-link.wp-social-link__is-incomplete:focus,.wp-social-link.wp-social-link__is-incomplete:hover{ + opacity:1; +}
\ No newline at end of file diff --git a/wp-includes/blocks/social-links/editor-rtl.min.css b/wp-includes/blocks/social-links/editor-rtl.min.css new file mode 100644 index 0000000..3e65466 --- /dev/null +++ b/wp-includes/blocks/social-links/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-social-links div.block-editor-url-input{display:inline-block;margin-right:8px}.wp-block-social-links.wp-block-social-links{background:none}.wp-social-link:hover{transform:none}.editor-styles-wrapper .wp-block-social-links{padding:0}.wp-block-social-links__social-placeholder{display:flex;list-style:none;opacity:.8}.wp-block-social-links__social-placeholder>.wp-social-link{margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important;visibility:hidden;width:0!important}.wp-block-social-links__social-placeholder>.wp-block-social-links__social-placeholder-icons{display:flex}.wp-block-social-links__social-placeholder .wp-social-link{padding:.25em}.is-style-pill-shape .wp-block-social-links__social-placeholder .wp-social-link{padding-left:.66667em;padding-right:.66667em}.is-style-logos-only .wp-block-social-links__social-placeholder .wp-social-link{padding:0}.wp-block-social-links__social-placeholder .wp-social-link:before{border-radius:50%;content:"";display:block;height:1em;width:1em}.is-style-logos-only .wp-block-social-links__social-placeholder .wp-social-link:before{background:currentColor}.wp-block-social-links .wp-block-social-links__social-prompt{cursor:default;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:24px;list-style:none;margin-bottom:auto;margin-top:auto;min-height:24px;order:2;padding-left:8px}.wp-block.wp-block-social-links.aligncenter,.wp-block[data-align=center]>.wp-block-social-links{justify-content:center}.block-editor-block-preview__content .components-button:disabled{opacity:1}.wp-social-link.wp-social-link__is-incomplete{opacity:.5}@media (prefers-reduced-motion:reduce){.wp-social-link.wp-social-link__is-incomplete{transition-delay:0s;transition-duration:0s}}.wp-block-social-links .is-selected .wp-social-link__is-incomplete,.wp-social-link.wp-social-link__is-incomplete:focus,.wp-social-link.wp-social-link__is-incomplete:hover{opacity:1}
\ No newline at end of file diff --git a/wp-includes/blocks/social-links/editor.css b/wp-includes/blocks/social-links/editor.css new file mode 100644 index 0000000..c75a75c --- /dev/null +++ b/wp-includes/blocks/social-links/editor.css @@ -0,0 +1,87 @@ +.wp-block-social-links div.block-editor-url-input{ + display:inline-block; + margin-left:8px; +} +.wp-block-social-links.wp-block-social-links{ + background:none; +} + +.wp-social-link:hover{ + transform:none; +} + +.editor-styles-wrapper .wp-block-social-links{ + padding:0; +} + +.wp-block-social-links__social-placeholder{ + display:flex; + list-style:none; + opacity:.8; +} +.wp-block-social-links__social-placeholder>.wp-social-link{ + margin-left:0 !important; + margin-right:0 !important; + padding-left:0 !important; + padding-right:0 !important; + visibility:hidden; + width:0 !important; +} +.wp-block-social-links__social-placeholder>.wp-block-social-links__social-placeholder-icons{ + display:flex; +} +.wp-block-social-links__social-placeholder .wp-social-link{ + padding:.25em; +} +.is-style-pill-shape .wp-block-social-links__social-placeholder .wp-social-link{ + padding-left:.66667em; + padding-right:.66667em; +} +.is-style-logos-only .wp-block-social-links__social-placeholder .wp-social-link{ + padding:0; +} +.wp-block-social-links__social-placeholder .wp-social-link:before{ + border-radius:50%; + content:""; + display:block; + height:1em; + width:1em; +} +.is-style-logos-only .wp-block-social-links__social-placeholder .wp-social-link:before{ + background:currentColor; +} + +.wp-block-social-links .wp-block-social-links__social-prompt{ + cursor:default; + font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; + font-size:13px; + line-height:24px; + list-style:none; + margin-bottom:auto; + margin-top:auto; + min-height:24px; + order:2; + padding-right:8px; +} + +.wp-block.wp-block-social-links.aligncenter,.wp-block[data-align=center]>.wp-block-social-links{ + justify-content:center; +} + +.block-editor-block-preview__content .components-button:disabled{ + opacity:1; +} + +.wp-social-link.wp-social-link__is-incomplete{ + opacity:.5; +} +@media (prefers-reduced-motion:reduce){ + .wp-social-link.wp-social-link__is-incomplete{ + transition-delay:0s; + transition-duration:0s; + } +} + +.wp-block-social-links .is-selected .wp-social-link__is-incomplete,.wp-social-link.wp-social-link__is-incomplete:focus,.wp-social-link.wp-social-link__is-incomplete:hover{ + opacity:1; +}
\ No newline at end of file diff --git a/wp-includes/blocks/social-links/editor.min.css b/wp-includes/blocks/social-links/editor.min.css new file mode 100644 index 0000000..e265ec2 --- /dev/null +++ b/wp-includes/blocks/social-links/editor.min.css @@ -0,0 +1 @@ +.wp-block-social-links div.block-editor-url-input{display:inline-block;margin-left:8px}.wp-block-social-links.wp-block-social-links{background:none}.wp-social-link:hover{transform:none}.editor-styles-wrapper .wp-block-social-links{padding:0}.wp-block-social-links__social-placeholder{display:flex;list-style:none;opacity:.8}.wp-block-social-links__social-placeholder>.wp-social-link{margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important;visibility:hidden;width:0!important}.wp-block-social-links__social-placeholder>.wp-block-social-links__social-placeholder-icons{display:flex}.wp-block-social-links__social-placeholder .wp-social-link{padding:.25em}.is-style-pill-shape .wp-block-social-links__social-placeholder .wp-social-link{padding-left:.66667em;padding-right:.66667em}.is-style-logos-only .wp-block-social-links__social-placeholder .wp-social-link{padding:0}.wp-block-social-links__social-placeholder .wp-social-link:before{border-radius:50%;content:"";display:block;height:1em;width:1em}.is-style-logos-only .wp-block-social-links__social-placeholder .wp-social-link:before{background:currentColor}.wp-block-social-links .wp-block-social-links__social-prompt{cursor:default;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:24px;list-style:none;margin-bottom:auto;margin-top:auto;min-height:24px;order:2;padding-right:8px}.wp-block.wp-block-social-links.aligncenter,.wp-block[data-align=center]>.wp-block-social-links{justify-content:center}.block-editor-block-preview__content .components-button:disabled{opacity:1}.wp-social-link.wp-social-link__is-incomplete{opacity:.5}@media (prefers-reduced-motion:reduce){.wp-social-link.wp-social-link__is-incomplete{transition-delay:0s;transition-duration:0s}}.wp-block-social-links .is-selected .wp-social-link__is-incomplete,.wp-social-link.wp-social-link__is-incomplete:focus,.wp-social-link.wp-social-link__is-incomplete:hover{opacity:1}
\ No newline at end of file diff --git a/wp-includes/blocks/social-links/style-rtl.css b/wp-includes/blocks/social-links/style-rtl.css new file mode 100644 index 0000000..b8defda --- /dev/null +++ b/wp-includes/blocks/social-links/style-rtl.css @@ -0,0 +1,388 @@ +.wp-block-social-links{ + background:none; + box-sizing:border-box; + margin-right:0; + padding-left:0; + padding-right:0; + text-indent:0; +} +.wp-block-social-links .wp-social-link a,.wp-block-social-links .wp-social-link a:hover{ + border-bottom:0; + box-shadow:none; + text-decoration:none; +} +.wp-block-social-links .wp-social-link a{ + padding:.25em; +} +.wp-block-social-links .wp-social-link svg{ + height:1em; + width:1em; +} +.wp-block-social-links .wp-social-link span:not(.screen-reader-text){ + font-size:.65em; + margin-left:.5em; + margin-right:.5em; +} +.wp-block-social-links.has-small-icon-size{ + font-size:16px; +} +.wp-block-social-links,.wp-block-social-links.has-normal-icon-size{ + font-size:24px; +} +.wp-block-social-links.has-large-icon-size{ + font-size:36px; +} +.wp-block-social-links.has-huge-icon-size{ + font-size:48px; +} +.wp-block-social-links.aligncenter{ + display:flex; + justify-content:center; +} +.wp-block-social-links.alignright{ + justify-content:flex-end; +} + +.wp-block-social-link{ + border-radius:9999px; + display:block; + height:auto; + transition:transform .1s ease; +} +@media (prefers-reduced-motion:reduce){ + .wp-block-social-link{ + transition-delay:0s; + transition-duration:0s; + } +} +.wp-block-social-link a{ + align-items:center; + display:flex; + line-height:0; + transition:transform .1s ease; +} +.wp-block-social-link:hover{ + transform:scale(1.1); +} + +.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor svg,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor:active,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor:hover,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor:visited{ + fill:currentColor; + color:currentColor; +} + +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link{ + background-color:#f0f0f0; + color:#444; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-amazon{ + background-color:#f90; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-bandcamp{ + background-color:#1ea0c3; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-behance{ + background-color:#0757fe; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-codepen{ + background-color:#1e1f26; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-deviantart{ + background-color:#02e49b; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dribbble{ + background-color:#e94c89; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dropbox{ + background-color:#4280ff; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-etsy{ + background-color:#f45800; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-facebook{ + background-color:#1778f2; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-fivehundredpx{ + background-color:#000; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-flickr{ + background-color:#0461dd; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-foursquare{ + background-color:#e65678; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-github{ + background-color:#24292d; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-goodreads{ + background-color:#eceadd; + color:#382110; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-google{ + background-color:#ea4434; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-instagram{ + background-color:#f00075; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-lastfm{ + background-color:#e21b24; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-linkedin{ + background-color:#0d66c2; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-mastodon{ + background-color:#3288d4; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-medium{ + background-color:#02ab6c; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-meetup{ + background-color:#f6405f; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-patreon{ + background-color:#ff424d; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pinterest{ + background-color:#e60122; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pocket{ + background-color:#ef4155; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-reddit{ + background-color:#ff4500; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-skype{ + background-color:#0478d7; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-snapchat{ + stroke:#000; + background-color:#fefc00; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-soundcloud{ + background-color:#ff5600; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-spotify{ + background-color:#1bd760; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-telegram{ + background-color:#2aabee; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-threads,.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-tiktok{ + background-color:#000; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-tumblr{ + background-color:#011835; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitch{ + background-color:#6440a4; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitter{ + background-color:#1da1f2; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vimeo{ + background-color:#1eb7ea; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vk{ + background-color:#4680c2; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-wordpress{ + background-color:#3499cd; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-whatsapp{ + background-color:#25d366; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-x{ + background-color:#000; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-yelp{ + background-color:#d32422; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-youtube{ + background-color:red; + color:#fff; +} + +.wp-block-social-links.is-style-logos-only .wp-social-link{ + background:none; +} +.wp-block-social-links.is-style-logos-only .wp-social-link a{ + padding:0; +} +.wp-block-social-links.is-style-logos-only .wp-social-link svg{ + height:1.25em; + width:1.25em; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-amazon{ + color:#f90; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-bandcamp{ + color:#1ea0c3; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-behance{ + color:#0757fe; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-codepen{ + color:#1e1f26; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-deviantart{ + color:#02e49b; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-dribbble{ + color:#e94c89; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-dropbox{ + color:#4280ff; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-etsy{ + color:#f45800; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-facebook{ + color:#1778f2; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-fivehundredpx{ + color:#000; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-flickr{ + color:#0461dd; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-foursquare{ + color:#e65678; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-github{ + color:#24292d; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-goodreads{ + color:#382110; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-google{ + color:#ea4434; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-instagram{ + color:#f00075; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-lastfm{ + color:#e21b24; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-linkedin{ + color:#0d66c2; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-mastodon{ + color:#3288d4; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-medium{ + color:#02ab6c; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-meetup{ + color:#f6405f; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-patreon{ + color:#ff424d; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-pinterest{ + color:#e60122; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-pocket{ + color:#ef4155; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-reddit{ + color:#ff4500; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-skype{ + color:#0478d7; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-snapchat{ + stroke:#000; + color:#fff; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-soundcloud{ + color:#ff5600; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-spotify{ + color:#1bd760; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-telegram{ + color:#2aabee; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-threads,.wp-block-social-links.is-style-logos-only .wp-social-link-tiktok{ + color:#000; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-tumblr{ + color:#011835; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-twitch{ + color:#6440a4; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-twitter{ + color:#1da1f2; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-vimeo{ + color:#1eb7ea; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-vk{ + color:#4680c2; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-whatsapp{ + color:#25d366; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-wordpress{ + color:#3499cd; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-x{ + color:#000; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-yelp{ + color:#d32422; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-youtube{ + color:red; +} + +.wp-block-social-links.is-style-pill-shape .wp-social-link{ + width:auto; +} +.wp-block-social-links.is-style-pill-shape .wp-social-link a{ + padding-left:.66667em; + padding-right:.66667em; +} + +.wp-block-social-links:not(.has-icon-color):not(.has-icon-background-color) .wp-social-link-snapchat .wp-block-social-link-label{ + color:#000; +}
\ No newline at end of file diff --git a/wp-includes/blocks/social-links/style-rtl.min.css b/wp-includes/blocks/social-links/style-rtl.min.css new file mode 100644 index 0000000..a54b7a1 --- /dev/null +++ b/wp-includes/blocks/social-links/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-social-links{background:none;box-sizing:border-box;margin-right:0;padding-left:0;padding-right:0;text-indent:0}.wp-block-social-links .wp-social-link a,.wp-block-social-links .wp-social-link a:hover{border-bottom:0;box-shadow:none;text-decoration:none}.wp-block-social-links .wp-social-link a{padding:.25em}.wp-block-social-links .wp-social-link svg{height:1em;width:1em}.wp-block-social-links .wp-social-link span:not(.screen-reader-text){font-size:.65em;margin-left:.5em;margin-right:.5em}.wp-block-social-links.has-small-icon-size{font-size:16px}.wp-block-social-links,.wp-block-social-links.has-normal-icon-size{font-size:24px}.wp-block-social-links.has-large-icon-size{font-size:36px}.wp-block-social-links.has-huge-icon-size{font-size:48px}.wp-block-social-links.aligncenter{display:flex;justify-content:center}.wp-block-social-links.alignright{justify-content:flex-end}.wp-block-social-link{border-radius:9999px;display:block;height:auto;transition:transform .1s ease}@media (prefers-reduced-motion:reduce){.wp-block-social-link{transition-delay:0s;transition-duration:0s}}.wp-block-social-link a{align-items:center;display:flex;line-height:0;transition:transform .1s ease}.wp-block-social-link:hover{transform:scale(1.1)}.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor svg,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor:active,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor:hover,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor:visited{fill:currentColor;color:currentColor}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link{background-color:#f0f0f0;color:#444}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-amazon{background-color:#f90;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-bandcamp{background-color:#1ea0c3;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-behance{background-color:#0757fe;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-codepen{background-color:#1e1f26;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-deviantart{background-color:#02e49b;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dribbble{background-color:#e94c89;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dropbox{background-color:#4280ff;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-etsy{background-color:#f45800;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-facebook{background-color:#1778f2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-fivehundredpx{background-color:#000;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-flickr{background-color:#0461dd;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-foursquare{background-color:#e65678;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-github{background-color:#24292d;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-goodreads{background-color:#eceadd;color:#382110}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-google{background-color:#ea4434;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-instagram{background-color:#f00075;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-lastfm{background-color:#e21b24;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-linkedin{background-color:#0d66c2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-mastodon{background-color:#3288d4;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-medium{background-color:#02ab6c;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-meetup{background-color:#f6405f;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-patreon{background-color:#ff424d;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pinterest{background-color:#e60122;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pocket{background-color:#ef4155;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-reddit{background-color:#ff4500;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-skype{background-color:#0478d7;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-snapchat{stroke:#000;background-color:#fefc00;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-soundcloud{background-color:#ff5600;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-spotify{background-color:#1bd760;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-telegram{background-color:#2aabee;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-threads,.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-tiktok{background-color:#000;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-tumblr{background-color:#011835;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitch{background-color:#6440a4;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitter{background-color:#1da1f2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vimeo{background-color:#1eb7ea;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vk{background-color:#4680c2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-wordpress{background-color:#3499cd;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-whatsapp{background-color:#25d366;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-x{background-color:#000;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-yelp{background-color:#d32422;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-youtube{background-color:red;color:#fff}.wp-block-social-links.is-style-logos-only .wp-social-link{background:none}.wp-block-social-links.is-style-logos-only .wp-social-link a{padding:0}.wp-block-social-links.is-style-logos-only .wp-social-link svg{height:1.25em;width:1.25em}.wp-block-social-links.is-style-logos-only .wp-social-link-amazon{color:#f90}.wp-block-social-links.is-style-logos-only .wp-social-link-bandcamp{color:#1ea0c3}.wp-block-social-links.is-style-logos-only .wp-social-link-behance{color:#0757fe}.wp-block-social-links.is-style-logos-only .wp-social-link-codepen{color:#1e1f26}.wp-block-social-links.is-style-logos-only .wp-social-link-deviantart{color:#02e49b}.wp-block-social-links.is-style-logos-only .wp-social-link-dribbble{color:#e94c89}.wp-block-social-links.is-style-logos-only .wp-social-link-dropbox{color:#4280ff}.wp-block-social-links.is-style-logos-only .wp-social-link-etsy{color:#f45800}.wp-block-social-links.is-style-logos-only .wp-social-link-facebook{color:#1778f2}.wp-block-social-links.is-style-logos-only .wp-social-link-fivehundredpx{color:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-flickr{color:#0461dd}.wp-block-social-links.is-style-logos-only .wp-social-link-foursquare{color:#e65678}.wp-block-social-links.is-style-logos-only .wp-social-link-github{color:#24292d}.wp-block-social-links.is-style-logos-only .wp-social-link-goodreads{color:#382110}.wp-block-social-links.is-style-logos-only .wp-social-link-google{color:#ea4434}.wp-block-social-links.is-style-logos-only .wp-social-link-instagram{color:#f00075}.wp-block-social-links.is-style-logos-only .wp-social-link-lastfm{color:#e21b24}.wp-block-social-links.is-style-logos-only .wp-social-link-linkedin{color:#0d66c2}.wp-block-social-links.is-style-logos-only .wp-social-link-mastodon{color:#3288d4}.wp-block-social-links.is-style-logos-only .wp-social-link-medium{color:#02ab6c}.wp-block-social-links.is-style-logos-only .wp-social-link-meetup{color:#f6405f}.wp-block-social-links.is-style-logos-only .wp-social-link-patreon{color:#ff424d}.wp-block-social-links.is-style-logos-only .wp-social-link-pinterest{color:#e60122}.wp-block-social-links.is-style-logos-only .wp-social-link-pocket{color:#ef4155}.wp-block-social-links.is-style-logos-only .wp-social-link-reddit{color:#ff4500}.wp-block-social-links.is-style-logos-only .wp-social-link-skype{color:#0478d7}.wp-block-social-links.is-style-logos-only .wp-social-link-snapchat{stroke:#000;color:#fff}.wp-block-social-links.is-style-logos-only .wp-social-link-soundcloud{color:#ff5600}.wp-block-social-links.is-style-logos-only .wp-social-link-spotify{color:#1bd760}.wp-block-social-links.is-style-logos-only .wp-social-link-telegram{color:#2aabee}.wp-block-social-links.is-style-logos-only .wp-social-link-threads,.wp-block-social-links.is-style-logos-only .wp-social-link-tiktok{color:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-tumblr{color:#011835}.wp-block-social-links.is-style-logos-only .wp-social-link-twitch{color:#6440a4}.wp-block-social-links.is-style-logos-only .wp-social-link-twitter{color:#1da1f2}.wp-block-social-links.is-style-logos-only .wp-social-link-vimeo{color:#1eb7ea}.wp-block-social-links.is-style-logos-only .wp-social-link-vk{color:#4680c2}.wp-block-social-links.is-style-logos-only .wp-social-link-whatsapp{color:#25d366}.wp-block-social-links.is-style-logos-only .wp-social-link-wordpress{color:#3499cd}.wp-block-social-links.is-style-logos-only .wp-social-link-x{color:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-yelp{color:#d32422}.wp-block-social-links.is-style-logos-only .wp-social-link-youtube{color:red}.wp-block-social-links.is-style-pill-shape .wp-social-link{width:auto}.wp-block-social-links.is-style-pill-shape .wp-social-link a{padding-left:.66667em;padding-right:.66667em}.wp-block-social-links:not(.has-icon-color):not(.has-icon-background-color) .wp-social-link-snapchat .wp-block-social-link-label{color:#000}
\ No newline at end of file diff --git a/wp-includes/blocks/social-links/style.css b/wp-includes/blocks/social-links/style.css new file mode 100644 index 0000000..9253615 --- /dev/null +++ b/wp-includes/blocks/social-links/style.css @@ -0,0 +1,388 @@ +.wp-block-social-links{ + background:none; + box-sizing:border-box; + margin-left:0; + padding-left:0; + padding-right:0; + text-indent:0; +} +.wp-block-social-links .wp-social-link a,.wp-block-social-links .wp-social-link a:hover{ + border-bottom:0; + box-shadow:none; + text-decoration:none; +} +.wp-block-social-links .wp-social-link a{ + padding:.25em; +} +.wp-block-social-links .wp-social-link svg{ + height:1em; + width:1em; +} +.wp-block-social-links .wp-social-link span:not(.screen-reader-text){ + font-size:.65em; + margin-left:.5em; + margin-right:.5em; +} +.wp-block-social-links.has-small-icon-size{ + font-size:16px; +} +.wp-block-social-links,.wp-block-social-links.has-normal-icon-size{ + font-size:24px; +} +.wp-block-social-links.has-large-icon-size{ + font-size:36px; +} +.wp-block-social-links.has-huge-icon-size{ + font-size:48px; +} +.wp-block-social-links.aligncenter{ + display:flex; + justify-content:center; +} +.wp-block-social-links.alignright{ + justify-content:flex-end; +} + +.wp-block-social-link{ + border-radius:9999px; + display:block; + height:auto; + transition:transform .1s ease; +} +@media (prefers-reduced-motion:reduce){ + .wp-block-social-link{ + transition-delay:0s; + transition-duration:0s; + } +} +.wp-block-social-link a{ + align-items:center; + display:flex; + line-height:0; + transition:transform .1s ease; +} +.wp-block-social-link:hover{ + transform:scale(1.1); +} + +.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor svg,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor:active,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor:hover,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor:visited{ + fill:currentColor; + color:currentColor; +} + +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link{ + background-color:#f0f0f0; + color:#444; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-amazon{ + background-color:#f90; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-bandcamp{ + background-color:#1ea0c3; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-behance{ + background-color:#0757fe; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-codepen{ + background-color:#1e1f26; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-deviantart{ + background-color:#02e49b; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dribbble{ + background-color:#e94c89; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dropbox{ + background-color:#4280ff; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-etsy{ + background-color:#f45800; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-facebook{ + background-color:#1778f2; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-fivehundredpx{ + background-color:#000; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-flickr{ + background-color:#0461dd; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-foursquare{ + background-color:#e65678; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-github{ + background-color:#24292d; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-goodreads{ + background-color:#eceadd; + color:#382110; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-google{ + background-color:#ea4434; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-instagram{ + background-color:#f00075; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-lastfm{ + background-color:#e21b24; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-linkedin{ + background-color:#0d66c2; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-mastodon{ + background-color:#3288d4; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-medium{ + background-color:#02ab6c; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-meetup{ + background-color:#f6405f; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-patreon{ + background-color:#ff424d; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pinterest{ + background-color:#e60122; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pocket{ + background-color:#ef4155; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-reddit{ + background-color:#ff4500; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-skype{ + background-color:#0478d7; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-snapchat{ + stroke:#000; + background-color:#fefc00; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-soundcloud{ + background-color:#ff5600; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-spotify{ + background-color:#1bd760; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-telegram{ + background-color:#2aabee; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-threads,.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-tiktok{ + background-color:#000; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-tumblr{ + background-color:#011835; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitch{ + background-color:#6440a4; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitter{ + background-color:#1da1f2; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vimeo{ + background-color:#1eb7ea; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vk{ + background-color:#4680c2; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-wordpress{ + background-color:#3499cd; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-whatsapp{ + background-color:#25d366; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-x{ + background-color:#000; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-yelp{ + background-color:#d32422; + color:#fff; +} +.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-youtube{ + background-color:red; + color:#fff; +} + +.wp-block-social-links.is-style-logos-only .wp-social-link{ + background:none; +} +.wp-block-social-links.is-style-logos-only .wp-social-link a{ + padding:0; +} +.wp-block-social-links.is-style-logos-only .wp-social-link svg{ + height:1.25em; + width:1.25em; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-amazon{ + color:#f90; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-bandcamp{ + color:#1ea0c3; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-behance{ + color:#0757fe; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-codepen{ + color:#1e1f26; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-deviantart{ + color:#02e49b; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-dribbble{ + color:#e94c89; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-dropbox{ + color:#4280ff; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-etsy{ + color:#f45800; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-facebook{ + color:#1778f2; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-fivehundredpx{ + color:#000; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-flickr{ + color:#0461dd; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-foursquare{ + color:#e65678; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-github{ + color:#24292d; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-goodreads{ + color:#382110; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-google{ + color:#ea4434; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-instagram{ + color:#f00075; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-lastfm{ + color:#e21b24; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-linkedin{ + color:#0d66c2; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-mastodon{ + color:#3288d4; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-medium{ + color:#02ab6c; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-meetup{ + color:#f6405f; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-patreon{ + color:#ff424d; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-pinterest{ + color:#e60122; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-pocket{ + color:#ef4155; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-reddit{ + color:#ff4500; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-skype{ + color:#0478d7; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-snapchat{ + stroke:#000; + color:#fff; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-soundcloud{ + color:#ff5600; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-spotify{ + color:#1bd760; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-telegram{ + color:#2aabee; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-threads,.wp-block-social-links.is-style-logos-only .wp-social-link-tiktok{ + color:#000; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-tumblr{ + color:#011835; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-twitch{ + color:#6440a4; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-twitter{ + color:#1da1f2; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-vimeo{ + color:#1eb7ea; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-vk{ + color:#4680c2; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-whatsapp{ + color:#25d366; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-wordpress{ + color:#3499cd; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-x{ + color:#000; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-yelp{ + color:#d32422; +} +.wp-block-social-links.is-style-logos-only .wp-social-link-youtube{ + color:red; +} + +.wp-block-social-links.is-style-pill-shape .wp-social-link{ + width:auto; +} +.wp-block-social-links.is-style-pill-shape .wp-social-link a{ + padding-left:.66667em; + padding-right:.66667em; +} + +.wp-block-social-links:not(.has-icon-color):not(.has-icon-background-color) .wp-social-link-snapchat .wp-block-social-link-label{ + color:#000; +}
\ No newline at end of file diff --git a/wp-includes/blocks/social-links/style.min.css b/wp-includes/blocks/social-links/style.min.css new file mode 100644 index 0000000..050e5ef --- /dev/null +++ b/wp-includes/blocks/social-links/style.min.css @@ -0,0 +1 @@ +.wp-block-social-links{background:none;box-sizing:border-box;margin-left:0;padding-left:0;padding-right:0;text-indent:0}.wp-block-social-links .wp-social-link a,.wp-block-social-links .wp-social-link a:hover{border-bottom:0;box-shadow:none;text-decoration:none}.wp-block-social-links .wp-social-link a{padding:.25em}.wp-block-social-links .wp-social-link svg{height:1em;width:1em}.wp-block-social-links .wp-social-link span:not(.screen-reader-text){font-size:.65em;margin-left:.5em;margin-right:.5em}.wp-block-social-links.has-small-icon-size{font-size:16px}.wp-block-social-links,.wp-block-social-links.has-normal-icon-size{font-size:24px}.wp-block-social-links.has-large-icon-size{font-size:36px}.wp-block-social-links.has-huge-icon-size{font-size:48px}.wp-block-social-links.aligncenter{display:flex;justify-content:center}.wp-block-social-links.alignright{justify-content:flex-end}.wp-block-social-link{border-radius:9999px;display:block;height:auto;transition:transform .1s ease}@media (prefers-reduced-motion:reduce){.wp-block-social-link{transition-delay:0s;transition-duration:0s}}.wp-block-social-link a{align-items:center;display:flex;line-height:0;transition:transform .1s ease}.wp-block-social-link:hover{transform:scale(1.1)}.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor svg,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor:active,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor:hover,.wp-block-social-links .wp-block-social-link .wp-block-social-link-anchor:visited{fill:currentColor;color:currentColor}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link{background-color:#f0f0f0;color:#444}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-amazon{background-color:#f90;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-bandcamp{background-color:#1ea0c3;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-behance{background-color:#0757fe;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-codepen{background-color:#1e1f26;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-deviantart{background-color:#02e49b;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dribbble{background-color:#e94c89;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dropbox{background-color:#4280ff;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-etsy{background-color:#f45800;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-facebook{background-color:#1778f2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-fivehundredpx{background-color:#000;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-flickr{background-color:#0461dd;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-foursquare{background-color:#e65678;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-github{background-color:#24292d;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-goodreads{background-color:#eceadd;color:#382110}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-google{background-color:#ea4434;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-instagram{background-color:#f00075;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-lastfm{background-color:#e21b24;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-linkedin{background-color:#0d66c2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-mastodon{background-color:#3288d4;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-medium{background-color:#02ab6c;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-meetup{background-color:#f6405f;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-patreon{background-color:#ff424d;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pinterest{background-color:#e60122;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pocket{background-color:#ef4155;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-reddit{background-color:#ff4500;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-skype{background-color:#0478d7;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-snapchat{stroke:#000;background-color:#fefc00;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-soundcloud{background-color:#ff5600;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-spotify{background-color:#1bd760;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-telegram{background-color:#2aabee;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-threads,.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-tiktok{background-color:#000;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-tumblr{background-color:#011835;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitch{background-color:#6440a4;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitter{background-color:#1da1f2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vimeo{background-color:#1eb7ea;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vk{background-color:#4680c2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-wordpress{background-color:#3499cd;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-whatsapp{background-color:#25d366;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-x{background-color:#000;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-yelp{background-color:#d32422;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-youtube{background-color:red;color:#fff}.wp-block-social-links.is-style-logos-only .wp-social-link{background:none}.wp-block-social-links.is-style-logos-only .wp-social-link a{padding:0}.wp-block-social-links.is-style-logos-only .wp-social-link svg{height:1.25em;width:1.25em}.wp-block-social-links.is-style-logos-only .wp-social-link-amazon{color:#f90}.wp-block-social-links.is-style-logos-only .wp-social-link-bandcamp{color:#1ea0c3}.wp-block-social-links.is-style-logos-only .wp-social-link-behance{color:#0757fe}.wp-block-social-links.is-style-logos-only .wp-social-link-codepen{color:#1e1f26}.wp-block-social-links.is-style-logos-only .wp-social-link-deviantart{color:#02e49b}.wp-block-social-links.is-style-logos-only .wp-social-link-dribbble{color:#e94c89}.wp-block-social-links.is-style-logos-only .wp-social-link-dropbox{color:#4280ff}.wp-block-social-links.is-style-logos-only .wp-social-link-etsy{color:#f45800}.wp-block-social-links.is-style-logos-only .wp-social-link-facebook{color:#1778f2}.wp-block-social-links.is-style-logos-only .wp-social-link-fivehundredpx{color:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-flickr{color:#0461dd}.wp-block-social-links.is-style-logos-only .wp-social-link-foursquare{color:#e65678}.wp-block-social-links.is-style-logos-only .wp-social-link-github{color:#24292d}.wp-block-social-links.is-style-logos-only .wp-social-link-goodreads{color:#382110}.wp-block-social-links.is-style-logos-only .wp-social-link-google{color:#ea4434}.wp-block-social-links.is-style-logos-only .wp-social-link-instagram{color:#f00075}.wp-block-social-links.is-style-logos-only .wp-social-link-lastfm{color:#e21b24}.wp-block-social-links.is-style-logos-only .wp-social-link-linkedin{color:#0d66c2}.wp-block-social-links.is-style-logos-only .wp-social-link-mastodon{color:#3288d4}.wp-block-social-links.is-style-logos-only .wp-social-link-medium{color:#02ab6c}.wp-block-social-links.is-style-logos-only .wp-social-link-meetup{color:#f6405f}.wp-block-social-links.is-style-logos-only .wp-social-link-patreon{color:#ff424d}.wp-block-social-links.is-style-logos-only .wp-social-link-pinterest{color:#e60122}.wp-block-social-links.is-style-logos-only .wp-social-link-pocket{color:#ef4155}.wp-block-social-links.is-style-logos-only .wp-social-link-reddit{color:#ff4500}.wp-block-social-links.is-style-logos-only .wp-social-link-skype{color:#0478d7}.wp-block-social-links.is-style-logos-only .wp-social-link-snapchat{stroke:#000;color:#fff}.wp-block-social-links.is-style-logos-only .wp-social-link-soundcloud{color:#ff5600}.wp-block-social-links.is-style-logos-only .wp-social-link-spotify{color:#1bd760}.wp-block-social-links.is-style-logos-only .wp-social-link-telegram{color:#2aabee}.wp-block-social-links.is-style-logos-only .wp-social-link-threads,.wp-block-social-links.is-style-logos-only .wp-social-link-tiktok{color:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-tumblr{color:#011835}.wp-block-social-links.is-style-logos-only .wp-social-link-twitch{color:#6440a4}.wp-block-social-links.is-style-logos-only .wp-social-link-twitter{color:#1da1f2}.wp-block-social-links.is-style-logos-only .wp-social-link-vimeo{color:#1eb7ea}.wp-block-social-links.is-style-logos-only .wp-social-link-vk{color:#4680c2}.wp-block-social-links.is-style-logos-only .wp-social-link-whatsapp{color:#25d366}.wp-block-social-links.is-style-logos-only .wp-social-link-wordpress{color:#3499cd}.wp-block-social-links.is-style-logos-only .wp-social-link-x{color:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-yelp{color:#d32422}.wp-block-social-links.is-style-logos-only .wp-social-link-youtube{color:red}.wp-block-social-links.is-style-pill-shape .wp-social-link{width:auto}.wp-block-social-links.is-style-pill-shape .wp-social-link a{padding-left:.66667em;padding-right:.66667em}.wp-block-social-links:not(.has-icon-color):not(.has-icon-background-color) .wp-social-link-snapchat .wp-block-social-link-label{color:#000}
\ No newline at end of file diff --git a/wp-includes/blocks/spacer/block.json b/wp-includes/blocks/spacer/block.json new file mode 100644 index 0000000..a9da8d5 --- /dev/null +++ b/wp-includes/blocks/spacer/block.json @@ -0,0 +1,30 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/spacer", + "title": "Spacer", + "category": "design", + "description": "Add white space between blocks and customize its height.", + "textdomain": "default", + "attributes": { + "height": { + "type": "string", + "default": "100px" + }, + "width": { + "type": "string" + } + }, + "usesContext": [ "orientation" ], + "supports": { + "anchor": true, + "spacing": { + "margin": [ "top", "bottom" ], + "__experimentalDefaultControls": { + "margin": true + } + } + }, + "editorStyle": "wp-block-spacer-editor", + "style": "wp-block-spacer" +} diff --git a/wp-includes/blocks/spacer/editor-rtl.css b/wp-includes/blocks/spacer/editor-rtl.css new file mode 100644 index 0000000..6602e84 --- /dev/null +++ b/wp-includes/blocks/spacer/editor-rtl.css @@ -0,0 +1,31 @@ +.block-editor-block-list__block[data-type="core/spacer"]:before{ + content:""; + display:block; + height:100%; + min-height:8px; + min-width:8px; + position:absolute; + width:100%; + z-index:1; +} + +.block-library-spacer__resize-container.has-show-handle,.wp-block-spacer.is-hovered .block-library-spacer__resize-container,.wp-block-spacer.is-selected.custom-sizes-disabled{ + background:rgba(0,0,0,.1); +} +.is-dark-theme .block-library-spacer__resize-container.has-show-handle,.is-dark-theme .wp-block-spacer.is-hovered .block-library-spacer__resize-container,.is-dark-theme .wp-block-spacer.is-selected.custom-sizes-disabled{ + background:hsla(0,0%,100%,.15); +} + +.block-library-spacer__resize-container{ + clear:both; +} +.block-library-spacer__resize-container:not(.is-resizing){ + height:100% !important; + width:100% !important; +} +.block-library-spacer__resize-container .components-resizable-box__handle:before{ + content:none; +} +.block-library-spacer__resize-container.resize-horizontal{ + margin-bottom:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/spacer/editor-rtl.min.css b/wp-includes/blocks/spacer/editor-rtl.min.css new file mode 100644 index 0000000..1200948 --- /dev/null +++ b/wp-includes/blocks/spacer/editor-rtl.min.css @@ -0,0 +1 @@ +.block-editor-block-list__block[data-type="core/spacer"]:before{content:"";display:block;height:100%;min-height:8px;min-width:8px;position:absolute;width:100%;z-index:1}.block-library-spacer__resize-container.has-show-handle,.wp-block-spacer.is-hovered .block-library-spacer__resize-container,.wp-block-spacer.is-selected.custom-sizes-disabled{background:rgba(0,0,0,.1)}.is-dark-theme .block-library-spacer__resize-container.has-show-handle,.is-dark-theme .wp-block-spacer.is-hovered .block-library-spacer__resize-container,.is-dark-theme .wp-block-spacer.is-selected.custom-sizes-disabled{background:hsla(0,0%,100%,.15)}.block-library-spacer__resize-container{clear:both}.block-library-spacer__resize-container:not(.is-resizing){height:100%!important;width:100%!important}.block-library-spacer__resize-container .components-resizable-box__handle:before{content:none}.block-library-spacer__resize-container.resize-horizontal{margin-bottom:0}
\ No newline at end of file diff --git a/wp-includes/blocks/spacer/editor.css b/wp-includes/blocks/spacer/editor.css new file mode 100644 index 0000000..6602e84 --- /dev/null +++ b/wp-includes/blocks/spacer/editor.css @@ -0,0 +1,31 @@ +.block-editor-block-list__block[data-type="core/spacer"]:before{ + content:""; + display:block; + height:100%; + min-height:8px; + min-width:8px; + position:absolute; + width:100%; + z-index:1; +} + +.block-library-spacer__resize-container.has-show-handle,.wp-block-spacer.is-hovered .block-library-spacer__resize-container,.wp-block-spacer.is-selected.custom-sizes-disabled{ + background:rgba(0,0,0,.1); +} +.is-dark-theme .block-library-spacer__resize-container.has-show-handle,.is-dark-theme .wp-block-spacer.is-hovered .block-library-spacer__resize-container,.is-dark-theme .wp-block-spacer.is-selected.custom-sizes-disabled{ + background:hsla(0,0%,100%,.15); +} + +.block-library-spacer__resize-container{ + clear:both; +} +.block-library-spacer__resize-container:not(.is-resizing){ + height:100% !important; + width:100% !important; +} +.block-library-spacer__resize-container .components-resizable-box__handle:before{ + content:none; +} +.block-library-spacer__resize-container.resize-horizontal{ + margin-bottom:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/spacer/editor.min.css b/wp-includes/blocks/spacer/editor.min.css new file mode 100644 index 0000000..1200948 --- /dev/null +++ b/wp-includes/blocks/spacer/editor.min.css @@ -0,0 +1 @@ +.block-editor-block-list__block[data-type="core/spacer"]:before{content:"";display:block;height:100%;min-height:8px;min-width:8px;position:absolute;width:100%;z-index:1}.block-library-spacer__resize-container.has-show-handle,.wp-block-spacer.is-hovered .block-library-spacer__resize-container,.wp-block-spacer.is-selected.custom-sizes-disabled{background:rgba(0,0,0,.1)}.is-dark-theme .block-library-spacer__resize-container.has-show-handle,.is-dark-theme .wp-block-spacer.is-hovered .block-library-spacer__resize-container,.is-dark-theme .wp-block-spacer.is-selected.custom-sizes-disabled{background:hsla(0,0%,100%,.15)}.block-library-spacer__resize-container{clear:both}.block-library-spacer__resize-container:not(.is-resizing){height:100%!important;width:100%!important}.block-library-spacer__resize-container .components-resizable-box__handle:before{content:none}.block-library-spacer__resize-container.resize-horizontal{margin-bottom:0}
\ No newline at end of file diff --git a/wp-includes/blocks/spacer/style-rtl.css b/wp-includes/blocks/spacer/style-rtl.css new file mode 100644 index 0000000..2f725be --- /dev/null +++ b/wp-includes/blocks/spacer/style-rtl.css @@ -0,0 +1,3 @@ +.wp-block-spacer{ + clear:both; +}
\ No newline at end of file diff --git a/wp-includes/blocks/spacer/style-rtl.min.css b/wp-includes/blocks/spacer/style-rtl.min.css new file mode 100644 index 0000000..80961df --- /dev/null +++ b/wp-includes/blocks/spacer/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-spacer{clear:both}
\ No newline at end of file diff --git a/wp-includes/blocks/spacer/style.css b/wp-includes/blocks/spacer/style.css new file mode 100644 index 0000000..2f725be --- /dev/null +++ b/wp-includes/blocks/spacer/style.css @@ -0,0 +1,3 @@ +.wp-block-spacer{ + clear:both; +}
\ No newline at end of file diff --git a/wp-includes/blocks/spacer/style.min.css b/wp-includes/blocks/spacer/style.min.css new file mode 100644 index 0000000..80961df --- /dev/null +++ b/wp-includes/blocks/spacer/style.min.css @@ -0,0 +1 @@ +.wp-block-spacer{clear:both}
\ No newline at end of file diff --git a/wp-includes/blocks/table/block.json b/wp-includes/blocks/table/block.json new file mode 100644 index 0000000..d1139d6 --- /dev/null +++ b/wp-includes/blocks/table/block.json @@ -0,0 +1,211 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/table", + "title": "Table", + "category": "text", + "description": "Create structured content in rows and columns to display information.", + "textdomain": "default", + "attributes": { + "hasFixedLayout": { + "type": "boolean", + "default": false + }, + "caption": { + "type": "string", + "source": "html", + "selector": "figcaption", + "default": "" + }, + "head": { + "type": "array", + "default": [], + "source": "query", + "selector": "thead tr", + "query": { + "cells": { + "type": "array", + "default": [], + "source": "query", + "selector": "td,th", + "query": { + "content": { + "type": "string", + "source": "html" + }, + "tag": { + "type": "string", + "default": "td", + "source": "tag" + }, + "scope": { + "type": "string", + "source": "attribute", + "attribute": "scope" + }, + "align": { + "type": "string", + "source": "attribute", + "attribute": "data-align" + }, + "colspan": { + "type": "string", + "source": "attribute", + "attribute": "colspan" + }, + "rowspan": { + "type": "string", + "source": "attribute", + "attribute": "rowspan" + } + } + } + } + }, + "body": { + "type": "array", + "default": [], + "source": "query", + "selector": "tbody tr", + "query": { + "cells": { + "type": "array", + "default": [], + "source": "query", + "selector": "td,th", + "query": { + "content": { + "type": "string", + "source": "html" + }, + "tag": { + "type": "string", + "default": "td", + "source": "tag" + }, + "scope": { + "type": "string", + "source": "attribute", + "attribute": "scope" + }, + "align": { + "type": "string", + "source": "attribute", + "attribute": "data-align" + }, + "colspan": { + "type": "string", + "source": "attribute", + "attribute": "colspan" + }, + "rowspan": { + "type": "string", + "source": "attribute", + "attribute": "rowspan" + } + } + } + } + }, + "foot": { + "type": "array", + "default": [], + "source": "query", + "selector": "tfoot tr", + "query": { + "cells": { + "type": "array", + "default": [], + "source": "query", + "selector": "td,th", + "query": { + "content": { + "type": "string", + "source": "html" + }, + "tag": { + "type": "string", + "default": "td", + "source": "tag" + }, + "scope": { + "type": "string", + "source": "attribute", + "attribute": "scope" + }, + "align": { + "type": "string", + "source": "attribute", + "attribute": "data-align" + }, + "colspan": { + "type": "string", + "source": "attribute", + "attribute": "colspan" + }, + "rowspan": { + "type": "string", + "source": "attribute", + "attribute": "rowspan" + } + } + } + } + } + }, + "supports": { + "anchor": true, + "align": true, + "color": { + "__experimentalSkipSerialization": true, + "gradients": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontStyle": true, + "__experimentalFontWeight": true, + "__experimentalLetterSpacing": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalDefaultControls": { + "fontSize": true + } + }, + "__experimentalBorder": { + "__experimentalSkipSerialization": true, + "color": true, + "style": true, + "width": true, + "__experimentalDefaultControls": { + "color": true, + "style": true, + "width": true + } + }, + "__experimentalSelector": ".wp-block-table > table" + }, + "styles": [ + { + "name": "regular", + "label": "Default", + "isDefault": true + }, + { "name": "stripes", "label": "Stripes" } + ], + "editorStyle": "wp-block-table-editor", + "style": "wp-block-table" +} diff --git a/wp-includes/blocks/table/editor-rtl.css b/wp-includes/blocks/table/editor-rtl.css new file mode 100644 index 0000000..6be0c40 --- /dev/null +++ b/wp-includes/blocks/table/editor-rtl.css @@ -0,0 +1,57 @@ +.wp-block-table{ + margin:0; +} +.wp-block[data-align=center]>.wp-block-table,.wp-block[data-align=left]>.wp-block-table,.wp-block[data-align=right]>.wp-block-table{ + height:auto; +} +.wp-block[data-align=center]>.wp-block-table table,.wp-block[data-align=left]>.wp-block-table table,.wp-block[data-align=right]>.wp-block-table table{ + width:auto; +} +.wp-block[data-align=center]>.wp-block-table td,.wp-block[data-align=center]>.wp-block-table th,.wp-block[data-align=left]>.wp-block-table td,.wp-block[data-align=left]>.wp-block-table th,.wp-block[data-align=right]>.wp-block-table td,.wp-block[data-align=right]>.wp-block-table th{ + word-break:break-word; +} +.wp-block[data-align=center]>.wp-block-table{ + text-align:initial; +} +.wp-block[data-align=center]>.wp-block-table table{ + margin:0 auto; +} +.wp-block-table td,.wp-block-table th{ + border:1px solid; + padding:.5em; +} +.wp-block-table td.is-selected,.wp-block-table th.is-selected{ + border-color:var(--wp-admin-theme-color); + border-style:double; + box-shadow:inset 0 0 0 1px var(--wp-admin-theme-color); +} +.wp-block-table table.has-individual-borders td,.wp-block-table table.has-individual-borders th,.wp-block-table table.has-individual-borders tr,.wp-block-table table.has-individual-borders>*{ + border:1px solid; +} + +.blocks-table__placeholder-form.blocks-table__placeholder-form{ + align-items:flex-start; + display:flex; + flex-direction:column; +} +.blocks-table__placeholder-form.blocks-table__placeholder-form>*{ + margin-bottom:8px; +} +@media (min-width:782px){ + .blocks-table__placeholder-form.blocks-table__placeholder-form{ + align-items:flex-end; + flex-direction:row; + } + .blocks-table__placeholder-form.blocks-table__placeholder-form>*{ + margin-bottom:0; + } +} + +.blocks-table__placeholder-input{ + margin-bottom:0; + margin-left:8px; + width:112px; +} +.blocks-table__placeholder-input input{ + height:36px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/table/editor-rtl.min.css b/wp-includes/blocks/table/editor-rtl.min.css new file mode 100644 index 0000000..09fac9c --- /dev/null +++ b/wp-includes/blocks/table/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-table{margin:0}.wp-block[data-align=center]>.wp-block-table,.wp-block[data-align=left]>.wp-block-table,.wp-block[data-align=right]>.wp-block-table{height:auto}.wp-block[data-align=center]>.wp-block-table table,.wp-block[data-align=left]>.wp-block-table table,.wp-block[data-align=right]>.wp-block-table table{width:auto}.wp-block[data-align=center]>.wp-block-table td,.wp-block[data-align=center]>.wp-block-table th,.wp-block[data-align=left]>.wp-block-table td,.wp-block[data-align=left]>.wp-block-table th,.wp-block[data-align=right]>.wp-block-table td,.wp-block[data-align=right]>.wp-block-table th{word-break:break-word}.wp-block[data-align=center]>.wp-block-table{text-align:initial}.wp-block[data-align=center]>.wp-block-table table{margin:0 auto}.wp-block-table td,.wp-block-table th{border:1px solid;padding:.5em}.wp-block-table td.is-selected,.wp-block-table th.is-selected{border-color:var(--wp-admin-theme-color);border-style:double;box-shadow:inset 0 0 0 1px var(--wp-admin-theme-color)}.wp-block-table table.has-individual-borders td,.wp-block-table table.has-individual-borders th,.wp-block-table table.has-individual-borders tr,.wp-block-table table.has-individual-borders>*{border:1px solid}.blocks-table__placeholder-form.blocks-table__placeholder-form{align-items:flex-start;display:flex;flex-direction:column}.blocks-table__placeholder-form.blocks-table__placeholder-form>*{margin-bottom:8px}@media (min-width:782px){.blocks-table__placeholder-form.blocks-table__placeholder-form{align-items:flex-end;flex-direction:row}.blocks-table__placeholder-form.blocks-table__placeholder-form>*{margin-bottom:0}}.blocks-table__placeholder-input{margin-bottom:0;margin-left:8px;width:112px}.blocks-table__placeholder-input input{height:36px}
\ No newline at end of file diff --git a/wp-includes/blocks/table/editor.css b/wp-includes/blocks/table/editor.css new file mode 100644 index 0000000..0cdedbc --- /dev/null +++ b/wp-includes/blocks/table/editor.css @@ -0,0 +1,57 @@ +.wp-block-table{ + margin:0; +} +.wp-block[data-align=center]>.wp-block-table,.wp-block[data-align=left]>.wp-block-table,.wp-block[data-align=right]>.wp-block-table{ + height:auto; +} +.wp-block[data-align=center]>.wp-block-table table,.wp-block[data-align=left]>.wp-block-table table,.wp-block[data-align=right]>.wp-block-table table{ + width:auto; +} +.wp-block[data-align=center]>.wp-block-table td,.wp-block[data-align=center]>.wp-block-table th,.wp-block[data-align=left]>.wp-block-table td,.wp-block[data-align=left]>.wp-block-table th,.wp-block[data-align=right]>.wp-block-table td,.wp-block[data-align=right]>.wp-block-table th{ + word-break:break-word; +} +.wp-block[data-align=center]>.wp-block-table{ + text-align:initial; +} +.wp-block[data-align=center]>.wp-block-table table{ + margin:0 auto; +} +.wp-block-table td,.wp-block-table th{ + border:1px solid; + padding:.5em; +} +.wp-block-table td.is-selected,.wp-block-table th.is-selected{ + border-color:var(--wp-admin-theme-color); + border-style:double; + box-shadow:inset 0 0 0 1px var(--wp-admin-theme-color); +} +.wp-block-table table.has-individual-borders td,.wp-block-table table.has-individual-borders th,.wp-block-table table.has-individual-borders tr,.wp-block-table table.has-individual-borders>*{ + border:1px solid; +} + +.blocks-table__placeholder-form.blocks-table__placeholder-form{ + align-items:flex-start; + display:flex; + flex-direction:column; +} +.blocks-table__placeholder-form.blocks-table__placeholder-form>*{ + margin-bottom:8px; +} +@media (min-width:782px){ + .blocks-table__placeholder-form.blocks-table__placeholder-form{ + align-items:flex-end; + flex-direction:row; + } + .blocks-table__placeholder-form.blocks-table__placeholder-form>*{ + margin-bottom:0; + } +} + +.blocks-table__placeholder-input{ + margin-bottom:0; + margin-right:8px; + width:112px; +} +.blocks-table__placeholder-input input{ + height:36px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/table/editor.min.css b/wp-includes/blocks/table/editor.min.css new file mode 100644 index 0000000..25f31c9 --- /dev/null +++ b/wp-includes/blocks/table/editor.min.css @@ -0,0 +1 @@ +.wp-block-table{margin:0}.wp-block[data-align=center]>.wp-block-table,.wp-block[data-align=left]>.wp-block-table,.wp-block[data-align=right]>.wp-block-table{height:auto}.wp-block[data-align=center]>.wp-block-table table,.wp-block[data-align=left]>.wp-block-table table,.wp-block[data-align=right]>.wp-block-table table{width:auto}.wp-block[data-align=center]>.wp-block-table td,.wp-block[data-align=center]>.wp-block-table th,.wp-block[data-align=left]>.wp-block-table td,.wp-block[data-align=left]>.wp-block-table th,.wp-block[data-align=right]>.wp-block-table td,.wp-block[data-align=right]>.wp-block-table th{word-break:break-word}.wp-block[data-align=center]>.wp-block-table{text-align:initial}.wp-block[data-align=center]>.wp-block-table table{margin:0 auto}.wp-block-table td,.wp-block-table th{border:1px solid;padding:.5em}.wp-block-table td.is-selected,.wp-block-table th.is-selected{border-color:var(--wp-admin-theme-color);border-style:double;box-shadow:inset 0 0 0 1px var(--wp-admin-theme-color)}.wp-block-table table.has-individual-borders td,.wp-block-table table.has-individual-borders th,.wp-block-table table.has-individual-borders tr,.wp-block-table table.has-individual-borders>*{border:1px solid}.blocks-table__placeholder-form.blocks-table__placeholder-form{align-items:flex-start;display:flex;flex-direction:column}.blocks-table__placeholder-form.blocks-table__placeholder-form>*{margin-bottom:8px}@media (min-width:782px){.blocks-table__placeholder-form.blocks-table__placeholder-form{align-items:flex-end;flex-direction:row}.blocks-table__placeholder-form.blocks-table__placeholder-form>*{margin-bottom:0}}.blocks-table__placeholder-input{margin-bottom:0;margin-right:8px;width:112px}.blocks-table__placeholder-input input{height:36px}
\ No newline at end of file diff --git a/wp-includes/blocks/table/style-rtl.css b/wp-includes/blocks/table/style-rtl.css new file mode 100644 index 0000000..2adaeaa --- /dev/null +++ b/wp-includes/blocks/table/style-rtl.css @@ -0,0 +1,95 @@ +.wp-block-table{ + overflow-x:auto; +} +.wp-block-table table{ + border-collapse:collapse; + width:100%; +} +.wp-block-table thead{ + border-bottom:3px solid; +} +.wp-block-table tfoot{ + border-top:3px solid; +} +.wp-block-table td,.wp-block-table th{ + border:1px solid; + padding:.5em; +} +.wp-block-table .has-fixed-layout{ + table-layout:fixed; + width:100%; +} +.wp-block-table .has-fixed-layout td,.wp-block-table .has-fixed-layout th{ + word-break:break-word; +} +.wp-block-table.aligncenter,.wp-block-table.alignleft,.wp-block-table.alignright{ + display:table; + width:auto; +} +.wp-block-table.aligncenter td,.wp-block-table.aligncenter th,.wp-block-table.alignleft td,.wp-block-table.alignleft th,.wp-block-table.alignright td,.wp-block-table.alignright th{ + word-break:break-word; +} +.wp-block-table .has-subtle-light-gray-background-color{ + background-color:#f3f4f5; +} +.wp-block-table .has-subtle-pale-green-background-color{ + background-color:#e9fbe5; +} +.wp-block-table .has-subtle-pale-blue-background-color{ + background-color:#e7f5fe; +} +.wp-block-table .has-subtle-pale-pink-background-color{ + background-color:#fcf0ef; +} +.wp-block-table.is-style-stripes{ + background-color:transparent; + border-bottom:1px solid #f0f0f0; + border-collapse:inherit; + border-spacing:0; +} +.wp-block-table.is-style-stripes tbody tr:nth-child(odd){ + background-color:#f0f0f0; +} +.wp-block-table.is-style-stripes.has-subtle-light-gray-background-color tbody tr:nth-child(odd){ + background-color:#f3f4f5; +} +.wp-block-table.is-style-stripes.has-subtle-pale-green-background-color tbody tr:nth-child(odd){ + background-color:#e9fbe5; +} +.wp-block-table.is-style-stripes.has-subtle-pale-blue-background-color tbody tr:nth-child(odd){ + background-color:#e7f5fe; +} +.wp-block-table.is-style-stripes.has-subtle-pale-pink-background-color tbody tr:nth-child(odd){ + background-color:#fcf0ef; +} +.wp-block-table.is-style-stripes td,.wp-block-table.is-style-stripes th{ + border-color:transparent; +} +.wp-block-table .has-border-color td,.wp-block-table .has-border-color th,.wp-block-table .has-border-color tr,.wp-block-table .has-border-color>*{ + border-color:inherit; +} +.wp-block-table table[style*=border-top-color] tr:first-child,.wp-block-table table[style*=border-top-color] tr:first-child td,.wp-block-table table[style*=border-top-color] tr:first-child th,.wp-block-table table[style*=border-top-color]>*,.wp-block-table table[style*=border-top-color]>* td,.wp-block-table table[style*=border-top-color]>* th{ + border-top-color:inherit; +} +.wp-block-table table[style*=border-top-color] tr:not(:first-child){ + border-top-color:currentColor; +} +.wp-block-table table[style*=border-right-color] td:last-child,.wp-block-table table[style*=border-right-color] th,.wp-block-table table[style*=border-right-color] tr,.wp-block-table table[style*=border-right-color]>*{ + border-left-color:inherit; +} +.wp-block-table table[style*=border-bottom-color] tr:last-child,.wp-block-table table[style*=border-bottom-color] tr:last-child td,.wp-block-table table[style*=border-bottom-color] tr:last-child th,.wp-block-table table[style*=border-bottom-color]>*,.wp-block-table table[style*=border-bottom-color]>* td,.wp-block-table table[style*=border-bottom-color]>* th{ + border-bottom-color:inherit; +} +.wp-block-table table[style*=border-bottom-color] tr:not(:last-child){ + border-bottom-color:currentColor; +} +.wp-block-table table[style*=border-left-color] td:first-child,.wp-block-table table[style*=border-left-color] th,.wp-block-table table[style*=border-left-color] tr,.wp-block-table table[style*=border-left-color]>*{ + border-right-color:inherit; +} +.wp-block-table table[style*=border-style] td,.wp-block-table table[style*=border-style] th,.wp-block-table table[style*=border-style] tr,.wp-block-table table[style*=border-style]>*{ + border-style:inherit; +} +.wp-block-table table[style*=border-width] td,.wp-block-table table[style*=border-width] th,.wp-block-table table[style*=border-width] tr,.wp-block-table table[style*=border-width]>*{ + border-style:inherit; + border-width:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/table/style-rtl.min.css b/wp-includes/blocks/table/style-rtl.min.css new file mode 100644 index 0000000..079ed40 --- /dev/null +++ b/wp-includes/blocks/table/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-table{overflow-x:auto}.wp-block-table table{border-collapse:collapse;width:100%}.wp-block-table thead{border-bottom:3px solid}.wp-block-table tfoot{border-top:3px solid}.wp-block-table td,.wp-block-table th{border:1px solid;padding:.5em}.wp-block-table .has-fixed-layout{table-layout:fixed;width:100%}.wp-block-table .has-fixed-layout td,.wp-block-table .has-fixed-layout th{word-break:break-word}.wp-block-table.aligncenter,.wp-block-table.alignleft,.wp-block-table.alignright{display:table;width:auto}.wp-block-table.aligncenter td,.wp-block-table.aligncenter th,.wp-block-table.alignleft td,.wp-block-table.alignleft th,.wp-block-table.alignright td,.wp-block-table.alignright th{word-break:break-word}.wp-block-table .has-subtle-light-gray-background-color{background-color:#f3f4f5}.wp-block-table .has-subtle-pale-green-background-color{background-color:#e9fbe5}.wp-block-table .has-subtle-pale-blue-background-color{background-color:#e7f5fe}.wp-block-table .has-subtle-pale-pink-background-color{background-color:#fcf0ef}.wp-block-table.is-style-stripes{background-color:transparent;border-bottom:1px solid #f0f0f0;border-collapse:inherit;border-spacing:0}.wp-block-table.is-style-stripes tbody tr:nth-child(odd){background-color:#f0f0f0}.wp-block-table.is-style-stripes.has-subtle-light-gray-background-color tbody tr:nth-child(odd){background-color:#f3f4f5}.wp-block-table.is-style-stripes.has-subtle-pale-green-background-color tbody tr:nth-child(odd){background-color:#e9fbe5}.wp-block-table.is-style-stripes.has-subtle-pale-blue-background-color tbody tr:nth-child(odd){background-color:#e7f5fe}.wp-block-table.is-style-stripes.has-subtle-pale-pink-background-color tbody tr:nth-child(odd){background-color:#fcf0ef}.wp-block-table.is-style-stripes td,.wp-block-table.is-style-stripes th{border-color:transparent}.wp-block-table .has-border-color td,.wp-block-table .has-border-color th,.wp-block-table .has-border-color tr,.wp-block-table .has-border-color>*{border-color:inherit}.wp-block-table table[style*=border-top-color] tr:first-child,.wp-block-table table[style*=border-top-color] tr:first-child td,.wp-block-table table[style*=border-top-color] tr:first-child th,.wp-block-table table[style*=border-top-color]>*,.wp-block-table table[style*=border-top-color]>* td,.wp-block-table table[style*=border-top-color]>* th{border-top-color:inherit}.wp-block-table table[style*=border-top-color] tr:not(:first-child){border-top-color:currentColor}.wp-block-table table[style*=border-right-color] td:last-child,.wp-block-table table[style*=border-right-color] th,.wp-block-table table[style*=border-right-color] tr,.wp-block-table table[style*=border-right-color]>*{border-left-color:inherit}.wp-block-table table[style*=border-bottom-color] tr:last-child,.wp-block-table table[style*=border-bottom-color] tr:last-child td,.wp-block-table table[style*=border-bottom-color] tr:last-child th,.wp-block-table table[style*=border-bottom-color]>*,.wp-block-table table[style*=border-bottom-color]>* td,.wp-block-table table[style*=border-bottom-color]>* th{border-bottom-color:inherit}.wp-block-table table[style*=border-bottom-color] tr:not(:last-child){border-bottom-color:currentColor}.wp-block-table table[style*=border-left-color] td:first-child,.wp-block-table table[style*=border-left-color] th,.wp-block-table table[style*=border-left-color] tr,.wp-block-table table[style*=border-left-color]>*{border-right-color:inherit}.wp-block-table table[style*=border-style] td,.wp-block-table table[style*=border-style] th,.wp-block-table table[style*=border-style] tr,.wp-block-table table[style*=border-style]>*{border-style:inherit}.wp-block-table table[style*=border-width] td,.wp-block-table table[style*=border-width] th,.wp-block-table table[style*=border-width] tr,.wp-block-table table[style*=border-width]>*{border-style:inherit;border-width:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/table/style.css b/wp-includes/blocks/table/style.css new file mode 100644 index 0000000..ce4281a --- /dev/null +++ b/wp-includes/blocks/table/style.css @@ -0,0 +1,95 @@ +.wp-block-table{ + overflow-x:auto; +} +.wp-block-table table{ + border-collapse:collapse; + width:100%; +} +.wp-block-table thead{ + border-bottom:3px solid; +} +.wp-block-table tfoot{ + border-top:3px solid; +} +.wp-block-table td,.wp-block-table th{ + border:1px solid; + padding:.5em; +} +.wp-block-table .has-fixed-layout{ + table-layout:fixed; + width:100%; +} +.wp-block-table .has-fixed-layout td,.wp-block-table .has-fixed-layout th{ + word-break:break-word; +} +.wp-block-table.aligncenter,.wp-block-table.alignleft,.wp-block-table.alignright{ + display:table; + width:auto; +} +.wp-block-table.aligncenter td,.wp-block-table.aligncenter th,.wp-block-table.alignleft td,.wp-block-table.alignleft th,.wp-block-table.alignright td,.wp-block-table.alignright th{ + word-break:break-word; +} +.wp-block-table .has-subtle-light-gray-background-color{ + background-color:#f3f4f5; +} +.wp-block-table .has-subtle-pale-green-background-color{ + background-color:#e9fbe5; +} +.wp-block-table .has-subtle-pale-blue-background-color{ + background-color:#e7f5fe; +} +.wp-block-table .has-subtle-pale-pink-background-color{ + background-color:#fcf0ef; +} +.wp-block-table.is-style-stripes{ + background-color:transparent; + border-bottom:1px solid #f0f0f0; + border-collapse:inherit; + border-spacing:0; +} +.wp-block-table.is-style-stripes tbody tr:nth-child(odd){ + background-color:#f0f0f0; +} +.wp-block-table.is-style-stripes.has-subtle-light-gray-background-color tbody tr:nth-child(odd){ + background-color:#f3f4f5; +} +.wp-block-table.is-style-stripes.has-subtle-pale-green-background-color tbody tr:nth-child(odd){ + background-color:#e9fbe5; +} +.wp-block-table.is-style-stripes.has-subtle-pale-blue-background-color tbody tr:nth-child(odd){ + background-color:#e7f5fe; +} +.wp-block-table.is-style-stripes.has-subtle-pale-pink-background-color tbody tr:nth-child(odd){ + background-color:#fcf0ef; +} +.wp-block-table.is-style-stripes td,.wp-block-table.is-style-stripes th{ + border-color:transparent; +} +.wp-block-table .has-border-color td,.wp-block-table .has-border-color th,.wp-block-table .has-border-color tr,.wp-block-table .has-border-color>*{ + border-color:inherit; +} +.wp-block-table table[style*=border-top-color] tr:first-child,.wp-block-table table[style*=border-top-color] tr:first-child td,.wp-block-table table[style*=border-top-color] tr:first-child th,.wp-block-table table[style*=border-top-color]>*,.wp-block-table table[style*=border-top-color]>* td,.wp-block-table table[style*=border-top-color]>* th{ + border-top-color:inherit; +} +.wp-block-table table[style*=border-top-color] tr:not(:first-child){ + border-top-color:currentColor; +} +.wp-block-table table[style*=border-right-color] td:last-child,.wp-block-table table[style*=border-right-color] th,.wp-block-table table[style*=border-right-color] tr,.wp-block-table table[style*=border-right-color]>*{ + border-right-color:inherit; +} +.wp-block-table table[style*=border-bottom-color] tr:last-child,.wp-block-table table[style*=border-bottom-color] tr:last-child td,.wp-block-table table[style*=border-bottom-color] tr:last-child th,.wp-block-table table[style*=border-bottom-color]>*,.wp-block-table table[style*=border-bottom-color]>* td,.wp-block-table table[style*=border-bottom-color]>* th{ + border-bottom-color:inherit; +} +.wp-block-table table[style*=border-bottom-color] tr:not(:last-child){ + border-bottom-color:currentColor; +} +.wp-block-table table[style*=border-left-color] td:first-child,.wp-block-table table[style*=border-left-color] th,.wp-block-table table[style*=border-left-color] tr,.wp-block-table table[style*=border-left-color]>*{ + border-left-color:inherit; +} +.wp-block-table table[style*=border-style] td,.wp-block-table table[style*=border-style] th,.wp-block-table table[style*=border-style] tr,.wp-block-table table[style*=border-style]>*{ + border-style:inherit; +} +.wp-block-table table[style*=border-width] td,.wp-block-table table[style*=border-width] th,.wp-block-table table[style*=border-width] tr,.wp-block-table table[style*=border-width]>*{ + border-style:inherit; + border-width:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/table/style.min.css b/wp-includes/blocks/table/style.min.css new file mode 100644 index 0000000..a4b917a --- /dev/null +++ b/wp-includes/blocks/table/style.min.css @@ -0,0 +1 @@ +.wp-block-table{overflow-x:auto}.wp-block-table table{border-collapse:collapse;width:100%}.wp-block-table thead{border-bottom:3px solid}.wp-block-table tfoot{border-top:3px solid}.wp-block-table td,.wp-block-table th{border:1px solid;padding:.5em}.wp-block-table .has-fixed-layout{table-layout:fixed;width:100%}.wp-block-table .has-fixed-layout td,.wp-block-table .has-fixed-layout th{word-break:break-word}.wp-block-table.aligncenter,.wp-block-table.alignleft,.wp-block-table.alignright{display:table;width:auto}.wp-block-table.aligncenter td,.wp-block-table.aligncenter th,.wp-block-table.alignleft td,.wp-block-table.alignleft th,.wp-block-table.alignright td,.wp-block-table.alignright th{word-break:break-word}.wp-block-table .has-subtle-light-gray-background-color{background-color:#f3f4f5}.wp-block-table .has-subtle-pale-green-background-color{background-color:#e9fbe5}.wp-block-table .has-subtle-pale-blue-background-color{background-color:#e7f5fe}.wp-block-table .has-subtle-pale-pink-background-color{background-color:#fcf0ef}.wp-block-table.is-style-stripes{background-color:transparent;border-bottom:1px solid #f0f0f0;border-collapse:inherit;border-spacing:0}.wp-block-table.is-style-stripes tbody tr:nth-child(odd){background-color:#f0f0f0}.wp-block-table.is-style-stripes.has-subtle-light-gray-background-color tbody tr:nth-child(odd){background-color:#f3f4f5}.wp-block-table.is-style-stripes.has-subtle-pale-green-background-color tbody tr:nth-child(odd){background-color:#e9fbe5}.wp-block-table.is-style-stripes.has-subtle-pale-blue-background-color tbody tr:nth-child(odd){background-color:#e7f5fe}.wp-block-table.is-style-stripes.has-subtle-pale-pink-background-color tbody tr:nth-child(odd){background-color:#fcf0ef}.wp-block-table.is-style-stripes td,.wp-block-table.is-style-stripes th{border-color:transparent}.wp-block-table .has-border-color td,.wp-block-table .has-border-color th,.wp-block-table .has-border-color tr,.wp-block-table .has-border-color>*{border-color:inherit}.wp-block-table table[style*=border-top-color] tr:first-child,.wp-block-table table[style*=border-top-color] tr:first-child td,.wp-block-table table[style*=border-top-color] tr:first-child th,.wp-block-table table[style*=border-top-color]>*,.wp-block-table table[style*=border-top-color]>* td,.wp-block-table table[style*=border-top-color]>* th{border-top-color:inherit}.wp-block-table table[style*=border-top-color] tr:not(:first-child){border-top-color:currentColor}.wp-block-table table[style*=border-right-color] td:last-child,.wp-block-table table[style*=border-right-color] th,.wp-block-table table[style*=border-right-color] tr,.wp-block-table table[style*=border-right-color]>*{border-right-color:inherit}.wp-block-table table[style*=border-bottom-color] tr:last-child,.wp-block-table table[style*=border-bottom-color] tr:last-child td,.wp-block-table table[style*=border-bottom-color] tr:last-child th,.wp-block-table table[style*=border-bottom-color]>*,.wp-block-table table[style*=border-bottom-color]>* td,.wp-block-table table[style*=border-bottom-color]>* th{border-bottom-color:inherit}.wp-block-table table[style*=border-bottom-color] tr:not(:last-child){border-bottom-color:currentColor}.wp-block-table table[style*=border-left-color] td:first-child,.wp-block-table table[style*=border-left-color] th,.wp-block-table table[style*=border-left-color] tr,.wp-block-table table[style*=border-left-color]>*{border-left-color:inherit}.wp-block-table table[style*=border-style] td,.wp-block-table table[style*=border-style] th,.wp-block-table table[style*=border-style] tr,.wp-block-table table[style*=border-style]>*{border-style:inherit}.wp-block-table table[style*=border-width] td,.wp-block-table table[style*=border-width] th,.wp-block-table table[style*=border-width] tr,.wp-block-table table[style*=border-width]>*{border-style:inherit;border-width:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/table/theme-rtl.css b/wp-includes/blocks/table/theme-rtl.css new file mode 100644 index 0000000..064ae1d --- /dev/null +++ b/wp-includes/blocks/table/theme-rtl.css @@ -0,0 +1,14 @@ +.wp-block-table{ + margin:0 0 1em; +} +.wp-block-table td,.wp-block-table th{ + word-break:normal; +} +.wp-block-table figcaption{ + color:#555; + font-size:13px; + text-align:center; +} +.is-dark-theme .wp-block-table figcaption{ + color:hsla(0,0%,100%,.65); +}
\ No newline at end of file diff --git a/wp-includes/blocks/table/theme-rtl.min.css b/wp-includes/blocks/table/theme-rtl.min.css new file mode 100644 index 0000000..b781003 --- /dev/null +++ b/wp-includes/blocks/table/theme-rtl.min.css @@ -0,0 +1 @@ +.wp-block-table{margin:0 0 1em}.wp-block-table td,.wp-block-table th{word-break:normal}.wp-block-table figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-table figcaption{color:hsla(0,0%,100%,.65)}
\ No newline at end of file diff --git a/wp-includes/blocks/table/theme.css b/wp-includes/blocks/table/theme.css new file mode 100644 index 0000000..064ae1d --- /dev/null +++ b/wp-includes/blocks/table/theme.css @@ -0,0 +1,14 @@ +.wp-block-table{ + margin:0 0 1em; +} +.wp-block-table td,.wp-block-table th{ + word-break:normal; +} +.wp-block-table figcaption{ + color:#555; + font-size:13px; + text-align:center; +} +.is-dark-theme .wp-block-table figcaption{ + color:hsla(0,0%,100%,.65); +}
\ No newline at end of file diff --git a/wp-includes/blocks/table/theme.min.css b/wp-includes/blocks/table/theme.min.css new file mode 100644 index 0000000..b781003 --- /dev/null +++ b/wp-includes/blocks/table/theme.min.css @@ -0,0 +1 @@ +.wp-block-table{margin:0 0 1em}.wp-block-table td,.wp-block-table th{word-break:normal}.wp-block-table figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-table figcaption{color:hsla(0,0%,100%,.65)}
\ No newline at end of file diff --git a/wp-includes/blocks/tag-cloud.php b/wp-includes/blocks/tag-cloud.php new file mode 100644 index 0000000..7ff5f78 --- /dev/null +++ b/wp-includes/blocks/tag-cloud.php @@ -0,0 +1,54 @@ +<?php +/** + * Server-side rendering of the `core/tag-cloud` block. + * + * @package WordPress + */ + +/** + * Renders the `core/tag-cloud` block on server. + * + * @param array $attributes The block attributes. + * + * @return string Returns the tag cloud for selected taxonomy. + */ +function render_block_core_tag_cloud( $attributes ) { + $smallest_font_size = $attributes['smallestFontSize']; + $unit = ( preg_match( '/^[0-9.]+(?P<unit>[a-z%]+)$/i', $smallest_font_size, $m ) ? $m['unit'] : 'pt' ); + + $args = array( + 'echo' => false, + 'unit' => $unit, + 'taxonomy' => $attributes['taxonomy'], + 'show_count' => $attributes['showTagCounts'], + 'number' => $attributes['numberOfTags'], + 'smallest' => floatVal( $attributes['smallestFontSize'] ), + 'largest' => floatVal( $attributes['largestFontSize'] ), + ); + $tag_cloud = wp_tag_cloud( $args ); + + if ( ! $tag_cloud ) { + $tag_cloud = __( 'There’s no content to show here yet.' ); + } + + $wrapper_attributes = get_block_wrapper_attributes(); + + return sprintf( + '<p %1$s>%2$s</p>', + $wrapper_attributes, + $tag_cloud + ); +} + +/** + * Registers the `core/tag-cloud` block on server. + */ +function register_block_core_tag_cloud() { + register_block_type_from_metadata( + __DIR__ . '/tag-cloud', + array( + 'render_callback' => 'render_block_core_tag_cloud', + ) + ); +} +add_action( 'init', 'register_block_core_tag_cloud' ); diff --git a/wp-includes/blocks/tag-cloud/block.json b/wp-includes/blocks/tag-cloud/block.json new file mode 100644 index 0000000..9481dc9 --- /dev/null +++ b/wp-includes/blocks/tag-cloud/block.json @@ -0,0 +1,54 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/tag-cloud", + "title": "Tag Cloud", + "category": "widgets", + "description": "A cloud of your most used tags.", + "textdomain": "default", + "attributes": { + "numberOfTags": { + "type": "number", + "default": 45, + "minimum": 1, + "maximum": 100 + }, + "taxonomy": { + "type": "string", + "default": "post_tag" + }, + "showTagCounts": { + "type": "boolean", + "default": false + }, + "smallestFontSize": { + "type": "string", + "default": "8pt" + }, + "largestFontSize": { + "type": "string", + "default": "22pt" + } + }, + "styles": [ + { "name": "default", "label": "Default", "isDefault": true }, + { "name": "outline", "label": "Outline" } + ], + "supports": { + "html": false, + "align": true, + "spacing": { + "margin": true, + "padding": true + }, + "typography": { + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalLetterSpacing": true + } + }, + "editorStyle": "wp-block-tag-cloud-editor" +} diff --git a/wp-includes/blocks/tag-cloud/style-rtl.css b/wp-includes/blocks/tag-cloud/style-rtl.css new file mode 100644 index 0000000..3384c5d --- /dev/null +++ b/wp-includes/blocks/tag-cloud/style-rtl.css @@ -0,0 +1,32 @@ +.wp-block-tag-cloud{ + box-sizing:border-box; +} +.wp-block-tag-cloud.aligncenter{ + justify-content:center; + text-align:center; +} +.wp-block-tag-cloud.alignfull{ + padding-left:1em; + padding-right:1em; +} +.wp-block-tag-cloud a{ + display:inline-block; + margin-left:5px; +} +.wp-block-tag-cloud span{ + display:inline-block; + margin-right:5px; + text-decoration:none; +} +.wp-block-tag-cloud.is-style-outline{ + display:flex; + flex-wrap:wrap; + gap:1ch; +} +.wp-block-tag-cloud.is-style-outline a{ + border:1px solid; + font-size:unset !important; + margin-left:0; + padding:1ch 2ch; + text-decoration:none !important; +}
\ No newline at end of file diff --git a/wp-includes/blocks/tag-cloud/style-rtl.min.css b/wp-includes/blocks/tag-cloud/style-rtl.min.css new file mode 100644 index 0000000..3d540b2 --- /dev/null +++ b/wp-includes/blocks/tag-cloud/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-tag-cloud{box-sizing:border-box}.wp-block-tag-cloud.aligncenter{justify-content:center;text-align:center}.wp-block-tag-cloud.alignfull{padding-left:1em;padding-right:1em}.wp-block-tag-cloud a{display:inline-block;margin-left:5px}.wp-block-tag-cloud span{display:inline-block;margin-right:5px;text-decoration:none}.wp-block-tag-cloud.is-style-outline{display:flex;flex-wrap:wrap;gap:1ch}.wp-block-tag-cloud.is-style-outline a{border:1px solid;font-size:unset!important;margin-left:0;padding:1ch 2ch;text-decoration:none!important}
\ No newline at end of file diff --git a/wp-includes/blocks/tag-cloud/style.css b/wp-includes/blocks/tag-cloud/style.css new file mode 100644 index 0000000..4b4c71e --- /dev/null +++ b/wp-includes/blocks/tag-cloud/style.css @@ -0,0 +1,32 @@ +.wp-block-tag-cloud{ + box-sizing:border-box; +} +.wp-block-tag-cloud.aligncenter{ + justify-content:center; + text-align:center; +} +.wp-block-tag-cloud.alignfull{ + padding-left:1em; + padding-right:1em; +} +.wp-block-tag-cloud a{ + display:inline-block; + margin-right:5px; +} +.wp-block-tag-cloud span{ + display:inline-block; + margin-left:5px; + text-decoration:none; +} +.wp-block-tag-cloud.is-style-outline{ + display:flex; + flex-wrap:wrap; + gap:1ch; +} +.wp-block-tag-cloud.is-style-outline a{ + border:1px solid; + font-size:unset !important; + margin-right:0; + padding:1ch 2ch; + text-decoration:none !important; +}
\ No newline at end of file diff --git a/wp-includes/blocks/tag-cloud/style.min.css b/wp-includes/blocks/tag-cloud/style.min.css new file mode 100644 index 0000000..ac30a79 --- /dev/null +++ b/wp-includes/blocks/tag-cloud/style.min.css @@ -0,0 +1 @@ +.wp-block-tag-cloud{box-sizing:border-box}.wp-block-tag-cloud.aligncenter{justify-content:center;text-align:center}.wp-block-tag-cloud.alignfull{padding-left:1em;padding-right:1em}.wp-block-tag-cloud a{display:inline-block;margin-right:5px}.wp-block-tag-cloud span{display:inline-block;margin-left:5px;text-decoration:none}.wp-block-tag-cloud.is-style-outline{display:flex;flex-wrap:wrap;gap:1ch}.wp-block-tag-cloud.is-style-outline a{border:1px solid;font-size:unset!important;margin-right:0;padding:1ch 2ch;text-decoration:none!important}
\ No newline at end of file diff --git a/wp-includes/blocks/template-part.php b/wp-includes/blocks/template-part.php new file mode 100644 index 0000000..3ad4009 --- /dev/null +++ b/wp-includes/blocks/template-part.php @@ -0,0 +1,283 @@ +<?php +/** + * Server-side rendering of the `core/template-part` block. + * + * @package WordPress + */ + +/** + * Renders the `core/template-part` block on the server. + * + * @param array $attributes The block attributes. + * + * @return string The render. + */ +function render_block_core_template_part( $attributes ) { + static $seen_ids = array(); + + $template_part_id = null; + $content = null; + $area = WP_TEMPLATE_PART_AREA_UNCATEGORIZED; + $theme = isset( $attributes['theme'] ) ? $attributes['theme'] : get_stylesheet(); + + if ( isset( $attributes['slug'] ) && get_stylesheet() === $theme ) { + $template_part_id = $theme . '//' . $attributes['slug']; + $template_part_query = new WP_Query( + array( + 'post_type' => 'wp_template_part', + 'post_status' => 'publish', + 'post_name__in' => array( $attributes['slug'] ), + 'tax_query' => array( + array( + 'taxonomy' => 'wp_theme', + 'field' => 'name', + 'terms' => $theme, + ), + ), + 'posts_per_page' => 1, + 'no_found_rows' => true, + 'lazy_load_term_meta' => false, // Do not lazy load term meta, as template parts only have one term. + ) + ); + $template_part_post = $template_part_query->have_posts() ? $template_part_query->next_post() : null; + if ( $template_part_post ) { + // A published post might already exist if this template part was customized elsewhere + // or if it's part of a customized template. + $content = $template_part_post->post_content; + $area_terms = get_the_terms( $template_part_post, 'wp_template_part_area' ); + if ( ! is_wp_error( $area_terms ) && false !== $area_terms ) { + $area = $area_terms[0]->name; + } + /** + * Fires when a block template part is loaded from a template post stored in the database. + * + * @since 5.9.0 + * + * @param string $template_part_id The requested template part namespaced to the theme. + * @param array $attributes The block attributes. + * @param WP_Post $template_part_post The template part post object. + * @param string $content The template part content. + */ + do_action( 'render_block_core_template_part_post', $template_part_id, $attributes, $template_part_post, $content ); + } else { + $template_part_file_path = ''; + // Else, if the template part was provided by the active theme, + // render the corresponding file content. + if ( 0 === validate_file( $attributes['slug'] ) ) { + $block_template = get_block_file_template( $template_part_id, 'wp_template_part' ); + + $content = $block_template->content; + if ( isset( $block_template->area ) ) { + $area = $block_template->area; + } + } + + if ( '' !== $content && null !== $content ) { + /** + * Fires when a block template part is loaded from a template part in the theme. + * + * @since 5.9.0 + * + * @param string $template_part_id The requested template part namespaced to the theme. + * @param array $attributes The block attributes. + * @param string $template_part_file_path Absolute path to the template path. + * @param string $content The template part content. + */ + do_action( 'render_block_core_template_part_file', $template_part_id, $attributes, $template_part_file_path, $content ); + } else { + /** + * Fires when a requested block template part does not exist in the database nor in the theme. + * + * @since 5.9.0 + * + * @param string $template_part_id The requested template part namespaced to the theme. + * @param array $attributes The block attributes. + * @param string $template_part_file_path Absolute path to the not found template path. + */ + do_action( 'render_block_core_template_part_none', $template_part_id, $attributes, $template_part_file_path ); + } + } + } + + // WP_DEBUG_DISPLAY must only be honored when WP_DEBUG. This precedent + // is set in `wp_debug_mode()`. + $is_debug = WP_DEBUG && WP_DEBUG_DISPLAY; + + if ( is_null( $content ) && $is_debug ) { + if ( ! isset( $attributes['slug'] ) ) { + // If there is no slug this is a placeholder and we dont want to return any message. + return; + } + return sprintf( + /* translators: %s: Template part slug. */ + __( 'Template part has been deleted or is unavailable: %s' ), + $attributes['slug'] + ); + } + + if ( isset( $seen_ids[ $template_part_id ] ) ) { + return $is_debug ? + // translators: Visible only in the front end, this warning takes the place of a faulty block. + __( '[block rendering halted]' ) : + ''; + } + + // Look up area definition. + $area_definition = null; + $defined_areas = get_allowed_block_template_part_areas(); + foreach ( $defined_areas as $defined_area ) { + if ( $defined_area['area'] === $area ) { + $area_definition = $defined_area; + break; + } + } + + // If $area is not allowed, set it back to the uncategorized default. + if ( ! $area_definition ) { + $area = WP_TEMPLATE_PART_AREA_UNCATEGORIZED; + } + + // Run through the actions that are typically taken on the_content. + $content = shortcode_unautop( $content ); + $content = do_shortcode( $content ); + $seen_ids[ $template_part_id ] = true; + $content = do_blocks( $content ); + unset( $seen_ids[ $template_part_id ] ); + $content = wptexturize( $content ); + $content = convert_smilies( $content ); + $content = wp_filter_content_tags( $content, "template_part_{$area}" ); + + // Handle embeds for block template parts. + global $wp_embed; + $content = $wp_embed->autoembed( $content ); + + if ( empty( $attributes['tagName'] ) ) { + $area_tag = 'div'; + if ( $area_definition && isset( $area_definition['area_tag'] ) ) { + $area_tag = $area_definition['area_tag']; + } + $html_tag = $area_tag; + } else { + $html_tag = esc_attr( $attributes['tagName'] ); + } + $wrapper_attributes = get_block_wrapper_attributes(); + + return "<$html_tag $wrapper_attributes>" . str_replace( ']]>', ']]>', $content ) . "</$html_tag>"; +} + +/** + * Returns an array of area variation objects for the template part block. + * + * @param array $instance_variations The variations for instances. + * + * @return array Array containing the block variation objects. + */ +function build_template_part_block_area_variations( $instance_variations ) { + $variations = array(); + $defined_areas = get_allowed_block_template_part_areas(); + + foreach ( $defined_areas as $area ) { + if ( 'uncategorized' !== $area['area'] ) { + $has_instance_for_area = false; + foreach ( $instance_variations as $variation ) { + if ( $variation['attributes']['area'] === $area['area'] ) { + $has_instance_for_area = true; + break; + } + } + + $scope = $has_instance_for_area ? array() : array( 'inserter' ); + + $variations[] = array( + 'name' => 'area_' . $area['area'], + 'title' => $area['label'], + 'description' => $area['description'], + 'attributes' => array( + 'area' => $area['area'], + ), + 'scope' => $scope, + 'icon' => $area['icon'], + ); + } + } + return $variations; +} + +/** + * Returns an array of instance variation objects for the template part block + * + * @return array Array containing the block variation objects. + */ +function build_template_part_block_instance_variations() { + // Block themes are unavailable during installation. + if ( wp_installing() ) { + return array(); + } + + if ( ! current_theme_supports( 'block-templates' ) && ! current_theme_supports( 'block-template-parts' ) ) { + return array(); + } + + $variations = array(); + $template_parts = get_block_templates( + array( + 'post_type' => 'wp_template_part', + ), + 'wp_template_part' + ); + + $defined_areas = get_allowed_block_template_part_areas(); + $icon_by_area = array_combine( array_column( $defined_areas, 'area' ), array_column( $defined_areas, 'icon' ) ); + + foreach ( $template_parts as $template_part ) { + $variations[] = array( + 'name' => 'instance_' . sanitize_title( $template_part->slug ), + 'title' => $template_part->title, + // If there's no description for the template part don't show the + // block description. This is a bit hacky, but prevent the fallback + // by using a non-breaking space so that the value of description + // isn't falsey. + 'description' => $template_part->description || ' ', + 'attributes' => array( + 'slug' => $template_part->slug, + 'theme' => $template_part->theme, + 'area' => $template_part->area, + ), + 'scope' => array( 'inserter' ), + 'icon' => isset( $icon_by_area[ $template_part->area ] ) ? $icon_by_area[ $template_part->area ] : null, + 'example' => array( + 'attributes' => array( + 'slug' => $template_part->slug, + 'theme' => $template_part->theme, + 'area' => $template_part->area, + ), + ), + ); + } + return $variations; +} + +/** + * Returns an array of all template part block variations. + * + * @return array Array containing the block variation objects. + */ +function build_template_part_block_variations() { + $instance_variations = build_template_part_block_instance_variations(); + $area_variations = build_template_part_block_area_variations( $instance_variations ); + return array_merge( $area_variations, $instance_variations ); +} + +/** + * Registers the `core/template-part` block on the server. + */ +function register_block_core_template_part() { + register_block_type_from_metadata( + __DIR__ . '/template-part', + array( + 'render_callback' => 'render_block_core_template_part', + 'variations' => build_template_part_block_variations(), + ) + ); +} +add_action( 'init', 'register_block_core_template_part' ); diff --git a/wp-includes/blocks/template-part/block.json b/wp-includes/blocks/template-part/block.json new file mode 100644 index 0000000..9fe4311 --- /dev/null +++ b/wp-includes/blocks/template-part/block.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/template-part", + "title": "Template Part", + "category": "theme", + "description": "Edit the different global regions of your site, like the header, footer, sidebar, or create your own.", + "textdomain": "default", + "attributes": { + "slug": { + "type": "string" + }, + "theme": { + "type": "string" + }, + "tagName": { + "type": "string" + }, + "area": { + "type": "string" + } + }, + "supports": { + "align": true, + "html": false, + "reusable": false + }, + "editorStyle": "wp-block-template-part-editor" +} diff --git a/wp-includes/blocks/template-part/editor-rtl.css b/wp-includes/blocks/template-part/editor-rtl.css new file mode 100644 index 0000000..71fdf32 --- /dev/null +++ b/wp-includes/blocks/template-part/editor-rtl.css @@ -0,0 +1,33 @@ +.block-editor-template-part__selection-modal{ + z-index:1000001; +} +.block-editor-template-part__selection-modal .block-editor-block-patterns-list{ + column-count:2; + column-gap:24px; +} +@media (min-width:1280px){ + .block-editor-template-part__selection-modal .block-editor-block-patterns-list{ + column-count:3; + } +} +.block-editor-template-part__selection-modal .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{ + break-inside:avoid-column; +} + +.block-library-template-part__selection-search{ + background:#fff; + padding:16px 0; + position:sticky; + top:0; + z-index:2; +} + +.is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,.is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected,.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{ + box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color); +} +.is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after,.is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.block-editor-block-list__block:not([contenteditable]):focus:after{ + box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color); +} +.is-dark-theme .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after,.is-dark-theme .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.block-editor-block-list__block:not([contenteditable]):focus:after{ + box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff; +}
\ No newline at end of file diff --git a/wp-includes/blocks/template-part/editor-rtl.min.css b/wp-includes/blocks/template-part/editor-rtl.min.css new file mode 100644 index 0000000..a3af03d --- /dev/null +++ b/wp-includes/blocks/template-part/editor-rtl.min.css @@ -0,0 +1 @@ +.block-editor-template-part__selection-modal{z-index:1000001}.block-editor-template-part__selection-modal .block-editor-block-patterns-list{column-count:2;column-gap:24px}@media (min-width:1280px){.block-editor-template-part__selection-modal .block-editor-block-patterns-list{column-count:3}}.block-editor-template-part__selection-modal .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{break-inside:avoid-column}.block-library-template-part__selection-search{background:#fff;padding:16px 0;position:sticky;top:0;z-index:2}.is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,.is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected,.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{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color)}.is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after,.is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.block-editor-block-list__block:not([contenteditable]):focus:after{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color)}.is-dark-theme .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after,.is-dark-theme .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.block-editor-block-list__block:not([contenteditable]):focus:after{box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff}
\ No newline at end of file diff --git a/wp-includes/blocks/template-part/editor.css b/wp-includes/blocks/template-part/editor.css new file mode 100644 index 0000000..71fdf32 --- /dev/null +++ b/wp-includes/blocks/template-part/editor.css @@ -0,0 +1,33 @@ +.block-editor-template-part__selection-modal{ + z-index:1000001; +} +.block-editor-template-part__selection-modal .block-editor-block-patterns-list{ + column-count:2; + column-gap:24px; +} +@media (min-width:1280px){ + .block-editor-template-part__selection-modal .block-editor-block-patterns-list{ + column-count:3; + } +} +.block-editor-template-part__selection-modal .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{ + break-inside:avoid-column; +} + +.block-library-template-part__selection-search{ + background:#fff; + padding:16px 0; + position:sticky; + top:0; + z-index:2; +} + +.is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,.is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected,.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{ + box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color); +} +.is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after,.is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.block-editor-block-list__block:not([contenteditable]):focus:after{ + box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color); +} +.is-dark-theme .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after,.is-dark-theme .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.block-editor-block-list__block:not([contenteditable]):focus:after{ + box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff; +}
\ No newline at end of file diff --git a/wp-includes/blocks/template-part/editor.min.css b/wp-includes/blocks/template-part/editor.min.css new file mode 100644 index 0000000..a3af03d --- /dev/null +++ b/wp-includes/blocks/template-part/editor.min.css @@ -0,0 +1 @@ +.block-editor-template-part__selection-modal{z-index:1000001}.block-editor-template-part__selection-modal .block-editor-block-patterns-list{column-count:2;column-gap:24px}@media (min-width:1280px){.block-editor-template-part__selection-modal .block-editor-block-patterns-list{column-count:3}}.block-editor-template-part__selection-modal .block-editor-block-patterns-list .block-editor-block-patterns-list__list-item{break-inside:avoid-column}.block-library-template-part__selection-search{background:#fff;padding:16px 0;position:sticky;top:0;z-index:2}.is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,.is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected,.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{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color)}.is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after,.is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.block-editor-block-list__block:not([contenteditable]):focus:after{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color)}.is-dark-theme .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after,.is-dark-theme .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.block-editor-block-list__block:not([contenteditable]):focus:after{box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff}
\ No newline at end of file diff --git a/wp-includes/blocks/template-part/theme-rtl.css b/wp-includes/blocks/template-part/theme-rtl.css new file mode 100644 index 0000000..6c5262c --- /dev/null +++ b/wp-includes/blocks/template-part/theme-rtl.css @@ -0,0 +1,5 @@ +.wp-block-template-part.has-background{ + margin-bottom:0; + margin-top:0; + padding:1.25em 2.375em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/template-part/theme-rtl.min.css b/wp-includes/blocks/template-part/theme-rtl.min.css new file mode 100644 index 0000000..551636b --- /dev/null +++ b/wp-includes/blocks/template-part/theme-rtl.min.css @@ -0,0 +1 @@ +.wp-block-template-part.has-background{margin-bottom:0;margin-top:0;padding:1.25em 2.375em}
\ No newline at end of file diff --git a/wp-includes/blocks/template-part/theme.css b/wp-includes/blocks/template-part/theme.css new file mode 100644 index 0000000..6c5262c --- /dev/null +++ b/wp-includes/blocks/template-part/theme.css @@ -0,0 +1,5 @@ +.wp-block-template-part.has-background{ + margin-bottom:0; + margin-top:0; + padding:1.25em 2.375em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/template-part/theme.min.css b/wp-includes/blocks/template-part/theme.min.css new file mode 100644 index 0000000..551636b --- /dev/null +++ b/wp-includes/blocks/template-part/theme.min.css @@ -0,0 +1 @@ +.wp-block-template-part.has-background{margin-bottom:0;margin-top:0;padding:1.25em 2.375em}
\ No newline at end of file diff --git a/wp-includes/blocks/term-description.php b/wp-includes/blocks/term-description.php new file mode 100644 index 0000000..011ec28 --- /dev/null +++ b/wp-includes/blocks/term-description.php @@ -0,0 +1,49 @@ +<?php +/** + * Server-side rendering of the `core/term-description` block. + * + * @package WordPress + */ + +/** + * Renders the `core/term-description` block on the server. + * + * @param array $attributes Block attributes. + * + * @return string Returns the description of the current taxonomy term, if available + */ +function render_block_core_term_description( $attributes ) { + $term_description = ''; + + if ( is_category() || is_tag() || is_tax() ) { + $term_description = term_description(); + } + + if ( empty( $term_description ) ) { + return ''; + } + + $classes = array(); + if ( isset( $attributes['textAlign'] ) ) { + $classes[] = 'has-text-align-' . $attributes['textAlign']; + } + if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) { + $classes[] = 'has-link-color'; + } + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) ); + + return '<div ' . $wrapper_attributes . '>' . $term_description . '</div>'; +} + +/** + * Registers the `core/term-description` block on the server. + */ +function register_block_core_term_description() { + register_block_type_from_metadata( + __DIR__ . '/term-description', + array( + 'render_callback' => 'render_block_core_term_description', + ) + ); +} +add_action( 'init', 'register_block_core_term_description' ); diff --git a/wp-includes/blocks/term-description/block.json b/wp-includes/blocks/term-description/block.json new file mode 100644 index 0000000..fc91a4a --- /dev/null +++ b/wp-includes/blocks/term-description/block.json @@ -0,0 +1,42 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/term-description", + "title": "Term Description", + "category": "theme", + "description": "Display the description of categories, tags and custom taxonomies when viewing an archive.", + "textdomain": "default", + "attributes": { + "textAlign": { + "type": "string" + } + }, + "supports": { + "align": [ "wide", "full" ], + "html": false, + "color": { + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "spacing": { + "padding": true, + "margin": true + }, + "typography": { + "fontSize": true, + "lineHeight": true, + "__experimentalFontFamily": true, + "__experimentalFontWeight": true, + "__experimentalFontStyle": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalLetterSpacing": true, + "__experimentalDefaultControls": { + "fontSize": true + } + } + } +} diff --git a/wp-includes/blocks/term-description/style-rtl.css b/wp-includes/blocks/term-description/style-rtl.css new file mode 100644 index 0000000..f7c75cb --- /dev/null +++ b/wp-includes/blocks/term-description/style-rtl.css @@ -0,0 +1,9 @@ +:where(.wp-block-term-description){ + margin-bottom:var(--wp--style--block-gap); + margin-top:var(--wp--style--block-gap); +} + +.wp-block-term-description p{ + margin-bottom:0; + margin-top:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/term-description/style-rtl.min.css b/wp-includes/blocks/term-description/style-rtl.min.css new file mode 100644 index 0000000..a31628b --- /dev/null +++ b/wp-includes/blocks/term-description/style-rtl.min.css @@ -0,0 +1 @@ +:where(.wp-block-term-description){margin-bottom:var(--wp--style--block-gap);margin-top:var(--wp--style--block-gap)}.wp-block-term-description p{margin-bottom:0;margin-top:0}
\ No newline at end of file diff --git a/wp-includes/blocks/term-description/style.css b/wp-includes/blocks/term-description/style.css new file mode 100644 index 0000000..f7c75cb --- /dev/null +++ b/wp-includes/blocks/term-description/style.css @@ -0,0 +1,9 @@ +:where(.wp-block-term-description){ + margin-bottom:var(--wp--style--block-gap); + margin-top:var(--wp--style--block-gap); +} + +.wp-block-term-description p{ + margin-bottom:0; + margin-top:0; +}
\ No newline at end of file diff --git a/wp-includes/blocks/term-description/style.min.css b/wp-includes/blocks/term-description/style.min.css new file mode 100644 index 0000000..a31628b --- /dev/null +++ b/wp-includes/blocks/term-description/style.min.css @@ -0,0 +1 @@ +:where(.wp-block-term-description){margin-bottom:var(--wp--style--block-gap);margin-top:var(--wp--style--block-gap)}.wp-block-term-description p{margin-bottom:0;margin-top:0}
\ No newline at end of file diff --git a/wp-includes/blocks/text-columns/block.json b/wp-includes/blocks/text-columns/block.json new file mode 100644 index 0000000..3af169f --- /dev/null +++ b/wp-includes/blocks/text-columns/block.json @@ -0,0 +1,36 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/text-columns", + "title": "Text Columns (deprecated)", + "icon": "columns", + "category": "design", + "description": "This block is deprecated. Please use the Columns block instead.", + "textdomain": "default", + "attributes": { + "content": { + "type": "array", + "source": "query", + "selector": "p", + "query": { + "children": { + "type": "string", + "source": "html" + } + }, + "default": [ {}, {} ] + }, + "columns": { + "type": "number", + "default": 2 + }, + "width": { + "type": "string" + } + }, + "supports": { + "inserter": false + }, + "editorStyle": "wp-block-text-columns-editor", + "style": "wp-block-text-columns" +} diff --git a/wp-includes/blocks/text-columns/editor-rtl.css b/wp-includes/blocks/text-columns/editor-rtl.css new file mode 100644 index 0000000..713c3e0 --- /dev/null +++ b/wp-includes/blocks/text-columns/editor-rtl.css @@ -0,0 +1,3 @@ +.wp-block-text-columns .block-editor-rich-text__editable:focus{ + outline:1px solid #ddd; +}
\ No newline at end of file diff --git a/wp-includes/blocks/text-columns/editor-rtl.min.css b/wp-includes/blocks/text-columns/editor-rtl.min.css new file mode 100644 index 0000000..7d35c34 --- /dev/null +++ b/wp-includes/blocks/text-columns/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-text-columns .block-editor-rich-text__editable:focus{outline:1px solid #ddd}
\ No newline at end of file diff --git a/wp-includes/blocks/text-columns/editor.css b/wp-includes/blocks/text-columns/editor.css new file mode 100644 index 0000000..713c3e0 --- /dev/null +++ b/wp-includes/blocks/text-columns/editor.css @@ -0,0 +1,3 @@ +.wp-block-text-columns .block-editor-rich-text__editable:focus{ + outline:1px solid #ddd; +}
\ No newline at end of file diff --git a/wp-includes/blocks/text-columns/editor.min.css b/wp-includes/blocks/text-columns/editor.min.css new file mode 100644 index 0000000..7d35c34 --- /dev/null +++ b/wp-includes/blocks/text-columns/editor.min.css @@ -0,0 +1 @@ +.wp-block-text-columns .block-editor-rich-text__editable:focus{outline:1px solid #ddd}
\ No newline at end of file diff --git a/wp-includes/blocks/text-columns/style-rtl.css b/wp-includes/blocks/text-columns/style-rtl.css new file mode 100644 index 0000000..2d78912 --- /dev/null +++ b/wp-includes/blocks/text-columns/style-rtl.css @@ -0,0 +1,22 @@ +.wp-block-text-columns,.wp-block-text-columns.aligncenter{ + display:flex; +} +.wp-block-text-columns .wp-block-column{ + margin:0 1em; + padding:0; +} +.wp-block-text-columns .wp-block-column:first-child{ + margin-right:0; +} +.wp-block-text-columns .wp-block-column:last-child{ + margin-left:0; +} +.wp-block-text-columns.columns-2 .wp-block-column{ + width:50%; +} +.wp-block-text-columns.columns-3 .wp-block-column{ + width:33.33333%; +} +.wp-block-text-columns.columns-4 .wp-block-column{ + width:25%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/text-columns/style-rtl.min.css b/wp-includes/blocks/text-columns/style-rtl.min.css new file mode 100644 index 0000000..85469b5 --- /dev/null +++ b/wp-includes/blocks/text-columns/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-text-columns,.wp-block-text-columns.aligncenter{display:flex}.wp-block-text-columns .wp-block-column{margin:0 1em;padding:0}.wp-block-text-columns .wp-block-column:first-child{margin-right:0}.wp-block-text-columns .wp-block-column:last-child{margin-left:0}.wp-block-text-columns.columns-2 .wp-block-column{width:50%}.wp-block-text-columns.columns-3 .wp-block-column{width:33.33333%}.wp-block-text-columns.columns-4 .wp-block-column{width:25%}
\ No newline at end of file diff --git a/wp-includes/blocks/text-columns/style.css b/wp-includes/blocks/text-columns/style.css new file mode 100644 index 0000000..3bd86ae --- /dev/null +++ b/wp-includes/blocks/text-columns/style.css @@ -0,0 +1,22 @@ +.wp-block-text-columns,.wp-block-text-columns.aligncenter{ + display:flex; +} +.wp-block-text-columns .wp-block-column{ + margin:0 1em; + padding:0; +} +.wp-block-text-columns .wp-block-column:first-child{ + margin-left:0; +} +.wp-block-text-columns .wp-block-column:last-child{ + margin-right:0; +} +.wp-block-text-columns.columns-2 .wp-block-column{ + width:50%; +} +.wp-block-text-columns.columns-3 .wp-block-column{ + width:33.33333%; +} +.wp-block-text-columns.columns-4 .wp-block-column{ + width:25%; +}
\ No newline at end of file diff --git a/wp-includes/blocks/text-columns/style.min.css b/wp-includes/blocks/text-columns/style.min.css new file mode 100644 index 0000000..b97e725 --- /dev/null +++ b/wp-includes/blocks/text-columns/style.min.css @@ -0,0 +1 @@ +.wp-block-text-columns,.wp-block-text-columns.aligncenter{display:flex}.wp-block-text-columns .wp-block-column{margin:0 1em;padding:0}.wp-block-text-columns .wp-block-column:first-child{margin-left:0}.wp-block-text-columns .wp-block-column:last-child{margin-right:0}.wp-block-text-columns.columns-2 .wp-block-column{width:50%}.wp-block-text-columns.columns-3 .wp-block-column{width:33.33333%}.wp-block-text-columns.columns-4 .wp-block-column{width:25%}
\ No newline at end of file diff --git a/wp-includes/blocks/verse/block.json b/wp-includes/blocks/verse/block.json new file mode 100644 index 0000000..d0fffc8 --- /dev/null +++ b/wp-includes/blocks/verse/block.json @@ -0,0 +1,64 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/verse", + "title": "Verse", + "category": "text", + "description": "Insert poetry. Use special spacing formats. Or quote song lyrics.", + "keywords": [ "poetry", "poem" ], + "textdomain": "default", + "attributes": { + "content": { + "type": "string", + "source": "html", + "selector": "pre", + "default": "", + "__unstablePreserveWhiteSpace": true, + "__experimentalRole": "content" + }, + "textAlign": { + "type": "string" + } + }, + "supports": { + "anchor": true, + "color": { + "gradients": true, + "link": true, + "__experimentalDefaultControls": { + "background": true, + "text": true + } + }, + "typography": { + "fontSize": true, + "__experimentalFontFamily": true, + "lineHeight": true, + "__experimentalFontStyle": true, + "__experimentalFontWeight": true, + "__experimentalLetterSpacing": true, + "__experimentalTextTransform": true, + "__experimentalTextDecoration": true, + "__experimentalDefaultControls": { + "fontSize": true, + "fontAppearance": true + } + }, + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + }, + "__experimentalBorder": { + "radius": true, + "width": true, + "color": true, + "style": true + } + }, + "style": "wp-block-verse", + "editorStyle": "wp-block-verse-editor" +} diff --git a/wp-includes/blocks/verse/style-rtl.css b/wp-includes/blocks/verse/style-rtl.css new file mode 100644 index 0000000..d79023c --- /dev/null +++ b/wp-includes/blocks/verse/style-rtl.css @@ -0,0 +1,8 @@ +pre.wp-block-verse{ + overflow:auto; + white-space:pre-wrap; +} + +:where(pre.wp-block-verse){ + font-family:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/verse/style-rtl.min.css b/wp-includes/blocks/verse/style-rtl.min.css new file mode 100644 index 0000000..ac6084a --- /dev/null +++ b/wp-includes/blocks/verse/style-rtl.min.css @@ -0,0 +1 @@ +pre.wp-block-verse{overflow:auto;white-space:pre-wrap}:where(pre.wp-block-verse){font-family:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/verse/style.css b/wp-includes/blocks/verse/style.css new file mode 100644 index 0000000..d79023c --- /dev/null +++ b/wp-includes/blocks/verse/style.css @@ -0,0 +1,8 @@ +pre.wp-block-verse{ + overflow:auto; + white-space:pre-wrap; +} + +:where(pre.wp-block-verse){ + font-family:inherit; +}
\ No newline at end of file diff --git a/wp-includes/blocks/verse/style.min.css b/wp-includes/blocks/verse/style.min.css new file mode 100644 index 0000000..ac6084a --- /dev/null +++ b/wp-includes/blocks/verse/style.min.css @@ -0,0 +1 @@ +pre.wp-block-verse{overflow:auto;white-space:pre-wrap}:where(pre.wp-block-verse){font-family:inherit}
\ No newline at end of file diff --git a/wp-includes/blocks/video/block.json b/wp-includes/blocks/video/block.json new file mode 100644 index 0000000..debe6f2 --- /dev/null +++ b/wp-includes/blocks/video/block.json @@ -0,0 +1,95 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "core/video", + "title": "Video", + "category": "media", + "description": "Embed a video from your media library or upload a new one.", + "keywords": [ "movie" ], + "textdomain": "default", + "attributes": { + "autoplay": { + "type": "boolean", + "source": "attribute", + "selector": "video", + "attribute": "autoplay" + }, + "caption": { + "type": "string", + "source": "html", + "selector": "figcaption", + "__experimentalRole": "content" + }, + "controls": { + "type": "boolean", + "source": "attribute", + "selector": "video", + "attribute": "controls", + "default": true + }, + "id": { + "type": "number", + "__experimentalRole": "content" + }, + "loop": { + "type": "boolean", + "source": "attribute", + "selector": "video", + "attribute": "loop" + }, + "muted": { + "type": "boolean", + "source": "attribute", + "selector": "video", + "attribute": "muted" + }, + "poster": { + "type": "string", + "source": "attribute", + "selector": "video", + "attribute": "poster" + }, + "preload": { + "type": "string", + "source": "attribute", + "selector": "video", + "attribute": "preload", + "default": "metadata" + }, + "src": { + "type": "string", + "source": "attribute", + "selector": "video", + "attribute": "src", + "__experimentalRole": "content" + }, + "playsInline": { + "type": "boolean", + "source": "attribute", + "selector": "video", + "attribute": "playsinline" + }, + "tracks": { + "__experimentalRole": "content", + "type": "array", + "items": { + "type": "object" + }, + "default": [] + } + }, + "supports": { + "anchor": true, + "align": true, + "spacing": { + "margin": true, + "padding": true, + "__experimentalDefaultControls": { + "margin": false, + "padding": false + } + } + }, + "editorStyle": "wp-block-video-editor", + "style": "wp-block-video" +} diff --git a/wp-includes/blocks/video/editor-rtl.css b/wp-includes/blocks/video/editor-rtl.css new file mode 100644 index 0000000..c11fd2b --- /dev/null +++ b/wp-includes/blocks/video/editor-rtl.css @@ -0,0 +1,78 @@ +.wp-block-video.wp-block-video.is-selected .components-placeholder{ + background-color:#fff; + border:none; + border-radius:2px; + box-shadow:inset 0 0 0 1px #1e1e1e; + color:#1e1e1e; +} +.wp-block-video.wp-block-video.is-selected .components-placeholder>svg{ + opacity:0; +} +.wp-block-video.wp-block-video.is-selected .components-placeholder .components-placeholder__illustration{ + display:none; +} +.wp-block-video.wp-block-video.is-selected .components-placeholder:before{ + opacity:0; +} +.wp-block-video.wp-block-video .components-button,.wp-block-video.wp-block-video .components-placeholder__instructions,.wp-block-video.wp-block-video .components-placeholder__label{ + transition:none; +} + +.wp-block[data-align=center]>.wp-block-video{ + text-align:center; +} + +.wp-block-video{ + position:relative; +} +.wp-block-video.is-transient video{ + opacity:.3; +} +.wp-block-video .components-spinner{ + margin-right:-9px; + margin-top:-9px; + position:absolute; + right:50%; + top:50%; +} + +.editor-video-poster-control .components-base-control__label{ + display:block; +} +.editor-video-poster-control .components-button{ + margin-left:8px; +} + +.block-library-video-tracks-editor{ + z-index:159990; +} + +.block-library-video-tracks-editor__track-list-track{ + padding-right:12px; +} + +.block-library-video-tracks-editor__single-track-editor-kind-select{ + max-width:240px; +} + +.block-library-video-tracks-editor__single-track-editor-edit-track-label{ + color:#757575; + display:block; + font-size:11px; + font-weight:500; + margin-top:4px; + text-transform:uppercase; +} + +.block-library-video-tracks-editor>.components-popover__content{ + padding:0; + width:360px; +} + +.block-library-video-tracks-editor__add-tracks-container .components-menu-group__label,.block-library-video-tracks-editor__track-list .components-menu-group__label{ + padding:0; +} + +.block-library-video-tracks-editor__add-tracks-container,.block-library-video-tracks-editor__single-track-editor,.block-library-video-tracks-editor__track-list{ + padding:12px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/video/editor-rtl.min.css b/wp-includes/blocks/video/editor-rtl.min.css new file mode 100644 index 0000000..684bd3e --- /dev/null +++ b/wp-includes/blocks/video/editor-rtl.min.css @@ -0,0 +1 @@ +.wp-block-video.wp-block-video.is-selected .components-placeholder{background-color:#fff;border:none;border-radius:2px;box-shadow:inset 0 0 0 1px #1e1e1e;color:#1e1e1e}.wp-block-video.wp-block-video.is-selected .components-placeholder>svg{opacity:0}.wp-block-video.wp-block-video.is-selected .components-placeholder .components-placeholder__illustration{display:none}.wp-block-video.wp-block-video.is-selected .components-placeholder:before{opacity:0}.wp-block-video.wp-block-video .components-button,.wp-block-video.wp-block-video .components-placeholder__instructions,.wp-block-video.wp-block-video .components-placeholder__label{transition:none}.wp-block[data-align=center]>.wp-block-video{text-align:center}.wp-block-video{position:relative}.wp-block-video.is-transient video{opacity:.3}.wp-block-video .components-spinner{margin-right:-9px;margin-top:-9px;position:absolute;right:50%;top:50%}.editor-video-poster-control .components-base-control__label{display:block}.editor-video-poster-control .components-button{margin-left:8px}.block-library-video-tracks-editor{z-index:159990}.block-library-video-tracks-editor__track-list-track{padding-right:12px}.block-library-video-tracks-editor__single-track-editor-kind-select{max-width:240px}.block-library-video-tracks-editor__single-track-editor-edit-track-label{color:#757575;display:block;font-size:11px;font-weight:500;margin-top:4px;text-transform:uppercase}.block-library-video-tracks-editor>.components-popover__content{padding:0;width:360px}.block-library-video-tracks-editor__add-tracks-container .components-menu-group__label,.block-library-video-tracks-editor__track-list .components-menu-group__label{padding:0}.block-library-video-tracks-editor__add-tracks-container,.block-library-video-tracks-editor__single-track-editor,.block-library-video-tracks-editor__track-list{padding:12px}
\ No newline at end of file diff --git a/wp-includes/blocks/video/editor.css b/wp-includes/blocks/video/editor.css new file mode 100644 index 0000000..d1b94ba --- /dev/null +++ b/wp-includes/blocks/video/editor.css @@ -0,0 +1,78 @@ +.wp-block-video.wp-block-video.is-selected .components-placeholder{ + background-color:#fff; + border:none; + border-radius:2px; + box-shadow:inset 0 0 0 1px #1e1e1e; + color:#1e1e1e; +} +.wp-block-video.wp-block-video.is-selected .components-placeholder>svg{ + opacity:0; +} +.wp-block-video.wp-block-video.is-selected .components-placeholder .components-placeholder__illustration{ + display:none; +} +.wp-block-video.wp-block-video.is-selected .components-placeholder:before{ + opacity:0; +} +.wp-block-video.wp-block-video .components-button,.wp-block-video.wp-block-video .components-placeholder__instructions,.wp-block-video.wp-block-video .components-placeholder__label{ + transition:none; +} + +.wp-block[data-align=center]>.wp-block-video{ + text-align:center; +} + +.wp-block-video{ + position:relative; +} +.wp-block-video.is-transient video{ + opacity:.3; +} +.wp-block-video .components-spinner{ + left:50%; + margin-left:-9px; + margin-top:-9px; + position:absolute; + top:50%; +} + +.editor-video-poster-control .components-base-control__label{ + display:block; +} +.editor-video-poster-control .components-button{ + margin-right:8px; +} + +.block-library-video-tracks-editor{ + z-index:159990; +} + +.block-library-video-tracks-editor__track-list-track{ + padding-left:12px; +} + +.block-library-video-tracks-editor__single-track-editor-kind-select{ + max-width:240px; +} + +.block-library-video-tracks-editor__single-track-editor-edit-track-label{ + color:#757575; + display:block; + font-size:11px; + font-weight:500; + margin-top:4px; + text-transform:uppercase; +} + +.block-library-video-tracks-editor>.components-popover__content{ + padding:0; + width:360px; +} + +.block-library-video-tracks-editor__add-tracks-container .components-menu-group__label,.block-library-video-tracks-editor__track-list .components-menu-group__label{ + padding:0; +} + +.block-library-video-tracks-editor__add-tracks-container,.block-library-video-tracks-editor__single-track-editor,.block-library-video-tracks-editor__track-list{ + padding:12px; +}
\ No newline at end of file diff --git a/wp-includes/blocks/video/editor.min.css b/wp-includes/blocks/video/editor.min.css new file mode 100644 index 0000000..ca24a82 --- /dev/null +++ b/wp-includes/blocks/video/editor.min.css @@ -0,0 +1 @@ +.wp-block-video.wp-block-video.is-selected .components-placeholder{background-color:#fff;border:none;border-radius:2px;box-shadow:inset 0 0 0 1px #1e1e1e;color:#1e1e1e}.wp-block-video.wp-block-video.is-selected .components-placeholder>svg{opacity:0}.wp-block-video.wp-block-video.is-selected .components-placeholder .components-placeholder__illustration{display:none}.wp-block-video.wp-block-video.is-selected .components-placeholder:before{opacity:0}.wp-block-video.wp-block-video .components-button,.wp-block-video.wp-block-video .components-placeholder__instructions,.wp-block-video.wp-block-video .components-placeholder__label{transition:none}.wp-block[data-align=center]>.wp-block-video{text-align:center}.wp-block-video{position:relative}.wp-block-video.is-transient video{opacity:.3}.wp-block-video .components-spinner{left:50%;margin-left:-9px;margin-top:-9px;position:absolute;top:50%}.editor-video-poster-control .components-base-control__label{display:block}.editor-video-poster-control .components-button{margin-right:8px}.block-library-video-tracks-editor{z-index:159990}.block-library-video-tracks-editor__track-list-track{padding-left:12px}.block-library-video-tracks-editor__single-track-editor-kind-select{max-width:240px}.block-library-video-tracks-editor__single-track-editor-edit-track-label{color:#757575;display:block;font-size:11px;font-weight:500;margin-top:4px;text-transform:uppercase}.block-library-video-tracks-editor>.components-popover__content{padding:0;width:360px}.block-library-video-tracks-editor__add-tracks-container .components-menu-group__label,.block-library-video-tracks-editor__track-list .components-menu-group__label{padding:0}.block-library-video-tracks-editor__add-tracks-container,.block-library-video-tracks-editor__single-track-editor,.block-library-video-tracks-editor__track-list{padding:12px}
\ No newline at end of file diff --git a/wp-includes/blocks/video/style-rtl.css b/wp-includes/blocks/video/style-rtl.css new file mode 100644 index 0000000..e10f427 --- /dev/null +++ b/wp-includes/blocks/video/style-rtl.css @@ -0,0 +1,19 @@ +.wp-block-video{ + box-sizing:border-box; +} +.wp-block-video video{ + vertical-align:middle; + width:100%; +} +@supports (position:sticky){ + .wp-block-video [poster]{ + object-fit:cover; + } +} +.wp-block-video.aligncenter{ + text-align:center; +} +.wp-block-video figcaption{ + margin-bottom:1em; + margin-top:.5em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/video/style-rtl.min.css b/wp-includes/blocks/video/style-rtl.min.css new file mode 100644 index 0000000..43eb94a --- /dev/null +++ b/wp-includes/blocks/video/style-rtl.min.css @@ -0,0 +1 @@ +.wp-block-video{box-sizing:border-box}.wp-block-video video{vertical-align:middle;width:100%}@supports (position:sticky){.wp-block-video [poster]{object-fit:cover}}.wp-block-video.aligncenter{text-align:center}.wp-block-video figcaption{margin-bottom:1em;margin-top:.5em}
\ No newline at end of file diff --git a/wp-includes/blocks/video/style.css b/wp-includes/blocks/video/style.css new file mode 100644 index 0000000..e10f427 --- /dev/null +++ b/wp-includes/blocks/video/style.css @@ -0,0 +1,19 @@ +.wp-block-video{ + box-sizing:border-box; +} +.wp-block-video video{ + vertical-align:middle; + width:100%; +} +@supports (position:sticky){ + .wp-block-video [poster]{ + object-fit:cover; + } +} +.wp-block-video.aligncenter{ + text-align:center; +} +.wp-block-video figcaption{ + margin-bottom:1em; + margin-top:.5em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/video/style.min.css b/wp-includes/blocks/video/style.min.css new file mode 100644 index 0000000..43eb94a --- /dev/null +++ b/wp-includes/blocks/video/style.min.css @@ -0,0 +1 @@ +.wp-block-video{box-sizing:border-box}.wp-block-video video{vertical-align:middle;width:100%}@supports (position:sticky){.wp-block-video [poster]{object-fit:cover}}.wp-block-video.aligncenter{text-align:center}.wp-block-video figcaption{margin-bottom:1em;margin-top:.5em}
\ No newline at end of file diff --git a/wp-includes/blocks/video/theme-rtl.css b/wp-includes/blocks/video/theme-rtl.css new file mode 100644 index 0000000..384cff9 --- /dev/null +++ b/wp-includes/blocks/video/theme-rtl.css @@ -0,0 +1,12 @@ +.wp-block-video figcaption{ + color:#555; + font-size:13px; + text-align:center; +} +.is-dark-theme .wp-block-video figcaption{ + color:hsla(0,0%,100%,.65); +} + +.wp-block-video{ + margin:0 0 1em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/video/theme-rtl.min.css b/wp-includes/blocks/video/theme-rtl.min.css new file mode 100644 index 0000000..64b3a34 --- /dev/null +++ b/wp-includes/blocks/video/theme-rtl.min.css @@ -0,0 +1 @@ +.wp-block-video figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-video figcaption{color:hsla(0,0%,100%,.65)}.wp-block-video{margin:0 0 1em}
\ No newline at end of file diff --git a/wp-includes/blocks/video/theme.css b/wp-includes/blocks/video/theme.css new file mode 100644 index 0000000..384cff9 --- /dev/null +++ b/wp-includes/blocks/video/theme.css @@ -0,0 +1,12 @@ +.wp-block-video figcaption{ + color:#555; + font-size:13px; + text-align:center; +} +.is-dark-theme .wp-block-video figcaption{ + color:hsla(0,0%,100%,.65); +} + +.wp-block-video{ + margin:0 0 1em; +}
\ No newline at end of file diff --git a/wp-includes/blocks/video/theme.min.css b/wp-includes/blocks/video/theme.min.css new file mode 100644 index 0000000..64b3a34 --- /dev/null +++ b/wp-includes/blocks/video/theme.min.css @@ -0,0 +1 @@ +.wp-block-video figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-video figcaption{color:hsla(0,0%,100%,.65)}.wp-block-video{margin:0 0 1em}
\ No newline at end of file diff --git a/wp-includes/blocks/widget-group.php b/wp-includes/blocks/widget-group.php new file mode 100644 index 0000000..8c8584b --- /dev/null +++ b/wp-includes/blocks/widget-group.php @@ -0,0 +1,78 @@ +<?php +/** + * Server-side rendering of the `core/widget-group` block. + * + * @package WordPress + */ + +/** + * Renders the 'core/widget-group' block. + * + * @param array $attributes The block attributes. + * @param string $content The block content. + * @param WP_Block $block The block. + * + * @return string Rendered block. + */ +function render_block_core_widget_group( $attributes, $content, $block ) { + global $wp_registered_sidebars, $_sidebar_being_rendered; + + if ( isset( $wp_registered_sidebars[ $_sidebar_being_rendered ] ) ) { + $before_title = $wp_registered_sidebars[ $_sidebar_being_rendered ]['before_title']; + $after_title = $wp_registered_sidebars[ $_sidebar_being_rendered ]['after_title']; + } else { + $before_title = '<h2 class="widget-title">'; + $after_title = '</h2>'; + } + + $html = ''; + + if ( ! empty( $attributes['title'] ) ) { + $html .= $before_title . esc_html( $attributes['title'] ) . $after_title; + } + + $html .= '<div class="wp-widget-group__inner-blocks">'; + foreach ( $block->inner_blocks as $inner_block ) { + $html .= $inner_block->render(); + } + $html .= '</div>'; + + return $html; +} + +/** + * Registers the 'core/widget-group' block. + */ +function register_block_core_widget_group() { + register_block_type_from_metadata( + __DIR__ . '/widget-group', + array( + 'render_callback' => 'render_block_core_widget_group', + ) + ); +} + +add_action( 'init', 'register_block_core_widget_group' ); + +/** + * Make a note of the sidebar being rendered before WordPress starts rendering + * it. This lets us get to the current sidebar in + * render_block_core_widget_group(). + * + * @param int|string $index Index, name, or ID of the dynamic sidebar. + */ +function note_sidebar_being_rendered( $index ) { + global $_sidebar_being_rendered; + $_sidebar_being_rendered = $index; +} +add_action( 'dynamic_sidebar_before', 'note_sidebar_being_rendered' ); + +/** + * Clear whatever we set in note_sidebar_being_rendered() after WordPress + * finishes rendering a sidebar. + */ +function discard_sidebar_being_rendered() { + global $_sidebar_being_rendered; + unset( $_sidebar_being_rendered ); +} +add_action( 'dynamic_sidebar_after', 'discard_sidebar_being_rendered' ); diff --git a/wp-includes/blocks/widget-group/block.json b/wp-includes/blocks/widget-group/block.json new file mode 100644 index 0000000..c29e811 --- /dev/null +++ b/wp-includes/blocks/widget-group/block.json @@ -0,0 +1,18 @@ +{ + "apiVersion": 3, + "name": "core/widget-group", + "category": "widgets", + "attributes": { + "title": { + "type": "string" + } + }, + "supports": { + "html": false, + "inserter": true, + "customClassName": true, + "reusable": false + }, + "editorStyle": "wp-block-widget-group-editor", + "style": "wp-block-widget-group" +} |