From 2cae9a1a0182a34e8d976a701886875f98e4c0b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Ruz=CC=8Cevic=CC=81?= Date: Mon, 8 Jul 2024 16:42:26 +0200 Subject: [PATCH 01/35] adding initial result ouput for tnx page settings --- src/CustomPostType/Result.php | 18 +++- src/Hooks/FiltersSettingsBuilder.php | 10 ++ src/ResultOutput/SettingsResultOutput.php | 118 ++++++++++++++++++++++ 3 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 src/ResultOutput/SettingsResultOutput.php diff --git a/src/CustomPostType/Result.php b/src/CustomPostType/Result.php index 5e162edc..ad2fce66 100644 --- a/src/CustomPostType/Result.php +++ b/src/CustomPostType/Result.php @@ -10,7 +10,9 @@ namespace EightshiftForms\CustomPostType; +use EightshiftForms\ResultOutput\SettingsResultOutput; use EightshiftFormsVendor\EightshiftFormsUtils\Config\UtilsConfig; +use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsSettingsHelper; use EightshiftFormsVendor\EightshiftLibs\CustomPostType\AbstractPostType; /** @@ -84,7 +86,7 @@ protected function getPostTypeSlug(): string */ protected function getPostTypeArguments(): array { - return [ + $output = [ // phpcs:disable SlevomatCodingStandard.Namespaces.FullyQualifiedGlobalFunctions.NonFullyQualified 'labels' => [ 'name' => esc_html_x( @@ -111,6 +113,20 @@ protected function getPostTypeArguments(): array 'can_export' => true, 'capability_type' => self::POST_CAPABILITY_TYPE, 'rest_base' => static::REST_API_ENDPOINT_SLUG, + ]; + + if (\apply_filters(SettingsResultOutput::FILTER_SETTINGS_IS_VALID_NAME, false)) { + $output['publicly_queryable'] = true; + $output['rewrite']['with_front'] = false; + + $prefix = UtilsSettingsHelper::getOptionValue(SettingsResultOutput::SETTINGS_RESULT_OUTPUT_URL_PREFIX_KEY); + + if ($prefix) { + $output['rewrite']['slug'] = $prefix; + } + } + + return $output; } } diff --git a/src/Hooks/FiltersSettingsBuilder.php b/src/Hooks/FiltersSettingsBuilder.php index f4db6043..9a1e30fb 100644 --- a/src/Hooks/FiltersSettingsBuilder.php +++ b/src/Hooks/FiltersSettingsBuilder.php @@ -60,6 +60,7 @@ use EightshiftForms\Misc\SettingsCloudflare; use EightshiftForms\Misc\SettingsRocketCache; use EightshiftForms\Misc\SettingsWpml; +use EightshiftForms\ResultOutput\SettingsResultOutput; use EightshiftForms\Security\SettingsSecurity; use EightshiftForms\Validation\SettingsValidation; use EightshiftForms\Validation\Validator; @@ -204,6 +205,15 @@ public function getSettingsFiltersData(): array 'desc' => \__('Collect form entries in your project database.', 'eightshift-forms'), ], ], + SettingsResultOutput::SETTINGS_TYPE_KEY => [ + 'settingsGlobal' => SettingsResultOutput::FILTER_SETTINGS_GLOBAL_NAME, + 'type' => UtilsConfig::SETTINGS_INTERNAL_TYPE_ADVANCED, + 'use' => SettingsResultOutput::SETTINGS_RESULT_OUTPUT_USE_KEY, + 'labels' => [ + 'title' => \__('Result Outputs', 'eightshift-forms'), + 'desc' => \__('Output form results to various services like tnx page.', 'eightshift-forms'), + ], + ], // ------------------------------ // INTEGRATIONS. // ------------------------------ diff --git a/src/ResultOutput/SettingsResultOutput.php b/src/ResultOutput/SettingsResultOutput.php new file mode 100644 index 00000000..63c9a372 --- /dev/null +++ b/src/ResultOutput/SettingsResultOutput.php @@ -0,0 +1,118 @@ +> + */ + public function getSettingsGlobalData(): array + { + if (!UtilsSettingsHelper::isOptionCheckboxChecked(self::SETTINGS_RESULT_OUTPUT_USE_KEY, self::SETTINGS_RESULT_OUTPUT_USE_KEY)) { + return UtilsSettingsOutputHelper::getNoActiveFeature(); + } + + return [ + UtilsSettingsOutputHelper::getIntro(self::SETTINGS_TYPE_KEY), + [ + 'component' => 'tabs', + 'tabsContent' => [ + [ + 'component' => 'tab', + 'tabLabel' => \__('Internal storage', 'eightshift-forms'), + 'tabContent' => [ + [ + 'component' => 'intro', + 'introSubtitle' => \__('If you change these options make sure you resave your permalinks under settings > permalinks.', 'eightshift-forms'), + 'introIsHighlighted' => true, + 'introIsHighlightedImportant' => true, + ], + [ + 'component' => 'input', + 'inputName' => UtilsSettingsHelper::getOptionName(self::SETTINGS_RESULT_OUTPUT_URL_PREFIX_KEY), + 'inputFieldLabel' => \__('Global url prefix', 'eightshift-forms'), + 'inputFieldHelp' => \__('Define a global prefix for all the result output urls. If you set this value with "/" your result outputs will not have a prefix but be careful as the created outputs can colide with other pages.', 'eightshift-forms'), + 'inputType' => 'text', + 'inputPlaceholder' => Result::POST_TYPE_URL_SLUG, + 'inputValue' => UtilsSettingsHelper::getOptionValue(self::SETTINGS_RESULT_OUTPUT_URL_PREFIX_KEY), + ], + ], + ], + ], + ], + ]; + } +} From c1e05062b633df5d8145a8a25b2dead0cc8a1cb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Ruz=CC=8Cevic=CC=81?= Date: Tue, 9 Jul 2024 16:43:16 +0200 Subject: [PATCH 02/35] updating manifest attrs --- composer.json | 9 +- composer.lock | 39 +++-- src/AdminMenus/FormAdminMenu.php | 10 ++ .../components/form/assets/state-init.js | 2 - src/Blocks/components/form/assets/state.js | 3 - src/Blocks/components/form/assets/utils.js | 16 +- src/Blocks/components/form/form.php | 4 + src/Enqueue/Blocks/EnqueueBlocks.php | 4 - src/Form/Form.php | 67 ++++---- src/Hooks/FiltersSettingsBuilder.php | 1 + src/Rest/Routes/AbstractFormSubmit.php | 117 +++++++++----- .../Integrations/Mailer/FormSubmitMailer.php | 30 +--- src/ResultOutput/SettingsResultOutput.php | 149 +++++++++++++++++- src/Settings/Settings/SettingsSettings.php | 14 -- 14 files changed, 324 insertions(+), 141 deletions(-) diff --git a/composer.json b/composer.json index bd5a3bb1..924cf87a 100644 --- a/composer.json +++ b/composer.json @@ -39,10 +39,17 @@ "szepeviktor/phpstan-wordpress": "^v1.3.4", "wp-cli/wp-cli": "^v2.10.0" }, + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/infinum/eightshift-forms-utils.git" + } + ], "require": { "php": ">=8.2", "erusev/parsedown": "^1.7.4", - "infinum/eightshift-forms-utils": "^2.0.0" + "infinum/eightshift-forms-utils": "dev-feature/gated" + }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 160dca9f..814219ab 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7907dbf45b0ca596126c12cb87a02250", + "content-hash": "755ab47c3b5169ba8597fce39e6be366", "packages": [ { "name": "erusev/parsedown", @@ -58,16 +58,16 @@ }, { "name": "infinum/eightshift-forms-utils", - "version": "2.0.0", + "version": "dev-feature/gated", "source": { "type": "git", "url": "https://github.com/infinum/eightshift-forms-utils.git", - "reference": "d157c4aa58893384cf219df4ce5056b76a67c86f" + "reference": "22f27b9cfc97ab35955cbc912cb9674b3eba39fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infinum/eightshift-forms-utils/zipball/d157c4aa58893384cf219df4ce5056b76a67c86f", - "reference": "d157c4aa58893384cf219df4ce5056b76a67c86f", + "url": "https://api.github.com/repos/infinum/eightshift-forms-utils/zipball/22f27b9cfc97ab35955cbc912cb9674b3eba39fa", + "reference": "22f27b9cfc97ab35955cbc912cb9674b3eba39fa", "shasum": "" }, "require": { @@ -91,7 +91,21 @@ "EightshiftFormsUtils\\": "src/" } }, - "notification-url": "https://packagist.org/downloads/", + "scripts": { + "test:types": [ + "@php ./vendor/bin/phpstan analyze" + ], + "test:standards": [ + "@php ./vendor/squizlabs/php_codesniffer/bin/phpcs --runtime-set testVersion 8.2-" + ], + "standards:fix": [ + "@php ./vendor/squizlabs/php_codesniffer/bin/phpcbf --runtime-set testVersion 8.2-" + ], + "test": [ + "@test:standards", + "@test:types" + ] + }, "license": [ "MIT" ], @@ -106,21 +120,21 @@ "description": "Eightshift Forms Utils library for shared functionality", "homepage": "https://eightshift.com/", "keywords": [ - "Forms", + "Gutenberg", + "Mailchimp", + "WordPress", "blocks", "composer", "email", "form", - "gutenberg", - "mailchimp", - "plugin", - "wordpress" + "forms", + "plugin" ], "support": { "issues": "https://github.com/infinum/eightshift-forms/issues", "source": "https://github.com/infinum/eightshift-forms" }, - "time": "2024-06-05T08:07:37+00:00" + "time": "2024-07-09T11:10:08+00:00" }, { "name": "infinum/eightshift-libs", @@ -4947,6 +4961,7 @@ "aliases": [], "minimum-stability": "dev", "stability-flags": { + "infinum/eightshift-forms-utils": 20, "brain/faker": 20 }, "prefer-stable": true, diff --git a/src/AdminMenus/FormAdminMenu.php b/src/AdminMenus/FormAdminMenu.php index d63344e2..adb9992e 100644 --- a/src/AdminMenus/FormAdminMenu.php +++ b/src/AdminMenus/FormAdminMenu.php @@ -16,6 +16,7 @@ use EightshiftFormsVendor\EightshiftLibs\Helpers\Helpers; use EightshiftForms\Misc\SettingsWpml; use EightshiftForms\Listing\FormListingInterface; +use EightshiftForms\ResultOutput\SettingsResultOutput; use EightshiftFormsVendor\EightshiftFormsUtils\Config\UtilsConfig; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsDeveloperHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsGeneralHelper; @@ -969,6 +970,15 @@ private function getRightContent(array $item, string $type, string $parent): arr 'submitValue' => \__('Edit', 'eightshift-forms'), ]), ]; + + if (\apply_filters(SettingsResultOutput::FILTER_SETTINGS_IS_VALID_NAME, false)) { + $output[] = Helpers::render('submit', [ + 'submitVariant' => 'ghost', + 'submitButtonAsLink' => true, + 'submitButtonAsLinkUrl' => get_permalink($formId), + 'submitValue' => \__('View', 'eightshift-forms'), + ]); + } break; case UtilsConfig::SLUG_ADMIN_LISTING_ENTRIES: $output = []; diff --git a/src/Blocks/components/form/assets/state-init.js b/src/Blocks/components/form/assets/state-init.js index a25a8d41..b6ad204c 100644 --- a/src/Blocks/components/form/assets/state-init.js +++ b/src/Blocks/components/form/assets/state-init.js @@ -88,7 +88,6 @@ export const StateEnum = { SETTINGS_DISABLE_SCROLL_TO_GLOBAL_MSG_ON_SUCCESS: 'disableScrollToGlobalMsgOnSuccess', SETTINGS_DISABLE_SCROLL_TO_FIELD_ON_ERROR: 'disableScrollToFieldOnError', SETTINGS_FORM_RESET_ON_SUCCESS: 'formResetOnSuccess', - SETTINGS_FORM_DISABLE_NATIVE_REDIRECT_ON_SUCCESS: 'formDisableNativeRedirectOnSuccess', SETTINGS_REDIRECTION_TIMEOUT: 'redirectionTimeout', SETTINGS_HIDE_GLOBAL_MESSAGE_TIMEOUT: 'hideGlobalMessageTimeout', SETTINGS_FILE_REMOVE_LABEL: 'fileRemoveLabel', @@ -246,7 +245,6 @@ export function setStateInitial() { setState([StateEnum.SETTINGS_DISABLE_SCROLL_TO_GLOBAL_MSG_ON_SUCCESS], Boolean(esFormsLocalization.formDisableScrollToGlobalMessageOnSuccess), StateEnum.SETTINGS); setState([StateEnum.SETTINGS_DISABLE_SCROLL_TO_FIELD_ON_ERROR], Boolean(esFormsLocalization.formDisableScrollToFieldOnError), StateEnum.SETTINGS); setState([StateEnum.SETTINGS_FORM_RESET_ON_SUCCESS], Boolean(esFormsLocalization.formResetOnSuccess), StateEnum.SETTINGS); - setState([StateEnum.SETTINGS_FORM_DISABLE_NATIVE_REDIRECT_ON_SUCCESS], Boolean(esFormsLocalization.formDisableNativeRedirectOnSuccess), StateEnum.SETTINGS); setState([StateEnum.SETTINGS_REDIRECTION_TIMEOUT], esFormsLocalization.redirectionTimeout ?? 600, StateEnum.SETTINGS); setState([StateEnum.SETTINGS_HIDE_GLOBAL_MESSAGE_TIMEOUT], esFormsLocalization.hideGlobalMessageTimeout ?? 6000, StateEnum.SETTINGS); setState([StateEnum.SETTINGS_FILE_REMOVE_LABEL], esFormsLocalization.fileRemoveLabel ?? '', StateEnum.SETTINGS); diff --git a/src/Blocks/components/form/assets/state.js b/src/Blocks/components/form/assets/state.js index 88cabc13..8a701e48 100644 --- a/src/Blocks/components/form/assets/state.js +++ b/src/Blocks/components/form/assets/state.js @@ -248,9 +248,6 @@ export class State { getStateSettingsResetOnSuccess = () => { return getState([StateEnum.SETTINGS_FORM_RESET_ON_SUCCESS], StateEnum.SETTINGS); }; - getStateSettingsDisableNativeRedirectOnSuccess = () => { - return getState([StateEnum.SETTINGS_FORM_DISABLE_NATIVE_REDIRECT_ON_SUCCESS], StateEnum.SETTINGS); - }; getStateSettingsRedirectionTimeout = () => { return getState([StateEnum.SETTINGS_REDIRECTION_TIMEOUT], StateEnum.SETTINGS); }; diff --git a/src/Blocks/components/form/assets/utils.js b/src/Blocks/components/form/assets/utils.js index c7df2633..4f4203c8 100644 --- a/src/Blocks/components/form/assets/utils.js +++ b/src/Blocks/components/form/assets/utils.js @@ -652,16 +652,14 @@ export class Utils { redirectToUrlByReference(formId, redirectUrl, reload = false) { this.dispatchFormEvent(formId, this.state.getStateEvent('afterFormSubmitSuccessBeforeRedirect'), redirectUrl); - if (!this.state.getStateSettingsDisableNativeRedirectOnSuccess(formId)) { - // Do the actual redirect after some time. - setTimeout(() => { - window.location = redirectUrl; + // Do the actual redirect after some time. + setTimeout(() => { + window.location = redirectUrl; - if (reload) { - window.location.reload(); - } - }, parseInt(this.state.getStateSettingsRedirectionTimeout(formId), 10)); - } + if (reload) { + window.location.reload(); + } + }, parseInt(this.state.getStateSettingsRedirectionTimeout(formId), 10)); } /** diff --git a/src/Blocks/components/form/form.php b/src/Blocks/components/form/form.php index be37fc14..42e8630b 100644 --- a/src/Blocks/components/form/form.php +++ b/src/Blocks/components/form/form.php @@ -78,6 +78,10 @@ $formAttrs[UtilsHelper::getStateAttribute('typeSelector')] = esc_attr($formDataTypeSelector); } +if (isset($attributes['secureData'])) { + $formAttrs[UtilsHelper::getStateAttribute('formSecureData')] = esc_attr($attributes['secureData']); +} + if ($formSuccessRedirect) { $formAttrs[UtilsHelper::getStateAttribute('successRedirect')] = esc_attr($formSuccessRedirect); } diff --git a/src/Enqueue/Blocks/EnqueueBlocks.php b/src/Enqueue/Blocks/EnqueueBlocks.php index c52e3ada..ccda46be 100644 --- a/src/Enqueue/Blocks/EnqueueBlocks.php +++ b/src/Enqueue/Blocks/EnqueueBlocks.php @@ -296,10 +296,6 @@ public function enqueueBlockFrontendScript(string $hook): void SettingsSettings::SETTINGS_GENERAL_DISABLE_SCROLL_TO_GLOBAL_MESSAGE_ON_SUCCESS, SettingsSettings::SETTINGS_GENERAL_DISABLE_SCROLL_KEY ); - $output['formDisableNativeRedirectOnSuccess'] = UtilsSettingsHelper::isOptionCheckboxChecked( - SettingsSettings::SETTINGS_GENERAL_DISABLE_NATIVE_REDIRECT_ON_SUCCESS, - SettingsSettings::SETTINGS_GENERAL_DISABLE_SCROLL_KEY - ); $output['formDisableAutoInit'] = UtilsSettingsHelper::isOptionCheckboxChecked( SettingsSettings::SETTINGS_GENERAL_DISABLE_AUTOINIT_ENQUEUE_SCRIPT_KEY, SettingsSettings::SETTINGS_GENERAL_DISABLE_DEFAULT_ENQUEUE_KEY diff --git a/src/Form/Form.php b/src/Form/Form.php index 18e5604a..2e08debd 100644 --- a/src/Form/Form.php +++ b/src/Form/Form.php @@ -17,6 +17,7 @@ use EightshiftForms\Settings\Settings\SettingsSettings; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsSettingsHelper; use EightshiftForms\Hooks\FiltersOuputMock; +use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsEncryption; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHooksHelper; use EightshiftFormsVendor\EightshiftLibs\Helpers\Helpers; use EightshiftFormsVendor\EightshiftLibs\Services\ServiceInterface; @@ -69,42 +70,12 @@ public function updateFormComponentAttributesOutput(array $attributes): array $attributes["{$prefix}Type"] = SettingsMailer::SETTINGS_TYPE_CUSTOM_KEY; } - // Tracking event name. - $trackingEventName = FiltersOuputMock::getTrackingEventNameFilterValue($type, $formId)['data']; - if ($trackingEventName) { - $attributes["{$prefix}TrackingEventName"] = $trackingEventName; - } - - // Provide additional data to tracking attr. - $trackingAdditionalData = FiltersOuputMock::getTrackingAditionalDataFilterValue($type, $formId)['data']; - if ($trackingAdditionalData) { - $attributes["{$prefix}TrackingAdditionalData"] = \wp_json_encode($trackingAdditionalData); - } - - // Success redirect url. - $successRedirectUrl = FiltersOuputMock::getSuccessRedirectUrlFilterValue($type, $formId)['data']; - if ($successRedirectUrl) { - $attributes["{$prefix}SuccessRedirect"] = $successRedirectUrl; - } - - // Success redirect variation. - if (!$attributes["{$prefix}SuccessRedirectVariation"]) { - $successRedirectUrl = FiltersOuputMock::getSuccessRedirectVariationFilterValue($type, $formId)['data']; - - if ($successRedirectUrl) { - $attributes["{$prefix}SuccessRedirectVariation"] = $successRedirectUrl; - } - } - // Custom form name. $customFormName = UtilsSettingsHelper::getSettingValue(SettingsGeneral::SETTINGS_GENERAL_FORM_CUSTOM_NAME_KEY, $formId); if ($customFormName) { $attributes["{$prefix}CustomName"] = $customFormName; } - // Custom form name. - $attributes["{$prefix}HideGlobalMsgOnSuccess"] = !!UtilsSettingsHelper::isSettingCheckboxChecked(SettingsGeneral::SETTINGS_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY, SettingsGeneral::SETTINGS_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY, $formId); - // Use single submit. $attributes["{$prefix}UseSingleSubmit"] = UtilsSettingsHelper::isSettingCheckboxChecked(SettingsGeneral::SETTINGS_USE_SINGLE_SUBMIT_KEY, SettingsGeneral::SETTINGS_USE_SINGLE_SUBMIT_KEY, $formId); @@ -119,6 +90,12 @@ public function updateFormComponentAttributesOutput(array $attributes): array $attributes["{$prefix}PhoneDisablePicker"] = UtilsSettingsHelper::isOptionCheckboxChecked(SettingsBlocks::SETTINGS_BLOCK_PHONE_DISABLE_PICKER_KEY, SettingsBlocks::SETTINGS_BLOCK_PHONE_DISABLE_PICKER_KEY); + // Output secure data. + $outputSecureData = $this->getSecureFormData($type, $formId, $prefix, $attributes); + if ($outputSecureData) { + $attributes['secureData'] = $outputSecureData; + } + return $attributes; } @@ -546,4 +523,34 @@ private function getHiddenFields(array $items): array return $output; } + + /** + * Get secure form data. + * + * @param string $type Type of the form. + * @param string $formId Form ID. + * @param string $prefix Prefix of the form. + * @param array $attributes Attributes of the form. + * + * @return string + */ + private function getSecureFormData(string $type, string $formId, string $prefix, array $attributes): string + { + $outputSecureData = []; + + // Success redirect variation. + if (!$attributes["{$prefix}SuccessRedirectVariation"]) { + $successRedirectUrl = FiltersOuputMock::getSuccessRedirectVariationFilterValue($type, $formId)['data']; + + if ($successRedirectUrl) { + $outputSecureData["SuccessRedirectVariation"] = $successRedirectUrl; + } + } + + if (!$outputSecureData) { + return ''; + } + + return UtilsEncryption::encryptor(wp_json_encode($outputSecureData)); + } } diff --git a/src/Hooks/FiltersSettingsBuilder.php b/src/Hooks/FiltersSettingsBuilder.php index 9a1e30fb..6c1a47f7 100644 --- a/src/Hooks/FiltersSettingsBuilder.php +++ b/src/Hooks/FiltersSettingsBuilder.php @@ -207,6 +207,7 @@ public function getSettingsFiltersData(): array ], SettingsResultOutput::SETTINGS_TYPE_KEY => [ 'settingsGlobal' => SettingsResultOutput::FILTER_SETTINGS_GLOBAL_NAME, + 'settings' => SettingsResultOutput::FILTER_SETTINGS_NAME, 'type' => UtilsConfig::SETTINGS_INTERNAL_TYPE_ADVANCED, 'use' => SettingsResultOutput::SETTINGS_RESULT_OUTPUT_USE_KEY, 'labels' => [ diff --git a/src/Rest/Routes/AbstractFormSubmit.php b/src/Rest/Routes/AbstractFormSubmit.php index be73e7fe..75e49c5c 100644 --- a/src/Rest/Routes/AbstractFormSubmit.php +++ b/src/Rest/Routes/AbstractFormSubmit.php @@ -16,6 +16,8 @@ use EightshiftForms\Captcha\CaptchaInterface; // phpcs:ignore SlevomatCodingStandard.Namespaces.UnusedUses.UnusedUse use EightshiftForms\Entries\EntriesHelper; use EightshiftForms\Entries\SettingsEntries; +use EightshiftForms\General\SettingsGeneral; +use EightshiftForms\Hooks\FiltersOuputMock; use EightshiftForms\Integrations\Calculator\SettingsCalculator; use EightshiftForms\Labels\LabelsInterface; // phpcs:ignore SlevomatCodingStandard.Namespaces.UnusedUses.UnusedUse use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsApiHelper; @@ -28,6 +30,7 @@ use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsEncryption; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHooksHelper; +use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsSettingsHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Rest\Routes\AbstractUtilsBaseRoute; use WP_REST_Request; @@ -334,6 +337,7 @@ protected function getIntegrationCommonSubmitAction(array $formDetails, $callbac $formId = $formDetails[UtilsConfig::FD_FORM_ID] ?? ''; $response = $formDetails[UtilsConfig::FD_RESPONSE_OUTPUT_DATA] ?? []; $validation = $response[UtilsConfig::IARD_VALIDATION] ?? []; + $status = $response[UtilsConfig::IARD_STATUS] ?? UtilsConfig::STATUS_ERROR; $disableFallbackEmail = false; @@ -372,26 +376,6 @@ protected function getIntegrationCommonSubmitAction(array $formDetails, $callbac $formDetails[UtilsConfig::FD_RESPONSE_OUTPUT_DATA] = $responseOutput; - return $this->getIntegrationCommonSubmitOutput( - $formDetails, - $labelsOutput - ); - } - - /** - * Output for getIntegrationCommonSubmitOutput method. - * - * @param array $formDetails Data passed from the `getFormDetailsApi` function. - * @param string $msg Message to output. - * - * @return array|int|string> - */ - protected function getIntegrationCommonSubmitOutput(array $formDetails, string $msg): array - { - $response = $formDetails[UtilsConfig::FD_RESPONSE_OUTPUT_DATA] ?? []; - $status = $response[UtilsConfig::IARD_STATUS] ?? UtilsConfig::STATUS_ERROR; - $formId = $formDetails[UtilsConfig::FD_FORM_ID] ?? ''; - $additionalOutput = []; if (isset($response[UtilsConfig::IARD_VALIDATION])) { @@ -411,7 +395,7 @@ protected function getIntegrationCommonSubmitOutput(array $formDetails, string $ $filterDetails = \apply_filters($filterName, [], $formDetails); if ($filterDetails) { - $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT] = UtilsEncryption::encryptor(\wp_json_encode($filterDetails)); + $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA] = UtilsEncryption::encryptor(\wp_json_encode($filterDetails)); } } @@ -420,37 +404,88 @@ protected function getIntegrationCommonSubmitOutput(array $formDetails, string $ $this->getFormSubmitMailer()->sendEmails($formDetails); } - // Return result output items as a response key. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputItems']); - if (\has_filter($filterName)) { - $additionalOutput[UtilsHelper::getStateResponseOutputKey('resultOutputItems')] = \apply_filters($filterName, [], $formDetails, $formId) ?? []; - } - - // Output result output parts as a response key. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputParts']); - if (\has_filter($filterName)) { - $additionalOutput[UtilsHelper::getStateResponseOutputKey('resultOutputParts')] = \apply_filters($filterName, [], $formDetails, $formId) ?? []; - } - - $additionalOutput = \array_merge( - $additionalOutput, - UtilsApiHelper::getApiPublicAdditionalDataOutput($formDetails) - ); - return UtilsApiHelper::getApiSuccessPublicOutput( - $msg, - $additionalOutput, + $labelsOutput, + \array_merge( + $additionalOutput, + $this->getFormAdditionalOptionsData($formDetails) + ), $response ); } return UtilsApiHelper::getApiErrorPublicOutput( - $msg, + $labelsOutput, $additionalOutput, $response ); } + /** + * Output form additional options data. + * + * @param array $formDetails Data passed from the `getFormDetailsApi` function. + * + * @return array + */ + protected function getFormAdditionalOptionsData(array $formDetails): array + { + $formId = $formDetails[UtilsConfig::FD_FORM_ID] ?? ''; + $type = $formDetails[UtilsConfig::FD_TYPE] ?? ''; + + $output = []; + + // Return result output items as a response key. + $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputItems']); + if (\has_filter($filterName)) { + $output[UtilsHelper::getStateResponseOutputKey('resultOutputItems')] = \apply_filters($filterName, [], $formDetails, $formId) ?? []; + } + + // Output result output parts as a response key. + $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputParts']); + if (\has_filter($filterName)) { + $output[UtilsHelper::getStateResponseOutputKey('resultOutputParts')] = \apply_filters($filterName, [], $formDetails, $formId) ?? []; + } + + // Tracking event name. + $trackingEventName = FiltersOuputMock::getTrackingEventNameFilterValue($type, $formId)['data']; + if ($trackingEventName) { + $output[UtilsHelper::getStateResponseOutputKey('trackingEventName')] = $trackingEventName; + } + + // Provide additional data to tracking attr. + $trackingAdditionalData = FiltersOuputMock::getTrackingAditionalDataFilterValue($type, $formId)['data']; + if ($trackingAdditionalData) { + $output[UtilsHelper::getStateResponseOutputKey('trackingAdditionalData')] = $trackingAdditionalData; + } + + // Hide global message on success. + $hideGlobalMsgOnSuccess = UtilsSettingsHelper::isSettingCheckboxChecked(SettingsGeneral::SETTINGS_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY, SettingsGeneral::SETTINGS_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY, $formId); + if ($hideGlobalMsgOnSuccess) { + $output[UtilsHelper::getStateResponseOutputKey('hideGlobalMsgOnSuccess')] = $hideGlobalMsgOnSuccess; + } + + // Success redirect url. + // $successRedirectUrl = FiltersOuputMock::getSuccessRedirectUrlFilterValue($type, $formId)['data']; + // if ($successRedirectUrl) { + // $outputSecureData["successRedirectUrl"] = $successRedirectUrl; + // } + + if (isset($formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_URL]) && $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_URL]) { + $output[UtilsHelper::getStateResponseOutputKey('successRedirectUrl')] = $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_URL]; + } + + if (isset($formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA]) && $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA]) { + $output[UtilsHelper::getStateResponseOutputKey('successRedirectData')] = $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA]; + } + + if (isset($formDetails[UtilsConfig::FD_ADDON]) && $formDetails[UtilsConfig::FD_ADDON]) { + $output[UtilsHelper::getStateResponseOutputKey('addon')] = $formDetails[UtilsConfig::FD_ADDON]; + } + + return $output; + } + /** * Detect what type of route it is. * diff --git a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php index e8fb224d..175dd2e9 100644 --- a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php +++ b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php @@ -16,6 +16,7 @@ use EightshiftForms\Labels\LabelsInterface; use EightshiftForms\Integrations\Mailer\MailerInterface; use EightshiftForms\Integrations\Mailer\SettingsMailer; +use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHelper as HelpersUtilsHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Config\UtilsConfig; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsApiHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsEncryption; @@ -97,7 +98,7 @@ public function sendEmails(array $formDetails, bool $useSuccessAction = false): $filterDetails = \apply_filters($filterName, [], $formDetails); if ($filterDetails) { - $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT] = UtilsEncryption::encryptor(\wp_json_encode($filterDetails)); + $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA] = UtilsEncryption::encryptor(\wp_json_encode($filterDetails)); } } } @@ -128,29 +129,10 @@ public function sendEmails(array $formDetails, bool $useSuccessAction = false): $this->sendConfirmationEmail($formId, $params, $files); - $additionalOutput = []; - - // Output result output items as a response key. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputItems']); - if (\has_filter($filterName)) { - $additionalOutput[UtilsHelper::getStateResponseOutputKey('resultOutputItems')] = \apply_filters($filterName, [], $formDetails, $formId) ?? []; - } - - // Output result output parts as a response key. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputParts']); - if (\has_filter($filterName)) { - $additionalOutput[UtilsHelper::getStateResponseOutputKey('resultOutputParts')] = \apply_filters($filterName, [], $formDetails, $formId) ?? []; - } - - $additionalOutput = \array_merge( - $additionalOutput, - UtilsApiHelper::getApiPublicAdditionalDataOutput($formDetails) - ); - // Finish. return UtilsApiHelper::getApiSuccessPublicOutput( $this->labels->getLabel('mailerSuccess', $formId), - $additionalOutput, + $this->getFormAdditionalOptionsData($formDetails), $debug ); } @@ -263,11 +245,11 @@ private function prepareEmailResponseTags(array $formDetails): array $successRedirectUrl = FiltersOuputMock::getSuccessRedirectUrlFilterValue($formType, $formId)['data'] ?? ''; if ($successRedirectUrl) { // Add success redirect data, usualy got from the add-on plugin or filters. - $successRedirect = $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT] ?? ''; + $successRedirect = $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA] ?? ''; if ($successRedirect) { $successRedirectUrl = \add_query_arg( [ - 'es-data' => $successRedirect, + HelpersUtilsHelper::getStateSuccessRedirectUrlKey('data') => $successRedirect, ], $successRedirectUrl ); @@ -278,7 +260,7 @@ private function prepareEmailResponseTags(array $formDetails): array if ($successRedirectVariation) { $successRedirectUrl = \add_query_arg( [ - 'es-variation' => UtilsEncryption::encryptor($successRedirectVariation), + HelpersUtilsHelper::getStateSuccessRedirectUrlKey('variation') => UtilsEncryption::encryptor($successRedirectVariation), ], $successRedirectUrl ); diff --git a/src/ResultOutput/SettingsResultOutput.php b/src/ResultOutput/SettingsResultOutput.php index 63c9a372..f3dd247f 100644 --- a/src/ResultOutput/SettingsResultOutput.php +++ b/src/ResultOutput/SettingsResultOutput.php @@ -11,6 +11,9 @@ namespace EightshiftForms\ResultOutput; use EightshiftForms\CustomPostType\Result; +use EightshiftForms\Hooks\FiltersOuputMock; +use EightshiftFormsVendor\EightshiftFormsUtils\Config\UtilsConfig; +use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsGeneralHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsSettingsOutputHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Settings\UtilsSettingGlobalInterface; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsSettingsHelper; @@ -21,6 +24,11 @@ */ class SettingsResultOutput implements UtilsSettingGlobalInterface, ServiceInterface { + /** + * Filter settings key. + */ + public const FILTER_SETTINGS_NAME = 'es_forms_settings_result_output'; + /** * Filter global settings key. */ @@ -31,11 +39,26 @@ class SettingsResultOutput implements UtilsSettingGlobalInterface, ServiceInterf */ public const FILTER_SETTINGS_IS_VALID_NAME = 'es_forms_settings_is_valid_result_output'; + /** + * Filter settings global is Valid key. + */ + public const FILTER_SETTINGS_GLOBAL_IS_VALID_NAME = 'es_forms_settings_global_is_valid_result_output'; + /** * Settings key. */ public const SETTINGS_TYPE_KEY = 'result-output'; + /** + * Result output use redirect key. + */ + public const SETTINGS_RESULT_OUTPUT_USE_REDIRECT_KEY = 'result-output-use-redirect'; + + /** + * Result output success redirect url key. + */ + public const SETTINGS_RESULT_OUTPUT_SUCCESS_REDIRECT_URL_KEY = 'redirection-success'; + /** * Result output use key. */ @@ -46,6 +69,11 @@ class SettingsResultOutput implements UtilsSettingGlobalInterface, ServiceInterf */ public const SETTINGS_RESULT_OUTPUT_URL_PREFIX_KEY = 'result-output-url-prefix'; + /** + * Hide global message on success key. + */ + public const SETTINGS_RESULT_OUTPUT_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY = 'hide-global-msg-on-success'; + /** * Register all the hooks @@ -54,8 +82,32 @@ class SettingsResultOutput implements UtilsSettingGlobalInterface, ServiceInterf */ public function register(): void { + \add_filter(self::FILTER_SETTINGS_NAME, [$this, 'getSettingsData']); \add_filter(self::FILTER_SETTINGS_GLOBAL_NAME, [$this, 'getSettingsGlobalData']); - \add_filter(self::FILTER_SETTINGS_IS_VALID_NAME, [$this, 'isSettingsGlobalValid']); + \add_filter(self::FILTER_SETTINGS_IS_VALID_NAME, [$this, 'isSettingsValid']); + \add_filter(self::FILTER_SETTINGS_GLOBAL_IS_VALID_NAME, [$this, 'isSettingsGlobalValid']); + } + + /** + * Determine if settings are valid. + * + * @param string $formId Form ID. + * + * @return boolean + */ + public function isSettingsValid(string $formId): bool + { + if (!$this->isSettingsGlobalValid()) { + return false; + } + + $isUsed = UtilsSettingsHelper::isSettingCheckboxChecked(self::SETTINGS_RESULT_OUTPUT_USE_REDIRECT_KEY, self::SETTINGS_RESULT_OUTPUT_USE_REDIRECT_KEY, $formId); + + if (!$isUsed) { + return false; + } + + return true; } /** @@ -74,6 +126,101 @@ public function isSettingsGlobalValid(): bool return true; } + /** + * Get Form settings data array + * + * @param string $formId Form Id. + * + * @return array> + */ + public function getSettingsData(string $formId): array + { + $formDetails = UtilsGeneralHelper::getFormDetails($formId); + $formType = $formDetails[UtilsConfig::FD_TYPE] ?? ''; + + $successRedirectUrl = FiltersOuputMock::getSuccessRedirectUrlFilterValue($formType, $formId); + + $isUsed = UtilsSettingsHelper::isSettingCheckboxChecked(self::SETTINGS_RESULT_OUTPUT_USE_REDIRECT_KEY, self::SETTINGS_RESULT_OUTPUT_USE_REDIRECT_KEY, $formId); + + return [ + UtilsSettingsOutputHelper::getIntro(self::SETTINGS_TYPE_KEY), + [ + 'component' => 'tabs', + 'tabsContent' => [ + [ + 'component' => 'tab', + 'tabLabel' => \__('After form submission', 'eightshift-forms'), + 'tabContent' => [ + [ + 'component' => 'checkboxes', + 'checkboxesFieldLabel' => '', + 'checkboxesName' => UtilsSettingsHelper::getSettingName(self::SETTINGS_RESULT_OUTPUT_USE_REDIRECT_KEY), + 'checkboxesContent' => [ + [ + 'component' => 'checkbox', + 'checkboxLabel' => \__('Use success redirect', 'eightshift-forms'), + 'checkboxIsChecked' => $isUsed, + 'checkboxValue' => self::SETTINGS_RESULT_OUTPUT_USE_REDIRECT_KEY, + 'checkboxSingleSubmit' => true, + 'checkboxAsToggle' => true, + ] + ] + ], + ...($isUsed ? [ + [ + 'component' => 'divider', + 'dividerExtraVSpacing' => 'true', + ], + [ + 'component' => 'input', + 'inputName' => UtilsSettingsHelper::getSettingName(self::SETTINGS_RESULT_OUTPUT_SUCCESS_REDIRECT_URL_KEY), + 'inputFieldLabel' => \__('Redirect to URL', 'eightshift-forms'), + // translators: %s will be replaced with forms field name and filter output copy. + 'inputFieldHelp' => \sprintf(\__(' + After a successful submission, the user will be redirected to the provided URL and the success message will not be shown.

+ If you need to include some of the submitted data, use template tags (e.g. {field-name}).
+
+ Available tags +
    + %1$s +
+ +
+ Tag missing? Make sure its field has a Name set! +
+ %2$s', 'eightshift-forms'), UtilsSettingsOutputHelper::getPartialFormFieldNames($formDetails[UtilsConfig::FD_FIELD_NAMES_TAGS]), $successRedirectUrl['settingsLocal']), + 'inputType' => 'url', + 'inputIsUrl' => true, + 'inputIsDisabled' => $successRedirectUrl['filterUsed'], + 'inputValue' => $successRedirectUrl['dataLocal'], + ], + [ + 'component' => 'divider', + 'dividerExtraVSpacing' => true, + ], + [ + 'component' => 'checkboxes', + 'checkboxesFieldLabel' => '', + 'checkboxesName' => UtilsSettingsHelper::getSettingName(self::SETTINGS_RESULT_OUTPUT_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY), + 'checkboxesContent' => [ + [ + 'component' => 'checkbox', + 'checkboxLabel' => \__('Hide global message on success', 'eightshift-forms'), + 'checkboxIsChecked' => UtilsSettingsHelper::isSettingCheckboxChecked(self::SETTINGS_RESULT_OUTPUT_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY, self::SETTINGS_RESULT_OUTPUT_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY, $formId), + 'checkboxValue' => self::SETTINGS_RESULT_OUTPUT_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY, + 'checkboxSingleSubmit' => true, + 'checkboxAsToggle' => true, + ] + ] + ], + ] : []), + ], + ], + ], + ], + ]; + } + /** * Get global settings array for building settings page. * diff --git a/src/Settings/Settings/SettingsSettings.php b/src/Settings/Settings/SettingsSettings.php index 99a33e29..f44d0ba5 100644 --- a/src/Settings/Settings/SettingsSettings.php +++ b/src/Settings/Settings/SettingsSettings.php @@ -44,7 +44,6 @@ class SettingsSettings implements UtilsSettingGlobalInterface, ServiceInterface public const SETTINGS_GENERAL_DISABLE_SCROLL_KEY = 'general-disable-scroll'; public const SETTINGS_GENERAL_DISABLE_SCROLL_TO_FIELD_ON_ERROR = 'disable-scroll-to-field-on-error'; public const SETTINGS_GENERAL_DISABLE_SCROLL_TO_GLOBAL_MESSAGE_ON_SUCCESS = 'disable-scroll-to-global-message-on-success'; - public const SETTINGS_GENERAL_DISABLE_NATIVE_REDIRECT_ON_SUCCESS = 'disable-native-redirect-on-success'; /** * Register all the hooks @@ -138,19 +137,6 @@ public function getSettingsGlobalData(): array 'checkboxAsToggle' => true, 'checkboxSingleSubmit' => true, ], - [ - 'component' => 'divider', - 'dividerExtraVSpacing' => true, - ], - [ - 'component' => 'checkbox', - 'checkboxLabel' => \__('Disable native JavaScript for redirects', 'eightshift-forms'), - 'checkboxHelp' => \__('This option disables all native JavaScript redirects, requiring a custom redirect implementation based on triggered events. Typically used in single-page applications like Barba.js.', 'eightshift-forms'), - 'checkboxIsChecked' => UtilsSettingsHelper::isOptionCheckboxChecked(self::SETTINGS_GENERAL_DISABLE_NATIVE_REDIRECT_ON_SUCCESS, self::SETTINGS_GENERAL_DISABLE_SCROLL_KEY), - 'checkboxValue' => self::SETTINGS_GENERAL_DISABLE_NATIVE_REDIRECT_ON_SUCCESS, - 'checkboxAsToggle' => true, - 'checkboxSingleSubmit' => true, - ], ], ], ], From 1301a2f375d2c2848fd7f78b9000a79405623979 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Ruz=CC=8Cevic=CC=81?= Date: Wed, 10 Jul 2024 11:45:30 +0200 Subject: [PATCH 03/35] finishing 2 --- .../Integrations/Mailer/FormSubmitMailer.php | 49 ++++++------------- .../Mailer/FormSubmitMailerRoute.php | 44 +++++++++++++++-- 2 files changed, 56 insertions(+), 37 deletions(-) diff --git a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php index 175dd2e9..83b84ee3 100644 --- a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php +++ b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php @@ -78,29 +78,11 @@ public function sendEmails(array $formDetails, bool $useSuccessAction = false): // Bailout if settings are not ok. if (!$isSettingsValid) { - return UtilsApiHelper::getApiErrorPublicOutput( - $this->labels->getLabel('mailerErrorSettingsMissing', $formId), - [], - $debug - ); - } - - if ($useSuccessAction) { - // Save entries. - if (\apply_filters(SettingsEntries::FILTER_SETTINGS_IS_VALID_NAME, $formId)) { - $entryId = EntriesHelper::setEntryByFormDataRef($formDetails); - $formDetails[UtilsConfig::FD_ENTRY_ID] = $entryId ? (string) $entryId : ''; - } - - // Pre response filter for success redirect data. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'preResponseSuccessRedirectData']); - if (\has_filter($filterName)) { - $filterDetails = \apply_filters($filterName, [], $formDetails); - - if ($filterDetails) { - $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA] = UtilsEncryption::encryptor(\wp_json_encode($filterDetails)); - } - } + return [ + 'status' => UtilsConfig::STATUS_ERROR, + 'label' => 'mailerErrorSettingsMissing', + 'debug' => $debug, + ]; } // This data is set here because $formDetails can me modified in the previous filters. @@ -120,21 +102,20 @@ public function sendEmails(array $formDetails, bool $useSuccessAction = false): // If email fails. if (!$response) { - return UtilsApiHelper::getApiErrorPublicOutput( - $this->labels->getLabel('mailerErrorEmailSend', $formId), - [], - $debug - ); + return [ + 'status' => UtilsConfig::STATUS_ERROR, + 'label' => 'mailerErrorEmailSend', + 'debug' => $debug, + ]; } $this->sendConfirmationEmail($formId, $params, $files); - // Finish. - return UtilsApiHelper::getApiSuccessPublicOutput( - $this->labels->getLabel('mailerSuccess', $formId), - $this->getFormAdditionalOptionsData($formDetails), - $debug - ); + return [ + 'status' => UtilsConfig::STATUS_SUCCESS, + 'label' => 'mailerSuccess', + 'debug' => $debug, + ]; } /** diff --git a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php index e2f62c83..62d9acf0 100644 --- a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php +++ b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php @@ -11,6 +11,8 @@ namespace EightshiftForms\Rest\Routes\Integrations\Mailer; use EightshiftForms\Captcha\CaptchaInterface; +use EightshiftForms\Entries\EntriesHelper; +use EightshiftForms\Entries\SettingsEntries; use EightshiftForms\Integrations\Mailer\SettingsMailer; use EightshiftForms\Labels\LabelsInterface; use EightshiftForms\Rest\Routes\AbstractFormSubmit; @@ -18,6 +20,8 @@ use EightshiftForms\Validation\ValidationPatternsInterface; use EightshiftForms\Validation\ValidatorInterface; use EightshiftFormsVendor\EightshiftFormsUtils\Config\UtilsConfig; +use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsApiHelper; +use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsEncryption; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHooksHelper; /** @@ -85,10 +89,44 @@ protected function submitAction(array $formDetails) } } + $formId = $formDetails[UtilsConfig::FD_FORM_ID]; + + if (\apply_filters(SettingsEntries::FILTER_SETTINGS_IS_VALID_NAME, $formId)) { + $entryId = EntriesHelper::setEntryByFormDataRef($formDetails); + $formDetails[UtilsConfig::FD_ENTRY_ID] = $entryId ? (string) $entryId : ''; + } + + // Pre response filter for success redirect data. + $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'preResponseSuccessRedirectData']); + if (\has_filter($filterName)) { + $filterDetails = \apply_filters($filterName, [], $formDetails); + + if ($filterDetails) { + $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA] = UtilsEncryption::encryptor(\wp_json_encode($filterDetails)); + } + } + + $mailerResponse = $this->getFormSubmitMailer($formDetails); + + $status = $mailerResponse['status'] ?? UtilsConfig::STATUS_ERROR; + $label = $mailerResponse['label'] ?? 'mailerErrorEmailSend'; + $debug = $mailerResponse['debug'] ?? []; + + if ($status === UtilsConfig::STATUS_ERROR) { + return \rest_ensure_response( + UtilsApiHelper::getApiErrorPublicOutput( + $this->labels->getLabel($label, $formId), + [], + $debug + ) + ); + } + return \rest_ensure_response( - $this->getFormSubmitMailer()->sendEmails( - $formDetails, - true + UtilsApiHelper::getApiSuccessPublicOutput( + $this->labels->getLabel($label, $formId), + $this->getFormAdditionalOptionsData($formDetails), + $debug ) ); } From 72cf43e48e565b03eda5e4ad628f358ddd442d90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Ruz=CC=8Cevic=CC=81?= Date: Wed, 10 Jul 2024 17:21:23 +0200 Subject: [PATCH 04/35] updating libs --- composer.lock | 8 +- src/Blocks/components/form/assets/form.js | 14 +- .../components/form/assets/state-init.js | 12 -- src/Blocks/components/form/assets/state.js | 23 --- src/Blocks/components/form/assets/step.js | 2 +- src/Blocks/components/form/assets/utils.js | 192 ++++++------------ src/Blocks/components/form/form.php | 86 +------- src/Blocks/components/form/manifest.json | 45 +--- .../custom/active-campaign/manifest.json | 6 - src/Blocks/custom/airtable/manifest.json | 6 - src/Blocks/custom/goodbits/manifest.json | 6 - src/Blocks/custom/greenhouse/manifest.json | 6 - src/Blocks/custom/hubspot/manifest.json | 6 - src/Blocks/custom/mailchimp/manifest.json | 6 - src/Blocks/custom/mailerlite/manifest.json | 6 - src/Blocks/custom/moments/manifest.json | 6 - src/Blocks/custom/pipedrive/manifest.json | 12 +- src/Blocks/custom/workable/manifest.json | 6 - src/Form/AbstractFormBuilder.php | 5 - src/Form/Form.php | 37 ++-- src/Helpers/publicHelper.php | 1 - src/Rest/Routes/AbstractFormSubmit.php | 180 +++++++++++----- .../Integrations/Mailer/FormSubmitMailer.php | 13 +- .../Mailer/FormSubmitMailerInterface.php | 3 +- .../Mailer/FormSubmitMailerRoute.php | 47 ++--- src/Settings/Settings/Settings.php | 1 - 26 files changed, 255 insertions(+), 480 deletions(-) diff --git a/composer.lock b/composer.lock index 1bf1b15d..7789e9e2 100644 --- a/composer.lock +++ b/composer.lock @@ -62,12 +62,12 @@ "source": { "type": "git", "url": "https://github.com/infinum/eightshift-forms-utils.git", - "reference": "1deede747b3deec7a179fb6e8fa420ef2c812916" + "reference": "c5fe53d00b891772ee4431761c0f8bdb01292821" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infinum/eightshift-forms-utils/zipball/1deede747b3deec7a179fb6e8fa420ef2c812916", - "reference": "1deede747b3deec7a179fb6e8fa420ef2c812916", + "url": "https://api.github.com/repos/infinum/eightshift-forms-utils/zipball/c5fe53d00b891772ee4431761c0f8bdb01292821", + "reference": "c5fe53d00b891772ee4431761c0f8bdb01292821", "shasum": "" }, "require": { @@ -134,7 +134,7 @@ "issues": "https://github.com/infinum/eightshift-forms/issues", "source": "https://github.com/infinum/eightshift-forms" }, - "time": "2024-07-10T10:05:53+00:00" + "time": "2024-07-10T13:24:08+00:00" }, { "name": "infinum/eightshift-libs", diff --git a/src/Blocks/components/form/assets/form.js b/src/Blocks/components/form/assets/form.js index 704d9fd3..e20ed806 100644 --- a/src/Blocks/components/form/assets/form.js +++ b/src/Blocks/components/form/assets/form.js @@ -409,29 +409,29 @@ export class Form { if (this.state.getStateConfigIsAdmin()) { // Set global msg. - this.utils.setGlobalMsg(formId, message, status); + this.utils.setGlobalMsg(formId, message, status, data); if (this.state.getStateFormIsAdminSingleSubmit(formId)) { this.utils.redirectToUrlByReference(formId, window.location.href, true); } } else { // Send GTM. - this.utils.gtmSubmit(formId, status); + this.utils.gtmSubmit(formId, status, data); - if (this.state.getStateFormConfigSuccessRedirect(formId)) { + if (data?.[this.state.getStateResponseOutputKey('successRedirectUrl')]) { // Remove local storage for prefill. if (this.state.getStateEnrichmentIsUsed()) { this.enrichment.deleteLocalStorage(this.state.getStateEnrichmentFormPrefillStorageName(formId)); } // Redirect to url and update url params from from data. - this.utils.redirectToUrl(formId, data); + this.utils.redirectToUrlByReference(formId, data?.[this.state.getStateResponseOutputKey('successRedirectUrl')]); } else { // Clear form values. this.utils.resetForm(formId); // Set global msg. - this.utils.setGlobalMsg(formId, message, status); + this.utils.setGlobalMsg(formId, message, status, data); // Remove local storage for prefill. if (this.state.getStateEnrichmentIsUsed()) { @@ -475,9 +475,9 @@ export class Form { const validationOutputKey = this.state.getStateResponseOutputKey('validation'); - this.utils.setGlobalMsg(formId, message, status); + this.utils.setGlobalMsg(formId, message, status, data); - this.utils.gtmSubmit(formId, status, data?.[validationOutputKey]); + this.utils.gtmSubmit(formId, status, data); // Dispatch event. if (data?.[validationOutputKey] !== undefined) { diff --git a/src/Blocks/components/form/assets/state-init.js b/src/Blocks/components/form/assets/state-init.js index b6ad204c..8a408f6d 100644 --- a/src/Blocks/components/form/assets/state-init.js +++ b/src/Blocks/components/form/assets/state-init.js @@ -50,7 +50,6 @@ export const StateEnum = { ELEMENT: 'element', HEADING_SUCCESS: 'headingSuccess', HEADING_ERROR: 'headingError', - HIDE_ON_SUCCESS: 'hideOnSuccess', IS_ADMIN_SINGLE_SUBMIT: 'isAdminSingleSubmit', SAVE_AS_JSON: 'saveAsJson', IS_ADMIN: 'isAdmin', @@ -79,9 +78,6 @@ export const StateEnum = { CONFIG_SELECT_USE_MULTIPLE: 'useMultiple', CONFIG_PHONE_DISABLE_PICKER: 'disablePhoneCountryPicker', CONFIG_PHONE_USE_PHONE_SYNC: 'usePhoneSync', - CONFIG_SUCCESS_REDIRECT: 'successRedirect', - CONFIG_SUCCESS_REDIRECT_VARIATION: 'successRedirectVariation', - CONFIG_SUCCESS_REDIRECT_DOWNLOADS: 'successRedirectDownloads', CONFIG_USE_SINGLE_SUBMIT: 'useSingleSubmit', SETTINGS: 'settings', @@ -113,8 +109,6 @@ export const StateEnum = { GEOLOCATION: 'geolocation', TRACKING: 'tracking', - TRACKING_EVENT_NAME: 'eventName', - TRACKING_EVENT_ADDITIONAL_DATA: 'eventAdditionalData', STEPS: 'steps', STEPS_FLOW: 'flow', @@ -324,19 +318,13 @@ export function setStateFormInitial(formId) { setState([StateEnum.FORM, StateEnum.ACTION_EXTERNAL], formElement?.getAttribute(getStateAttribute('actionExternal')), formId); setState([StateEnum.FORM, StateEnum.TYPE_SETTINGS], formElement?.getAttribute(getStateAttribute('settingsType')), formId); setState([StateEnum.FORM, StateEnum.LOADER], formElement?.querySelector(getStateSelector('loader', true)), formId); - setState([StateEnum.FORM, StateEnum.TRACKING, StateEnum.TRACKING_EVENT_NAME], formElement?.getAttribute(getStateAttribute('trackingEventName')), formId); - setState([StateEnum.FORM, StateEnum.TRACKING, StateEnum.TRACKING_EVENT_ADDITIONAL_DATA], JSON.parse(formElement?.getAttribute(getStateAttribute('trackingAdditionalData')) ?? '{}'), formId); // Form settings setState([StateEnum.FORM, StateEnum.CONFIG, StateEnum.CONFIG_PHONE_DISABLE_PICKER], Boolean(formElement?.getAttribute(getStateAttribute('phoneDisablePicker'))), formId); setState([StateEnum.FORM, StateEnum.CONFIG, StateEnum.CONFIG_PHONE_USE_PHONE_SYNC], Boolean(formElement?.getAttribute(getStateAttribute('phoneSync'))), formId); - setState([StateEnum.FORM, StateEnum.CONFIG, StateEnum.CONFIG_SUCCESS_REDIRECT], formElement?.getAttribute(getStateAttribute('successRedirect')), formId); - setState([StateEnum.FORM, StateEnum.CONFIG, StateEnum.CONFIG_SUCCESS_REDIRECT_VARIATION], formElement?.getAttribute(getStateAttribute('successRedirectVariation')), formId); - setState([StateEnum.FORM, StateEnum.CONFIG, StateEnum.CONFIG_SUCCESS_REDIRECT_DOWNLOADS], JSON.parse(formElement?.getAttribute(getStateAttribute('successRedirectDownloads')) ?? '{}'), formId); setState([StateEnum.FORM, StateEnum.CONFIG, StateEnum.CONFIG_USE_SINGLE_SUBMIT], Boolean(formElement?.getAttribute(getStateAttribute('singleSubmit'))), formId); const globalMsg = formElement?.querySelector(getStateSelector('globalMsg', true)); - setState([StateEnum.FORM, StateEnum.GLOBAL_MSG, StateEnum.HIDE_ON_SUCCESS], Boolean(formElement?.getAttribute(getStateAttribute('globalMsgHideOnSuccess'))), formId); setState([StateEnum.FORM, StateEnum.GLOBAL_MSG, StateEnum.ELEMENT], globalMsg, formId); setState([StateEnum.FORM, StateEnum.GLOBAL_MSG, StateEnum.HEADING_SUCCESS], globalMsg?.getAttribute(getStateAttribute('globalMsgHeadingSuccess')), formId); setState([StateEnum.FORM, StateEnum.GLOBAL_MSG, StateEnum.HEADING_ERROR], globalMsg?.getAttribute(getStateAttribute('globalMsgHeadingError')), formId); diff --git a/src/Blocks/components/form/assets/state.js b/src/Blocks/components/form/assets/state.js index 8a701e48..f6b2a574 100644 --- a/src/Blocks/components/form/assets/state.js +++ b/src/Blocks/components/form/assets/state.js @@ -90,17 +90,6 @@ export class State { setState([StateEnum.FORM, StateEnum.IS_ADMIN_SINGLE_SUBMIT], value, formId); }; - //////////////////////////////////////////////////////////////// - // Tracking getters. - //////////////////////////////////////////////////////////////// - - getStateFormTrackingEventName = (formId) => { - return getState([StateEnum.FORM, StateEnum.TRACKING, StateEnum.TRACKING_EVENT_NAME], formId); - }; - getStateFormTrackingEventAdditionalData = (formId) => { - return getState([StateEnum.FORM, StateEnum.TRACKING, StateEnum.TRACKING_EVENT_ADDITIONAL_DATA], formId); - }; - //////////////////////////////////////////////////////////////// // Conditional tags getters. //////////////////////////////////////////////////////////////// @@ -134,9 +123,6 @@ export class State { getStateFormGlobalMsgHeadingError = (formId) => { return getState([StateEnum.FORM, StateEnum.GLOBAL_MSG, StateEnum.HEADING_ERROR], formId); }; - getStateFormGlobalMsgHideOnSuccess = (formId) => { - return getState([StateEnum.FORM, StateEnum.GLOBAL_MSG, StateEnum.HIDE_ON_SUCCESS], formId); - }; //////////////////////////////////////////////////////////////// // Config getters. @@ -148,15 +134,6 @@ export class State { getStateFormConfigPhoneUseSync = (formId) => { return getState([StateEnum.FORM, StateEnum.CONFIG, StateEnum.CONFIG_PHONE_USE_PHONE_SYNC], formId); }; - getStateFormConfigSuccessRedirect = (formId) => { - return getState([StateEnum.FORM, StateEnum.CONFIG, StateEnum.CONFIG_SUCCESS_REDIRECT], formId); - }; - getStateFormConfigSuccessRedirectVariation = (formId) => { - return getState([StateEnum.FORM, StateEnum.CONFIG, StateEnum.CONFIG_SUCCESS_REDIRECT_VARIATION], formId); - }; - getStateFormConfigSuccessRedirectDownloads = (formId) => { - return getState([StateEnum.FORM, StateEnum.CONFIG, StateEnum.CONFIG_SUCCESS_REDIRECT_DOWNLOADS], formId); - }; getStateFormConfigUseSingleSubmit = (formId) => { return getState([StateEnum.FORM, StateEnum.CONFIG, StateEnum.CONFIG_USE_SINGLE_SUBMIT], formId); }; diff --git a/src/Blocks/components/form/assets/step.js b/src/Blocks/components/form/assets/step.js index f4fcb04a..3bf7d9f3 100644 --- a/src/Blocks/components/form/assets/step.js +++ b/src/Blocks/components/form/assets/step.js @@ -61,7 +61,7 @@ export class Steps { if (data?.[validationOutputKey] !== undefined) { this.utils.outputErrors(formId, data?.[validationOutputKey]); - this.utils.setGlobalMsg(formId, message, status); + this.utils.setGlobalMsg(formId, message, status, data); } } } diff --git a/src/Blocks/components/form/assets/utils.js b/src/Blocks/components/form/assets/utils.js index 4f4203c8..78e97282 100644 --- a/src/Blocks/components/form/assets/utils.js +++ b/src/Blocks/components/form/assets/utils.js @@ -264,10 +264,13 @@ export class Utils { * Set global msg. * * @param {string} formId Form Id. + * @param {string} msg Message text. + * @param {string} status Message status. + * @param {object} responseData Additional responseData. * * @returns {void} */ - setGlobalMsg(formId, msg, status) { + setGlobalMsg(formId, msg, status, responseData = {}) { const messageContainer = this.state.getStateFormGlobalMsgElement(formId); if (!messageContainer) { @@ -276,7 +279,7 @@ export class Utils { // Scroll to msg if the condition is matched. if (status === 'success') { - if (this.state.getStateFormGlobalMsgHideOnSuccess(formId)) { + if (responseData?.[this.state.getStateResponseOutputKey('hideGlobalMsgOnSuccess')]) { return; } @@ -356,7 +359,7 @@ export class Utils { } } - return Object.assign({}, { event: this.state.getStateFormTrackingEventName(formId), ...output }); + return output; } /** @@ -364,56 +367,63 @@ export class Utils { * * @param {string} formId Form Id. * @param {string} status Response status. - * @param {object} errors Errors object. + * @param {object} responseData Additional responseData. * * @returns {void} */ - gtmSubmit(formId, status, errors) { - const eventName = this.state.getStateFormTrackingEventName(formId); + gtmSubmit(formId, status, responseData = {}) { + const eventName = responseData?.[this.state.getStateResponseOutputKey('trackingEventName')]; + const errors = responseData?.[this.state.getStateResponseOutputKey('validation')]; - if (eventName) { - const gtmData = this.getGtmData(formId); + if (!eventName) { + return; + } - const additionalData = this.state.getStateFormTrackingEventAdditionalData(formId); - let additionalDataItems = additionalData?.general; + const gtmData = { + event: eventName, + ...this.getGtmData(formId), + }; - if (status === 'success') { - additionalDataItems = { - ...additionalDataItems, - ...additionalData?.success, - }; - } + const additionalData = responseData?.[this.state.getStateResponseOutputKey('trackingAdditionalData')]; - if (status === 'error') { - additionalDataItems = { - ...additionalDataItems, - ...additionalData?.error, - }; - } + let additionalDataItems = additionalData?.general; - if (errors) { - for (const [key, value] of Object.entries(additionalDataItems)) { - if (value === '{invalidFieldsString}') { - additionalDataItems[key] = Object.keys(errors).join(','); - } - - if (value === '{invalidFieldsArray}') { - additionalDataItems[key] = Object.keys(errors); - } + if (status === 'success') { + additionalDataItems = { + ...additionalDataItems, + ...additionalData?.success, + }; + } + + if (status === 'error') { + additionalDataItems = { + ...additionalDataItems, + ...additionalData?.error, + }; + } + + if (errors) { + for (const [key, value] of Object.entries(additionalDataItems)) { + if (value === '{invalidFieldsString}') { + additionalDataItems[key] = Object.keys(errors).join(','); + } + + if (value === '{invalidFieldsArray}') { + additionalDataItems[key] = Object.keys(errors); } } + } - if (window?.dataLayer && gtmData?.event) { - window.dataLayer.push({...gtmData, ...additionalDataItems}); + if (window?.dataLayer && gtmData?.event) { + window.dataLayer.push({...gtmData, ...additionalDataItems}); - this.dispatchFormEvent( - formId, - this.state.getStateEvent('afterGtmDataPush'), { - gtmData, - additionalDataItems, - } - ); - } + this.dispatchFormEvent( + formId, + this.state.getStateEvent('afterGtmDataPush'), { + gtmData, + additionalDataItems, + } + ); } } @@ -563,83 +573,6 @@ export class Utils { this.dispatchFormEvent(formId, this.state.getStateEvent('afterFormSubmitReset')); } - /** - * Redirect to url and update url params from from data. - * - * @param {string} formId Form Id. - * @param {object} additionalData Additional data to add to url. - * - * @returns {void} - */ - redirectToUrl(formId, additionalData = {}) { - let redirectUrl = this.state.getStateFormConfigSuccessRedirect(formId); - - if (!redirectUrl) { - return; - } - - // Replace string templates used for passing data via url. - for(const [name] of this.state.getStateElements(formId)) { - let value = this.state.getStateElementValue(name, formId); - - // If checkbox split multiple. - if (this.state.getStateElementTypeField(name, formId) === 'checkbox') { - value = Object.values(value)?.filter((n) => n); - } - - if (!value) { - value = ''; - } - - redirectUrl = redirectUrl.replaceAll(`{${name}}`, encodeURIComponent(value)); - } - - const url = new URL(redirectUrl); - - const downloads = this.state.getStateFormConfigSuccessRedirectDownloads(formId); - - if (downloads) { - let downloadsName = 'all'; - - for(const key of Object.keys(downloads)) { - if (key === 'all') { - continue; - } - - const keyFull = key.split("="); - - if (keyFull <= 1) { - continue; - } - - const value = this.state.getStateElementValue(keyFull[0], formId); - - if (value === keyFull[1]) { - downloadsName = key; - continue; - } - } - - if (downloads?.[downloadsName]) { - url.searchParams.append(this.state.getStateSuccessRedirectUrlKey('downloads'), downloads[downloadsName]); - } - } - - const successRedirectData = additionalData?.[this.state.getStateResponseOutputKey('successRedirect')]; - - if (successRedirectData) { - url.searchParams.append(this.state.getStateSuccessRedirectUrlKey('data'), successRedirectData); - } - - const variation = this.state.getStateFormConfigSuccessRedirectVariation(formId); - - if (variation) { - url.searchParams.append(this.state.getStateSuccessRedirectUrlKey('variation'), variation); - } - - this.redirectToUrlByReference(formId, url.href); - } - /** * Redirect to url by provided path. * @@ -653,13 +586,13 @@ export class Utils { this.dispatchFormEvent(formId, this.state.getStateEvent('afterFormSubmitSuccessBeforeRedirect'), redirectUrl); // Do the actual redirect after some time. - setTimeout(() => { - window.location = redirectUrl; + // setTimeout(() => { + // window.location = redirectUrl; - if (reload) { - window.location.reload(); - } - }, parseInt(this.state.getStateSettingsRedirectionTimeout(formId), 10)); + // if (reload) { + // window.location.reload(); + // } + // }, parseInt(this.state.getStateSettingsRedirectionTimeout(formId), 10)); } /** @@ -1425,14 +1358,14 @@ export class Utils { unsetGlobalMsg: (formId) => { this.unsetGlobalMsg(formId); }, - setGlobalMsg: (formId, msg, status) => { - this.setGlobalMsg(formId, msg, status); + setGlobalMsg: (formId, msg, status, responseData = {}) => { + this.setGlobalMsg(formId, msg, status, responseData); }, getGtmData: (formId) => { this.getGtmData(formId); }, - gtmSubmit: (formId, status, errors) => { - this.gtmSubmit(formId, status, errors); + gtmSubmit: (formId, status, responseData = {}) => { + this.gtmSubmit(formId, status, responseData); }, setFieldFilledState: (formId, name) => { this.setFieldFilledState(formId, name); @@ -1452,9 +1385,6 @@ export class Utils { resetForm: (formId) => { this.resetForm(formId); }, - redirectToUrl: (formId, additionalData = {}) => { - this.redirectToUrl(formId, additionalData); - }, redirectToUrlByReference: (formId, redirectUrl, reload = false) => { this.redirectToUrlByReference(formId, redirectUrl, reload); }, diff --git a/src/Blocks/components/form/form.php b/src/Blocks/components/form/form.php index 42e8630b..d111141d 100644 --- a/src/Blocks/components/form/form.php +++ b/src/Blocks/components/form/form.php @@ -11,7 +11,6 @@ use EightshiftForms\Dashboard\SettingsDashboard; use EightshiftForms\Form\Form; use EightshiftForms\General\SettingsGeneral; -use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsEncryption; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsGeneralHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHooksHelper; @@ -35,30 +34,24 @@ $formActionExternal = Helpers::checkAttr('formActionExternal', $attributes, $manifest); $formMethod = Helpers::checkAttr('formMethod', $attributes, $manifest); $formId = Helpers::checkAttr('formId', $attributes, $manifest); -$formPostId = Helpers::checkAttr('formPostId', $attributes, $manifest); $formContent = Helpers::checkAttr('formContent', $attributes, $manifest); -$formSuccessRedirect = Helpers::checkAttr('formSuccessRedirect', $attributes, $manifest); -$formSuccessRedirectVariation = Helpers::checkAttr('formSuccessRedirectVariation', $attributes, $manifest); -$formTrackingEventName = Helpers::checkAttr('formTrackingEventName', $attributes, $manifest); -$formTrackingAdditionalData = Helpers::checkAttr('formTrackingAdditionalData', $attributes, $manifest); $formPhoneSync = Helpers::checkAttr('formPhoneSync', $attributes, $manifest); $formPhoneDisablePicker = Helpers::checkAttr('formPhoneDisablePicker', $attributes, $manifest); -$formType = Helpers::checkAttr('formType', $attributes, $manifest); $formServerSideRender = Helpers::checkAttr('formServerSideRender', $attributes, $manifest); -$formConditionalTags = Helpers::checkAttr('formConditionalTags', $attributes, $manifest); -$formDownloads = Helpers::checkAttr('formDownloads', $attributes, $manifest); -$formSuccessRedirectVariationUrl = Helpers::checkAttr('formSuccessRedirectVariationUrl', $attributes, $manifest); -$formSuccessRedirectVariationUrlTitle = Helpers::checkAttr('formSuccessRedirectVariationUrlTitle', $attributes, $manifest); -$formDisabledDefaultStyles = Helpers::checkAttr('formDisabledDefaultStyles', $attributes, $manifest); $formHasSteps = Helpers::checkAttr('formHasSteps', $attributes, $manifest); -$formCustomName = Helpers::checkAttr('formCustomName', $attributes, $manifest); -$formHideGlobalMsgOnSuccess = Helpers::checkAttr('formHideGlobalMsgOnSuccess', $attributes, $manifest); $formUseSingleSubmit = Helpers::checkAttr('formUseSingleSubmit', $attributes, $manifest); +$formParentSettings = Helpers::checkAttr('formParentSettings', $attributes, $manifest); + +$formCustomName = $formParentSettings['customName'] ?? ''; +$formPostId = $formParentSettings['postId'] ?? ''; +$formConditionalTags = $formParentSettings['conditionalTags'] ?? ''; +$formDisabledDefaultStyles = $formParentSettings['disabledDefaultStyles'] ?? false; +$formType = $formParentSettings['formType'] ?? ''; $formDataTypeSelectorFilterName = UtilsHooksHelper::getFilterName(['block', 'form', 'dataTypeSelector']); $formDataTypeSelector = apply_filters( $formDataTypeSelectorFilterName, - Helpers::checkAttr('formDataTypeSelector', $attributes, $manifest), + $formParentSettings['dataTypeSelector'] ?? '', $attributes ); @@ -82,22 +75,6 @@ $formAttrs[UtilsHelper::getStateAttribute('formSecureData')] = esc_attr($attributes['secureData']); } -if ($formSuccessRedirect) { - $formAttrs[UtilsHelper::getStateAttribute('successRedirect')] = esc_attr($formSuccessRedirect); -} - -if ($formSuccessRedirectVariation) { - $formAttrs[UtilsHelper::getStateAttribute('successRedirectVariation')] = UtilsEncryption::encryptor($formSuccessRedirectVariation); -} - -if ($formTrackingEventName) { - $formAttrs[UtilsHelper::getStateAttribute('trackingEventName')] = esc_attr($formTrackingEventName); -} - -if ($formTrackingAdditionalData) { - $formAttrs[UtilsHelper::getStateAttribute('trackingAdditionalData')] = esc_attr($formTrackingAdditionalData); -} - if ($formPhoneSync) { $formAttrs[UtilsHelper::getStateAttribute('phoneSync')] = esc_attr($formPhoneSync); } @@ -120,10 +97,6 @@ $formAttrs[UtilsHelper::getStateAttribute('formType')] = esc_html($formType); } -if ($formHideGlobalMsgOnSuccess) { - $formAttrs[UtilsHelper::getStateAttribute('globalMsgHideOnSuccess')] = 'true'; -} - if ($formUseSingleSubmit) { $formAttrs[UtilsHelper::getStateAttribute('singleSubmit')] = 'true'; } @@ -139,49 +112,6 @@ $formAttrs[UtilsHelper::getStateAttribute('conditionalTags')] = esc_html($rawConditionalTagData); } -if ($formDownloads || $formSuccessRedirectVariationUrl) { - $downloadsOutput = []; - - foreach ($formDownloads as $file) { - $condition = isset($file['condition']) && !empty($file['condition']) ? $file['condition'] : 'all'; - $fileId = $file['id'] ?? ''; - $fileTitle = $file['fileTitle'] ?? ''; - - if (!$fileId) { - continue; - } - - $downloadsOutput[$condition]['files'][] = [ - $fileId, - $fileTitle, - ]; - } - - if (!$downloadsOutput) { - if ($formSuccessRedirectVariationUrl) { - $downloadsOutput['all'] = UtilsEncryption::encryptor(wp_json_encode([ - 'main' => [ - $formSuccessRedirectVariationUrl, - $formSuccessRedirectVariationUrlTitle, - ], - ])); - } - } else { - foreach ($downloadsOutput as $key => $item) { - if ($formSuccessRedirectVariationUrl) { - $downloadsOutput[$key]['main'] = [ - $formSuccessRedirectVariationUrl, - $formSuccessRedirectVariationUrlTitle, - ]; - } - - $downloadsOutput[$key] = UtilsEncryption::encryptor(wp_json_encode($downloadsOutput[$key])); - } - } - - $formAttrs[UtilsHelper::getStateAttribute('successRedirectDownloads')] = wp_json_encode($downloadsOutput); -} - if ($formId) { $formAttrs['id'] = esc_attr($formId); } diff --git a/src/Blocks/components/form/manifest.json b/src/Blocks/components/form/manifest.json index 076f83ce..b6b46a66 100644 --- a/src/Blocks/components/form/manifest.json +++ b/src/Blocks/components/form/manifest.json @@ -15,17 +15,13 @@ "formName": "Name", "formAction": "Action", "formMethod": "Method", - "formId": "Id", - "formSuccessRedirect": "Url" + "formId": "Id" } }, "attributes": { "formContent": { "type": "string" }, - "formConditionalTags": { - "type": "string" - }, "formName": { "type": "string" }, @@ -47,24 +43,8 @@ "formId": { "type": "string" }, - "formPostId": { - "type": "string" - }, - "formHideGlobalMsgOnSuccess": { - "type": "boolean", - "default": false - }, - "formSuccessRedirect": { - "type": "string" - }, - "formSuccessRedirectVariation": { - "type": "string" - }, - "formSuccessRedirectVariationUrlTitle": { - "type": "string" - }, - "formSuccessRedirectVariationUrl": { - "type": "string" + "formParentSettings": { + "type": "object" }, "formPhoneSync": { "type": "boolean", @@ -74,24 +54,9 @@ "type": "boolean", "default": false }, - "formTrackingEventName": { - "type": "string" - }, - "formTrackingAdditionalData": { - "type": "string" - }, - "formType": { - "type": "string" - }, - "formDataTypeSelector": { - "type": "string" - }, "formMeta": { "type": "string" }, - "formCustomName": { - "type": "string" - }, "formAttrs": { "type": "object" }, @@ -99,10 +64,6 @@ "type": "boolean", "default": false }, - "formDisabledDefaultStyles": { - "type": "boolean", - "default": false - }, "formUseSingleSubmit": { "type": "boolean", "default": false diff --git a/src/Blocks/custom/active-campaign/manifest.json b/src/Blocks/custom/active-campaign/manifest.json index c5718484..5f03ee2b 100644 --- a/src/Blocks/custom/active-campaign/manifest.json +++ b/src/Blocks/custom/active-campaign/manifest.json @@ -24,12 +24,6 @@ "activeCampaignIntegrationInnerId": { "type": "string" }, - "activeCampaignFormPostId": { - "type": "string" - }, - "activeCampaignFormDataTypeSelector": { - "type": "string" - }, "activeCampaignAllowedBlocks": { "type": "array", "default": [] diff --git a/src/Blocks/custom/airtable/manifest.json b/src/Blocks/custom/airtable/manifest.json index b930b6d9..65e3e4c7 100644 --- a/src/Blocks/custom/airtable/manifest.json +++ b/src/Blocks/custom/airtable/manifest.json @@ -24,12 +24,6 @@ "airtableIntegrationInnerId": { "type": "string" }, - "airtableFormPostId": { - "type": "string" - }, - "airtableFormDataTypeSelector": { - "type": "string" - }, "airtableAllowedBlocks": { "type": "array", "default": [] diff --git a/src/Blocks/custom/goodbits/manifest.json b/src/Blocks/custom/goodbits/manifest.json index 1cb332f8..4f1546ef 100644 --- a/src/Blocks/custom/goodbits/manifest.json +++ b/src/Blocks/custom/goodbits/manifest.json @@ -21,12 +21,6 @@ "goodbitsIntegrationId": { "type": "string" }, - "goodbitsFormPostId": { - "type": "string" - }, - "goodbitsFormDataTypeSelector": { - "type": "string" - }, "goodbitsAllowedBlocks": { "type": "array", "default": [] diff --git a/src/Blocks/custom/greenhouse/manifest.json b/src/Blocks/custom/greenhouse/manifest.json index 6f2cab8d..a715d3c4 100644 --- a/src/Blocks/custom/greenhouse/manifest.json +++ b/src/Blocks/custom/greenhouse/manifest.json @@ -21,12 +21,6 @@ "greenhouseIntegrationId": { "type": "string" }, - "greenhouseFormPostId": { - "type": "string" - }, - "greenhouseFormDataTypeSelector": { - "type": "string" - }, "greenhouseAllowedBlocks": { "type": "array", "default": [] diff --git a/src/Blocks/custom/hubspot/manifest.json b/src/Blocks/custom/hubspot/manifest.json index beec6d80..2b60d047 100644 --- a/src/Blocks/custom/hubspot/manifest.json +++ b/src/Blocks/custom/hubspot/manifest.json @@ -21,12 +21,6 @@ "hubspotIntegrationId": { "type": "string" }, - "hubspotFormPostId": { - "type": "string" - }, - "hubspotFormDataTypeSelector": { - "type": "string" - }, "hubspotAllowedBlocks": { "type": "array", "default": [] diff --git a/src/Blocks/custom/mailchimp/manifest.json b/src/Blocks/custom/mailchimp/manifest.json index a1e9d644..e607390d 100644 --- a/src/Blocks/custom/mailchimp/manifest.json +++ b/src/Blocks/custom/mailchimp/manifest.json @@ -21,12 +21,6 @@ "mailchimpIntegrationId": { "type": "string" }, - "mailchimpFormPostId": { - "type": "string" - }, - "mailchimpFormDataTypeSelector": { - "type": "string" - }, "mailchimpAllowedBlocks": { "type": "array", "default": [] diff --git a/src/Blocks/custom/mailerlite/manifest.json b/src/Blocks/custom/mailerlite/manifest.json index 08379a00..3b28e585 100644 --- a/src/Blocks/custom/mailerlite/manifest.json +++ b/src/Blocks/custom/mailerlite/manifest.json @@ -21,12 +21,6 @@ "mailerliteIntegrationId": { "type": "string" }, - "mailerliteFormPostId": { - "type": "string" - }, - "mailerliteFormDataTypeSelector": { - "type": "string" - }, "mailerliteAllowedBlocks": { "type": "array", "default": [] diff --git a/src/Blocks/custom/moments/manifest.json b/src/Blocks/custom/moments/manifest.json index fdcce882..c80186e1 100644 --- a/src/Blocks/custom/moments/manifest.json +++ b/src/Blocks/custom/moments/manifest.json @@ -21,12 +21,6 @@ "momentsIntegrationId": { "type": "string" }, - "momentsFormPostId": { - "type": "string" - }, - "momentsFormDataTypeSelector": { - "type": "string" - }, "momentsAllowedBlocks": { "type": "array", "default": [] diff --git a/src/Blocks/custom/pipedrive/manifest.json b/src/Blocks/custom/pipedrive/manifest.json index 0e1ed5ec..f7756087 100644 --- a/src/Blocks/custom/pipedrive/manifest.json +++ b/src/Blocks/custom/pipedrive/manifest.json @@ -18,18 +18,12 @@ }, "hasInnerBlocks": true, "attributes": { - "pipedriveAllowedBlocks": { - "type": "array", - "default": [] - }, "pipedriveIntegrationId": { "type": "string" }, - "pipedriveFormPostId": { - "type": "string" - }, - "pipedriveFormDataTypeSelector": { - "type": "string" + "pipedriveAllowedBlocks": { + "type": "array", + "default": [] } }, "parent": [ diff --git a/src/Blocks/custom/workable/manifest.json b/src/Blocks/custom/workable/manifest.json index 20236ea9..9bd68a20 100644 --- a/src/Blocks/custom/workable/manifest.json +++ b/src/Blocks/custom/workable/manifest.json @@ -21,12 +21,6 @@ "workableIntegrationId": { "type": "string" }, - "workableFormPostId": { - "type": "string" - }, - "workableFormDataTypeSelector": { - "type": "string" - }, "workableAllowedBlocks": { "type": "array", "default": [] diff --git a/src/Form/AbstractFormBuilder.php b/src/Form/AbstractFormBuilder.php index 2dac2e6c..99fb8595 100644 --- a/src/Form/AbstractFormBuilder.php +++ b/src/Form/AbstractFormBuilder.php @@ -83,11 +83,6 @@ public function buildSettingsForm(array $formItems, array $formAdditionalProps = true ); - // If form needs refreshing like on general setting just pass formSuccessRedirect as true and the form will refresh on the same settings page. - if (isset($formAdditionalProps['formSuccessRedirect']) && $formAdditionalProps['formSuccessRedirect']) { - $formAdditionalProps['formSuccessRedirect'] = $this->getAdminRefreshUrl(); - } - $formAdditionalProps['formResetOnSuccess'] = false; $formAdditionalProps['formDisableScrollToGlobalMessageOnSuccess'] = true; diff --git a/src/Form/Form.php b/src/Form/Form.php index 2e08debd..e84c4715 100644 --- a/src/Form/Form.php +++ b/src/Form/Form.php @@ -153,17 +153,20 @@ public function updateFormsBlockOutput(array $blocks, array $attributes): array $blockName = UtilsGeneralHelper::getBlockNameDetails($innerBlock['blockName'])['name']; // Populate forms blocks attributes to the form component later in the chain. - $innerBlock['attrs']["{$blockName}FormSuccessRedirectVariation"] = $formsSuccessRedirectVariation; - $innerBlock['attrs']["{$blockName}FormSuccessRedirectVariationUrl"] = $formsSuccessRedirectVariationUrl; - $innerBlock['attrs']["{$blockName}FormSuccessRedirectVariationUrlTitle"] = $formsSuccessRedirectVariationUrlTitle; - $innerBlock['attrs']["{$blockName}FormDownloads"] = $formsDownloads; - $innerBlock['attrs']["{$blockName}FormType"] = $blockName; - $innerBlock['attrs']["{$blockName}FormPostId"] = $formsFormPostId; - $innerBlock['attrs']["{$blockName}FormDataTypeSelector"] = $formsFormDataTypeSelector; + $innerBlock['attrs']["{$blockName}FormParentSettings"] = [ + 'variation' => $formsSuccessRedirectVariation, + 'variationUrl' => $formsSuccessRedirectVariationUrl, + 'variationUrlTitle' => $formsSuccessRedirectVariationUrlTitle, + 'downloads' => $formsDownloads, + 'customName' => $formsCustomName, + 'conditionalTags' => \wp_json_encode($formsConditionalTagsRulesForms), + 'disabledDefaultStyles' => $checkStyleEnqueue, + 'dataTypeSelector' => $formsFormDataTypeSelector, + 'postId' => $formsFormPostId, + 'formType' => $blockName, + ]; + $innerBlock['attrs']["{$blockName}FormServerSideRender"] = $formsServerSideRender; - $innerBlock['attrs']["{$blockName}FormDisabledDefaultStyles"] = $checkStyleEnqueue; - $innerBlock['attrs']["{$blockName}FormConditionalTags"] = \wp_json_encode($formsConditionalTagsRulesForms); - $innerBlock['attrs']["{$blockName}FormCustomName"] = $formsCustomName; $innerBlock['attrs']["{$blockName}FormAttrs"] = $formsAttrs; $innerBlock['attrs']["blockSsr"] = $formsServerSideRender; @@ -538,14 +541,16 @@ private function getSecureFormData(string $type, string $formId, string $prefix, { $outputSecureData = []; + dump($attributes); + // Success redirect variation. - if (!$attributes["{$prefix}SuccessRedirectVariation"]) { - $successRedirectUrl = FiltersOuputMock::getSuccessRedirectVariationFilterValue($type, $formId)['data']; + // if (!$attributes["{$prefix}SuccessRedirectVariation"]) { + // $successRedirectUrl = FiltersOuputMock::getSuccessRedirectVariationFilterValue($type, $formId)['data']; - if ($successRedirectUrl) { - $outputSecureData["SuccessRedirectVariation"] = $successRedirectUrl; - } - } + // if ($successRedirectUrl) { + // $outputSecureData["SuccessRedirectVariation"] = $successRedirectUrl; + // } + // } if (!$outputSecureData) { return ''; diff --git a/src/Helpers/publicHelper.php b/src/Helpers/publicHelper.php index 4ea25377..4e18b25d 100644 --- a/src/Helpers/publicHelper.php +++ b/src/Helpers/publicHelper.php @@ -107,7 +107,6 @@ function esFormRenderForm(string $formId, array $attributes = []): string [ 'formsFormPostId' => $formId, 'formsStyle' => $attributes['style'] ?? [], - 'formsDownloads' => $attributes['downloads'] ?? [], 'formsFormGeolocation' => $attributes['geolocation'] ?? [], 'formsFormGeolocationAlternatives' => $attributes['geolocationAlternatives'] ?? [], ], diff --git a/src/Rest/Routes/AbstractFormSubmit.php b/src/Rest/Routes/AbstractFormSubmit.php index 75e49c5c..cf1ddcf4 100644 --- a/src/Rest/Routes/AbstractFormSubmit.php +++ b/src/Rest/Routes/AbstractFormSubmit.php @@ -324,21 +324,13 @@ public function routeCallback(WP_REST_Request $request) */ protected function getIntegrationCommonSubmitAction(array $formDetails, $callbackStart = null): array { - // Pre response filter for addon data. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'preResponseAddonData']); - if (\has_filter($filterName)) { - $filterDetails = \apply_filters($filterName, [], $formDetails); - - if ($filterDetails) { - $formDetails[UtilsConfig::FD_ADDON] = $filterDetails; - } - } - $formId = $formDetails[UtilsConfig::FD_FORM_ID] ?? ''; $response = $formDetails[UtilsConfig::FD_RESPONSE_OUTPUT_DATA] ?? []; $validation = $response[UtilsConfig::IARD_VALIDATION] ?? []; $status = $response[UtilsConfig::IARD_STATUS] ?? UtilsConfig::STATUS_ERROR; + $formDetails = $this->getIntegrationResponsePreSubmitFormDetailsManipulation($formDetails); + $disableFallbackEmail = false; // Output integrations validation issues. @@ -383,21 +375,7 @@ protected function getIntegrationCommonSubmitAction(array $formDetails, $callbac } if ($status === UtilsConfig::STATUS_SUCCESS) { - // Order of this filter is important as you can use filters in the getApiPublicAdditionalDataOutput helper. - if (\apply_filters(SettingsEntries::FILTER_SETTINGS_IS_VALID_NAME, $formId)) { - $entryId = EntriesHelper::setEntryByFormDataRef($formDetails); - $formDetails[UtilsConfig::FD_ENTRY_ID] = $entryId ? (string) $entryId : ''; - } - - // Pre response filter for success redirect data. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'preResponseSuccessRedirectData']); - if (\has_filter($filterName)) { - $filterDetails = \apply_filters($filterName, [], $formDetails); - - if ($filterDetails) { - $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA] = UtilsEncryption::encryptor(\wp_json_encode($filterDetails)); - } - } + $formDetails = $this->getIntegrationResponsePreSuccessFormDetailsManipulation($formDetails); // Send email if it is configured in the backend. if ($response[UtilsConfig::IARD_STATUS] === UtilsConfig::STATUS_SUCCESS) { @@ -408,7 +386,7 @@ protected function getIntegrationCommonSubmitAction(array $formDetails, $callbac $labelsOutput, \array_merge( $additionalOutput, - $this->getFormAdditionalOptionsData($formDetails) + $this->getIntegrationResponseSuccessOutputAdditionalData($formDetails) ), $response ); @@ -416,37 +394,67 @@ protected function getIntegrationCommonSubmitAction(array $formDetails, $callbac return UtilsApiHelper::getApiErrorPublicOutput( $labelsOutput, - $additionalOutput, + $this->getIntegrationResponseErrorOutputAdditionalData($formDetails), $response ); } /** - * Output form additional options data. + * Get integration response pre submit form details manipulation. * * @param array $formDetails Data passed from the `getFormDetailsApi` function. * * @return array */ - protected function getFormAdditionalOptionsData(array $formDetails): array + protected function getIntegrationResponsePreSubmitFormDetailsManipulation(array $formDetails): array { - $formId = $formDetails[UtilsConfig::FD_FORM_ID] ?? ''; - $type = $formDetails[UtilsConfig::FD_TYPE] ?? ''; - - $output = []; - - // Return result output items as a response key. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputItems']); + // Pre response filter for addon data. + $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'preResponseAddonData']); if (\has_filter($filterName)) { - $output[UtilsHelper::getStateResponseOutputKey('resultOutputItems')] = \apply_filters($filterName, [], $formDetails, $formId) ?? []; + $filterDetails = \apply_filters($filterName, [], $formDetails); + + if ($filterDetails) { + $formDetails[UtilsConfig::FD_ADDON] = $filterDetails; + } } - // Output result output parts as a response key. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputParts']); - if (\has_filter($filterName)) { - $output[UtilsHelper::getStateResponseOutputKey('resultOutputParts')] = \apply_filters($filterName, [], $formDetails, $formId) ?? []; + return $formDetails; + } + + /** + * Get integration response pre success form details manipulation. + * + * @param array $formDetails Data passed from the `getFormDetailsApi` function. + * + * @return array + */ + protected function getIntegrationResponsePreSuccessFormDetailsManipulation(array $formDetails): array + { + $formId = $formDetails[UtilsConfig::FD_FORM_ID]; + + // This filter must be always on the fitsr place in order to work properly with addons. + if (\apply_filters(SettingsEntries::FILTER_SETTINGS_IS_VALID_NAME, $formId)) { + $entryId = EntriesHelper::setEntryByFormDataRef($formDetails); + $formDetails[UtilsConfig::FD_ENTRY_ID] = $entryId ? (string) $entryId : ''; } + return $formDetails; + } + + + /** + * Get integration response output additional data on error or success. + * + * @param array $formDetails Data passed from the `getFormDetailsApi` function. + * + * @return array + */ + protected function getIntegrationResponseAnyOutputAdditionalData(array $formDetails): array { + $formId = $formDetails[UtilsConfig::FD_FORM_ID] ?? ''; + $type = $formDetails[UtilsConfig::FD_TYPE] ?? ''; + + $output = []; + // Tracking event name. $trackingEventName = FiltersOuputMock::getTrackingEventNameFilterValue($type, $formId)['data']; if ($trackingEventName) { @@ -459,6 +467,43 @@ protected function getFormAdditionalOptionsData(array $formDetails): array $output[UtilsHelper::getStateResponseOutputKey('trackingAdditionalData')] = $trackingAdditionalData; } + return $output; + } + + /** + * Get integration response output additional data on success. + * + * @param array $formDetails Data passed from the `getFormDetailsApi` function. + * + * @return array + */ + protected function getIntegrationResponseSuccessOutputAdditionalData(array $formDetails): array + { + $formId = $formDetails[UtilsConfig::FD_FORM_ID] ?? ''; + $type = $formDetails[UtilsConfig::FD_TYPE] ?? ''; + + $output = []; + + // Return result output items as a response key. + $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputItems']); + if (\has_filter($filterName)) { + $filterOutput = \apply_filters($filterName, [], $formDetails, $formId) ?? []; + + if ($filterOutput) { + $output[UtilsHelper::getStateResponseOutputKey('resultOutputItems')] = $filterOutput; + } + } + + // Output result output parts as a response key. + $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputParts']); + if (\has_filter($filterName)) { + $filterOutput = \apply_filters($filterName, [], $formDetails, $formId) ?? []; + + if ($filterOutput) { + $output[UtilsHelper::getStateResponseOutputKey('resultOutputParts')] = $filterOutput; + } + } + // Hide global message on success. $hideGlobalMsgOnSuccess = UtilsSettingsHelper::isSettingCheckboxChecked(SettingsGeneral::SETTINGS_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY, SettingsGeneral::SETTINGS_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY, $formId); if ($hideGlobalMsgOnSuccess) { @@ -466,24 +511,57 @@ protected function getFormAdditionalOptionsData(array $formDetails): array } // Success redirect url. - // $successRedirectUrl = FiltersOuputMock::getSuccessRedirectUrlFilterValue($type, $formId)['data']; - // if ($successRedirectUrl) { - // $outputSecureData["successRedirectUrl"] = $successRedirectUrl; - // } + $successRedirectUrl = FiltersOuputMock::getSuccessRedirectUrlFilterValue($type, $formId)['data']; + if ($successRedirectUrl) { + dump($formDetails); + $redirectDataOutput = []; + + // Replace {field_name} with the actual value. + foreach ($formDetails[UtilsConfig::FD_PARAMS_RAW] as $name => $value) { + if (\is_array($value)) { + $value = \implode(', ', $value); + } + $successRedirectUrl = \str_replace("{" . $name . "}", $value, $successRedirectUrl); + } - if (isset($formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_URL]) && $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_URL]) { - $output[UtilsHelper::getStateResponseOutputKey('successRedirectUrl')] = $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_URL]; - } + // Pre response filter for success redirect data. + $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'preResponseSuccessRedirectData']); + if (\has_filter($filterName)) { + $filterDetails = \apply_filters($filterName, [], $formDetails); + + if ($filterDetails) { + $redirectDataOutput = $filterDetails; + } + } - if (isset($formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA]) && $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA]) { - $output[UtilsHelper::getStateResponseOutputKey('successRedirectData')] = $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA]; + $output[UtilsHelper::getStateResponseOutputKey('successRedirectUrl')] = \add_query_arg( + [ + UtilsHelper::getStateSuccessRedirectUrlKey('data') => UtilsEncryption::encryptor(\wp_json_encode($redirectDataOutput)), + ], + $successRedirectUrl + ); } + // Append additional addon data from filter. if (isset($formDetails[UtilsConfig::FD_ADDON]) && $formDetails[UtilsConfig::FD_ADDON]) { $output[UtilsHelper::getStateResponseOutputKey('addon')] = $formDetails[UtilsConfig::FD_ADDON]; } - return $output; + return array_merge( + $output, + $this->getIntegrationResponseAnyOutputAdditionalData($formDetails) + ); + } + + /** + * Get integration response output additional data on error. + * + * @param array $formDetails Data passed from the `getFormDetailsApi` function. + * + * @return array + */ + protected function getIntegrationResponseErrorOutputAdditionalData(array $formDetails): array { + return $this->getIntegrationResponseAnyOutputAdditionalData($formDetails); } /** diff --git a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php index 83b84ee3..ee31ff5b 100644 --- a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php +++ b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php @@ -10,18 +10,13 @@ namespace EightshiftForms\Rest\Routes\Integrations\Mailer; -use EightshiftForms\Entries\EntriesHelper; -use EightshiftForms\Entries\SettingsEntries; use EightshiftForms\Hooks\FiltersOuputMock; use EightshiftForms\Labels\LabelsInterface; use EightshiftForms\Integrations\Mailer\MailerInterface; use EightshiftForms\Integrations\Mailer\SettingsMailer; -use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHelper as HelpersUtilsHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Config\UtilsConfig; -use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsApiHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsEncryption; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHelper; -use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHooksHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsSettingsHelper; /** @@ -61,11 +56,10 @@ public function __construct( * Send emails method. * * @param array $formDetails Data passed from the `getFormDetailsApi` function. - * @param boolean $useSuccessAction If success action should be used. * * @return array|int|string> */ - public function sendEmails(array $formDetails, bool $useSuccessAction = false): array + public function sendEmails(array $formDetails): array { $formId = $formDetails[UtilsConfig::FD_FORM_ID]; @@ -225,12 +219,13 @@ private function prepareEmailResponseTags(array $formDetails): array // Success redirect. $successRedirectUrl = FiltersOuputMock::getSuccessRedirectUrlFilterValue($formType, $formId)['data'] ?? ''; if ($successRedirectUrl) { + // TODO // Add success redirect data, usualy got from the add-on plugin or filters. $successRedirect = $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA] ?? ''; if ($successRedirect) { $successRedirectUrl = \add_query_arg( [ - HelpersUtilsHelper::getStateSuccessRedirectUrlKey('data') => $successRedirect, + UtilsHelper::getStateSuccessRedirectUrlKey('data') => $successRedirect, ], $successRedirectUrl ); @@ -241,7 +236,7 @@ private function prepareEmailResponseTags(array $formDetails): array if ($successRedirectVariation) { $successRedirectUrl = \add_query_arg( [ - HelpersUtilsHelper::getStateSuccessRedirectUrlKey('variation') => UtilsEncryption::encryptor($successRedirectVariation), + UtilsHelper::getStateSuccessRedirectUrlKey('variation') => UtilsEncryption::encryptor($successRedirectVariation), ], $successRedirectUrl ); diff --git a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerInterface.php b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerInterface.php index 4429e0b8..064d877c 100644 --- a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerInterface.php +++ b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerInterface.php @@ -19,11 +19,10 @@ interface FormSubmitMailerInterface * Send emails method. * * @param array $formDetails Data passed from the `getFormDetailsApi` function. - * @param boolean $useSuccessAction If success action should be used. * * @return array|int|string> */ - public function sendEmails(array $formDetails, bool $useSuccessAction = false): array; + public function sendEmails(array $formDetails): array; /** * Send fallback email diff --git a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php index 62d9acf0..10618f3e 100644 --- a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php +++ b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php @@ -11,8 +11,6 @@ namespace EightshiftForms\Rest\Routes\Integrations\Mailer; use EightshiftForms\Captcha\CaptchaInterface; -use EightshiftForms\Entries\EntriesHelper; -use EightshiftForms\Entries\SettingsEntries; use EightshiftForms\Integrations\Mailer\SettingsMailer; use EightshiftForms\Labels\LabelsInterface; use EightshiftForms\Rest\Routes\AbstractFormSubmit; @@ -21,8 +19,6 @@ use EightshiftForms\Validation\ValidatorInterface; use EightshiftFormsVendor\EightshiftFormsUtils\Config\UtilsConfig; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsApiHelper; -use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsEncryption; -use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHooksHelper; /** * Class FormSubmitMailerRoute @@ -79,55 +75,38 @@ protected function getRouteName(): string */ protected function submitAction(array $formDetails) { - // Pre response filter for addon data. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'preResponseAddonData']); - if (\has_filter($filterName)) { - $filterDetails = \apply_filters($filterName, [], $formDetails); - - if ($filterDetails) { - $formDetails[UtilsConfig::FD_ADDON] = $filterDetails; - } - } - $formId = $formDetails[UtilsConfig::FD_FORM_ID]; - if (\apply_filters(SettingsEntries::FILTER_SETTINGS_IS_VALID_NAME, $formId)) { - $entryId = EntriesHelper::setEntryByFormDataRef($formDetails); - $formDetails[UtilsConfig::FD_ENTRY_ID] = $entryId ? (string) $entryId : ''; - } + // Pre submit form details manipulation. + $formDetails = $this->getIntegrationResponsePreSubmitFormDetailsManipulation($formDetails); - // Pre response filter for success redirect data. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'preResponseSuccessRedirectData']); - if (\has_filter($filterName)) { - $filterDetails = \apply_filters($filterName, [], $formDetails); - - if ($filterDetails) { - $formDetails[UtilsConfig::FD_SUCCESS_REDIRECT_DATA] = UtilsEncryption::encryptor(\wp_json_encode($filterDetails)); - } - } - - $mailerResponse = $this->getFormSubmitMailer($formDetails); + // Send email. + $mailerResponse = $this->getFormSubmitMailer()->sendEmails($formDetails); $status = $mailerResponse['status'] ?? UtilsConfig::STATUS_ERROR; $label = $mailerResponse['label'] ?? 'mailerErrorEmailSend'; $debug = $mailerResponse['debug'] ?? []; - if ($status === UtilsConfig::STATUS_ERROR) { + if ($status === UtilsConfig::STATUS_SUCCESS) { + // Pre success form details manipulation. + $formDetails = $this->getIntegrationResponsePreSuccessFormDetailsManipulation($formDetails); + return \rest_ensure_response( - UtilsApiHelper::getApiErrorPublicOutput( + UtilsApiHelper::getApiSuccessPublicOutput( $this->labels->getLabel($label, $formId), - [], + $this->getIntegrationResponseSuccessOutputAdditionalData($formDetails), $debug ) ); } return \rest_ensure_response( - UtilsApiHelper::getApiSuccessPublicOutput( + UtilsApiHelper::getApiErrorPublicOutput( $this->labels->getLabel($label, $formId), - $this->getFormAdditionalOptionsData($formDetails), + $this->getIntegrationResponseErrorOutputAdditionalData($formDetails), $debug ) ); + } } diff --git a/src/Settings/Settings/Settings.php b/src/Settings/Settings/Settings.php index ad316cc8..c2849b54 100644 --- a/src/Settings/Settings/Settings.php +++ b/src/Settings/Settings/Settings.php @@ -112,7 +112,6 @@ public function getSettingsForm(string $type, string $formId): string UtilsHelper::getStateAttribute('formId') => $formId, UtilsHelper::getStateAttribute('formType') => $internalType, UtilsHelper::getStateAttribute('settingsType') => $type, - UtilsHelper::getStateAttribute('successRedirect') => Helpers::getCurrentUrl(), ]; // Populate and build form. From 43fdf58ebe328f395aaebc9df8d72d1d59f601cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Ruz=CC=8Cevic=CC=81?= Date: Thu, 11 Jul 2024 01:17:19 +0200 Subject: [PATCH 05/35] updating libs --- src/Blocks/components/form/assets/utils.js | 12 +-- src/Blocks/components/form/form.php | 2 +- .../custom/forms/components/forms-options.js | 8 +- .../custom/forms/components/results-output.js | 78 +++++++++++++++++++ src/Blocks/custom/forms/manifest.json | 7 ++ .../result-output-item/result-output-item.php | 2 + src/CustomPostType/Result.php | 4 +- src/Form/AbstractFormBuilder.php | 12 --- src/Form/Form.php | 3 - src/General/SettingsGeneral.php | 56 ------------- src/Hooks/FiltersOuputMock.php | 3 +- src/Hooks/FiltersSettingsBuilder.php | 5 +- src/Integrations/Mailer/SettingsMailer.php | 3 +- src/Rest/Routes/AbstractFormSubmit.php | 65 +++++++++++++++- .../Integrations/Jira/FormSubmitJiraRoute.php | 3 +- .../Integrations/Mailer/FormSubmitMailer.php | 58 +------------- .../Mailer/FormSubmitMailerInterface.php | 3 +- .../Mailer/FormSubmitMailerRoute.php | 10 ++- .../Pipedrive/FormSubmitPipedriveRoute.php | 3 +- src/ResultOutput/SettingsResultOutput.php | 6 +- 20 files changed, 191 insertions(+), 152 deletions(-) create mode 100644 src/Blocks/custom/forms/components/results-output.js diff --git a/src/Blocks/components/form/assets/utils.js b/src/Blocks/components/form/assets/utils.js index 78e97282..1c810593 100644 --- a/src/Blocks/components/form/assets/utils.js +++ b/src/Blocks/components/form/assets/utils.js @@ -586,13 +586,13 @@ export class Utils { this.dispatchFormEvent(formId, this.state.getStateEvent('afterFormSubmitSuccessBeforeRedirect'), redirectUrl); // Do the actual redirect after some time. - // setTimeout(() => { - // window.location = redirectUrl; + setTimeout(() => { + window.location = redirectUrl; - // if (reload) { - // window.location.reload(); - // } - // }, parseInt(this.state.getStateSettingsRedirectionTimeout(formId), 10)); + if (reload) { + window.location.reload(); + } + }, parseInt(this.state.getStateSettingsRedirectionTimeout(formId), 10)); } /** diff --git a/src/Blocks/components/form/form.php b/src/Blocks/components/form/form.php index d111141d..0f8a8cc1 100644 --- a/src/Blocks/components/form/form.php +++ b/src/Blocks/components/form/form.php @@ -58,7 +58,7 @@ $formAttrs = Helpers::checkAttr('formAttrs', $attributes, $manifest); $customClassSelectorFilterName = UtilsHooksHelper::getFilterName(['block', 'form', 'customClassSelector']); -$customClassSelector = $formDataTypeSelector = apply_filters($customClassSelectorFilterName, '', $attributes, $formId); +$customClassSelector = apply_filters($customClassSelectorFilterName, '', $attributes, $formId); $formClass = Helpers::classnames([ Helpers::selector($componentClass, $componentClass), diff --git a/src/Blocks/custom/forms/components/forms-options.js b/src/Blocks/custom/forms/components/forms-options.js index ffc290ed..ae5faf56 100644 --- a/src/Blocks/custom/forms/components/forms-options.js +++ b/src/Blocks/custom/forms/components/forms-options.js @@ -33,6 +33,7 @@ import { outputFormSelectItemWithIcon, } from '../../../components/utils'; import { getRestUrl } from '../../../components/form/assets/state-init'; +import { ResultsOutputOptions } from './results-output'; export const FormsOptions = ({ attributes, @@ -145,7 +146,7 @@ export const FormsOptions = ({ } - + } + value={resultOutputItemOperator} + options={getConstantsOptions( + { + ...CONDITIONAL_TAGS_OPERATORS_LABELS, + ...CONDITIONAL_TAGS_OPERATORS_EXTENDED_LABELS, + } + )} + onChange={(value) => { + setShowEndValue(value.toUpperCase() in CONDITIONAL_TAGS_OPERATORS_EXTENDED); + setAttributes({ [getAttrKey('resultOutputItemOperator', attributes, manifest)]: value }); + }} + simpleValue + closeMenuAfterSelect + /> + + {showEndValue && + } + value={resultOutputItemValueEnd} + onChange={(value) => setAttributes({ [getAttrKey('resultOutputItemValueEnd', attributes, manifest)]: value })} + help={showEndValue && __('End value must be number.', 'eightshift-forms')} + /> + } + esc_attr($resultOutputItemName), UtilsHelper::getStateAttribute('resultOutputItemValue') => esc_attr($resultOutputItemValue), + UtilsHelper::getStateAttribute('resultOutputItemValueEnd') => esc_attr(Helpers::checkAttr('resultOutputItemValueEnd', $attributes, $manifest)), + UtilsHelper::getStateAttribute('resultOutputItemOperator') => esc_attr(Helpers::checkAttr('resultOutputItemOperator', $attributes, $manifest)), ]; $resultAttrsOutput = ''; diff --git a/src/Form/Form.php b/src/Form/Form.php index 18e5604a..37fe6e3d 100644 --- a/src/Form/Form.php +++ b/src/Form/Form.php @@ -104,6 +104,7 @@ public function updateFormComponentAttributesOutput(array $attributes): array // Custom form name. $attributes["{$prefix}HideGlobalMsgOnSuccess"] = !!UtilsSettingsHelper::isSettingCheckboxChecked(SettingsGeneral::SETTINGS_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY, SettingsGeneral::SETTINGS_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY, $formId); + $attributes["{$prefix}HideFormOnSuccess"] = !!UtilsSettingsHelper::isSettingCheckboxChecked(SettingsGeneral::SETTINGS_HIDE_FORM_ON_SUCCESS_KEY, SettingsGeneral::SETTINGS_HIDE_FORM_ON_SUCCESS_KEY, $formId); // Use single submit. $attributes["{$prefix}UseSingleSubmit"] = UtilsSettingsHelper::isSettingCheckboxChecked(SettingsGeneral::SETTINGS_USE_SINGLE_SUBMIT_KEY, SettingsGeneral::SETTINGS_USE_SINGLE_SUBMIT_KEY, $formId); diff --git a/src/General/SettingsGeneral.php b/src/General/SettingsGeneral.php index 78e18a48..2d5edc79 100644 --- a/src/General/SettingsGeneral.php +++ b/src/General/SettingsGeneral.php @@ -73,6 +73,7 @@ class SettingsGeneral implements UtilsSettingGlobalInterface, UtilsSettingInterf * Hide global message on success key. */ public const SETTINGS_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY = 'hide-global-msg-on-success'; + public const SETTINGS_HIDE_FORM_ON_SUCCESS_KEY = 'hide-form-on-success'; /** * Use single submit key. @@ -196,6 +197,21 @@ function ($selectOption) use ($successRedirectVariation) { ] ] ], + [ + 'component' => 'checkboxes', + 'checkboxesFieldLabel' => '', + 'checkboxesName' => UtilsSettingsHelper::getSettingName(self::SETTINGS_HIDE_FORM_ON_SUCCESS_KEY), + 'checkboxesContent' => [ + [ + 'component' => 'checkbox', + 'checkboxLabel' => \__('Hide form on success', 'eightshift-forms'), + 'checkboxIsChecked' => UtilsSettingsHelper::isSettingCheckboxChecked(self::SETTINGS_HIDE_FORM_ON_SUCCESS_KEY, self::SETTINGS_HIDE_FORM_ON_SUCCESS_KEY, $formId), + 'checkboxValue' => self::SETTINGS_HIDE_FORM_ON_SUCCESS_KEY, + 'checkboxSingleSubmit' => true, + 'checkboxAsToggle' => true, + ] + ] + ], ], ], [ diff --git a/src/Hooks/Filters.php b/src/Hooks/Filters.php index 727ddddc..9ecf1653 100644 --- a/src/Hooks/Filters.php +++ b/src/Hooks/Filters.php @@ -87,6 +87,7 @@ private static function getPublicFilters(): array 'resultOutputItems', 'resultOutputParts', 'customClassSelector', + 'componentShowForm', ], 'formSelector' => [ 'formTemplates', diff --git a/src/Integrations/Mailer/Mailer.php b/src/Integrations/Mailer/Mailer.php index a347b394..e79450d2 100644 --- a/src/Integrations/Mailer/Mailer.php +++ b/src/Integrations/Mailer/Mailer.php @@ -91,6 +91,11 @@ public function fallbackIntegrationEmail( $formId = $response[UtilsConfig::IARD_FORM_ID] ?? ''; $isDisabled = $response[UtilsConfig::IARD_IS_DISABLED] ?? false; + $customDebugData = $customData['debug'] ?? []; + if ($customDebugData) { + unset($customData['debug']); + } + $output = [ UtilsConfig::IARD_STATUS => $response[UtilsConfig::IARD_STATUS] ?? UtilsConfig::STATUS_ERROR, UtilsConfig::IARD_MSG => $response[UtilsConfig::IARD_MSG] ?? '', @@ -103,7 +108,7 @@ public function fallbackIntegrationEmail( UtilsConfig::IARD_ITEM_ID => $response[UtilsConfig::IARD_ITEM_ID] ?? '', UtilsConfig::IARD_FORM_ID => $formId, UtilsConfig::FD_POST_ID => $formDetails[UtilsConfig::FD_POST_ID] ?? '', - 'debug' => $this->getDebugOptions(), + 'debug' => $this->getDebugOptions($customDebugData), ]; if ($customData) { @@ -191,9 +196,14 @@ public function fallbackProcessingEmail( $type = $formDetails[UtilsConfig::FD_TYPE] ?? ''; $files = $formDetails[UtilsConfig::FD_FILES] ?? []; + $customDebugData = $customData['debug'] ?? []; + if ($customDebugData) { + unset($customData['debug']); + } + $output = [ 'customData' => $customData, - 'debug' => $this->getDebugOptions(), + 'debug' => $this->getDebugOptions($customDebugData), 'formDetails' => $this->cleanUpFormDetails($formDetails), ]; @@ -243,18 +253,23 @@ public function fallbackProcessingEmail( /** * Get debug options. * + * @param array $customData Custom data for the email. + * * @return array */ - private function getDebugOptions(): array + private function getDebugOptions(array $customData): array { - return [ - 'forms' => Helpers::getPluginVersion(), - 'php' => \phpversion(), - 'wp' => \get_bloginfo('version'), - 'url' => \get_bloginfo('url'), - 'userAgent' => isset($_SERVER['HTTP_USER_AGENT']) ? \sanitize_text_field(\wp_unslash($_SERVER['HTTP_USER_AGENT'])) : '', - 'time' => \wp_date('Y-m-d H:i:s'), - ]; + return \array_merge( + [ + 'forms' => Helpers::getPluginVersion(), + 'php' => \phpversion(), + 'wp' => \get_bloginfo('version'), + 'url' => \get_bloginfo('url'), + 'userAgent' => isset($_SERVER['HTTP_USER_AGENT']) ? \sanitize_text_field(\wp_unslash($_SERVER['HTTP_USER_AGENT'])) : '', + 'time' => \wp_date('Y-m-d H:i:s'), + ], + $customData + ); } /** diff --git a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php index e8fb224d..572d2732 100644 --- a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php +++ b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailer.php @@ -16,6 +16,7 @@ use EightshiftForms\Labels\LabelsInterface; use EightshiftForms\Integrations\Mailer\MailerInterface; use EightshiftForms\Integrations\Mailer\SettingsMailer; +use EightshiftForms\Security\SecurityInterface; use EightshiftFormsVendor\EightshiftFormsUtils\Config\UtilsConfig; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsApiHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsEncryption; @@ -42,18 +43,28 @@ class FormSubmitMailer implements FormSubmitMailerInterface */ public $mailer; + /** + * Instance variable of SecurityInterface data. + * + * @var SecurityInterface + */ + protected $security; + /** * Create a new instance that injects classes * * @param MailerInterface $mailer Inject MailerInterface which holds mailer methods. * @param LabelsInterface $labels Inject labels methods. + * @param SecurityInterface $security Inject security methods. */ public function __construct( MailerInterface $mailer, - LabelsInterface $labels + LabelsInterface $labels, + SecurityInterface $security ) { $this->mailer = $mailer; $this->labels = $labels; + $this->security = $security; } /** @@ -171,6 +182,10 @@ public function sendFallbackIntegrationEmail( string $customMsg = '', array $customData = [] ): bool { + $customData['debug'] = [ + 'requestIP' => $this->security->getIpAddress('anonymize'), + ]; + return $this->mailer->fallbackIntegrationEmail( $formDetails, $customSubject, @@ -196,6 +211,10 @@ public function sendFallbackProcessingEmail( string $customMsg = '', array $customData = [] ): bool { + $customData['debug'] = [ + 'requestIP' => $this->security->getIpAddress('anonymize'), + ]; + return $this->mailer->fallbackProcessingEmail( $formDetails, $customSubject, diff --git a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php index e2f62c83..91b98c13 100644 --- a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php +++ b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php @@ -85,6 +85,10 @@ protected function submitAction(array $formDetails) } } + $this->getFormSubmitMailer()->sendFallbackIntegrationEmail( + $formDetails + ); + return \rest_ensure_response( $this->getFormSubmitMailer()->sendEmails( $formDetails, diff --git a/src/Security/Security.php b/src/Security/Security.php index 9a36f2ac..b09abeca 100644 --- a/src/Security/Security.php +++ b/src/Security/Security.php @@ -50,18 +50,16 @@ public function isRequestValid(string $formType): bool $keyName = UtilsSettingsHelper::getOptionName(SettingsSecurity::SETTINGS_SECURITY_DATA_KEY); $data = UtilsSettingsHelper::getOptionValueGroup(SettingsSecurity::SETTINGS_SECURITY_DATA_KEY); - $ip = $this->getIpAddress(); $time = \time(); // Bailout if the IP is in the ignore list. $ignoreIps = Helpers::flattenArray(UtilsSettingsHelper::getOptionValueGroup(SettingsSecurity::SETTINGS_SECURITY_IP_IGNORE_KEY)); - if (isset(\array_flip($ignoreIps)[$ip])) { + if (isset(\array_flip($ignoreIps)[$this->getIpAddress()])) { return true; } - // Hash the IP for anonymization. - $ip = \md5($ip); + $ip = $this->getIpAddress('hash'); // If this is the first iteration of this user just add it to the list. if (!isset($data[$ip])) { @@ -112,11 +110,11 @@ public function isRequestValid(string $formType): bool /** * Get users Ip address. * - * @param bool $secure Determine if the function will return normal IP or hashed IP. + * @param string $secureType Determine if the function will return normal, hashed or anonymized IP. * * @return string */ - public function getIpAddress(bool $secure = false): string + public function getIpAddress(string $secureType = 'none'): string { $ip = isset($_SERVER['REMOTE_ADDR']) ? \sanitize_text_field(\wp_unslash($_SERVER['REMOTE_ADDR'])) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended @@ -128,10 +126,29 @@ public function getIpAddress(bool $secure = false): string return ''; } - if ($secure) { - return \md5($ip); + switch ($secureType) { + case 'hash': + return \md5($ip); + case 'anonymize': + if (\filter_var($ip, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV4)) { + $output = \explode('.', $ip); + if ($output) { + $output[\array_key_last($output)] = 'xxx'; + return \implode('.', $output); + } + } + + if (\filter_var($ip, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV6)) { + $output = \explode(':', $ip); + if ($output) { + $output[\end($output)] = 'xxx'; + return \implode(':', $output); + } + } + + return 'xxx.xxx.xxx.xxx'; + default: + return $ip; } - - return $ip; } } diff --git a/src/Security/SecurityInterface.php b/src/Security/SecurityInterface.php index 99f9d883..5b63c70b 100644 --- a/src/Security/SecurityInterface.php +++ b/src/Security/SecurityInterface.php @@ -27,9 +27,9 @@ public function isRequestValid(string $formType): bool; /** * Get users Ip address. * - * @param bool $secure Determine if the function will return normal IP or hashed IP. + * @param string $secureType Determine if the function will return normal, hashed or anonymized IP. * * @return string */ - public function getIpAddress(bool $secure = false): string; + public function getIpAddress(string $secureType = 'none'): string; } diff --git a/src/Shortcode/ResultOutputItemShowForm.php b/src/Shortcode/ResultOutputItemShowForm.php new file mode 100644 index 00000000..153af715 --- /dev/null +++ b/src/Shortcode/ResultOutputItemShowForm.php @@ -0,0 +1,65 @@ + $atts Attributes passed to the shortcode. + * @param string $content Content inside the shortcode. + * + * @return string + */ + public function callback(array $atts, string $content): string + { + $buttonComponent = ''; + + $filterNameComponentNext = UtilsHooksHelper::getFilterName(['block', 'form', 'component_show_form']); + + if (\has_filter($filterNameComponentNext)) { + $buttonComponent = \apply_filters($filterNameComponentNext, [ + 'value' => $content, + 'jsSelector' => UtilsHelper::getStateSelector('resultOutputShowForm'), + ]); + } + + return Helpers::render( + 'submit', + \array_merge( + Helpers::props('submit', [], [ + 'submitButtonComponent' => $buttonComponent, + ]), + ), + 'components', + true + ); + } +} From 59f62f5d927832728573d25f44180eca46393b21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Ruz=CC=8Cevic=CC=81?= Date: Mon, 15 Jul 2024 16:56:07 +0200 Subject: [PATCH 07/35] hotfix --- CHANGELOG.md | 6 ++++++ eightshift-forms.php | 2 +- .../Routes/Integrations/Mailer/FormSubmitMailerRoute.php | 4 ---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e1a1e23..1e221bdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file. This projects adheres to [Semantic Versioning](https://semver.org/) and [Keep a CHANGELOG](https://keepachangelog.com/). +## [4.0.7] + +### Fixed +- removed unnecessary fallback email fallback. + ## [4.0.6] ### Updated @@ -461,6 +466,7 @@ This projects adheres to [Semantic Versioning](https://semver.org/) and [Keep a - Initial production release. +[4.0.7]: https://github.com/infinum/eightshift-forms/compare/4.0.6...4.0.7 [4.0.6]: https://github.com/infinum/eightshift-forms/compare/4.0.5...4.0.6 [4.0.5]: https://github.com/infinum/eightshift-forms/compare/4.0.4...4.0.5 [4.0.4]: https://github.com/infinum/eightshift-forms/compare/4.0.3...4.0.4 diff --git a/eightshift-forms.php b/eightshift-forms.php index d265c858..c38a4809 100644 --- a/eightshift-forms.php +++ b/eightshift-forms.php @@ -6,7 +6,7 @@ * Description: Eightshift Forms is a complete form builder plugin that utilizes modern Block editor features with multiple third-party integrations, bringing your project to a new level. * Author: WordPress team @Infinum * Author URI: https://eightshift.com/ - * Version: 4.0.6 + * Version: 4.0.7 * Text Domain: eightshift-forms * * @package EightshiftForms diff --git a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php index 91b98c13..e2f62c83 100644 --- a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php +++ b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php @@ -85,10 +85,6 @@ protected function submitAction(array $formDetails) } } - $this->getFormSubmitMailer()->sendFallbackIntegrationEmail( - $formDetails - ); - return \rest_ensure_response( $this->getFormSubmitMailer()->sendEmails( $formDetails, From 9692cc8f7770470b30ae35cbb042d208472945e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Ruz=CC=8Cevic=CC=81?= Date: Tue, 16 Jul 2024 18:47:53 +0200 Subject: [PATCH 08/35] adding additional check --- composer.lock | 8 +- package-lock.json | 3336 ++++------------- src/AdminMenus/FormAdminMenu.php | 6 +- .../card-inline/card-inline-admin.scss | 21 + src/Blocks/components/form/assets/form.js | 4 +- src/Blocks/components/form/manifest.json | 7 - src/Blocks/components/utils/index.js | 26 +- .../custom/forms/components/forms-options.js | 144 +- .../custom/forms/components/results-output.js | 78 - src/Blocks/custom/forms/manifest.json | 15 +- .../components/result-output-item-options.js | 18 +- .../result-output-item/result-output-item.php | 5 + src/CustomPostType/Result.php | 2 +- src/Enqueue/Blocks/EnqueueBlocks.php | 4 - src/Form/Form.php | 8 +- src/General/SettingsGeneral.php | 188 +- src/Helpers/publicHelper.php | 2 +- src/Hooks/Filters.php | 1 - src/Hooks/FiltersOuputMock.php | 66 +- src/Hooks/FiltersSettingsBuilder.php | 4 +- .../AbstractSettingsIntegrations.php | 68 + .../ActiveCampaign/SettingsActiveCampaign.php | 20 +- .../Airtable/SettingsAirtable.php | 20 +- .../Goodbits/SettingsGoodbits.php | 20 +- .../Greenhouse/SettingsGreenhouse.php | 20 +- src/Integrations/Hubspot/SettingsHubspot.php | 20 +- src/Integrations/Jira/SettingsJira.php | 20 +- .../Mailchimp/SettingsMailchimp.php | 20 +- src/Integrations/Mailer/Mailer.php | 2 +- src/Integrations/Mailer/SettingsMailer.php | 21 +- .../Mailerlite/SettingsMailerlite.php | 20 +- src/Integrations/Moments/SettingsMoments.php | 21 +- .../Pipedrive/SettingsPipedrive.php | 20 +- .../Workable/SettingsWorkable.php | 20 +- src/Rest/Routes/AbstractFormSubmit.php | 27 +- .../Integrations/Mailer/FormSubmitMailer.php | 3 - src/ResultOutput/SettingsResultOutput.php | 180 +- src/Validation/SettingsValidation.php | 1 + testFilters/testFilters.php | 1 - 39 files changed, 1080 insertions(+), 3387 deletions(-) delete mode 100644 src/Blocks/custom/forms/components/results-output.js create mode 100644 src/Integrations/AbstractSettingsIntegrations.php diff --git a/composer.lock b/composer.lock index ca37b8b8..e280863e 100644 --- a/composer.lock +++ b/composer.lock @@ -62,12 +62,12 @@ "source": { "type": "git", "url": "https://github.com/infinum/eightshift-forms-utils.git", - "reference": "712a8914f1a89d4db5102583f4a8490797e612b5" + "reference": "41ddd61d676db1f8606ec2bd09ad585e8ea2479a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infinum/eightshift-forms-utils/zipball/712a8914f1a89d4db5102583f4a8490797e612b5", - "reference": "712a8914f1a89d4db5102583f4a8490797e612b5", + "url": "https://api.github.com/repos/infinum/eightshift-forms-utils/zipball/41ddd61d676db1f8606ec2bd09ad585e8ea2479a", + "reference": "41ddd61d676db1f8606ec2bd09ad585e8ea2479a", "shasum": "" }, "require": { @@ -134,7 +134,7 @@ "issues": "https://github.com/infinum/eightshift-forms/issues", "source": "https://github.com/infinum/eightshift-forms" }, - "time": "2024-07-15T14:22:57+00:00" + "time": "2024-07-16T08:00:21+00:00" }, { "name": "infinum/eightshift-libs", diff --git a/package-lock.json b/package-lock.json index aaa5159e..e5686baa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,8 +24,6 @@ }, "node_modules/@ampproject/remapping": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -38,14 +36,10 @@ }, "node_modules/@ariakit/core": { "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@ariakit/core/-/core-0.3.11.tgz", - "integrity": "sha512-+MnOeqnA4FLI/7vqsZLbZQHHN4ofd9kvkNjz44fNi0gqmD+ZbMWiDkFAvZII75dYnxYw5ZPpWjA4waK22VBWig==", "license": "MIT" }, "node_modules/@ariakit/react": { "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@ariakit/react/-/react-0.3.14.tgz", - "integrity": "sha512-h71BPMZ2eW+E2ESbdYxSAEMR1DozYzd5eHE5IOzGd9Egi5u7EZxqmuW4CXVXZ1Y6vbaDMV3SudgPh7iHS/ArFw==", "license": "MIT", "dependencies": { "@ariakit/react-core": "0.3.14" @@ -61,8 +55,6 @@ }, "node_modules/@ariakit/react-core": { "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@ariakit/react-core/-/react-core-0.3.14.tgz", - "integrity": "sha512-16Qj6kDPglpdWtU5roY9q+G66naOjauTY5HvUIaL2aLY0187ATaRrABIKoMMzTtJyhvsud4jFlzivz+/zCQ8yw==", "license": "MIT", "dependencies": { "@ariakit/core": "0.3.11", @@ -76,8 +68,6 @@ }, "node_modules/@babel/code-frame": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "license": "MIT", "dependencies": { "@babel/highlight": "^7.24.7", @@ -88,9 +78,7 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "version": "7.24.9", "license": "MIT", "peer": true, "engines": { @@ -98,22 +86,20 @@ } }, "node_modules/@babel/core": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", - "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "version": "7.24.9", "license": "MIT", "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helpers": "^7.24.7", - "@babel/parser": "^7.24.7", + "@babel/generator": "^7.24.9", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-module-transforms": "^7.24.9", + "@babel/helpers": "^7.24.8", + "@babel/parser": "^7.24.8", "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -128,13 +114,19 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.24.9", "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7", + "@babel/types": "^7.24.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -144,15 +136,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "version": "7.24.8", "license": "MIT", "peer": true, "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -160,10 +150,16 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-environment-visitor": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" @@ -174,8 +170,6 @@ }, "node_modules/@babel/helper-function-name": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "license": "MIT", "dependencies": { "@babel/template": "^7.24.7", @@ -187,8 +181,6 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" @@ -199,8 +191,6 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", @@ -211,9 +201,7 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "version": "7.24.9", "license": "MIT", "peer": true, "dependencies": { @@ -232,8 +220,6 @@ }, "node_modules/@babel/helper-simple-access": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "license": "MIT", "peer": true, "dependencies": { @@ -246,8 +232,6 @@ }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" @@ -257,9 +241,7 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.24.8", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -267,17 +249,13 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "version": "7.24.8", "license": "MIT", "peer": true, "engines": { @@ -285,14 +263,12 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "version": "7.24.8", "license": "MIT", "peer": true, "dependencies": { "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -300,8 +276,6 @@ }, "node_modules/@babel/highlight": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.24.7", @@ -313,10 +287,65 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles": { + "version": "3.2.1", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert": { + "version": "1.9.3", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/supports-color/node_modules/has-flag": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "version": "7.24.8", "license": "MIT", "bin": { "parser": "bin/babel-parser.js" @@ -326,9 +355,7 @@ } }, "node_modules/@babel/runtime": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", - "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "version": "7.24.8", "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" @@ -339,8 +366,6 @@ }, "node_modules/@babel/template": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", @@ -352,19 +377,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "version": "7.24.8", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", + "@babel/generator": "^7.24.8", "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-function-name": "^7.24.7", "@babel/helper-hoist-variables": "^7.24.7", "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -374,20 +397,16 @@ }, "node_modules/@babel/traverse/node_modules/globals": { "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.24.9", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, @@ -397,8 +416,6 @@ }, "node_modules/@csstools/css-parser-algorithms": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", - "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", "funding": [ { "type": "github", @@ -419,8 +436,6 @@ }, "node_modules/@csstools/css-tokenizer": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", - "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", "funding": [ { "type": "github", @@ -438,8 +453,6 @@ }, "node_modules/@csstools/media-query-list-parser": { "version": "2.1.13", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", - "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", "funding": [ { "type": "github", @@ -461,8 +474,6 @@ }, "node_modules/@csstools/selector-specificity": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", - "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", "funding": [ { "type": "github", @@ -483,8 +494,6 @@ }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -492,8 +501,6 @@ }, "node_modules/@dnd-kit/accessibility": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.1.0.tgz", - "integrity": "sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" @@ -504,8 +511,6 @@ }, "node_modules/@dnd-kit/core": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.1.0.tgz", - "integrity": "sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==", "license": "MIT", "dependencies": { "@dnd-kit/accessibility": "^3.1.0", @@ -519,8 +524,6 @@ }, "node_modules/@dnd-kit/modifiers": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@dnd-kit/modifiers/-/modifiers-7.0.0.tgz", - "integrity": "sha512-BG/ETy3eBjFap7+zIti53f0PCLGDzNXyTmn6fSdrudORf+OH04MxrW4p5+mPu4mgMk9kM41iYONjc3DOUWTcfg==", "license": "MIT", "dependencies": { "@dnd-kit/utilities": "^3.2.2", @@ -533,8 +536,6 @@ }, "node_modules/@dnd-kit/sortable": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-8.0.0.tgz", - "integrity": "sha512-U3jk5ebVXe1Lr7c2wU7SBZjcWdQP+j7peHJfCspnA81enlu88Mgd7CC8Q+pub9ubP7eKVETzJW+IBAhsqbSu/g==", "license": "MIT", "dependencies": { "@dnd-kit/utilities": "^3.2.2", @@ -547,8 +548,6 @@ }, "node_modules/@dnd-kit/utilities": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.2.tgz", - "integrity": "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" @@ -559,8 +558,6 @@ }, "node_modules/@dual-bundle/import-meta-resolve": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", "license": "MIT", "funding": { "type": "github", @@ -569,8 +566,6 @@ }, "node_modules/@eightshift/frontend-libs": { "version": "12.1.5", - "resolved": "https://registry.npmjs.org/@eightshift/frontend-libs/-/frontend-libs-12.1.5.tgz", - "integrity": "sha512-Q7d6GS0n1b+d4trQZUl1Q2CdTpngCn4uxaLQ8eU1wFDjNBOhGl4gZvMCarHQwE3BKWOaski3FBQGJ5sv3tWt9w==", "license": "MIT", "dependencies": { "@dnd-kit/core": "^6.1.0", @@ -632,8 +627,6 @@ }, "node_modules/@emotion/babel-plugin": { "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.16.7", @@ -651,14 +644,17 @@ }, "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "license": "MIT" }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@emotion/cache": { "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", "license": "MIT", "dependencies": { "@emotion/memoize": "^0.8.1", @@ -670,8 +666,6 @@ }, "node_modules/@emotion/css": { "version": "11.11.2", - "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.11.2.tgz", - "integrity": "sha512-VJxe1ucoMYMS7DkiMdC2T7PWNbrEI0a39YRiyDvK2qq4lXwjRbVP/z4lpG+odCsRzadlR+1ywwrTzhdm5HNdew==", "license": "MIT", "dependencies": { "@emotion/babel-plugin": "^11.11.0", @@ -683,14 +677,10 @@ }, "node_modules/@emotion/hash": { "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", "license": "MIT" }, "node_modules/@emotion/is-prop-valid": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", - "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", "license": "MIT", "dependencies": { "@emotion/memoize": "^0.8.1" @@ -698,14 +688,10 @@ }, "node_modules/@emotion/memoize": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", "license": "MIT" }, "node_modules/@emotion/react": { "version": "11.11.4", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", - "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", @@ -728,8 +714,6 @@ }, "node_modules/@emotion/serialize": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", - "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", "license": "MIT", "dependencies": { "@emotion/hash": "^0.9.1", @@ -741,14 +725,10 @@ }, "node_modules/@emotion/sheet": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==", "license": "MIT" }, "node_modules/@emotion/styled": { "version": "11.11.5", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz", - "integrity": "sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", @@ -770,14 +750,10 @@ }, "node_modules/@emotion/unitless": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", "license": "MIT" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", "license": "MIT", "peerDependencies": { "react": ">=16.8.0" @@ -785,20 +761,14 @@ }, "node_modules/@emotion/utils": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==", "license": "MIT" }, "node_modules/@emotion/weak-memoize": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==", "license": "MIT" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" @@ -812,8 +782,6 @@ }, "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -824,8 +792,6 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", - "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -833,8 +799,6 @@ }, "node_modules/@eslint/config-array": { "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.0.tgz", - "integrity": "sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==", "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.4", @@ -847,8 +811,6 @@ }, "node_modules/@eslint/eslintrc": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "license": "MIT", "dependencies": { "ajv": "^6.12.4", @@ -870,8 +832,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "license": "MIT", "engines": { "node": ">=18" @@ -881,9 +841,7 @@ } }, "node_modules/@eslint/js": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.6.0.tgz", - "integrity": "sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==", + "version": "9.7.0", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -891,8 +849,6 @@ }, "node_modules/@eslint/object-schema": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -900,8 +856,6 @@ }, "node_modules/@floating-ui/core": { "version": "1.6.4", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.4.tgz", - "integrity": "sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==", "license": "MIT", "dependencies": { "@floating-ui/utils": "^0.2.4" @@ -909,8 +863,6 @@ }, "node_modules/@floating-ui/dom": { "version": "1.6.7", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.7.tgz", - "integrity": "sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==", "license": "MIT", "dependencies": { "@floating-ui/core": "^1.6.0", @@ -919,8 +871,6 @@ }, "node_modules/@floating-ui/react-dom": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", - "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", "license": "MIT", "dependencies": { "@floating-ui/dom": "^1.0.0" @@ -932,14 +882,10 @@ }, "node_modules/@floating-ui/utils": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.4.tgz", - "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==", "license": "MIT" }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "license": "Apache-2.0", "engines": { "node": ">=12.22" @@ -951,8 +897,6 @@ }, "node_modules/@humanwhocodes/retry": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", - "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", "license": "Apache-2.0", "engines": { "node": ">=18.18" @@ -964,8 +908,6 @@ }, "node_modules/@jest/schemas": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -976,8 +918,6 @@ }, "node_modules/@jest/types": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -991,80 +931,8 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -1077,8 +945,6 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1086,8 +952,6 @@ }, "node_modules/@jridgewell/set-array": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1095,8 +959,6 @@ }, "node_modules/@jridgewell/source-map": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -1104,15 +966,11 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "version": "1.5.0", "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1121,8 +979,6 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -1134,8 +990,6 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "license": "MIT", "engines": { "node": ">= 8" @@ -1143,8 +997,6 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -1156,8 +1008,6 @@ }, "node_modules/@radix-ui/primitive": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz", - "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" @@ -1165,8 +1015,6 @@ }, "node_modules/@radix-ui/react-compose-refs": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", - "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" @@ -1177,8 +1025,6 @@ }, "node_modules/@radix-ui/react-context": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz", - "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" @@ -1189,8 +1035,6 @@ }, "node_modules/@radix-ui/react-dialog": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.0.tgz", - "integrity": "sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -1216,8 +1060,6 @@ }, "node_modules/@radix-ui/react-dismissable-layer": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.0.tgz", - "integrity": "sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -1234,8 +1076,6 @@ }, "node_modules/@radix-ui/react-focus-guards": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz", - "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" @@ -1246,8 +1086,6 @@ }, "node_modules/@radix-ui/react-focus-scope": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.0.tgz", - "integrity": "sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -1262,8 +1100,6 @@ }, "node_modules/@radix-ui/react-id": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz", - "integrity": "sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -1275,8 +1111,6 @@ }, "node_modules/@radix-ui/react-portal": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.0.tgz", - "integrity": "sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -1289,8 +1123,6 @@ }, "node_modules/@radix-ui/react-presence": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", - "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -1304,8 +1136,6 @@ }, "node_modules/@radix-ui/react-primitive": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz", - "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -1318,8 +1148,6 @@ }, "node_modules/@radix-ui/react-slot": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz", - "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -1331,8 +1159,6 @@ }, "node_modules/@radix-ui/react-use-callback-ref": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", - "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" @@ -1343,8 +1169,6 @@ }, "node_modules/@radix-ui/react-use-controllable-state": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz", - "integrity": "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -1356,8 +1180,6 @@ }, "node_modules/@radix-ui/react-use-escape-keydown": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.0.tgz", - "integrity": "sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", @@ -1369,8 +1191,6 @@ }, "node_modules/@radix-ui/react-use-layout-effect": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", - "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" @@ -1381,8 +1201,6 @@ }, "node_modules/@rc-component/portal": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@rc-component/portal/-/portal-1.1.2.tgz", - "integrity": "sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.0", @@ -1399,8 +1217,6 @@ }, "node_modules/@rc-component/trigger": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.2.0.tgz", - "integrity": "sha512-QarBCji02YE9aRFhZgRZmOpXBj0IZutRippsVBv85sxvG4FGk/vRxwAlkn3MS9zK5mwbETd86mAVg2tKqTkdJA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.2", @@ -1420,8 +1236,6 @@ }, "node_modules/@react-spring/animated": { "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.3.tgz", - "integrity": "sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw==", "license": "MIT", "dependencies": { "@react-spring/shared": "~9.7.3", @@ -1433,8 +1247,6 @@ }, "node_modules/@react-spring/core": { "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.3.tgz", - "integrity": "sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ==", "license": "MIT", "dependencies": { "@react-spring/animated": "~9.7.3", @@ -1451,8 +1263,6 @@ }, "node_modules/@react-spring/shared": { "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.3.tgz", - "integrity": "sha512-NEopD+9S5xYyQ0pGtioacLhL2luflh6HACSSDUZOwLHoxA5eku1UPuqcJqjwSD6luKjjLfiLOspxo43FUHKKSA==", "license": "MIT", "dependencies": { "@react-spring/types": "~9.7.3" @@ -1463,14 +1273,10 @@ }, "node_modules/@react-spring/types": { "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.3.tgz", - "integrity": "sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw==", "license": "MIT" }, "node_modules/@react-spring/web": { "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.3.tgz", - "integrity": "sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg==", "license": "MIT", "dependencies": { "@react-spring/animated": "~9.7.3", @@ -1485,8 +1291,6 @@ }, "node_modules/@reactflow/background": { "version": "11.3.14", - "resolved": "https://registry.npmjs.org/@reactflow/background/-/background-11.3.14.tgz", - "integrity": "sha512-Gewd7blEVT5Lh6jqrvOgd4G6Qk17eGKQfsDXgyRSqM+CTwDqRldG2LsWN4sNeno6sbqVIC2fZ+rAUBFA9ZEUDA==", "license": "MIT", "dependencies": { "@reactflow/core": "11.11.4", @@ -1500,8 +1304,6 @@ }, "node_modules/@reactflow/controls": { "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@reactflow/controls/-/controls-11.2.14.tgz", - "integrity": "sha512-MiJp5VldFD7FrqaBNIrQ85dxChrG6ivuZ+dcFhPQUwOK3HfYgX2RHdBua+gx+40p5Vw5It3dVNp/my4Z3jF0dw==", "license": "MIT", "dependencies": { "@reactflow/core": "11.11.4", @@ -1515,8 +1317,6 @@ }, "node_modules/@reactflow/core": { "version": "11.11.4", - "resolved": "https://registry.npmjs.org/@reactflow/core/-/core-11.11.4.tgz", - "integrity": "sha512-H4vODklsjAq3AMq6Np4LE12i1I4Ta9PrDHuBR9GmL8uzTt2l2jh4CiQbEMpvMDcp7xi4be0hgXj+Ysodde/i7Q==", "license": "MIT", "dependencies": { "@types/d3": "^7.4.0", @@ -1536,8 +1336,6 @@ }, "node_modules/@reactflow/minimap": { "version": "11.7.14", - "resolved": "https://registry.npmjs.org/@reactflow/minimap/-/minimap-11.7.14.tgz", - "integrity": "sha512-mpwLKKrEAofgFJdkhwR5UQ1JYWlcAAL/ZU/bctBkuNTT1yqV+y0buoNVImsRehVYhJwffSWeSHaBR5/GJjlCSQ==", "license": "MIT", "dependencies": { "@reactflow/core": "11.11.4", @@ -1555,8 +1353,6 @@ }, "node_modules/@reactflow/node-resizer": { "version": "2.2.14", - "resolved": "https://registry.npmjs.org/@reactflow/node-resizer/-/node-resizer-2.2.14.tgz", - "integrity": "sha512-fwqnks83jUlYr6OHcdFEedumWKChTHRGw/kbCxj0oqBd+ekfs+SIp4ddyNU0pdx96JIm5iNFS0oNrmEiJbbSaA==", "license": "MIT", "dependencies": { "@reactflow/core": "11.11.4", @@ -1572,8 +1368,6 @@ }, "node_modules/@reactflow/node-toolbar": { "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@reactflow/node-toolbar/-/node-toolbar-1.3.14.tgz", - "integrity": "sha512-rbynXQnH/xFNu4P9H+hVqlEUafDCkEoCy0Dg9mG22Sg+rY/0ck6KkrAQrYrTgXusd+cEJOMK0uOOFCK2/5rSGQ==", "license": "MIT", "dependencies": { "@reactflow/core": "11.11.4", @@ -1587,14 +1381,10 @@ }, "node_modules/@sinclair/typebox": { "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "license": "MIT" }, "node_modules/@stylistic/eslint-plugin-js": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.3.0.tgz", - "integrity": "sha512-lQwoiYb0Fs6Yc5QS3uT8+T9CPKK2Eoxc3H8EnYJgM26v/DgtW+1lvy2WNgyBflU+ThShZaHm3a6CdD9QeKx23w==", "license": "MIT", "dependencies": { "@types/eslint": "^8.56.10", @@ -1611,8 +1401,6 @@ }, "node_modules/@stylistic/stylelint-plugin": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-2.1.2.tgz", - "integrity": "sha512-JsSqu0Y3vsX+PBl+DwULxC0cIv9C1yIcq1MXkx7pBOGtTqU26a75I8MPYMiEYvrsXgsKLi65xVgy1iLVSZquJA==", "license": "MIT", "dependencies": { "@csstools/css-parser-algorithms": "^2.6.1", @@ -1633,8 +1421,6 @@ }, "node_modules/@swc/core": { "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.6.13.tgz", - "integrity": "sha512-eailUYex6fkfaQTev4Oa3mwn0/e3mQU4H8y1WPuImYQESOQDtVrowwUGDSc19evpBbHpKtwM+hw8nLlhIsF+Tw==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -1671,8 +1457,6 @@ }, "node_modules/@swc/core-darwin-arm64": { "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.6.13.tgz", - "integrity": "sha512-SOF4buAis72K22BGJ3N8y88mLNfxLNprTuJUpzikyMGrvkuBFNcxYtMhmomO0XHsgLDzOJ+hWzcgjRNzjMsUcQ==", "cpu": [ "arm64" ], @@ -1685,166 +1469,16 @@ "node": ">=10" } }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.6.13.tgz", - "integrity": "sha512-AW8akFSC+tmPE6YQQvK9S2A1B8pjnXEINg+gGgw0KRUUXunvu1/OEOeC5L2Co1wAwhD7bhnaefi06Qi9AiwOag==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.6.13.tgz", - "integrity": "sha512-f4gxxvDXVUm2HLYXRd311mSrmbpQF2MZ4Ja6XCQz1hWAxXdhRl1gpnZ+LH/xIfGSwQChrtLLVrkxdYUCVuIjFg==", - "cpu": [ - "arm" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.6.13.tgz", - "integrity": "sha512-Nf/eoW2CbG8s+9JoLtjl9FByBXyQ5cjdBsA4efO7Zw4p+YSuXDgc8HRPC+E2+ns0praDpKNZtLvDtmF2lL+2Gg==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.6.13.tgz", - "integrity": "sha512-2OysYSYtdw79prJYuKIiux/Gj0iaGEbpS2QZWCIY4X9sGoETJ5iMg+lY+YCrIxdkkNYd7OhIbXdYFyGs/w5LDg==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.6.13.tgz", - "integrity": "sha512-PkR4CZYJNk5hcd2+tMWBpnisnmYsUzazI1O5X7VkIGFcGePTqJ/bWlfUIVVExWxvAI33PQFzLbzmN5scyIUyGQ==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.6.13.tgz", - "integrity": "sha512-OdsY7wryTxCKwGQcwW9jwWg3cxaHBkTTHi91+5nm7hFPpmZMz1HivJrWAMwVE7iXFw+M4l6ugB/wCvpYrUAAjA==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.6.13.tgz", - "integrity": "sha512-ap6uNmYjwk9M/+bFEuWRNl3hq4VqgQ/Lk+ID/F5WGqczNr0L7vEf+pOsRAn0F6EV+o/nyb3ePt8rLhE/wjHpPg==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.6.13.tgz", - "integrity": "sha512-IJ8KH4yIUHTnS/U1jwQmtbfQals7zWPG0a9hbEfIr4zI0yKzjd83lmtS09lm2Q24QBWOCFGEEbuZxR4tIlvfzA==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.6.13.tgz", - "integrity": "sha512-f6/sx6LMuEnbuxtiSL/EkR0Y6qUHFw1XVrh6rwzKXptTipUdOY+nXpKoh+1UsBm/r7H0/5DtOdrn3q5ZHbFZjQ==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, "node_modules/@swc/counter": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", "license": "Apache-2.0" }, "node_modules/@swc/helpers": { "version": "0.2.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.2.14.tgz", - "integrity": "sha512-wpCQMhf5p5GhNg2MmGKXzUNwxe7zRiCsmqYsamez2beP7mKPCSiu+BjZcdN95yYSzO857kr0VfQewmGpS77nqA==", "license": "MIT" }, "node_modules/@swc/types": { "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.9.tgz", - "integrity": "sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==", "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3" @@ -1852,8 +1486,6 @@ }, "node_modules/@tannin/compile": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/compile/-/compile-1.1.0.tgz", - "integrity": "sha512-n8m9eNDfoNZoxdvWiTfW/hSPhehzLJ3zW7f8E7oT6mCROoMNWCB4TYtv041+2FMAxweiE0j7i1jubQU4MEC/Gg==", "license": "MIT", "dependencies": { "@tannin/evaluate": "^1.2.0", @@ -1862,14 +1494,10 @@ }, "node_modules/@tannin/evaluate": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tannin/evaluate/-/evaluate-1.2.0.tgz", - "integrity": "sha512-3ioXvNowbO/wSrxsDG5DKIMxC81P0QrQTYai8zFNY+umuoHWRPbQ/TuuDEOju9E+jQDXmj6yI5GyejNuh8I+eg==", "license": "MIT" }, "node_modules/@tannin/plural-forms": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/plural-forms/-/plural-forms-1.1.0.tgz", - "integrity": "sha512-xl9R2mDZO/qiHam1AgMnAES6IKIg7OBhcXqy6eDsRCdXuxAFPcjrej9HMjyCLE0DJ/8cHf0i5OQTstuBRhpbHw==", "license": "MIT", "dependencies": { "@tannin/compile": "^1.1.0" @@ -1877,14 +1505,10 @@ }, "node_modules/@tannin/postfix": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz", - "integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw==", "license": "MIT" }, "node_modules/@trysound/sax": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "license": "ISC", "engines": { "node": ">=10.13.0" @@ -1892,8 +1516,6 @@ }, "node_modules/@types/d3": { "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", - "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", "license": "MIT", "dependencies": { "@types/d3-array": "*", @@ -1930,14 +1552,10 @@ }, "node_modules/@types/d3-array": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", "license": "MIT" }, "node_modules/@types/d3-axis": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", - "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", "license": "MIT", "dependencies": { "@types/d3-selection": "*" @@ -1945,8 +1563,6 @@ }, "node_modules/@types/d3-brush": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", - "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", "license": "MIT", "dependencies": { "@types/d3-selection": "*" @@ -1954,20 +1570,14 @@ }, "node_modules/@types/d3-chord": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", - "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", "license": "MIT" }, "node_modules/@types/d3-color": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", "license": "MIT" }, "node_modules/@types/d3-contour": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", - "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", "license": "MIT", "dependencies": { "@types/d3-array": "*", @@ -1976,20 +1586,14 @@ }, "node_modules/@types/d3-delaunay": { "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", "license": "MIT" }, "node_modules/@types/d3-dispatch": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", - "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", "license": "MIT" }, "node_modules/@types/d3-drag": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", - "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", "license": "MIT", "dependencies": { "@types/d3-selection": "*" @@ -1997,20 +1601,14 @@ }, "node_modules/@types/d3-dsv": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", - "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", "license": "MIT" }, "node_modules/@types/d3-ease": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", "license": "MIT" }, "node_modules/@types/d3-fetch": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", - "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", "license": "MIT", "dependencies": { "@types/d3-dsv": "*" @@ -2018,20 +1616,14 @@ }, "node_modules/@types/d3-force": { "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", - "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", "license": "MIT" }, "node_modules/@types/d3-format": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", - "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", "license": "MIT" }, "node_modules/@types/d3-geo": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", "license": "MIT", "dependencies": { "@types/geojson": "*" @@ -2039,14 +1631,10 @@ }, "node_modules/@types/d3-hierarchy": { "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", - "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", "license": "MIT" }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", "license": "MIT", "dependencies": { "@types/d3-color": "*" @@ -2054,32 +1642,22 @@ }, "node_modules/@types/d3-path": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", "license": "MIT" }, "node_modules/@types/d3-polygon": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", - "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", "license": "MIT" }, "node_modules/@types/d3-quadtree": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", - "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", "license": "MIT" }, "node_modules/@types/d3-random": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", - "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", "license": "MIT" }, "node_modules/@types/d3-scale": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", - "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", "license": "MIT", "dependencies": { "@types/d3-time": "*" @@ -2087,20 +1665,14 @@ }, "node_modules/@types/d3-scale-chromatic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", - "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", "license": "MIT" }, "node_modules/@types/d3-selection": { "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz", - "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==", "license": "MIT" }, "node_modules/@types/d3-shape": { "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", - "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", "license": "MIT", "dependencies": { "@types/d3-path": "*" @@ -2108,26 +1680,18 @@ }, "node_modules/@types/d3-time": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", - "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", "license": "MIT" }, "node_modules/@types/d3-time-format": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", - "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", "license": "MIT" }, "node_modules/@types/d3-timer": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", "license": "MIT" }, "node_modules/@types/d3-transition": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz", - "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==", "license": "MIT", "dependencies": { "@types/d3-selection": "*" @@ -2135,8 +1699,6 @@ }, "node_modules/@types/d3-zoom": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", - "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", "license": "MIT", "dependencies": { "@types/d3-interpolate": "*", @@ -2145,8 +1707,6 @@ }, "node_modules/@types/eslint": { "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", "license": "MIT", "dependencies": { "@types/estree": "*", @@ -2155,8 +1715,6 @@ }, "node_modules/@types/eslint-scope": { "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "license": "MIT", "dependencies": { "@types/eslint": "*", @@ -2165,20 +1723,14 @@ }, "node_modules/@types/estree": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "license": "MIT" }, "node_modules/@types/geojson": { "version": "7946.0.14", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", - "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", "license": "MIT" }, "node_modules/@types/glob": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "license": "MIT", "dependencies": { "@types/minimatch": "*", @@ -2187,26 +1739,18 @@ }, "node_modules/@types/gradient-parser": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@types/gradient-parser/-/gradient-parser-0.1.3.tgz", - "integrity": "sha512-XDbrTSBlQV9nxE1GiDL3FaOPy4G/KaJkhDutBX48Kg8CYZMBARyyDFGCWfWJn4pobmInmwud1xxH7VJMAr0CKQ==", "license": "MIT" }, "node_modules/@types/highlight-words-core": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/highlight-words-core/-/highlight-words-core-1.2.1.tgz", - "integrity": "sha512-9VZUA5omXBfn+hDxFjUDu1FOJTBM3LmvqfDey+Z6Aa8B8/JmF5SMj6FBrjfgJ/Q3YXOZd3qyTDfJyMZSs/wCUA==", "license": "MIT" }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" @@ -2214,8 +1758,6 @@ }, "node_modules/@types/istanbul-reports": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" @@ -2223,26 +1765,18 @@ }, "node_modules/@types/json-schema": { "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, "node_modules/@types/minimatch": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", "license": "MIT" }, "node_modules/@types/mousetrap": { "version": "1.6.15", - "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.15.tgz", - "integrity": "sha512-qL0hyIMNPow317QWW/63RvL1x5MVMV+Ru3NaY9f/CuEpCqrmb7WeuK2071ZY5hczOnm38qExWM2i2WtkXLSqFw==", "license": "MIT" }, "node_modules/@types/node": { "version": "20.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", - "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -2250,20 +1784,14 @@ }, "node_modules/@types/parse-json": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", "license": "MIT" }, "node_modules/@types/prop-types": { "version": "15.7.12", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", "license": "MIT" }, "node_modules/@types/react": { "version": "18.3.3", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", - "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -2272,8 +1800,6 @@ }, "node_modules/@types/react-dom": { "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "license": "MIT", "dependencies": { "@types/react": "*" @@ -2281,8 +1807,6 @@ }, "node_modules/@types/react-transition-group": { "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", - "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", "license": "MIT", "dependencies": { "@types/react": "*" @@ -2290,14 +1814,10 @@ }, "node_modules/@types/tinycolor2": { "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.6.tgz", - "integrity": "sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==", "license": "MIT" }, "node_modules/@types/yargs": { "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -2305,14 +1825,10 @@ }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "license": "MIT" }, "node_modules/@uidotdev/usehooks": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@uidotdev/usehooks/-/usehooks-2.4.1.tgz", - "integrity": "sha512-1I+RwWyS+kdv3Mv0Vmc+p0dPYH0DTRAo04HLyXReYBL9AeseDWUJyi4THuksBJcu9F0Pih69Ak150VDnqbVnXg==", "license": "MIT", "engines": { "node": ">=16" @@ -2324,14 +1840,10 @@ }, "node_modules/@use-gesture/core": { "version": "10.3.1", - "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz", - "integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==", "license": "MIT" }, "node_modules/@use-gesture/react": { "version": "10.3.1", - "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.1.tgz", - "integrity": "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==", "license": "MIT", "dependencies": { "@use-gesture/core": "10.3.1" @@ -2342,8 +1854,6 @@ }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", @@ -2352,26 +1862,18 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", @@ -2381,14 +1883,10 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", @@ -2399,8 +1897,6 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" @@ -2408,8 +1904,6 @@ }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" @@ -2417,14 +1911,10 @@ }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", @@ -2439,8 +1929,6 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", @@ -2452,8 +1940,6 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", @@ -2464,8 +1950,6 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", @@ -2478,8 +1962,6 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", @@ -2488,8 +1970,6 @@ }, "node_modules/@webpack-cli/configtest": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "license": "MIT", "engines": { "node": ">=14.15.0" @@ -2501,8 +1981,6 @@ }, "node_modules/@webpack-cli/info": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "license": "MIT", "engines": { "node": ">=14.15.0" @@ -2514,8 +1992,6 @@ }, "node_modules/@webpack-cli/serve": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "license": "MIT", "engines": { "node": ">=14.15.0" @@ -2532,8 +2008,6 @@ }, "node_modules/@wordpress/a11y": { "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.58.0.tgz", - "integrity": "sha512-7NnJKl4+pxP6kV/jvXaJcZZCGzW7zaj6YeMnyjUd96cH4ta1ykBIveWgejerFOGsbK+88FnStcxSFj+dbDXs/w==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -2546,8 +2020,6 @@ }, "node_modules/@wordpress/a11y/node_modules/@wordpress/dom-ready": { "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.58.0.tgz", - "integrity": "sha512-sDgRPjNBToRKgYrpwvMRv2Yc7/17+sp8hm/rRnbubwb+d/DbGkK4Tc/r4sNLSZCqUAtcBXq9uk1lzvhge3QUSg==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -2558,8 +2030,6 @@ }, "node_modules/@wordpress/api-fetch": { "version": "6.55.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.55.0.tgz", - "integrity": "sha512-1HrCUsJdeRY5Y0IjplotINwqMRO81e7O7VhBScuKk7iOuDm/E1ioKv2uLGnPNWziYu+Zf025byxOqVzXDyM2gw==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -2572,8 +2042,6 @@ }, "node_modules/@wordpress/autop": { "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.58.0.tgz", - "integrity": "sha512-RsdUV57A+DTJGU3slq/S9vTOtVkatnT1YyGIK3UDKaEhXkvBPtLTWwd3WR13GCfjFZ5XupH9FAGUQFkOve0eKQ==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -2584,8 +2052,6 @@ }, "node_modules/@wordpress/blob": { "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.58.0.tgz", - "integrity": "sha512-6L3WqbOWEGFOSs3vLMwJ83YScggCiJ9NvZj1kC7mgeiP302UP2Fxkt4KlfjeTsD350XcvakkD/57wRkHXd819Q==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -2596,8 +2062,6 @@ }, "node_modules/@wordpress/block-editor": { "version": "12.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-12.26.0.tgz", - "integrity": "sha512-wkBP37hB6Fb1AaUIjry6S3LlFrjnVq3Seg8ktZPLozDv2cyODs/ym8+wjv8TR/aiuSWdk0dZZywYMNc+vHEfEg==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -2657,8 +2121,6 @@ }, "node_modules/@wordpress/block-serialization-default-parser": { "version": "4.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.58.0.tgz", - "integrity": "sha512-++fowmFEJC+1SwiCGuLPO9k+g3rgI2SCAA/p8/Bc1rNgnKB+rowzmQvSIIlRpcUkmOxHOrH5uruOEX27Ksg6uw==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -2669,8 +2131,6 @@ }, "node_modules/@wordpress/blocks": { "version": "12.35.0", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-12.35.0.tgz", - "integrity": "sha512-BwjMca4aGuttu3C0nLLpt6MBg6IBCogA6ulGTyg+0YdKnwac52k+2wfersqAem8AFgG0hTDwrIpLsWLxpF9dtg==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -2710,8 +2170,6 @@ }, "node_modules/@wordpress/commands": { "version": "0.29.0", - "resolved": "https://registry.npmjs.org/@wordpress/commands/-/commands-0.29.0.tgz", - "integrity": "sha512-HqTrYfQw/5cdT2hPgmuKW6gugnt1Pqtg9zjRHUa+D4ME7mjR4dYQoHRgnFM+hm8OOuEZRVBsa1kYO3t3041Jew==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -2735,8 +2193,6 @@ }, "node_modules/@wordpress/components": { "version": "27.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-27.6.0.tgz", - "integrity": "sha512-f+fXENkgrPs5GLo2yu9fEAdVX0KriEatRcjDUyw0+DbNbJR62sCdDtGdhJRW4jPUUoUowxaGO0y4+jvQWxnbyg==", "license": "GPL-2.0-or-later", "dependencies": { "@ariakit/react": "^0.3.12", @@ -2797,8 +2253,6 @@ }, "node_modules/@wordpress/compose": { "version": "6.35.0", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-6.35.0.tgz", - "integrity": "sha512-PfruhCxxxJokDQHc2YBgerEiHV7BIxQk9g5vU4/f9X/0PBQWUTuxOzSFcAba03vnjfAgtPTSMp50T50hcJwXfA==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -2824,8 +2278,6 @@ }, "node_modules/@wordpress/data": { "version": "9.28.0", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-9.28.0.tgz", - "integrity": "sha512-EDPpZdkngdoW7EMzPpGj0BmNcr7syJO67pgTODtN/4XFIdYL2RKzFyn3nlLBKhX17UsE/ALq9WdijacH4QJ9qw==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -2853,8 +2305,6 @@ }, "node_modules/@wordpress/date": { "version": "4.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.58.0.tgz", - "integrity": "sha512-yFT7DU0H9W0lsDytMaVMmjho08X1LeBMIQMppxdtKB04Ujx58hVh7gtunOsstUQ7pVg23nE2eLaVfx5JOdjzAw==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -2868,8 +2318,6 @@ }, "node_modules/@wordpress/dependency-extraction-webpack-plugin": { "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-5.9.0.tgz", - "integrity": "sha512-hXbCkbG1XES47t7hFSETRrLfaRSPyQPlCnhlCx7FfhYFD0wh1jVArApXX5dD+A6wTrayXX/a16MpfaNqE662XA==", "license": "GPL-2.0-or-later", "dependencies": { "json2php": "^0.0.7" @@ -2883,8 +2331,6 @@ }, "node_modules/@wordpress/deprecated": { "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.58.0.tgz", - "integrity": "sha512-knweE2lLEUxWRr6A48sHiO0ww5pPybGe2NVIZVq/y7EaYCMdpy6gYA0ZdVqMKZvtxKKqicJfwigcn+hinsTvUQ==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -2896,8 +2342,6 @@ }, "node_modules/@wordpress/dom": { "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.58.0.tgz", - "integrity": "sha512-t3xSr/nqekj2qwUGRAqSeGx6116JOBxzI+VBiUfZrjGEnuyKdLelXDEeYtcwbb7etMkj/6F60/NB7GTl5IwizQ==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -2908,9 +2352,7 @@ } }, "node_modules/@wordpress/dom-ready": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-4.2.0.tgz", - "integrity": "sha512-1rD9vcwVy7s+yGbe8DuDkBpjvA/PJtY2DnUgyHIedC/YonlswalBSiFWGZuTX5QyocdffBAWiUlvebyN4TNtOw==", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -2922,8 +2364,6 @@ }, "node_modules/@wordpress/element": { "version": "5.35.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-5.35.0.tgz", - "integrity": "sha512-puswpGcIdS+0A2g28uHriMkZqqRCmzFczue5Tk99VNtzBdehyk7Ae+DZ4xw5yT6GqYai8NTqv6MRwCB78uh5Mw==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -2941,8 +2381,6 @@ }, "node_modules/@wordpress/escape-html": { "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.58.0.tgz", - "integrity": "sha512-9YJXMNfzkrhHEVP1jFEhgijbZqW8Mt3NHIMZjIQoWtBf7QE86umpYpGGBXzYC0YlpGTRGzZTBwYaqFKxjeaSgA==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -2953,8 +2391,6 @@ }, "node_modules/@wordpress/hooks": { "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.58.0.tgz", - "integrity": "sha512-9LB0ZHnZRQlORttux9t/xbAskF+dk2ujqzPGsVzc92mSKpQP3K2a5Wy74fUnInguB1vLUNHT6nrNdkVom5qX1Q==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -2965,8 +2401,6 @@ }, "node_modules/@wordpress/html-entities": { "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.58.0.tgz", - "integrity": "sha512-FU7b6QZdwTCuLKq6wCl0IZqqOMcMRxMcekVVytzTse7hYk9dvL1qQL/U4eQ/CNyKqiT9u7fb5NKTQILOzoolVQ==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -2977,8 +2411,6 @@ }, "node_modules/@wordpress/i18n": { "version": "4.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.58.0.tgz", - "integrity": "sha512-VfvS3BWv/RDjRKD6PscIcvYfWKnGJcI/DEqyDgUMhxCM6NRwoL478CsUKTiGJIymeyRodNRfprdcF086DpGKYw==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -2997,8 +2429,6 @@ }, "node_modules/@wordpress/icons": { "version": "9.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.49.0.tgz", - "integrity": "sha512-Z8F+ledkfkcKDuS1c/RkM0dEWdfv2AXs6bCgey89p0atJSscf7qYbMJR9zE5rZ5aqXyFfV0DAFKJEgayNqneNQ==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -3011,8 +2441,6 @@ }, "node_modules/@wordpress/is-shallow-equal": { "version": "4.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.58.0.tgz", - "integrity": "sha512-NH2lbXo/6ix1t4Zu9UBXpXNtoLwSaYmIRSyDH34XNb0ic8a7yjEOhYWVW3LTfSCv9dJVyxlM5TJPtL85q7LdeQ==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -3023,8 +2451,6 @@ }, "node_modules/@wordpress/keyboard-shortcuts": { "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-4.35.0.tgz", - "integrity": "sha512-DR+fWhHt67GQT6PlrfMBpSmEYNCep+XvMYA55cnxoQ80LIFN5N5bkr4VeYdbrSatuOSRACm+6cfoQSIMQbdmjw==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -3041,8 +2467,6 @@ }, "node_modules/@wordpress/keycodes": { "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.58.0.tgz", - "integrity": "sha512-Q/LRKpx8ndzuHlkxSQ2BD+NTYYKQPIneNNMng8hTAfyU7RFwXpqj06HpeOFGh4XIdPKCs/8hmucoLJRmmLmZJA==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -3054,8 +2478,6 @@ }, "node_modules/@wordpress/notices": { "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-4.26.0.tgz", - "integrity": "sha512-Lu98xQdtZHgC3d32IFalZbOiIu8aRFWlEQXXfRutD7EhXXp6FIXvnvc054700/Dk1mg9P/bWd0zm/cigkXgfkA==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -3071,8 +2493,6 @@ }, "node_modules/@wordpress/preferences": { "version": "3.35.0", - "resolved": "https://registry.npmjs.org/@wordpress/preferences/-/preferences-3.35.0.tgz", - "integrity": "sha512-OFzSEiI8Kk5YJtyPFnAauRHXtjuTJHkWapvcagpMoTP0WvwBwGfr5AeIIgV2ONtA3edrfMGgmrJUK7pd61K/1Q==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -3097,8 +2517,6 @@ }, "node_modules/@wordpress/primitives": { "version": "3.56.0", - "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.56.0.tgz", - "integrity": "sha512-NXBq1ODjl6inMWx/l7KCbATcjdoeIOqYeL9i9alqdAfWeKx1EH9PIvKWylIkqZk7erXxCxldiRkuyjTtwjNBxw==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -3111,8 +2529,6 @@ }, "node_modules/@wordpress/priority-queue": { "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.58.0.tgz", - "integrity": "sha512-W+qCS8HJWsXG8gE6yK/H/IObowcghPrQMM3cQHtfd/U05yFNU1Bd/fbj3AO1fVRztktS47lIpi9m3ll1evPEHA==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -3124,8 +2540,6 @@ }, "node_modules/@wordpress/private-apis": { "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-0.40.0.tgz", - "integrity": "sha512-ZX/9Y8eA3C3K6LOj32bHFj+9tNV819CBd8+chqMmmlvQRcTngiuXbMbnSdZnnAr1gLQgNpH9PJ60dIwJnGSEtQ==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -3136,8 +2550,6 @@ }, "node_modules/@wordpress/redux-routine": { "version": "4.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.58.0.tgz", - "integrity": "sha512-r0mMWFeJr93yPy2uY/M5+gdUUYj0Zu8+21OFFb5hyQ0z7UHIa3IdgQxzCaTbV1LDA1ZYJrjHeCnA6s4gNHjA2Q==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -3154,8 +2566,6 @@ }, "node_modules/@wordpress/rich-text": { "version": "6.35.0", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-6.35.0.tgz", - "integrity": "sha512-h6/XftSqo9UQZebuNZyLfOVu+ButBLITW/BILsKeJhSpmM19VNdz8UhVGLp+xQPE+/GPCIMJrhhqipISDfc2Ig==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -3178,8 +2588,6 @@ }, "node_modules/@wordpress/shortcode": { "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.58.0.tgz", - "integrity": "sha512-yM3Y25XqLfz/X6xXowXbrTvk+tslKeALNNESI5nGt1X7wWPsYQDOqyBb1HT9TglSLFgWYlQlNtgEbz07dEiDgQ==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -3191,8 +2599,6 @@ }, "node_modules/@wordpress/style-engine": { "version": "1.41.0", - "resolved": "https://registry.npmjs.org/@wordpress/style-engine/-/style-engine-1.41.0.tgz", - "integrity": "sha512-aM5bbJn6m8SHRotCoh/fSGuIB0MQJoVFBjpzIDoUDQ1KlO7CbY+fj9daDV1FZPMNv0h0ZEFWZ+y7Gv/CERypMA==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -3204,8 +2610,6 @@ }, "node_modules/@wordpress/token-list": { "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.58.0.tgz", - "integrity": "sha512-xzNGzAZ87GERq7rZvZjMv742nj37tSLFBb8+c7oaLdpUpfn8YTaXQacvphdN2jmtfHvEZHivW7hErwqF9eQW/A==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -3216,8 +2620,6 @@ }, "node_modules/@wordpress/undo-manager": { "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-0.18.0.tgz", - "integrity": "sha512-upbzPEToa095XG+2JXLHaolF1LfXEMFS0lNMYV37myoUS+eZ7/tl9Gx+yU2+OqWy57TMwx33NlWUX/n+ynzPRw==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -3229,8 +2631,6 @@ }, "node_modules/@wordpress/url": { "version": "3.59.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.59.0.tgz", - "integrity": "sha512-GxvoMjYCav0w4CiX0i0h3qflrE/9rhLIZg5aPCQjbrBdwTxYR3Exfw0IJYcmVaTKXQOUU8fOxlDxULsbLmKe9w==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -3242,8 +2642,6 @@ }, "node_modules/@wordpress/warning": { "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.58.0.tgz", - "integrity": "sha512-9bZlORhyMY2nbWozeyC5kqJsFzEPP4DCLhGmjtbv+YWGHttUrxUZEfrKdqO+rUODA8rP5zeIly1nCQOUnkw4Lg==", "license": "GPL-2.0-or-later", "engines": { "node": ">=12" @@ -3251,8 +2649,6 @@ }, "node_modules/@wordpress/wordcount": { "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.58.0.tgz", - "integrity": "sha512-cxmOOh8d4VeIC3B9HcqhlTQePmNkNrPeHQLj6xWHfC0Elflj+kYAjsTwkjVQ3tBMC4+mQzva1O8tFSVh02gs7w==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -3263,20 +2659,14 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "license": "Apache-2.0" }, "node_modules/acorn": { "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -3287,8 +2677,6 @@ }, "node_modules/acorn-import-attributes": { "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "license": "MIT", "peerDependencies": { "acorn": "^8" @@ -3296,8 +2684,6 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -3305,8 +2691,6 @@ }, "node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -3321,8 +2705,6 @@ }, "node_modules/ajv-formats": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "license": "MIT", "dependencies": { "ajv": "^8.0.0" @@ -3337,31 +2719,25 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "version": "8.17.1", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "node_modules/ajv-formats/node_modules/ajv/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, "node_modules/ajv-keywords": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" @@ -3369,29 +2745,26 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", @@ -3403,14 +2776,10 @@ }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, "node_modules/aria-hidden": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" @@ -3420,21 +2789,14 @@ } }, "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "version": "2.1.0", "license": "MIT", - "dependencies": { - "array-uniq": "^1.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/array-uniq": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -3442,8 +2804,6 @@ }, "node_modules/astral-regex": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "license": "MIT", "engines": { "node": ">=8" @@ -3451,8 +2811,6 @@ }, "node_modules/autoprefixer": { "version": "10.4.19", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", - "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", "funding": [ { "type": "opencollective", @@ -3488,14 +2846,10 @@ }, "node_modules/autosize": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/autosize/-/autosize-6.0.1.tgz", - "integrity": "sha512-f86EjiUKE6Xvczc4ioP1JBlWG7FKrE13qe/DxBCpe8GCipCq2nFw73aO8QEBKHfSbYGDN5eB9jXWKen7tspDqQ==", "license": "MIT" }, "node_modules/babel-loader": { "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "license": "MIT", "dependencies": { "find-cache-dir": "^4.0.0", @@ -3509,10 +2863,53 @@ "webpack": ">=5" } }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-loader/node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/babel-loader/node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/babel-loader/node_modules/schema-utils/node_modules/ajv/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, "node_modules/babel-plugin-macros": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", @@ -3524,16 +2921,26 @@ "npm": ">=6" } }, + "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "version": "2.0.0", "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "license": "MIT", "engines": { "node": "*" @@ -3541,8 +2948,6 @@ }, "node_modules/binary-extensions": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "license": "MIT", "engines": { "node": ">=8" @@ -3553,24 +2958,22 @@ }, "node_modules/boolbase": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "license": "ISC" }, "node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "node_modules/brace-expansion/node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, "node_modules/braces": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -3580,9 +2983,7 @@ } }, "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "version": "4.23.2", "funding": [ { "type": "opencollective", @@ -3599,10 +3000,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -3613,14 +3014,10 @@ }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "license": "MIT", "engines": { "node": ">=6" @@ -3628,8 +3025,6 @@ }, "node_modules/camel-case": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", @@ -3638,8 +3033,6 @@ }, "node_modules/camelcase": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "license": "MIT", "engines": { "node": ">=6" @@ -3647,8 +3040,6 @@ }, "node_modules/caniuse-api": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "license": "MIT", "dependencies": { "browserslist": "^4.0.0", @@ -3658,9 +3049,7 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001640", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz", - "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==", + "version": "1.0.30001642", "funding": [ { "type": "opencollective", @@ -3679,8 +3068,6 @@ }, "node_modules/capital-case": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", "license": "MIT", "dependencies": { "no-case": "^3.0.4", @@ -3689,32 +3076,31 @@ } }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, "node_modules/change-case": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", "license": "MIT", "dependencies": { "camel-case": "^4.1.2", @@ -3733,8 +3119,6 @@ }, "node_modules/choices.js": { "version": "10.2.0", - "resolved": "https://registry.npmjs.org/choices.js/-/choices.js-10.2.0.tgz", - "integrity": "sha512-8PKy6wq7BMjNwDTZwr3+Zry6G2+opJaAJDDA/j3yxvqSCnvkKe7ZIFfIyOhoc7htIWFhsfzF9tJpGUATcpUtPg==", "license": "MIT", "dependencies": { "deepmerge": "^4.2.2", @@ -3744,8 +3128,6 @@ }, "node_modules/chokidar": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -3768,8 +3150,6 @@ }, "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -3780,8 +3160,6 @@ }, "node_modules/chrome-trace-event": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "license": "MIT", "engines": { "node": ">=6.0" @@ -3789,8 +3167,6 @@ }, "node_modules/ci-info": { "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "funding": [ { "type": "github", @@ -3804,20 +3180,14 @@ }, "node_modules/classcat": { "version": "5.0.5", - "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.5.tgz", - "integrity": "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==", "license": "MIT" }, "node_modules/classnames": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", - "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", "license": "MIT" }, "node_modules/clean-webpack-plugin": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", "license": "MIT", "dependencies": { "del": "^4.1.1" @@ -3831,8 +3201,6 @@ }, "node_modules/clipboard": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", - "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", "license": "MIT", "dependencies": { "good-listener": "^1.2.2", @@ -3842,8 +3210,6 @@ }, "node_modules/cliui": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "license": "ISC", "dependencies": { "string-width": "^3.1.0", @@ -3851,60 +3217,48 @@ "wrap-ansi": "^5.1.0" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/cliui/node_modules/string-width": { + "version": "3.1.0", "license": "MIT", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, "engines": { "node": ">=6" } }, - "node_modules/cliui/node_modules/emoji-regex": { + "node_modules/cliui/node_modules/string-width/node_modules/emoji-regex": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "license": "MIT" }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "node_modules/cliui/node_modules/string-width/node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/cliui/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", "license": "MIT", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "ansi-regex": "^4.1.0" }, "engines": { "node": ">=6" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/cliui/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.1", "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, "engines": { "node": ">=6" } }, "node_modules/clone-deep": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", @@ -3917,8 +3271,6 @@ }, "node_modules/clone-deep/node_modules/is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "license": "MIT", "dependencies": { "isobject": "^3.0.1" @@ -3929,8 +3281,6 @@ }, "node_modules/clsx": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "license": "MIT", "engines": { "node": ">=6" @@ -3938,8 +3288,6 @@ }, "node_modules/cmdk": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-0.2.1.tgz", - "integrity": "sha512-U6//9lQ6JvT47+6OF6Gi8BvkxYQ8SCRRSKIJkthIMsFsLZRG0cKvTtuTaefyIKMQb8rvvXy0wGdpTNq/jPtm+g==", "license": "MIT", "dependencies": { "@radix-ui/react-dialog": "1.0.0" @@ -3950,68 +3298,51 @@ } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "version": "1.1.4", "license": "MIT" }, "node_modules/colord": { "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "license": "MIT" }, "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "10.0.1", "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=14" } }, "node_modules/common-path-prefix": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", "license": "ISC" }, "node_modules/compute-scroll-into-view": { "version": "1.0.20", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", - "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==", "license": "MIT" }, "node_modules/computed-style": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/computed-style/-/computed-style-0.1.4.tgz", - "integrity": "sha512-WpAmaKbMNmS3OProfHIdJiNleNJdgUrJfbKArXua28QF7+0CoZjlLn0lp6vlc+dl5r2/X9GQiQRQQU4BzSa69w==" + "version": "0.1.4" }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, "node_modules/constant-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", "license": "MIT", "dependencies": { "no-case": "^3.0.4", @@ -4021,15 +3352,11 @@ }, "node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "license": "MIT", "peer": true }, "node_modules/core-js": { "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", - "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", "hasInstallScript": true, "license": "MIT", "funding": { @@ -4038,25 +3365,31 @@ } }, "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "9.0.0", "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -4069,8 +3402,6 @@ }, "node_modules/css-declaration-sorter": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", - "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", "license": "ISC", "engines": { "node": "^14 || ^16 || >=18" @@ -4081,8 +3412,6 @@ }, "node_modules/css-functions-list": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", - "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", "license": "MIT", "engines": { "node": ">=12 || >=16" @@ -4090,8 +3419,6 @@ }, "node_modules/css-loader": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", - "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", @@ -4123,22 +3450,8 @@ } } }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/css-minimizer-webpack-plugin": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-7.0.0.tgz", - "integrity": "sha512-niy66jxsQHqO+EYbhPuIhqRQ1mNcNVUHrMnkzzir9kFOERJUaQDDRhh7dKDz33kBpkWMF9M8Vx0QlDbc5AHOsw==", "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", @@ -4179,10 +3492,66 @@ } } }, + "node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker": { + "version": "29.7.0", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils/node_modules/ajv/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, "node_modules/css-select": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", @@ -4197,8 +3566,6 @@ }, "node_modules/css-tree": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "license": "MIT", "dependencies": { "mdn-data": "2.0.30", @@ -4210,8 +3577,6 @@ }, "node_modules/css-what": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "license": "BSD-2-Clause", "engines": { "node": ">= 6" @@ -4222,8 +3587,6 @@ }, "node_modules/cssesc": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "license": "MIT", "bin": { "cssesc": "bin/cssesc" @@ -4234,8 +3597,6 @@ }, "node_modules/cssnano": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.4.tgz", - "integrity": "sha512-rQgpZra72iFjiheNreXn77q1haS2GEy69zCMbu4cpXCFPMQF+D4Ik5V7ktMzUF/sA7xCIgcqHwGPnCD+0a1vHg==", "license": "MIT", "dependencies": { "cssnano-preset-default": "^7.0.4", @@ -4254,8 +3615,6 @@ }, "node_modules/cssnano-preset-default": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.4.tgz", - "integrity": "sha512-jQ6zY9GAomQX7/YNLibMEsRZguqMUGuupXcEk2zZ+p3GUxwCAsobqPYE62VrJ9qZ0l9ltrv2rgjwZPBIFIjYtw==", "license": "MIT", "dependencies": { "browserslist": "^4.23.1", @@ -4298,8 +3657,6 @@ }, "node_modules/cssnano-utils": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.0.tgz", - "integrity": "sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==", "license": "MIT", "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" @@ -4310,8 +3667,6 @@ }, "node_modules/csso": { "version": "5.0.5", - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "license": "MIT", "dependencies": { "css-tree": "~2.2.0" @@ -4323,8 +3678,6 @@ }, "node_modules/csso/node_modules/css-tree": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", - "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "license": "MIT", "dependencies": { "mdn-data": "2.0.28", @@ -4335,22 +3688,16 @@ "npm": ">=7.0.0" } }, - "node_modules/csso/node_modules/mdn-data": { + "node_modules/csso/node_modules/css-tree/node_modules/mdn-data": { "version": "2.0.28", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "license": "CC0-1.0" }, "node_modules/csstype": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, "node_modules/d3-color": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "license": "ISC", "engines": { "node": ">=12" @@ -4358,8 +3705,6 @@ }, "node_modules/d3-dispatch": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", "license": "ISC", "engines": { "node": ">=12" @@ -4367,8 +3712,6 @@ }, "node_modules/d3-drag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", @@ -4380,8 +3723,6 @@ }, "node_modules/d3-ease": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", "license": "BSD-3-Clause", "engines": { "node": ">=12" @@ -4389,8 +3730,6 @@ }, "node_modules/d3-interpolate": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "license": "ISC", "dependencies": { "d3-color": "1 - 3" @@ -4401,8 +3740,6 @@ }, "node_modules/d3-selection": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "license": "ISC", "engines": { "node": ">=12" @@ -4410,8 +3747,6 @@ }, "node_modules/d3-timer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "license": "ISC", "engines": { "node": ">=12" @@ -4419,8 +3754,6 @@ }, "node_modules/d3-transition": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", "license": "ISC", "dependencies": { "d3-color": "1 - 3", @@ -4438,8 +3771,6 @@ }, "node_modules/d3-zoom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", @@ -4454,8 +3785,6 @@ }, "node_modules/date-fns": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", - "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", "license": "MIT", "funding": { "type": "github", @@ -4464,8 +3793,6 @@ }, "node_modules/debug": { "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -4481,8 +3808,6 @@ }, "node_modules/decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4490,14 +3815,10 @@ }, "node_modules/deep-is": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4505,8 +3826,6 @@ }, "node_modules/del": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", "license": "MIT", "dependencies": { "@types/glob": "^7.1.1", @@ -4521,22 +3840,65 @@ "node": ">=6" } }, + "node_modules/del/node_modules/globby": { + "version": "6.1.0", + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby/node_modules/array-union": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby/node_modules/glob": { + "version": "7.2.3", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/delegate": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", "license": "MIT" }, "node_modules/detect-node-es": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", "license": "MIT" }, "node_modules/diff": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -4544,8 +3906,6 @@ }, "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "license": "MIT", "dependencies": { "path-type": "^4.0.0" @@ -4556,8 +3916,6 @@ }, "node_modules/dom-helpers": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.7", @@ -4566,8 +3924,6 @@ }, "node_modules/dom-serializer": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", @@ -4580,8 +3936,6 @@ }, "node_modules/domelementtype": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { "type": "github", @@ -4592,8 +3946,6 @@ }, "node_modules/domhandler": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" @@ -4607,8 +3959,6 @@ }, "node_modules/domutils": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", @@ -4621,8 +3971,6 @@ }, "node_modules/dot-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "license": "MIT", "dependencies": { "no-case": "^3.0.4", @@ -4631,8 +3979,6 @@ }, "node_modules/downshift": { "version": "6.1.12", - "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.12.tgz", - "integrity": "sha512-7XB/iaSJVS4T8wGFT3WRXmSF1UlBHAA40DshZtkrIscIN+VC+Lh363skLxFTvJwtNgHxAMDGEHT4xsyQFWL+UA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.14.8", @@ -4647,14 +3993,10 @@ }, "node_modules/downshift/node_modules/react-is": { "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "license": "MIT" }, "node_modules/dropzone": { "version": "6.0.0-beta.2", - "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-6.0.0-beta.2.tgz", - "integrity": "sha512-k44yLuFFhRk53M8zP71FaaNzJYIzr99SKmpbO/oZKNslDjNXQsBTdfLs+iONd0U0L94zzlFzRnFdqbLcs7h9fQ==", "license": "MIT", "dependencies": { "@swc/helpers": "^0.2.13", @@ -4662,21 +4004,15 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.818", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.818.tgz", - "integrity": "sha512-eGvIk2V0dGImV9gWLq8fDfTTsCAeMDwZqEPMr+jMInxZdnp9Us8UpovYpRCf9NQ7VOFgrN2doNSgvISbsbNpxA==", + "version": "1.4.828", "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "license": "MIT", "engines": { "node": ">= 4" @@ -4684,8 +4020,6 @@ }, "node_modules/encoding": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "license": "MIT", "dependencies": { "iconv-lite": "^0.6.2" @@ -4693,8 +4027,6 @@ }, "node_modules/enhanced-resolve": { "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -4706,8 +4038,6 @@ }, "node_modules/entities": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -4718,8 +4048,6 @@ }, "node_modules/env-paths": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "license": "MIT", "engines": { "node": ">=6" @@ -4727,8 +4055,6 @@ }, "node_modules/envinfo": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", - "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", "license": "MIT", "bin": { "envinfo": "dist/cli.js" @@ -4739,14 +4065,10 @@ }, "node_modules/equivalent-key-map": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/equivalent-key-map/-/equivalent-key-map-0.2.2.tgz", - "integrity": "sha512-xvHeyCDbZzkpN4VHQj/n+j2lOwL0VWszG30X4cOrc9Y7Tuo2qCdZK/0AMod23Z5dCtNUbaju6p0rwOhHUk05ew==", "license": "MIT" }, "node_modules/error-ex": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -4754,14 +4076,10 @@ }, "node_modules/es-module-lexer": { "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "license": "MIT" }, "node_modules/escalade": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "license": "MIT", "engines": { "node": ">=6" @@ -4769,8 +4087,6 @@ }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "license": "MIT", "engines": { "node": ">=10" @@ -4780,16 +4096,14 @@ } }, "node_modules/eslint": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.6.0.tgz", - "integrity": "sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==", + "version": "9.7.0", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", + "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.17.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.6.0", + "@eslint/js": "9.7.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -4798,7 +4112,7 @@ "cross-spawn": "^7.0.2", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.0.1", + "eslint-scope": "^8.0.2", "eslint-visitor-keys": "^4.0.0", "espree": "^10.1.0", "esquery": "^1.5.0", @@ -4831,25 +4145,18 @@ } }, "node_modules/eslint-scope": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", - "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", + "version": "5.1.1", "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "estraverse": "^4.1.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8.0.0" } }, "node_modules/eslint-visitor-keys": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", - "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4858,80 +4165,29 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "8.0.2", + "license": "BSD-2-Clause", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/eslint/node_modules/eslint-scope/node_modules/estraverse": { + "version": "5.3.0", + "license": "BSD-2-Clause", "engines": { - "node": ">=8" + "node": ">=4.0" } }, "node_modules/espree": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", - "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.12.0", @@ -4946,9 +4202,7 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" @@ -4957,10 +4211,15 @@ "node": ">=0.10" } }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" @@ -4969,10 +4228,15 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { + "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -4980,8 +4244,6 @@ }, "node_modules/esutils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" @@ -4989,8 +4251,6 @@ }, "node_modules/events": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "license": "MIT", "engines": { "node": ">=0.8.x" @@ -4998,14 +4258,10 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -5020,8 +4276,6 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -5032,20 +4286,18 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.1", "license": "MIT" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "license": "MIT", "engines": { "node": ">= 4.9.1" @@ -5053,8 +4305,6 @@ }, "node_modules/fastq": { "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -5062,8 +4312,6 @@ }, "node_modules/file-entry-cache": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "license": "MIT", "dependencies": { "flat-cache": "^4.0.0" @@ -5074,8 +4322,6 @@ }, "node_modules/file-loader": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", @@ -5092,28 +4338,8 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/fill-range": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -5124,8 +4350,6 @@ }, "node_modules/find-cache-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "license": "MIT", "dependencies": { "common-path-prefix": "^3.0.0", @@ -5138,16 +4362,95 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir/node_modules/find-up": { + "version": "6.3.0", + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate/node_modules/p-limit": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate/node_modules/p-limit/node_modules/yocto-queue": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir/node_modules/find-up/node_modules/path-exists": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/find-root": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", "license": "MIT" }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "license": "MIT", "dependencies": { "locate-path": "^6.0.0", @@ -5162,8 +4465,6 @@ }, "node_modules/flat": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "license": "BSD-3-Clause", "bin": { "flat": "cli.js" @@ -5171,8 +4472,6 @@ }, "node_modules/flat-cache": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "license": "MIT", "dependencies": { "flatted": "^3.2.9", @@ -5184,20 +4483,14 @@ }, "node_modules/flatpickr": { "version": "4.6.13", - "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.13.tgz", - "integrity": "sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==", "license": "MIT" }, "node_modules/flatted": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "license": "ISC" }, "node_modules/fraction.js": { "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "license": "MIT", "engines": { "node": "*" @@ -5208,9 +4501,7 @@ } }, "node_modules/framer-motion": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.2.13.tgz", - "integrity": "sha512-AyIeegfkXlkX1lWEudRYsJlC+0A59cE8oFK9IsN9bUQzxLwcvN3AEaYaznkELiWlHC7a0eD7pxsYQo7BC05S5A==", + "version": "11.3.2", "license": "MIT", "dependencies": { "tslib": "^2.4.0" @@ -5234,15 +4525,10 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ @@ -5254,8 +4540,6 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5263,8 +4547,6 @@ }, "node_modules/fuse.js": { "version": "6.6.2", - "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz", - "integrity": "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==", "license": "Apache-2.0", "engines": { "node": ">=10" @@ -5272,8 +4554,6 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "license": "MIT", "peer": true, "engines": { @@ -5282,8 +4562,6 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -5291,8 +4569,6 @@ }, "node_modules/get-nonce": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "license": "MIT", "engines": { "node": ">=6" @@ -5300,8 +4576,6 @@ }, "node_modules/gettext-parser": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", - "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", "license": "MIT", "dependencies": { "encoding": "^0.1.12", @@ -5309,30 +4583,21 @@ } }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "5.0.15", "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", + "minimatch": "2 || 3", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -5343,14 +4608,10 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "license": "BSD-2-Clause" }, "node_modules/global-modules": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" @@ -5361,8 +4622,6 @@ }, "node_modules/global-prefix": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "license": "MIT", "dependencies": { "ini": "^1.3.5", @@ -5375,8 +4634,6 @@ }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -5387,8 +4644,6 @@ }, "node_modules/globals": { "version": "15.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.8.0.tgz", - "integrity": "sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==", "license": "MIT", "engines": { "node": ">=18" @@ -5398,40 +4653,29 @@ } }, "node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "version": "11.1.0", "license": "MIT", "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globjoin": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "license": "MIT" }, "node_modules/good-listener": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", - "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", "license": "MIT", "dependencies": { "delegate": "^3.1.2" @@ -5439,31 +4683,23 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, "node_modules/gradient-parser": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/gradient-parser/-/gradient-parser-0.1.5.tgz", - "integrity": "sha512-+uPlcVbjrKOnTzvz0MjTj7BfACj8OmxIa1moIjJV7btvhUMSJk0D47RfDCgDrZE3dYMz9Cf5xKJwnrKLjUq0KQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/hasown": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -5474,8 +4710,6 @@ }, "node_modules/header-case": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", "license": "MIT", "dependencies": { "capital-case": "^1.0.4", @@ -5484,14 +4718,10 @@ }, "node_modules/highlight-words-core": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz", - "integrity": "sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg==", "license": "MIT" }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" @@ -5499,20 +4729,14 @@ }, "node_modules/hoist-non-react-statics/node_modules/react-is": { "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, "node_modules/hpq": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/hpq/-/hpq-1.4.0.tgz", - "integrity": "sha512-ycJQMRaRPBcfnoT1gS5I1XCvbbw9KO94Y0vkwksuOjcJMqNZtb03MF2tCItLI2mQbkZWSSeFinoRDPmjzv4tKg==", "license": "MIT" }, "node_modules/html-tags": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "license": "MIT", "engines": { "node": ">=8" @@ -5523,8 +4747,6 @@ }, "node_modules/husky": { "version": "9.0.11", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", - "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==", "license": "MIT", "bin": { "husky": "bin.mjs" @@ -5538,8 +4760,6 @@ }, "node_modules/iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -5550,8 +4770,6 @@ }, "node_modules/icss-utils": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" @@ -5562,8 +4780,6 @@ }, "node_modules/ignore": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "license": "MIT", "engines": { "node": ">= 4" @@ -5571,14 +4787,10 @@ }, "node_modules/immutable": { "version": "4.3.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", - "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", "license": "MIT" }, "node_modules/import-fresh": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -5591,36 +4803,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/import-glob": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/import-glob/-/import-glob-1.5.0.tgz", - "integrity": "sha512-Xz84PoAQ+NIXFxdhUiMAqrrS8qws6CpGfo81C/9CL8JgRaAJEttJJtvjhcZJIEeYvT9rzFQ3+9x9koSqwoE36w==", "license": "MIT", "dependencies": { "glob": "^5.0.13" } }, - "node_modules/import-glob/node_modules/glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/import-local": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", @@ -5636,74 +4834,8 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "license": "MIT", "engines": { "node": ">=0.8.19" @@ -5711,9 +4843,6 @@ }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -5722,20 +4851,14 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "license": "ISC" }, "node_modules/interpret": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "license": "MIT", "engines": { "node": ">=10.13.0" @@ -5743,8 +4866,6 @@ }, "node_modules/invariant": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" @@ -5752,14 +4873,10 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -5770,8 +4887,6 @@ }, "node_modules/is-core-module": { "version": "2.14.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", - "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -5785,8 +4900,6 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5794,8 +4907,6 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { "node": ">=8" @@ -5803,8 +4914,6 @@ }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -5815,8 +4924,6 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "license": "MIT", "engines": { "node": ">=0.12.0" @@ -5824,8 +4931,6 @@ }, "node_modules/is-path-cwd": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "license": "MIT", "engines": { "node": ">=6" @@ -5833,8 +4938,6 @@ }, "node_modules/is-path-in-cwd": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", "license": "MIT", "dependencies": { "is-path-inside": "^2.1.0" @@ -5845,8 +4948,6 @@ }, "node_modules/is-path-in-cwd/node_modules/is-path-inside": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", "license": "MIT", "dependencies": { "path-is-inside": "^1.0.2" @@ -5857,8 +4958,6 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "license": "MIT", "engines": { "node": ">=8" @@ -5866,8 +4965,6 @@ }, "node_modules/is-plain-object": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5875,20 +4972,14 @@ }, "node_modules/is-promise": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5896,8 +4987,6 @@ }, "node_modules/jest-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -5911,119 +5000,20 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "version": "27.5.1", "license": "MIT", "dependencies": { "@types/node": "*", - "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">= 10.13.0" } }, "node_modules/jiti": { "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "license": "MIT", "bin": { "jiti": "bin/jiti.js" @@ -6031,14 +5021,10 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -6049,8 +5035,6 @@ }, "node_modules/jsesc": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -6061,38 +5045,26 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "license": "MIT" }, "node_modules/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": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "license": "MIT" }, "node_modules/json2php": { "version": "0.0.7", - "resolved": "https://registry.npmjs.org/json2php/-/json2php-0.0.7.tgz", - "integrity": "sha512-dnSoUiLAoVaMXxFsVi4CrPVYMKOuDBXTghXSmMINX44RZ8WM9cXlY7UqrQnlAcODCVO7FV3+8t/5nDKAjimLfg==", "license": "BSD" }, "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -6103,50 +5075,34 @@ }, "node_modules/just-camel-case": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/just-camel-case/-/just-camel-case-6.2.0.tgz", - "integrity": "sha512-ICenRLXwkQYLk3UyvLQZ+uKuwFVJ3JHFYFn7F2782G2Mv2hW8WPePqgdhpnjGaqkYtSVWnyCESZhGXUmY3/bEg==", "license": "MIT" }, "node_modules/just-debounce-it": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz", - "integrity": "sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ==", "license": "MIT" }, "node_modules/just-extend": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-5.1.1.tgz", - "integrity": "sha512-b+z6yF1d4EOyDgylzQo5IminlUmzSeqR1hs/bzjBNjuGras4FXq/6TrzjxfN0j+TmI0ltJzTNlqXUMCniciwKQ==", "license": "MIT" }, "node_modules/just-has": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/just-has/-/just-has-2.3.0.tgz", - "integrity": "sha512-JzxCot/ETqLDullSSC5OtT/PLWiqgRNO5z33gVit6BoCXe/6BHut33o9ZunG5jQSqeY4EyzFnl8Wqc7S8Ci/wQ==", "license": "MIT" }, "node_modules/just-is-empty": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/just-is-empty/-/just-is-empty-3.4.1.tgz", - "integrity": "sha512-bweyqPPl3HReVyVzLJvCJn+cfXJKh6dy4kSLoW9YLqwFz+2vZbWLN38AOK7esEIVPQwY1W48HaNvOFZqYAjLpw==", "license": "MIT" }, "node_modules/just-kebab-case": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/just-kebab-case/-/just-kebab-case-4.2.0.tgz", - "integrity": "sha512-p2BdO7o4BI+pMun3J+dhaOfYan5JsZrw9wjshRjkWY9+p+u+kKSMhNWYnot2yHDR9CSahZ9iT3dcqJ+V72qHMw==", "license": "MIT" }, "node_modules/just-throttle": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/just-throttle/-/just-throttle-4.2.0.tgz", - "integrity": "sha512-/iAZv1953JcExpvsywaPKjSzfTiCLqeguUTE6+VmK15mOcwxBx7/FHrVvS4WEErMR03TRazH8kcBSHqMagYIYg==", "license": "MIT" }, "node_modules/keyv": { "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "license": "MIT", "dependencies": { "json-buffer": "3.0.1" @@ -6154,23 +5110,17 @@ }, "node_modules/kind-of": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/known-css-properties": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", - "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", + "version": "0.34.0", "license": "MIT" }, "node_modules/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", @@ -6182,8 +5132,6 @@ }, "node_modules/lilconfig": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "license": "MIT", "engines": { "node": ">=14" @@ -6194,8 +5142,6 @@ }, "node_modules/line-height": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/line-height/-/line-height-0.3.1.tgz", - "integrity": "sha512-YExecgqPwnp5gplD2+Y8e8A5+jKpr25+DzMbFdI1/1UAr0FJrTFv4VkHLf8/6B590i1wUPJWMKKldkd/bdQ//w==", "license": "MIT", "dependencies": { "computed-style": "~0.1.3" @@ -6206,14 +5152,10 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "license": "MIT" }, "node_modules/loader-runner": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "license": "MIT", "engines": { "node": ">=6.11.5" @@ -6221,8 +5163,6 @@ }, "node_modules/loader-utils": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "license": "MIT", "dependencies": { "big.js": "^5.2.2", @@ -6235,8 +5175,6 @@ }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "license": "MIT", "dependencies": { "p-locate": "^5.0.0" @@ -6250,32 +5188,22 @@ }, "node_modules/lodash.memoize": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "license": "MIT" }, "node_modules/lodash.truncate": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "license": "MIT" }, "node_modules/lodash.uniq": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -6286,8 +5214,6 @@ }, "node_modules/lower-case": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "license": "MIT", "dependencies": { "tslib": "^2.0.3" @@ -6295,8 +5221,6 @@ }, "node_modules/lru-cache": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "license": "ISC", "peer": true, "dependencies": { @@ -6305,8 +5229,6 @@ }, "node_modules/mathml-tag-names": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "license": "MIT", "funding": { "type": "github", @@ -6315,32 +5237,22 @@ }, "node_modules/mdn-data": { "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "license": "CC0-1.0" }, "node_modules/media-blender": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/media-blender/-/media-blender-2.1.0.tgz", - "integrity": "sha512-BqAvKQuyh68s1OGGzFW5pTIPYLBUA2HUWBnMLQaPIbI4PhBl0GWKbdPJL1eSUs3cedwdPXlhSqz/SY+YNc7zBA==", "license": "MIT" }, "node_modules/memize": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/memize/-/memize-2.1.0.tgz", - "integrity": "sha512-yywVJy8ctVlN5lNPxsep5urnZ6TTclwPEyigM9M3Bi8vseJBOfqNrGWN/r8NzuIt3PovM323W04blJfGQfQSVg==", "license": "MIT" }, "node_modules/memoize-one": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", "license": "MIT" }, "node_modules/meow": { "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "license": "MIT", "engines": { "node": ">=18" @@ -6351,14 +5263,10 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "license": "MIT", "engines": { "node": ">= 8" @@ -6366,8 +5274,6 @@ }, "node_modules/micromatch": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -6379,8 +5285,6 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -6388,8 +5292,6 @@ }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -6400,8 +5302,6 @@ }, "node_modules/mini-css-extract-plugin": { "version": "2.9.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz", - "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==", "license": "MIT", "dependencies": { "schema-utils": "^4.0.0", @@ -6418,10 +5318,53 @@ "webpack": "^5.0.0" } }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils/node_modules/ajv/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, "node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -6432,8 +5375,6 @@ }, "node_modules/moment": { "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "license": "MIT", "engines": { "node": "*" @@ -6441,8 +5382,6 @@ }, "node_modules/moment-timezone": { "version": "0.5.45", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", - "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", "license": "MIT", "dependencies": { "moment": "^2.29.4" @@ -6453,20 +5392,14 @@ }, "node_modules/mousetrap": { "version": "1.6.5", - "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", - "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==", "license": "Apache-2.0 WITH LLVM-exception" }, "node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -6483,20 +5416,14 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "license": "MIT" }, "node_modules/neo-async": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "license": "MIT" }, "node_modules/no-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "license": "MIT", "dependencies": { "lower-case": "^2.0.2", @@ -6505,14 +5432,10 @@ }, "node_modules/node-releases": { "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6520,8 +5443,6 @@ }, "node_modules/normalize-range": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6529,14 +5450,10 @@ }, "node_modules/normalize-wheel": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", - "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==", "license": "BSD-3-Clause" }, "node_modules/nth-check": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" @@ -6547,8 +5464,6 @@ }, "node_modules/object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6556,8 +5471,6 @@ }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "license": "ISC", "dependencies": { "wrappy": "1" @@ -6565,8 +5478,6 @@ }, "node_modules/optionator": { "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "license": "MIT", "dependencies": { "deep-is": "^0.1.3", @@ -6582,8 +5493,6 @@ }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -6597,8 +5506,6 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "license": "MIT", "dependencies": { "p-limit": "^3.0.2" @@ -6612,8 +5519,6 @@ }, "node_modules/p-map": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "license": "MIT", "engines": { "node": ">=6" @@ -6621,8 +5526,6 @@ }, "node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "license": "MIT", "engines": { "node": ">=6" @@ -6630,8 +5533,6 @@ }, "node_modules/param-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "license": "MIT", "dependencies": { "dot-case": "^3.0.4", @@ -6640,8 +5541,6 @@ }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -6652,8 +5551,6 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -6670,8 +5567,6 @@ }, "node_modules/pascal-case": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "license": "MIT", "dependencies": { "no-case": "^3.0.4", @@ -6680,8 +5575,6 @@ }, "node_modules/path-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", "license": "MIT", "dependencies": { "dot-case": "^3.0.4", @@ -6690,8 +5583,6 @@ }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "license": "MIT", "engines": { "node": ">=8" @@ -6699,8 +5590,6 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6708,14 +5597,10 @@ }, "node_modules/path-is-inside": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "license": "(WTFPL OR MIT)" }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "license": "MIT", "engines": { "node": ">=8" @@ -6723,20 +5608,14 @@ }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "license": "MIT" }, "node_modules/path-to-regexp": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "license": "MIT", "engines": { "node": ">=8" @@ -6744,14 +5623,10 @@ }, "node_modules/picocolors": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -6762,8 +5637,6 @@ }, "node_modules/pify": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "license": "MIT", "engines": { "node": ">=6" @@ -6771,117 +5644,70 @@ }, "node_modules/pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "license": "MIT", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "license": "MIT", - "dependencies": { - "find-up": "^6.3.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "node_modules/pinkie-promise": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "pinkie": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "node_modules/pkg-dir": { + "version": "4.2.0", "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" + "find-up": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path": { + "version": "5.0.0", "license": "MIT", "dependencies": { - "p-limit": "^4.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { + "version": "4.1.0", "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": ">=12.20" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6889,8 +5715,6 @@ }, "node_modules/postcss": { "version": "8.4.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", - "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", "funding": [ { "type": "opencollective", @@ -6917,8 +5741,6 @@ }, "node_modules/postcss-calc": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.0.0.tgz", - "integrity": "sha512-OmjhudoNTP0QleZCwl1i6NeBwN+5MZbY5ersLZz69mjJiDVv/p57RjRuKDkHeDWr4T+S97wQfsqRTNoDHB2e3g==", "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.16", @@ -6933,8 +5755,6 @@ }, "node_modules/postcss-colormin": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.1.tgz", - "integrity": "sha512-uszdT0dULt3FQs47G5UHCduYK+FnkLYlpu1HpWu061eGsKZ7setoG7kA+WC9NQLsOJf69D5TxGHgnAdRgylnFQ==", "license": "MIT", "dependencies": { "browserslist": "^4.23.1", @@ -6951,8 +5771,6 @@ }, "node_modules/postcss-convert-values": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.2.tgz", - "integrity": "sha512-MuZIF6HJ4izko07Q0TgW6pClalI4al6wHRNPkFzqQdwAwG7hPn0lA58VZdxyb2Vl5AYjJ1piO+jgF9EnTjQwQQ==", "license": "MIT", "dependencies": { "browserslist": "^4.23.1", @@ -6967,8 +5785,6 @@ }, "node_modules/postcss-discard-comments": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.1.tgz", - "integrity": "sha512-GVrQxUOhmle1W6jX2SvNLt4kmN+JYhV7mzI6BMnkAWR9DtVvg8e67rrV0NfdWhn7x1zxvzdWkMBPdBDCls+uwQ==", "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.1.0" @@ -6982,8 +5798,6 @@ }, "node_modules/postcss-discard-duplicates": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.0.tgz", - "integrity": "sha512-bAnSuBop5LpAIUmmOSsuvtKAAKREB6BBIYStWUTGq8oG5q9fClDMMuY8i4UPI/cEcDx2TN+7PMnXYIId20UVDw==", "license": "MIT", "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" @@ -6994,8 +5808,6 @@ }, "node_modules/postcss-discard-empty": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz", - "integrity": "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==", "license": "MIT", "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" @@ -7006,8 +5818,6 @@ }, "node_modules/postcss-discard-overridden": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz", - "integrity": "sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==", "license": "MIT", "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" @@ -7018,8 +5828,6 @@ }, "node_modules/postcss-loader": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", - "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", "license": "MIT", "dependencies": { "cosmiconfig": "^9.0.0", @@ -7047,54 +5855,12 @@ } } }, - "node_modules/postcss-loader/node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/postcss-loader/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/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": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", "license": "MIT" }, "node_modules/postcss-merge-longhand": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.2.tgz", - "integrity": "sha512-06vrW6ZWi9qeP7KMS9fsa9QW56+tIMW55KYqF7X3Ccn+NI2pIgPV6gFfvXTMQ05H90Y5DvnCDPZ2IuHa30PMUg==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", @@ -7109,8 +5875,6 @@ }, "node_modules/postcss-merge-rules": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.2.tgz", - "integrity": "sha512-VAR47UNvRsdrTHLe7TV1CeEtF9SJYR5ukIB9U4GZyZOptgtsS20xSxy+k5wMrI3udST6O1XuIn7cjQkg7sDAAw==", "license": "MIT", "dependencies": { "browserslist": "^4.23.1", @@ -7127,8 +5891,6 @@ }, "node_modules/postcss-minify-font-values": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz", - "integrity": "sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -7142,8 +5904,6 @@ }, "node_modules/postcss-minify-gradients": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz", - "integrity": "sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==", "license": "MIT", "dependencies": { "colord": "^2.9.3", @@ -7159,8 +5919,6 @@ }, "node_modules/postcss-minify-params": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.1.tgz", - "integrity": "sha512-e+Xt8xErSRPgSRFxHeBCSxMiO8B8xng7lh8E0A5ep1VfwYhY8FXhu4Q3APMjgx9YDDbSp53IBGENrzygbUvgUQ==", "license": "MIT", "dependencies": { "browserslist": "^4.23.1", @@ -7176,8 +5934,6 @@ }, "node_modules/postcss-minify-selectors": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.2.tgz", - "integrity": "sha512-dCzm04wqW1uqLmDZ41XYNBJfjgps3ZugDpogAmJXoCb5oCiTzIX4oPXXKxDpTvWOnKxQKR4EbV4ZawJBLcdXXA==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -7192,8 +5948,6 @@ }, "node_modules/postcss-modules-extract-imports": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", - "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" @@ -7204,8 +5958,6 @@ }, "node_modules/postcss-modules-local-by-default": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", - "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", @@ -7221,8 +5973,6 @@ }, "node_modules/postcss-modules-scope": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", - "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" @@ -7236,8 +5986,6 @@ }, "node_modules/postcss-modules-values": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" @@ -7251,8 +5999,6 @@ }, "node_modules/postcss-normalize-charset": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz", - "integrity": "sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==", "license": "MIT", "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" @@ -7263,8 +6009,6 @@ }, "node_modules/postcss-normalize-display-values": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz", - "integrity": "sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -7278,8 +6022,6 @@ }, "node_modules/postcss-normalize-positions": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz", - "integrity": "sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -7293,8 +6035,6 @@ }, "node_modules/postcss-normalize-repeat-style": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz", - "integrity": "sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -7308,8 +6048,6 @@ }, "node_modules/postcss-normalize-string": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz", - "integrity": "sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -7323,8 +6061,6 @@ }, "node_modules/postcss-normalize-timing-functions": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz", - "integrity": "sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -7338,8 +6074,6 @@ }, "node_modules/postcss-normalize-unicode": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.1.tgz", - "integrity": "sha512-PTPGdY9xAkTw+8ZZ71DUePb7M/Vtgkbbq+EoI33EuyQEzbKemEQMhe5QSr0VP5UfZlreANDPxSfcdSprENcbsg==", "license": "MIT", "dependencies": { "browserslist": "^4.23.1", @@ -7354,8 +6088,6 @@ }, "node_modules/postcss-normalize-url": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz", - "integrity": "sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -7369,8 +6101,6 @@ }, "node_modules/postcss-normalize-whitespace": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz", - "integrity": "sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -7384,8 +6114,6 @@ }, "node_modules/postcss-ordered-values": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.1.tgz", - "integrity": "sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==", "license": "MIT", "dependencies": { "cssnano-utils": "^5.0.0", @@ -7400,8 +6128,6 @@ }, "node_modules/postcss-prefixwrap": { "version": "1.49.0", - "resolved": "https://registry.npmjs.org/postcss-prefixwrap/-/postcss-prefixwrap-1.49.0.tgz", - "integrity": "sha512-TpUrBl78L3zJXuL32YBnPY122zlOo9qm31onXQFX+n0UdyRciBUz8Zefxt5mo963dqQbtkvg91XOgx6Vx8J7hQ==", "license": "MIT", "peerDependencies": { "postcss": "*" @@ -7409,8 +6135,6 @@ }, "node_modules/postcss-reduce-initial": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.1.tgz", - "integrity": "sha512-0JDUSV4bGB5FGM5g8MkS+rvqKukJZ7OTHw/lcKn7xPNqeaqJyQbUO8/dJpvyTpaVwPsd3Uc33+CfNzdVowp2WA==", "license": "MIT", "dependencies": { "browserslist": "^4.23.1", @@ -7425,8 +6149,6 @@ }, "node_modules/postcss-reduce-transforms": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz", - "integrity": "sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -7440,14 +6162,10 @@ }, "node_modules/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": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", "license": "MIT" }, "node_modules/postcss-safe-parser": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz", - "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==", "funding": [ { "type": "opencollective", @@ -7472,8 +6190,6 @@ }, "node_modules/postcss-scss": { "version": "4.0.9", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", - "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", "funding": [ { "type": "opencollective", @@ -7497,9 +6213,7 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.1", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -7511,8 +6225,6 @@ }, "node_modules/postcss-svgo": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.1.tgz", - "integrity": "sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", @@ -7527,8 +6239,6 @@ }, "node_modules/postcss-unique-selectors": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.1.tgz", - "integrity": "sha512-MH7QE/eKUftTB5ta40xcHLl7hkZjgDFydpfTK+QWXeHxghVt3VoPqYL5/G+zYZPPIs+8GuqFXSTgxBSoB1RZtQ==", "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.1.0" @@ -7542,8 +6252,6 @@ }, "node_modules/postcss-urlrebase": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/postcss-urlrebase/-/postcss-urlrebase-1.4.0.tgz", - "integrity": "sha512-rRaxMmWvXrn8Rk1PqsxmaJwldRHsr0WbbASKKCZYxXwotHkM/5X/6IrwaEe8pdzpbNGCEY86yhYMN0MhgOkADA==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" @@ -7554,14 +6262,10 @@ }, "node_modules/postcss-value-parser": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -7569,8 +6273,6 @@ }, "node_modules/promisify-child-process": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/promisify-child-process/-/promisify-child-process-4.1.2.tgz", - "integrity": "sha512-APnkIgmaHNJpkAn7k+CrJSi9WMuff5ctYFbD0CO2XIPkM8yO7d/ShouU2clywbpHV/DUsyc4bpJCsNgddNtx4g==", "license": "MIT", "engines": { "node": ">=8" @@ -7578,8 +6280,6 @@ }, "node_modules/prop-types": { "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", @@ -7589,14 +6289,10 @@ }, "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, "node_modules/punycode": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "license": "MIT", "engines": { "node": ">=6" @@ -7604,8 +6300,6 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "funding": [ { "type": "github", @@ -7624,8 +6318,6 @@ }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" @@ -7633,8 +6325,6 @@ }, "node_modules/raw-loader": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", - "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", @@ -7651,28 +6341,8 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/raw-loader/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/rc-motion": { "version": "2.9.2", - "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.9.2.tgz", - "integrity": "sha512-fUAhHKLDdkAXIDLH0GYwof3raS58dtNUmzLF2MeiR8o6n4thNpSDQhOqQzWE4WfFZDCi9VEN8n7tiB7czREcyw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.1", @@ -7686,8 +6356,6 @@ }, "node_modules/rc-resize-observer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.4.0.tgz", - "integrity": "sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.7", @@ -7702,8 +6370,6 @@ }, "node_modules/rc-slider": { "version": "10.6.2", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.6.2.tgz", - "integrity": "sha512-FjkoFjyvUQWcBo1F3RgSglky3ar0+qHLM41PlFVYB4Bj3RD8E/Mv7kqMouLFBU+3aFglMzzctAIWRwajEuueSw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", @@ -7720,8 +6386,6 @@ }, "node_modules/rc-tooltip": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.2.0.tgz", - "integrity": "sha512-iS/3iOAvtDh9GIx1ulY7EFUXUtktFccNLsARo3NPgLf0QW9oT0w3dA9cYWlhqAKmD+uriEwdWz1kH0Qs4zk2Aw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.2", @@ -7735,8 +6399,6 @@ }, "node_modules/rc-util": { "version": "5.43.0", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.43.0.tgz", - "integrity": "sha512-AzC7KKOXFqAdIBqdGWepL9Xn7cm3vnAmjlHqUnoQaTMZYhM4VlXGLkkHHxj/BZ7Td0+SOPKB4RGPboBVKT9htw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", @@ -7749,8 +6411,6 @@ }, "node_modules/re-resizable": { "version": "6.9.17", - "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.9.17.tgz", - "integrity": "sha512-OBqd1BwVXpEJJn/yYROG+CbeqIDBWIp6wathlpB0kzZWWZIY1gPTsgK2yJEui5hOvkCdC2mcexF2V3DZVfLq2g==", "license": "MIT", "peerDependencies": { "react": "^16.13.1 || ^17.0.0 || ^18.0.0", @@ -7759,8 +6419,6 @@ }, "node_modules/react": { "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" @@ -7771,8 +6429,6 @@ }, "node_modules/react-autosize-textarea": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", - "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", "license": "MIT", "dependencies": { "autosize": "^4.0.2", @@ -7786,14 +6442,10 @@ }, "node_modules/react-autosize-textarea/node_modules/autosize": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/autosize/-/autosize-4.0.4.tgz", - "integrity": "sha512-5yxLQ22O0fCRGoxGfeLSNt3J8LB1v+umtpMnPW6XjkTWXKoN0AmXAIhelJcDtFT/Y/wYWmfE+oqU10Q0b8FhaQ==", "license": "MIT" }, "node_modules/react-colorful": { "version": "5.6.1", - "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", - "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", "license": "MIT", "peerDependencies": { "react": ">=16.8.0", @@ -7802,8 +6454,6 @@ }, "node_modules/react-dom": { "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -7815,8 +6465,6 @@ }, "node_modules/react-easy-crop": { "version": "5.0.7", - "resolved": "https://registry.npmjs.org/react-easy-crop/-/react-easy-crop-5.0.7.tgz", - "integrity": "sha512-6d5IUt09M3HwdDGwrcjPVgfrOfYWAOku8sCTn/xU7b1vkEg+lExMLwW8UbR39L8ybQi0hJZTU57yprF9h5Q5Ig==", "license": "MIT", "dependencies": { "normalize-wheel": "^1.0.1", @@ -7829,8 +6477,6 @@ }, "node_modules/react-gcolor-picker": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/react-gcolor-picker/-/react-gcolor-picker-1.3.3.tgz", - "integrity": "sha512-EIOdLzHY8Z1Wrbgs7nspo1FxpXskhkscyOlE1z6MQgO7qLyYuRcQ6OAS2NYBpHo7puqvCpe9fPCejtu8pxFARw==", "license": "MIT", "dependencies": { "@types/tinycolor2": "^1.4.2", @@ -7846,14 +6492,10 @@ }, "node_modules/react-is": { "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "license": "MIT" }, "node_modules/react-remove-scroll": { "version": "2.5.4", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz", - "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==", "license": "MIT", "dependencies": { "react-remove-scroll-bar": "^2.3.3", @@ -7877,8 +6519,6 @@ }, "node_modules/react-remove-scroll-bar": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", - "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", "license": "MIT", "dependencies": { "react-style-singleton": "^2.2.1", @@ -7899,8 +6539,6 @@ }, "node_modules/react-select": { "version": "5.8.0", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.0.tgz", - "integrity": "sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.0", @@ -7920,8 +6558,6 @@ }, "node_modules/react-style-singleton": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", "license": "MIT", "dependencies": { "get-nonce": "^1.0.0", @@ -7943,8 +6579,6 @@ }, "node_modules/react-transition-group": { "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", "license": "BSD-3-Clause", "dependencies": { "@babel/runtime": "^7.5.5", @@ -7959,8 +6593,6 @@ }, "node_modules/reactflow": { "version": "11.11.4", - "resolved": "https://registry.npmjs.org/reactflow/-/reactflow-11.11.4.tgz", - "integrity": "sha512-70FOtJkUWH3BAOsN+LU9lCrKoKbtOPnz2uq0CV2PLdNSwxTXOhCbsZr50GmZ+Rtw3jx8Uv7/vBFtCGixLfd4Og==", "license": "MIT", "dependencies": { "@reactflow/background": "11.3.14", @@ -7977,8 +6609,6 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -7989,8 +6619,6 @@ }, "node_modules/rechoir": { "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "license": "MIT", "dependencies": { "resolve": "^1.20.0" @@ -8001,8 +6629,6 @@ }, "node_modules/redux": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.9.2" @@ -8010,32 +6636,22 @@ }, "node_modules/regenerator-runtime": { "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "license": "MIT" }, "node_modules/rememo": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.2.tgz", - "integrity": "sha512-NVfSP9NstE3QPNs/TnegQY0vnJnstKQSpcrsI2kBTB3dB2PkdfKdTa+abbjMIDqpc63fE5LfjLgfMst0ULMFxQ==", "license": "MIT" }, "node_modules/remove-accents": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", - "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==", "license": "MIT" }, "node_modules/requestidlecallback": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/requestidlecallback/-/requestidlecallback-0.3.0.tgz", - "integrity": "sha512-TWHFkT7S9p7IxLC5A1hYmAYQx2Eb9w1skrXmQ+dS1URyvR8tenMLl4lHbqEOUnpEYxNKpkVMXUgknVpBZWXXfQ==", "license": "MIT" }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8043,8 +6659,6 @@ }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8052,20 +6666,14 @@ }, "node_modules/require-main-filename": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "license": "ISC" }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", "license": "MIT" }, "node_modules/resolve": { "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", @@ -8081,8 +6689,6 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" @@ -8091,28 +6697,15 @@ "node": ">=8" } }, - "node_modules/resolve-cwd/node_modules/resolve-from": { + "node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -8121,9 +6714,6 @@ }, "node_modules/rimraf": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -8132,10 +6722,26 @@ "rimraf": "bin.js" } }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { "type": "github", @@ -8157,14 +6763,10 @@ }, "node_modules/rungen": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/rungen/-/rungen-0.3.2.tgz", - "integrity": "sha512-zWl10xu2D7zoR8zSC2U6bg5bYF6T/Wk7rxwp8IPaJH7f0Ge21G03kNHVgHR7tyVkSSfAOG0Rqf/Cl38JftSmtw==", "license": "MIT" }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -8183,14 +6785,10 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, "node_modules/sass": { - "version": "1.77.6", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", - "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", + "version": "1.77.8", "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -8206,8 +6804,6 @@ }, "node_modules/sass-loader": { "version": "14.2.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.2.1.tgz", - "integrity": "sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==", "license": "MIT", "dependencies": { "neo-async": "^2.6.2" @@ -8246,86 +6842,43 @@ }, "node_modules/scheduler": { "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "3.3.0", "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, "node_modules/select": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", "license": "MIT" }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "7.6.2", "license": "ISC", - "peer": true, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/sentence-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", "license": "MIT", "dependencies": { "no-case": "^3.0.4", @@ -8335,8 +6888,6 @@ }, "node_modules/serialize-javascript": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" @@ -8344,14 +6895,10 @@ }, "node_modules/set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "license": "ISC" }, "node_modules/shallow-clone": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "license": "MIT", "dependencies": { "kind-of": "^6.0.2" @@ -8362,8 +6909,6 @@ }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -8374,8 +6919,6 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "license": "MIT", "engines": { "node": ">=8" @@ -8383,8 +6926,6 @@ }, "node_modules/showdown": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz", - "integrity": "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==", "license": "BSD-3-Clause", "dependencies": { "yargs": "^14.2" @@ -8395,8 +6936,6 @@ }, "node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "license": "ISC", "engines": { "node": ">=14" @@ -8407,14 +6946,10 @@ }, "node_modules/simple-html-tokenizer": { "version": "0.5.11", - "resolved": "https://registry.npmjs.org/simple-html-tokenizer/-/simple-html-tokenizer-0.5.11.tgz", - "integrity": "sha512-C2WEK/Z3HoSFbYq8tI7ni3eOo/NneSPRoPpcM7WdLjFOArFuyXEjAoCdOC3DgMfRyziZQ1hCNR4mrNdWEvD0og==", "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "license": "MIT", "engines": { "node": ">=8" @@ -8422,8 +6957,6 @@ }, "node_modules/slice-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -8437,43 +6970,8 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, "node_modules/snake-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", "license": "MIT", "dependencies": { "dot-case": "^3.0.4", @@ -8482,14 +6980,10 @@ }, "node_modules/source-list-map": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", "license": "MIT" }, "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "version": "0.6.1", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -8497,8 +6991,6 @@ }, "node_modules/source-map-js": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -8506,33 +6998,18 @@ }, "node_modules/source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sprintf-js": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "license": "BSD-3-Clause" }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -8545,8 +7022,6 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -8557,8 +7032,6 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "license": "MIT", "engines": { "node": ">=8" @@ -8569,8 +7042,6 @@ }, "node_modules/style-loader": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", - "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", "license": "MIT", "engines": { "node": ">= 18.12.0" @@ -8585,14 +7056,10 @@ }, "node_modules/style-search": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", "license": "ISC" }, "node_modules/stylehacks": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.2.tgz", - "integrity": "sha512-HdkWZS9b4gbgYTdMg4gJLmm7biAUug1qTqXjS+u8X+/pUd+9Px1E+520GnOW3rST9MNsVOVpsJG+mPHNosxjOQ==", "license": "MIT", "dependencies": { "browserslist": "^4.23.1", @@ -8606,9 +7073,7 @@ } }, "node_modules/stylelint": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz", - "integrity": "sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==", + "version": "16.7.0", "funding": [ { "type": "opencollective", @@ -8621,9 +7086,9 @@ ], "license": "MIT", "dependencies": { - "@csstools/css-parser-algorithms": "^2.6.3", - "@csstools/css-tokenizer": "^2.3.1", - "@csstools/media-query-list-parser": "^2.1.11", + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1", + "@csstools/media-query-list-parser": "^2.1.13", "@csstools/selector-specificity": "^3.1.1", "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", @@ -8631,7 +7096,7 @@ "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.2", "css-tree": "^2.3.1", - "debug": "^4.3.4", + "debug": "^4.3.5", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", "file-entry-cache": "^9.0.0", @@ -8642,13 +7107,13 @@ "ignore": "^5.3.1", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.31.0", + "known-css-properties": "^0.34.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", "micromatch": "^4.0.7", "normalize-path": "^3.0.0", "picocolors": "^1.0.1", - "postcss": "^8.4.38", + "postcss": "^8.4.39", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^7.0.0", "postcss-selector-parser": "^6.1.0", @@ -8670,8 +7135,6 @@ }, "node_modules/stylelint-config-recommended": { "version": "14.0.1", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz", - "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==", "funding": [ { "type": "opencollective", @@ -8691,21 +7154,19 @@ } }, "node_modules/stylelint-config-recommended-scss": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.0.0.tgz", - "integrity": "sha512-HDvpoOAQ1RpF+sPbDOT2Q2/YrBDEJDnUymmVmZ7mMCeNiFSdhRdyGEimBkz06wsN+HaFwUh249gDR+I9JR7Onw==", + "version": "14.1.0", "license": "MIT", "dependencies": { "postcss-scss": "^4.0.9", - "stylelint-config-recommended": "^14.0.0", - "stylelint-scss": "^6.0.0" + "stylelint-config-recommended": "^14.0.1", + "stylelint-scss": "^6.4.0" }, "engines": { "node": ">=18.12.0" }, "peerDependencies": { "postcss": "^8.3.3", - "stylelint": "^16.0.2" + "stylelint": "^16.6.1" }, "peerDependenciesMeta": { "postcss": { @@ -8715,8 +7176,6 @@ }, "node_modules/stylelint-config-standard": { "version": "36.0.1", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz", - "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==", "funding": [ { "type": "opencollective", @@ -8738,104 +7197,45 @@ "stylelint": "^16.1.0" } }, - "node_modules/stylelint-config-standard-scss": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz", - "integrity": "sha512-Eo5w7/XvwGHWkeGLtdm2FZLOMYoZl1omP2/jgFCXyl2x5yNz7/8vv4Tj6slHvMSSUNTaGoam/GAZ0ZhukvalfA==", - "license": "MIT", - "dependencies": { - "stylelint-config-recommended-scss": "^14.0.0", - "stylelint-config-standard": "^36.0.0" - }, - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "postcss": "^8.3.3", - "stylelint": "^16.3.1" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - } - } - }, - "node_modules/stylelint-scss": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.3.2.tgz", - "integrity": "sha512-pNk9mXOVKkQtd+SROPC9io8ISSgX+tOVPhFdBE+LaKQnJMLdWPbGKAGYv4Wmf/RrnOjkutunNTN9kKMhkdE5qA==", - "license": "MIT", - "dependencies": { - "known-css-properties": "^0.31.0", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "stylelint": "^16.0.2" - } - }, - "node_modules/stylelint/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/stylelint/node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "license": "MIT" - }, - "node_modules/stylelint/node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "node_modules/stylelint-config-standard-scss": { + "version": "13.1.0", "license": "MIT", "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" + "stylelint-config-recommended-scss": "^14.0.0", + "stylelint-config-standard": "^36.0.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" + "node": ">=18.12.0" }, "peerDependencies": { - "typescript": ">=4.9.5" + "postcss": "^8.3.3", + "stylelint": "^16.3.1" }, "peerDependenciesMeta": { - "typescript": { + "postcss": { "optional": true } } }, + "node_modules/stylelint-scss": { + "version": "6.4.1", + "license": "MIT", + "dependencies": { + "known-css-properties": "^0.34.0", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.0.2" + } + }, "node_modules/stylelint/node_modules/file-entry-cache": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz", - "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==", "license": "MIT", "dependencies": { "flat-cache": "^5.0.0" @@ -8844,10 +7244,8 @@ "node": ">=18" } }, - "node_modules/stylelint/node_modules/flat-cache": { + "node_modules/stylelint/node_modules/file-entry-cache/node_modules/flat-cache": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", - "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", "license": "MIT", "dependencies": { "flatted": "^3.3.1", @@ -8857,72 +7255,48 @@ "node": ">=18" } }, - "node_modules/stylelint/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/stylelint/node_modules/strip-ansi": { + "version": "7.1.0", "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stylelint/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "license": "MIT", - "engines": { - "node": ">=8" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/stylelint/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/stylelint/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/stylis": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", "license": "MIT" }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "8.1.1", "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/supports-hyperlinks": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", - "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0", @@ -8932,19 +7306,8 @@ "node": ">=14.18" } }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/supports-hyperlinks/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -8955,8 +7318,6 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -8966,14 +7327,10 @@ } }, "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" + "version": "1.0.0" }, "node_modules/svgo": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", - "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", "license": "MIT", "dependencies": { "@trysound/sax": "0.2.0", @@ -8995,10 +7352,15 @@ "url": "https://opencollective.com/svgo" } }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/swc-loader": { "version": "0.2.6", - "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz", - "integrity": "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==", "license": "MIT", "dependencies": { "@swc/counter": "^0.1.3" @@ -9010,8 +7372,6 @@ }, "node_modules/table": { "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", @@ -9025,31 +7385,25 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "version": "8.17.1", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/table/node_modules/json-schema-traverse": { + "node_modules/table/node_modules/ajv/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, "node_modules/tannin": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tannin/-/tannin-1.2.0.tgz", - "integrity": "sha512-U7GgX/RcSeUETbV7gYgoz8PD7Ni4y95pgIP/Z6ayI3CfhSujwKEBlGFTCRN+Aqnuyf4AN2yHL+L8x+TCGjb9uA==", "license": "MIT", "dependencies": { "@tannin/plural-forms": "^1.1.0" @@ -9057,17 +7411,13 @@ }, "node_modules/tapable": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/terser": { - "version": "5.31.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", - "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", + "version": "5.31.2", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -9084,8 +7434,6 @@ }, "node_modules/terser-webpack-plugin": { "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", @@ -9116,90 +7464,24 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/terser-webpack-plugin/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser-webpack-plugin/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "license": "MIT" }, "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "license": "MIT" }, "node_modules/tiny-emitter": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", "license": "MIT" }, "node_modules/tinycolor2": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", "license": "MIT" }, "node_modules/to-fast-properties": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "license": "MIT", "engines": { "node": ">=4" @@ -9207,8 +7489,6 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -9219,14 +7499,10 @@ }, "node_modules/tslib": { "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" @@ -9237,14 +7513,10 @@ }, "node_modules/undici-types": { "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "license": "MIT" }, "node_modules/update-browserslist-db": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "funding": [ { "type": "opencollective", @@ -9273,8 +7545,6 @@ }, "node_modules/upper-case": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", "license": "MIT", "dependencies": { "tslib": "^2.0.3" @@ -9282,8 +7552,6 @@ }, "node_modules/upper-case-first": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", "license": "MIT", "dependencies": { "tslib": "^2.0.3" @@ -9291,8 +7559,6 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -9300,8 +7566,6 @@ }, "node_modules/use-callback-ref": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", - "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" @@ -9321,8 +7585,6 @@ }, "node_modules/use-isomorphic-layout-effect": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", - "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" @@ -9335,8 +7597,6 @@ }, "node_modules/use-lilius": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/use-lilius/-/use-lilius-2.0.5.tgz", - "integrity": "sha512-IbPjJe4T6B0zQV6ahftVtHvCAxi6RAuDpEcO8TmnHh4nBtx7JbGdpbgXWOUj/9YjrzEbdT/lW7JWcBVbX3MbrA==", "license": "MIT", "dependencies": { "date-fns": "^3.6.0" @@ -9348,8 +7608,6 @@ }, "node_modules/use-memo-one": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", - "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" @@ -9357,8 +7615,6 @@ }, "node_modules/use-sidecar": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", - "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", "license": "MIT", "dependencies": { "detect-node-es": "^1.1.0", @@ -9378,9 +7634,7 @@ } }, "node_modules/use-sync-external-store": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", - "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "version": "1.2.0", "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" @@ -9388,14 +7642,10 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, "node_modules/uuid": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -9407,8 +7657,6 @@ }, "node_modules/watchpack": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", @@ -9419,9 +7667,7 @@ } }, "node_modules/webpack": { - "version": "5.92.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", - "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", + "version": "5.93.0", "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -9467,8 +7713,6 @@ }, "node_modules/webpack-cli": { "version": "5.1.4", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", - "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", @@ -9510,19 +7754,8 @@ } } }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "license": "MIT", - "engines": { - "node": ">=14" - } - }, "node_modules/webpack-manifest-plugin": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-5.0.0.tgz", - "integrity": "sha512-8RQfMAdc5Uw3QbCQ/CBV/AXqOR8mt03B6GJmRbhWopE8GzRfEpn+k0ZuWywxW+5QZsffhmFDY1J6ohqJo+eMuw==", "license": "MIT", "dependencies": { "tapable": "^2.0.0", @@ -9535,19 +7768,8 @@ "webpack": "^5.47.0" } }, - "node_modules/webpack-manifest-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", "license": "MIT", "dependencies": { "source-list-map": "^2.0.1", @@ -9559,8 +7781,6 @@ }, "node_modules/webpack-merge": { "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", @@ -9573,57 +7793,13 @@ }, "node_modules/webpack-sources": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "license": "MIT", "engines": { "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -9637,20 +7813,14 @@ }, "node_modules/which-module": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "license": "ISC" }, "node_modules/wildcard": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "license": "MIT" }, "node_modules/word-wrap": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9658,8 +7828,6 @@ }, "node_modules/wrap-ansi": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "license": "MIT", "dependencies": { "ansi-styles": "^3.2.0", @@ -9670,34 +7838,29 @@ "node": ">=6" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "3.2.1", "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert": { + "version": "1.9.3", "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "color-name": "1.1.3" } }, + "node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, "node_modules/wrap-ansi/node_modules/string-width": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "license": "MIT", "dependencies": { "emoji-regex": "^7.0.1", @@ -9708,10 +7871,19 @@ "node": ">=6" } }, + "node_modules/wrap-ansi/node_modules/string-width/node_modules/emoji-regex": { + "version": "7.0.3", + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" @@ -9720,16 +7892,19 @@ "node": ">=6" } }, + "node_modules/wrap-ansi/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, "node_modules/write-file-atomic": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -9741,21 +7916,15 @@ }, "node_modules/y18n": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "license": "ISC" }, "node_modules/yallist": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "license": "ISC", "peer": true }, "node_modules/yaml": { "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "license": "ISC", "engines": { "node": ">= 6" @@ -9763,8 +7932,6 @@ }, "node_modules/yargs": { "version": "14.2.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", - "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", "license": "MIT", "dependencies": { "cliui": "^5.0.0", @@ -9782,33 +7949,14 @@ }, "node_modules/yargs-parser": { "version": "15.0.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", - "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "license": "MIT" - }, "node_modules/yargs/node_modules/find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "license": "MIT", "dependencies": { "locate-path": "^3.0.0" @@ -9817,19 +7965,8 @@ "node": ">=6" } }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/yargs/node_modules/locate-path": { + "node_modules/yargs/node_modules/find-up/node_modules/locate-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "license": "MIT", "dependencies": { "p-locate": "^3.0.0", @@ -9839,37 +7976,31 @@ "node": ">=6" } }, - "node_modules/yargs/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/yargs/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { + "version": "3.0.0", "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "p-limit": "^2.0.0" }, "engines": { "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yargs/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/yargs/node_modules/find-up/node_modules/locate-path/node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", "dependencies": { - "p-limit": "^2.0.0" + "p-try": "^2.0.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yargs/node_modules/path-exists": { + "node_modules/yargs/node_modules/find-up/node_modules/locate-path/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "license": "MIT", "engines": { "node": ">=4" @@ -9877,8 +8008,6 @@ }, "node_modules/yargs/node_modules/string-width": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "license": "MIT", "dependencies": { "emoji-regex": "^7.0.1", @@ -9889,10 +8018,19 @@ "node": ">=6" } }, - "node_modules/yargs/node_modules/strip-ansi": { + "node_modules/yargs/node_modules/string-width/node_modules/emoji-regex": { + "version": "7.0.3", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs/node_modules/string-width/node_modules/strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" @@ -9901,10 +8039,15 @@ "node": ">=6" } }, + "node_modules/yargs/node_modules/string-width/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "license": "MIT", "engines": { "node": ">=10" @@ -9915,8 +8058,6 @@ }, "node_modules/zustand": { "version": "4.5.4", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.4.tgz", - "integrity": "sha512-/BPMyLKJPtFEvVL0E9E9BTUM63MNyhPGlvxk1XjrfWTUlV+BR8jufjsovHzrtR6YNcBEcL7cMHovL1n9xHawEg==", "license": "MIT", "dependencies": { "use-sync-external-store": "1.2.0" @@ -9940,15 +8081,6 @@ "optional": true } } - }, - "node_modules/zustand/node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } } } } diff --git a/src/AdminMenus/FormAdminMenu.php b/src/AdminMenus/FormAdminMenu.php index adb9992e..025f4c86 100644 --- a/src/AdminMenus/FormAdminMenu.php +++ b/src/AdminMenus/FormAdminMenu.php @@ -744,7 +744,7 @@ private function getListingItems(array $items, string $type, string $parent): ar $entryValue = $item['entryValue'] ?? []; $createdAt = $item['createdAt'] ?? ''; - $content = '
    '; + $content = '
      '; foreach ($entryValue as $entryKey => $entryValue) { if (\gettype($entryValue) === 'array') { if (\array_key_first($entryValue) === 0) { @@ -761,7 +761,7 @@ function ($value, $key) { } } - $content .= "
    • {$entryKey}: {$entryValue}
    • "; + $content .= "
    • {$entryKey}:{$entryValue}
    • "; } $content .= '
    '; @@ -971,7 +971,7 @@ private function getRightContent(array $item, string $type, string $parent): arr ]), ]; - if (\apply_filters(SettingsResultOutput::FILTER_SETTINGS_IS_VALID_NAME, false)) { + if (\apply_filters(SettingsResultOutput::FILTER_SETTINGS_GLOBAL_IS_VALID_NAME, false)) { $output[] = Helpers::render('submit', [ 'submitVariant' => 'ghost', 'submitButtonAsLink' => true, diff --git a/src/Blocks/components/card-inline/card-inline-admin.scss b/src/Blocks/components/card-inline/card-inline-admin.scss index 1221118d..a24bdab8 100644 --- a/src/Blocks/components/card-inline/card-inline-admin.scss +++ b/src/Blocks/components/card-inline/card-inline-admin.scss @@ -119,6 +119,27 @@ @include media(desktop up) { grid-template-columns: repeat(3, 1fr); } + + &--break-words { + li { + text-overflow: ellipsis; + overflow: auto; + + strong { + display: block; + } + + span { + white-space: nowrap; + } + + &:hover { + span { + white-space: inherit; + } + } + } + } } } diff --git a/src/Blocks/components/form/assets/form.js b/src/Blocks/components/form/assets/form.js index 4e484b41..d093b3ef 100644 --- a/src/Blocks/components/form/assets/form.js +++ b/src/Blocks/components/form/assets/form.js @@ -433,8 +433,8 @@ export class Form { // Set global msg. this.utils.setGlobalMsg(formId, message, status, data); - // This will be changed in the next release. - if (Boolean(this.state.getStateFormElement(formId)?.getAttribute(this.state.getStateAttribute('formHideOnSuccess')))) { + // Hide form on success. + if (data?.[this.state.getStateResponseOutputKey('hideFormOnSuccess')]) { this.state.getStateFormElement(formId).classList.add(this.state.getStateSelector('isHidden')); } diff --git a/src/Blocks/components/form/manifest.json b/src/Blocks/components/form/manifest.json index b6b46a66..903c884d 100644 --- a/src/Blocks/components/form/manifest.json +++ b/src/Blocks/components/form/manifest.json @@ -67,13 +67,6 @@ "formUseSingleSubmit": { "type": "boolean", "default": false - }, - "formDownloads": { - "type": "array", - "items": { - "type": "object" - }, - "default": [] } }, "options": { diff --git a/src/Blocks/components/utils/index.js b/src/Blocks/components/utils/index.js index cf5e5b3d..9170716f 100644 --- a/src/Blocks/components/utils/index.js +++ b/src/Blocks/components/utils/index.js @@ -21,6 +21,7 @@ import { } from '@eightshift/frontend-libs/scripts'; import { FORMS_STORE_NAME } from './../../assets/scripts/store'; import { getRestUrl, getRestUrlByType, getUtilsIcons } from '../form/assets/state-init'; +import utilsManifest from '../../../../vendor-prefixed/infinum/eightshift-forms-utils/src/manifest.json'; /** * check if block options is disabled by integration or other component. @@ -412,12 +413,18 @@ export const NameField = ({ const isDisabled = isOptionDisabled(attribute, disabledOptions); const NameFieldLabel = () => { + let labelTipText = !isOptional ? __('The form may not work correctly.', 'eightshift-forms') : __('Name field is required only if you are using conditional tags on this field.', 'eightshift-forms'); + + if (type === 'resultOutputItem') { + labelTipText = __(`Variable name you can use is "${utilsManifest.enums.successRedirectUrlKeys.variation}" or any other provided by the add-on plugins.`, 'eightshift-forms'); + } + return (
    - + { !isOptional ? {__('Required', 'eightshift-forms')} : @@ -432,24 +439,30 @@ export const NameField = ({ onClick={() => { setIsChanged(true); - const valueName = `${type}-${getUnique()}`; + const valueName = type === 'resultOutputItem' ? utilsManifest.enums.successRedirectUrlKeys.variation : `${type}-${getUnique()}`; setAttributes({ [attribute]: valueName }); }} > - {__('Generate name', 'eightshift-forms')} + {type === 'resultOutputItem' ? __('Set name', 'eightshift-forms') : __('Generate name', 'eightshift-forms')} }
    ); }; + let helpText = sprintf(__('Identifies the %s within form submission data. Must be unique. %s', 'eightshift-forms'), type, help); + + if (type === 'resultOutputItem') { + helpText = __('Identifies the what result output item the user will see after sucesfull submit redirect.', 'eightshift-forms'); + } + return ( <> {show && <> } - help={sprintf(__('Identifies the %s within form submission data. Must be unique. %s', 'eightshift-forms'), type, help)} + help={helpText} value={value} onChange={(value) => { setIsChanged(true); @@ -458,7 +471,7 @@ export const NameField = ({ disabled={isDisabled} /> - + } @@ -514,6 +527,9 @@ export const NameChangeWarning = ({ case 'step': text = __('After changing the step name, ensure that you review forms multi-flow configurations to avoid any errors.', 'eightshift-forms'); break; + case 'resultOutputItem': + text = __('After changing the result item variable name, ensure that you provide the correct variation name via form settings.', 'eightshift-forms'); + break; default: text = __('After changing the field name, ensure that you review all conditional tags and form multi-flow configurations to avoid any errors.', 'eightshift-forms'); break; diff --git a/src/Blocks/custom/forms/components/forms-options.js b/src/Blocks/custom/forms/components/forms-options.js index ae5faf56..5a7d2133 100644 --- a/src/Blocks/custom/forms/components/forms-options.js +++ b/src/Blocks/custom/forms/components/forms-options.js @@ -4,7 +4,6 @@ import React, { useEffect } from 'react'; import { useState } from '@wordpress/element'; import { isArray } from 'lodash'; import { __, sprintf } from '@wordpress/i18n'; -import { MediaPlaceholder } from '@wordpress/block-editor'; import { select } from '@wordpress/data'; import { PanelBody, TextControl, Button, Modal, ExternalLink } from '@wordpress/components'; import apiFetch from '@wordpress/api-fetch'; @@ -16,12 +15,9 @@ import { props, AsyncSelect, MultiSelect, - Select, IconToggle, Control, Section, - truncateMiddle, - Collapsable, STORE_NAME, } from '@eightshift/frontend-libs/scripts'; import { ConditionalTagsFormsOptions } from '../../../components/conditional-tags/components/conditional-tags-forms-options'; @@ -29,11 +25,9 @@ import { FormEditButton, LocationsButton, SettingsButton, - getSettingsJsonOptions, outputFormSelectItemWithIcon, } from '../../../components/utils'; import { getRestUrl } from '../../../components/form/assets/state-init'; -import { ResultsOutputOptions } from './results-output'; export const FormsOptions = ({ attributes, @@ -43,12 +37,6 @@ export const FormsOptions = ({ }) => { const manifest = select(STORE_NAME).getBlock('forms'); - const { - settings: { - successRedirectVariations, - } - } = esFormsLocalization; - const { isGeoPreview, setIsGeoPreview, @@ -60,10 +48,7 @@ export const FormsOptions = ({ const formsFormDataTypeSelector = checkAttr('formsFormDataTypeSelector', attributes, manifest); const formsFormGeolocation = checkAttr('formsFormGeolocation', attributes, manifest); const formsFormGeolocationAlternatives = checkAttr('formsFormGeolocationAlternatives', attributes, manifest); - const formsDownloads = checkAttr('formsDownloads', attributes, manifest); const formsSuccessRedirectVariation = checkAttr('formsSuccessRedirectVariation', attributes, manifest); - const formsSuccessRedirectVariationUrl = checkAttr('formsSuccessRedirectVariationUrl', attributes, manifest); - const formsSuccessRedirectVariationUrlTitle = checkAttr('formsSuccessRedirectVariationUrlTitle', attributes, manifest); const [isGeoModalOpen, setIsGeoModalOpen] = useState(false); const [geoFormFields, setGeoFormFields] = useState([]); @@ -146,127 +131,15 @@ export const FormsOptions = ({ } - - } value={resultOutputItemOperator} @@ -66,13 +51,28 @@ export const ResultOutputItemOptions = ({ } )} onChange={(value) => { - setShowEndValue(value.toUpperCase() in CONDITIONAL_TAGS_OPERATORS_EXTENDED); + setShowEndValue(value.toUpperCase() in globalManifest.comparatorExtended); setAttributes({ [getAttrKey('resultOutputItemOperator', attributes, manifest)]: value }); }} simpleValue closeMenuAfterSelect /> + + } + help={showEndValue && __('Start value must be number.', 'eightshift-forms')} + value={resultOutputItemValue} + onChange={(value) => setAttributes({ [getAttrKey('resultOutputItemValue', attributes, manifest)]: value })} + /> + {showEndValue && } diff --git a/src/Blocks/custom/result-output-item/result-output-item.php b/src/Blocks/custom/result-output-item/result-output-item.php index 306c3bb0..bd065659 100644 --- a/src/Blocks/custom/result-output-item/result-output-item.php +++ b/src/Blocks/custom/result-output-item/result-output-item.php @@ -6,6 +6,8 @@ * @package EightshiftFormsAddonComputedFields */ +use EightshiftForms\Form\Form; +use EightshiftForms\Helpers\FormsHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHelper; use EightshiftFormsVendor\EightshiftLibs\Helpers\Helpers; @@ -15,6 +17,8 @@ $resultOutputItemName = Helpers::checkAttr('resultOutputItemName', $attributes, $manifest); $resultOutputItemValue = Helpers::checkAttr('resultOutputItemValue', $attributes, $manifest); +$resultOutputItemValueEnd = Helpers::checkAttr('resultOutputItemValueEnd', $attributes, $manifest); +$resultOutputItemOperator = Helpers::checkAttr('resultOutputItemOperator', $attributes, $manifest); if (!$resultOutputItemName || !$resultOutputItemValue) { return; @@ -23,8 +27,8 @@ $resultAttrs = [ UtilsHelper::getStateAttribute('resultOutputItemKey') => esc_attr($resultOutputItemName), UtilsHelper::getStateAttribute('resultOutputItemValue') => esc_attr($resultOutputItemValue), - UtilsHelper::getStateAttribute('resultOutputItemValueEnd') => esc_attr(Helpers::checkAttr('resultOutputItemValueEnd', $attributes, $manifest)), - UtilsHelper::getStateAttribute('resultOutputItemOperator') => esc_attr(Helpers::checkAttr('resultOutputItemOperator', $attributes, $manifest)), + UtilsHelper::getStateAttribute('resultOutputItemValueEnd') => esc_attr($resultOutputItemValueEnd), + UtilsHelper::getStateAttribute('resultOutputItemOperator') => esc_attr($resultOutputItemOperator), ]; $resultAttrsOutput = ''; @@ -32,20 +36,25 @@ $resultAttrsOutput .= wp_kses_post(" {$key}='" . $value . "'"); } -$resultClass = Helpers::classnames([ +$resultClass = [ Helpers::selector($blockClass, $blockClass), - UtilsHelper::getStateSelector('isHidden'), UtilsHelper::getStateSelector('resultOutputItem'), -]); +]; -$data = isset($_GET[UtilsHelper::getStateSuccessRedirectUrlKey('data')]) ? json_decode(esFormsDecryptor(sanitize_text_field(wp_unslash($_GET[UtilsHelper::getStateSuccessRedirectUrlKey('data')]))), true) : []; +$resultOutputData = FormsHelper::checkResultOutputSuccess($resultOutputItemName, $resultOutputItemOperator, $resultOutputItemValue, $value, $resultOutputItemValueEnd); -if (isset($data[UtilsHelper::getStateSuccessRedirectUrlKey('variation')])) { - dump($data); +if ($resultOutputData['isRedirectPage']) { + if (!$resultOutputData['showOutput']) { + return; + } +} else { + $resultClass[] = UtilsHelper::getStateSelector('isHidden'); } +$resultClassOutput = Helpers::classnames($resultClass); + ?> -
    > +
    >
    diff --git a/src/Blocks/manifest.json b/src/Blocks/manifest.json index a0088dc5..0d1b7ab8 100644 --- a/src/Blocks/manifest.json +++ b/src/Blocks/manifest.json @@ -451,5 +451,30 @@ "rating": "rating", "submit": "submit" } + }, + "comparator": { + "IS": "is", + "ISN": "isn", + "GT": "gt", + "GTE": "gte", + "LT": "lt", + "LTE": "lte", + "C": "c", + "SW": "sw", + "EW": "ew" + }, + "comparatorExtended": { + "B": "b", + "BS": "bs", + "BN": "bn", + "BNS": "bns" + }, + "comparatorActions": { + "SHOW": "show", + "HIDE": "hide" + }, + "comparatorLogic": { + "OR": "or", + "AND": "and" } } diff --git a/src/Entries/EntriesHelper.php b/src/Entries/EntriesHelper.php index c65e886f..35467e27 100644 --- a/src/Entries/EntriesHelper.php +++ b/src/Entries/EntriesHelper.php @@ -84,6 +84,19 @@ public static function setEntryByFormDataRef(array $formDetails) return self::setEntry($output, $formId); } + /** + * Get entry admin URL. + * + * @param string $entryId Entry Id. + * @param string $formId Form Id. + * + * @return string + */ + public static function getEntryAdminUrl(string $entryId, string $formId): string + { + return UtilsGeneralHelper::getListingPageUrl(UtilsConfig::SLUG_ADMIN_LISTING_ENTRIES, $formId) . "#entry-{$entryId}"; + } + /** * Get entry by ID. * diff --git a/src/Entries/SettingsEntries.php b/src/Entries/SettingsEntries.php index fc9d6c4c..149fbad2 100644 --- a/src/Entries/SettingsEntries.php +++ b/src/Entries/SettingsEntries.php @@ -63,6 +63,11 @@ class SettingsEntries implements UtilsSettingGlobalInterface, UtilsSettingInterf */ public const SETTINGS_ENTRIES_SAVE_EMPTY_FIELDS = 'entries-save-empty-fields'; + /** + * Entries send entry in form submit key. + */ + public const SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY = 'entries-send-entry-in-form-submit'; + /** * Data data key. */ @@ -191,6 +196,22 @@ public function getSettingsData(string $formId): array ] ] ], + [ + 'component' => 'checkboxes', + 'checkboxesFieldLabel' => '', + 'checkboxesName' => UtilsSettingsHelper::getSettingName(self::SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY), + 'checkboxesContent' => [ + [ + 'component' => 'checkbox', + 'checkboxLabel' => \__('Send entry number via form submit data', 'eightshift-forms'), + 'checkboxHelp' => \__('Once entry is created its Id will be added to the form response data and also sent to success redirect variation data.', 'eightshift-forms'), + 'checkboxIsChecked' => UtilsSettingsHelper::isSettingCheckboxChecked(self::SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY, self::SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY, $formId), + 'checkboxValue' => self::SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY, + 'checkboxSingleSubmit' => true, + 'checkboxAsToggle' => true, + ] + ] + ], ] : []), ], ], diff --git a/src/Form/Form.php b/src/Form/Form.php index 96c0f023..8b492325 100644 --- a/src/Form/Form.php +++ b/src/Form/Form.php @@ -536,7 +536,7 @@ private function getSecureFormData(string $type, string $formId, string $prefix, // Success redirect variation. // if (!$attributes["{$prefix}SuccessRedirectVariation"]) { - // $successRedirectUrl = FiltersOuputMock::getSuccessRedirectVariationFilterValue($type, $formId)['data']; + // $successRedirectUrl = FiltersOuputMock::getVariationFilterValue($type, $formId)['data']; // if ($successRedirectUrl) { // $outputSecureData["SuccessRedirectVariation"] = $successRedirectUrl; diff --git a/src/General/SettingsGeneral.php b/src/General/SettingsGeneral.php index 1a169e39..018d2112 100644 --- a/src/General/SettingsGeneral.php +++ b/src/General/SettingsGeneral.php @@ -116,7 +116,7 @@ static function ($item, $key) { $formType = $formDetails[UtilsConfig::FD_TYPE] ?? ''; $successRedirectUrl = FiltersOuputMock::getSuccessRedirectUrlFilterValue($formType, $formId); - $successRedirectVariation = FiltersOuputMock::getSuccessRedirectVariationFilterValue($formType, $formId); + $variation = FiltersOuputMock::getVariationFilterValue($formType, $formId, []); $trackingEventName = FiltersOuputMock::getTrackingEventNameFilterValue($formType, $formId); $trackingAdditionalData = FiltersOuputMock::getTrackingAditionalDataFilterValue($formType, $formId); @@ -154,15 +154,15 @@ static function ($item, $key) { ], [ 'component' => 'textarea', - 'textareaFieldLabel' => \__('Redirect variation', 'eightshift-forms'), + 'textareaFieldLabel' => \__('Variation', 'eightshift-forms'), 'textareaIsMonospace' => true, 'textareaSaveAsJson' => true, 'textareaName' => UtilsSettingsHelper::getSettingName(self::SETTINGS_SUCCESS_REDIRECT_VARIATION_KEY), 'textareaFieldHelp' => \sprintf(\__(' Define redirection value that you can use in your Result output items.
    Each key must be in a separate line. - %s', 'eightshift-forms'), $successRedirectVariation['settingsLocal']), - 'textareaValue' => UtilsSettingsHelper::getSettingValueAsJson(self::SETTINGS_SUCCESS_REDIRECT_VARIATION_KEY, $formId, 1), + %s', 'eightshift-forms'), $variation['settingsLocal']), + 'textareaValue' => UtilsSettingsHelper::getSettingValueAsJson(self::SETTINGS_SUCCESS_REDIRECT_VARIATION_KEY, $formId, 2), ], [ 'component' => 'checkboxes', diff --git a/src/Helpers/FormsHelper.php b/src/Helpers/FormsHelper.php index f369575c..e6eebae6 100644 --- a/src/Helpers/FormsHelper.php +++ b/src/Helpers/FormsHelper.php @@ -10,6 +10,7 @@ namespace EightshiftForms\Helpers; +use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHelper; use EightshiftFormsVendor\EightshiftLibs\Helpers\Helpers; /** @@ -28,4 +29,180 @@ public static function getStateFieldType(string $name): string { return Helpers::getSettings()['enums']['typeInternal'][$name] ?? ''; } + + /** + * Return field type internal enum values by name. + * + * is - is - if value is exact match. + * isn - is not - if value is not exact match. + * gt - greater than - if value is greater than. + * gte - greater/equal than - if value is greater/equal than. + * lt - less than - if value is less than. + * lte - less/equal than - if value is less/equal than. + * c - contains - if value contains value. + * sw - starts with - if value starts with value. + * ew - ends with - if value starts with value. + * b - between range - if value is between two values. + * bs - between range strict - if value is between two values strict. + * bn - not between range - if value is not between two values. + * bns - not between between range strict - if value is not between two values strict. + * + * @param string $action Action to perform. + * @param string $start Start value. + * @param string $value Value to compare. + * @param string $end End value. + * + * @return array + */ + public static function getComparator(string $action, string $start, string $value, string $end = '') { + $operator = Helpers::getSettings()['comparator']; + $operatorExtended = Helpers::getSettings()['comparatorExtended']; + + switch ($action) { + case $operator['IS']: + return $value === $start; + case $operator['ISN']: + return $value !== $start; + case $operator['GT']: + return \floatval($start) > \floatval($value); + case $operator['GTE']: + return \floatval($start) >= \floatval($value); + case $operator['LT']: + return \floatval($start) < \floatval($value); + case $operator['LTE']: + return \floatval($start) <= \floatval($value); + case $operator['C']: + return \strpos($start, $value) !== false; + case $operator['SW']: + return \strpos($start, $value) === 0; + case $operator['EW']: + return \substr($start, -\strlen($value)) === $value; + case $operatorExtended['B']: + return \floatval($start) > \floatval($value) && \floatval($start) < \floatval($end); + case $operatorExtended['BS']: + return \floatval($start) >= \floatval($value) && \floatval($start) <= \floatval($end); + case $operatorExtended['BN']: + return \floatval($start) < \floatval($value) || \floatval($start) > \floatval($end); + case $operatorExtended['BNS']: + return \floatval($start) <= \floatval($value) || \floatval($start) >= \floatval($end); + default: + return false; + } + } + + /** + * Check if the result output success should be shown. + * + * @param string $name Name of the item. + * @param string $operator Operator to use. + * @param string $start Start value. + * @param string $value Value to compare. + * @param string $end End value. + * + * @return array + */ + public static function checkResultOutputSuccess(string $name, string $operator, string $start, string $value, string $end): array + { + $data = isset($_GET[UtilsHelper::getStateSuccessRedirectUrlKey('data')]) ? json_decode(esFormsDecryptor(sanitize_text_field(wp_unslash($_GET[UtilsHelper::getStateSuccessRedirectUrlKey('data')]))), true) : []; + + if (!$data) { + return [ + 'isRedirectPage' => false, + 'showOutput' => false, + ]; + } + + $variationData = $data[UtilsHelper::getStateSuccessRedirectUrlKey('variation')] ?? []; + + if (!$variationData) { + return [ + 'isRedirectPage' => false, + 'showOutput' => false, + ]; + } + + $showOutput = false; + + foreach ($variationData as $key => $value) { + if (!$key || !$value) { + continue; + } + + if ($name !== $key) { + continue; + } + + if (FormsHelper::getComparator($operator, $start, $value, $end)) { + $showOutput = true; + break; + } + } + + if (!$showOutput) { + return [ + 'isRedirectPage' => true, + 'showOutput' => false, + ]; + } + + return [ + 'isRedirectPage' => true, + 'showOutput' => true, + ]; + } + + /** + * Get result output success item part shortcode value. + * + * @param string $name Name of the item. + * + * @return string + */ + public static function getResultOutputSuccessItemPartShortcodeValue(string $name): array + { + $data = isset($_GET[UtilsHelper::getStateSuccessRedirectUrlKey('data')]) ? json_decode(esFormsDecryptor(sanitize_text_field(wp_unslash($_GET[UtilsHelper::getStateSuccessRedirectUrlKey('data')]))), true) : []; + + if (!$data) { + return [ + 'isRedirectPage' => false, + 'value' => '', + ]; + } + + $variationData = $data[UtilsHelper::getStateSuccessRedirectUrlKey('variation')] ?? []; + + if (!$variationData) { + return [ + 'isRedirectPage' => false, + 'value' => '', + ]; + } + + $output = ''; + + foreach ($variationData as $key => $value) { + if (!$key || !$value) { + continue; + } + + if ($name !== $key) { + continue; + } + + $output = $value; + break; + } + + if (!$output) { + [ + 'isRedirectPage' => true, + 'value' => '', + ]; + } + + return [ + 'isRedirectPage' => true, + 'value' => $output, + ]; + } } diff --git a/src/Hooks/Filters.php b/src/Hooks/Filters.php index ce4985e5..a1985911 100644 --- a/src/Hooks/Filters.php +++ b/src/Hooks/Filters.php @@ -73,18 +73,15 @@ private static function getPublicFilters(): array 'redirectionTimeout', 'hideGlobalMsgTimeout', 'successRedirectUrl', - 'successRedirectVariation', + 'variation', 'trackingEventName', 'trackingAdditionalData', 'dataTypeSelector', 'phoneSync', 'globalMsgHeadings', 'additionalContent', - 'preResponseAddonData', 'preResponseSuccessRedirectData', 'additionalHiddenFields', - 'resultOutputItems', - 'resultOutputParts', 'customClassSelector', 'componentShowForm', ], diff --git a/src/Hooks/FiltersOuputMock.php b/src/Hooks/FiltersOuputMock.php index faf5f33f..1a3ec571 100644 --- a/src/Hooks/FiltersOuputMock.php +++ b/src/Hooks/FiltersOuputMock.php @@ -73,15 +73,18 @@ public static function getEnrichmentManualMapFilterValue(array $config): array } /** - * Return success redirect variations data filter output. + * Return variations data filter output. * * @param string $type Type of integration. * @param string $formId Form ID. + * @param array $formDetails Form details. * * @return array */ - public static function getSuccessRedirectVariationFilterValue(string $type, string $formId): array + public static function getVariationFilterValue(string $type, string $formId, array $formDetails): array { + $shouldAppend = UtilsSettingsHelper::isSettingCheckboxChecked(SettingsGeneral::SETTINGS_SUCCESS_REDIRECT_VARIATION_SHOULD_APPEND_ON_GLOBAL_KEY, SettingsGeneral::SETTINGS_SUCCESS_REDIRECT_VARIATION_SHOULD_APPEND_ON_GLOBAL_KEY, $formId); + // Find global settings per integration. $data = UtilsSettingsHelper::getOptionValueGroup($type . '-' . SettingsGeneral::SETTINGS_SUCCESS_REDIRECT_VARIATION_KEY); $filterUsed = false; @@ -89,20 +92,16 @@ public static function getSuccessRedirectVariationFilterValue(string $type, stri // Find local settings for form. $dataLocal = UtilsSettingsHelper::getSettingValueGroup(SettingsGeneral::SETTINGS_SUCCESS_REDIRECT_VARIATION_KEY, $formId); if ($dataLocal) { - if (UtilsSettingsHelper::isSettingCheckboxChecked(SettingsGeneral::SETTINGS_SUCCESS_REDIRECT_VARIATION_SHOULD_APPEND_ON_GLOBAL_KEY, SettingsGeneral::SETTINGS_SUCCESS_REDIRECT_VARIATION_SHOULD_APPEND_ON_GLOBAL_KEY, $formId)) { - $data = \array_merge($data, $dataLocal); - } else { - $data = $dataLocal; - } + $data = $shouldAppend ? \array_merge($data, $dataLocal) : $dataLocal; } // Find local settings per integration or filter data. - $filterNameLocal = UtilsHooksHelper::getFilterName(['block', 'form', 'successRedirectVariation']); + $filterNameLocal = UtilsHooksHelper::getFilterName(['block', 'form', 'variation']); if (\has_filter($filterNameLocal)) { - $dataFilter = \apply_filters($filterNameLocal, [], $type, $formId) ?? []; + $dataFilter = \apply_filters($filterNameLocal, [], $formDetails, $formId); if ($dataFilter) { - $data = $dataFilter; + $data = $shouldAppend ? \array_merge(\array_column($data, 1, 0), $dataFilter) : $dataFilter; $filterUsed = true; } } diff --git a/src/Hooks/FiltersSettingsBuilder.php b/src/Hooks/FiltersSettingsBuilder.php index bb5f6fd4..5c5bd9d3 100644 --- a/src/Hooks/FiltersSettingsBuilder.php +++ b/src/Hooks/FiltersSettingsBuilder.php @@ -232,8 +232,8 @@ public function getSettingsFiltersData(): array 'emailTemplateTags' => [ // Empty string as we are not using it to match the value. 'mailerSuccessRedirectUrl' => '', - 'mailerResultOutputItems' => '', - 'mailerResultOutputParts' => '', + 'mailerEntryId' => '', + 'mailerEntryUrl' => '', ], 'labels' => [ 'title' => \__('Mailer', 'eightshift-forms'), diff --git a/src/Integrations/AbstractSettingsIntegrations.php b/src/Integrations/AbstractSettingsIntegrations.php index 41876755..0eb13edc 100644 --- a/src/Integrations/AbstractSettingsIntegrations.php +++ b/src/Integrations/AbstractSettingsIntegrations.php @@ -28,7 +28,7 @@ abstract class AbstractSettingsIntegrations protected function getGlobalGeneralSettings(string $integrationType): array { $successRedirectUrl = FiltersOuputMock::getSuccessRedirectUrlFilterValue($integrationType, ''); - $successRedirectVariation = FiltersOuputMock::getSuccessRedirectVariationFilterValue($integrationType, ''); + $variation = FiltersOuputMock::getVariationFilterValue($integrationType, '', []); return [ [ @@ -59,9 +59,9 @@ protected function getGlobalGeneralSettings(string $integrationType): array %s ', 'eightshift-forms'), \ucfirst($integrationType), - $successRedirectVariation['settingsGlobal'], + $variation['settingsGlobal'], ), - 'textareaValue' => UtilsSettingsHelper::getOptionValueAsJson($integrationType . '-' . SettingsGeneral::SETTINGS_SUCCESS_REDIRECT_VARIATION_KEY, 1), + 'textareaValue' => UtilsSettingsHelper::getOptionValueAsJson($integrationType . '-' . SettingsGeneral::SETTINGS_SUCCESS_REDIRECT_VARIATION_KEY, 2), ], ]; } diff --git a/src/Rest/Routes/AbstractFormSubmit.php b/src/Rest/Routes/AbstractFormSubmit.php index 74cb161f..e889bb9b 100644 --- a/src/Rest/Routes/AbstractFormSubmit.php +++ b/src/Rest/Routes/AbstractFormSubmit.php @@ -23,7 +23,6 @@ use EightshiftForms\Labels\LabelsInterface; // phpcs:ignore SlevomatCodingStandard.Namespaces.UnusedUses.UnusedUse use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsApiHelper; use EightshiftForms\Rest\Routes\Integrations\Mailer\FormSubmitMailerInterface; // phpcs:ignore SlevomatCodingStandard.Namespaces.UnusedUses.UnusedUse -use EightshiftForms\ResultOutput\SettingsResultOutput; use EightshiftForms\Security\SecurityInterface; // phpcs:ignore SlevomatCodingStandard.Namespaces.UnusedUses.UnusedUse use EightshiftForms\Validation\ValidationPatternsInterface; // phpcs:ignore SlevomatCodingStandard.Namespaces.UnusedUses.UnusedUse use EightshiftForms\Validation\ValidatorInterface; // phpcs:ignore SlevomatCodingStandard.Namespaces.UnusedUses.UnusedUse @@ -331,8 +330,6 @@ protected function getIntegrationCommonSubmitAction(array $formDetails, $callbac $validation = $response[UtilsConfig::IARD_VALIDATION] ?? []; $status = $response[UtilsConfig::IARD_STATUS] ?? UtilsConfig::STATUS_ERROR; - $formDetails = $this->getIntegrationResponsePreSubmitFormDetailsManipulation($formDetails); - $disableFallbackEmail = false; // Output integrations validation issues. @@ -377,8 +374,6 @@ protected function getIntegrationCommonSubmitAction(array $formDetails, $callbac } if ($status === UtilsConfig::STATUS_SUCCESS) { - $formDetails = $this->getIntegrationResponsePreSuccessFormDetailsManipulation($formDetails); - $successAdditionalData = $this->getIntegrationResponseSuccessOutputAdditionalData($formDetails); // Send email if it is configured in the backend. @@ -406,49 +401,6 @@ protected function getIntegrationCommonSubmitAction(array $formDetails, $callbac ); } - /** - * Get integration response pre submit form details manipulation. - * - * @param array $formDetails Data passed from the `getFormDetailsApi` function. - * - * @return array - */ - protected function getIntegrationResponsePreSubmitFormDetailsManipulation(array $formDetails): array - { - // Pre response filter for addon data. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'preResponseAddonData']); - if (\has_filter($filterName)) { - $filterDetails = \apply_filters($filterName, [], $formDetails); - - if ($filterDetails) { - $formDetails[UtilsConfig::FD_ADDON] = $filterDetails; - } - } - - return $formDetails; - } - - /** - * Get integration response pre success form details manipulation. - * - * @param array $formDetails Data passed from the `getFormDetailsApi` function. - * - * @return array - */ - protected function getIntegrationResponsePreSuccessFormDetailsManipulation(array $formDetails): array - { - $formId = $formDetails[UtilsConfig::FD_FORM_ID]; - - // This filter must be always on the fitsr place in order to work properly with addons. - if (\apply_filters(SettingsEntries::FILTER_SETTINGS_IS_VALID_NAME, $formId)) { - $entryId = EntriesHelper::setEntryByFormDataRef($formDetails); - $formDetails[UtilsConfig::FD_ENTRY_ID] = $entryId ? (string) $entryId : ''; - } - - return $formDetails; - } - - /** * Get integration response output additional data on error or success. * @@ -474,6 +426,8 @@ protected function getIntegrationResponseAnyOutputAdditionalData(array $formDeta $output[UtilsHelper::getStateResponseOutputKey('trackingAdditionalData')] = $trackingAdditionalData; } + $output[UtilsHelper::getStateResponseOutputKey('formId')] = $formId; + return $output; } @@ -491,23 +445,11 @@ protected function getIntegrationResponseSuccessOutputAdditionalData(array $form $output = []; - // Return result output items as a response key. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputItems']); - if (\has_filter($filterName)) { - $filterOutput = \apply_filters($filterName, [], $formDetails, $formId) ?? []; - - if ($filterOutput) { - $output[UtilsHelper::getStateResponseOutputKey('resultOutputItems')] = $filterOutput; - } - } - - // Output result output parts as a response key. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputParts']); - if (\has_filter($filterName)) { - $filterOutput = \apply_filters($filterName, [], $formDetails, $formId) ?? []; - - if ($filterOutput) { - $output[UtilsHelper::getStateResponseOutputKey('resultOutputParts')] = $filterOutput; + // Set entries. + if (\apply_filters(SettingsEntries::FILTER_SETTINGS_IS_VALID_NAME, $formId)) { + $entryId = EntriesHelper::setEntryByFormDataRef($formDetails); + if ($entryId && UtilsSettingsHelper::isSettingCheckboxChecked(SettingsEntries::SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY, SettingsEntries::SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY, $formId)) { + $output[UtilsHelper::getStateResponseOutputKey('entry')] = (string) $entryId; } } @@ -523,6 +465,12 @@ protected function getIntegrationResponseSuccessOutputAdditionalData(array $form $output[UtilsHelper::getStateResponseOutputKey('hideFormOnSuccess')] = $hideFormOnSuccess; } + // Add success redirect variation. + $variation = FiltersOuputMock::getVariationFilterValue($type, $formId, $formDetails)['data']; + if ($variation) { + $output[UtilsHelper::getStateResponseOutputKey('variation')] = $variation; + } + // Success redirect url. $successRedirectUrl = FiltersOuputMock::getSuccessRedirectUrlFilterValue($type, $formId)['data']; if ($successRedirectUrl) { @@ -546,10 +494,12 @@ protected function getIntegrationResponseSuccessOutputAdditionalData(array $form } } - // Add success redirect variation. - $variation = FiltersOuputMock::getSuccessRedirectVariationFilterValue($type, $formId)['data']; - if ($variation) { - $redirectDataOutput[UtilsHelper::getStateSuccessRedirectUrlKey('variation')] = $variation; + if (isset($output[UtilsHelper::getStateResponseOutputKey('variation')])) { + $redirectDataOutput[UtilsHelper::getStateSuccessRedirectUrlKey('variation')] = $output[UtilsHelper::getStateResponseOutputKey('variation')]; + } + + if (isset($output[UtilsHelper::getStateResponseOutputKey('entry')])) { + $redirectDataOutput[UtilsHelper::getStateSuccessRedirectUrlKey('entry')] = $output[UtilsHelper::getStateResponseOutputKey('entry')]; } $output[UtilsHelper::getStateResponseOutputKey('successRedirectUrl')] = \add_query_arg( @@ -560,12 +510,7 @@ protected function getIntegrationResponseSuccessOutputAdditionalData(array $form ); } - // Append additional addon data from filter. - if (isset($formDetails[UtilsConfig::FD_ADDON]) && $formDetails[UtilsConfig::FD_ADDON]) { - $output[UtilsHelper::getStateResponseOutputKey('addon')] = $formDetails[UtilsConfig::FD_ADDON]; - } - - return array_merge( + return \array_merge( $output, $this->getIntegrationResponseAnyOutputAdditionalData($formDetails) ); @@ -623,18 +568,23 @@ protected function getCommonEmailResponseTags(array $data): array $allowedTags = \apply_filters(UtilsConfig::FILTER_SETTINGS_DATA, [])[SettingsMailer::SETTINGS_TYPE_KEY]['emailTemplateTags'] ?? []; - foreach ($data as $key => $value) { - $key = "mailer" . \ucfirst($key); - - if (!isset($allowedTags[$key])) { - continue; - } + foreach ($allowedTags as $key => $value) { + switch ($key) { + case 'mailerSuccessRedirectUrl': + $output[$key] = $data[UtilsHelper::getStateResponseOutputKey('successRedirectUrl')] ?? ''; + break; + case 'mailerEntryId': + $output[$key] = $data[UtilsHelper::getStateResponseOutputKey('entry')] ?? ''; + break; + case 'mailerEntryUrl': + $entryId = $data[UtilsHelper::getStateResponseOutputKey('entry')] ?? ''; + $formId = $data[UtilsHelper::getStateResponseOutputKey('formId')] ?? ''; - if (\is_array($value)) { - $value = \json_encode($value); + if ($entryId && $formId) { + $output[$key] = EntriesHelper::getEntryAdminUrl($entryId, $formId); + } + break; } - - $output[$key] = $value; } return $output; diff --git a/src/Rest/Routes/Integrations/Calculator/FormSubmitCalculatorRoute.php b/src/Rest/Routes/Integrations/Calculator/FormSubmitCalculatorRoute.php index 668ebc69..6d37a35e 100644 --- a/src/Rest/Routes/Integrations/Calculator/FormSubmitCalculatorRoute.php +++ b/src/Rest/Routes/Integrations/Calculator/FormSubmitCalculatorRoute.php @@ -20,7 +20,6 @@ use EightshiftForms\Validation\ValidatorInterface; use EightshiftFormsVendor\EightshiftFormsUtils\Config\UtilsConfig; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsApiHelper; -use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHooksHelper; /** @@ -90,24 +89,10 @@ protected function submitAction(array $formDetails) $formDetails[UtilsConfig::FD_PARAMS] = \apply_filters($filterName, $formDetails[UtilsConfig::FD_PARAMS], $formId) ?? []; } - $additionalOutput = []; - - // Output result output items as a response key. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputItems']); - if (\has_filter($filterName)) { - $additionalOutput[UtilsHelper::getStateResponseOutputKey('resultOutputItems')] = \apply_filters($filterName, [], $formDetails, $formId) ?? []; - } - - // Output result output parts as a response key. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputParts']); - if (\has_filter($filterName)) { - $additionalOutput[UtilsHelper::getStateResponseOutputKey('resultOutputParts')] = \apply_filters($filterName, [], $formDetails, $formId) ?? []; - } - return \rest_ensure_response( UtilsApiHelper::getApiSuccessPublicOutput( $this->labels->getLabel('calculatorSuccess', $formId), - $additionalOutput, + [], $debug ) ); diff --git a/src/Rest/Routes/Integrations/Mailer/FormSubmitCustomRoute.php b/src/Rest/Routes/Integrations/Mailer/FormSubmitCustomRoute.php index a1d91830..696e558b 100644 --- a/src/Rest/Routes/Integrations/Mailer/FormSubmitCustomRoute.php +++ b/src/Rest/Routes/Integrations/Mailer/FormSubmitCustomRoute.php @@ -22,7 +22,6 @@ use EightshiftForms\Security\SecurityInterface; use EightshiftForms\Validation\ValidationPatternsInterface; use EightshiftFormsVendor\EightshiftFormsUtils\Config\UtilsConfig; -use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHooksHelper; /** @@ -82,12 +81,6 @@ protected function submitAction(array $formDetails) $action = $formDetails[UtilsConfig::FD_ACTION]; $actionExternal = $formDetails[UtilsConfig::FD_ACTION_EXTERNAL]; - // Save entries. - if (\apply_filters(SettingsEntries::FILTER_SETTINGS_IS_VALID_NAME, $formId)) { - $entryId = EntriesHelper::setEntryByFormDataRef($formDetails); - $formDetails[UtilsConfig::FD_ENTRY_ID] = $entryId ? (string) $entryId : ''; - } - $debug = [ 'formDetails' => $formDetails, ]; @@ -148,25 +141,11 @@ protected function submitAction(array $formDetails) ); } - $additionalOutput = []; - - // Output result output items as a response key. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputItems']); - if (\has_filter($filterName)) { - $additionalOutput[UtilsHelper::getStateResponseOutputKey('resultOutputItems')] = \apply_filters($filterName, [], $formDetails, $formId) ?? []; - } - - // Output result output parts as a response key. - $filterName = UtilsHooksHelper::getFilterName(['block', 'form', 'resultOutputParts']); - if (\has_filter($filterName)) { - $additionalOutput[UtilsHelper::getStateResponseOutputKey('resultOutputParts')] = \apply_filters($filterName, [], $formDetails, $formId) ?? []; - } - // Finish. return \rest_ensure_response( UtilsApiHelper::getApiSuccessPublicOutput( $this->labels->getLabel('customSuccess', $formId), - $additionalOutput, + [], $debug ) ); diff --git a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php index 77135837..650b980c 100644 --- a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php +++ b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php @@ -77,9 +77,6 @@ protected function submitAction(array $formDetails) { $formId = $formDetails[UtilsConfig::FD_FORM_ID]; - // Pre submit form details manipulation. - $formDetails = $this->getIntegrationResponsePreSubmitFormDetailsManipulation($formDetails); - // Located before the sendEmail mentod so we can utilize common email response tags. $successAdditionalData = $this->getIntegrationResponseSuccessOutputAdditionalData($formDetails); @@ -94,9 +91,6 @@ protected function submitAction(array $formDetails) $debug = $mailerResponse['debug'] ?? []; if ($status === UtilsConfig::STATUS_SUCCESS) { - // Pre success form details manipulation. - $formDetails = $this->getIntegrationResponsePreSuccessFormDetailsManipulation($formDetails); - return \rest_ensure_response( UtilsApiHelper::getApiSuccessPublicOutput( $this->labels->getLabel($label, $formId), diff --git a/src/Shortcode/ResultOutputItemPart.php b/src/Shortcode/ResultOutputItemPart.php index 18c02c0e..07170649 100644 --- a/src/Shortcode/ResultOutputItemPart.php +++ b/src/Shortcode/ResultOutputItemPart.php @@ -10,6 +10,7 @@ namespace EightshiftForms\Shortcode; +use EightshiftForms\Helpers\FormsHelper; use EightshiftFormsVendor\EightshiftFormsUtils\Helpers\UtilsHelper; use EightshiftFormsVendor\EightshiftLibs\Services\ServiceInterface; @@ -41,7 +42,6 @@ public function callback(array $atts, string $content): string $params = \shortcode_atts( [ 'name' => '', - 'type' => '', ], $atts ); @@ -52,18 +52,23 @@ public function callback(array $atts, string $content): string return ''; } + // Check if we are on success redirect page. + $resultOutputData = FormsHelper::getResultOutputSuccessItemPartShortcodeValue($name); + + // Used only on success redirect page. + if ($resultOutputData['isRedirectPage']) { + $class = UtilsHelper::getStateSelector('resultOutputPart'); + $outputValue = $resultOutputData['value'] ?? $content; + return "{$outputValue}"; + } + + // Used on the same page as the form and changed via JS. $attrs = [ UtilsHelper::getStateAttribute('resultOutputPart') => $name, UtilsHelper::getStateAttribute('resultOutputPartDefault') => $content, 'class' => UtilsHelper::getStateSelector('resultOutputPart'), ]; - $type = isset($params['type']) ? \esc_html($params['type']) : ''; - - if ($type) { - $attrs['data-type'] = $type; - } - $attrsOutput = ''; foreach ($attrs as $key => $value) { $attrsOutput .= \wp_kses_post(" {$key}='" . $value . "'"); From ad5afc46d3a6eba25d403054358335f29f6e5043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Ruz=CC=8Cevic=CC=81?= Date: Wed, 17 Jul 2024 17:57:12 +0200 Subject: [PATCH 11/35] adding additional check --- src/AdminMenus/FormAdminMenu.php | 4 ++ src/Entries/EntriesHelper.php | 37 ++++++++++ src/Entries/SettingsEntries.php | 31 +++++--- src/Rest/Routes/AbstractFormSubmit.php | 71 ++++++++++++++----- .../Mailer/FormSubmitMailerRoute.php | 9 ++- 5 files changed, 124 insertions(+), 28 deletions(-) diff --git a/src/AdminMenus/FormAdminMenu.php b/src/AdminMenus/FormAdminMenu.php index aff9fbba..44167e30 100644 --- a/src/AdminMenus/FormAdminMenu.php +++ b/src/AdminMenus/FormAdminMenu.php @@ -761,6 +761,10 @@ function ($value, $key) { } } + if (\filter_var($entryValue, FILTER_VALIDATE_URL)) { + $entryValue = "{$entryValue}"; + } + $content .= "
  • {$entryKey}:{$entryValue}
  • "; } $content .= '
'; diff --git a/src/Entries/EntriesHelper.php b/src/Entries/EntriesHelper.php index 35467e27..f3e455c7 100644 --- a/src/Entries/EntriesHelper.php +++ b/src/Entries/EntriesHelper.php @@ -243,6 +243,43 @@ public static function setEntry(array $data, string $formId) return $wpdb->insert_id; //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps } + /** + * Update entry. + * + * @param array $data Data to update. + * @param string $id Entry Id. + * + * @return boolean + */ + public static function updateEntry(array $data, string $id): bool + { + global $wpdb; + + $output = \wp_json_encode($data); + + $result = $wpdb->update( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery + self::getFullTableName(), + [ + 'entry_value' => $output, + ], + [ + 'id' => (int) $id, + ], + [ + '%s', + ], + [ + '%d', + ] + ); + + if (\is_wp_error($result)) { + return false; + } + + return true; + } + /** * Delete entry. * diff --git a/src/Entries/SettingsEntries.php b/src/Entries/SettingsEntries.php index 149fbad2..61d2fd48 100644 --- a/src/Entries/SettingsEntries.php +++ b/src/Entries/SettingsEntries.php @@ -64,9 +64,11 @@ class SettingsEntries implements UtilsSettingGlobalInterface, UtilsSettingInterf public const SETTINGS_ENTRIES_SAVE_EMPTY_FIELDS = 'entries-save-empty-fields'; /** - * Entries send entry in form submit key. + * Entries settings send entry in form submit key. */ - public const SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY = 'entries-send-entry-in-form-submit'; + public const SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_KEY = 'entries-save-additional-values'; + public const SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_REDIRECT_URL_KEY = 'redirect-url'; + public const SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_VARIATIONS_KEY = 'variations'; /** * Data data key. @@ -196,17 +198,30 @@ public function getSettingsData(string $formId): array ] ] ], + [ + 'component' => 'divider', + 'dividerExtraVSpacing' => true, + ], [ 'component' => 'checkboxes', - 'checkboxesFieldLabel' => '', - 'checkboxesName' => UtilsSettingsHelper::getSettingName(self::SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY), + 'checkboxesFieldLabel' => \__('Save additional keys to your record entry.', 'eightshift-forms'), + 'checkboxesName' => UtilsSettingsHelper::getSettingName(self::SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_KEY), 'checkboxesContent' => [ [ 'component' => 'checkbox', - 'checkboxLabel' => \__('Send entry number via form submit data', 'eightshift-forms'), - 'checkboxHelp' => \__('Once entry is created its Id will be added to the form response data and also sent to success redirect variation data.', 'eightshift-forms'), - 'checkboxIsChecked' => UtilsSettingsHelper::isSettingCheckboxChecked(self::SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY, self::SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY, $formId), - 'checkboxValue' => self::SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY, + 'checkboxLabel' => \__('Success redirect url', 'eightshift-forms'), + 'checkboxHelp' => \__('Full URL where user will be redirected after successful form submission.', 'eightshift-forms'), + 'checkboxIsChecked' => UtilsSettingsHelper::isSettingCheckboxChecked(self::SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_REDIRECT_URL_KEY, self::SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_KEY, $formId), + 'checkboxValue' => self::SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_REDIRECT_URL_KEY, + 'checkboxSingleSubmit' => true, + 'checkboxAsToggle' => true, + ], + [ + 'component' => 'checkbox', + 'checkboxLabel' => \__('Variation values', 'eightshift-forms'), + 'checkboxHelp' => \__('List of all Variation values set by your form.', 'eightshift-forms'), + 'checkboxIsChecked' => UtilsSettingsHelper::isSettingCheckboxChecked(self::SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_VARIATIONS_KEY, self::SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_KEY, $formId), + 'checkboxValue' => self::SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_VARIATIONS_KEY, 'checkboxSingleSubmit' => true, 'checkboxAsToggle' => true, ] diff --git a/src/Rest/Routes/AbstractFormSubmit.php b/src/Rest/Routes/AbstractFormSubmit.php index e889bb9b..57c31892 100644 --- a/src/Rest/Routes/AbstractFormSubmit.php +++ b/src/Rest/Routes/AbstractFormSubmit.php @@ -380,7 +380,13 @@ protected function getIntegrationCommonSubmitAction(array $formDetails, $callbac if ($response[UtilsConfig::IARD_STATUS] === UtilsConfig::STATUS_SUCCESS) { $this->getFormSubmitMailer()->sendEmails( $formDetails, - $this->getCombinedEmailResponseTags($formDetails, $successAdditionalData) + $this->getCombinedEmailResponseTags( + $formDetails, + \array_merge( + $successAdditionalData['public'], + $successAdditionalData['private'], + ) + ) ); } @@ -388,7 +394,7 @@ protected function getIntegrationCommonSubmitAction(array $formDetails, $callbac $labelsOutput, \array_merge( $additionalOutput, - $successAdditionalData + $successAdditionalData['public'] ), $response ); @@ -443,32 +449,36 @@ protected function getIntegrationResponseSuccessOutputAdditionalData(array $form $formId = $formDetails[UtilsConfig::FD_FORM_ID] ?? ''; $type = $formDetails[UtilsConfig::FD_TYPE] ?? ''; - $output = []; + $output = [ + 'private' => [], + 'public' => [], + ]; // Set entries. - if (\apply_filters(SettingsEntries::FILTER_SETTINGS_IS_VALID_NAME, $formId)) { + $useEntries = \apply_filters(SettingsEntries::FILTER_SETTINGS_IS_VALID_NAME, $formId); + if ($useEntries) { $entryId = EntriesHelper::setEntryByFormDataRef($formDetails); - if ($entryId && UtilsSettingsHelper::isSettingCheckboxChecked(SettingsEntries::SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY, SettingsEntries::SETTINGS_ENTRIES_SEND_ENTRY_IN_FORM_SUBMIT_KEY, $formId)) { - $output[UtilsHelper::getStateResponseOutputKey('entry')] = (string) $entryId; + if ($entryId) { + $output['private'][UtilsHelper::getStateResponseOutputKey('entry')] = (string) $entryId; } } // Hide global message on success. $hideGlobalMsgOnSuccess = UtilsSettingsHelper::isSettingCheckboxChecked(SettingsGeneral::SETTINGS_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY, SettingsGeneral::SETTINGS_HIDE_GLOBAL_MSG_ON_SUCCESS_KEY, $formId); if ($hideGlobalMsgOnSuccess) { - $output[UtilsHelper::getStateResponseOutputKey('hideGlobalMsgOnSuccess')] = $hideGlobalMsgOnSuccess; + $output['public'][UtilsHelper::getStateResponseOutputKey('hideGlobalMsgOnSuccess')] = $hideGlobalMsgOnSuccess; } // Hide form on success. $hideFormOnSuccess = UtilsSettingsHelper::isSettingCheckboxChecked(SettingsGeneral::SETTINGS_HIDE_FORM_ON_SUCCESS_KEY, SettingsGeneral::SETTINGS_HIDE_FORM_ON_SUCCESS_KEY, $formId); if ($hideFormOnSuccess) { - $output[UtilsHelper::getStateResponseOutputKey('hideFormOnSuccess')] = $hideFormOnSuccess; + $output['public'][UtilsHelper::getStateResponseOutputKey('hideFormOnSuccess')] = $hideFormOnSuccess; } // Add success redirect variation. $variation = FiltersOuputMock::getVariationFilterValue($type, $formId, $formDetails)['data']; if ($variation) { - $output[UtilsHelper::getStateResponseOutputKey('variation')] = $variation; + $output['public'][UtilsHelper::getStateResponseOutputKey('variation')] = $variation; } // Success redirect url. @@ -494,15 +504,15 @@ protected function getIntegrationResponseSuccessOutputAdditionalData(array $form } } - if (isset($output[UtilsHelper::getStateResponseOutputKey('variation')])) { - $redirectDataOutput[UtilsHelper::getStateSuccessRedirectUrlKey('variation')] = $output[UtilsHelper::getStateResponseOutputKey('variation')]; + if (isset($output['public'][UtilsHelper::getStateResponseOutputKey('variation')])) { + $redirectDataOutput[UtilsHelper::getStateSuccessRedirectUrlKey('variation')] = $output['public'][UtilsHelper::getStateResponseOutputKey('variation')]; } - if (isset($output[UtilsHelper::getStateResponseOutputKey('entry')])) { - $redirectDataOutput[UtilsHelper::getStateSuccessRedirectUrlKey('entry')] = $output[UtilsHelper::getStateResponseOutputKey('entry')]; + if (isset($output['private'][UtilsHelper::getStateResponseOutputKey('entry')])) { + $redirectDataOutput[UtilsHelper::getStateSuccessRedirectUrlKey('entry')] = $output['private'][UtilsHelper::getStateResponseOutputKey('entry')]; } - $output[UtilsHelper::getStateResponseOutputKey('successRedirectUrl')] = \add_query_arg( + $output['public'][UtilsHelper::getStateResponseOutputKey('successRedirectUrl')] = \add_query_arg( [ UtilsHelper::getStateSuccessRedirectUrlKey('data') => UtilsEncryption::encryptor(\wp_json_encode($redirectDataOutput)), ], @@ -510,10 +520,35 @@ protected function getIntegrationResponseSuccessOutputAdditionalData(array $form ); } - return \array_merge( - $output, - $this->getIntegrationResponseAnyOutputAdditionalData($formDetails) - ); + // Update created entry with additional values. + if ($useEntries && isset($output['private'][UtilsHelper::getStateResponseOutputKey('entry')])) { + $entryData = EntriesHelper::getEntry($output['private'][UtilsHelper::getStateResponseOutputKey('entry')]); + + if ($entryData) { + $entryNewData = $entryData['entryValue'] ?? []; + if ( + UtilsSettingsHelper::isSettingCheckboxChecked(SettingsEntries::SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_REDIRECT_URL_KEY, SettingsEntries::SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_KEY, $formId) && + isset($output['public'][UtilsHelper::getStateResponseOutputKey('successRedirectUrl')]) + ) { + $entryNewData[UtilsHelper::getStateResponseOutputKey('successRedirectUrl')] = $output['public'][UtilsHelper::getStateResponseOutputKey('successRedirectUrl')]; + } + + if ( + UtilsSettingsHelper::isSettingCheckboxChecked(SettingsEntries::SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_VARIATIONS_KEY, SettingsEntries::SETTINGS_ENTRIES_SAVE_ADDITONAL_VALUES_KEY, $formId) && + isset($output['public'][UtilsHelper::getStateResponseOutputKey('variation')]) + ) { + $entryNewData[UtilsHelper::getStateResponseOutputKey('variation')] = $output['public'][UtilsHelper::getStateResponseOutputKey('variation')]; + } + + EntriesHelper::updateEntry($entryNewData, $output['private'][UtilsHelper::getStateResponseOutputKey('entry')]); + } + } + + return [ + 'private' => $output['private'], + 'public' => $output['public'], + 'additional' => $this->getIntegrationResponseAnyOutputAdditionalData($formDetails), + ]; } /** diff --git a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php index 650b980c..a7afee61 100644 --- a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php +++ b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php @@ -83,7 +83,12 @@ protected function submitAction(array $formDetails) // Send email. $mailerResponse = $this->getFormSubmitMailer()->sendEmails( $formDetails, - $this->getCommonEmailResponseTags($successAdditionalData) + $this->getCommonEmailResponseTags( + \array_merge( + $successAdditionalData['public'], + $successAdditionalData['private'] + ) + ) ); $status = $mailerResponse['status'] ?? UtilsConfig::STATUS_ERROR; @@ -94,7 +99,7 @@ protected function submitAction(array $formDetails) return \rest_ensure_response( UtilsApiHelper::getApiSuccessPublicOutput( $this->labels->getLabel($label, $formId), - $successAdditionalData, + $successAdditionalData['public'], $debug ) ); From 11c84f7ee5b19ff9122a16b21d2576ac567fd4db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Ruz=CC=8Cevic=CC=81?= Date: Wed, 17 Jul 2024 19:46:23 +0200 Subject: [PATCH 12/35] adding additional check --- src/Integrations/Moments/MomentsEvents.php | 22 +++++++++---- .../Moments/MomentsEventsInterface.php | 4 ++- src/Rest/Routes/AbstractFormSubmit.php | 31 ++++++++++++------- .../Hubspot/FormSubmitHubspotRoute.php | 18 ++++++++--- .../Mailer/FormSubmitMailerRoute.php | 5 ++- .../Moments/FormSubmitMomentsRoute.php | 22 ++++++++++--- 6 files changed, 74 insertions(+), 28 deletions(-) diff --git a/src/Integrations/Moments/MomentsEvents.php b/src/Integrations/Moments/MomentsEvents.php index 6ce9c230..85f641c2 100644 --- a/src/Integrations/Moments/MomentsEvents.php +++ b/src/Integrations/Moments/MomentsEvents.php @@ -29,6 +29,7 @@ class MomentsEvents extends AbstractMoments implements MomentsEventsInterface * @param string $eventName Event name value. * @param array $map Map value. * @param string $formId FormId value. + * @param array $additionaParams Additional params. * * @return array */ @@ -37,13 +38,14 @@ public function postEvent( string $emailKey, string $eventName, array $map, - string $formId + string $formId, + array $additionaParams = [] ): array { $email = \rawurlencode(UtilsGeneralHelper::getFieldDetailsByName($params, $emailKey)['value']); $url = "{$this->getBaseUrl()}peopleevents/1/persons/{$email}/definitions/{$eventName}/events"; - $body = $this->prepareParams($params, $eventName, $map, $formId); + $body = $this->prepareParams($params, $eventName, $map, $additionaParams, $formId); $response = \wp_remote_post( $url, @@ -84,12 +86,18 @@ public function postEvent( * @param array $params Form fields params. * @param string $eventName Event name value. * @param array $map Map value. + * @param array $additionaParams Additional params. * @param string $formId FormId value. * * @return array */ - private function prepareParams(array $params, string $eventName, array $map, string $formId): array - { + private function prepareParams( + array $params, + string $eventName, + array $map, + array $additionaParams, + string $formId + ): array { // Prepare output. $output = [ 'definitionId' => $eventName, @@ -102,7 +110,7 @@ private function prepareParams(array $params, string $eventName, array $map, str // Filter params. $filterName = UtilsHooksHelper::getFilterName(['integrations', SettingsMoments::SETTINGS_TYPE_KEY, 'prePostEventParams']); if (\has_filter($filterName)) { - $params = \apply_filters($filterName, $params, $eventName, $map, $formId) ?? []; + $params = \apply_filters($filterName, $params, $eventName, $map, $additionaParams, $formId) ?? []; } // Remove unecesery params. @@ -124,12 +132,14 @@ private function prepareParams(array $params, string $eventName, array $map, str // Filter params. $filterName = UtilsHooksHelper::getFilterName(['integrations', SettingsMoments::SETTINGS_TYPE_KEY, 'prePostEventParamsAfter']); if (\has_filter($filterName)) { - $properties = \apply_filters($filterName, $properties, $params, $eventName, $formId) ?? []; + $properties = \apply_filters($filterName, $properties, $params, $eventName, $additionaParams, $formId) ?? []; } // Add custom properties. $output['properties'] = $properties; + dump($output); + return $output; } } diff --git a/src/Integrations/Moments/MomentsEventsInterface.php b/src/Integrations/Moments/MomentsEventsInterface.php index a5c74d8c..1a9c27db 100644 --- a/src/Integrations/Moments/MomentsEventsInterface.php +++ b/src/Integrations/Moments/MomentsEventsInterface.php @@ -21,6 +21,7 @@ interface MomentsEventsInterface * @param string $eventName Event name value. * @param array $map Map value. * @param string $formId FormId value. + * @param array $additionaParams Additional params. * * @return array */ @@ -29,6 +30,7 @@ public function postEvent( string $emailKey, string $eventName, array $map, - string $formId + string $formId, + array $additionaParams = [] ): array; } diff --git a/src/Rest/Routes/AbstractFormSubmit.php b/src/Rest/Routes/AbstractFormSubmit.php index 57c31892..6d5c59d3 100644 --- a/src/Rest/Routes/AbstractFormSubmit.php +++ b/src/Rest/Routes/AbstractFormSubmit.php @@ -319,12 +319,10 @@ public function routeCallback(WP_REST_Request $request) * Get integration common submit action * * @param array $formDetails Data passed from the `getFormDetailsApi` function. - * @param mixed $callbackStart Callback start of the function. * * @return array */ - protected function getIntegrationCommonSubmitAction(array $formDetails, $callbackStart = null): array - { + protected function getIntegrationCommonSubmitAction(array $formDetails): array { $formId = $formDetails[UtilsConfig::FD_FORM_ID] ?? ''; $response = $formDetails[UtilsConfig::FD_RESPONSE_OUTPUT_DATA] ?? []; $validation = $response[UtilsConfig::IARD_VALIDATION] ?? []; @@ -338,11 +336,6 @@ protected function getIntegrationCommonSubmitAction(array $formDetails, $callbac $disableFallbackEmail = true; } - // Run any function callback if it is set. - if (\is_callable($callbackStart)) { - \call_user_func($callbackStart); - } - // Skip fallback email if integration is disabled. if (!$response[UtilsConfig::IARD_IS_DISABLED] && $response[UtilsConfig::IARD_STATUS] === UtilsConfig::STATUS_ERROR) { // Prevent fallback email if we have validation errors parsed. @@ -390,11 +383,14 @@ protected function getIntegrationCommonSubmitAction(array $formDetails, $callbac ); } + $this->callIntegrationResponseSuccessCallback($formDetails, $successAdditionalData); + return UtilsApiHelper::getApiSuccessPublicOutput( $labelsOutput, \array_merge( $additionalOutput, - $successAdditionalData['public'] + $successAdditionalData['public'], + $successAdditionalData['additional'] ), $response ); @@ -432,8 +428,6 @@ protected function getIntegrationResponseAnyOutputAdditionalData(array $formDeta $output[UtilsHelper::getStateResponseOutputKey('trackingAdditionalData')] = $trackingAdditionalData; } - $output[UtilsHelper::getStateResponseOutputKey('formId')] = $formId; - return $output; } @@ -544,6 +538,8 @@ protected function getIntegrationResponseSuccessOutputAdditionalData(array $form } } + $output['private'][UtilsHelper::getStateResponseOutputKey('formId')] = $formId; + return [ 'private' => $output['private'], 'public' => $output['public'], @@ -562,6 +558,19 @@ protected function getIntegrationResponseErrorOutputAdditionalData(array $formDe return $this->getIntegrationResponseAnyOutputAdditionalData($formDetails); } + /** + * Call integration response success callback. + * + * @param array $formDetails Data passed from the `getFormDetailsApi` function. + * @param array $successAdditionalData Data passed from the `getIntegrationResponseSuccessOutputAdditionalData` function. + * + * @return void + */ + protected function callIntegrationResponseSuccessCallback(array $formDetails, array $successAdditionalData): void + { + return; + } + /** * Prepare email response tags from the API response. * diff --git a/src/Rest/Routes/Integrations/Hubspot/FormSubmitHubspotRoute.php b/src/Rest/Routes/Integrations/Hubspot/FormSubmitHubspotRoute.php index d13bfb07..7b1d0155 100644 --- a/src/Rest/Routes/Integrations/Hubspot/FormSubmitHubspotRoute.php +++ b/src/Rest/Routes/Integrations/Hubspot/FormSubmitHubspotRoute.php @@ -114,13 +114,23 @@ protected function submitAction(array $formDetails) // Finish. return \rest_ensure_response( - $this->getIntegrationCommonSubmitAction( - $formDetails, - $this->runClearbit($formDetails) // @phpstan-ignore-line - ) + $this->getIntegrationCommonSubmitAction($formDetails) ); } + /** + * Call integration response success callback. + * + * @param array $formDetails Data passed from the `getFormDetailsApi` function. + * @param array $successAdditionalData Data passed from the `getIntegrationResponseSuccessOutputAdditionalData` function. + * + * @return void + */ + protected function callIntegrationResponseSuccessCallback(array $formDetails, array $successAdditionalData): void + { + $this->runClearbit($formDetails); + } + /** * Run Clearbit integration. * diff --git a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php index a7afee61..2a585f78 100644 --- a/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php +++ b/src/Rest/Routes/Integrations/Mailer/FormSubmitMailerRoute.php @@ -99,7 +99,10 @@ protected function submitAction(array $formDetails) return \rest_ensure_response( UtilsApiHelper::getApiSuccessPublicOutput( $this->labels->getLabel($label, $formId), - $successAdditionalData['public'], + \array_merge( + $successAdditionalData['public'], + $successAdditionalData['additional'] + ), $debug ) ); diff --git a/src/Rest/Routes/Integrations/Moments/FormSubmitMomentsRoute.php b/src/Rest/Routes/Integrations/Moments/FormSubmitMomentsRoute.php index 2339ebe7..3ff79253 100644 --- a/src/Rest/Routes/Integrations/Moments/FormSubmitMomentsRoute.php +++ b/src/Rest/Routes/Integrations/Moments/FormSubmitMomentsRoute.php @@ -110,23 +110,34 @@ protected function submitAction(array $formDetails) $formDetails[UtilsConfig::FD_RESPONSE_OUTPUT_DATA] = $response; - // Send event if needed. - $this->sendEvent($formDetails); - // Finish. return \rest_ensure_response( $this->getIntegrationCommonSubmitAction($formDetails) ); } + /** + * Call integration response success callback. + * + * @param array $formDetails Data passed from the `getFormDetailsApi` function. + * @param array $successAdditionalData Data passed from the `getIntegrationResponseSuccessOutputAdditionalData` function. + * + * @return void + */ + protected function callIntegrationResponseSuccessCallback(array $formDetails, array $successAdditionalData): void + { + $this->sendEvent($formDetails, $successAdditionalData); + } + /** * Send event to Moments if needed. * * @param array $formDetails Data passed from the `getFormDetailsApi` function. + * @param array $successAdditionalData Data passed from the `getIntegrationResponseSuccessOutputAdditionalData` function. * * @return void */ - private function sendEvent(array $formDetails): void + private function sendEvent(array $formDetails, array $successAdditionalData): void { $formId = $formDetails[UtilsConfig::FD_FORM_ID]; $type = $formDetails[UtilsConfig::FD_TYPE] ?? ''; @@ -151,7 +162,8 @@ private function sendEvent(array $formDetails): void $emailKey, $eventName, $map, - $formId + $formId, + $successAdditionalData ); if ($response[UtilsConfig::IARD_CODE] >= UtilsConfig::API_RESPONSE_CODE_SUCCESS && $response[UtilsConfig::IARD_CODE] <= UtilsConfig::API_RESPONSE_CODE_SUCCESS_RANGE) { From ef68a6ebaac6fed51e104be715235fcae907a7aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Ruz=CC=8Cevic=CC=81?= Date: Thu, 18 Jul 2024 08:19:34 +0200 Subject: [PATCH 13/35] adding additional check --- src/Integrations/Moments/MomentsEvents.php | 12 ++++-------- src/Integrations/Moments/MomentsEventsInterface.php | 4 +--- .../Integrations/Moments/FormSubmitMomentsRoute.php | 3 +-- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/src/Integrations/Moments/MomentsEvents.php b/src/Integrations/Moments/MomentsEvents.php index 85f641c2..eaf11eed 100644 --- a/src/Integrations/Moments/MomentsEvents.php +++ b/src/Integrations/Moments/MomentsEvents.php @@ -29,7 +29,6 @@ class MomentsEvents extends AbstractMoments implements MomentsEventsInterface * @param string $eventName Event name value. * @param array $map Map value. * @param string $formId FormId value. - * @param array $additionaParams Additional params. * * @return array */ @@ -38,14 +37,13 @@ public function postEvent( string $emailKey, string $eventName, array $map, - string $formId, - array $additionaParams = [] + string $formId ): array { $email = \rawurlencode(UtilsGeneralHelper::getFieldDetailsByName($params, $emailKey)['value']); $url = "{$this->getBaseUrl()}peopleevents/1/persons/{$email}/definitions/{$eventName}/events"; - $body = $this->prepareParams($params, $eventName, $map, $additionaParams, $formId); + $body = $this->prepareParams($params, $eventName, $map, $formId); $response = \wp_remote_post( $url, @@ -86,7 +84,6 @@ public function postEvent( * @param array $params Form fields params. * @param string $eventName Event name value. * @param array $map Map value. - * @param array $additionaParams Additional params. * @param string $formId FormId value. * * @return array @@ -95,7 +92,6 @@ private function prepareParams( array $params, string $eventName, array $map, - array $additionaParams, string $formId ): array { // Prepare output. @@ -110,7 +106,7 @@ private function prepareParams( // Filter params. $filterName = UtilsHooksHelper::getFilterName(['integrations', SettingsMoments::SETTINGS_TYPE_KEY, 'prePostEventParams']); if (\has_filter($filterName)) { - $params = \apply_filters($filterName, $params, $eventName, $map, $additionaParams, $formId) ?? []; + $params = \apply_filters($filterName, $params, $eventName, $map, $formId) ?? []; } // Remove unecesery params. @@ -132,7 +128,7 @@ private function prepareParams( // Filter params. $filterName = UtilsHooksHelper::getFilterName(['integrations', SettingsMoments::SETTINGS_TYPE_KEY, 'prePostEventParamsAfter']); if (\has_filter($filterName)) { - $properties = \apply_filters($filterName, $properties, $params, $eventName, $additionaParams, $formId) ?? []; + $properties = \apply_filters($filterName, $properties, $params, $eventName, $formId) ?? []; } // Add custom properties. diff --git a/src/Integrations/Moments/MomentsEventsInterface.php b/src/Integrations/Moments/MomentsEventsInterface.php index 1a9c27db..a5c74d8c 100644 --- a/src/Integrations/Moments/MomentsEventsInterface.php +++ b/src/Integrations/Moments/MomentsEventsInterface.php @@ -21,7 +21,6 @@ interface MomentsEventsInterface * @param string $eventName Event name value. * @param array $map Map value. * @param string $formId FormId value. - * @param array $additionaParams Additional params. * * @return array */ @@ -30,7 +29,6 @@ public function postEvent( string $emailKey, string $eventName, array $map, - string $formId, - array $additionaParams = [] + string $formId ): array; } diff --git a/src/Rest/Routes/Integrations/Moments/FormSubmitMomentsRoute.php b/src/Rest/Routes/Integrations/Moments/FormSubmitMomentsRoute.php index 3ff79253..7170cc1f 100644 --- a/src/Rest/Routes/Integrations/Moments/FormSubmitMomentsRoute.php +++ b/src/Rest/Routes/Integrations/Moments/FormSubmitMomentsRoute.php @@ -162,8 +162,7 @@ private function sendEvent(array $formDetails, array $successAdditionalData): vo $emailKey, $eventName, $map, - $formId, - $successAdditionalData + $formId ); if ($response[UtilsConfig::IARD_CODE] >= UtilsConfig::API_RESPONSE_CODE_SUCCESS && $response[UtilsConfig::IARD_CODE] <= UtilsConfig::API_RESPONSE_CODE_SUCCESS_RANGE) { From bbc8ef62e7eb3aaace1bcd15c5e0decc6b4f0425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Ruz=CC=8Cevic=CC=81?= Date: Thu, 18 Jul 2024 09:33:16 +0200 Subject: [PATCH 14/35] adding additional check --- composer.lock | 8 ++++---- src/AdminMenus/FormAdminMenu.php | 2 +- .../components/card-inline/card-inline-admin.scss | 10 ++++++++++ src/Hooks/Filters.php | 13 +++++++++++++ src/Rest/Routes/AbstractFormSubmit.php | 11 ++++++++++- 5 files changed, 38 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 15dff977..b17a6fc2 100644 --- a/composer.lock +++ b/composer.lock @@ -62,12 +62,12 @@ "source": { "type": "git", "url": "https://github.com/infinum/eightshift-forms-utils.git", - "reference": "5b1e1e77b800c04191f7ddd0a067f85822661c61" + "reference": "dd090aae494aae5e34a2b4530175a41312bcb532" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infinum/eightshift-forms-utils/zipball/5b1e1e77b800c04191f7ddd0a067f85822661c61", - "reference": "5b1e1e77b800c04191f7ddd0a067f85822661c61", + "url": "https://api.github.com/repos/infinum/eightshift-forms-utils/zipball/dd090aae494aae5e34a2b4530175a41312bcb532", + "reference": "dd090aae494aae5e34a2b4530175a41312bcb532", "shasum": "" }, "require": { @@ -134,7 +134,7 @@ "issues": "https://github.com/infinum/eightshift-forms/issues", "source": "https://github.com/infinum/eightshift-forms" }, - "time": "2024-07-17T13:26:12+00:00" + "time": "2024-07-18T07:21:38+00:00" }, { "name": "infinum/eightshift-libs", diff --git a/src/AdminMenus/FormAdminMenu.php b/src/AdminMenus/FormAdminMenu.php index 44167e30..01b49956 100644 --- a/src/AdminMenus/FormAdminMenu.php +++ b/src/AdminMenus/FormAdminMenu.php @@ -765,7 +765,7 @@ function ($value, $key) { $entryValue = "{$entryValue}"; } - $content .= "
  • {$entryKey}:{$entryValue}
  • "; + $content .= "
  • {$entryKey}:- {$entryValue}
  • "; } $content .= ''; diff --git a/src/Blocks/components/card-inline/card-inline-admin.scss b/src/Blocks/components/card-inline/card-inline-admin.scss index a24bdab8..6b59e480 100644 --- a/src/Blocks/components/card-inline/card-inline-admin.scss +++ b/src/Blocks/components/card-inline/card-inline-admin.scss @@ -124,6 +124,15 @@ li { text-overflow: ellipsis; overflow: auto; + transition: { + duration: 0.3s; + property: color; + timing-function: ease-in-out; + } + + &:hover { + color: var(--global-colors-esf-gray-950); + } strong { display: block; @@ -131,6 +140,7 @@ span { white-space: nowrap; + padding-left: 0.9375rem; } &:hover { diff --git a/src/Hooks/Filters.php b/src/Hooks/Filters.php index a1985911..fd088a63 100644 --- a/src/Hooks/Filters.php +++ b/src/Hooks/Filters.php @@ -168,18 +168,21 @@ private static function getPublicFilters(): array 'integrations' => [ SettingsMailer::SETTINGS_TYPE_KEY => [ 'prePostParams', + 'beforeSuccessResponse', ], SettingsMailchimp::SETTINGS_TYPE_KEY => [ 'data', 'order', 'prePostId', 'prePostParams', + 'beforeSuccessResponse', ], SettingsGreenhouse::SETTINGS_TYPE_KEY => [ 'data', 'order', 'prePostId', 'prePostParams', + 'beforeSuccessResponse', ], SettingsHubspot::SETTINGS_TYPE_KEY => [ 'filesOptions', @@ -187,18 +190,21 @@ private static function getPublicFilters(): array 'order', 'prePostId', 'prePostParams', + 'beforeSuccessResponse', ], SettingsMailerlite::SETTINGS_TYPE_KEY => [ 'data', 'order', 'prePostId', 'prePostParams', + 'beforeSuccessResponse', ], SettingsGoodbits::SETTINGS_TYPE_KEY => [ 'data', 'order', 'prePostId', 'prePostParams', + 'beforeSuccessResponse', ], SettingsClearbit::SETTINGS_TYPE_KEY => [ 'map', @@ -208,18 +214,21 @@ private static function getPublicFilters(): array 'order', 'prePostId', 'prePostParams', + 'beforeSuccessResponse', ], SettingsAirtable::SETTINGS_TYPE_KEY => [ 'data', 'order', 'prePostId', 'prePostParams', + 'beforeSuccessResponse', ], SettingsMoments::SETTINGS_TYPE_KEY => [ 'data', 'order', 'prePostId', 'prePostParams', + 'beforeSuccessResponse', 'prePostEventParams', 'prePostEventParamsAfter', ], @@ -228,15 +237,19 @@ private static function getPublicFilters(): array 'order', 'prePostId', 'prePostParams', + 'beforeSuccessResponse', ], SettingsJira::SETTINGS_TYPE_KEY => [ 'prePostParams', + 'beforeSuccessResponse', ], SettingsPipedrive::SETTINGS_TYPE_KEY => [ 'prePostParams', + 'beforeSuccessResponse', ], SettingsCalculator::SETTINGS_TYPE_KEY => [ 'prePostParams', + 'beforeSuccessResponse', ], ], 'entries' => [ diff --git a/src/Rest/Routes/AbstractFormSubmit.php b/src/Rest/Routes/AbstractFormSubmit.php index 6d5c59d3..ed4f3825 100644 --- a/src/Rest/Routes/AbstractFormSubmit.php +++ b/src/Rest/Routes/AbstractFormSubmit.php @@ -506,6 +506,7 @@ protected function getIntegrationResponseSuccessOutputAdditionalData(array $form $redirectDataOutput[UtilsHelper::getStateSuccessRedirectUrlKey('entry')] = $output['private'][UtilsHelper::getStateResponseOutputKey('entry')]; } + $output['public'][UtilsHelper::getStateResponseOutputKey('successRedirectBaseUrl')] = $successRedirectUrl; $output['public'][UtilsHelper::getStateResponseOutputKey('successRedirectUrl')] = \add_query_arg( [ UtilsHelper::getStateSuccessRedirectUrlKey('data') => UtilsEncryption::encryptor(\wp_json_encode($redirectDataOutput)), @@ -540,11 +541,19 @@ protected function getIntegrationResponseSuccessOutputAdditionalData(array $form $output['private'][UtilsHelper::getStateResponseOutputKey('formId')] = $formId; - return [ + $finalOutput = [ 'private' => $output['private'], 'public' => $output['public'], 'additional' => $this->getIntegrationResponseAnyOutputAdditionalData($formDetails), ]; + + // Filter params. + $filterName = UtilsHooksHelper::getFilterName(['integrations', $type, 'beforeSuccessResponse']); + if (\has_filter($filterName)) { + return \apply_filters($filterName, $finalOutput, $formDetails, $formId); + } + + return $finalOutput; } /** From db1cf154aa1db06fffbc80d6c6e1df99a90ed5e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Ruz=CC=8Cevic=CC=81?= Date: Thu, 18 Jul 2024 16:39:36 +0200 Subject: [PATCH 15/35] adding additional check --- composer.lock | 8 +- src/Blocks/components/form/assets/form.js | 6 +- .../components/form/assets/state-init.js | 2 + src/Blocks/components/form/assets/state.js | 3 + src/Blocks/components/form/form.php | 6 +- src/Blocks/components/form/manifest.json | 7 + .../custom/forms/components/forms-options.js | 314 +++++++++++++++++- src/Blocks/custom/forms/manifest.json | 26 +- .../result-output-item/result-output-item.php | 1 - src/Enqueue/Blocks/EnqueueBlocks.php | 10 + src/Form/Form.php | 110 ++++-- src/General/SettingsGeneral.php | 99 +++++- src/Hooks/Filters.php | 2 + src/Hooks/FiltersOuputMock.php | 7 +- src/Hooks/FiltersSettingsBuilder.php | 1 + .../AbstractSettingsIntegrations.php | 6 +- src/Integrations/Moments/MomentsEvents.php | 2 - src/Rest/Routes/AbstractFormSubmit.php | 62 ++++ 18 files changed, 613 insertions(+), 59 deletions(-) diff --git a/composer.lock b/composer.lock index b17a6fc2..5ab887f8 100644 --- a/composer.lock +++ b/composer.lock @@ -62,12 +62,12 @@ "source": { "type": "git", "url": "https://github.com/infinum/eightshift-forms-utils.git", - "reference": "dd090aae494aae5e34a2b4530175a41312bcb532" + "reference": "f384f693b3ce3a3a218f3dcaebb6ecb70700e2cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infinum/eightshift-forms-utils/zipball/dd090aae494aae5e34a2b4530175a41312bcb532", - "reference": "dd090aae494aae5e34a2b4530175a41312bcb532", + "url": "https://api.github.com/repos/infinum/eightshift-forms-utils/zipball/f384f693b3ce3a3a218f3dcaebb6ecb70700e2cb", + "reference": "f384f693b3ce3a3a218f3dcaebb6ecb70700e2cb", "shasum": "" }, "require": { @@ -134,7 +134,7 @@ "issues": "https://github.com/infinum/eightshift-forms/issues", "source": "https://github.com/infinum/eightshift-forms" }, - "time": "2024-07-18T07:21:38+00:00" + "time": "2024-07-18T10:00:54+00:00" }, { "name": "infinum/eightshift-libs", diff --git a/src/Blocks/components/form/assets/form.js b/src/Blocks/components/form/assets/form.js index d093b3ef..52319fcd 100644 --- a/src/Blocks/components/form/assets/form.js +++ b/src/Blocks/components/form/assets/form.js @@ -425,7 +425,7 @@ export class Form { } // Redirect to url and update url params from from data. - this.utils.redirectToUrlByReference(formId, data?.[this.state.getStateResponseOutputKey('successRedirectUrl')]); + // this.utils.redirectToUrlByReference(formId, data?.[this.state.getStateResponseOutputKey('successRedirectUrl')]); } else { // Clear form values. this.utils.resetForm(formId); @@ -888,6 +888,10 @@ export class Form { name: this.state.getStateParam('actionExternal'), value: this.state.getStateFormActionExternal(formId), }, + { + name: this.state.getStateParam('secureData'), + value: this.state.getStateFormSecureData(formId), + }, ]); } diff --git a/src/Blocks/components/form/assets/state-init.js b/src/Blocks/components/form/assets/state-init.js index 1f66ffe2..e234b76a 100644 --- a/src/Blocks/components/form/assets/state-init.js +++ b/src/Blocks/components/form/assets/state-init.js @@ -23,6 +23,7 @@ export const StateEnum = { METHOD: 'method', ACTION: 'action', ACTION_EXTERNAL: 'actionExternal', + SECURE_DATA: 'secureData', FIELD: 'field', RANGE_CURRENT: 'rangeCurrent', VALUE: 'value', @@ -315,6 +316,7 @@ export function setStateFormInitial(formId) { setState([StateEnum.FORM, StateEnum.METHOD], formElement?.getAttribute('method'), formId); setState([StateEnum.FORM, StateEnum.ACTION], formElement?.getAttribute('action'), formId); setState([StateEnum.FORM, StateEnum.ACTION_EXTERNAL], formElement?.getAttribute(getStateAttribute('actionExternal')), formId); + setState([StateEnum.FORM, StateEnum.SECURE_DATA], formElement?.getAttribute(getStateAttribute('formSecureData')), formId); setState([StateEnum.FORM, StateEnum.TYPE_SETTINGS], formElement?.getAttribute(getStateAttribute('settingsType')), formId); setState([StateEnum.FORM, StateEnum.LOADER], formElement?.querySelector(getStateSelector('loader', true)), formId); diff --git a/src/Blocks/components/form/assets/state.js b/src/Blocks/components/form/assets/state.js index f6b2a574..004916ec 100644 --- a/src/Blocks/components/form/assets/state.js +++ b/src/Blocks/components/form/assets/state.js @@ -76,6 +76,9 @@ export class State { getStateFormActionExternal = (formId) => { return getState([StateEnum.FORM, StateEnum.ACTION_EXTERNAL], formId); }; + getStateFormSecureData = (formId) => { + return getState([StateEnum.FORM, StateEnum.SECURE_DATA], formId); + }; getStateFormTypeSettings = (formId) => { return getState([StateEnum.FORM, StateEnum.TYPE_SETTINGS], formId); }; diff --git a/src/Blocks/components/form/form.php b/src/Blocks/components/form/form.php index 0f8a8cc1..6d584e47 100644 --- a/src/Blocks/components/form/form.php +++ b/src/Blocks/components/form/form.php @@ -41,12 +41,14 @@ $formHasSteps = Helpers::checkAttr('formHasSteps', $attributes, $manifest); $formUseSingleSubmit = Helpers::checkAttr('formUseSingleSubmit', $attributes, $manifest); $formParentSettings = Helpers::checkAttr('formParentSettings', $attributes, $manifest); +$formSecureData = Helpers::checkAttr('formSecureData', $attributes, $manifest); $formCustomName = $formParentSettings['customName'] ?? ''; $formPostId = $formParentSettings['postId'] ?? ''; $formConditionalTags = $formParentSettings['conditionalTags'] ?? ''; $formDisabledDefaultStyles = $formParentSettings['disabledDefaultStyles'] ?? false; $formType = $formParentSettings['formType'] ?? ''; +$legacy = $formParentSettings['legacy'] ?? []; $formDataTypeSelectorFilterName = UtilsHooksHelper::getFilterName(['block', 'form', 'dataTypeSelector']); $formDataTypeSelector = apply_filters( @@ -71,8 +73,8 @@ $formAttrs[UtilsHelper::getStateAttribute('typeSelector')] = esc_attr($formDataTypeSelector); } -if (isset($attributes['secureData'])) { - $formAttrs[UtilsHelper::getStateAttribute('formSecureData')] = esc_attr($attributes['secureData']); +if ($formSecureData) { + $formAttrs[UtilsHelper::getStateAttribute('formSecureData')] = $formSecureData; // phpcs:ignore Eightshift.Security.HelpersEscape.OutputNotEscaped } if ($formPhoneSync) { diff --git a/src/Blocks/components/form/manifest.json b/src/Blocks/components/form/manifest.json index 903c884d..5e1263d0 100644 --- a/src/Blocks/components/form/manifest.json +++ b/src/Blocks/components/form/manifest.json @@ -54,6 +54,13 @@ "type": "boolean", "default": false }, + "formSecureData": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, "formMeta": { "type": "string" }, diff --git a/src/Blocks/custom/forms/components/forms-options.js b/src/Blocks/custom/forms/components/forms-options.js index 5a7d2133..0e9149b1 100644 --- a/src/Blocks/custom/forms/components/forms-options.js +++ b/src/Blocks/custom/forms/components/forms-options.js @@ -5,6 +5,7 @@ import { useState } from '@wordpress/element'; import { isArray } from 'lodash'; import { __, sprintf } from '@wordpress/i18n'; import { select } from '@wordpress/data'; +import { MediaPlaceholder } from '@wordpress/block-editor'; import { PanelBody, TextControl, Button, Modal, ExternalLink } from '@wordpress/components'; import apiFetch from '@wordpress/api-fetch'; import { @@ -19,6 +20,13 @@ import { Control, Section, STORE_NAME, + Collapsable, + Select, + truncateMiddle, + Repeater, + RepeaterItem, + LinkInput, + Toggle, } from '@eightshift/frontend-libs/scripts'; import { ConditionalTagsFormsOptions } from '../../../components/conditional-tags/components/conditional-tags-forms-options'; import { @@ -26,6 +34,7 @@ import { LocationsButton, SettingsButton, outputFormSelectItemWithIcon, + getSettingsJsonOptions, } from '../../../components/utils'; import { getRestUrl } from '../../../components/form/assets/state-init'; @@ -37,6 +46,12 @@ export const FormsOptions = ({ }) => { const manifest = select(STORE_NAME).getBlock('forms'); + const { + settings: { + successRedirectVariations, + } + } = esFormsLocalization; + const { isGeoPreview, setIsGeoPreview, @@ -48,9 +63,18 @@ export const FormsOptions = ({ const formsFormDataTypeSelector = checkAttr('formsFormDataTypeSelector', attributes, manifest); const formsFormGeolocation = checkAttr('formsFormGeolocation', attributes, manifest); const formsFormGeolocationAlternatives = checkAttr('formsFormGeolocationAlternatives', attributes, manifest); + const formsVariation = checkAttr('formsVariation', attributes, manifest); + const formsVariationData = checkAttr('formsVariationData', attributes, manifest); + const formsVariationDataFiles = checkAttr('formsVariationDataFiles', attributes, manifest); + + // Legacy. + const formsDownloads = checkAttr('formsDownloads', attributes, manifest); const formsSuccessRedirectVariation = checkAttr('formsSuccessRedirectVariation', attributes, manifest); + const formsSuccessRedirectVariationUrl = checkAttr('formsSuccessRedirectVariationUrl', attributes, manifest); + const formsSuccessRedirectVariationUrlTitle = checkAttr('formsSuccessRedirectVariationUrlTitle', attributes, manifest); const [isGeoModalOpen, setIsGeoModalOpen] = useState(false); + const [isResultOutputModalOpen, setIsResultOutputModalOpen] = useState(false); const [geoFormFields, setGeoFormFields] = useState([]); useEffect(() => { @@ -65,18 +89,32 @@ export const FormsOptions = ({ let formsStyleOptions = []; let formsUseGeolocation = false; + let formsUseCustomResultOutputFeature = false; + let formsUseLegacyTnxPageFeature = false; let geolocationApi = ''; - // Custom block forms style options. - if (typeof esFormsLocalization !== 'undefined' && isArray(esFormsLocalization?.formsBlockStyleOptions)) { - formsStyleOptions = esFormsLocalization.formsBlockStyleOptions; - } + if (typeof esFormsLocalization !== 'undefined') { + // Custom block forms style options. + if (isArray(esFormsLocalization?.formsBlockStyleOptions)) { + formsStyleOptions = esFormsLocalization.formsBlockStyleOptions; + } + + // Use custom result output feature. + if (esFormsLocalization?.formsUseCustomResultOutputFeature) { + formsUseCustomResultOutputFeature = esFormsLocalization.formsUseCustomResultOutputFeature; + } + + // Use custom result output feature. + if (esFormsLocalization?.formsUseLegacyTnxPageFeature) { + formsUseLegacyTnxPageFeature = esFormsLocalization.formsUseLegacyTnxPageFeature; + } - // Is geolocation active. - if (typeof esFormsLocalization !== 'undefined' && esFormsLocalization?.use?.geolocation) { - formsUseGeolocation = true; + // Is geolocation active. + if (esFormsLocalization?.use?.geolocation) { + formsUseGeolocation = true; - geolocationApi = getRestUrl('countriesGeolocation'); + geolocationApi = getRestUrl('countriesGeolocation'); + } } return ( @@ -131,13 +169,152 @@ export const FormsOptions = ({ }
    - + } - help={__('Override form settings success redirect variation value', 'eightshift-forms')} - value={formsSuccessRedirectVariation} - onChange={(value) => setAttributes({ [getAttrKey('formsSuccessRedirectVariation', attributes, manifest)]: value })} + label={} + help={__('Override form settings variation value', 'eightshift-forms')} + value={formsVariation} + onChange={(value) => setAttributes({ [getAttrKey('formsVariation', attributes, manifest)]: value })} /> + + {formsUseCustomResultOutputFeature && + <> + + + {isResultOutputModalOpen && ( + } + onRequestClose={() => setIsResultOutputModalOpen(false)} + > + { + const newArray = {...formsVariationData}; + newArray.title = value; + + setAttributes({ [getAttrKey('formsVariationData', attributes, manifest)]: newArray }); + }} + /> + + { + const newArray = {...formsVariationData}; + newArray.subtitle = value; + + setAttributes({ [getAttrKey('formsVariationData', attributes, manifest)]: newArray }); + }} + /> + + + {formsVariationDataFiles.map((item, index) => ( + + { + const newArray = [...formsVariationDataFiles]; + newArray[index].title = value; + + setAttributes({ [getAttrKey('formsVariationDataFiles', attributes, manifest)]: newArray }); + }} + /> + { + const newArray = [...formsVariationDataFiles]; + newArray[index].asFile = value; + + if (value) { + delete newArray[index].url; + } else { + delete newArray[index].file; + } + + setAttributes({ [getAttrKey('formsVariationDataFiles', attributes, manifest)]: newArray }); + }} + /> + {!formsVariationDataFiles[index].asFile && + { + const newArray = [...formsVariationDataFiles]; + newArray[index].url = url; + + setAttributes({ [getAttrKey('formsVariationDataFiles', attributes, manifest)]: newArray }); + }} + /> + } + {formsVariationDataFiles[index].asFile && ( + <> + {!formsVariationDataFiles[index].file && ( + { + const newArray = [...formsVariationDataFiles]; + newArray[index].file = { + id: value.id, + title: value.title, + url: value.url, + }; + + setAttributes({ [getAttrKey('formsVariationDataFiles', attributes, manifest)]: newArray }); + }} + /> + )} + + {formsVariationDataFiles[index]?.file && ( +
    +
    + {icons.file} + {formsVariationDataFiles[index]?.file?.title} +
    +
    + )} + + )} +
    + ))} +
    +
    + )} + + }
    {formsUseGeolocation && @@ -286,6 +463,117 @@ export const FormsOptions = ({ conditionalTagsPostId: formsFormPostId, })} /> + + {formsUseLegacyTnxPageFeature && + +