From 5e5f69bcc9212ebe5ed330312151a7046dca3e89 Mon Sep 17 00:00:00 2001 From: Ryan Kienstra Date: Fri, 3 Mar 2023 12:48:46 -0600 Subject: [PATCH] On creating a new pattern, don't write to the pattern PHP file until you publish (#78) * On creating a new pattern, don't write to the pattern .php file until you publis * Fix phpcs error * Remove unit tests for deleted function --- .../app/js/src/components/Header/index.tsx | 6 +- .../Patterns/PatternGridActions.tsx | 9 +- wp-modules/app/js/src/utils/getAdminUrl.ts | 13 - wp-modules/editor/css/src/index.scss | 7 +- wp-modules/editor/editor.php | 21 +- .../PatternManagerMetaControls/index.tsx | 5 +- .../components/SidebarPanels/TitlePanel.tsx | 20 +- .../js/src/components/SidebarPanels/types.ts | 4 +- .../editor/js/src/hooks/useEditedPostData.ts | 23 + wp-modules/editor/js/src/hooks/usePostData.ts | 14 - wp-modules/editor/js/src/index.js | 3 + wp-modules/editor/js/src/types.ts | 2 +- wp-modules/editor/js/src/utils/changeWords.ts | 3 + wp-modules/editor/model.php | 160 +-- wp-modules/editor/package-lock.json | 1041 +++++++++++++---- wp-modules/editor/package.json | 1 + wp-modules/editor/tests/EditorTest.php | 35 + wp-modules/editor/tests/ModelTest.php | 63 - wp-modules/editor/tests/UtilsTest.php | 56 +- wp-modules/editor/utils.php | 24 +- .../pattern-data-handlers.php | 25 +- 21 files changed, 1044 insertions(+), 491 deletions(-) delete mode 100644 wp-modules/app/js/src/utils/getAdminUrl.ts create mode 100644 wp-modules/editor/js/src/hooks/useEditedPostData.ts delete mode 100644 wp-modules/editor/js/src/hooks/usePostData.ts create mode 100644 wp-modules/editor/tests/EditorTest.php diff --git a/wp-modules/app/js/src/components/Header/index.tsx b/wp-modules/app/js/src/components/Header/index.tsx index 7971bbd47..3ef9dce30 100644 --- a/wp-modules/app/js/src/components/Header/index.tsx +++ b/wp-modules/app/js/src/components/Header/index.tsx @@ -7,7 +7,7 @@ import { Button } from '@wordpress/components'; /** * Internal dependencies */ -import getAdminUrl from '../../utils/getAdminUrl'; +import { patternManager } from '../../globals'; import wpeLogoDefaultCropped from '../../../../img/WPE-LOGO-S-Default-Cropped.svg'; export default function Header() { @@ -27,9 +27,7 @@ export default function Header() {
diff --git a/wp-modules/app/js/src/components/Patterns/PatternGridActions.tsx b/wp-modules/app/js/src/components/Patterns/PatternGridActions.tsx index 4fd8f6d85..93e08476c 100644 --- a/wp-modules/app/js/src/components/Patterns/PatternGridActions.tsx +++ b/wp-modules/app/js/src/components/Patterns/PatternGridActions.tsx @@ -6,11 +6,9 @@ import { Button } from '@wordpress/components'; // Hooks import usePmContext from '../../hooks/usePmContext'; -// Utils -import getAdminUrl from '../../utils/getAdminUrl'; - // Types import type { Pattern } from '../../types'; +import { patternManager } from '../../globals'; type Props = { patternData: Pattern; @@ -51,10 +49,7 @@ export default function PatternGridActions( { patternData }: Props ) { __( 'Duplicate %1$s', 'pattern-manager' ), patternData.title ) } - href={ getAdminUrl( { - action: 'duplicate', - name: patternData.name, - } ) } + href={ `${ patternManager.siteUrl }/wp-admin/admin.php?post_type=pm_pattern&action=duplicate&name=${ patternData.name }` } > { - url.searchParams.append( key, value ); - } ); - - return url.toString(); -} diff --git a/wp-modules/editor/css/src/index.scss b/wp-modules/editor/css/src/index.scss index b33987d0c..7738fd83a 100644 --- a/wp-modules/editor/css/src/index.scss +++ b/wp-modules/editor/css/src/index.scss @@ -9,12 +9,7 @@ display: none !important; } -/* When the save button is clicked, hide the pre-publish panel that pops open, as we handle saving in PM. */ -.editor-post-publish-panel { - display: none !important; -} - -/* Hide the 'Save Draft' button in the pattern editor (appears after pattern is edited), as the save theme button handles it.*/ +/* Hide the 'Save Draft' button in the pattern editor (appears after pattern is published), as the 'Update' button handles it. */ button.components-button.editor-post-save-draft.is-tertiary { display: none; } diff --git a/wp-modules/editor/editor.php b/wp-modules/editor/editor.php index 982b9110c..52b6bd9a5 100644 --- a/wp-modules/editor/editor.php +++ b/wp-modules/editor/editor.php @@ -28,10 +28,11 @@ function register_pattern_post_type() { $post_type_key = get_pattern_post_type(); $labels = array( - 'name' => __( 'Patterns', 'pattern-manager' ), - 'singular_name' => __( 'Pattern', 'pattern-manager' ), - 'add_new_item' => __( 'Pattern Editor', 'pattern-manager' ), - 'item_updated' => __( 'Pattern saved to your theme directory', 'pattern-manager' ), + 'name' => __( 'Patterns', 'pattern-manager' ), + 'singular_name' => __( 'Pattern', 'pattern-manager' ), + 'add_new_item' => __( 'Pattern Editor', 'pattern-manager' ), + 'item_published' => __( 'Pattern created', 'pattern-manager' ), + 'item_updated' => __( 'Pattern saved to your theme directory', 'pattern-manager' ), ); register_post_type( @@ -45,21 +46,12 @@ function register_pattern_post_type() { 'supports' => array( 'editor', 'custom-fields', + 'title', ), 'labels' => $labels, ) ); - register_post_meta( - $post_type_key, - 'title', - array( - 'show_in_rest' => true, - 'single' => true, - 'type' => 'string', - ) - ); - register_post_meta( $post_type_key, 'name', @@ -87,6 +79,7 @@ function register_pattern_post_type() { 'show_in_rest' => true, 'single' => true, 'type' => 'boolean', + 'default' => true, ) ); diff --git a/wp-modules/editor/js/src/components/PatternManagerMetaControls/index.tsx b/wp-modules/editor/js/src/components/PatternManagerMetaControls/index.tsx index ec39bb074..a121f7e68 100644 --- a/wp-modules/editor/js/src/components/PatternManagerMetaControls/index.tsx +++ b/wp-modules/editor/js/src/components/PatternManagerMetaControls/index.tsx @@ -13,10 +13,10 @@ import { import usePatternData from '../../hooks/usePatternData'; import useSave from '../../hooks/useSave'; import { patternManager } from '../../globals'; -import usePostData from '../../hooks/usePostData'; +import useEditedPostData from '../../hooks/useEditedPostData'; export default function PatternManagerMetaControls() { - const { postMeta } = usePostData(); + const { postMeta, title } = useEditedPostData(); const [ errorMessage, setErrorMessage ] = useState( '' ); const [ patternNames, setPatternNames ] = useState( patternManager.patternNames.filter( ( name ) => { @@ -37,6 +37,7 @@ export default function PatternManagerMetaControls() { errorMessage={ errorMessage } setErrorMessage={ setErrorMessage } patternNames={ patternNames } + title={ title } /> & { - patternNames: Array< Pattern[ 'name' ] >; - } ) { - const { lockPostSaving, unlockPostSaving } = useDispatch( 'core/editor' ); + Pick< + AdditionalSidebarProps, + 'errorMessage' | 'patternNames' | 'setErrorMessage' | 'title' + > ) { + const { editPost, lockPostSaving, unlockPostSaving } = + useDispatch( 'core/editor' ); return ( { - handleChange( 'title', newTitle, { - name: convertToSlug( newTitle ), - } ); + editPost( { title: newTitle } ); + handleChange( 'name', convertToSlug( newTitle ) ); if ( ! newTitle ) { lockPostSaving(); diff --git a/wp-modules/editor/js/src/components/SidebarPanels/types.ts b/wp-modules/editor/js/src/components/SidebarPanels/types.ts index d19b4fd36..9f95a9493 100644 --- a/wp-modules/editor/js/src/components/SidebarPanels/types.ts +++ b/wp-modules/editor/js/src/components/SidebarPanels/types.ts @@ -1,5 +1,5 @@ import usePatternData from '../../hooks/usePatternData'; -import { PostMeta } from '../../types'; +import { Pattern, PostMeta } from '../../types'; import type { Dispatch, SetStateAction } from 'react'; @@ -17,5 +17,7 @@ export type AdditionalSidebarProps = { categories: ReturnType< typeof usePatternData >[ 'categories' ]; postTypes: ReturnType< typeof usePatternData >[ 'postTypes' ]; errorMessage: string; + patternNames: Array< Pattern[ 'name' ] >; setErrorMessage: Dispatch< SetStateAction< string > >; + title: string; }; diff --git a/wp-modules/editor/js/src/hooks/useEditedPostData.ts b/wp-modules/editor/js/src/hooks/useEditedPostData.ts new file mode 100644 index 000000000..d9e88b03f --- /dev/null +++ b/wp-modules/editor/js/src/hooks/useEditedPostData.ts @@ -0,0 +1,23 @@ +import { useSelect } from '@wordpress/data'; +import { PostMeta, SelectQuery } from '../types'; + +type UseEditedPostData = { + postMeta: PostMeta; + title: string; +}; + +export default function useEditedPostData(): UseEditedPostData { + // @ts-expect-error if @wordpress/editor store is typed, pass it to select() instead of the string. + return { + ...useSelect( + ( select: SelectQuery ) => ( { + postMeta: + select( 'core/editor' ).getEditedPostAttribute( 'meta' ), + title: select( 'core/editor' ).getEditedPostAttribute( + 'title' + ), + } ), + [] + ), + }; +} diff --git a/wp-modules/editor/js/src/hooks/usePostData.ts b/wp-modules/editor/js/src/hooks/usePostData.ts deleted file mode 100644 index 767b14299..000000000 --- a/wp-modules/editor/js/src/hooks/usePostData.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { useSelect } from '@wordpress/data'; -import { SelectQuery } from '../types'; - -export default function usePostData() { - return { - ...useSelect( - ( select: SelectQuery ) => ( { - postMeta: - select( 'core/editor' ).getEditedPostAttribute( 'meta' ), - } ), - [] - ), - }; -} diff --git a/wp-modules/editor/js/src/index.js b/wp-modules/editor/js/src/index.js index 9caf9e7d3..b858817a3 100644 --- a/wp-modules/editor/js/src/index.js +++ b/wp-modules/editor/js/src/index.js @@ -1,4 +1,5 @@ import '../../css/src/index.scss'; +import { dispatch } from '@wordpress/data'; import { addAction, addFilter } from '@wordpress/hooks'; import { registerPlugin } from '@wordpress/plugins'; import BackButton from './components/BackButton'; @@ -22,3 +23,5 @@ addAction( 'pattern-manager/checkActiveTheme', receiveActiveTheme ); + +dispatch( 'core/editor' ).disablePublishSidebar(); diff --git a/wp-modules/editor/js/src/types.ts b/wp-modules/editor/js/src/types.ts index db4f45256..6a58a7806 100644 --- a/wp-modules/editor/js/src/types.ts +++ b/wp-modules/editor/js/src/types.ts @@ -14,7 +14,7 @@ export type PostMeta = { }; export type SelectQuery = ( dataStore: string ) => { - getEditedPostAttribute: ( postAttribute: string ) => PostMeta; + getEditedPostAttribute: ( postAttribute: string ) => unknown; getEditedPostContent: () => string; isEditedPostDirty: () => boolean; getPostTypes: ( { diff --git a/wp-modules/editor/js/src/utils/changeWords.ts b/wp-modules/editor/js/src/utils/changeWords.ts index 6ea614e41..9ecd18c64 100644 --- a/wp-modules/editor/js/src/utils/changeWords.ts +++ b/wp-modules/editor/js/src/utils/changeWords.ts @@ -1,4 +1,7 @@ export default function changeWords( translation: string, text: string ) { + if ( text === 'Publish' ) { + return 'Create Pattern'; + } if ( text === 'Update' ) { return 'Update Pattern'; } diff --git a/wp-modules/editor/model.php b/wp-modules/editor/model.php index c10fa35ae..3aa2a42e9 100644 --- a/wp-modules/editor/model.php +++ b/wp-modules/editor/model.php @@ -12,27 +12,34 @@ use WP_Post; use function PatternManager\PatternDataHandlers\get_pattern_by_name; +use function PatternManager\PatternDataHandlers\get_pattern_defaults; use function PatternManager\PatternDataHandlers\get_theme_patterns; use function PatternManager\PatternDataHandlers\delete_pattern; use function PatternManager\PatternDataHandlers\update_pattern; /** - * Gets the pattern content from the file, instead of from the post content. + * Gets the pattern content and title from the PHP file. * * @param WP_Post $post The post to possibly add content to. */ -function get_pattern_content_from_file( $post ) { +function populate_pattern_from_file( $post ) { if ( get_pattern_post_type() !== $post->post_type ) { return; } - if ( ! $post->post_title ) { + if ( ! $post->post_name ) { return; } - $post->post_content = get_pattern_by_name( $post->post_title )['content'] ?? ''; + $pattern = get_pattern_by_name( $post->post_name ); + if ( ! $pattern ) { + return; + } + + $post->post_content = $pattern['content']; + $post->post_title = $pattern['title']; } -add_action( 'the_post', __NAMESPACE__ . '\get_pattern_content_from_file' ); +add_action( 'the_post', __NAMESPACE__ . '\populate_pattern_from_file' ); /** * Saves the pattern to the .php file. @@ -45,17 +52,18 @@ function save_pattern_to_file( WP_Post $post ) { return; } - $pattern = get_pattern_by_name( $post->post_title ); - if ( ! $pattern ) { - return; - } + $pattern = get_pattern_by_name( $post->post_name ); update_pattern( array_merge( - $pattern, + $pattern ? $pattern : [], [ 'content' => $post->post_content, - ] + 'name' => $post->post_name, + ], + $post->post_title + ? [ 'title' => $post->post_title ] + : [] ) ); @@ -89,23 +97,24 @@ function save_metadata_to_pattern_file( $override, $post_id, $meta_key, $meta_va return $override; } - $pattern_name = $post->post_title; - $pattern = get_pattern_by_name( $pattern_name ); - if ( ! $pattern ) { - return $override; - } - // Only update the pattern if a registered meta key is being updated here (no need for core keys like _edit_lock). $registered_meta_keys = array_keys( get_registered_meta_keys( 'post', get_pattern_post_type() ) ); if ( ! in_array( $meta_key, $registered_meta_keys, true ) ) { return $override; } + if ( 'name' === $meta_key && ! $meta_value ) { + return $override; + } + + $pattern_name = $post->post_name; + $pattern = get_pattern_by_name( $pattern_name ); + if ( 'name' === $meta_key ) { wp_update_post( [ - 'ID' => $post_id, - 'post_title' => $meta_value, + 'ID' => $post_id, + 'post_name' => $meta_value, ] ); @@ -115,12 +124,21 @@ function save_metadata_to_pattern_file( $override, $post_id, $meta_key, $meta_va } return update_pattern( - array_merge( - $pattern, - [ - $meta_key => $meta_value, - ] - ) + $pattern + ? array_merge( + $pattern, + [ + $meta_key => $meta_value, + ] + ) + : array_merge( + get_pattern_defaults(), + [ + 'name' => $pattern_name, + 'title' => $post->post_title, + ], + [ $meta_key => $meta_value ] + ) ); } add_filter( 'update_post_metadata', __NAMESPACE__ . '\save_metadata_to_pattern_file', 10, 4 ); @@ -144,9 +162,7 @@ function get_metadata_from_pattern_file( $override, $post_id, $meta_key, $is_sin return $override; } - $pattern_name = $post->post_title; - - $pattern = get_pattern_by_name( $pattern_name ); + $pattern = get_pattern_by_name( $post->post_name ); if ( ! $pattern ) { return $override; } @@ -175,24 +191,7 @@ function redirect_pattern_actions() { $new_post = wp_insert_post( [ 'post_type' => get_pattern_post_type(), - 'post_title' => sanitize_text_field( filter_input( INPUT_GET, 'name' ) ), - 'post_status' => 'publish', - ] - ); - - wp_safe_redirect( - get_edit_post_link( $new_post, 'direct_link' ) - ); - } - - if ( 'create-new' === filter_input( INPUT_GET, 'action' ) ) { - $new_pattern = get_new_pattern( get_theme_patterns() ); - - update_pattern( $new_pattern ); - $new_post = wp_insert_post( - [ - 'post_type' => get_pattern_post_type(), - 'post_title' => $new_pattern['name'], + 'post_name' => sanitize_text_field( filter_input( INPUT_GET, 'name' ) ), 'post_status' => 'publish', ] ); @@ -218,10 +217,9 @@ function redirect_pattern_actions() { $new_post = wp_insert_post( [ - 'post_type' => get_pattern_post_type(), - 'post_title' => $new_pattern['name'], - 'post_status' => 'publish', - 'post_content' => '', + 'post_type' => get_pattern_post_type(), + 'post_name' => $new_pattern['name'], + 'post_status' => 'publish', ] ); @@ -250,24 +248,6 @@ function add_active_theme_to_heartbeat( $response, $data, $screen_id ) { } add_filter( 'heartbeat_received', __NAMESPACE__ . '\add_active_theme_to_heartbeat', 10, 3 ); -/** - * Filters the fields used in post revisions. - * - * If the revision is for a pattern post, - * don't restore the title of the revision, - * as the title is where the pattern name is stored. - * - * @param array $fields The fields to filter. - * @param WP_Post|array $post The post to filter for. - * @return array The filtered fields. - */ -function ignore_title_field_in_revisions( $fields, $post ) { - return isset( $post->post_parent ) && get_pattern_post_type() === get_post_type( $post->post_parent ) - ? array_diff_key( $fields, [ 'post_title' => null ] ) - : $fields; -} -add_filter( '_wp_post_revision_fields', __NAMESPACE__ . '\ignore_title_field_in_revisions', 10, 2 ); - /** * Deletes all pm_pattern posts. */ @@ -283,3 +263,47 @@ function delete_pattern_posts() { } } add_action( 'after_switch_theme', __NAMESPACE__ . '\delete_pattern_posts' ); + +/** + * Gets the title for a new pattern post. + * + * For posts of type 'post', it's fine if the title is empty. + * But the title of a pattern is important, + * as the file name is a slug of that title. + * And it must be unique. + * + * @param string $post_title The post title. + * @param WP_Post $post The post. + * @return string + */ +function get_default_title( $post_title, $post ) { + return isset( $post->post_type ) && get_pattern_post_type() === $post->post_type + ? get_new_pattern_title( get_theme_patterns() ) + : $post_title; +} +add_filter( 'default_title', __NAMESPACE__ . '\get_default_title', 10, 2 ); + +/** + * Prevents WP from giving a longer ->post_name to a pattern. + * + * On renaming a pattern, sometimes WP adds a number + * to the ->post_name in order to be unique. + * It can change 'example-pattern' to 'example-pattern-1'. + * The ->post_name is where we store the pattern name. + * So it needs to be in sync with the ->post_title. + * It can't be 'example-pattern-1' if the title is 'Example Pattern'. + * + * @param string $slug The post slug. + * @param int $post_ID Post ID. + * @param string $post_status The post status. + * @param string $post_type Post type. + * @param int $post_parent Post parent ID + * @param string $original_slug The original post slug. + * @return string The slug. + */ +function short_circuit_unique_slug( $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug ) { + return get_pattern_post_type() === $post_type + ? $original_slug + : $slug; +} +add_filter( 'wp_unique_post_slug', __NAMESPACE__ . '\short_circuit_unique_slug', 10, 6 ); diff --git a/wp-modules/editor/package-lock.json b/wp-modules/editor/package-lock.json index 2094814f9..bde2b2f8a 100644 --- a/wp-modules/editor/package-lock.json +++ b/wp-modules/editor/package-lock.json @@ -2533,7 +2533,7 @@ "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, "@types/mime": { @@ -4458,39 +4458,40 @@ } }, "@wordpress/editor": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-13.0.0.tgz", - "integrity": "sha512-LQJXxwUY/YsOYY3rT6FSNvS0J3ewNgxjRsDjLJF/dj3JylVoXza+dRPN1hcw6BhUauwhpCksU1rg4nsTgmjp8w==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-13.4.0.tgz", + "integrity": "sha512-SIp+otRgbL1iPM5R+4CdYJWCKf357kygqiEiJ41r9aewAO2yIpv6adI1OXfNUFmo4cMgZqn6U6gihHNMmyoa/Q==", "dev": true, "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^3.23.0", - "@wordpress/api-fetch": "^6.20.0", - "@wordpress/blob": "^3.23.0", - "@wordpress/block-editor": "^11.0.0", - "@wordpress/blocks": "^12.0.0", - "@wordpress/components": "^23.0.0", - "@wordpress/compose": "^6.0.0", - "@wordpress/core-data": "^6.0.0", - "@wordpress/data": "^8.0.0", - "@wordpress/date": "^4.23.0", - "@wordpress/deprecated": "^3.23.0", - "@wordpress/dom": "^3.23.0", - "@wordpress/element": "^5.0.0", - "@wordpress/hooks": "^3.23.0", - "@wordpress/html-entities": "^3.23.0", - "@wordpress/i18n": "^4.23.0", - "@wordpress/icons": "^9.14.0", - "@wordpress/keyboard-shortcuts": "^4.0.0", - "@wordpress/keycodes": "^3.23.0", - "@wordpress/media-utils": "^4.14.0", - "@wordpress/notices": "^3.23.0", - "@wordpress/preferences": "^3.0.0", - "@wordpress/reusable-blocks": "^4.0.0", - "@wordpress/rich-text": "^6.0.0", - "@wordpress/server-side-render": "^4.0.0", - "@wordpress/url": "^3.24.0", - "@wordpress/wordcount": "^3.23.0", + "@wordpress/a11y": "^3.27.0", + "@wordpress/api-fetch": "^6.24.0", + "@wordpress/blob": "^3.27.0", + "@wordpress/block-editor": "^11.4.0", + "@wordpress/blocks": "^12.4.0", + "@wordpress/components": "^23.4.0", + "@wordpress/compose": "^6.4.0", + "@wordpress/core-data": "^6.4.0", + "@wordpress/data": "^8.4.0", + "@wordpress/date": "^4.27.0", + "@wordpress/deprecated": "^3.27.0", + "@wordpress/dom": "^3.27.0", + "@wordpress/element": "^5.4.0", + "@wordpress/hooks": "^3.27.0", + "@wordpress/html-entities": "^3.27.0", + "@wordpress/i18n": "^4.27.0", + "@wordpress/icons": "^9.18.0", + "@wordpress/keyboard-shortcuts": "^4.4.0", + "@wordpress/keycodes": "^3.27.0", + "@wordpress/media-utils": "^4.18.0", + "@wordpress/notices": "^3.27.0", + "@wordpress/preferences": "^3.4.0", + "@wordpress/private-apis": "^0.9.0", + "@wordpress/reusable-blocks": "^4.4.0", + "@wordpress/rich-text": "^6.4.0", + "@wordpress/server-side-render": "^4.4.0", + "@wordpress/url": "^3.28.0", + "@wordpress/wordcount": "^3.27.0", "classnames": "^2.3.1", "date-fns": "^2.28.0", "escape-html": "^1.0.3", @@ -4502,9 +4503,9 @@ }, "dependencies": { "@types/react": { - "version": "18.0.26", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", - "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", + "version": "18.0.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", + "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", "dev": true, "requires": { "@types/prop-types": "*", @@ -4512,25 +4513,316 @@ "csstype": "^3.0.2" } }, - "@types/react-dom": { - "version": "18.0.9", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz", - "integrity": "sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==", + "@wordpress/a11y": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.27.0.tgz", + "integrity": "sha512-gWFSsDUUKNueLPZa+xrnuQlaZEB9pUHAFQvUfCzmzyphEJc0moDTYuY5iY/xDO3UfpWfdzG1gtywK6zPvQDL1w==", "dev": true, "requires": { - "@types/react": "*" + "@babel/runtime": "^7.16.0", + "@wordpress/dom-ready": "^3.27.0", + "@wordpress/i18n": "^4.27.0" + } + }, + "@wordpress/api-fetch": { + "version": "6.24.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.24.0.tgz", + "integrity": "sha512-XxvjND2hh9ooC+Iv7xMqfNubxSok3F+EWDk/yewNRZYKrIHEYXlCnxXImndlI0hQdzWsNKawGvwWa/gk8GoPIg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/i18n": "^4.27.0", + "@wordpress/url": "^3.28.0" + } + }, + "@wordpress/autop": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.27.0.tgz", + "integrity": "sha512-sVHZFyzK7R+kQPzPfW/87gn/M8MvrXS9YOC3OL9O5eV0o2O5UV4PnDoTxjQcFkdYuzf4v87S3J1VFgc5NTqZiA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0" + } + }, + "@wordpress/blob": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.27.0.tgz", + "integrity": "sha512-yBbPqYIFcVfJ2UJ9V39hdz6R4vGWgACBWaGc0e1Kya0AFkxFk0WAOoFC7Oz1oCPt2GS+TltGL+dY2awgyVUn4g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0" + } + }, + "@wordpress/block-editor": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-11.4.0.tgz", + "integrity": "sha512-pxKXhqRw6THa8c+a9vQ9KgEgSVGKlC7Kgu+2UYckDUdYVeogBZN8oRhMI1T0SMsOf8SaxNL3S50lKwST9TvWWw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@react-spring/web": "^9.4.5", + "@wordpress/a11y": "^3.27.0", + "@wordpress/api-fetch": "^6.24.0", + "@wordpress/blob": "^3.27.0", + "@wordpress/blocks": "^12.4.0", + "@wordpress/components": "^23.4.0", + "@wordpress/compose": "^6.4.0", + "@wordpress/data": "^8.4.0", + "@wordpress/date": "^4.27.0", + "@wordpress/deprecated": "^3.27.0", + "@wordpress/dom": "^3.27.0", + "@wordpress/element": "^5.4.0", + "@wordpress/escape-html": "^2.27.0", + "@wordpress/hooks": "^3.27.0", + "@wordpress/html-entities": "^3.27.0", + "@wordpress/i18n": "^4.27.0", + "@wordpress/icons": "^9.18.0", + "@wordpress/is-shallow-equal": "^4.27.0", + "@wordpress/keyboard-shortcuts": "^4.4.0", + "@wordpress/keycodes": "^3.27.0", + "@wordpress/notices": "^3.27.0", + "@wordpress/preferences": "^3.4.0", + "@wordpress/private-apis": "^0.9.0", + "@wordpress/rich-text": "^6.4.0", + "@wordpress/shortcode": "^3.27.0", + "@wordpress/style-engine": "^1.10.0", + "@wordpress/token-list": "^2.27.0", + "@wordpress/url": "^3.28.0", + "@wordpress/warning": "^2.27.0", + "@wordpress/wordcount": "^3.27.0", + "change-case": "^4.1.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "diff": "^4.0.2", + "dom-scroll-into-view": "^1.2.1", + "fast-deep-equal": "^3.1.3", + "inherits": "^2.0.3", + "lodash": "^4.17.21", + "react-autosize-textarea": "^7.1.0", + "react-easy-crop": "^4.5.1", + "rememo": "^4.0.0", + "remove-accents": "^0.4.2", + "traverse": "^0.6.6" + } + }, + "@wordpress/block-serialization-default-parser": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.27.0.tgz", + "integrity": "sha512-5v7di6yFkuKHy5QE3uwzmCnwbO6+1n1k3JSsC5EeeBHYKA35dQ97kN5soUJZbjbYVMVGRS+YyYwyKi5b9wuS2g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0" + } + }, + "@wordpress/blocks": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-12.4.0.tgz", + "integrity": "sha512-v34GPxmAKibpOHEx6VmeMBStOo5qbgFl4A1vWuVz8p3a7GOQcmYDmX8YMsceA71WO9nG/BeXg7SFxU9tiql9yg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/autop": "^3.27.0", + "@wordpress/blob": "^3.27.0", + "@wordpress/block-serialization-default-parser": "^4.27.0", + "@wordpress/compose": "^6.4.0", + "@wordpress/data": "^8.4.0", + "@wordpress/deprecated": "^3.27.0", + "@wordpress/dom": "^3.27.0", + "@wordpress/element": "^5.4.0", + "@wordpress/hooks": "^3.27.0", + "@wordpress/html-entities": "^3.27.0", + "@wordpress/i18n": "^4.27.0", + "@wordpress/is-shallow-equal": "^4.27.0", + "@wordpress/private-apis": "^0.9.0", + "@wordpress/shortcode": "^3.27.0", + "change-case": "^4.1.2", + "colord": "^2.7.0", + "fast-deep-equal": "^3.1.3", + "hpq": "^1.3.0", + "is-plain-object": "^5.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "rememo": "^4.0.0", + "remove-accents": "^0.4.2", + "showdown": "^1.9.1", + "simple-html-tokenizer": "^0.5.7", + "uuid": "^8.3.0" + } + }, + "@wordpress/components": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-23.4.0.tgz", + "integrity": "sha512-a/kEgFiAnPjSuuqft6JwyCH9szeNhKJwYkqA3fSZg3aIWvwcNaDu7Yw383umhc3UxWqd+cjRfJvlhmngMxmxeg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@emotion/cache": "^11.7.1", + "@emotion/css": "^11.7.1", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.0.2", + "@emotion/styled": "^11.6.0", + "@emotion/utils": "^1.0.0", + "@floating-ui/react-dom": "^1.0.0", + "@use-gesture/react": "^10.2.6", + "@wordpress/a11y": "^3.27.0", + "@wordpress/compose": "^6.4.0", + "@wordpress/date": "^4.27.0", + "@wordpress/deprecated": "^3.27.0", + "@wordpress/dom": "^3.27.0", + "@wordpress/element": "^5.4.0", + "@wordpress/escape-html": "^2.27.0", + "@wordpress/hooks": "^3.27.0", + "@wordpress/html-entities": "^3.27.0", + "@wordpress/i18n": "^4.27.0", + "@wordpress/icons": "^9.18.0", + "@wordpress/is-shallow-equal": "^4.27.0", + "@wordpress/keycodes": "^3.27.0", + "@wordpress/primitives": "^3.25.0", + "@wordpress/private-apis": "^0.9.0", + "@wordpress/rich-text": "^6.4.0", + "@wordpress/warning": "^2.27.0", + "change-case": "^4.1.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "date-fns": "^2.28.0", + "dom-scroll-into-view": "^1.2.1", + "downshift": "^6.0.15", + "fast-deep-equal": "^3.1.3", + "framer-motion": "^7.6.1", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "path-to-regexp": "^6.2.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "reakit": "^1.3.8", + "remove-accents": "^0.4.2", + "use-lilius": "^2.0.1", + "uuid": "^8.3.0", + "valtio": "^1.7.0" + } + }, + "@wordpress/compose": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-6.4.0.tgz", + "integrity": "sha512-vbFmp7kvtallO53XpsK41nkYHISIVYm01uwLdoCVLup2YCpERK6eJOZLoKRGS76VnQYJGgFMmcg5157ZpLT8yQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.27.0", + "@wordpress/dom": "^3.27.0", + "@wordpress/element": "^5.4.0", + "@wordpress/is-shallow-equal": "^4.27.0", + "@wordpress/keycodes": "^3.27.0", + "@wordpress/priority-queue": "^2.27.0", + "change-case": "^4.1.2", + "clipboard": "^2.0.8", + "mousetrap": "^1.6.5", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/core-data": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-6.4.0.tgz", + "integrity": "sha512-40XXnapFb86mw4/MTn/wmLET2dGmQPs0y+qoOk2p0ojMxS31wpJidpFk4QlAJhnqyLoFqLiQ3V8ejLTVQCbf1w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/api-fetch": "^6.24.0", + "@wordpress/blocks": "^12.4.0", + "@wordpress/compose": "^6.4.0", + "@wordpress/data": "^8.4.0", + "@wordpress/deprecated": "^3.27.0", + "@wordpress/element": "^5.4.0", + "@wordpress/html-entities": "^3.27.0", + "@wordpress/i18n": "^4.27.0", + "@wordpress/is-shallow-equal": "^4.27.0", + "@wordpress/url": "^3.28.0", + "change-case": "^4.1.2", + "equivalent-key-map": "^0.2.2", + "fast-deep-equal": "^3.1.3", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "rememo": "^4.0.0", + "uuid": "^8.3.0" + } + }, + "@wordpress/data": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-8.4.0.tgz", + "integrity": "sha512-cK3o76qoOfcv6Np2vs48Ah3LUD4MikCHSIq7Yf3OnuqW6PWt0IniY/hUygCHBTM/cbSYomcKuvAVzRDKDfzC7w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/compose": "^6.4.0", + "@wordpress/deprecated": "^3.27.0", + "@wordpress/element": "^5.4.0", + "@wordpress/is-shallow-equal": "^4.27.0", + "@wordpress/priority-queue": "^2.27.0", + "@wordpress/private-apis": "^0.9.0", + "@wordpress/redux-routine": "^4.27.0", + "deepmerge": "^4.3.0", + "equivalent-key-map": "^0.2.2", + "is-plain-object": "^5.0.0", + "is-promise": "^4.0.0", + "redux": "^4.1.2", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/date": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.27.0.tgz", + "integrity": "sha512-EML6g9C3W9coj1OFTLrE1j8su3W23subZ89BP5+QCvyZiD9GBbnjD6H1UeKoC7YdnA1HhmBxAHd/ffO7+4mkPw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/deprecated": "^3.27.0", + "moment": "^2.29.4", + "moment-timezone": "^0.5.40" + } + }, + "@wordpress/deprecated": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.27.0.tgz", + "integrity": "sha512-xBb+9qlRnv5xuX75m0VPBY7m+/CKQ/Hq915J/hP9I8cSregC0tHGK12WYlsbEtB68KfR6zF0ThLD6ZqKKCJUBQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.27.0" + } + }, + "@wordpress/dom": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.27.0.tgz", + "integrity": "sha512-ympP0cK4ErQSFCRyrhjg8wAK7Wb5NqTUyiw1kV+2TQ35PKNG+TCXjYkk19Wc0kxiYZPFtbxk8OPp40e8Up7y7g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/deprecated": "^3.27.0" + } + }, + "@wordpress/dom-ready": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.27.0.tgz", + "integrity": "sha512-X7yVAm/JL5UKNfttAN2Ak3suEyOag/MPfr/aX8L2k/od71a6zJBkpMcdKaVPVfIPj9HcrW6ROrfINySPtoGCLA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0" } }, "@wordpress/element": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-5.0.0.tgz", - "integrity": "sha512-u1DhVIdb6VEe8wzxKCrLfRWbeFLrlhYTFSOY6yrtl2z9vr9bCdlLp9aAppTxLNUs8cFcdoCEMpakVRYFyfZwTQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-5.4.0.tgz", + "integrity": "sha512-vOlLdqzmkJCNWXDSp+1bwdT721mkAnMIfFom5SQnAhNOb59Y4CJRNQ37Oh1P19kMEYTnYMi/1R0DtOShlId+iA==", "dev": true, "requires": { "@babel/runtime": "^7.16.0", "@types/react": "^18.0.21", "@types/react-dom": "^18.0.6", - "@wordpress/escape-html": "^2.23.0", + "@wordpress/escape-html": "^2.27.0", "change-case": "^4.1.2", "is-plain-object": "^5.0.0", "react": "^18.2.0", @@ -4538,65 +4830,284 @@ } }, "@wordpress/escape-html": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.23.0.tgz", - "integrity": "sha512-QmMGJVEoVu3+s46Ya7saYZI8D1jPOKN18eFJX21y59/99tAVvmcWWz0k0uTO5bciDQ7R6ACm9AJS6RiZycODkg==", + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.27.0.tgz", + "integrity": "sha512-XXmqdY6AOpzegQeKCqAkaqfHdgcyLdXRE2E5iP67YSVuz/ccLP3Xm4YU/IRVBBKWK6Zzb5/dGwefGGN0r37fEw==", "dev": true, "requires": { "@babel/runtime": "^7.16.0" } }, "@wordpress/hooks": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.23.0.tgz", - "integrity": "sha512-EYv8xXY0BEJVWu8YPv5LobxEMddFtdbuUVKSryPWHcLjSMrSYRT6j8qzjq8EP/UQolVOxs3THdOoMDySKsJT9g==", + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.27.0.tgz", + "integrity": "sha512-izhRvOJzc/VFsu59KC+et1/35GL0Op7I60RZj2lkTnEz1vGvtClY3okCbOtGN0Adc8ewbTf4kB6qgKMsLtW0Dg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0" + } + }, + "@wordpress/html-entities": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.27.0.tgz", + "integrity": "sha512-m2wHJn16jlktY+uOJDbCxNc4lvbnwHteZ/t/svNXWS9LA5wcv3R2AGbxeExs7qIJQ4GYb/GcHIbOvjDNe/Ilsg==", "dev": true, "requires": { "@babel/runtime": "^7.16.0" } }, "@wordpress/i18n": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.23.0.tgz", - "integrity": "sha512-SF9aJ2gajHtYDLMA9nhnMPerLmKJofUM4qQypwrW5AYwi5JS7jxvZHNETIqqYq5UdhRwsubPjAUfFosIonmfnA==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.27.0.tgz", + "integrity": "sha512-mb4xN7aYh+e9QHWxwg21RqcIHROowWD7XlC62KlpwZmhIKj92C0az6HBH5a2b9VhvrsLL3xw1hWMzfNWPT62bg==", "dev": true, "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.23.0", + "@wordpress/hooks": "^3.27.0", "gettext-parser": "^1.3.1", "memize": "^1.1.0", "sprintf-js": "^1.1.1", "tannin": "^1.2.0" } }, - "react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "@wordpress/icons": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.18.0.tgz", + "integrity": "sha512-6uO8wnf5BUaHxRXqh+24cDxMaAqeQ9DzA+KhBYkdcJhzxYO6G9Nlc6dS/keQ/rSCRCwWo3mYgNat70lSdX82Wg==", "dev": true, "requires": { - "loose-envify": "^1.1.0" + "@babel/runtime": "^7.16.0", + "@wordpress/element": "^5.4.0", + "@wordpress/primitives": "^3.25.0" } }, - "react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "@wordpress/is-shallow-equal": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.27.0.tgz", + "integrity": "sha512-Av+fngR6EAmkAx2qfr484kjKhHOQ1pxlUT5Bj1huGBjGt+3befXY8HNskpkcoedaJnyxHhMn2u6Ch2Q0vtK3sg==", "dev": true, "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "@babel/runtime": "^7.16.0" } }, - "scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "@wordpress/keyboard-shortcuts": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-4.4.0.tgz", + "integrity": "sha512-QLHwJNy8ps6Cnv1HME1FvD4+kZw/Mb9Y6nH1EpicgXuJKDWbX7yKQUNKfy7gSIqAWK6FK4ahWrTQeGJM45IvEA==", "dev": true, "requires": { - "loose-envify": "^1.1.0" + "@babel/runtime": "^7.16.0", + "@wordpress/data": "^8.4.0", + "@wordpress/element": "^5.4.0", + "@wordpress/keycodes": "^3.27.0", + "rememo": "^4.0.0" + } + }, + "@wordpress/keycodes": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.27.0.tgz", + "integrity": "sha512-iGqJ1DS7dS95zOqsDWSCg1cqp8V5HhnylSofQyAMgY7xZRlo5tHxyrR/bP+w1aPs2N4rz0akMLv4YJsx2+V/nA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/i18n": "^4.27.0", + "change-case": "^4.1.2" + } + }, + "@wordpress/media-utils": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-4.18.0.tgz", + "integrity": "sha512-cPdmBqkWPsk+J7GTQnrIL9pzauYahQAvMl1AfDuJY3xJESv595ZBzBgZWsFqGoZU9lxguuOy/ESDh3/XtzhQ3A==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/api-fetch": "^6.24.0", + "@wordpress/blob": "^3.27.0", + "@wordpress/element": "^5.4.0", + "@wordpress/i18n": "^4.27.0" + } + }, + "@wordpress/notices": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-3.27.0.tgz", + "integrity": "sha512-+cZMkqWqSuwn+JWY72dsbvMKLAr1XSOHG7SYI4eO93386S5ijWgnfQEGP7koLVcsixePFK8xdGtLhL/EHJG52Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/a11y": "^3.27.0", + "@wordpress/data": "^8.4.0" + } + }, + "@wordpress/preferences": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/preferences/-/preferences-3.4.0.tgz", + "integrity": "sha512-u6ElniKUSwPfjvISe5/qfKTet+L6QHuaRfqiW8CQQ9tkcCN5sKqrkTY75TU+UUWi7IraBTsWoLbcy3G5YQDc9g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/a11y": "^3.27.0", + "@wordpress/components": "^23.4.0", + "@wordpress/data": "^8.4.0", + "@wordpress/i18n": "^4.27.0", + "@wordpress/icons": "^9.18.0", + "classnames": "^2.3.1" + } + }, + "@wordpress/primitives": { + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.25.0.tgz", + "integrity": "sha512-2UwGzl0Jyi2550dZBEbLQHpJH8VU57xbGV2dHezni7m8MgepwomfhRo0o6b02FkQiNHiPlXIOKI2ZsreLp65XQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/element": "^5.4.0", + "classnames": "^2.3.1" + } + }, + "@wordpress/priority-queue": { + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.27.0.tgz", + "integrity": "sha512-zYIDGUdwN7c4PuQUU3lUxHUqQJ4BQreCqOXLDQDUGIK5sYzKRUpquPKC5B3lgCBG2M00eNO0oOYsXsVLlWXPZg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "requestidlecallback": "^0.3.0" + } + }, + "@wordpress/redux-routine": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.27.0.tgz", + "integrity": "sha512-/vnWr4SniaB4THDQFZuMSPgVkf0YOWeYXAOITRyzhIZuRfjkKvfff5q32fsFQ/DHZsIHMncDp+Cov/iB/8H4MQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "is-plain-object": "^5.0.0", + "is-promise": "^4.0.0", + "rungen": "^0.3.2" + } + }, + "@wordpress/reusable-blocks": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-4.4.0.tgz", + "integrity": "sha512-dcj+o112x3AVgI8cRg4cSN94TH9KXUm1XR809Rix6FrmrYsx8E2WkhKGGzmqlh+pFbFSFogmmr1PElY/BH02cA==", + "dev": true, + "requires": { + "@wordpress/block-editor": "^11.4.0", + "@wordpress/blocks": "^12.4.0", + "@wordpress/components": "^23.4.0", + "@wordpress/core-data": "^6.4.0", + "@wordpress/data": "^8.4.0", + "@wordpress/element": "^5.4.0", + "@wordpress/i18n": "^4.27.0", + "@wordpress/icons": "^9.18.0", + "@wordpress/notices": "^3.27.0", + "@wordpress/url": "^3.28.0" + } + }, + "@wordpress/rich-text": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-6.4.0.tgz", + "integrity": "sha512-gk82WUGh0kLsLm52Gl1ghxVTrrHmggEjECKXwVXgZXhGwYkQCfa/N2vOA2Phs17Z1+Ki1LQfqAJ1Jpbq/arPJw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/a11y": "^3.27.0", + "@wordpress/compose": "^6.4.0", + "@wordpress/data": "^8.4.0", + "@wordpress/deprecated": "^3.27.0", + "@wordpress/element": "^5.4.0", + "@wordpress/escape-html": "^2.27.0", + "@wordpress/i18n": "^4.27.0", + "@wordpress/keycodes": "^3.27.0", + "memize": "^1.1.0", + "rememo": "^4.0.0" + } + }, + "@wordpress/server-side-render": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-4.4.0.tgz", + "integrity": "sha512-tQOgMScKgFHZ5gDO49KKhBm54IMSVKj95X+ReYNWZcwJgMFctBNGWgt9xpqBuIpccVNptBZ3sSt4Hp0rktMyig==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/api-fetch": "^6.24.0", + "@wordpress/blocks": "^12.4.0", + "@wordpress/components": "^23.4.0", + "@wordpress/compose": "^6.4.0", + "@wordpress/data": "^8.4.0", + "@wordpress/deprecated": "^3.27.0", + "@wordpress/element": "^5.4.0", + "@wordpress/i18n": "^4.27.0", + "@wordpress/url": "^3.28.0", + "fast-deep-equal": "^3.1.3" + } + }, + "@wordpress/shortcode": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.27.0.tgz", + "integrity": "sha512-4v565nsVgPVcH7shcA3JEfIgW6b3hOc2qghjGJC7ys/bPNzWN3tB817T4wgUeUX8AboaODaEa7mJiWr/xZP/og==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "memize": "^1.1.0" + } + }, + "@wordpress/style-engine": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@wordpress/style-engine/-/style-engine-1.10.0.tgz", + "integrity": "sha512-HSNKltiXYPgGQociAEPyY+nxuZY10V9M4RPcVuNnR+kEHffepGD98WmEnnrxC94k/jVk43OxbE92vJ1kT2huEg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "lodash": "^4.17.21" + } + }, + "@wordpress/token-list": { + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.27.0.tgz", + "integrity": "sha512-/MbXMbHvmadAivnQoQ/64A9VUm1y7fjF8EYy4EKxJD60aXQ/SvGTDuzEwC7CWq70Blh0wdlULtOtmrOF7kZD8g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0" + } + }, + "@wordpress/url": { + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.28.0.tgz", + "integrity": "sha512-DZ4eLOXEPI2IYg2BxcEQ0qar8qb7B06KdRbV/0DacZ1jTsBfxB19Md73jeo4h3+ws3Iu+eWjg8c+zGwnRmzyHw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "remove-accents": "^0.4.2" + } + }, + "@wordpress/warning": { + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.27.0.tgz", + "integrity": "sha512-s5JIGBNGTnYVsNN0zxCRxbi2Gs+q+tqSZNAznHQWkCeANaB22LeUQw7KL13T0ekFL6y1h2jNP9tWSU5/mnMTCg==", + "dev": true + }, + "@wordpress/wordcount": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.27.0.tgz", + "integrity": "sha512-lYstGQJRc8OE39/rwrJz7favOKauiDxsI6w21Zorm+n54qgNQUERl96xiZilECgp2hIYt1ycpJ8EVBmG0z8r3Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0" } }, + "deepmerge": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "dev": true + }, + "path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "dev": true + }, "sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", @@ -5199,23 +5710,23 @@ "dev": true }, "@wordpress/plugins": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-5.0.0.tgz", - "integrity": "sha512-pfnchdDgScdp6iHoXsjRyubN8EnsZD0qKjQ9pK3U2hQLGXd7RIvR7NCbIIs8c6hRDW06xF5OiBtrpXSOZr9sUw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-5.4.0.tgz", + "integrity": "sha512-se3OJmvJ5gZvfbBhHvQ2xE/zRciyRz/9Po+s8b6CO6UMaZHxVopwkDiaqfC5kzgNv7610dx1nqaymUITa5DYXQ==", "dev": true, "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/compose": "^6.0.0", - "@wordpress/element": "^5.0.0", - "@wordpress/hooks": "^3.23.0", - "@wordpress/icons": "^9.14.0", + "@wordpress/compose": "^6.4.0", + "@wordpress/element": "^5.4.0", + "@wordpress/hooks": "^3.27.0", + "@wordpress/icons": "^9.18.0", "memize": "^1.1.0" }, "dependencies": { "@types/react": { - "version": "18.0.26", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", - "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", + "version": "18.0.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", + "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", "dev": true, "requires": { "@types/prop-types": "*", @@ -5223,25 +5734,56 @@ "csstype": "^3.0.2" } }, - "@types/react-dom": { - "version": "18.0.9", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz", - "integrity": "sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==", + "@wordpress/compose": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-6.4.0.tgz", + "integrity": "sha512-vbFmp7kvtallO53XpsK41nkYHISIVYm01uwLdoCVLup2YCpERK6eJOZLoKRGS76VnQYJGgFMmcg5157ZpLT8yQ==", "dev": true, "requires": { - "@types/react": "*" + "@babel/runtime": "^7.16.0", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.27.0", + "@wordpress/dom": "^3.27.0", + "@wordpress/element": "^5.4.0", + "@wordpress/is-shallow-equal": "^4.27.0", + "@wordpress/keycodes": "^3.27.0", + "@wordpress/priority-queue": "^2.27.0", + "change-case": "^4.1.2", + "clipboard": "^2.0.8", + "mousetrap": "^1.6.5", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/deprecated": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.27.0.tgz", + "integrity": "sha512-xBb+9qlRnv5xuX75m0VPBY7m+/CKQ/Hq915J/hP9I8cSregC0tHGK12WYlsbEtB68KfR6zF0ThLD6ZqKKCJUBQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.27.0" + } + }, + "@wordpress/dom": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.27.0.tgz", + "integrity": "sha512-ympP0cK4ErQSFCRyrhjg8wAK7Wb5NqTUyiw1kV+2TQ35PKNG+TCXjYkk19Wc0kxiYZPFtbxk8OPp40e8Up7y7g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/deprecated": "^3.27.0" } }, "@wordpress/element": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-5.0.0.tgz", - "integrity": "sha512-u1DhVIdb6VEe8wzxKCrLfRWbeFLrlhYTFSOY6yrtl2z9vr9bCdlLp9aAppTxLNUs8cFcdoCEMpakVRYFyfZwTQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-5.4.0.tgz", + "integrity": "sha512-vOlLdqzmkJCNWXDSp+1bwdT721mkAnMIfFom5SQnAhNOb59Y4CJRNQ37Oh1P19kMEYTnYMi/1R0DtOShlId+iA==", "dev": true, "requires": { "@babel/runtime": "^7.16.0", "@types/react": "^18.0.21", "@types/react-dom": "^18.0.6", - "@wordpress/escape-html": "^2.23.0", + "@wordpress/escape-html": "^2.27.0", "change-case": "^4.1.2", "is-plain-object": "^5.0.0", "react": "^18.2.0", @@ -5249,50 +5791,94 @@ } }, "@wordpress/escape-html": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.23.0.tgz", - "integrity": "sha512-QmMGJVEoVu3+s46Ya7saYZI8D1jPOKN18eFJX21y59/99tAVvmcWWz0k0uTO5bciDQ7R6ACm9AJS6RiZycODkg==", + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.27.0.tgz", + "integrity": "sha512-XXmqdY6AOpzegQeKCqAkaqfHdgcyLdXRE2E5iP67YSVuz/ccLP3Xm4YU/IRVBBKWK6Zzb5/dGwefGGN0r37fEw==", "dev": true, "requires": { "@babel/runtime": "^7.16.0" } }, "@wordpress/hooks": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.23.0.tgz", - "integrity": "sha512-EYv8xXY0BEJVWu8YPv5LobxEMddFtdbuUVKSryPWHcLjSMrSYRT6j8qzjq8EP/UQolVOxs3THdOoMDySKsJT9g==", + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.27.0.tgz", + "integrity": "sha512-izhRvOJzc/VFsu59KC+et1/35GL0Op7I60RZj2lkTnEz1vGvtClY3okCbOtGN0Adc8ewbTf4kB6qgKMsLtW0Dg==", "dev": true, "requires": { "@babel/runtime": "^7.16.0" } }, - "react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "@wordpress/i18n": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.27.0.tgz", + "integrity": "sha512-mb4xN7aYh+e9QHWxwg21RqcIHROowWD7XlC62KlpwZmhIKj92C0az6HBH5a2b9VhvrsLL3xw1hWMzfNWPT62bg==", "dev": true, "requires": { - "loose-envify": "^1.1.0" + "@babel/runtime": "^7.16.0", + "@wordpress/hooks": "^3.27.0", + "gettext-parser": "^1.3.1", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" } }, - "react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "@wordpress/icons": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.18.0.tgz", + "integrity": "sha512-6uO8wnf5BUaHxRXqh+24cDxMaAqeQ9DzA+KhBYkdcJhzxYO6G9Nlc6dS/keQ/rSCRCwWo3mYgNat70lSdX82Wg==", "dev": true, "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "@babel/runtime": "^7.16.0", + "@wordpress/element": "^5.4.0", + "@wordpress/primitives": "^3.25.0" } }, - "scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "@wordpress/is-shallow-equal": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.27.0.tgz", + "integrity": "sha512-Av+fngR6EAmkAx2qfr484kjKhHOQ1pxlUT5Bj1huGBjGt+3befXY8HNskpkcoedaJnyxHhMn2u6Ch2Q0vtK3sg==", "dev": true, "requires": { - "loose-envify": "^1.1.0" + "@babel/runtime": "^7.16.0" } + }, + "@wordpress/keycodes": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.27.0.tgz", + "integrity": "sha512-iGqJ1DS7dS95zOqsDWSCg1cqp8V5HhnylSofQyAMgY7xZRlo5tHxyrR/bP+w1aPs2N4rz0akMLv4YJsx2+V/nA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/i18n": "^4.27.0", + "change-case": "^4.1.2" + } + }, + "@wordpress/primitives": { + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.25.0.tgz", + "integrity": "sha512-2UwGzl0Jyi2550dZBEbLQHpJH8VU57xbGV2dHezni7m8MgepwomfhRo0o6b02FkQiNHiPlXIOKI2ZsreLp65XQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "@wordpress/element": "^5.4.0", + "classnames": "^2.3.1" + } + }, + "@wordpress/priority-queue": { + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.27.0.tgz", + "integrity": "sha512-zYIDGUdwN7c4PuQUU3lUxHUqQJ4BQreCqOXLDQDUGIK5sYzKRUpquPKC5B3lgCBG2M00eNO0oOYsXsVLlWXPZg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0", + "requestidlecallback": "^0.3.0" + } + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true } } }, @@ -5454,6 +6040,15 @@ "requestidlecallback": "^0.3.0" } }, + "@wordpress/private-apis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-0.9.0.tgz", + "integrity": "sha512-R7nY+Ow7QLhE3j1zOT2Z76jB66Z4BzwerpWHD7HXegVEQ9GFBxOMFWnTYvGv5Deva/h0sIjTgBdRMp+/JZC+yA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.0" + } + }, "@wordpress/redux-routine": { "version": "4.23.0", "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.23.0.tgz", @@ -6180,7 +6775,7 @@ "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "dev": true }, "array-flatten": { @@ -6211,7 +6806,7 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true }, "array.prototype.flat": { @@ -6241,13 +6836,13 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", "dev": true }, "astral-regex": { @@ -6259,7 +6854,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "autoprefixer": { @@ -6454,7 +7049,7 @@ "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "big.js": { @@ -6544,7 +7139,7 @@ "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "brace-expansion": { @@ -6606,7 +7201,7 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, "buffer-from": { @@ -6618,7 +7213,7 @@ "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true }, "call-bind": { @@ -6923,7 +7518,7 @@ "clone-deep": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", - "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", + "integrity": "sha512-we+NuQo2DHhSl+DP6jlUiAhyAjBQrYnpOk15rN6c6JSPScjiCLh8IbSU+VTcph6YS3o7mASE8a0+gbZ7ChLpgg==", "dev": true, "requires": { "for-own": "^0.1.3", @@ -6947,7 +7542,7 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, "collect-v8-coverage": { @@ -7011,7 +7606,7 @@ "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "compressible": { @@ -7050,7 +7645,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -7070,7 +7665,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "connect-history-api-fallback": { @@ -7127,7 +7722,7 @@ "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, "copy-webpack-plugin": { @@ -7271,7 +7866,7 @@ "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -7292,7 +7887,7 @@ "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "dev": true } } @@ -7473,7 +8068,7 @@ "cwd": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", - "integrity": "sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc=", + "integrity": "sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==", "dev": true, "requires": { "find-pkg": "^0.1.2", @@ -7515,7 +8110,7 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, "decamelize-keys": { @@ -7545,7 +8140,7 @@ "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, "deep-extend": { @@ -7609,7 +8204,7 @@ "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "requires": { "array-uniq": "^1.0.1" @@ -7618,7 +8213,7 @@ "globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", "dev": true, "requires": { "array-union": "^1.0.1", @@ -7631,7 +8226,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true } } @@ -7641,7 +8236,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, "delegate": { @@ -7704,7 +8299,7 @@ "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", "dev": true }, "dns-packet": { @@ -7842,7 +8437,7 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "electron-to-chromium": { @@ -7872,7 +8467,7 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true }, "encoding": { @@ -8016,7 +8611,7 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, "escape-string-regexp": { @@ -8046,7 +8641,7 @@ "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "requires": { "prelude-ls": "~1.1.2", @@ -8070,7 +8665,7 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, "source-map": { @@ -8083,7 +8678,7 @@ "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "requires": { "prelude-ls": "~1.1.2" @@ -8565,7 +9160,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, "eventemitter3": { @@ -8637,13 +9232,13 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, "expand-tilde": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "integrity": "sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==", "dev": true, "requires": { "os-homedir": "^1.0.1" @@ -8801,7 +9396,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "fastest-levenshtein": { @@ -8840,7 +9435,7 @@ "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "requires": { "pend": "~1.2.0" @@ -8858,7 +9453,7 @@ "filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", "dev": true }, "filenamify": { @@ -8927,7 +9522,7 @@ "find-file-up": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", - "integrity": "sha1-z2gJG8+fMApA2kEbN9pczlovvqA=", + "integrity": "sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==", "dev": true, "requires": { "fs-exists-sync": "^0.1.0", @@ -8943,7 +9538,7 @@ "find-pkg": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", - "integrity": "sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc=", + "integrity": "sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==", "dev": true, "requires": { "find-file-up": "^0.1.2" @@ -9019,13 +9614,13 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true }, "for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", "dev": true, "requires": { "for-in": "^1.0.1" @@ -9088,7 +9683,7 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, "fs-constants": { @@ -9100,7 +9695,7 @@ "fs-exists-sync": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "integrity": "sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==", "dev": true }, "fs-monkey": { @@ -9112,7 +9707,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "fsevents": { @@ -9238,7 +9833,7 @@ "global-modules": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "integrity": "sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==", "dev": true, "requires": { "global-prefix": "^0.1.4", @@ -9248,7 +9843,7 @@ "global-prefix": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "integrity": "sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==", "dev": true, "requires": { "homedir-polyfill": "^1.0.0", @@ -9280,7 +9875,7 @@ "globjoin": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true }, "good-listener": { @@ -9422,7 +10017,7 @@ "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -9493,7 +10088,7 @@ "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", "dev": true }, "http-errors": { @@ -9636,7 +10231,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "indent-string": { @@ -9648,7 +10243,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -9767,13 +10362,13 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { @@ -9912,7 +10507,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "is-unicode-supported": { @@ -9933,7 +10528,7 @@ "is-windows": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "integrity": "sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==", "dev": true }, "is-wsl": { @@ -9954,13 +10549,13 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, "istanbul-lib-coverage": { @@ -10646,7 +11241,7 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "json2php": { @@ -10680,7 +11275,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -10713,7 +11308,7 @@ "language-tags": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", "dev": true, "requires": { "language-subtag-registry": "~0.3.2" @@ -10722,7 +11317,7 @@ "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", "dev": true }, "leven": { @@ -10805,13 +11400,13 @@ "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, "lodash.merge": { @@ -10823,13 +11418,13 @@ "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, "log-symbols": { @@ -10895,7 +11490,7 @@ "map-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-values/-/map-values-1.0.1.tgz", - "integrity": "sha1-douOecAJvytk/ugG4ip7HEGQyZA=", + "integrity": "sha512-BbShUnr5OartXJe1GeccAWtfro11hhgNJg6G9/UtWKjVGvV5U4C09cg5nk8JUevhXODaXY+hQ3xxMUKSs62ONQ==", "dev": true }, "markdown-it": { @@ -11005,13 +11600,13 @@ "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true }, "memfs": { @@ -11091,7 +11686,7 @@ "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, "merge-stream": { @@ -11109,7 +11704,7 @@ "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, "micromatch": { @@ -11246,7 +11841,7 @@ "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true }, "kind-of": { @@ -11260,7 +11855,7 @@ "mixin-object": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "integrity": "sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==", "dev": true, "requires": { "for-in": "^0.1.3", @@ -11270,7 +11865,7 @@ "for-in": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "integrity": "sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==", "dev": true } } @@ -11333,7 +11928,7 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "negotiator": { @@ -11400,7 +11995,7 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node-releases": { @@ -11438,7 +12033,7 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true }, "normalize-url": { @@ -11546,7 +12141,7 @@ "object-filter": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/object-filter/-/object-filter-1.0.2.tgz", - "integrity": "sha1-rwt5f/6+r4pSxmN87b6IFs/sG8g=", + "integrity": "sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA==", "dev": true }, "object-inspect": { @@ -11640,7 +12235,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -11689,7 +12284,7 @@ "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true }, "p-limit": { @@ -11764,7 +12359,7 @@ "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true }, "parse5": { @@ -11808,13 +12403,13 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true }, "path-key": { @@ -11842,7 +12437,7 @@ "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, "picocolors": { @@ -11866,13 +12461,13 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -12033,7 +12628,7 @@ "postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", "dev": true }, "postcss-merge-longhand": { @@ -12245,7 +12840,7 @@ "postcss-resolve-nested-selector": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", "dev": true }, "postcss-safe-parser": { @@ -12406,7 +13001,7 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, "psl": { @@ -12899,7 +13494,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-from-string": { @@ -12923,7 +13518,7 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "resolve": { @@ -12965,7 +13560,7 @@ "resolve-dir": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "integrity": "sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==", "dev": true, "requires": { "expand-tilde": "^1.2.2", @@ -13130,7 +13725,7 @@ "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true }, "selfsigned": { @@ -13217,7 +13812,7 @@ "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -13247,7 +13842,7 @@ "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "requires": { "depd": "~1.1.2", @@ -13259,13 +13854,13 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "setprototypeof": { @@ -13309,7 +13904,7 @@ "shallow-clone": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "integrity": "sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw==", "dev": true, "requires": { "is-extendable": "^0.1.1", @@ -13321,7 +13916,7 @@ "kind-of": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "integrity": "sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg==", "dev": true, "requires": { "is-buffer": "^1.0.2" @@ -13330,7 +13925,7 @@ "lazy-cache": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "integrity": "sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==", "dev": true } } @@ -13338,7 +13933,7 @@ "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -13347,7 +13942,7 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true }, "showdown": { @@ -13868,7 +14463,7 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, "strip-final-newline": { @@ -13904,7 +14499,7 @@ "style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", "dev": true }, "stylehacks": { @@ -14153,7 +14748,7 @@ "svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, "svgo": { @@ -14307,7 +14902,7 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "throat": { @@ -14319,7 +14914,7 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "thunky": { @@ -14408,7 +15003,7 @@ "trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.2" @@ -14571,7 +15166,7 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, "update-browserslist-db": { @@ -14661,13 +15256,13 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true }, "uuid": { @@ -14716,7 +15311,7 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true }, "w3c-hr-time": { @@ -15221,7 +15816,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "write-file-atomic": { @@ -15295,7 +15890,7 @@ "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "requires": { "buffer-crc32": "~0.2.3", diff --git a/wp-modules/editor/package.json b/wp-modules/editor/package.json index c6bae4c87..498bc11df 100644 --- a/wp-modules/editor/package.json +++ b/wp-modules/editor/package.json @@ -15,6 +15,7 @@ "@wordpress/element": "^5.0.0", "@wordpress/i18n": "^4.3.1", "@wordpress/icons": "^9.16.0", + "@wordpress/plugins": "^5.4.0", "@wordpress/scripts": "^24.4.0" }, "dependencies": { diff --git a/wp-modules/editor/tests/EditorTest.php b/wp-modules/editor/tests/EditorTest.php new file mode 100644 index 000000000..217240712 --- /dev/null +++ b/wp-modules/editor/tests/EditorTest.php @@ -0,0 +1,35 @@ + null ] ) as $meta_key => $meta_value ) { + $expected_type = get_registered_meta_keys( 'post', 'pm_pattern' )[ $meta_key ]['type']; + $this->assertSame( + 'number' === $expected_type ? 'integer' : $expected_type, + gettype( $meta_value ) + ); + } + } +} diff --git a/wp-modules/editor/tests/ModelTest.php b/wp-modules/editor/tests/ModelTest.php index dd59c5677..d4e67b608 100644 --- a/wp-modules/editor/tests/ModelTest.php +++ b/wp-modules/editor/tests/ModelTest.php @@ -47,69 +47,6 @@ public function test_add_active_theme_to_heartbeat_correct_post() { ); } - /** - * Tests ignore_title_field_in_revisions. - */ - public function test_ignore_title_field_in_revisions_wrong_post() { - $post = new stdClass(); - $post->post_parent = $this->factory()->post->create( [ 'post_type' => 'page' ] ); - - $this->assertSame( - [ - 'post_title' => 'Example Title', - 'post_author' => 123, - - ], - ignore_title_field_in_revisions( - [ - 'post_title' => 'Example Title', - 'post_author' => 123, - ], - $post - ) - ); - } - - /** - * Tests ignore_title_field_in_revisions. - */ - public function test_ignore_title_field_in_revisions_array_post() { - $this->assertSame( - [ - 'post_title' => 'my-new-pattern', - 'post_author' => 123, - ], - ignore_title_field_in_revisions( - [ - 'post_title' => 'my-new-pattern', - 'post_author' => 123, - ], - [ - 'post_parent' => $this->factory()->post->create( [ 'post_type' => 'pm_pattern' ] ), - ] - ) - ); - } - - /** - * Tests ignore_title_field_in_revisions. - */ - public function test_ignore_title_field_in_revisions_correct_post() { - $post = new stdClass(); - $post->post_parent = $this->factory()->post->create( [ 'post_type' => 'pm_pattern' ] ); - - $this->assertSame( - [ 'post_author' => 123 ], - ignore_title_field_in_revisions( - [ - 'post_title' => 'my-new-pattern', - 'post_author' => 123, - ], - $post - ) - ); - } - /** * Tests delete_pattern_posts. */ diff --git a/wp-modules/editor/tests/UtilsTest.php b/wp-modules/editor/tests/UtilsTest.php index 87fcfaddd..a7178efbf 100644 --- a/wp-modules/editor/tests/UtilsTest.php +++ b/wp-modules/editor/tests/UtilsTest.php @@ -187,19 +187,15 @@ public function test_get_duplicate_pattern_ids( $pattern_name, $patterns, $expec } /** - * Gets the data for the test of get_new_pattern(). + * Gets the data for the test of get_new_pattern_title(). * * @return array[] */ - public function data_get_new_pattern() { + public function data_get_new_pattern_title() { return array( array( array(), - array( - 'name' => 'my-new-pattern', - 'slug' => 'my-new-pattern', - 'title' => 'My New Pattern', - ), + 'My New Pattern', ), array( array( @@ -209,11 +205,7 @@ public function data_get_new_pattern() { 'title' => 'My New Pattern', ), ), - array( - 'name' => 'my-new-pattern-1', - 'slug' => 'my-new-pattern-1', - 'title' => 'My New Pattern 1', - ), + 'My New Pattern 1', ), array( array( @@ -228,11 +220,7 @@ public function data_get_new_pattern() { 'title' => 'My New Pattern 1', ), ), - array( - 'name' => 'my-new-pattern-2', - 'slug' => 'my-new-pattern-2', - 'title' => 'My New Pattern 2', - ), + 'My New Pattern 2', ), array( array( @@ -252,11 +240,7 @@ public function data_get_new_pattern() { 'title' => 'My New Pattern 2', ), ), - array( - 'name' => 'my-new-pattern-3', - 'slug' => 'my-new-pattern-3', - 'title' => 'My New Pattern 3', - ), + 'My New Pattern 3', ), array( array( @@ -276,36 +260,20 @@ public function data_get_new_pattern() { 'title' => 'My New Pattern 9', ), ), - array( - 'name' => 'my-new-pattern-2', - 'slug' => 'my-new-pattern-2', - 'title' => 'My New Pattern 2', - ), + 'My New Pattern 2', ), ); } /** - * Tests get_new_pattern. + * Tests get_new_pattern_title. * - * @dataProvider data_get_new_pattern + * @dataProvider data_get_new_pattern_title */ - public function test_get_new_pattern( $all_patterns, $expected ) { + public function test_get_new_pattern_title( $all_patterns, $expected ) { $this->assertSame( - array_merge( - $expected, - array( - 'categories' => array(), - 'keywords' => array(), - 'blockTypes' => array(), - 'postTypes' => array(), - 'inserter' => true, - 'description' => '', - 'viewportWidth' => '', - 'content' => '', - ) - ), - get_new_pattern( $all_patterns ) + $expected, + get_new_pattern_title( $all_patterns ) ); } } diff --git a/wp-modules/editor/utils.php b/wp-modules/editor/utils.php index ac196e7ca..bd5f4f602 100644 --- a/wp-modules/editor/utils.php +++ b/wp-modules/editor/utils.php @@ -75,27 +75,11 @@ function get_duplicate_pattern_ids( string $name, array $all_patterns ) { * Gets a new pattern. * * @param array $all_patterns All the patterns. - * @return array The new pattern. + * @return string The new pattern title. */ -function get_new_pattern( array $all_patterns ): array { - $name_base = 'my-new-pattern'; - $number = get_new_pattern_number( $name_base, $all_patterns ); - $new_name = $number ? "{$name_base}-{$number}" : $name_base; - $new_title = $number ? "My New Pattern {$number}" : 'My New Pattern'; - - return array( - 'name' => $new_name, - 'slug' => $new_name, - 'title' => $new_title, - 'categories' => array(), - 'keywords' => array(), - 'blockTypes' => array(), - 'postTypes' => array(), - 'inserter' => true, - 'description' => '', - 'viewportWidth' => '', - 'content' => '', - ); +function get_new_pattern_title( array $all_patterns ): string { + $number = get_new_pattern_number( 'my-new-pattern', $all_patterns ); + return $number ? "My New Pattern {$number}" : 'My New Pattern'; } /** diff --git a/wp-modules/pattern-data-handlers/pattern-data-handlers.php b/wp-modules/pattern-data-handlers/pattern-data-handlers.php index 880ac29bd..a16a0ccb5 100644 --- a/wp-modules/pattern-data-handlers/pattern-data-handlers.php +++ b/wp-modules/pattern-data-handlers/pattern-data-handlers.php @@ -160,13 +160,14 @@ function get_theme_patterns_with_editor_links() { $query = new WP_Query( [ 'post_type' => get_pattern_post_type(), - 'post_title' => $pattern['name'], + 'post_name' => $pattern['name'], + 'post_status' => 'publish', 'posts_per_page' => 1, ] ); $post = empty( $query->posts[0] ) ? false : $query->posts[0]; - $pattern['editorLink'] = $post && $post->post_title === $pattern['name'] + $pattern['editorLink'] = $post && $post->name === $pattern['name'] ? get_edit_post_link( $post, 'localized_data' ) : add_query_arg( [ @@ -229,6 +230,26 @@ function get_pattern_by_path( $path ) { return array_merge( $pattern_data, array( 'name' => basename( $path, '.php' ) ) ); } +/** + * Gets the default values for a pattern. + * + * @return array + */ +function get_pattern_defaults() { + return [ + 'name' => '', + 'title' => '', + 'description' => '', + 'content' => '', + 'viewportWidth' => 1280, + 'categories' => [], + 'keywords' => [], + 'blockTypes' => [], + 'postTypes' => [], + 'inserter' => true, + ]; +} + /** * Gets a pattern by its name. *