diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 86a5354c9..bad20a93e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -234,8 +234,10 @@ jobs: - name: Pull images run: | docker compose pull + docker compose pull configurator - name: Setup + if: "!contains(github.event.head_commit.message, '[skip test]')" run: | docker compose down --volumes bin/dev/make-cert.sh @@ -243,10 +245,11 @@ jobs: bin/setup.sh test - name: Test + if: "!contains(github.event.head_commit.message, '[skip test]')" run: bin/test.sh - name: Run Cypress tests - if: "!contains(github.event.head_commit.message, '[skip cypress]')" + if: "!contains(github.event.head_commit.message, '[skip cypress]') && !contains(github.event.head_commit.message, '[skip test]')" run: | docker compose up -d docker compose run --rm cypress diff --git a/dashboard/client/package.json b/dashboard/client/package.json index c105b7241..f04edee65 100644 --- a/dashboard/client/package.json +++ b/dashboard/client/package.json @@ -14,28 +14,28 @@ "@alchemy/api": "workspace:*", "@alchemy/auth": "workspace:*", "@alchemy/core": "workspace:*", + "@alchemy/phrasea-ui": "workspace:*", "@alchemy/react-auth": "workspace:*", "@alchemy/theme-editor": "workspace:*", - "@alchemy/phrasea-ui": "workspace:*", - "@mui/material": "^5.15.1", - "@mui/icons-material": "^5.15.0", + "@mui/icons-material": "^5.15.13", + "@mui/material": "^5.15.13", "react": "^18.2.0", "react-dom": "^18.2.0", "react-google-font-loader": "^1.1.0", - "vite-plugin-svgr": "^4.2.0", - "react-i18next": "^13.5.0" + "react-i18next": "^13.5.0", + "vite-plugin-svgr": "^4.2.0" }, "devDependencies": { - "@types/node": "^18.8.5", - "@types/react": "^18.2.37", - "@types/react-dom": "^18.2.15", - "@typescript-eslint/eslint-plugin": "^6.10.0", - "@typescript-eslint/parser": "^6.10.0", - "@vitejs/plugin-react-swc": "^3.5.0", - "eslint": "^8.53.0", - "typescript": "^5.2.2", - "vite": "^5.0.0", - "vite-plugin-checker": "^0.6.2", + "@types/node": "^18.19.24", + "@types/react": "^18.2.65", + "@types/react-dom": "^18.2.22", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "@vitejs/plugin-react-swc": "^3.6.0", + "eslint": "^8.57.0", + "typescript": "^5.4.2", + "vite": "^5.1.6", + "vite-plugin-checker": "^0.6.4", "vite-plugin-svgr": "^4.2.0" } } diff --git a/databox/api/config/packages/alchemy_acl.yaml b/databox/api/config/packages/alchemy_acl.yaml index 1a3da14d5..5f70ad6b6 100644 --- a/databox/api/config/packages/alchemy_acl.yaml +++ b/databox/api/config/packages/alchemy_acl.yaml @@ -5,3 +5,4 @@ alchemy_acl: workspace: App\Entity\Core\Workspace attribute_class: App\Entity\Core\AttributeClass data_template: App\Entity\Template\AssetDataTemplate + basket: App\Entity\Basket\Basket diff --git a/databox/api/config/packages/fos_elastica.yaml b/databox/api/config/packages/fos_elastica.yaml index bd6db6d77..a1a380f9a 100644 --- a/databox/api/config/packages/fos_elastica.yaml +++ b/databox/api/config/packages/fos_elastica.yaml @@ -278,6 +278,38 @@ fos_elastica: provider: query_builder_method: getESQueryBuilder + basket: + settings: + index: + analysis: + analyzer: + text: *text_analyzer + filter: + worddelimiter: *worddelimiter_filter + use_alias: '%elastica.use_alias%' + index_name: "%es_index_prefix%basket_%kernel.environment%" + properties: + title: + type: text + analyzer: text + description: + type: text + analyzer: text + ownerId: + type: keyword + users: + property_path: false + type: keyword + groups: + property_path: false + type: keyword + persistence: + driver: orm + model: App\Entity\Basket\Basket + listener: { enabled: false } + provider: + query_builder_method: getESQueryBuilder + when@dev: parameters: elastica.use_alias: false diff --git a/databox/api/config/services.yaml b/databox/api/config/services.yaml index 6af79fcb3..12013bf4f 100644 --- a/databox/api/config/services.yaml +++ b/databox/api/config/services.yaml @@ -19,7 +19,7 @@ services: string $databoxBaseUrl: '%env(DATABOX_API_URL)%' string $databoxClientBaseUrl: '%env(DATABOX_CLIENT_URL)%' ApiPlatform\State\ProviderInterface $itemProvider: '@api_platform.doctrine.orm.state.item_provider' - ApiPlatform\State\ProviderInterface $itemsProvider: '@api_platform.doctrine.orm.state.collection_provider' + ApiPlatform\State\ProviderInterface $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider' bool $useAlias: '%elastica.use_alias%' string $kernelEnv: '%kernel.environment%' @@ -57,24 +57,6 @@ services: resource: '../src/Controller/' tags: ['controller.service_arguments'] - App\Elasticsearch\AssetSearch: - arguments: - $finder: '@fos_elastica.finder.asset' - - App\Elasticsearch\SuggestionSearch: - arguments: - $collectionIndex: '@fos_elastica.index.collection' - $assetIndex: '@fos_elastica.index.asset' - $attributeIndex: '@fos_elastica.index.attribute' - - App\Elasticsearch\CollectionSearch: - arguments: - - '@fos_elastica.finder.collection' - - App\Elasticsearch\AssetDataTemplateSearch: - arguments: - - '@fos_elastica.finder.asset_data_template' - App\Api\Serializer\SecurityContextBuilder: decorates: 'api_platform.serializer.context_builder' arguments: [ '@App\Api\Serializer\SecurityContextBuilder.inner' ] diff --git a/databox/api/migrations/Version20240313095604.php b/databox/api/migrations/Version20240313095604.php new file mode 100644 index 000000000..b41589dad --- /dev/null +++ b/databox/api/migrations/Version20240313095604.php @@ -0,0 +1,30 @@ +addSql('ALTER TABLE workspace ALTER owner_id TYPE VARCHAR(36)'); + } + + public function down(Schema $schema): void + { + $this->addSql('ALTER TABLE workspace ALTER owner_id TYPE VARCHAR(255)'); + } +} diff --git a/databox/api/migrations/Version20240313110345.php b/databox/api/migrations/Version20240313110345.php new file mode 100644 index 000000000..75e31974a --- /dev/null +++ b/databox/api/migrations/Version20240313110345.php @@ -0,0 +1,69 @@ +addSql('CREATE TABLE basket_basket_asset (basket_id UUID NOT NULL, basket_asset_id UUID NOT NULL, PRIMARY KEY(basket_id, basket_asset_id))'); + $this->addSql('CREATE INDEX IDX_1A9FEAA51BE1FB52 ON basket_basket_asset (basket_id)'); + $this->addSql('CREATE INDEX IDX_1A9FEAA561751691 ON basket_basket_asset (basket_asset_id)'); + $this->addSql('COMMENT ON COLUMN basket_basket_asset.basket_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN basket_basket_asset.basket_asset_id IS \'(DC2Type:uuid)\''); + $this->addSql('CREATE TABLE basket_asset (id UUID NOT NULL, basket_id UUID NOT NULL, asset_id UUID NOT NULL, owner_id VARCHAR(36) NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE INDEX IDX_54D711661BE1FB52 ON basket_asset (basket_id)'); + $this->addSql('CREATE INDEX IDX_54D711665DA1941 ON basket_asset (asset_id)'); + $this->addSql('COMMENT ON COLUMN basket_asset.id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN basket_asset.basket_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN basket_asset.asset_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN basket_asset.created_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('ALTER TABLE basket_basket_asset ADD CONSTRAINT FK_1A9FEAA51BE1FB52 FOREIGN KEY (basket_id) REFERENCES basket (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE basket_basket_asset ADD CONSTRAINT FK_1A9FEAA561751691 FOREIGN KEY (basket_asset_id) REFERENCES basket_asset (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE basket_asset ADD CONSTRAINT FK_54D711661BE1FB52 FOREIGN KEY (basket_id) REFERENCES basket (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE basket_asset ADD CONSTRAINT FK_54D711665DA1941 FOREIGN KEY (asset_id) REFERENCES asset (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE basket DROP CONSTRAINT fk_2246507b514956fd'); + $this->addSql('DROP INDEX idx_2246507b514956fd'); + $this->addSql('ALTER TABLE basket ADD title VARCHAR(255) DEFAULT NULL'); + $this->addSql('ALTER TABLE basket ADD owner_id VARCHAR(36) NOT NULL'); + $this->addSql('ALTER TABLE basket ADD created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL'); + $this->addSql('ALTER TABLE basket ADD updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL'); + $this->addSql('ALTER TABLE basket DROP collection_id'); + $this->addSql('COMMENT ON COLUMN basket.created_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('COMMENT ON COLUMN basket.updated_at IS \'(DC2Type:datetime_immutable)\''); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE SCHEMA public'); + $this->addSql('ALTER TABLE basket_basket_asset DROP CONSTRAINT FK_1A9FEAA51BE1FB52'); + $this->addSql('ALTER TABLE basket_basket_asset DROP CONSTRAINT FK_1A9FEAA561751691'); + $this->addSql('ALTER TABLE basket_asset DROP CONSTRAINT FK_54D711661BE1FB52'); + $this->addSql('ALTER TABLE basket_asset DROP CONSTRAINT FK_54D711665DA1941'); + $this->addSql('DROP TABLE basket_basket_asset'); + $this->addSql('DROP TABLE basket_asset'); + $this->addSql('ALTER TABLE basket ADD collection_id UUID NOT NULL'); + $this->addSql('ALTER TABLE basket DROP title'); + $this->addSql('ALTER TABLE basket DROP owner_id'); + $this->addSql('ALTER TABLE basket DROP created_at'); + $this->addSql('ALTER TABLE basket DROP updated_at'); + $this->addSql('COMMENT ON COLUMN basket.collection_id IS \'(DC2Type:uuid)\''); + $this->addSql('ALTER TABLE basket ADD CONSTRAINT fk_2246507b514956fd FOREIGN KEY (collection_id) REFERENCES collection (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('CREATE INDEX idx_2246507b514956fd ON basket (collection_id)'); + } +} diff --git a/databox/api/migrations/Version20240314092227.php b/databox/api/migrations/Version20240314092227.php new file mode 100644 index 000000000..3cdcca6c2 --- /dev/null +++ b/databox/api/migrations/Version20240314092227.php @@ -0,0 +1,32 @@ +addSql('ALTER TABLE basket_asset ADD context JSON DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE SCHEMA public'); + $this->addSql('ALTER TABLE basket_asset DROP context'); + } +} diff --git a/databox/api/migrations/Version20240326173512.php b/databox/api/migrations/Version20240326173512.php new file mode 100644 index 000000000..c3d2c1175 --- /dev/null +++ b/databox/api/migrations/Version20240326173512.php @@ -0,0 +1,44 @@ +addSql('ALTER TABLE basket_basket_asset DROP CONSTRAINT fk_1a9feaa51be1fb52'); + $this->addSql('ALTER TABLE basket_basket_asset DROP CONSTRAINT fk_1a9feaa561751691'); + $this->addSql('DROP TABLE basket_basket_asset'); + $this->addSql('ALTER TABLE basket ADD description TEXT DEFAULT NULL'); + $this->addSql('ALTER TABLE basket_asset ADD position BIGINT DEFAULT 0 NOT NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE SCHEMA public'); + $this->addSql('CREATE TABLE basket_basket_asset (basket_id UUID NOT NULL, basket_asset_id UUID NOT NULL, PRIMARY KEY(basket_id, basket_asset_id))'); + $this->addSql('CREATE INDEX idx_1a9feaa561751691 ON basket_basket_asset (basket_asset_id)'); + $this->addSql('CREATE INDEX idx_1a9feaa51be1fb52 ON basket_basket_asset (basket_id)'); + $this->addSql('COMMENT ON COLUMN basket_basket_asset.basket_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN basket_basket_asset.basket_asset_id IS \'(DC2Type:uuid)\''); + $this->addSql('ALTER TABLE basket_basket_asset ADD CONSTRAINT fk_1a9feaa51be1fb52 FOREIGN KEY (basket_id) REFERENCES basket (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE basket_basket_asset ADD CONSTRAINT fk_1a9feaa561751691 FOREIGN KEY (basket_asset_id) REFERENCES basket_asset (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE basket_asset DROP position'); + $this->addSql('ALTER TABLE basket DROP description'); + } +} diff --git a/databox/api/migrations/Version20240327112016.php b/databox/api/migrations/Version20240327112016.php new file mode 100644 index 000000000..a3093703e --- /dev/null +++ b/databox/api/migrations/Version20240327112016.php @@ -0,0 +1,40 @@ +addSql('ALTER TABLE basket_asset DROP CONSTRAINT FK_54D711661BE1FB52'); + $this->addSql('ALTER TABLE basket_asset DROP CONSTRAINT FK_54D711665DA1941'); + $this->addSql('ALTER TABLE basket_asset ALTER "position" DROP DEFAULT'); + $this->addSql('ALTER TABLE basket_asset ADD CONSTRAINT FK_54D711661BE1FB52 FOREIGN KEY (basket_id) REFERENCES basket (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE basket_asset ADD CONSTRAINT FK_54D711665DA1941 FOREIGN KEY (asset_id) REFERENCES asset (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE SCHEMA public'); + $this->addSql('ALTER TABLE basket_asset DROP CONSTRAINT fk_54d711661be1fb52'); + $this->addSql('ALTER TABLE basket_asset DROP CONSTRAINT fk_54d711665da1941'); + $this->addSql('ALTER TABLE basket_asset ALTER position SET DEFAULT 0'); + $this->addSql('ALTER TABLE basket_asset ADD CONSTRAINT fk_54d711661be1fb52 FOREIGN KEY (basket_id) REFERENCES basket (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE basket_asset ADD CONSTRAINT fk_54d711665da1941 FOREIGN KEY (asset_id) REFERENCES asset (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + } +} diff --git a/databox/api/src/Api/InputTransformer/BasketInputTransformer.php b/databox/api/src/Api/InputTransformer/BasketInputTransformer.php new file mode 100644 index 000000000..4901744ef --- /dev/null +++ b/databox/api/src/Api/InputTransformer/BasketInputTransformer.php @@ -0,0 +1,43 @@ +title) { + $object->setTitle($data->title); + } + + if (null !== $data->description) { + $object->setDescription($data->description); + } + + return $this->processOwnerId($object); + } +} diff --git a/databox/api/src/Api/Model/Input/AddToBasketInput.php b/databox/api/src/Api/Model/Input/AddToBasketInput.php new file mode 100644 index 000000000..19f59f78d --- /dev/null +++ b/databox/api/src/Api/Model/Input/AddToBasketInput.php @@ -0,0 +1,17 @@ + 'object', + 'properties' => [ + 'canEdit' => 'boolean', + 'canDelete' => 'boolean', + 'canShare' => 'boolean', + 'canEditPermissions' => 'boolean', + ], + ])] + #[Groups([Basket::GROUP_LIST, Basket::GROUP_READ])] + protected array $capabilities = []; + + /** + * @var AssetOutput[] + */ + #[Groups([Basket::GROUP_LIST, Basket::GROUP_READ])] + protected ?array $assets = null; + + #[Groups([Basket::GROUP_LIST, Basket::GROUP_READ, WebhookSerializationInterface::DEFAULT_GROUP])] + private ?string $title = null; + + #[Groups([Basket::GROUP_READ, WebhookSerializationInterface::DEFAULT_GROUP])] + public ?string $description = null; + + #[Groups([Basket::GROUP_READ, WebhookSerializationInterface::DEFAULT_GROUP])] + public ?int $assetCount = null; + + #[Groups([Basket::GROUP_LIST, Basket::GROUP_READ])] + private ?string $titleHighlight = null; + + #[Groups([Basket::GROUP_READ])] + public ?UserOutput $owner = null; + + public function getCapabilities(): array + { + return $this->capabilities; + } + + public function setCapabilities(array $capabilities): void + { + $this->capabilities = $capabilities; + } + + public function getAssets(): ?array + { + return $this->assets; + } + + public function setAssets(?array $assets): void + { + $this->assets = $assets; + } + + public function getTitle(): ?string + { + return $this->title; + } + + public function setTitle(?string $title): void + { + $this->title = $title; + } + + public function getTitleHighlight(): ?string + { + return $this->titleHighlight; + } + + public function setTitleHighlight(?string $titleHighlight): void + { + $this->titleHighlight = $titleHighlight; + } + + public function getOwner(): ?UserOutput + { + return $this->owner; + } + + public function setOwner(?UserOutput $owner): void + { + $this->owner = $owner; + } +} diff --git a/databox/api/src/Api/OutputTransformer/AssetOutputTransformer.php b/databox/api/src/Api/OutputTransformer/AssetOutputTransformer.php index 28ac3e7c2..5e78012c2 100644 --- a/databox/api/src/Api/OutputTransformer/AssetOutputTransformer.php +++ b/databox/api/src/Api/OutputTransformer/AssetOutputTransformer.php @@ -13,6 +13,7 @@ use App\Attribute\AttributeTypeRegistry; use App\Elasticsearch\Facet\FacetRegistry; use App\Elasticsearch\Mapping\FieldNameResolver; +use App\Entity\Basket\BasketAsset; use App\Entity\Core\Asset; use App\Entity\Core\AssetRendition; use App\Entity\Core\Attribute; @@ -54,18 +55,25 @@ public function supports(string $outputClass, object $data): bool */ public function transform(object $data, string $outputClass, array &$context = []): object { + $output = new AssetOutput(); + $output->setId($data->getId()); + + if (in_array(BasketAsset::GROUP_LIST, $context['groups'], true)) { + if (!$this->isGranted(AbstractVoter::READ, $data)) { + return $output; + } + } + $preferredLocales = $this->getPreferredLocales($data->getWorkspace()); $user = $this->getUser(); $userId = $user instanceof JwtUser ? $user->getId() : null; $groupIds = $user instanceof JwtUser ? $user->getGroups() : []; - $output = new AssetOutput(); $output->setCreatedAt($data->getCreatedAt()); $output->setUpdatedAt($data->getUpdatedAt()); $output->setEditedAt($data->getEditedAt()); $output->setAttributesEditedAt($data->getAttributesEditedAt()); - $output->setId($data->getId()); $output->setSource($data->getSource()); @@ -158,6 +166,8 @@ public function transform(object $data, string $outputClass, array &$context = [ if (null !== $data->getPendingUploadToken()) { $output->setPendingSourceFile(true); $output->setPendingUploadToken($data->getPendingUploadToken()); + } else { + $output->setPendingSourceFile(false); } if ($this->hasGroup([Asset::GROUP_LIST, Asset::GROUP_READ], $context)) { diff --git a/databox/api/src/Api/OutputTransformer/BasketOutputTransformer.php b/databox/api/src/Api/OutputTransformer/BasketOutputTransformer.php new file mode 100644 index 000000000..b5e3a023f --- /dev/null +++ b/databox/api/src/Api/OutputTransformer/BasketOutputTransformer.php @@ -0,0 +1,73 @@ +setCreatedAt($data->getCreatedAt()); + $output->setUpdatedAt($data->getUpdatedAt()); + $output->setId($data->getId()); + + $highlights = $data->getElasticHighlights(); + $output->setTitle($data->getTitle()); + $output->description = $data->getDescription(); + $output->setTitleHighlight($highlights['title'] ?? $data->getTitle()); + + if ($this->hasGroup([ + Basket::GROUP_READ, + ], $context)) { + $output->owner = $this->transformUser($data->getOwnerId()); + $output->assetCount = (int) $this->em->getRepository(BasketAsset::class) + ->createQueryBuilder('t') + ->select('COUNT(t.id) as total') + ->andWhere('t.basket = :b') + ->setParameter('b', $data->getId()) + ->getQuery() + ->getSingleScalarResult() + ; + } + + if ($this->hasGroup([Basket::GROUP_LIST, Basket::GROUP_READ], $context)) { + $output->setCapabilities([ + 'canEdit' => $this->isGranted(AbstractVoter::EDIT, $data), + 'canShare' => $this->isGranted(BasketVoter::SHARE, $data), + 'canDelete' => $this->isGranted(AbstractVoter::DELETE, $data), + 'canEditPermissions' => $this->isGranted(AbstractVoter::EDIT_PERMISSIONS, $data), + ]); + } + + return $output; + } +} diff --git a/databox/api/src/Api/Processor/AddToBasketProcessor.php b/databox/api/src/Api/Processor/AddToBasketProcessor.php new file mode 100644 index 000000000..4a387ee23 --- /dev/null +++ b/databox/api/src/Api/Processor/AddToBasketProcessor.php @@ -0,0 +1,83 @@ +getStrictUser(); + if (isset($uriVariables['id'])) { + $basketId = $uriVariables['id']; + $basket = DoctrineUtil::findStrictByRepo($this->basketRepository, $basketId); + $this->denyAccessUnlessGranted(AbstractVoter::EDIT, $basket); + } else { + $basket = $this->basketRepository->findOneBy([ + 'ownerId' => $user->getId(), + ], [ + 'createdAt' => 'ASC', + ]); + } + + if (null === $basket) { + $basket = new Basket(); + $basket->setOwnerId($user->getId()); + $this->em->persist($basket); + $position = 0; + } else { + $position = $this->basketRepository->getBasketMaxPosition($basket->getId()) + 1; + } + + $mapping = []; + $ids = array_map(function (AssetToBasketInput $input) use (&$mapping): string { + $mapping[$input->id] = $input; + + return $input->id; + }, $data->assets); + + $assets = $this->em->getRepository(Asset::class) + ->findByIds($ids); + + foreach ($assets as $asset) { + $this->denyAccessUnlessGranted(AbstractVoter::READ, $asset); + $basketItem = new BasketAsset(); + $basketItem->setBasket($basket); + $basketItem->setOwnerId($user->getId()); + $basketItem->setAsset($asset); + $basketItem->setPosition($position++); + $this->em->persist($basketItem); + } + + $this->em->flush(); + + return $basket; + } +} diff --git a/databox/api/src/Api/Processor/RemoveFromBasketProcessor.php b/databox/api/src/Api/Processor/RemoveFromBasketProcessor.php new file mode 100644 index 000000000..a67e3be22 --- /dev/null +++ b/databox/api/src/Api/Processor/RemoveFromBasketProcessor.php @@ -0,0 +1,40 @@ +basketRepository, $basketId); + $this->denyAccessUnlessGranted(AbstractVoter::EDIT, $basket); + + $this->basketRepository->removeFromBasket($basketId, $data->items); + + return $basket; + } +} diff --git a/databox/api/src/Api/Processor/WithOwnerIdProcessorTrait.php b/databox/api/src/Api/Processor/WithOwnerIdProcessorTrait.php index 0ab4b7ca1..d413a6ee9 100644 --- a/databox/api/src/Api/Processor/WithOwnerIdProcessorTrait.php +++ b/databox/api/src/Api/Processor/WithOwnerIdProcessorTrait.php @@ -7,6 +7,7 @@ use Alchemy\AuthBundle\Security\JwtUser; use App\Entity\WithOwnerIdInterface; use App\Util\SecurityAwareTrait; +use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; /** @@ -24,6 +25,9 @@ trait WithOwnerIdProcessorTrait protected function processOwnerId(WithOwnerIdInterface $data): WithOwnerIdInterface { $user = $this->getUser(); + if (null === $user) { + throw new AccessDeniedHttpException('User must be authenticated'); + } if (null === $data->getOwnerId()) { if (!$user instanceof JwtUser) { diff --git a/databox/api/src/Api/Provider/BasketAssetCollectionProvider.php b/databox/api/src/Api/Provider/BasketAssetCollectionProvider.php new file mode 100644 index 000000000..95d34ce85 --- /dev/null +++ b/databox/api/src/Api/Provider/BasketAssetCollectionProvider.php @@ -0,0 +1,30 @@ +basketRepository, $uriVariables['id']); + $this->denyAccessUnlessGranted(AbstractVoter::READ, $basket); + + return $this->collectionProvider->provide($operation, $uriVariables, $context); + } +} diff --git a/databox/api/src/Api/Provider/BasketCollectionProvider.php b/databox/api/src/Api/Provider/BasketCollectionProvider.php new file mode 100644 index 000000000..39d93a198 --- /dev/null +++ b/databox/api/src/Api/Provider/BasketCollectionProvider.php @@ -0,0 +1,25 @@ +getStrictUser(); + + return $this->basketSearch->search($user->getId(), $user->getGroups(), $context['filters'] ?? []); + } +} diff --git a/databox/api/src/Controller/Admin/AttributeCrudController.php b/databox/api/src/Controller/Admin/AttributeCrudController.php index 1096e6299..dd4c16337 100644 --- a/databox/api/src/Controller/Admin/AttributeCrudController.php +++ b/databox/api/src/Controller/Admin/AttributeCrudController.php @@ -36,7 +36,7 @@ public function configureFilters(Filters $filters): Filters return $filters ->add(EntityFilter::new('definition')) ->add('value') - ; + ; } public function configureCrud(Crud $crud): Crud diff --git a/databox/api/src/Controller/Admin/BasketAssetCrudController.php b/databox/api/src/Controller/Admin/BasketAssetCrudController.php new file mode 100644 index 000000000..bf5dbe333 --- /dev/null +++ b/databox/api/src/Controller/Admin/BasketAssetCrudController.php @@ -0,0 +1,37 @@ +remove(Crud::PAGE_INDEX, Action::NEW); + } + + public function configureFields(string $pageName): iterable + { + yield IdField::new(); + yield AssociationField::new('basket'); + yield AssociationField::new('asset'); + yield JsonField::new('context'); + yield DateTimeField::new('createdAt') + ->hideOnForm(); + } +} diff --git a/databox/api/src/Controller/Admin/BasketCrudController.php b/databox/api/src/Controller/Admin/BasketCrudController.php new file mode 100644 index 000000000..7fd719432 --- /dev/null +++ b/databox/api/src/Controller/Admin/BasketCrudController.php @@ -0,0 +1,41 @@ +userChoiceField->create('ownerId', 'Owner'); + yield TextField::new('title'); + yield DateTimeField::new('createdAt') + ->hideOnForm(); + yield DateTimeField::new('updatedAt') + ->hideOnForm(); + } +} diff --git a/databox/api/src/Controller/Admin/DashboardController.php b/databox/api/src/Controller/Admin/DashboardController.php index af2fa00c1..5cf6f7532 100644 --- a/databox/api/src/Controller/Admin/DashboardController.php +++ b/databox/api/src/Controller/Admin/DashboardController.php @@ -9,6 +9,8 @@ use Alchemy\Workflow\Doctrine\Entity\JobState; use App\Entity\Admin\ESIndexState; use App\Entity\Admin\PopulatePass; +use App\Entity\Basket\Basket; +use App\Entity\Basket\BasketAsset; use App\Entity\Core\AlternateUrl; use App\Entity\Core\Asset; use App\Entity\Core\AssetRendition; @@ -52,6 +54,7 @@ public function configureMenuItems(): iterable MenuItem::linkToRoute('Asset permissions', '', 'alchemy_admin_acl_global_permissions', ['type' => 'asset']), MenuItem::linkToRoute('Collection permissions', '', 'alchemy_admin_acl_global_permissions', ['type' => 'collection']), MenuItem::linkToRoute('Workspace permissions', '', 'alchemy_admin_acl_global_permissions', ['type' => 'workspace']), + MenuItem::linkToRoute('Basket permissions', '', 'alchemy_admin_acl_global_permissions', ['type' => 'basket']), MenuItem::linkToCrud('All permissions (advanced)', '', AccessControlEntry::class), ]; @@ -73,6 +76,11 @@ public function configureMenuItems(): iterable MenuItem::linkToCrud('AlternateUrl', '', AlternateUrl::class), ]; + $basket = [ + MenuItem::linkToCrud('Basket', '', Basket::class), + MenuItem::linkToCrud('Basket Assets', '', BasketAsset::class), + ]; + $submenuTemplates = [ MenuItem::linkToCrud('AssetDataTemplate', '', AssetDataTemplate::class), MenuItem::linkToCrud('TemplateAttribute', '', TemplateAttribute::class), @@ -102,6 +110,7 @@ public function configureMenuItems(): iterable yield MenuItem::subMenu('Permissions', 'fas fa-folder-open')->setSubItems($submenu1); yield MenuItem::subMenu('Core', 'fas fa-folder-open')->setSubItems($submenu2); + yield MenuItem::subMenu('Basket', 'fas fa-basket-shopping')->setSubItems($basket); yield MenuItem::subMenu('Admin', 'fas fa-folder-open')->setSubItems($submenu3); yield MenuItem::subMenu('Templates', 'fas fa-folder-open')->setSubItems($submenuTemplates); yield MenuItem::subMenu('Integrations', 'fas fa-folder-open')->setSubItems($submenu4); diff --git a/databox/api/src/Elasticsearch/AssetDataTemplateSearch.php b/databox/api/src/Elasticsearch/AssetDataTemplateSearch.php index b9fa3664f..0dff0ca45 100644 --- a/databox/api/src/Elasticsearch/AssetDataTemplateSearch.php +++ b/databox/api/src/Elasticsearch/AssetDataTemplateSearch.php @@ -14,12 +14,17 @@ use FOS\ElasticaBundle\Paginator\FantaPaginatorAdapter; use Pagerfanta\Pagerfanta; use Symfony\Bundle\SecurityBundle\Security; +use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; final readonly class AssetDataTemplateSearch { - public function __construct(private PaginatedFinderInterface $finder, private Security $security, private EntityIriConverter $iriConverter) - { + public function __construct( + #[Autowire(service: 'fos_elastica.finder.asset_data_template')] + private PaginatedFinderInterface $finder, + private Security $security, + private EntityIriConverter $iriConverter + ) { } public function search( diff --git a/databox/api/src/Elasticsearch/AssetSearch.php b/databox/api/src/Elasticsearch/AssetSearch.php index 3308024b9..addeafad9 100644 --- a/databox/api/src/Elasticsearch/AssetSearch.php +++ b/databox/api/src/Elasticsearch/AssetSearch.php @@ -13,11 +13,13 @@ use FOS\ElasticaBundle\Finder\PaginatedFinderInterface; use FOS\ElasticaBundle\Paginator\FantaPaginatorAdapter; use Pagerfanta\Pagerfanta; +use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; class AssetSearch extends AbstractSearch { public function __construct( + #[Autowire(service: 'fos_elastica.finder.asset')] private readonly PaginatedFinderInterface $finder, private readonly TagFilterManager $tagFilterManager, private readonly AttributeSearch $attributeSearch, diff --git a/databox/api/src/Elasticsearch/BasketSearch.php b/databox/api/src/Elasticsearch/BasketSearch.php new file mode 100644 index 000000000..2ee6420ff --- /dev/null +++ b/databox/api/src/Elasticsearch/BasketSearch.php @@ -0,0 +1,111 @@ +createBasketACLBoolQuery($userId, $groupIds); + if (null !== $aclBoolQuery) { + $filterQueries[] = $aclBoolQuery; + } + + $maxLimit = 50; + $limit = $options['limit'] ?? $maxLimit; + if ($limit > $maxLimit) { + $limit = $maxLimit; + } + + $rootQuery = new Query\BoolQuery(); + foreach ($filterQueries as $query) { + $rootQuery->addFilter($query); + } + + $queryString = trim($options['query'] ?? ''); + $parsed = $this->queryStringParser->parseQuery($queryString); + + if (!empty($parsed['should'])) { + $multiMatch = new Query\MultiMatch(); + $multiMatch->setFields(['title', 'description']); + $multiMatch->setQuery($parsed['should']); + $rootQuery->addShould($multiMatch); + } + foreach ($parsed['must'] as $must) { + $multiMatch = new Query\MultiMatch(); + $multiMatch->setFields(['title', 'description']); + $multiMatch->setQuery($must); + $rootQuery->addMust($multiMatch); + } + + $query = new Query(); + $query->setTrackTotalHits(); + $query->setQuery($rootQuery); + + $query->setHighlight([ + 'pre_tags' => ['[hl]'], + 'post_tags' => ['[/hl]'], + 'fields' => [ + 'title' => [ + 'fragment_size' => 255, + 'number_of_fragments' => 1, + ], + 'description' => [ + 'fragment_size' => 255, + 'number_of_fragments' => 1, + ], + ], + ]); + + /** @var FantaPaginatorAdapter $adapter */ + $adapter = $this->finder->findPaginated($query)->getAdapter(); + $result = new Pagerfanta(new FilteredPager(fn (Basket $basket + ): bool => $this->isGranted(AbstractVoter::READ, $basket), $adapter)); + $result->setMaxPerPage((int) $limit); + if ($options['page'] ?? false) { + $result->setAllowOutOfRangePages(true); + $result->setCurrentPage((int) $options['page']); + } + + return $result; + } + + private function createBasketACLBoolQuery(string $userId, array $groupIds): ?Query\BoolQuery + { + if ($this->isSuperAdmin()) { + return null; + } + + $aclBoolQuery = new Query\BoolQuery(); + + $aclBoolQuery->addShould(new Query\Term(['ownerId' => $userId])); + $aclBoolQuery->addShould(new Query\Term(['users' => $userId])); + if (!empty($groupIds)) { + $aclBoolQuery->addShould(new Query\Terms('groups', $groupIds)); + } + + return $aclBoolQuery; + } +} diff --git a/databox/api/src/Elasticsearch/CollectionSearch.php b/databox/api/src/Elasticsearch/CollectionSearch.php index f0375e8c3..45768a6fe 100644 --- a/databox/api/src/Elasticsearch/CollectionSearch.php +++ b/databox/api/src/Elasticsearch/CollectionSearch.php @@ -10,11 +10,14 @@ use Elastica\Query; use FOS\ElasticaBundle\Finder\PaginatedFinderInterface; use Pagerfanta\Pagerfanta; +use Symfony\Component\DependencyInjection\Attribute\Autowire; class CollectionSearch extends AbstractSearch { - public function __construct(private readonly PaginatedFinderInterface $finder) - { + public function __construct( + #[Autowire(service: 'fos_elastica.finder.collection')] + private readonly PaginatedFinderInterface $finder + ) { } public function search( diff --git a/databox/api/src/Elasticsearch/Listener/BasketPostTransformListener.php b/databox/api/src/Elasticsearch/Listener/BasketPostTransformListener.php new file mode 100644 index 000000000..ebc18011c --- /dev/null +++ b/databox/api/src/Elasticsearch/Listener/BasketPostTransformListener.php @@ -0,0 +1,39 @@ +getObject()) instanceof Basket) { + return; + } + + $document = $event->getDocument(); + $users = $this->permissionManager->getAllowedUsers($basket, PermissionInterface::VIEW); + $groups = $this->permissionManager->getAllowedGroups($basket, PermissionInterface::VIEW); + $document->set('users', array_values(array_unique($users))); + $document->set('groups', array_values(array_unique($groups))); + } + + public static function getSubscribedEvents(): array + { + return [ + PostTransformEvent::class => 'hydrateDocument', + ]; + } +} diff --git a/databox/api/src/Elasticsearch/SuggestionSearch.php b/databox/api/src/Elasticsearch/SuggestionSearch.php index 6f139a53b..2ebfaa9b1 100644 --- a/databox/api/src/Elasticsearch/SuggestionSearch.php +++ b/databox/api/src/Elasticsearch/SuggestionSearch.php @@ -12,6 +12,7 @@ use FOS\ElasticaBundle\Elastica\Index; use Pagerfanta\Adapter\ArrayAdapter; use Pagerfanta\Pagerfanta; +use Symfony\Component\DependencyInjection\Attribute\Autowire; class SuggestionSearch extends AbstractSearch { @@ -20,8 +21,11 @@ class SuggestionSearch extends AbstractSearch private const DEFINITION_ID_FIELD = 'definitionId'; public function __construct( + #[Autowire(service: 'fos_elastica.index.collection')] private readonly Index $collectionIndex, + #[Autowire(service: 'fos_elastica.index.asset')] private readonly Index $assetIndex, + #[Autowire(service: 'fos_elastica.index.attribute')] private readonly Index $attributeIndex, private readonly string $kernelEnv, ) { diff --git a/databox/api/src/Entity/Basket/Basket.php b/databox/api/src/Entity/Basket/Basket.php index 1071476fd..a82b9cebd 100644 --- a/databox/api/src/Entity/Basket/Basket.php +++ b/databox/api/src/Entity/Basket/Basket.php @@ -4,29 +4,180 @@ namespace App\Entity\Basket; +use Alchemy\AclBundle\AclObjectInterface; +use Alchemy\AuthBundle\Security\JwtUser; +use Alchemy\ESBundle\Indexer\ESIndexableInterface; +use ApiPlatform\Metadata\ApiResource; +use ApiPlatform\Metadata\Delete; +use ApiPlatform\Metadata\Get; +use ApiPlatform\Metadata\GetCollection; +use ApiPlatform\Metadata\Post; +use ApiPlatform\Metadata\Put; +use App\Api\Model\Input\AddToBasketInput; +use App\Api\Model\Input\BasketInput; +use App\Api\Model\Input\RemoveFromBasketInput; +use App\Api\Model\Output\BasketOutput; +use App\Api\Processor\AddToBasketProcessor; +use App\Api\Processor\RemoveFromBasketProcessor; +use App\Api\Provider\BasketCollectionProvider; use App\Entity\AbstractUuidEntity; -use App\Entity\Core\Collection; +use App\Entity\Traits\CreatedAtTrait; +use App\Entity\Traits\OwnerIdTrait; +use App\Entity\Traits\UpdatedAtTrait; +use App\Entity\WithOwnerIdInterface; +use App\Repository\Basket\BasketRepository; +use App\Security\Voter\AbstractVoter; +use Doctrine\Common\Collections\ArrayCollection; +use Doctrine\Common\Collections\Collection; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; +use FOS\ElasticaBundle\Transformer\HighlightableModelInterface; +use Ramsey\Uuid\UuidInterface; +use Symfony\Component\Validator\Constraints as Assert; -#[ORM\Entity] -class Basket extends AbstractUuidEntity +#[ApiResource( + shortName: 'basket', + operations: [ + new GetCollection(security: 'is_granted("'.JwtUser::IS_AUTHENTICATED_FULLY.'")'), + new Get( + normalizationContext: [ + 'groups' => [self::GROUP_READ], + ] + ), + new Delete(security: 'is_granted("'.AbstractVoter::DELETE.'", object)'), + new Put( + normalizationContext: [ + 'groups' => [self::GROUP_READ], + ], + security: 'is_granted("'.AbstractVoter::EDIT.'", object)', + ), + new Post( + normalizationContext: [ + 'groups' => [self::GROUP_READ], + ], + securityPostValidation: 'is_granted("'.AbstractVoter::CREATE.'", object)' + ), + new Post( + uriTemplate: '/baskets/default/assets', + normalizationContext: [ + 'groups' => [self::GROUP_READ], + ], + input: AddToBasketInput::class, + name: 'add_to_default_basket', + processor: AddToBasketProcessor::class, + ), + new Post( + uriTemplate: '/baskets/{id}/assets', + normalizationContext: [ + 'groups' => [self::GROUP_READ], + ], + security: 'is_granted("'.AbstractVoter::EDIT.'", object)', + input: AddToBasketInput::class, + name: 'add_to_basket', + processor: AddToBasketProcessor::class, + ), + new Post( + uriTemplate: '/baskets/{id}/remove', + normalizationContext: [ + 'groups' => [self::GROUP_READ], + ], + security: 'is_granted("'.AbstractVoter::EDIT.'", object)', + input: RemoveFromBasketInput::class, + name: 'remove_from_basket', + processor: RemoveFromBasketProcessor::class, + ), + ], + normalizationContext: [ + 'groups' => [self::GROUP_LIST], + ], + input: BasketInput::class, + output: BasketOutput::class, + provider: BasketCollectionProvider::class, +)] +#[ORM\Entity(repositoryClass: BasketRepository::class)] +class Basket extends AbstractUuidEntity implements WithOwnerIdInterface, AclObjectInterface, ESIndexableInterface, HighlightableModelInterface { - #[ORM\ManyToOne(targetEntity: Collection::class)] + use OwnerIdTrait; + use CreatedAtTrait; + use UpdatedAtTrait; + final public const GROUP_READ = 'basket:read'; + final public const GROUP_LIST = 'basket:index'; + final public const GROUP_WRITE = 'basket:w'; + + #[Assert\NotBlank] + #[Assert\Length(max: 255)] + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $title = null; + + #[ORM\Column(type: Types::TEXT, nullable: true)] + private ?string $description = null; + + #[ORM\OneToMany(mappedBy: 'basket', targetEntity: BasketAsset::class)] #[ORM\JoinColumn(nullable: false)] - private Collection $collection; + private ?Collection $assets = null; + + private ?array $highlights = null; + + public function __construct(UuidInterface|string|null $id = null) + { + parent::__construct($id); + $this->assets = new ArrayCollection(); + } public function getTitle(): ?string { - return $this->collection->getTitle(); + return $this->title; + } + + public function setTitle(?string $title): void + { + $this->title = $title; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description): void + { + $this->description = $description; + } + + public function getAssets(): Collection + { + return $this->assets; + } + + public function setAssets(Collection $assets): void + { + $this->assets = $assets; + } + + public function getAclOwnerId(): string + { + return $this->getOwnerId(); + } + + public function isObjectIndexable(): bool + { + return true; + } + + public function setElasticHighlights(array $highlights) + { + $this->highlights = $highlights; + + return $this; } - public function getCollection(): Collection + public function getElasticHighlights(): ?array { - return $this->collection; + return $this->highlights; } - public function setCollection(Collection $collection): void + public function __toString(): string { - $this->collection = $collection; + return $this->getTitle() ?? 'Basket - '.$this->getId(); } } diff --git a/databox/api/src/Entity/Basket/BasketAsset.php b/databox/api/src/Entity/Basket/BasketAsset.php new file mode 100644 index 000000000..40b4c7832 --- /dev/null +++ b/databox/api/src/Entity/Basket/BasketAsset.php @@ -0,0 +1,115 @@ + new Link(toProperty: 'basket', fromClass: Basket::class), + ], + normalizationContext: [ + 'groups' => [ + Asset::GROUP_LIST, + self::GROUP_LIST, + ], + ], + order: ['position' => 'ASC'], + provider: BasketAssetCollectionProvider::class, +)] +class BasketAsset extends AbstractUuidEntity implements WithOwnerIdInterface +{ + use OwnerIdTrait; + use CreatedAtTrait; + + public const GROUP_LIST = 'basket-asset:list'; + + #[ORM\ManyToOne(targetEntity: Basket::class, inversedBy: 'assets')] + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + private ?Basket $basket = null; + + #[ORM\ManyToOne(targetEntity: Asset::class)] + #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] + #[Groups([self::GROUP_LIST])] + private ?Asset $asset = null; + + #[ORM\Column(type: Types::JSON, nullable: true)] + #[Groups([self::GROUP_LIST])] + private ?array $context = []; + + #[ORM\Column(type: Types::BIGINT, nullable: false)] + #[Groups([self::GROUP_LIST])] + private string|null $position = '0'; + + public function getBasket(): Basket + { + return $this->basket; + } + + public function setBasket(Basket $basket): void + { + $this->basket = $basket; + } + + public function getAsset(): Asset + { + return $this->asset; + } + + public function setAsset(Asset $asset): void + { + $this->asset = $asset; + } + + public function getClip(): ?array + { + return $this->context['clip'] ?? null; + } + + public function setClip(?array $clip): void + { + $this->context['clip'] = $clip; + } + + public function getContext(): ?array + { + return $this->context; + } + + public function setContext(?array $context): void + { + $this->context = $context; + } + + public function getPosition(): ?int + { + if (null === $this->position) { + return null; + } + + return (int) $this->position; + } + + public function setPosition(int|string $position): void + { + $this->position = (string) $position; + } +} diff --git a/databox/api/src/Entity/Core/Asset.php b/databox/api/src/Entity/Core/Asset.php index 8db67b006..bfa8f789c 100644 --- a/databox/api/src/Entity/Core/Asset.php +++ b/databox/api/src/Entity/Core/Asset.php @@ -34,6 +34,7 @@ use App\Entity\AbstractUuidEntity; use App\Entity\Traits\CreatedAtTrait; use App\Entity\Traits\LocaleTrait; +use App\Entity\Traits\OwnerIdTrait; use App\Entity\Traits\UpdatedAtTrait; use App\Entity\Traits\WorkspacePrivacyTrait; use App\Entity\Traits\WorkspaceTrait; @@ -58,7 +59,7 @@ ), new Get( normalizationContext: [ - 'groups' => [Asset::GROUP_READ], + 'groups' => [self::GROUP_READ], ] ), new Delete(security: 'is_granted("DELETE", object)'), @@ -80,7 +81,7 @@ uriTemplate: '/assets/multiple', controller: MultipleAssetCreateAction::class, normalizationContext: [ - 'groups' => [Asset::GROUP_READ], + 'groups' => [self::GROUP_READ], ], input: MultipleAssetInput::class, output: MultipleAssetOutput::class, @@ -114,7 +115,7 @@ ), ], normalizationContext: [ - 'groups' => [Asset::GROUP_LIST], + 'groups' => [self::GROUP_LIST], ], input: AssetInput::class, output: AssetOutput::class, @@ -129,6 +130,7 @@ class Asset extends AbstractUuidEntity implements HighlightableModelInterface, W use UpdatedAtTrait; use WorkspaceTrait; use LocaleTrait; + use OwnerIdTrait; use WorkspacePrivacyTrait; final public const GROUP_READ = 'asset:read'; final public const GROUP_LIST = 'asset:index'; @@ -143,9 +145,6 @@ class Asset extends AbstractUuidEntity implements HighlightableModelInterface, W #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] private ?string $title = null; - #[ORM\Column(type: Types::STRING, length: 36)] - private ?string $ownerId = null; - /** * Unique key by workspace. Used to prevent duplicates. */ @@ -234,16 +233,6 @@ public function __construct(?float $now = null, ?int $sequence = null) } } - public function getOwnerId(): ?string - { - return $this->ownerId; - } - - public function setOwnerId(?string $ownerId): void - { - $this->ownerId = $ownerId; - } - public function getSource(): ?File { return $this->source; diff --git a/databox/api/src/Entity/Core/Collection.php b/databox/api/src/Entity/Core/Collection.php index 5382b6532..cb0b9943a 100644 --- a/databox/api/src/Entity/Core/Collection.php +++ b/databox/api/src/Entity/Core/Collection.php @@ -25,6 +25,7 @@ use App\Entity\Traits\CreatedAtTrait; use App\Entity\Traits\DeletedAtTrait; use App\Entity\Traits\LocaleTrait; +use App\Entity\Traits\OwnerIdTrait; use App\Entity\Traits\UpdatedAtTrait; use App\Entity\Traits\WorkspacePrivacyTrait; use App\Entity\Traits\WorkspaceTrait; @@ -99,6 +100,7 @@ class Collection extends AbstractUuidEntity implements SoftDeleteableInterface, use UpdatedAtTrait; use DeletedAtTrait; use WorkspaceTrait; + use OwnerIdTrait; use LocaleTrait; use WorkspacePrivacyTrait; @@ -110,9 +112,6 @@ class Collection extends AbstractUuidEntity implements SoftDeleteableInterface, #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] private ?string $title = null; - #[ORM\Column(type: Types::STRING, length: 36)] - private ?string $ownerId = null; - #[ORM\ManyToOne(targetEntity: Collection::class, inversedBy: 'children')] #[ORM\JoinColumn(nullable: true)] #[MaxDepth(1)] @@ -197,16 +196,6 @@ public function getChildren(): DoctrineCollection return $this->children; } - public function getOwnerId(): ?string - { - return $this->ownerId; - } - - public function setOwnerId(?string $ownerId): void - { - $this->ownerId = $ownerId; - } - /** * @return CollectionAsset[] */ diff --git a/databox/api/src/Entity/Core/Workspace.php b/databox/api/src/Entity/Core/Workspace.php index 883d95ce9..6db0c0973 100644 --- a/databox/api/src/Entity/Core/Workspace.php +++ b/databox/api/src/Entity/Core/Workspace.php @@ -20,6 +20,7 @@ use App\Entity\AbstractUuidEntity; use App\Entity\Traits\CreatedAtTrait; use App\Entity\Traits\DeletedAtTrait; +use App\Entity\Traits\OwnerIdTrait; use App\Entity\Traits\UpdatedAtTrait; use App\Entity\WithOwnerIdInterface; use App\Repository\Core\WorkspaceRepository; @@ -86,6 +87,7 @@ class Workspace extends AbstractUuidEntity implements SoftDeleteableInterface, A { use CreatedAtTrait; use UpdatedAtTrait; + use OwnerIdTrait; use DeletedAtTrait; final public const GROUP_READ = 'workspace:read'; final public const GROUP_LIST = 'workspace:index'; @@ -96,9 +98,6 @@ class Workspace extends AbstractUuidEntity implements SoftDeleteableInterface, A #[ORM\Column(type: Types::STRING, length: 50, unique: true, nullable: false)] private ?string $slug = null; - #[ORM\Column(type: Types::STRING, length: 255)] - private ?string $ownerId = null; - #[ORM\Column(type: Types::BOOLEAN, nullable: false)] private bool $public = false; @@ -182,16 +181,6 @@ public function __toString(): string return $this->getName(); } - public function getOwnerId(): ?string - { - return $this->ownerId; - } - - public function setOwnerId(?string $ownerId): void - { - $this->ownerId = $ownerId; - } - #[ApiProperty(readable: false, writable: false)] public function getAclOwnerId(): string { diff --git a/databox/api/src/Entity/Template/AssetDataTemplate.php b/databox/api/src/Entity/Template/AssetDataTemplate.php index 4b4d0a3c9..38b4590af 100644 --- a/databox/api/src/Entity/Template/AssetDataTemplate.php +++ b/databox/api/src/Entity/Template/AssetDataTemplate.php @@ -20,6 +20,7 @@ use App\Entity\Core\Collection; use App\Entity\Core\Tag; use App\Entity\Traits\CreatedAtTrait; +use App\Entity\Traits\OwnerIdTrait; use App\Entity\Traits\UpdatedAtTrait; use App\Entity\Traits\WorkspaceTrait; use App\Entity\WithOwnerIdInterface; @@ -69,6 +70,7 @@ #[ApiFilter(SearchFilter::class, properties: ['workspace' => 'exact'])] class AssetDataTemplate extends AbstractUuidEntity implements AclObjectInterface, WithOwnerIdInterface, \Stringable { + use OwnerIdTrait; use CreatedAtTrait; use UpdatedAtTrait; use WorkspaceTrait; @@ -85,10 +87,6 @@ class AssetDataTemplate extends AbstractUuidEntity implements AclObjectInterface #[Groups([AssetDataTemplate::GROUP_READ])] private bool $public = false; - #[ORM\Column(type: Types::STRING, length: 36)] - #[Groups([AssetDataTemplate::GROUP_READ])] - private ?string $ownerId = null; - /** * Asset title. */ @@ -136,16 +134,6 @@ public function setPublic(bool $public): void $this->public = $public; } - public function getOwnerId(): ?string - { - return $this->ownerId; - } - - public function setOwnerId(?string $ownerId): void - { - $this->ownerId = $ownerId; - } - public function getTitle(): ?string { return $this->title; @@ -198,7 +186,7 @@ public function setData(array $data): void public function getAclOwnerId(): string { - return $this->ownerId ?? 'anon.'; + return $this->getOwnerId() ?? 'anon.'; } public function getName(): ?string diff --git a/databox/api/src/Entity/Traits/OwnerIdTrait.php b/databox/api/src/Entity/Traits/OwnerIdTrait.php new file mode 100644 index 000000000..6f552e91d --- /dev/null +++ b/databox/api/src/Entity/Traits/OwnerIdTrait.php @@ -0,0 +1,24 @@ +ownerId; + } + + public function setOwnerId(?string $ownerId): void + { + $this->ownerId = $ownerId; + } +} diff --git a/databox/api/src/Repository/Basket/BasketRepository.php b/databox/api/src/Repository/Basket/BasketRepository.php new file mode 100644 index 000000000..d35c4c618 --- /dev/null +++ b/databox/api/src/Repository/Basket/BasketRepository.php @@ -0,0 +1,54 @@ +createQueryBuilder('t') + ->addOrderBy('t.createdAt', 'DESC') + ->addOrderBy('t.id', 'ASC'); + } + + public function removeFromBasket(string $basketId, array $itemIds): void + { + $this->_em->createQueryBuilder('t') + ->delete() + ->from(BasketAsset::class, 't') + ->andWhere('t.basket = :bid') + ->andWhere('t.id IN (:ids)') + ->setParameters([ + 'bid' => $basketId, + 'ids' => $itemIds, + ]) + ->getQuery() + ->execute(); + } + + public function getBasketMaxPosition(string $basketId): int + { + return $this->_em->createQueryBuilder() + ->select('MAX(t.position) as m') + ->from(BasketAsset::class, 't') + ->andWhere('t.basket = :b') + ->setParameter('b', $basketId) + ->getQuery() + ->getSingleScalarResult() ?? 0; + } +} diff --git a/databox/api/src/Security/Voter/AbstractVoter.php b/databox/api/src/Security/Voter/AbstractVoter.php index bfeb01cc9..ab35eb492 100644 --- a/databox/api/src/Security/Voter/AbstractVoter.php +++ b/databox/api/src/Security/Voter/AbstractVoter.php @@ -59,4 +59,9 @@ protected function isAdmin(): bool { return $this->security->isGranted(JwtUser::ROLE_ADMIN); } + + protected function isAuthenticated(): bool + { + return $this->security->isGranted(JwtUser::IS_AUTHENTICATED_FULLY); + } } diff --git a/databox/api/src/Security/Voter/AssetVoter.php b/databox/api/src/Security/Voter/AssetVoter.php index ec9f39197..ff7c6c82f 100644 --- a/databox/api/src/Security/Voter/AssetVoter.php +++ b/databox/api/src/Security/Voter/AssetVoter.php @@ -87,7 +87,7 @@ protected function voteOnAttribute(string $attribute, $subject, TokenInterface $ ); case self::EDIT_PERMISSIONS: return $isOwner() - || $this->security->isGranted(self::SCOPE_PREFIX.'EDIT') + || $this->security->isGranted(self::SCOPE_PREFIX.'OWNER') || $this->hasAcl(PermissionInterface::OWNER, $subject, $token) || ( null !== $subject->getReferenceCollection() diff --git a/databox/api/src/Security/Voter/BasketVoter.php b/databox/api/src/Security/Voter/BasketVoter.php new file mode 100644 index 000000000..94ae6138a --- /dev/null +++ b/databox/api/src/Security/Voter/BasketVoter.php @@ -0,0 +1,56 @@ +getUser(); + $userId = $user instanceof JwtUser ? $user->getId() : false; + $isOwner = fn (): bool => $userId && $subject->getOwnerId() === $userId; + + return match ($attribute) { + self::CREATE => $this->isAuthenticated(), + self::READ => $isOwner() + || $this->security->isGranted(self::SCOPE_PREFIX.'READ') + || $this->hasAcl(PermissionInterface::VIEW, $subject, $token), + self::EDIT => $isOwner() + || $this->security->isGranted(self::SCOPE_PREFIX.'EDIT') + || $this->hasAcl(PermissionInterface::EDIT, $subject, $token), + self::SHARE => $isOwner() + || $this->security->isGranted(self::SCOPE_PREFIX.'SHARE') + || $this->hasAcl(PermissionInterface::SHARE, $subject, $token), + self::DELETE => $isOwner() + || $this->security->isGranted(self::SCOPE_PREFIX.'DELETE') + || $this->hasAcl(PermissionInterface::DELETE, $subject, $token), + self::EDIT_PERMISSIONS => $isOwner() + || $this->security->isGranted(self::SCOPE_PREFIX.'OWNER') + || $this->hasAcl(PermissionInterface::OWNER, $subject, $token), + default => false, + }; + } +} diff --git a/databox/client/package.json b/databox/client/package.json index 885b2ba52..6649991fa 100644 --- a/databox/client/package.json +++ b/databox/client/package.json @@ -14,53 +14,55 @@ "@alchemy/react-ps": "workspace:*", "@alchemy/theme-editor": "workspace:*", "@alchemy/visual-workflow": "workspace:*", - "@algolia/autocomplete-core": "^1.16.0", - "@algolia/autocomplete-theme-classic": "^1.16.0", - "@dnd-kit/core": "^6.0.5", - "@dnd-kit/sortable": "^7.0.1", - "@dnd-kit/utilities": "^3.2.0", - "@emotion/react": "^11.11.1", + "@algolia/autocomplete-core": "^1.17.0", + "@algolia/autocomplete-theme-classic": "^1.17.0", + "@dnd-kit/core": "^6.1.0", + "@dnd-kit/sortable": "^7.0.2", + "@dnd-kit/utilities": "^3.2.2", + "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.0", - "@mui/icons-material": "^5.15.0", - "@mui/lab": "^5.0.0-alpha.157", - "@mui/material": "^5.15.1", + "@mui/icons-material": "^5.15.13", + "@mui/lab": "5.0.0-alpha.168", + "@mui/material": "^5.15.13", "@mui/x-tree-view": "^6.17.0", "@toast-ui/react-image-editor": "^3.15.2", - "ace-builds": "^1.14.0", - "axios": "^1.6.2", - "byte-size": "^8.1.0", + "ace-builds": "^1.32.7", + "axios": "^1.6.7", + "byte-size": "^8.1.1", + "classnames": "^2.5.1", "clipboard-copy": "^4.0.1", - "country-locale-map": "^1.8.0", - "flag-icons": "^6.6.3", - "formik": "^2.2.9", - "formik-material-ui": "^4.0.0-alpha.2", - "i18next": "^23.7.7", - "i18next-browser-languagedetector": "^6.1.4", + "country-locale-map": "^1.9.4", + "flag-icons": "^6.15.0", + "formik": "^2.4.5", + "formik-material-ui": "4.0.0-alpha.2", + "i18next": "^23.10.1", + "i18next-browser-languagedetector": "^6.1.8", "ismounted": "^0.1.8", - "leaflet": "^1.9.3", - "moment": "^2.29.4", - "react": "^18.1.0", + "leaflet": "^1.9.4", + "moment": "^2.30.1", + "react": "^18.2.0", "react-ace": "^10.1.0", "react-colorful": "^5.6.1", - "react-compare-image": "^3.1.0", + "react-compare-image": "^3.4.0", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", "react-dom": "^18.2.0", - "react-dropzone": "^14.2.1", + "react-dropzone": "^14.2.3", "react-hook-form": "^7.51.0", "react-i18next": "^13.5.0", - "react-leaflet": "^4.2.0", - "react-nl2br": "^1.0.3", - "react-pdf": "^7.5.1", - "react-player": "^2.10.1", - "react-select": "^5.3.2", - "react-string-replace": "^1.1.0", + "react-leaflet": "^4.2.1", + "react-nl2br": "^1.0.4", + "react-pdf": "^7.7.1", + "react-player": "^2.15.1", + "react-select": "^5.8.0", + "react-string-replace": "^1.1.1", "react-toastify": "^9.1.3", - "sass": "^1.60.0", + "react-virtualized": "^9.22.5", + "sass": "^1.71.1", "tui-image-editor": "^3.15.3", - "uuid": "^9.0.0", + "uuid": "^9.0.1", "web-vitals": "^2.1.4", - "zustand": "^4.5.0" + "zustand": "^4.5.2" }, "scripts": { "dev": "vite", @@ -72,29 +74,31 @@ "i18n:scan": "mkdir -p ./i18n-scan-tmp && rm -rf ./i18n-scan-tmp && npx tsc --jsx preserve --target ES6 --module es2022 --noEmit false --outDir ./i18n-scan-tmp && npx i18next-scanner" }, "devDependencies": { - "@testing-library/jest-dom": "^6.1.5", - "@testing-library/react": "^14.1.2", - "@testing-library/user-event": "^14.1.1", - "@types/byte-size": "^8.1.0", + "@testing-library/jest-dom": "^6.4.2", + "@testing-library/react": "^14.2.1", + "@testing-library/user-event": "^14.5.2", + "@types/byte-size": "^8.1.2", "@types/jest": "^27.5.2", - "@types/leaflet": "^1.9.0", - "@types/node": "^18.8.5", - "@types/react": "^18.2.37", - "@types/react-dom": "^18.2.15", + "@types/leaflet": "^1.9.8", + "@types/node": "^18.19.24", + "@types/react": "^18.2.65", + "@types/react-dom": "^18.2.22", "@types/react-select": "^5.0.1", + "@types/react-virtualized": "^9.21.29", "@types/testing-library__jest-dom": "^6.0.0", - "@types/uuid": "^9.0.0", - "@typescript-eslint/eslint-plugin": "^6.10.0", - "@typescript-eslint/parser": "^6.10.0", - "@vitejs/plugin-react-swc": "^3.5.0", + "@types/uuid": "^9.0.8", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "@vitejs/plugin-react-swc": "^3.6.0", + "esbuild-plugin-react-virtualized": "^1.0.4", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.4", - "eslint-plugin-unused-imports": "^3.0.0", - "i18next-scanner": "^3.1.0", - "ts-jest": "^23.10.2", - "typescript": "^5.2.2", - "vite": "^5.0.0", - "vite-plugin-checker": "^0.6.2", + "eslint-plugin-react-refresh": "^0.4.6", + "eslint-plugin-unused-imports": "^3.1.0", + "i18next-scanner": "^3.3.0", + "ts-jest": "^23.10.5", + "typescript": "^5.4.2", + "vite": "^5.1.6", + "vite-plugin-checker": "^0.6.4", "vite-plugin-svgr": "^4.2.0" } } diff --git a/databox/client/src/api/asset.ts b/databox/client/src/api/asset.ts index 7d8afe8b4..eecf372b7 100644 --- a/databox/client/src/api/asset.ts +++ b/databox/client/src/api/asset.ts @@ -1,7 +1,12 @@ import apiClient from './api-client'; import {Asset, AssetFileVersion, Attribute} from '../types'; -import {ApiCollectionResponse, getHydraCollection} from './hydra'; +import { + ApiCollectionResponse, + getAssetsHydraCollection, + getHydraCollection, +} from './hydra'; import {AxiosRequestConfig} from 'axios'; +import {TFacets} from '../components/Media/Asset/Facets'; export interface GetAssetOptions { url?: string; @@ -9,7 +14,7 @@ export interface GetAssetOptions { workspaces?: string[]; parents?: string[]; filters?: any; - order: Record; + order?: Record; group?: string[] | undefined; context?: | { @@ -31,6 +36,7 @@ export async function getAssets( ApiCollectionResponse< Asset, { + facets: TFacets; debug: ESDebug; } > @@ -43,7 +49,7 @@ export async function getAssets( }); return { - ...getHydraCollection(res.data), + ...getAssetsHydraCollection(res.data), debug: { query: res.data['debug:es'].query, esQueryTime: res.data['debug:es'].time, diff --git a/databox/client/src/api/basket.ts b/databox/client/src/api/basket.ts new file mode 100644 index 000000000..9c22059e5 --- /dev/null +++ b/databox/client/src/api/basket.ts @@ -0,0 +1,93 @@ +import apiClient from './api-client'; +import {Basket, BasketAsset} from '../types'; +import {ApiCollectionResponse, getHydraCollection} from './hydra'; +import {clearAssociationIds} from './clearAssociation'; + +export type GetBasketOptions = { + query?: string; + page?: number; +}; + +export async function getBaskets( + params: GetBasketOptions = {} +): Promise> { + const res = await apiClient.get('/baskets', { + params, + }); + + return getHydraCollection(res.data); +} + +export async function getBasketAssets( + id: string, + next?: string, + params: GetBasketOptions = {} +): Promise> { + const res = await apiClient.get(next || `/baskets/${id}/assets`, { + params, + }); + + const collection = getHydraCollection(res.data); + + let p = 1; + collection.result = collection.result.map(r => ({ + ...r, + position: p++, + })); + + return collection; +} + +export async function putBasket( + id: string, + data: Partial +): Promise { + const res = await apiClient.put( + `/baskets/${id}`, + clearAssociationIds(data) + ); + + return res.data; +} + +export async function postBasket(data: Partial): Promise { + const res = await apiClient.post(`/baskets`, data); + + return res.data; +} + +export async function getBasket(id: string): Promise { + return (await apiClient.get(`/baskets/${id}`)).data; +} + +export async function deleteBasket(id: string): Promise { + await apiClient.delete(`/baskets/${id}`); +} + +export type BasketAssetInput = { + id: string; +}; + +type AddToBasketInput = { + assets: BasketAssetInput[]; +}; + +export async function addToBasket( + basketId: string | undefined, + data: AddToBasketInput +): Promise { + return ( + await apiClient.post(`/baskets/${basketId ?? 'default'}/assets`, data) + ).data; +} + +export async function removeFromBasket( + basketId: string, + itemIds: string[] +): Promise { + return ( + await apiClient.post(`/baskets/${basketId}/remove`, { + items: itemIds, + }) + ).data; +} diff --git a/databox/client/src/api/collection.ts b/databox/client/src/api/collection.ts index 7998edec3..6b5540402 100644 --- a/databox/client/src/api/collection.ts +++ b/databox/client/src/api/collection.ts @@ -2,7 +2,7 @@ import apiClient from './api-client'; import {Collection, CollectionOptionalWorkspace, Workspace} from '../types'; import {ApiCollectionResponse, getHydraCollection} from './hydra'; import {clearAssociationIds} from './clearAssociation'; -import {useCollectionStore} from '../store/collectionStore.ts'; +import {useCollectionStore} from '../store/collectionStore'; export const collectionChildrenLimit = 20; export const collectionSecondLimit = 30; diff --git a/databox/client/src/api/hydra.ts b/databox/client/src/api/hydra.ts index 82b11179e..b8a1c47ce 100644 --- a/databox/client/src/api/hydra.ts +++ b/databox/client/src/api/hydra.ts @@ -1,4 +1,5 @@ import {TFacets} from '../components/Media/Asset/Facets'; +import {Asset} from '../types'; export type ApiCollectionResponse = { total: number; @@ -19,7 +20,6 @@ type HydraCollectionResponse = { 'hydra:last': string; }; 'hydra:member': T[]; - 'facets'?: TFacets; } & E; export interface ApiHydraObjectResponse { @@ -29,15 +29,14 @@ export interface ApiHydraObjectResponse { export function getHydraCollection( response: HydraCollectionResponse -): ApiCollectionResponse { - const res: ApiCollectionResponse = { +): ApiCollectionResponse { + const res: ApiCollectionResponse = { total: response['hydra:totalItems'], result: response['hydra:member'], first: null, previous: null, next: null, last: null, - facets: response.facets, }; const hydraView = response['hydra:view']; @@ -50,3 +49,17 @@ export function getHydraCollection( return res; } + +export function getAssetsHydraCollection( + response: HydraCollectionResponse< + Asset, + { + facets: TFacets; + } + > +) { + return { + ...getHydraCollection(response), + facets: response.facets, + }; +} diff --git a/databox/client/src/api/pagination.ts b/databox/client/src/api/pagination.ts new file mode 100644 index 000000000..475b0bdec --- /dev/null +++ b/databox/client/src/api/pagination.ts @@ -0,0 +1,75 @@ +import {StateSetter} from '../types'; +import {ApiCollectionResponse} from './hydra'; +import {LoadMoreFunc} from '../components/AssetList/types'; + +export type Pagination = { + loading: boolean; + loadingMore: boolean; + total?: number; + next?: string | null; + pages: T[][]; +}; + +export function createDefaultPagination(): Pagination { + return { + loading: true, + loadingMore: false, + pages: [], + }; +} + +type Loader = ( + next?: string | undefined +) => Promise>; +type PaginatedLoader = (next?: string) => Promise>; + +export function createLoadMore( + paginatedLoader: PaginatedLoader, + pagination: Pagination +): LoadMoreFunc | undefined { + if (pagination.next) { + return async () => { + return await paginatedLoader(pagination.next!); + }; + } +} + +export function createPaginatedLoader( + loader: Loader, + setter: StateSetter> +): PaginatedLoader { + return async (next?: string): Promise> => { + if (next) { + setter(p => ({ + ...p, + loadingMore: true, + })); + } else { + setter(p => ({ + ...p, + loading: true, + })); + } + + try { + const r = await loader(next); + setter(p => ({ + total: r.total, + pages: next ? p!.pages.concat([r.result]) : [r.result], + next: r.next, + loadingMore: false, + loading: false, + })); + + return r; + } catch (e: any) { + setter(p => ({ + ...p, + loadingMore: false, + loading: false, + })); + + throw e; + } + }; +} diff --git a/databox/client/src/api/tag.ts b/databox/client/src/api/tag.ts index cacd6e1f2..b635851e6 100644 --- a/databox/client/src/api/tag.ts +++ b/databox/client/src/api/tag.ts @@ -21,9 +21,7 @@ export async function getTags( return getHydraCollection(res.data); } -export async function getTag( - id: string -): Promise { +export async function getTag(id: string): Promise { const res = await apiClient.get(`${tagNS}/${id}`); return res.data; diff --git a/databox/client/src/api/uploader-client.ts b/databox/client/src/api/uploader-client.ts index 11f4109bf..57299116d 100644 --- a/databox/client/src/api/uploader-client.ts +++ b/databox/client/src/api/uploader-client.ts @@ -1,7 +1,7 @@ import config from '../config'; import {configureClientAuthentication} from '@alchemy/auth'; import {createHttpClient} from '@alchemy/api'; -import {oauthClient} from './api-client.ts'; +import {oauthClient} from './api-client'; const uploaderClient = createHttpClient(config.uploaderApiBaseUrl); diff --git a/databox/client/src/components/Acl/AclForm.tsx b/databox/client/src/components/Acl/AclForm.tsx index 4ebc4d80c..c2824f572 100644 --- a/databox/client/src/components/Acl/AclForm.tsx +++ b/databox/client/src/components/Acl/AclForm.tsx @@ -1,15 +1,12 @@ import {useCallback} from 'react'; import PermissionList from '../Permissions/PermissionList'; import {deleteAce, getAces, putAce} from '../../api/acl'; -import { - OnPermissionDelete, - PermissionObjectType, -} from '../Permissions/permissions'; +import {OnPermissionDelete, PermissionObject} from '../Permissions/permissions'; import {Ace, UserType} from '../../types'; -import {useCollectionStore} from '../../store/collectionStore.ts'; +import {useCollectionStore} from '../../store/collectionStore'; type Props = { - objectType: PermissionObjectType; + objectType: PermissionObject; objectId: string; displayedPermissions?: string[] | undefined; }; diff --git a/databox/client/src/components/App.tsx b/databox/client/src/components/App.tsx index ef476c8fa..f2993b81a 100644 --- a/databox/client/src/components/App.tsx +++ b/databox/client/src/components/App.tsx @@ -3,7 +3,6 @@ import AssetSelectionProvider from './Media/AssetSelectionProvider'; import MainAppBar, {menuHeight} from './Layout/MainAppBar'; import LeftPanel from './Media/LeftPanel'; import ResultProvider from './Media/Search/ResultProvider'; -import AssetResults from './Media/Search/AssetResults'; import SearchProvider from './Media/Search/SearchProvider'; import AssetDropzone from './Media/Asset/AssetDropzone'; import {ToastContainer} from 'react-toastify'; @@ -17,6 +16,8 @@ import AttributeFormatProvider from './Media/Asset/Attribute/Format/AttributeFor import {useRequestErrorHandler} from '@alchemy/api'; import {setSentryUser} from '@alchemy/core'; import {useAuth} from '@alchemy/react-auth'; +import AssetSearch from './AssetSearch/AssetSearch'; +import {leftPanelWidth} from '../themes/base'; const AppProxy = React.memo(() => { const isSmallView = useMediaQuery((theme: Theme) => @@ -52,7 +53,7 @@ const AppProxy = React.memo(() => { {leftPanelOpen && ( ({ - width: 360, + width: leftPanelWidth, flexGrow: 0, flexShrink: 0, height: `calc(100vh - ${menuHeight}px)`, @@ -69,7 +70,7 @@ const AppProxy = React.memo(() => { flexGrow: 1, }} > - + diff --git a/databox/client/src/components/AppAuthorizationCodePage.tsx b/databox/client/src/components/AppAuthorizationCodePage.tsx index 0078dea32..8b81694d7 100644 --- a/databox/client/src/components/AppAuthorizationCodePage.tsx +++ b/databox/client/src/components/AppAuthorizationCodePage.tsx @@ -1,5 +1,5 @@ import {AuthorizationCodePage} from '@alchemy/react-auth'; -import {oauthClient} from '../api/api-client.ts'; +import {oauthClient} from '../api/api-client'; type Props = {}; diff --git a/databox/client/src/components/Media/Asset/AssetContextMenu.tsx b/databox/client/src/components/AssetList/AssetContextMenu.tsx similarity index 71% rename from databox/client/src/components/Media/Asset/AssetContextMenu.tsx rename to databox/client/src/components/AssetList/AssetContextMenu.tsx index 802f01b53..db2d37bd7 100644 --- a/databox/client/src/components/Media/Asset/AssetContextMenu.tsx +++ b/databox/client/src/components/AssetList/AssetContextMenu.tsx @@ -7,44 +7,37 @@ import { Menu, MenuItem, } from '@mui/material'; -import {Asset} from '../../../types'; +import {Asset, AssetOrAssetContainer} from '../../types'; import LinkIcon from '@mui/icons-material/Link'; import EditIcon from '@mui/icons-material/Edit'; import DeleteIcon from '@mui/icons-material/Delete'; import CloudDownloadIcon from '@mui/icons-material/CloudDownload'; import {PopoverPosition} from '@mui/material/Popover/Popover'; -import DeleteAssetsConfirm from './Actions/DeleteAssetsConfirm'; -import {ResultContext} from '../Search/ResultContext'; -import ExportAssetsDialog from './Actions/ExportAssetsDialog'; +import DeleteAssetsConfirm from '../Media/Asset/Actions/DeleteAssetsConfirm'; +import {ResultContext} from '../Media/Search/ResultContext'; +import ExportAssetsDialog from '../Media/Asset/Actions/ExportAssetsDialog'; import FileOpenIcon from '@mui/icons-material/FileOpen'; import {useModals} from '@alchemy/navigation'; -import SaveAsButton from './Actions/SaveAsButton'; -import {useNavigateToModal} from '../../Routing/ModalLink'; +import SaveAsButton from '../Media/Asset/Actions/SaveAsButton'; +import {useNavigateToModal} from '../Routing/ModalLink'; import SaveIcon from '@mui/icons-material/Save'; -import {modalRoutes} from '../../../routes.ts'; +import {modalRoutes} from '../../routes'; import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; -type Props = { +type Props = { anchorPosition: PopoverPosition; anchorEl: HTMLElement | undefined; asset: Asset; + item: Item; onClose: () => void; }; -export function hasContextMenu({capabilities}: Asset): boolean { - return ( - capabilities.canEdit || - capabilities.canEditPermissions || - capabilities.canEditAttributes - ); -} - -export default function AssetContextMenu({ +export default function AssetContextMenu({ asset, anchorPosition, anchorEl, onClose, -}: Props) { +}: Props) { const {openModal} = useModals(); const navigateToModal = useNavigateToModal(); const resultContext = useContext(ResultContext); @@ -160,31 +153,36 @@ export default function AssetContextMenu({ )} - {capabilities.canEdit && ( - - - - - - - )} - {capabilities.canEditAttributes && ( - - - - - - - )} - {capabilities.canDelete && [ - , - - - - - - , - ]} + + + + + + + + + + + + + + + + + + + ); diff --git a/databox/client/src/components/AssetList/AssetList.tsx b/databox/client/src/components/AssetList/AssetList.tsx new file mode 100644 index 000000000..b87ff63a3 --- /dev/null +++ b/databox/client/src/components/AssetList/AssetList.tsx @@ -0,0 +1,249 @@ +import React, {Context, MouseEvent, useEffect} from 'react'; +import {Asset, AssetOrAssetContainer, StateSetter} from '../../types'; +import AssetToolbar from './AssetToolbar'; +import { + AssetSelectionContext, + TSelectionContext, +} from '../../context/AssetSelectionContext'; +import {Layout, layouts} from './Layouts'; +import { + AssetItemComponent, + CustomItemAction, + LayoutProps, + LoadMoreFunc, + OnAddToBasket, + OnContextMenuOpen, + OnOpen, + OnSelectionChange, + OnToggle, + ReloadFunc, +} from './types'; +import {getItemListFromEvent} from './selection'; +import createStateSetterProxy from '@alchemy/react-hooks/src/createStateSetterProxy'; +import {useBasketStore} from '../../store/basketStore'; +import assetClasses from './classes'; +import AssetContextMenu from './AssetContextMenu'; +import {PopoverPosition} from '@mui/material/Popover/Popover'; +import {SelectionActionConfigProps} from './Toolbar/SelectionActions'; + +type Props = { + pages: Item[][]; + total?: number; + loading?: boolean; + itemToAsset?: (item: Item) => Asset; + loadMore?: LoadMoreFunc | undefined; + selectionContext?: React.Context>; + layout?: Layout; + onOpen?: OnOpen; + reload?: ReloadFunc; + onOpenDebug?: VoidFunction; + searchBar?: boolean; + actions?: CustomItemAction[]; + onSelectionChange?: OnSelectionChange; + itemComponent?: AssetItemComponent; +} & SelectionActionConfigProps; + +export default function AssetList({ + pages, + total, + loading, + onOpen, + itemToAsset, + loadMore, + reload, + searchBar, + onOpenDebug, + onSelectionChange, + itemComponent, + actions, + layout: defaultLayout, + selectionContext: + SelectionContext = AssetSelectionContext as unknown as Context< + TSelectionContext + >, + ...selectionActionsProps +}: Props) { + const [selection, setSelectionPrivate] = React.useState([]); + const [layout, setLayout] = React.useState( + defaultLayout ?? Layout.Grid + ); + const listRef = React.useRef(null); + const [toolbarHeight, setToolbarHeight] = React.useState(0); + const [anchorElMenu, setAnchorElMenu] = React.useState(null); + + const setSelection = React.useMemo>(() => { + if (!onSelectionChange) { + return setSelectionPrivate; + } + + return handler => { + setSelectionPrivate( + createStateSetterProxy(handler, n => { + onSelectionChange(n); + + return n; + }) + ); + }; + }, [onSelectionChange, setSelectionPrivate]); + + useEffect(() => { + if (!listRef.current) { + return; + } + + const resizeObserver = new ResizeObserver(entries => { + setToolbarHeight(entries[0].target.clientHeight); + }); + + resizeObserver.observe( + listRef.current!.querySelector(`.${assetClasses.assetToolbar}`)! + ); + + return () => { + resizeObserver.disconnect(); + }; + }, [listRef.current]); + + React.useEffect(() => { + const handler = (e: KeyboardEvent) => { + if (e.ctrlKey && e.key === 'a') { + const activeElement = document.activeElement; + if ( + activeElement && + ['input', 'select', 'button', 'textarea'].includes( + activeElement.tagName.toLowerCase() + ) && + (activeElement as HTMLInputElement).type !== 'checkbox' + ) { + return; + } + + e.preventDefault(); + e.stopPropagation(); + setSelection(pages.flat()); + } + }; + window.addEventListener('keydown', handler); + + return () => { + window.removeEventListener('keydown', handler); + }; + }, [pages]); + + const onContextMenuOpen = React.useCallback>( + (e: MouseEvent, item: Item, anchorEl?: HTMLElement) => { + e.preventDefault(); + e.stopPropagation(); + setAnchorElMenu(p => { + if (p && p.anchorEl === anchorEl) { + return null; + } + + return { + item, + asset: itemToAsset + ? itemToAsset(item) + : (item as unknown as Asset), + pos: { + left: e.clientX + 2, + top: e.clientY, + }, + anchorEl, + }; + }); + }, + [setAnchorElMenu, itemToAsset] + ); + + const onToggle = React.useCallback>( + (item, e): void => { + e?.preventDefault(); + setSelection(prev => { + return getItemListFromEvent(prev, item, pages, e); + }); + }, + [pages] + ); + + const addToCurrent = useBasketStore(state => state.addToCurrent); + + const onAddToBasket = React.useCallback( + (asset, e): void => { + e?.preventDefault(); + addToCurrent([asset]); + }, + [addToCurrent] + ); + + return ( +
+
+ + + + {React.createElement(layouts[layout], { + selection, + onOpen, + onAddToBasket, + itemToAsset, + onContextMenuOpen, + onToggle, + pages, + loadMore, + toolbarHeight, + itemComponent, + } as LayoutProps)} + + {anchorElMenu ? ( + setAnchorElMenu(null)} + /> + ) : ( + '' + )} + +
+
+ ); +} diff --git a/databox/client/src/components/AssetList/AssetSelection.tsx b/databox/client/src/components/AssetList/AssetSelection.tsx new file mode 100644 index 000000000..e66c3e481 --- /dev/null +++ b/databox/client/src/components/AssetList/AssetSelection.tsx @@ -0,0 +1,84 @@ +import {useMemo} from 'react'; +import {Asset} from '../../types'; +import AssetList from './AssetList'; +import DisplayProvider from '../Media/DisplayProvider'; +import {Layout} from './Layouts'; +import {OnSelectionChange} from './types'; + +// function SelectionProxy({pages}: {pages: Asset[][]}) { +// const {t} = useTranslation(); +// const assetSelection = useContext(AssetSelectionContext); +// +// const onSelect = useCallback( +// (item, e): void => { +// e?.preventDefault(); +// assetSelection.setSelection(prev => { +// return getItemListFromEvent(prev, item, pages, e); +// }); +// // eslint-disable-next-line +// }, +// [pages] +// ); +// +// const onUnselect = useCallback((id, e): void => { +// e?.preventDefault(); +// assetSelection.setSelection(p => p.filter(i => i !== id)); +// // eslint-disable-next-line +// }, []); +// +// return ( +//
+// { +// assetSelection.setSelection( +// checked ? pages[0].map(a => a.id) : [] +// ); +// }} +// /> +// } +// label={`${t( +// 'form.copy_assets.asset_not_linkable.toggle_select_all', +// 'Select/Unselect all' +// )} (${assetSelection.selection.length}/${ +// pages[0].length +// })`} +// labelPlacement="end" +// /> +// +//
+// ); +// } + +type Props = { + assets: Asset[]; + onSelectionChange: OnSelectionChange; +}; + +export default function AssetSelection({assets, onSelectionChange}: Props) { + const pages = useMemo(() => [assets], [assets]); + + return ( + + + + ); +} diff --git a/databox/client/src/components/AssetList/AssetToolbar.tsx b/databox/client/src/components/AssetList/AssetToolbar.tsx new file mode 100644 index 000000000..ed49589d2 --- /dev/null +++ b/databox/client/src/components/AssetList/AssetToolbar.tsx @@ -0,0 +1,49 @@ +import {LinearProgress, ListSubheader} from '@mui/material'; +import {zIndex} from '../../themes/zIndex'; +import SearchBar from '../Media/Search/SearchBar'; +import SelectionActions, { + SelectionActionsProps, +} from './Toolbar/SelectionActions'; +import {AssetOrAssetContainer} from '../../types'; +import assetClasses from './classes'; + +type Props = { + searchBar?: boolean; +} & SelectionActionsProps; + +export default function AssetToolbar({ + loading, + searchBar = true, + ...selectionActionsProps +}: Props) { + return ( + <> + ({ + zIndex: zIndex.toolbar, + })} + > + {searchBar ? : ''} + + + {loading && ( +
+ +
+ )} + + ); +} diff --git a/databox/client/src/components/AssetList/GroupValue/types.tsx b/databox/client/src/components/AssetList/GroupValue/types.tsx new file mode 100644 index 000000000..929274f35 --- /dev/null +++ b/databox/client/src/components/AssetList/GroupValue/types.tsx @@ -0,0 +1,13 @@ +import {Collection, Tag} from '../../../types'; +import TagNode from '../../Ui/TagNode'; + +import {CollectionChip} from '../../Ui/Chips'; +import React from 'react'; + +export const groupValueTypes: Record React.ReactNode> = + { + t: (value: Tag) => ( + + ), + c: (value: Collection) => , + }; diff --git a/databox/client/src/components/AssetList/Layouts/AssetItemWrapper.tsx b/databox/client/src/components/AssetList/Layouts/AssetItemWrapper.tsx new file mode 100644 index 000000000..b1d046a46 --- /dev/null +++ b/databox/client/src/components/AssetList/Layouts/AssetItemWrapper.tsx @@ -0,0 +1,33 @@ +import {AssetItemProps} from '../types'; +import {AssetOrAssetContainer} from '../../../types'; +import assetClasses from '../classes'; +import React, {PropsWithChildren} from 'react'; + +export default function AssetItemWrapper({ + itemComponent, + onToggle, + item, + children, + selected, +}: PropsWithChildren< + Pick< + AssetItemProps, + 'item' | 'itemComponent' | 'onToggle' | 'selected' + > +>) { + const node = ( +
onToggle(item, e)} + className={`${assetClasses.item} ${selected ? 'selected' : ''}`} + > + {children} +
+ ); + + return itemComponent + ? React.createElement(itemComponent, { + item, + children: node, + }) + : node; +} diff --git a/databox/client/src/components/AssetList/Layouts/Grid/AssetItem.tsx b/databox/client/src/components/AssetList/Layouts/Grid/AssetItem.tsx new file mode 100644 index 000000000..0f0932758 --- /dev/null +++ b/databox/client/src/components/AssetList/Layouts/Grid/AssetItem.tsx @@ -0,0 +1,137 @@ +import React from 'react'; +import {AssetOrAssetContainer} from '../../../../types'; +import assetClasses from '../../classes'; +import {PrivacyTooltip} from '../../../Ui/PrivacyChip'; +import IconButton from '@mui/material/IconButton'; +import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; +import SettingsIcon from '@mui/icons-material/Settings'; +import AssetThumb from '../../../Media/Asset/AssetThumb'; +import {replaceHighlight} from '../../../Media/Asset/Attribute/Attributes'; +import AssetTagList from '../../../Media/Asset/Widgets/AssetTagList'; +import AssetCollectionList from '../../../Media/Asset/Widgets/AssetCollectionList'; +import {AssetItemProps, OnPreviewToggle} from '../../types'; +import {Checkbox} from '@mui/material'; +import {stopPropagation} from '../../../../lib/stdFuncs'; +import AssetItemWrapper from '../AssetItemWrapper'; + +type Props = { + onPreviewToggle?: OnPreviewToggle; +} & AssetItemProps; + +export default function AssetItem({ + item, + asset, + selected, + onToggle, + onContextMenuOpen, + onPreviewToggle, + onAddToBasket, + itemComponent, +}: Props) { + const disabled = !asset.workspace; + + return ( + +
+ + onToggle(item, { + ctrlKey: true, + preventDefault() {}, + } as React.MouseEvent) + } + /> +
+ + {!disabled ? ( + <> + {onAddToBasket ? ( + onAddToBasket(asset, e)} + > + + + ) : null} + {onContextMenuOpen && ( + + + + )} + + ) : ( + '' + )} +
+
+ + onPreviewToggle( + asset, + true, + e.currentTarget as HTMLElement + ) + : undefined + } + onMouseLeave={ + onPreviewToggle + ? e => + onPreviewToggle( + asset, + false, + e.currentTarget as HTMLElement + ) + : undefined + } + /> +
+
+ {asset.titleHighlight + ? replaceHighlight(asset.titleHighlight) + : asset.resolvedTitle ?? asset.title} +
+ {asset.tags && asset.tags.length > 0 && ( +
+ +
+ )} + {asset.collections && asset.collections.length > 0 && ( +
+ +
+ )} +
+
+ ); +} diff --git a/databox/client/src/components/AssetList/Layouts/Grid/GridLayout.tsx b/databox/client/src/components/AssetList/Layouts/Grid/GridLayout.tsx new file mode 100644 index 000000000..ec7f0f8ff --- /dev/null +++ b/databox/client/src/components/AssetList/Layouts/Grid/GridLayout.tsx @@ -0,0 +1,193 @@ +import React, {useContext} from 'react'; +import {alpha, Grid, Theme} from '@mui/material'; +import {LayoutProps} from '../../types'; +import {AssetOrAssetContainer} from '../../../../types'; +import {DisplayContext} from '../../../Media/DisplayContext'; +import {sectionDividerClassname} from '../../SectionDivider'; +import assetClasses from '../../classes'; +import {createSizeTransition, thumbSx} from '../../../Media/Asset/Thumb'; +import GridPage from './GridPage'; +import PreviewPopover from '../../PreviewPopover'; +import {usePreview} from '../../usePreview'; +import {tagListSx} from '../../../Media/Asset/Widgets/AssetTagList'; +import {collectionListSx} from '../../../Media/Asset/Widgets/AssetCollectionList'; +import LoadMoreButton from "../../LoadMoreButton.tsx"; +import {useScrollTopPages} from "../../useScrollTopPages.ts"; + +export default function GridLayout({ + toolbarHeight, + pages, + onToggle, + onContextMenuOpen, + onAddToBasket, + onOpen, + itemComponent, + selection, + loadMore, + itemToAsset, +}: LayoutProps) { + const lineHeight = 26; + const collLineHeight = 32; + const tagLineHeight = 32; + const d = useContext(DisplayContext)!; + const listRef = React.useRef(null); + + useScrollTopPages(listRef.current?.closest(`.${assetClasses.scrollable}`), pages); + + const gridSx = React.useCallback( + (theme: Theme) => { + const spacing = Number(theme.spacing(1).slice(0, -2)); + + const titleHeight = d.displayTitle + ? spacing * 1.8 + lineHeight * d.titleRows + : 0; + let totalHeight = d.thumbSize + titleHeight; + if (d.displayCollections) { + totalHeight += collLineHeight * d.collectionsLimit; + } + if (d.displayTags) { + totalHeight += tagLineHeight * d.tagsLimit; + } + + return { + ...tagListSx(), + ...collectionListSx(), + ...thumbSx(d.thumbSize, theme), + p: 2, + backgroundColor: theme.palette.common.white, + [`.${sectionDividerClassname}`]: { + margin: `0 -${theme.spacing(1)}`, + width: `calc(100% + ${theme.spacing(2)})`, + }, + [`.${assetClasses.item}`]: { + 'width': d.thumbSize, + 'height': totalHeight, + 'transition': createSizeTransition(theme), + 'position': 'relative', + [`.${assetClasses.controls}`]: { + 'position': 'absolute', + 'transform': `translateY(-10px)`, + 'zIndex': 2, + 'opacity': 0, + 'left': 0, + 'top': 0, + 'right': 0, + 'padding': '1px', + 'transition': theme.transitions.create( + ['opacity', 'transform'], + {duration: 300} + ), + '> div': { + float: 'right', + }, + 'background': + 'linear-gradient(to bottom, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0.5) 50%, rgba(255,255,255,0) 100%)', + }, + '&:hover, &.selected': { + [`.${assetClasses.controls}`]: { + opacity: 1, + transform: `translateY(0)`, + }, + }, + [`.${assetClasses.privacy}`]: { + display: 'inline-block', + verticalAlign: 'middle', + mt: 0.5, + mr: 1, + }, + '&.selected': { + backgroundColor: alpha(theme.palette.primary.main, 0.8), + boxShadow: theme.shadows[2], + [`.${assetClasses.legend}`]: { + color: theme.palette.primary.contrastText, + }, + [`.${assetClasses.thumbWrapper}::after`]: { + display: 'block', + content: '""', + position: 'absolute', + zIndex: 1, + top: 0, + left: 0, + bottom: 0, + right: 0, + backgroundColor: alpha( + theme.palette.primary.main, + 0.3 + ), + }, + }, + }, + [`.${assetClasses.thumbActive}`]: { + display: 'none', + }, + [`.${assetClasses.title}`]: { + fontSize: 14, + p: 1, + height: titleHeight, + lineHeight: `${lineHeight}px`, + overflow: 'hidden', + textOverflow: 'ellipsis', + ...(d.titleRows > 1 + ? { + 'display': d.displayTitle + ? '-webkit-box' + : 'none', + '-webkit-line-clamp': `${d.titleRows}`, + '-webkit-box-orient': 'vertical', + } + : { + display: d.displayTitle ? 'block' : 'none', + whiteSpace: 'nowrap', + }), + }, + }; + }, + [d] + ); + + const {previewAnchorEl, onPreviewToggle} = usePreview([pages]); + + return ( + <> + + {pages.map((page, i) => ( + + ))} + + + {loadMore ? ( + + ) : ( + '' + )} + + + + ); +} diff --git a/databox/client/src/components/AssetList/Layouts/Grid/GridPage.tsx b/databox/client/src/components/AssetList/Layouts/Grid/GridPage.tsx new file mode 100644 index 000000000..b3f1065d2 --- /dev/null +++ b/databox/client/src/components/AssetList/Layouts/Grid/GridPage.tsx @@ -0,0 +1,84 @@ +import React from 'react'; +import {Asset, AssetOrAssetContainer} from '../../../../types'; +import GroupRow from '../GroupRow'; +import {Grid} from '@mui/material'; +import AssetItem from './AssetItem'; +import {LayoutPageProps, OnPreviewToggle} from '../../types'; +import SectionDivider from '../../SectionDivider'; + +type Props = { + onPreviewToggle?: OnPreviewToggle; +} & LayoutPageProps; + +function GridPage({ + items, + itemToAsset, + onContextMenuOpen, + onOpen, + onPreviewToggle, + onToggle, + selection, + onAddToBasket, + toolbarHeight, + page, + itemComponent, +}: Props) { + return ( + <> + {page > 1 && ( + ({ + fontWeight: 700, + fontSize: 15, + })} + > + # {page} + + )} + {items.map(item => { + const asset: Asset = itemToAsset + ? itemToAsset(item) + : (item as unknown as Asset); + + return ( + + onOpen(asset, asset.original!.id) + : undefined + } + onContextMenu={ + onContextMenuOpen + ? e => { + onContextMenuOpen!(e, item); + } + : undefined + } + > + + + + ); + })} + + ); +} + +export default React.memo(GridPage) as typeof GridPage; diff --git a/databox/client/src/components/Media/Search/Layout/GroupRow.tsx b/databox/client/src/components/AssetList/Layouts/GroupRow.tsx similarity index 77% rename from databox/client/src/components/Media/Search/Layout/GroupRow.tsx rename to databox/client/src/components/AssetList/Layouts/GroupRow.tsx index 44a950d31..7d24caacb 100644 --- a/databox/client/src/components/Media/Search/Layout/GroupRow.tsx +++ b/databox/client/src/components/AssetList/Layouts/GroupRow.tsx @@ -1,23 +1,24 @@ import React, {PropsWithChildren, ReactNode} from 'react'; -import {Asset} from '../../../../types'; -import SectionDivider from './SectionDivider'; -import {AttributeFormatContext} from '../../Asset/Attribute/Format/AttributeFormatContext'; +import {Asset} from '../../../types'; +import SectionDivider from '../SectionDivider'; +import {AttributeFormatContext} from '../../Media/Asset/Attribute/Format/AttributeFormatContext'; import {IconButton} from '@mui/material'; import VisibilityIcon from '@mui/icons-material/Visibility'; -import {AttributeType} from '../../../../api/attributes'; -import {AttributeFormat} from '../../Asset/Attribute/types/types'; -import {getAttributeType} from '../../Asset/Attribute/types'; -import {groupValueTypes} from './GroupValue/types'; +import {AttributeType} from '../../../api/attributes'; +import {AttributeFormat} from '../../Media/Asset/Attribute/types/types'; +import {getAttributeType} from '../../Media/Asset/Attribute/types'; +import {groupValueTypes} from '../GroupValue/types'; +import assetClasses from '../classes'; type Props = PropsWithChildren<{ asset: Asset; - searchMenuHeight: number; + toolbarHeight: number; }>; export default function GroupRow({ asset: {groupValue}, children, - searchMenuHeight, + toolbarHeight, }: Props) { const formatContext = React.useContext(AttributeFormatContext); @@ -27,13 +28,11 @@ export default function GroupRow({ const {values, type, name} = groupValue; - const toggleFormatClass = 'toggle-format'; - return ( <> {formatContext.hasFormats(type) && ( formatContext.toggleFormat(type)} sx={{ mr: 1, diff --git a/databox/client/src/components/AssetList/Layouts/List/AssetItem.tsx b/databox/client/src/components/AssetList/Layouts/List/AssetItem.tsx new file mode 100644 index 000000000..22b7d0fdd --- /dev/null +++ b/databox/client/src/components/AssetList/Layouts/List/AssetItem.tsx @@ -0,0 +1,144 @@ +import {MouseEvent} from 'react'; +import {AssetOrAssetContainer} from '../../../../types'; +import assetClasses from '../../classes'; +import PrivacyChip from '../../../Ui/PrivacyChip'; +import IconButton from '@mui/material/IconButton'; +import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; +import SettingsIcon from '@mui/icons-material/Settings'; +import AssetThumb from '../../../Media/Asset/AssetThumb'; +import Attributes, { + replaceHighlight, +} from '../../../Media/Asset/Attribute/Attributes'; +import AssetTagList from '../../../Media/Asset/Widgets/AssetTagList'; +import AssetCollectionList from '../../../Media/Asset/Widgets/AssetCollectionList'; +import {AssetItemProps, OnPreviewToggle} from '../../types'; +import {Checkbox, Grid} from '@mui/material'; +import {stopPropagation} from '../../../../lib/stdFuncs'; +import AssetItemWrapper from '../AssetItemWrapper'; + +type Props = { + onPreviewToggle?: OnPreviewToggle; + displayAttributes: boolean; +} & AssetItemProps; + +export default function AssetItem({ + item, + asset, + selected, + onToggle, + onContextMenuOpen, + onPreviewToggle, + displayAttributes, + onAddToBasket, + itemComponent, +}: Props) { + const disabled = !asset.workspace; + + return ( + + + onToggle(item, { + ctrlKey: true, + preventDefault() {}, + } as MouseEvent) + } + /> + + + {!disabled ? ( +
+ {onAddToBasket ? ( + onAddToBasket(asset, e)} + > + + + ) : null} + {onContextMenuOpen && ( + onContextMenuOpen(e, item)} + color={'inherit'} + > + + + )} +
+ ) : ( + '' + )} + + onPreviewToggle( + asset, + true, + e.currentTarget as HTMLElement + ) + : undefined + } + onMouseLeave={ + onPreviewToggle + ? e => + onPreviewToggle( + asset, + false, + e.currentTarget as HTMLElement + ) + : undefined + } + asset={asset} + /> +
+ +
+ {asset.titleHighlight + ? replaceHighlight(asset.titleHighlight) + : asset.resolvedTitle ?? asset.title} +
+ {asset.tags && asset.tags.length > 0 && ( +
+ +
+ )} + + {asset.collections && asset.collections.length > 0 ? ( +
+ +
+ ) : ( + '' + )} + {displayAttributes && ( + + )} +
+
+
+ ); +} diff --git a/databox/client/src/components/AssetList/Layouts/List/ListLayout.tsx b/databox/client/src/components/AssetList/Layouts/List/ListLayout.tsx new file mode 100644 index 000000000..9cf9a371d --- /dev/null +++ b/databox/client/src/components/AssetList/Layouts/List/ListLayout.tsx @@ -0,0 +1,214 @@ +import {LayoutProps} from '../../types'; +import {Asset, AssetOrAssetContainer} from '../../../../types'; +import PreviewPopover from '../../PreviewPopover'; +import {usePreview} from '../../usePreview'; +import {DisplayContext} from '../../../Media/DisplayContext'; +import React from 'react'; +import assetClasses from '../../classes'; +import {thumbSx} from '../../../Media/Asset/Thumb'; +import Box from '@mui/material/Box'; +import {Theme} from '@mui/material'; +import {attributesSx} from '../../../Media/Asset/Attribute/Attributes'; +import {tagListSx} from '../../../Media/Asset/Widgets/AssetTagList'; +import {collectionListSx} from '../../../Media/Asset/Widgets/AssetCollectionList'; +import {AutoSizer, CellMeasurer, List, ListRowRenderer} from 'react-virtualized'; +import AssetItem from "./AssetItem.tsx"; +import GroupRow from "../GroupRow.tsx"; +import {menuHeight} from "../../../Layout/MainAppBar.tsx"; +import {useWindowSize} from '@alchemy/react-hooks/src/useWindowSize.ts' +import {CellMeasurerCache} from "react-virtualized/dist/es/CellMeasurer"; +import LoadMoreButton from "../../LoadMoreButton.tsx"; +import SectionDivider from "../../SectionDivider.tsx"; + +export default function ListLayout({ + toolbarHeight, + pages, + onToggle, + onContextMenuOpen, + onAddToBasket, + itemComponent, + onOpen, + loadMore, + selection, + itemToAsset, +}: LayoutProps) { + const {previewAnchorEl, onPreviewToggle} = usePreview([pages]); + const listRef = React.useRef(null); + const d = React.useContext(DisplayContext)!; + const {innerHeight} = useWindowSize(); + const height = innerHeight - toolbarHeight - menuHeight; + + React.useLayoutEffect(() => { + listRef.current?.scrollToRow(0); + }, [pages[0], listRef]); + + const cellMeasurer = React.useMemo(() => { + return new CellMeasurerCache({ + fixedWidth: true, + minHeight: d.thumbSize + 20, + defaultHeight: 400 + }) + }, [pages[0], d.thumbSize]); + + const layoutSx = React.useCallback( + (theme: Theme) => { + return { + ...tagListSx(), + ...collectionListSx(), + ...attributesSx(), + ...thumbSx(d.thumbSize, theme), + [`.${assetClasses.item}`]: { + 'p': 2, + 'position': 'relative', + [`.${assetClasses.checkBtb}, .${assetClasses.controls}`]: { + position: 'absolute', + zIndex: 2, + opacity: 0, + transform: `translateY(-10px)`, + transition: theme.transitions.create( + ['opacity', 'transform'], + {duration: 300} + ), + }, + [`.${assetClasses.checkBtb}`]: { + transform: `translateX(-10px)`, + left: 15, + top: 15, + }, + [`.${assetClasses.controls}`]: { + position: 'absolute', + right: 1, + top: 1, + }, + '&:hover, &.selected': { + [`.${assetClasses.checkBtb}, .${assetClasses.controls}`]: + { + opacity: 1, + transform: `translateY(0)`, + }, + }, + '&.selected': { + boxShadow: theme.shadows[2], + }, + [`.${assetClasses.attributes}`]: { + '> div + div': { + mt: 1, + }, + }, + }, + }; + }, + [d] + ); + + const rowCount = pages.reduce((c, p) => c + p.length, 0); + + const rowRenderer: ListRowRenderer = ({ + index, + key, + style, + parent, + }) => { + const perPage = pages[0].length; + const page = Math.floor(index / perPage); + const pageIndex = index % perPage; + const item = pages[page][pageIndex]!; + + const asset: Asset = itemToAsset + ? itemToAsset(item) + : (item as unknown as Asset); + + return + {({ registerChild }) => ( + +
onOpen(asset, asset.original!.id) + : undefined + } + onContextMenu={ + onContextMenuOpen + ? e => onContextMenuOpen!(e, item) + : undefined + } + style={style} + // @ts-expect-error Element | undefined + ref={registerChild} + > + {page > 0 && pageIndex === 0 ? ({ + fontWeight: 700, + fontSize: 15, + })} + > + # {page + 1} + : ''} + + {loadMore && index === rowCount - 1 ? { + loadMore!().then(() => { + cellMeasurer.clear(index, 0); + parent.recomputeGridSize!({ + rowIndex: index, + columnIndex: 0, + }); + parent.forceUpdate(); + }); + }} + pages={pages} + /> : ''} +
+
)} +
+ } + + return ( + + + {({width}) => ( + + )} + + + + + ); +} diff --git a/databox/client/src/components/AssetList/Layouts/List/ListPage.tsx b/databox/client/src/components/AssetList/Layouts/List/ListPage.tsx new file mode 100644 index 000000000..f0122b005 --- /dev/null +++ b/databox/client/src/components/AssetList/Layouts/List/ListPage.tsx @@ -0,0 +1,82 @@ +import React from 'react'; +import {Asset, AssetOrAssetContainer} from '../../../../types'; +import GroupRow from '../GroupRow'; +import AssetItem from './AssetItem'; +import {LayoutPageProps, OnPreviewToggle} from '../../types'; +import SectionDivider from '../../SectionDivider'; + +type Props = { + onPreviewToggle?: OnPreviewToggle; + displayAttributes: boolean; +} & LayoutPageProps; + +function ListPage({ + items, + itemToAsset, + onContextMenuOpen, + onOpen, + onPreviewToggle, + onToggle, + onAddToBasket, + selection, + toolbarHeight, + itemComponent, + displayAttributes, + page, +}: Props) { + return ( + <> + {page > 1 && ( + ({ + fontWeight: 700, + fontSize: 15, + })} + > + # {page} + + )} + {items.map(item => { + const asset: Asset = itemToAsset + ? itemToAsset(item) + : (item as unknown as Asset); + + return ( + +
onOpen(asset, asset.original!.id) + : undefined + } + onContextMenu={ + onContextMenuOpen + ? e => onContextMenuOpen!(e, item) + : undefined + } + > + +
+
+ ); + })} + + ); +} + +export default React.memo(ListPage) as typeof ListPage; diff --git a/databox/client/src/components/AssetList/Layouts/Masonry/AssetItem.tsx b/databox/client/src/components/AssetList/Layouts/Masonry/AssetItem.tsx new file mode 100644 index 000000000..0223cc9e3 --- /dev/null +++ b/databox/client/src/components/AssetList/Layouts/Masonry/AssetItem.tsx @@ -0,0 +1,104 @@ +import React from 'react'; +import {AssetOrAssetContainer} from '../../../../types'; +import assetClasses from '../../classes'; +import IconButton from '@mui/material/IconButton'; +import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; +import SettingsIcon from '@mui/icons-material/Settings'; +import AssetThumb from '../../../Media/Asset/AssetThumb'; +import {AssetItemProps, OnPreviewToggle} from '../../types'; +import {Checkbox} from '@mui/material'; +import {stopPropagation} from '../../../../lib/stdFuncs'; +import AssetItemWrapper from '../AssetItemWrapper'; + +type Props = { + onPreviewToggle?: OnPreviewToggle; +} & AssetItemProps; + +export default function AssetItem({ + item, + asset, + selected, + onToggle, + onContextMenuOpen, + onPreviewToggle, + onAddToBasket, + itemComponent, +}: Props) { + const disabled = !asset.workspace; + + return ( + +
+ + onToggle(item, { + ctrlKey: true, + preventDefault() {}, + } as React.MouseEvent) + } + /> + + {!disabled ? ( + <> + {onAddToBasket ? ( + onAddToBasket(asset, e)} + > + + + ) : null} + {onContextMenuOpen && ( + + + + )} + + ) : ( + '' + )} +
+ + onPreviewToggle( + asset, + true, + e.currentTarget as HTMLElement + ) + : undefined + } + onMouseLeave={ + onPreviewToggle + ? e => + onPreviewToggle( + asset, + false, + e.currentTarget as HTMLElement + ) + : undefined + } + /> +
+ ); +} diff --git a/databox/client/src/components/AssetList/Layouts/Masonry/MasonryLayout.tsx b/databox/client/src/components/AssetList/Layouts/Masonry/MasonryLayout.tsx new file mode 100644 index 000000000..414a1822e --- /dev/null +++ b/databox/client/src/components/AssetList/Layouts/Masonry/MasonryLayout.tsx @@ -0,0 +1,142 @@ +import {LayoutProps} from '../../types'; +import {Asset, AssetOrAssetContainer} from '../../../../types'; +import PreviewPopover from '../../PreviewPopover'; +import {usePreview} from '../../usePreview'; +import Masonry from '@mui/lab/Masonry'; +import AssetItem from './AssetItem'; +import React, {useContext} from 'react'; +import {alpha, Theme} from '@mui/material'; +import assetClasses from '../../classes'; +import {createSizeTransition, thumbSx} from '../../../Media/Asset/Thumb'; +import {DisplayContext} from '../../../Media/DisplayContext'; +import Box from '@mui/material/Box'; + +export default function MasonryLayout({ + pages, + onToggle, + onContextMenuOpen, + onOpen, + onAddToBasket, + selection, + itemToAsset, + itemComponent, +}: LayoutProps) { + const {previewAnchorEl, onPreviewToggle} = usePreview([pages]); + const d = useContext(DisplayContext)!; + + const layoutSx = React.useCallback( + (theme: Theme) => { + return { + backgroundColor: theme.palette.common.white, + ...thumbSx(d.thumbSize, theme, { + height: 'auto', + img: { + width: d.thumbSize, + maxWidth: 'unset', + }, + }), + [`.${assetClasses.fileIcon}`]: { + m: 5, + }, + [`.${assetClasses.item}`]: { + 'width': d.thumbSize, + 'transition': createSizeTransition(theme), + + 'position': 'relative', + [`.${assetClasses.controls}`]: { + position: 'absolute', + transform: `translateY(-10px)`, + zIndex: 2, + opacity: 0, + left: 0, + top: 0, + right: 0, + padding: '1px', + transition: theme.transitions.create( + ['opacity', 'transform'], + {duration: 300} + ), + background: + 'linear-gradient(to bottom, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0.5) 50%, rgba(255,255,255,0) 100%)', + }, + [`.${assetClasses.settingBtn}`]: { + position: 'absolute', + right: 1, + top: 5, + }, + [`.${assetClasses.cartBtn}`]: { + position: 'absolute', + right: 40, + top: 5, + }, + '&:hover, &.selected': { + [`.${assetClasses.controls}`]: { + opacity: 1, + transform: `translateY(0)`, + }, + }, + '&.selected': { + backgroundColor: alpha(theme.palette.primary.main, 0.8), + boxShadow: theme.shadows[2], + [`.${assetClasses.legend}`]: { + color: theme.palette.primary.contrastText, + }, + [`.${assetClasses.thumbWrapper}::after`]: { + display: 'block', + content: '""', + position: 'absolute', + zIndex: 1, + top: 0, + left: 0, + bottom: 0, + right: 0, + backgroundColor: alpha( + theme.palette.primary.main, + 0.3 + ), + }, + }, + }, + [`.${assetClasses.thumbActive}`]: { + display: 'none', + }, + }; + }, + [d] + ); + + return ( + + + {pages.map(page => { + return page.map(item => { + const asset: Asset = itemToAsset + ? itemToAsset(item) + : (item as unknown as Asset); + + return ( + + ); + }); + })} + + + + ); +} diff --git a/databox/client/src/components/AssetList/Layouts/index.ts b/databox/client/src/components/AssetList/Layouts/index.ts new file mode 100644 index 000000000..fd68b3feb --- /dev/null +++ b/databox/client/src/components/AssetList/Layouts/index.ts @@ -0,0 +1,17 @@ +import GridLayout from './Grid/GridLayout'; +import React from 'react'; +import {LayoutProps} from '../types'; +import ListLayout from './List/ListLayout'; +import MasonryLayout from './Masonry/MasonryLayout'; + +export enum Layout { + List = 'l', + Grid = 'g', + Masonry = 'm', +} + +export const layouts: Record>> = { + [Layout.Grid]: GridLayout, + [Layout.List]: ListLayout, + [Layout.Masonry]: MasonryLayout, +}; diff --git a/databox/client/src/components/AssetList/LoadMoreButton.tsx b/databox/client/src/components/AssetList/LoadMoreButton.tsx new file mode 100644 index 000000000..185e44590 --- /dev/null +++ b/databox/client/src/components/AssetList/LoadMoreButton.tsx @@ -0,0 +1,62 @@ +import {Box} from '@mui/material'; +import {LoadingButton} from '@mui/lab'; +import ArrowCircleDownIcon from '@mui/icons-material/ArrowCircleDown'; +import {VoidFunction} from '../../lib/utils'; +import {useTranslation} from 'react-i18next'; +import {AssetOrAssetContainer} from "../../types"; +import React from "react"; +import assetClasses from "./classes"; +import {useInfiniteScroll} from "../../hooks/useInfiniteScroll.ts"; + +type Props = { + onClick: VoidFunction; + pages: Item[][]; +}; + +export default function LoadMoreButton({onClick, pages}: Props) { + const {t} = useTranslation(); + const [loading, setLoading] = React.useState(false); + const ref = React.useRef(); + const loadingRef = React.useRef(false); + + const doLoad = React.useCallback(() => { + if (loadingRef.current) { + return; + } + loadingRef.current = true; + setLoading(true); + onClick(); + }, [onClick]); + + React.useEffect(() => { + setLoading(false); + loadingRef.current = false; + }, [pages]); + + useInfiniteScroll({ + onLoad: doLoad, + node: ref.current?.closest(`.${assetClasses.scrollable}`) + }); + + return ( + + } + onClick={doLoad} + variant="contained" + color="secondary" + > + {loading + ? t('load_more.button.loading', 'Loading...') + : t('load_more.button.loading', 'Load more')} + + + ); +} diff --git a/databox/client/src/components/Media/Asset/PreviewPopover.tsx b/databox/client/src/components/AssetList/PreviewPopover.tsx similarity index 73% rename from databox/client/src/components/Media/Asset/PreviewPopover.tsx rename to databox/client/src/components/AssetList/PreviewPopover.tsx index ef7ad78d9..cb01f343e 100644 --- a/databox/client/src/components/Media/Asset/PreviewPopover.tsx +++ b/databox/client/src/components/AssetList/PreviewPopover.tsx @@ -1,23 +1,24 @@ -import {useCallback, useState} from 'react'; -import {Asset} from '../../../types'; +import {useCallback, useContext, useState} from 'react'; +import {Asset} from '../../types'; import {Paper, Popper, Stack} from '@mui/material'; -import FilePlayer from './FilePlayer'; -import {getRelativeViewHeight, getRelativeViewWidth} from '../../../lib/style'; -import {createDimensions} from './Players'; -import {zIndex} from '../../../themes/zIndex'; -import Attributes from './Attribute/Attributes'; +import FilePlayer from '../Media/Asset/FilePlayer'; +import {getRelativeViewHeight, getRelativeViewWidth} from '../../lib/style'; +import {createDimensions} from '../Media/Asset/Players'; +import {zIndex} from '../../themes/zIndex'; +import Attributes, { + attributesSx, +} from '../Media/Asset/Attribute/Attributes'; +import {DisplayContext} from '../Media/DisplayContext'; type Props = { anchorEl: HTMLElement | undefined; asset: Asset | undefined; - previewLocked: boolean; displayAttributes: boolean; }; const relativeSize = 50; export default function PreviewPopover({ - previewLocked, asset, anchorEl, displayAttributes, @@ -25,6 +26,7 @@ export default function PreviewPopover({ const [anchor, setAnchor] = useState(); const width = getRelativeViewWidth(relativeSize); const height = getRelativeViewHeight(relativeSize); + const {previewLocked} = useContext(DisplayContext)!; const onLoad = useCallback(() => { setAnchor(anchorEl); @@ -69,17 +71,24 @@ export default function PreviewPopover({ sx={{ padding: 1, maxWidth: width, + maxHeight: height, + ...attributesSx(), }} > - -
+ ({ + maxHeight: `calc(${height}px - ${theme.spacing(2)})`, + })} + > +
diff --git a/databox/client/src/components/Media/Search/Layout/SectionDivider.tsx b/databox/client/src/components/AssetList/SectionDivider.tsx similarity index 97% rename from databox/client/src/components/Media/Search/Layout/SectionDivider.tsx rename to databox/client/src/components/AssetList/SectionDivider.tsx index 15a87a626..f5aeaa045 100644 --- a/databox/client/src/components/Media/Search/Layout/SectionDivider.tsx +++ b/databox/client/src/components/AssetList/SectionDivider.tsx @@ -1,6 +1,6 @@ import {CSSProperties, PropsWithChildren} from 'react'; import {Divider, Theme, useTheme, SxProps} from '@mui/material'; -import {zIndex} from '../../../../themes/zIndex'; +import {zIndex} from '../../themes/zIndex'; function applyStyle( theme: Theme, diff --git a/databox/client/src/components/Media/Search/DisplayOptionsMenu.tsx b/databox/client/src/components/AssetList/Toolbar/DisplayOptionsMenu.tsx similarity index 82% rename from databox/client/src/components/Media/Search/DisplayOptionsMenu.tsx rename to databox/client/src/components/AssetList/Toolbar/DisplayOptionsMenu.tsx index 6c34c27d0..c009c92d4 100644 --- a/databox/client/src/components/Media/Search/DisplayOptionsMenu.tsx +++ b/databox/client/src/components/AssetList/Toolbar/DisplayOptionsMenu.tsx @@ -3,21 +3,18 @@ import { Box, FormControlLabel, FormGroup, - Grid, IconButton, Menu, - Slider, Switch, Tooltip, Typography, } from '@mui/material'; import {useTranslation} from 'react-i18next'; import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; -import {DisplayContext} from '../DisplayContext'; +import {DisplayContext} from '../../Media/DisplayContext'; import {debounce} from '../../../lib/debounce'; -import PhotoSizeSelectLargeIcon from '@mui/icons-material/PhotoSizeSelectLarge'; -import PhotoSizeSelectActualIcon from '@mui/icons-material/PhotoSizeSelectActual'; -import ToggleWithLimit from './ToggleWithLimit'; +import ToggleWithLimit from '../../Media/Search/ToggleWithLimit'; +import ThumbSizeWidget from './ThumbSizeWidget'; type Props = {}; @@ -53,10 +50,7 @@ export default function DisplayOptionsMenu({}: Props) { setAnchorEl(null); }; - const onChange = debounce((_e, v) => setThumbSize(v as number), 10); - - const max = 400; - const min = 60; + const onThumbSizeChange = debounce((v: number) => setThumbSize(v), 0); const sliderId = 'thumb_size-slider'; const moreBtnId = 'more-button'; @@ -94,24 +88,11 @@ export default function DisplayOptionsMenu({}: Props) { {t('layout.options.thumb_size.label', 'Thumbnail size')} - - - - - - - - - - - + ({ + '& .MuiToggleButtonGroup-grouped': { + 'border': 0, + 'margin': theme.spacing(0.5), + '&.Mui-disabled': { + border: 0, + }, + '&:not(:first-of-type)': { + borderRadius: theme.shape.borderRadius, + }, + '&:first-of-type': { + borderRadius: theme.shape.borderRadius, + }, + }, +})); + +export type SelectionActionConfigProps = { + noActions?: boolean; + itemLabel?: string; +}; + +export type SelectionActionsProps = { + layout: Layout; + setLayout: StateSetter; + loading: boolean; + total?: number; + pages: Item[][]; + reload?: ReloadFunc; + onOpenDebug?: VoidFunction; + selectionContext: Context>; + actions?: CustomItemAction[]; +} & SelectionActionConfigProps; + +export default function SelectionActions({ + layout, + setLayout, + loading, + total, + pages, + reload, + onOpenDebug, + actions, + noActions, + selectionContext, + itemLabel = 'result', +}: SelectionActionsProps) { + const {t} = useTranslation(); + const navigateToModal = useNavigateToModal(); + const {openModal} = useModals(); + const {isAuthenticated} = useAuth(); + const {selection, setSelection, itemToAsset} = useContext(selectionContext); + const selectionLength = selection.length; + const hasSelection = selectionLength > 0; + const allSelected = + hasSelection && + selectionLength === + pages.reduce((currentCount, row) => currentCount + row.length, 0); + + const toggleSelectAll = useCallback(() => { + setSelection(previous => (previous.length > 0 ? [] : pages.flat())); + }, [pages]); + + const { + canDelete, + canDownload, + canEdit, + canEditAttributes, + canMove, + canShare, + onDelete, + onCopy, + wsId, + } = useMemo(() => { + let canDelete = false; + let canDownload = false; + let canEdit = false; + let canEditAttributes = false; + let canMove = false; + let canShare = false; + let wsId: string | undefined = undefined; + + const selectedAssets = itemToAsset + ? selection.map(itemToAsset) + : (selection as unknown as Asset[]); + + selectedAssets.forEach((a: Asset) => { + wsId = a.workspace?.id; + if (a.original?.file?.url) { + canDownload = true; + } + if (a.capabilities.canDelete) { + canDelete = true; + } + if (a.capabilities.canEdit) { + canEdit = true; + canMove = true; + } + if (a.capabilities.canEditAttributes) { + canEditAttributes = true; + } + if (a.capabilities.canShare) { + canShare = true; + } + if (a.capabilities.canShare) { + canShare = true; + } + }); + + for (const a of selectedAssets) { + if (wsId && a.workspace?.id !== wsId) { + canEditAttributes = canMove = false; + break; + } + } + + return { + canDelete, + canDownload, + canEdit, + canEditAttributes, + canMove, + canShare, + onDelete: () => { + openModal(DeleteAssetsConfirm, { + assetIds: selectedAssets.map(i => i.id), + onDelete: () => { + reload && reload(); + }, + }); + }, + onCopy: () => { + openModal(CopyAssetsDialog, { + assets: selectedAssets, + onComplete: () => { + reload && reload(); + }, + }); + }, + wsId, + }; + }, [selection]); + + const onMove = () => { + openModal(MoveAssetsDialog, { + assetIds: selection.map(i => i.id), + workspaceId: wsId!, + onComplete: () => { + reload && reload(); + }, + }); + }; + + const onEdit = () => { + if (selection.length === 1) { + navigateToModal(modalRoutes.assets.routes.manage, { + tab: 'edit', + id: selection[0].id, + }); + } else { + alert('Multi edit is coming soon...'); + } + }; + + const onEditAttributes = () => { + if (selection.length === 1) { + navigateToModal(modalRoutes.assets.routes.manage, { + tab: 'attributes', + id: selection[0].id, + }); + } else { + alert('Multi edit attributes is coming soon...'); + } + }; + + const download = canDownload + ? () => { + openModal(ExportAssetsDialog, { + assets: itemToAsset + ? selection.map(itemToAsset) + : (selection as unknown as Asset[]), + }); + } + : undefined; + + const selectAllDisabled = (total ?? 0) === 0; + + return ( + ({ + [theme.breakpoints.up('md')]: { + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + }, + })} + > + ({ + '> .MuiButtonBase-root, > .MuiButtonGroup-root, > span': { + m: 1, + }, + [theme.breakpoints.down('md')]: { + '.MuiButton-startIcon': { + display: 'none', + }, + }, + })} + > + + + + + + + {!noActions ? ( + <> + {isAuthenticated() ? ( + + ) : ( + '' + )} + } + > + {t('asset_actions.export', 'Export')} + + } + disabled={!canEdit} + actions={[ + { + id: 'move', + label: t('asset_actions.move', 'Move'), + onClick: onMove, + disabled: !canMove, + startIcon: , + }, + { + id: 'edit_attrs', + label: t( + 'asset_actions.edit_attributes', + 'Edit attributes' + ), + onClick: onEditAttributes, + disabled: !canEditAttributes, + startIcon: , + }, + { + id: 'copy', + label: t('asset_actions.copy', 'Copy'), + onClick: onCopy, + disabled: !canShare, + startIcon: , + }, + ]} + > + {t('asset_actions.edit', 'Edit')} + + + + {actions?.map(a => { + return ( + + ); + })} + + ) : ( + '' + )} + + `1px solid ${theme.palette.divider}`, + borderTop: 0, + borderRight: 0, + alignItems: 'center', + alignSelf: 'flex-start', + }} + > + + {!loading && total !== undefined ? ( + <> + + {selection.length > 0 + ? `${selection.length} / ` + : ''} + {new Intl.NumberFormat('fr-FR', {}).format( + total + )} + + + {` ${itemLabel}${total > 1 ? 's' : ''}`} + + + ) : ( + t('common.loading', 'Loading...') + )} + + + { + if (newValue) { + setLayout(newValue); + } + }} + > + + + + + + + + + + + + + + + ); +} diff --git a/databox/client/src/components/AssetList/Toolbar/ThumbSizeWidget.tsx b/databox/client/src/components/AssetList/Toolbar/ThumbSizeWidget.tsx new file mode 100644 index 000000000..d0229a671 --- /dev/null +++ b/databox/client/src/components/AssetList/Toolbar/ThumbSizeWidget.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import {Grid, Slider} from '@mui/material'; +import PhotoSizeSelectLargeIcon from '@mui/icons-material/PhotoSizeSelectLarge'; +import PhotoSizeSelectActualIcon from '@mui/icons-material/PhotoSizeSelectActual'; + +type Props = { + onChange: (value: number) => void; + sliderId: string; + defaultValue: number; +}; + +export default function ThumbSizeWidget({ + onChange, + sliderId, + defaultValue, +}: Props) { + const [value, setValue] = React.useState(defaultValue); + const max = 400; + const min = 60; + + return ( + + + + + + { + setValue(value as number); + onChange(value as number); + }} + /> + + + + + + ); +} diff --git a/databox/client/src/components/AssetList/classes.ts b/databox/client/src/components/AssetList/classes.ts new file mode 100644 index 000000000..53e74e289 --- /dev/null +++ b/databox/client/src/components/AssetList/classes.ts @@ -0,0 +1,24 @@ +const assetClasses = { + item: 'i', + controls: 'actrl', + checkBtb: 'ac', + settingBtn: 'as', + cartBtn: 'acart', + title: 't', + legend: 'l', + attributes: 'aa', + thumbActive: 'tha', + thumbInactive: 'thia', + thumbWrapper: 'tw', + toggleFormat: 'toggle-format', + sectionDivider: 'section-div', + assetToolbar: 'asset-toolbar', + assetsActions: 'asset-actions', + tagList: 'asset-tag-list', + collectionList: 'asset-collection-list', + privacy: 'asset-privacy', + fileIcon: 'asset-file-icon', + scrollable: 'asset-scrollable', +}; + +export default assetClasses; diff --git a/databox/client/src/components/AssetList/selection.ts b/databox/client/src/components/AssetList/selection.ts new file mode 100644 index 000000000..964f42a3c --- /dev/null +++ b/databox/client/src/components/AssetList/selection.ts @@ -0,0 +1,48 @@ +import {AssetOrAssetContainer} from '../../types'; +import React from 'react'; + +export function getItemListFromEvent( + currentSelection: Item[], + item: Item, + pages: Item[][], + e?: React.MouseEvent +): Item[] { + if (e?.ctrlKey) { + return currentSelection.includes(item) + ? currentSelection.filter(i => i !== item) + : currentSelection.concat([item]); + } + + if (e?.shiftKey && currentSelection.length > 0) { + let boundaries: [ + [number, number] | undefined, + [number, number] | undefined + ] = [undefined, undefined]; + + for (let p = 0; p < pages.length; ++p) { + const items = pages[p]; + for (let j = 0; j < items.length; ++j) { + const i = items[j]; + if (currentSelection.includes(i) || item === i) { + boundaries = [boundaries[0] ?? [p, j], [p, j]]; + } + } + } + + const selection = []; + for (let i = boundaries[0]![0]; i <= boundaries[1]![0]; ++i) { + const start = i === boundaries[0]![0] ? boundaries[0]![1] : 0; + const end = + i === boundaries[1]![0] + ? boundaries[1]![1] + : pages[i].length - 1; + for (let j = start; j <= end; ++j) { + selection.push(pages[i][j]); + } + } + + return selection; + } + + return [item]; +} diff --git a/databox/client/src/components/AssetList/types.ts b/databox/client/src/components/AssetList/types.ts new file mode 100644 index 000000000..448fac44f --- /dev/null +++ b/databox/client/src/components/AssetList/types.ts @@ -0,0 +1,84 @@ +import React, {MouseEvent, PropsWithChildren} from 'react'; +import {Asset, AssetOrAssetContainer} from '../../types'; +import {ButtonProps} from '@mui/material/Button'; + +export type ItemToAssetFunc = ( + item: Item +) => Asset; +export type OnAddToBasket = (asset: Asset, e?: MouseEvent) => void; +export type OnSelectionChange = ( + items: Item[] +) => void; +export type OnOpen = (asset: Asset, renditionId: string) => void; +export type OnToggle = ( + item: Item, + e?: MouseEvent +) => void; +export type OnPreviewToggle = ( + asset: Asset, + display: boolean, + anchorEl: HTMLElement +) => void; + +export type ReloadFunc = () => Promise; +export type LoadMoreFunc = () => Promise; + +export type OnContextMenuOpen = ( + e: MouseEvent, + item: Item, + anchorEl?: HTMLElement +) => void; + +export type AssetActions = { + onAddToBasket?: OnAddToBasket; + onOpen?: OnOpen; + onToggle: OnToggle; + onContextMenuOpen?: OnContextMenuOpen; +}; + +export type AssetItemProps = { + itemComponent: AssetItemComponent | undefined; + item: Item; + asset: Asset; + selected: boolean; +} & AssetActions; + +export type AssetItemCustomComponentProps = + PropsWithChildren<{ + item: Item; + }>; +export type AssetItemComponent = React.FC< + AssetItemCustomComponentProps +>; + +type LayoutCommonProps = { + itemToAsset?: ItemToAssetFunc | undefined; + itemComponent: AssetItemComponent | undefined; + selection: Item[]; + toolbarHeight: number; +}; + +export type LayoutProps = { + pages: Item[][]; + loadMore?: LoadMoreFunc; +} & LayoutCommonProps & + AssetActions; + +export type LayoutPageProps = { + items: Item[]; + page: number; +} & LayoutCommonProps & + AssetActions; + +export type CustomItemAction = { + name: string; + buttonProps?: ButtonProps; + labels: { + single: string; + multi: string; + }; + apply: (items: Item[]) => Promise; + reload?: boolean; + resetSelection?: boolean; + disabled?: boolean; +}; diff --git a/databox/client/src/components/AssetList/usePreview.ts b/databox/client/src/components/AssetList/usePreview.ts new file mode 100644 index 000000000..467f5971d --- /dev/null +++ b/databox/client/src/components/AssetList/usePreview.ts @@ -0,0 +1,66 @@ +import React, {useContext, useRef} from 'react'; +import {Asset} from '../../types'; +import {DisplayContext} from '../Media/DisplayContext'; +import {OnPreviewToggle} from './types'; + +export function usePreview(resettingValues: any[]) { + const d = useContext(DisplayContext)!; + const previewTimer = useRef>(); + const [previewAnchorEl, setPreviewAnchorEl] = React.useState(null); + const previewEnterDelay = 500; + const previewLeaveDelay = 400; + + React.useEffect(() => { + // Force preview close on result change + setPreviewAnchorEl(null); + }, resettingValues); + + const onPreviewToggle = React.useCallback( + (asset, display, anchorEl): void => { + if (!asset.preview?.file || !d.displayPreview) { + return; + } + if (previewTimer.current) { + clearTimeout(previewTimer.current); + } + if (!display) { + if (!d.previewLocked) { + previewTimer.current = setTimeout(() => { + setPreviewAnchorEl(null); + }, previewLeaveDelay); + } + return; + } + + setPreviewAnchorEl(p => { + const deferred = !p || d.previewLocked; + + if (!deferred) { + return { + asset, + anchorEl, + }; + } + + previewTimer.current = setTimeout(() => { + setPreviewAnchorEl({ + asset, + anchorEl, + }); + }, previewEnterDelay); + + return p; + }); + // eslint-disable-next-line + }, + [setPreviewAnchorEl, d] + ); + + return { + previewAnchorEl, + onPreviewToggle, + }; +} diff --git a/databox/client/src/components/AssetList/useScrollTopPages.ts b/databox/client/src/components/AssetList/useScrollTopPages.ts new file mode 100644 index 000000000..91bb04178 --- /dev/null +++ b/databox/client/src/components/AssetList/useScrollTopPages.ts @@ -0,0 +1,10 @@ +import React from "react"; +import {AssetOrAssetContainer} from "../../types.ts"; + +export function useScrollTopPages(node: HTMLElement | undefined | null, pages: Item[][]) { + React.useLayoutEffect(() => { + if (pages[0]) { + node?.scrollTo({top: 0, left: 0}); + } + }, [pages[0], node]); +} diff --git a/databox/client/src/components/AssetSearch/AssetSearch.tsx b/databox/client/src/components/AssetSearch/AssetSearch.tsx new file mode 100644 index 000000000..9dec0a806 --- /dev/null +++ b/databox/client/src/components/AssetSearch/AssetSearch.tsx @@ -0,0 +1,77 @@ +import React, {MouseEventHandler, useCallback} from 'react'; +import {ResultContext} from '../Media/Search/ResultContext'; +import AssetList from '../AssetList/AssetList'; +import DebugEsModal from '../Media/Search/DebugEsModal'; +import {useModals} from '@alchemy/navigation'; +import {Fab} from '@mui/material'; +import AddIcon from '@mui/icons-material/Add'; +import {useAuth} from '@alchemy/react-auth'; +import UploadModal from '../Upload/UploadModal'; +import {modalRoutes} from '../../routes'; +import {useNavigateToModal} from '../Routing/ModalLink'; +import {OnOpen} from '../AssetList/types'; + +type Props = {}; + +export default function AssetSearch({}: Props) { + const resultContext = React.useContext(ResultContext); + const {openModal} = useModals(); + const navigateToModal = useNavigateToModal(); + const authContext = useAuth(); + + const openDebug = resultContext.debug + ? () => { + openModal(DebugEsModal, { + debug: resultContext.debug!, + }); + } + : undefined; + + const openUpload = useCallback< + MouseEventHandler + >((): void => { + openModal(UploadModal, { + files: [], + userId: authContext.user!.id, + }); + }, [authContext]); + + const onOpen = useCallback( + (asset, renditionId): void => { + navigateToModal(modalRoutes.assets.routes.view, { + id: asset.id, + renditionId, + }); + // eslint-disable-next-line + }, + [navigateToModal] + ); + + return ( + <> + + {authContext.isAuthenticated() && ( + ({ + position: 'absolute', + bottom: theme.spacing(2), + right: theme.spacing(2), + })} + > + + + )} + + ); +} diff --git a/databox/client/src/components/Basket/BasketItem.tsx b/databox/client/src/components/Basket/BasketItem.tsx new file mode 100644 index 000000000..436dff970 --- /dev/null +++ b/databox/client/src/components/Basket/BasketItem.tsx @@ -0,0 +1,31 @@ +import {AssetItemCustomComponentProps} from '../AssetList/types'; +import {BasketAsset} from '../../types'; +import {styled} from '@mui/material/styles'; + +export default function BasketItem({ + item, + children, +}: AssetItemCustomComponentProps) { + return ( +
+ {item.position.toString()} + {children} +
+ ); +} + +const Number = styled('div')(({theme}) => ({ + position: 'absolute', + zIndex: 1, + left: 0, + top: 0, + backgroundColor: theme.palette.primary.main, + color: theme.palette.primary.contrastText, + fontSize: 15, + padding: `${theme.spacing(0.5)} ${theme.spacing(1)}`, + borderBottomRightRadius: theme.shape.borderRadius, +})); diff --git a/databox/client/src/components/Basket/BasketListDialog.tsx b/databox/client/src/components/Basket/BasketListDialog.tsx new file mode 100644 index 000000000..8e3fb7659 --- /dev/null +++ b/databox/client/src/components/Basket/BasketListDialog.tsx @@ -0,0 +1,82 @@ +import {Button, ListItem, Skeleton} from '@mui/material'; +import {StackedModalProps, useModals} from '@alchemy/navigation'; +import {useBasketStore} from '../../store/basketStore'; +import {AppDialog} from '@alchemy/phrasea-ui'; +import {Basket} from '../../types'; +import {useTranslation} from 'react-i18next'; +import BasketMenuItem from './BasketMenuItem'; +import CreateBasket from './CreateBasket'; +import AddIcon from '@mui/icons-material/Add'; + +type Props = {} & StackedModalProps; + +export default function BasketListDialog({modalIndex, open}: Props) { + const {t} = useTranslation(); + const {openModal, closeModal} = useModals(); + + const setCurrent = useBasketStore(state => state.setCurrent); + const loading = useBasketStore(state => state.loading); + const baskets = useBasketStore(state => state.baskets); + + const onSelect = (data: Basket): void => { + setCurrent(data); + closeModal(); + }; + + const createBasket = () => { + openModal(CreateBasket, { + onCreate: data => { + onSelect(data); + }, + }); + }; + + return ( + ( + <> + + + + )} + > + {!loading ? ( + baskets.map(b => ( + onSelect(b)} + noEdit={true} + data={b} + /> + )) + ) : ( + <> + + + + + + + + )} + + ); +} diff --git a/databox/client/src/components/Basket/BasketMenuItem.tsx b/databox/client/src/components/Basket/BasketMenuItem.tsx new file mode 100644 index 000000000..766002652 --- /dev/null +++ b/databox/client/src/components/Basket/BasketMenuItem.tsx @@ -0,0 +1,86 @@ +import { + IconButton, + ListItem, + ListItemButton, + ListItemText, +} from '@mui/material'; +import ModalLink from '../Routing/ModalLink'; +import {modalRoutes} from '../../routes'; +import EditIcon from '@mui/icons-material/Edit'; +import DeleteIcon from '@mui/icons-material/Delete'; +import {Basket} from '../../types'; +import {useTranslation} from 'react-i18next'; + +type Props = { + data: Basket; + onDelete?: (data: Basket) => void; + noEdit?: boolean; + selected?: boolean; + onClick?: () => void; +}; + +export default function BasketMenuItem({ + data, + onDelete, + noEdit, + onClick, + selected, +}: Props) { + const {t} = useTranslation(); + + return ( + <> + + + {!noEdit && data.capabilities.canEdit ? ( + + + + ) : null} + {onDelete && data.capabilities.canDelete ? ( + { + e.stopPropagation(); + onDelete(data); + }} + aria-label="delete" + > + + + ) : null} + + + } + disablePadding + > + + + + + + ); +} diff --git a/databox/client/src/components/Basket/BasketSwitcher.tsx b/databox/client/src/components/Basket/BasketSwitcher.tsx new file mode 100644 index 000000000..7948e3a04 --- /dev/null +++ b/databox/client/src/components/Basket/BasketSwitcher.tsx @@ -0,0 +1,100 @@ +import {useBasketStore} from '../../store/basketStore'; +import {Button, ButtonGroup, Chip} from '@mui/material'; +import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; +import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; +import {useModals} from '@alchemy/navigation'; +import BasketListDialog from './BasketListDialog'; +import {useTranslation} from 'react-i18next'; +import {LoadingButton} from '@alchemy/react-form'; +import {useNavigateToModal} from '../Routing/ModalLink'; +import {modalRoutes} from '../../routes'; +import React, {useContext} from 'react'; +import {TSelectionContext} from '../../context/AssetSelectionContext'; +import AddShoppingCartIcon from '@mui/icons-material/AddShoppingCart'; +import {AssetOrAssetContainer} from '../../types'; + +type Props = { + selectionContext: React.Context>; +}; + +export default function BasketSwitcher({ + selectionContext, +}: Props) { + const current = useBasketStore(state => state.current); + const addToCurrent = useBasketStore(state => state.addToCurrent); + const loadingCurrent = useBasketStore(state => state.loadingCurrent); + const {openModal} = useModals(); + const navigateToModal = useNavigateToModal(); + const {t} = useTranslation(); + const {selection, itemToAsset, setSelection} = useContext(selectionContext); + const hasSelection = selection.length > 0; + + const openList = () => { + openModal(BasketListDialog, {}); + }; + + const onClick = () => { + if (hasSelection) { + addToCurrent( + (itemToAsset ? selection.map(itemToAsset) : selection).map( + a => ({ + id: a.id, + }) + ) + ); + setSelection([]); + } else { + if (current) { + navigateToModal(modalRoutes.baskets.routes.view, { + id: current!.id, + }); + } else { + openList(); + } + } + }; + + return ( + + + ) : ( + + ) + } + > + {current?.title || t('basket.default.title', 'My Basket')} + {current?.assetCount ? ( + <> + {' '} + + + ) : ( + '' + )} + + + + ); +} diff --git a/databox/client/src/components/Basket/BasketViewDialog.tsx b/databox/client/src/components/Basket/BasketViewDialog.tsx new file mode 100644 index 000000000..56715bd64 --- /dev/null +++ b/databox/client/src/components/Basket/BasketViewDialog.tsx @@ -0,0 +1,152 @@ +import {StackedModalProps, useParams} from '@alchemy/navigation'; +import {AppDialog} from '@alchemy/phrasea-ui'; +import {Basket, BasketAsset} from '../../types'; +import {useTranslation} from 'react-i18next'; +import React, {useCallback} from 'react'; +import {getBasket, getBasketAssets} from '../../api/basket'; +import {useCloseModal, useNavigateToModal} from '../Routing/ModalLink'; +import AssetList from '../AssetList/AssetList'; +import {BasketSelectionContext} from '../../context/BasketSelectionContext'; +import DisplayProvider from '../Media/DisplayProvider'; +import {useBasketStore} from '../../store/basketStore'; +import DeleteIcon from '@mui/icons-material/Delete'; +import { + createDefaultPagination, + createLoadMore, + createPaginatedLoader, + Pagination, +} from '../../api/pagination'; +import {Button} from '@mui/material'; +import BasketsPanel from './BasketsPanel'; +import {leftPanelWidth} from '../../themes/base'; +import {zIndex} from '../../themes/zIndex'; +import Box from '@mui/material/Box'; +import {OnOpen} from '../AssetList/types'; +import {modalRoutes} from '../../routes'; +import BasketItem from './BasketItem'; + +type Props = {} & StackedModalProps; + +export default function BasketViewDialog({modalIndex, open}: Props) { + const {t} = useTranslation(); + const {id} = useParams(); + const closeModal = useCloseModal(); + const navigateToModal = useNavigateToModal(); + + const [data, setData] = React.useState(); + const [pagination, setPagination] = React.useState>( + createDefaultPagination() + ); + + const removeFromBasket = useBasketStore(state => state.removeFromBasket); + + const loadItems = React.useCallback( + createPaginatedLoader( + next => getBasketAssets(id!, next), + setPagination + ), + [id] + ); + const loadMore = React.useMemo( + () => createLoadMore(loadItems, pagination), + [loadItems, pagination] + ); + + const onOpen = useCallback( + (asset, renditionId): void => { + navigateToModal(modalRoutes.assets.routes.view, { + id: asset.id, + renditionId, + }); + // eslint-disable-next-line + }, + [navigateToModal] + ); + + React.useEffect(() => { + getBasket(id!).then(setData); + loadItems(); + }, [loadItems, id]); + + const itemToAsset = (item: BasketAsset) => item.asset; + + return ( + ( + <> + + + )} + > + +
+ ({ + width: leftPanelWidth, + overflow: 'auto', + boxShadow: theme.shadows[5], + zIndex: zIndex.leftPanel, + })} + > + + +
+ , + }, + reload: true, + resetSelection: true, + disabled: !data?.capabilities.canEdit, + apply: async items => { + await removeFromBasket( + id!, + items.map(i => i.id) + ); + }, + }, + ]} + /> +
+
+
+
+ ); +} diff --git a/databox/client/src/components/Basket/BasketsPanel.tsx b/databox/client/src/components/Basket/BasketsPanel.tsx new file mode 100644 index 000000000..cae5710fc --- /dev/null +++ b/databox/client/src/components/Basket/BasketsPanel.tsx @@ -0,0 +1,115 @@ +import React from 'react'; +import {Button, List, ListItem, Skeleton, Stack} from '@mui/material'; +import {useBasketStore} from '../../store/basketStore'; +import BasketMenuItem from './BasketMenuItem'; +import ConfirmDialog from '../Ui/ConfirmDialog'; +import {toast} from 'react-toastify'; +import {useModals} from '@alchemy/navigation'; +import {Basket} from '../../types'; +import {useTranslation} from 'react-i18next'; +import CreateBasket from './CreateBasket'; +import AddIcon from '@mui/icons-material/Add'; +import {useNavigateToModal} from '../Routing/ModalLink'; +import {modalRoutes} from '../../routes'; + +type Props = { + selected?: string; +}; + +function BasketsPanel({selected}: Props) { + const baskets = useBasketStore(state => state.baskets); + const loading = useBasketStore(state => state.loading); + const load = useBasketStore(state => state.load); + const deleteBasket = useBasketStore(state => state.deleteBasket); + const {openModal} = useModals(); + const {t} = useTranslation(); + const navigateToModal = useNavigateToModal(); + + React.useEffect(() => { + load(); + }, []); + + const onDelete = (data: Basket): void => { + openModal(ConfirmDialog, { + textToType: + data.assetCount && data.assetCount > 1 + ? data.title || + t('dialog.confirm_text_type.default', 'Confirm') + : undefined, + title: t( + 'basket_delete.title.confirm', + 'Are you sure you want to delete this basket?' + ), + onConfirm: async () => { + await deleteBasket(data.id); + toast.success( + t( + 'delete.basket.confirmed', + 'Basket has been removed!' + ) as string + ); + }, + }); + }; + + const createBasket = () => { + openModal(CreateBasket, {}); + }; + + return ( + <> + + + + ({ + root: { + width: '100%', + maxWidth: 360, + backgroundColor: theme.palette.background.paper, + }, + nested: { + paddingLeft: theme.spacing(4), + }, + })} + > + {!loading ? ( + baskets.map(b => ( + + navigateToModal( + modalRoutes.baskets.routes.view, + {id: b.id} + ) + } + /> + )) + ) : ( + <> + + + + + + + + )} + + + ); +} + +export default React.memo(BasketsPanel); diff --git a/databox/client/src/components/Basket/CreateBasket.tsx b/databox/client/src/components/Basket/CreateBasket.tsx new file mode 100644 index 000000000..f2d6550fa --- /dev/null +++ b/databox/client/src/components/Basket/CreateBasket.tsx @@ -0,0 +1,55 @@ +import FormDialog from '../Dialog/FormDialog'; +import {BasketForm} from '../Form/BasketForm'; +import {Basket} from '../../types'; +import {useFormSubmit} from '@alchemy/api'; +import {postBasket} from '../../api/basket'; +import {toast} from 'react-toastify'; +import {useTranslation} from 'react-i18next'; +import {StackedModalProps, useModals} from '@alchemy/navigation'; +import {useDirtyFormPromptOutsideRouter} from '../Dialog/Tabbed/FormTab'; +import {useBasketStore} from '../../store/basketStore'; + +type Props = { + onCreate?: (data: Basket) => void; +} & StackedModalProps; + +export default function CreateBasket({modalIndex, open, onCreate}: Props) { + const {closeModal} = useModals(); + const {t} = useTranslation(); + const addBasket = useBasketStore(state => state.addBasket); + + const usedFormSubmit = useFormSubmit({ + defaultValues: { + title: '', + }, + onSubmit: async (data: Basket) => { + return await postBasket(data); + }, + onSuccess: data => { + toast.success( + t('form.basket_create.success', 'Basket created!') as string + ); + addBasket(data); + closeModal(); + + onCreate && onCreate(data); + }, + }); + + const {submitting, remoteErrors, forbidNavigation} = usedFormSubmit; + useDirtyFormPromptOutsideRouter(forbidNavigation); + const formId = 'create-basket'; + + return ( + + + + ); +} diff --git a/databox/client/src/components/Dialog/Asset/Acl.tsx b/databox/client/src/components/Dialog/Asset/Acl.tsx index 766c109a2..c5df31328 100644 --- a/databox/client/src/components/Dialog/Asset/Acl.tsx +++ b/databox/client/src/components/Dialog/Asset/Acl.tsx @@ -2,6 +2,7 @@ import {Asset} from '../../../types'; import {DialogTabProps} from '../Tabbed/TabbedDialog'; import AclForm from '../../Acl/AclForm'; import ContentTab from '../Tabbed/ContentTab'; +import {PermissionObject} from '../../Permissions/permissions'; type Props = { data: Asset; @@ -14,7 +15,7 @@ export default function Acl({data, onClose, minHeight}: Props) { minHeight={minHeight} disableGutters={true} > - + ); } diff --git a/databox/client/src/components/Dialog/Asset/AssetDialog.tsx b/databox/client/src/components/Dialog/Asset/AssetDialog.tsx index 8d33e3068..bae3197f8 100644 --- a/databox/client/src/components/Dialog/Asset/AssetDialog.tsx +++ b/databox/client/src/components/Dialog/Asset/AssetDialog.tsx @@ -12,7 +12,7 @@ import Renditions from './Renditions'; import InfoAsset from './InfoAsset'; import AssetFileVersions from './AssetFileVersions'; import OperationsAsset from './OperationsAsset'; -import {modalRoutes} from '../../../routes.ts'; +import {modalRoutes} from '../../../routes'; type Props = {}; diff --git a/databox/client/src/components/Dialog/Asset/AssetFileVersion.tsx b/databox/client/src/components/Dialog/Asset/AssetFileVersion.tsx index 7819a82e6..6f7b43b1b 100644 --- a/databox/client/src/components/Dialog/Asset/AssetFileVersion.tsx +++ b/databox/client/src/components/Dialog/Asset/AssetFileVersion.tsx @@ -32,26 +32,26 @@ const cardContentSx = { type Props = { asset: Asset; version: AssetFileVersion; - maxDimensions: Dimensions; + dimensions: Dimensions; }; export function AssetFileVersionCard({ version: {file, name, createdAt}, asset, - maxDimensions, + dimensions, }: Props) { const {t} = useTranslation(); return ( @@ -104,19 +104,19 @@ function AssetFileVersionStructure({ info, media, actions, - maxDimensions, + dimensions, }: { name: ReactNode; media: ReactNode | undefined; actions: ReactNode; - maxDimensions: Dimensions; + dimensions: Dimensions; info: ReactNode; }) { return ( ({ - ...maxDimensions, + ...dimensions, display: 'flex', justifyContent: 'center', alignItems: 'center', @@ -140,16 +140,16 @@ function AssetFileVersionStructure({ } export function AssetFileVersionSkeleton({ - maxDimensions, + dimensions, }: { - maxDimensions: Dimensions; + dimensions: Dimensions; }) { return ( } info={} - maxDimensions={maxDimensions} - media={} + dimensions={dimensions} + media={} actions={ } diff --git a/databox/client/src/components/Dialog/Asset/AssetFileVersions.tsx b/databox/client/src/components/Dialog/Asset/AssetFileVersions.tsx index 2b0618488..7f20e2dc8 100644 --- a/databox/client/src/components/Dialog/Asset/AssetFileVersions.tsx +++ b/databox/client/src/components/Dialog/Asset/AssetFileVersions.tsx @@ -40,7 +40,7 @@ export default function AssetFileVersions({data, onClose, minHeight}: Props) { name: 'Current', createdAt: '', }} - maxDimensions={maxDimensions} + dimensions={maxDimensions} /> )} {versions && @@ -50,7 +50,7 @@ export default function AssetFileVersions({data, onClose, minHeight}: Props) { key={v.id} asset={data} version={v} - maxDimensions={maxDimensions} + dimensions={maxDimensions} /> ); })} @@ -58,7 +58,7 @@ export default function AssetFileVersions({data, onClose, minHeight}: Props) { [0, 1, 2].map(i => ( ))} diff --git a/databox/client/src/components/Dialog/Asset/EditAsset.tsx b/databox/client/src/components/Dialog/Asset/EditAsset.tsx index 7dfe9c6c2..a5288e268 100644 --- a/databox/client/src/components/Dialog/Asset/EditAsset.tsx +++ b/databox/client/src/components/Dialog/Asset/EditAsset.tsx @@ -5,12 +5,12 @@ import {useFormSubmit} from '@alchemy/api'; import FormTab, {useDirtyFormPrompt} from '../Tabbed/FormTab'; import {DialogTabProps} from '../Tabbed/TabbedDialog'; import {AssetApiInput, putAsset} from '../../../api/asset'; -import {Privacy} from '../../../api/privacy.ts'; +import {Privacy} from '../../../api/privacy'; import {FormRow} from '@alchemy/react-form'; import {FormGroup, InputLabel, TextField} from '@mui/material'; import {FormFieldErrors} from '@alchemy/react-form'; -import TagSelect from '../../Form/TagSelect.tsx'; -import PrivacyField from '../../Ui/PrivacyField.tsx'; +import TagSelect from '../../Form/TagSelect'; +import PrivacyField from '../../Ui/PrivacyField'; type Props = { id: string; @@ -35,14 +35,15 @@ export default function EditAsset({data, onClose, minHeight}: Props) { ? { title: data.title, privacy: data.privacy, - tags: (data?.tags?.map(t => t['@id']) ?? []) as unknown as Tag[], + tags: (data?.tags?.map(t => t['@id']) ?? + []) as unknown as Tag[], } : { title: '', privacy: Privacy.Secret, tags: [] as Tag[], }, - onSubmit: async (d) => { + onSubmit: async d => { return await putAsset(data.id, d as unknown as AssetApiInput); }, onSuccess: () => { @@ -86,7 +87,10 @@ export default function EditAsset({data, onClose, minHeight}: Props) { control={control} name={'tags'} /> - field={'tags'} errors={errors} /> + + field={'tags'} + errors={errors} + /> diff --git a/databox/client/src/components/Dialog/Asset/OperationsAsset.tsx b/databox/client/src/components/Dialog/Asset/OperationsAsset.tsx index 16db4a6b5..985d1327f 100644 --- a/databox/client/src/components/Dialog/Asset/OperationsAsset.tsx +++ b/databox/client/src/components/Dialog/Asset/OperationsAsset.tsx @@ -10,7 +10,7 @@ import ModalLink from '../../Routing/ModalLink'; import moment from 'moment'; import {jobStatuses, Workflow} from '@alchemy/visual-workflow'; import React from 'react'; -import {modalRoutes} from '../../../routes.ts'; +import {modalRoutes} from '../../../routes'; type Props = { data: Asset; diff --git a/databox/client/src/components/Dialog/Asset/Rendition.tsx b/databox/client/src/components/Dialog/Asset/Rendition.tsx index a2bd86c08..a307bee06 100644 --- a/databox/client/src/components/Dialog/Asset/Rendition.tsx +++ b/databox/client/src/components/Dialog/Asset/Rendition.tsx @@ -32,13 +32,13 @@ type Props = { asset: Asset; title: string | undefined; rendition: AssetRendition; - maxDimensions: Dimensions; + dimensions: Dimensions; }; export function Rendition({ title, asset, - maxDimensions, + dimensions, rendition: {name, file}, }: Props) { const {t} = useTranslation(); @@ -46,13 +46,13 @@ export function Rendition({ return ( @@ -61,8 +61,12 @@ export function Rendition({ info={ file && (
- {file.size && <>{byteSize(file.size).toString()} • } - {file.type} + {file.size ? ( + <>{byteSize(file.size).toString()} • + ) : ( + '' + )} + {file.type ? file.type : ''}
) } @@ -96,26 +100,26 @@ function RenditionStructure({ info, media, actions, - maxDimensions, + dimensions, }: { title: ReactNode; info: ReactNode; media: ReactNode | undefined; actions: ReactNode; - maxDimensions: Dimensions; + dimensions: Dimensions; }) { return ( ({ - ...maxDimensions, + ...dimensions, display: 'flex', justifyContent: 'center', alignItems: 'center', backgroundColor: theme.palette.grey['100'], })} > - {media || ''} + {media ? media : ''} @@ -131,17 +135,13 @@ function RenditionStructure({ ); } -export function RenditionSkeleton({ - maxDimensions, -}: { - maxDimensions: Dimensions; -}) { +export function RenditionSkeleton({dimensions}: {dimensions: Dimensions}) { return ( } info={} - maxDimensions={maxDimensions} - media={} + dimensions={dimensions} + media={} actions={ } diff --git a/databox/client/src/components/Dialog/Asset/Renditions.tsx b/databox/client/src/components/Dialog/Asset/Renditions.tsx index 80b42b408..cd1cb6870 100644 --- a/databox/client/src/components/Dialog/Asset/Renditions.tsx +++ b/databox/client/src/components/Dialog/Asset/Renditions.tsx @@ -35,13 +35,13 @@ export default function Renditions({data, onClose, minHeight}: Props) { key={r.id} rendition={r} title={data.resolvedTitle} - maxDimensions={maxDimensions} + dimensions={maxDimensions} /> ); })} {!renditions && [0, 1, 2].map(i => ( - + ))} ); diff --git a/databox/client/src/components/Dialog/Basket/Acl.tsx b/databox/client/src/components/Dialog/Basket/Acl.tsx new file mode 100644 index 000000000..fa1c773c9 --- /dev/null +++ b/databox/client/src/components/Dialog/Basket/Acl.tsx @@ -0,0 +1,21 @@ +import {Basket} from '../../../types'; +import {DialogTabProps} from '../Tabbed/TabbedDialog'; +import AclForm from '../../Acl/AclForm'; +import ContentTab from '../Tabbed/ContentTab'; +import {PermissionObject} from '../../Permissions/permissions'; + +type Props = { + data: Basket; +} & DialogTabProps; + +export default function Acl({data, onClose, minHeight}: Props) { + return ( + + + + ); +} diff --git a/databox/client/src/components/Dialog/Basket/BasketDialog.tsx b/databox/client/src/components/Dialog/Basket/BasketDialog.tsx new file mode 100644 index 000000000..7bcf8f486 --- /dev/null +++ b/databox/client/src/components/Dialog/Basket/BasketDialog.tsx @@ -0,0 +1,74 @@ +import {useEffect, useState} from 'react'; +import TabbedDialog from '../Tabbed/TabbedDialog'; +import {useTranslation} from 'react-i18next'; +import {useParams} from '@alchemy/navigation'; +import FullPageLoader from '../../Ui/FullPageLoader'; +import {Basket} from '../../../types'; +import Acl from './Acl'; +import InfoBasket from './InfoBasket'; +import {modalRoutes} from '../../../routes'; +import {useCloseModal} from '../../Routing/ModalLink'; +import {getBasket} from '../../../api/basket'; +import EditBasket from './EditBasket'; + +type Props = {}; + +export default function BasketDialog({}: Props) { + const {t} = useTranslation(); + const {id} = useParams(); + const [data, setData] = useState(); + const closeModal = useCloseModal(); + + useEffect(() => { + getBasket(id!) + .then(c => setData(c)) + .catch(() => { + closeModal(); + }); + }, [id]); + + if (!data) { + return ; + } + + return ( + + ); +} diff --git a/databox/client/src/components/Dialog/Basket/EditBasket.tsx b/databox/client/src/components/Dialog/Basket/EditBasket.tsx new file mode 100644 index 000000000..630c9711d --- /dev/null +++ b/databox/client/src/components/Dialog/Basket/EditBasket.tsx @@ -0,0 +1,57 @@ +import {Basket} from '../../../types'; +import {useTranslation} from 'react-i18next'; +import {toast} from 'react-toastify'; +import {useFormSubmit} from '@alchemy/api'; +import FormTab from '../Tabbed/FormTab'; +import {DialogTabProps} from '../Tabbed/TabbedDialog'; +import {useInRouterDirtyFormPrompt} from '@alchemy/navigation'; +import {useBasketStore} from '../../../store/basketStore'; +import {putBasket} from '../../../api/basket'; +import {BasketForm} from '../../Form/BasketForm'; + +type Props = { + id: string; + data: Basket; +} & DialogTabProps; + +export default function EditBasket({data, onClose, minHeight}: Props) { + const {t} = useTranslation(); + + const {updateBasket} = useBasketStore(); + + const usedFormSubmit = useFormSubmit({ + defaultValues: data, + onSubmit: async (data: Basket) => { + return await putBasket(data.id, data); + }, + onSuccess: data => { + updateBasket(data); + + toast.success( + t('form.basket_edit.success', 'Basket edited!') as string + ); + onClose(); + }, + }); + + const {submitting, remoteErrors, forbidNavigation} = usedFormSubmit; + useInRouterDirtyFormPrompt(t, forbidNavigation); + + const formId = 'edit-basket'; + + return ( + + + + ); +} diff --git a/databox/client/src/components/Dialog/Basket/InfoBasket.tsx b/databox/client/src/components/Dialog/Basket/InfoBasket.tsx new file mode 100644 index 000000000..97547a850 --- /dev/null +++ b/databox/client/src/components/Dialog/Basket/InfoBasket.tsx @@ -0,0 +1,45 @@ +import {Basket} from '../../../types'; +import {DialogTabProps} from '../Tabbed/TabbedDialog'; +import ContentTab from '../Tabbed/ContentTab'; +import {Divider, MenuList} from '@mui/material'; +import KeyIcon from '@mui/icons-material/Key'; +import EventIcon from '@mui/icons-material/Event'; +import InfoRow from '../Info/InfoRow'; +import PersonIcon from '@mui/icons-material/Person'; + +type Props = { + id: string; + data: Basket; +} & DialogTabProps; + +export default function InfoBasket({data, onClose, minHeight}: Props) { + return ( + + + } + /> + + } + /> + } + /> + } + /> + + + ); +} diff --git a/databox/client/src/components/Dialog/Basket/Operations.tsx b/databox/client/src/components/Dialog/Basket/Operations.tsx new file mode 100644 index 000000000..428fcb067 --- /dev/null +++ b/databox/client/src/components/Dialog/Basket/Operations.tsx @@ -0,0 +1,60 @@ +import {Collection} from '../../../types'; +import {DialogTabProps} from '../Tabbed/TabbedDialog'; +import ContentTab from '../Tabbed/ContentTab'; +import CollectionMoveSection from '../../Media/Collection/CollectionMoveSection'; +import {FormSection} from '@alchemy/react-form'; +import {Alert, Button, Typography} from '@mui/material'; +import {useTranslation} from 'react-i18next'; +import {deleteCollection} from '../../../api/collection'; +import ConfirmDialog from '../../Ui/ConfirmDialog'; +import {useModals} from '@alchemy/navigation'; + +type Props = { + data: Collection; +} & DialogTabProps; + +export default function Operations({data, onClose, minHeight}: Props) { + const {t} = useTranslation(); + const {openModal} = useModals(); + const deleteConfirmCollection = async () => { + openModal(ConfirmDialog, { + textToType: data.title, + title: t( + 'collection_delete.title.confirm', + 'Are you sure you want to delete this collection?' + ), + onConfirm: async () => { + await deleteCollection(data.id); + }, + onConfirmed: () => { + onClose(); + }, + }); + }; + return ( + + { + onClose(); + }} + /> + + + {t('danger_zone', 'Danger zone')} + + + {t('collection_delete.title', 'Delete collection')} + + + + + ); +} diff --git a/databox/client/src/components/Dialog/Basket/TagRulesTab.tsx b/databox/client/src/components/Dialog/Basket/TagRulesTab.tsx new file mode 100644 index 000000000..41cee15e5 --- /dev/null +++ b/databox/client/src/components/Dialog/Basket/TagRulesTab.tsx @@ -0,0 +1,20 @@ +import {Collection} from '../../../types'; +import {DialogTabProps} from '../Tabbed/TabbedDialog'; +import TagRules from '../../Media/TagFilterRule/TagRules'; +import ContentTab from '../Tabbed/ContentTab'; + +type Props = { + data: Collection; +} & DialogTabProps; + +export default function TagRulesTab({data, onClose, minHeight}: Props) { + return ( + + + + ); +} diff --git a/databox/client/src/components/Dialog/Collection/Acl.tsx b/databox/client/src/components/Dialog/Collection/Acl.tsx index 8a2ea872d..186fd95e8 100644 --- a/databox/client/src/components/Dialog/Collection/Acl.tsx +++ b/databox/client/src/components/Dialog/Collection/Acl.tsx @@ -2,6 +2,7 @@ import {Collection} from '../../../types'; import {DialogTabProps} from '../Tabbed/TabbedDialog'; import AclForm from '../../Acl/AclForm'; import ContentTab from '../Tabbed/ContentTab'; +import {PermissionObject} from '../../Permissions/permissions'; type Props = { data: Collection; @@ -14,7 +15,10 @@ export default function Acl({data, onClose, minHeight}: Props) { minHeight={minHeight} disableGutters={true} > - + ); } diff --git a/databox/client/src/components/Dialog/Collection/CollectionDialog.tsx b/databox/client/src/components/Dialog/Collection/CollectionDialog.tsx index a39bce032..91174de6b 100644 --- a/databox/client/src/components/Dialog/Collection/CollectionDialog.tsx +++ b/databox/client/src/components/Dialog/Collection/CollectionDialog.tsx @@ -10,8 +10,8 @@ import {getCollection} from '../../../api/collection'; import TagRulesTab from './TagRulesTab'; import Operations from './Operations'; import InfoCollection from './InfoCollection'; -import {modalRoutes} from '../../../routes.ts'; -import {useCloseModal} from '../../Routing/ModalLink.tsx'; +import {modalRoutes} from '../../../routes'; +import {useCloseModal} from '../../Routing/ModalLink'; type Props = {}; diff --git a/databox/client/src/components/Dialog/Collection/EditCollection.tsx b/databox/client/src/components/Dialog/Collection/EditCollection.tsx index 297f78a1f..ea1d44be0 100644 --- a/databox/client/src/components/Dialog/Collection/EditCollection.tsx +++ b/databox/client/src/components/Dialog/Collection/EditCollection.tsx @@ -7,7 +7,7 @@ import FormTab from '../Tabbed/FormTab'; import {DialogTabProps} from '../Tabbed/TabbedDialog'; import {CollectionForm} from '../../Form/CollectionForm'; import {useInRouterDirtyFormPrompt} from '@alchemy/navigation'; -import {useCollectionStore} from '../../../store/collectionStore.ts'; +import {useCollectionStore} from '../../../store/collectionStore'; export type OnCollectionEdit = (coll: Collection) => void; diff --git a/databox/client/src/components/Dialog/RouteDialog.tsx b/databox/client/src/components/Dialog/RouteDialog.tsx index 7dcef7f02..34392aa80 100644 --- a/databox/client/src/components/Dialog/RouteDialog.tsx +++ b/databox/client/src/components/Dialog/RouteDialog.tsx @@ -1,5 +1,5 @@ import {ReactElement} from 'react'; -import {useCloseModal} from '../Routing/ModalLink.tsx'; +import {useCloseModal} from '../Routing/ModalLink'; type Props = { children(options: { diff --git a/databox/client/src/components/Dialog/Workspace/Acl.tsx b/databox/client/src/components/Dialog/Workspace/Acl.tsx index 330187165..da5da0a6c 100644 --- a/databox/client/src/components/Dialog/Workspace/Acl.tsx +++ b/databox/client/src/components/Dialog/Workspace/Acl.tsx @@ -2,6 +2,7 @@ import {Workspace} from '../../../types'; import {DialogTabProps} from '../Tabbed/TabbedDialog'; import AclForm from '../../Acl/AclForm'; import ContentTab from '../Tabbed/ContentTab'; +import {PermissionObject} from '../../Permissions/permissions'; type Props = { data: Workspace; @@ -14,7 +15,10 @@ export default function Acl({data, onClose, minHeight}: Props) { minHeight={minHeight} disableGutters={true} > - + ); } diff --git a/databox/client/src/components/Dialog/Workspace/AttributeClassManager.tsx b/databox/client/src/components/Dialog/Workspace/AttributeClassManager.tsx index ca9ae7e25..485ea63e8 100644 --- a/databox/client/src/components/Dialog/Workspace/AttributeClassManager.tsx +++ b/databox/client/src/components/Dialog/Workspace/AttributeClassManager.tsx @@ -7,16 +7,16 @@ import { putAttributeClass, } from '../../../api/attributes'; import {Chip, InputLabel, ListItemText, TextField} from '@mui/material'; -import {FormRow} from '@alchemy/react-form'; +import {FormFieldErrors, FormRow} from '@alchemy/react-form'; import DefinitionManager, { DefinitionItemFormProps, DefinitionItemProps, } from './DefinitionManager'; import {useTranslation} from 'react-i18next'; -import {FormFieldErrors} from '@alchemy/react-form'; import CheckboxWidget from '../../Form/CheckboxWidget'; import AclForm from '../../Acl/AclForm'; import {AclPermission} from '../../Acl/acl'; +import {PermissionObject} from '../../Permissions/permissions'; function Item({ data, @@ -78,7 +78,7 @@ function Item({
diff --git a/databox/client/src/components/Dialog/Workspace/DefinitionManager.tsx b/databox/client/src/components/Dialog/Workspace/DefinitionManager.tsx index bbd01b9f5..28269adaa 100644 --- a/databox/client/src/components/Dialog/Workspace/DefinitionManager.tsx +++ b/databox/client/src/components/Dialog/Workspace/DefinitionManager.tsx @@ -1,4 +1,10 @@ -import React, {FunctionComponent, useCallback, useEffect, useMemo, useState,} from 'react'; +import React, { + FunctionComponent, + useCallback, + useEffect, + useMemo, + useState, +} from 'react'; import { Box, Button, @@ -20,11 +26,15 @@ import {useFormSubmit, UseFormSubmitReturn} from '@alchemy/api'; import {LoadingButton} from '@mui/lab'; import {toast} from 'react-toastify'; import RemoteErrors from '../../Form/RemoteErrors'; -import SortableList, {OrderChangeHandler, SortableItem, SortableItemProps,} from '../../Ui/Sortable/SortableList'; -import {useDirtyFormPrompt} from '../Tabbed/FormTab.tsx'; +import SortableList, { + OrderChangeHandler, + SortableItem, + SortableItemProps, +} from '../../Ui/Sortable/SortableList'; +import {useDirtyFormPrompt} from '../Tabbed/FormTab'; import {DefaultValues} from 'react-hook-form'; -type DefinitionBase = ApiHydraObjectResponse & { id: string }; +type DefinitionBase = ApiHydraObjectResponse & {id: string}; export type DefinitionItemProps = { data: D; @@ -135,17 +145,19 @@ export default function DefinitionManager({ item: undefined, loading: true, }); - loadItem(data.id).then(d => { - setItemState({ - item: d, - loading: false, + loadItem(data.id) + .then(d => { + setItemState({ + item: d, + loading: false, + }); + }) + .catch(() => { + setItemState(p => ({ + ...p, + loading: false, + })); }); - }).catch(() => { - setItemState(p => ({ - ...p, - loading: false, - })); - }); } else { setItemState({ item: data, @@ -181,7 +193,9 @@ export default function DefinitionManager({ defaultValues: newItem as DefaultValues, onSubmit: async (data: D) => { const newData = await handleSave(data); - const newNormData = normalizeData ? normalizeData(newData) : newData; + const newNormData = normalizeData + ? normalizeData(newData) + : newData; setItemState({ item: newNormData, @@ -314,12 +328,12 @@ export default function DefinitionManager({ disabled={!list} > - + - + - + {onSort && list && ( @@ -340,7 +354,10 @@ export default function DefinitionManager({ return ( {React.createElement( @@ -366,7 +383,7 @@ export default function DefinitionManager({ /> } + primary={} secondary={ ({ flexGrow: 1, }} > - {loadingItem && - - } + {loadingItem && ( + + + + )} {item && (
({ })}
)} - + {item && item !== 'new' && handleDelete && ( <> -
+
diff --git a/databox/client/src/components/Dialog/Workspace/EditWorkspace.tsx b/databox/client/src/components/Dialog/Workspace/EditWorkspace.tsx index dd6b11342..84c15be82 100644 --- a/databox/client/src/components/Dialog/Workspace/EditWorkspace.tsx +++ b/databox/client/src/components/Dialog/Workspace/EditWorkspace.tsx @@ -17,7 +17,7 @@ export default function EditWorkspace({data, onClose, minHeight}: Props) { const usedFormSubmit = useFormSubmit({ defaultValues: data, - onSubmit: async (data) => { + onSubmit: async data => { return await putWorkspace(data.id, data); }, onSuccess: () => { diff --git a/databox/client/src/components/Dialog/Workspace/TagManager.tsx b/databox/client/src/components/Dialog/Workspace/TagManager.tsx index 4bdea7bbc..11554c31b 100644 --- a/databox/client/src/components/Dialog/Workspace/TagManager.tsx +++ b/databox/client/src/components/Dialog/Workspace/TagManager.tsx @@ -10,7 +10,7 @@ import {Controller} from 'react-hook-form'; import {FormFieldErrors} from '@alchemy/react-form'; import {deleteTag, getTag, getTags, postTag, putTag} from '../../../api/tag'; import {ColorPicker} from '@alchemy/react-form'; -import React from "react"; +import React from 'react'; function Item({ data, @@ -44,7 +44,7 @@ function Item({ return d as Tag; }; }, - [data?.id, setValue], + [data?.id, setValue] ); return ( @@ -56,7 +56,7 @@ function Item({ getData={getValues} title={t( 'form.profile.firstName.translate.title', - 'Translate Tag', + 'Translate Tag' )} onUpdate={createSaveTranslations('name')} > @@ -149,7 +149,7 @@ export default function TagManager({ workspace: workspace['@id']!, }).then(r => r.result) } - loadItem={(id) => getTag(id)} + loadItem={id => getTag(id)} workspaceId={workspace.id} minHeight={minHeight} onClose={onClose} diff --git a/databox/client/src/components/Dialog/Workspace/WorkspaceDialog.tsx b/databox/client/src/components/Dialog/Workspace/WorkspaceDialog.tsx index e7fc6fb76..890289b53 100644 --- a/databox/client/src/components/Dialog/Workspace/WorkspaceDialog.tsx +++ b/databox/client/src/components/Dialog/Workspace/WorkspaceDialog.tsx @@ -14,8 +14,8 @@ import TagManager from './TagManager'; import RenditionClassManager from './RenditionClassManager'; import RenditionDefinitionManager from './RenditionDefinitionManager'; import InfoWorkspace from './InfoWorkspace'; -import {modalRoutes} from '../../../routes.ts'; -import {useCloseModal} from '../../Routing/ModalLink.tsx'; +import {modalRoutes} from '../../../routes'; +import {useCloseModal} from '../../Routing/ModalLink'; type Props = {}; diff --git a/databox/client/src/components/Form/BasketForm.tsx b/databox/client/src/components/Form/BasketForm.tsx new file mode 100644 index 000000000..36724e6c9 --- /dev/null +++ b/databox/client/src/components/Form/BasketForm.tsx @@ -0,0 +1,45 @@ +import {TextField} from '@mui/material'; +import {FC} from 'react'; +import {useTranslation} from 'react-i18next'; +import {Basket} from '../../types'; +import {FormFieldErrors, FormRow} from '@alchemy/react-form'; +import {FormProps} from './types'; + +export const BasketForm: FC> = function ({ + formId, + usedFormSubmit: { + handleSubmit, + submitting, + register, + formState: {errors}, + }, +}) { + const {t} = useTranslation(); + + return ( +
+ + + + + + + + +
+ ); +}; diff --git a/databox/client/src/components/Form/GroupSelect.tsx b/databox/client/src/components/Form/GroupSelect.tsx index e01faf4e6..2a48aee35 100644 --- a/databox/client/src/components/Form/GroupSelect.tsx +++ b/databox/client/src/components/Form/GroupSelect.tsx @@ -4,7 +4,7 @@ import RSelectWidget, {RSelectProps, SelectOption} from './RSelect'; import {FieldValues} from 'react-hook-form'; import React from 'react'; import {isAxiosError} from 'axios'; -import {NotAllowSelect} from './UserSelect.tsx'; +import {NotAllowSelect} from './UserSelect'; type Props = { data?: Promise | undefined; diff --git a/databox/client/src/components/Form/WorkspaceForm.tsx b/databox/client/src/components/Form/WorkspaceForm.tsx index 2918c5793..21df968fa 100644 --- a/databox/client/src/components/Form/WorkspaceForm.tsx +++ b/databox/client/src/components/Form/WorkspaceForm.tsx @@ -7,10 +7,7 @@ import {FormRow} from '@alchemy/react-form'; import {FormProps} from './types'; import FlagIcon from '@mui/icons-material/Flag'; import IconFormLabel from './IconFormLabel'; -import { - SortableCollectionWidget, -} from '@alchemy/react-form'; - +import {SortableCollectionWidget} from '@alchemy/react-form'; import Flag from '../Ui/Flag'; import {useDirtyFormPrompt} from '../Dialog/Tabbed/FormTab'; @@ -18,156 +15,148 @@ import CheckboxWidget from './CheckboxWidget'; const emptyLocaleItem = ''; -export const WorkspaceForm: FC> = - function ({ - formId, - usedFormSubmit: { - register, - control, - handleSubmit, - watch, - submitting, - forbidNavigation, - formState: {errors}, - }, - }) { - const {t} = useTranslation(); +export const WorkspaceForm: FC> = function ({ + formId, + usedFormSubmit: { + register, + control, + handleSubmit, + watch, + submitting, + forbidNavigation, + formState: {errors}, + }, +}) { + const {t} = useTranslation(); - useDirtyFormPrompt(forbidNavigation); + useDirtyFormPrompt(forbidNavigation); - const locales = watch('enabledLocales'); + const locales = watch('enabledLocales'); - return ( - <> -
- - - - - - - - - - }> - {t( - 'form.workspace.locales.title', - 'Workspace locales' - )} - - } - path={'enabledLocales'} - register={register} - addLabel={t( - 'form.workspace.locales.add', - 'Add locale' - )} - removeLabel={ - - Remove this locale - - } - renderForm={({index, path}) => { - return ( - - - ), - }} - label={t( - 'form.workspace.locales.label', - 'Locale' - )} - placeholder={t( - 'form.workspace.locales.placeholder', - 'e.g. fr or fr-FR' - )} - {...register( - `${path}.${index}` as any - )} - required={true} - /> - - ); - }} - /> - - - }> - {t( - 'form.workspace.fallback_locales.title', - 'Fallbacks locales' - )} - - } - path={'localeFallbacks'} - register={register} - addLabel={t( - 'form.workspace.fallback_locales.add', - 'Add fallback locale' - )} - removeLabel={ - - Remove this locale - - } - renderForm={({index, path}) => { - return ( - - - - ); - }} - /> - -
- - ); - }; + return ( + <> +
+ + + + + + + + + + }> + {t( + 'form.workspace.locales.title', + 'Workspace locales' + )} + + } + path={'enabledLocales'} + register={register} + addLabel={t('form.workspace.locales.add', 'Add locale')} + removeLabel={ + + Remove this locale + + } + renderForm={({index, path}) => { + return ( + + + ), + }} + label={t( + 'form.workspace.locales.label', + 'Locale' + )} + placeholder={t( + 'form.workspace.locales.placeholder', + 'e.g. fr or fr-FR' + )} + {...register(`${path}.${index}` as any)} + required={true} + /> + + ); + }} + /> + + + }> + {t( + 'form.workspace.fallback_locales.title', + 'Fallbacks locales' + )} + + } + path={'localeFallbacks'} + register={register} + addLabel={t( + 'form.workspace.fallback_locales.add', + 'Add fallback locale' + )} + removeLabel={ + + Remove this locale + + } + renderForm={({index, path}) => { + return ( + + + + ); + }} + /> + +
+ + ); +}; diff --git a/databox/client/src/components/Integration/RemoveBG/RemoveBGAssetEditorActions.tsx b/databox/client/src/components/Integration/RemoveBG/RemoveBGAssetEditorActions.tsx index 3deaae517..d2790b777 100644 --- a/databox/client/src/components/Integration/RemoveBG/RemoveBGAssetEditorActions.tsx +++ b/databox/client/src/components/Integration/RemoveBG/RemoveBGAssetEditorActions.tsx @@ -12,7 +12,7 @@ import {File} from '../../../types'; function RemoveBgComparison({ left, right, - maxDimensions, + dimensions, }: { left: string; right: string; @@ -20,9 +20,9 @@ function RemoveBgComparison({ return (
(({url, name, maxDimensions}, ref) => { +>(({url, name, dimensions}, ref) => { return (
void; -} & StackedModalProps; +import {OnSelectionChange} from '../../../AssetList/types'; type FormData = { destination: string; @@ -28,17 +24,17 @@ type FormData = { withTags: boolean; }; -const assetListStyle = { - maxHeight: 450, - overflow: 'auto', -}; +type Props = { + assets: Asset[]; + onComplete: () => void; +} & StackedModalProps; function AssetList({ assets, - setSelection, + onSelectionChange, }: { assets: Asset[]; - setSelection: (selection: string[]) => void; + onSelectionChange: OnSelectionChange; }) { const {t} = useTranslation(); @@ -50,11 +46,16 @@ function AssetList({ `You can select the asset you want to duplicate to the destination (hard copy):` )} - +
+ +
); } @@ -68,8 +69,8 @@ export default function CopyAssetsDialog({ const [workspaceDest, setWorkspaceDest] = useState(); const {t} = useTranslation(); const {closeModal} = useModals(); - const [selectionOW, setSelectionOW] = useState([]); - const [selectionP, setSelectionP] = useState([]); + const [selectionOW, setSelectionOW] = useState([]); + const [selectionP, setSelectionP] = useState([]); const count = assets.length; @@ -98,8 +99,8 @@ export default function CopyAssetsDialog({ a.workspace.id === workspaceDest ) .map(a => a.id), - ...selectionOW, - ...selectionP, + ...selectionOW.map(a => a.id), + ...selectionP.map(a => a.id), ]; return copyAssets( @@ -232,7 +233,7 @@ export default function CopyAssetsDialog({ )} @@ -246,7 +247,7 @@ export default function CopyAssetsDialog({ )} diff --git a/databox/client/src/components/Media/Asset/Actions/ExportAssetsDialog.tsx b/databox/client/src/components/Media/Asset/Actions/ExportAssetsDialog.tsx index 1301882b1..fca13b263 100644 --- a/databox/client/src/components/Media/Asset/Actions/ExportAssetsDialog.tsx +++ b/databox/client/src/components/Media/Asset/Actions/ExportAssetsDialog.tsx @@ -12,7 +12,7 @@ import FileDownloadIcon from '@mui/icons-material/FileDownload'; import FullPageLoader from '../../../Ui/FullPageLoader'; import {StackedModalProps, useModals} from '@alchemy/navigation'; import {useDirtyFormPrompt} from '../../../Dialog/Tabbed/FormTab'; -import RemoteErrors from '../../../Form/RemoteErrors.tsx'; +import RemoteErrors from '../../../Form/RemoteErrors'; type Props = { assets: Asset[]; diff --git a/databox/client/src/components/Media/Asset/AssetFileIcon.tsx b/databox/client/src/components/Media/Asset/AssetFileIcon.tsx index 3d18184bc..1247ac2a8 100644 --- a/databox/client/src/components/Media/Asset/AssetFileIcon.tsx +++ b/databox/client/src/components/Media/Asset/AssetFileIcon.tsx @@ -8,6 +8,7 @@ import InsertDriveFileIcon from '@mui/icons-material/InsertDriveFile'; import {SvgIcon, SvgIconProps} from '@mui/material'; import {FileTypeEnum, getFileTypeFromMIMEType} from '../../../lib/file'; import React from 'react'; +import assetClasses from '../../AssetList/classes'; function getIconFromType(type: string | undefined): typeof SvgIcon { switch (getFileTypeFromMIMEType(type)) { @@ -60,6 +61,7 @@ type Props = { export default function AssetFileIcon({file, ...iconProps}: Props) { return React.createElement(getIconFromType(file.type), { fontSize: 'large', + className: assetClasses.fileIcon, ...iconProps, }); } diff --git a/databox/client/src/components/Media/Asset/AssetSelection.tsx b/databox/client/src/components/Media/Asset/AssetSelection.tsx deleted file mode 100644 index ac6874874..000000000 --- a/databox/client/src/components/Media/Asset/AssetSelection.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import {CSSProperties, useCallback, useContext, useMemo} from 'react'; -import {Asset} from '../../../types'; -import AssetSelectionProvider from '../AssetSelectionProvider'; -import {ResultContext} from '../Search/ResultContext'; -import Pager, {LayoutEnum} from '../Search/Pager'; -import {OnSelectAsset, OnUnselectAsset} from '../Search/Layout/Layout'; -import {getAssetListFromEvent} from '../Search/AssetResults'; -import {AssetSelectionContext} from '../AssetSelectionContext'; -import {DisplayContext, TDisplayContext} from '../DisplayContext'; -import {voidFunc} from '../../../lib/utils'; -import {Box, Checkbox, FormControlLabel} from '@mui/material'; -import {useTranslation} from 'react-i18next'; - -type Props = { - assets: Asset[]; - onSelectionChange: (selection: string[]) => void; -} & { - style?: CSSProperties; -}; - -function SelectionProxy({pages}: {pages: Asset[][]}) { - const {t} = useTranslation(); - const assetSelection = useContext(AssetSelectionContext); - - const onSelect = useCallback( - (id, e): void => { - e?.preventDefault(); - assetSelection.selectAssets(prev => { - return getAssetListFromEvent(prev, id, pages, e); - }); - // eslint-disable-next-line - }, - [pages] - ); - - const onUnselect = useCallback((id, e): void => { - e?.preventDefault(); - assetSelection.selectAssets(p => p.filter(i => i !== id)); - // eslint-disable-next-line - }, []); - - return ( -
- { - assetSelection.selectAssets( - checked ? pages[0].map(a => a.id) : [] - ); - }} - /> - } - label={`${t( - 'form.copy_assets.asset_not_linkable.toggle_select_all', - 'Select/Unselect all' - )} (${assetSelection.selectedAssets.length}/${ - pages[0].length - })`} - labelPlacement="end" - /> - -
- ); -} - -export default function AssetSelection({ - assets, - onSelectionChange, - style, -}: Props) { - const pages = useMemo(() => [assets], [assets]); - - const displayContext: TDisplayContext = useMemo( - () => ({ - collectionsLimit: 1, - displayAttributes: false, - displayCollections: true, - displayPreview: false, - displayTags: true, - displayTitle: true, - playVideos: false, - playing: undefined, - previewLocked: false, - setCollectionsLimit: voidFunc, - setPlaying: voidFunc, - setTagsLimit: voidFunc, - setThumbSize: voidFunc, - setTitleRows: voidFunc, - tagsLimit: 1, - thumbSize: 100, - titleRows: 1, - toggleDisplayAttributes: voidFunc, - toggleDisplayCollections: voidFunc, - toggleDisplayPreview: voidFunc, - toggleDisplayTags: voidFunc, - toggleDisplayTitle: voidFunc, - togglePlayVideos: voidFunc, - }), - [] - ); - - return ( - ({ - color: theme.palette.common.black, - width: '100%', - })} - style={style} - > - {}, - }} - > - - - - - - - - ); -} diff --git a/databox/client/src/components/Media/Asset/AssetThumb.tsx b/databox/client/src/components/Media/Asset/AssetThumb.tsx index 0e6b9e154..b56b2f22b 100644 --- a/databox/client/src/components/Media/Asset/AssetThumb.tsx +++ b/databox/client/src/components/Media/Asset/AssetThumb.tsx @@ -1,19 +1,16 @@ -import {DOMAttributes} from 'react'; +import React, {DOMAttributes} from 'react'; import {Asset} from '../../../types'; -import Thumb from './Thumb'; import AssetFileIcon from './AssetFileIcon'; -import assetClasses from '../Search/Layout/classes'; +import assetClasses from '../../AssetList/classes'; import FilePlayer from './FilePlayer'; -import {createDimensions} from './Players'; import {CircularProgress, SxProps} from '@mui/material'; +import classNames from 'classnames'; type Props = { - selected?: boolean; - thumbSize: number; asset: Asset; -} & DOMAttributes; +} & DOMAttributes; -export default function AssetThumb({ +function AssetThumb({ asset: { resolvedTitle, pendingSourceFile, @@ -21,18 +18,14 @@ export default function AssetThumb({ thumbnailActive, original, }, - thumbSize, - selected, ...domAttrs }: Props) { - const dimensions = createDimensions(thumbSize); - return ( -
)} @@ -58,15 +49,13 @@ export default function AssetThumb({ {!pendingSourceFile && thumbnailActive?.file && (
)} - +
); } @@ -85,3 +74,5 @@ export function createThumbActiveStyle(): SxProps { }, }; } + +export default React.memo(AssetThumb); diff --git a/databox/client/src/components/Media/Asset/AssetView.tsx b/databox/client/src/components/Media/Asset/AssetView.tsx index f9a1d101b..8e6dc8a53 100644 --- a/databox/client/src/components/Media/Asset/AssetView.tsx +++ b/databox/client/src/components/Media/Asset/AssetView.tsx @@ -14,10 +14,10 @@ import RouteDialog from '../../Dialog/RouteDialog'; import {getAssetRenditions} from '../../../api/rendition'; import MenuItem from '@mui/material/MenuItem'; import {useNavigateToModal} from '../../Routing/ModalLink'; -import {modalRoutes} from '../../../routes.ts'; +import {modalRoutes} from '../../../routes'; export type IntegrationOverlayCommonProps = { - maxDimensions: Dimensions; + dimensions: Dimensions; }; type IntegrationOverlay

= { @@ -66,7 +66,7 @@ export default function AssetView({modalIndex}: Props) { [setIntegrationOverlay] ); - const maxDimensions = useMemo(() => { + const dimensions = useMemo(() => { return { width: winSize.innerWidth - menuWidth - scrollBarDelta, height: winSize.innerHeight - headerHeight - 2, @@ -124,7 +124,7 @@ export default function AssetView({modalIndex}: Props) { >

@@ -159,7 +159,7 @@ export default function AssetView({modalIndex}: Props) { React.createElement( integrationOverlay.component, { - maxDimensions, + dimensions, ...(integrationOverlay.props || {}), } )} @@ -171,16 +171,18 @@ export default function AssetView({modalIndex}: Props) { maxWidth: menuWidth, borderLeft: `1px solid ${theme.palette.divider}`, overflowY: 'auto', - height: maxDimensions.height, + height: dimensions.height, })} > - {rendition?.file && ( + {rendition?.file ? ( + ) : ( + '' )} diff --git a/databox/client/src/components/Media/Asset/Attribute/AttributeRowUI.tsx b/databox/client/src/components/Media/Asset/Attribute/AttributeRowUI.tsx index e8b5d64db..9aa05f3b3 100644 --- a/databox/client/src/components/Media/Asset/Attribute/AttributeRowUI.tsx +++ b/databox/client/src/components/Media/Asset/Attribute/AttributeRowUI.tsx @@ -1,11 +1,12 @@ -import {isRtlLocale} from '../../../../lib/lang'; -import {AttributeFormatContext} from './Format/AttributeFormatContext'; +import {TAttributeFormatContext} from './Format/AttributeFormatContext'; import VisibilityIcon from '@mui/icons-material/Visibility'; import {IconButton} from '@mui/material'; import {getAttributeType} from './types'; import PushPinIcon from '@mui/icons-material/PushPin'; import CopyAttribute from './CopyAttribute'; import React from 'react'; +import {attributesClasses} from './Attributes'; +import {isRtlLocale} from '../../../../lib/lang'; type Props = { type: string; @@ -14,10 +15,11 @@ type Props = { attributeName: string; value: any; highlight?: any; - controls: boolean; + displayControls: boolean; multiple: boolean; togglePin: (definitionId: string) => void; - pinnedAttributes: string[]; + pinned: boolean; + formatContext: TAttributeFormatContext; }; export default function AttributeRowUI({ @@ -29,13 +31,13 @@ export default function AttributeRowUI({ highlight, multiple, togglePin, - pinnedAttributes, - controls, + pinned, + displayControls, + formatContext, }: Props) { const isRtl = isRtlLocale(locale); - const formatContext = React.useContext(AttributeFormatContext); const formatter = getAttributeType(type); - const pinned = pinnedAttributes.includes(definitionId); + const [overControls, setOverControls] = React.useState(false); const toggleFormat = React.useCallback< React.MouseEventHandler @@ -64,48 +66,46 @@ export default function AttributeRowUI({ } : undefined } + onMouseEnter={() => setOverControls(true)} + onMouseLeave={() => setOverControls(false)} > -
+
{attributeName} - {controls && formatContext.hasFormats(type) && ( - - - - )} + {displayControls ? ( +
+ {overControls ? ( + <> + {formatContext.hasFormats(type) && ( + + + + )} - {controls && ( - - )} + - {controls && ( - togglePin(definitionId)} - sx={{ - ml: 1, - }} - > - - + togglePin(definitionId)} + > + + + + ) : ( + '' + )} +
+ ) : ( + '' )}
-
+
{multiple && !formatter.supportsMultiple() ? ( -
    +
      {value ? value.map((v: any, i: number) => { const formatProps = { @@ -119,11 +119,15 @@ export default function AttributeRowUI({ return (
    • {formatter.formatValue(formatProps)} - + {displayControls && overControls ? ( + + ) : ( + '' + )}
    • ); }) diff --git a/databox/client/src/components/Media/Asset/Attribute/Attributes.tsx b/databox/client/src/components/Media/Asset/Attribute/Attributes.tsx index 234d93059..230af557f 100644 --- a/databox/client/src/components/Media/Asset/Attribute/Attributes.tsx +++ b/databox/client/src/components/Media/Asset/Attribute/Attributes.tsx @@ -8,10 +8,11 @@ import React, { } from 'react'; import {styled} from '@mui/material/styles'; import AttributeRowUI from './AttributeRowUI'; -import {Box} from '@mui/material'; +import {SxProps} from '@mui/material'; import nl2br from 'react-nl2br'; import {stopPropagation} from '../../../../lib/stdFuncs'; import {UserPreferencesContext} from '../../../User/Preferences/UserPreferencesContext'; +import {AttributeFormatContext} from './Format/AttributeFormatContext'; type FreeNode = string | ReactNode | ReactNode[]; @@ -86,12 +87,13 @@ export function replaceHighlight( type Props = { asset: Asset; - controls: boolean; + displayControls: boolean; pinnedOnly?: boolean; }; -export default function Attributes({asset, controls, pinnedOnly}: Props) { +function Attributes({asset, displayControls, pinnedOnly}: Props) { const {preferences, updatePreference} = useContext(UserPreferencesContext); + const formatContext = useContext(AttributeFormatContext); const togglePin = React.useCallback((definitionId: string) => { updatePreference('pinnedAttrs', prev => { @@ -136,20 +138,7 @@ export default function Attributes({asset, controls, pinnedOnly}: Props) { } return ( - ( ))} - +
); } + +export default React.memo(Attributes) as typeof Attributes; + +export const attributesClasses = { + controls: 'attr-ctls', + name: 'attr-name', + val: 'attr-val', + list: 'attr-ul', +}; + +export function attributesSx(): SxProps { + return { + [`.${attributesClasses.name}`]: { + fontWeight: 100, + fontSize: 13, + my: 0.5, + }, + [`.${attributesClasses.controls}`]: { + 'display': 'inline-block', + 'ml': 1, + 'my': -1, + '.MuiSvgIcon-root': { + fontSize: 13, + }, + '.MuiButtonBase-root + .MuiButtonBase-root': { + ml: 1, + }, + }, + [`.${attributesClasses.val}`]: { + 'mb': 1, + 'fontSize': 14, + '.MuiSvgIcon-root': { + fontSize: 13, + }, + }, + [`.${attributesClasses.list}`]: { + m: 0, + pl: 1, + }, + }; +} diff --git a/databox/client/src/components/Media/Asset/Attribute/CopyAttribute.tsx b/databox/client/src/components/Media/Asset/Attribute/CopyAttribute.tsx index 69ae0d36f..493630f3f 100644 --- a/databox/client/src/components/Media/Asset/Attribute/CopyAttribute.tsx +++ b/databox/client/src/components/Media/Asset/Attribute/CopyAttribute.tsx @@ -1,39 +1,30 @@ -import {Box, IconButton, SxProps} from '@mui/material'; +import {IconButton} from '@mui/material'; import ContentCopyIcon from '@mui/icons-material/ContentCopy'; import CopyToClipboard from '../../../../lib/CopyToClipboard'; type Props = { value: string | undefined; - sx?: SxProps; }; export const copyToClipBoardClass = 'ctcb'; -export default function CopyAttribute({value, sx}: Props) { +export default function CopyAttribute({value}: Props) { return ( - - - {({copy}) => ( - e.stopPropagation()} - onClick={e => { - e.stopPropagation(); - if (value) { - copy(value); - } - }} - > - - - )} - - + + {({copy}) => ( + e.stopPropagation()} + onClick={e => { + e.stopPropagation(); + if (value) { + copy(value); + } + }} + > + + + )} + ); } diff --git a/databox/client/src/components/Media/Asset/Attribute/types/ColorType.tsx b/databox/client/src/components/Media/Asset/Attribute/types/ColorType.tsx index b1598a61a..4612e20cc 100644 --- a/databox/client/src/components/Media/Asset/Attribute/types/ColorType.tsx +++ b/databox/client/src/components/Media/Asset/Attribute/types/ColorType.tsx @@ -4,7 +4,7 @@ import { AvailableFormat, } from './types'; import TextType from './TextType'; -import {ColorBox, ColorPicker} from '@alchemy/react-form' +import {ColorBox, ColorPicker} from '@alchemy/react-form'; import {replaceHighlight} from '../Attributes'; import React from 'react'; diff --git a/databox/client/src/components/Media/Asset/Attribute/types/TextType.tsx b/databox/client/src/components/Media/Asset/Attribute/types/TextType.tsx index cfce66904..90328f91f 100644 --- a/databox/client/src/components/Media/Asset/Attribute/types/TextType.tsx +++ b/databox/client/src/components/Media/Asset/Attribute/types/TextType.tsx @@ -67,7 +67,6 @@ export default class TextType component={'ul'} sx={{ [`.${copyToClipBoardClass}`]: { - display: 'inline-block', visibility: 'hidden', ml: 2, }, diff --git a/databox/client/src/components/Media/Asset/Facets.tsx b/databox/client/src/components/Media/Asset/Facets.tsx index 0b5ed75e0..afde8cbfb 100644 --- a/databox/client/src/components/Media/Asset/Facets.tsx +++ b/databox/client/src/components/Media/Asset/Facets.tsx @@ -157,7 +157,7 @@ function FacetGroup({facet, name}: FacetGroupProps) { ); } -export default function Facets() { +function Facets() { const {facets} = useContext(ResultContext); if (!facets) { @@ -188,3 +188,5 @@ export default function Facets() { ); } + +export default React.memo(Facets); diff --git a/databox/client/src/components/Media/Asset/FilePlayer.tsx b/databox/client/src/components/Media/Asset/FilePlayer.tsx index 01372e22c..4c46a4ce6 100644 --- a/databox/client/src/components/Media/Asset/FilePlayer.tsx +++ b/databox/client/src/components/Media/Asset/FilePlayer.tsx @@ -9,22 +9,20 @@ type Props = { file: File; controls?: boolean | undefined; title: string | undefined; - minDimensions?: Dimensions; - maxDimensions: Dimensions; onLoad?: () => void; noInteraction?: boolean; autoPlayable: boolean; + dimensions?: Dimensions; }; export default function FilePlayer({ file, title, - minDimensions, - maxDimensions, onLoad, controls, noInteraction, autoPlayable, + dimensions, }: Props) { const mainType = getFileTypeFromMIMEType(file.type); @@ -37,8 +35,8 @@ export default function FilePlayer({ return ( diff --git a/databox/client/src/components/Media/Asset/Players/PDFPlayer.tsx b/databox/client/src/components/Media/Asset/Players/PDFPlayer.tsx index 4f9569d09..2953f264d 100644 --- a/databox/client/src/components/Media/Asset/Players/PDFPlayer.tsx +++ b/databox/client/src/components/Media/Asset/Players/PDFPlayer.tsx @@ -1,18 +1,23 @@ -import {useCallback, useState} from 'react'; -import {PlayerProps} from './index'; -import {Document, Page} from 'react-pdf'; -import {getMaxVideoDimensions} from './VideoPlayer'; +import {useCallback, useContext, useState} from 'react'; +import {createDimensions, PlayerProps} from './index'; +import {Document, Page, pdfjs} from 'react-pdf'; +import {getVideoDimensions} from './VideoPlayer'; +import {DisplayContext} from '../../DisplayContext'; +import 'react-pdf/dist/esm/Page/TextLayer.css'; +import 'react-pdf/dist/esm/Page/AnnotationLayer.css'; type Props = {} & PlayerProps; export default function PDFPlayer({ file, - minDimensions, - maxDimensions, + dimensions: forcedDimensions, onLoad, }: Props) { const [ratio, setRatio] = useState(); - const pdfDimensions = getMaxVideoDimensions(maxDimensions, ratio); + const displayContext = useContext(DisplayContext); + const dimensions = + forcedDimensions ?? createDimensions(displayContext!.thumbSize); + const pdfDimensions = getVideoDimensions(dimensions, ratio); const onDocLoad = useCallback( (pdf: any) => { pdf.getPage(1).then((page: any) => { @@ -27,10 +32,8 @@ export default function PDFPlayer({ return (
); } + +pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.js`; diff --git a/databox/client/src/components/Media/Asset/Players/VideoPlayer.tsx b/databox/client/src/components/Media/Asset/Players/VideoPlayer.tsx index 3964dbd7c..b183b77f0 100644 --- a/databox/client/src/components/Media/Asset/Players/VideoPlayer.tsx +++ b/databox/client/src/components/Media/Asset/Players/VideoPlayer.tsx @@ -1,6 +1,6 @@ import {MouseEvent, useContext, useState} from 'react'; -import {Dimensions, PlayerProps} from './index'; -import ReactPlayer from 'react-player'; +import {createDimensions, Dimensions, PlayerProps} from './index'; +import ReactPlayer from 'react-player/lazy'; import {Box, IconButton, LinearProgress} from '@mui/material'; import {DisplayContext} from '../../DisplayContext'; import PlayCircleIcon from '@mui/icons-material/PlayCircle'; @@ -15,24 +15,24 @@ type Progress = { const playerActionsClass = 'pa'; -export function getMaxVideoDimensions( - maxDimensions: Dimensions, +export function getVideoDimensions( + dimensions: Dimensions, ratio: number | undefined ): Dimensions { if (!ratio) { - return maxDimensions; + return dimensions; } - if (maxDimensions.width * ratio > maxDimensions.height) { + if (dimensions.width * ratio > dimensions.height) { return { - width: maxDimensions.height / ratio, - height: maxDimensions.height, + width: dimensions.height / ratio, + height: dimensions.height, }; } return { - width: maxDimensions.width, - height: maxDimensions.width * ratio, + width: dimensions.width, + height: dimensions.width * ratio, }; } @@ -49,12 +49,11 @@ type Props = { export default function VideoPlayer({ file, - minDimensions, - maxDimensions, onLoad, autoPlayable, noInteraction, controls, + dimensions: forcedDimensions, }: Props) { const [progress, setProgress] = useState(); const [duration, setDuration] = useState(); @@ -63,7 +62,9 @@ export default function VideoPlayer({ const [ratio, setRatio] = useState(); const type = getFileTypeFromMIMEType(file.type); const isAudio = type === FileTypeEnum.Audio; - const videoDimensions = getMaxVideoDimensions(maxDimensions, ratio); + const dimensions = + forcedDimensions ?? createDimensions(displayContext!.thumbSize); + const videoDimensions = getVideoDimensions(dimensions, ratio); const autoPlay = autoPlayable && displayContext?.playVideos; const onPlay = (e: MouseEvent) => { @@ -92,8 +93,8 @@ export default function VideoPlayer({ 'display': 'flex', 'justifyContent': 'center', 'alignItems': 'center', - 'minWidth': minDimensions?.width, - 'minHeight': minDimensions?.height, + 'minWidth': dimensions.width, + 'minHeight': dimensions.height, 'pointerEvents': hasControls ? 'auto' : undefined, [`.${playerActionsClass}`]: { 'pointerEvents': 'none', @@ -135,10 +136,7 @@ export default function VideoPlayer({ > void) | undefined; noInteraction?: boolean | undefined; }; diff --git a/databox/client/src/components/Media/Asset/Thumb.tsx b/databox/client/src/components/Media/Asset/Thumb.tsx index b34ba7c52..c2625cf8a 100644 --- a/databox/client/src/components/Media/Asset/Thumb.tsx +++ b/databox/client/src/components/Media/Asset/Thumb.tsx @@ -1,50 +1,59 @@ import {DOMAttributes, MouseEventHandler, PropsWithChildren} from 'react'; -import {Box} from '@mui/material'; +import {Box, SxProps} from '@mui/material'; import {alpha, Theme} from '@mui/material/styles'; +import assetClasses from '../../AssetList/classes'; +import {createThumbActiveStyle} from './AssetThumb'; + +export function createSizeTransition(theme: Theme) { + return theme.transitions.create(['height', 'width'], {duration: 300}); +} + +export const thumbSx = ( + thumbSize: number, + theme: Theme, + overridden: SxProps = {} +) => ({ + [`.${assetClasses.thumbWrapper}`]: { + 'display': 'flex', + 'overflow': 'hidden', + 'alignItems': 'center', + 'position': 'relative', + 'justifyContent': 'center', + 'backgroundColor': theme.palette.grey[100], + 'img': { + maxWidth: '100%', + maxHeight: '100%', + }, + 'width': thumbSize, + 'height': thumbSize, + 'transition': createSizeTransition(theme), + '> div': { + display: 'contents', + }, + ...createThumbActiveStyle(), + ...overridden, + }, +}); type Props = PropsWithChildren< { size: number; selected?: boolean; onMouseOver?: MouseEventHandler | undefined; - className?: string | undefined; } & DOMAttributes >; -export function createSizeTransition(theme: Theme) { - return theme.transitions.create(['height', 'width'], {duration: 300}); -} - -const assetSx = (thumbSize: number) => (theme: Theme) => ({ - display: 'flex', - overflow: 'hidden', - alignItems: 'center', - position: 'relative', - justifyContent: 'center', - backgroundColor: theme.palette.grey[100], - img: { - maxWidth: '100%', - maxHeight: '100%', - }, - width: thumbSize, - height: thumbSize, - transition: createSizeTransition(theme), -}); - export default function Thumb({ selected, children, - size, onMouseOver, onMouseLeave, - className, }: Props) { return ( - {selected && ( )} {children} - +
); } diff --git a/databox/client/src/components/Media/Asset/Widgets/AssetCollectionList.tsx b/databox/client/src/components/Media/Asset/Widgets/AssetCollectionList.tsx index 015de0788..b60855500 100644 --- a/databox/client/src/components/Media/Asset/Widgets/AssetCollectionList.tsx +++ b/databox/client/src/components/Media/Asset/Widgets/AssetCollectionList.tsx @@ -1,8 +1,8 @@ import {useContext} from 'react'; import {Collection, Workspace} from '../../../../types'; -import {Box} from '@mui/material'; import {DisplayContext} from '../../DisplayContext'; import {CollectionChip, WorkspaceChip} from '../../../Ui/Chips'; +import assetClasses from '../../../AssetList/classes'; type Props = { workspace?: Workspace; @@ -45,24 +45,28 @@ export default function AssetCollectionList({workspace, collections}: Props) { ].flat(); return ( - +
{workspace && ( )} {chips} - +
); } + +export function collectionListSx() { + return { + [`.${assetClasses.collectionList}`]: { + 'px': 1, + 'display': 'flex', + 'alignItems': 'center', + 'flexWrap': 'wrap', + '.MuiChip-root': { + my: 0.5, + }, + '.MuiChip-root+.MuiChip-root': { + ml: 0.5, + }, + }, + }; +} diff --git a/databox/client/src/components/Media/Asset/Widgets/AssetTagList.tsx b/databox/client/src/components/Media/Asset/Widgets/AssetTagList.tsx index 0ef5b56ed..15c80dc3e 100644 --- a/databox/client/src/components/Media/Asset/Widgets/AssetTagList.tsx +++ b/databox/client/src/components/Media/Asset/Widgets/AssetTagList.tsx @@ -1,8 +1,8 @@ import {useContext} from 'react'; import {Tag} from '../../../../types'; -import {Box} from '@mui/material'; import {DisplayContext} from '../../DisplayContext'; import TagNode, {tagClassName} from '../../../Ui/TagNode'; +import assetClasses from '../../../AssetList/classes'; type Props = { tags: Tag[]; @@ -16,7 +16,12 @@ export default function AssetTagList({tags}: Props) { } const r = (c: Tag) => ( - + ); const rest = tags.length - (tagsLimit - 1); @@ -44,19 +49,19 @@ export default function AssetTagList({tags}: Props) { ], ].flat(); - return ( - - {chips} - - ); + return
{chips}
; +} + +export function tagListSx() { + return { + [`.${assetClasses.tagList}`]: { + px: 1, + display: 'flex', + alignItems: 'center', + flexWrap: 'wrap', + [`.${tagClassName}+.${tagClassName}`]: { + ml: 0.5, + }, + }, + }; } diff --git a/databox/client/src/components/Media/AssetSelectionContext.tsx b/databox/client/src/components/Media/AssetSelectionContext.tsx deleted file mode 100644 index d4d0f6b25..000000000 --- a/databox/client/src/components/Media/AssetSelectionContext.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; - -export type TAssetSelectionContext = { - selectedAssets: string[]; - selectAssets: (ids: string[] | ((prev: string[]) => string[])) => void; -}; - -export const AssetSelectionContext = - React.createContext({ - selectedAssets: [], - selectAssets: () => {}, - }); diff --git a/databox/client/src/components/Media/AssetSelectionProvider.tsx b/databox/client/src/components/Media/AssetSelectionProvider.tsx index 0789db86f..d03426aaf 100644 --- a/databox/client/src/components/Media/AssetSelectionProvider.tsx +++ b/databox/client/src/components/Media/AssetSelectionProvider.tsx @@ -1,3 +1,4 @@ +// @ts-nocheck import { PropsWithChildren, useCallback, @@ -6,7 +7,7 @@ import { useRef, useState, } from 'react'; -import {AssetSelectionContext} from './AssetSelectionContext'; +import {AssetSelectionContext} from '../../context/AssetSelectionContext'; import {ResultContext} from './Search/ResultContext'; import {StateSetterArg} from '../../types/react'; @@ -50,8 +51,8 @@ export default function AssetSelectionProvider({ return ( {children} diff --git a/databox/client/src/components/Media/Collection/CollectionsTreeView.tsx b/databox/client/src/components/Media/Collection/CollectionsTreeView.tsx index d3f8d0159..6510a5541 100644 --- a/databox/client/src/components/Media/Collection/CollectionsTreeView.tsx +++ b/databox/client/src/components/Media/Collection/CollectionsTreeView.tsx @@ -7,7 +7,7 @@ import {getWorkspaces} from '../../../api/collection'; import { CollectionPager, useCollectionStore, -} from '../../../store/collectionStore.ts'; +} from '../../../store/collectionStore'; import { Box, CircularProgress, diff --git a/databox/client/src/components/Media/Collection/CreateCollection.tsx b/databox/client/src/components/Media/Collection/CreateCollection.tsx index 5ce358f20..b954fc374 100644 --- a/databox/client/src/components/Media/Collection/CreateCollection.tsx +++ b/databox/client/src/components/Media/Collection/CreateCollection.tsx @@ -9,7 +9,7 @@ import {CollectionChip, WorkspaceChip} from '../../Ui/Chips'; import {StackedModalProps, useModals} from '@alchemy/navigation'; import {OnCollectionEdit} from '../../Dialog/Collection/EditCollection'; import React from 'react'; -import {useDirtyFormPromptOutsideRouter} from '../../Dialog/Tabbed/FormTab.tsx'; +import {useDirtyFormPromptOutsideRouter} from '../../Dialog/Tabbed/FormTab'; type Props = { parent?: string; diff --git a/databox/client/src/components/Media/CollectionMenuItem.tsx b/databox/client/src/components/Media/CollectionMenuItem.tsx index 40f523503..d56cb346e 100644 --- a/databox/client/src/components/Media/CollectionMenuItem.tsx +++ b/databox/client/src/components/Media/CollectionMenuItem.tsx @@ -26,14 +26,14 @@ import ModalLink from '../Routing/ModalLink'; import ConfirmDialog from '../Ui/ConfirmDialog'; import {useModals} from '@alchemy/navigation'; import UploadModal from '../Upload/UploadModal'; -import {modalRoutes} from '../../routes.ts'; +import {modalRoutes} from '../../routes'; import {useAuth} from '@alchemy/react-auth'; import { CollectionPager, useCollectionStore, -} from '../../store/collectionStore.ts'; +} from '../../store/collectionStore'; import {deleteCollection} from '../../api/collection'; -import LoadMoreCollections from './Collection/LoadMoreCollections.tsx'; +import LoadMoreCollections from './Collection/LoadMoreCollections'; type Props = { level: number; diff --git a/databox/client/src/components/Media/CollectionsPanel.tsx b/databox/client/src/components/Media/CollectionsPanel.tsx index 5fa5566f3..fcb65bfbf 100644 --- a/databox/client/src/components/Media/CollectionsPanel.tsx +++ b/databox/client/src/components/Media/CollectionsPanel.tsx @@ -1,12 +1,12 @@ import React from 'react'; -import {useCollectionStore} from '../../store/collectionStore.ts'; -import WorkspaceMenuItem from './WorkspaceMenuItem.tsx'; -import {getWorkspaces} from '../../api/collection.ts'; -import {Workspace} from '../../types.ts'; +import {useCollectionStore} from '../../store/collectionStore'; +import WorkspaceMenuItem from './WorkspaceMenuItem'; +import {getWorkspaces} from '../../api/collection'; +import {Workspace} from '../../types'; type Props = {}; -export default function CollectionsPanel({}: Props) { +function CollectionsPanel({}: Props) { const [workspaces, setWorkspaces] = React.useState([]); const setRootCollections = useCollectionStore( @@ -28,3 +28,5 @@ export default function CollectionsPanel({}: Props) { ); } + +export default React.memo(CollectionsPanel); diff --git a/databox/client/src/components/Media/DisplayProvider.tsx b/databox/client/src/components/Media/DisplayProvider.tsx index 3562725c7..ca6ba9f6f 100644 --- a/databox/client/src/components/Media/DisplayProvider.tsx +++ b/databox/client/src/components/Media/DisplayProvider.tsx @@ -4,19 +4,60 @@ import {toast} from 'react-toastify'; import {useTranslation} from 'react-i18next'; -export default function DisplayProvider({children}: PropsWithChildren<{}>) { - const [thumbSize, setThumbSize] = useState(200); - const [displayTitle, setDisplayTitle] = useState(true); - const [displayTags, setDisplayTags] = useState(true); - const [displayPreview, setDisplayPreview] = useState(true); - const [titleRows, setTitleRows] = useState(1); - const [displayCollections, setDisplayCollections] = useState(true); - const [displayAttributes, setDisplayAttributes] = useState(true); - const [playVideos, setPlayVideos] = useState(false); - const [collectionsLimit, setCollectionsLimit] = useState(2); - const [tagsLimit, setTagsLimit] = useState(1); - const [playingContext, setPlayingContext] = useState(); - const [previewLocked, setPreviewLocked] = useState(false); +type Props = PropsWithChildren<{ + thumbSize?: number; + displayTitle?: boolean; + displayTags?: boolean; + displayPreview?: boolean; + titleRows?: number; + displayCollections?: boolean; + displayAttributes?: boolean; + playVideos?: boolean; + collectionsLimit?: number; + tagsLimit?: number; + playingContext?: PlayingContext; + previewLocked?: boolean; +}>; + +export default function DisplayProvider({ + children, + thumbSize: defaultThumbSize = 200, + displayTitle: defaultDisplayTitle = true, + displayTags: defaultDisplayTags = true, + displayPreview: defaultDisplayPreview = true, + titleRows: defaultTitleRows = 1, + displayCollections: defaultDisplayCollections = true, + displayAttributes: defaultDisplayAttributes = true, + playVideos: defaultPlayVideos = false, + collectionsLimit: defaultCollectionsLimit = 2, + tagsLimit: defaultTagsLimit = 1, + playingContext: defaultPlayingContext, + previewLocked: defaultPreviewLocked = false, +}: Props) { + const [thumbSize, setThumbSize] = useState(defaultThumbSize); + const [displayTitle, setDisplayTitle] = + useState(defaultDisplayTitle); + const [displayTags, setDisplayTags] = useState(defaultDisplayTags); + const [displayPreview, setDisplayPreview] = useState( + defaultDisplayPreview + ); + const [titleRows, setTitleRows] = useState(defaultTitleRows); + const [displayCollections, setDisplayCollections] = useState( + defaultDisplayCollections + ); + const [displayAttributes, setDisplayAttributes] = useState( + defaultDisplayAttributes + ); + const [playVideos, setPlayVideos] = useState(defaultPlayVideos); + const [collectionsLimit, setCollectionsLimit] = useState( + defaultCollectionsLimit + ); + const [tagsLimit, setTagsLimit] = useState(defaultTagsLimit); + const [playingContext, setPlayingContext] = useState< + PlayingContext | undefined + >(defaultPlayingContext); + const [previewLocked, setPreviewLocked] = + useState(defaultPreviewLocked); const {t} = useTranslation(); diff --git a/databox/client/src/components/Media/LeftPanel.tsx b/databox/client/src/components/Media/LeftPanel.tsx index b71a57b47..6ba8615b4 100644 --- a/databox/client/src/components/Media/LeftPanel.tsx +++ b/databox/client/src/components/Media/LeftPanel.tsx @@ -4,10 +4,13 @@ import CollectionsPanel from './CollectionsPanel'; import {Tab, Tabs} from '@mui/material'; import {styled} from '@mui/material/styles'; import {TabPanelProps} from '@mui/lab'; +import BasketsPanel from '../Basket/BasketsPanel'; +import {useAuth} from '@alchemy/react-auth'; enum TabEnum { facets = 'facets', tree = 'tree', + baskets = 'baskets', } function a11yProps(name: TabEnum) { @@ -61,6 +64,7 @@ const AntTab = styled(Tab)({ export default function LeftPanel() { const [t, setTab] = useState(TabEnum.tree); + const {isAuthenticated} = useAuth(); const handleChange = (_event: React.ChangeEvent<{}>, newValue: TabEnum) => { setTab(newValue); @@ -71,6 +75,9 @@ export default function LeftPanel() { + {isAuthenticated() ? ( + + ) : null} @@ -78,6 +85,11 @@ export default function LeftPanel() { + {isAuthenticated() ? ( + + + + ) : null} ); } diff --git a/databox/client/src/components/Media/Search/AssetResults.tsx b/databox/client/src/components/Media/Search/AssetResults.tsx deleted file mode 100644 index 509a5a1b2..000000000 --- a/databox/client/src/components/Media/Search/AssetResults.tsx +++ /dev/null @@ -1,353 +0,0 @@ -import React, { - CSSProperties, - MouseEvent, - MouseEventHandler, - useCallback, - useContext, - useEffect, - useRef, - useState, -} from 'react'; -import {AssetSelectionContext} from '../AssetSelectionContext'; -import {Box, Fab, LinearProgress, ListSubheader} from '@mui/material'; -import {ResultContext} from './ResultContext'; -import Pager, {LayoutEnum} from './Pager'; -import SearchBar from './SearchBar'; -import SelectionActions from './SelectionActions'; -import {Asset} from '../../../types'; -import {useTranslation} from 'react-i18next'; -import ArrowCircleDownIcon from '@mui/icons-material/ArrowCircleDown'; -import {LoadingButton} from '@mui/lab'; -import AssetContextMenu from '../Asset/AssetContextMenu'; -import {PopoverPosition} from '@mui/material/Popover/Popover'; -import { - OnOpen, - OnPreviewToggle, - OnSelectAsset, - OnUnselectAsset, -} from './Layout/Layout'; -import PreviewPopover from '../Asset/PreviewPopover'; -import {DisplayContext} from '../DisplayContext'; -import {zIndex} from '../../../themes/zIndex'; -import AddIcon from '@mui/icons-material/Add'; -import UploadModal from '../../Upload/UploadModal'; -import {useModals} from '@alchemy/navigation'; -import {useNavigateToModal} from '../../Routing/ModalLink'; -import {modalRoutes} from '../../../routes.ts'; -import {useAuth} from '@alchemy/react-auth'; - -const gridStyle: CSSProperties = { - width: '100%', - height: '100%', - overflow: 'auto', -}; - -const linearProgressStyle: CSSProperties = { - position: 'absolute', - left: '0', - right: '0', - top: '0', -}; - -const previewEnterDelay = 500; -const previewLeaveDelay = 400; - -export const searchMenuId = 'search-menu'; - -export function getAssetListFromEvent( - currentSelection: string[], - id: string, - pages: Asset[][], - e?: React.MouseEvent -): string[] { - if (e?.ctrlKey) { - return currentSelection.includes(id) - ? currentSelection.filter(a => a !== id) - : currentSelection.concat([id]); - } - if (e?.shiftKey && currentSelection.length > 0) { - let boundaries: [ - [number, number] | undefined, - [number, number] | undefined - ] = [undefined, undefined]; - - for (let i = 0; i < pages.length; ++i) { - const assets = pages[i]; - for (let j = 0; j < assets.length; ++j) { - const a = assets[j]; - if (currentSelection.includes(a.id) || id === a.id) { - boundaries = [boundaries[0] ?? [i, j], [i, j]]; - } - } - } - - const selection = []; - for (let i = boundaries[0]![0]; i <= boundaries[1]![0]; ++i) { - const start = i === boundaries[0]![0] ? boundaries[0]![1] : 0; - const end = - i === boundaries[1]![0] - ? boundaries[1]![1] - : pages[i].length - 1; - for (let j = start; j <= end; ++j) { - selection.push(pages[i][j].id); - } - } - - return selection; - } - - return [id]; -} - -export default function AssetResults() { - const assetSelection = useContext(AssetSelectionContext); - const resultContext = useContext(ResultContext); - const authContext = useAuth(); - const navigateToModal = useNavigateToModal(); - const {loading, pages, loadMore} = resultContext; - const {previewLocked, displayPreview} = useContext(DisplayContext)!; - const [anchorElMenu, setAnchorElMenu] = React.useState(null); - const [previewAnchorEl, setPreviewAnchorEl] = React.useState(null); - const {t} = useTranslation(); - const [layout, setLayout] = useState(LayoutEnum.Grid); - const timer = useRef>(); - const {openModal} = useModals(); - - useEffect(() => { - // Force preview close on result change - setPreviewAnchorEl(null); - - const handler = (e: KeyboardEvent) => { - if (e.ctrlKey && e.key === 'a') { - const activeElement = document.activeElement; - if ( - activeElement && - ['input', 'select', 'button', 'textarea'].includes( - activeElement.tagName.toLowerCase() - ) - ) { - return; - } - - e.preventDefault(); - e.stopPropagation(); - assetSelection.selectAssets( - resultContext.pages.map(p => p.map(a => a.id)).flat() - ); - } - }; - window.addEventListener('keydown', handler); - - return () => { - window.removeEventListener('keydown', handler); - }; - }, [resultContext.pages]); - - const onSelect = useCallback( - (id, e): void => { - e?.preventDefault(); - assetSelection.selectAssets(prev => { - return getAssetListFromEvent(prev, id, resultContext.pages, e); - }); - // eslint-disable-next-line - }, - [pages] - ); - - const openUpload = useCallback< - MouseEventHandler - >((): void => { - openModal(UploadModal, { - files: [], - userId: authContext.user!.id, - }); - }, [authContext]); - - const onOpen = useCallback( - (assetId: string, renditionId: string): void => { - navigateToModal(modalRoutes.assets.routes.view, { - id: assetId, - renditionId, - }); - // eslint-disable-next-line - }, - [navigateToModal] - ); - - const onUnselect = useCallback( - (id, e): void => { - e?.preventDefault(); - assetSelection.selectAssets(p => p.filter(i => i !== id)); - // eslint-disable-next-line - }, - [pages] - ); - - const onPreviewToggle = useCallback( - (asset, display, anchorEl): void => { - if (!asset.preview?.file || !displayPreview) { - return; - } - if (timer.current) { - clearTimeout(timer.current); - } - if (!display) { - if (!previewLocked) { - timer.current = setTimeout(() => { - setPreviewAnchorEl(null); - }, previewLeaveDelay); - } - return; - } - - setPreviewAnchorEl(p => { - const deferred = !p || previewLocked; - - if (!deferred) { - return { - asset, - anchorEl, - }; - } - - timer.current = setTimeout(() => { - setPreviewAnchorEl({ - asset, - anchorEl, - }); - }, previewEnterDelay); - - return p; - }); - // eslint-disable-next-line - }, - [setPreviewAnchorEl, previewLocked, displayPreview] - ); - - const onContextMenuOpen = useCallback( - (e: MouseEvent, asset: Asset, anchorEl?: HTMLElement) => { - e.preventDefault(); - e.stopPropagation(); - setAnchorElMenu(p => { - if (p && p.anchorEl === anchorEl) { - return null; - } - - return { - asset, - pos: { - left: e.clientX + 2, - top: e.clientY, - }, - anchorEl, - }; - }); - }, - [setAnchorElMenu] - ); - - const onMenuClose = () => { - setAnchorElMenu(null); - }; - - return ( -
-
- {loading && ( -
- -
- )} -
- ({ - zIndex: zIndex.toolbar, - })} - > - - - - -
- {loadMore ? ( - - } - onClick={loadMore} - variant="contained" - color="secondary" - > - {loading - ? t('load_more.button.loading', 'Loading...') - : t('load_more.button.loading', 'Load more')} - - - ) : ( - '' - )} - {anchorElMenu && ( - - )} - - {authContext.user && ( - ({ - position: 'absolute', - bottom: theme.spacing(2), - right: theme.spacing(2), - })} - > - - - )} -
-
- ); -} diff --git a/databox/client/src/components/Media/Search/AutoComplete.tsx b/databox/client/src/components/Media/Search/AutoComplete.tsx index 003d688e3..5fe4509e4 100644 --- a/databox/client/src/components/Media/Search/AutoComplete.tsx +++ b/databox/client/src/components/Media/Search/AutoComplete.tsx @@ -7,8 +7,8 @@ import { import React, {ReactNode} from 'react'; import {Paper} from '@mui/material'; import '@algolia/autocomplete-theme-classic'; -import {replaceHighlight} from '../Asset/Attribute/Attributes.tsx'; -import {SearchSuggestion} from '../../../api/asset.ts'; +import {replaceHighlight} from '../Asset/Attribute/Attributes'; +import {SearchSuggestion} from '../../../api/asset'; import Box from '@mui/material/Box'; type Props = { diff --git a/databox/client/src/components/Media/Search/DebugEsModal.tsx b/databox/client/src/components/Media/Search/DebugEsModal.tsx index 9ce87c696..c3cece553 100644 --- a/databox/client/src/components/Media/Search/DebugEsModal.tsx +++ b/databox/client/src/components/Media/Search/DebugEsModal.tsx @@ -3,7 +3,7 @@ import {Box, Button, Chip} from '@mui/material'; import {AppDialog} from '@alchemy/phrasea-ui'; import {useTranslation} from 'react-i18next'; import {StackedModalProps, useModals} from '@alchemy/navigation'; -import CopyToClipboard from '../../../lib/CopyToClipboard.tsx'; +import CopyToClipboard from '../../../lib/CopyToClipboard'; import ContentCopyIcon from '@mui/icons-material/ContentCopy'; import CloseIcon from '@mui/icons-material/Close'; diff --git a/databox/client/src/components/Media/Search/Layout/GridLayout.tsx b/databox/client/src/components/Media/Search/Layout/GridLayout.tsx deleted file mode 100644 index 2a54f4434..000000000 --- a/databox/client/src/components/Media/Search/Layout/GridLayout.tsx +++ /dev/null @@ -1,289 +0,0 @@ -import React, {MouseEvent, useContext} from 'react'; -import {alpha, Checkbox, Grid, IconButton, useTheme} from '@mui/material'; -import { - LayoutProps, - OnPreviewToggle, - OnSelectAsset, - OnUnselectAsset, - TOnContextMenuOpen, -} from './Layout'; -import AssetThumb, {createThumbActiveStyle} from '../../Asset/AssetThumb'; -import {Asset} from '../../../../types'; -import {DisplayContext} from '../../DisplayContext'; -import {createSizeTransition} from '../../Asset/Thumb'; -import SettingsIcon from '@mui/icons-material/Settings'; -import assetClasses from './classes'; -import {stopPropagation} from '../../../../lib/stdFuncs'; -import AssetCollectionList from '../../Asset/Widgets/AssetCollectionList'; -import AssetTagList from '../../Asset/Widgets/AssetTagList'; -import {PrivacyTooltip} from '../../../Ui/PrivacyChip'; -import {replaceHighlight} from '../../Asset/Attribute/Attributes'; -import {hasContextMenu} from '../../Asset/AssetContextMenu'; -import GroupRow from './GroupRow'; -import {sectionDividerClassname} from './SectionDivider'; - -const lineHeight = 26; -const collLineHeight = 32; -const tagLineHeight = 32; - -const AssetItem = React.memo( - ({ - asset, - selected, - onSelect, - onUnselect, - onContextMenuOpen, - thumbSize, - onPreviewToggle, - }: { - asset: Asset; - onSelect: OnSelectAsset; - onUnselect: OnUnselectAsset; - onPreviewToggle?: OnPreviewToggle; - selected: boolean; - onContextMenuOpen?: TOnContextMenuOpen; - thumbSize: number; - }) => { - return ( -
onSelect(asset.id, e)} - className={`${assetClasses.item} ${selected ? 'selected' : ''}`} - > -
- - (e.target.checked ? onSelect : onUnselect)( - asset.id, - { - ctrlKey: true, - preventDefault() {}, - } as MouseEvent - ) - } - /> - - {onContextMenuOpen && ( - - - - )} -
- - onPreviewToggle( - asset, - true, - e.currentTarget as HTMLElement - ) - : undefined - } - onMouseLeave={ - onPreviewToggle - ? e => - onPreviewToggle( - asset, - false, - e.currentTarget as HTMLElement - ) - : undefined - } - thumbSize={thumbSize} - selected={selected} - /> -
-
- {asset.titleHighlight - ? replaceHighlight(asset.titleHighlight) - : asset.resolvedTitle ?? asset.title} -
- {asset.tags.length > 0 && ( -
- -
- )} - {asset.collections.length > 0 && ( -
- -
- )} -
-
- ); - } -); - -export default function GridLayout({ - searchMenuHeight, - assets, - selectedAssets, - onSelect, - onUnselect, - onPreviewToggle, - onContextMenuOpen, - onOpen, -}: LayoutProps) { - const theme = useTheme(); - const d = useContext(DisplayContext)!; - const spacing = Number(theme.spacing(1).slice(0, -2)); - - const titleHeight = d.displayTitle - ? spacing * 1.8 + lineHeight * d.titleRows - : 0; - let totalHeight = d.thumbSize + titleHeight; - if (d.displayCollections) { - totalHeight += collLineHeight * d.collectionsLimit; - } - if (d.displayTags) { - totalHeight += tagLineHeight * d.tagsLimit; - } - - return ( - ({ - p: 2, - [`.${sectionDividerClassname}`]: { - margin: `0 -${theme.spacing(1)}`, - width: `calc(100% + ${theme.spacing(2)})`, - }, - [`.${assetClasses.item}`]: { - 'width': d.thumbSize, - 'height': totalHeight, - 'transition': createSizeTransition(theme), - 'position': 'relative', - [`.${assetClasses.controls}`]: { - position: 'absolute', - transform: `translateY(-10px)`, - zIndex: 2, - opacity: 0, - left: 0, - top: 0, - right: 0, - padding: '1px', - transition: theme.transitions.create( - ['opacity', 'transform'], - {duration: 300} - ), - background: - 'linear-gradient(to bottom, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0.5) 50%, rgba(255,255,255,0) 100%)', - }, - [`.${assetClasses.settingBtn}`]: { - position: 'absolute', - right: 1, - top: 1, - }, - ...createThumbActiveStyle(), - '&:hover, &.selected': { - [`.${assetClasses.controls}`]: { - opacity: 1, - transform: `translateY(0)`, - }, - }, - '&.selected': { - backgroundColor: alpha(theme.palette.primary.main, 0.8), - boxShadow: theme.shadows[2], - [`.${assetClasses.legend}`]: { - color: theme.palette.primary.contrastText, - }, - }, - }, - [`.${assetClasses.thumbActive}`]: { - display: 'none', - }, - [`.${assetClasses.title}`]: { - fontSize: 14, - p: 1, - height: titleHeight, - lineHeight: `${lineHeight}px`, - overflow: 'hidden', - textOverflow: 'ellipsis', - ...(d.titleRows > 1 - ? { - 'display': d.displayTitle - ? '-webkit-box' - : 'none', - '-webkit-line-clamp': `${d.titleRows}`, - '-webkit-box-orient': 'vertical', - } - : { - display: d.displayTitle ? 'block' : 'none', - whiteSpace: 'nowrap', - }), - }, - })} - > - {assets.map(a => { - const contextMenu = onContextMenuOpen && hasContextMenu(a); - - return ( - - onOpen(a.id, a.original!.id) - : undefined - } - onContextMenu={ - onContextMenuOpen - ? e => { - if (!contextMenu) { - e.preventDefault(); - return; - } - onContextMenuOpen!(e, a); - } - : undefined - } - > - - - - ); - })} - - ); -} diff --git a/databox/client/src/components/Media/Search/Layout/GroupValue/types.tsx b/databox/client/src/components/Media/Search/Layout/GroupValue/types.tsx deleted file mode 100644 index 090d8e010..000000000 --- a/databox/client/src/components/Media/Search/Layout/GroupValue/types.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import {Collection, Tag} from '../../../../../types'; -import TagNode from '../../../../Ui/TagNode'; - -import {CollectionChip} from '../../../../Ui/Chips'; -import React from 'react'; - -export const groupValueTypes: Record React.ReactNode> = - { - t: (value: Tag) => , - c: (value: Collection) => , - }; diff --git a/databox/client/src/components/Media/Search/Layout/Layout.ts b/databox/client/src/components/Media/Search/Layout/Layout.ts deleted file mode 100644 index 974928069..000000000 --- a/databox/client/src/components/Media/Search/Layout/Layout.ts +++ /dev/null @@ -1,30 +0,0 @@ -import {Asset} from '../../../../types'; -import {MouseEvent} from 'react'; - -export type OnSelectAsset = (id: string, e?: MouseEvent) => void; -export type OnOpen = (assetId: string, renditionId: string) => void; -export type OnUnselectAsset = (id: string, e?: MouseEvent) => void; -export type OnPreviewToggle = ( - asset: Asset, - display: boolean, - anchorEl: HTMLElement -) => void; -export type SelectedAssets = string[]; - -export type TOnContextMenuOpen = ( - e: MouseEvent, - asset: Asset, - anchorEl?: HTMLElement -) => void; - -export type LayoutProps = { - page: number; - searchMenuHeight: number; - assets: Asset[]; - onSelect: OnSelectAsset; - onOpen?: OnOpen; - onUnselect: OnUnselectAsset; - onPreviewToggle?: OnPreviewToggle; - selectedAssets: SelectedAssets; - onContextMenuOpen?: TOnContextMenuOpen; -}; diff --git a/databox/client/src/components/Media/Search/Layout/ListLayout.tsx b/databox/client/src/components/Media/Search/Layout/ListLayout.tsx deleted file mode 100644 index aca37127b..000000000 --- a/databox/client/src/components/Media/Search/Layout/ListLayout.tsx +++ /dev/null @@ -1,228 +0,0 @@ -import React, {MouseEvent, useContext} from 'react'; -import { - LayoutProps, - OnPreviewToggle, - OnSelectAsset, - OnUnselectAsset, - TOnContextMenuOpen, -} from './Layout'; -import {Box, Checkbox, Grid, IconButton} from '@mui/material'; -import AssetThumb, {createThumbActiveStyle} from '../../Asset/AssetThumb'; -import {DisplayContext} from '../../DisplayContext'; -import {Asset} from '../../../../types'; -import SettingsIcon from '@mui/icons-material/Settings'; -import Attributes, {replaceHighlight} from '../../Asset/Attribute/Attributes'; -import assetClasses from './classes'; -import AssetTagList from '../../Asset/Widgets/AssetTagList'; -import AssetCollectionList from '../../Asset/Widgets/AssetCollectionList'; -import {stopPropagation} from '../../../../lib/stdFuncs'; -import PrivacyChip from '../../../Ui/PrivacyChip'; -import {hasContextMenu} from '../../Asset/AssetContextMenu'; -import GroupRow from './GroupRow'; - -const AssetItem = React.memo( - ({ - asset, - selected, - onSelect, - onUnselect, - onContextMenuOpen, - thumbSize, - displayAttributes, - onPreviewToggle, - }: { - asset: Asset; - onSelect: OnSelectAsset; - onUnselect: OnUnselectAsset; - displayAttributes: boolean; - selected: boolean; - onContextMenuOpen?: TOnContextMenuOpen; - thumbSize: number; - onPreviewToggle?: OnPreviewToggle; - }) => { - return ( -
onSelect(asset.id, e)} - className={`${assetClasses.item} ${selected ? 'selected' : ''}`} - > - - (e.target.checked ? onSelect : onUnselect)(asset.id, { - ctrlKey: true, - preventDefault() {}, - } as MouseEvent) - } - /> - - - {onContextMenuOpen && ( - onContextMenuOpen(e, asset)} - color={'inherit'} - > - - - )} - - onPreviewToggle( - asset, - true, - e.currentTarget as HTMLElement - ) - : undefined - } - onMouseLeave={ - onPreviewToggle - ? e => - onPreviewToggle( - asset, - false, - e.currentTarget as HTMLElement - ) - : undefined - } - asset={asset} - thumbSize={thumbSize} - selected={selected} - /> - - -
- {asset.titleHighlight - ? replaceHighlight(asset.titleHighlight) - : asset.resolvedTitle ?? asset.title} -
- {asset.tags.length > 0 && ( -
- -
- )} - -
- -
- {displayAttributes && ( - - )} -
-
-
- ); - } -); - -export default function ListLayout({ - assets, - onSelect, - onUnselect, - onContextMenuOpen, - selectedAssets, - onPreviewToggle, - onOpen, - searchMenuHeight, -}: LayoutProps) { - const {thumbSize, displayAttributes} = useContext(DisplayContext)!; - - return ( - ({ - [`.${assetClasses.item}`]: { - 'p': 2, - 'position': 'relative', - [`.${assetClasses.checkBtb}, .${assetClasses.settingBtn}`]: - { - position: 'absolute', - zIndex: 2, - opacity: 0, - transform: `translateY(-10px)`, - transition: theme.transitions.create( - ['opacity', 'transform'], - {duration: 300} - ), - }, - [`.${assetClasses.checkBtb}`]: { - transform: `translateX(-10px)`, - left: 15, - top: 15, - }, - [`.${assetClasses.settingBtn}`]: { - position: 'absolute', - right: 1, - top: 1, - }, - '&:hover, &.selected': { - [`.${assetClasses.checkBtb}, .${assetClasses.settingBtn}`]: - { - opacity: 1, - transform: `translateY(0)`, - }, - }, - '&.selected': { - boxShadow: theme.shadows[2], - }, - [`.${assetClasses.thumbWrapper}`]: createThumbActiveStyle(), - }, - })} - > - {assets.map(a => { - const contextMenu = onContextMenuOpen && hasContextMenu(a); - - return ( - -
onOpen(a.id, a.original!.id) - : undefined - } - onContextMenu={ - onContextMenuOpen - ? e => { - if (!contextMenu) { - e.preventDefault(); - return; - } - onContextMenuOpen!(e, a); - } - : undefined - } - > - -
-
- ); - })} -
- ); -} diff --git a/databox/client/src/components/Media/Search/Layout/classes.ts b/databox/client/src/components/Media/Search/Layout/classes.ts deleted file mode 100644 index 5b9a58896..000000000 --- a/databox/client/src/components/Media/Search/Layout/classes.ts +++ /dev/null @@ -1,14 +0,0 @@ -const assetClasses = { - item: 'i', - controls: 'actrl', - checkBtb: 'ac', - settingBtn: 'as', - title: 't', - legend: 'l', - attributes: 'aa', - thumbActive: 'tha', - thumbInactive: 'thia', - thumbWrapper: 'tw', -}; - -export default assetClasses; diff --git a/databox/client/src/components/Media/Search/Pager.tsx b/databox/client/src/components/Media/Search/Pager.tsx deleted file mode 100644 index 225ccdf66..000000000 --- a/databox/client/src/components/Media/Search/Pager.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import GridLayout from './Layout/GridLayout'; -import ListLayout from './Layout/ListLayout'; -import React, {useEffect} from 'react'; -import {Asset} from '../../../types'; -import {Box} from '@mui/material'; -import { - OnOpen, - OnPreviewToggle, - OnSelectAsset, - OnUnselectAsset, - TOnContextMenuOpen, -} from './Layout/Layout'; -import SectionDivider from './Layout/SectionDivider'; -import {searchMenuId} from './AssetResults'; - -export enum LayoutEnum { - Grid = 'grid', - List = 'list', -} - -type Props = { - pages: Asset[][]; - layout: LayoutEnum; - selectedAssets: string[]; - onOpen?: OnOpen; - onSelect: OnSelectAsset; - onUnselect: OnUnselectAsset; - onPreviewToggle?: OnPreviewToggle; - onContextMenuOpen?: TOnContextMenuOpen; -}; - -export default React.memo(function Pager({ - pages, - layout, - selectedAssets, - onSelect, - onUnselect, - onOpen, - onContextMenuOpen, - onPreviewToggle, -}: Props) { - const [searchMenuHeight, setSearchMenuHeight] = React.useState( - document.getElementById(searchMenuId)?.offsetHeight ?? 0 - ); - - useEffect(() => { - const resizeObserver = new ResizeObserver(entries => { - setSearchMenuHeight(entries[0].target.clientHeight); - }); - - resizeObserver.observe(document.getElementById(searchMenuId)!); - - return () => { - resizeObserver.disconnect(); - }; - }, []); - - return ( - - {pages.map((assets, i) => { - return ( - - {i > 0 && ( - ({ - fontWeight: 700, - fontSize: 15, - })} - > - # {i + 1} - - )} - {React.createElement( - layout === LayoutEnum.Grid - ? GridLayout - : ListLayout, - { - assets, - onSelect, - onUnselect, - onOpen, - selectedAssets, - onContextMenuOpen, - onPreviewToggle, - searchMenuHeight, - page: i + 1, - } - )} - - ); - })} - - ); -}); diff --git a/databox/client/src/components/Media/Search/ResultContext.tsx b/databox/client/src/components/Media/Search/ResultContext.tsx index a98847bf9..aa71e7b2d 100644 --- a/databox/client/src/components/Media/Search/ResultContext.tsx +++ b/databox/client/src/components/Media/Search/ResultContext.tsx @@ -2,6 +2,7 @@ import {Asset} from '../../../types'; import {TFacets} from '../Asset/Facets'; import {ESDebug} from '../../../api/asset'; import React from 'react'; +import {ReloadFunc} from '../../AssetList/types'; export type TResultContext = { loading: boolean; @@ -9,12 +10,12 @@ export type TResultContext = { total?: number; facets?: TFacets; debug?: ESDebug; - loadMore?: () => Promise | undefined; - reload: () => void; + loadMore?: (() => Promise) | undefined; + reload: ReloadFunc; }; export const ResultContext = React.createContext({ pages: [], loading: false, - reload: () => {}, + reload: async () => {}, }); diff --git a/databox/client/src/components/Media/Search/ResultProvider.tsx b/databox/client/src/components/Media/Search/ResultProvider.tsx index 94881e5c8..ad9fd4d13 100644 --- a/databox/client/src/components/Media/Search/ResultProvider.tsx +++ b/databox/client/src/components/Media/Search/ResultProvider.tsx @@ -102,35 +102,36 @@ export default function ResultProvider({children}: Props) { const doSearch = async (nextUrl?: string) => { setLoading(true); - search( - searchContext.query, - getResolvedSortBy(searchContext.sortBy), - nextUrl, - searchContext.attrFilters, - { - position: searchContext.geolocation, - } - ) - .then(r => { - setState(prevState => { - return { - pages: nextUrl - ? prevState.pages.concat([r.result]) - : [r.result], - next: r.next, - total: r.total, - loading: false, - facets: r.facets, - debug: r.debug, - }; - }); - }) - .catch(e => { - if (!(e instanceof axios.Cancel)) { - console.error(e); - setLoading(false); + try { + const r = await search( + searchContext.query, + getResolvedSortBy(searchContext.sortBy), + nextUrl, + searchContext.attrFilters, + { + position: searchContext.geolocation, } + ); + + setState(prevState => { + return { + pages: nextUrl + ? prevState.pages.concat([r.result]) + : [r.result], + next: r.next, + total: r.total, + loading: false, + facets: r.facets, + debug: r.debug, + }; }); + } catch (e: any) { + if (!(e instanceof axios.Cancel)) { + throw e; + } + } finally { + setLoading(false); + } }; useEffect(() => { diff --git a/databox/client/src/components/Media/Search/SearchBar.tsx b/databox/client/src/components/Media/Search/SearchBar.tsx index 834177d19..c9bde7e60 100644 --- a/databox/client/src/components/Media/Search/SearchBar.tsx +++ b/databox/client/src/components/Media/Search/SearchBar.tsx @@ -16,8 +16,8 @@ import {ResultContext} from './ResultContext'; import SortBy from './Sorting/SortBy'; import {zIndex} from '../../../themes/zIndex'; import GeoPointFilter from './GeoPointFilter'; -import AutoComplete from './AutoComplete.tsx'; -import {getSearchSuggestions, SearchSuggestion} from '../../../api/asset.ts'; +import AutoComplete from './AutoComplete'; +import {getSearchSuggestions, SearchSuggestion} from '../../../api/asset'; import {GetSources} from '@algolia/autocomplete-core'; type Props = {}; diff --git a/databox/client/src/components/Media/Search/SelectionActions.tsx b/databox/client/src/components/Media/Search/SelectionActions.tsx deleted file mode 100644 index 3ac206565..000000000 --- a/databox/client/src/components/Media/Search/SelectionActions.tsx +++ /dev/null @@ -1,433 +0,0 @@ -import {useCallback, useContext, useMemo} from 'react'; -import { - Badge, - Box, - Button, - Checkbox, - Divider, - Paper, - ToggleButtonGroup, - Tooltip, -} from '@mui/material'; -import {useTranslation} from 'react-i18next'; -import {LayoutEnum} from './Pager'; -import GridViewIcon from '@mui/icons-material/GridView'; -import ViewListIcon from '@mui/icons-material/ViewList'; -import DeleteIcon from '@mui/icons-material/Delete'; -import FileDownloadIcon from '@mui/icons-material/FileDownload'; -import ShareIcon from '@mui/icons-material/Share'; -import TooltipToggleButton from '../../Ui/TooltipToggleButton'; -import { - AssetSelectionContext, - TAssetSelectionContext, -} from '../AssetSelectionContext'; -import {ResultContext, TResultContext} from './ResultContext'; -import DebugEsModal from './DebugEsModal'; -import {styled} from '@mui/material/styles'; -import DeleteAssetsConfirm from '../Asset/Actions/DeleteAssetsConfirm'; -import DisplayOptionsMenu from './DisplayOptionsMenu'; -import {Asset} from '../../../types'; -import {LoadingButton} from '@mui/lab'; -import ExportAssetsDialog from '../Asset/Actions/ExportAssetsDialog'; -import GroupButton from '../../Ui/GroupButton'; -import DriveFileMoveIcon from '@mui/icons-material/DriveFileMove'; -import EditIcon from '@mui/icons-material/Edit'; -import FileCopyIcon from '@mui/icons-material/FileCopy'; -import MoveAssetsDialog from '../Asset/Actions/MoveAssetsDialog'; -import CopyAssetsDialog from '../Asset/Actions/CopyAssetsDialog'; -import TextSnippetIcon from '@mui/icons-material/TextSnippet'; -import {useModals} from '@alchemy/navigation'; -import {useNavigateToModal} from '../../Routing/ModalLink'; -import {modalRoutes} from '../../../routes.ts'; - -const StyledToggleButtonGroup = styled(ToggleButtonGroup)(({theme}) => ({ - '& .MuiToggleButtonGroup-grouped': { - 'border': 0, - 'margin': theme.spacing(0.5), - '&.Mui-disabled': { - border: 0, - }, - '&:not(:first-of-type)': { - borderRadius: theme.shape.borderRadius, - }, - '&:first-of-type': { - borderRadius: theme.shape.borderRadius, - }, - }, -})); - -type Props = { - layout: LayoutEnum; - onLayoutChange: (l: LayoutEnum) => void; -}; - -function getSelectedAssets( - selectionContext: TAssetSelectionContext, - resultContext: TResultContext -): Asset[] { - return selectionContext.selectedAssets.map(id => - getAsset(resultContext.pages, id) - ); -} - -function getAsset(pages: Asset[][], id: string): Asset { - for (let i = 0; i < pages.length; i++) { - const p = pages[i]; - const a = p.find(a => a.id === id); - if (a) { - return a; - } - } - - throw new Error(`Undefined asset ${id}`); -} - -export default function SelectionActions({layout, onLayoutChange}: Props) { - const {t} = useTranslation(); - const navigateToModal = useNavigateToModal(); - const {openModal} = useModals(); - const selectionContext = useContext(AssetSelectionContext); - const resultContext = useContext(ResultContext); - - const selectionLength = selectionContext.selectedAssets.length; - const hasSelection = selectionLength > 0; - const allSelected = - hasSelection && - selectionLength === - resultContext.pages.reduce( - (currentCount, row) => currentCount + row.length, - 0 - ); - - const toggleSelectAll = useCallback(() => { - selectionContext.selectAssets( - hasSelection - ? [] - : resultContext.pages.map(p => p.map(a => a.id)).flat() - ); - }, [resultContext.pages, selectionContext.selectedAssets, hasSelection]); - - const openDebug = resultContext.debug - ? () => { - openModal(DebugEsModal, { - debug: resultContext.debug!, - }); - } - : undefined; - - const onDelete = () => { - openModal(DeleteAssetsConfirm, { - assetIds: selectionContext.selectedAssets, - onDelete: () => { - resultContext.reload(); - }, - }); - }; - - const { - canDelete, - canDownload, - canEdit, - canEditAttributes, - canMove, - canShare, - onCopy, - wsId, - } = useMemo(() => { - let canDelete = false; - let canDownload = false; - let canEdit = false; - let canEditAttributes = false; - let canMove = false; - let canShare = false; - let wsId: string | undefined = undefined; - - const selectedAssets = getSelectedAssets( - selectionContext, - resultContext - ); - - selectedAssets.forEach(a => { - wsId = a.workspace.id; - if (a.original?.file?.url) { - canDownload = true; - } - if (a.capabilities.canDelete) { - canDelete = true; - } - if (a.capabilities.canEdit) { - canEdit = true; - canMove = true; - } - if (a.capabilities.canEditAttributes) { - canEditAttributes = true; - } - if (a.capabilities.canShare) { - canShare = true; - } - if (a.capabilities.canShare) { - canShare = true; - } - }); - - for (const a of selectedAssets) { - if (a.workspace.id !== wsId!) { - canEditAttributes = canMove = false; - break; - } - } - - return { - canDelete, - canDownload, - canEdit, - canEditAttributes, - canMove, - canShare, - onCopy: () => { - openModal(CopyAssetsDialog, { - assets: selectedAssets, - onComplete: () => { - resultContext.reload(); - }, - }); - }, - wsId, - }; - }, [selectionContext.selectedAssets]); - - const onMove = () => { - openModal(MoveAssetsDialog, { - assetIds: selectionContext.selectedAssets, - workspaceId: wsId!, - onComplete: () => { - resultContext.reload(); - }, - }); - }; - - const onEdit = () => { - if (selectionContext.selectedAssets.length === 1) { - navigateToModal(modalRoutes.assets.routes.manage, { - tab: 'edit', - id: selectionContext.selectedAssets[0], - }); - } else { - alert('Multi edit is comin soon...'); - } - }; - - const onEditAttributes = () => { - const assets = getSelectedAssets(selectionContext, resultContext); - if (assets.length === 1) { - navigateToModal(modalRoutes.assets.routes.manage, { - tab: 'attributes', - id: selectionContext.selectedAssets[0], - }); - } else { - alert('Multi edit attributes is comin soon...'); - } - }; - - const download = canDownload - ? () => { - openModal(ExportAssetsDialog, { - assets: getSelectedAssets(selectionContext, resultContext), - }); - } - : undefined; - - const selectAllDisabled = (resultContext.total ?? 0) === 0; - - return ( - ({ - [theme.breakpoints.up('md')]: { - display: 'flex', - justifyContent: 'space-between', - alignItems: 'center', - }, - })} - > - ({ - '> .MuiButtonBase-root, > .MuiButtonGroup-root, > span': { - m: 1, - }, - [theme.breakpoints.down('md')]: { - '.MuiButton-startIcon': { - display: 'none', - }, - }, - })} - > - - - - - - } - > - {t('asset_actions.export', 'Export')} - - } - disabled={!canEdit} - actions={[ - { - id: 'move', - label: t('asset_actions.move', 'Move'), - onClick: onMove, - disabled: !canMove, - startIcon: , - }, - { - id: 'edit_attrs', - label: t( - 'asset_actions.edit_attributes', - 'Edit attributes' - ), - onClick: onEditAttributes, - disabled: !canEditAttributes, - startIcon: , - }, - { - id: 'copy', - label: t('asset_actions.copy', 'Copy'), - onClick: onCopy, - disabled: !canShare, - startIcon: , - }, - ]} - > - {t('asset_actions.edit', 'Edit')} - - - - - `1px solid ${theme.palette.divider}`, - borderTop: 0, - borderRight: 0, - alignItems: 'center', - alignSelf: 'flex-start', - }} - > - - {!resultContext.loading && - resultContext.total !== undefined ? ( - <> - - {new Intl.NumberFormat('fr-FR', {}).format( - resultContext.total - )} - - - {` result${resultContext.total > 1 ? 's' : ''}`} - - - ) : ( - 'Loading...' - )} - - - onLayoutChange(newValue)} - > - - - - - - - - - - - - ); -} diff --git a/databox/client/src/components/Media/WorkspaceMenuItem.tsx b/databox/client/src/components/Media/WorkspaceMenuItem.tsx index ee6ceaf87..558738b2f 100644 --- a/databox/client/src/components/Media/WorkspaceMenuItem.tsx +++ b/databox/client/src/components/Media/WorkspaceMenuItem.tsx @@ -21,10 +21,10 @@ import CreateCollection from './Collection/CreateCollection'; import ModalLink from '../Routing/ModalLink'; import {useTranslation} from 'react-i18next'; import {useModals} from '@alchemy/navigation'; -import {modalRoutes} from '../../routes.ts'; -import {useCollectionStore} from '../../store/collectionStore.ts'; +import {modalRoutes} from '../../routes'; +import {useCollectionStore} from '../../store/collectionStore'; import {useShallow} from 'zustand/react/shallow'; -import LoadMoreCollections from './Collection/LoadMoreCollections.tsx'; +import LoadMoreCollections from './Collection/LoadMoreCollections'; export type WorkspaceMenuItemProps = { data: Workspace; diff --git a/databox/client/src/components/Permissions/permissions.d.ts b/databox/client/src/components/Permissions/permissions.ts similarity index 64% rename from databox/client/src/components/Permissions/permissions.d.ts rename to databox/client/src/components/Permissions/permissions.ts index 8c90fccda..0ff45337b 100644 --- a/databox/client/src/components/Permissions/permissions.d.ts +++ b/databox/client/src/components/Permissions/permissions.ts @@ -11,10 +11,12 @@ export type OnPermissionDelete = ( userId: string | null ) => Promise; -export type PermissionObjectType = - | 'collection' - | 'asset' - | 'workspace' - | 'attribute_class'; +export enum PermissionObject { + Collection = 'collection', + Asset = 'asset', + Workspace = 'workspace', + Basket = 'basket', + AttributeClass = 'attribute_class', +} export type DisplayedPermissions = string[] | undefined; diff --git a/databox/client/src/components/Root.tsx b/databox/client/src/components/Root.tsx index 3fa92d1da..740212ed5 100644 --- a/databox/client/src/components/Root.tsx +++ b/databox/client/src/components/Root.tsx @@ -12,8 +12,8 @@ import { MatomoUser, SessionExpireContainer, } from '@alchemy/react-auth'; -import {modalRoutes, routes} from '../routes.ts'; -import RouteProxy from './Routing/RouteProxy.tsx'; +import {modalRoutes, routes} from '../routes'; +import RouteProxy from './Routing/RouteProxy'; type Props = {}; @@ -22,16 +22,13 @@ export default function Root({}: Props) { - - - - + ); @@ -40,8 +37,11 @@ export default function Root({}: Props) { function WrapperComponent({children}: RouteWrapperProps) { return ( <> - - {children} + + + + {children} + ); } diff --git a/databox/client/src/components/Routing/RouteProxy.tsx b/databox/client/src/components/Routing/RouteProxy.tsx index a05f80cc2..e284178ab 100644 --- a/databox/client/src/components/Routing/RouteProxy.tsx +++ b/databox/client/src/components/Routing/RouteProxy.tsx @@ -1,7 +1,7 @@ import type {RouteProxyProps} from '@alchemy/navigation'; import {useAuth, useKeycloakUrls} from '@alchemy/react-auth'; -import {keycloakClient} from '../../api/api-client.ts'; -import config from '../../config.ts'; +import {keycloakClient} from '../../api/api-client'; +import config from '../../config'; export default function RouteProxy({ component: Component, diff --git a/databox/client/src/components/Ui/FastTooltip.tsx b/databox/client/src/components/Ui/FastTooltip.tsx new file mode 100644 index 000000000..6aebd4837 --- /dev/null +++ b/databox/client/src/components/Ui/FastTooltip.tsx @@ -0,0 +1,17 @@ +import {PropsWithChildren, useState} from 'react'; +import {Tooltip, TooltipProps} from '@mui/material'; + +type Props = PropsWithChildren; + +export default function FastTooltip({children, ...rest}: Props) { + const [renderTooltip, setRenderTooltip] = useState(false); + + return ( +
!renderTooltip && setRenderTooltip(true)} + style={{display: 'contents'}} + > + {renderTooltip ? {children} : children} +
+ ); +} diff --git a/databox/client/src/components/Ui/Flag.tsx b/databox/client/src/components/Ui/Flag.tsx index 58c127855..9a662f021 100644 --- a/databox/client/src/components/Ui/Flag.tsx +++ b/databox/client/src/components/Ui/Flag.tsx @@ -7,7 +7,6 @@ type Props = { }; function getLocaleCountryFlag(locale: string): FunctionComponent | undefined { - console.trace('locale', locale); const matches = locale.match( /^([a-z]{2})[-_]?([a-z]{2})?([-_][a-z0-9]+)?$/i ); diff --git a/databox/client/src/components/Ui/PrivacyChip.tsx b/databox/client/src/components/Ui/PrivacyChip.tsx index de7a6c28c..64dd00385 100644 --- a/databox/client/src/components/Ui/PrivacyChip.tsx +++ b/databox/client/src/components/Ui/PrivacyChip.tsx @@ -1,17 +1,18 @@ -import {Chip, ChipProps, SvgIconProps, Tooltip} from '@mui/material'; +import {Chip, ChipProps, SvgIconProps} from '@mui/material'; import {useTranslation} from 'react-i18next'; import {grey} from '@mui/material/colors'; import LockIcon from '@mui/icons-material/Lock'; -import {TooltipProps} from '@mui/material/Tooltip'; import {Privacy} from '../../api/privacy'; +import FastTooltip from './FastTooltip'; +import assetClasses from '../AssetList/classes'; -type Props = { - privacy: Privacy; -}; - -function usePrivacyLabel(privacy: Privacy) { +function usePrivacyLabel(privacy: Privacy, noAccess: boolean | undefined) { const {t} = useTranslation(); + if (noAccess) { + return t('privacy.no_access', 'No Access'); + } + const privacyIndices: Record = { [Privacy.Secret]: t('privacy.secret', 'Secret'), [Privacy.PrivateInWorkspace]: t( @@ -33,8 +34,17 @@ function usePrivacyLabel(privacy: Privacy) { return privacyIndices[privacy]; } -export default function PrivacyChip({privacy, ...props}: Props & ChipProps) { - const privacyLabel = usePrivacyLabel(privacy); +type Props = { + privacy: Privacy; + noAccess: boolean | undefined; +}; + +export default function PrivacyChip({ + privacy, + noAccess, + ...props +}: Props & ChipProps) { + const privacyLabel = usePrivacyLabel(privacy, noAccess); return ( ; + noAccess?: boolean; }) { - const privacyLabel = usePrivacyLabel(privacy); + const privacyLabel = usePrivacyLabel(privacy, noAccess); return ( - - - +
+ + + +
); } diff --git a/databox/client/src/components/Upload/FileCard.tsx b/databox/client/src/components/Upload/FileCard.tsx index 1581a32d8..81565bbcc 100644 --- a/databox/client/src/components/Upload/FileCard.tsx +++ b/databox/client/src/components/Upload/FileCard.tsx @@ -3,6 +3,7 @@ import Typography from '@mui/material/Typography'; import {FileBlobThumb} from '../../lib/upload/fileBlob'; import {Grid, Paper} from '@mui/material'; import byteSize from 'byte-size'; +import {thumbSx} from "../Media/Asset/Thumb"; const size = 100; @@ -17,6 +18,7 @@ export default function FileCard({file, onRemove}: Props) { sx={theme => ({ padding: theme.spacing(2), margin: 'auto', + ...thumbSx(size, theme), })} > ; +} & Omit; export const UploadForm: FC<{ workspaceId?: string | undefined; @@ -242,7 +242,10 @@ export const UploadForm: FC<{ control={control} name={'tags'} /> - field={'tags'} errors={errors} /> + + field={'tags'} + errors={errors} + /> )} diff --git a/databox/client/src/components/Upload/UploadModal.tsx b/databox/client/src/components/Upload/UploadModal.tsx index b206f9f0a..5057d428c 100644 --- a/databox/client/src/components/Upload/UploadModal.tsx +++ b/databox/client/src/components/Upload/UploadModal.tsx @@ -26,8 +26,8 @@ import { useModals, useOutsideRouterDirtyFormPrompt, } from '@alchemy/navigation'; -import {Privacy} from '../../api/privacy.ts'; -import {Asset} from '../../types.ts'; +import {Privacy} from '../../api/privacy'; +import {Asset} from '../../types'; type FileWrapper = { id: string; @@ -83,7 +83,7 @@ export default function UploadModal({ const usedFormSubmit = useFormSubmit({ defaultValues, - normalize: (data) => { + normalize: data => { return { ...data, tags: data.tags.map(t => t['@id']), diff --git a/databox/client/src/components/User/Preferences/UserPreferencesContext.ts b/databox/client/src/components/User/Preferences/UserPreferencesContext.ts index a0978adc4..bd6a7ac47 100644 --- a/databox/client/src/components/User/Preferences/UserPreferencesContext.ts +++ b/databox/client/src/components/User/Preferences/UserPreferencesContext.ts @@ -1,11 +1,11 @@ -import {LayoutEnum} from '../../Media/Search/Pager'; import {ThemeName} from '../../../lib/theme'; import React from 'react'; +import {Layout} from '../../AssetList/Layouts'; export type UserPreferences = { theme?: ThemeName | undefined; pinnedAttrs?: Record | undefined; - layout?: LayoutEnum; + layout?: Layout; }; export type UpdatePreferenceHandler = ( diff --git a/databox/client/src/context/AssetSelectionContext.tsx b/databox/client/src/context/AssetSelectionContext.tsx new file mode 100644 index 000000000..610edeb61 --- /dev/null +++ b/databox/client/src/context/AssetSelectionContext.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import {Asset, AssetOrAssetContainer, StateSetter} from '../types'; +import {ItemToAssetFunc} from '../components/AssetList/types'; + +export type TSelectionContext = { + selection: T[]; + setSelection: StateSetter; + itemToAsset?: ItemToAssetFunc | undefined; +}; + +export const AssetSelectionContext = React.createContext< + TSelectionContext +>({ + selection: [], + setSelection: () => {}, +}); diff --git a/databox/client/src/context/BasketSelectionContext.ts b/databox/client/src/context/BasketSelectionContext.ts new file mode 100644 index 000000000..31cd6c49f --- /dev/null +++ b/databox/client/src/context/BasketSelectionContext.ts @@ -0,0 +1,11 @@ +import React from 'react'; +import {BasketAsset} from '../types'; +import {TSelectionContext} from './AssetSelectionContext'; + +export const BasketSelectionContext = React.createContext< + TSelectionContext +>({ + selection: [], + setSelection: () => {}, + itemToAsset: item => item.asset, +}); diff --git a/databox/client/src/hooks/useInfiniteScroll.ts b/databox/client/src/hooks/useInfiniteScroll.ts new file mode 100644 index 000000000..e5bab6e33 --- /dev/null +++ b/databox/client/src/hooks/useInfiniteScroll.ts @@ -0,0 +1,24 @@ +import React from "react"; + +type Props = { + node: HTMLElement | undefined | null; + onLoad: () => void; +} + +export function useInfiniteScroll({node, onLoad}: Props) { + React.useEffect(() => { + if (node) { + const onScrollEnd = (e: HTMLElementEventMap['scroll']) => { + const {scrollTop, scrollHeight, clientHeight} = e.currentTarget as HTMLDivElement; + if (clientHeight < scrollHeight && scrollTop + clientHeight >= scrollHeight - 20) { + onLoad(); + } + }; + node.addEventListener('scroll', onScrollEnd); + + return () => { + node.removeEventListener('scroll', onScrollEnd); + } + } + }, [onLoad, node]); +} diff --git a/databox/client/src/index.tsx b/databox/client/src/index.tsx index 6918082db..0a64d4bbb 100644 --- a/databox/client/src/index.tsx +++ b/databox/client/src/index.tsx @@ -1,13 +1,12 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import reportWebVitals from './reportWebVitals'; import './scss/index.scss'; import Root from './components/Root'; import './config'; import './i18n'; import './lib/leaflet'; import {initSentry} from '@alchemy/core'; -import config from './config.ts'; +import config from './config'; initSentry(config); @@ -16,8 +15,3 @@ ReactDOM.createRoot(document.getElementById('root')!).render( ); - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); diff --git a/databox/client/src/lib/CopyToClipboard.tsx b/databox/client/src/lib/CopyToClipboard.tsx index 115681544..d9c9cc609 100644 --- a/databox/client/src/lib/CopyToClipboard.tsx +++ b/databox/client/src/lib/CopyToClipboard.tsx @@ -1,55 +1,47 @@ import copy from 'clipboard-copy'; import * as React from 'react'; import {Tooltip, TooltipProps} from '@mui/material'; +import {useTranslation} from 'react-i18next'; -interface ChildProps { - copy: (content: any) => void; -} +type CopyFunc = (content: string | null | undefined) => void; -interface Props { - TooltipProps?: Partial; - children: (props: ChildProps) => React.ReactElement; -} +type ChildProps = { + copy: CopyFunc; +}; -interface OwnState { - showTooltip: boolean; -} +type Props = { + tooltipProps?: Partial; + children: (props: ChildProps) => React.ReactElement; +}; + +export default function CopyToClipboard({children, tooltipProps = {}}: Props) { + const [show, setShow] = React.useState(false); + const {t} = useTranslation(); -/** - * Render prop component that wraps element in a Tooltip that shows "Copied to clipboard!" when the - * copy function is invoked - */ -class CopyToClipboard extends React.Component { - public state: OwnState = {showTooltip: false}; - - public render() { - return ( - - { - this.props.children({ - copy: this.onCopy, - }) as React.ReactElement - } - - ); - } - - private onCopy = (content: any) => { + const onCopy: CopyFunc = content => { if (content) { copy(content); - this.setState({showTooltip: true}); + setShow(true); + + setTimeout(() => { + setShow(false); + }, 1000); } }; - private handleOnTooltipClose = () => { - this.setState({showTooltip: false}); - }; + const child = children({ + copy: onCopy, + }); + + return show ? ( + + {child} + + ) : ( + child + ); } - -export default CopyToClipboard; diff --git a/databox/client/src/lib/style.ts b/databox/client/src/lib/style.ts index 9d2cbb255..9bc398641 100644 --- a/databox/client/src/lib/style.ts +++ b/databox/client/src/lib/style.ts @@ -8,10 +8,11 @@ export function getRelativeViewWidth(relativeSize: number): number { } export function getRelativeViewHeight(relativeSize: number): number { - const docHeight = - window.innerHeight || + return (getWindowHeight() * relativeSize) / 100; +} + +export function getWindowHeight(): number { + return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; - - return (docHeight * relativeSize) / 100; } diff --git a/databox/client/src/pages/NotFound.tsx b/databox/client/src/pages/NotFound.tsx index ed978cda5..a4b199af9 100644 --- a/databox/client/src/pages/NotFound.tsx +++ b/databox/client/src/pages/NotFound.tsx @@ -1,7 +1,7 @@ import {useTranslation} from 'react-i18next'; import {Box, Button, Typography} from '@mui/material'; import {getPath, Link} from '@alchemy/navigation'; -import {routes} from '../routes.ts'; +import {routes} from '../routes'; type Props = {}; diff --git a/databox/client/src/routes.ts b/databox/client/src/routes.ts index e2fd7c023..ae577158a 100644 --- a/databox/client/src/routes.ts +++ b/databox/client/src/routes.ts @@ -4,8 +4,10 @@ import CollectionDialog from './components/Dialog/Collection/CollectionDialog'; import AssetDialog from './components/Dialog/Asset/AssetDialog'; import AssetView from './components/Media/Asset/AssetView'; import WorkflowView from './components/Workflow/WorkflowView'; -import AppAuthorizationCodePage from './components/AppAuthorizationCodePage.tsx'; +import AppAuthorizationCodePage from './components/AppAuthorizationCodePage'; import {compileRoutes} from '@alchemy/navigation'; +import BasketDialog from './components/Dialog/Basket/BasketDialog'; +import BasketViewDialog from './components/Basket/BasketViewDialog'; const modalRoutes = { workspaces: { @@ -28,6 +30,20 @@ const modalRoutes = { }, }, }, + baskets: { + public: false, + path: '/baskets/:id', + routes: { + manage: { + path: 'manage/:tab', + component: BasketDialog, + }, + view: { + path: 'view', + component: BasketViewDialog, + }, + }, + }, assets: { public: false, path: '/assets/:id', diff --git a/databox/client/src/store/basketStore.ts b/databox/client/src/store/basketStore.ts new file mode 100644 index 000000000..20f072187 --- /dev/null +++ b/databox/client/src/store/basketStore.ts @@ -0,0 +1,246 @@ +import {create} from 'zustand'; +import {Basket} from '../types'; +import { + addToBasket, + BasketAssetInput, + deleteBasket, + getBasket, + GetBasketOptions, + getBaskets, + removeFromBasket, +} from '../api/basket'; + +type State = { + baskets: Basket[]; + current: Basket | undefined; + loading: boolean; + loadingCurrent: boolean; + loadingMore: boolean; + total?: number; + load: (params?: GetBasketOptions) => Promise; + loadMore: () => Promise; + addBasket: (basket: Basket) => void; + updateBasket: (data: Basket) => void; + deleteBasket: (id: string) => void; + addToCurrent: (assets: BasketAssetInput[]) => void; + removeFromBasket: (basketId: string, itemIds: string[]) => void; + setCurrent: (data: Basket | undefined) => Promise; + shouldSelectBasket: () => boolean; +}; + +export const useBasketStore = create((set, getState) => ({ + loadingMore: false, + loading: false, + loadingCurrent: false, + current: undefined, + baskets: [], + + load: async params => { + set({ + loading: false, + }); + + try { + const data = await getBaskets(params); + + set(state => ({ + baskets: data.result, + total: data.total, + loading: false, + current: data.total === 1 ? data.result[0] : state.current, + })); + } catch (e: any) { + set({loadingMore: true}); + throw e; + } + }, + + setCurrent: async data => { + if (!data) { + set({ + current: undefined, + loadingCurrent: false, + }); + + return; + } + + set({ + current: data, + loadingCurrent: true, + }); + + try { + const basket = await getBasket(data.id); + set({ + current: basket, + loadingCurrent: false, + }); + } catch (e: any) { + set({ + loadingCurrent: false, + }); + } + }, + + shouldSelectBasket: () => { + const {current, loading, baskets} = getState(); + + if (current) { + return false; + } + + if (loading) { + return true; + } + + return baskets.length > 1; + }, + + updateBasket: data => { + set(state => ({ + baskets: state.baskets.map(b => { + if (b.id === data.id) { + return { + ...b, + ...data, + }; + } + + return b; + }), + current: state.current?.id === data.id ? data : state.current, + })); + }, + + loadMore: async () => { + const pager = getState().baskets; + if (!pager) { + return; + } + + set({loadingMore: true}); + try { + const data = await getBaskets(); // TODO + + set(state => ({ + baskets: state.baskets.concat(data.result), + total: data.total, + loadingMore: false, + })); + } catch (e: any) { + set({loadingMore: false}); + + throw e; + } + }, + + addBasket(basket) { + set(state => ({ + baskets: [basket].concat(state.baskets), + })); + }, + + deleteBasket: async id => { + await deleteBasket(id); + + set(state => ({ + baskets: state.baskets.filter(b => b.id !== id), + current: state.current?.id === id ? undefined : state.current, + })); + }, + + addToCurrent: async assets => { + const current = getState().current; + + const currentId = current?.id; + const count = assets.length; + + if (current && current.assetCount !== undefined) { + set({ + current: { + ...current, + assetCount: current.assetCount + count, + }, + }); + } + + try { + const basket = await addToBasket(currentId, { + assets, + }); + set(state => ({ + current: basket, + baskets: state.baskets.some(b => b.id === basket.id) + ? state.baskets + : state.baskets.concat([basket]), + })); + } catch (e: any) { + if (current) { + set(state => { + if (state.current?.id === current.id) { + const curr = state.current!; + + return { + current: { + ...curr, + assetCount: + curr.assetCount !== undefined + ? Math.max(0, curr.assetCount! - count) + : undefined, + }, + }; + } + + return state; + }); + } + } + }, + + removeFromBasket: async (basketId, itemIds) => { + let current: Basket | undefined = getState().current; + if (current && current.id !== basketId) { + current = undefined; + } + const count = itemIds.length; + + if (current && current.assetCount !== undefined) { + set({ + current: { + ...current, + assetCount: Math.max(0, current.assetCount - count), + }, + }); + } + + try { + const basket = await removeFromBasket(basketId, itemIds); + set(state => ({ + baskets: state.baskets.some(b => b.id === basket.id) + ? state.baskets + : state.baskets.concat([basket]), + })); + } catch (e: any) { + if (current) { + set(state => { + if (state.current?.id === current!.id) { + const curr = state.current!; + + return { + current: { + ...curr, + assetCount: + curr.assetCount !== undefined + ? curr.assetCount! + count + : undefined, + }, + }; + } + + return state; + }); + } + } + }, +})); diff --git a/databox/client/src/store/collectionStore.ts b/databox/client/src/store/collectionStore.ts index d3d1d8af1..b6cb5cc4b 100644 --- a/databox/client/src/store/collectionStore.ts +++ b/databox/client/src/store/collectionStore.ts @@ -1,11 +1,11 @@ import {create} from 'zustand'; -import {Collection, Workspace} from '../types.ts'; +import {Collection, Workspace} from '../types'; import { collectionChildrenLimit, CollectionOptions, collectionSecondLimit, getCollections, -} from '../api/collection.ts'; +} from '../api/collection'; export type CollectionPager = { items: CollectionExtended[]; diff --git a/databox/client/src/themes/base.ts b/databox/client/src/themes/base.ts index 486ec6da0..013df6796 100644 --- a/databox/client/src/themes/base.ts +++ b/databox/client/src/themes/base.ts @@ -19,3 +19,5 @@ const baseTheme: ThemeOptions = { }; export default baseTheme; + +export const leftPanelWidth = 360; diff --git a/databox/client/src/types.ts b/databox/client/src/types.ts index 3a89da637..285c848b7 100644 --- a/databox/client/src/types.ts +++ b/databox/client/src/types.ts @@ -1,6 +1,6 @@ import {ApiHydraObjectResponse} from './api/hydra'; import {AttributeType} from './api/attributes'; -import type {WithTranslations} from '@alchemy/react-form' +import type {WithTranslations} from '@alchemy/react-form'; type AlternateUrl = { type: string; @@ -39,11 +39,11 @@ export interface Asset titleHighlight: string | null; description?: string; privacy: number; - tags: Tag[]; + tags: Tag[] | undefined; owner?: User; workspace: Workspace; attributes: Attribute[]; - collections: Collection[]; + collections: Collection[] | undefined; original: AssetRendition | null; preview: AssetRendition | null; source: File | undefined; @@ -205,6 +205,34 @@ export interface Collection extends IPermissions { owner?: User; } +export interface Basket extends IPermissions { + id: string; + title: string; + description?: string | undefined; + assetCount?: number; + titleHighlight: string; + createdAt: string; + updatedAt: string; + owner?: User; +} + +export interface BasketAsset { + id: string; + asset: Asset; + context?: + | { + clip?: { + start?: number; + end?: number; + }; + } + | undefined; + titleHighlight: string; + position: number; + createdAt: string; + owner?: User; +} + export interface Workspace extends IPermissions { id: string; name: string; @@ -257,3 +285,9 @@ export type Ace = ( userType: UserType; resolving?: boolean; }; + +export type StateSetter = (handler: T | ((prev: T) => T)) => void; + +export type AssetOrAssetContainer = { + id: string; +}; diff --git a/databox/client/vite.config.ts b/databox/client/vite.config.ts index e6dfbf1de..dfca56c08 100644 --- a/databox/client/vite.config.ts +++ b/databox/client/vite.config.ts @@ -1,6 +1,7 @@ import {defineConfig} from 'vite'; import react from '@vitejs/plugin-react-swc'; import svgr from 'vite-plugin-svgr'; +import fixReactVirtualized from 'esbuild-plugin-react-virtualized' import checker from 'vite-plugin-checker'; // https://vitejs.dev/config/ @@ -21,4 +22,9 @@ export default defineConfig({ port: 3000, host: '0.0.0.0', }, + optimizeDeps: { + esbuildOptions: { + plugins: [fixReactVirtualized], + }, + }, }); diff --git a/databox/indexer/package.json b/databox/indexer/package.json index 045be7800..da5fca963 100644 --- a/databox/indexer/package.json +++ b/databox/indexer/package.json @@ -23,27 +23,27 @@ "@alchemy/auth": "workspace:*", "@alchemy/storage": "workspace:*", "amqplib": "^0.10.3", - "axios": "^1.6.2", + "axios": "^1.6.7", "axios-retry": "^4.0.0", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "commander": "^11.1.0", - "express": "^4.18.2", + "express": "^4.18.3", "minio": "^7.1.3", - "winston": "^3.11.0" + "winston": "^3.12.0" }, "devDependencies": { "@api-platform/create-client": "^0.10.0", - "@types/amqplib": "^0.10.4", - "@types/express": "^4.17.13", + "@types/amqplib": "^0.10.5", + "@types/express": "^4.17.21", "@types/minio": "^7.1.1", - "@types/node": "^18.8.5", - "@typescript-eslint/eslint-plugin": "^6.10.0", - "@typescript-eslint/parser": "^6.10.0", - "nodemon": "^3.0.2", + "@types/node": "^18.19.24", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "nodemon": "^3.1.0", "rimraf": "^5.0.5", - "ts-node": "^10.9.1", - "typescript": "^5.3.2", - "vite": "^5.0.7", + "ts-node": "^10.9.2", + "typescript": "^5.4.2", + "vite": "^5.1.6", "vite-plugin-node": "^3.1.0" } } diff --git a/expose/client/package.json b/expose/client/package.json index f3de9ecf6..cc3e00fac 100644 --- a/expose/client/package.json +++ b/expose/client/package.json @@ -12,55 +12,55 @@ }, "dependencies": { "@alchemy/api": "workspace:*", - "@alchemy/core": "workspace:*", - "@alchemy/react-auth": "workspace:*", "@alchemy/auth": "workspace:*", - "@alchemy/react-ps": "workspace:*", + "@alchemy/core": "workspace:*", "@alchemy/navigation": "workspace:*", "@alchemy/phrasea-ui": "workspace:*", + "@alchemy/react-auth": "workspace:*", + "@alchemy/react-ps": "workspace:*", "@jonkoops/matomo-tracker-react": "^0.7.0", - "@mui/material": "^5.15.1", - "@mui/icons-material": "^5.15.1", "@mikecousins/react-pdf": "^5.5.1", - "axios": "^1.1.3", - "bootstrap": "^4.5.0", + "@mui/icons-material": "^5.15.13", + "@mui/material": "^5.15.13", + "axios": "^1.6.7", + "bootstrap": "^4.6.2", "flow-bin": "^0.126.1", - "i18next": "^23.7.7", - "i18next-browser-languagedetector": "^6.1.2", - "mapbox-gl": "^1.10.1", - "moment": "^2.29.4", + "i18next": "^23.10.1", + "i18next-browser-languagedetector": "^6.1.8", + "mapbox-gl": "^1.13.3", + "moment": "^2.30.1", "react": "^18.2.0", - "react-toastify": "^9.1.3", - "react-bootstrap": "^1.0.1", + "react-bootstrap": "^1.6.8", "react-dom": "^18.2.0", - "react-grid-gallery": "^0.5.5", + "react-grid-gallery": "^0.5.6", "react-i18next": "^13.5.0", "react-image-gallery": "^0.9.1", - "react-image-magnifiers": "^1.3.2", + "react-image-magnifiers": "^1.4.0", "react-images": "^1.1.7", - "sass": "^1.44.0", - "sass-loader": "^8.0.0", - "universal-cookie": "^4.0.2", - "video.js": "^7.8.3", + "react-toastify": "^9.1.3", + "sass": "^1.71.1", + "sass-loader": "^8.0.2", + "universal-cookie": "^4.0.4", + "video.js": "^7.21.5", "videojs-font": "^4.1.0" }, "devDependencies": { - "@types/jest": "^26.0.0", - "@types/node": "^18.8.5", - "@types/react": "^18.2.37", - "@types/react-dom": "^18.2.15", - "@types/react-image-magnifiers": "^1.3.2", - "@types/video.js": "^7.3.51", - "@vitejs/plugin-react-swc": "^3.5.0", - "@typescript-eslint/eslint-plugin": "^6.10.0", - "@typescript-eslint/parser": "^6.10.0", - "eslint": "^8.53.0", + "@types/jest": "^26.0.24", + "@types/node": "^18.19.24", + "@types/react": "^18.2.65", + "@types/react-dom": "^18.2.22", + "@types/react-image-magnifiers": "^1.3.5", + "@types/video.js": "^7.3.57", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "@vitejs/plugin-react-swc": "^3.6.0", + "eslint": "^8.57.0", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.4", - "i18next-scanner": "^3.0.0", - "typescript": "^5.2.2", - "vite": "^5.0.0", - "vite-plugin-svgr": "^4.2.0", - "vite-plugin-checker": "^0.6.2" + "eslint-plugin-react-refresh": "^0.4.6", + "i18next-scanner": "^3.3.0", + "typescript": "^5.4.2", + "vite": "^5.1.6", + "vite-plugin-checker": "^0.6.4", + "vite-plugin-svgr": "^4.2.0" } } diff --git a/lib/js/api/package.json b/lib/js/api/package.json index 4dd98f83d..eb5cb9c31 100644 --- a/lib/js/api/package.json +++ b/lib/js/api/package.json @@ -7,20 +7,18 @@ "main": "index.ts", "license": "MIT", "peerDependencies": { - "react": "^18.2.0", "axios": "^1.6.2", + "react": "^18.2.0", + "react-hook-form": "^7.51.0", "react-i18next": "^13.5.0", - "react-toastify": "^9.1.3", - "react-hook-form": "^7.51.0" - }, - "dependencies": { + "react-toastify": "^9.1.3" }, "devDependencies": { - "axios": "^1.6.2", + "@types/react": "^18.2.65", + "axios": "^1.6.7", "react": "^18.2.0", + "react-hook-form": "^7.51.0", "react-i18next": "^13.5.0", - "react-toastify": "^9.1.3", - "@types/react": "^18.2.37", - "react-hook-form": "^7.51.0" + "react-toastify": "^9.1.3" } } diff --git a/lib/js/auth/package.json b/lib/js/auth/package.json index 8a9aecc35..28562676f 100644 --- a/lib/js/auth/package.json +++ b/lib/js/auth/package.json @@ -11,17 +11,17 @@ "react": "^18.2.0" }, "dependencies": { - "jwt-decode": "^4.0.0", - "js-cookie": "^3.0.5", "@alchemy/api": "workspace:*", - "@alchemy/storage": "workspace:*" + "@alchemy/storage": "workspace:*", + "js-cookie": "^3.0.5", + "jwt-decode": "^4.0.0" }, "devDependencies": { "@types/jest": "^23.3.14", "@types/js-cookie": "^3.0.6", "@types/node": "^10.17.60", - "axios": "^1.6.2", - "ts-node": "^10.9.1", - "typescript": "^5.3.2" + "axios": "^1.6.7", + "ts-node": "^10.9.2", + "typescript": "^5.4.2" } } diff --git a/lib/js/core/package.json b/lib/js/core/package.json index 334bb1d44..6e2d18ada 100644 --- a/lib/js/core/package.json +++ b/lib/js/core/package.json @@ -10,10 +10,10 @@ "react": "^18.2.0" }, "dependencies": { - "@sentry/react": "^7.86.0" + "@sentry/react": "^7.106.1" }, "devDependencies": { - "@sentry/types": "^7.86.0", - "@types/react": "^18.2.37" + "@sentry/types": "^7.106.1", + "@types/react": "^18.2.65" } } diff --git a/lib/js/liform-react/package.json b/lib/js/liform-react/package.json index 2fe35d4bd..5a206ffe9 100644 --- a/lib/js/liform-react/package.json +++ b/lib/js/liform-react/package.json @@ -22,11 +22,11 @@ }, "dependencies": { "ajv": "^8.12.0", - "classnames": "^2.2.5", - "deepmerge": "^2.0.1", + "classnames": "^2.5.1", + "deepmerge": "^2.2.1", "lodash": "^4.17.21", - "prop-types": "^15.5.10", - "react-redux": "^9.0.4", + "prop-types": "^15.8.1", + "react-redux": "^9.1.0", "redux": "^4.2.1", "redux-form": "^8.3.10" }, diff --git a/lib/js/navigation/package.json b/lib/js/navigation/package.json index a900ad3a0..ed2c1a9ec 100644 --- a/lib/js/navigation/package.json +++ b/lib/js/navigation/package.json @@ -7,22 +7,22 @@ "src/proxy/MatomoRouteWrapper.tsx" ], "dependencies": { + "@alchemy/core": "workspace:*", "@remix-run/router": "1.11.0", - "react-router-dom": "6.18.0", - "@alchemy/core": "workspace:*" + "react-router-dom": "6.18.0" }, "peerDependencies": { - "react": "^18.2.0", + "@alchemy/phrasea-ui": "workspace:*", "@jonkoops/matomo-tracker-react": "^0.7.0", - "react-i18next": "^13.5.0", - "@alchemy/phrasea-ui": "workspace:*" + "react": "^18.2.0", + "react-i18next": "^13.5.0" }, "devDependencies": { - "react": "^18.2.0", - "@types/react": "^18.2.37", + "@alchemy/phrasea-ui": "workspace:*", "@jonkoops/matomo-tracker-react": "^0.7.0", - "react-i18next": "^13.5.0", + "@types/react": "^18.2.65", "i18next": "^23.10.1", - "@alchemy/phrasea-ui": "workspace:*" + "react": "^18.2.0", + "react-i18next": "^13.5.0" } } diff --git a/lib/js/navigation/src/useNavigateToOverlay.tsx b/lib/js/navigation/src/useNavigateToOverlay.tsx index 1fa0f3e5a..2fd74a3d6 100644 --- a/lib/js/navigation/src/useNavigateToOverlay.tsx +++ b/lib/js/navigation/src/useNavigateToOverlay.tsx @@ -13,7 +13,7 @@ export function useNavigateToOverlay(queryParam: string): NavigateToOverlayFunct navigate({ search: `${queryParam}=${getPath(route, params)}`, }); - }, [navigate]); + }, []); } export function useCloseOverlay(queryParam: string): CloseOverlayFunction { diff --git a/lib/js/phrasea-ui/package.json b/lib/js/phrasea-ui/package.json index e5d160a02..38af012af 100644 --- a/lib/js/phrasea-ui/package.json +++ b/lib/js/phrasea-ui/package.json @@ -4,21 +4,21 @@ "public": true, "main": "index.ts", "peerDependencies": { + "@alchemy/navigation": "workspace:*", + "@mui/icons-material": "^5.15.1", + "@mui/material": "^5.15.13", "react": "^18.2.0", - "@mui/material": "^5.15.1", - "@mui/icons-material": "^5.15.1", - "react-i18next": "^13.5.0", - "@alchemy/navigation": "workspace:*" + "react-i18next": "^13.5.0" }, "dependencies": { - "styled-components": "^6.1.1" + "styled-components": "^6.1.8" }, "devDependencies": { - "@types/react": "^18.2.37", + "@alchemy/navigation": "workspace:*", + "@mui/icons-material": "^5.15.13", + "@mui/material": "^5.15.13", + "@types/react": "^18.2.65", "react": "^18.2.0", - "@mui/material": "^5.15.1", - "@mui/icons-material": "^5.15.1", - "react-i18next": "^13.5.0", - "@alchemy/navigation": "workspace:*" + "react-i18next": "^13.5.0" } } diff --git a/lib/js/phrasea-ui/src/components/Error/ErrorLayout.tsx b/lib/js/phrasea-ui/src/components/Error/ErrorLayout.tsx index 9f079e6db..6776a8140 100644 --- a/lib/js/phrasea-ui/src/components/Error/ErrorLayout.tsx +++ b/lib/js/phrasea-ui/src/components/Error/ErrorLayout.tsx @@ -62,15 +62,15 @@ export default function ErrorLayout({ }: Props) { let canvasRef = useRef(null); - React.useEffect(() => { + React.useLayoutEffect(() => { if (!canvasRef.current) { return; } const canvas = canvasRef.current!; const ctx = canvas.getContext('2d')!; - const width = 700; - const height = 500; + const width = 500; + const height = 400; canvas.width = width; canvas.height = height; @@ -90,18 +90,25 @@ export default function ErrorLayout({ ctx.putImageData(imgData, 0, 0); } - const flickerInterval = setInterval(flickering, 60); + const flickerInterval = setInterval(flickering, 80); return () => { clearInterval(flickerInterval); } }, [canvasRef.current]); - return
+ return
= (handler: T | ((prev: T) => T)) => void; + +export default function createStateSetterProxy( + handler: T | ((prev: T) => T), + proxy: (newState: T) => T, +): (prev: T) => T { + return p => { + if (typeof handler === 'function') { + const n = (handler as (prev: T) => T)(p); + + return proxy(n); + } + + return proxy(handler); + }; +} diff --git a/lib/js/react-ps/package.json b/lib/js/react-ps/package.json index 73c438493..6b966ffff 100644 --- a/lib/js/react-ps/package.json +++ b/lib/js/react-ps/package.json @@ -22,47 +22,47 @@ "jwt-decode": "^3.1.2" }, "devDependencies": { - "@commitlint/cli": "^7.1.2", - "@commitlint/config-conventional": "^7.1.2", - "@svgr/cli": "^6.5.0", - "@types/jest": "^23.3.2", - "@types/js-cookie": "^3.0.3", - "@types/node": "^10.11.0", - "@types/react": "^18.0.21", - "axios": "^1.1.3", - "colors": "^1.3.2", - "commitizen": "^3.0.0", - "coveralls": "^3.0.2", - "cross-env": "^5.2.0", + "@commitlint/cli": "^7.6.1", + "@commitlint/config-conventional": "^7.6.0", + "@svgr/cli": "^6.5.1", + "@types/jest": "^23.3.14", + "@types/js-cookie": "^3.0.6", + "@types/node": "^10.17.60", + "@types/react": "^18.2.65", + "axios": "^1.6.7", + "colors": "^1.4.0", + "commitizen": "^3.1.2", + "coveralls": "^3.1.1", + "cross-env": "^5.2.1", "cz-conventional-changelog": "^2.1.0", - "husky": "^1.0.1", - "i18next-browser-languagedetector": "^7.0.1", + "husky": "^1.3.1", + "i18next-browser-languagedetector": "^7.2.0", "jest": "^23.6.0", "jest-config": "^23.6.0", - "lint-staged": "^8.0.0", + "lint-staged": "^8.2.1", "lodash.camelcase": "^4.3.0", - "prettier": "^1.14.3", - "prompt": "^1.0.0", - "react": "^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "prettier": "^1.19.1", + "prompt": "^1.3.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", "react-i18next": "^13.5.0", - "replace-in-file": "^3.4.2", - "rimraf": "^2.6.2", - "rollup": "^0.67.0", - "rollup-plugin-commonjs": "^9.1.8", + "replace-in-file": "^3.4.4", + "rimraf": "^2.7.1", + "rollup": "^0.67.4", + "rollup-plugin-commonjs": "^9.3.4", "rollup-plugin-json": "^3.1.0", "rollup-plugin-node-resolve": "^3.4.0", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-typescript2": "^0.18.0", - "semantic-release": "^15.9.16", - "shelljs": "^0.8.3", - "travis-deploy-once": "^5.0.9", - "ts-jest": "^23.10.2", + "rollup-plugin-typescript2": "^0.18.1", + "semantic-release": "^15.14.0", + "shelljs": "^0.8.5", + "travis-deploy-once": "^5.0.11", + "ts-jest": "^23.10.5", "ts-node": "^7.0.1", - "tslint": "^5.11.0", - "tslint-config-prettier": "^1.15.0", + "tslint": "^5.20.1", + "tslint-config-prettier": "^1.18.0", "tslint-config-standard": "^8.0.1", "typedoc": "^0.12.0", - "typescript": "^5.3.2" + "typescript": "^5.4.2" } } diff --git a/lib/js/storage/package.json b/lib/js/storage/package.json index b7b2fb362..ebdb87be2 100644 --- a/lib/js/storage/package.json +++ b/lib/js/storage/package.json @@ -4,7 +4,7 @@ "public": true, "main": "index.ts", "dependencies": { - "js-cookie": "^3.0.5", - "@types/js-cookie": "^3.0.5" + "@types/js-cookie": "^3.0.6", + "js-cookie": "^3.0.5" } } diff --git a/lib/js/theme-editor/package.json b/lib/js/theme-editor/package.json index 049f02eb2..a2edaf51d 100644 --- a/lib/js/theme-editor/package.json +++ b/lib/js/theme-editor/package.json @@ -7,22 +7,22 @@ "main": "index.ts", "license": "MIT", "peerDependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0", - "@mui/material": "^5.15.1", "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0" + "@emotion/styled": "^11.11.0", + "@mui/material": "^5.15.13", + "react": "^18.2.0", + "react-dom": "^18.2.0" }, "dependencies": { "@alchemy/storage": "workspace:*" }, "devDependencies": { - "@types/react": "^18.2.38", - "@types/react-dom": "^18.2.15", + "@emotion/react": "^11.11.4", + "@emotion/styled": "^11.11.0", + "@mui/material": "^5.15.13", + "@types/react": "^18.2.65", + "@types/react-dom": "^18.2.22", "react": "^18.2.0", - "react-dom": "^18.2.0", - "@mui/material": "^5.15.1", - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0" + "react-dom": "^18.2.0" } } diff --git a/lib/js/visual-workflow/package.json b/lib/js/visual-workflow/package.json index 698751ad5..299a5766b 100644 --- a/lib/js/visual-workflow/package.json +++ b/lib/js/visual-workflow/package.json @@ -8,7 +8,7 @@ "main": "./src/index.ts", "dependencies": { "react-icons": "^4.12.0", - "reactflow": "^11.10.1" + "reactflow": "^11.10.4" }, "peerDependencies": { "moment": "^2", @@ -16,25 +16,25 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@storybook/addon-essentials": "^7.5.3", - "@storybook/addon-interactions": "^7.5.3", - "@storybook/addon-links": "^7.5.3", - "@storybook/blocks": "^7.5.3", - "@storybook/react": "^7.5.3", - "@storybook/react-vite": "^7.5.3", + "@storybook/addon-essentials": "^7.6.17", + "@storybook/addon-interactions": "^7.6.17", + "@storybook/addon-links": "^7.6.17", + "@storybook/blocks": "^7.6.17", + "@storybook/react": "^7.6.17", + "@storybook/react-vite": "^7.6.17", "@storybook/testing-library": "0.0.14-next.2", - "@types/node": "^18.18.13", - "@types/react": "^18.2.38", - "@types/react-dom": "^18.2.17", + "@types/node": "^18.19.24", + "@types/react": "^18.2.65", + "@types/react-dom": "^18.2.22", "@vitejs/plugin-react": "^3.1.0", - "moment": "^2.29.4", + "moment": "^2.30.1", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", - "sass": "^1.69.5", - "storybook": "^7.5.3", - "typescript": "^5.3.2", - "vite": "^5.0.2", - "vite-plugin-dts": "^3.6.3" + "sass": "^1.71.1", + "storybook": "^7.6.17", + "typescript": "^5.4.2", + "vite": "^5.1.6", + "vite-plugin-dts": "^3.7.3" } } diff --git a/lib/php/admin-bundle/Controller/Acl/AbstractAclAdminCrudController.php b/lib/php/admin-bundle/Controller/Acl/AbstractAclAdminCrudController.php index 560510eb3..e54fa3fc8 100644 --- a/lib/php/admin-bundle/Controller/Acl/AbstractAclAdminCrudController.php +++ b/lib/php/admin-bundle/Controller/Acl/AbstractAclAdminCrudController.php @@ -42,6 +42,7 @@ public function configureActions(Actions $actions): Actions public function permissions(AdminContext $adminContext, AdminUrlGenerator $adminUrlGenerator): Response { + /** @var object $entity */ $entity = $adminContext->getEntity()->getInstance(); $id = $entity->getId(); diff --git a/lib/php/core-bundle/DependencyInjection/AlchemyCoreExtension.php b/lib/php/core-bundle/DependencyInjection/AlchemyCoreExtension.php index cc97f9841..a4011e927 100644 --- a/lib/php/core-bundle/DependencyInjection/AlchemyCoreExtension.php +++ b/lib/php/core-bundle/DependencyInjection/AlchemyCoreExtension.php @@ -17,6 +17,8 @@ use Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler; use Symfony\Component\HttpKernel\DependencyInjection\Extension; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; +use Symfony\Component\HttpKernel\Exception\HttpException; +use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException; use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException; @@ -149,6 +151,8 @@ public function prepend(ContainerBuilder $container): void ValidationException::class, UnauthorizedHttpException::class, AccessDeniedException::class, + HttpException::class, + MethodNotAllowedHttpException::class, ], ] ]); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cdec409b4..d02e7fe5d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,11 +36,11 @@ importers: specifier: workspace:* version: link:../../lib/js/theme-editor '@mui/icons-material': - specifier: ^5.15.0 - version: 5.15.0(@mui/material@5.15.1)(@types/react@18.2.39)(react@18.2.0) + specifier: ^5.15.13 + version: 5.15.13(@mui/material@5.15.13)(@types/react@18.2.65)(react@18.2.0) '@mui/material': - specifier: ^5.15.1 - version: 5.15.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.15.13 + version: 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -55,38 +55,38 @@ importers: version: 13.5.0(i18next@23.10.1)(react-dom@18.2.0)(react@18.2.0) vite-plugin-svgr: specifier: ^4.2.0 - version: 4.2.0(typescript@5.3.2)(vite@5.0.7) + version: 4.2.0(typescript@5.4.2)(vite@5.1.6) devDependencies: '@types/node': - specifier: ^18.8.5 - version: 18.18.13 + specifier: ^18.19.24 + version: 18.19.24 '@types/react': - specifier: ^18.2.37 - version: 18.2.39 + specifier: ^18.2.65 + version: 18.2.65 '@types/react-dom': - specifier: ^18.2.15 - version: 18.2.17 + specifier: ^18.2.22 + version: 18.2.22 '@typescript-eslint/eslint-plugin': - specifier: ^6.10.0 - version: 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.3.2) + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/parser': - specifier: ^6.10.0 - version: 6.12.0(eslint@8.54.0)(typescript@5.3.2) + specifier: ^6.21.0 + version: 6.21.0(eslint@8.57.0)(typescript@5.4.2) '@vitejs/plugin-react-swc': - specifier: ^3.5.0 - version: 3.5.0(vite@5.0.7) + specifier: ^3.6.0 + version: 3.6.0(vite@5.1.6) eslint: - specifier: ^8.53.0 - version: 8.54.0 + specifier: ^8.57.0 + version: 8.57.0 typescript: - specifier: ^5.2.2 - version: 5.3.2 + specifier: ^5.4.2 + version: 5.4.2 vite: - specifier: ^5.0.0 - version: 5.0.7(@types/node@18.18.13) + specifier: ^5.1.6 + version: 5.1.6(@types/node@18.19.24)(sass@1.71.1) vite-plugin-checker: - specifier: ^0.6.2 - version: 0.6.2(eslint@8.54.0)(typescript@5.3.2)(vite@5.0.7) + specifier: ^0.6.4 + version: 0.6.4(eslint@8.57.0)(typescript@5.4.2)(vite@5.1.6) databox/client: dependencies: @@ -124,82 +124,85 @@ importers: specifier: workspace:* version: link:../../lib/js/visual-workflow '@algolia/autocomplete-core': - specifier: ^1.16.0 - version: 1.16.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) + specifier: ^1.17.0 + version: 1.17.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) '@algolia/autocomplete-theme-classic': - specifier: ^1.16.0 - version: 1.16.0 + specifier: ^1.17.0 + version: 1.17.0 '@dnd-kit/core': - specifier: ^6.0.5 + specifier: ^6.1.0 version: 6.1.0(react-dom@18.2.0)(react@18.2.0) '@dnd-kit/sortable': - specifier: ^7.0.1 + specifier: ^7.0.2 version: 7.0.2(@dnd-kit/core@6.1.0)(react@18.2.0) '@dnd-kit/utilities': - specifier: ^3.2.0 + specifier: ^3.2.2 version: 3.2.2(react@18.2.0) '@emotion/react': - specifier: ^11.11.1 - version: 11.11.1(@types/react@18.2.39)(react@18.2.0) + specifier: ^11.11.4 + version: 11.11.4(@types/react@18.2.65)(react@18.2.0) '@emotion/styled': specifier: ^11.11.0 - version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.39)(react@18.2.0) + version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.65)(react@18.2.0) '@mui/icons-material': - specifier: ^5.15.0 - version: 5.15.0(@mui/material@5.15.1)(@types/react@18.2.39)(react@18.2.0) + specifier: ^5.15.13 + version: 5.15.13(@mui/material@5.15.13)(@types/react@18.2.65)(react@18.2.0) '@mui/lab': - specifier: ^5.0.0-alpha.157 - version: 5.0.0-alpha.157(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.1)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + specifier: 5.0.0-alpha.168 + version: 5.0.0-alpha.168(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.13)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) '@mui/material': - specifier: ^5.15.1 - version: 5.15.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.15.13 + version: 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) '@mui/x-tree-view': specifier: ^6.17.0 - version: 6.17.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.1)(@mui/system@5.15.12)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + version: 6.17.0(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.13)(@mui/system@5.15.13)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) '@toast-ui/react-image-editor': specifier: ^3.15.2 version: 3.15.2(react@18.2.0) ace-builds: - specifier: ^1.14.0 - version: 1.31.2 + specifier: ^1.32.7 + version: 1.32.7 axios: - specifier: ^1.6.2 - version: 1.6.2 + specifier: ^1.6.7 + version: 1.6.7 byte-size: - specifier: ^8.1.0 + specifier: ^8.1.1 version: 8.1.1 + classnames: + specifier: ^2.5.1 + version: 2.5.1 clipboard-copy: specifier: ^4.0.1 version: 4.0.1 country-locale-map: - specifier: ^1.8.0 - version: 1.8.15 + specifier: ^1.9.4 + version: 1.9.4 flag-icons: - specifier: ^6.6.3 + specifier: ^6.15.0 version: 6.15.0 formik: - specifier: ^2.2.9 + specifier: ^2.4.5 version: 2.4.5(react@18.2.0) formik-material-ui: - specifier: ^4.0.0-alpha.2 - version: 4.0.0-alpha.2(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.1)(formik@2.4.5)(react@18.2.0)(tiny-warning@1.0.3) + specifier: 4.0.0-alpha.2 + version: 4.0.0-alpha.2(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.13)(formik@2.4.5)(react@18.2.0)(tiny-warning@1.0.3) i18next: - specifier: ^23.7.7 + specifier: ^23.10.1 version: 23.10.1 i18next-browser-languagedetector: - specifier: ^6.1.4 + specifier: ^6.1.8 version: 6.1.8 ismounted: specifier: ^0.1.8 version: 0.1.8(react@18.2.0) leaflet: - specifier: ^1.9.3 + specifier: ^1.9.4 version: 1.9.4 moment: - specifier: ^2.29.4 - version: 2.29.4 + specifier: ^2.30.1 + version: 2.30.1 react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-ace: specifier: ^10.1.0 @@ -208,11 +211,11 @@ importers: specifier: ^5.6.1 version: 5.6.1(react-dom@18.2.0)(react@18.2.0) react-compare-image: - specifier: ^3.1.0 + specifier: ^3.4.0 version: 3.4.0(react-dom@18.2.0)(react@18.2.0) react-dnd: specifier: ^16.0.1 - version: 16.0.1(@types/node@18.18.13)(@types/react@18.2.39)(react@18.2.0) + version: 16.0.1(@types/node@18.19.24)(@types/react@18.2.65)(react@18.2.0) react-dnd-html5-backend: specifier: ^16.0.1 version: 16.0.1 @@ -220,7 +223,7 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) react-dropzone: - specifier: ^14.2.1 + specifier: ^14.2.3 version: 14.2.3(react@18.2.0) react-hook-form: specifier: ^7.51.0 @@ -229,114 +232,123 @@ importers: specifier: ^13.5.0 version: 13.5.0(i18next@23.10.1)(react-dom@18.2.0)(react@18.2.0) react-leaflet: - specifier: ^4.2.0 + specifier: ^4.2.1 version: 4.2.1(leaflet@1.9.4)(react-dom@18.2.0)(react@18.2.0) react-nl2br: - specifier: ^1.0.3 + specifier: ^1.0.4 version: 1.0.4(react@18.2.0) react-pdf: - specifier: ^7.5.1 - version: 7.5.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.7.1 + version: 7.7.1(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) react-player: - specifier: ^2.10.1 - version: 2.13.0(react@18.2.0) + specifier: ^2.15.1 + version: 2.15.1(react@18.2.0) react-select: - specifier: ^5.3.2 - version: 5.8.0(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.8.0 + version: 5.8.0(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) react-string-replace: - specifier: ^1.1.0 + specifier: ^1.1.1 version: 1.1.1 react-toastify: specifier: ^9.1.3 version: 9.1.3(react-dom@18.2.0)(react@18.2.0) + react-virtualized: + specifier: ^9.22.5 + version: 9.22.5(react-dom@18.2.0)(react@18.2.0) sass: - specifier: ^1.60.0 - version: 1.69.5 + specifier: ^1.71.1 + version: 1.71.1 tui-image-editor: specifier: ^3.15.3 version: 3.15.3 uuid: - specifier: ^9.0.0 + specifier: ^9.0.1 version: 9.0.1 web-vitals: specifier: ^2.1.4 version: 2.1.4 zustand: - specifier: ^4.5.0 - version: 4.5.0(@types/react@18.2.39)(react@18.2.0) + specifier: ^4.5.2 + version: 4.5.2(@types/react@18.2.65)(react@18.2.0) devDependencies: '@testing-library/jest-dom': - specifier: ^6.1.5 - version: 6.1.5(@types/jest@27.5.2)(jest@23.6.0) + specifier: ^6.4.2 + version: 6.4.2(@types/jest@27.5.2)(jest@23.6.0) '@testing-library/react': - specifier: ^14.1.2 - version: 14.1.2(react-dom@18.2.0)(react@18.2.0) + specifier: ^14.2.1 + version: 14.2.1(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': - specifier: ^14.1.1 - version: 14.5.1(@testing-library/dom@9.3.4) + specifier: ^14.5.2 + version: 14.5.2(@testing-library/dom@9.3.4) '@types/byte-size': - specifier: ^8.1.0 + specifier: ^8.1.2 version: 8.1.2 '@types/jest': specifier: ^27.5.2 version: 27.5.2 '@types/leaflet': - specifier: ^1.9.0 + specifier: ^1.9.8 version: 1.9.8 '@types/node': - specifier: ^18.8.5 - version: 18.18.13 + specifier: ^18.19.24 + version: 18.19.24 '@types/react': - specifier: ^18.2.37 - version: 18.2.39 + specifier: ^18.2.65 + version: 18.2.65 '@types/react-dom': - specifier: ^18.2.15 - version: 18.2.17 + specifier: ^18.2.22 + version: 18.2.22 '@types/react-select': specifier: ^5.0.1 - version: 5.0.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + version: 5.0.1(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@types/react-virtualized': + specifier: ^9.21.29 + version: 9.21.29 '@types/testing-library__jest-dom': specifier: ^6.0.0 version: 6.0.0(@types/jest@27.5.2)(jest@23.6.0) '@types/uuid': - specifier: ^9.0.0 - version: 9.0.7 + specifier: ^9.0.8 + version: 9.0.8 '@typescript-eslint/eslint-plugin': - specifier: ^6.10.0 - version: 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.57.0)(typescript@5.3.2) + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/parser': - specifier: ^6.10.0 - version: 6.12.0(eslint@8.57.0)(typescript@5.3.2) + specifier: ^6.21.0 + version: 6.21.0(eslint@8.57.0)(typescript@5.4.2) '@vitejs/plugin-react-swc': - specifier: ^3.5.0 - version: 3.5.0(vite@5.0.2) + specifier: ^3.6.0 + version: 3.6.0(vite@5.1.6) + esbuild-plugin-react-virtualized: + specifier: ^1.0.4 + version: 1.0.4(esbuild@0.19.12) eslint-plugin-react-hooks: specifier: ^4.6.0 version: 4.6.0(eslint@8.57.0) eslint-plugin-react-refresh: - specifier: ^0.4.4 - version: 0.4.4(eslint@8.57.0) + specifier: ^0.4.6 + version: 0.4.6(eslint@8.57.0) eslint-plugin-unused-imports: - specifier: ^3.0.0 - version: 3.0.0(@typescript-eslint/eslint-plugin@6.12.0)(eslint@8.57.0) - i18next-scanner: specifier: ^3.1.0 + version: 3.1.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.0) + i18next-scanner: + specifier: ^3.3.0 version: 3.3.0 ts-jest: - specifier: ^23.10.2 + specifier: ^23.10.5 version: 23.10.5(jest@23.6.0) typescript: - specifier: ^5.2.2 - version: 5.3.2 + specifier: ^5.4.2 + version: 5.4.2 vite: - specifier: ^5.0.0 - version: 5.0.2(@types/node@18.18.13)(sass@1.69.5) + specifier: ^5.1.6 + version: 5.1.6(@types/node@18.19.24)(sass@1.71.1) vite-plugin-checker: - specifier: ^0.6.2 - version: 0.6.2(eslint@8.57.0)(typescript@5.3.2)(vite@5.0.2) + specifier: ^0.6.4 + version: 0.6.4(eslint@8.57.0)(typescript@5.4.2)(vite@5.1.6) vite-plugin-svgr: specifier: ^4.2.0 - version: 4.2.0(typescript@5.3.2)(vite@5.0.2) + version: 4.2.0(typescript@5.4.2)(vite@5.1.6) databox/indexer: dependencies: @@ -353,66 +365,66 @@ importers: specifier: ^0.10.3 version: 0.10.3 axios: - specifier: ^1.6.2 - version: 1.6.2 + specifier: ^1.6.7 + version: 1.6.7 axios-retry: specifier: ^4.0.0 - version: 4.0.0(axios@1.6.2) + version: 4.0.0(axios@1.6.7) chokidar: - specifier: ^3.5.3 - version: 3.5.3 + specifier: ^3.6.0 + version: 3.6.0 commander: specifier: ^11.1.0 version: 11.1.0 express: - specifier: ^4.18.2 - version: 4.18.2 + specifier: ^4.18.3 + version: 4.18.3 minio: specifier: ^7.1.3 version: 7.1.3 winston: - specifier: ^3.11.0 - version: 3.11.0 + specifier: ^3.12.0 + version: 3.12.0 devDependencies: '@api-platform/create-client': specifier: ^0.10.0 version: 0.10.0 '@types/amqplib': - specifier: ^0.10.4 - version: 0.10.4 + specifier: ^0.10.5 + version: 0.10.5 '@types/express': - specifier: ^4.17.13 + specifier: ^4.17.21 version: 4.17.21 '@types/minio': specifier: ^7.1.1 version: 7.1.1 '@types/node': - specifier: ^18.8.5 - version: 18.18.13 + specifier: ^18.19.24 + version: 18.19.24 '@typescript-eslint/eslint-plugin': - specifier: ^6.10.0 - version: 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.57.0)(typescript@5.3.2) + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/parser': - specifier: ^6.10.0 - version: 6.12.0(eslint@8.57.0)(typescript@5.3.2) + specifier: ^6.21.0 + version: 6.21.0(eslint@8.57.0)(typescript@5.4.2) nodemon: - specifier: ^3.0.2 - version: 3.0.2 + specifier: ^3.1.0 + version: 3.1.0 rimraf: specifier: ^5.0.5 version: 5.0.5 ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@18.18.13)(typescript@5.3.2) + specifier: ^10.9.2 + version: 10.9.2(@types/node@18.19.24)(typescript@5.4.2) typescript: - specifier: ^5.3.2 - version: 5.3.2 + specifier: ^5.4.2 + version: 5.4.2 vite: - specifier: ^5.0.7 - version: 5.0.7(@types/node@18.18.13) + specifier: ^5.1.6 + version: 5.1.6(@types/node@18.19.24)(sass@1.71.1) vite-plugin-node: specifier: ^3.1.0 - version: 3.1.0(vite@5.0.7) + version: 3.1.0(vite@5.1.6) expose/client: dependencies: @@ -444,43 +456,43 @@ importers: specifier: ^5.5.1 version: 5.5.1(react@18.2.0) '@mui/icons-material': - specifier: ^5.15.1 - version: 5.15.1(@mui/material@5.15.1)(@types/react@18.2.38)(react@18.2.0) + specifier: ^5.15.13 + version: 5.15.13(@mui/material@5.15.13)(@types/react@18.2.65)(react@18.2.0) '@mui/material': - specifier: ^5.15.1 - version: 5.15.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.15.13 + version: 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) axios: - specifier: ^1.1.3 - version: 1.6.2 + specifier: ^1.6.7 + version: 1.6.7 bootstrap: - specifier: ^4.5.0 + specifier: ^4.6.2 version: 4.6.2(jquery@3.7.1)(popper.js@1.16.1) flow-bin: specifier: ^0.126.1 version: 0.126.1 i18next: - specifier: ^23.7.7 + specifier: ^23.10.1 version: 23.10.1 i18next-browser-languagedetector: - specifier: ^6.1.2 + specifier: ^6.1.8 version: 6.1.8 mapbox-gl: - specifier: ^1.10.1 + specifier: ^1.13.3 version: 1.13.3 moment: - specifier: ^2.29.4 - version: 2.29.4 + specifier: ^2.30.1 + version: 2.30.1 react: specifier: ^18.2.0 version: 18.2.0 react-bootstrap: - specifier: ^1.0.1 - version: 1.6.7(react-dom@18.2.0)(react@18.2.0) + specifier: ^1.6.8 + version: 1.6.8(react-dom@18.2.0)(react@18.2.0) react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) react-grid-gallery: - specifier: ^0.5.5 + specifier: ^0.5.6 version: 0.5.6(react-dom@18.2.0)(react@18.2.0) react-i18next: specifier: ^13.5.0 @@ -489,90 +501,90 @@ importers: specifier: ^0.9.1 version: 0.9.1(react@18.2.0) react-image-magnifiers: - specifier: ^1.3.2 + specifier: ^1.4.0 version: 1.4.0(react-dom@18.2.0)(react@18.2.0) react-images: specifier: ^1.1.7 - version: 1.1.7(@types/react@18.2.38)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) + version: 1.1.7(@types/react@18.2.65)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) react-toastify: specifier: ^9.1.3 version: 9.1.3(react-dom@18.2.0)(react@18.2.0) sass: - specifier: ^1.44.0 - version: 1.69.5 + specifier: ^1.71.1 + version: 1.71.1 sass-loader: - specifier: ^8.0.0 - version: 8.0.2(sass@1.69.5)(webpack@5.90.3) + specifier: ^8.0.2 + version: 8.0.2(sass@1.71.1)(webpack@5.90.3) universal-cookie: - specifier: ^4.0.2 + specifier: ^4.0.4 version: 4.0.4 video.js: - specifier: ^7.8.3 + specifier: ^7.21.5 version: 7.21.5 videojs-font: specifier: ^4.1.0 version: 4.1.0 devDependencies: '@types/jest': - specifier: ^26.0.0 + specifier: ^26.0.24 version: 26.0.24 '@types/node': - specifier: ^18.8.5 - version: 18.18.13 + specifier: ^18.19.24 + version: 18.19.24 '@types/react': - specifier: ^18.2.37 - version: 18.2.38 + specifier: ^18.2.65 + version: 18.2.65 '@types/react-dom': - specifier: ^18.2.15 - version: 18.2.17 + specifier: ^18.2.22 + version: 18.2.22 '@types/react-image-magnifiers': - specifier: ^1.3.2 + specifier: ^1.3.5 version: 1.3.5 '@types/video.js': - specifier: ^7.3.51 - version: 7.3.56 + specifier: ^7.3.57 + version: 7.3.57 '@typescript-eslint/eslint-plugin': - specifier: ^6.10.0 - version: 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.3.2) + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/parser': - specifier: ^6.10.0 - version: 6.12.0(eslint@8.54.0)(typescript@5.3.2) + specifier: ^6.21.0 + version: 6.21.0(eslint@8.57.0)(typescript@5.4.2) '@vitejs/plugin-react-swc': - specifier: ^3.5.0 - version: 3.5.0(vite@5.0.2) + specifier: ^3.6.0 + version: 3.6.0(vite@5.1.6) eslint: - specifier: ^8.53.0 - version: 8.54.0 + specifier: ^8.57.0 + version: 8.57.0 eslint-plugin-react-hooks: specifier: ^4.6.0 - version: 4.6.0(eslint@8.54.0) + version: 4.6.0(eslint@8.57.0) eslint-plugin-react-refresh: - specifier: ^0.4.4 - version: 0.4.4(eslint@8.54.0) + specifier: ^0.4.6 + version: 0.4.6(eslint@8.57.0) i18next-scanner: - specifier: ^3.0.0 + specifier: ^3.3.0 version: 3.3.0 typescript: - specifier: ^5.2.2 - version: 5.3.2 + specifier: ^5.4.2 + version: 5.4.2 vite: - specifier: ^5.0.0 - version: 5.0.2(@types/node@18.18.13)(sass@1.69.5) + specifier: ^5.1.6 + version: 5.1.6(@types/node@18.19.24)(sass@1.71.1) vite-plugin-checker: - specifier: ^0.6.2 - version: 0.6.2(eslint@8.54.0)(typescript@5.3.2)(vite@5.0.2) + specifier: ^0.6.4 + version: 0.6.4(eslint@8.57.0)(typescript@5.4.2)(vite@5.1.6) vite-plugin-svgr: specifier: ^4.2.0 - version: 4.2.0(typescript@5.3.2)(vite@5.0.2) + version: 4.2.0(typescript@5.4.2)(vite@5.1.6) lib/js/api: devDependencies: '@types/react': - specifier: ^18.2.37 - version: 18.2.39 + specifier: ^18.2.65 + version: 18.2.65 axios: - specifier: ^1.6.2 - version: 1.6.2 + specifier: ^1.6.7 + version: 1.6.7 react: specifier: ^18.2.0 version: 18.2.0 @@ -614,30 +626,30 @@ importers: specifier: ^10.17.60 version: 10.17.60 axios: - specifier: ^1.6.2 - version: 1.6.2 + specifier: ^1.6.7 + version: 1.6.7 ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@10.17.60)(typescript@5.3.2) + specifier: ^10.9.2 + version: 10.9.2(@types/node@10.17.60)(typescript@5.4.2) typescript: - specifier: ^5.3.2 - version: 5.3.2 + specifier: ^5.4.2 + version: 5.4.2 lib/js/core: dependencies: '@sentry/react': - specifier: ^7.86.0 - version: 7.86.0(react@18.2.0) + specifier: ^7.106.1 + version: 7.106.1(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 devDependencies: '@sentry/types': - specifier: ^7.86.0 - version: 7.86.0 + specifier: ^7.106.1 + version: 7.106.1 '@types/react': - specifier: ^18.2.37 - version: 18.2.39 + specifier: ^18.2.65 + version: 18.2.65 lib/js/liform-react: dependencies: @@ -645,26 +657,26 @@ importers: specifier: ^8.12.0 version: 8.12.0 classnames: - specifier: ^2.2.5 - version: 2.3.2 + specifier: ^2.5.1 + version: 2.5.1 deepmerge: - specifier: ^2.0.1 + specifier: ^2.2.1 version: 2.2.1 lodash: specifier: ^4.17.21 version: 4.17.21 prop-types: - specifier: ^15.5.10 + specifier: ^15.8.1 version: 15.8.1 react-redux: - specifier: ^9.0.4 - version: 9.0.4(react@18.2.0)(redux@4.2.1) + specifier: ^9.1.0 + version: 9.1.0(@types/react@18.2.65)(react@18.2.0)(redux@4.2.1) redux: specifier: ^4.2.1 version: 4.2.1 redux-form: specifier: ^8.3.10 - version: 8.3.10(react-redux@9.0.4)(react@18.2.0)(redux@4.2.1) + version: 8.3.10(react-redux@9.1.0)(react@18.2.0)(redux@4.2.1) devDependencies: react: specifier: ^18.2.0 @@ -692,8 +704,8 @@ importers: specifier: ^0.7.0 version: 0.7.0(react@18.2.0) '@types/react': - specifier: ^18.2.37 - version: 18.2.39 + specifier: ^18.2.65 + version: 18.2.65 i18next: specifier: ^23.10.1 version: 23.10.1 @@ -707,21 +719,21 @@ importers: lib/js/phrasea-ui: dependencies: styled-components: - specifier: ^6.1.1 - version: 6.1.1(react-dom@18.2.0)(react@18.2.0) + specifier: ^6.1.8 + version: 6.1.8(react-dom@18.2.0)(react@18.2.0) devDependencies: '@alchemy/navigation': specifier: workspace:* version: link:../navigation '@mui/icons-material': - specifier: ^5.15.1 - version: 5.15.1(@mui/material@5.15.1)(@types/react@18.2.39)(react@18.2.0) + specifier: ^5.15.13 + version: 5.15.13(@mui/material@5.15.13)(@types/react@18.2.65)(react@18.2.0) '@mui/material': - specifier: ^5.15.1 - version: 5.15.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.15.13 + version: 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) '@types/react': - specifier: ^18.2.37 - version: 18.2.39 + specifier: ^18.2.65 + version: 18.2.65 react: specifier: ^18.2.0 version: 18.2.0 @@ -754,11 +766,11 @@ importers: specifier: ^0.7.0 version: 0.7.0(react@18.2.0) '@mui/lab': - specifier: ^5.0.0-alpha.157 - version: 5.0.0-alpha.157(@mui/material@5.15.1)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + specifier: 5.0.0-alpha.168 + version: 5.0.0-alpha.168(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.13)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) '@mui/material': - specifier: ^5.15.1 - version: 5.15.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.15.13 + version: 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) '@types/jest': specifier: ^23.3.14 version: 23.3.14 @@ -769,26 +781,26 @@ importers: specifier: ^10.17.60 version: 10.17.60 '@types/react': - specifier: ^18.2.38 - version: 18.2.39 + specifier: ^18.2.65 + version: 18.2.65 axios: - specifier: ^1.6.2 - version: 1.6.2 + specifier: ^1.6.7 + version: 1.6.7 react-i18next: specifier: ^13.5.0 version: 13.5.0(i18next@23.10.1)(react-dom@18.2.0)(react@18.2.0) react-router-dom: - specifier: ^6.18.0 + specifier: 6.18.0 version: 6.18.0(react-dom@18.2.0)(react@18.2.0) react-toastify: specifier: ^9.1.3 version: 9.1.3(react-dom@18.2.0)(react@18.2.0) ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@10.17.60)(typescript@5.3.2) + specifier: ^10.9.2 + version: 10.9.2(@types/node@10.17.60)(typescript@5.4.2) typescript: - specifier: ^5.3.2 - version: 5.3.2 + specifier: ^5.4.2 + version: 5.4.2 lib/js/react-form: dependencies: @@ -803,10 +815,10 @@ importers: version: 3.2.2(react@18.2.0) '@mui/icons-material': specifier: ^5.15.12 - version: 5.15.12(@mui/material@5.15.1)(@types/react@18.2.39)(react@18.2.0) + version: 5.15.13(@mui/material@5.15.13)(@types/react@18.2.65)(react@18.2.0) '@mui/lab': specifier: ^5.0.0-alpha.167 - version: 5.0.0-alpha.167(@mui/material@5.15.1)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + version: 5.0.0-alpha.168(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.13)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -824,7 +836,7 @@ importers: version: 1.0.4(react@18.2.0) react-select: specifier: ^5.8.0 - version: 5.8.0(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + version: 5.8.0(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) devDependencies: '@alchemy/api': specifier: workspace:* @@ -836,32 +848,32 @@ importers: specifier: workspace:* version: link:../phrasea-ui '@mui/material': - specifier: ^5.15.1 - version: 5.15.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.15.13 + version: 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) '@types/node': specifier: ^10.17.60 version: 10.17.60 '@types/react': - specifier: ^18.2.38 - version: 18.2.39 + specifier: ^18.2.65 + version: 18.2.65 react-toastify: specifier: ^9.1.3 version: 9.1.3(react-dom@18.2.0)(react@18.2.0) typescript: - specifier: ^5.3.2 - version: 5.3.2 + specifier: ^5.4.2 + version: 5.4.2 lib/js/react-hooks: devDependencies: '@types/node': - specifier: ^10.11.0 + specifier: ^10.17.60 version: 10.17.60 '@types/react': - specifier: ^18.2.39 - version: 18.2.39 + specifier: ^18.2.65 + version: 18.2.65 axios: - specifier: ^1.6.2 - version: 1.6.2 + specifier: ^1.6.7 + version: 1.6.7 react: specifier: ^18.2.0 version: 18.2.0 @@ -879,49 +891,49 @@ importers: version: 3.1.2 devDependencies: '@commitlint/cli': - specifier: ^7.1.2 + specifier: ^7.6.1 version: 7.6.1 '@commitlint/config-conventional': - specifier: ^7.1.2 + specifier: ^7.6.0 version: 7.6.0 '@svgr/cli': - specifier: ^6.5.0 + specifier: ^6.5.1 version: 6.5.1 '@types/jest': - specifier: ^23.3.2 + specifier: ^23.3.14 version: 23.3.14 '@types/js-cookie': - specifier: ^3.0.3 + specifier: ^3.0.6 version: 3.0.6 '@types/node': - specifier: ^10.11.0 + specifier: ^10.17.60 version: 10.17.60 '@types/react': - specifier: ^18.0.21 - version: 18.2.38 + specifier: ^18.2.65 + version: 18.2.65 axios: - specifier: ^1.1.3 - version: 1.6.2 + specifier: ^1.6.7 + version: 1.6.7 colors: - specifier: ^1.3.2 + specifier: ^1.4.0 version: 1.4.0 commitizen: - specifier: ^3.0.0 + specifier: ^3.1.2 version: 3.1.2 coveralls: - specifier: ^3.0.2 + specifier: ^3.1.1 version: 3.1.1 cross-env: - specifier: ^5.2.0 + specifier: ^5.2.1 version: 5.2.1 cz-conventional-changelog: specifier: ^2.1.0 version: 2.1.0 husky: - specifier: ^1.0.1 + specifier: ^1.3.1 version: 1.3.1 i18next-browser-languagedetector: - specifier: ^7.0.1 + specifier: ^7.2.0 version: 7.2.0 jest: specifier: ^23.6.0 @@ -930,37 +942,37 @@ importers: specifier: ^23.6.0 version: 23.6.0 lint-staged: - specifier: ^8.0.0 + specifier: ^8.2.1 version: 8.2.1 lodash.camelcase: specifier: ^4.3.0 version: 4.3.0 prettier: - specifier: ^1.14.3 + specifier: ^1.19.1 version: 1.19.1 prompt: - specifier: ^1.0.0 + specifier: ^1.3.0 version: 1.3.0 react: - specifier: ^18.0.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) react-i18next: specifier: ^13.5.0 version: 13.5.0(i18next@23.10.1)(react-dom@18.2.0)(react@18.2.0) replace-in-file: - specifier: ^3.4.2 + specifier: ^3.4.4 version: 3.4.4 rimraf: - specifier: ^2.6.2 + specifier: ^2.7.1 version: 2.7.1 rollup: - specifier: ^0.67.0 + specifier: ^0.67.4 version: 0.67.4 rollup-plugin-commonjs: - specifier: ^9.1.8 + specifier: ^9.3.4 version: 9.3.4(rollup@0.67.4) rollup-plugin-json: specifier: ^3.1.0 @@ -972,43 +984,43 @@ importers: specifier: ^0.4.2 version: 0.4.2(rollup@0.67.4) rollup-plugin-typescript2: - specifier: ^0.18.0 - version: 0.18.1(rollup@0.67.4)(typescript@5.3.2) + specifier: ^0.18.1 + version: 0.18.1(rollup@0.67.4)(typescript@5.4.2) semantic-release: - specifier: ^15.9.16 + specifier: ^15.14.0 version: 15.14.0(@octokit/core@6.0.1) shelljs: - specifier: ^0.8.3 + specifier: ^0.8.5 version: 0.8.5 travis-deploy-once: - specifier: ^5.0.9 + specifier: ^5.0.11 version: 5.0.11 ts-jest: - specifier: ^23.10.2 + specifier: ^23.10.5 version: 23.10.5(jest@23.6.0) ts-node: specifier: ^7.0.1 version: 7.0.1 tslint: - specifier: ^5.11.0 - version: 5.20.1(typescript@5.3.2) + specifier: ^5.20.1 + version: 5.20.1(typescript@5.4.2) tslint-config-prettier: - specifier: ^1.15.0 + specifier: ^1.18.0 version: 1.18.0 tslint-config-standard: specifier: ^8.0.1 - version: 8.0.1(tslint@5.20.1)(typescript@5.3.2) + version: 8.0.1(tslint@5.20.1)(typescript@5.4.2) typedoc: specifier: ^0.12.0 version: 0.12.0 typescript: - specifier: ^5.3.2 - version: 5.3.2 + specifier: ^5.4.2 + version: 5.4.2 lib/js/storage: dependencies: '@types/js-cookie': - specifier: ^3.0.5 + specifier: ^3.0.6 version: 3.0.6 js-cookie: specifier: ^3.0.5 @@ -1021,20 +1033,20 @@ importers: version: link:../storage devDependencies: '@emotion/react': - specifier: ^11.11.1 - version: 11.11.1(@types/react@18.2.39)(react@18.2.0) + specifier: ^11.11.4 + version: 11.11.4(@types/react@18.2.65)(react@18.2.0) '@emotion/styled': specifier: ^11.11.0 - version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.39)(react@18.2.0) + version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.65)(react@18.2.0) '@mui/material': - specifier: ^5.15.1 - version: 5.15.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.15.13 + version: 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) '@types/react': - specifier: ^18.2.38 - version: 18.2.39 + specifier: ^18.2.65 + version: 18.2.65 '@types/react-dom': - specifier: ^18.2.15 - version: 18.2.17 + specifier: ^18.2.22 + version: 18.2.22 react: specifier: ^18.2.0 version: 18.2.0 @@ -1048,45 +1060,45 @@ importers: specifier: ^4.12.0 version: 4.12.0(react@18.2.0) reactflow: - specifier: ^11.10.1 - version: 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + specifier: ^11.10.4 + version: 11.10.4(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) devDependencies: '@storybook/addon-essentials': - specifier: ^7.5.3 - version: 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.17 + version: 7.6.17(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-interactions': - specifier: ^7.5.3 - version: 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.17 + version: 7.6.17 '@storybook/addon-links': - specifier: ^7.5.3 - version: 7.5.3(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.17 + version: 7.6.17(react@18.2.0) '@storybook/blocks': - specifier: ^7.5.3 - version: 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.17 + version: 7.6.17(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) '@storybook/react': - specifier: ^7.5.3 - version: 7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + specifier: ^7.6.17 + version: 7.6.17(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@storybook/react-vite': - specifier: ^7.5.3 - version: 7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2)(vite@5.0.2) + specifier: ^7.6.17 + version: 7.6.17(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2)(vite@5.1.6) '@storybook/testing-library': specifier: 0.0.14-next.2 version: 0.0.14-next.2 '@types/node': - specifier: ^18.18.13 - version: 18.18.13 + specifier: ^18.19.24 + version: 18.19.24 '@types/react': - specifier: ^18.2.38 - version: 18.2.38 + specifier: ^18.2.65 + version: 18.2.65 '@types/react-dom': - specifier: ^18.2.17 - version: 18.2.17 + specifier: ^18.2.22 + version: 18.2.22 '@vitejs/plugin-react': specifier: ^3.1.0 - version: 3.1.0(vite@5.0.2) + version: 3.1.0(vite@5.1.6) moment: - specifier: ^2.29.4 - version: 2.29.4 + specifier: ^2.30.1 + version: 2.30.1 prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -1097,20 +1109,20 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) sass: - specifier: ^1.69.5 - version: 1.69.5 + specifier: ^1.71.1 + version: 1.71.1 storybook: - specifier: ^7.5.3 - version: 7.5.3 + specifier: ^7.6.17 + version: 7.6.17 typescript: - specifier: ^5.3.2 - version: 5.3.2 + specifier: ^5.4.2 + version: 5.4.2 vite: - specifier: ^5.0.2 - version: 5.0.2(@types/node@18.18.13)(sass@1.69.5) + specifier: ^5.1.6 + version: 5.1.6(@types/node@18.19.24)(sass@1.71.1) vite-plugin-dts: - specifier: ^3.6.3 - version: 3.6.3(@types/node@18.18.13)(typescript@5.3.2)(vite@5.0.2) + specifier: ^3.7.3 + version: 3.7.3(@types/node@18.19.24)(typescript@5.4.2)(vite@5.1.6) uploader/client: dependencies: @@ -1139,11 +1151,11 @@ importers: specifier: workspace:* version: link:../../lib/js/react-ps '@mui/icons-material': - specifier: ^5.15.12 - version: 5.15.12(@mui/material@5.15.12)(@types/react@18.2.65)(react@18.2.0) + specifier: ^5.15.13 + version: 5.15.13(@mui/material@5.15.13)(@types/react@18.2.65)(react@18.2.0) '@mui/material': - specifier: ^5.15.12 - version: 5.15.12(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.15.13 + version: 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) '@reduxjs/toolkit': specifier: ^2.2.1 version: 2.2.1(react-redux@9.1.0)(react@18.2.0) @@ -1157,7 +1169,7 @@ importers: specifier: ^9.0.11 version: 9.0.11 i18next: - specifier: ^23.7.7 + specifier: ^23.10.1 version: 23.10.1 i18next-browser-languagedetector: specifier: ^6.1.8 @@ -1203,8 +1215,8 @@ importers: version: 4.2.0(typescript@5.4.2)(vite@5.1.6) devDependencies: '@types/node': - specifier: ^18.19.23 - version: 18.19.23 + specifier: ^18.19.24 + version: 18.19.24 '@types/react': specifier: ^18.2.65 version: 18.2.65 @@ -1212,8 +1224,8 @@ importers: specifier: ^2.8.7 version: 2.8.7 '@types/react-dom': - specifier: ^18.2.21 - version: 18.2.21 + specifier: ^18.2.22 + version: 18.2.22 '@typescript-eslint/eslint-plugin': specifier: ^6.21.0 version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.2) @@ -1240,7 +1252,7 @@ importers: version: 5.4.2 vite: specifier: ^5.1.6 - version: 5.1.6(@types/node@18.19.23)(sass@1.71.1) + version: 5.1.6(@types/node@18.19.24)(sass@1.71.1) vite-plugin-checker: specifier: ^0.6.4 version: 0.6.4(eslint@8.57.0)(typescript@5.4.2)(vite@5.1.6) @@ -1263,35 +1275,35 @@ packages: - supports-color dev: false - /@adobe/css-tools@4.3.1: - resolution: {integrity: sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==} + /@adobe/css-tools@4.3.3: + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} dev: true - /@algolia/autocomplete-core@1.16.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0): - resolution: {integrity: sha512-3tb1TPVNWxBwS8h9ezqLF2iSCFaw3lvh9k9A9kCIZjgABAluyhH2dveAa4Sc9OhJSHbxE1QaCq6t8mmUwN0UtA==} + /@algolia/autocomplete-core@1.17.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0): + resolution: {integrity: sha512-6E4sVb5+fGtSQs9mULlxUH84OWFUVZPMapa5dMCtUc7KyDRLY6+X/dA8xbDA8CX5phdBn1plLUET1B6NZnrZuw==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.16.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.16.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.17.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.16.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0): - resolution: {integrity: sha512-8Di68heyMeRJ5jJTONe4HQ2YMQ5bGlnSVIsJi7XEJW6tRI5m/lQSqpTdd0HOzhBruUpg4dKYK5ylpxD28WPTqg==} + /@algolia/autocomplete-plugin-algolia-insights@1.17.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0): + resolution: {integrity: sha512-zbWImu+VxBDzUQONEhQXq3OzlipHLEtWbL4Nf/VOb1p1qHG/f96jCegOzzEZVPiQvZpRJnmhCUmsYNHlIBxKWw==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-shared': 1.16.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + '@algolia/autocomplete-shared': 1.17.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false - /@algolia/autocomplete-shared@1.16.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1): - resolution: {integrity: sha512-h6ZJBJ1erx3D3RLLolOUdt+cEcUEraqxqm/dw9lm8nNeyGkVyrhjchJUMo5SkFeac/Gdp/wom7zAjC0yxB4NBA==} + /@algolia/autocomplete-shared@1.17.0(@algolia/client-search@4.22.1)(algoliasearch@4.22.1): + resolution: {integrity: sha512-7su4KH/2q2Fhud2VujUNhCMbIh7yp6wqWR3UuVje5P3kDRhTotPRmg3iRQi48YRYkk9o+airsrLl+rxJ/9FWng==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' @@ -1300,8 +1312,8 @@ packages: algoliasearch: 4.22.1 dev: false - /@algolia/autocomplete-theme-classic@1.16.0: - resolution: {integrity: sha512-Z9V1wbbbnx3Ahat6sbA+4fjPZZyNdP3c3CTm9ncqi2RDIUgxdSLVNr7BT8j4GGin5BoQF9N1tTGSXwwRAYkZYw==} + /@algolia/autocomplete-theme-classic@1.17.0: + resolution: {integrity: sha512-FsW/J/mG1YIPv93/QQ7KxMVNXAiVi9accGgoK2y3zDz58WpVgUug97SUoQzP4I9EMZAZAHQo0QbWXxpqTWkcOA==} dev: false /@algolia/cache-browser-local-storage@4.22.1: @@ -1394,13 +1406,6 @@ packages: '@algolia/requester-common': 4.22.1 dev: false - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - /@ampproject/remapping@2.3.0: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -1413,7 +1418,7 @@ packages: dependencies: graphql: 16.8.1 inflection: 1.13.4 - jsonld: 8.3.1 + jsonld: 8.3.2 jsonref: 8.0.8 lodash.get: 4.4.2 tslib: 2.6.2 @@ -1426,7 +1431,7 @@ packages: hasBin: true dependencies: '@api-platform/api-doc-parser': 0.16.2 - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.24.0 chalk: 5.3.0 commander: 10.0.1 esutils: 2.0.3 @@ -1449,13 +1454,6 @@ packages: default-browser-id: 3.0.0 dev: true - /@babel/code-frame@7.23.4: - resolution: {integrity: sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} @@ -1463,36 +1461,10 @@ packages: '@babel/highlight': 7.23.4 chalk: 2.4.2 - /@babel/compat-data@7.23.3: - resolution: {integrity: sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==} - engines: {node: '>=6.9.0'} - /@babel/compat-data@7.23.5: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} - /@babel/core@7.23.3: - resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.4 - '@babel/generator': 7.23.4 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) - '@babel/helpers': 7.23.4 - '@babel/parser': 7.23.4 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.4 - '@babel/types': 7.23.4 - convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@5.5.0) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - /@babel/core@7.24.0: resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==} engines: {node: '>=6.9.0'} @@ -1515,15 +1487,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.23.4: - resolution: {integrity: sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.4 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - jsesc: 2.5.2 - /@babel/generator@7.23.6: resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} engines: {node: '>=6.9.0'} @@ -1537,26 +1500,16 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.24.0 dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.24.0 dev: true - /@babel/helper-compilation-targets@7.22.15: - resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.23.3 - '@babel/helper-validator-option': 7.22.15 - browserslist: 4.22.1 - lru-cache: 5.1.1 - semver: 6.3.1 - /@babel/helper-compilation-targets@7.23.6: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} @@ -1567,26 +1520,8 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.3): - resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - dev: true - - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.24.0): - resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + /@babel/helper-create-class-features-plugin@7.24.0(@babel/core@7.24.0): + resolution: {integrity: sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1603,18 +1538,6 @@ packages: semver: 6.3.1 dev: true - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.3): - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - dev: true - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.0): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} @@ -1627,14 +1550,14 @@ packages: semver: 6.3.1 dev: true - /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.3): - resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} + /@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.24.0): + resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 @@ -1642,14 +1565,14 @@ packages: - supports-color dev: true - /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.24.0): - resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} + /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.0): + resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 @@ -1665,40 +1588,27 @@ packages: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.4 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.24.0 /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.24.0 dev: true /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 - - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/types': 7.24.0 /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} @@ -1717,24 +1627,12 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 - dev: true - - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} + '@babel/types': 7.24.0 dev: true - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.3): - resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + /@babel/helper-plugin-utils@7.24.0: + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 dev: true /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.0): @@ -1749,48 +1647,36 @@ packages: '@babel/helper-wrap-function': 7.22.20 dev: true - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.3): + /@babel/helper-replace-supers@7.22.20(@babel/core@7.24.0): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.24.0 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 dev: true - /@babel/helper-replace-supers@7.22.20(@babel/core@7.24.0): - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - dev: true - - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.24.0 /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.24.0 dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.24.0 /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} @@ -1800,10 +1686,6 @@ packages: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.22.15: - resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} - engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.23.5: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} @@ -1813,20 +1695,10 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.22.15 - '@babel/types': 7.23.4 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 dev: true - /@babel/helpers@7.23.4: - resolution: {integrity: sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.4 - '@babel/types': 7.23.4 - transitivePeerDependencies: - - supports-color - /@babel/helpers@7.24.0: resolution: {integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==} engines: {node: '>=6.9.0'} @@ -1845,13 +1717,6 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.23.4: - resolution: {integrity: sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.4 - /@babel/parser@7.24.0: resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} engines: {node: '>=6.0.0'} @@ -1859,16 +1724,6 @@ packages: dependencies: '@babel/types': 7.24.0 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} @@ -1876,19 +1731,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.3) + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.24.0): @@ -1898,77 +1741,20 @@ packages: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.24.0) dev: true - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.24.0): + resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.24.0 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.3): - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.3): - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) - dev: true - - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.3): - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) - dev: true - - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.3): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.0): @@ -1980,31 +1766,13 @@ packages: '@babel/core': 7.24.0 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.3): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.0): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.3): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.0): @@ -2013,17 +1781,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.3): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.0): @@ -2033,16 +1791,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.3): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.0): @@ -2051,16 +1800,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.3): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.0): @@ -2069,27 +1809,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.3): + /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.24.0): @@ -2099,17 +1829,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.24.0): @@ -2119,16 +1839,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.3): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.0): @@ -2137,16 +1848,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.3): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.0): @@ -2155,26 +1857,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.3): + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.3): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.0): @@ -2183,16 +1876,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.3): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.0): @@ -2201,16 +1885,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.3): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.0): @@ -2219,16 +1894,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.3): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.0): @@ -2237,16 +1903,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.3): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.0): @@ -2255,16 +1912,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.3): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.0): @@ -2273,17 +1921,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.3): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.0): @@ -2293,17 +1931,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.3): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.0): @@ -2313,28 +1941,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3): + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.3): - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.0): @@ -2345,17 +1962,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.24.0): @@ -2365,47 +1972,22 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-async-generator-functions@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.3) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-async-generator-functions@7.23.4(@babel/core@7.24.0): - resolution: {integrity: sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==} + /@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.24.0): + resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.3) - dev: true - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} @@ -2414,20 +1996,10 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} @@ -2435,17 +2007,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.24.0): @@ -2455,18 +2017,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.24.0): @@ -2476,20 +2027,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.3) + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.24.0): @@ -2499,77 +2038,37 @@ packages: '@babel/core': ^7.12.0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-classes@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) - '@babel/helper-split-export-declaration': 7.22.6 - globals: 11.12.0 - dev: true - - /@babel/plugin-transform-classes@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==} + /@babel/plugin-transform-classes@7.23.8(@babel/core@7.24.0): + resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: true - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.22.15 - dev: true - - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.24.0): + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.22.15 - dev: true - - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/template': 7.24.0 dev: true /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.24.0): @@ -2579,18 +2078,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.24.0): @@ -2601,17 +2089,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.24.0): @@ -2621,18 +2099,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.24.0): @@ -2642,21 +2109,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} @@ -2665,18 +2121,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.24.0): @@ -2686,51 +2131,30 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.3) - dev: true - - /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} - engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.24.0): + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.24.0): @@ -2740,20 +2164,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.24.0): @@ -2763,20 +2176,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} @@ -2784,18 +2187,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.24.0): @@ -2805,20 +2197,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} @@ -2826,18 +2208,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.24.0): @@ -2848,19 +2219,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.24.0): @@ -2871,25 +2230,12 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - - /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} + /@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.24.0): + resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2897,21 +2243,10 @@ packages: '@babel/core': 7.24.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-identifier': 7.22.20 dev: true - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} @@ -2920,18 +2255,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.0): @@ -2942,17 +2266,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.24.0): @@ -2962,18 +2276,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.24.0): @@ -2983,21 +2286,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) - dev: true - /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.24.0): resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} engines: {node: '>=6.9.0'} @@ -3005,49 +2297,24 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.23.3 - '@babel/core': 7.23.3 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.3) - dev: true - - /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.24.0): - resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} + /@babel/plugin-transform-object-rest-spread@7.24.0(@babel/core@7.24.0): + resolution: {integrity: sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.23.3 + '@babel/compat-data': 7.23.5 '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) - dev: true - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} @@ -3055,21 +2322,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) - dev: true - /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.24.0): resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} engines: {node: '>=6.9.0'} @@ -3077,22 +2333,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) - dev: true - /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.24.0): resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} engines: {node: '>=6.9.0'} @@ -3100,21 +2344,11 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} @@ -3122,18 +2356,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.24.0): @@ -3143,21 +2366,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.3) + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.24.0): @@ -3168,21 +2378,11 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} @@ -3190,237 +2390,133 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 regenerator-transform: 0.15.2 dev: true - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.2 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.24.0): + resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-typescript@7.23.4(@babel/core@7.23.3): - resolution: {integrity: sha512-39hCCOl+YUAyMOu6B9SmUTiHUU0t/CxJNUmY3qRdJujbqi+lrQcL11ysYUsAvFWPBdhihrv1z0oRG84Yr3dODQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.3) - dev: true - - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.24.0): @@ -3431,18 +2527,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.24.0): @@ -3453,7 +2538,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/polyfill@7.12.1: @@ -3464,111 +2549,20 @@ packages: regenerator-runtime: 0.13.11 dev: true - /@babel/preset-env@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.23.3 - '@babel/core': 7.23.3 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.3) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.3) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.3) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.3) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.3) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.3) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.3) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-async-generator-functions': 7.23.4(@babel/core@7.23.3) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.3) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.3) - '@babel/plugin-transform-classes': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.3) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.3) - '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.3) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.3) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.3) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.3) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.3) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.3) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.3) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.3) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.3) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.3) - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.3) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.3) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.3) - core-js-compat: 3.33.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/preset-env@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==} + /@babel/preset-env@7.24.0(@babel/core@7.24.0): + resolution: {integrity: sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.23.3 + '@babel/compat-data': 7.23.5 '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.15 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.24.0) '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.24.0) '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.0) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.0) @@ -3589,13 +2583,13 @@ packages: '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.0) '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.0) '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-async-generator-functions': 7.23.4(@babel/core@7.24.0) + '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.24.0) '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.24.0) '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-classes': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.24.0) '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.24.0) @@ -3603,7 +2597,7 @@ packages: '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.24.0) '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.24.0) '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.24.0) '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.24.0) @@ -3611,13 +2605,13 @@ packages: '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.24.0) '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.0) '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.24.0) '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.24.0) + '@babel/plugin-transform-object-rest-spread': 7.24.0(@babel/core@7.24.0) '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.24.0) '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.24.0) @@ -3637,36 +2631,25 @@ packages: '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.24.0) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.0) - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.24.0) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.24.0) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.24.0) - core-js-compat: 3.33.3 + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.0) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.24.0) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.24.0) + core-js-compat: 3.36.0 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-flow@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==} + /@babel/preset-flow@7.24.0(@babel/core@7.24.0): + resolution: {integrity: sha512-cum/nSi82cDaSJ21I4PgLTVlj0OXovFk6GRguJYe/IKg6y6JHLTbJhybtX4k35WT9wdeJfEVjycTixMhBHd0Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.3) - dev: true - - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.3): - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.4 - esutils: 2.0.3 + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.24.0) dev: true /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.0): @@ -3675,32 +2658,32 @@ packages: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/types': 7.24.0 esutils: 2.0.3 dev: true - /@babel/preset-typescript@7.23.3(@babel/core@7.23.3): + /@babel/preset-typescript@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-typescript': 7.23.4(@babel/core@7.23.3) + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.24.0) dev: true - /@babel/register@7.22.15(@babel/core@7.23.3): - resolution: {integrity: sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==} + /@babel/register@7.23.7(@babel/core@7.24.0): + resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.24.0 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -3712,32 +2695,12 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime@7.23.4: - resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 - - /@babel/runtime@7.23.6: - resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 - /@babel/runtime@7.24.0: resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.4 - '@babel/parser': 7.23.4 - '@babel/types': 7.23.4 - /@babel/template@7.24.0: resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} @@ -3746,23 +2709,6 @@ packages: '@babel/parser': 7.24.0 '@babel/types': 7.24.0 - /@babel/traverse@7.23.4: - resolution: {integrity: sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.4 - '@babel/generator': 7.23.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.4 - '@babel/types': 7.23.4 - debug: 4.3.4(supports-color@5.5.0) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - /@babel/traverse@7.24.0: resolution: {integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==} engines: {node: '>=6.9.0'} @@ -3780,14 +2726,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/types@7.23.4: - resolution: {integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - /@babel/types@7.24.0: resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} @@ -3855,7 +2793,7 @@ packages: engines: {node: '>=4'} dependencies: babel-runtime: 6.26.0 - chalk: 2.4.2 + chalk: 2.3.1 dev: true /@commitlint/is-ignored@7.6.0: @@ -3899,7 +2837,7 @@ packages: dependencies: conventional-changelog-angular: 1.6.6 conventional-commits-parser: 2.1.7 - lodash: 4.17.21 + lodash: 4.17.11 dev: true /@commitlint/read@7.6.0: @@ -3966,7 +2904,7 @@ packages: dependencies: ky: 0.33.3 ky-universal: 0.11.0(ky@0.33.3) - undici: 5.28.2 + undici: 5.28.3 transitivePeerDependencies: - web-streams-polyfill dev: true @@ -4026,7 +2964,7 @@ packages: '@babel/runtime': 7.24.0 '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 - '@emotion/serialize': 1.1.2 + '@emotion/serialize': 1.1.3 babel-plugin-macros: 3.1.0 convert-source-map: 1.9.0 escape-string-regexp: 4.0.0 @@ -4050,12 +2988,18 @@ packages: resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} dependencies: '@emotion/memoize': 0.8.1 + dev: false + + /@emotion/is-prop-valid@1.2.2: + resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} + dependencies: + '@emotion/memoize': 0.8.1 /@emotion/memoize@0.8.1: resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} - /@emotion/react@11.11.1(@types/react@18.2.39)(react@18.2.0): - resolution: {integrity: sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==} + /@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0): + resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==} peerDependencies: '@types/react': '*' react: '>=16.8.0' @@ -4066,27 +3010,27 @@ packages: '@babel/runtime': 7.24.0 '@emotion/babel-plugin': 11.11.0 '@emotion/cache': 11.11.0 - '@emotion/serialize': 1.1.2 + '@emotion/serialize': 1.1.3 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 '@emotion/weak-memoize': 0.3.1 - '@types/react': 18.2.39 + '@types/react': 18.2.65 hoist-non-react-statics: 3.3.2 react: 18.2.0 - /@emotion/serialize@1.1.2: - resolution: {integrity: sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==} + /@emotion/serialize@1.1.3: + resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==} dependencies: '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 '@emotion/unitless': 0.8.1 '@emotion/utils': 1.2.1 - csstype: 3.1.2 + csstype: 3.1.3 /@emotion/sheet@1.2.2: resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} - /@emotion/styled@11.11.0(@emotion/react@11.11.1)(@types/react@18.2.39)(react@18.2.0): + /@emotion/styled@11.11.0(@emotion/react@11.11.4)(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -4096,16 +3040,20 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.0 '@emotion/babel-plugin': 11.11.0 - '@emotion/is-prop-valid': 1.2.1 - '@emotion/react': 11.11.1(@types/react@18.2.39)(react@18.2.0) - '@emotion/serialize': 1.1.2 + '@emotion/is-prop-valid': 1.2.2 + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/serialize': 1.1.3 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 - '@types/react': 18.2.39 + '@types/react': 18.2.65 react: 18.2.0 + /@emotion/unitless@0.8.0: + resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} + dev: false + /@emotion/unitless@0.8.1: resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} @@ -4147,14 +3095,6 @@ packages: requiresBuild: true optional: true - /@esbuild/android-arm64@0.19.8: - resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - optional: true - /@esbuild/android-arm@0.18.20: resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -4172,14 +3112,6 @@ packages: requiresBuild: true optional: true - /@esbuild/android-arm@0.19.8: - resolution: {integrity: sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - optional: true - /@esbuild/android-x64@0.18.20: resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -4197,14 +3129,6 @@ packages: requiresBuild: true optional: true - /@esbuild/android-x64@0.19.8: - resolution: {integrity: sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - optional: true - /@esbuild/darwin-arm64@0.18.20: resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -4222,14 +3146,6 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-arm64@0.19.8: - resolution: {integrity: sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - /@esbuild/darwin-x64@0.18.20: resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -4247,14 +3163,6 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-x64@0.19.8: - resolution: {integrity: sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - /@esbuild/freebsd-arm64@0.18.20: resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -4272,14 +3180,6 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-arm64@0.19.8: - resolution: {integrity: sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - optional: true - /@esbuild/freebsd-x64@0.18.20: resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -4297,14 +3197,6 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-x64@0.19.8: - resolution: {integrity: sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - optional: true - /@esbuild/linux-arm64@0.18.20: resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -4322,14 +3214,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm64@0.19.8: - resolution: {integrity: sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-arm@0.18.20: resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -4347,14 +3231,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm@0.19.8: - resolution: {integrity: sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-ia32@0.18.20: resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -4372,14 +3248,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ia32@0.19.8: - resolution: {integrity: sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-loong64@0.18.20: resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -4397,14 +3265,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-loong64@0.19.8: - resolution: {integrity: sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-mips64el@0.18.20: resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -4422,14 +3282,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-mips64el@0.19.8: - resolution: {integrity: sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-ppc64@0.18.20: resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -4447,14 +3299,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ppc64@0.19.8: - resolution: {integrity: sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-riscv64@0.18.20: resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -4472,14 +3316,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-riscv64@0.19.8: - resolution: {integrity: sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-s390x@0.18.20: resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -4497,14 +3333,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-s390x@0.19.8: - resolution: {integrity: sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-x64@0.18.20: resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -4522,14 +3350,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-x64@0.19.8: - resolution: {integrity: sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/netbsd-x64@0.18.20: resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -4547,14 +3367,6 @@ packages: requiresBuild: true optional: true - /@esbuild/netbsd-x64@0.19.8: - resolution: {integrity: sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - optional: true - /@esbuild/openbsd-x64@0.18.20: resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -4572,14 +3384,6 @@ packages: requiresBuild: true optional: true - /@esbuild/openbsd-x64@0.19.8: - resolution: {integrity: sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - optional: true - /@esbuild/sunos-x64@0.18.20: resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -4597,14 +3401,6 @@ packages: requiresBuild: true optional: true - /@esbuild/sunos-x64@0.19.8: - resolution: {integrity: sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - optional: true - /@esbuild/win32-arm64@0.18.20: resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -4622,14 +3418,6 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-arm64@0.19.8: - resolution: {integrity: sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-ia32@0.18.20: resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -4647,14 +3435,6 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-ia32@0.19.8: - resolution: {integrity: sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-x64@0.18.20: resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -4672,24 +3452,6 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-x64@0.19.8: - resolution: {integrity: sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - - /@eslint-community/eslint-utils@4.4.0(eslint@8.54.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.54.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4705,23 +3467,6 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.3: - resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@5.5.0) - espree: 9.6.1 - globals: 13.23.0 - ignore: 5.3.0 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /@eslint/eslintrc@2.1.4: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4739,11 +3484,6 @@ packages: - supports-color dev: true - /@eslint/js@8.54.0: - resolution: {integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@eslint/js@8.57.0: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4753,38 +3493,22 @@ packages: resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} dev: true - /@fastify/busboy@2.1.0: - resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + /@fastify/busboy@2.1.1: + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} dev: true - /@floating-ui/core@1.5.0: - resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} - dependencies: - '@floating-ui/utils': 0.1.6 - - /@floating-ui/dom@1.5.3: - resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + /@floating-ui/core@1.6.0: + resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} dependencies: - '@floating-ui/core': 1.5.0 - '@floating-ui/utils': 0.1.6 + '@floating-ui/utils': 0.2.1 /@floating-ui/dom@1.6.3: resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} dependencies: - '@floating-ui/core': 1.5.0 + '@floating-ui/core': 1.6.0 '@floating-ui/utils': 0.2.1 - /@floating-ui/react-dom@2.0.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - dependencies: - '@floating-ui/dom': 1.5.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - /@floating-ui/react-dom@2.0.8(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} peerDependencies: @@ -4795,23 +3519,9 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@floating-ui/utils@0.1.6: - resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} - /@floating-ui/utils@0.2.1: resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4(supports-color@5.5.0) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /@humanwhocodes/config-array@0.11.14: resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} @@ -4828,10 +3538,6 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} - dev: true - /@humanwhocodes/object-schema@2.0.2: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true @@ -4870,7 +3576,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.13 + '@types/node': 18.19.24 jest-mock: 29.7.0 dev: false @@ -4880,7 +3586,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 18.18.13 + '@types/node': 18.19.24 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -4896,9 +3602,9 @@ packages: resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.24.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -4921,7 +3627,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.18.13 + '@types/node': 18.19.24 '@types/yargs': 15.0.19 chalk: 4.1.2 dev: true @@ -4932,7 +3638,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.18.13 + '@types/node': 18.19.24 '@types/yargs': 16.0.9 chalk: 4.1.2 dev: true @@ -4944,7 +3650,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.18.13 + '@types/node': 18.19.24 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -4961,7 +3667,7 @@ packages: resolution: {integrity: sha512-ppCXiDaVytTQOP6hNZIBwjUph5IrGgDoQw4IF5sBoA3PBpMAc5tWtPExbVWTR5pJWpTcp11dv2M83n9pm7LpeQ==} deprecated: This package is no longer maintained. - /@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.3.2)(vite@5.0.2): + /@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.4.2)(vite@5.1.6): resolution: {integrity: sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA==} peerDependencies: typescript: '>= 4.3.x' @@ -4973,19 +3679,11 @@ packages: glob: 7.2.3 glob-promise: 4.2.2(glob@7.2.3) magic-string: 0.27.0 - react-docgen-typescript: 2.2.2(typescript@5.3.2) - typescript: 5.3.2 - vite: 5.0.2(@types/node@18.18.13)(sass@1.69.5) + react-docgen-typescript: 2.2.2(typescript@5.4.2) + typescript: 5.4.2 + vite: 5.1.6(@types/node@18.19.24)(sass@1.71.1) dev: true - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 - /@jridgewell/gen-mapping@0.3.5: resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -4994,18 +3692,10 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - /@jridgewell/resolve-uri@3.1.2: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.2.1: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} @@ -5019,12 +3709,6 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.20: - resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - /@jridgewell/trace-mapping@0.3.25: resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: @@ -5034,7 +3718,7 @@ packages: /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 dev: true @@ -5123,29 +3807,29 @@ packages: peerDependencies: react: '>=16' dependencies: - '@types/mdx': 2.0.10 - '@types/react': 18.2.38 + '@types/mdx': 2.0.11 + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@microsoft/api-extractor-model@7.28.2(@types/node@18.18.13): - resolution: {integrity: sha512-vkojrM2fo3q4n4oPh4uUZdjJ2DxQ2+RnDQL/xhTWSRUNPF6P4QyrvY357HBxbnltKcYu+nNNolVqc6TIGQ73Ig==} + /@microsoft/api-extractor-model@7.28.3(@types/node@18.19.24): + resolution: {integrity: sha512-wT/kB2oDbdZXITyDh2SQLzaWwTOFbV326fP0pUwNW00WeliARs0qjmXBWmGWardEzp2U3/axkO3Lboqun6vrig==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.61.0(@types/node@18.18.13) + '@rushstack/node-core-library': 3.62.0(@types/node@18.19.24) transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.38.3(@types/node@18.18.13): - resolution: {integrity: sha512-xt9iYyC5f39281j77JTA9C3ISJpW1XWkCcnw+2vM78CPnro6KhPfwQdPDfwS5JCPNuq0grm8cMdPUOPvrchDWw==} + /@microsoft/api-extractor@7.39.0(@types/node@18.19.24): + resolution: {integrity: sha512-PuXxzadgnvp+wdeZFPonssRAj/EW4Gm4s75TXzPk09h3wJ8RS3x7typf95B4vwZRrPTQBGopdUl+/vHvlPdAcg==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.28.2(@types/node@18.18.13) + '@microsoft/api-extractor-model': 7.28.3(@types/node@18.19.24) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.61.0(@types/node@18.18.13) + '@rushstack/node-core-library': 3.62.0(@types/node@18.19.24) '@rushstack/rig-package': 0.5.1 '@rushstack/ts-command-line': 4.17.1 colors: 1.2.5 @@ -5153,7 +3837,7 @@ packages: resolve: 1.22.8 semver: 7.5.4 source-map: 0.6.1 - typescript: 5.0.4 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' dev: true @@ -5180,76 +3864,8 @@ packages: react: 18.2.0 dev: false - /@mui/base@5.0.0-beta.28(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-KIoSc5sUFceeCaZTq5MQBapFzhHqMo4kj+4azWaCAjorduhcRQtN+BCgVHmo+gvEjix74bUfxwTqGifnu2fNTg==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.6 - '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.38) - '@mui/utils': 5.15.1(@types/react@18.2.38)(react@18.2.0) - '@popperjs/core': 2.11.8 - '@types/react': 18.2.38 - clsx: 2.0.0 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@mui/base@5.0.0-beta.28(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-KIoSc5sUFceeCaZTq5MQBapFzhHqMo4kj+4azWaCAjorduhcRQtN+BCgVHmo+gvEjix74bUfxwTqGifnu2fNTg==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.6 - '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.39) - '@mui/utils': 5.15.1(@types/react@18.2.39)(react@18.2.0) - '@popperjs/core': 2.11.8 - '@types/react': 18.2.39 - clsx: 2.0.0 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - /@mui/base@5.0.0-beta.38(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-AsjD6Y1X5A1qndxz8xCcR8LDqv31aiwlgWMPxFAX/kCKiIGKlK65yMeVZ62iQr/6LBz+9hSKLiD1i4TZdAHKcQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.0 - '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.39) - '@mui/utils': 5.15.12(@types/react@18.2.39)(react@18.2.0) - '@popperjs/core': 2.11.8 - '@types/react': 18.2.39 - clsx: 2.1.0 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@mui/base@5.0.0-beta.38(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-AsjD6Y1X5A1qndxz8xCcR8LDqv31aiwlgWMPxFAX/kCKiIGKlK65yMeVZ62iQr/6LBz+9hSKLiD1i4TZdAHKcQ==} + /@mui/base@5.0.0-beta.39(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-puyUptF7VJ+9/dMIRLF+DLR21cWfvejsA6OnatfJfqFp8aMhya7xQtvYLEfCch6ahvFZvNC9FFEGGR+qkgFjUg==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -5262,92 +3878,19 @@ packages: '@babel/runtime': 7.24.0 '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) '@mui/types': 7.2.13(@types/react@18.2.65) - '@mui/utils': 5.15.12(@types/react@18.2.65)(react@18.2.0) + '@mui/utils': 5.15.13(@types/react@18.2.65)(react@18.2.0) '@popperjs/core': 2.11.8 '@types/react': 18.2.65 clsx: 2.1.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - - /@mui/core-downloads-tracker@5.15.1: - resolution: {integrity: sha512-y/nUEsWHyBzaKYp9zLtqJKrLod/zMNEWpMj488FuQY9QTmqBiyUhI2uh7PVaLqLewXRtdmG6JV0b6T5exyuYRw==} - - /@mui/core-downloads-tracker@5.15.12: - resolution: {integrity: sha512-brRO+tMFLpGyjEYHrX97bzqeF6jZmKpqqe1rY0LyIHAwP6xRVzh++zSecOQorDOCaZJg4XkGT9xfD+RWOWxZBA==} - dev: false - - /@mui/icons-material@5.15.0(@mui/material@5.15.1)(@types/react@18.2.39)(react@18.2.0): - resolution: {integrity: sha512-zHY6fOkaK7VfhWeyxO8MjO3IAjEYpYMXuqUhX7TkUZJ9+TSH/9dn4ClG4K2j6hdgBU5Yrq2Z/89Bo6BHHp7AdQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@mui/material': ^5.0.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.6 - '@mui/material': 5.15.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.39 - react: 18.2.0 - dev: false - - /@mui/icons-material@5.15.1(@mui/material@5.15.1)(@types/react@18.2.38)(react@18.2.0): - resolution: {integrity: sha512-VPJdBSyap6uOxCb5BLbWbkvd6aeJCp1pQZm8DcZBITCH0NOSv8Mz9c8Zvo8xr4Od7+xyWHUAgvRSL4047pL2WQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@mui/material': ^5.0.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.6 - '@mui/material': 5.15.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.38 - react: 18.2.0 - dev: false - - /@mui/icons-material@5.15.1(@mui/material@5.15.1)(@types/react@18.2.39)(react@18.2.0): - resolution: {integrity: sha512-VPJdBSyap6uOxCb5BLbWbkvd6aeJCp1pQZm8DcZBITCH0NOSv8Mz9c8Zvo8xr4Od7+xyWHUAgvRSL4047pL2WQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@mui/material': ^5.0.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.6 - '@mui/material': 5.15.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.39 - react: 18.2.0 - dev: true - /@mui/icons-material@5.15.12(@mui/material@5.15.1)(@types/react@18.2.39)(react@18.2.0): - resolution: {integrity: sha512-3BXiDlOd3AexZoEXa/VqpIpVIvosCzjLHsdMWzKMXbZdnBiJjmb9ECdqfjn5SpTClO49qvkKLhkTqdBH3fSFGw==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@mui/material': ^5.0.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.0 - '@mui/material': 5.15.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.39 - react: 18.2.0 - dev: false + /@mui/core-downloads-tracker@5.15.13: + resolution: {integrity: sha512-ERsk9EWpiitSiKnmUdFJGshtFk647l4p7r+mjRWe/F1l5kT1NTTKkaeDLcK3/lsy0udXjMgcG0bNwzbYBdDdhQ==} - /@mui/icons-material@5.15.12(@mui/material@5.15.12)(@types/react@18.2.65)(react@18.2.0): - resolution: {integrity: sha512-3BXiDlOd3AexZoEXa/VqpIpVIvosCzjLHsdMWzKMXbZdnBiJjmb9ECdqfjn5SpTClO49qvkKLhkTqdBH3fSFGw==} + /@mui/icons-material@5.15.13(@mui/material@5.15.13)(@types/react@18.2.65)(react@18.2.0): + resolution: {integrity: sha512-I7CioMQKBPaKyGgcE9i8+1dgzAmox5a/0wZ0E9sIxm7PzG5KJZRRJkdK4oDT4HfYRGv61KjcHEeqH48pht1dvQ==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 @@ -5358,51 +3901,17 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@mui/material': 5.15.12(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.65 react: 18.2.0 - dev: false - - /@mui/lab@5.0.0-alpha.157(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.1)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-gY7UM2kNSxiVLfsm0o6HG2G5rM2Vr47prJhDCazY+VG/NOSRc8CG7la6dpL9WDTJhotEZdWwfj1FOUxTonmuQA==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@mui/material': '>=5.10.11' - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.6 - '@emotion/react': 11.11.1(@types/react@18.2.39)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.39)(react@18.2.0) - '@mui/base': 5.0.0-beta.28(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) - '@mui/material': 5.15.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) - '@mui/system': 5.15.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.39)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.39) - '@mui/utils': 5.15.1(@types/react@18.2.39)(react@18.2.0) - '@types/react': 18.2.39 - clsx: 2.0.0 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@mui/lab@5.0.0-alpha.157(@mui/material@5.15.1)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-gY7UM2kNSxiVLfsm0o6HG2G5rM2Vr47prJhDCazY+VG/NOSRc8CG7la6dpL9WDTJhotEZdWwfj1FOUxTonmuQA==} + /@mui/lab@5.0.0-alpha.168(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.13)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-VKLQP5J/SujylvW3/riMtQYTspTluUkKLW/eu48RwuKby583cFCg8p4fWl4PpC3drwq6g9AeJ7DG4w0K+zFbdA==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material': '>=5.10.11' + '@mui/material': '>=5.15.0' '@types/react': ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 @@ -5414,26 +3923,26 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.6 - '@mui/base': 5.0.0-beta.28(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) - '@mui/material': 5.15.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) - '@mui/system': 5.15.1(@types/react@18.2.39)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.39) - '@mui/utils': 5.15.1(@types/react@18.2.39)(react@18.2.0) - '@types/react': 18.2.39 - clsx: 2.0.0 + '@babel/runtime': 7.24.0 + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.65)(react@18.2.0) + '@mui/base': 5.0.0-beta.39(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.2.65) + '@mui/utils': 5.15.13(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 + clsx: 2.1.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true - /@mui/lab@5.0.0-alpha.167(@mui/material@5.15.1)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-BNQJ7fBBvL68WGVnzAhbtTmabSuJDXaILr9dz/3RNK4TgGXPgWCAr7qtJeUdc4p1t7c4Z1ifG8UwgqD+5hzMNg==} + /@mui/material@5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-E+QisOJcIzTTyeJ0o3lgYMcyrmCydb2S4cn9vTtGpIB9uR6fQ6La3dIGsXgYEGyeOB9YkWzQbNzYzvyODGEWKA==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material': '>=5.15.0' '@types/react': ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 @@ -5446,408 +3955,62 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@mui/base': 5.0.0-beta.38(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) - '@mui/material': 5.15.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) - '@mui/system': 5.15.12(@types/react@18.2.39)(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.39) - '@mui/utils': 5.15.12(@types/react@18.2.39)(react@18.2.0) - '@types/react': 18.2.39 + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.65)(react@18.2.0) + '@mui/base': 5.0.0-beta.39(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.15.13 + '@mui/system': 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.2.65) + '@mui/utils': 5.15.13(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-transition-group': 4.4.10 clsx: 2.1.0 + csstype: 3.1.3 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false + react-is: 18.2.0 + react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) - /@mui/material@5.15.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-WA5DVyvacxDakVyAhNqu/rRT28ppuuUFFw1bLpmRzrCJ4uw/zLTATcd4WB3YbB+7MdZNEGG/SJNWTDLEIyn3xQ==} + /@mui/private-theming@5.15.13(@types/react@18.2.65)(react@18.2.0): + resolution: {integrity: sha512-j5Z2pRi6talCunIRIzpQERSaHwLd5EPdHMwIKDVCszro1RAzRZl7WmH68IMCgQmJMeglr+FalqNuq048qptGAg==} engines: {node: '>=12.0.0'} peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 '@types/react': ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.6 - '@emotion/react': 11.11.1(@types/react@18.2.39)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.39)(react@18.2.0) - '@mui/base': 5.0.0-beta.28(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.15.1 - '@mui/system': 5.15.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.39)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.39) - '@mui/utils': 5.15.1(@types/react@18.2.39)(react@18.2.0) - '@types/react': 18.2.39 - '@types/react-transition-group': 4.4.10 - clsx: 2.0.0 - csstype: 3.1.2 + '@babel/runtime': 7.24.0 + '@mui/utils': 5.15.13(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) - /@mui/material@5.15.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-WA5DVyvacxDakVyAhNqu/rRT28ppuuUFFw1bLpmRzrCJ4uw/zLTATcd4WB3YbB+7MdZNEGG/SJNWTDLEIyn3xQ==} + /@mui/styled-engine@5.15.11(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-So21AhAngqo07ces4S/JpX5UaMU2RHXpEA6hNzI6IQjd/1usMPxpgK8wkGgTe3JKmC2KDmH8cvoycq5H3Ii7/w==} engines: {node: '>=12.0.0'} peerDependencies: - '@emotion/react': ^11.5.0 + '@emotion/react': ^11.4.1 '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@emotion/react': optional: true '@emotion/styled': optional: true - '@types/react': - optional: true dependencies: - '@babel/runtime': 7.23.6 - '@mui/base': 5.0.0-beta.28(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.15.1 - '@mui/system': 5.15.1(@types/react@18.2.38)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.38) - '@mui/utils': 5.15.1(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-transition-group': 4.4.10 - clsx: 2.0.0 - csstype: 3.1.2 + '@babel/runtime': 7.24.0 + '@emotion/cache': 11.11.0 + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.65)(react@18.2.0) + csstype: 3.1.3 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) - dev: false - /@mui/material@5.15.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-WA5DVyvacxDakVyAhNqu/rRT28ppuuUFFw1bLpmRzrCJ4uw/zLTATcd4WB3YbB+7MdZNEGG/SJNWTDLEIyn3xQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.6 - '@mui/base': 5.0.0-beta.28(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.15.1 - '@mui/system': 5.15.1(@types/react@18.2.39)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.39) - '@mui/utils': 5.15.1(@types/react@18.2.39)(react@18.2.0) - '@types/react': 18.2.39 - '@types/react-transition-group': 4.4.10 - clsx: 2.0.0 - csstype: 3.1.2 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) - - /@mui/material@5.15.12(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-vXJGg6KNKucsvbW6l7w9zafnpOp0CWc0Wx4mDykuABTpQ5QQBnZxP7+oB4yAS1hDZQ1WobbeIl0CjxK4EEahkA==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.0 - '@mui/base': 5.0.0-beta.38(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.15.12 - '@mui/system': 5.15.12(@types/react@18.2.65)(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.65) - '@mui/utils': 5.15.12(@types/react@18.2.65)(react@18.2.0) - '@types/react': 18.2.65 - '@types/react-transition-group': 4.4.10 - clsx: 2.1.0 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) - dev: false - - /@mui/private-theming@5.15.1(@types/react@18.2.38)(react@18.2.0): - resolution: {integrity: sha512-wTbzuy5KjSvCPE9UVJktWHJ0b/tD5biavY9wvF+OpYDLPpdXK52vc1hTDxSbdkHIFMkJExzrwO9GvpVAHZBnFQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.0 - '@mui/utils': 5.15.1(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 - prop-types: 15.8.1 - react: 18.2.0 - dev: false - - /@mui/private-theming@5.15.1(@types/react@18.2.39)(react@18.2.0): - resolution: {integrity: sha512-wTbzuy5KjSvCPE9UVJktWHJ0b/tD5biavY9wvF+OpYDLPpdXK52vc1hTDxSbdkHIFMkJExzrwO9GvpVAHZBnFQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.0 - '@mui/utils': 5.15.1(@types/react@18.2.39)(react@18.2.0) - '@types/react': 18.2.39 - prop-types: 15.8.1 - react: 18.2.0 - - /@mui/private-theming@5.15.12(@types/react@18.2.39)(react@18.2.0): - resolution: {integrity: sha512-cqoSo9sgA5HE+8vZClbLrq9EkyOnYysooepi5eKaKvJ41lReT2c5wOZAeDDM1+xknrMDos+0mT2zr3sZmUiRRA==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.0 - '@mui/utils': 5.15.12(@types/react@18.2.39)(react@18.2.0) - '@types/react': 18.2.39 - prop-types: 15.8.1 - react: 18.2.0 - dev: false - - /@mui/private-theming@5.15.12(@types/react@18.2.65)(react@18.2.0): - resolution: {integrity: sha512-cqoSo9sgA5HE+8vZClbLrq9EkyOnYysooepi5eKaKvJ41lReT2c5wOZAeDDM1+xknrMDos+0mT2zr3sZmUiRRA==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.0 - '@mui/utils': 5.15.12(@types/react@18.2.65)(react@18.2.0) - '@types/react': 18.2.65 - prop-types: 15.8.1 - react: 18.2.0 - dev: false - - /@mui/styled-engine@5.15.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: {integrity: sha512-7WDZTJLqGexWDjqE9oAgjU8ak6hEtUw2yQU7SIYID5kLVO2Nj/Wi/KicbLsXnTsJNvSqePIlUIWTBSXwWJCPZw==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.4.1 - '@emotion/styled': ^11.3.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - dependencies: - '@babel/runtime': 7.24.0 - '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.1(@types/react@18.2.39)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.39)(react@18.2.0) - csstype: 3.1.2 - prop-types: 15.8.1 - react: 18.2.0 - - /@mui/styled-engine@5.15.11(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: {integrity: sha512-So21AhAngqo07ces4S/JpX5UaMU2RHXpEA6hNzI6IQjd/1usMPxpgK8wkGgTe3JKmC2KDmH8cvoycq5H3Ii7/w==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.4.1 - '@emotion/styled': ^11.3.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - dependencies: - '@babel/runtime': 7.24.0 - '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.1(@types/react@18.2.39)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.39)(react@18.2.0) - csstype: 3.1.3 - prop-types: 15.8.1 - react: 18.2.0 - dev: false - - /@mui/system@5.15.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.39)(react@18.2.0): - resolution: {integrity: sha512-LAnP0ls69rqW9eBgI29phIx/lppv+WDGI7b3EJN7VZIqw0RezA0GD7NRpV12BgEYJABEii6z5Q9B5tg7dsX0Iw==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.6 - '@emotion/react': 11.11.1(@types/react@18.2.39)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.39)(react@18.2.0) - '@mui/private-theming': 5.15.1(@types/react@18.2.39)(react@18.2.0) - '@mui/styled-engine': 5.15.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.39) - '@mui/utils': 5.15.1(@types/react@18.2.39)(react@18.2.0) - '@types/react': 18.2.39 - clsx: 2.0.0 - csstype: 3.1.2 - prop-types: 15.8.1 - react: 18.2.0 - - /@mui/system@5.15.1(@types/react@18.2.38)(react@18.2.0): - resolution: {integrity: sha512-LAnP0ls69rqW9eBgI29phIx/lppv+WDGI7b3EJN7VZIqw0RezA0GD7NRpV12BgEYJABEii6z5Q9B5tg7dsX0Iw==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.6 - '@mui/private-theming': 5.15.1(@types/react@18.2.38)(react@18.2.0) - '@mui/styled-engine': 5.15.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.38) - '@mui/utils': 5.15.1(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 - clsx: 2.0.0 - csstype: 3.1.2 - prop-types: 15.8.1 - react: 18.2.0 - dev: false - - /@mui/system@5.15.1(@types/react@18.2.39)(react@18.2.0): - resolution: {integrity: sha512-LAnP0ls69rqW9eBgI29phIx/lppv+WDGI7b3EJN7VZIqw0RezA0GD7NRpV12BgEYJABEii6z5Q9B5tg7dsX0Iw==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.6 - '@mui/private-theming': 5.15.1(@types/react@18.2.39)(react@18.2.0) - '@mui/styled-engine': 5.15.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.39) - '@mui/utils': 5.15.1(@types/react@18.2.39)(react@18.2.0) - '@types/react': 18.2.39 - clsx: 2.0.0 - csstype: 3.1.2 - prop-types: 15.8.1 - react: 18.2.0 - - /@mui/system@5.15.12(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.39)(react@18.2.0): - resolution: {integrity: sha512-/pq+GO6yN3X7r3hAwFTrzkAh7K1bTF5r8IzS79B9eyKJg7v6B/t4/zZYMR6OT9qEPtwf6rYN2Utg1e6Z7F1OgQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.0 - '@emotion/react': 11.11.1(@types/react@18.2.39)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.39)(react@18.2.0) - '@mui/private-theming': 5.15.12(@types/react@18.2.39)(react@18.2.0) - '@mui/styled-engine': 5.15.11(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.39) - '@mui/utils': 5.15.12(@types/react@18.2.39)(react@18.2.0) - '@types/react': 18.2.39 - clsx: 2.1.0 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 18.2.0 - dev: false - - /@mui/system@5.15.12(@types/react@18.2.39)(react@18.2.0): - resolution: {integrity: sha512-/pq+GO6yN3X7r3hAwFTrzkAh7K1bTF5r8IzS79B9eyKJg7v6B/t4/zZYMR6OT9qEPtwf6rYN2Utg1e6Z7F1OgQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.0 - '@mui/private-theming': 5.15.12(@types/react@18.2.39)(react@18.2.0) - '@mui/styled-engine': 5.15.11(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.39) - '@mui/utils': 5.15.12(@types/react@18.2.39)(react@18.2.0) - '@types/react': 18.2.39 - clsx: 2.1.0 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 18.2.0 - dev: false - - /@mui/system@5.15.12(@types/react@18.2.65)(react@18.2.0): - resolution: {integrity: sha512-/pq+GO6yN3X7r3hAwFTrzkAh7K1bTF5r8IzS79B9eyKJg7v6B/t4/zZYMR6OT9qEPtwf6rYN2Utg1e6Z7F1OgQ==} + /@mui/system@5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react@18.2.0): + resolution: {integrity: sha512-eHaX3sniZXNWkxX0lmcLxROhQ5La0HkOuF7zxbSdAoHUOk07gboQYmF6hSJ/VBFx/GLanIw67FMTn88vc8niLg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -5863,115 +4026,30 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@mui/private-theming': 5.15.12(@types/react@18.2.65)(react@18.2.0) - '@mui/styled-engine': 5.15.11(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.65) - '@mui/utils': 5.15.12(@types/react@18.2.65)(react@18.2.0) - '@types/react': 18.2.65 - clsx: 2.1.0 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 18.2.0 - dev: false - - /@mui/types@7.2.11(@types/react@18.2.38): - resolution: {integrity: sha512-KWe/QTEsFFlFSH+qRYf3zoFEj3z67s+qAuSnMMg+gFwbxG7P96Hm6g300inQL1Wy///gSRb8juX7Wafvp93m3w==} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.2.38 - dev: false - - /@mui/types@7.2.11(@types/react@18.2.39): - resolution: {integrity: sha512-KWe/QTEsFFlFSH+qRYf3zoFEj3z67s+qAuSnMMg+gFwbxG7P96Hm6g300inQL1Wy///gSRb8juX7Wafvp93m3w==} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.2.39 - - /@mui/types@7.2.13(@types/react@18.2.39): - resolution: {integrity: sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.2.39 - dev: false - - /@mui/types@7.2.13(@types/react@18.2.65): - resolution: {integrity: sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.2.65 - dev: false - - /@mui/utils@5.15.1(@types/react@18.2.38)(react@18.2.0): - resolution: {integrity: sha512-V1/d0E3Bju5YdB59HJf2G0tnHrFEvWLN+f8hAXp9+JSNy/LC2zKyqUfPPahflR6qsI681P8G9r4mEZte/SrrYA==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.6 - '@types/prop-types': 15.7.11 - '@types/react': 18.2.38 - prop-types: 15.8.1 - react: 18.2.0 - react-is: 18.2.0 - dev: false - - /@mui/utils@5.15.1(@types/react@18.2.39)(react@18.2.0): - resolution: {integrity: sha512-V1/d0E3Bju5YdB59HJf2G0tnHrFEvWLN+f8hAXp9+JSNy/LC2zKyqUfPPahflR6qsI681P8G9r4mEZte/SrrYA==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.6 - '@types/prop-types': 15.7.11 - '@types/react': 18.2.39 + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.65)(react@18.2.0) + '@mui/private-theming': 5.15.13(@types/react@18.2.65)(react@18.2.0) + '@mui/styled-engine': 5.15.11(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.2.65) + '@mui/utils': 5.15.13(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 + clsx: 2.1.0 + csstype: 3.1.3 prop-types: 15.8.1 react: 18.2.0 - react-is: 18.2.0 - /@mui/utils@5.15.12(@types/react@18.2.39)(react@18.2.0): - resolution: {integrity: sha512-8SDGCnO2DY9Yy+5bGzu00NZowSDtuyHP4H8gunhHGQoIlhlY2Z3w64wBzAOLpYw/ZhJNzksDTnS/i8qdJvxuow==} - engines: {node: '>=12.0.0'} + /@mui/types@7.2.13(@types/react@18.2.65): + resolution: {integrity: sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.0 - '@types/prop-types': 15.7.11 - '@types/react': 18.2.39 - prop-types: 15.8.1 - react: 18.2.0 - react-is: 18.2.0 - dev: false + '@types/react': 18.2.65 - /@mui/utils@5.15.12(@types/react@18.2.65)(react@18.2.0): - resolution: {integrity: sha512-8SDGCnO2DY9Yy+5bGzu00NZowSDtuyHP4H8gunhHGQoIlhlY2Z3w64wBzAOLpYw/ZhJNzksDTnS/i8qdJvxuow==} + /@mui/utils@5.15.13(@types/react@18.2.65)(react@18.2.0): + resolution: {integrity: sha512-qNlR9FLEhORC4zVZ3fzF48213EhP/92N71AcFbhHN73lPJjAbq9lUv+71P7uEdRHdrrOlm8+1zE8/OBy6MUqdg==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -5986,9 +4064,8 @@ packages: prop-types: 15.8.1 react: 18.2.0 react-is: 18.2.0 - dev: false - /@mui/x-tree-view@6.17.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.1)(@mui/system@5.15.12)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): + /@mui/x-tree-view@6.17.0(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.13)(@mui/system@5.15.13)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-09dc2D+Rjg2z8KOaxbUXyPi0aw7fm2jurEtV8Xw48xJ00joLWd5QJm1/v4CarEvaiyhTQzHImNqdgeJW8ZQB6g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5999,15 +4076,15 @@ packages: react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.6 - '@emotion/react': 11.11.1(@types/react@18.2.39)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.39)(react@18.2.0) - '@mui/base': 5.0.0-beta.28(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) - '@mui/material': 5.15.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) - '@mui/system': 5.15.12(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.39)(react@18.2.0) - '@mui/utils': 5.15.1(@types/react@18.2.39)(react@18.2.0) + '@babel/runtime': 7.24.0 + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.65)(react@18.2.0) + '@mui/base': 5.0.0-beta.39(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react@18.2.0) + '@mui/utils': 5.15.13(@types/react@18.2.65)(react@18.2.0) '@types/react-transition-group': 4.4.10 - clsx: 2.0.0 + clsx: 2.1.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6233,7 +4310,7 @@ packages: '@babel/runtime': 7.24.0 dev: true - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -6247,14 +4324,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: '@types/react': '*' @@ -6268,17 +4345,17 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.38)(react@18.2.0): + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: '@types/react': '*' @@ -6288,11 +4365,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@types/react': 18.2.38 + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@radix-ui/react-context@1.0.1(@types/react@18.2.38)(react@18.2.0): + /@radix-ui/react-context@1.0.1(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: '@types/react': '*' @@ -6302,11 +4379,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@types/react': 18.2.38 + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@radix-ui/react-direction@1.0.1(@types/react@18.2.38)(react@18.2.0): + /@radix-ui/react-direction@1.0.1(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: '@types/react': '*' @@ -6316,11 +4393,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@types/react': 18.2.38 + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} peerDependencies: '@types/react': '*' @@ -6335,17 +4412,17 @@ packages: dependencies: '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.38)(react@18.2.0): + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: '@types/react': '*' @@ -6355,11 +4432,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@types/react': 18.2.38 + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} peerDependencies: '@types/react': '*' @@ -6373,16 +4450,16 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-id@1.0.1(@types/react@18.2.38)(react@18.2.0): + /@radix-ui/react-id@1.0.1(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: '@types/react': '*' @@ -6392,12 +4469,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} peerDependencies: '@types/react': '*' @@ -6412,22 +4489,22 @@ packages: dependencies: '@babel/runtime': 7.24.0 '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.38)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.65)(react@18.2.0) '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} peerDependencies: '@types/react': '*' @@ -6441,14 +4518,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -6462,14 +4539,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' @@ -6484,21 +4561,21 @@ packages: dependencies: '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-select@1.2.2(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-select@1.2.2(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==} peerDependencies: '@types/react': '*' @@ -6514,32 +4591,32 @@ packages: '@babel/runtime': 7.24.0 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.38)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.65)(react@18.2.0) dev: true - /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} peerDependencies: '@types/react': '*' @@ -6553,14 +4630,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-slot@1.0.2(@types/react@18.2.38)(react@18.2.0): + /@radix-ui/react-slot@1.0.2(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' @@ -6570,12 +4647,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} peerDependencies: '@types/react': '*' @@ -6590,19 +4667,19 @@ packages: dependencies: '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} peerDependencies: '@types/react': '*' @@ -6617,15 +4694,15 @@ packages: dependencies: '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} peerDependencies: '@types/react': '*' @@ -6640,19 +4717,19 @@ packages: dependencies: '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.38)(react@18.2.0): + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: '@types/react': '*' @@ -6662,11 +4739,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@types/react': 18.2.38 + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.38)(react@18.2.0): + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: '@types/react': '*' @@ -6676,12 +4753,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.38)(react@18.2.0): + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: '@types/react': '*' @@ -6691,12 +4768,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.38)(react@18.2.0): + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: '@types/react': '*' @@ -6706,11 +4783,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@types/react': 18.2.38 + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.38)(react@18.2.0): + /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} peerDependencies: '@types/react': '*' @@ -6720,11 +4797,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@types/react': 18.2.38 + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.38)(react@18.2.0): + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} peerDependencies: '@types/react': '*' @@ -6735,11 +4812,11 @@ packages: dependencies: '@babel/runtime': 7.24.0 '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.38 + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@radix-ui/react-use-size@1.0.1(@types/react@18.2.38)(react@18.2.0): + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} peerDependencies: '@types/react': '*' @@ -6749,12 +4826,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.38)(react@18.2.0) - '@types/react': 18.2.38 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 react: 18.2.0 dev: true - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} peerDependencies: '@types/react': '*' @@ -6768,9 +4845,9 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.38 - '@types/react-dom': 18.2.17 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.65 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -6805,40 +4882,40 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@reactflow/background@11.3.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-06FPlSUOOMALEEs+2PqPAbpqmL7WDjrkbG2UsDr2d6mbcDDhHiV4tu9FYoz44SQvXo7ma9VRotlsaR4OiRcYsg==} + /@reactflow/background@11.3.9(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-byj/G9pEC8tN0wT/ptcl/LkEP/BBfa33/SvBkqE4XwyofckqF87lKp573qGlisfnsijwAbpDlf81PuFL41So4Q==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.4(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.6(@types/react@18.2.38)(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.65)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/controls@11.2.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-4QHT92/ACVlZkvV+Hq44bAPV8WbMhkJl+/J0EbXcqQ1+an7cWJsF84eeelJw7R5J76RoaSSpKdsWsL2v7HAVlw==} + /@reactflow/controls@11.2.9(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-e8nWplbYfOn83KN1BrxTXS17+enLyFnjZPbyDgHSRLtI5ZGPKF/8iRXV+VXb2LFVzlu4Wh3la/pkxtfP/0aguA==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.4(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.6(@types/react@18.2.38)(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.65)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/core@11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-GIh3usY1W3eVobx//OO9+Cwm+5evQBBdPGxDaeXwm25UqPMWRI240nXQA5F/5gL5Mwpf0DUC7DR2EmrKNQy+Rw==} + /@reactflow/core@11.10.4(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-j3i9b2fsTX/sBbOm+RmNzYEFWbNx4jGWGuGooh2r1jQaE2eV+TLJgiG/VNOp0q5mBl9f6g1IXs3Gm86S9JfcGw==} peerDependencies: react: '>=17' react-dom: '>=17' @@ -6853,19 +4930,19 @@ packages: d3-zoom: 3.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.6(@types/react@18.2.38)(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.65)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/minimap@11.7.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-kJEtyeQkTZYViLGebVWHVUJROMAGcvejvT+iX4DqKnFb5yK8E8LWlXQpRx2FrL9gDy80mJJaciy7IxnnQKE1bg==} + /@reactflow/minimap@11.7.9(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-le95jyTtt3TEtJ1qa7tZ5hyM4S7gaEQkW43cixcMOZLu33VAdc2aCpJg/fXcRrrf7moN2Mbl9WIMNXUKsp5ILA==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.4(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) '@types/d3-selection': 3.0.10 '@types/d3-zoom': 3.0.8 classcat: 5.0.4 @@ -6873,41 +4950,41 @@ packages: d3-zoom: 3.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.6(@types/react@18.2.38)(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.65)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/node-resizer@2.2.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-1Xb6q97uP7hRBLpog9sRCNfnsHdDgFRGEiU+lQqGgPEAeYwl4nRjWa/sXwH6ajniKxBhGEvrdzOgEFn6CRMcpQ==} + /@reactflow/node-resizer@2.2.9(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HfickMm0hPDIHt9qH997nLdgLt0kayQyslKE0RS/GZvZ4UMQJlx/NRRyj5y47Qyg0NnC66KYOQWDM9LLzRTnUg==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.4(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 d3-drag: 3.0.0 d3-selection: 3.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.6(@types/react@18.2.38)(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.65)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/node-toolbar@1.3.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-JXDEuZ0wKjZ8z7qK2bIst0eZPzNyVEsiHL0e93EyuqT4fA9icoyE0fLq2ryNOOp7MXgId1h7LusnH6ta45F0yQ==} + /@reactflow/node-toolbar@1.3.9(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-VmgxKmToax4sX1biZ9LXA7cj/TBJ+E5cklLGwquCCVVxh+lxpZGTBF3a5FJGVHiUNBBtFsC8ldcSZIK4cAlQww==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.4(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.6(@types/react@18.2.38)(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.65)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer @@ -6944,15 +5021,6 @@ packages: react: 18.2.0 dev: false - /@restart/hooks@0.4.11(react@18.2.0): - resolution: {integrity: sha512-Ft/ncTULZN6ldGHiF/k5qt72O8JyRMOeg0tApvCni8LkoiEahO+z3TNxfXIVGy890YtWVDvJAl662dVJSJXvMw==} - peerDependencies: - react: '>=16.8.0' - dependencies: - dequal: 2.0.3 - react: 18.2.0 - dev: false - /@restart/hooks@0.4.16(react@18.2.0): resolution: {integrity: sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==} peerDependencies: @@ -6970,19 +5038,6 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils@5.0.5: - resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - /@rollup/pluginutils@5.1.0: resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -7003,13 +5058,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-android-arm-eabi@4.6.0: - resolution: {integrity: sha512-keHkkWAe7OtdALGoutLY3utvthkGF+Y17ws9LYT8pxMBYXaCoH/8dXS2uzo6e8+sEhY7y/zi5RFo22Dy2lFpDw==} - cpu: [arm] - os: [android] - requiresBuild: true - optional: true - /@rollup/rollup-android-arm64@4.13.0: resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==} cpu: [arm64] @@ -7017,13 +5065,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.6.0: - resolution: {integrity: sha512-y3Kt+34smKQNWilicPbBz/MXEY7QwDzMFNgwEWeYiOhUt9MTWKjHqe3EVkXwT2fR7izOvHpDWZ0o2IyD9SWX7A==} - cpu: [arm64] - os: [android] - requiresBuild: true - optional: true - /@rollup/rollup-darwin-arm64@4.13.0: resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==} cpu: [arm64] @@ -7031,13 +5072,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.6.0: - resolution: {integrity: sha512-oLzzxcUIHltHxOCmaXl+pkIlU+uhSxef5HfntW7RsLh1eHm+vJzjD9Oo4oUKso4YuP4PpbFJNlZjJuOrxo8dPg==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - /@rollup/rollup-darwin-x64@4.13.0: resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==} cpu: [x64] @@ -7045,13 +5079,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.6.0: - resolution: {integrity: sha512-+ANnmjkcOBaV25n0+M0Bere3roeVAnwlKW65qagtuAfIxXF9YxUneRyAn/RDcIdRa7QrjRNJL3jR7T43ObGe8Q==} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.13.0: resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==} cpu: [arm] @@ -7059,13 +5086,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.6.0: - resolution: {integrity: sha512-tBTSIkjSVUyrekddpkAqKOosnj1Fc0ZY0rJL2bIEWPKqlEQk0paORL9pUIlt7lcGJi3LzMIlUGXvtNi1Z6MOCQ==} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - /@rollup/rollup-linux-arm64-gnu@4.13.0: resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==} cpu: [arm64] @@ -7073,13 +5093,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.6.0: - resolution: {integrity: sha512-Ed8uJI3kM11de9S0j67wAV07JUNhbAqIrDYhQBrQW42jGopgheyk/cdcshgGO4fW5Wjq97COCY/BHogdGvKVNQ==} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - /@rollup/rollup-linux-arm64-musl@4.13.0: resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==} cpu: [arm64] @@ -7087,13 +5100,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.6.0: - resolution: {integrity: sha512-mZoNQ/qK4D7SSY8v6kEsAAyDgznzLLuSFCA3aBHZTmf3HP/dW4tNLTtWh9+LfyO0Z1aUn+ecpT7IQ3WtIg3ViQ==} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - /@rollup/rollup-linux-riscv64-gnu@4.13.0: resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==} cpu: [riscv64] @@ -7108,13 +5114,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.6.0: - resolution: {integrity: sha512-rouezFHpwCqdEXsqAfNsTgSWO0FoZ5hKv5p+TGO5KFhyN/dvYXNMqMolOb8BkyKcPqjYRBeT+Z6V3aM26rPaYg==} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - /@rollup/rollup-linux-x64-musl@4.13.0: resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==} cpu: [x64] @@ -7122,13 +5121,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.6.0: - resolution: {integrity: sha512-Bbm+fyn3S6u51urfj3YnqBXg5vI2jQPncRRELaucmhBVyZkbWClQ1fEsRmdnCPpQOQfkpg9gZArvtMVkOMsh1w==} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - /@rollup/rollup-win32-arm64-msvc@4.13.0: resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==} cpu: [arm64] @@ -7136,13 +5128,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.6.0: - resolution: {integrity: sha512-+MRMcyx9L2kTrTUzYmR61+XVsliMG4odFb5UmqtiT8xOfEicfYAGEuF/D1Pww1+uZkYhBqAHpvju7VN+GnC3ng==} - cpu: [arm64] - os: [win32] - requiresBuild: true - optional: true - /@rollup/rollup-win32-ia32-msvc@4.13.0: resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==} cpu: [ia32] @@ -7150,13 +5135,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.6.0: - resolution: {integrity: sha512-rxfeE6K6s/Xl2HGeK6cO8SiQq3k/3BYpw7cfhW5Bk2euXNEpuzi2cc7llxx1si1QgwfjNtdRNTGqdBzGlFZGFw==} - cpu: [ia32] - os: [win32] - requiresBuild: true - optional: true - /@rollup/rollup-win32-x64-msvc@4.13.0: resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==} cpu: [x64] @@ -7164,22 +5142,15 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.6.0: - resolution: {integrity: sha512-QqmCsydHS172Y0Kc13bkMXvipbJSvzeglBncJG3LsYJSiPlxYACz7MmJBs4A8l1oU+jfhYEIC/+AUSlvjmiX/g==} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - - /@rushstack/node-core-library@3.61.0(@types/node@18.18.13): - resolution: {integrity: sha512-tdOjdErme+/YOu4gPed3sFS72GhtWCgNV9oDsHDnoLY5oDfwjKUc9Z+JOZZ37uAxcm/OCahDHfuu2ugqrfWAVQ==} + /@rushstack/node-core-library@3.62.0(@types/node@18.19.24): + resolution: {integrity: sha512-88aJn2h8UpSvdwuDXBv1/v1heM6GnBf3RjEy6ZPP7UnzHNCqOHA2Ut+ScYUbXcqIdfew9JlTAe3g+cnX9xQ/Aw==} peerDependencies: '@types/node': '*' peerDependenciesMeta: '@types/node': optional: true dependencies: - '@types/node': 18.18.13 + '@types/node': 18.19.24 colors: 1.2.5 fs-extra: 7.0.1 import-lazy: 4.0.0 @@ -7315,76 +5286,88 @@ packages: - supports-color dev: true - /@sentry-internal/feedback@7.86.0: - resolution: {integrity: sha512-6rl0JYjmAKnhm4/fuFaROh4Ht8oi9f6ZeIcViCuGJcrGICZJJY0s+R77XJI78rNa82PYFrSCcnWXcGji4T8E7g==} + /@sentry-internal/feedback@7.106.1: + resolution: {integrity: sha512-udYR7rQnnQJ0q4PP3R7lTFx7cUz3SB4ghm8T/fJzdItrk+Puv6y8VqI19SFfDgvwgStInEzE5yys6SUQcXLBtA==} + engines: {node: '>=12'} + dependencies: + '@sentry/core': 7.106.1 + '@sentry/types': 7.106.1 + '@sentry/utils': 7.106.1 + dev: false + + /@sentry-internal/replay-canvas@7.106.1: + resolution: {integrity: sha512-r+nhLrQuTQih93gZ08F6MLdmaoBy/bQFcVt/2ZVqe1SkDY+MxRlXxq8ydo3FfgEjMRHdody3yT1dj6E174h23w==} engines: {node: '>=12'} dependencies: - '@sentry/core': 7.86.0 - '@sentry/types': 7.86.0 - '@sentry/utils': 7.86.0 + '@sentry/core': 7.106.1 + '@sentry/replay': 7.106.1 + '@sentry/types': 7.106.1 + '@sentry/utils': 7.106.1 dev: false - /@sentry-internal/tracing@7.86.0: - resolution: {integrity: sha512-b4dUsNWlPWRwakGwR7bhOkqiFlqQszH1hhVFwrm/8s3kqEBZ+E4CeIfCvuHBHQ1cM/fx55xpXX/BU163cy+3iQ==} + /@sentry-internal/tracing@7.106.1: + resolution: {integrity: sha512-Ui9zSmW88jTdmNnNBLYYpNoAi31esX5/auysC3v7+SpwxIsC3AGLFvXs4EPziyz8d0F62Ji0fNQZ96ui4fO6BQ==} engines: {node: '>=8'} dependencies: - '@sentry/core': 7.86.0 - '@sentry/types': 7.86.0 - '@sentry/utils': 7.86.0 + '@sentry/core': 7.106.1 + '@sentry/types': 7.106.1 + '@sentry/utils': 7.106.1 dev: false - /@sentry/browser@7.86.0: - resolution: {integrity: sha512-nfYWpVOmug+W7KJO7/xhA1JScMZcYHcoOVHLsUFm4znx51U4qZEk+zZDM11Q2Nw6MuDyEYg6bsH1QCwaoC6nLw==} + /@sentry/browser@7.106.1: + resolution: {integrity: sha512-+Yp7OUx78ZwFFYfIvOKZGjMPW7Ds3zZSO8dsMxvDRzkA9NyyAmYMZ/dNTcsGb+PssgkCasF2XA07f6WgkNW92A==} engines: {node: '>=8'} dependencies: - '@sentry-internal/feedback': 7.86.0 - '@sentry-internal/tracing': 7.86.0 - '@sentry/core': 7.86.0 - '@sentry/replay': 7.86.0 - '@sentry/types': 7.86.0 - '@sentry/utils': 7.86.0 + '@sentry-internal/feedback': 7.106.1 + '@sentry-internal/replay-canvas': 7.106.1 + '@sentry-internal/tracing': 7.106.1 + '@sentry/core': 7.106.1 + '@sentry/replay': 7.106.1 + '@sentry/types': 7.106.1 + '@sentry/utils': 7.106.1 dev: false - /@sentry/core@7.86.0: - resolution: {integrity: sha512-SbLvqd1bRYzhDS42u7GMnmbDMfth/zRiLElQWbLK/shmuZzTcfQSwNNdF4Yj+VfjOkqPFgGmICHSHVUc9dh01g==} + /@sentry/core@7.106.1: + resolution: {integrity: sha512-cwCd66wkbutXCI8j14JLkyod9RHtqSNfzGpx/ieBE+N786jX+Yj1DiaZJ6ZYjKQpnToipFnacEakCd9Vc9oePA==} engines: {node: '>=8'} dependencies: - '@sentry/types': 7.86.0 - '@sentry/utils': 7.86.0 + '@sentry/types': 7.106.1 + '@sentry/utils': 7.106.1 dev: false - /@sentry/react@7.86.0(react@18.2.0): - resolution: {integrity: sha512-2bHi+YcG4cT+4xHXXzv+AZpU3pdPUlDBorSgHOpa9At4yxr17UWW2f8bP9wPYRgj+NEIM3YhDgR46FlBu9GSKg==} + /@sentry/react@7.106.1(react@18.2.0): + resolution: {integrity: sha512-XcvjXGist0vLapzxZxdbPSdLC4drhGOETtlA/kO+KrIKqlqRKuYw+kieU+YeyF9A/L8uSVvbj9rpjl5WVUTdIw==} engines: {node: '>=8'} peerDependencies: react: 15.x || 16.x || 17.x || 18.x dependencies: - '@sentry/browser': 7.86.0 - '@sentry/types': 7.86.0 - '@sentry/utils': 7.86.0 + '@sentry/browser': 7.106.1 + '@sentry/core': 7.106.1 + '@sentry/types': 7.106.1 + '@sentry/utils': 7.106.1 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false - /@sentry/replay@7.86.0: - resolution: {integrity: sha512-YYZO8bfQSx1H87Te/zzyHPLHvExWiYwUfMWW68yGX+PPZIIzxaM81/iCQHkoucxlvuPCOtxCgf7RSMbsnqEa8g==} + /@sentry/replay@7.106.1: + resolution: {integrity: sha512-UnuY6bj7v7CVv3T1sbLHjLutSG4hzcQQj6CjEB2NUpM+QAIguFrwAcYG4U42iNg4Qeg5q4kHi1rPpdpvh6unSA==} engines: {node: '>=12'} dependencies: - '@sentry-internal/tracing': 7.86.0 - '@sentry/core': 7.86.0 - '@sentry/types': 7.86.0 - '@sentry/utils': 7.86.0 + '@sentry-internal/tracing': 7.106.1 + '@sentry/core': 7.106.1 + '@sentry/types': 7.106.1 + '@sentry/utils': 7.106.1 dev: false - /@sentry/types@7.86.0: - resolution: {integrity: sha512-pGAt0+bMfWgo0KG2epthfNV4Wae03tURpoxNjGo5Fr4cXxvLTSijSAQ6rmmO4bXBJ7+rErEjX30g30o/eEdP9g==} + /@sentry/types@7.106.1: + resolution: {integrity: sha512-g3OcyAHGugBwkQP4fZYCCZqF2ng9K7yQc9FVngKq/y7PwHm84epXdYYGDGgfQOIC1d5/GMaPxmzI5IIrZexzkg==} engines: {node: '>=8'} - /@sentry/utils@7.86.0: - resolution: {integrity: sha512-6PejFtw9VTFFy5vu0ks+U7Ozkqz+eMt+HN8AZKBKErYzX5/xs0kpkOcSRpu3ETdTYcZf8VAmLVgFgE2BE+3WuQ==} + /@sentry/utils@7.106.1: + resolution: {integrity: sha512-NIeuvB9MeDwrObbi6W5xRrNTcQj8klVvwWWYQB0zotY/LDjyl+c+cZzUshFOxBTp9ljVnYzWqZ7J8x/i4baj7w==} engines: {node: '>=8'} dependencies: - '@sentry/types': 7.86.0 + '@sentry/types': 7.106.1 dev: false /@sinclair/typebox@0.27.8: @@ -7395,8 +5378,8 @@ packages: engines: {node: '>=6'} dev: true - /@sinonjs/commons@3.0.0: - resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} dependencies: type-detect: 4.0.8 dev: false @@ -7404,125 +5387,65 @@ packages: /@sinonjs/fake-timers@10.3.0: resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} dependencies: - '@sinonjs/commons': 3.0.0 + '@sinonjs/commons': 3.0.1 dev: false - /@storybook/addon-actions@7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-v3yL6Eq/jCiXfA24JjRdbEQUuorms6tmrywaKcd1tAy4Ftgof0KHB4tTcTyiajrI5bh6PVJoRBkE8IDqmNAHkA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + /@storybook/addon-actions@7.6.17: + resolution: {integrity: sha512-TBphs4v6LRfyTpFo/WINF0TkMaE3rrNog7wW5mbz6n0j8o53kDN4o9ZEcygSL5zQX43CAaghQTeDCss7ueG7ZQ==} dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.5.3 + '@storybook/core-events': 7.6.17 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.3 - '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.3 + '@types/uuid': 9.0.8 dequal: 2.0.3 - lodash: 4.17.21 - polished: 4.2.2 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-inspector: 6.0.2(react@18.2.0) - telejson: 7.2.0 - ts-dedent: 2.2.0 + polished: 4.3.1 uuid: 9.0.1 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' dev: true - /@storybook/addon-backgrounds@7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-UCOVd4UNIL5FRiwi9nyiWFocn/7ewwS6bIWnq66AaHg/sv92YwsPmgQJn0DMBGDOvUAWpiHdVsZNOTX6nvw4gA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + /@storybook/addon-backgrounds@7.6.17: + resolution: {integrity: sha512-7dize7x8+37PH77kmt69b0xSaeDqOcZ4fpzW6+hk53hIaCVU26eGs4+j+743Xva31eOgZWNLupUhOpUDc6SqZw==} dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.3 - '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.3 memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' dev: true - /@storybook/addon-controls@7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-KEuU4X5Xr6cJI9xrzOUVGEmUf1iHPfK7cj0GACKv0GElsdIsQryv+OZ7gRnvmNax/e2hm2t9cJcFxB24/p6rVg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + /@storybook/addon-controls@7.6.17(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-zR0aLaUF7FtV/nMRyfniFbCls/e0DAAoXACuOAUAwNAv0lbIS8AyZZiHSmKucCvziUQ6WceeCC7+du3C+9y0rQ==} dependencies: - '@storybook/blocks': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.5.3 - '@storybook/core-events': 7.5.3 - '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.5.3 - '@storybook/preview-api': 7.5.3 - '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.3 + '@storybook/blocks': 7.6.17(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@types/react-dom' - encoding + - react + - react-dom - supports-color dev: true - /@storybook/addon-docs@7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-JVQ6iCXKESij/SbE4Wq47dkSSgBRulvA8SUf8NWL5m9qpiHrg0lPSERHfoTLiB5uC/JwF0OKIlhxoWl+zCmtYg==} + /@storybook/addon-docs@7.6.17(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-FKa4Mdy7nhgvEVZJHpMkHriDzpVHbohn87zv9NCL+Ctjs1iAmzGwxEm0culszyDS1HN2ToVoY0h8CSi2RSSZqA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@jest/transform': 29.7.0 '@mdx-js/react': 2.3.0(react@18.2.0) - '@storybook/blocks': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/csf-plugin': 7.5.3 - '@storybook/csf-tools': 7.5.3 + '@storybook/blocks': 7.6.17(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.6.17 + '@storybook/components': 7.6.17(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@storybook/csf-plugin': 7.6.17 + '@storybook/csf-tools': 7.6.17 '@storybook/global': 5.0.0 '@storybook/mdx2-csf': 1.1.0 - '@storybook/node-logger': 7.5.3 - '@storybook/postinstall': 7.5.3 - '@storybook/preview-api': 7.5.3 - '@storybook/react-dom-shim': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.3 - fs-extra: 11.1.1 + '@storybook/node-logger': 7.6.17 + '@storybook/postinstall': 7.6.17 + '@storybook/preview-api': 7.6.17 + '@storybook/react-dom-shim': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.17 + fs-extra: 11.2.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) remark-external-links: 8.0.0 @@ -7535,25 +5458,25 @@ packages: - supports-color dev: true - /@storybook/addon-essentials@7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-PYj6swEI4nEzIbOTyHJB8u3K8ABYKoaW8XB5emMwsnrzB/TN7auHVhze2bQ/+ax5wyPKZpArPjxbWlSHtSws+A==} + /@storybook/addon-essentials@7.6.17(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qlSpamxuYfT2taF953nC9QijGF2pSbg1ewMNpdwLTj16PTZvR/d8NCDMTJujI1bDwM2m18u8Yc43ibh5LEmxCw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addon-actions': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-backgrounds': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-controls': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-docs': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-highlight': 7.5.3 - '@storybook/addon-measure': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-outline': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-toolbars': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-viewport': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.5.3 - '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.5.3 - '@storybook/preview-api': 7.5.3 + '@storybook/addon-actions': 7.6.17 + '@storybook/addon-backgrounds': 7.6.17 + '@storybook/addon-controls': 7.6.17(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-docs': 7.6.17(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-highlight': 7.6.17 + '@storybook/addon-measure': 7.6.17 + '@storybook/addon-outline': 7.6.17 + '@storybook/addon-toolbars': 7.6.17 + '@storybook/addon-viewport': 7.6.17 + '@storybook/core-common': 7.6.17 + '@storybook/manager-api': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': 7.6.17 + '@storybook/preview-api': 7.6.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 @@ -7564,203 +5487,89 @@ packages: - supports-color dev: true - /@storybook/addon-highlight@7.5.3: - resolution: {integrity: sha512-jb+aNRhj+tFK7EqqTlNCjGkTrkWqWHGdD1ubgnj29v8XhRuCR9YboPS+306KYwBEkuF4kNCHZofLiEBPf6nCJg==} + /@storybook/addon-highlight@7.6.17: + resolution: {integrity: sha512-R1yBPUUqGn+60aJakn8q+5Zt34E/gU3n3VmgPdryP0LJUdZ5q1/RZShoVDV+yYQ40htMH6oaCv3OyyPzFAGJ6A==} dependencies: - '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.5.3 dev: true - /@storybook/addon-interactions@7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-gD3cU8sYSM/mdbA9ooYIb4c689JkDsJbZ17vfYJ5RjNkSmqKehybdpZOfkj27sVIyFtmscSi75t+pzK4Pv4rZw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + /@storybook/addon-interactions@7.6.17: + resolution: {integrity: sha512-6zlX+RDQ1PlA6fp7C+hun8t7h2RXfCGs5dGrhEenp2lqnR/rYuUJRC0tmKpkZBb8kZVcbSChzkB/JYkBjBCzpQ==} dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.5.3 - '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/instrumenter': 7.5.3 - '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.3 - '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.3 + '@storybook/types': 7.6.17 jest-mock: 27.5.1 - polished: 4.2.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - supports-color - dev: true - - /@storybook/addon-links@7.5.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-NcigW0HX8AllZ/KJ4u1KMiK30QvjqtC+zApI6Yc3tTaa6+BldbLv06fEgHgMY0yC8R+Ly9mUN7S1HiU7LQ7Qxg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/core-events': 7.5.3 - '@storybook/csf': 0.1.2 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.3 - '@storybook/router': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.3 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 - dev: true - - /@storybook/addon-measure@7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-fun9BqUTGXgcMpcbX9wUowGDkjCL8oKasZbjp/MvGM3vPTM6HQdwzHTLJGPBnmJ1xK92NhwFRs0BrQX6uF1yrg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.5.3 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.3 - '@storybook/types': 7.5.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tiny-invariant: 1.3.1 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - dev: true - - /@storybook/addon-outline@7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-c9vCi1SCGrtWr8qaOu/1GNWlrlrpl2lg4F9r+xtYf/KopenI3jSMz0YeTfmepZGAl+6Yc2Ywhm60jgpQ6SKciA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.5.3 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.3 - '@storybook/types': 7.5.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - dev: true - - /@storybook/addon-toolbars@7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-KdLr4sGMJzhtjNTNE2ocfu58yOHHUyZ/cI3BTp7a0gq9YbUpHmC3XTNr26/yOYYrdjkiMD26XusJUjXe+/V2xw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.3 - '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' + polished: 4.3.1 + ts-dedent: 2.2.0 dev: true - /@storybook/addon-viewport@7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-gT2XX0NNBrzSs1nrxadl6LnvcwgN7z2R0LzTK8/hxvx4D0EnXrV3feXLzjewr8ZYjzfEeSpO+W+bQTVNm3fNsg==} + /@storybook/addon-links@7.6.17(react@18.2.0): + resolution: {integrity: sha512-iFUwKObRn0EKI0zMETsil2p9a/81rCuSMEWECsi+khkCAs1FUnD2cT6Ag5ydcNcBXsdtdfDJdtXQrkw+TSoStQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: react: optional: true - react-dom: - optional: true dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.5.3 + '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.3 - '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) - memoizerific: 1.11.3 - prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' + ts-dedent: 2.2.0 + dev: true + + /@storybook/addon-measure@7.6.17: + resolution: {integrity: sha512-O5vnHZNkduvZ95jf1UssbOl6ivIxzl5tv+4EpScPYId7w700bxWsJH+QX7ip6KlrCf2o3iUhmPe8bm05ghG2KA==} + dependencies: + '@storybook/global': 5.0.0 + tiny-invariant: 1.3.3 + dev: true + + /@storybook/addon-outline@7.6.17: + resolution: {integrity: sha512-9o9JXDsYjNaDgz/cY5+jv694+aik/1aiRGGvsCv68e1p/ob0glkGKav4lnJe2VJqD+gCmaARoD8GOJlhoQl8JQ==} + dependencies: + '@storybook/global': 5.0.0 + ts-dedent: 2.2.0 + dev: true + + /@storybook/addon-toolbars@7.6.17: + resolution: {integrity: sha512-UMrchbUHiyWrh6WuGnpy34Jqzkx/63B+MSgb3CW7YsQaXz64kE0Rol0TNSznnB+mYXplcqH+ndI4r4kFsmgwDg==} dev: true - /@storybook/blocks@7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Z8yF820v78clQWkwG5OA5qugbQn7rtutq9XCsd03NDB+IEfDaTFQAZG8gs62ZX2ZaXAJsqJSr/mL9oURzXto2A==} + /@storybook/addon-viewport@7.6.17: + resolution: {integrity: sha512-sA0QCcf4QAMixWvn8uvRYPfkKCSl6JajJaAspoPqXSxHEpK7uwOlpg3kqFU5XJJPXD0X957M+ONgNvBzYqSpEw==} + dependencies: + memoizerific: 1.11.3 + dev: true + + /@storybook/blocks@7.6.17(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PsNVoe0bX1mMn4Kk3nbKZ0ItDZZ0YJnYAFJ6toAbsyBAbgzg1sce88sQinzvbn58/RT9MPKeWMPB45ZS7ggiNg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/channels': 7.5.3 - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.5.3 + '@storybook/channels': 7.6.17 + '@storybook/client-logger': 7.6.17 + '@storybook/components': 7.6.17(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.6.17 '@storybook/csf': 0.1.2 - '@storybook/docs-tools': 7.5.3 + '@storybook/docs-tools': 7.6.17 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.3 - '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.3 - '@types/lodash': 4.14.202 + '@storybook/manager-api': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.6.17 + '@storybook/theming': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.17 + '@types/lodash': 4.17.0 color-convert: 2.0.1 dequal: 2.0.3 lodash: 4.17.21 - markdown-to-jsx: 7.3.2(react@18.2.0) + markdown-to-jsx: 7.4.3(react@18.2.0) memoizerific: 1.11.3 - polished: 4.2.2 + polished: 4.3.1 react: 18.2.0 react-colorful: 5.6.1(react-dom@18.2.0)(react@18.2.0) react-dom: 18.2.0(react@18.2.0) telejson: 7.2.0 - tocbot: 4.23.0 + tocbot: 4.25.0 ts-dedent: 2.2.0 util-deprecate: 1.0.2 transitivePeerDependencies: @@ -7770,13 +5579,13 @@ packages: - supports-color dev: true - /@storybook/builder-manager@7.5.3: - resolution: {integrity: sha512-uf4Vyj8ofHaq94m065SMvFKak1XrrxgI83VZAxc2QjiPcbRwcVOZd+wcKFdZydqqA6FlBDdJrU+k9INA4Qkfcw==} + /@storybook/builder-manager@7.6.17: + resolution: {integrity: sha512-Sj8hcDYiPCCMfeLzus37czl0zdrAxAz4IyYam2jBjVymrIrcDAFyL1OCZvnq33ft179QYQWhUs9qwzVmlR/ZWg==} dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 7.5.3 - '@storybook/manager': 7.5.3 - '@storybook/node-logger': 7.5.3 + '@storybook/core-common': 7.6.17 + '@storybook/manager': 7.6.17 + '@storybook/node-logger': 7.6.17 '@types/ejs': 3.1.5 '@types/find-cache-dir': 3.2.1 '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.18.20) @@ -7784,9 +5593,9 @@ packages: ejs: 3.1.9 esbuild: 0.18.20 esbuild-plugin-alias: 0.2.1 - express: 4.18.2 + express: 4.18.3 find-cache-dir: 3.3.2 - fs-extra: 11.1.1 + fs-extra: 11.2.0 process: 0.11.10 util: 0.12.5 transitivePeerDependencies: @@ -7794,8 +5603,8 @@ packages: - supports-color dev: true - /@storybook/builder-vite@7.5.3(typescript@5.3.2)(vite@5.0.2): - resolution: {integrity: sha512-c104V3O75OCVnfZj0Jr70V09g0KSbPGvQK2Zh31omXGvakG8XrhWolYxkmjOcForJmAqsXnKs/nw3F75Gp853g==} + /@storybook/builder-vite@7.6.17(typescript@5.4.2)(vite@5.1.6): + resolution: {integrity: sha512-2Q32qalI401EsKKr9Hkk8TAOcHEerqwsjCpQgTNJnCu6GgCVKoVUcb99oRbR9Vyg0xh+jb19XiWqqQujFtLYlQ==} peerDependencies: '@preact/preset-vite': '*' typescript: '>= 4.3.x' @@ -7809,81 +5618,80 @@ packages: vite-plugin-glimmerx: optional: true dependencies: - '@storybook/channels': 7.5.3 - '@storybook/client-logger': 7.5.3 - '@storybook/core-common': 7.5.3 - '@storybook/csf-plugin': 7.5.3 - '@storybook/node-logger': 7.5.3 - '@storybook/preview': 7.5.3 - '@storybook/preview-api': 7.5.3 - '@storybook/types': 7.5.3 + '@storybook/channels': 7.6.17 + '@storybook/client-logger': 7.6.17 + '@storybook/core-common': 7.6.17 + '@storybook/csf-plugin': 7.6.17 + '@storybook/node-logger': 7.6.17 + '@storybook/preview': 7.6.17 + '@storybook/preview-api': 7.6.17 + '@storybook/types': 7.6.17 '@types/find-cache-dir': 3.2.1 browser-assert: 1.2.1 es-module-lexer: 0.9.3 - express: 4.18.2 + express: 4.18.3 find-cache-dir: 3.3.2 - fs-extra: 11.1.1 - magic-string: 0.30.5 + fs-extra: 11.2.0 + magic-string: 0.30.8 rollup: 3.29.4 - typescript: 5.3.2 - vite: 5.0.2(@types/node@18.18.13)(sass@1.69.5) + typescript: 5.4.2 + vite: 5.1.6(@types/node@18.19.24)(sass@1.71.1) transitivePeerDependencies: - encoding - supports-color dev: true - /@storybook/channels@7.5.3: - resolution: {integrity: sha512-dhWuV2o2lmxH0RKuzND8jxYzvSQTSmpE13P0IT/k8+I1up/rSNYOBQJT6SalakcNWXFAMXguo/8E7ApmnKKcEw==} + /@storybook/channels@7.6.17: + resolution: {integrity: sha512-GFG40pzaSxk1hUr/J/TMqW5AFDDPUSu+HkeE/oqSWJbOodBOLJzHN6CReJS6y1DjYSZLNFt1jftPWZZInG/XUA==} dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/core-events': 7.5.3 + '@storybook/client-logger': 7.6.17 + '@storybook/core-events': 7.6.17 '@storybook/global': 5.0.0 - qs: 6.11.2 + qs: 6.12.0 telejson: 7.2.0 - tiny-invariant: 1.3.1 + tiny-invariant: 1.3.3 dev: true - /@storybook/cli@7.5.3: - resolution: {integrity: sha512-XysHSnknZTAcTbQ0bQsbfv5J8ifHpOBsmXjk1HCA05E9WGGrn9JrQRCfpDUQJ6O6UWq0bpMqzP8gFLWXFE7hug==} + /@storybook/cli@7.6.17: + resolution: {integrity: sha512-1sCo+nCqyR+nKfTcEidVu8XzNoECC7Y1l+uW38/r7s2f/TdDorXaIGAVrpjbSaXSoQpx5DxYJVaKCcQuOgqwcA==} hasBin: true dependencies: - '@babel/core': 7.23.3 - '@babel/preset-env': 7.23.3(@babel/core@7.24.0) - '@babel/types': 7.23.4 + '@babel/core': 7.24.0 + '@babel/preset-env': 7.24.0(@babel/core@7.24.0) + '@babel/types': 7.24.0 '@ndelangen/get-tarball': 3.0.9 - '@storybook/codemod': 7.5.3 - '@storybook/core-common': 7.5.3 - '@storybook/core-events': 7.5.3 - '@storybook/core-server': 7.5.3 - '@storybook/csf-tools': 7.5.3 - '@storybook/node-logger': 7.5.3 - '@storybook/telemetry': 7.5.3 - '@storybook/types': 7.5.3 - '@types/semver': 7.5.6 + '@storybook/codemod': 7.6.17 + '@storybook/core-common': 7.6.17 + '@storybook/core-events': 7.6.17 + '@storybook/core-server': 7.6.17 + '@storybook/csf-tools': 7.6.17 + '@storybook/node-logger': 7.6.17 + '@storybook/telemetry': 7.6.17 + '@storybook/types': 7.6.17 + '@types/semver': 7.5.8 '@yarnpkg/fslib': 2.10.3 '@yarnpkg/libzip': 2.3.0 chalk: 4.1.2 commander: 6.2.1 cross-spawn: 7.0.3 detect-indent: 6.1.0 - envinfo: 7.11.0 + envinfo: 7.11.1 execa: 5.1.1 - express: 4.18.2 + express: 4.18.3 find-up: 5.0.0 - fs-extra: 11.1.1 + fs-extra: 11.2.0 get-npm-tarball-url: 2.1.0 get-port: 5.1.1 - giget: 1.1.3 + giget: 1.2.1 globby: 11.1.0 - jscodeshift: 0.14.0(@babel/preset-env@7.23.3) + jscodeshift: 0.15.2(@babel/preset-env@7.24.0) leven: 3.1.0 ora: 5.4.1 prettier: 2.8.8 prompts: 2.4.2 puppeteer-core: 2.1.1 read-pkg-up: 7.0.1 - semver: 7.5.4 - simple-update-notifier: 2.0.0 + semver: 7.6.0 strip-json-comments: 3.1.1 tempy: 1.0.1 ts-dedent: 2.2.0 @@ -7895,46 +5703,46 @@ packages: - utf-8-validate dev: true - /@storybook/client-logger@7.5.3: - resolution: {integrity: sha512-vUFYALypjix5FoJ5M/XUP6KmyTnQJNW1poHdW7WXUVSg+lBM6E5eAtjTm0hdxNNDH8KSrdy24nCLra5h0X0BWg==} + /@storybook/client-logger@7.6.17: + resolution: {integrity: sha512-6WBYqixAXNAXlSaBWwgljWpAu10tPRBJrcFvx2gPUne58EeMM20Gi/iHYBz2kMCY+JLAgeIH7ZxInqwO8vDwiQ==} dependencies: '@storybook/global': 5.0.0 dev: true - /@storybook/codemod@7.5.3: - resolution: {integrity: sha512-gzycFdqnF4drUjfzMTrLNHqi2jkw1lDeACUzQdug5uWxynZKAvMTHAgU0q9wvoYRR9Xhq8PhfKtXtYCCj2Er4Q==} + /@storybook/codemod@7.6.17: + resolution: {integrity: sha512-JuTmf2u3C4fCnjO7o3dqRgrq3ozNYfWlrRP8xuIdvT7niMap7a396hJtSKqS10FxCgKFcMAOsRgrCalH1dWxUg==} dependencies: - '@babel/core': 7.23.3 - '@babel/preset-env': 7.23.3(@babel/core@7.23.3) - '@babel/types': 7.23.4 + '@babel/core': 7.24.0 + '@babel/preset-env': 7.24.0(@babel/core@7.24.0) + '@babel/types': 7.24.0 '@storybook/csf': 0.1.2 - '@storybook/csf-tools': 7.5.3 - '@storybook/node-logger': 7.5.3 - '@storybook/types': 7.5.3 + '@storybook/csf-tools': 7.6.17 + '@storybook/node-logger': 7.6.17 + '@storybook/types': 7.6.17 '@types/cross-spawn': 6.0.6 cross-spawn: 7.0.3 globby: 11.1.0 - jscodeshift: 0.14.0(@babel/preset-env@7.23.3) + jscodeshift: 0.15.2(@babel/preset-env@7.24.0) lodash: 4.17.21 prettier: 2.8.8 - recast: 0.23.4 + recast: 0.23.6 transitivePeerDependencies: - supports-color dev: true - /@storybook/components@7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-M3+cjvEsDGLUx8RvK5wyF6/13LNlUnKbMgiDE8Sxk/v/WPpyhOAIh/B8VmrU1psahS61Jd4MTkFmLf1cWau1vw==} + /@storybook/components@7.6.17(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-lbh7GynMidA+CZcJnstVku6Nhs+YkqjYaZ+mKPugvlVhGVWv0DaaeQFVuZ8cJtUGJ/5FFU4Y+n+gylYUHkGBMA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.5.3 + '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.6.17 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.3 + '@storybook/theming': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.17 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -7945,22 +5753,22 @@ packages: - '@types/react-dom' dev: true - /@storybook/core-client@7.5.3: - resolution: {integrity: sha512-sIviDytbhos02TVXxU8XLymzty7IAtLs5e16hv49JSdBp47iBajRaNBmBj/l+sgTH+3M+R6gP8yGFMsZSCnU2g==} + /@storybook/core-client@7.6.17: + resolution: {integrity: sha512-LuDbADK+DPNAOOCXOlvY09hdGVueXlDetsdOJ/DgYnSa9QSWv9Uv+F8QcEgR3QckZJbPlztKJIVLgP2n/Xkijw==} dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/preview-api': 7.5.3 + '@storybook/client-logger': 7.6.17 + '@storybook/preview-api': 7.6.17 dev: true - /@storybook/core-common@7.5.3: - resolution: {integrity: sha512-WGMwjtVUxUzFwQz7Mgs0gLuNebIGNV55dCdZgurx2/y6QOkJ2v8D0b3iL+xKMV4B5Nwoc2DsM418Y+Hy3UQd+w==} + /@storybook/core-common@7.6.17: + resolution: {integrity: sha512-me2TP3Q9/qzqCLoDHUSsUF+VS1MHxfHbTVF6vAz0D/COTxzsxLpu9TxTbzJoBCxse6XRb6wWI1RgF1mIcjic7g==} dependencies: - '@storybook/core-events': 7.5.3 - '@storybook/node-logger': 7.5.3 - '@storybook/types': 7.5.3 + '@storybook/core-events': 7.6.17 + '@storybook/node-logger': 7.6.17 + '@storybook/types': 7.6.17 '@types/find-cache-dir': 3.2.1 - '@types/node': 18.18.13 - '@types/node-fetch': 2.6.9 + '@types/node': 18.19.24 + '@types/node-fetch': 2.6.11 '@types/pretty-hrtime': 1.0.3 chalk: 4.1.2 esbuild: 0.18.20 @@ -7968,7 +5776,7 @@ packages: file-system-cache: 2.3.0 find-cache-dir: 3.3.2 find-up: 5.0.0 - fs-extra: 11.1.1 + fs-extra: 11.2.0 glob: 10.3.10 handlebars: 4.7.8 lazy-universal-dotenv: 4.0.0 @@ -7983,56 +5791,56 @@ packages: - supports-color dev: true - /@storybook/core-events@7.5.3: - resolution: {integrity: sha512-DFOpyQ22JD5C1oeOFzL8wlqSWZzrqgDfDbUGP8xdO4wJu+FVTxnnWN6ZYLdTPB1u27DOhd7TzjQMfLDHLu7kbQ==} + /@storybook/core-events@7.6.17: + resolution: {integrity: sha512-AriWMCm/k1cxlv10f+jZ1wavThTRpLaN3kY019kHWbYT9XgaSuLU67G7GPr3cGnJ6HuA6uhbzu8qtqVCd6OfXA==} dependencies: ts-dedent: 2.2.0 dev: true - /@storybook/core-server@7.5.3: - resolution: {integrity: sha512-Gmq1w7ulN/VIeTDboNcb6GNM+S8T0SqhJUqeoHzn0vLGnzxeuYRJ0V3ZJhGZiJfSmCNqYAjC8QUBf6uU1gLipw==} + /@storybook/core-server@7.6.17: + resolution: {integrity: sha512-KWGhTTaL1Q14FolcoKKZgytlPJUbH6sbJ1Ptj/84EYWFewcnEgVs0Zlnh1VStRZg+Rd1WC1V4yVd/bbDzxrvQA==} dependencies: '@aw-web-design/x-default-browser': 1.4.126 '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 7.5.3 - '@storybook/channels': 7.5.3 - '@storybook/core-common': 7.5.3 - '@storybook/core-events': 7.5.3 + '@storybook/builder-manager': 7.6.17 + '@storybook/channels': 7.6.17 + '@storybook/core-common': 7.6.17 + '@storybook/core-events': 7.6.17 '@storybook/csf': 0.1.2 - '@storybook/csf-tools': 7.5.3 + '@storybook/csf-tools': 7.6.17 '@storybook/docs-mdx': 0.1.0 '@storybook/global': 5.0.0 - '@storybook/manager': 7.5.3 - '@storybook/node-logger': 7.5.3 - '@storybook/preview-api': 7.5.3 - '@storybook/telemetry': 7.5.3 - '@storybook/types': 7.5.3 + '@storybook/manager': 7.6.17 + '@storybook/node-logger': 7.6.17 + '@storybook/preview-api': 7.6.17 + '@storybook/telemetry': 7.6.17 + '@storybook/types': 7.6.17 '@types/detect-port': 1.3.5 - '@types/node': 18.18.13 + '@types/node': 18.19.24 '@types/pretty-hrtime': 1.0.3 - '@types/semver': 7.5.6 + '@types/semver': 7.5.8 better-opn: 3.0.2 chalk: 4.1.2 cli-table3: 0.6.3 compression: 1.7.4 detect-port: 1.5.1 - express: 4.18.2 - fs-extra: 11.1.1 + express: 4.18.3 + fs-extra: 11.2.0 globby: 11.1.0 - ip: 2.0.0 + ip: 2.0.1 lodash: 4.17.21 open: 8.4.2 pretty-hrtime: 1.0.3 prompts: 2.4.2 read-pkg-up: 7.0.1 - semver: 7.5.4 + semver: 7.6.0 telejson: 7.2.0 - tiny-invariant: 1.3.1 + tiny-invariant: 1.3.3 ts-dedent: 2.2.0 util: 0.12.5 util-deprecate: 1.0.2 - watchpack: 2.4.0 - ws: 8.14.2 + watchpack: 2.4.1 + ws: 8.16.0 transitivePeerDependencies: - bufferutil - encoding @@ -8040,26 +5848,26 @@ packages: - utf-8-validate dev: true - /@storybook/csf-plugin@7.5.3: - resolution: {integrity: sha512-yQ3S/IOT08Y7XTnlc3SPkrJKZ6Xld6liAlHn+ddjge4oZa0hUqwYLb+piXUhFMfL6Ij65cj4hu3vMbw89azIhg==} + /@storybook/csf-plugin@7.6.17: + resolution: {integrity: sha512-xTHv9BUh3bkDVCvcbmdfVF0/e96BdrEgqPJ3G3RmKbSzWLOkQ2U9yiPfHzT0KJWPhVwj12fjfZp0zunu+pcS6Q==} dependencies: - '@storybook/csf-tools': 7.5.3 - unplugin: 1.5.1 + '@storybook/csf-tools': 7.6.17 + unplugin: 1.10.0 transitivePeerDependencies: - supports-color dev: true - /@storybook/csf-tools@7.5.3: - resolution: {integrity: sha512-676C3ISn7FQJKjb3DBWXhjGN2OQEv4s71dx+5D0TlmswDCOOGS8dYFjP8wVx51+mAIE8CROAw7vLHLtVKU7SwQ==} + /@storybook/csf-tools@7.6.17: + resolution: {integrity: sha512-dAQtam0EBPeTJYcQPLxXgz4L9JFqD+HWbLFG9CmNIhMMjticrB0mpk1EFIS6vPXk/VsVWpBgMLD7dZlD6YMKcQ==} dependencies: - '@babel/generator': 7.23.4 - '@babel/parser': 7.23.4 - '@babel/traverse': 7.23.4 - '@babel/types': 7.23.4 + '@babel/generator': 7.23.6 + '@babel/parser': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 '@storybook/csf': 0.1.2 - '@storybook/types': 7.5.3 - fs-extra: 11.1.1 - recast: 0.23.4 + '@storybook/types': 7.6.17 + fs-extra: 11.2.0 + recast: 0.23.6 ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color @@ -8075,13 +5883,14 @@ packages: resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} dev: true - /@storybook/docs-tools@7.5.3: - resolution: {integrity: sha512-f20EUQlwamcSPrOFn42fj9gpkZIDNCZkC3N19yGzLYiE4UMyaYQgRl18oLvqd3M6aBm6UW6SCoIIgeaOViBSqg==} + /@storybook/docs-tools@7.6.17: + resolution: {integrity: sha512-bYrLoj06adqklyLkEwD32C0Ww6t+9ZVvrJHiVT42bIhTRpFiFPAetl1a9KPHtFLnfduh4n2IxIr1jv32ThPDTA==} dependencies: - '@storybook/core-common': 7.5.3 - '@storybook/preview-api': 7.5.3 - '@storybook/types': 7.5.3 + '@storybook/core-common': 7.6.17 + '@storybook/preview-api': 7.6.17 + '@storybook/types': 7.6.17 '@types/doctrine': 0.0.3 + assert: 2.1.0 doctrine: 3.0.0 lodash: 4.17.21 transitivePeerDependencies: @@ -8093,82 +5902,81 @@ packages: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} dev: true - /@storybook/instrumenter@7.5.3: - resolution: {integrity: sha512-p6b+/6ohTCKxWn00bXT8KBqVjXUOxeILnJtLlG83USLQCpI+XVkpmK57HYuydqEwy/1XjG+4S4ntPk9VVz3u7w==} + /@storybook/instrumenter@7.6.17: + resolution: {integrity: sha512-zTLIPTt1fvlWgkIVUyQpF327iVE+EiPdpM0Or0aARaNfIikPRBTcjU+6cK96E+Ust2E1qKajEjIuv4i4lLQPng==} dependencies: - '@storybook/channels': 7.5.3 - '@storybook/client-logger': 7.5.3 - '@storybook/core-events': 7.5.3 + '@storybook/channels': 7.6.17 + '@storybook/client-logger': 7.6.17 + '@storybook/core-events': 7.6.17 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.5.3 + '@storybook/preview-api': 7.6.17 + '@vitest/utils': 0.34.7 + util: 0.12.5 dev: true - /@storybook/manager-api@7.5.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-d8mVLr/5BEG4bAS2ZeqYTy/aX4jPEpZHdcLaWoB4mAM+PAL9wcWsirUyApKtDVYLITJf/hd8bb2Dm2ok6E45gA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + /@storybook/manager-api@7.6.17(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-IJIV1Yc6yw1dhCY4tReHCfBnUKDqEBnMyHp3mbXpsaHxnxJZrXO45WjRAZIKlQKhl/Ge1CrnznmHRCmYgqmrWg==} dependencies: - '@storybook/channels': 7.5.3 - '@storybook/client-logger': 7.5.3 - '@storybook/core-events': 7.5.3 + '@storybook/channels': 7.6.17 + '@storybook/client-logger': 7.6.17 + '@storybook/core-events': 7.6.17 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/router': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.3 + '@storybook/router': 7.6.17 + '@storybook/theming': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.17 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - semver: 7.5.4 - store2: 2.14.2 + store2: 2.14.3 telejson: 7.2.0 ts-dedent: 2.2.0 + transitivePeerDependencies: + - react + - react-dom dev: true - /@storybook/manager@7.5.3: - resolution: {integrity: sha512-3ZZrHYcXWAQXpDQZBvKyScGgQaAaBc63i+KC2mXqzTdXuJhVDUiylvqLRprBnrEprgePQLFrxGC2JSHUwH7dqg==} + /@storybook/manager@7.6.17: + resolution: {integrity: sha512-A1LDDIqMpwRzq/dqkbbiza0QI04o4ZHCl2a3UMDZUV/+QLc2nsr2DAaLk4CVL4/cIc5zGqmIcaOTvprx2YKVBw==} dev: true /@storybook/mdx2-csf@1.1.0: resolution: {integrity: sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==} dev: true - /@storybook/node-logger@7.5.3: - resolution: {integrity: sha512-7ZZDw/q3hakBj1FngsBjaHNIBguYAWojp7R1fFTvwkeunCi21EUzZjRBcqp10kB6BP3/NLX32bIQknsCWD76rQ==} + /@storybook/node-logger@7.6.17: + resolution: {integrity: sha512-w59MQuXhhUNrUVmVkXhMwIg2nvFWjdDczLTwYLorhfsE36CWeUOY5QCZWQy0Qf/h+jz8Uo7Evy64qn18v9C4wA==} dev: true - /@storybook/postinstall@7.5.3: - resolution: {integrity: sha512-r+H3xGMu2A9yOSsygc3bDFhku8wpOZF3SqO19B7eAML12viHwUtYfyGL74svw4TMcKukyQ+KPn5QsSG+4bjZMg==} + /@storybook/postinstall@7.6.17: + resolution: {integrity: sha512-WaWqB8o9vUc9aaVls+povQSVirf1Xd1LZcVhUKfAocAF3mzYUsnJsVqvnbjRj/F96UFVihOyDt9Zjl/9OvrCvQ==} dev: true - /@storybook/preview-api@7.5.3: - resolution: {integrity: sha512-LNmEf7oBRnZ1wG3bQ+P+TO29+NN5pSDJiAA6FabZBrtIVm+psc2lxBCDQvFYyAFzQSlt60toGKNW8+RfFNdR5Q==} + /@storybook/preview-api@7.6.17: + resolution: {integrity: sha512-wLfDdI9RWo1f2zzFe54yRhg+2YWyxLZvqdZnSQ45mTs4/7xXV5Wfbv3QNTtcdw8tT3U5KRTrN1mTfTCiRJc0Kw==} dependencies: - '@storybook/channels': 7.5.3 - '@storybook/client-logger': 7.5.3 - '@storybook/core-events': 7.5.3 + '@storybook/channels': 7.6.17 + '@storybook/client-logger': 7.6.17 + '@storybook/core-events': 7.6.17 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/types': 7.5.3 - '@types/qs': 6.9.10 + '@storybook/types': 7.6.17 + '@types/qs': 6.9.12 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 - qs: 6.11.2 + qs: 6.12.0 synchronous-promise: 2.0.17 ts-dedent: 2.2.0 util-deprecate: 1.0.2 dev: true - /@storybook/preview@7.5.3: - resolution: {integrity: sha512-Hf90NlLaSrdMZXPOHDCMPjTywVrQKK0e5CtzqWx/ZQz91JDINxJD+sGj2wZU+wuBtQcTtlsXc9OewlJ+9ETwIw==} + /@storybook/preview@7.6.17: + resolution: {integrity: sha512-LvkMYK/y6alGjwRVNDIKL1lFlbyZ0H0c8iAbcQkiMoaFiujMQyVswMDKlWcj42Upfr/B1igydiruomc+eUt0mw==} dev: true - /@storybook/react-dom-shim@7.5.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-9aNcKdhoP36jMrcXgfzE9jVg/SpqPpWnUJM70upYoZXytG2wQSPtawLHHyC6kycvTzwncyfF3rwUnOFBB8zmig==} + /@storybook/react-dom-shim@7.6.17(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-32Sa/G+WnvaPiQ1Wvjjw5UM9rr2c4GDohwCcWVv3/LJuiFPqNS6zglAtmnsrlIBnUwRBMLMh/ekCTdqMiUmfDw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -8177,24 +5985,24 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/react-vite@7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2)(vite@5.0.2): - resolution: {integrity: sha512-ArPyHgiPbT5YvcyK4xK/DfqBOpn4R4/EP3kfIGhx8QKJyOtxPEYFdkLIZ5xu3KnPX7/z7GT+4a6Rb+8sk9gliA==} + /@storybook/react-vite@7.6.17(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2)(vite@5.1.6): + resolution: {integrity: sha512-4dIm3CuRl44X1TLzN3WoZh/bChzJF7Ud28li9atj9C8db0bb/y0zl8cahrsRFoR7/LyfqdOVLqaztrnA5SsWfg==} engines: {node: '>=16'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 vite: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.3.2)(vite@5.0.2) - '@rollup/pluginutils': 5.0.5 - '@storybook/builder-vite': 7.5.3(typescript@5.3.2)(vite@5.0.2) - '@storybook/react': 7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@vitejs/plugin-react': 3.1.0(vite@5.0.2) - magic-string: 0.30.5 + '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.4.2)(vite@5.1.6) + '@rollup/pluginutils': 5.1.0 + '@storybook/builder-vite': 7.6.17(typescript@5.4.2)(vite@5.1.6) + '@storybook/react': 7.6.17(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@vitejs/plugin-react': 3.1.0(vite@5.1.6) + magic-string: 0.30.8 react: 18.2.0 - react-docgen: 6.0.4 + react-docgen: 7.0.3 react-dom: 18.2.0(react@18.2.0) - vite: 5.0.2(@types/node@18.18.13)(sass@1.69.5) + vite: 5.1.6(@types/node@18.19.24)(sass@1.71.1) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -8204,8 +6012,8 @@ packages: - vite-plugin-glimmerx dev: true - /@storybook/react@7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): - resolution: {integrity: sha512-dZILdM36xMFDjdmmy421G5X+sOIncB2qF3IPTooniG1i1Z6v/dVNo57ovdID9lDTNa+AWr2fLB9hANiISMqmjQ==} + /@storybook/react@7.6.17(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-lVqzQSU03rRJWYW+gK2gq6mSo3/qtnVICY8B8oP7gc36jVu4ksDIu45bTfukM618ODkUZy0vZe6T4engK3azjA==} engines: {node: '>=16.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -8215,16 +6023,16 @@ packages: typescript: optional: true dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/core-client': 7.5.3 - '@storybook/docs-tools': 7.5.3 + '@storybook/client-logger': 7.6.17 + '@storybook/core-client': 7.6.17 + '@storybook/docs-tools': 7.6.17 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.5.3 - '@storybook/react-dom-shim': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.3 + '@storybook/preview-api': 7.6.17 + '@storybook/react-dom-shim': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.17 '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 - '@types/node': 18.18.13 + '@types/node': 18.19.24 acorn: 7.4.1 acorn-jsx: 5.3.2(acorn@7.4.1) acorn-walk: 7.2.0 @@ -8237,36 +6045,31 @@ packages: react-element-to-jsx-string: 15.0.0(react-dom@18.2.0)(react@18.2.0) ts-dedent: 2.2.0 type-fest: 2.19.0 - typescript: 5.3.2 + typescript: 5.4.2 util-deprecate: 1.0.2 transitivePeerDependencies: - encoding - supports-color dev: true - /@storybook/router@7.5.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-/iNYCFore7R5n6eFHbBYoB0P2/sybTVpA+uXTNUd3UEt7Ro6CEslTaFTEiH2RVQwOkceBp/NpyWon74xZuXhMg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + /@storybook/router@7.6.17: + resolution: {integrity: sha512-GnyC0j6Wi5hT4qRhSyT8NPtJfGmf82uZw97LQRWeyYu5gWEshUdM7aj40XlNiScd5cZDp0owO1idduVF2k2l2A==} dependencies: - '@storybook/client-logger': 7.5.3 + '@storybook/client-logger': 7.6.17 memoizerific: 1.11.3 - qs: 6.11.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + qs: 6.12.0 dev: true - /@storybook/telemetry@7.5.3: - resolution: {integrity: sha512-X6alII3o0jCb5xALuw+qcWmvyrbhlkmPeNZ6ZQXknOfB4DkwponFdWN5y6W7yGvr01xa5QBepJRV79isl97d8g==} + /@storybook/telemetry@7.6.17: + resolution: {integrity: sha512-WOcOAmmengYnGInH98Px44F47DSpLyk20BM+Z/IIQDzfttGOLlxNqBBG1XTEhNRn+AYuk4aZ2JEed2lCjVIxcA==} dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/core-common': 7.5.3 - '@storybook/csf-tools': 7.5.3 + '@storybook/client-logger': 7.6.17 + '@storybook/core-common': 7.6.17 + '@storybook/csf-tools': 7.6.17 chalk: 4.1.2 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 - fs-extra: 11.1.1 + fs-extra: 11.2.0 read-pkg-up: 7.0.1 transitivePeerDependencies: - encoding @@ -8276,53 +6079,45 @@ packages: /@storybook/testing-library@0.0.14-next.2: resolution: {integrity: sha512-i/SLSGm0o978ELok/SB4Qg1sZ3zr+KuuCkzyFqcCD0r/yf+bG35aQGkFqqxfSAdDxuQom0NO02FE+qys5Eapdg==} dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/instrumenter': 7.5.3 + '@storybook/client-logger': 7.6.17 + '@storybook/instrumenter': 7.6.17 '@testing-library/dom': 8.20.1 '@testing-library/user-event': 13.5.0(@testing-library/dom@8.20.1) ts-dedent: 2.2.0 dev: true - /@storybook/theming@7.5.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Cjmthe1MAk0z4RKCZ7m72gAD8YD0zTAH97z5ryM1Qv84QXjiCQ143fGOmYz1xEQdNFpOThPcwW6FEccLHTkVcg==} + /@storybook/theming@7.6.17(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZbaBt3KAbmBtfjNqgMY7wPMBshhSJlhodyMNQypv+95xLD/R+Az6aBYbpVAOygLaUQaQk4ar7H/Ww6lFIoiFbA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@storybook/client-logger': 7.5.3 + '@storybook/client-logger': 7.6.17 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/types@7.5.3: - resolution: {integrity: sha512-iu5W0Kdd6nysN5CPkY4GRl+0BpxRTdSfBIJak7mb6xCIHSB5t1tw4BOuqMQ5EgpikRY3MWJ4gY647QkWBX3MNQ==} + /@storybook/types@7.6.17: + resolution: {integrity: sha512-GRY0xEJQ0PrL7DY2qCNUdIfUOE0Gsue6N+GBJw9ku1IUDFLJRDOF+4Dx2BvYcVCPI5XPqdWKlEyZdMdKjiQN7Q==} dependencies: - '@storybook/channels': 7.5.3 + '@storybook/channels': 7.6.17 '@types/babel__core': 7.20.5 '@types/express': 4.17.21 file-system-cache: 2.3.0 dev: true - /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.24.0): resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.24.0 dev: true - /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.23.3): - resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.24.0): resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} engines: {node: '>=14'} @@ -8331,14 +6126,6 @@ packages: dependencies: '@babel/core': 7.24.0 - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.3): - resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.24.0): resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} engines: {node: '>=14'} @@ -8347,14 +6134,6 @@ packages: dependencies: '@babel/core': 7.24.0 - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.3): - resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.24.0): resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} engines: {node: '>=14'} @@ -8363,23 +6142,15 @@ packages: dependencies: '@babel/core': 7.24.0 - /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.24.0): resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.24.0 dev: true - /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.23.3): - resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.24.0): resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} engines: {node: '>=14'} @@ -8388,23 +6159,15 @@ packages: dependencies: '@babel/core': 7.24.0 - /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.24.0): resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.24.0 dev: true - /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.23.3): - resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.24.0): resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} engines: {node: '>=14'} @@ -8413,23 +6176,15 @@ packages: dependencies: '@babel/core': 7.24.0 - /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.24.0): resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.24.0 dev: true - /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.23.3): - resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.24.0): resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} engines: {node: '>=14'} @@ -8438,23 +6193,15 @@ packages: dependencies: '@babel/core': 7.24.0 - /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.24.0): resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.24.0 dev: true - /@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.23.3): - resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - /@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.24.0): resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} engines: {node: '>=14'} @@ -8463,23 +6210,15 @@ packages: dependencies: '@babel/core': 7.24.0 - /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.24.0): resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.24.0 dev: true - /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.23.3): - resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} - engines: {node: '>=12'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.24.0): resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} engines: {node: '>=12'} @@ -8488,39 +6227,23 @@ packages: dependencies: '@babel/core': 7.24.0 - /@svgr/babel-preset@6.5.1(@babel/core@7.23.3): + /@svgr/babel-preset@6.5.1(@babel/core@7.24.0): resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.3) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.3) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.3) + '@babel/core': 7.24.0 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.24.0) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.24.0) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.24.0) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.24.0) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.24.0) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.24.0) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.24.0) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.24.0) dev: true - /@svgr/babel-preset@8.1.0(@babel/core@7.23.3): - resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.23.3) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.3) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.3) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.23.3) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.23.3) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.23.3) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.23.3) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.23.3) - /@svgr/babel-preset@8.1.0(@babel/core@7.24.0): resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} engines: {node: '>=14'} @@ -8559,8 +6282,8 @@ packages: resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.3 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.3) + '@babel/core': 7.24.0 + '@svgr/babel-preset': 6.5.1(@babel/core@7.24.0) '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) camelcase: 6.3.0 cosmiconfig: 7.1.0 @@ -8568,19 +6291,6 @@ packages: - supports-color dev: true - /@svgr/core@8.1.0(typescript@5.3.2): - resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} - engines: {node: '>=14'} - dependencies: - '@babel/core': 7.23.3 - '@svgr/babel-preset': 8.1.0(@babel/core@7.23.3) - camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@5.3.2) - snake-case: 3.0.4 - transitivePeerDependencies: - - supports-color - - typescript - /@svgr/core@8.1.0(typescript@5.4.2): resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} engines: {node: '>=14'} @@ -8593,13 +6303,12 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: false /@svgr/hast-util-to-babel-ast@6.5.1: resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.24.0 entities: 4.5.0 dev: true @@ -8607,7 +6316,7 @@ packages: resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} engines: {node: '>=14'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.24.0 entities: 4.5.0 /@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1): @@ -8616,8 +6325,8 @@ packages: peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.23.3 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.3) + '@babel/core': 7.24.0 + '@svgr/babel-preset': 6.5.1(@babel/core@7.24.0) '@svgr/core': 6.5.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 @@ -8633,7 +6342,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@svgr/babel-preset': 8.1.0(@babel/core@7.24.0) - '@svgr/core': 8.1.0(typescript@5.3.2) + '@svgr/core': 8.1.0(typescript@5.4.2) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: @@ -8662,17 +6371,8 @@ packages: svgo: 2.8.0 dev: true - /@swc/core-darwin-arm64@1.3.99: - resolution: {integrity: sha512-Qj7Jct68q3ZKeuJrjPx7k8SxzWN6PqLh+VFxzA+KwLDpQDPzOlKRZwkIMzuFjLhITO4RHgSnXoDk/Syz0ZeN+Q==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@swc/core-darwin-arm64@1.4.6: - resolution: {integrity: sha512-bpggpx/BfLFyy48aUKq1PsNUxb7J6CINlpAUk0V4yXfmGnpZH80Gp1pM3GkFDQyCfq7L7IpjPrIjWQwCrL4hYw==} + /@swc/core-darwin-arm64@1.4.7: + resolution: {integrity: sha512-IhfP2Mrrh9WcdlBJQbPNBhfdOhW/SC910SiuzvxaLgJmzq1tw6TVDNUz4Zf85TbK5uzgR0emtPc9hTGxynl57A==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -8680,17 +6380,8 @@ packages: dev: true optional: true - /@swc/core-darwin-x64@1.3.99: - resolution: {integrity: sha512-wR7m9QVJjgiBu1PSOHy7s66uJPa45Kf9bZExXUL+JAa9OQxt5y+XVzr+n+F045VXQOwdGWplgPnWjgbUUHEVyw==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@swc/core-darwin-x64@1.4.6: - resolution: {integrity: sha512-vJn+/ZuBTg+vtNkcmgZdH6FQpa0hFVdnB9bAeqYwKkyqP15zaPe6jfC+qL2y/cIeC7ASvHXEKrnCZgBLxfVQ9w==} + /@swc/core-darwin-x64@1.4.7: + resolution: {integrity: sha512-MO01pnxJDS6st5IiqyTnAOz9kpAPP/O4lzEUH9E80XdXBzwptS5hNTM0egBlqueWDFrPM26RI81JLtyTU7kR8w==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -8698,8 +6389,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm-gnueabihf@1.4.6: - resolution: {integrity: sha512-hEmYcB/9XBAl02MtuVHszhNjQpjBzhk/NFulnU33tBMbNZpy2TN5yTsitezMq090QXdDz8sKIALApDyg07ZR8g==} + /@swc/core-linux-arm-gnueabihf@1.4.7: + resolution: {integrity: sha512-+cDaXW6PZqGhXIq9C4xE+/QuyUsLkXf8d8uSXep+rZYDl4YHS9Fi7HpZQnqLX6al/iVhwe3VnxHMGw50gxcr/g==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -8707,26 +6398,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-gnu@1.3.99: - resolution: {integrity: sha512-gcGv1l5t0DScEONmw5OhdVmEI/o49HCe9Ik38zzH0NtDkc+PDYaCcXU5rvfZP2qJFaAAr8cua8iJcOunOSLmnA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-arm64-gnu@1.4.6: - resolution: {integrity: sha512-/UCYIVoGpm2YVvGHZM2QOA3dexa28BjcpLAIYnoCbgH5f7ulDhE8FAIO/9pasj+kixDBsdqewHfsNXFYlgGJjQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-arm64-musl@1.3.99: - resolution: {integrity: sha512-XL1/eUsTO8BiKsWq9i3iWh7H99iPO61+9HYiWVKhSavknfj4Plbn+XyajDpxsauln5o8t+BRGitymtnAWJM4UQ==} + /@swc/core-linux-arm64-gnu@1.4.7: + resolution: {integrity: sha512-RNnVHRKhEtA3pM34wgb3Vumf5M6/XlWzFdkHEMZIkOKyNSUhZiv8X3tsEK+n1rZQWIDkvlw4YyHtB8vK18WdCA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -8734,8 +6407,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-musl@1.4.6: - resolution: {integrity: sha512-LGQsKJ8MA9zZ8xHCkbGkcPSmpkZL2O7drvwsGKynyCttHhpwVjj9lguhD4DWU3+FWIsjvho5Vu0Ggei8OYi/Lw==} + /@swc/core-linux-arm64-musl@1.4.7: + resolution: {integrity: sha512-p7Xm4Pib02d1SFS9XXMoOcCTDIkFWMspspptPX00VcjAdZYnXWujWGuD2W+KN1gq5syHB1g3TsYs9LP2dGsKqw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -8743,26 +6416,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-gnu@1.3.99: - resolution: {integrity: sha512-fGrXYE6DbTfGNIGQmBefYxSk3rp/1lgbD0nVg4rl4mfFRQPi7CgGhrrqSuqZ/ezXInUIgoCyvYGWFSwjLXt/Qg==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-x64-gnu@1.4.6: - resolution: {integrity: sha512-10JL2nLIreMQDKvq2TECnQe5fCuoqBHu1yW8aChqgHUyg9d7gfZX/kppUsuimqcgRBnS0AjTDAA+JF6UsG/2Yg==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-x64-musl@1.3.99: - resolution: {integrity: sha512-kvgZp/mqf3IJ806gUOL6gN6VU15+DfzM1Zv4Udn8GqgXiUAvbQehrtruid4Snn5pZTLj4PEpSCBbxgxK1jbssA==} + /@swc/core-linux-x64-gnu@1.4.7: + resolution: {integrity: sha512-ViI5jy03cFYPETsye1J+oPbHE4v8oIDN34qebzvgHUlNKOXfc1ig0Zha5oQnKp3zj1rmjcSLIMqK++WR021G5A==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -8770,8 +6425,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-musl@1.4.6: - resolution: {integrity: sha512-EGyjFVzVY6Do89x8sfah7I3cuP4MwtwzmA6OlfD/KASqfCFf5eIaEBMbajgR41bVfMV7lK72lwAIea5xEyq1AQ==} + /@swc/core-linux-x64-musl@1.4.7: + resolution: {integrity: sha512-Nf3Axcx/ILl7XE44eidNNPF39rg/KIeqg2545vrOXJG02iu7pEjZuu8wm6w+23BpP4COjZJymlg9LzPT1ZBD5Q==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -8779,17 +6434,8 @@ packages: dev: true optional: true - /@swc/core-win32-arm64-msvc@1.3.99: - resolution: {integrity: sha512-yt8RtZ4W/QgFF+JUemOUQAkVW58cCST7mbfKFZ1v16w3pl3NcWd9OrtppFIXpbjU1rrUX2zp2R7HZZzZ2Zk/aQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@swc/core-win32-arm64-msvc@1.4.6: - resolution: {integrity: sha512-gfW9AuXvwSyK07Vb8Y8E9m2oJZk21WqcD+X4BZhkbKB0TCZK0zk1j/HpS2UFlr1JB2zPKPpSWLU3ll0GEHRG2A==} + /@swc/core-win32-arm64-msvc@1.4.7: + resolution: {integrity: sha512-MFkJEaC59AO2HpndmHhCkaj8NJus5etjMtBphOe9em7jmmfdQ7mLenKHbZ/CspHNl8yNPO9Qzpa/at2838x+RQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -8797,8 +6443,8 @@ packages: dev: true optional: true - /@swc/core-win32-ia32-msvc@1.3.99: - resolution: {integrity: sha512-62p5fWnOJR/rlbmbUIpQEVRconICy5KDScWVuJg1v3GPLBrmacjphyHiJC1mp6dYvvoEWCk/77c/jcQwlXrDXw==} + /@swc/core-win32-ia32-msvc@1.4.7: + resolution: {integrity: sha512-nwrfERocUei9sxqd6URrWcEC3KDcTBD+beMerB9idvuzy4rcm5k1O1ClUlZ9pJOZn+vMN1tqZjLze4hJMT9STQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -8806,26 +6452,8 @@ packages: dev: true optional: true - /@swc/core-win32-ia32-msvc@1.4.6: - resolution: {integrity: sha512-ZuQm81FhhvNVYtVb9GfZ+Du6e7fZlkisWvuCeBeRiyseNt1tcrQ8J3V67jD2nxje8CVXrwG3oUIbPcybv2rxfQ==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@swc/core-win32-x64-msvc@1.3.99: - resolution: {integrity: sha512-PdppWhkoS45VGdMBxvClVgF1hVjqamtvYd82Gab1i4IV45OSym2KinoDCKE1b6j3LwBLOn2J9fvChGSgGfDCHQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@swc/core-win32-x64-msvc@1.4.6: - resolution: {integrity: sha512-UagPb7w5V0uzWSjrXwOavGa7s9iv3wrVdEgWy+/inm0OwY4lj3zpK9qDnMWAwYLuFwkI3UG4Q3dH8wD+CUUcjw==} + /@swc/core-win32-x64-msvc@1.4.7: + resolution: {integrity: sha512-d5T8Z/axAml8FTA+T9RS2mwJDNIbSSz5jcEiWaGuKVDIoSZib2HpMvnMydOGsIrmjfS1Z4ZhdAawivPhAZ3M8Q==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -8833,32 +6461,8 @@ packages: dev: true optional: true - /@swc/core@1.3.99: - resolution: {integrity: sha512-8O996RfuPC4ieb4zbYMfbyCU9k4gSOpyCNnr7qBQ+o7IEmh8JCV6B8wwu+fT/Om/6Lp34KJe1IpJ/24axKS6TQ==} - engines: {node: '>=10'} - requiresBuild: true - peerDependencies: - '@swc/helpers': ^0.5.0 - peerDependenciesMeta: - '@swc/helpers': - optional: true - dependencies: - '@swc/counter': 0.1.2 - '@swc/types': 0.1.5 - optionalDependencies: - '@swc/core-darwin-arm64': 1.3.99 - '@swc/core-darwin-x64': 1.3.99 - '@swc/core-linux-arm64-gnu': 1.3.99 - '@swc/core-linux-arm64-musl': 1.3.99 - '@swc/core-linux-x64-gnu': 1.3.99 - '@swc/core-linux-x64-musl': 1.3.99 - '@swc/core-win32-arm64-msvc': 1.3.99 - '@swc/core-win32-ia32-msvc': 1.3.99 - '@swc/core-win32-x64-msvc': 1.3.99 - dev: true - - /@swc/core@1.4.6: - resolution: {integrity: sha512-A7iK9+1qzTCIuc3IYcS8gPHCm9bZVKUJrfNnwveZYyo6OFp3jLno4WOM2yBy5uqedgYATEiWgBYHKq37KrU6IA==} + /@swc/core@1.4.7: + resolution: {integrity: sha512-I7a9sUxB+z+UCf6KudqrQH/RgLal/S+E+t4uBdbggycLyJe7WvBgPrQlcN5UpEuD9YC2PJ0CN6kgD6ARStg+pg==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -8870,20 +6474,16 @@ packages: '@swc/counter': 0.1.3 '@swc/types': 0.1.5 optionalDependencies: - '@swc/core-darwin-arm64': 1.4.6 - '@swc/core-darwin-x64': 1.4.6 - '@swc/core-linux-arm-gnueabihf': 1.4.6 - '@swc/core-linux-arm64-gnu': 1.4.6 - '@swc/core-linux-arm64-musl': 1.4.6 - '@swc/core-linux-x64-gnu': 1.4.6 - '@swc/core-linux-x64-musl': 1.4.6 - '@swc/core-win32-arm64-msvc': 1.4.6 - '@swc/core-win32-ia32-msvc': 1.4.6 - '@swc/core-win32-x64-msvc': 1.4.6 - dev: true - - /@swc/counter@0.1.2: - resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==} + '@swc/core-darwin-arm64': 1.4.7 + '@swc/core-darwin-x64': 1.4.7 + '@swc/core-linux-arm-gnueabihf': 1.4.7 + '@swc/core-linux-arm64-gnu': 1.4.7 + '@swc/core-linux-arm64-musl': 1.4.7 + '@swc/core-linux-x64-gnu': 1.4.7 + '@swc/core-linux-x64-musl': 1.4.7 + '@swc/core-win32-arm64-msvc': 1.4.7 + '@swc/core-win32-ia32-msvc': 1.4.7 + '@swc/core-win32-x64-msvc': 1.4.7 dev: true /@swc/counter@0.1.3: @@ -8904,23 +6504,9 @@ packages: /@testing-library/dom@8.20.1: resolution: {integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==} engines: {node: '>=12'} - dependencies: - '@babel/code-frame': 7.23.4 - '@babel/runtime': 7.24.0 - '@types/aria-query': 5.0.4 - aria-query: 5.1.3 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 - dev: true - - /@testing-library/dom@9.3.3: - resolution: {integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==} - engines: {node: '>=14'} dependencies: '@babel/code-frame': 7.23.5 - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.24.0 '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 @@ -8943,17 +6529,20 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom@6.1.5(@types/jest@27.5.2)(jest@23.6.0): - resolution: {integrity: sha512-3y04JLW+EceVPy2Em3VwNr95dOKqA8DhR0RJHhHKDZNYXcVXnEK7WIrpj4eYU8SVt/qYZ2aRWt/WgQ+grNES8g==} + /@testing-library/jest-dom@6.4.2(@types/jest@27.5.2)(jest@23.6.0): + resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} peerDependencies: '@jest/globals': '>= 28' + '@types/bun': latest '@types/jest': '>= 28' jest: '>= 28' vitest: '>= 0.32' peerDependenciesMeta: '@jest/globals': optional: true + '@types/bun': + optional: true '@types/jest': optional: true jest: @@ -8961,28 +6550,28 @@ packages: vitest: optional: true dependencies: - '@adobe/css-tools': 4.3.1 - '@babel/runtime': 7.23.4 + '@adobe/css-tools': 4.3.3 + '@babel/runtime': 7.24.0 '@types/jest': 27.5.2 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 - dom-accessibility-api: 0.5.16 + dom-accessibility-api: 0.6.3 jest: 23.6.0 lodash: 4.17.21 redent: 3.0.0 dev: true - /@testing-library/react@14.1.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==} + /@testing-library/react@14.2.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==} engines: {node: '>=14'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/runtime': 7.23.4 - '@testing-library/dom': 9.3.3 - '@types/react-dom': 18.2.17 + '@babel/runtime': 7.24.0 + '@testing-library/dom': 9.3.4 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -8997,8 +6586,8 @@ packages: '@testing-library/dom': 8.20.1 dev: true - /@testing-library/user-event@14.5.1(@testing-library/dom@9.3.4): - resolution: {integrity: sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg==} + /@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4): + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' @@ -9047,10 +6636,10 @@ packages: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} dev: true - /@types/amqplib@0.10.4: - resolution: {integrity: sha512-Y5Sqquh/LqDxSgxYaAAFNM0M7GyONtSDCcFMJk+DQwYEjibPyW6y+Yu9H9omdkKc3epyXULmFN3GTaeBHhn2Hg==} + /@types/amqplib@0.10.5: + resolution: {integrity: sha512-/cSykxROY7BWwDoi4Y4/jLAuZTshZxd8Ey1QYa/VaXriMotBDoou7V/twJiOSHzU6t1Kp1AHAUXGCgqq+6DNeg==} dependencies: - '@types/node': 18.18.13 + '@types/node': 18.19.24 dev: true /@types/argparse@1.0.38: @@ -9064,37 +6653,37 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.23.4 - '@babel/types': 7.23.4 - '@types/babel__generator': 7.6.7 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 + '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.4 + '@types/babel__traverse': 7.20.5 dev: true - /@types/babel__generator@7.6.7: - resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==} + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.24.0 dev: true /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.23.4 - '@babel/types': 7.23.4 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 dev: true - /@types/babel__traverse@7.20.4: - resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} + /@types/babel__traverse@7.20.5: + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.24.0 dev: true /@types/body-parser@1.19.5: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 18.18.13 + '@types/node': 18.19.24 dev: true /@types/byte-size@8.1.2: @@ -9104,7 +6693,7 @@ packages: /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.18.13 + '@types/node': 18.19.24 dev: true /@types/cookie@0.3.3: @@ -9114,7 +6703,7 @@ packages: /@types/cross-spawn@6.0.6: resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} dependencies: - '@types/node': 18.18.13 + '@types/node': 18.19.24 dev: true /@types/d3-array@3.2.1: @@ -9145,7 +6734,7 @@ packages: resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} dependencies: '@types/d3-array': 3.2.1 - '@types/geojson': 7946.0.13 + '@types/geojson': 7946.0.14 dev: false /@types/d3-delaunay@6.0.4: @@ -9187,7 +6776,7 @@ packages: /@types/d3-geo@3.1.0: resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} dependencies: - '@types/geojson': 7946.0.13 + '@types/geojson': 7946.0.14 dev: false /@types/d3-hierarchy@3.1.6: @@ -9200,8 +6789,8 @@ packages: '@types/d3-color': 3.1.3 dev: false - /@types/d3-path@3.0.2: - resolution: {integrity: sha512-WAIEVlOCdd/NKRYTsqCpOMHQHemKBEINf8YXMYOtXH0GA7SY0dqMB78P3Uhgfy+4X+/Mlw2wDtlETkN6kQUCMA==} + /@types/d3-path@3.1.0: + resolution: {integrity: sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==} dev: false /@types/d3-polygon@3.0.2: @@ -9233,7 +6822,7 @@ packages: /@types/d3-shape@3.1.6: resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==} dependencies: - '@types/d3-path': 3.0.2 + '@types/d3-path': 3.1.0 dev: false /@types/d3-time-format@4.0.3: @@ -9281,7 +6870,7 @@ packages: '@types/d3-geo': 3.1.0 '@types/d3-hierarchy': 3.1.6 '@types/d3-interpolate': 3.0.4 - '@types/d3-path': 3.0.2 + '@types/d3-path': 3.1.0 '@types/d3-polygon': 3.0.2 '@types/d3-quadtree': 3.0.6 '@types/d3-random': 3.0.3 @@ -9304,8 +6893,8 @@ packages: resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} dev: true - /@types/doctrine@0.0.6: - resolution: {integrity: sha512-KlEqPtaNBHBJ2/fVA4yLdD0Tc8zw34pKU4K5SHBIEwtLJ8xxumIC1xeG+4S+/9qhVj2MqC7O3Ld8WvDG4HqlgA==} + /@types/doctrine@0.0.9: + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} dev: true /@types/domhandler@2.4.1: @@ -9347,11 +6936,11 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - /@types/express-serve-static-core@4.17.41: - resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} + /@types/express-serve-static-core@4.17.43: + resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: - '@types/node': 18.18.13 - '@types/qs': 6.9.10 + '@types/node': 18.19.24 + '@types/qs': 6.9.12 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 dev: true @@ -9360,8 +6949,8 @@ packages: resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.17.41 - '@types/qs': 6.9.10 + '@types/express-serve-static-core': 4.17.43 + '@types/qs': 6.9.12 '@types/serve-static': 1.15.5 dev: true @@ -9375,20 +6964,20 @@ packages: '@types/node': 10.17.60 dev: true - /@types/geojson@7946.0.13: - resolution: {integrity: sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==} + /@types/geojson@7946.0.14: + resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==} /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 3.0.3 - '@types/node': 18.18.13 + '@types/node': 10.17.60 dev: true /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 18.18.13 + '@types/node': 18.19.24 dev: true /@types/handlebars@4.1.0: @@ -9405,7 +6994,7 @@ packages: /@types/hoist-non-react-statics@3.3.5: resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} dependencies: - '@types/react': 18.2.39 + '@types/react': 18.2.65 hoist-non-react-statics: 3.3.2 dev: false @@ -9454,7 +7043,7 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 18.18.13 + '@types/node': 18.19.24 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 dev: false @@ -9471,19 +7060,19 @@ packages: /@types/leaflet@1.9.8: resolution: {integrity: sha512-EXdsL4EhoUtGm2GC2ZYtXn+Fzc6pluVgagvo2VC1RHWToLGlTRwVYoDpqS/7QXa01rmDyBjJk3Catpf60VMkwg==} dependencies: - '@types/geojson': 7946.0.13 + '@types/geojson': 7946.0.14 dev: true - /@types/lodash@4.14.202: - resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} + /@types/lodash@4.17.0: + resolution: {integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==} dev: true /@types/marked@0.4.2: resolution: {integrity: sha512-cDB930/7MbzaGF6U3IwSQp6XBru8xWajF5PV2YZZeV8DyiliTuld11afVztGI9+yJZ29il5E+NpGA6ooV/Cjkg==} dev: true - /@types/mdx@2.0.10: - resolution: {integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==} + /@types/mdx@2.0.11: + resolution: {integrity: sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw==} dev: true /@types/mime-types@2.1.4: @@ -9513,10 +7102,10 @@ packages: minio: 7.1.3 dev: true - /@types/node-fetch@2.6.9: - resolution: {integrity: sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==} + /@types/node-fetch@2.6.11: + resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} dependencies: - '@types/node': 18.18.13 + '@types/node': 18.19.24 form-data: 4.0.0 dev: true @@ -9524,13 +7113,8 @@ packages: resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} dev: true - /@types/node@18.18.13: - resolution: {integrity: sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g==} - dependencies: - undici-types: 5.26.5 - - /@types/node@18.19.23: - resolution: {integrity: sha512-wtE3d0OUfNKtZYAqZb8HAWGxxXsImJcPUAgZNw+dWFxO6s5tIwIjyKnY76tsTatsNCLJPkVYwUpq15D38ng9Aw==} + /@types/node@18.19.24: + resolution: {integrity: sha512-eghAz3gnbQbvnHqB+mgB2ZR3aH6RhdEmHGS48BnV75KceQPHqabkxKI0BbUSsqhqy2Ddhc2xD/VAR9ySZd57Lw==} dependencies: undici-types: 5.26.5 @@ -9548,8 +7132,8 @@ packages: /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - /@types/qs@6.9.10: - resolution: {integrity: sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==} + /@types/qs@6.9.12: + resolution: {integrity: sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==} dev: true /@types/range-parser@1.2.7: @@ -9562,14 +7146,8 @@ packages: '@types/react': 18.2.65 dev: true - /@types/react-dom@18.2.17: - resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==} - dependencies: - '@types/react': 18.2.39 - dev: true - - /@types/react-dom@18.2.21: - resolution: {integrity: sha512-gnvBA/21SA4xxqNXEwNiVcP0xSGHh/gi1VhWv9Bl46a0ItbTT5nFY+G9VSQpaG/8N/qdJpJ+vftQ4zflTtnjLw==} + /@types/react-dom@18.2.22: + resolution: {integrity: sha512-fHkBXPeNtfvri6gdsMYyW+dW7RXFo6Ad09nLFK0VQWR7yGLai/Cyvyj696gbwYvBnhGtevUG9cET0pmUbMtoPQ==} dependencies: '@types/react': 18.2.65 dev: true @@ -9577,14 +7155,14 @@ packages: /@types/react-image-magnifiers@1.3.5: resolution: {integrity: sha512-lwl8WCT4qBDwOecA0TDGdMi0XnjVWkhtj0CbwqetO7mQU6do7MzVLRCBUs5xPDrn2HWkXE3hf2ui214K72nTQw==} dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.65 dev: true - /@types/react-select@5.0.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): + /@types/react-select@5.0.1(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-h5Im0AP0dr4AVeHtrcvQrLV+gmPa7SA0AGdxl2jOhtwiE6KgXBFSogWw8az32/nusE6AQHlCOHQWjP1S/+oMWA==} deprecated: This is a stub types definition. react-select provides its own type definitions, so you do not need this installed. dependencies: - react-select: 5.8.0(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + react-select: 5.8.0(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) transitivePeerDependencies: - '@types/react' - react @@ -9596,25 +7174,12 @@ packages: dependencies: '@types/react': 18.2.65 - /@types/react-transition-group@4.4.9: - resolution: {integrity: sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==} - dependencies: - '@types/react': 18.2.38 - dev: false - - /@types/react@18.2.38: - resolution: {integrity: sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==} - dependencies: - '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 - csstype: 3.1.2 - - /@types/react@18.2.39: - resolution: {integrity: sha512-Oiw+ppED6IremMInLV4HXGbfbG6GyziY3kqAwJYOR0PNbkYDmLWQA3a95EhdSmamsvbkJN96ZNN+YD+fGjzSBA==} + /@types/react-virtualized@9.21.29: + resolution: {integrity: sha512-+ODVQ+AyKngenj4OPpg43Hz4B9Rdjuz1Naxu9ypNc3Cjo0WVZTYhqXfF/Nm38i8PV/YXECRIl4mTAZK5hq2B+g==} dependencies: '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 - csstype: 3.1.2 + '@types/react': 18.2.65 + dev: true /@types/react@18.2.65: resolution: {integrity: sha512-98TsY0aW4jqx/3RqsUXwMDZSWR1Z4CUlJNue8ueS2/wcxZOsz4xmW1X8ieaWVRHcmmQM3R8xVA4XWB3dJnWwDQ==} @@ -9640,10 +7205,6 @@ packages: /@types/scheduler@0.16.8: resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - /@types/semver@7.5.6: - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} - dev: true - /@types/semver@7.5.8: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true @@ -9652,7 +7213,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 18.18.13 + '@types/node': 18.19.24 dev: true /@types/serve-static@1.15.5: @@ -9660,7 +7221,7 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 18.18.13 + '@types/node': 18.19.24 dev: true /@types/shelljs@0.8.15: @@ -9674,17 +7235,18 @@ packages: resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} dev: false - /@types/stylis@4.2.4: - resolution: {integrity: sha512-36ZrGJ8fgtBr6nwNnuJ9jXIj+bn/pF6UoqmrQT7+Y99+tFFeHHsoR54+194dHdyhPjgbeoNz3Qru0oRt0l6ASQ==} + /@types/stylis@4.2.0: + resolution: {integrity: sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw==} dev: false /@types/testing-library__jest-dom@6.0.0(@types/jest@27.5.2)(jest@23.6.0): resolution: {integrity: sha512-bnreXCgus6IIadyHNlN/oI5FfX4dWgvGhOPvpr7zzCYDGAPIfvyIoAozMBINmhmsVuqV0cncejF2y5KC7ScqOg==} deprecated: This is a stub types definition. @testing-library/jest-dom provides its own type definitions, so you do not need this installed. dependencies: - '@testing-library/jest-dom': 6.1.5(@types/jest@27.5.2)(jest@23.6.0) + '@testing-library/jest-dom': 6.4.2(@types/jest@27.5.2)(jest@23.6.0) transitivePeerDependencies: - '@jest/globals' + - '@types/bun' - '@types/jest' - jest - vitest @@ -9706,12 +7268,12 @@ packages: resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} dev: false - /@types/uuid@9.0.7: - resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} + /@types/uuid@9.0.8: + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} dev: true - /@types/video.js@7.3.56: - resolution: {integrity: sha512-T3cp/kDuNj8scIzK87u0uomUDKnYQE1uHAA0zFPNGc0qCF3aLxZmMtpWvGxofEPNOpUfvtbsQMvwbjU42q8omw==} + /@types/video.js@7.3.57: + resolution: {integrity: sha512-CKAaJ9p/myadqT/FAnlzVvHMVj35ynl86eGgqPM9paTCWbFtq9JUZATUzOir+bLjRyXqrjA10e5KgHc7dRR38g==} dev: true /@types/warning@3.0.3: @@ -9738,64 +7300,6 @@ packages: dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.3.2): - resolution: {integrity: sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.3.2) - '@typescript-eslint/scope-manager': 6.12.0 - '@typescript-eslint/type-utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2) - '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2) - '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@5.5.0) - eslint: 8.54.0 - graphemer: 1.4.0 - ignore: 5.3.0 - natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/eslint-plugin@6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.57.0)(typescript@5.3.2): - resolution: {integrity: sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.12.0(eslint@8.57.0)(typescript@5.3.2) - '@typescript-eslint/scope-manager': 6.12.0 - '@typescript-eslint/type-utils': 6.12.0(eslint@8.57.0)(typescript@5.3.2) - '@typescript-eslint/utils': 6.12.0(eslint@8.57.0)(typescript@5.3.2) - '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@5.5.0) - eslint: 8.57.0 - graphemer: 1.4.0 - ignore: 5.3.0 - natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.2): resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} @@ -9825,48 +7329,6 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.12.0(eslint@8.54.0)(typescript@5.3.2): - resolution: {integrity: sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 6.12.0 - '@typescript-eslint/types': 6.12.0 - '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) - '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@5.5.0) - eslint: 8.54.0 - typescript: 5.3.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@6.12.0(eslint@8.57.0)(typescript@5.3.2): - resolution: {integrity: sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 6.12.0 - '@typescript-eslint/types': 6.12.0 - '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) - '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@5.5.0) - eslint: 8.57.0 - typescript: 5.3.2 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2): resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} @@ -9888,14 +7350,6 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.12.0: - resolution: {integrity: sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.12.0 - '@typescript-eslint/visitor-keys': 6.12.0 - dev: true - /@typescript-eslint/scope-manager@6.21.0: resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -9904,46 +7358,6 @@ packages: '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/type-utils@6.12.0(eslint@8.54.0)(typescript@5.3.2): - resolution: {integrity: sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) - '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2) - debug: 4.3.4(supports-color@5.5.0) - eslint: 8.54.0 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/type-utils@6.12.0(eslint@8.57.0)(typescript@5.3.2): - resolution: {integrity: sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) - '@typescript-eslint/utils': 6.12.0(eslint@8.57.0)(typescript@5.3.2) - debug: 4.3.4(supports-color@5.5.0) - eslint: 8.57.0 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.2): resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} engines: {node: ^16.0.0 || >=18.0.0} @@ -9964,37 +7378,11 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.12.0: - resolution: {integrity: sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true - /@typescript-eslint/types@6.21.0: resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.12.0(typescript@5.3.2): - resolution: {integrity: sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 6.12.0 - '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@5.5.0) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.2): resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} @@ -10017,44 +7405,6 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.12.0(eslint@8.54.0)(typescript@5.3.2): - resolution: {integrity: sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.12.0 - '@typescript-eslint/types': 6.12.0 - '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) - eslint: 8.54.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/utils@6.12.0(eslint@8.57.0)(typescript@5.3.2): - resolution: {integrity: sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.12.0 - '@typescript-eslint/types': 6.12.0 - '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) - eslint: 8.57.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.2): resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} @@ -10074,14 +7424,6 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.12.0: - resolution: {integrity: sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.12.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@6.21.0: resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} @@ -10127,115 +7469,103 @@ packages: is-function: 1.0.2 dev: false - /@vitejs/plugin-react-swc@3.5.0(vite@5.0.2): - resolution: {integrity: sha512-1PrOvAaDpqlCV+Up8RkAh9qaiUjoDUcjtttyhXDKw53XA6Ve16SOp6cCOpRs8Dj8DqUQs6eTW5YkLcLJjrXAig==} - peerDependencies: - vite: ^4 || ^5 - dependencies: - '@swc/core': 1.3.99 - vite: 5.0.2(@types/node@18.18.13)(sass@1.69.5) - transitivePeerDependencies: - - '@swc/helpers' - dev: true - - /@vitejs/plugin-react-swc@3.5.0(vite@5.0.7): - resolution: {integrity: sha512-1PrOvAaDpqlCV+Up8RkAh9qaiUjoDUcjtttyhXDKw53XA6Ve16SOp6cCOpRs8Dj8DqUQs6eTW5YkLcLJjrXAig==} - peerDependencies: - vite: ^4 || ^5 - dependencies: - '@swc/core': 1.3.99 - vite: 5.0.7(@types/node@18.18.13) - transitivePeerDependencies: - - '@swc/helpers' - dev: true - /@vitejs/plugin-react-swc@3.6.0(vite@5.1.6): resolution: {integrity: sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==} peerDependencies: vite: ^4 || ^5 dependencies: - '@swc/core': 1.4.6 - vite: 5.1.6(@types/node@18.19.23)(sass@1.71.1) + '@swc/core': 1.4.7 + vite: 5.1.6(@types/node@18.19.24)(sass@1.71.1) transitivePeerDependencies: - '@swc/helpers' dev: true - /@vitejs/plugin-react@3.1.0(vite@5.0.2): + /@vitejs/plugin-react@3.1.0(vite@5.1.6): resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.1.0-beta.0 dependencies: - '@babel/core': 7.23.3 - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.3) + '@babel/core': 7.24.0 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.0) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 5.0.2(@types/node@18.18.13)(sass@1.69.5) + vite: 5.1.6(@types/node@18.19.24)(sass@1.71.1) transitivePeerDependencies: - supports-color dev: true - /@volar/language-core@1.10.10: - resolution: {integrity: sha512-nsV1o3AZ5n5jaEAObrS3MWLBWaGwUj/vAsc15FVNIv+DbpizQRISg9wzygsHBr56ELRH8r4K75vkYNMtsSNNWw==} + /@vitest/utils@0.34.7: + resolution: {integrity: sha512-ziAavQLpCYS9sLOorGrFFKmy2gnfiNU0ZJ15TsMz/K92NAPS/rp9K4z6AJQQk5Y8adCy4Iwpxy7pQumQ/psnRg==} + dependencies: + diff-sequences: 29.6.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + + /@volar/language-core@1.11.1: + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} dependencies: - '@volar/source-map': 1.10.10 + '@volar/source-map': 1.11.1 dev: true - /@volar/source-map@1.10.10: - resolution: {integrity: sha512-GVKjLnifV4voJ9F0vhP56p4+F3WGf+gXlRtjFZsv6v3WxBTWU3ZVeaRaEHJmWrcv5LXmoYYpk/SC25BKemPRkg==} + /@volar/source-map@1.11.1: + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} dependencies: muggle-string: 0.3.1 dev: true - /@volar/typescript@1.10.10: - resolution: {integrity: sha512-4a2r5bdUub2m+mYVnLu2wt59fuoYWe7nf0uXtGHU8QQ5LDNfzAR0wK7NgDiQ9rcl2WT3fxT2AA9AylAwFtj50A==} + /@volar/typescript@1.11.1: + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} dependencies: - '@volar/language-core': 1.10.10 + '@volar/language-core': 1.11.1 path-browserify: 1.0.1 dev: true - /@vue/compiler-core@3.3.9: - resolution: {integrity: sha512-+/Lf68Vr/nFBA6ol4xOtJrW+BQWv3QWKfRwGSm70jtXwfhZNF4R/eRgyVJYoxFRhdCTk/F6g99BP0ffPgZihfQ==} + /@vue/compiler-core@3.4.21: + resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} dependencies: - '@babel/parser': 7.23.4 - '@vue/shared': 3.3.9 + '@babel/parser': 7.24.0 + '@vue/shared': 3.4.21 + entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.0.2 dev: true - /@vue/compiler-dom@3.3.9: - resolution: {integrity: sha512-nfWubTtLXuT4iBeDSZ5J3m218MjOy42Vp2pmKVuBKo2/BLcrFUX8nCSr/bKRFiJ32R8qbdnnnBgRn9AdU5v0Sg==} + /@vue/compiler-dom@3.4.21: + resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} dependencies: - '@vue/compiler-core': 3.3.9 - '@vue/shared': 3.3.9 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 dev: true - /@vue/language-core@1.8.22(typescript@5.3.2): - resolution: {integrity: sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw==} + /@vue/language-core@1.8.27(typescript@5.4.2): + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@volar/language-core': 1.10.10 - '@volar/source-map': 1.10.10 - '@vue/compiler-dom': 3.3.9 - '@vue/shared': 3.3.9 + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 computeds: 0.0.1 minimatch: 9.0.3 muggle-string: 0.3.1 - typescript: 5.3.2 - vue-template-compiler: 2.7.15 + path-browserify: 1.0.1 + typescript: 5.4.2 + vue-template-compiler: 2.7.16 dev: true - /@vue/shared@3.3.9: - resolution: {integrity: sha512-ZE0VTIR0LmYgeyhurPTpy4KzKsuDyQbMSdM49eKkMnT5X4VfFBLysMzjIZhLEFQYjjOVVfbvUDHckwjDFiO2eA==} + /@vue/shared@3.4.21: + resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} dev: true - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 @@ -10246,8 +7576,8 @@ packages: /@webassemblyjs/helper-api-error@1.11.6: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} /@webassemblyjs/helper-numbers@1.11.6: resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} @@ -10259,13 +7589,13 @@ packages: /@webassemblyjs/helper-wasm-bytecode@1.11.6: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 /@webassemblyjs/ieee754@1.11.6: resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} @@ -10280,49 +7610,49 @@ packages: /@webassemblyjs/utf8@1.11.6: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-api-error': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 /@xmldom/xmldom@0.8.10: @@ -10401,8 +7731,8 @@ packages: mime-types: 2.1.35 negotiator: 0.6.3 - /ace-builds@1.31.2: - resolution: {integrity: sha512-IeZI9ytPA6mB+goPxPkUPW4vXBoLuaBl5czu2tjtKrMi7mdRgyIUA/8e5JlrI1mqKoMeWHoUujzMTWkyutTdBw==} + /ace-builds@1.32.7: + resolution: {integrity: sha512-ziv35kaYELFw4suWlotz/Xsl1/1LhWAbwFoD3zIgCgP9gXGECEsAM4GhiB0T0xZdmQjyv6hmAzO280g0+n4vGw==} dev: false /acorn-bigint@0.4.0(acorn@6.4.2): @@ -10425,14 +7755,14 @@ packages: acorn-private-class-elements: 0.2.7(acorn@6.4.2) dev: true - /acorn-class-fields@0.3.7(acorn@8.11.2): + /acorn-class-fields@0.3.7(acorn@8.11.3): resolution: {integrity: sha512-jdUWSFce0fuADUljmExz4TWpPkxmRW/ZCPRqeeUzbGf0vFUcpQYbyq52l75qGd0oSwwtAepeL6hgb/naRgvcKQ==} engines: {node: '>=4.8.2'} peerDependencies: acorn: ^6 || ^7 || ^8 dependencies: - acorn: 8.11.2 - acorn-private-class-elements: 0.2.7(acorn@8.11.2) + acorn: 8.11.3 + acorn-private-class-elements: 0.2.7(acorn@8.11.3) dev: true /acorn-dynamic-import@4.0.0(acorn@6.4.2): @@ -10444,13 +7774,13 @@ packages: acorn: 6.4.2 dev: true - /acorn-dynamic-import@4.0.0(acorn@8.11.2): + /acorn-dynamic-import@4.0.0(acorn@8.11.3): resolution: {integrity: sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==} deprecated: This is probably built in to whatever tool you're using. If you still need it... idk peerDependencies: acorn: ^6.0.0 dependencies: - acorn: 8.11.2 + acorn: 8.11.3 dev: true /acorn-export-ns-from@0.1.0(acorn@6.4.2): @@ -10472,8 +7802,8 @@ packages: /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: - acorn: 8.11.2 - acorn-walk: 8.3.0 + acorn: 8.11.3 + acorn-walk: 8.3.2 dev: false /acorn-import-assertions@1.9.0(acorn@8.11.3): @@ -10509,12 +7839,12 @@ packages: acorn: 7.4.1 dev: true - /acorn-jsx@5.3.2(acorn@8.11.2): + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.11.2 + acorn: 8.11.3 dev: true /acorn-logical-assignment@0.1.4(acorn@6.4.2): @@ -10546,13 +7876,13 @@ packages: acorn: 6.4.2 dev: true - /acorn-private-class-elements@0.2.7(acorn@8.11.2): + /acorn-private-class-elements@0.2.7(acorn@8.11.3): resolution: {integrity: sha512-+GZH2wOKNZOBI4OOPmzpo4cs6mW297sn6fgIk1dUI08jGjhAaEwvC39mN2gJAg2lmAQJ1rBkFqKWonL3Zz6PVA==} engines: {node: '>=4.8.2'} peerDependencies: acorn: ^6.1.0 || ^7 || ^8 dependencies: - acorn: 8.11.2 + acorn: 8.11.3 dev: true /acorn-private-methods@0.3.3(acorn@6.4.2): @@ -10565,14 +7895,14 @@ packages: acorn-private-class-elements: 0.2.7(acorn@6.4.2) dev: true - /acorn-private-methods@0.3.3(acorn@8.11.2): + /acorn-private-methods@0.3.3(acorn@8.11.3): resolution: {integrity: sha512-46oeEol3YFvLSah5m9hGMlNpxDBCEkdceJgf01AjqKYTK9r6HexKs2rgSbLK81pYjZZMonhftuUReGMlbbv05w==} engines: {node: '>=4.8.2'} peerDependencies: acorn: ^6 || ^7 || ^8 dependencies: - acorn: 8.11.2 - acorn-private-class-elements: 0.2.7(acorn@8.11.2) + acorn: 8.11.3 + acorn-private-class-elements: 0.2.7(acorn@8.11.3) dev: true /acorn-stage3@2.1.0(acorn@6.4.2): @@ -10593,16 +7923,16 @@ packages: acorn-static-class-features: 0.2.4(acorn@6.4.2) dev: true - /acorn-stage3@4.0.0(acorn@8.11.2): + /acorn-stage3@4.0.0(acorn@8.11.3): resolution: {integrity: sha512-BR+LaADtA6GTB5prkNqWmlmCLYmkyW0whvSxdHhbupTaro2qBJ95fJDEiRLPUmiACGHPaYyeH9xmNJWdGfXRQw==} engines: {node: '>=4.8.2'} peerDependencies: acorn: ^7.4 || ^8 dependencies: - acorn: 8.11.2 - acorn-class-fields: 0.3.7(acorn@8.11.2) - acorn-private-methods: 0.3.3(acorn@8.11.2) - acorn-static-class-features: 0.2.4(acorn@8.11.2) + acorn: 8.11.3 + acorn-class-fields: 0.3.7(acorn@8.11.3) + acorn-private-methods: 0.3.3(acorn@8.11.3) + acorn-static-class-features: 0.2.4(acorn@8.11.3) dev: true /acorn-static-class-features@0.2.4(acorn@6.4.2): @@ -10615,14 +7945,14 @@ packages: acorn-private-class-elements: 0.2.7(acorn@6.4.2) dev: true - /acorn-static-class-features@0.2.4(acorn@8.11.2): + /acorn-static-class-features@0.2.4(acorn@8.11.3): resolution: {integrity: sha512-5X4mpYq5J3pdndLmIB0+WtFd/mKWnNYpuTlTzj32wUu/PMmEGOiayQ5UrqgwdBNiaZBtDDh5kddpP7Yg2QaQYA==} engines: {node: '>=4.8.2'} peerDependencies: acorn: ^6.1.0 || ^7 || ^8 dependencies: - acorn: 8.11.2 - acorn-private-class-elements: 0.2.7(acorn@8.11.2) + acorn: 8.11.3 + acorn-private-class-elements: 0.2.7(acorn@8.11.3) dev: true /acorn-walk@6.2.0: @@ -10635,8 +7965,8 @@ packages: engines: {node: '>=0.4.0'} dev: true - /acorn-walk@8.3.0: - resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} /acorn@5.7.4: @@ -10657,11 +7987,6 @@ packages: hasBin: true requiresBuild: true - /acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} - engines: {node: '>=0.4.0'} - hasBin: true - /acorn@8.11.3: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} @@ -10695,15 +8020,6 @@ packages: - supports-color dev: false - /agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} - engines: {node: '>= 14'} - dependencies: - debug: 4.3.4(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - dev: true - /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -11199,11 +8515,12 @@ packages: engines: {node: '>=0.10.0'} dev: true - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 + call-bind: 1.0.7 + is-array-buffer: 3.0.4 dev: true /array-equal@1.0.2: @@ -11261,24 +8578,25 @@ packages: resolution: {integrity: sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.5 es-array-method-boxes-properly: 1.0.0 is-string: 1.0.7 dev: true - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 + es-abstract: 1.22.5 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 dev: true /arrify@1.0.1: @@ -11304,10 +8622,10 @@ packages: /assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-nan: 1.3.2 - object-is: 1.1.5 - object.assign: 4.1.4 + object-is: 1.1.6 + object.assign: 4.1.5 util: 0.12.5 dev: true @@ -11324,13 +8642,6 @@ packages: through: 2.3.8 dev: false - /ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} - engines: {node: '>=4'} - dependencies: - tslib: 2.6.2 - dev: true - /ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} @@ -11389,9 +8700,11 @@ packages: gulp-header: 1.8.12 dev: true - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 /aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} @@ -11401,24 +8714,15 @@ packages: resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} requiresBuild: true - /axios-retry@4.0.0(axios@1.6.2): + /axios-retry@4.0.0(axios@1.6.7): resolution: {integrity: sha512-F6P4HVGITD/v4z9Lw2mIA24IabTajvpDZmKa6zq/gGwn57wN5j1P3uWrAV0+diqnW6kTM2fTqmWNfgYWGmMuiA==} peerDependencies: axios: 0.x || 1.x dependencies: - axios: 1.6.2 + axios: 1.6.7 is-retry-allowed: 2.2.0 dev: false - /axios@1.6.2: - resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} - dependencies: - follow-redirects: 1.15.3 - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - /axios@1.6.7: resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} dependencies: @@ -11427,7 +8731,6 @@ packages: proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false /babel-code-frame@6.26.0: resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} @@ -11463,12 +8766,12 @@ packages: - supports-color dev: true - /babel-core@7.0.0-bridge.0(@babel/core@7.23.3): + /babel-core@7.0.0-bridge.0(@babel/core@7.24.0): resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.24.0 dev: true /babel-generator@6.26.1: @@ -11526,7 +8829,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -11547,74 +8850,38 @@ packages: cosmiconfig: 7.1.0 resolve: 1.22.8 - /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.3): - resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/compat-data': 7.23.3 - '@babel/core': 7.23.3 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.24.0): - resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} + /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.0): + resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.23.3 + '@babel/compat-data': 7.23.5 '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.24.0) + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.0) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.3): - resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) - core-js-compat: 3.33.3 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.24.0): - resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} + /babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.24.0): + resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.24.0) - core-js-compat: 3.33.3 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.3): - resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.24.0) + core-js-compat: 3.36.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.24.0): - resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} + /babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.24.0): + resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.24.0) + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.24.0) transitivePeerDependencies: - supports-color dev: true @@ -11776,8 +9043,8 @@ packages: dependencies: readable-stream: 3.6.2 - /body-parser@1.20.1: - resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + /body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 @@ -11789,7 +9056,7 @@ packages: iconv-lite: 0.4.24 on-finished: 2.4.1 qs: 6.11.0 - raw-body: 2.5.1 + raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: @@ -11910,17 +9177,7 @@ packages: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} dependencies: pako: 0.2.9 - dev: true - - /browserslist@4.22.1: - resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001565 - electron-to-chromium: 1.4.594 - node-releases: 2.0.13 - update-browserslist-db: 1.0.13(browserslist@4.22.1) + dev: true /browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} @@ -11928,7 +9185,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001597 - electron-to-chromium: 1.4.702 + electron-to-chromium: 1.4.703 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) @@ -12028,13 +9285,6 @@ packages: engines: {node: '>=6'} dev: true - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} - dependencies: - function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.1.1 - /call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -12104,9 +9354,6 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: false - /caniuse-lite@1.0.30001565: - resolution: {integrity: sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==} - /caniuse-lite@1.0.30001597: resolution: {integrity: sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==} @@ -12120,7 +9367,7 @@ packages: requiresBuild: true dependencies: '@mapbox/node-pre-gyp': 1.0.11 - nan: 2.18.0 + nan: 2.19.0 simple-get: 3.1.1 transitivePeerDependencies: - encoding @@ -12151,6 +9398,10 @@ packages: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} requiresBuild: true + /cctx@1.0.1: + resolution: {integrity: sha512-AcWAyflX8kGUaYMyvCLzRpcOe4MyMYioPzqoQ8AIrNFSQS2ddKLW46fIKc4wiTPai6b/Pebx2acBc1vPjGWGpA==} + dev: false + /chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} engines: {node: '>=0.10.0'} @@ -12203,20 +9454,6 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - /chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -12256,6 +9493,12 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + /citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + dependencies: + consola: 3.2.3 + dev: true + /class-utils@0.3.6: resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} engines: {node: '>=0.10.0'} @@ -12270,10 +9513,6 @@ packages: resolution: {integrity: sha512-sbpkOw6z413p+HDGcBENe498WM9woqWHiJxCq7nvmxe9WmrUmqfAcxpIwAiMtM5Q3AhYkzXcNQHqsWq0mND51g==} dev: false - /classnames@2.3.2: - resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} - dev: false - /classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} dev: false @@ -12408,14 +9647,9 @@ packages: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} - /clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - /clsx@2.1.0: resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} engines: {node: '>=6'} - dev: false /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} @@ -12473,10 +9707,6 @@ packages: color-string: 1.9.1 dev: false - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: true - /colors@1.0.3: resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} engines: {node: '>=0.1.90'} @@ -12645,6 +9875,11 @@ packages: xdg-basedir: 3.0.0 dev: true + /consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + dev: true + /console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} requiresBuild: true @@ -12711,7 +9946,7 @@ packages: dependencies: JSONStream: 1.3.5 is-text-path: 1.0.1 - lodash: 4.17.21 + lodash: 4.17.11 meow: 4.0.1 split2: 2.2.0 through2: 2.0.5 @@ -12754,10 +9989,10 @@ packages: engines: {node: '>=0.10.0'} dev: true - /core-js-compat@3.33.3: - resolution: {integrity: sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==} + /core-js-compat@3.36.0: + resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} dependencies: - browserslist: 4.22.1 + browserslist: 4.23.0 dev: true /core-js@1.2.7: @@ -12809,21 +10044,6 @@ packages: path-type: 4.0.0 yaml: 1.10.2 - /cosmiconfig@8.3.6(typescript@5.3.2): - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - typescript: 5.3.2 - /cosmiconfig@8.3.6(typescript@5.4.2): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} @@ -12838,12 +10058,13 @@ packages: parse-json: 5.2.0 path-type: 4.0.0 typescript: 5.4.2 - dev: false - /country-locale-map@1.8.15: - resolution: {integrity: sha512-eIaFeCXIj3FMLheoxB+PhaDT0J7OG8qFYTMn/eytLTOnMgk/Bs1rC3XhHpgQz+eP+bSsCkdso58nIgQlRNd/6A==} + /country-locale-map@1.9.4: + resolution: {integrity: sha512-mRg2rrNfZBgJ09pfHloaFHRcVoKJ8FR/Q0wInYdA9+oBwA+rb6z9m7wtEXcmS2tbD65ZY68mjLTneq589RkTMw==} dependencies: - fuzzball: 1.4.0 + cctx: 1.0.1 + fuzzball: 2.1.2 + nodemon: 3.1.0 dev: false /coveralls@3.1.1: @@ -13018,6 +10239,7 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: false /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -13258,24 +10480,24 @@ packages: resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 is-arguments: 1.1.1 - is-array-buffer: 3.0.2 + is-array-buffer: 3.0.4 is-date-object: 1.0.5 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 isarray: 2.0.5 - object-is: 1.1.5 + object-is: 1.1.6 object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.1 - side-channel: 1.0.4 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + side-channel: 1.0.6 which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.13 + which-collection: 1.0.2 + which-typed-array: 1.1.15 dev: true /deep-extend@0.6.0: @@ -13327,14 +10549,6 @@ packages: resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} dev: true - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.2 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - /define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -13352,8 +10566,8 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 dev: true @@ -13379,8 +10593,8 @@ packages: isobject: 3.0.1 dev: true - /defu@6.1.3: - resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==} + /defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} dev: true /del@3.0.0: @@ -13503,6 +10717,11 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /diff@3.5.0: resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} engines: {node: '>=0.3.1'} @@ -13547,6 +10766,10 @@ packages: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dev: true + /dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dev: true + /dom-helpers@3.4.0: resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} dependencies: @@ -13557,7 +10780,7 @@ packages: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: '@babel/runtime': 7.24.0 - csstype: 3.1.2 + csstype: 3.1.3 /dom-serializer@0.2.2: resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} @@ -13659,8 +10882,8 @@ packages: engines: {node: '>=12'} dev: true - /dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} dev: true @@ -13680,7 +10903,7 @@ packages: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 2.3.8 - stream-shift: 1.0.1 + stream-shift: 1.0.3 dev: true /earcut@2.2.4: @@ -13717,11 +10940,8 @@ packages: jake: 10.8.7 dev: true - /electron-to-chromium@1.4.594: - resolution: {integrity: sha512-xT1HVAu5xFn7bDfkjGQi9dNpMqGchUkebwf1GL7cZN32NSwwlHRPMSDJ1KN6HkS0bWUtndbSQZqvpQftKG2uFQ==} - - /electron-to-chromium@1.4.702: - resolution: {integrity: sha512-LYLXyEUsZ3nNSwiOWjI88N1PJUAMU2QphQSgGLVkFnb3FxZxNui2Vzi2PaKPgPWbsWbZstZnh6BMf/VQJamjiQ==} + /electron-to-chromium@1.4.703: + resolution: {integrity: sha512-094ZZC4nHXPKl/OwPinSMtLN9+hoFkdfQGKnvXbY+3WEAYtVDpz9UhJIViiY6Zb8agvqxiaJzNG9M+pRZWvSZw==} /elegant-spinner@1.0.1: resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} @@ -13799,8 +11019,8 @@ packages: java-properties: 1.0.2 dev: true - /envinfo@7.11.0: - resolution: {integrity: sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==} + /envinfo@7.11.1: + resolution: {integrity: sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==} engines: {node: '>=4'} hasBin: true dev: true @@ -13824,49 +11044,51 @@ packages: engines: {node: '>=0.10.0'} dev: true - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + /es-abstract@1.22.5: + resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - es-set-tostringtag: 2.0.2 + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 - get-symbol-description: 1.0.0 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 globalthis: 1.0.3 gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 is-callable: 1.2.7 - is-negative-zero: 2.0.2 + is-negative-zero: 2.0.3 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 is-string: 1.0.7 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 string.prototype.trim: 1.2.8 string.prototype.trimend: 1.0.7 string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.5 unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 dev: true /es-array-method-boxes-properly@1.0.0: @@ -13886,12 +11108,12 @@ packages: /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 is-arguments: 1.1.1 - is-map: 2.0.2 - is-set: 2.0.2 + is-map: 2.0.3 + is-set: 2.0.3 is-string: 1.0.7 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 @@ -13904,13 +11126,13 @@ packages: /es-module-lexer@1.4.1: resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 - hasown: 2.0.0 + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 dev: true /es-to-primitive@1.2.1: @@ -13930,6 +11152,14 @@ packages: resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} dev: true + /esbuild-plugin-react-virtualized@1.0.4(esbuild@0.19.12): + resolution: {integrity: sha512-/Y+82TBduHox0/uhJlTgUqi3ZWN+qZPF0xy9crkHQE2AOOdm76l6VY2F0Mdfvue9hqXz2FOlKHlHUVXNalHLzA==} + peerDependencies: + esbuild: '*' + dependencies: + esbuild: 0.19.12 + dev: true + /esbuild-register@3.5.0(esbuild@0.18.20): resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} peerDependencies: @@ -14001,37 +11231,8 @@ packages: '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 - /esbuild@0.19.8: - resolution: {integrity: sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.19.8 - '@esbuild/android-arm64': 0.19.8 - '@esbuild/android-x64': 0.19.8 - '@esbuild/darwin-arm64': 0.19.8 - '@esbuild/darwin-x64': 0.19.8 - '@esbuild/freebsd-arm64': 0.19.8 - '@esbuild/freebsd-x64': 0.19.8 - '@esbuild/linux-arm': 0.19.8 - '@esbuild/linux-arm64': 0.19.8 - '@esbuild/linux-ia32': 0.19.8 - '@esbuild/linux-loong64': 0.19.8 - '@esbuild/linux-mips64el': 0.19.8 - '@esbuild/linux-ppc64': 0.19.8 - '@esbuild/linux-riscv64': 0.19.8 - '@esbuild/linux-s390x': 0.19.8 - '@esbuild/linux-x64': 0.19.8 - '@esbuild/netbsd-x64': 0.19.8 - '@esbuild/openbsd-x64': 0.19.8 - '@esbuild/sunos-x64': 0.19.8 - '@esbuild/win32-arm64': 0.19.8 - '@esbuild/win32-ia32': 0.19.8 - '@esbuild/win32-x64': 0.19.8 - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} /escape-html@1.0.3: @@ -14084,15 +11285,6 @@ packages: optionalDependencies: source-map: 0.6.1 - /eslint-plugin-react-hooks@4.6.0(eslint@8.54.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.54.0 - dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -14102,33 +11294,25 @@ packages: eslint: 8.57.0 dev: true - /eslint-plugin-react-refresh@0.4.4(eslint@8.54.0): - resolution: {integrity: sha512-eD83+65e8YPVg6603Om2iCIwcQJf/y7++MWm4tACtEswFLYMwxwVWAfwN+e19f5Ad/FOyyNg9Dfi5lXhH3Y3rA==} - peerDependencies: - eslint: '>=7' - dependencies: - eslint: 8.54.0 - dev: true - - /eslint-plugin-react-refresh@0.4.4(eslint@8.57.0): - resolution: {integrity: sha512-eD83+65e8YPVg6603Om2iCIwcQJf/y7++MWm4tACtEswFLYMwxwVWAfwN+e19f5Ad/FOyyNg9Dfi5lXhH3Y3rA==} + /eslint-plugin-react-refresh@0.4.6(eslint@8.57.0): + resolution: {integrity: sha512-NjGXdm7zgcKRkKMua34qVO9doI7VOxZ6ancSvBELJSSoX97jyndXcSoa8XBh69JoB31dNz3EEzlMcizZl7LaMA==} peerDependencies: eslint: '>=7' dependencies: eslint: 8.57.0 dev: true - /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.12.0)(eslint@8.57.0): - resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} + /eslint-plugin-unused-imports@3.1.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.0): + resolution: {integrity: sha512-9l1YFCzXKkw1qtAru1RWUtG2EVDZY0a0eChKXcL+EZ5jitG7qxdctu4RnvhOJHv4xfmUf7h+JJPINlVpGhZMrw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - '@typescript-eslint/eslint-plugin': ^6.0.0 - eslint: ^8.0.0 + '@typescript-eslint/eslint-plugin': 6 - 7 + eslint: '8' peerDependenciesMeta: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.57.0)(typescript@5.3.2) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.2) eslint: 8.57.0 eslint-rule-composer: 0.3.0 dev: true @@ -14158,53 +11342,6 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.54.0: - resolution: {integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.3 - '@eslint/js': 8.54.0 - '@humanwhocodes/config-array': 0.11.13 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@5.5.0) - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.23.0 - graphemer: 1.4.0 - ignore: 5.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - /eslint@8.57.0: resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -14256,8 +11393,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 dev: true @@ -14410,6 +11547,21 @@ packages: strip-final-newline: 2.0.0 dev: true + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + /exenv@1.2.2: resolution: {integrity: sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==} dev: false @@ -14466,13 +11618,13 @@ packages: jest-regex-util: 23.3.0 dev: true - /express@4.18.2: - resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + /express@4.18.3: + resolution: {integrity: sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.1 + body-parser: 1.20.2 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.5.0 @@ -14616,8 +11768,8 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - /fast-xml-parser@4.3.2: - resolution: {integrity: sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==} + /fast-xml-parser@4.3.5: + resolution: {integrity: sha512-sWvP1Pl8H03B8oFJpFR3HE31HUfwtX7Rlf9BNsvdpujD4n7WMhfmu8h9wOV2u+c1k0ZilTADhPqypzx2J690ZQ==} hasBin: true dependencies: strnum: 1.0.5 @@ -14661,7 +11813,7 @@ packages: engines: {node: ^12.20 || >= 14.13} dependencies: node-domexception: 1.0.0 - web-streams-polyfill: 3.2.1 + web-streams-polyfill: 3.3.3 dev: true /fetch-retry@5.0.6: @@ -14880,13 +12032,13 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.9 + flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 dev: true - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true /flow-bin@0.126.1: @@ -14895,8 +12047,8 @@ packages: hasBin: true dev: false - /flow-parser@0.222.0: - resolution: {integrity: sha512-Fq5OkFlFRSMV2EOZW+4qUYMTE0uj8pcLsYJMxXYriSBDpHAF7Ofx3PibCTy3cs5P6vbsry7eYj7Z7xFD49GIOQ==} + /flow-parser@0.230.0: + resolution: {integrity: sha512-ZAfKaarESYYcP/RoLdM91vX0u/1RR7jI5TJaFLnxwRlC2mp0o+Rw7ipIY7J6qpIpQYtAobWb/J6S0XPeu0gO8g==} engines: {node: '>=0.4.0'} dev: true @@ -14916,22 +12068,13 @@ packages: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} dev: false - /focus-lock@1.0.0: - resolution: {integrity: sha512-a8Ge6cdKh9za/GZR/qtigTAk7SrGore56EFcoMshClsh7FLk1zwszc/ltuMfKhx56qeuyL/jWQ4J4axou0iJ9w==} + /focus-lock@1.3.4: + resolution: {integrity: sha512-Gv0N3mvej3pD+HWkNryrF8sExzEHqhQ6OSFxD4DPxm9n5HGCaHme98ZMBZroNEAJcsdtHxk+skvThGKyUeoEGA==} engines: {node: '>=10'} dependencies: tslib: 2.6.2 dev: false - /follow-redirects@1.15.3: - resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - /follow-redirects@1.15.5: resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} engines: {node: '>=4.0'} @@ -14940,7 +12083,6 @@ packages: peerDependenciesMeta: debug: optional: true - dev: false /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -15002,7 +12144,7 @@ packages: fetch-blob: 3.2.0 dev: true - /formik-material-ui@4.0.0-alpha.2(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.1)(formik@2.4.5)(react@18.2.0)(tiny-warning@1.0.3): + /formik-material-ui@4.0.0-alpha.2(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.13)(formik@2.4.5)(react@18.2.0)(tiny-warning@1.0.3): resolution: {integrity: sha512-jGKCUMpexQiU3NN+vYx1MgsgJFLaHnOVJAdKSN7IThKtrWs7t7m6Ft7AyRl/ZDEztKo/sWunlGJvaQJbQBBH9A==} deprecated: Package renamed to formik-mui peerDependencies: @@ -15013,9 +12155,9 @@ packages: react: '>=17.0.2' tiny-warning: '>=1.0.3' dependencies: - '@emotion/react': 11.11.1(@types/react@18.2.39)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.39)(react@18.2.0) - '@mui/material': 5.15.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0) + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.65)(react@18.2.0) + '@mui/material': 5.15.13(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) formik: 2.4.5(react@18.2.0) react: 18.2.0 tiny-warning: 1.0.3 @@ -15161,9 +12303,9 @@ packages: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.5 functions-have-names: 1.2.3 dev: true @@ -15171,8 +12313,8 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /fuzzball@1.4.0: - resolution: {integrity: sha512-ufKO0SHW65RSqZNu4rmLmraQVuwb8kVf8S/ICpkih/PfIff2YW3sa8zTvt7d7hJFXY1IvOOGJTeXxs69XLBd4Q==} + /fuzzball@2.1.2: + resolution: {integrity: sha512-wVBw/a73M3luaX6ZHt9vIoEKT/rLqBkzdBRhQzWw/IQyIt0qnqc0IAJDCkX3CLgj2tRIUAfgDUT8G6YuMpmNXg==} dependencies: heap: 0.2.7 setimmediate: 1.0.5 @@ -15225,13 +12367,9 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} - dependencies: - function-bind: 1.1.2 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.0 + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true /get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} @@ -15311,12 +12449,18 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 dev: true /get-value@2.0.6: @@ -15330,19 +12474,18 @@ packages: dependencies: assert-plus: 1.0.0 - /giget@1.1.3: - resolution: {integrity: sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==} + /giget@1.2.1: + resolution: {integrity: sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==} hasBin: true dependencies: - colorette: 2.0.20 - defu: 6.1.3 - https-proxy-agent: 7.0.2 - mri: 1.2.0 - node-fetch-native: 1.4.1 - pathe: 1.1.1 + citty: 0.1.6 + consola: 3.2.3 + defu: 6.1.4 + node-fetch-native: 1.6.2 + nypm: 0.3.8 + ohash: 1.1.3 + pathe: 1.1.2 tar: 6.2.0 - transitivePeerDependencies: - - supports-color dev: true /git-log-parser@1.2.0: @@ -15353,7 +12496,7 @@ packages: split2: 1.0.0 stream-combiner2: 1.1.1 through2: 2.0.5 - traverse: 0.6.7 + traverse: 0.6.8 dev: true /git-raw-commits@1.3.6: @@ -15527,13 +12670,6 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@13.23.0: - resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - /globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -15562,7 +12698,7 @@ packages: dir-glob: 3.0.1 fast-glob: 3.3.2 glob: 7.2.3 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -15574,7 +12710,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -15593,7 +12729,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 /got@6.7.1: resolution: {integrity: sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==} @@ -15793,20 +12929,11 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} - dependencies: - get-intrinsic: 1.2.2 - /has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: es-define-property: 1.0.0 - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - /has-proto@1.0.3: resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} @@ -15815,8 +12942,8 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 @@ -15858,12 +12985,6 @@ packages: kind-of: 4.0.0 dev: true - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - /hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -15885,7 +13006,7 @@ packages: dependencies: date.js: 0.3.3 handlebars-utils: 1.0.6 - moment: 2.29.4 + moment: 2.30.1 transitivePeerDependencies: - supports-color dev: true @@ -16083,16 +13204,6 @@ packages: - supports-color dev: false - /https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.3.4(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - dev: true - /human-signals@1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} @@ -16103,6 +13214,11 @@ packages: engines: {node: '>=10.17.0'} dev: true + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + /husky@1.3.1: resolution: {integrity: sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==} engines: {node: '>=6'} @@ -16134,7 +13250,7 @@ packages: /i18next-browser-languagedetector@7.2.0: resolution: {integrity: sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA==} dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.24.0 dev: true /i18next-scanner@2.11.0: @@ -16169,11 +13285,11 @@ packages: engines: {node: '>=12'} hasBin: true dependencies: - acorn: 8.11.2 - acorn-dynamic-import: 4.0.0(acorn@8.11.2) - acorn-jsx: 5.3.2(acorn@8.11.2) - acorn-stage3: 4.0.0(acorn@8.11.2) - acorn-walk: 8.3.0 + acorn: 8.11.3 + acorn-dynamic-import: 4.0.0(acorn@8.11.3) + acorn-jsx: 5.3.2(acorn@8.11.3) + acorn-stage3: 4.0.0(acorn@8.11.3) + acorn-walk: 8.3.2 chalk: 4.1.2 clone-deep: 4.0.1 commander: 6.2.1 @@ -16222,12 +13338,6 @@ packages: /ignore-by-default@1.0.1: resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} - dev: true - - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} - engines: {node: '>= 4'} - dev: true /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} @@ -16238,9 +13348,6 @@ packages: resolution: {integrity: sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw==} dev: false - /immutable@4.3.4: - resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} - /immutable@4.3.5: resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} @@ -16356,7 +13463,7 @@ packages: cli-width: 2.2.1 external-editor: 3.1.0 figures: 2.0.0 - lodash: 4.17.21 + lodash: 4.17.14 mute-stream: 0.0.7 run-async: 2.4.1 rxjs: 6.6.7 @@ -16365,13 +13472,13 @@ packages: through: 2.3.8 dev: true - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 - hasown: 2.0.0 - side-channel: 1.0.4 + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 dev: true /interpret@1.4.0: @@ -16404,8 +13511,8 @@ packages: dev: false optional: true - /ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + /ip@2.0.1: + resolution: {integrity: sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==} dev: true /ipaddr.js@1.9.1: @@ -16433,22 +13540,22 @@ packages: resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} engines: {node: '>= 0.10'} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 dev: true /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 dev: true /is-arrayish@0.2.1: @@ -16474,8 +13581,8 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: true /is-buffer@1.1.6: @@ -16503,20 +13610,20 @@ packages: /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 /is-data-descriptor@1.0.1: resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} engines: {node: '>= 0.4'} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 dev: true /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-deflate@1.0.0: @@ -16625,7 +13732,7 @@ packages: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /is-glob@2.0.1: resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} @@ -16665,8 +13772,9 @@ packages: engines: {node: '>=8'} dev: true - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} dev: true /is-module@1.0.0: @@ -16677,7 +13785,7 @@ packages: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 dev: true @@ -16686,8 +13794,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} dev: true @@ -16700,7 +13808,7 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-number@2.1.0: @@ -16821,8 +13929,8 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: true /is-regexp@1.0.0: @@ -16854,14 +13962,16 @@ packages: self-closing-tags: 1.0.1 dev: true - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} dev: true - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 dev: true /is-stream@1.1.0: @@ -16872,11 +13982,16 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-symbol@1.0.4: @@ -16893,11 +14008,11 @@ packages: text-extensions: 1.9.0 dev: true - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} @@ -16924,21 +14039,23 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} dev: true /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 dev: true - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 dev: true /is-windows@1.0.2: @@ -17000,14 +14117,14 @@ packages: resolution: {integrity: sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==} dependencies: node-fetch: 1.7.3 - whatwg-fetch: 3.6.19 + whatwg-fetch: 3.6.20 dev: false /isomorphic-fetch@3.0.0: resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} dependencies: node-fetch: 2.7.0 - whatwg-fetch: 3.6.19 + whatwg-fetch: 3.6.20 transitivePeerDependencies: - encoding dev: true @@ -17078,8 +14195,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.23.3 - '@babel/parser': 7.23.4 + '@babel/core': 7.24.0 + '@babel/parser': 7.24.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -17281,7 +14398,7 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 18.18.13 + '@types/node': 18.19.24 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -17333,7 +14450,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 18.18.13 + '@types/node': 18.19.24 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -17392,7 +14509,7 @@ packages: /jest-message-util@23.4.0: resolution: {integrity: sha512-Tjqy7T8jHhPgV4Gsi+pKMMfaz3uP5DPtMGnm8RWNWUHIk2igqxQ3/9rud3JkINCvZDGqlpJVuFGIDXbltG4xLA==} dependencies: - '@babel/code-frame': 7.23.4 + '@babel/code-frame': 7.23.5 chalk: 2.4.2 micromatch: 2.3.11 slash: 1.0.0 @@ -17423,7 +14540,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.18.13 + '@types/node': 18.19.24 dev: true /jest-mock@29.7.0: @@ -17431,7 +14548,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.18.13 + '@types/node': 18.19.24 jest-util: 29.7.0 dev: false @@ -17549,7 +14666,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.18.13 + '@types/node': 18.19.24 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -17582,7 +14699,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.19.23 + '@types/node': 18.19.24 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -17590,7 +14707,7 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.18.13 + '@types/node': 18.19.24 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -17647,30 +14764,34 @@ packages: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} requiresBuild: true - /jscodeshift@0.14.0(@babel/preset-env@7.23.3): - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + /jscodeshift@0.15.2(@babel/preset-env@7.24.0): + resolution: {integrity: sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==} hasBin: true peerDependencies: '@babel/preset-env': ^7.1.6 + peerDependenciesMeta: + '@babel/preset-env': + optional: true dependencies: - '@babel/core': 7.23.3 - '@babel/parser': 7.23.4 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.3) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.3) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.3) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.3) - '@babel/preset-env': 7.23.3(@babel/core@7.23.3) - '@babel/preset-flow': 7.23.3(@babel/core@7.23.3) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.3) - '@babel/register': 7.22.15(@babel/core@7.23.3) - babel-core: 7.0.0-bridge.0(@babel/core@7.23.3) + '@babel/core': 7.24.0 + '@babel/parser': 7.24.0 + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.24.0) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.24.0) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.24.0) + '@babel/preset-env': 7.24.0(@babel/core@7.24.0) + '@babel/preset-flow': 7.24.0(@babel/core@7.24.0) + '@babel/preset-typescript': 7.23.3(@babel/core@7.24.0) + '@babel/register': 7.23.7(@babel/core@7.24.0) + babel-core: 7.0.0-bridge.0(@babel/core@7.24.0) chalk: 4.1.2 - flow-parser: 0.222.0 + flow-parser: 0.230.0 graceful-fs: 4.2.11 micromatch: 4.0.5 neo-async: 2.6.2 node-dir: 0.1.17 - recast: 0.21.5 + recast: 0.23.6 temp: 0.8.4 write-file-atomic: 2.4.3 transitivePeerDependencies: @@ -17764,7 +14885,7 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.11.2 + acorn: 8.11.3 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -17787,7 +14908,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.14.2 + ws: 8.16.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -17879,8 +15000,8 @@ packages: graceful-fs: 4.2.11 dev: true - /jsonld@8.3.1: - resolution: {integrity: sha512-tYfKpWL56meSJCHS91Ph0+EUThHZOZ8bKuboME4998SF+Kkukp2PhCPdRCvA7tsGUKr9FvSoyIRqJPuImBcBuA==} + /jsonld@8.3.2: + resolution: {integrity: sha512-MwBbq95szLwt8eVQ1Bcfwmgju/Y5P2GdtlHE2ncyfuYjIdEhluUVyj1eudacf1mOkWIoS9GpDBTECqhmq7EOaA==} engines: {node: '>=14'} dependencies: '@digitalbazaar/http-client': 3.4.1 @@ -18021,7 +15142,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: app-root-dir: 1.0.2 - dotenv: 16.3.1 + dotenv: 16.4.5 dotenv-expand: 10.0.0 dev: true @@ -18290,10 +15411,6 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /lodash.pick@4.4.0: - resolution: {integrity: sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==} - dev: true - /lodash.set@4.3.2: resolution: {integrity: sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==} dev: true @@ -18433,6 +15550,12 @@ packages: signal-exit: 3.0.7 dev: true + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: @@ -18448,8 +15571,8 @@ packages: engines: {node: '>=8'} dev: true - /lru-cache@10.1.0: - resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} engines: {node: 14 || >=16.14} dev: true @@ -18502,8 +15625,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + /magic-string@0.30.8: + resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -18615,8 +15738,8 @@ packages: vt-pbf: 3.1.3 dev: false - /markdown-to-jsx@7.3.2(react@18.2.0): - resolution: {integrity: sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==} + /markdown-to-jsx@7.4.3(react@18.2.0): + resolution: {integrity: sha512-qwu2XftKs/SP+f6oCe0ruAFKX6jZaKxrBfDBV4CthqbVbRQwHhNM28QGDQuTldCaOn+hocaqbmGvCuXO5m3smA==} engines: {node: '>= 10'} peerDependencies: react: '>= 0.14.0' @@ -18751,7 +15874,7 @@ packages: /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - /merge-refs@1.2.2(@types/react@18.2.39): + /merge-refs@1.2.2(@types/react@18.2.65): resolution: {integrity: sha512-RwcT7GsQR3KbuLw1rRuodq4Nt547BKEBkliZ0qqsrpyNne9bGTFtsFIsIpx82huWhcl3kOlOlH4H0xkPk/DqVw==} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -18759,7 +15882,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.39 + '@types/react': 18.2.65 dev: false /merge-stream@1.0.1: @@ -18862,6 +15985,11 @@ packages: engines: {node: '>=6'} dev: true + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} @@ -18936,7 +16064,7 @@ packages: block-stream2: 2.1.0 browser-or-node: 2.1.1 buffer-crc32: 0.2.13 - fast-xml-parser: 4.3.2 + fast-xml-parser: 4.3.5 ipaddr.js: 2.1.0 json-stream: 1.0.0 lodash: 4.17.21 @@ -19012,8 +16140,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /moment@2.29.4: - resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + /moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} /mpd-parser@0.22.1: resolution: {integrity: sha512-fwBebvpyPUU8bOzvhX0VQZgSohncbgYwUyJJoTSNpmy7ccD2ryiCvM7oRkn/xQH5cv73/xU7rJSNCLjdGFor0Q==} @@ -19025,11 +16153,6 @@ packages: global: 4.4.0 dev: false - /mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - dev: true - /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -19064,16 +16187,9 @@ packages: global: 4.4.0 dev: false - /nan@2.18.0: - resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} - requiresBuild: true - dev: false - optional: true - /nan@2.19.0: resolution: {integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==} requiresBuild: true - dev: true optional: true /nanoid@3.3.7: @@ -19143,8 +16259,8 @@ packages: lodash: 4.17.21 dev: true - /node-fetch-native@1.4.1: - resolution: {integrity: sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==} + /node-fetch-native@1.6.2: + resolution: {integrity: sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==} dev: true /node-fetch@1.7.3: @@ -19189,35 +16305,30 @@ packages: which: 1.3.1 dev: true - /node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - /nodemon@3.0.2: - resolution: {integrity: sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==} + /nodemon@3.1.0: + resolution: {integrity: sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==} engines: {node: '>=10'} hasBin: true dependencies: - chokidar: 3.5.3 + chokidar: 3.6.0 debug: 4.3.4(supports-color@5.5.0) ignore-by-default: 1.0.1 minimatch: 3.1.2 pstree.remy: 1.1.8 - semver: 7.5.4 + semver: 7.6.0 simple-update-notifier: 2.0.0 supports-color: 5.5.0 touch: 3.1.0 undefsafe: 2.0.5 - dev: true /nopt@1.0.10: resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} hasBin: true dependencies: abbrev: 1.1.1 - dev: true /nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} @@ -19244,7 +16355,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.13.1 - semver: 7.5.4 + semver: 7.6.0 validate-npm-package-license: 3.0.4 dev: true @@ -19293,6 +16404,13 @@ packages: path-key: 3.1.1 dev: true + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + /npm-which@3.0.1: resolution: {integrity: sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A==} engines: {node: '>=4.2.0'} @@ -19458,6 +16576,18 @@ packages: /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + /nypm@0.3.8: + resolution: {integrity: sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + dependencies: + citty: 0.1.6 + consola: 3.2.3 + execa: 8.0.1 + pathe: 1.1.2 + ufo: 1.4.0 + dev: true + /oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} requiresBuild: true @@ -19478,11 +16608,11 @@ packages: /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + /object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 dev: true @@ -19498,16 +16628,6 @@ packages: isobject: 3.0.1 dev: true - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true - /object.assign@4.1.5: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} @@ -19523,10 +16643,10 @@ packages: engines: {node: '>= 0.8'} dependencies: array.prototype.reduce: 1.0.6 - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - safe-array-concat: 1.0.1 + es-abstract: 1.22.5 + safe-array-concat: 1.1.2 dev: true /object.omit@2.0.1: @@ -19548,6 +16668,10 @@ packages: resolution: {integrity: sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==} dev: true + /ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + dev: true + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -19584,6 +16708,13 @@ packages: mimic-fn: 2.1.0 dev: true + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -19847,7 +16978,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.23.4 + '@babel/code-frame': 7.23.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -19933,6 +17064,11 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -19940,7 +17076,7 @@ packages: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.1.0 + lru-cache: 10.2.0 minipass: 7.0.4 dev: true @@ -19974,8 +17110,8 @@ packages: dev: false optional: true - /pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} dev: true /pbf@3.2.1: @@ -20108,8 +17244,8 @@ packages: /pn@1.1.0: resolution: {integrity: sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==} - /polished@4.2.2: - resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} + /polished@4.3.1: + resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} engines: {node: '>=10'} dependencies: '@babel/runtime': 7.24.0 @@ -20125,6 +17261,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false @@ -20136,15 +17276,7 @@ packages: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true - - /postcss@8.4.32: - resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 + dev: false /postcss@8.4.35: resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} @@ -20228,7 +17360,6 @@ packages: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 - dev: false /pretty-hrtime@1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} @@ -20330,7 +17461,6 @@ packages: /pstree.remy@1.1.8: resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} - dev: true /pump@2.0.1: resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} @@ -20391,21 +17521,13 @@ packages: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 - - /qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.4 - dev: true + side-channel: 1.0.6 /qs@6.12.0: resolution: {integrity: sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==} engines: {node: '>=0.6'} dependencies: side-channel: 1.0.6 - dev: false /qs@6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} @@ -20475,8 +17597,8 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - /raw-body@2.5.1: - resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} dependencies: bytes: 3.1.2 @@ -20507,7 +17629,7 @@ packages: react: ^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 react-dom: ^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: - ace-builds: 1.31.2 + ace-builds: 1.32.7 diff-match-patch: 1.0.5 lodash.get: 4.4.2 lodash.isequal: 4.5.0 @@ -20516,33 +17638,6 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /react-bootstrap@1.6.7(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-IzCYXuLSKDEjGFglbFWk0/iHmdhdcJzTmtS6lXxc0kaNFx2PFgrQf5jKnx5sarF2tiXh9Tgx3pSt3pdK7YwkMA==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - dependencies: - '@babel/runtime': 7.23.4 - '@restart/context': 2.1.4(react@18.2.0) - '@restart/hooks': 0.4.11(react@18.2.0) - '@types/invariant': 2.2.37 - '@types/prop-types': 15.7.11 - '@types/react': 18.2.38 - '@types/react-transition-group': 4.4.9 - '@types/warning': 3.0.3 - classnames: 2.3.2 - dom-helpers: 5.2.1 - invariant: 2.2.4 - prop-types: 15.8.1 - prop-types-extra: 1.1.1(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-overlays: 5.2.1(react-dom@18.2.0)(react@18.2.0) - react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) - uncontrollable: 7.2.1(react@18.2.0) - warning: 4.0.3 - dev: false - /react-bootstrap@1.6.8(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yD6uN78XlFOkETQp6GRuVe0s5509x3XYx8PfPbirwFTYCj5/RfmSs9YZGCwkUrhZNFzj7tZPdpb+3k50mK1E4g==} peerDependencies: @@ -20626,7 +17721,7 @@ packages: dnd-core: 16.0.1 dev: false - /react-dnd@16.0.1(@types/node@18.18.13)(@types/react@18.2.39)(react@18.2.0): + /react-dnd@16.0.1(@types/node@18.19.24)(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q==} peerDependencies: '@types/hoist-non-react-statics': '>= 3.3.1' @@ -20643,32 +17738,32 @@ packages: dependencies: '@react-dnd/invariant': 4.0.2 '@react-dnd/shallowequal': 4.0.2 - '@types/node': 18.18.13 - '@types/react': 18.2.39 + '@types/node': 18.19.24 + '@types/react': 18.2.65 dnd-core: 16.0.1 fast-deep-equal: 3.1.3 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false - /react-docgen-typescript@2.2.2(typescript@5.3.2): + /react-docgen-typescript@2.2.2(typescript@5.4.2): resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} peerDependencies: typescript: '>= 4.3.x' dependencies: - typescript: 5.3.2 + typescript: 5.4.2 dev: true - /react-docgen@6.0.4: - resolution: {integrity: sha512-gF+p+1ZwC2eO66bt763Tepmh5q9kDiFIrqW3YjUV/a+L96h0m5+/wSFQoOHL2cffyrPMZMxP03IgbggJ11QbOw==} - engines: {node: '>=14.18.0'} + /react-docgen@7.0.3: + resolution: {integrity: sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==} + engines: {node: '>=16.14.0'} dependencies: - '@babel/core': 7.23.3 - '@babel/traverse': 7.23.4 - '@babel/types': 7.23.4 + '@babel/core': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.4 - '@types/doctrine': 0.0.6 + '@types/babel__traverse': 7.20.5 + '@types/doctrine': 0.0.9 '@types/resolve': 1.20.6 doctrine: 3.0.0 resolve: 1.22.8 @@ -20719,8 +17814,8 @@ packages: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} dev: false - /react-focus-lock@2.9.6(@types/react@18.2.38)(react@18.2.0): - resolution: {integrity: sha512-B7gYnCjHNrNYwY2juS71dHbf0+UpXXojt02svxybj8N5bxceAkzPChKEncHuratjUHkIFNCn06k2qj1DRlzTug==} + /react-focus-lock@2.11.2(@types/react@18.2.65)(react@18.2.0): + resolution: {integrity: sha512-DDTbEiov0+RthESPVSTIdAWPPKic+op3sCcP+icbMRobvQNt7LuAlJ3KoarqQv5sCgKArru3kXmlmFTa27/CdQ==} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -20729,17 +17824,17 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.0 - '@types/react': 18.2.38 - focus-lock: 1.0.0 + '@types/react': 18.2.65 + focus-lock: 1.3.4 prop-types: 15.8.1 react: 18.2.0 react-clientside-effect: 1.2.6(react@18.2.0) - use-callback-ref: 1.3.0(@types/react@18.2.38)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.38)(react@18.2.0) + use-callback-ref: 1.3.1(@types/react@18.2.65)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.65)(react@18.2.0) dev: false - /react-focus-on@3.9.1(@types/react@18.2.38)(react@18.2.0): - resolution: {integrity: sha512-IYo2j4mgNpZEJNv+/XzZs3S3xhJbR+AFop092h4OMW7sbFpIMVWxp/Z61V/gfpsgOi7VnoSFXP2bfOWWkjjtOw==} + /react-focus-on@3.9.2(@types/react@18.2.65)(react@18.2.0): + resolution: {integrity: sha512-3UZ9PjA+pe8ZK3B+rz7zcgJUIRJVzJEddYe6R5WVUAsSXW8awHw9nXJqK0UU5MenGEUh/tMUBWMqN633+d2eCA==} engines: {node: '>=8.5.0'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -20748,15 +17843,15 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.65 aria-hidden: 1.2.3 react: 18.2.0 - react-focus-lock: 2.9.6(@types/react@18.2.38)(react@18.2.0) - react-remove-scroll: 2.5.7(@types/react@18.2.38)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.38)(react@18.2.0) + react-focus-lock: 2.11.2(@types/react@18.2.65)(react@18.2.0) + react-remove-scroll: 2.5.7(@types/react@18.2.65)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.65)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.2.38)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.38)(react@18.2.0) + use-callback-ref: 1.3.1(@types/react@18.2.65)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.65)(react@18.2.0) dev: false /react-full-screen@0.2.5(prop-types@15.8.1)(react@18.2.0): @@ -20765,7 +17860,7 @@ packages: prop-types: ^15.5 react: ^15.6 || ^16 dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.65 fscreen: 1.2.0 prop-types: 15.8.1 react: 18.2.0 @@ -20815,7 +17910,7 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.0 html-parse-stringify: 3.0.1 i18next: 23.10.1 react: 18.2.0 @@ -20869,7 +17964,7 @@ packages: react-transition-group: 2.9.0(react-dom@18.2.0)(react@18.2.0) dev: false - /react-images@1.1.7(@types/react@18.2.38)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): + /react-images@1.1.7(@types/react@18.2.65)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-9paR4bdP/SPTbJ/8cLa6+7+pcq8PGN4/8UjTfztQKBRzGxH0BtHrB7oj/7As2RmYMkOsVIMNfDaWzZZK4faIRA==} peerDependencies: prop-types: ^15.7.2 @@ -20884,7 +17979,7 @@ packages: raf-schd: 2.1.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-focus-on: 3.9.1(@types/react@18.2.38)(react@18.2.0) + react-focus-on: 3.9.2(@types/react@18.2.65)(react@18.2.0) react-full-screen: 0.2.5(prop-types@15.8.1)(react@18.2.0) react-transition-group: 2.9.0(react-dom@18.2.0)(react@18.2.0) react-view-pager: 0.6.0(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) @@ -20903,14 +17998,6 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /react-inspector@6.0.2(react@18.2.0): - resolution: {integrity: sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==} - peerDependencies: - react: ^16.8.4 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - dev: true - /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -20979,8 +18066,8 @@ packages: warning: 4.0.3 dev: false - /react-pdf@7.5.1(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-NVno97L3wfX3RLGB3C+QtroOiQrgCKPHLMFKMSQaRqDlH3gkq2CB2NyXJ+IDQNLrT/gSMPPgtZQL8cOUySc/3w==} + /react-pdf@7.7.1(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cbbf/PuRtGcPPw+HLhMI1f6NSka8OJgg+j/yPWTe95Owf0fK6gmVY7OXpTxMeh92O3T3K3EzfE0ML0eXPGwR5g==} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -20989,24 +18076,25 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.39 - clsx: 2.0.0 + '@types/react': 18.2.65 + clsx: 2.1.0 + dequal: 2.0.3 make-cancellable-promise: 1.3.2 make-event-props: 1.6.2 - merge-refs: 1.2.2(@types/react@18.2.39) + merge-refs: 1.2.2(@types/react@18.2.65) pdfjs-dist: 3.11.174 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - tiny-invariant: 1.3.1 - tiny-warning: 1.0.3 + tiny-invariant: 1.3.3 + warning: 4.0.3 transitivePeerDependencies: - encoding - supports-color dev: false - /react-player@2.13.0(react@18.2.0): - resolution: {integrity: sha512-gkY7ZdbVFztlKFFhCPcnDrFQm+L399b8fhWsKatZ+b2wpKJwfUHBXQFMRxqYQGT0ic1/wQ7D7EZEWy7ZBqk2pw==} + /react-player@2.15.1(react@18.2.0): + resolution: {integrity: sha512-ni1XFuYZuhIKKdeFII+KRLmIPcvCYlyXvtSMhNOgssdfnSovmakBtBTW2bxowPvmpKy5BTR4jC4CF79ucgHT+g==} peerDependencies: react: '>=16.6.0' dependencies: @@ -21032,27 +18120,6 @@ packages: resolution: {integrity: sha512-1tKOwxFn3dXVomH6pM9IkLkq2Y8oh+fh/lYW3MJ/B03URswUTqttgckOlbxY2XHF3vPG6uanSc4dVsLW/wk3wQ==} dev: false - /react-redux@9.0.4(react@18.2.0)(redux@4.2.1): - resolution: {integrity: sha512-9J1xh8sWO0vYq2sCxK2My/QO7MzUMRi3rpiILP/+tDr8krBHixC6JMM17fMK88+Oh3e4Ae6/sHIhNBgkUivwFA==} - peerDependencies: - '@types/react': ^18.2.25 - react: ^18.0 - react-native: '>=0.69' - redux: ^5.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - react-native: - optional: true - redux: - optional: true - dependencies: - '@types/use-sync-external-store': 0.0.3 - react: 18.2.0 - redux: 4.2.1 - use-sync-external-store: 1.2.0(react@18.2.0) - dev: false - /react-redux@9.1.0(@types/react@18.2.65)(react@18.2.0)(redux@4.2.1): resolution: {integrity: sha512-6qoDzIO+gbrza8h3hjMA9aq4nwVFCKFtY2iLxCtVT38Swyy2C/dJCGBXHeHLtx6qlg/8qzc2MrhOeduf5K32wQ==} peerDependencies: @@ -21080,8 +18147,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-remove-scroll-bar@2.3.4(@types/react@18.2.38)(react@18.2.0): - resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + /react-remove-scroll-bar@2.3.5(@types/react@18.2.65)(react@18.2.0): + resolution: {integrity: sha512-3cqjOqg6s0XbOjWvmasmqHch+RLxIEk2r/70rzGXuz3iIGQsQheEQyqYCBb5EECoD01Vo2SIbDqW4paLeLTASw==} engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -21090,12 +18157,12 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.65 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.38)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.65)(react@18.2.0) tslib: 2.6.2 - /react-remove-scroll@2.5.5(@types/react@18.2.38)(react@18.2.0): + /react-remove-scroll@2.5.5(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} peerDependencies: @@ -21105,16 +18172,16 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.65 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.38)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.38)(react@18.2.0) + react-remove-scroll-bar: 2.3.5(@types/react@18.2.65)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.65)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.2.38)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.38)(react@18.2.0) + use-callback-ref: 1.3.1(@types/react@18.2.65)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.65)(react@18.2.0) dev: true - /react-remove-scroll@2.5.7(@types/react@18.2.38)(react@18.2.0): + /react-remove-scroll@2.5.7(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} engines: {node: '>=10'} peerDependencies: @@ -21124,13 +18191,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.65 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.38)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.38)(react@18.2.0) + react-remove-scroll-bar: 2.3.5(@types/react@18.2.65)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.65)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.2.38)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.38)(react@18.2.0) + use-callback-ref: 1.3.1(@types/react@18.2.65)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.65)(react@18.2.0) dev: false /react-router-dom@6.18.0(react-dom@18.2.0)(react@18.2.0): @@ -21164,7 +18231,7 @@ packages: - react-dom dev: false - /react-select@5.8.0(@types/react@18.2.39)(react-dom@18.2.0)(react@18.2.0): + /react-select@5.8.0(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -21172,15 +18239,15 @@ packages: dependencies: '@babel/runtime': 7.24.0 '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.1(@types/react@18.2.39)(react@18.2.0) - '@floating-ui/dom': 1.5.3 + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@floating-ui/dom': 1.6.3 '@types/react-transition-group': 4.4.10 memoize-one: 6.0.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) - use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.39)(react@18.2.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.65)(react@18.2.0) transitivePeerDependencies: - '@types/react' @@ -21189,7 +18256,7 @@ packages: engines: {node: '>=0.12.0'} dev: false - /react-style-singleton@2.2.1(@types/react@18.2.38)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -21199,7 +18266,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.65 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 @@ -21244,7 +18311,7 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.0 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -21269,24 +18336,40 @@ packages: tabbable: 1.1.2 dev: false + /react-virtualized@9.22.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-YqQMRzlVANBv1L/7r63OHa2b0ZsAaDp1UhVNEdUaXI8A5u6hTpA5NYtUueLH2rFuY/27mTGIBl7ZhqFKzw18YQ==} + peerDependencies: + react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 + react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.24.0 + clsx: 1.2.1 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-lifecycles-compat: 3.0.4 + dev: false + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - /reactflow@11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Q616fElAc5/N37tMwjuRkkgm/VgmnLLTNNCj61z5mvJxae+/VXZQMfot1K6a5LLz9G3SVKqU97PMb9Ga1PRXew==} + /reactflow@11.10.4(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0CApYhtYicXEDg/x2kvUHiUk26Qur8lAtTtiSlptNKuyEuGti6P1y5cS32YGaUoDMoCqkm/m+jcKkfMOvSCVRA==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/background': 11.3.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/controls': 11.2.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/core': 11.10.1(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/minimap': 11.7.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/node-resizer': 2.2.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/node-toolbar': 1.3.6(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/background': 11.3.9(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/controls': 11.2.9(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.4(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/minimap': 11.7.9(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/node-resizer': 2.2.9(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/node-toolbar': 1.3.9(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -21405,24 +18488,14 @@ packages: util.promisify: 1.1.2 dev: true - /recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} - engines: {node: '>= 4'} - dependencies: - ast-types: 0.15.2 - esprima: 4.0.1 - source-map: 0.6.1 - tslib: 2.6.2 - dev: true - - /recast@0.23.4: - resolution: {integrity: sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==} + /recast@0.23.6: + resolution: {integrity: sha512-9FHoNjX1yjuesMwuthAmPKabxYQdOgihFYmT5ebXfYGBcnqXZf3WOVz+5foEZ8Y83P4ZY6yQD5GMmtV+pgCCAQ==} engines: {node: '>= 4'} dependencies: - assert: 2.1.0 ast-types: 0.16.1 esprima: 4.0.1 source-map: 0.6.1 + tiny-invariant: 1.3.3 tslib: 2.6.2 dev: true @@ -21455,31 +18528,6 @@ packages: esprima: 4.0.1 dev: true - /redux-form@8.3.10(react-redux@9.0.4)(react@18.2.0)(redux@4.2.1): - resolution: {integrity: sha512-Eeog8dJYUxCSZI/oBoy7VkprvMjj1lpUnHa3LwjVNZvYDNeiRZMoZoaAT+6nlK2YQ4aiBopKUMiLe4ihUOHCGg==} - engines: {node: '>=8.10'} - peerDependencies: - immutable: ^3.8.2 || ^4.0.0 - react: ^16.4.2 || ^17.0.0 || ^18.0.0 - react-redux: ^6.0.1 || ^7.0.0 || ^8.0.0 - redux: ^3.7.2 || ^4.0.0 - peerDependenciesMeta: - immutable: - optional: true - dependencies: - '@babel/runtime': 7.23.6 - es6-error: 4.1.1 - hoist-non-react-statics: 3.3.2 - invariant: 2.2.4 - is-promise: 2.2.2 - lodash: 4.17.21 - prop-types: 15.8.1 - react: 18.2.0 - react-is: 16.13.1 - react-redux: 9.0.4(react@18.2.0)(redux@4.2.1) - redux: 4.2.1 - dev: false - /redux-form@8.3.10(react-redux@9.1.0)(react@18.2.0)(redux@4.2.1): resolution: {integrity: sha512-Eeog8dJYUxCSZI/oBoy7VkprvMjj1lpUnHa3LwjVNZvYDNeiRZMoZoaAT+6nlK2YQ4aiBopKUMiLe4ihUOHCGg==} engines: {node: '>=8.10'} @@ -21492,7 +18540,7 @@ packages: immutable: optional: true dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.0 es6-error: 4.1.1 hoist-non-react-statics: 3.3.2 invariant: 2.2.4 @@ -21546,9 +18594,6 @@ packages: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -21573,13 +18618,14 @@ packages: safe-regex: 1.1.0 dev: true - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - set-function-name: 2.0.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 dev: true /regexpu-core@5.3.2: @@ -21988,7 +19034,7 @@ packages: source-map-resolve: 0.5.3 dev: true - /rollup-plugin-typescript2@0.18.1(rollup@0.67.4)(typescript@5.3.2): + /rollup-plugin-typescript2@0.18.1(rollup@0.67.4)(typescript@5.4.2): resolution: {integrity: sha512-aR2m5NCCAUV/KpcKgCWX6Giy8rTko9z92b5t0NX9eZyjOftCvcdDFa1C9Ze/9yp590hnRymr5hG0O9SAXi1oUg==} peerDependencies: rollup: '>=0.50.0' @@ -21999,7 +19045,7 @@ packages: rollup: 0.67.4 rollup-pluginutils: 2.3.3 tslib: 1.9.3 - typescript: 5.3.2 + typescript: 5.4.2 dev: true /rollup-pluginutils@2.3.3: @@ -22053,25 +19099,6 @@ packages: '@rollup/rollup-win32-x64-msvc': 4.13.0 fsevents: 2.3.3 - /rollup@4.6.0: - resolution: {integrity: sha512-R8i5Her4oO1LiMQ3jKf7MUglYV/mhQ5g5OKeld5CnkmPdIGo79FDDQYqPhq/PCVuTQVuxsWgIbDy9F+zdHn80w==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.6.0 - '@rollup/rollup-android-arm64': 4.6.0 - '@rollup/rollup-darwin-arm64': 4.6.0 - '@rollup/rollup-darwin-x64': 4.6.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.6.0 - '@rollup/rollup-linux-arm64-gnu': 4.6.0 - '@rollup/rollup-linux-arm64-musl': 4.6.0 - '@rollup/rollup-linux-x64-gnu': 4.6.0 - '@rollup/rollup-linux-x64-musl': 4.6.0 - '@rollup/rollup-win32-arm64-msvc': 4.6.0 - '@rollup/rollup-win32-ia32-msvc': 4.6.0 - '@rollup/rollup-win32-x64-msvc': 4.6.0 - fsevents: 2.3.3 - /rsvp@3.6.2: resolution: {integrity: sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==} engines: {node: 0.12.* || 4.* || 6.* || >= 7.*} @@ -22111,12 +19138,12 @@ packages: tslib: 1.14.1 dev: true - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 dev: true @@ -22133,11 +19160,12 @@ packages: rust-result: 1.0.0 dev: false - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 is-regex: 1.1.4 dev: true @@ -22199,7 +19227,7 @@ packages: webpack: 5.90.3 dev: true - /sass-loader@8.0.2(sass@1.69.5)(webpack@5.90.3): + /sass-loader@8.0.2(sass@1.71.1)(webpack@5.90.3): resolution: {integrity: sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==} engines: {node: '>= 8.9.0'} peerDependencies: @@ -22218,21 +19246,12 @@ packages: clone-deep: 4.0.1 loader-utils: 1.4.2 neo-async: 2.6.2 - sass: 1.69.5 + sass: 1.71.1 schema-utils: 2.7.1 semver: 6.3.1 webpack: 5.90.3 dev: false - /sass@1.69.5: - resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - chokidar: 3.5.3 - immutable: 4.3.4 - source-map-js: 1.0.2 - /sass@1.71.1: resolution: {integrity: sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==} engines: {node: '>=14.0.0'} @@ -22413,15 +19432,6 @@ packages: /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - /set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.1 - get-intrinsic: 1.2.2 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - /set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -22433,13 +19443,14 @@ packages: gopd: 1.0.1 has-property-descriptors: 1.0.2 - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.4 + es-errors: 1.3.0 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 dev: true /set-getter@0.1.1: @@ -22502,7 +19513,7 @@ packages: engines: {node: '>=0.11.0'} hasBin: true dependencies: - glob: 7.2.3 + glob: 7.1.3 interpret: 1.4.0 rechoir: 0.6.2 dev: true @@ -22521,13 +19532,6 @@ packages: resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} dev: true - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - object-inspect: 1.13.1 - /side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -22536,7 +19540,6 @@ packages: es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 - dev: false /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -22589,8 +19592,7 @@ packages: resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} engines: {node: '>=10'} dependencies: - semver: 7.5.4 - dev: true + semver: 7.6.0 /sisteransi@0.1.1: resolution: {integrity: sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==} @@ -22750,22 +19752,22 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.16 + spdx-license-ids: 3.0.17 dev: true - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} dev: true /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.16 + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.17 dev: true - /spdx-license-ids@3.0.16: - resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + /spdx-license-ids@3.0.17: + resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} dev: true /split-on-first@1.1.0: @@ -22875,18 +19877,18 @@ packages: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} dependencies: - internal-slot: 1.0.6 + internal-slot: 1.0.7 dev: true - /store2@2.14.2: - resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} + /store2@2.14.3: + resolution: {integrity: sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==} dev: true - /storybook@7.5.3: - resolution: {integrity: sha512-lkn9hcedNmSNCzbDIrky2LpZJqlpS7Fy1KpGBZmLY34g5Mb0+KnXaUqzY0dxsd7aFm8Oa7Du/emceMYNNL4DMA==} + /storybook@7.6.17: + resolution: {integrity: sha512-8+EIo91bwmeFWPg1eysrxXlhIYv3OsXrznTr4+4Eq0NikqAoq6oBhtlN5K2RGS2lBVF537eN+9jTCNbR+WrzDA==} hasBin: true dependencies: - '@storybook/cli': 7.5.3 + '@storybook/cli': 7.6.17 transitivePeerDependencies: - bufferutil - encoding @@ -22901,8 +19903,8 @@ packages: readable-stream: 2.3.8 dev: true - /stream-shift@1.0.1: - resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + /stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} dev: true /strict-uri-encode@2.0.0: @@ -22983,25 +19985,25 @@ packages: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.5 dev: true /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.5 dev: true /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.5 dev: true /string_decoder@0.10.31: @@ -23084,6 +20086,11 @@ packages: engines: {node: '>=6'} dev: true + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + /strip-indent@2.0.0: resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==} engines: {node: '>=4'} @@ -23126,31 +20133,31 @@ packages: inline-style-parser: 0.1.1 dev: false - /styled-components@6.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-cpZZP5RrKRIClBW5Eby4JM1wElLVP4NQrJbJ0h10TidTyJf4SIIwa3zLXOoPb4gJi8MsJ8mjq5mu2IrEhZIAcQ==} + /styled-components@6.1.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw==} engines: {node: '>= 16'} peerDependencies: react: '>= 16.8.0' react-dom: '>= 16.8.0' dependencies: '@emotion/is-prop-valid': 1.2.1 - '@emotion/unitless': 0.8.1 - '@types/stylis': 4.2.4 + '@emotion/unitless': 0.8.0 + '@types/stylis': 4.2.0 css-to-react-native: 3.2.0 csstype: 3.1.2 - postcss: 8.4.32 + postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) shallowequal: 1.1.0 - stylis: 4.3.0 - tslib: 2.6.2 + stylis: 4.3.1 + tslib: 2.5.0 dev: false /stylis@4.2.0: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - /stylis@4.3.0: - resolution: {integrity: sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==} + /stylis@4.3.1: + resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} dev: false /success-symbol@0.1.0: @@ -23433,12 +20440,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /tiny-invariant@1.3.1: - resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} - /tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - dev: true /tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} @@ -23524,8 +20527,8 @@ packages: through2: 2.0.5 dev: true - /tocbot@4.23.0: - resolution: {integrity: sha512-5DWuSZXsqG894mkGb8ZsQt9myyQyVxE50AiGRZ0obV0BVUTVkaZmc9jbgpknaAAPUm4FIrzGkEseD6FuQJYJDQ==} + /tocbot@4.25.0: + resolution: {integrity: sha512-kE5wyCQJ40hqUaRVkyQ4z5+4juzYsv/eK+aqD97N62YH0TxFhzJvo22RUQQZdO3YnXAk42ZOfOpjVdy+Z0YokA==} dev: true /toidentifier@1.0.1: @@ -23541,7 +20544,6 @@ packages: hasBin: true dependencies: nopt: 1.0.10 - dev: true /tough-cookie@2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} @@ -23587,8 +20589,9 @@ packages: punycode: 2.3.1 dev: false - /traverse@0.6.7: - resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==} + /traverse@0.6.8: + resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} + engines: {node: '>= 0.4'} dev: true /travis-deploy-once@5.0.11: @@ -23597,10 +20600,10 @@ packages: deprecated: We recommend to use Travis Build Stages instead hasBin: true dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.24.0 '@babel/polyfill': 7.12.1 - '@babel/preset-env': 7.23.3(@babel/core@7.23.3) - '@babel/register': 7.22.15(@babel/core@7.23.3) + '@babel/preset-env': 7.24.0(@babel/core@7.24.0) + '@babel/register': 7.23.7(@babel/core@7.24.0) chalk: 2.4.2 execa: 1.0.0 got: 9.6.0 @@ -23638,15 +20641,6 @@ packages: engines: {node: '>= 14.0.0'} dev: false - /ts-api-utils@1.0.3(typescript@5.3.2): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.3.2 - dev: true - /ts-api-utils@1.3.0(typescript@5.4.2): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -23680,8 +20674,8 @@ packages: yargs-parser: 10.1.0 dev: true - /ts-node@10.9.1(@types/node@10.17.60)(typescript@5.3.2): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + /ts-node@10.9.2(@types/node@10.17.60)(typescript@5.4.2): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -23700,19 +20694,19 @@ packages: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 10.17.60 - acorn: 8.11.2 - acorn-walk: 8.3.0 + acorn: 8.11.3 + acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.2 + typescript: 5.4.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /ts-node@10.9.1(@types/node@18.18.13)(typescript@5.3.2): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + /ts-node@10.9.2(@types/node@18.19.24)(typescript@5.4.2): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -23730,14 +20724,14 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.18.13 - acorn: 8.11.2 - acorn-walk: 8.3.0 + '@types/node': 18.19.24 + acorn: 8.11.3 + acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.2 + typescript: 5.4.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -23769,6 +20763,10 @@ packages: resolution: {integrity: sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==} dev: true + /tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + dev: false + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -23778,17 +20776,17 @@ packages: hasBin: true dev: true - /tslint-config-standard@8.0.1(tslint@5.20.1)(typescript@5.3.2): + /tslint-config-standard@8.0.1(tslint@5.20.1)(typescript@5.4.2): resolution: {integrity: sha512-OWG+NblgjQlVuUS/Dmq3ax2v5QDZwRx4L0kEuDi7qFY9UI6RJhhNfoCV1qI4el8Fw1c5a5BTrjQJP0/jhGXY/Q==} deprecated: 'TSLint is deprecated, please move to ESLint: https://github.com/blakeembrey/tslint-config-standard/issues/61' dependencies: - tslint-eslint-rules: 5.4.0(tslint@5.20.1)(typescript@5.3.2) + tslint-eslint-rules: 5.4.0(tslint@5.20.1)(typescript@5.4.2) transitivePeerDependencies: - tslint - typescript dev: true - /tslint-eslint-rules@5.4.0(tslint@5.20.1)(typescript@5.3.2): + /tslint-eslint-rules@5.4.0(tslint@5.20.1)(typescript@5.4.2): resolution: {integrity: sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w==} peerDependencies: tslint: ^5.0.0 @@ -23796,19 +20794,19 @@ packages: dependencies: doctrine: 0.7.2 tslib: 1.9.0 - tslint: 5.20.1(typescript@5.3.2) - tsutils: 3.21.0(typescript@5.3.2) - typescript: 5.3.2 + tslint: 5.20.1(typescript@5.4.2) + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 dev: true - /tslint@5.20.1(typescript@5.3.2): + /tslint@5.20.1(typescript@5.4.2): resolution: {integrity: sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==} engines: {node: '>=4.8.0'} hasBin: true peerDependencies: typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' dependencies: - '@babel/code-frame': 7.23.4 + '@babel/code-frame': 7.23.5 builtin-modules: 1.1.1 chalk: 2.4.2 commander: 2.20.3 @@ -23820,27 +20818,27 @@ packages: resolve: 1.22.8 semver: 5.7.2 tslib: 1.14.1 - tsutils: 2.29.0(typescript@5.3.2) - typescript: 5.3.2 + tsutils: 2.29.0(typescript@5.4.2) + typescript: 5.4.2 dev: true - /tsutils@2.29.0(typescript@5.3.2): + /tsutils@2.29.0(typescript@5.4.2): resolution: {integrity: sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==} peerDependencies: typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' dependencies: tslib: 1.14.1 - typescript: 5.3.2 + typescript: 5.4.2 dev: true - /tsutils@3.21.0(typescript@5.3.2): + /tsutils@3.21.0(typescript@5.4.2): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: - tslib: 1.14.1 - typescript: 5.3.2 + tslib: 1.9.0 + typescript: 5.4.2 dev: true /tui-code-snippet@2.3.3: @@ -24000,42 +20998,48 @@ packages: media-typer: 0.3.0 mime-types: 2.1.35 - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 dev: true - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 dev: true - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 dev: true - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + /typed-array-length@1.0.5: + resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 dev: true /typedarray@0.0.6: @@ -24055,7 +21059,7 @@ packages: '@types/fs-extra': 5.1.0 '@types/handlebars': 4.1.0 '@types/highlight.js': 9.12.4 - '@types/lodash': 4.14.202 + '@types/lodash': 4.17.0 '@types/marked': 0.4.2 '@types/minimatch': 3.0.3 '@types/shelljs': 0.8.15 @@ -24084,16 +21088,11 @@ packages: hasBin: true dev: true - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} - hasBin: true - dev: true - - /typescript@5.3.2: - resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} hasBin: true + dev: true /typescript@5.4.2: resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} @@ -24104,6 +21103,10 @@ packages: resolution: {integrity: sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==} dev: false + /ufo@1.4.0: + resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} + dev: true + /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} @@ -24115,7 +21118,7 @@ packages: /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -24140,16 +21143,15 @@ packages: /undefsafe@2.0.5: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} - dev: true /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /undici@5.28.2: - resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} + /undici@5.28.3: + resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} engines: {node: '>=14.0'} dependencies: - '@fastify/busboy': 2.1.0 + '@fastify/busboy': 2.1.1 dev: true /unicode-canonical-property-names-ecmascript@2.0.0: @@ -24265,11 +21267,12 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - /unplugin@1.5.1: - resolution: {integrity: sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==} + /unplugin@1.10.0: + resolution: {integrity: sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg==} + engines: {node: '>=14.0.0'} dependencies: - acorn: 8.11.2 - chokidar: 3.5.3 + acorn: 8.11.3 + chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.1 dev: true @@ -24292,16 +21295,6 @@ packages: engines: {node: '>=4'} dev: true - /update-browserslist-db@1.0.13(browserslist@4.22.1): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.22.1 - escalade: 3.1.1 - picocolors: 1.0.0 - /update-browserslist-db@1.0.13(browserslist@4.23.0): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true @@ -24309,7 +21302,7 @@ packages: browserslist: '>= 4.21.0' dependencies: browserslist: 4.23.0 - escalade: 3.1.1 + escalade: 3.1.2 picocolors: 1.0.0 /update-notifier@2.5.0: @@ -24375,8 +21368,8 @@ packages: qs: 6.12.0 dev: false - /use-callback-ref@1.3.0(@types/react@18.2.38)(react@18.2.0): - resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + /use-callback-ref@1.3.1(@types/react@18.2.65)(react@18.2.0): + resolution: {integrity: sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==} engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -24385,11 +21378,11 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.65 react: 18.2.0 tslib: 2.6.2 - /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.39)(react@18.2.0): + /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: '@types/react': '*' @@ -24398,7 +21391,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.39 + '@types/react': 18.2.65 react: 18.2.0 /use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0): @@ -24412,7 +21405,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /use-sidecar@1.1.2(@types/react@18.2.38)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -24422,7 +21415,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.65 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 @@ -24446,13 +21439,13 @@ packages: /util.promisify@1.1.2: resolution: {integrity: sha512-PBdZ03m1kBnQ5cjjO0ZvJMJS+QsbyIcFwi4hY4U76OQsCO9JrOYjbCFgIF76ccFg9xnJo7ZHPkqyj1GqmdS7MA==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 for-each: 0.3.3 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 object.getownpropertydescriptors: 2.1.7 - safe-array-concat: 1.0.1 + safe-array-concat: 1.1.2 dev: true /util@0.12.5: @@ -24461,8 +21454,8 @@ packages: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.12 - which-typed-array: 1.1.13 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} @@ -24515,7 +21508,7 @@ packages: /video.js@7.21.5: resolution: {integrity: sha512-WRq86tXZKrThA9mK+IR+v4tIQVVvnb5LhvL71fD2AX7TxVOPdaeK1X/wyuUruBqWaOG3w2sZXoMY6HF2Jlo9qA==} dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.24.0 '@videojs/http-streaming': 2.16.2(video.js@7.21.5) '@videojs/vhs-utils': 3.0.5 '@videojs/xhr': 2.6.0 @@ -24592,165 +21585,6 @@ packages: replace-ext: 1.0.1 dev: true - /vite-plugin-checker@0.6.2(eslint@8.54.0)(typescript@5.3.2)(vite@5.0.2): - resolution: {integrity: sha512-YvvvQ+IjY09BX7Ab+1pjxkELQsBd4rPhWNw8WLBeFVxu/E7O+n6VYAqNsKdK/a2luFlX/sMpoWdGFfg4HvwdJQ==} - engines: {node: '>=14.16'} - peerDependencies: - eslint: '>=7' - meow: ^9.0.0 - optionator: ^0.9.1 - stylelint: '>=13' - typescript: '*' - vite: '>=2.0.0' - vls: '*' - vti: '*' - vue-tsc: '>=1.3.9' - peerDependenciesMeta: - eslint: - optional: true - meow: - optional: true - optionator: - optional: true - stylelint: - optional: true - typescript: - optional: true - vls: - optional: true - vti: - optional: true - vue-tsc: - optional: true - dependencies: - '@babel/code-frame': 7.23.4 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - chokidar: 3.5.3 - commander: 8.3.0 - eslint: 8.54.0 - fast-glob: 3.3.2 - fs-extra: 11.1.1 - lodash.debounce: 4.0.8 - lodash.pick: 4.4.0 - npm-run-path: 4.0.1 - semver: 7.5.4 - strip-ansi: 6.0.1 - tiny-invariant: 1.3.1 - typescript: 5.3.2 - vite: 5.0.2(@types/node@18.18.13)(sass@1.69.5) - vscode-languageclient: 7.0.0 - vscode-languageserver: 7.0.0 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - dev: true - - /vite-plugin-checker@0.6.2(eslint@8.54.0)(typescript@5.3.2)(vite@5.0.7): - resolution: {integrity: sha512-YvvvQ+IjY09BX7Ab+1pjxkELQsBd4rPhWNw8WLBeFVxu/E7O+n6VYAqNsKdK/a2luFlX/sMpoWdGFfg4HvwdJQ==} - engines: {node: '>=14.16'} - peerDependencies: - eslint: '>=7' - meow: ^9.0.0 - optionator: ^0.9.1 - stylelint: '>=13' - typescript: '*' - vite: '>=2.0.0' - vls: '*' - vti: '*' - vue-tsc: '>=1.3.9' - peerDependenciesMeta: - eslint: - optional: true - meow: - optional: true - optionator: - optional: true - stylelint: - optional: true - typescript: - optional: true - vls: - optional: true - vti: - optional: true - vue-tsc: - optional: true - dependencies: - '@babel/code-frame': 7.23.4 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - chokidar: 3.5.3 - commander: 8.3.0 - eslint: 8.54.0 - fast-glob: 3.3.2 - fs-extra: 11.1.1 - lodash.debounce: 4.0.8 - lodash.pick: 4.4.0 - npm-run-path: 4.0.1 - semver: 7.5.4 - strip-ansi: 6.0.1 - tiny-invariant: 1.3.1 - typescript: 5.3.2 - vite: 5.0.7(@types/node@18.18.13) - vscode-languageclient: 7.0.0 - vscode-languageserver: 7.0.0 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - dev: true - - /vite-plugin-checker@0.6.2(eslint@8.57.0)(typescript@5.3.2)(vite@5.0.2): - resolution: {integrity: sha512-YvvvQ+IjY09BX7Ab+1pjxkELQsBd4rPhWNw8WLBeFVxu/E7O+n6VYAqNsKdK/a2luFlX/sMpoWdGFfg4HvwdJQ==} - engines: {node: '>=14.16'} - peerDependencies: - eslint: '>=7' - meow: ^9.0.0 - optionator: ^0.9.1 - stylelint: '>=13' - typescript: '*' - vite: '>=2.0.0' - vls: '*' - vti: '*' - vue-tsc: '>=1.3.9' - peerDependenciesMeta: - eslint: - optional: true - meow: - optional: true - optionator: - optional: true - stylelint: - optional: true - typescript: - optional: true - vls: - optional: true - vti: - optional: true - vue-tsc: - optional: true - dependencies: - '@babel/code-frame': 7.23.4 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - chokidar: 3.5.3 - commander: 8.3.0 - eslint: 8.57.0 - fast-glob: 3.3.2 - fs-extra: 11.1.1 - lodash.debounce: 4.0.8 - lodash.pick: 4.4.0 - npm-run-path: 4.0.1 - semver: 7.5.4 - strip-ansi: 6.0.1 - tiny-invariant: 1.3.1 - typescript: 5.3.2 - vite: 5.0.2(@types/node@18.18.13)(sass@1.69.5) - vscode-languageclient: 7.0.0 - vscode-languageserver: 7.0.0 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - dev: true - /vite-plugin-checker@0.6.4(eslint@8.57.0)(typescript@5.4.2)(vite@5.1.6): resolution: {integrity: sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA==} engines: {node: '>=14.16'} @@ -24795,15 +21629,15 @@ packages: strip-ansi: 6.0.1 tiny-invariant: 1.3.3 typescript: 5.4.2 - vite: 5.1.6(@types/node@18.19.23)(sass@1.71.1) + vite: 5.1.6(@types/node@18.19.24)(sass@1.71.1) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 dev: true - /vite-plugin-dts@3.6.3(@types/node@18.18.13)(typescript@5.3.2)(vite@5.0.2): - resolution: {integrity: sha512-NyRvgobl15rYj65coi/gH7UAEH+CpSjh539DbGb40DfOTZSvDLNYTzc8CK4460W+LqXuMK7+U3JAxRB3ksrNPw==} + /vite-plugin-dts@3.7.3(@types/node@18.19.24)(typescript@5.4.2)(vite@5.1.6): + resolution: {integrity: sha512-26eTlBYdpjRLWCsTJebM8vkCieE+p9gP3raf+ecDnzzK5E3FG6VE1wcy55OkRpfWWVlVvKkYFe6uvRHYWx7Nog==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -24812,21 +21646,21 @@ packages: vite: optional: true dependencies: - '@microsoft/api-extractor': 7.38.3(@types/node@18.18.13) - '@rollup/pluginutils': 5.0.5 - '@vue/language-core': 1.8.22(typescript@5.3.2) + '@microsoft/api-extractor': 7.39.0(@types/node@18.19.24) + '@rollup/pluginutils': 5.1.0 + '@vue/language-core': 1.8.27(typescript@5.4.2) debug: 4.3.4(supports-color@5.5.0) kolorist: 1.8.0 - typescript: 5.3.2 - vite: 5.0.2(@types/node@18.18.13)(sass@1.69.5) - vue-tsc: 1.8.22(typescript@5.3.2) + typescript: 5.4.2 + vite: 5.1.6(@types/node@18.19.24)(sass@1.71.1) + vue-tsc: 1.8.27(typescript@5.4.2) transitivePeerDependencies: - '@types/node' - rollup - supports-color dev: true - /vite-plugin-node@3.1.0(vite@5.0.7): + /vite-plugin-node@3.1.0(vite@5.1.6): resolution: {integrity: sha512-LN9byKedZaokEWcH+DTdeV7YLN34dWH7Em2ldHZ77oVGvC/uxHnK43AGPrV9+9CoOh1x9X3Yc55vW/OQYssFDQ==} peerDependencies: '@swc/core': ^1.2.153 @@ -24838,41 +21672,11 @@ packages: '@rollup/pluginutils': 4.2.1 chalk: 4.1.2 debug: 4.3.4(supports-color@5.5.0) - vite: 5.0.7(@types/node@18.18.13) - transitivePeerDependencies: - - supports-color - dev: true - - /vite-plugin-svgr@4.2.0(typescript@5.3.2)(vite@5.0.2): - resolution: {integrity: sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA==} - peerDependencies: - vite: ^2.6.0 || 3 || 4 || 5 - dependencies: - '@rollup/pluginutils': 5.1.0 - '@svgr/core': 8.1.0(typescript@5.3.2) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) - vite: 5.0.2(@types/node@18.18.13)(sass@1.69.5) + vite: 5.1.6(@types/node@18.19.24)(sass@1.71.1) transitivePeerDependencies: - - rollup - supports-color - - typescript dev: true - /vite-plugin-svgr@4.2.0(typescript@5.3.2)(vite@5.0.7): - resolution: {integrity: sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA==} - peerDependencies: - vite: ^2.6.0 || 3 || 4 || 5 - dependencies: - '@rollup/pluginutils': 5.0.5 - '@svgr/core': 8.1.0(typescript@5.3.2) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) - vite: 5.0.7(@types/node@18.18.13) - transitivePeerDependencies: - - rollup - - supports-color - - typescript - dev: false - /vite-plugin-svgr@4.2.0(typescript@5.4.2)(vite@5.1.6): resolution: {integrity: sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA==} peerDependencies: @@ -24881,86 +21685,13 @@ packages: '@rollup/pluginutils': 5.1.0 '@svgr/core': 8.1.0(typescript@5.4.2) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) - vite: 5.1.6(@types/node@18.19.23)(sass@1.71.1) + vite: 5.1.6(@types/node@18.19.24)(sass@1.71.1) transitivePeerDependencies: - rollup - supports-color - typescript - dev: false - - /vite@5.0.2(@types/node@18.18.13)(sass@1.69.5): - resolution: {integrity: sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.18.13 - esbuild: 0.19.8 - postcss: 8.4.31 - rollup: 4.6.0 - sass: 1.69.5 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite@5.0.7(@types/node@18.18.13): - resolution: {integrity: sha512-B4T4rJCDPihrQo2B+h1MbeGL/k/GMAHzhQ8S0LjQ142s6/+l3hHTT095ORvsshj4QCkoWu3Xtmob5mazvakaOw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.18.13 - esbuild: 0.19.8 - postcss: 8.4.32 - rollup: 4.6.0 - optionalDependencies: - fsevents: 2.3.3 - /vite@5.1.6(@types/node@18.19.23)(sass@1.71.1): + /vite@5.1.6(@types/node@18.19.24)(sass@1.71.1): resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -24988,7 +21719,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.19.23 + '@types/node': 18.19.24 esbuild: 0.19.12 postcss: 8.4.35 rollup: 4.13.0 @@ -25010,7 +21741,7 @@ packages: engines: {vscode: ^1.52.0} dependencies: minimatch: 3.1.2 - semver: 7.5.4 + semver: 7.6.0 vscode-languageserver-protocol: 3.16.0 dev: true @@ -25048,23 +21779,23 @@ packages: pbf: 3.2.1 dev: false - /vue-template-compiler@2.7.15: - resolution: {integrity: sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==} + /vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} dependencies: de-indent: 1.0.2 he: 1.2.0 dev: true - /vue-tsc@1.8.22(typescript@5.3.2): - resolution: {integrity: sha512-j9P4kHtW6eEE08aS5McFZE/ivmipXy0JzrnTgbomfABMaVKx37kNBw//irL3+LlE3kOo63XpnRigyPC3w7+z+A==} + /vue-tsc@1.8.27(typescript@5.4.2): + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} hasBin: true peerDependencies: typescript: '*' dependencies: - '@volar/typescript': 1.10.10 - '@vue/language-core': 1.8.22(typescript@5.3.2) - semver: 7.5.4 - typescript: 5.3.2 + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@5.4.2) + semver: 7.6.0 + typescript: 5.4.2 dev: true /w3c-hr-time@1.0.2: @@ -25116,8 +21847,8 @@ packages: minimist: 1.2.8 dev: true - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + /watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 @@ -25136,8 +21867,8 @@ packages: optionalDependencies: '@zxing/text-encoding': 0.9.0 - /web-streams-polyfill@3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + /web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} dev: true @@ -25177,9 +21908,9 @@ packages: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 acorn: 8.11.3 acorn-import-assertions: 1.9.0(acorn@8.11.3) browserslist: 4.23.0 @@ -25197,7 +21928,7 @@ packages: schema-utils: 3.3.0 tapable: 2.2.1 terser-webpack-plugin: 5.3.10(webpack@5.90.3) - watchpack: 2.4.0 + watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -25216,8 +21947,8 @@ packages: iconv-lite: 0.6.3 dev: false - /whatwg-fetch@3.6.19: - resolution: {integrity: sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==} + /whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} /whatwg-mimetype@2.3.0: resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} @@ -25268,28 +21999,29 @@ packages: is-symbol: 1.0.4 dev: true - /which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 dev: true /which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: true - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} @@ -25327,8 +22059,8 @@ packages: execa: 1.0.0 dev: true - /winston-transport@4.6.0: - resolution: {integrity: sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==} + /winston-transport@4.7.0: + resolution: {integrity: sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==} engines: {node: '>= 12.0.0'} dependencies: logform: 2.6.0 @@ -25348,8 +22080,8 @@ packages: stack-trace: 0.0.10 dev: true - /winston@3.11.0: - resolution: {integrity: sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==} + /winston@3.12.0: + resolution: {integrity: sha512-OwbxKaOlESDi01mC9rkM0dQqQt2I8DAUMRLZ/HpbwvDXm85IryEHgoogy5fziQy38PntgZsLlhAYHz//UPHZ5w==} engines: {node: '>= 12.0.0'} dependencies: '@colors/colors': 1.6.0 @@ -25362,7 +22094,7 @@ packages: safe-stable-stringify: 2.4.3 stack-trace: 0.0.10 triple-beam: 1.4.1 - winston-transport: 4.6.0 + winston-transport: 4.7.0 dev: false /word-wrap@1.2.5: @@ -25488,8 +22220,8 @@ packages: dev: false optional: true - /ws@8.14.2: - resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -25713,28 +22445,8 @@ packages: commander: 9.5.0 dev: true - /zustand@4.4.6(@types/react@18.2.38)(react@18.2.0): - resolution: {integrity: sha512-Rb16eW55gqL4W2XZpJh0fnrATxYEG3Apl2gfHTyDSE965x/zxslTikpNch0JgNjJA9zK6gEFW8Fl6d1rTZaqgg==} - engines: {node: '>=12.7.0'} - peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - dependencies: - '@types/react': 18.2.38 - react: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) - dev: false - - /zustand@4.5.0(@types/react@18.2.39)(react@18.2.0): - resolution: {integrity: sha512-zlVFqS5TQ21nwijjhJlx4f9iGrXSL0o/+Dpy4txAP22miJ8Ti6c1Ol1RLNN98BMib83lmDH/2KmLwaNXpjrO1A==} + /zustand@4.5.2(@types/react@18.2.65)(react@18.2.0): + resolution: {integrity: sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==} engines: {node: '>=12.7.0'} peerDependencies: '@types/react': '>=16.8' @@ -25748,7 +22460,7 @@ packages: react: optional: true dependencies: - '@types/react': 18.2.39 + '@types/react': 18.2.65 react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) dev: false diff --git a/uploader/client/package.json b/uploader/client/package.json index 19ee0ab9b..4ff962115 100644 --- a/uploader/client/package.json +++ b/uploader/client/package.json @@ -20,13 +20,13 @@ "@alchemy/phrasea-ui": "workspace:*", "@alchemy/react-auth": "workspace:*", "@alchemy/react-ps": "workspace:*", - "@mui/icons-material": "^5.15.12", - "@mui/material": "^5.15.12", + "@mui/icons-material": "^5.15.13", + "@mui/material": "^5.15.13", "@reduxjs/toolkit": "^2.2.1", "axios": "^1.6.7", "bootstrap": "^4.6.2", "filesize": "^9.0.11", - "i18next": "^23.7.7", + "i18next": "^23.10.1", "i18next-browser-languagedetector": "^6.1.8", "i18next-xhr-backend": "^3.2.2", "react": "^18.2.0", @@ -43,10 +43,10 @@ "vite-plugin-svgr": "^4.2.0" }, "devDependencies": { - "@types/node": "^18.19.23", + "@types/node": "^18.19.24", "@types/react": "^18.2.65", "@types/react-burger-menu": "^2.8.7", - "@types/react-dom": "^18.2.21", + "@types/react-dom": "^18.2.22", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", "@vitejs/plugin-react-swc": "^3.6.0",