diff --git a/plugins/woocommerce-admin/client/wp-admin-scripts/product-tracking/global.d.ts b/plugins/woocommerce-admin/client/wp-admin-scripts/product-tracking/global.d.ts index 6ebe607f63e..1e394484d35 100644 --- a/plugins/woocommerce-admin/client/wp-admin-scripts/product-tracking/global.d.ts +++ b/plugins/woocommerce-admin/client/wp-admin-scripts/product-tracking/global.d.ts @@ -1 +1,2 @@ declare const productScreen: { name: string }; +declare const tinymce: import("tinymce").EditorManager; diff --git a/plugins/woocommerce-admin/client/wp-admin-scripts/product-tracking/shared.ts b/plugins/woocommerce-admin/client/wp-admin-scripts/product-tracking/shared.ts index 3dd03a9e1dc..cb9f5a5a672 100644 --- a/plugins/woocommerce-admin/client/wp-admin-scripts/product-tracking/shared.ts +++ b/plugins/woocommerce-admin/client/wp-admin-scripts/product-tracking/shared.ts @@ -13,8 +13,40 @@ import { waitUntilElementIsPresent } from './utils'; * * @return object */ + +const isElementVisible = ( element: HTMLElement ) => + ! ( window.getComputedStyle( element ).display === 'none' ); + const getProductData = () => { - return { + const isBlockEditor = + document.querySelectorAll( '.block-editor' ).length > 0; + + let description_value = ''; + let tagsText = ''; + + if ( ! isBlockEditor ) { + tagsText = ( + document.querySelector( + '[name="tax_input[product_tag]"]' + ) as HTMLInputElement + ).value; + const content = document.querySelector( + '#content' + ) as HTMLInputElement; + if ( content && isElementVisible( content ) ) { + description_value = content.value; + } else if ( typeof tinymce === 'object' && tinymce.get( 'content' ) ) { + description_value = tinymce.get( 'content' ).getContent(); + } + } else { + description_value = ( + document.querySelector( + '.block-editor-rich-text__editable' + ) as HTMLInputElement + )?.value; + } + + const productData = { product_id: ( document.querySelector( '#post_ID' ) as HTMLInputElement ) ?.value, product_type: ( @@ -22,14 +54,81 @@ const getProductData = () => { )?.value, is_downloadable: ( document.querySelector( '#_downloadable' ) as HTMLInputElement - )?.value, + )?.checked + ? 'Yes' + : 'No', is_virtual: ( document.querySelector( '#_virtual' ) as HTMLInputElement - )?.value, + )?.checked + ? 'Yes' + : 'No', manage_stock: ( document.querySelector( '#_manage_stock' ) as HTMLInputElement - )?.value, + )?.checked + ? 'Yes' + : 'No', + attributes: document.querySelectorAll( '.woocommerce_attribute' ) + .length, + categories: document.querySelectorAll( + '[name="tax_input[product_cat][]"]:checked' + ).length, + cross_sells: document.querySelectorAll( '#crosssell_ids option' ).length + ? 'Yes' + : 'No', + description: description_value.trim() !== '' ? 'Yes' : 'No', + enable_reviews: ( + document.querySelector( '#comment_status' ) as HTMLInputElement + )?.checked + ? 'Yes' + : 'No', + is_block_editor: isBlockEditor, + menu_order: + parseInt( + ( document.querySelector( '#menu_order' ) as HTMLInputElement ) + ?.value ?? 0, + 10 + ) !== 0 + ? 'Yes' + : 'No', + product_gallery: document.querySelectorAll( + '#product_images_container .product_images > li' + ).length, + product_image: + parseInt( + ( + document.querySelector( + '#_thumbnail_id' + ) as HTMLInputElement + )?.value, + 10 + ) > 0 + ? 'Yes' + : 'No', + purchase_note: ( + document.querySelector( '#_purchase_note' ) as HTMLInputElement + )?.value.length + ? 'Yes' + : 'No', + sale_price: ( + document.querySelector( '#_sale_price' ) as HTMLInputElement + )?.value + ? 'Yes' + : 'No', + short_description: ( + document.querySelector( '#excerpt' ) as HTMLInputElement + )?.value.length + ? 'Yes' + : 'No', + tags: tagsText.length > 0 ? tagsText.split( ',' ).length : 0, + upsells: document.querySelectorAll( '#upsell_ids option' ).length + ? 'Yes' + : 'No', + weight: ( document.querySelector( '#_weight' ) as HTMLInputElement ) + ?.value + ? 'Yes' + : 'No', }; + return productData; }; /** @@ -102,6 +201,7 @@ const prefixObjectKeys = ( /** * Initialize all product screen tracks. */ + export const initProductScreenTracks = () => { const initialPublishingData = getPublishingWidgetData(); @@ -324,4 +424,23 @@ export const initProductScreenTracks = () => { } ); } } ); + + document + .querySelector( + '#woocommerce-product-updated-message-view-product__link' + ) + ?.addEventListener( 'click', () => { + recordEvent( 'product_view_product_click', getProductData() ); + } ); + + const dismissProductUpdatedButtonSelector = + '.notice-success.is-dismissible > button'; + + waitUntilElementIsPresent( dismissProductUpdatedButtonSelector, () => { + document + .querySelector( dismissProductUpdatedButtonSelector ) + ?.addEventListener( 'click', () => { + recordEvent( 'product_view_product_dismiss', getProductData() ); + } ); + } ); }; diff --git a/plugins/woocommerce-admin/package.json b/plugins/woocommerce-admin/package.json index 797c9592aae..7671222bec5 100644 --- a/plugins/woocommerce-admin/package.json +++ b/plugins/woocommerce-admin/package.json @@ -125,6 +125,7 @@ "@types/react-router-dom": "^5.3.3", "@types/react-transition-group": "^4.4.4", "@types/testing-library__jest-dom": "^5.14.3", + "@types/tinymce": "^4.6.5", "@types/wordpress__components": "^19.10.1", "@types/wordpress__compose": "^4.0.1", "@types/wordpress__data": "^6.0.0", diff --git a/plugins/woocommerce/changelog/add-tracks-product-action b/plugins/woocommerce/changelog/add-tracks-product-action new file mode 100644 index 00000000000..47eb3533833 --- /dev/null +++ b/plugins/woocommerce/changelog/add-tracks-product-action @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add tracks events for 'product_view_product_click' and 'product_view_product_dismiss' diff --git a/plugins/woocommerce/includes/admin/class-wc-admin-post-types.php b/plugins/woocommerce/includes/admin/class-wc-admin-post-types.php index cf2de8498fa..5680eec7f88 100644 --- a/plugins/woocommerce/includes/admin/class-wc-admin-post-types.php +++ b/plugins/woocommerce/includes/admin/class-wc-admin-post-types.php @@ -124,14 +124,14 @@ class WC_Admin_Post_Types { $messages['product'] = array( 0 => '', // Unused. Messages start at index 1. - /* translators: %s: Product view URL. */ - 1 => sprintf( __( 'Product updated. View Product', 'woocommerce' ), esc_url( get_permalink( $post->ID ) ) ), + /* translators: %1$s: Product link opening tag. %2$s: Product link closing tag.*/ + 1 => sprintf( __( 'Product updated. %1$sView Product%2$s', 'woocommerce' ), '', '' ), 2 => __( 'Custom field updated.', 'woocommerce' ), 3 => __( 'Custom field deleted.', 'woocommerce' ), 4 => __( 'Product updated.', 'woocommerce' ), 5 => __( 'Revision restored.', 'woocommerce' ), - /* translators: %s: product url */ - 6 => sprintf( __( 'Product published. View Product', 'woocommerce' ), esc_url( get_permalink( $post->ID ) ) ), + /* translators: %1$s: Product link opening tag. %2$s: Product link closing tag.*/ + 6 => sprintf( __( 'Product published. %1$sView Product%2$s', 'woocommerce' ), '', '' ), 7 => __( 'Product saved.', 'woocommerce' ), /* translators: %s: product url */ 8 => sprintf( __( 'Product submitted. Preview product', 'woocommerce' ), esc_url( add_query_arg( 'preview', 'true', get_permalink( $post->ID ) ) ) ), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c740964146d..49e9440dc83 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1427,6 +1427,7 @@ importers: '@types/react-router-dom': ^5.3.3 '@types/react-transition-group': ^4.4.4 '@types/testing-library__jest-dom': ^5.14.3 + '@types/tinymce': ^4.6.5 '@types/wordpress__blocks': ^11.0.7 '@types/wordpress__components': ^19.10.1 '@types/wordpress__compose': ^4.0.1 @@ -1645,6 +1646,7 @@ importers: '@types/react-router-dom': 5.3.3 '@types/react-transition-group': 4.4.4 '@types/testing-library__jest-dom': 5.14.3 + '@types/tinymce': 4.6.5 '@types/wordpress__components': 19.10.1_sfoxds7t5ydpegc3knd667wn6m '@types/wordpress__compose': 4.0.1 '@types/wordpress__data': 6.0.0 @@ -2592,32 +2594,6 @@ packages: semver: 6.3.0 dev: true - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.12.9: - resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.19.3 - '@babel/core': 7.12.9 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.20.4 - semver: 6.3.0 - dev: true - - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.16.12: - resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.19.3 - '@babel/core': 7.16.12 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.20.4 - semver: 6.3.0 - dev: false - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.8: resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} engines: {node: '>=6.9.0'} @@ -3418,9 +3394,9 @@ packages: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.12.9 dev: true /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.16.12: @@ -3430,9 +3406,9 @@ packages: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.16.12 dev: false /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.17.8: @@ -3479,7 +3455,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-remap-async-to-generator': 7.16.8 '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.9 transitivePeerDependencies: @@ -3493,7 +3469,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-remap-async-to-generator': 7.16.8 '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.12 transitivePeerDependencies: @@ -4174,6 +4150,30 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.8 + /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.12 + dev: false + /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} engines: {node: '>=6.9.0'} @@ -4327,7 +4327,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.18.9 dev: true /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.16.12: @@ -4338,7 +4338,7 @@ packages: dependencies: '@babel/core': 7.16.12 '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.18.9 dev: false /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.17.8: @@ -5139,7 +5139,7 @@ packages: '@babel/helper-environment-visitor': 7.16.7 '@babel/helper-function-name': 7.16.7 '@babel/helper-optimise-call-expression': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-replace-supers': 7.16.7 '@babel/helper-split-export-declaration': 7.16.7 globals: 11.12.0 @@ -5158,7 +5158,7 @@ packages: '@babel/helper-environment-visitor': 7.16.7 '@babel/helper-function-name': 7.16.7 '@babel/helper-optimise-call-expression': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-replace-supers': 7.16.7 '@babel/helper-split-export-declaration': 7.16.7 globals: 11.12.0 @@ -5863,7 +5863,7 @@ packages: '@babel/core': 7.12.9 '@babel/helper-hoist-variables': 7.16.7 '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-identifier': 7.16.7 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: @@ -5879,7 +5879,7 @@ packages: '@babel/core': 7.16.12 '@babel/helper-hoist-variables': 7.16.7 '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-identifier': 7.16.7 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: @@ -7026,7 +7026,7 @@ packages: dependencies: '@babel/compat-data': 7.17.7 '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.12.9 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 '@babel/helper-plugin-utils': 7.18.9 '@babel/helper-validator-option': 7.16.7 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7_@babel+core@7.12.9 @@ -7093,7 +7093,7 @@ packages: '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.12.9 '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.12.9 '@babel/preset-modules': 0.1.5_@babel+core@7.12.9 - '@babel/types': 7.17.0 + '@babel/types': 7.19.3 babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.12.9 babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.12.9 babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.12.9 @@ -7111,7 +7111,7 @@ packages: dependencies: '@babel/compat-data': 7.17.7 '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.16.12 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.16.12 '@babel/helper-plugin-utils': 7.18.9 '@babel/helper-validator-option': 7.16.7 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7_@babel+core@7.16.12 @@ -7178,7 +7178,7 @@ packages: '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.16.12 '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.16.12 '@babel/preset-modules': 0.1.5_@babel+core@7.16.12 - '@babel/types': 7.17.0 + '@babel/types': 7.19.3 babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.16.12 babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.16.12 babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.16.12 @@ -7429,8 +7429,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-option': 7.16.7 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-validator-option': 7.18.6 '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.16.12 transitivePeerDependencies: - supports-color @@ -7959,7 +7959,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 7.3.1 - globals: 13.17.0 + globals: 13.18.0 ignore: 4.0.6 import-fresh: 3.3.0 js-yaml: 3.14.1 @@ -13519,6 +13519,12 @@ packages: jest-matcher-utils: 27.5.1 pretty-format: 27.5.1 + /@types/jquery/3.5.14: + resolution: {integrity: sha512-X1gtMRMbziVQkErhTQmSe2jFwwENA/Zr+PprCkF63vFq+Yt5PZ4AlKqgmeNlwgn7dhsXEK888eIW2520EpC+xg==} + dependencies: + '@types/sizzle': 2.3.3 + dev: true + /@types/json-schema/7.0.9: resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} @@ -13748,6 +13754,10 @@ packages: '@types/node': 17.0.21 dev: true + /@types/sizzle/2.3.3: + resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} + dev: true + /@types/source-list-map/0.1.2: resolution: {integrity: sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==} dev: true @@ -13774,6 +13784,12 @@ packages: /@types/tinycolor2/1.4.3: resolution: {integrity: sha512-Kf1w9NE5HEgGxCRyIcRXR/ZYtDv0V8FVPtYHwLxl0O+maGX0erE77pQlD0gpP+/KByMZ87mOA79SjifhSB3PjQ==} + /@types/tinymce/4.6.5: + resolution: {integrity: sha512-C5gdEi85rUeYEXzXlwAm9MzvfMI8SooVbBMLLN/BQTeDnHWNtRWAkB6ON9s0lhWZYrmjSgLPrWSe86rjciACEQ==} + dependencies: + '@types/jquery': 3.5.14 + dev: true + /@types/trusted-types/2.0.2: resolution: {integrity: sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==} dev: true @@ -19290,7 +19306,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.17.8 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.17.8 transitivePeerDependencies: - supports-color dev: true @@ -21526,7 +21542,7 @@ packages: postcss-value-parser: 4.2.0 schema-utils: 2.7.1 semver: 6.3.0 - webpack: 5.70.0 + webpack: 5.70.0_webpack-cli@3.3.12 /css-loader/5.2.7_webpack@5.70.0: resolution: {integrity: sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==} @@ -23222,11 +23238,11 @@ packages: eslint-import-resolver-node: 0.3.6 eslint-module-utils: 2.7.3_fmuy6wfytpxcy4lufnxcokvnry has: 1.0.3 - is-core-module: 2.10.0 + is-core-module: 2.8.0 is-glob: 4.0.3 - minimatch: 3.1.2 + minimatch: 3.0.4 object.values: 1.1.5 - resolve: 1.22.1 + resolve: 1.20.0 tsconfig-paths: 3.14.0 transitivePeerDependencies: - eslint-import-resolver-typescript @@ -23253,11 +23269,11 @@ packages: eslint-import-resolver-node: 0.3.6 eslint-module-utils: 2.7.3_lkzaig2qiyp6elizstfbgvzhie has: 1.0.3 - is-core-module: 2.10.0 + is-core-module: 2.8.0 is-glob: 4.0.3 - minimatch: 3.1.2 + minimatch: 3.0.4 object.values: 1.1.5 - resolve: 1.22.1 + resolve: 1.20.0 tsconfig-paths: 3.14.0 transitivePeerDependencies: - eslint-import-resolver-typescript @@ -23284,11 +23300,11 @@ packages: eslint-import-resolver-node: 0.3.6 eslint-module-utils: 2.7.3_fmuy6wfytpxcy4lufnxcokvnry has: 1.0.3 - is-core-module: 2.10.0 + is-core-module: 2.8.0 is-glob: 4.0.3 - minimatch: 3.1.2 + minimatch: 3.0.4 object.values: 1.1.5 - resolve: 1.22.1 + resolve: 1.20.0 tsconfig-paths: 3.14.0 transitivePeerDependencies: - eslint-import-resolver-typescript @@ -30562,7 +30578,7 @@ packages: optional: true dependencies: abab: 2.0.5 - acorn: 8.8.0 + acorn: 8.8.1 acorn-globals: 6.0.0 cssom: 0.4.4 cssstyle: 2.3.0 @@ -32326,7 +32342,6 @@ packages: resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} dependencies: brace-expansion: 1.1.11 - dev: true /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -36356,24 +36371,6 @@ packages: react-dom: 17.0.2_react@17.0.2 dev: false - /react-with-direction/1.4.0_prpqlkd37azqwypxturxi7uyci: - resolution: {integrity: sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==} - peerDependencies: - react: ^0.14 || ^15 || ^16 - react-dom: ^0.14 || ^15 || ^16 - dependencies: - airbnb-prop-types: 2.16.0_react@17.0.2 - brcast: 2.0.2 - deepmerge: 1.5.2 - direction: 1.0.4 - hoist-non-react-statics: 3.3.2 - object.assign: 4.1.4 - object.values: 1.1.5 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 16.14.0_react@17.0.2 - dev: false - /react-with-direction/1.4.0_sfoxds7t5ydpegc3knd667wn6m: resolution: {integrity: sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==} peerDependencies: @@ -36454,7 +36451,7 @@ packages: object.assign: 4.1.4 prop-types: 15.8.1 react: 17.0.2 - react-with-direction: 1.4.0_prpqlkd37azqwypxturxi7uyci + react-with-direction: 1.4.0_sfoxds7t5ydpegc3knd667wn6m dev: false /react-with-styles/3.2.3_wunono5fri6mu4ojuug6cyhj7m: @@ -37615,7 +37612,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 semver: 7.3.5 - webpack: 5.70.0 + webpack: 5.70.0_webpack-cli@3.3.12 /sass-loader/12.6.0_sass@1.49.9+webpack@5.70.0: resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} @@ -39563,7 +39560,7 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - acorn: 8.8.0 + acorn: 8.8.1 commander: 2.20.3 source-map: 0.6.1 source-map-support: 0.5.20