From 0d5f356839eb6aa9f536044abe4affa736553e76 Mon Sep 17 00:00:00 2001 From: Antoine Bluchet Date: Tue, 25 Jun 2024 16:01:23 +0200 Subject: [PATCH] feat(laravel): laravel component (#5882) * feat(laravel): laravel component * try to skip laravel * feat(jsonapi): component * feat(laravel): json api support (needs review) * work on relations * relations (needs toMany) + skolem + IRI to resource * links handler * ulid * validation * slug post * remove deprecations * move classes * fix tests * fix tests metadata * phpstan * missing class * fix laravel tests * fix stan --- .commitlintrc | 1 + .github/workflows/ci.yml | 47 +- composer.json | 22 +- phpstan.neon.dist | 5 +- phpunit.xml.dist | 1 + src/Action/NotExposedAction.php | 2 +- src/Api/CompositeIdentifierParser.php | 65 - src/Api/IdentifiersExtractor.php | 167 - src/Api/IdentifiersExtractorInterface.php | 32 - src/Api/IriConverterInterface.php | 45 - src/Api/ResourceClassResolver.php | 110 - src/Api/ResourceClassResolverInterface.php | 39 - src/Api/UriVariableTransformerInterface.php | 39 - src/Api/UriVariablesConverter.php | 91 - src/Api/UriVariablesConverterInterface.php | 36 - src/Api/UrlGeneratorInterface.php | 84 - .../Common/Filter/SearchFilterTrait.php | 8 +- .../Common/State/LinksHandlerTrait.php | 2 +- .../PublishMercureUpdatesListener.php | 10 +- .../EventListener/PurgeHttpCacheListener.php | 10 +- src/Doctrine/Odm/Filter/SearchFilter.php | 6 +- src/Doctrine/Odm/State/LinksHandlerTrait.php | 2 +- .../Extension/FilterEagerLoadingExtension.php | 2 +- .../Orm/Extension/FilterExtension.php | 2 +- src/Doctrine/Orm/Extension/OrderExtension.php | 2 +- .../Orm/Extension/PaginationExtension.php | 2 +- src/Doctrine/Orm/Filter/SearchFilter.php | 6 +- .../Resource/DoctrineOrmLinkFactory.php | 3 +- src/Doctrine/Orm/PropertyHelperTrait.php | 2 +- src/Doctrine/Orm/State/Options.php | 13 - .../Resource/DoctrineOrmLinkFactoryTest.php | 2 +- .../Action/DocumentationAction.php | 1 + src/Documentation/composer.json | 3 + .../ErrorCodeSerializableInterface.php | 2 + src/GraphQl/Serializer/ObjectNormalizer.php | 4 +- src/Hal/Serializer/CollectionNormalizer.php | 3 +- src/Hal/Serializer/EntrypointNormalizer.php | 13 +- src/Hal/Serializer/ObjectNormalizer.php | 3 +- .../EventListener/AddLinkHeaderListener.php | 3 +- .../CollectionFiltersNormalizer.php | 3 +- src/Hydra/Serializer/CollectionNormalizer.php | 4 +- .../ConstraintViolationListNormalizer.php | 2 +- .../Serializer/DocumentationNormalizer.php | 4 +- src/Hydra/Serializer/EntrypointNormalizer.php | 15 +- src/Hydra/Serializer/ErrorNormalizer.php | 2 +- src/Hydra/Serializer/ErrorNormalizerTrait.php | 2 +- src/JsonApi/.gitattributes | 2 + src/JsonApi/.gitignore | 3 + src/JsonApi/JsonSchema/SchemaFactory.php | 3 +- .../Serializer/CollectionNormalizer.php | 5 +- .../Serializer/EntrypointNormalizer.php | 13 +- src/JsonApi/Serializer/ErrorNormalizer.php | 1 - .../Serializer/ErrorNormalizerTrait.php | 57 + src/JsonApi/Serializer/ItemNormalizer.php | 8 +- src/JsonApi/Serializer/ObjectNormalizer.php | 4 +- .../Tests/Fixtures/CircularReference.php | 20 + .../Tests/Fixtures/CustomConverter.php | 42 + src/JsonApi/Tests/Fixtures/Dummy.php | 206 + .../Tests/Fixtures}/ErrorCodeSerializable.php | 4 +- src/JsonApi/Tests/Fixtures/RelatedDummy.php | 116 + .../Tests}/JsonSchema/SchemaFactoryTest.php | 12 +- .../Serializer/CollectionNormalizerTest.php | 4 +- .../ConstraintViolationNormalizerTest.php | 6 +- .../Serializer/EntrypointNormalizerTest.php | 10 +- .../Tests}/Serializer/ErrorNormalizerTest.php | 4 +- .../Tests}/Serializer/ItemNormalizerTest.php | 8 +- .../ReservedAttributeNameConverterTest.php | 4 +- .../Tests}/State/JsonApiProviderTest.php | 2 +- src/JsonApi/Tests/Util/IriHelperTest.php | 83 + src/JsonApi/Util/IriHelper.php | 108 + src/JsonApi/composer.json | 73 + src/JsonApi/phpunit.xml.dist | 21 + src/JsonLd/Action/ContextAction.php | 4 + src/JsonLd/Serializer/ItemNormalizer.php | 4 +- src/JsonLd/Serializer/ObjectNormalizer.php | 5 +- .../Factory/SchemaPropertyMetadataFactory.php | 2 +- src/Laravel/.gitattributes | 4 + src/Laravel/.gitignore | 3 + src/Laravel/ApiPlatformMiddleware.php | 40 + src/Laravel/ApiPlatformProvider.php | 805 + src/Laravel/ApiResource/Error.php | 163 + src/Laravel/ApiResource/ValidationError.php | 158 + .../Controller/ApiPlatformController.php | 109 + ...oquentAttributePropertyMetadataFactory.php | 87 + ...AttributePropertyNameCollectionFactory.php | 45 + .../EloquentPropertyMetadataFactory.php | 109 + ...tPropertyNameCollectionMetadataFactory.php | 70 + ...quentResourceCollectionMetadataFactory.php | 70 + .../Metadata/IdentifiersExtractor.php | 78 + .../Eloquent/Metadata/ModelMetadata.php | 297 + .../Metadata/ResourceClassResolver.php | 38 + src/Laravel/Eloquent/Paginator.php | 59 + .../PropertyAccess/PropertyAccessor.php | 66 + .../Serializer/SerializerContextBuilder.php | 43 + .../Eloquent/State/CollectionProvider.php | 67 + src/Laravel/Eloquent/State/ItemProvider.php | 48 + src/Laravel/Eloquent/State/LinksHandler.php | 52 + .../Eloquent/State/LinksHandlerInterface.php | 35 + .../State/LinksHandlerLocatorTrait.php | 44 + src/Laravel/Eloquent/State/Options.php | 42 + .../Eloquent/State/PersistProcessor.php | 48 + .../Eloquent/State/RemoveProcessor.php | 30 + src/Laravel/Exception/Handler.php | 198 + src/Laravel/FilterLocator.php | 31 + src/Laravel/README.md | 14 + src/Laravel/Routing/IriConverter.php | 188 + src/Laravel/Routing/Router.php | 100 + src/Laravel/Routing/SkolemIriConverter.php | 76 + src/Laravel/ServiceLocator.php | 42 + src/Laravel/State/SwaggerUiProcessor.php | 106 + src/Laravel/State/SwaggerUiProvider.php | 85 + src/Laravel/State/ValidateProvider.php | 83 + src/Laravel/Test/ApiTestAssertionsTrait.php | 74 + src/Laravel/Test/Constraint/ArraySubset.php | 34 + .../Test/Constraint/ArraySubsetTrait.php | 101 + src/Laravel/Tests/JsonApiTest.php | 153 + src/Laravel/Tests/JsonLdTest.php | 271 + src/Laravel/Tests/JsonProblemTest.php | 40 + src/Laravel/composer.json | 119 + src/Laravel/config/api-platform.php | 71 + src/Laravel/phpstan.neon.dist | 22 + src/Laravel/phpunit.xml.dist | 29 + src/Laravel/public/400.css | 79 + src/Laravel/public/700.css | 79 + src/Laravel/public/car.svg | 82 + .../es6-promise/es6-promise.auto.min.js | 1 + src/Laravel/public/fetch/fetch.js | 500 + src/Laravel/public/fonts/open-sans/400.css | 79 + src/Laravel/public/fonts/open-sans/700.css | 79 + .../files/open-sans-cyrillic-400-normal.woff2 | Bin 0 -> 11084 bytes .../files/open-sans-cyrillic-700-normal.woff2 | Bin 0 -> 10872 bytes .../open-sans-cyrillic-ext-400-normal.woff2 | Bin 0 -> 17944 bytes .../open-sans-cyrillic-ext-700-normal.woff2 | Bin 0 -> 17564 bytes .../files/open-sans-greek-400-normal.woff2 | Bin 0 -> 9388 bytes .../files/open-sans-greek-700-normal.woff2 | Bin 0 -> 9236 bytes .../open-sans-greek-ext-400-normal.woff2 | Bin 0 -> 3768 bytes .../open-sans-greek-ext-700-normal.woff2 | Bin 0 -> 3768 bytes .../files/open-sans-latin-400-normal.woff2 | Bin 0 -> 18664 bytes .../files/open-sans-latin-700-normal.woff2 | Bin 0 -> 18232 bytes .../open-sans-latin-ext-400-normal.woff2 | Bin 0 -> 15296 bytes .../open-sans-latin-ext-700-normal.woff2 | Bin 0 -> 14984 bytes .../open-sans-vietnamese-400-normal.woff2 | Bin 0 -> 8692 bytes .../open-sans-vietnamese-700-normal.woff2 | Bin 0 -> 8512 bytes src/Laravel/public/graphiql-style.css | 119 + src/Laravel/public/graphiql/graphiql.css | 641 + src/Laravel/public/graphiql/graphiql.min.js | 83643 ++++++++++++++++ .../public/graphql-playground-style.css | 468 + .../public/graphql-playground/index.css | 45 + .../public/graphql-playground/middleware.js | 125 + src/Laravel/public/init-common-ui.js | 10 + src/Laravel/public/init-graphiql.js | 81 + src/Laravel/public/init-graphql-playground.js | 12 + src/Laravel/public/init-redoc-ui.js | 7 + src/Laravel/public/init-swagger-ui.js | 156 + src/Laravel/public/logo-header.svg | 100 + .../public/react/react-dom.production.min.js | 267 + .../public/react/react.production.min.js | 31 + src/Laravel/public/redoc/redoc.standalone.js | 1820 + src/Laravel/public/style.css | 404 + src/Laravel/public/swagger-ui-bundle.js | 3 + .../public/swagger-ui-standalone-preset.js | 3 + src/Laravel/public/swagger-ui.css | 3 + .../public/swagger-ui/oauth2-redirect.html | 79 + .../public/swagger-ui/swagger-ui-bundle.js | 3 + .../swagger-ui/swagger-ui-bundle.js.map | 1 + .../swagger-ui-standalone-preset.js | 3 + .../swagger-ui-standalone-preset.js.map | 1 + src/Laravel/public/swagger-ui/swagger-ui.css | 3 + .../public/swagger-ui/swagger-ui.css.map | 1 + src/Laravel/public/web.png | Bin 0 -> 21929 bytes src/Laravel/public/webby.png | Bin 0 -> 281169 bytes .../resources/views/swagger-ui.blade.php | 218 + src/Laravel/testbench.yaml | 29 + .../app/ApiResource/NotAResource.php | 19 + .../workbench/app/ApiResource/Output.php | 25 + .../app/Http/Requests/BookFormRequest.php | 36 + src/Laravel/workbench/app/Models/.gitkeep | 0 src/Laravel/workbench/app/Models/Author.php | 24 + src/Laravel/workbench/app/Models/Book.php | 40 + src/Laravel/workbench/app/Models/Comment.php | 59 + src/Laravel/workbench/app/Models/Post.php | 40 + .../workbench/app/Models/Sluggable.php | 37 + src/Laravel/workbench/app/Models/notes | 3 + .../Providers/WorkbenchServiceProvider.php | 46 + src/Laravel/workbench/config/api-platform.php | 72 + .../workbench/database/factories/.gitkeep | 0 .../database/factories/AuthorFactory.php | 44 + .../database/factories/BookFactory.php | 41 + .../database/factories/CommentFactory.php | 45 + .../database/factories/PostFactory.php | 46 + .../database/factories/SluggableFactory.php | 48 + .../workbench/database/migrations/.gitkeep | 0 .../2023_07_15_231244_create_book_table.php | 71 + .../workbench/database/seeders/.gitkeep | 0 .../database/seeders/DatabaseSeeder.php | 34 + src/Metadata/ApiProperty.php | 17 +- src/Metadata/ApiResource.php | 4 +- src/Metadata/Delete.php | 2 + .../ErrorCodeSerializableInterface.php | 25 + .../Exception/InvalidArgumentException.php | 22 +- .../Exception/InvalidIdentifierException.php | 22 +- .../Exception/InvalidUriVariableException.php | 22 +- .../Exception/ItemNotFoundException.php | 22 +- .../Exception/NotExposedHttpException.php | 23 + .../Exception/OperationNotFoundException.php | 18 +- .../Exception/PropertyNotFoundException.php | 22 +- .../ResourceClassNotFoundException.php | 22 +- src/Metadata/Exception/RuntimeException.php | 22 +- .../StatusAwareExceptionInterface.php | 22 + .../Extractor/XmlPropertyExtractor.php | 1 + .../Extractor/YamlPropertyExtractor.php | 1 + src/Metadata/Extractor/schema/properties.xsd | 1 + src/Metadata/Get.php | 2 + src/Metadata/GetCollection.php | 2 + src/Metadata/HttpOperation.php | 2 + src/Metadata/IdentifiersExtractor.php | 6 +- .../IdentifiersExtractorInterface.php | 39 +- src/Metadata/IriConverterInterface.php | 56 +- src/Metadata/Metadata.php | 43 +- src/Metadata/Operation.php | 2 + src/Metadata/Patch.php | 2 + src/Metadata/Post.php | 2 + .../PropertyMetadataFactoryInterface.php | 3 + ...PropertyNameCollectionFactoryInterface.php | 2 + src/Metadata/Put.php | 2 + ...urceMetadataCollectionFactoryInterface.php | 2 + .../ResourceClassResolverInterface.php | 49 +- .../Extractor/Adapter/XmlPropertyAdapter.php | 1 + .../Extractor/Adapter/XmlResourceAdapter.php | 4 + .../Tests/Extractor/Adapter/properties.xml | 2 +- .../Tests/Extractor/Adapter/properties.yaml | 1 + .../Tests/Extractor/Adapter/resources.yaml | 1 + .../PropertyMetadataCompatibilityTest.php | 1 + .../ResourceMetadataCompatibilityTest.php | 1 + .../DateTimeUriVariableTransformerTest.php | 6 +- .../IntegerUriVariableTransformerTest.php | 4 +- .../Util}/CompositeIdentifierParserTest.php | 4 +- .../DateTimeUriVariableTransformer.php | 6 +- .../IntegerUriVariableTransformer.php | 4 +- .../UriVariableTransformerInterface.php | 55 +- .../UriVariablesConverterInterface.php | 43 +- src/Metadata/UrlGeneratorInterface.php | 129 +- src/Metadata/Util/ResourceClassInfoTrait.php | 6 +- src/OpenApi/composer.json | 6 +- src/ParameterValidator/FilterLocatorTrait.php | 2 +- .../Serializer/ErrorNormalizerTrait.php | 2 +- .../AbstractCollectionNormalizer.php | 3 +- src/Serializer/AbstractItemNormalizer.php | 9 +- src/Serializer/ItemNormalizer.php | 3 +- src/State/CreateProvider.php | 2 +- src/State/ObjectProvider.php | 2 +- src/State/UriVariablesResolverTrait.php | 3 +- .../ApiPlatformExtension.php | 3 - .../Compiler/FilterPass.php | 2 +- .../MetadataAwareNameConverterPass.php | 2 +- .../DependencyInjection/Configuration.php | 2 +- src/Symfony/Bundle/Resources/config/api.xml | 23 +- src/Symfony/Controller/MainController.php | 6 +- .../EventListener/AddFormatListener.php | 2 +- .../EventListener/DeserializeListener.php | 2 +- src/Symfony/EventListener/ErrorListener.php | 6 +- src/Symfony/EventListener/ReadListener.php | 10 +- src/Symfony/EventListener/RespondListener.php | 5 +- .../EventListener/SerializeListener.php | 2 +- src/Symfony/EventListener/WriteListener.php | 13 +- src/Symfony/Routing/ApiLoader.php | 2 +- src/Symfony/Routing/IriConverter.php | 5 +- src/Symfony/Routing/SkolemIriConverter.php | 2 +- .../Security/State/LinkedReadProvider.php | 4 +- .../Tests}/Action/EntrypointActionTest.php | 20 +- .../UlidUriVariableTransformer.php | 2 +- .../UuidUriVariableTransformer.php | 2 +- src/{Api => Symfony/Util}/FormatMatcher.php | 2 +- .../ValidationExceptionListener.php | 2 +- src/Util/IriHelper.php | 2 +- tests/Action/ExceptionActionTest.php | 2 +- .../PurgeHttpCacheListenerTest.php | 4 +- .../TestBundle/Document/AbsoluteUrlDummy.php | 2 +- .../Document/AbsoluteUrlRelationDummy.php | 2 +- .../TestBundle/Document/NetworkPathDummy.php | 2 +- .../Document/NetworkPathRelationDummy.php | 2 +- .../TestBundle/Entity/AbsoluteUrlDummy.php | 2 +- .../Entity/AbsoluteUrlRelationDummy.php | 2 +- .../TestBundle/Entity/NetworkPathDummy.php | 2 +- .../Entity/NetworkPathRelationDummy.php | 2 +- ...ryNoReadAndSerializeCollectionResolver.php | 2 +- ...NoReadAndSerializeItemDocumentResolver.php | 2 +- ...tomQueryNoReadAndSerializeItemResolver.php | 2 +- ...SumOnlyPersistDocumentMutationResolver.php | 2 +- .../SumOnlyPersistMutationResolver.php | 2 +- ...elatedDummyPlainIdentifierDenormalizer.php | 2 +- ...ClassAndCustomProviderResourceProvider.php | 2 +- tests/Fixtures/app/config/config_common.yml | 4 +- .../Serializer/CollectionNormalizerTest.php | 2 +- .../Serializer/EntrypointNormalizerTest.php | 8 +- .../AddLinkHeaderListenerTest.php | 2 +- .../CollectionFiltersNormalizerTest.php | 4 +- .../ConstraintViolationNormalizerTest.php | 2 +- .../DocumentationNormalizerTest.php | 4 +- .../Serializer/EntrypointNormalizerTest.php | 8 +- tests/State/CreateProviderTest.php | 2 +- tests/State/ObjectProviderTest.php | 2 +- .../Command/DebugResourceCommandTest.php | 2 +- .../ApiPlatformExtensionTest.php | 8 +- .../DependencyInjection/ConfigurationTest.php | 2 +- .../EventListener/ReadListenerTest.php | 2 +- tests/Symfony/Routing/IriConverterTest.php | 10 +- tests/Symfony/Routing/RouterTest.php | 2 +- .../ValidationExceptionListenerTest.php | 2 +- tests/Util/IriHelperTest.php | 4 +- update-js.sh | 1 + 311 files changed, 95730 insertions(+), 1388 deletions(-) delete mode 100644 src/Api/CompositeIdentifierParser.php delete mode 100644 src/Api/IdentifiersExtractor.php delete mode 100644 src/Api/IdentifiersExtractorInterface.php delete mode 100644 src/Api/IriConverterInterface.php delete mode 100644 src/Api/ResourceClassResolver.php delete mode 100644 src/Api/ResourceClassResolverInterface.php delete mode 100644 src/Api/UriVariableTransformerInterface.php delete mode 100644 src/Api/UriVariablesConverter.php delete mode 100644 src/Api/UriVariablesConverterInterface.php delete mode 100644 src/Api/UrlGeneratorInterface.php create mode 100644 src/JsonApi/.gitattributes create mode 100644 src/JsonApi/.gitignore create mode 100644 src/JsonApi/Serializer/ErrorNormalizerTrait.php create mode 100644 src/JsonApi/Tests/Fixtures/CircularReference.php create mode 100644 src/JsonApi/Tests/Fixtures/CustomConverter.php create mode 100644 src/JsonApi/Tests/Fixtures/Dummy.php rename {tests/Mock/Exception => src/JsonApi/Tests/Fixtures}/ErrorCodeSerializable.php (81%) create mode 100644 src/JsonApi/Tests/Fixtures/RelatedDummy.php rename {tests/JsonApi => src/JsonApi/Tests}/JsonSchema/SchemaFactoryTest.php (95%) rename {tests/JsonApi => src/JsonApi/Tests}/Serializer/CollectionNormalizerTest.php (99%) rename {tests/JsonApi => src/JsonApi/Tests}/Serializer/ConstraintViolationNormalizerTest.php (96%) rename {tests/JsonApi => src/JsonApi/Tests}/Serializer/EntrypointNormalizerTest.php (93%) rename {tests/JsonApi => src/JsonApi/Tests}/Serializer/ErrorNormalizerTest.php (97%) rename {tests/JsonApi => src/JsonApi/Tests}/Serializer/ItemNormalizerTest.php (99%) rename {tests/JsonApi => src/JsonApi/Tests}/Serializer/ReservedAttributeNameConverterTest.php (93%) rename {tests/JsonApi => src/JsonApi/Tests}/State/JsonApiProviderTest.php (97%) create mode 100644 src/JsonApi/Tests/Util/IriHelperTest.php create mode 100644 src/JsonApi/Util/IriHelper.php create mode 100644 src/JsonApi/composer.json create mode 100644 src/JsonApi/phpunit.xml.dist create mode 100644 src/Laravel/.gitattributes create mode 100644 src/Laravel/.gitignore create mode 100644 src/Laravel/ApiPlatformMiddleware.php create mode 100644 src/Laravel/ApiPlatformProvider.php create mode 100644 src/Laravel/ApiResource/Error.php create mode 100644 src/Laravel/ApiResource/ValidationError.php create mode 100644 src/Laravel/Controller/ApiPlatformController.php create mode 100644 src/Laravel/Eloquent/Metadata/Factory/Property/EloquentAttributePropertyMetadataFactory.php create mode 100644 src/Laravel/Eloquent/Metadata/Factory/Property/EloquentAttributePropertyNameCollectionFactory.php create mode 100644 src/Laravel/Eloquent/Metadata/Factory/Property/EloquentPropertyMetadataFactory.php create mode 100644 src/Laravel/Eloquent/Metadata/Factory/Property/EloquentPropertyNameCollectionMetadataFactory.php create mode 100644 src/Laravel/Eloquent/Metadata/Factory/Resource/EloquentResourceCollectionMetadataFactory.php create mode 100644 src/Laravel/Eloquent/Metadata/IdentifiersExtractor.php create mode 100644 src/Laravel/Eloquent/Metadata/ModelMetadata.php create mode 100644 src/Laravel/Eloquent/Metadata/ResourceClassResolver.php create mode 100644 src/Laravel/Eloquent/Paginator.php create mode 100644 src/Laravel/Eloquent/PropertyAccess/PropertyAccessor.php create mode 100644 src/Laravel/Eloquent/Serializer/SerializerContextBuilder.php create mode 100644 src/Laravel/Eloquent/State/CollectionProvider.php create mode 100644 src/Laravel/Eloquent/State/ItemProvider.php create mode 100644 src/Laravel/Eloquent/State/LinksHandler.php create mode 100644 src/Laravel/Eloquent/State/LinksHandlerInterface.php create mode 100644 src/Laravel/Eloquent/State/LinksHandlerLocatorTrait.php create mode 100644 src/Laravel/Eloquent/State/Options.php create mode 100644 src/Laravel/Eloquent/State/PersistProcessor.php create mode 100644 src/Laravel/Eloquent/State/RemoveProcessor.php create mode 100644 src/Laravel/Exception/Handler.php create mode 100644 src/Laravel/FilterLocator.php create mode 100644 src/Laravel/README.md create mode 100644 src/Laravel/Routing/IriConverter.php create mode 100644 src/Laravel/Routing/Router.php create mode 100644 src/Laravel/Routing/SkolemIriConverter.php create mode 100644 src/Laravel/ServiceLocator.php create mode 100644 src/Laravel/State/SwaggerUiProcessor.php create mode 100644 src/Laravel/State/SwaggerUiProvider.php create mode 100644 src/Laravel/State/ValidateProvider.php create mode 100644 src/Laravel/Test/ApiTestAssertionsTrait.php create mode 100644 src/Laravel/Test/Constraint/ArraySubset.php create mode 100644 src/Laravel/Test/Constraint/ArraySubsetTrait.php create mode 100644 src/Laravel/Tests/JsonApiTest.php create mode 100644 src/Laravel/Tests/JsonLdTest.php create mode 100644 src/Laravel/Tests/JsonProblemTest.php create mode 100644 src/Laravel/composer.json create mode 100644 src/Laravel/config/api-platform.php create mode 100644 src/Laravel/phpstan.neon.dist create mode 100644 src/Laravel/phpunit.xml.dist create mode 100644 src/Laravel/public/400.css create mode 100644 src/Laravel/public/700.css create mode 100644 src/Laravel/public/car.svg create mode 100644 src/Laravel/public/es6-promise/es6-promise.auto.min.js create mode 100644 src/Laravel/public/fetch/fetch.js create mode 100644 src/Laravel/public/fonts/open-sans/400.css create mode 100644 src/Laravel/public/fonts/open-sans/700.css create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-cyrillic-400-normal.woff2 create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-cyrillic-700-normal.woff2 create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-cyrillic-ext-400-normal.woff2 create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-cyrillic-ext-700-normal.woff2 create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-greek-400-normal.woff2 create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-greek-700-normal.woff2 create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-greek-ext-400-normal.woff2 create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-greek-ext-700-normal.woff2 create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-latin-400-normal.woff2 create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-latin-700-normal.woff2 create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-latin-ext-400-normal.woff2 create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-latin-ext-700-normal.woff2 create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-vietnamese-400-normal.woff2 create mode 100644 src/Laravel/public/fonts/open-sans/files/open-sans-vietnamese-700-normal.woff2 create mode 100644 src/Laravel/public/graphiql-style.css create mode 100644 src/Laravel/public/graphiql/graphiql.css create mode 100644 src/Laravel/public/graphiql/graphiql.min.js create mode 100644 src/Laravel/public/graphql-playground-style.css create mode 100644 src/Laravel/public/graphql-playground/index.css create mode 100644 src/Laravel/public/graphql-playground/middleware.js create mode 100644 src/Laravel/public/init-common-ui.js create mode 100644 src/Laravel/public/init-graphiql.js create mode 100644 src/Laravel/public/init-graphql-playground.js create mode 100644 src/Laravel/public/init-redoc-ui.js create mode 100644 src/Laravel/public/init-swagger-ui.js create mode 100644 src/Laravel/public/logo-header.svg create mode 100644 src/Laravel/public/react/react-dom.production.min.js create mode 100644 src/Laravel/public/react/react.production.min.js create mode 100644 src/Laravel/public/redoc/redoc.standalone.js create mode 100644 src/Laravel/public/style.css create mode 100644 src/Laravel/public/swagger-ui-bundle.js create mode 100644 src/Laravel/public/swagger-ui-standalone-preset.js create mode 100644 src/Laravel/public/swagger-ui.css create mode 100644 src/Laravel/public/swagger-ui/oauth2-redirect.html create mode 100644 src/Laravel/public/swagger-ui/swagger-ui-bundle.js create mode 100644 src/Laravel/public/swagger-ui/swagger-ui-bundle.js.map create mode 100644 src/Laravel/public/swagger-ui/swagger-ui-standalone-preset.js create mode 100644 src/Laravel/public/swagger-ui/swagger-ui-standalone-preset.js.map create mode 100644 src/Laravel/public/swagger-ui/swagger-ui.css create mode 100644 src/Laravel/public/swagger-ui/swagger-ui.css.map create mode 100644 src/Laravel/public/web.png create mode 100644 src/Laravel/public/webby.png create mode 100644 src/Laravel/resources/views/swagger-ui.blade.php create mode 100644 src/Laravel/testbench.yaml create mode 100644 src/Laravel/workbench/app/ApiResource/NotAResource.php create mode 100644 src/Laravel/workbench/app/ApiResource/Output.php create mode 100644 src/Laravel/workbench/app/Http/Requests/BookFormRequest.php create mode 100644 src/Laravel/workbench/app/Models/.gitkeep create mode 100644 src/Laravel/workbench/app/Models/Author.php create mode 100644 src/Laravel/workbench/app/Models/Book.php create mode 100644 src/Laravel/workbench/app/Models/Comment.php create mode 100644 src/Laravel/workbench/app/Models/Post.php create mode 100644 src/Laravel/workbench/app/Models/Sluggable.php create mode 100644 src/Laravel/workbench/app/Models/notes create mode 100644 src/Laravel/workbench/app/Providers/WorkbenchServiceProvider.php create mode 100644 src/Laravel/workbench/config/api-platform.php create mode 100644 src/Laravel/workbench/database/factories/.gitkeep create mode 100644 src/Laravel/workbench/database/factories/AuthorFactory.php create mode 100644 src/Laravel/workbench/database/factories/BookFactory.php create mode 100644 src/Laravel/workbench/database/factories/CommentFactory.php create mode 100644 src/Laravel/workbench/database/factories/PostFactory.php create mode 100644 src/Laravel/workbench/database/factories/SluggableFactory.php create mode 100644 src/Laravel/workbench/database/migrations/.gitkeep create mode 100644 src/Laravel/workbench/database/migrations/2023_07_15_231244_create_book_table.php create mode 100644 src/Laravel/workbench/database/seeders/.gitkeep create mode 100644 src/Laravel/workbench/database/seeders/DatabaseSeeder.php create mode 100644 src/Metadata/Exception/ErrorCodeSerializableInterface.php create mode 100644 src/Metadata/Exception/NotExposedHttpException.php create mode 100644 src/Metadata/Exception/StatusAwareExceptionInterface.php rename {tests/Api => src/Metadata/Tests}/UriVariableTransformer/DateTimeUriVariableTransformerTest.php (83%) rename {tests/Api => src/Metadata/Tests}/UriVariableTransformer/IntegerUriVariableTransformerTest.php (86%) rename {tests/Api => src/Metadata/Tests/Util}/CompositeIdentifierParserTest.php (95%) rename src/{Api => Metadata}/UriVariableTransformer/DateTimeUriVariableTransformer.php (87%) rename src/{Api => Metadata}/UriVariableTransformer/IntegerUriVariableTransformer.php (86%) rename {tests => src/Symfony/Tests}/Action/EntrypointActionTest.php (66%) rename src/{Api => Symfony/Util}/FormatMatcher.php (97%) diff --git a/.commitlintrc b/.commitlintrc index 73d886db1db..886c4606731 100644 --- a/.commitlintrc +++ b/.commitlintrc @@ -6,6 +6,7 @@ 2, "always", [ + "laravel", "symfony", "doctrine", "metadata", diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4d4f20dcfe8..352bf2c9d5f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -177,6 +177,14 @@ jobs: run: | ./vendor/bin/phpstan --version ./vendor/bin/phpstan analyse --no-interaction --no-progress --ansi + - name: Install Laravel + run: | + composer api-platform/laravel update + composer api-platform/laravel run-script build + - name: Run PHPStan analysis (laravel) + working-directory: 'src/Laravel' + run: | + ./vendor/bin/phpstan analyse --no-interaction --no-progress --ansi phpunit: name: PHPUnit (PHP ${{ matrix.php }}) @@ -955,7 +963,7 @@ jobs: with: php-version: ${{ matrix.php }} tools: pecl, composer - extensions: intl, bcmath, curl, openssl, mbstring, pdo_sqlite + extensions: intl, bcmath, curl, openssl, mbstring, pdo_sqlite, fileinfo coverage: none ini-values: memory_limit=-1 # Not in pecl @@ -1006,7 +1014,7 @@ jobs: with: php-version: ${{ matrix.php }} tools: pecl, composer - extensions: intl, bcmath, curl, openssl, mbstring, pdo_sqlite + extensions: intl, bcmath, curl, openssl, mbstring, pdo_sqlite, fileinfo coverage: none ini-values: memory_limit=-1 # Not in pecl @@ -1333,3 +1341,38 @@ jobs: name: openapi-docs-php${{ matrix.php }} path: build/out/openapi continue-on-error: true + + laravel: + name: Laravel (PHP ${{ matrix.php }}) + runs-on: ubuntu-latest + timeout-minutes: 20 + strategy: + matrix: + php: + - '8.2' + - '8.3' + include: + - php: '8.2' + coverage: true + - php: '8.3' + coverage: true + fail-fast: false + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + tools: pecl, composer + extensions: intl, bcmath, curl, openssl, mbstring, pdo_sqlite, mongodb + ini-values: memory_limit=-1 + - name: Run ${{ matrix.component }} install + run: | + composer update + composer api-platform/laravel update + - name: PHP version tweaks + run: | + composer run-script build + composer run-script test + working-directory: 'src/Laravel' diff --git a/composer.json b/composer.json index 0300b1a36be..78801c08f10 100644 --- a/composer.json +++ b/composer.json @@ -52,8 +52,17 @@ "friends-of-behat/mink-extension": "^2.2", "friends-of-behat/symfony-extension": "^2.1", "guzzlehttp/guzzle": "^6.0 || ^7.0", + "illuminate/config": "^10.0||^11.0", + "illuminate/contracts": "^10.0||^11.0", + "illuminate/database": "^10.0||^11.0", + "illuminate/http": "^10.0||^11.0", + "illuminate/pagination": "^10.0||^11.0", + "illuminate/routing": "^10.0||^11.0", + "illuminate/support": "^10.0||^11.0", "jangregor/phpstan-prophecy": "^1.0", "justinrainbow/json-schema": "^5.2.1", + "laravel/framework": "^10.0||^11.0", + "orchestra/testbench": "^8.18", "phpspec/prophecy-phpunit": "^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpdoc-parser": "^1.13", @@ -141,7 +150,10 @@ "autoload-dev": { "psr-4": { "ApiPlatform\\Tests\\": "tests/", - "App\\": "tests/Fixtures/app/var/tmp/src/" + "App\\": "tests/Fixtures/app/var/tmp/src/", + "Workbench\\App\\": "src/Laravel/workbench/app/", + "Workbench\\Database\\Factories\\": "src/Laravel/workbench/database/factories/", + "Workbench\\Database\\Seeders\\": "src/Laravel/workbench/database/seeders/" } }, "config": { @@ -181,7 +193,9 @@ "api-platform/serializer", "api-platform/state", "api-platform/symfony", - "api-platform/validator" + "api-platform/validator", + "api-platform/laravel", + "api-platform/json-api" ] }, "repositories": [ @@ -202,6 +216,8 @@ {"type": "path", "url": "./src/Serializer"}, {"type": "path", "url": "./src/State"}, {"type": "path", "url": "./src/Symfony"}, - {"type": "path", "url": "./src/Validator"} + {"type": "path", "url": "./src/Validator"}, + {"type": "path", "url": "./src/Laravel"}, + {"type": "path", "url": "./src/JsonApi"} ] } diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 03e6f9f4d42..975252cce4e 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -16,6 +16,8 @@ parameters: - src/Symfony/Bundle/Test/Constraint/ArraySubset.php - tests/Fixtures/app/AppKernel.php excludePaths: + # uses larastan + - src/Laravel - src/Symfony/Bundle/Command/OpenApiCommand.php # Symfony config - tests/Fixtures/app/config/config_swagger.php @@ -86,7 +88,7 @@ parameters: # Expected, due to backward compatibility - message: "#Call to function method_exists\\(\\) with ApiPlatform\\\\JsonApi\\\\Serializer\\\\ItemNormalizer and 'setCircularReferenc…' will always evaluate to false\\.#" - path: tests/JsonApi/Serializer/ItemNormalizerTest.php + path: src/JsonApi/Tests/Serializer/ItemNormalizerTest.php - '#Method GraphQL\\Type\\Definition\\WrappingType::getWrappedType\(\) invoked with 1 parameter, 0 required\.#' - '#Access to an undefined property GraphQL\\Type\\Definition\\NamedType&GraphQL\\Type\\Definition\\Type::\$name\.#' # See https://github.com/phpstan/phpstan-symfony/issues/27 @@ -99,5 +101,4 @@ parameters: # Backward compatibility - '#Call to method hasCacheableSupportsMethod\(\) on an unknown class Symfony\\Component\\Serializer\\Normalizer\\CacheableSupportsMethodInterface\.#' - '#Class Symfony\\Component\\Serializer\\Normalizer\\CacheableSupportsMethodInterface not found\.#' - - '#Access to undefined constant Symfony\\Component\\HttpKernel\\HttpKernelInterface::MASTER_REQUEST\.#' - '#Attribute class PHPUnit\\Framework\\Attributes\\DataProvider does not exist.#' diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 230919fb769..1d749ca1fa0 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -28,6 +28,7 @@ src/Symfony/Maker/Resources/skeleton + src/Laravel features tests vendor diff --git a/src/Action/NotExposedAction.php b/src/Action/NotExposedAction.php index cfee48b3ffe..432daf4b4bc 100644 --- a/src/Action/NotExposedAction.php +++ b/src/Action/NotExposedAction.php @@ -13,7 +13,7 @@ namespace ApiPlatform\Action; -use ApiPlatform\Exception\NotExposedHttpException; +use ApiPlatform\Metadata\Exception\NotExposedHttpException; use Symfony\Component\HttpFoundation\Request; /** diff --git a/src/Api/CompositeIdentifierParser.php b/src/Api/CompositeIdentifierParser.php deleted file mode 100644 index e434e63df4e..00000000000 --- a/src/Api/CompositeIdentifierParser.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace ApiPlatform\Api; - -/** - * Normalizes a composite identifier. - * - * @author Antoine Bluchet - * - * @deprecated - */ -final class CompositeIdentifierParser -{ - public const COMPOSITE_IDENTIFIER_REGEXP = '/(\w+)=(?<=\w=)(.*?)(?=;\w+=)|(\w+)=([^;]*);?$/'; - - private function __construct() - { - } - - /* - * Normalize takes a string and gives back an array of identifiers. - * - * For example: foo=0;bar=2 returns ['foo' => 0, 'bar' => 2]. - */ - public static function parse(string $identifier): array - { - $matches = []; - $identifiers = []; - $num = preg_match_all(self::COMPOSITE_IDENTIFIER_REGEXP, $identifier, $matches, \PREG_SET_ORDER); - - foreach ($matches as $i => $match) { - if ($i === $num - 1) { - $identifiers[$match[3]] = $match[4]; - continue; - } - $identifiers[$match[1]] = $match[2]; - } - - return $identifiers; - } - - /** - * Renders composite identifiers to string using: key=value;key2=value2. - */ - public static function stringify(array $identifiers): string - { - $composite = []; - foreach ($identifiers as $name => $value) { - $composite[] = sprintf('%s=%s', $name, $value); - } - - return implode(';', $composite); - } -} diff --git a/src/Api/IdentifiersExtractor.php b/src/Api/IdentifiersExtractor.php deleted file mode 100644 index 199cc049398..00000000000 --- a/src/Api/IdentifiersExtractor.php +++ /dev/null @@ -1,167 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace ApiPlatform\Api; - -use ApiPlatform\Metadata\Exception\RuntimeException; -use ApiPlatform\Metadata\GraphQl\Operation as GraphQlOperation; -use ApiPlatform\Metadata\HttpOperation; -use ApiPlatform\Metadata\Operation; -use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface; -use ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface; -use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; -use ApiPlatform\Metadata\Util\ResourceClassInfoTrait; -use Symfony\Component\PropertyAccess\Exception\NoSuchPropertyException; -use Symfony\Component\PropertyAccess\PropertyAccess; -use Symfony\Component\PropertyAccess\PropertyAccessorInterface; - -/** - * {@inheritdoc} - * - * @deprecated use ApiPlatform\Metadata\IdentifiersExtractor instead - * - * @author Antoine Bluchet - */ -final class IdentifiersExtractor implements IdentifiersExtractorInterface -{ - use ResourceClassInfoTrait; - private readonly PropertyAccessorInterface $propertyAccessor; - - public function __construct(ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory, ResourceClassResolverInterface $resourceClassResolver, private readonly PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory, private readonly PropertyMetadataFactoryInterface $propertyMetadataFactory, ?PropertyAccessorInterface $propertyAccessor = null) - { - $this->resourceMetadataFactory = $resourceMetadataFactory; - $this->resourceClassResolver = $resourceClassResolver; - $this->propertyAccessor = $propertyAccessor ?? PropertyAccess::createPropertyAccessor(); - } - - /** - * {@inheritdoc} - * - * TODO: 3.0 identifiers should be stringable? - */ - public function getIdentifiersFromItem(object $item, ?Operation $operation = null, array $context = []): array - { - if (!$this->isResourceClass($this->getObjectClass($item))) { - return ['id' => $this->propertyAccessor->getValue($item, 'id')]; - } - - if ($operation && $operation->getClass()) { - return $this->getIdentifiersFromOperation($item, $operation, $context); - } - - $resourceClass = $this->getResourceClass($item, true); - $operation ??= $this->resourceMetadataFactory->create($resourceClass)->getOperation(null, false, true); - - return $this->getIdentifiersFromOperation($item, $operation, $context); - } - - private function getIdentifiersFromOperation(object $item, Operation $operation, array $context = []): array - { - if ($operation instanceof HttpOperation) { - $links = $operation->getUriVariables(); - } elseif ($operation instanceof GraphQlOperation) { - $links = $operation->getLinks(); - } - - $identifiers = []; - foreach ($links ?? [] as $k => $link) { - $linkIdentifiers = $link->getIdentifiers() ?? [$k]; - if (1 < \count($linkIdentifiers)) { - $compositeIdentifiers = []; - foreach ($linkIdentifiers as $identifier) { - $compositeIdentifiers[$identifier] = $this->getIdentifierValue($item, $link->getFromClass() ?? $operation->getClass(), $identifier, $link->getParameterName()); - } - - $identifiers[$link->getParameterName()] = CompositeIdentifierParser::stringify($compositeIdentifiers); - continue; - } - - $parameterName = $link->getParameterName(); - $identifiers[$parameterName] = $this->getIdentifierValue($item, $link->getFromClass() ?? $operation->getClass(), $linkIdentifiers[0], $parameterName, $link->getToProperty()); - } - - return $identifiers; - } - - /** - * Gets the value of the given class property. - */ - private function getIdentifierValue(object $item, string $class, string $property, string $parameterName, ?string $toProperty = null): float|bool|int|string - { - if ($item instanceof $class) { - try { - return $this->resolveIdentifierValue($this->propertyAccessor->getValue($item, $property), $parameterName); - } catch (NoSuchPropertyException $e) { - throw new RuntimeException('Not able to retrieve identifiers.', $e->getCode(), $e); - } - } - - if ($toProperty) { - return $this->resolveIdentifierValue($this->propertyAccessor->getValue($item, "$toProperty.$property"), $parameterName); - } - - $resourceClass = $this->getResourceClass($item, true); - foreach ($this->propertyNameCollectionFactory->create($resourceClass) as $propertyName) { - $propertyMetadata = $this->propertyMetadataFactory->create($resourceClass, $propertyName); - - $types = $propertyMetadata->getBuiltinTypes(); - if (null === ($type = $types[0] ?? null)) { - continue; - } - - try { - if ($type->isCollection()) { - $collectionValueType = $type->getCollectionValueTypes()[0] ?? null; - - if (null !== $collectionValueType && $collectionValueType->getClassName() === $class) { - return $this->resolveIdentifierValue($this->propertyAccessor->getValue($item, sprintf('%s[0].%s', $propertyName, $property)), $parameterName); - } - } - - if ($type->getClassName() === $class) { - return $this->resolveIdentifierValue($this->propertyAccessor->getValue($item, "$propertyName.$property"), $parameterName); - } - } catch (NoSuchPropertyException $e) { - throw new RuntimeException('Not able to retrieve identifiers.', $e->getCode(), $e); - } - } - - throw new RuntimeException('Not able to retrieve identifiers.'); - } - - /** - * TODO: in 3.0 this method just uses $identifierValue instanceof \Stringable and we remove the weird behavior. - * - * @param mixed|\Stringable $identifierValue - */ - private function resolveIdentifierValue(mixed $identifierValue, string $parameterName): float|bool|int|string - { - if (null === $identifierValue) { - throw new RuntimeException('No identifier value found, did you forget to persist the entity?'); - } - - if (\is_scalar($identifierValue)) { - return $identifierValue; - } - - if ($identifierValue instanceof \Stringable) { - return (string) $identifierValue; - } - - if ($identifierValue instanceof \BackedEnum) { - return (string) $identifierValue->value; - } - - throw new RuntimeException(sprintf('We were not able to resolve the identifier matching parameter "%s".', $parameterName)); - } -} diff --git a/src/Api/IdentifiersExtractorInterface.php b/src/Api/IdentifiersExtractorInterface.php deleted file mode 100644 index 1ad79b4fd19..00000000000 --- a/src/Api/IdentifiersExtractorInterface.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace ApiPlatform\Api; - -use ApiPlatform\Metadata\Exception\RuntimeException; -use ApiPlatform\Metadata\Operation; - -/** - * Extracts identifiers for a given Resource according to the retrieved Metadata. - * - * @author Antoine Bluchet - */ -interface IdentifiersExtractorInterface -{ - /** - * Finds identifiers from an Item (object). - * - * @throws RuntimeException - */ - public function getIdentifiersFromItem(object $item, ?Operation $operation = null, array $context = []): array; -} diff --git a/src/Api/IriConverterInterface.php b/src/Api/IriConverterInterface.php deleted file mode 100644 index b2990f339d2..00000000000 --- a/src/Api/IriConverterInterface.php +++ /dev/null @@ -1,45 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace ApiPlatform\Api; - -use ApiPlatform\Metadata\Exception\InvalidArgumentException; -use ApiPlatform\Metadata\Exception\ItemNotFoundException; -use ApiPlatform\Metadata\Exception\RuntimeException; -use ApiPlatform\Metadata\Operation; - -/** - * Converts item and resources to IRI and vice versa. - * - * @author Kévin Dunglas - */ -interface IriConverterInterface -{ - /** - * Retrieves an item from its IRI. - * - * @throws InvalidArgumentException - * @throws ItemNotFoundException - */ - public function getResourceFromIri(string $iri, array $context = [], ?Operation $operation = null): object; - - /** - * Gets the IRI associated with the given item. - * - * @param object|class-string $resource - * - * @throws InvalidArgumentException - * @throws RuntimeException - */ - public function getIriFromResource(object|string $resource, int $referenceType = UrlGeneratorInterface::ABS_PATH, ?Operation $operation = null, array $context = []): ?string; -} diff --git a/src/Api/ResourceClassResolver.php b/src/Api/ResourceClassResolver.php deleted file mode 100644 index 9ac92ab78e9..00000000000 --- a/src/Api/ResourceClassResolver.php +++ /dev/null @@ -1,110 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace ApiPlatform\Api; - -use ApiPlatform\Exception\InvalidArgumentException; -use ApiPlatform\Metadata\Resource\Factory\ResourceNameCollectionFactoryInterface; -use ApiPlatform\Metadata\Util\ClassInfoTrait; - -/** - * {@inheritdoc} - * - * @deprecated replaced by ApiPlatform\Metadata\ResourceClassResolver - * - * @author Kévin Dunglas - * @author Samuel ROZE - */ -final class ResourceClassResolver implements ResourceClassResolverInterface -{ - use ClassInfoTrait; - private array $localIsResourceClassCache = []; - private array $localMostSpecificResourceClassCache = []; - - public function __construct(private readonly ResourceNameCollectionFactoryInterface $resourceNameCollectionFactory) - { - } - - /** - * {@inheritdoc} - */ - public function getResourceClass(mixed $value, ?string $resourceClass = null, bool $strict = false): string - { - if ($strict && null === $resourceClass) { - throw new InvalidArgumentException('Strict checking is only possible when resource class is specified.'); - } - - $objectClass = \is_object($value) ? $this->getObjectClass($value) : null; - $actualClass = ($objectClass && (!$value instanceof \Traversable || $this->isResourceClass($objectClass))) ? $this->getObjectClass($value) : null; - - if (null === $actualClass && null === $resourceClass) { - throw new InvalidArgumentException('Resource type could not be determined. Resource class must be specified.'); - } - - if (null !== $actualClass && !$this->isResourceClass($actualClass)) { - throw new InvalidArgumentException(sprintf('No resource class found for object of type "%s".', $actualClass)); - } - - if (null !== $resourceClass && !$this->isResourceClass($resourceClass)) { - throw new InvalidArgumentException(sprintf('Specified class "%s" is not a resource class.', $resourceClass)); - } - - if ($strict && null !== $actualClass && !is_a($actualClass, $resourceClass, true)) { - throw new InvalidArgumentException(sprintf('Object of type "%s" does not match "%s" resource class.', $actualClass, $resourceClass)); - } - - $targetClass = $actualClass ?? $resourceClass; - - if (isset($this->localMostSpecificResourceClassCache[$targetClass])) { - return $this->localMostSpecificResourceClassCache[$targetClass]; - } - - $mostSpecificResourceClass = null; - - foreach ($this->resourceNameCollectionFactory->create() as $resourceClassName) { - if (!is_a($targetClass, $resourceClassName, true)) { - continue; - } - - if (null === $mostSpecificResourceClass || is_subclass_of($resourceClassName, $mostSpecificResourceClass)) { - $mostSpecificResourceClass = $resourceClassName; - } - } - - if (null === $mostSpecificResourceClass) { - throw new \LogicException('Unexpected execution flow.'); - } - - $this->localMostSpecificResourceClassCache[$targetClass] = $mostSpecificResourceClass; - - return $mostSpecificResourceClass; - } - - /** - * {@inheritdoc} - */ - public function isResourceClass(string $type): bool - { - if (isset($this->localIsResourceClassCache[$type])) { - return $this->localIsResourceClassCache[$type]; - } - - foreach ($this->resourceNameCollectionFactory->create() as $resourceClass) { - if (is_a($type, $resourceClass, true)) { - return $this->localIsResourceClassCache[$type] = true; - } - } - - return $this->localIsResourceClassCache[$type] = false; - } -} diff --git a/src/Api/ResourceClassResolverInterface.php b/src/Api/ResourceClassResolverInterface.php deleted file mode 100644 index 75e6a021d64..00000000000 --- a/src/Api/ResourceClassResolverInterface.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace ApiPlatform\Api; - -use ApiPlatform\Metadata\Exception\InvalidArgumentException; - -/** - * Guesses which resource is associated with a given object. - * - * @author Kévin Dunglas - */ -interface ResourceClassResolverInterface -{ - /** - * Guesses the associated resource. - * - * @param string $resourceClass The expected resource class - * @param bool $strict If true, value must match the expected resource class - * - * @throws InvalidArgumentException - */ - public function getResourceClass(mixed $value, ?string $resourceClass = null, bool $strict = false): string; - - /** - * Is the given class a resource class? - */ - public function isResourceClass(string $type): bool; -} diff --git a/src/Api/UriVariableTransformerInterface.php b/src/Api/UriVariableTransformerInterface.php deleted file mode 100644 index c3a0013244e..00000000000 --- a/src/Api/UriVariableTransformerInterface.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace ApiPlatform\Api; - -use ApiPlatform\Exception\InvalidUriVariableException; - -interface UriVariableTransformerInterface -{ - /** - * Transforms the value of a URI variable (identifier) to its type. - * - * @param mixed $value The URI variable value to transform - * @param array $types The guessed type behind the URI variable - * @param array $context Options available to the transformer - * - * @throws InvalidUriVariableException Occurs when the URI variable could not be transformed - */ - public function transform(mixed $value, array $types, array $context = []); - - /** - * Checks whether the value of a URI variable can be transformed to its type by this transformer. - * - * @param mixed $value The URI variable value to transform - * @param array $types The types to which the URI variable value should be transformed - * @param array $context Options available to the transformer - */ - public function supportsTransformation(mixed $value, array $types, array $context = []): bool; -} diff --git a/src/Api/UriVariablesConverter.php b/src/Api/UriVariablesConverter.php deleted file mode 100644 index bf9b8bbd76a..00000000000 --- a/src/Api/UriVariablesConverter.php +++ /dev/null @@ -1,91 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace ApiPlatform\Api; - -use ApiPlatform\Exception\InvalidUriVariableException; -use ApiPlatform\Metadata\Link; -use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface; -use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; -use Symfony\Component\PropertyInfo\Type; - -/** - * UriVariables converter that chains uri variables transformers. - * - * @author Antoine Bluchet - */ -final class UriVariablesConverter implements UriVariablesConverterInterface -{ - /** - * @param iterable $uriVariableTransformers - */ - public function __construct(private readonly PropertyMetadataFactoryInterface $propertyMetadataFactory, private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataCollectionFactory, private readonly iterable $uriVariableTransformers) - { - } - - /** - * {@inheritdoc} - * - * To handle the composite identifiers type correctly, use an `uri_variables_map` that maps uriVariables to their uriVariablesDefinition. - * Indeed, a composite identifier will already be parsed, and their corresponding properties will be the parameterName and not the defined - * identifiers. - */ - public function convert(array $uriVariables, string $class, array $context = []): array - { - $operation = $context['operation'] ?? $this->resourceMetadataCollectionFactory->create($class)->getOperation(); - $context += ['operation' => $operation]; - $uriVariablesDefinitions = $operation->getUriVariables() ?? []; - - foreach ($uriVariables as $parameterName => $value) { - $uriVariableDefinition = $context['uri_variables_map'][$parameterName] ?? $uriVariablesDefinitions[$parameterName] ?? $uriVariablesDefinitions['id'] ?? new Link(); - - // When a composite identifier is used, we assume that the parameterName is the property to find our type - $properties = $uriVariableDefinition->getIdentifiers() ?? [$parameterName]; - if ($uriVariableDefinition->getCompositeIdentifier()) { - $properties = [$parameterName]; - } - - if (!$types = $this->getIdentifierTypes($uriVariableDefinition->getFromClass() ?? $class, $properties)) { - continue; - } - - foreach ($this->uriVariableTransformers as $uriVariableTransformer) { - if (!$uriVariableTransformer->supportsTransformation($value, $types, $context)) { - continue; - } - - try { - $uriVariables[$parameterName] = $uriVariableTransformer->transform($value, $types, $context); - break; - } catch (InvalidUriVariableException $e) { - throw new InvalidUriVariableException(sprintf('Identifier "%s" could not be transformed.', $parameterName), $e->getCode(), $e); - } - } - } - - return $uriVariables; - } - - private function getIdentifierTypes(string $resourceClass, array $properties): array - { - $types = []; - foreach ($properties as $property) { - $propertyMetadata = $this->propertyMetadataFactory->create($resourceClass, $property); - foreach ($propertyMetadata->getBuiltinTypes() as $type) { - $types[] = Type::BUILTIN_TYPE_OBJECT === ($builtinType = $type->getBuiltinType()) ? $type->getClassName() : $builtinType; - } - } - - return $types; - } -} diff --git a/src/Api/UriVariablesConverterInterface.php b/src/Api/UriVariablesConverterInterface.php deleted file mode 100644 index 67c49092221..00000000000 --- a/src/Api/UriVariablesConverterInterface.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace ApiPlatform\Api; - -use ApiPlatform\Metadata\Exception\InvalidIdentifierException; - -/** - * Identifier converter. - * - * @author Antoine Bluchet - */ -interface UriVariablesConverterInterface -{ - /** - * Takes an array of strings representing URI variables (identifiers) and transform their values to the expected type. - * - * @param array $data URI variables to convert to PHP values - * @param string $class The class to which the URI variables belong to - * - * @throws InvalidIdentifierException - * - * @return array Array indexed by identifiers properties with their values denormalized - */ - public function convert(array $data, string $class, array $context = []): array; -} diff --git a/src/Api/UrlGeneratorInterface.php b/src/Api/UrlGeneratorInterface.php deleted file mode 100644 index b6ee97cf0cd..00000000000 --- a/src/Api/UrlGeneratorInterface.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace ApiPlatform\Api; - -use Symfony\Component\Routing\Exception\InvalidParameterException; -use Symfony\Component\Routing\Exception\MissingMandatoryParametersException; -use Symfony\Component\Routing\Exception\RouteNotFoundException; - -/** - * UrlGeneratorInterface is the interface that all URL generator classes must implement. - * - * This interface has been imported and adapted from the Symfony project. - * - * The constants in this interface define the different types of resource references that - * are declared in RFC 3986: http://tools.ietf.org/html/rfc3986 - * We are using the term "URL" instead of "URI" as this is more common in web applications - * and we do not need to distinguish them as the difference is mostly semantical and - * less technical. Generating URIs, i.e. representation-independent resource identifiers, - * is also possible. - * - * @author Fabien Potencier - * @author Tobias Schultze - * @copyright Fabien Potencier - */ -interface UrlGeneratorInterface -{ - /** - * Generates an absolute URL, e.g. "http://example.com/dir/file". - */ - public const ABS_URL = 0; - - /** - * Generates an absolute path, e.g. "/dir/file". - */ - public const ABS_PATH = 1; - - /** - * Generates a relative path based on the current request path, e.g. "../parent-file". - * - * @see UrlGenerator::getRelativePath() - */ - public const REL_PATH = 2; - - /** - * Generates a network path, e.g. "//example.com/dir/file". - * Such reference reuses the current scheme but specifies the host. - */ - public const NET_PATH = 3; - - /** - * Generates a URL or path for a specific route based on the given parameters. - * - * Parameters that reference placeholders in the route pattern will substitute them in the - * path or host. Extra params are added as query string to the URL. - * - * When the passed reference type cannot be generated for the route because it requires a different - * host or scheme than the current one, the method will return a more comprehensive reference - * that includes the required params. For example, when you call this method with $referenceType = ABSOLUTE_PATH - * but the route requires the https scheme whereas the current scheme is http, it will instead return an - * ABSOLUTE_URL with the https scheme and the current host. This makes sure the generated URL matches - * the route in any case. - * - * If there is no route with the given name, the generator must throw the RouteNotFoundException. - * - * The special parameter _fragment will be used as the document fragment suffixed to the final URL. - * - * @throws RouteNotFoundException If the named route doesn't exist - * @throws MissingMandatoryParametersException When some parameters are missing that are mandatory for the route - * @throws InvalidParameterException When a parameter value for a placeholder is not correct because - * it does not match the requirement - */ - public function generate(string $name, array $parameters = [], int $referenceType = self::ABS_PATH): string; -} diff --git a/src/Doctrine/Common/Filter/SearchFilterTrait.php b/src/Doctrine/Common/Filter/SearchFilterTrait.php index a9a57bc8b39..2dcb985490c 100644 --- a/src/Doctrine/Common/Filter/SearchFilterTrait.php +++ b/src/Doctrine/Common/Filter/SearchFilterTrait.php @@ -13,8 +13,6 @@ namespace ApiPlatform\Doctrine\Common\Filter; -use ApiPlatform\Api\IdentifiersExtractorInterface as LegacyIdentifiersExtractorInterface; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; use ApiPlatform\Doctrine\Common\PropertyHelperTrait; use ApiPlatform\Metadata\Exception\InvalidArgumentException; use ApiPlatform\Metadata\IdentifiersExtractorInterface; @@ -32,9 +30,9 @@ trait SearchFilterTrait { use PropertyHelperTrait; - protected IriConverterInterface|LegacyIriConverterInterface $iriConverter; + protected IriConverterInterface $iriConverter; protected PropertyAccessorInterface $propertyAccessor; - protected IdentifiersExtractorInterface|LegacyIdentifiersExtractorInterface|null $identifiersExtractor = null; + protected ?IdentifiersExtractorInterface $identifiersExtractor = null; /** * {@inheritdoc} @@ -111,7 +109,7 @@ abstract protected function getProperties(): ?array; abstract protected function getLogger(): LoggerInterface; - abstract protected function getIriConverter(): LegacyIriConverterInterface|IriConverterInterface; + abstract protected function getIriConverter(): IriConverterInterface; abstract protected function getPropertyAccessor(): PropertyAccessorInterface; diff --git a/src/Doctrine/Common/State/LinksHandlerTrait.php b/src/Doctrine/Common/State/LinksHandlerTrait.php index 3cbf95eca08..44d05911070 100644 --- a/src/Doctrine/Common/State/LinksHandlerTrait.php +++ b/src/Doctrine/Common/State/LinksHandlerTrait.php @@ -13,7 +13,7 @@ namespace ApiPlatform\Doctrine\Common\State; -use ApiPlatform\Exception\OperationNotFoundException; +use ApiPlatform\Metadata\Exception\OperationNotFoundException; use ApiPlatform\Metadata\Exception\RuntimeException; use ApiPlatform\Metadata\GraphQl\Operation as GraphQlOperation; use ApiPlatform\Metadata\GraphQl\Query; diff --git a/src/Doctrine/EventListener/PublishMercureUpdatesListener.php b/src/Doctrine/EventListener/PublishMercureUpdatesListener.php index 7ced9f2a1e8..0e085715980 100644 --- a/src/Doctrine/EventListener/PublishMercureUpdatesListener.php +++ b/src/Doctrine/EventListener/PublishMercureUpdatesListener.php @@ -13,13 +13,11 @@ namespace ApiPlatform\Doctrine\EventListener; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; -use ApiPlatform\Api\ResourceClassResolverInterface as LegacyResourceClassResolverInterface; -use ApiPlatform\Exception\InvalidArgumentException; -use ApiPlatform\Exception\OperationNotFoundException; -use ApiPlatform\Exception\RuntimeException; use ApiPlatform\GraphQl\Subscription\MercureSubscriptionIriGeneratorInterface as GraphQlMercureSubscriptionIriGeneratorInterface; use ApiPlatform\GraphQl\Subscription\SubscriptionManagerInterface as GraphQlSubscriptionManagerInterface; +use ApiPlatform\Metadata\Exception\InvalidArgumentException; +use ApiPlatform\Metadata\Exception\OperationNotFoundException; +use ApiPlatform\Metadata\Exception\RuntimeException; use ApiPlatform\Metadata\HttpOperation; use ApiPlatform\Metadata\IriConverterInterface; use ApiPlatform\Metadata\Operation; @@ -67,7 +65,7 @@ final class PublishMercureUpdatesListener /** * @param array $formats */ - public function __construct(LegacyResourceClassResolverInterface|ResourceClassResolverInterface $resourceClassResolver, private readonly LegacyIriConverterInterface|IriConverterInterface $iriConverter, ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory, private readonly SerializerInterface $serializer, private readonly array $formats, ?MessageBusInterface $messageBus = null, private readonly ?HubRegistry $hubRegistry = null, private readonly ?GraphQlSubscriptionManagerInterface $graphQlSubscriptionManager = null, private readonly ?GraphQlMercureSubscriptionIriGeneratorInterface $graphQlMercureSubscriptionIriGenerator = null, ?ExpressionLanguage $expressionLanguage = null, private bool $includeType = false) + public function __construct(ResourceClassResolverInterface $resourceClassResolver, private readonly IriConverterInterface $iriConverter, ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory, private readonly SerializerInterface $serializer, private readonly array $formats, ?MessageBusInterface $messageBus = null, private readonly ?HubRegistry $hubRegistry = null, private readonly ?GraphQlSubscriptionManagerInterface $graphQlSubscriptionManager = null, private readonly ?GraphQlMercureSubscriptionIriGeneratorInterface $graphQlMercureSubscriptionIriGenerator = null, ?ExpressionLanguage $expressionLanguage = null, private bool $includeType = false) { if (null === $messageBus && null === $hubRegistry) { throw new InvalidArgumentException('A message bus or a hub registry must be provided.'); diff --git a/src/Doctrine/EventListener/PurgeHttpCacheListener.php b/src/Doctrine/EventListener/PurgeHttpCacheListener.php index fa7b081e4dc..756725ac24e 100644 --- a/src/Doctrine/EventListener/PurgeHttpCacheListener.php +++ b/src/Doctrine/EventListener/PurgeHttpCacheListener.php @@ -13,12 +13,10 @@ namespace ApiPlatform\Doctrine\EventListener; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; -use ApiPlatform\Api\ResourceClassResolverInterface as LegacyResourceClassResolverInterface; -use ApiPlatform\Exception\InvalidArgumentException; -use ApiPlatform\Exception\OperationNotFoundException; -use ApiPlatform\Exception\RuntimeException; use ApiPlatform\HttpCache\PurgerInterface; +use ApiPlatform\Metadata\Exception\InvalidArgumentException; +use ApiPlatform\Metadata\Exception\OperationNotFoundException; +use ApiPlatform\Metadata\Exception\RuntimeException; use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\IriConverterInterface; use ApiPlatform\Metadata\ResourceClassResolverInterface; @@ -43,7 +41,7 @@ final class PurgeHttpCacheListener private readonly PropertyAccessorInterface $propertyAccessor; private array $tags = []; - public function __construct(private readonly PurgerInterface $purger, private readonly IriConverterInterface|LegacyIriConverterInterface $iriConverter, private readonly ResourceClassResolverInterface|LegacyResourceClassResolverInterface $resourceClassResolver, ?PropertyAccessorInterface $propertyAccessor = null) + public function __construct(private readonly PurgerInterface $purger, private readonly IriConverterInterface $iriConverter, private readonly ResourceClassResolverInterface $resourceClassResolver, ?PropertyAccessorInterface $propertyAccessor = null) { $this->propertyAccessor = $propertyAccessor ?? PropertyAccess::createPropertyAccessor(); } diff --git a/src/Doctrine/Odm/Filter/SearchFilter.php b/src/Doctrine/Odm/Filter/SearchFilter.php index 46d1e091e35..ecac83986db 100644 --- a/src/Doctrine/Odm/Filter/SearchFilter.php +++ b/src/Doctrine/Odm/Filter/SearchFilter.php @@ -13,8 +13,6 @@ namespace ApiPlatform\Doctrine\Odm\Filter; -use ApiPlatform\Api\IdentifiersExtractorInterface as LegacyIdentifiersExtractorInterface; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; use ApiPlatform\Doctrine\Common\Filter\SearchFilterInterface; use ApiPlatform\Doctrine\Common\Filter\SearchFilterTrait; use ApiPlatform\Metadata\Exception\InvalidArgumentException; @@ -142,7 +140,7 @@ final class SearchFilter extends AbstractFilter implements SearchFilterInterface public const DOCTRINE_INTEGER_TYPE = [MongoDbType::INTEGER, MongoDbType::INT]; - public function __construct(ManagerRegistry $managerRegistry, IriConverterInterface|LegacyIriConverterInterface $iriConverter, IdentifiersExtractorInterface|LegacyIdentifiersExtractorInterface|null $identifiersExtractor, ?PropertyAccessorInterface $propertyAccessor = null, ?LoggerInterface $logger = null, ?array $properties = null, ?NameConverterInterface $nameConverter = null) + public function __construct(ManagerRegistry $managerRegistry, IriConverterInterface $iriConverter, ?IdentifiersExtractorInterface $identifiersExtractor, ?PropertyAccessorInterface $propertyAccessor = null, ?LoggerInterface $logger = null, ?array $properties = null, ?NameConverterInterface $nameConverter = null) { parent::__construct($managerRegistry, $logger, $properties, $nameConverter); @@ -151,7 +149,7 @@ public function __construct(ManagerRegistry $managerRegistry, IriConverterInterf $this->propertyAccessor = $propertyAccessor ?: PropertyAccess::createPropertyAccessor(); } - protected function getIriConverter(): LegacyIriConverterInterface|IriConverterInterface + protected function getIriConverter(): IriConverterInterface { return $this->iriConverter; } diff --git a/src/Doctrine/Odm/State/LinksHandlerTrait.php b/src/Doctrine/Odm/State/LinksHandlerTrait.php index 352a36bc212..179dc1a89c5 100644 --- a/src/Doctrine/Odm/State/LinksHandlerTrait.php +++ b/src/Doctrine/Odm/State/LinksHandlerTrait.php @@ -14,7 +14,7 @@ namespace ApiPlatform\Doctrine\Odm\State; use ApiPlatform\Doctrine\Common\State\LinksHandlerTrait as CommonLinksHandlerTrait; -use ApiPlatform\Exception\RuntimeException; +use ApiPlatform\Metadata\Exception\RuntimeException; use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Operation; use Doctrine\ODM\MongoDB\Aggregation\Builder; diff --git a/src/Doctrine/Orm/Extension/FilterEagerLoadingExtension.php b/src/Doctrine/Orm/Extension/FilterEagerLoadingExtension.php index daba5d97f9d..8145fa61692 100644 --- a/src/Doctrine/Orm/Extension/FilterEagerLoadingExtension.php +++ b/src/Doctrine/Orm/Extension/FilterEagerLoadingExtension.php @@ -15,7 +15,7 @@ use ApiPlatform\Doctrine\Orm\Util\QueryBuilderHelper; use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface; -use ApiPlatform\Exception\InvalidArgumentException; +use ApiPlatform\Metadata\Exception\InvalidArgumentException; use ApiPlatform\Metadata\Operation; use ApiPlatform\Metadata\ResourceClassResolverInterface; use Doctrine\ORM\EntityManagerInterface; diff --git a/src/Doctrine/Orm/Extension/FilterExtension.php b/src/Doctrine/Orm/Extension/FilterExtension.php index 298eff2905a..801e9c4a685 100644 --- a/src/Doctrine/Orm/Extension/FilterExtension.php +++ b/src/Doctrine/Orm/Extension/FilterExtension.php @@ -16,7 +16,7 @@ use ApiPlatform\Doctrine\Orm\Filter\FilterInterface; use ApiPlatform\Doctrine\Orm\Filter\OrderFilter; use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface; -use ApiPlatform\Exception\InvalidArgumentException; +use ApiPlatform\Metadata\Exception\InvalidArgumentException; use ApiPlatform\Metadata\Operation; use Doctrine\ORM\QueryBuilder; use Psr\Container\ContainerInterface; diff --git a/src/Doctrine/Orm/Extension/OrderExtension.php b/src/Doctrine/Orm/Extension/OrderExtension.php index a3833837f58..39890727c90 100644 --- a/src/Doctrine/Orm/Extension/OrderExtension.php +++ b/src/Doctrine/Orm/Extension/OrderExtension.php @@ -15,7 +15,7 @@ use ApiPlatform\Doctrine\Orm\Util\QueryBuilderHelper; use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface; -use ApiPlatform\Exception\InvalidArgumentException; +use ApiPlatform\Metadata\Exception\InvalidArgumentException; use ApiPlatform\Metadata\Operation; use Doctrine\ORM\QueryBuilder; diff --git a/src/Doctrine/Orm/Extension/PaginationExtension.php b/src/Doctrine/Orm/Extension/PaginationExtension.php index 80513e45b49..9b4ab0d1f11 100644 --- a/src/Doctrine/Orm/Extension/PaginationExtension.php +++ b/src/Doctrine/Orm/Extension/PaginationExtension.php @@ -17,7 +17,7 @@ use ApiPlatform\Doctrine\Orm\Paginator; use ApiPlatform\Doctrine\Orm\Util\QueryChecker; use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface; -use ApiPlatform\Exception\InvalidArgumentException; +use ApiPlatform\Metadata\Exception\InvalidArgumentException; use ApiPlatform\Metadata\Operation; use ApiPlatform\State\Pagination\Pagination; use Doctrine\ORM\QueryBuilder; diff --git a/src/Doctrine/Orm/Filter/SearchFilter.php b/src/Doctrine/Orm/Filter/SearchFilter.php index 3b09533f6ca..61b35b77bd7 100644 --- a/src/Doctrine/Orm/Filter/SearchFilter.php +++ b/src/Doctrine/Orm/Filter/SearchFilter.php @@ -13,8 +13,6 @@ namespace ApiPlatform\Doctrine\Orm\Filter; -use ApiPlatform\Api\IdentifiersExtractorInterface as LegacyIdentifiersExtractorInterface; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; use ApiPlatform\Doctrine\Common\Filter\SearchFilterInterface; use ApiPlatform\Doctrine\Common\Filter\SearchFilterTrait; use ApiPlatform\Doctrine\Orm\Util\QueryBuilderHelper; @@ -141,7 +139,7 @@ final class SearchFilter extends AbstractFilter implements SearchFilterInterface public const DOCTRINE_INTEGER_TYPE = Types::INTEGER; - public function __construct(ManagerRegistry $managerRegistry, IriConverterInterface|LegacyIriConverterInterface $iriConverter, ?PropertyAccessorInterface $propertyAccessor = null, ?LoggerInterface $logger = null, ?array $properties = null, IdentifiersExtractorInterface|LegacyIdentifiersExtractorInterface|null $identifiersExtractor = null, ?NameConverterInterface $nameConverter = null) + public function __construct(ManagerRegistry $managerRegistry, IriConverterInterface $iriConverter, ?PropertyAccessorInterface $propertyAccessor = null, ?LoggerInterface $logger = null, ?array $properties = null, ?IdentifiersExtractorInterface $identifiersExtractor = null, ?NameConverterInterface $nameConverter = null) { parent::__construct($managerRegistry, $logger, $properties, $nameConverter); @@ -150,7 +148,7 @@ public function __construct(ManagerRegistry $managerRegistry, IriConverterInterf $this->propertyAccessor = $propertyAccessor ?: PropertyAccess::createPropertyAccessor(); } - protected function getIriConverter(): IriConverterInterface|LegacyIriConverterInterface + protected function getIriConverter(): IriConverterInterface { return $this->iriConverter; } diff --git a/src/Doctrine/Orm/Metadata/Resource/DoctrineOrmLinkFactory.php b/src/Doctrine/Orm/Metadata/Resource/DoctrineOrmLinkFactory.php index 1922ccdee44..bf958b80727 100644 --- a/src/Doctrine/Orm/Metadata/Resource/DoctrineOrmLinkFactory.php +++ b/src/Doctrine/Orm/Metadata/Resource/DoctrineOrmLinkFactory.php @@ -13,7 +13,6 @@ namespace ApiPlatform\Doctrine\Orm\Metadata\Resource; -use ApiPlatform\Api\ResourceClassResolverInterface as LegacyResourceClassResolverInterface; use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Metadata; use ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface; @@ -28,7 +27,7 @@ */ final class DoctrineOrmLinkFactory implements LinkFactoryInterface, PropertyLinkFactoryInterface { - public function __construct(private readonly ManagerRegistry $managerRegistry, private readonly PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory, private readonly ResourceClassResolverInterface|LegacyResourceClassResolverInterface $resourceClassResolver, private readonly LinkFactoryInterface&PropertyLinkFactoryInterface $linkFactory) + public function __construct(private readonly ManagerRegistry $managerRegistry, private readonly PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory, private readonly ResourceClassResolverInterface $resourceClassResolver, private readonly LinkFactoryInterface&PropertyLinkFactoryInterface $linkFactory) { } diff --git a/src/Doctrine/Orm/PropertyHelperTrait.php b/src/Doctrine/Orm/PropertyHelperTrait.php index e0b9a146a04..a8086ca15d0 100644 --- a/src/Doctrine/Orm/PropertyHelperTrait.php +++ b/src/Doctrine/Orm/PropertyHelperTrait.php @@ -15,7 +15,7 @@ use ApiPlatform\Doctrine\Orm\Util\QueryBuilderHelper; use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface; -use ApiPlatform\Exception\InvalidArgumentException; +use ApiPlatform\Metadata\Exception\InvalidArgumentException; use Doctrine\ORM\Mapping\ClassMetadata as ClassMetadataInfo; use Doctrine\ORM\QueryBuilder; use Doctrine\Persistence\ManagerRegistry; diff --git a/src/Doctrine/Orm/State/Options.php b/src/Doctrine/Orm/State/Options.php index 397d2da758a..3a9a46c3825 100644 --- a/src/Doctrine/Orm/State/Options.php +++ b/src/Doctrine/Orm/State/Options.php @@ -42,17 +42,4 @@ public function withEntityClass(?string $entityClass): self return $self; } - - public function getHandleLinks(): mixed - { - return $this->handleLinks; - } - - public function withHandleLinks(mixed $handleLinks): self - { - $self = clone $this; - $self->handleLinks = $handleLinks; - - return $self; - } } diff --git a/src/Doctrine/Orm/Tests/Metadata/Resource/DoctrineOrmLinkFactoryTest.php b/src/Doctrine/Orm/Tests/Metadata/Resource/DoctrineOrmLinkFactoryTest.php index 3c16c0fbb6e..65b5eee9b12 100644 --- a/src/Doctrine/Orm/Tests/Metadata/Resource/DoctrineOrmLinkFactoryTest.php +++ b/src/Doctrine/Orm/Tests/Metadata/Resource/DoctrineOrmLinkFactoryTest.php @@ -13,7 +13,6 @@ namespace ApiPlatform\Doctrine\Orm\Tests\Metadata\Resource; -use ApiPlatform\Api\ResourceClassResolverInterface; use ApiPlatform\Doctrine\Orm\Metadata\Resource\DoctrineOrmLinkFactory; use ApiPlatform\Doctrine\Orm\Tests\Fixtures\Entity\Dummy; use ApiPlatform\Doctrine\Orm\Tests\Fixtures\Entity\RelatedDummy; @@ -25,6 +24,7 @@ use ApiPlatform\Metadata\Property\PropertyNameCollection; use ApiPlatform\Metadata\Resource\Factory\LinkFactoryInterface; use ApiPlatform\Metadata\Resource\Factory\PropertyLinkFactoryInterface; +use ApiPlatform\Metadata\ResourceClassResolverInterface; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Mapping\ClassMetadata; use Doctrine\Persistence\ManagerRegistry; diff --git a/src/Documentation/Action/DocumentationAction.php b/src/Documentation/Action/DocumentationAction.php index 54e4a35fb83..a33639da10a 100644 --- a/src/Documentation/Action/DocumentationAction.php +++ b/src/Documentation/Action/DocumentationAction.php @@ -98,6 +98,7 @@ class: OpenApi::class, ); if ('html' === $format) { + // TODO: support laravel this bounds Documentation with Symfony so it's not perfect $operation = $operation->withProcessor('api_platform.swagger_ui.processor')->withWrite(true); } if ('json' === $format) { diff --git a/src/Documentation/composer.json b/src/Documentation/composer.json index 2b67643f070..a7a4b1612f5 100644 --- a/src/Documentation/composer.json +++ b/src/Documentation/composer.json @@ -26,5 +26,8 @@ "branch-alias": { "dev-main": "3.3.x-dev" } + }, + "require-dev": { + "phpunit/phpunit": "^11.2" } } diff --git a/src/Exception/ErrorCodeSerializableInterface.php b/src/Exception/ErrorCodeSerializableInterface.php index 7d2fd3fcf17..8baf398fc40 100644 --- a/src/Exception/ErrorCodeSerializableInterface.php +++ b/src/Exception/ErrorCodeSerializableInterface.php @@ -15,6 +15,8 @@ /** * An exception which has a serializable application-specific error code. + * + * @deprecated in favor of ApiPlatform\Metadata\Exception\ErrorCodeSerializableInterface */ interface ErrorCodeSerializableInterface { diff --git a/src/GraphQl/Serializer/ObjectNormalizer.php b/src/GraphQl/Serializer/ObjectNormalizer.php index 03f0272fb77..da1edf5a50b 100644 --- a/src/GraphQl/Serializer/ObjectNormalizer.php +++ b/src/GraphQl/Serializer/ObjectNormalizer.php @@ -13,8 +13,6 @@ namespace ApiPlatform\GraphQl\Serializer; -use ApiPlatform\Api\IdentifiersExtractorInterface as LegacyIdentifiersExtractorInterface; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; use ApiPlatform\Metadata\IdentifiersExtractorInterface; use ApiPlatform\Metadata\IriConverterInterface; use ApiPlatform\Metadata\Util\ClassInfoTrait; @@ -36,7 +34,7 @@ final class ObjectNormalizer implements NormalizerInterface, CacheableSupportsMe public const ITEM_RESOURCE_CLASS_KEY = '#itemResourceClass'; public const ITEM_IDENTIFIERS_KEY = '#itemIdentifiers'; - public function __construct(private readonly NormalizerInterface $decorated, private readonly IriConverterInterface|LegacyIriConverterInterface $iriConverter, private readonly IdentifiersExtractorInterface|LegacyIdentifiersExtractorInterface $identifiersExtractor) + public function __construct(private readonly NormalizerInterface $decorated, private readonly IriConverterInterface $iriConverter, private readonly IdentifiersExtractorInterface $identifiersExtractor) { } diff --git a/src/Hal/Serializer/CollectionNormalizer.php b/src/Hal/Serializer/CollectionNormalizer.php index 8cce319c174..5357e843a6b 100644 --- a/src/Hal/Serializer/CollectionNormalizer.php +++ b/src/Hal/Serializer/CollectionNormalizer.php @@ -13,7 +13,6 @@ namespace ApiPlatform\Hal\Serializer; -use ApiPlatform\Api\ResourceClassResolverInterface as LegacyResourceClassResolverInterface; use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; use ApiPlatform\Metadata\ResourceClassResolverInterface; use ApiPlatform\Serializer\AbstractCollectionNormalizer; @@ -30,7 +29,7 @@ final class CollectionNormalizer extends AbstractCollectionNormalizer { public const FORMAT = 'jsonhal'; - public function __construct(ResourceClassResolverInterface|LegacyResourceClassResolverInterface $resourceClassResolver, string $pageParameterName, ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory) + public function __construct(ResourceClassResolverInterface $resourceClassResolver, string $pageParameterName, ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory) { parent::__construct($resourceClassResolver, $pageParameterName, $resourceMetadataFactory); } diff --git a/src/Hal/Serializer/EntrypointNormalizer.php b/src/Hal/Serializer/EntrypointNormalizer.php index 8bea0ac875c..79c43d9a1e5 100644 --- a/src/Hal/Serializer/EntrypointNormalizer.php +++ b/src/Hal/Serializer/EntrypointNormalizer.php @@ -13,12 +13,9 @@ namespace ApiPlatform\Hal\Serializer; -use ApiPlatform\Api\Entrypoint; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; -use ApiPlatform\Api\UrlGeneratorInterface as LegacyUrlGeneratorInterface; -use ApiPlatform\Documentation\Entrypoint as DocumentationEntrypoint; -use ApiPlatform\Exception\InvalidArgumentException; +use ApiPlatform\Documentation\Entrypoint; use ApiPlatform\Metadata\CollectionOperationInterface; +use ApiPlatform\Metadata\Exception\InvalidArgumentException; use ApiPlatform\Metadata\IriConverterInterface; use ApiPlatform\Metadata\Operation; use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; @@ -36,7 +33,7 @@ final class EntrypointNormalizer implements NormalizerInterface, CacheableSuppor { public const FORMAT = 'jsonhal'; - public function __construct(private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory, private readonly IriConverterInterface|LegacyIriConverterInterface $iriConverter, private readonly LegacyUrlGeneratorInterface|UrlGeneratorInterface $urlGenerator) + public function __construct(private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory, private readonly IriConverterInterface $iriConverter, private readonly UrlGeneratorInterface $urlGenerator) { } @@ -75,12 +72,12 @@ public function normalize(mixed $object, ?string $format = null, array $context */ public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool { - return self::FORMAT === $format && ($data instanceof Entrypoint || $data instanceof DocumentationEntrypoint); + return self::FORMAT === $format && $data instanceof Entrypoint; } public function getSupportedTypes($format): array { - return self::FORMAT === $format ? [Entrypoint::class => true, DocumentationEntrypoint::class => true] : []; + return self::FORMAT === $format ? [Entrypoint::class => true] : []; } public function hasCacheableSupportsMethod(): bool diff --git a/src/Hal/Serializer/ObjectNormalizer.php b/src/Hal/Serializer/ObjectNormalizer.php index ec1ec5df213..8c5a4677de0 100644 --- a/src/Hal/Serializer/ObjectNormalizer.php +++ b/src/Hal/Serializer/ObjectNormalizer.php @@ -13,7 +13,6 @@ namespace ApiPlatform\Hal\Serializer; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; use ApiPlatform\Metadata\IriConverterInterface; use ApiPlatform\Serializer\CacheableSupportsMethodInterface; use Symfony\Component\Serializer\Exception\LogicException; @@ -30,7 +29,7 @@ final class ObjectNormalizer implements NormalizerInterface, DenormalizerInterfa { public const FORMAT = 'jsonhal'; - public function __construct(private readonly NormalizerInterface $decorated, private readonly IriConverterInterface|LegacyIriConverterInterface $iriConverter) + public function __construct(private readonly NormalizerInterface $decorated, private readonly IriConverterInterface $iriConverter) { } diff --git a/src/Hydra/EventListener/AddLinkHeaderListener.php b/src/Hydra/EventListener/AddLinkHeaderListener.php index 397ab5ea2c4..666aa204d5d 100644 --- a/src/Hydra/EventListener/AddLinkHeaderListener.php +++ b/src/Hydra/EventListener/AddLinkHeaderListener.php @@ -13,7 +13,6 @@ namespace ApiPlatform\Hydra\EventListener; -use ApiPlatform\Api\UrlGeneratorInterface as LegacyUrlGeneratorInterface; use ApiPlatform\JsonLd\ContextBuilder; use ApiPlatform\Metadata\UrlGeneratorInterface; use ApiPlatform\State\Util\CorsTrait; @@ -33,7 +32,7 @@ final class AddLinkHeaderListener { use CorsTrait; - public function __construct(private readonly UrlGeneratorInterface|LegacyUrlGeneratorInterface $urlGenerator) + public function __construct(private readonly UrlGeneratorInterface $urlGenerator) { } diff --git a/src/Hydra/Serializer/CollectionFiltersNormalizer.php b/src/Hydra/Serializer/CollectionFiltersNormalizer.php index d0d0893225c..d977eb39449 100644 --- a/src/Hydra/Serializer/CollectionFiltersNormalizer.php +++ b/src/Hydra/Serializer/CollectionFiltersNormalizer.php @@ -13,7 +13,6 @@ namespace ApiPlatform\Hydra\Serializer; -use ApiPlatform\Api\ResourceClassResolverInterface as LegacyResourceClassResolverInterface; use ApiPlatform\Doctrine\Odm\State\Options as ODMOptions; use ApiPlatform\Doctrine\Orm\State\Options; use ApiPlatform\Metadata\FilterInterface; @@ -43,7 +42,7 @@ final class CollectionFiltersNormalizer implements NormalizerInterface, Normaliz /** * @param ContainerInterface $filterLocator The new filter locator or the deprecated filter collection */ - public function __construct(private readonly NormalizerInterface $collectionNormalizer, private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataCollectionFactory, private readonly LegacyResourceClassResolverInterface|ResourceClassResolverInterface $resourceClassResolver, ContainerInterface $filterLocator) + public function __construct(private readonly NormalizerInterface $collectionNormalizer, private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataCollectionFactory, private readonly ResourceClassResolverInterface $resourceClassResolver, ContainerInterface $filterLocator) { $this->filterLocator = $filterLocator; } diff --git a/src/Hydra/Serializer/CollectionNormalizer.php b/src/Hydra/Serializer/CollectionNormalizer.php index 5eb308a6c64..3e92c85aed4 100644 --- a/src/Hydra/Serializer/CollectionNormalizer.php +++ b/src/Hydra/Serializer/CollectionNormalizer.php @@ -13,8 +13,6 @@ namespace ApiPlatform\Hydra\Serializer; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; -use ApiPlatform\Api\ResourceClassResolverInterface as LegacyResourceClassResolverInterface; use ApiPlatform\JsonLd\ContextBuilderInterface; use ApiPlatform\JsonLd\Serializer\JsonLdContextTrait; use ApiPlatform\Metadata\IriConverterInterface; @@ -41,7 +39,7 @@ final class CollectionNormalizer extends AbstractCollectionNormalizer self::IRI_ONLY => false, ]; - public function __construct(private readonly ContextBuilderInterface $contextBuilder, LegacyResourceClassResolverInterface|ResourceClassResolverInterface $resourceClassResolver, private readonly LegacyIriConverterInterface|IriConverterInterface $iriConverter, readonly ?ResourceMetadataCollectionFactoryInterface $resourceMetadataCollectionFactory = null, array $defaultContext = []) + public function __construct(private readonly ContextBuilderInterface $contextBuilder, ResourceClassResolverInterface $resourceClassResolver, private readonly IriConverterInterface $iriConverter, readonly ?ResourceMetadataCollectionFactoryInterface $resourceMetadataCollectionFactory = null, array $defaultContext = []) { $this->defaultContext = array_merge($this->defaultContext, $defaultContext); diff --git a/src/Hydra/Serializer/ConstraintViolationListNormalizer.php b/src/Hydra/Serializer/ConstraintViolationListNormalizer.php index 86c5d088930..9deb6c092ab 100644 --- a/src/Hydra/Serializer/ConstraintViolationListNormalizer.php +++ b/src/Hydra/Serializer/ConstraintViolationListNormalizer.php @@ -13,7 +13,7 @@ namespace ApiPlatform\Hydra\Serializer; -use ApiPlatform\Api\UrlGeneratorInterface; +use ApiPlatform\Metadata\UrlGeneratorInterface; use ApiPlatform\Serializer\AbstractConstraintViolationListNormalizer; use Symfony\Component\Serializer\NameConverter\NameConverterInterface; diff --git a/src/Hydra/Serializer/DocumentationNormalizer.php b/src/Hydra/Serializer/DocumentationNormalizer.php index e7b35f9b3da..bca9d66cad0 100644 --- a/src/Hydra/Serializer/DocumentationNormalizer.php +++ b/src/Hydra/Serializer/DocumentationNormalizer.php @@ -13,8 +13,6 @@ namespace ApiPlatform\Hydra\Serializer; -use ApiPlatform\Api\ResourceClassResolverInterface as LegacyResourceClassResolverInterface; -use ApiPlatform\Api\UrlGeneratorInterface as LegacyUrlGeneratorInterface; use ApiPlatform\Documentation\Documentation; use ApiPlatform\JsonLd\ContextBuilderInterface; use ApiPlatform\Metadata\ApiProperty; @@ -46,7 +44,7 @@ final class DocumentationNormalizer implements NormalizerInterface, CacheableSup { public const FORMAT = 'jsonld'; - public function __construct(private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory, private readonly PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory, private readonly PropertyMetadataFactoryInterface $propertyMetadataFactory, private readonly ResourceClassResolverInterface|LegacyResourceClassResolverInterface $resourceClassResolver, private readonly UrlGeneratorInterface|LegacyUrlGeneratorInterface $urlGenerator, private readonly ?NameConverterInterface $nameConverter = null) + public function __construct(private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory, private readonly PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory, private readonly PropertyMetadataFactoryInterface $propertyMetadataFactory, private readonly ResourceClassResolverInterface $resourceClassResolver, private readonly UrlGeneratorInterface $urlGenerator, private readonly ?NameConverterInterface $nameConverter = null) { } diff --git a/src/Hydra/Serializer/EntrypointNormalizer.php b/src/Hydra/Serializer/EntrypointNormalizer.php index 669099a33f6..8cde1d83870 100644 --- a/src/Hydra/Serializer/EntrypointNormalizer.php +++ b/src/Hydra/Serializer/EntrypointNormalizer.php @@ -13,13 +13,10 @@ namespace ApiPlatform\Hydra\Serializer; -use ApiPlatform\Api\Entrypoint; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; -use ApiPlatform\Api\UrlGeneratorInterface as LegacyUrlGeneratorInterface; -use ApiPlatform\Documentation\Entrypoint as DocumentationEntrypoint; -use ApiPlatform\Exception\InvalidArgumentException; -use ApiPlatform\Exception\OperationNotFoundException; +use ApiPlatform\Documentation\Entrypoint; use ApiPlatform\Metadata\CollectionOperationInterface; +use ApiPlatform\Metadata\Exception\InvalidArgumentException; +use ApiPlatform\Metadata\Exception\OperationNotFoundException; use ApiPlatform\Metadata\IriConverterInterface; use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; use ApiPlatform\Metadata\UrlGeneratorInterface; @@ -36,7 +33,7 @@ final class EntrypointNormalizer implements NormalizerInterface, CacheableSuppor { public const FORMAT = 'jsonld'; - public function __construct(private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory, private readonly IriConverterInterface|LegacyIriConverterInterface $iriConverter, private readonly UrlGeneratorInterface|LegacyUrlGeneratorInterface $urlGenerator) + public function __construct(private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory, private readonly IriConverterInterface $iriConverter, private readonly UrlGeneratorInterface $urlGenerator) { } @@ -84,12 +81,12 @@ public function normalize(mixed $object, ?string $format = null, array $context */ public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool { - return self::FORMAT === $format && ($data instanceof Entrypoint || $data instanceof DocumentationEntrypoint); + return self::FORMAT === $format && $data instanceof Entrypoint; } public function getSupportedTypes($format): array { - return self::FORMAT === $format ? [Entrypoint::class => true, DocumentationEntrypoint::class => true] : []; + return self::FORMAT === $format ? [Entrypoint::class => true] : []; } public function hasCacheableSupportsMethod(): bool diff --git a/src/Hydra/Serializer/ErrorNormalizer.php b/src/Hydra/Serializer/ErrorNormalizer.php index fa8c9634a58..7258f6181ff 100644 --- a/src/Hydra/Serializer/ErrorNormalizer.php +++ b/src/Hydra/Serializer/ErrorNormalizer.php @@ -13,7 +13,7 @@ namespace ApiPlatform\Hydra\Serializer; -use ApiPlatform\Api\UrlGeneratorInterface; +use ApiPlatform\Metadata\UrlGeneratorInterface; use ApiPlatform\Serializer\CacheableSupportsMethodInterface; use ApiPlatform\State\ApiResource\Error; use Symfony\Component\ErrorHandler\Exception\FlattenException; diff --git a/src/Hydra/Serializer/ErrorNormalizerTrait.php b/src/Hydra/Serializer/ErrorNormalizerTrait.php index 12fec8ff0fc..a02fe655e16 100644 --- a/src/Hydra/Serializer/ErrorNormalizerTrait.php +++ b/src/Hydra/Serializer/ErrorNormalizerTrait.php @@ -13,7 +13,7 @@ namespace ApiPlatform\Hydra\Serializer; -use ApiPlatform\Exception\ErrorCodeSerializableInterface; +use ApiPlatform\Metadata\Exception\ErrorCodeSerializableInterface; use Symfony\Component\ErrorHandler\Exception\FlattenException; use Symfony\Component\HttpFoundation\Response; diff --git a/src/JsonApi/.gitattributes b/src/JsonApi/.gitattributes new file mode 100644 index 00000000000..ae3c2e1685a --- /dev/null +++ b/src/JsonApi/.gitattributes @@ -0,0 +1,2 @@ +/.gitignore export-ignore +/Tests export-ignore diff --git a/src/JsonApi/.gitignore b/src/JsonApi/.gitignore new file mode 100644 index 00000000000..eb0a8e7b262 --- /dev/null +++ b/src/JsonApi/.gitignore @@ -0,0 +1,3 @@ +/composer.lock +/vendor +/.phpunit.result.cache diff --git a/src/JsonApi/JsonSchema/SchemaFactory.php b/src/JsonApi/JsonSchema/SchemaFactory.php index e40ff6a2868..6cd4d7e1e86 100644 --- a/src/JsonApi/JsonSchema/SchemaFactory.php +++ b/src/JsonApi/JsonSchema/SchemaFactory.php @@ -13,7 +13,6 @@ namespace ApiPlatform\JsonApi\JsonSchema; -use ApiPlatform\Api\ResourceClassResolverInterface as LegacyResourceClassResolverInterface; use ApiPlatform\JsonSchema\DefinitionNameFactoryInterface; use ApiPlatform\JsonSchema\ResourceMetadataTrait; use ApiPlatform\JsonSchema\Schema; @@ -106,7 +105,7 @@ final class SchemaFactory implements SchemaFactoryInterface, SchemaFactoryAwareI ], ]; - public function __construct(private readonly SchemaFactoryInterface $schemaFactory, private readonly PropertyMetadataFactoryInterface $propertyMetadataFactory, ResourceClassResolverInterface|LegacyResourceClassResolverInterface $resourceClassResolver, ?ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory = null, private readonly ?DefinitionNameFactoryInterface $definitionNameFactory = null) + public function __construct(private readonly SchemaFactoryInterface $schemaFactory, private readonly PropertyMetadataFactoryInterface $propertyMetadataFactory, ResourceClassResolverInterface $resourceClassResolver, ?ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory = null, private readonly ?DefinitionNameFactoryInterface $definitionNameFactory = null) { if ($this->schemaFactory instanceof SchemaFactoryAwareInterface) { $this->schemaFactory->setSchemaFactory($this); diff --git a/src/JsonApi/Serializer/CollectionNormalizer.php b/src/JsonApi/Serializer/CollectionNormalizer.php index 8fe2be7c32b..3d55a0b057c 100644 --- a/src/JsonApi/Serializer/CollectionNormalizer.php +++ b/src/JsonApi/Serializer/CollectionNormalizer.php @@ -13,11 +13,10 @@ namespace ApiPlatform\JsonApi\Serializer; -use ApiPlatform\Api\ResourceClassResolverInterface as LegacyResourceClassResolverInterface; +use ApiPlatform\JsonApi\Util\IriHelper; use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; use ApiPlatform\Metadata\ResourceClassResolverInterface; use ApiPlatform\Serializer\AbstractCollectionNormalizer; -use ApiPlatform\Util\IriHelper; use Symfony\Component\Serializer\Exception\UnexpectedValueException; /** @@ -31,7 +30,7 @@ final class CollectionNormalizer extends AbstractCollectionNormalizer { public const FORMAT = 'jsonapi'; - public function __construct(ResourceClassResolverInterface|LegacyResourceClassResolverInterface $resourceClassResolver, string $pageParameterName, ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory) + public function __construct(ResourceClassResolverInterface $resourceClassResolver, string $pageParameterName, ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory) { parent::__construct($resourceClassResolver, $pageParameterName, $resourceMetadataFactory); } diff --git a/src/JsonApi/Serializer/EntrypointNormalizer.php b/src/JsonApi/Serializer/EntrypointNormalizer.php index 5414d4da658..6dc1e1e0c7e 100644 --- a/src/JsonApi/Serializer/EntrypointNormalizer.php +++ b/src/JsonApi/Serializer/EntrypointNormalizer.php @@ -13,12 +13,9 @@ namespace ApiPlatform\JsonApi\Serializer; -use ApiPlatform\Api\Entrypoint; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; -use ApiPlatform\Api\UrlGeneratorInterface as LegacyUrlGeneratorInterface; -use ApiPlatform\Documentation\Entrypoint as DocumentationEntrypoint; -use ApiPlatform\Exception\InvalidArgumentException; +use ApiPlatform\Documentation\Entrypoint; use ApiPlatform\Metadata\CollectionOperationInterface; +use ApiPlatform\Metadata\Exception\InvalidArgumentException; use ApiPlatform\Metadata\HttpOperation; use ApiPlatform\Metadata\IriConverterInterface; use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; @@ -37,7 +34,7 @@ final class EntrypointNormalizer implements NormalizerInterface, CacheableSuppor { public const FORMAT = 'jsonapi'; - public function __construct(private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory, private readonly IriConverterInterface|LegacyIriConverterInterface $iriConverter, private readonly UrlGeneratorInterface|LegacyUrlGeneratorInterface $urlGenerator) + public function __construct(private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory, private readonly IriConverterInterface $iriConverter, private readonly UrlGeneratorInterface $urlGenerator) { } @@ -75,12 +72,12 @@ public function normalize(mixed $object, ?string $format = null, array $context */ public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool { - return self::FORMAT === $format && ($data instanceof Entrypoint || $data instanceof DocumentationEntrypoint); + return self::FORMAT === $format && $data instanceof Entrypoint; } public function getSupportedTypes($format): array { - return self::FORMAT === $format ? [Entrypoint::class => true, DocumentationEntrypoint::class => true] : []; + return self::FORMAT === $format ? [Entrypoint::class => true] : []; } public function hasCacheableSupportsMethod(): bool diff --git a/src/JsonApi/Serializer/ErrorNormalizer.php b/src/JsonApi/Serializer/ErrorNormalizer.php index 19764afa3bf..6249a07231c 100644 --- a/src/JsonApi/Serializer/ErrorNormalizer.php +++ b/src/JsonApi/Serializer/ErrorNormalizer.php @@ -13,7 +13,6 @@ namespace ApiPlatform\JsonApi\Serializer; -use ApiPlatform\Problem\Serializer\ErrorNormalizerTrait; use ApiPlatform\Serializer\CacheableSupportsMethodInterface; use ApiPlatform\Symfony\Validator\Exception\ConstraintViolationListAwareExceptionInterface as LegacyConstraintViolationListAwareExceptionInterface; use ApiPlatform\Validator\Exception\ConstraintViolationListAwareExceptionInterface; diff --git a/src/JsonApi/Serializer/ErrorNormalizerTrait.php b/src/JsonApi/Serializer/ErrorNormalizerTrait.php new file mode 100644 index 00000000000..ffb08c454ee --- /dev/null +++ b/src/JsonApi/Serializer/ErrorNormalizerTrait.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\JsonApi\Serializer; + +use ApiPlatform\Metadata\Exception\ErrorCodeSerializableInterface; +use Symfony\Component\ErrorHandler\Exception\FlattenException; +use Symfony\Component\HttpFoundation\Response; + +/** + * @internal + */ +trait ErrorNormalizerTrait +{ + private function getErrorMessage($object, array $context, bool $debug = false): string + { + $message = $object->getMessage(); + + if ($debug) { + return $message; + } + + if ($object instanceof FlattenException) { + $statusCode = $context['statusCode'] ?? $object->getStatusCode(); + if ($statusCode >= 500 && $statusCode < 600) { + $message = Response::$statusTexts[$statusCode] ?? Response::$statusTexts[Response::HTTP_INTERNAL_SERVER_ERROR]; + } + } + + return $message; + } + + private function getErrorCode(object $object): ?string + { + if ($object instanceof FlattenException) { + $exceptionClass = $object->getClass(); + } else { + $exceptionClass = $object::class; + } + + if (is_a($exceptionClass, ErrorCodeSerializableInterface::class, true)) { + return $exceptionClass::getErrorCode(); + } + + return null; + } +} diff --git a/src/JsonApi/Serializer/ItemNormalizer.php b/src/JsonApi/Serializer/ItemNormalizer.php index 84c15dd91b3..6b5fba82c4c 100644 --- a/src/JsonApi/Serializer/ItemNormalizer.php +++ b/src/JsonApi/Serializer/ItemNormalizer.php @@ -13,14 +13,13 @@ namespace ApiPlatform\JsonApi\Serializer; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; -use ApiPlatform\Api\ResourceClassResolverInterface as LegacyResourceClassResolverInterface; -use ApiPlatform\Exception\ItemNotFoundException; use ApiPlatform\Metadata\ApiProperty; +use ApiPlatform\Metadata\Exception\ItemNotFoundException; use ApiPlatform\Metadata\IriConverterInterface; use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface; use ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface; use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; +use ApiPlatform\Metadata\ResourceAccessCheckerInterface; use ApiPlatform\Metadata\ResourceClassResolverInterface; use ApiPlatform\Metadata\UrlGeneratorInterface; use ApiPlatform\Metadata\Util\ClassInfoTrait; @@ -28,7 +27,6 @@ use ApiPlatform\Serializer\CacheKeyTrait; use ApiPlatform\Serializer\ContextTrait; use ApiPlatform\Serializer\TagCollectorInterface; -use ApiPlatform\Symfony\Security\ResourceAccessCheckerInterface; use Symfony\Component\ErrorHandler\Exception\FlattenException; use Symfony\Component\PropertyAccess\PropertyAccessorInterface; use Symfony\Component\Serializer\Exception\LogicException; @@ -56,7 +54,7 @@ final class ItemNormalizer extends AbstractItemNormalizer private array $componentsCache = []; - public function __construct(PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory, PropertyMetadataFactoryInterface $propertyMetadataFactory, IriConverterInterface|LegacyIriConverterInterface $iriConverter, ResourceClassResolverInterface|LegacyResourceClassResolverInterface $resourceClassResolver, ?PropertyAccessorInterface $propertyAccessor = null, ?NameConverterInterface $nameConverter = null, ?ClassMetadataFactoryInterface $classMetadataFactory = null, array $defaultContext = [], ?ResourceMetadataCollectionFactoryInterface $resourceMetadataCollectionFactory = null, ?ResourceAccessCheckerInterface $resourceAccessChecker = null, protected ?TagCollectorInterface $tagCollector = null) + public function __construct(PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory, PropertyMetadataFactoryInterface $propertyMetadataFactory, IriConverterInterface $iriConverter, ResourceClassResolverInterface $resourceClassResolver, ?PropertyAccessorInterface $propertyAccessor = null, ?NameConverterInterface $nameConverter = null, ?ClassMetadataFactoryInterface $classMetadataFactory = null, array $defaultContext = [], ?ResourceMetadataCollectionFactoryInterface $resourceMetadataCollectionFactory = null, ?ResourceAccessCheckerInterface $resourceAccessChecker = null, protected ?TagCollectorInterface $tagCollector = null) { parent::__construct($propertyNameCollectionFactory, $propertyMetadataFactory, $iriConverter, $resourceClassResolver, $propertyAccessor, $nameConverter, $classMetadataFactory, $defaultContext, $resourceMetadataCollectionFactory, $resourceAccessChecker, $tagCollector); } diff --git a/src/JsonApi/Serializer/ObjectNormalizer.php b/src/JsonApi/Serializer/ObjectNormalizer.php index 2dc6a4c9274..f6b15835805 100644 --- a/src/JsonApi/Serializer/ObjectNormalizer.php +++ b/src/JsonApi/Serializer/ObjectNormalizer.php @@ -13,8 +13,6 @@ namespace ApiPlatform\JsonApi\Serializer; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; -use ApiPlatform\Api\ResourceClassResolverInterface as LegacyResourceClassResolverInterface; use ApiPlatform\Metadata\IriConverterInterface; use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; use ApiPlatform\Metadata\ResourceClassResolverInterface; @@ -34,7 +32,7 @@ final class ObjectNormalizer implements NormalizerInterface, CacheableSupportsMe public const FORMAT = 'jsonapi'; - public function __construct(private readonly NormalizerInterface $decorated, private readonly IriConverterInterface|LegacyIriConverterInterface $iriConverter, private readonly ResourceClassResolverInterface|LegacyResourceClassResolverInterface $resourceClassResolver, private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory) + public function __construct(private readonly NormalizerInterface $decorated, private readonly IriConverterInterface $iriConverter, private readonly ResourceClassResolverInterface $resourceClassResolver, private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory) { } diff --git a/src/JsonApi/Tests/Fixtures/CircularReference.php b/src/JsonApi/Tests/Fixtures/CircularReference.php new file mode 100644 index 00000000000..d9808dd2f3e --- /dev/null +++ b/src/JsonApi/Tests/Fixtures/CircularReference.php @@ -0,0 +1,20 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\JsonApi\Tests\Fixtures; + +class CircularReference +{ + public $id; + public CircularReference $parent; +} diff --git a/src/JsonApi/Tests/Fixtures/CustomConverter.php b/src/JsonApi/Tests/Fixtures/CustomConverter.php new file mode 100644 index 00000000000..2dd8b9781cb --- /dev/null +++ b/src/JsonApi/Tests/Fixtures/CustomConverter.php @@ -0,0 +1,42 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\JsonApi\Tests\Fixtures; + +use Symfony\Component\Serializer\NameConverter\AdvancedNameConverterInterface; +use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter; +use Symfony\Component\Serializer\NameConverter\NameConverterInterface; + +/** + * Custom converter that will only convert a property named "nameConverted" + * with the same logic as Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter. + */ +class CustomConverter implements AdvancedNameConverterInterface +{ + private NameConverterInterface $nameConverter; + + public function __construct() + { + $this->nameConverter = new CamelCaseToSnakeCaseNameConverter(); + } + + public function normalize(string $propertyName, ?string $class = null, ?string $format = null, array $context = []): string + { + return 'nameConverted' === $propertyName ? $this->nameConverter->normalize($propertyName) : $propertyName; + } + + public function denormalize(string $propertyName, ?string $class = null, ?string $format = null, array $context = []): string + { + return 'name_converted' === $propertyName ? $this->nameConverter->denormalize($propertyName) : $propertyName; + } +} diff --git a/src/JsonApi/Tests/Fixtures/Dummy.php b/src/JsonApi/Tests/Fixtures/Dummy.php new file mode 100644 index 00000000000..3f3b9e16b05 --- /dev/null +++ b/src/JsonApi/Tests/Fixtures/Dummy.php @@ -0,0 +1,206 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\JsonApi\Tests\Fixtures; + +use ApiPlatform\Metadata\ApiProperty; +use ApiPlatform\Metadata\ApiResource; +use Symfony\Component\Validator\Constraints as Assert; + +/** + * Dummy. + * + * @author Kévin Dunglas + */ +#[ApiResource(filters: ['my_dummy.boolean', 'my_dummy.date', 'my_dummy.exists', 'my_dummy.numeric', 'my_dummy.order', 'my_dummy.range', 'my_dummy.search', 'my_dummy.property'], extraProperties: ['standard_put' => false])] +class Dummy +{ + /** + * @var int|null The id + */ + private $id; + + /** + * @var string The dummy name + */ + #[ApiProperty(iris: ['https://schema.org/name'])] + #[Assert\NotBlank] + private string $name; + + /** + * @var string|null The dummy name alias + */ + #[ApiProperty(iris: ['https://schema.org/alternateName'])] + private $alias; + + /** + * @var array foo + */ + private ?array $foo = null; + + /** + * @var string|null A short description of the item + */ + #[ApiProperty(iris: ['https://schema.org/description'])] + public $description; + + /** + * @var string|null A dummy + */ + public $dummy; + + /** + * @var bool|null A dummy boolean + */ + public ?bool $dummyBoolean = null; + /** + * @var \DateTime|null A dummy date + */ + #[ApiProperty(iris: ['https://schema.org/DateTime'])] + public $dummyDate; + + /** + * @var float|null A dummy float + */ + public $dummyFloat; + + /** + * @var string|null A dummy price + */ + public $dummyPrice; + + /** + * @var array|null serialize data + */ + public $jsonData = []; + + /** + * @var array|null + */ + public $arrayData = []; + + /** + * @var string|null + */ + public $nameConverted; + + public static function staticMethod(): void + { + } + + public function getId() + { + return $this->id; + } + + public function setId($id): void + { + $this->id = $id; + } + + public function setName(string $name): void + { + $this->name = $name; + } + + public function getName(): string + { + return $this->name; + } + + public function setAlias($alias): void + { + $this->alias = $alias; + } + + public function getAlias() + { + return $this->alias; + } + + public function setDescription($description): void + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function fooBar($baz): void + { + } + + public function getFoo(): ?array + { + return $this->foo; + } + + public function setFoo(?array $foo = null): void + { + $this->foo = $foo; + } + + public function setDummyDate(?\DateTime $dummyDate = null): void + { + $this->dummyDate = $dummyDate; + } + + public function getDummyDate() + { + return $this->dummyDate; + } + + public function setDummyPrice($dummyPrice) + { + $this->dummyPrice = $dummyPrice; + + return $this; + } + + public function getDummyPrice() + { + return $this->dummyPrice; + } + + public function setJsonData($jsonData): void + { + $this->jsonData = $jsonData; + } + + public function getJsonData() + { + return $this->jsonData; + } + + public function setArrayData($arrayData): void + { + $this->arrayData = $arrayData; + } + + public function getArrayData() + { + return $this->arrayData; + } + + public function setDummy($dummy = null): void + { + $this->dummy = $dummy; + } + + public function getDummy() + { + return $this->dummy; + } +} diff --git a/tests/Mock/Exception/ErrorCodeSerializable.php b/src/JsonApi/Tests/Fixtures/ErrorCodeSerializable.php similarity index 81% rename from tests/Mock/Exception/ErrorCodeSerializable.php rename to src/JsonApi/Tests/Fixtures/ErrorCodeSerializable.php index 2531b33f207..eff84141639 100644 --- a/tests/Mock/Exception/ErrorCodeSerializable.php +++ b/src/JsonApi/Tests/Fixtures/ErrorCodeSerializable.php @@ -11,9 +11,9 @@ declare(strict_types=1); -namespace ApiPlatform\Tests\Mock\Exception; +namespace ApiPlatform\JsonApi\Tests\Fixtures; -use ApiPlatform\Exception\ErrorCodeSerializableInterface; +use ApiPlatform\Metadata\Exception\ErrorCodeSerializableInterface; class ErrorCodeSerializable extends \Exception implements ErrorCodeSerializableInterface { diff --git a/src/JsonApi/Tests/Fixtures/RelatedDummy.php b/src/JsonApi/Tests/Fixtures/RelatedDummy.php new file mode 100644 index 00000000000..befb25d37c4 --- /dev/null +++ b/src/JsonApi/Tests/Fixtures/RelatedDummy.php @@ -0,0 +1,116 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\JsonApi\Tests\Fixtures; + +use ApiPlatform\Metadata\ApiProperty; +use ApiPlatform\Metadata\ApiResource; +use Symfony\Component\Serializer\Annotation\Groups; + +/** + * Related Dummy. + * + * @author Kévin Dunglas + */ +#[ApiResource] +class RelatedDummy implements \Stringable +{ + #[ApiProperty(writable: false)] + #[Groups(['chicago', 'friends'])] + private $id; + + /** + * @var string|null A name + */ + #[ApiProperty(iris: ['RelatedDummy.name'])] + #[Groups(['friends'])] + public $name; + + #[ApiProperty(deprecationReason: 'This property is deprecated for upgrade test')] + #[Groups(['barcelona', 'chicago', 'friends'])] + protected $symfony = 'symfony'; + + /** + * @var \DateTime|null A dummy date + */ + #[Groups(['friends'])] + public $dummyDate; + + /** + * @var bool|null A dummy bool + */ + #[Groups(['friends'])] + public ?bool $dummyBoolean = null; + + public function __construct() + { + } + + public function getId() + { + return $this->id; + } + + public function setId($id): void + { + $this->id = $id; + } + + public function setName($name): void + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function getSymfony() + { + return $this->symfony; + } + + public function setSymfony($symfony): void + { + $this->symfony = $symfony; + } + + public function setDummyDate(\DateTime $dummyDate): void + { + $this->dummyDate = $dummyDate; + } + + public function getDummyDate() + { + return $this->dummyDate; + } + + public function isDummyBoolean(): ?bool + { + return $this->dummyBoolean; + } + + /** + * @param bool $dummyBoolean + */ + public function setDummyBoolean($dummyBoolean): void + { + $this->dummyBoolean = $dummyBoolean; + } + + public function __toString(): string + { + return (string) $this->getId(); + } +} diff --git a/tests/JsonApi/JsonSchema/SchemaFactoryTest.php b/src/JsonApi/Tests/JsonSchema/SchemaFactoryTest.php similarity index 95% rename from tests/JsonApi/JsonSchema/SchemaFactoryTest.php rename to src/JsonApi/Tests/JsonSchema/SchemaFactoryTest.php index 7c0d335e78a..5c9b6f6c7ef 100644 --- a/tests/JsonApi/JsonSchema/SchemaFactoryTest.php +++ b/src/JsonApi/Tests/JsonSchema/SchemaFactoryTest.php @@ -11,11 +11,10 @@ declare(strict_types=1); -namespace ApiPlatform\Tests\JsonApi\JsonSchema; +namespace ApiPlatform\JsonApi\Tests\JsonSchema; -use ApiPlatform\Hal\JsonSchema\SchemaFactory as HalSchemaFactory; -use ApiPlatform\Hydra\JsonSchema\SchemaFactory as HydraSchemaFactory; use ApiPlatform\JsonApi\JsonSchema\SchemaFactory; +use ApiPlatform\JsonApi\Tests\Fixtures\Dummy; use ApiPlatform\JsonSchema\DefinitionNameFactory; use ApiPlatform\JsonSchema\Schema; use ApiPlatform\JsonSchema\SchemaFactory as BaseSchemaFactory; @@ -29,7 +28,6 @@ use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; use ApiPlatform\Metadata\Resource\ResourceMetadataCollection; use ApiPlatform\Metadata\ResourceClassResolverInterface; -use ApiPlatform\Tests\Fixtures\TestBundle\Entity\Dummy; use PHPUnit\Framework\TestCase; use Prophecy\PhpUnit\ProphecyTrait; @@ -62,13 +60,13 @@ protected function setUp(): void definitionNameFactory: $definitionNameFactory, ); - $halSchemaFactory = new HalSchemaFactory($baseSchemaFactory); - $hydraSchemaFactory = new HydraSchemaFactory($halSchemaFactory); + // $halSchemaFactory = new HalSchemaFactory($baseSchemaFactory); + // $hydraSchemaFactory = new HydraSchemaFactory($halSchemaFactory); $resourceClassResolver = $this->prophesize(ResourceClassResolverInterface::class); $this->schemaFactory = new SchemaFactory( - schemaFactory: $hydraSchemaFactory, + schemaFactory: $baseSchemaFactory, propertyMetadataFactory: $propertyMetadataFactory->reveal(), resourceClassResolver: $resourceClassResolver->reveal(), resourceMetadataFactory: $resourceMetadataFactory->reveal(), diff --git a/tests/JsonApi/Serializer/CollectionNormalizerTest.php b/src/JsonApi/Tests/Serializer/CollectionNormalizerTest.php similarity index 99% rename from tests/JsonApi/Serializer/CollectionNormalizerTest.php rename to src/JsonApi/Tests/Serializer/CollectionNormalizerTest.php index 53adf6dadea..6d117e3ff1c 100644 --- a/tests/JsonApi/Serializer/CollectionNormalizerTest.php +++ b/src/JsonApi/Tests/Serializer/CollectionNormalizerTest.php @@ -11,15 +11,15 @@ declare(strict_types=1); -namespace ApiPlatform\Tests\JsonApi\Serializer; +namespace ApiPlatform\JsonApi\Tests\Serializer; -use ApiPlatform\Api\ResourceClassResolverInterface; use ApiPlatform\JsonApi\Serializer\CollectionNormalizer; use ApiPlatform\Metadata\ApiResource; use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Operations; use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; use ApiPlatform\Metadata\Resource\ResourceMetadataCollection; +use ApiPlatform\Metadata\ResourceClassResolverInterface; use ApiPlatform\State\Pagination\PaginatorInterface; use ApiPlatform\State\Pagination\PartialPaginatorInterface; use PHPUnit\Framework\TestCase; diff --git a/tests/JsonApi/Serializer/ConstraintViolationNormalizerTest.php b/src/JsonApi/Tests/Serializer/ConstraintViolationNormalizerTest.php similarity index 96% rename from tests/JsonApi/Serializer/ConstraintViolationNormalizerTest.php rename to src/JsonApi/Tests/Serializer/ConstraintViolationNormalizerTest.php index 3c38247aefc..6da0e19b759 100644 --- a/tests/JsonApi/Serializer/ConstraintViolationNormalizerTest.php +++ b/src/JsonApi/Tests/Serializer/ConstraintViolationNormalizerTest.php @@ -11,13 +11,13 @@ declare(strict_types=1); -namespace ApiPlatform\Tests\JsonApi\Serializer; +namespace ApiPlatform\JsonApi\Tests\Serializer; use ApiPlatform\JsonApi\Serializer\ConstraintViolationListNormalizer; +use ApiPlatform\JsonApi\Tests\Fixtures\Dummy; +use ApiPlatform\JsonApi\Tests\Fixtures\RelatedDummy; use ApiPlatform\Metadata\ApiProperty; use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface; -use ApiPlatform\Tests\Fixtures\TestBundle\Entity\Dummy; -use ApiPlatform\Tests\Fixtures\TestBundle\Entity\RelatedDummy; use PHPUnit\Framework\TestCase; use Prophecy\PhpUnit\ProphecyTrait; use Symfony\Component\PropertyInfo\Type; diff --git a/tests/JsonApi/Serializer/EntrypointNormalizerTest.php b/src/JsonApi/Tests/Serializer/EntrypointNormalizerTest.php similarity index 93% rename from tests/JsonApi/Serializer/EntrypointNormalizerTest.php rename to src/JsonApi/Tests/Serializer/EntrypointNormalizerTest.php index eb035c848cc..8b0b82044e1 100644 --- a/tests/JsonApi/Serializer/EntrypointNormalizerTest.php +++ b/src/JsonApi/Tests/Serializer/EntrypointNormalizerTest.php @@ -11,10 +11,9 @@ declare(strict_types=1); -namespace ApiPlatform\Tests\JsonApi\Serializer; +namespace ApiPlatform\JsonApi\Tests\Serializer; -use ApiPlatform\Api\Entrypoint; -use ApiPlatform\Documentation\Entrypoint as DocumentationEntrypoint; +use ApiPlatform\Documentation\Entrypoint; use ApiPlatform\JsonApi\Serializer\EntrypointNormalizer; use ApiPlatform\Metadata\ApiResource; use ApiPlatform\Metadata\Get; @@ -42,9 +41,6 @@ class EntrypointNormalizerTest extends TestCase { use ProphecyTrait; - /** - * @group legacy - */ public function testSupportNormalization(): void { $collection = new ResourceNameCollection(); @@ -60,7 +56,7 @@ public function testSupportNormalization(): void $this->assertFalse($normalizer->supportsNormalization($entrypoint, 'json')); $this->assertFalse($normalizer->supportsNormalization(new \stdClass(), EntrypointNormalizer::FORMAT)); $this->assertEmpty($normalizer->getSupportedTypes('json')); - $this->assertSame([Entrypoint::class => true, DocumentationEntrypoint::class => true], $normalizer->getSupportedTypes($normalizer::FORMAT)); + $this->assertSame([Entrypoint::class => true], $normalizer->getSupportedTypes($normalizer::FORMAT)); if (!method_exists(Serializer::class, 'getSupportedTypes')) { $this->assertTrue($normalizer->hasCacheableSupportsMethod()); diff --git a/tests/JsonApi/Serializer/ErrorNormalizerTest.php b/src/JsonApi/Tests/Serializer/ErrorNormalizerTest.php similarity index 97% rename from tests/JsonApi/Serializer/ErrorNormalizerTest.php rename to src/JsonApi/Tests/Serializer/ErrorNormalizerTest.php index 71e7a393b11..7b9ee30bdde 100644 --- a/tests/JsonApi/Serializer/ErrorNormalizerTest.php +++ b/src/JsonApi/Tests/Serializer/ErrorNormalizerTest.php @@ -11,10 +11,10 @@ declare(strict_types=1); -namespace ApiPlatform\Tests\JsonApi\Serializer; +namespace ApiPlatform\JsonApi\Tests\Serializer; use ApiPlatform\JsonApi\Serializer\ErrorNormalizer; -use ApiPlatform\Tests\Mock\Exception\ErrorCodeSerializable; +use ApiPlatform\JsonApi\Tests\Fixtures\ErrorCodeSerializable; use PHPUnit\Framework\TestCase; use Symfony\Component\ErrorHandler\Exception\FlattenException; use Symfony\Component\HttpFoundation\Response; diff --git a/tests/JsonApi/Serializer/ItemNormalizerTest.php b/src/JsonApi/Tests/Serializer/ItemNormalizerTest.php similarity index 99% rename from tests/JsonApi/Serializer/ItemNormalizerTest.php rename to src/JsonApi/Tests/Serializer/ItemNormalizerTest.php index e8e40f06c04..9065dfdba26 100644 --- a/tests/JsonApi/Serializer/ItemNormalizerTest.php +++ b/src/JsonApi/Tests/Serializer/ItemNormalizerTest.php @@ -11,10 +11,13 @@ declare(strict_types=1); -namespace ApiPlatform\Tests\JsonApi\Serializer; +namespace ApiPlatform\JsonApi\Tests\Serializer; use ApiPlatform\JsonApi\Serializer\ItemNormalizer; use ApiPlatform\JsonApi\Serializer\ReservedAttributeNameConverter; +use ApiPlatform\JsonApi\Tests\Fixtures\CircularReference; +use ApiPlatform\JsonApi\Tests\Fixtures\Dummy; +use ApiPlatform\JsonApi\Tests\Fixtures\RelatedDummy; use ApiPlatform\Metadata\ApiProperty; use ApiPlatform\Metadata\ApiResource; use ApiPlatform\Metadata\Get; @@ -26,9 +29,6 @@ use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; use ApiPlatform\Metadata\Resource\ResourceMetadataCollection; use ApiPlatform\Metadata\ResourceClassResolverInterface; -use ApiPlatform\Tests\Fixtures\TestBundle\Entity\CircularReference; -use ApiPlatform\Tests\Fixtures\TestBundle\Entity\Dummy; -use ApiPlatform\Tests\Fixtures\TestBundle\Entity\RelatedDummy; use Doctrine\Common\Collections\ArrayCollection; use PHPUnit\Framework\TestCase; use Prophecy\Argument; diff --git a/tests/JsonApi/Serializer/ReservedAttributeNameConverterTest.php b/src/JsonApi/Tests/Serializer/ReservedAttributeNameConverterTest.php similarity index 93% rename from tests/JsonApi/Serializer/ReservedAttributeNameConverterTest.php rename to src/JsonApi/Tests/Serializer/ReservedAttributeNameConverterTest.php index fbcd0368a94..18bf241411c 100644 --- a/tests/JsonApi/Serializer/ReservedAttributeNameConverterTest.php +++ b/src/JsonApi/Tests/Serializer/ReservedAttributeNameConverterTest.php @@ -11,10 +11,10 @@ declare(strict_types=1); -namespace ApiPlatform\Tests\JsonApi\Serializer; +namespace ApiPlatform\JsonApi\Tests\Serializer; use ApiPlatform\JsonApi\Serializer\ReservedAttributeNameConverter; -use ApiPlatform\Tests\Fixtures\TestBundle\Serializer\NameConverter\CustomConverter; +use ApiPlatform\JsonApi\Tests\Fixtures\CustomConverter; use PHPUnit\Framework\TestCase; /** diff --git a/tests/JsonApi/State/JsonApiProviderTest.php b/src/JsonApi/Tests/State/JsonApiProviderTest.php similarity index 97% rename from tests/JsonApi/State/JsonApiProviderTest.php rename to src/JsonApi/Tests/State/JsonApiProviderTest.php index 30e9106e584..9139f80c97d 100644 --- a/tests/JsonApi/State/JsonApiProviderTest.php +++ b/src/JsonApi/Tests/State/JsonApiProviderTest.php @@ -11,7 +11,7 @@ declare(strict_types=1); -namespace ApiPlatform\Tests\JsonApi\State; +namespace ApiPlatform\JsonApi\Tests\State; use ApiPlatform\JsonApi\State\JsonApiProvider; use ApiPlatform\Metadata\Get; diff --git a/src/JsonApi/Tests/Util/IriHelperTest.php b/src/JsonApi/Tests/Util/IriHelperTest.php new file mode 100644 index 00000000000..3996176b9a5 --- /dev/null +++ b/src/JsonApi/Tests/Util/IriHelperTest.php @@ -0,0 +1,83 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\JsonApi\Tests\Util; + +use ApiPlatform\JsonApi\Util\IriHelper; +use ApiPlatform\Metadata\Exception\InvalidArgumentException; +use ApiPlatform\Metadata\UrlGeneratorInterface; +use PHPUnit\Framework\TestCase; +use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait; + +/** + * @author Kévin Dunglas + */ +class IriHelperTest extends TestCase +{ + use ExpectDeprecationTrait; + + public function testHelpers(): void + { + $parsed = [ + 'parts' => [ + 'path' => '/hello.json', + 'query' => 'foo=bar&page=2&bar=3', + ], + 'parameters' => [ + 'foo' => 'bar', + 'bar' => '3', + ], + ]; + + $this->assertSame($parsed, IriHelper::parseIri('/hello.json?foo=bar&page=2&bar=3', 'page')); + $this->assertSame('/hello.json?foo=bar&bar=3&page=2', IriHelper::createIri($parsed['parts'], $parsed['parameters'], 'page', 2.)); + } + + public function testHelpersWithNetworkPath(): void + { + $parsed = [ + 'parts' => [ + 'path' => '/hello.json', + 'query' => 'foo=bar&page=2&bar=3', + 'scheme' => 'http', + 'user' => 'foo', + 'pass' => 'bar', + 'host' => 'localhost', + 'port' => 8080, + 'fragment' => 'foo', + ], + 'parameters' => [ + 'foo' => 'bar', + 'bar' => '3', + ], + ]; + + $this->assertSame('//foo:bar@localhost:8080/hello.json?foo=bar&bar=3&page=2#foo', IriHelper::createIri($parsed['parts'], $parsed['parameters'], 'page', 2., UrlGeneratorInterface::NET_PATH)); + + unset($parsed['parts']['scheme']); + + $this->assertSame('//foo:bar@localhost:8080/hello.json?foo=bar&bar=3&page=2#foo', IriHelper::createIri($parsed['parts'], $parsed['parameters'], 'page', 2., UrlGeneratorInterface::NET_PATH)); + + $parsed['parts']['port'] = 443; + + $this->assertSame('//foo:bar@localhost:443/hello.json?foo=bar&bar=3&page=2#foo', IriHelper::createIri($parsed['parts'], $parsed['parameters'], 'page', 2., UrlGeneratorInterface::NET_PATH)); + } + + public function testParseIriWithInvalidUrl(): void + { + $this->expectException(InvalidArgumentException::class); + $this->expectExceptionMessage('The request URI "http:///" is malformed.'); + + IriHelper::parseIri('http:///', 'page'); + } +} diff --git a/src/JsonApi/Util/IriHelper.php b/src/JsonApi/Util/IriHelper.php new file mode 100644 index 00000000000..11f0444ffa4 --- /dev/null +++ b/src/JsonApi/Util/IriHelper.php @@ -0,0 +1,108 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\JsonApi\Util; + +use ApiPlatform\Metadata\Exception\InvalidArgumentException; +use ApiPlatform\Metadata\UrlGeneratorInterface; +use ApiPlatform\State\Util\RequestParser; + +/** + * Parses and creates IRIs. + * + * @author Kévin Dunglas + * + * @internal + */ +final class IriHelper +{ + private function __construct() + { + } + + /** + * Parses and standardizes the request IRI. + * + * @throws InvalidArgumentException + */ + public static function parseIri(string $iri, string $pageParameterName): array + { + $parts = parse_url($iri); + if (false === $parts) { + throw new InvalidArgumentException(sprintf('The request URI "%s" is malformed.', $iri)); + } + + $parameters = []; + if (isset($parts['query'])) { + $parameters = RequestParser::parseRequestParams($parts['query']); + + // Remove existing page parameter + unset($parameters[$pageParameterName]); + } + + return ['parts' => $parts, 'parameters' => $parameters]; + } + + /** + * Gets a collection IRI for the given parameters. + */ + public static function createIri(array $parts, array $parameters, ?string $pageParameterName = null, ?float $page = null, $urlGenerationStrategy = UrlGeneratorInterface::ABS_PATH): string + { + if (null !== $page && null !== $pageParameterName) { + $parameters[$pageParameterName] = $page; + } + + $query = http_build_query($parameters, '', '&', \PHP_QUERY_RFC3986); + $parts['query'] = preg_replace('/%5B\d+%5D/', '%5B%5D', $query); + + $url = ''; + if ((UrlGeneratorInterface::ABS_URL === $urlGenerationStrategy || UrlGeneratorInterface::NET_PATH === $urlGenerationStrategy) && isset($parts['host'])) { + if (isset($parts['scheme'])) { + $scheme = $parts['scheme']; + } elseif (isset($parts['port']) && 443 === $parts['port']) { + $scheme = 'https'; + } else { + $scheme = 'http'; + } + $url .= UrlGeneratorInterface::NET_PATH === $urlGenerationStrategy ? '//' : "$scheme://"; + + if (isset($parts['user'])) { + $url .= $parts['user']; + + if (isset($parts['pass'])) { + $url .= ':'.$parts['pass']; + } + + $url .= '@'; + } + + $url .= $parts['host']; + + if (isset($parts['port'])) { + $url .= ':'.$parts['port']; + } + } + + $url .= $parts['path']; + + if ('' !== $parts['query']) { + $url .= '?'.$parts['query']; + } + + if (isset($parts['fragment'])) { + $url .= '#'.$parts['fragment']; + } + + return $url; + } +} diff --git a/src/JsonApi/composer.json b/src/JsonApi/composer.json new file mode 100644 index 00000000000..6b5420b3c30 --- /dev/null +++ b/src/JsonApi/composer.json @@ -0,0 +1,73 @@ +{ + "name": "api-platform/json-api", + "description": "API JSON-API support", + "type": "library", + "keywords": [ + "REST", + "GraphQL", + "API", + "JSON-LD", + "Hydra", + "JSONAPI", + "OpenAPI", + "HAL", + "Swagger" + ], + "homepage": "https://api-platform.com", + "license": "MIT", + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "require": { + "php": ">=8.1", + "api-platform/documentation": "*@dev || ^3.1", + "api-platform/json-schema": "*@dev || ^3.1", + "api-platform/metadata": "*@dev || ^3.1", + "api-platform/serializer": "*@dev || ^3.1", + "api-platform/state": "*@dev || ^3.1", + "symfony/error-handler": "^7.1", + "symfony/http-foundation": "^7.1" + }, + "require-dev": { + "phpspec/prophecy": "^1.19", + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "^10" + }, + "autoload": { + "psr-4": { + "ApiPlatform\\JsonApi\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "config": { + "preferred-install": { + "*": "dist" + }, + "sort-packages": true, + "allow-plugins": { + "composer/package-versions-deprecated": true, + "phpstan/extension-installer": true + } + }, + "extra": { + "branch-alias": { + "dev-main": "3.3.x-dev" + }, + "symfony": { + "require": "^6.1" + } + }, + "scripts": { + "test": "./vendor/bin/phpunit" + } +} diff --git a/src/JsonApi/phpunit.xml.dist b/src/JsonApi/phpunit.xml.dist new file mode 100644 index 00000000000..5c65d384cc4 --- /dev/null +++ b/src/JsonApi/phpunit.xml.dist @@ -0,0 +1,21 @@ + + + + + + + + ./Tests/ + + + + + + ./ + + + ./Tests + ./vendor + + + diff --git a/src/JsonLd/Action/ContextAction.php b/src/JsonLd/Action/ContextAction.php index a6f0a5a7148..a9daaafec51 100644 --- a/src/JsonLd/Action/ContextAction.php +++ b/src/JsonLd/Action/ContextAction.php @@ -56,6 +56,10 @@ public function __construct( */ public function __invoke(string $shortName = 'Entrypoint', ?Request $request = null): array|Response { + if (!$shortName) { + $shortName = 'Entrypoint'; + } + if (null !== $request && $this->provider && $this->processor && $this->serializer) { $operation = new Get( outputFormats: ['jsonld' => ['application/ld+json']], diff --git a/src/JsonLd/Serializer/ItemNormalizer.php b/src/JsonLd/Serializer/ItemNormalizer.php index 25c6d90c028..b9cbcf5ba0e 100644 --- a/src/JsonLd/Serializer/ItemNormalizer.php +++ b/src/JsonLd/Serializer/ItemNormalizer.php @@ -13,8 +13,6 @@ namespace ApiPlatform\JsonLd\Serializer; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; -use ApiPlatform\Api\ResourceClassResolverInterface as LegacyResourceClassResolverInterface; use ApiPlatform\JsonLd\AnonymousContextBuilderInterface; use ApiPlatform\JsonLd\ContextBuilderInterface; use ApiPlatform\Metadata\HttpOperation; @@ -48,7 +46,7 @@ final class ItemNormalizer extends AbstractItemNormalizer public const FORMAT = 'jsonld'; - public function __construct(ResourceMetadataCollectionFactoryInterface $resourceMetadataCollectionFactory, PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory, PropertyMetadataFactoryInterface $propertyMetadataFactory, IriConverterInterface|LegacyIriConverterInterface $iriConverter, ResourceClassResolverInterface|LegacyResourceClassResolverInterface $resourceClassResolver, private readonly ContextBuilderInterface $contextBuilder, ?PropertyAccessorInterface $propertyAccessor = null, ?NameConverterInterface $nameConverter = null, ?ClassMetadataFactoryInterface $classMetadataFactory = null, array $defaultContext = [], ?ResourceAccessCheckerInterface $resourceAccessChecker = null, protected ?TagCollectorInterface $tagCollector = null) + public function __construct(ResourceMetadataCollectionFactoryInterface $resourceMetadataCollectionFactory, PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory, PropertyMetadataFactoryInterface $propertyMetadataFactory, IriConverterInterface $iriConverter, ResourceClassResolverInterface $resourceClassResolver, private readonly ContextBuilderInterface $contextBuilder, ?PropertyAccessorInterface $propertyAccessor = null, ?NameConverterInterface $nameConverter = null, ?ClassMetadataFactoryInterface $classMetadataFactory = null, array $defaultContext = [], ?ResourceAccessCheckerInterface $resourceAccessChecker = null, protected ?TagCollectorInterface $tagCollector = null) { parent::__construct($propertyNameCollectionFactory, $propertyMetadataFactory, $iriConverter, $resourceClassResolver, $propertyAccessor, $nameConverter, $classMetadataFactory, $defaultContext, $resourceMetadataCollectionFactory, $resourceAccessChecker, $tagCollector); } diff --git a/src/JsonLd/Serializer/ObjectNormalizer.php b/src/JsonLd/Serializer/ObjectNormalizer.php index 5339e520728..e645a4fca78 100644 --- a/src/JsonLd/Serializer/ObjectNormalizer.php +++ b/src/JsonLd/Serializer/ObjectNormalizer.php @@ -13,9 +13,8 @@ namespace ApiPlatform\JsonLd\Serializer; -use ApiPlatform\Api\IriConverterInterface as LegacyIriConverterInterface; -use ApiPlatform\Exception\InvalidArgumentException; use ApiPlatform\JsonLd\AnonymousContextBuilderInterface; +use ApiPlatform\Metadata\Exception\InvalidArgumentException; use ApiPlatform\Metadata\IriConverterInterface; use ApiPlatform\Serializer\CacheableSupportsMethodInterface; use Symfony\Component\Serializer\Normalizer\CacheableSupportsMethodInterface as BaseCacheableSupportsMethodInterface; @@ -32,7 +31,7 @@ final class ObjectNormalizer implements NormalizerInterface, CacheableSupportsMe public const FORMAT = 'jsonld'; - public function __construct(private readonly NormalizerInterface $decorated, private readonly IriConverterInterface|LegacyIriConverterInterface $iriConverter, private AnonymousContextBuilderInterface $anonymousContextBuilder) + public function __construct(private readonly NormalizerInterface $decorated, private readonly IriConverterInterface $iriConverter, private AnonymousContextBuilderInterface $anonymousContextBuilder) { } diff --git a/src/JsonSchema/Metadata/Property/Factory/SchemaPropertyMetadataFactory.php b/src/JsonSchema/Metadata/Property/Factory/SchemaPropertyMetadataFactory.php index 087de10f6f1..eeeaa421d43 100644 --- a/src/JsonSchema/Metadata/Property/Factory/SchemaPropertyMetadataFactory.php +++ b/src/JsonSchema/Metadata/Property/Factory/SchemaPropertyMetadataFactory.php @@ -13,9 +13,9 @@ namespace ApiPlatform\JsonSchema\Metadata\Property\Factory; -use ApiPlatform\Exception\PropertyNotFoundException; use ApiPlatform\JsonSchema\Schema; use ApiPlatform\Metadata\ApiProperty; +use ApiPlatform\Metadata\Exception\PropertyNotFoundException; use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface; use ApiPlatform\Metadata\ResourceClassResolverInterface; use ApiPlatform\Metadata\Util\ResourceClassInfoTrait; diff --git a/src/Laravel/.gitattributes b/src/Laravel/.gitattributes new file mode 100644 index 00000000000..3b64c9d4581 --- /dev/null +++ b/src/Laravel/.gitattributes @@ -0,0 +1,4 @@ +/.gitattributes export-ignore +/.gitignore export-ignore +/workbench export-ignore +/Tests export-ignore diff --git a/src/Laravel/.gitignore b/src/Laravel/.gitignore new file mode 100644 index 00000000000..eb0a8e7b262 --- /dev/null +++ b/src/Laravel/.gitignore @@ -0,0 +1,3 @@ +/composer.lock +/vendor +/.phpunit.result.cache diff --git a/src/Laravel/ApiPlatformMiddleware.php b/src/Laravel/ApiPlatformMiddleware.php new file mode 100644 index 00000000000..9a573cd58af --- /dev/null +++ b/src/Laravel/ApiPlatformMiddleware.php @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel; + +use ApiPlatform\Metadata\Operation\Factory\OperationMetadataFactory; +use Illuminate\Http\Request; +use Symfony\Component\HttpFoundation\Response; + +class ApiPlatformMiddleware +{ + public function __construct( + protected OperationMetadataFactory $operationMetadataFactory, + ) { + } + + /** + * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next + */ + public function handle(Request $request, \Closure $next, ?string $operationName = null): Response + { + if ($operationName) { + $request->attributes->set('_api_operation', $this->operationMetadataFactory->create($operationName)); + } + + $request->attributes->set('_format', str_replace('.', '', $request->route('_format') ?? '')); + + return $next($request); + } +} diff --git a/src/Laravel/ApiPlatformProvider.php b/src/Laravel/ApiPlatformProvider.php new file mode 100644 index 00000000000..9eb122c601f --- /dev/null +++ b/src/Laravel/ApiPlatformProvider.php @@ -0,0 +1,805 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel; + +use ApiPlatform\Documentation\Action\DocumentationAction; +use ApiPlatform\Documentation\Action\EntrypointAction; +use ApiPlatform\Hydra\JsonSchema\SchemaFactory as HydraSchemaFactory; +use ApiPlatform\Hydra\Serializer\CollectionNormalizer as HydraCollectionNormalizer; +use ApiPlatform\Hydra\Serializer\DocumentationNormalizer as HydraDocumentationNormalizer; +use ApiPlatform\Hydra\Serializer\EntrypointNormalizer as HydraEntrypointNormalizer; +use ApiPlatform\Hydra\State\HydraLinkProcessor; +use ApiPlatform\JsonApi\JsonSchema\SchemaFactory as JsonApiSchemaFactory; +use ApiPlatform\JsonApi\Serializer\CollectionNormalizer as JsonApiCollectionNormalizer; +use ApiPlatform\JsonApi\Serializer\EntrypointNormalizer as JsonApiEntrypointNormalizer; +use ApiPlatform\JsonApi\Serializer\ItemNormalizer as JsonApiItemNormalizer; +use ApiPlatform\JsonApi\Serializer\ObjectNormalizer as JsonApiObjectNormalizer; +use ApiPlatform\JsonApi\Serializer\ReservedAttributeNameConverter; +use ApiPlatform\JsonApi\State\JsonApiProvider; +use ApiPlatform\JsonLd\Action\ContextAction; +use ApiPlatform\JsonLd\AnonymousContextBuilderInterface; +use ApiPlatform\JsonLd\ContextBuilder as JsonLdContextBuilder; +use ApiPlatform\JsonLd\ContextBuilderInterface; +use ApiPlatform\JsonLd\Serializer\ItemNormalizer as JsonLdItemNormalizer; +use ApiPlatform\JsonLd\Serializer\ObjectNormalizer as JsonLdObjectNormalizer; +use ApiPlatform\JsonSchema\DefinitionNameFactory; +use ApiPlatform\JsonSchema\DefinitionNameFactoryInterface; +use ApiPlatform\JsonSchema\Metadata\Property\Factory\SchemaPropertyMetadataFactory; +use ApiPlatform\JsonSchema\SchemaFactory; +use ApiPlatform\JsonSchema\SchemaFactoryInterface; +use ApiPlatform\JsonSchema\TypeFactory; +use ApiPlatform\JsonSchema\TypeFactoryInterface; +use ApiPlatform\Laravel\ApiResource\Error; +use ApiPlatform\Laravel\Controller\ApiPlatformController; +use ApiPlatform\Laravel\Eloquent\Metadata\Factory\Property\EloquentAttributePropertyMetadataFactory; +use ApiPlatform\Laravel\Eloquent\Metadata\Factory\Property\EloquentAttributePropertyNameCollectionFactory; +use ApiPlatform\Laravel\Eloquent\Metadata\Factory\Property\EloquentPropertyMetadataFactory; +use ApiPlatform\Laravel\Eloquent\Metadata\Factory\Property\EloquentPropertyNameCollectionMetadataFactory; +use ApiPlatform\Laravel\Eloquent\Metadata\Factory\Resource\EloquentResourceCollectionMetadataFactory; +use ApiPlatform\Laravel\Eloquent\Metadata\IdentifiersExtractor as EloquentIdentifiersExtractor; +use ApiPlatform\Laravel\Eloquent\Metadata\ModelMetadata; +use ApiPlatform\Laravel\Eloquent\Metadata\ResourceClassResolver as EloquentResourceClassResolver; +use ApiPlatform\Laravel\Eloquent\PropertyAccess\PropertyAccessor as EloquentPropertyAccessor; +use ApiPlatform\Laravel\Eloquent\Serializer\SerializerContextBuilder as EloquentSerializerContextBuilder; +use ApiPlatform\Laravel\Eloquent\State\CollectionProvider; +use ApiPlatform\Laravel\Eloquent\State\ItemProvider; +use ApiPlatform\Laravel\Eloquent\State\LinksHandler; +use ApiPlatform\Laravel\Eloquent\State\LinksHandlerInterface; +use ApiPlatform\Laravel\Eloquent\State\PersistProcessor; +use ApiPlatform\Laravel\Eloquent\State\RemoveProcessor; +use ApiPlatform\Laravel\Exception\Handler; +use ApiPlatform\Laravel\Routing\IriConverter; +use ApiPlatform\Laravel\Routing\Router as UrlGeneratorRouter; +use ApiPlatform\Laravel\Routing\SkolemIriConverter; +use ApiPlatform\Laravel\State\SwaggerUiProcessor; +use ApiPlatform\Laravel\State\ValidateProvider; +use ApiPlatform\Metadata\Exception\NotExposedHttpException; +use ApiPlatform\Metadata\IdentifiersExtractor; +use ApiPlatform\Metadata\IdentifiersExtractorInterface; +use ApiPlatform\Metadata\IriConverterInterface; +use ApiPlatform\Metadata\Operation\Factory\OperationMetadataFactory; +use ApiPlatform\Metadata\Operation\Factory\OperationMetadataFactoryInterface; +use ApiPlatform\Metadata\Operation\PathSegmentNameGeneratorInterface; +use ApiPlatform\Metadata\Operation\UnderscorePathSegmentNameGenerator; +use ApiPlatform\Metadata\Property\Factory\AttributePropertyMetadataFactory; +use ApiPlatform\Metadata\Property\Factory\PropertyInfoPropertyMetadataFactory; +use ApiPlatform\Metadata\Property\Factory\PropertyInfoPropertyNameCollectionFactory; +use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface; +use ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface; +use ApiPlatform\Metadata\Property\Factory\SerializerPropertyMetadataFactory; +use ApiPlatform\Metadata\Resource\Factory\AlternateUriResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\AttributesResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\AttributesResourceNameCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\FiltersResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\FormatsResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\InputOutputResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\LinkFactory; +use ApiPlatform\Metadata\Resource\Factory\LinkFactoryInterface; +use ApiPlatform\Metadata\Resource\Factory\LinkResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\NotExposedOperationResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\OperationNameResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\PhpDocResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; +use ApiPlatform\Metadata\Resource\Factory\ResourceNameCollectionFactoryInterface; +use ApiPlatform\Metadata\Resource\Factory\UriTemplateResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\ResourceClassResolver; +use ApiPlatform\Metadata\ResourceClassResolverInterface; +use ApiPlatform\Metadata\UrlGeneratorInterface; +use ApiPlatform\OpenApi\Factory\OpenApiFactory; +use ApiPlatform\OpenApi\Factory\OpenApiFactoryInterface; +use ApiPlatform\OpenApi\Options; +use ApiPlatform\OpenApi\Serializer\OpenApiNormalizer; +use ApiPlatform\Serializer\ItemNormalizer; +use ApiPlatform\Serializer\JsonEncoder; +use ApiPlatform\Serializer\Mapping\Factory\ClassMetadataFactory as SerializerClassMetadataFactory; +use ApiPlatform\Serializer\SerializerContextBuilder; +use ApiPlatform\State\CallableProcessor; +use ApiPlatform\State\CallableProvider; +use ApiPlatform\State\Pagination\Pagination; +use ApiPlatform\State\Pagination\PaginationOptions; +use ApiPlatform\State\Processor\AddLinkHeaderProcessor; +use ApiPlatform\State\Processor\RespondProcessor; +use ApiPlatform\State\Processor\SerializeProcessor; +use ApiPlatform\State\Processor\WriteProcessor; +use ApiPlatform\State\ProcessorInterface; +use ApiPlatform\State\Provider\ContentNegotiationProvider; +use ApiPlatform\State\Provider\DeserializeProvider; +use ApiPlatform\State\Provider\ReadProvider; +use ApiPlatform\State\ProviderInterface; +use ApiPlatform\State\SerializerContextBuilderInterface; +use Illuminate\Config\Repository; +use Illuminate\Contracts\Debug\ExceptionHandler as ExceptionHandlerInterface; +use Illuminate\Contracts\Foundation\Application; +use Illuminate\Contracts\Foundation\CachesRoutes; +use Illuminate\Http\Request; +use Illuminate\Routing\Route; +use Illuminate\Routing\RouteCollection; +use Illuminate\Routing\Router; +use Illuminate\Support\ServiceProvider; +use Negotiation\Negotiator; +use phpDocumentor\Reflection\DocBlockFactory; +use Psr\Log\LoggerInterface; +use Symfony\Component\PropertyAccess\PropertyAccess; +use Symfony\Component\PropertyAccess\PropertyAccessorInterface; +use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor; +use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor; +use Symfony\Component\PropertyInfo\PropertyInfoExtractor; +use Symfony\Component\PropertyInfo\PropertyInfoExtractorInterface; +use Symfony\Component\Routing\RequestContext; +use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory; +use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactoryInterface; +use Symfony\Component\Serializer\Mapping\Loader\AttributeLoader; +use Symfony\Component\Serializer\Mapping\Loader\LoaderInterface; +use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter as NameConverterCamelCaseToSnakeCaseNameConverter; +use Symfony\Component\Serializer\NameConverter\MetadataAwareNameConverter; +use Symfony\Component\Serializer\NameConverter\NameConverterInterface; +use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer; +use Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer; +use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; +use Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer; +use Symfony\Component\Serializer\Normalizer\NormalizerInterface; +use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; +use Symfony\Component\Serializer\Serializer; +use Symfony\Component\Serializer\SerializerInterface; +use Symfony\Component\WebLink\HttpHeaderSerializer; + +class ApiPlatformProvider extends ServiceProvider +{ + /** + * Register services. + */ + public function register(): void + { + $this->mergeConfigFrom(__DIR__.'/config/api-platform.php', 'api-platform'); + + /** @var Repository $config */ + $config = $this->app['config']; + + $defaultContext = []; + + $this->app->singleton(PropertyInfoExtractorInterface::class, function () { + $phpDocExtractor = class_exists(DocBlockFactory::class) ? new PhpDocExtractor() : null; + $reflectionExtractor = new ReflectionExtractor(); + + return new PropertyInfoExtractor( + [$reflectionExtractor], + $phpDocExtractor ? [$phpDocExtractor, $reflectionExtractor] : [$reflectionExtractor], + $phpDocExtractor ? [$phpDocExtractor] : [], + [$reflectionExtractor], + [$reflectionExtractor] + ); + }); + + $this->app->bind(LoaderInterface::class, AttributeLoader::class); + $this->app->bind(ClassMetadataFactoryInterface::class, ClassMetadataFactory::class); + $this->app->singleton(ClassMetadataFactory::class, function () { + return new ClassMetadataFactory(new AttributeLoader()); + }); + + $this->app->bind(PathSegmentNameGeneratorInterface::class, UnderscorePathSegmentNameGenerator::class); + + $this->app->singleton(ResourceNameCollectionFactoryInterface::class, function () use ($config) { + $paths = $config->get('api-platform.resources') ?? []; + $refl = new \ReflectionClass(Error::class); + $paths[] = \dirname($refl->getFileName()); + + return new AttributesResourceNameCollectionFactory($paths); + }); + + $this->app->bind(ResourceClassResolverInterface::class, ResourceClassResolver::class); + $this->app->singleton(ResourceClassResolver::class, function (Application $app) { + return new EloquentResourceClassResolver(new ResourceClassResolver($app->make(ResourceNameCollectionFactoryInterface::class))); + }); + + $this->app->singleton(PropertyMetadataFactoryInterface::class, function (Application $app) { + return new PropertyInfoPropertyMetadataFactory( + $app->make(PropertyInfoExtractorInterface::class), + new EloquentPropertyMetadataFactory( + $app->make(ModelMetadata::class), + ) + ); + }); + + $this->app->extend(PropertyMetadataFactoryInterface::class, function (PropertyInfoPropertyMetadataFactory $inner, Application $app) { + return new SchemaPropertyMetadataFactory( + $app->make(ResourceClassResolverInterface::class), + new SerializerPropertyMetadataFactory( + new SerializerClassMetadataFactory($app->make(ClassMetadataFactoryInterface::class)), + new AttributePropertyMetadataFactory( + new EloquentAttributePropertyMetadataFactory( + $inner, + ) + ), + $app->make(ResourceClassResolverInterface::class) + ), + ); + }); + + $this->app->singleton(PropertyNameCollectionFactoryInterface::class, function (Application $app) { + return new EloquentAttributePropertyNameCollectionFactory( + new EloquentPropertyNameCollectionMetadataFactory( + $app->make(ModelMetadata::class), + new PropertyInfoPropertyNameCollectionFactory($app->make(PropertyInfoExtractorInterface::class)), + $app->make(ResourceClassResolverInterface::class) + ) + ); + }); + + $this->app->singleton(LinkFactoryInterface::class, function (Application $app) { + return new LinkFactory( + $app->make(PropertyNameCollectionFactoryInterface::class), + $app->make(PropertyMetadataFactoryInterface::class), + $app->make(ResourceClassResolverInterface::class), + ); + }); + + // TODO: add cached metadata factories + $this->app->singleton(ResourceMetadataCollectionFactoryInterface::class, function (Application $app) use ($config) { + return new EloquentResourceCollectionMetadataFactory( + new AlternateUriResourceMetadataCollectionFactory( + new FiltersResourceMetadataCollectionFactory( + new FormatsResourceMetadataCollectionFactory( + new InputOutputResourceMetadataCollectionFactory( + new PhpDocResourceMetadataCollectionFactory( + new OperationNameResourceMetadataCollectionFactory( + new LinkResourceMetadataCollectionFactory( + $app->make(LinkFactoryInterface::class), + new UriTemplateResourceMetadataCollectionFactory( + $app->make(LinkFactoryInterface::class), + $app->make(PathSegmentNameGeneratorInterface::class), + new NotExposedOperationResourceMetadataCollectionFactory( + $app->make(LinkFactoryInterface::class), + new AttributesResourceMetadataCollectionFactory( + null, + $app->make(LoggerInterface::class), + [ + 'routePrefix' => $config->get('api-platform.prefix') ?? '/', + ], + false + ) + ) + ) + ) + ) + ) + ), + $config->get('api-platform.formats'), + $config->get('api-platform.patch_formats'), + ) + ) + ), + ); + }); + + $this->app->bind(PropertyAccessorInterface::class, function () { + return new EloquentPropertyAccessor(PropertyAccess::createPropertyAccessor()); + }); + + $this->app->bind(NameConverterInterface::class, function (Application $app) { + return new MetadataAwareNameConverter($app->make(ClassMetadataFactoryInterface::class), new NameConverterCamelCaseToSnakeCaseNameConverter()); + }); + + $this->app->bind(OperationMetadataFactoryInterface::class, OperationMetadataFactory::class); + + $this->app->singleton(ItemProvider::class, function (Application $app) { + $tagged = iterator_to_array($app->tagged(LinksHandlerInterface::class)); + + return new ItemProvider(new LinksHandler($app), new ServiceLocator($tagged)); + }); + $this->app->singleton(CollectionProvider::class, function (Application $app) { + $tagged = iterator_to_array($app->tagged(LinksHandlerInterface::class)); + + return new CollectionProvider($app->make(Pagination::class), new LinksHandler($app), new ServiceLocator($tagged)); + }); + $this->app->tag([ItemProvider::class, CollectionProvider::class], ProviderInterface::class); + + $this->app->singleton(CallableProvider::class, function (Application $app) { + $tagged = iterator_to_array($app->tagged(ProviderInterface::class)); + + return new CallableProvider(new ServiceLocator($tagged)); + }); + + $this->app->singleton(ReadProvider::class, function (Application $app) { + return new ReadProvider($app->make(CallableProvider::class)); + }); + + $this->app->singleton(ValidateProvider::class, function (Application $app) { + return new ValidateProvider($app->make(ReadProvider::class), $app); + }); + + $this->app->singleton(JsonApiProvider::class, function (Application $app) use ($config) { + return new JsonApiProvider($app->make(ValidateProvider::class), $config->get('api-platform.collection.order.parameter_name')); + }); + + $this->app->singleton(DeserializeProvider::class, function (Application $app) { + return new DeserializeProvider($app->make(JsonApiProvider::class), $app->make(SerializerInterface::class), $app->make(SerializerContextBuilderInterface::class)); + }); + + $this->app->singleton(ContentNegotiationProvider::class, function (Application $app) use ($config) { + return new ContentNegotiationProvider($app->make(DeserializeProvider::class), new Negotiator(), $config->get('api-platform.formats'), $config->get('api-platform.error_formats')); + }); + + $this->app->bind(ProviderInterface::class, ContentNegotiationProvider::class); + + $this->app->tag([RemoveProcessor::class, PersistProcessor::class], ProcessorInterface::class); + $this->app->singleton(CallableProcessor::class, function (Application $app) { + $tagged = iterator_to_array($app->tagged(ProcessorInterface::class)); + $tagged['api_platform.swagger_ui.processor'] = $app->make(SwaggerUiProcessor::class); + + return new CallableProcessor(new ServiceLocator($tagged)); + }); + + $this->app->singleton(WriteProcessor::class, function (Application $app) { + return new WriteProcessor($app->make(SerializeProcessor::class), $app->make(CallableProcessor::class)); + }); + + $this->app->singleton(SerializerContextBuilder::class, function (Application $app) use ($config) { + return new SerializerContextBuilder($app->make(ResourceMetadataCollectionFactoryInterface::class), $config->get('app.debug') ?? false); + }); + $this->app->bind(SerializerContextBuilderInterface::class, EloquentSerializerContextBuilder::class); + $this->app->singleton(EloquentSerializerContextBuilder::class, function (Application $app) { + return new EloquentSerializerContextBuilder( + $app->make(SerializerContextBuilder::class), + $app->make(PropertyNameCollectionFactoryInterface::class) + ); + }); + + $this->app->singleton(SerializeProcessor::class, function (Application $app) { + return new SerializeProcessor($app->make(RespondProcessor::class), $app->make(Serializer::class), $app->make(SerializerContextBuilderInterface::class)); + }); + + $this->app->singleton(HydraLinkProcessor::class, function (Application $app) { + return new HydraLinkProcessor($app->make(WriteProcessor::class), $app->make(UrlGeneratorInterface::class)); + }); + + $this->app->singleton(RespondProcessor::class, function () { + return new AddLinkHeaderProcessor(new RespondProcessor(), new HttpHeaderSerializer()); + }); + + $this->app->bind(ProcessorInterface::class, HydraLinkProcessor::class); + + $this->app->singleton(ObjectNormalizer::class, function () { + return new ObjectNormalizer(); + }); + + $this->app->singleton(DateTimeNormalizer::class, function () { + return new DateTimeNormalizer(); + }); + + $this->app->singleton(DateTimeZoneNormalizer::class, function () { + return new DateTimeZoneNormalizer(); + }); + + $this->app->singleton(DateIntervalNormalizer::class, function () { + return new DateIntervalNormalizer(); + }); + + $this->app->singleton(JsonEncoder::class, function () { + return new JsonEncoder('jsonld'); + }); + + $this->app->bind(IriConverterInterface::class, IriConverter::class); + $this->app->singleton(IriConverter::class, function (Application $app) { + return new IriConverter($app->make(CallableProvider::class), $app->make(OperationMetadataFactoryInterface::class), $app->make(UrlGeneratorRouter::class), $app->make(IdentifiersExtractorInterface::class), $app->make(ResourceClassResolverInterface::class), $app->make(ResourceMetadataCollectionFactoryInterface::class), $app->make(SkolemIriConverter::class)); + }); + + $this->app->singleton(SkolemIriConverter::class, function (Application $app) { + return new SkolemIriConverter($app->make(UrlGeneratorRouter::class)); + }); + + $this->app->bind(IdentifiersExtractorInterface::class, IdentifiersExtractor::class); + $this->app->singleton(IdentifiersExtractor::class, function (Application $app) { + return new EloquentIdentifiersExtractor( + new IdentifiersExtractor( + $app->make(ResourceMetadataCollectionFactoryInterface::class), + $app->make(ResourceClassResolverInterface::class), + $app->make(PropertyNameCollectionFactoryInterface::class), + $app->make(PropertyMetadataFactoryInterface::class), + $app->make(PropertyAccessorInterface::class) + ) + ); + }); + + $this->app->bind(UrlGeneratorInterface::class, UrlGeneratorRouter::class); + $this->app->singleton(UrlGeneratorRouter::class, function (Application $app) { + $request = $app->make('request'); + // https://github.com/laravel/framework/blob/2bfb70bca53e24227a6f921f39d84ba452efd8e0/src/Illuminate/Routing/CompiledRouteCollection.php#L112 + $trimmedRequest = $request->duplicate(); + $parts = explode('?', $request->server->get('REQUEST_URI'), 2); + $trimmedRequest->server->set( + 'REQUEST_URI', + rtrim($parts[0], '/').(isset($parts[1]) ? '?'.$parts[1] : '') + ); + + $urlGenerator = new UrlGeneratorRouter($app->make(Router::class)); + $urlGenerator->setContext((new RequestContext())->fromRequest($trimmedRequest)); + + return $urlGenerator; + }); + + $this->app->bind(ContextBuilderInterface::class, JsonLdContextBuilder::class); + $this->app->singleton(JsonLdContextBuilder::class, function (Application $app) { + return new JsonLdContextBuilder( + $app->make(ResourceNameCollectionFactoryInterface::class), + $app->make(ResourceMetadataCollectionFactoryInterface::class), + $app->make(PropertyNameCollectionFactoryInterface::class), + $app->make(PropertyMetadataFactoryInterface::class), + $app->make(UrlGeneratorInterface::class), + $app->make(IriConverterInterface::class), + $app->make(NameConverterInterface::class) + ); + }); + + $this->app->singleton(HydraEntrypointNormalizer::class, function (Application $app) { + return new HydraEntrypointNormalizer($app->make(ResourceMetadataCollectionFactoryInterface::class), $app->make(IriConverterInterface::class), $app->make(UrlGeneratorInterface::class)); + }); + + $this->app->singleton(ItemNormalizer::class, function (Application $app) use ($defaultContext) { + return new ItemNormalizer( + $app->make(PropertyNameCollectionFactoryInterface::class), + $app->make(PropertyMetadataFactoryInterface::class), + $app->make(IriConverterInterface::class), + $app->make(ResourceClassResolverInterface::class), + $app->make(PropertyAccessorInterface::class), + $app->make(NameConverterInterface::class), + $app->make(ClassMetadataFactoryInterface::class), + $app->make(LoggerInterface::class), + $app->make(ResourceMetadataCollectionFactoryInterface::class), + /* $resourceAccessChecker */ + null, + $defaultContext + ); + }); + + $this->app->bind(AnonymousContextBuilderInterface::class, JsonLdContextBuilder::class); + + $this->app->singleton(JsonLdObjectNormalizer::class, function (Application $app) { + return new JsonLdObjectNormalizer( + $app->make(ObjectNormalizer::class), + $app->make(IriConverterInterface::class), + $app->make(AnonymousContextBuilderInterface::class) + ); + }); + + $this->app->singleton(ItemNormalizer::class, function (Application $app) use ($defaultContext) { + return new ItemNormalizer( + $app->make(PropertyNameCollectionFactoryInterface::class), + $app->make(PropertyMetadataFactoryInterface::class), + $app->make(IriConverterInterface::class), + $app->make(ResourceClassResolverInterface::class), + $app->make(PropertyAccessorInterface::class), + $app->make(NameConverterInterface::class), + $app->make(ClassMetadataFactoryInterface::class), + $app->make(LoggerInterface::class), + $app->make(ResourceMetadataCollectionFactoryInterface::class), + // $app->make(ResourceAccessCheckerInterface::class), + null, + $defaultContext + ); + }); + + $this->app->singleton(Options::class, function (Application $app) use ($config) { + return new Options(title: $config->get('api-platform.title') ?? ''); + }); + + $this->app->singleton(DocumentationAction::class, function (Application $app) use ($config) { + return new DocumentationAction($app->make(ResourceNameCollectionFactoryInterface::class), $config->get('api-platform.title') ?? '', $config->get('api-platform.description') ?? '', $config->get('api-platform.version') ?? '', $app->make(OpenApiFactoryInterface::class), $app->make(ProviderInterface::class), $app->make(ProcessorInterface::class), $app->make(Negotiator::class), $config->get('api-platform.docs_formats')); + }); + + $this->app->singleton(FilterLocator::class, FilterLocator::class); + + $this->app->singleton(EntrypointAction::class, function (Application $app) { + return new EntrypointAction($app->make(ResourceNameCollectionFactoryInterface::class), $app->make(ProviderInterface::class), $app->make(ProcessorInterface::class), ['jsonld' => ['application/ld+json']]); + }); + + $this->app->singleton(Pagination::class, function () use ($config) { + return new Pagination($config->get('api-platform.collection.pagination'), []); + }); + + $this->app->singleton(PaginationOptions::class, function () use ($config) { + $pagination = $config->get('api-platform.collection.pagination'); + + return new PaginationOptions( + $pagination['enabled'], + $pagination['page_parameter_name'], + $pagination['client_items_per_page'], + $pagination['items_per_page_parameter_name'], + $pagination['client_enabled'], + $pagination['enabled_parameter_name'], + $pagination['items_per_page'], + $pagination['maximum_items_per_page'], + $pagination['partial'], + $pagination['client_partial'], + $pagination['partial_parameter_name'], + ); + }); + + $this->app->bind(OpenApiFactoryInterface::class, OpenApiFactory::class); + $this->app->singleton(OpenApiFactory::class, function (Application $app) use ($config) { + return new OpenApiFactory( + $app->make(ResourceNameCollectionFactoryInterface::class), + $app->make(ResourceMetadataCollectionFactoryInterface::class), + $app->make(PropertyNameCollectionFactoryInterface::class), + $app->make(PropertyMetadataFactoryInterface::class), + $app->make(SchemaFactoryInterface::class), + $app->make(TypeFactoryInterface::class), + $app->make(FilterLocator::class), + $config->get('api-platform.formats'), + null, // ?Options $openApiOptions = null, + $app->make(PaginationOptions::class), // ?PaginationOptions $paginationOptions = null, + // ?RouterInterface $router = null + ); + }); + + $this->app->bind(DefinitionNameFactoryInterface::class, DefinitionNameFactory::class); + $this->app->singleton(DefinitionNameFactory::class, function () use ($config) { + return new DefinitionNameFactory($config->get('api-platform.formats')); + }); + + $this->app->singleton(SchemaFactory::class, function (Application $app) use ($config) { + return new SchemaFactory( + $app->make(TypeFactoryInterface::class), + $app->make(ResourceMetadataCollectionFactoryInterface::class), + $app->make(PropertyNameCollectionFactoryInterface::class), + $app->make(PropertyMetadataFactoryInterface::class), + $app->make(NameConverterInterface::class), + $app->make(ResourceClassResolverInterface::class), + $config->get('api-platform.formats'), + $app->make(DefinitionNameFactoryInterface::class), + ); + }); + $this->app->singleton(JsonApiSchemaFactory::class, function (Application $app) { + return new JsonApiSchemaFactory( + $app->make(SchemaFactory::class), + $app->make(PropertyMetadataFactoryInterface::class), + $app->make(ResourceClassResolverInterface::class), + $app->make(ResourceMetadataCollectionFactoryInterface::class), + $app->make(DefinitionNameFactoryInterface::class), + ); + }); + $this->app->singleton(HydraSchemaFactory::class, function (Application $app) { + return new HydraSchemaFactory( + $app->make(JsonApiSchemaFactory::class), + ); + }); + + $this->app->bind(SchemaFactoryInterface::class, HydraSchemaFactory::class); + $this->app->bind(TypeFactoryInterface::class, TypeFactory::class); + $this->app->singleton(TypeFactory::class, function (Application $app) { + return new TypeFactory($app->make(ResourceClassResolverInterface::class)); + }); + + $this->app->singleton(OpenApiNormalizer::class, function (Application $app) { + return new OpenApiNormalizer($app->make(ObjectNormalizer::class)); + }); + + $this->app->singleton(HydraDocumentationNormalizer::class, function (Application $app) { + return new HydraDocumentationNormalizer( + $app->make(ResourceMetadataCollectionFactoryInterface::class), + $app->make(PropertyNameCollectionFactoryInterface::class), + $app->make(PropertyMetadataFactoryInterface::class), + $app->make(ResourceClassResolverInterface::class), + $app->make(UrlGeneratorInterface::class), + $app->make(NameConverterInterface::class) + ); + }); + + $this->app->singleton(HydraCollectionNormalizer::class, function (Application $app) use ($defaultContext) { + return new HydraCollectionNormalizer( + $app->make(ContextBuilderInterface::class), + $app->make(ResourceClassResolverInterface::class), + $app->make(IriConverterInterface::class), + $app->make(ResourceMetadataCollectionFactoryInterface::class), + $defaultContext + ); + }); + + $this->app->singleton(ReservedAttributeNameConverter::class, function (Application $app) { + return new ReservedAttributeNameConverter($app->make(NameConverterInterface::class)); + }); + + $this->app->singleton(JsonApiEntrypointNormalizer::class, function (Application $app) { + return new JsonApiEntrypointNormalizer( + $app->make(ResourceMetadataCollectionFactoryInterface::class), + $app->make(IriConverterInterface::class), + $app->make(UrlGeneratorInterface::class), + ); + }); + + $this->app->singleton(JsonApiCollectionNormalizer::class, function (Application $app) use ($config) { + return new JsonApiCollectionNormalizer( + $app->make(ResourceClassResolverInterface::class), + $config->get('api-platform.collection.pagination.page_parameter_name'), + $app->make(ResourceMetadataCollectionFactoryInterface::class), + ); + }); + + $this->app->singleton(JsonApiItemNormalizer::class, function (Application $app) use ($defaultContext) { + return new JsonApiItemNormalizer( + $app->make(PropertyNameCollectionFactoryInterface::class), + $app->make(PropertyMetadataFactoryInterface::class), + $app->make(IriConverterInterface::class), + $app->make(ResourceClassResolverInterface::class), + $app->make(PropertyAccessorInterface::class), + $app->make(NameConverterInterface::class), + $app->make(ClassMetadataFactoryInterface::class), + $defaultContext, + $app->make(ResourceMetadataCollectionFactoryInterface::class), + null, + null + // $app->make(ResourceAccessCheckerInterface::class), + // $app->make(TagCollectorInterface::class), + ); + }); + + $this->app->singleton(JsonApiObjectNormalizer::class, function (Application $app) { + return new JsonApiObjectNormalizer( + $app->make(ObjectNormalizer::class), + $app->make(IriConverterInterface::class), + $app->make(ResourceClassResolverInterface::class), + $app->make(ResourceMetadataCollectionFactoryInterface::class), + ); + }); + + $this->app->bind(SerializerInterface::class, Serializer::class); + $this->app->bind(NormalizerInterface::class, Serializer::class); + $this->app->singleton(Serializer::class, function (Application $app) { + $list = new \SplPriorityQueue(); + $list->insert($app->make(HydraEntrypointNormalizer::class), -800); + $list->insert($app->make(HydraCollectionNormalizer::class), -800); + $list->insert($app->make(JsonLdItemNormalizer::class), -890); + $list->insert($app->make(JsonLdObjectNormalizer::class), -995); + $list->insert($app->make(ArrayDenormalizer::class), -990); + $list->insert($app->make(DateTimeZoneNormalizer::class), -915); + $list->insert($app->make(DateIntervalNormalizer::class), -915); + $list->insert($app->make(DateTimeNormalizer::class), -910); + $list->insert($app->make(ObjectNormalizer::class), -1000); + $list->insert($app->make(ItemNormalizer::class), -895); + $list->insert($app->make(OpenApiNormalizer::class), -780); + $list->insert($app->make(HydraDocumentationNormalizer::class), -790); + + $list->insert($app->make(JsonApiEntrypointNormalizer::class), -800); + $list->insert($app->make(JsonApiCollectionNormalizer::class), -985); + $list->insert($app->make(JsonApiItemNormalizer::class), -890); + $list->insert($app->make(JsonApiObjectNormalizer::class), -995); + // TODO: unused + implement hal/jsonapi ? + // $list->insert($dataUriNormalizer, -920); + // $list->insert($unwrappingDenormalizer, 1000); + // $list->insert($halItemNormalizer, -890); + // $list->insert($halEntrypointNormalizer, -800); + // $list->insert($halCollectionNormalizer, -985); + // $list->insert($halObjectNormalizer, -995); + // $list->insert($jsonserializableNormalizer, -900); + // $list->insert($uuidDenormalizer, -895); //Todo ramsey uuid support ? + + return new Serializer(iterator_to_array($list), [new JsonEncoder('json'), $app->make(JsonEncoder::class), new JsonEncoder('jsonopenapi'), new JsonEncoder('jsonapi')]); + }); + + $this->app->singleton(JsonLdItemNormalizer::class, function (Application $app) use ($defaultContext) { + return new JsonLdItemNormalizer( + $app->make(ResourceMetadataCollectionFactoryInterface::class), + $app->make(PropertyNameCollectionFactoryInterface::class), + $app->make(PropertyMetadataFactoryInterface::class), + $app->make(IriConverterInterface::class), + $app->make(ResourceClassResolverInterface::class), + $app->make(ContextBuilderInterface::class), + $app->make(PropertyAccessorInterface::class), + $app->make(NameConverterInterface::class), + $app->make(ClassMetadataFactoryInterface::class), + $defaultContext, + // $app->make(ResourceAccessCheckerInterface::class), + null + ); + }); + + $this->app->singleton( + ExceptionHandlerInterface::class, + function (Application $app) { + return new Handler( + $app, + $app->make(ResourceMetadataCollectionFactoryInterface::class), + $app->make(ApiPlatformController::class), + $app->make(IdentifiersExtractorInterface::class), + $app->make(ResourceClassResolverInterface::class), + $app->make(Negotiator::class) + ); + } + ); + + // $this->app->afterResolving( + // \Illuminate\Foundation\Exceptions\Handler::class, + // fn ($handler) => $using(new Exceptions($handler)), + // ); + } + + /** + * Bootstrap services. + */ + public function boot(ResourceNameCollectionFactoryInterface $resourceNameCollectionFactory, ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory, Router $router): void + { + if ($this->app->runningInConsole()) { + $this->publishes([ + __DIR__.'/config/api-platform.php' => $this->app->configPath('api-platform.php'), + ], 'laravel-assets'); + + $this->publishes([ + __DIR__.'/public' => $this->app->publicPath('vendor/api-platform'), + ], 'laravel-assets'); + } + + $this->loadViewsFrom(__DIR__.'/resources/views', 'api-platform'); + + if (!$this->shouldRegisterRoutes()) { + return; + } + + $routeCollection = new RouteCollection(); + foreach ($resourceNameCollectionFactory->create() as $resourceClass) { + foreach ($resourceMetadataFactory->create($resourceClass) as $resourceMetadata) { + foreach ($resourceMetadata->getOperations() as $operation) { + $uriTemplate = $operation->getUriTemplate(); + // _format is read by the middleware + $uriTemplate = $operation->getRoutePrefix().str_replace('{._format}', '{_format?}', $uriTemplate); + $route = new Route([$operation->getMethod()], $uriTemplate, [ApiPlatformController::class, '__invoke']); + $route->name($operation->getName()); + $route->setDefaults(['_api_operation_name' => $operation->getName(), '_api_resource_class' => $operation->getClass()]); + // Another option then to use a middleware, not sure what's best (you then retrieve $request->getRoute() somehow ?) + // $route->??? = ['operation' => $operation]; + $routeCollection->add($route) + ->middleware(ApiPlatformMiddleware::class.':'.$operation->getName()); + } + } + } + + $prefix = $this->app['config']->get('api-platform.prefix') ?? ''; + $route = new Route(['GET'], $prefix.'/contexts/{shortName?}{_format?}', [ContextAction::class, '__invoke']); + $route->name('api_jsonld_context')->middleware(ApiPlatformMiddleware::class); + $routeCollection->add($route); + // Maybe that we can alias Symfony Request to Laravel Request within the provider ? + $route = new Route(['GET'], $prefix.'/docs{_format?}', function (Request $request, Application $app) { + $documentationAction = $app->make(DocumentationAction::class); + + return $documentationAction->__invoke($request); + }); + $route->name('api_doc')->middleware(ApiPlatformMiddleware::class); + $routeCollection->add($route); + + $route = new Route(['GET'], $prefix.'/{index?}{_format?}', function (Request $request, Application $app) { + $entrypointAction = $app->make(EntrypointAction::class); + + return $entrypointAction->__invoke($request); + }); + $route->name('api_entrypoint')->middleware(ApiPlatformMiddleware::class); + $routeCollection->add($route); + $route = new Route(['GET'], $prefix.'/.well-known/genid/{id}', function (): void { + throw new NotExposedHttpException('This route is not exposed on purpose. It generates an IRI for a collection resource without identifier nor item operation.'); + }); + $route->name('api_genid')->middleware(ApiPlatformMiddleware::class); + $routeCollection->add($route); + $router->setRoutes($routeCollection); + } + + private function shouldRegisterRoutes(): bool + { + if (!$this->app['config']->get('api-platform.register_routes')) { + return false; + } + + if ($this->app instanceof CachesRoutes && $this->app->routesAreCached()) { + return false; + } + + return true; + } +} diff --git a/src/Laravel/ApiResource/Error.php b/src/Laravel/ApiResource/Error.php new file mode 100644 index 00000000000..83ae041434c --- /dev/null +++ b/src/Laravel/ApiResource/Error.php @@ -0,0 +1,163 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\ApiResource; + +use ApiPlatform\JsonLd\ContextBuilderInterface; +use ApiPlatform\Metadata\ApiProperty; +use ApiPlatform\Metadata\Error as Operation; +use ApiPlatform\Metadata\ErrorResource; +use ApiPlatform\Metadata\Exception\HttpExceptionInterface; +use ApiPlatform\Metadata\Exception\ProblemExceptionInterface; +use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface as SymfonyHttpExceptionInterface; +use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\Serializer\Annotation\Ignore; +use Symfony\Component\Serializer\Annotation\SerializedName; +use Symfony\Component\WebLink\Link; + +#[ErrorResource( + types: ['hydra:Error'], + openapi: false, + operations: [ + new Operation( + name: '_api_errors_problem', + outputFormats: ['json' => ['application/problem+json']], + normalizationContext: [ + 'groups' => ['jsonproblem'], + 'skip_null_values' => true, + ], + uriTemplate: '/errors/{status}' + ), + new Operation( + name: '_api_errors_hydra', + outputFormats: ['jsonld' => ['application/problem+json']], + normalizationContext: [ + 'groups' => ['jsonld'], + 'skip_null_values' => true, + ], + links: [new Link(rel: ContextBuilderInterface::JSONLD_NS.'error', href: 'http://www.w3.org/ns/hydra/error')], + uriTemplate: '/errors/{status}.jsonld' + ), + new Operation( + name: '_api_errors_jsonapi', + outputFormats: ['jsonapi' => ['application/vnd.api+json']], + normalizationContext: ['groups' => ['jsonapi'], 'skip_null_values' => true], + uriTemplate: '/errros/{status}.jsonapi' + ), + ], + graphQlOperations: [] +)] +class Error extends \Exception implements ProblemExceptionInterface, HttpExceptionInterface +{ + /** + * @param array $headers + * @param array $originalTrace + */ + public function __construct( + private readonly string $title, + private readonly string $detail, + #[ApiProperty(identifier: true)] private int $status, + private readonly array $originalTrace, + private ?string $instance = null, + private string $type = 'about:blank', + private array $headers = [] + ) { + parent::__construct(); + } + + /** + * @return array + */ + #[SerializedName('trace')] + #[Groups(['trace'])] + public function getOriginalTrace(): array + { + return $this->originalTrace; + } + + #[SerializedName('description')] + public function getDescription(): string + { + return $this->detail; + } + + public static function createFromException(\Exception|\Throwable $exception, int $status): self + { + $headers = ($exception instanceof SymfonyHttpExceptionInterface || $exception instanceof HttpExceptionInterface) ? $exception->getHeaders() : []; + + return new self('An error occurred', $exception->getMessage(), $status, $exception->getTrace(), type: '/errors/'.$status, headers: $headers); + } + + /** + * @return array + */ + #[Ignore] + public function getHeaders(): array + { + return $this->headers; + } + + #[Ignore] + public function getStatusCode(): int + { + return $this->status; + } + + /** + * @param array $headers + */ + public function setHeaders(array $headers): void + { + $this->headers = $headers; + } + + #[Groups(['jsonld', 'jsonproblem'])] + public function getType(): string + { + return $this->type; + } + + #[Groups(['jsonld', 'jsonproblem', 'jsonapi'])] + public function getTitle(): ?string + { + return $this->title; + } + + public function setType(string $type): void + { + $this->type = $type; + } + + #[Groups(['jsonld', 'jsonproblem'])] + public function getStatus(): ?int + { + return $this->status; + } + + public function setStatus(int $status): void + { + $this->status = $status; + } + + #[Groups(['jsonld', 'jsonproblem'])] + public function getDetail(): ?string + { + return $this->detail; + } + + #[Groups(['jsonld', 'jsonproblem'])] + public function getInstance(): ?string + { + return $this->instance; + } +} diff --git a/src/Laravel/ApiResource/ValidationError.php b/src/Laravel/ApiResource/ValidationError.php new file mode 100644 index 00000000000..f95c2bf34c6 --- /dev/null +++ b/src/Laravel/ApiResource/ValidationError.php @@ -0,0 +1,158 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\ApiResource; + +use ApiPlatform\Metadata\Error as ErrorOperation; +use ApiPlatform\Metadata\ErrorResource; +use ApiPlatform\Metadata\Exception\HttpExceptionInterface; +use ApiPlatform\Metadata\Exception\ProblemExceptionInterface; +use ApiPlatform\Metadata\Exception\RuntimeException; +use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface as SymfonyHttpExceptionInterface; +use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\Serializer\Annotation\SerializedName; +use Symfony\Component\WebLink\Link; + +/** + * Thrown when a validation error occurs. + * + * @author Kévin Dunglas + */ +#[ErrorResource( + uriTemplate: '/validation_errors/{id}', + status: 422, + openapi: false, + uriVariables: ['id'], + shortName: 'ValidationError', + operations: [ + new ErrorOperation( + name: '_api_validation_errors_problem', + outputFormats: ['json' => ['application/problem+json']], + normalizationContext: ['groups' => ['json'], + 'skip_null_values' => true, + 'rfc_7807_compliant_errors' => true, + ], + uriTemplate: '/validation_errors/{id}' + ), + new ErrorOperation( + name: '_api_validation_errors_hydra', + outputFormats: ['jsonld' => ['application/problem+json']], + links: [new Link(rel: 'http://www.w3.org/ns/json-ld#error', href: 'http://www.w3.org/ns/hydra/error')], + normalizationContext: [ + 'groups' => ['jsonld'], + 'skip_null_values' => true, + 'rfc_7807_compliant_errors' => true, + ], + uriTemplate: '/validation_errors/{id}.jsonld' + ), + new ErrorOperation( + name: '_api_validation_errors_jsonapi', + outputFormats: ['jsonapi' => ['application/vnd.api+json']], + normalizationContext: ['groups' => ['jsonapi'], 'skip_null_values' => true, 'rfc_7807_compliant_errors' => true], + uriTemplate: '/validation_errors/{id}.jsonapi' + ), + ], + graphQlOperations: [] +)] +class ValidationError extends RuntimeException implements \Stringable, ProblemExceptionInterface, HttpExceptionInterface, SymfonyHttpExceptionInterface +{ + private int $status = 422; + private string $id; + + /** + * @param array $violations + */ + public function __construct(string $message = '', mixed $code = null, ?\Throwable $previous = null, protected array $violations = []) + { + $this->id = (string) $code; + $this->setDetail($message); + parent::__construct($message ?: $this->__toString(), 422, $previous); + } + + public function getId(): string + { + return $this->id; + } + + #[SerializedName('description')] + #[Groups(['jsonapi', 'jsonld', 'json'])] + public function getDescription(): string + { + return $this->detail; + } + + #[Groups(['jsonld', 'json'])] + public function getType(): string + { + return '/validation_errors/'.$this->id; + } + + #[Groups(['jsonld', 'json'])] + public function getTitle(): ?string + { + return 'Validation Error'; + } + + #[Groups(['jsonld', 'json'])] + private string $detail; + + public function getDetail(): ?string + { + return $this->detail; + } + + public function setDetail(string $detail): void + { + $this->detail = $detail; + } + + #[Groups(['jsonld', 'json'])] + public function getStatus(): ?int + { + return $this->status; + } + + public function setStatus(int $status): void + { + $this->status = $status; + } + + #[Groups(['jsonld', 'json'])] + public function getInstance(): ?string + { + return null; + } + + /** + * @return array + */ + #[SerializedName('violations')] + #[Groups(['json', 'jsonld'])] + public function getViolations(): array + { + return $this->violations; + } + + public function getStatusCode(): int + { + return $this->status; + } + + /** + * @return array + */ + public function getHeaders(): array + { + return []; + } +} diff --git a/src/Laravel/Controller/ApiPlatformController.php b/src/Laravel/Controller/ApiPlatformController.php new file mode 100644 index 00000000000..f37493a8b4a --- /dev/null +++ b/src/Laravel/Controller/ApiPlatformController.php @@ -0,0 +1,109 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Controller; + +use ApiPlatform\Metadata\HttpOperation; +use ApiPlatform\Metadata\Operation\Factory\OperationMetadataFactory; +use ApiPlatform\State\ProcessorInterface; +use ApiPlatform\State\ProviderInterface; +use Illuminate\Foundation\Application; +use Illuminate\Http\Request; +use Illuminate\Routing\Controller; +use Symfony\Component\HttpFoundation\Response; + +class ApiPlatformController extends Controller +{ + /** + * @param ProviderInterface $provider + * @param ProcessorInterface|object|null, Response> $processor + */ + public function __construct( + protected OperationMetadataFactory $operationMetadataFactory, + protected ProviderInterface $provider, + protected ProcessorInterface $processor, + protected Application $app, + ) { + } + + /** + * Display a listing of the resource. + */ + public function __invoke(Request $request): Response + { + $operation = $request->attributes->get('_api_operation'); + + if (!$operation) { + throw new \RuntimeException('Operation not found.'); + } + + $uriVariables = $this->getUriVariables($request, $operation); + // at some point we could introduce that back + // if ($this->uriVariablesConverter) { + // $context = ['operation' => $operation, 'uri_variables_map' => $uriVariablesMap]; + // $identifiers = $this->uriVariablesConverter->convert($identifiers, $operation->getClass() ?? $resourceClass, $context); + // } + + $context = [ + 'request' => $request, + 'uri_variables' => $uriVariables, + 'resource_class' => $operation->getClass(), + ]; + + if (null === $operation->canValidate()) { + $operation = $operation->withValidate(!$request->isMethodSafe() && !$request->isMethod('DELETE')); + } + + if (null === $operation->canRead() && $operation instanceof HttpOperation) { + $operation = $operation->withRead($operation->getUriVariables() || $request->isMethodSafe()); + } + + if (null === $operation->canDeserialize() && $operation instanceof HttpOperation) { + $operation = $operation->withDeserialize(\in_array($operation->getMethod(), ['POST', 'PUT', 'PATCH'], true)); + } + + $body = $this->provider->provide($operation, $uriVariables, $context); + + // The provider can change the Operation, extract it again from the Request attributes + if ($request->attributes->get('_api_operation') !== $operation) { + $operation = $request->attributes->get('_api_operation'); + $uriVariables = $this->getUriVariables($request, $operation); + } + + $context['previous_data'] = $request->attributes->get('previous_data'); + $context['data'] = $request->attributes->get('data'); + + if (null === $operation->canWrite()) { + $operation = $operation->withWrite(!$request->isMethodSafe()); + } + + if (null === $operation->canSerialize()) { + $operation = $operation->withSerialize(true); + } + + return $this->processor->process($body, $operation, $uriVariables, $context); + } + + /** + * @return array + */ + private function getUriVariables(Request $request, HttpOperation $operation): array + { + $uriVariables = []; + foreach ($operation->getUriVariables() ?? [] as $parameterName => $_) { + $uriVariables[(string) $parameterName] = $request->route($parameterName); + } + + return $uriVariables; + } +} diff --git a/src/Laravel/Eloquent/Metadata/Factory/Property/EloquentAttributePropertyMetadataFactory.php b/src/Laravel/Eloquent/Metadata/Factory/Property/EloquentAttributePropertyMetadataFactory.php new file mode 100644 index 00000000000..eaebea7c6d6 --- /dev/null +++ b/src/Laravel/Eloquent/Metadata/Factory/Property/EloquentAttributePropertyMetadataFactory.php @@ -0,0 +1,87 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\Metadata\Factory\Property; + +use ApiPlatform\JsonSchema\Metadata\Property\Factory\SchemaPropertyMetadataFactory; +use ApiPlatform\Metadata\ApiProperty; +use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface; +use Illuminate\Database\Eloquent\Model; + +final class EloquentAttributePropertyMetadataFactory implements PropertyMetadataFactoryInterface +{ + public function __construct(private readonly ?PropertyMetadataFactoryInterface $decorated = null) + { + } + + public function create(string $resourceClass, string $property, array $options = []): ApiProperty + { + if (!class_exists($resourceClass)) { + return $this->decorated?->create($resourceClass, $property, $options) ?? new ApiProperty(); + } + + $refl = new \ReflectionClass($resourceClass); + $model = $refl->newInstanceWithoutConstructor(); + + $propertyMetadata = $this->decorated?->create($resourceClass, $property, $options); + if (!$model instanceof Model) { + return $propertyMetadata ?? new ApiProperty(); + } + + try { + $method = $refl->getMethod($property); + + if ($attributes = $method->getAttributes(ApiProperty::class)) { + return $this->createMetadata($attributes[0]->newInstance(), $propertyMetadata); + } + } catch (\ReflectionException) { + } + + $attributes = $refl->getAttributes(ApiProperty::class); + foreach ($attributes as $attribute) { + $instance = $attribute->newInstance(); + if ($instance->getProperty() === $property) { + return $this->createMetadata($instance, $propertyMetadata); + } + } + + return $propertyMetadata; + } + + private function createMetadata(ApiProperty $attribute, ?ApiProperty $propertyMetadata = null): ApiProperty + { + if (null === $propertyMetadata) { + return $this->handleUserDefinedSchema($attribute); + } + + foreach (get_class_methods(ApiProperty::class) as $method) { + if (preg_match('/^(?:get|is)(.*)/', (string) $method, $matches) && null !== $val = $attribute->{$method}()) { + $propertyMetadata = $propertyMetadata->{"with{$matches[1]}"}($val); + } + } + + return $this->handleUserDefinedSchema($propertyMetadata); + } + + private function handleUserDefinedSchema(ApiProperty $propertyMetadata): ApiProperty + { + // can't know later if the schema has been defined by the user or by API Platform + // store extra key to make this difference + if (null !== $propertyMetadata->getSchema()) { + $extraProperties = $propertyMetadata->getExtraProperties() ?? []; + $propertyMetadata = $propertyMetadata->withExtraProperties([SchemaPropertyMetadataFactory::JSON_SCHEMA_USER_DEFINED => true] + $extraProperties); + } + + return $propertyMetadata; + } +} diff --git a/src/Laravel/Eloquent/Metadata/Factory/Property/EloquentAttributePropertyNameCollectionFactory.php b/src/Laravel/Eloquent/Metadata/Factory/Property/EloquentAttributePropertyNameCollectionFactory.php new file mode 100644 index 00000000000..52ba2fe2713 --- /dev/null +++ b/src/Laravel/Eloquent/Metadata/Factory/Property/EloquentAttributePropertyNameCollectionFactory.php @@ -0,0 +1,45 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\Metadata\Factory\Property; + +use ApiPlatform\Metadata\ApiProperty; +use ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface; +use ApiPlatform\Metadata\Property\PropertyNameCollection; + +final class EloquentAttributePropertyNameCollectionFactory implements PropertyNameCollectionFactoryInterface +{ + public function __construct(private readonly ?PropertyNameCollectionFactoryInterface $decorated = null) + { + } + + public function create(string $resourceClass, array $options = []): PropertyNameCollection + { + $properties = $this->decorated ? iterator_to_array($this->decorated->create($resourceClass, $options)) : []; + + if (!class_exists($resourceClass)) { + return new PropertyNameCollection($properties); + } + + $refl = new \ReflectionClass($resourceClass); + $attributes = $refl->getAttributes(ApiProperty::class); + foreach ($attributes as $attribute) { + $instance = $attribute->newInstance(); + if ($property = $instance->getProperty()) { + $properties[] = $property; + } + } + + return new PropertyNameCollection($properties); + } +} diff --git a/src/Laravel/Eloquent/Metadata/Factory/Property/EloquentPropertyMetadataFactory.php b/src/Laravel/Eloquent/Metadata/Factory/Property/EloquentPropertyMetadataFactory.php new file mode 100644 index 00000000000..97bb2ef361f --- /dev/null +++ b/src/Laravel/Eloquent/Metadata/Factory/Property/EloquentPropertyMetadataFactory.php @@ -0,0 +1,109 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\Metadata\Factory\Property; + +use ApiPlatform\Laravel\Eloquent\Metadata\ModelMetadata; +use ApiPlatform\Metadata\ApiProperty; +use ApiPlatform\Metadata\Exception\PropertyNotFoundException; +use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\HasMany; +use Symfony\Component\PropertyInfo\Type; + +/** + * Use Doctrine metadata to populate the identifier property. + * + * @author Kévin Dunglas + */ +final class EloquentPropertyMetadataFactory implements PropertyMetadataFactoryInterface +{ + public function __construct(private ModelMetadata $modelMetadata, private readonly ?PropertyMetadataFactoryInterface $decorated = null) + { + } + + /** + * {@inheritdoc} + * + * @param class-string $resourceClass + */ + public function create(string $resourceClass, string $property, array $options = []): ApiProperty + { + try { + $refl = new \ReflectionClass($resourceClass); + $model = $refl->newInstanceWithoutConstructor(); + } catch (\ReflectionException) { + return $this->decorated?->create($resourceClass, $property, $options) ?? new ApiProperty(); + } + + if (!$model instanceof Model) { + return $this->decorated?->create($resourceClass, $property, $options) ?? new ApiProperty(); + } + + try { + $propertyMetadata = $this->decorated?->create($resourceClass, $property, $options) ?? new ApiProperty(); + } catch (PropertyNotFoundException) { + $propertyMetadata = new ApiProperty(); + } + + if ($model->getKeyName() === $property) { + $propertyMetadata = $propertyMetadata->withIdentifier(true); + } + + foreach ($this->modelMetadata->getAttributes($model) as $p) { + if ($p['name'] !== $property) { + continue; + } + + $builtinType = $p['cast'] ?? $p['type']; + if ('datetime' === $builtinType) { + $type = new Type(Type::BUILTIN_TYPE_OBJECT, $p['nullable'], \DateTimeImmutable::class); + } else { + if (\in_array($builtinType, Type::$builtinTypes, true)) { + $type = new Type($builtinType, $p['nullable']); + } else { + $type = new Type(Type::BUILTIN_TYPE_STRING, $p['nullable']); + } + } + + $propertyMetadata = $propertyMetadata + ->withBuiltinTypes([$type]) + ->withWritable($propertyMetadata->isWritable() ?? true) + ->withReadable($propertyMetadata->isReadable() ?? false === $p['hidden']); + + return $propertyMetadata; + } + + foreach ($this->modelMetadata->getRelations($model) as $relation) { + if ($relation['name'] !== $property) { + continue; + } + + $collection = false; + if (HasMany::class === $relation['type']) { + $collection = true; + } + + $type = new Type($collection ? Type::BUILTIN_TYPE_ITERABLE : Type::BUILTIN_TYPE_OBJECT, false, $relation['related'], $collection, collectionValueType: new Type(Type::BUILTIN_TYPE_OBJECT, false, $relation['related'])); + $propertyMetadata = $propertyMetadata + ->withBuiltinTypes([$type]) + ->withWritable($propertyMetadata->isWritable() ?? true) + ->withReadable($propertyMetadata->isReadable() ?? true) + ->withExtraProperties(['eloquent_relation' => $relation] + $propertyMetadata->getExtraProperties()); + + return $propertyMetadata; + } + + return $propertyMetadata; + } +} diff --git a/src/Laravel/Eloquent/Metadata/Factory/Property/EloquentPropertyNameCollectionMetadataFactory.php b/src/Laravel/Eloquent/Metadata/Factory/Property/EloquentPropertyNameCollectionMetadataFactory.php new file mode 100644 index 00000000000..161eeb32652 --- /dev/null +++ b/src/Laravel/Eloquent/Metadata/Factory/Property/EloquentPropertyNameCollectionMetadataFactory.php @@ -0,0 +1,70 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\Metadata\Factory\Property; + +use ApiPlatform\Laravel\Eloquent\Metadata\ModelMetadata; +use ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface; +use ApiPlatform\Metadata\Property\PropertyNameCollection; +use ApiPlatform\Metadata\ResourceClassResolverInterface; +use Illuminate\Database\Eloquent\Model; + +final class EloquentPropertyNameCollectionMetadataFactory implements PropertyNameCollectionFactoryInterface +{ + public function __construct(private ModelMetadata $modelMetadata, private PropertyNameCollectionFactoryInterface $decorated, private ResourceClassResolverInterface $resourceClassResolver) + { + } + + /** + * {@inheritdoc} + * + * @param class-string $resourceClass + */ + public function create(string $resourceClass, array $options = []): PropertyNameCollection + { + if (!class_exists($resourceClass)) { + return $this->decorated->create($resourceClass, $options); + } + + try { + $refl = new \ReflectionClass($resourceClass); + $model = $refl->newInstanceWithoutConstructor(); + } catch (\ReflectionException) { + return $this->decorated->create($resourceClass, $options); + } + + if (!$model instanceof Model) { + return $this->decorated->create($resourceClass, $options); + } + + $properties = []; + // When it's an Eloquent model we read attributes from database (@see ShowModelCommand) + foreach ($this->modelMetadata->getAttributes($model) as $property) { + if (!$property['primary'] && $property['hidden']) { + continue; + } + + $properties[] = $property['name']; + } + + foreach ($this->modelMetadata->getRelations($model) as $relation) { + if (!$this->resourceClassResolver->isResourceClass($relation['related'])) { + continue; + } + + $properties[] = $relation['name']; + } + + return new PropertyNameCollection($properties); + } +} diff --git a/src/Laravel/Eloquent/Metadata/Factory/Resource/EloquentResourceCollectionMetadataFactory.php b/src/Laravel/Eloquent/Metadata/Factory/Resource/EloquentResourceCollectionMetadataFactory.php new file mode 100644 index 00000000000..bfa77666987 --- /dev/null +++ b/src/Laravel/Eloquent/Metadata/Factory/Resource/EloquentResourceCollectionMetadataFactory.php @@ -0,0 +1,70 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\Metadata\Factory\Resource; + +use ApiPlatform\Laravel\Eloquent\State\CollectionProvider; +use ApiPlatform\Laravel\Eloquent\State\ItemProvider; +use ApiPlatform\Laravel\Eloquent\State\PersistProcessor; +use ApiPlatform\Laravel\Eloquent\State\RemoveProcessor; +use ApiPlatform\Metadata\CollectionOperationInterface; +use ApiPlatform\Metadata\DeleteOperationInterface; +use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; +use ApiPlatform\Metadata\Resource\ResourceMetadataCollection; +use Illuminate\Database\Eloquent\Model; + +final class EloquentResourceCollectionMetadataFactory implements ResourceMetadataCollectionFactoryInterface +{ + public function __construct( + private readonly ResourceMetadataCollectionFactoryInterface $decorated, + ) { + } + + /** + * @param class-string $resourceClass + */ + public function create(string $resourceClass): ResourceMetadataCollection + { + $resourceMetadataCollection = $this->decorated->create($resourceClass); + + try { + $refl = new \ReflectionClass($resourceClass); + $model = $refl->newInstanceWithoutConstructor(); + } catch (\ReflectionException) { + return $this->decorated->create($resourceClass); + } + + if (!$model instanceof Model) { + return $resourceMetadataCollection; + } + + foreach ($resourceMetadataCollection as $i => $resourceMetatada) { + $operations = $resourceMetatada->getOperations(); + foreach ($operations as $operationName => $operation) { + if (!$operation->getProvider()) { + $operation = $operation->withProvider($operation instanceof CollectionOperationInterface ? CollectionProvider::class : ItemProvider::class); + } + + if (!$operation->getProcessor()) { + $operation = $operation->withProcessor($operation instanceof DeleteOperationInterface ? RemoveProcessor::class : PersistProcessor::class); + } + + $operations->add($operationName, $operation); + } + + $resourceMetadataCollection[$i] = $resourceMetatada->withOperations($operations); + } + + return $resourceMetadataCollection; + } +} diff --git a/src/Laravel/Eloquent/Metadata/IdentifiersExtractor.php b/src/Laravel/Eloquent/Metadata/IdentifiersExtractor.php new file mode 100644 index 00000000000..a25fc7f991a --- /dev/null +++ b/src/Laravel/Eloquent/Metadata/IdentifiersExtractor.php @@ -0,0 +1,78 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\Metadata; + +use ApiPlatform\Metadata\HttpOperation; +use ApiPlatform\Metadata\IdentifiersExtractorInterface; +use ApiPlatform\Metadata\Link; +use ApiPlatform\Metadata\Operation; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; + +final class IdentifiersExtractor implements IdentifiersExtractorInterface +{ + public function __construct(private readonly IdentifiersExtractorInterface $inner) + { + } + + public function getIdentifiersFromItem(object $item, ?Operation $operation = null, array $context = []): array + { + if (!($item instanceof BelongsTo || $item instanceof Model) || !$operation instanceof HttpOperation) { + return $this->inner->getIdentifiersFromItem($item, $operation, $context); + } + + $identifiers = []; + foreach ($operation->getUriVariables() ?? [] as $link) { + $parameterName = $link->getParameterName(); + $identifiers[$parameterName] = $this->getIdentifierValue($item, $link); + } + + return $identifiers; + } + + private function getIdentifierValue(object $item, Link $link): mixed + { + if ($item instanceof ($link->getFromClass())) { + return $this->getEloquentProperty($item, $link->getIdentifiers()[0]); + } + + if ($item instanceof BelongsTo) { + return $this->getEloquentProperty($item->getParent(), $item->getForeignKeyName()); + } + + if ($toProperty = $link->getToProperty()) { + $relation = $this->getEloquentProperty($item, $toProperty); + + if ($relation instanceof BelongsTo) { + return $this->getEloquentProperty($item, $relation->getForeignKeyName()); + } + } + + return $this->getEloquentProperty($item, $link->getIdentifiers()[0]); + } + + private function getEloquentProperty(object $item, string $property): mixed + { + if (method_exists($item, $property)) { + return $item->{$property}(); + } + + $getter = 'get'.ucfirst($property); + if (method_exists($item, $getter)) { + return $item->{$getter}(); + } + + return $item->{$property}; + } +} diff --git a/src/Laravel/Eloquent/Metadata/ModelMetadata.php b/src/Laravel/Eloquent/Metadata/ModelMetadata.php new file mode 100644 index 00000000000..e2da798974c --- /dev/null +++ b/src/Laravel/Eloquent/Metadata/ModelMetadata.php @@ -0,0 +1,297 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\Metadata; + +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\Relation; +use Illuminate\Support\Collection; +use Illuminate\Support\Facades\Gate; +use Illuminate\Support\Str; + +/** + * Inspired from Illuminate\Database\Console\ShowModelCommand. + * + * @internal + */ +final class ModelMetadata +{ + /** + * The methods that can be called in a model to indicate a relation. + * + * @var string[] + */ + public const RELATION_METHODS = [ + 'hasMany', + 'hasManyThrough', + 'hasOneThrough', + 'belongsToMany', + 'hasOne', + 'belongsTo', + 'morphOne', + 'morphTo', + 'morphMany', + 'morphToMany', + 'morphedByMany', + ]; + + /** + * Get the first policy associated with this model. + * + * @param Model $model + * + * @return string + */ + public function getPolicy($model) + { + $policy = Gate::getPolicyFor($model::class); + + return $policy ? $policy::class : null; + } + + /** + * Get the column attributes for the given model. + * + * @param Model $model + * + * @return \Illuminate\Support\Collection + */ + public function getAttributes($model): Collection + { + $connection = $model->getConnection(); + $schema = $connection->getSchemaBuilder(); + $table = $model->getTable(); + $columns = $schema->getColumns($table); + $indexes = $schema->getIndexes($table); + + return collect($columns) + ->map(fn ($column) => [ + 'name' => $column['name'], + 'type' => $column['type'], + 'increments' => $column['auto_increment'], + 'nullable' => $column['nullable'], + 'default' => $this->getColumnDefault($column, $model), + 'unique' => $this->columnIsUnique($column['name'], $indexes), + 'fillable' => $model->isFillable($column['name']), + 'hidden' => $this->attributeIsHidden($column['name'], $model), + 'appended' => null, + 'cast' => $this->getCastType($column['name'], $model), + 'primary' => $this->isColumnPrimaryKey($indexes, $column['name']), + ]) + ->merge($this->getVirtualAttributes($model, $columns)); + } + + /** + * @param array $indexes + */ + private function isColumnPrimaryKey(array $indexes, string $column): bool + { + foreach ($indexes as $index) { + if (\in_array($column, $index['columns'], true)) { + return true; + } + } + + return false; + } + + /** + * Get the virtual (non-column) attributes for the given model. + * + * @param array $columns + * + * @return \Illuminate\Support\Collection + */ + public function getVirtualAttributes(Model $model, $columns): Collection + { + $class = new \ReflectionClass($model); + + return collect($class->getMethods()) + ->reject( + fn (\ReflectionMethod $method) => $method->isStatic() + || $method->isAbstract() + || Model::class === $method->getDeclaringClass()->getName() + ) + ->mapWithKeys(function (\ReflectionMethod $method) use ($model) { + if (1 === preg_match('/^get(.+)Attribute$/', $method->getName(), $matches)) { + return [Str::snake($matches[1]) => 'accessor']; + } + if ($model->hasAttributeMutator($method->getName())) { + return [Str::snake($method->getName()) => 'attribute']; + } + + return []; + }) + ->reject(fn ($cast, $name) => collect($columns)->contains('name', $name)) + ->map(fn ($cast, $name) => [ + 'name' => $name, + 'type' => null, + 'increments' => false, + 'nullable' => null, + 'default' => null, + 'unique' => null, + 'fillable' => $model->isFillable($name), + 'hidden' => $this->attributeIsHidden($name, $model), + 'appended' => $model->hasAppended($name), + 'cast' => $cast, + ]) + ->values(); + } + + /** + * Get the relations from the given model. + * + * @return \Illuminate\Support\Collection + */ + public function getRelations(Model $model): Collection + { + return collect(get_class_methods($model)) + ->map(fn ($method) => new \ReflectionMethod($model, $method)) + ->reject( + fn (\ReflectionMethod $method) => $method->isStatic() + || $method->isAbstract() + || Model::class === $method->getDeclaringClass()->getName() + || $method->getNumberOfParameters() > 0 + ) + ->filter(function (\ReflectionMethod $method) { + if ($method->getReturnType() instanceof \ReflectionNamedType + && is_subclass_of($method->getReturnType()->getName(), Relation::class)) { + return true; + } + + if (false === $method->getFileName()) { + return false; + } + + $file = new \SplFileObject($method->getFileName()); + $file->seek($method->getStartLine() - 1); + $code = ''; + while ($file->key() < $method->getEndLine()) { + $current = $file->current(); + if (\is_string($current)) { + $code .= trim($current); + } + + $file->next(); + } + + return collect(static::RELATION_METHODS) + ->contains(fn ($relationMethod) => str_contains($code, '$this->'.$relationMethod.'(')); + }) + ->map(function (\ReflectionMethod $method) use ($model) { + $relation = $method->invoke($model); + + if (!$relation instanceof Relation) { + return null; + } + + return [ + 'name' => $method->getName(), + 'type' => $relation::class, + 'related' => \get_class($relation->getRelated()), + ]; + }) + ->filter() + ->values(); + } + + /** + * Get the Events that the model dispatches. + * + * @return \Illuminate\Support\Collection + */ + public function getEvents(Model $model): Collection + { + return collect($model->dispatchesEvents()) + ->map(fn (string $class, string $event) => [ + 'event' => $event, + 'class' => $class, + ])->values(); + } + + /** + * Get the cast type for the given column. + */ + private function getCastType(string $column, Model $model): ?string + { + if ($model->hasGetMutator($column) || $model->hasSetMutator($column)) { + return 'accessor'; + } + + if ($model->hasAttributeMutator($column)) { + return 'attribute'; + } + + return $this->getCastsWithDates($model)->get($column) ?? null; + } + + /** + * Get the model casts, including any date casts. + * + * @return \Illuminate\Support\Collection + */ + private function getCastsWithDates(Model $model): Collection + { + return collect($model->getDates()) + ->filter() + ->flip() + ->map(fn () => 'datetime') + ->merge($model->getCasts()); + } + + /** + * Get the default value for the given column. + * + * @param array&array{name: string, default: string} $column + * + * @return mixed|null + */ + private function getColumnDefault(array $column, Model $model): mixed + { + $attributeDefault = $model->getAttributes()[$column['name']] ?? null; + + return match (true) { + $attributeDefault instanceof \BackedEnum => $attributeDefault->value, + $attributeDefault instanceof \UnitEnum => $attributeDefault->name, + default => $attributeDefault ?? $column['default'], + }; + } + + /** + * Determine if the given attribute is hidden. + */ + private function attributeIsHidden(string $attribute, Model $model): bool + { + if (\count($model->getHidden()) > 0) { + return \in_array($attribute, $model->getHidden(), true); + } + + if (\count($model->getVisible()) > 0) { + return !\in_array($attribute, $model->getVisible(), true); + } + + return false; + } + + /** + * Determine if the given attribute is unique. + * + * @param array $indexes + */ + private function columnIsUnique(string $column, array $indexes): bool + { + return collect($indexes)->contains( + fn ($index) => 1 === \count($index['columns']) && $index['columns'][0] === $column && $index['unique'] + ); + } +} diff --git a/src/Laravel/Eloquent/Metadata/ResourceClassResolver.php b/src/Laravel/Eloquent/Metadata/ResourceClassResolver.php new file mode 100644 index 00000000000..ffe1da6186c --- /dev/null +++ b/src/Laravel/Eloquent/Metadata/ResourceClassResolver.php @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\Metadata; + +use ApiPlatform\Metadata\ResourceClassResolverInterface; +use Illuminate\Database\Eloquent\Relations\Relation; + +final class ResourceClassResolver implements ResourceClassResolverInterface +{ + public function __construct(private readonly ResourceClassResolverInterface $inner) + { + } + + public function getResourceClass(mixed $value, ?string $resourceClass = null, bool $strict = false): string + { + if ($value instanceof Relation) { + return $this->inner->getResourceClass($value->getRelated()); + } + + return $this->inner->getResourceClass($value, $resourceClass, $strict); + } + + public function isResourceClass(string $type): bool + { + return $this->inner->isResourceClass($type); + } +} diff --git a/src/Laravel/Eloquent/Paginator.php b/src/Laravel/Eloquent/Paginator.php new file mode 100644 index 00000000000..bb010721261 --- /dev/null +++ b/src/Laravel/Eloquent/Paginator.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent; + +use ApiPlatform\State\Pagination\PaginatorInterface; +use Illuminate\Pagination\LengthAwarePaginator; +use IteratorAggregate; + +/** + * @implements IteratorAggregate + * @implements PaginatorInterface + */ +final class Paginator implements PaginatorInterface, \IteratorAggregate +{ + public function __construct(protected LengthAwarePaginator $paginator) // @phpstan-ignore-line + { + } + + public function count(): int + { + return $this->paginator->count(); + } + + public function getLastPage(): float + { + return $this->paginator->lastPage(); + } + + public function getTotalItems(): float + { + return $this->paginator->total(); + } + + public function getCurrentPage(): float + { + return $this->paginator->currentPage(); + } + + public function getItemsPerPage(): float + { + return $this->paginator->perPage(); + } + + public function getIterator(): \Traversable + { + return $this->paginator->getIterator(); + } +} diff --git a/src/Laravel/Eloquent/PropertyAccess/PropertyAccessor.php b/src/Laravel/Eloquent/PropertyAccess/PropertyAccessor.php new file mode 100644 index 00000000000..1dd8cfb216d --- /dev/null +++ b/src/Laravel/Eloquent/PropertyAccess/PropertyAccessor.php @@ -0,0 +1,66 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\PropertyAccess; + +use Illuminate\Database\Eloquent\Relations\HasMany; +use Symfony\Component\PropertyAccess\PropertyAccessorInterface; +use Symfony\Component\PropertyAccess\PropertyPathInterface; + +/** + * @internal + */ +final class PropertyAccessor implements PropertyAccessorInterface +{ + public function __construct(private readonly PropertyAccessorInterface $inner) + { + } + + /** + * @param array|object $objectOrArray + */ + public function setValue(object|array &$objectOrArray, string|PropertyPathInterface $propertyPath, mixed $value): void + { + $this->inner->setValue($objectOrArray, $propertyPath, $value); + } + + /** + * @param array|object $objectOrArray + */ + public function getValue(object|array $objectOrArray, string|PropertyPathInterface $propertyPath): mixed + { + $value = $this->inner->getValue($objectOrArray, $propertyPath); + + if ($value instanceof HasMany) { + return $objectOrArray->{$propertyPath}; + } + + return $value; + } + + /** + * @param array|object $objectOrArray + */ + public function isWritable(object|array $objectOrArray, string|PropertyPathInterface $propertyPath): bool + { + return $this->inner->isWritable($objectOrArray, $propertyPath); + } + + /** + * @param array|object $objectOrArray + */ + public function isReadable(object|array $objectOrArray, string|PropertyPathInterface $propertyPath): bool + { + return $this->inner->isReadable($objectOrArray, $propertyPath); + } +} diff --git a/src/Laravel/Eloquent/Serializer/SerializerContextBuilder.php b/src/Laravel/Eloquent/Serializer/SerializerContextBuilder.php new file mode 100644 index 00000000000..b13022abf7c --- /dev/null +++ b/src/Laravel/Eloquent/Serializer/SerializerContextBuilder.php @@ -0,0 +1,43 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\Serializer; + +use ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface; +use ApiPlatform\State\SerializerContextBuilderInterface; +use Illuminate\Database\Eloquent\Model; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; + +class SerializerContextBuilder implements SerializerContextBuilderInterface +{ + public function __construct(private readonly SerializerContextBuilderInterface $decorated, private readonly PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory) + { + } + + /** + * @param array $extractedAttributes + */ + public function createFromRequest(Request $request, bool $normalization, ?array $extractedAttributes = null): array + { + $context = $this->decorated->createFromRequest($request, $normalization, $extractedAttributes); + if (!isset($context['resource_class']) || !is_a($context['resource_class'], Model::class, true)) { + return $context; + } + + // isWritable/isReadable is checked later on + $context[AbstractNormalizer::ATTRIBUTES] = iterator_to_array($this->propertyNameCollectionFactory->create($context['resource_class'], ['serializer_groups' => $context['groups'] ?? null])); + + return $context; + } +} diff --git a/src/Laravel/Eloquent/State/CollectionProvider.php b/src/Laravel/Eloquent/State/CollectionProvider.php new file mode 100644 index 00000000000..96d3c007fa5 --- /dev/null +++ b/src/Laravel/Eloquent/State/CollectionProvider.php @@ -0,0 +1,67 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\State; + +use ApiPlatform\Laravel\Eloquent\Paginator; +use ApiPlatform\Metadata\Exception\RuntimeException; +use ApiPlatform\Metadata\HttpOperation; +use ApiPlatform\Metadata\Operation; +use ApiPlatform\State\Pagination\Pagination; +use ApiPlatform\State\ProviderInterface; +use Illuminate\Database\Eloquent\Model; +use Psr\Container\ContainerInterface; + +/** + * @implements ProviderInterface> + */ +class CollectionProvider implements ProviderInterface +{ + use LinksHandlerLocatorTrait; + + /** + * @param LinksHandlerInterface $linksHandler + */ + public function __construct(private readonly Pagination $pagination, private readonly LinksHandlerInterface $linksHandler, ?ContainerInterface $handleLinksLocator = null) + { + $this->handleLinksLocator = $handleLinksLocator; + } + + public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null + { + if (!$operation instanceof HttpOperation) { + throw new RuntimeException('Not an HTTP operation.'); + } + + /** @var Model $model */ + $model = new ($operation->getClass())(); + + if ($handleLinks = $this->getLinksHandler($operation)) { + $query = $handleLinks($model->query(), $uriVariables, ['operation' => $operation, 'modelClass' => $operation->getClass()] + $context); + } else { + $query = $this->linksHandler->handleLinks($model->query(), $uriVariables, ['operation' => $operation, 'modelClass' => $operation->getClass()] + $context); + } + + if (false === $this->pagination->isEnabled($operation, $context)) { + return $query->get(); + } + + return new Paginator( + $query + ->paginate( + perPage: $this->pagination->getLimit($operation, $context), + page: $this->pagination->getPage($context), + ) + ); + } +} diff --git a/src/Laravel/Eloquent/State/ItemProvider.php b/src/Laravel/Eloquent/State/ItemProvider.php new file mode 100644 index 00000000000..5733c0094ba --- /dev/null +++ b/src/Laravel/Eloquent/State/ItemProvider.php @@ -0,0 +1,48 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\State; + +use ApiPlatform\Metadata\Operation; +use ApiPlatform\State\ProviderInterface; +use Illuminate\Database\Eloquent\Model; +use Psr\Container\ContainerInterface; + +/** + * @implements ProviderInterface<\Illuminate\Database\Eloquent\Model> + */ +class ItemProvider implements ProviderInterface +{ + use LinksHandlerLocatorTrait; + + /** + * @param LinksHandlerInterface $linksHandler + */ + public function __construct(private readonly LinksHandlerInterface $linksHandler, ?ContainerInterface $handleLinksLocator = null) + { + $this->handleLinksLocator = $handleLinksLocator; + } + + public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null + { + $model = new ($operation->getClass())(); + + if ($handleLinks = $this->getLinksHandler($operation)) { + $query = $handleLinks($model->query(), $uriVariables, ['operation' => $operation] + $context); + } else { + $query = $this->linksHandler->handleLinks($model->query(), $uriVariables, ['operation' => $operation] + $context); + } + + return $query->first(); + } +} diff --git a/src/Laravel/Eloquent/State/LinksHandler.php b/src/Laravel/Eloquent/State/LinksHandler.php new file mode 100644 index 00000000000..9f5eb9565a1 --- /dev/null +++ b/src/Laravel/Eloquent/State/LinksHandler.php @@ -0,0 +1,52 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\State; + +use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Foundation\Application; + +/** + * @implements LinksHandlerInterface + */ +class LinksHandler implements LinksHandlerInterface +{ + public function __construct(private readonly Application $application) + { + } + + public function handleLinks(Builder $builder, array $uriVariables, array $context): Builder + { + $operation = $context['operation']; + // $lastQuery = null; + foreach (array_reverse($operation->getUriVariables() ?? []) as $uriVariable => $link) { + $identifier = $uriVariables[$uriVariable]; + + if ($to = $link->getToProperty()) { + $builder = $builder->where($builder->getModel()->getTable().'.'.$builder->getModel()->{$to}()->getForeignKeyName(), $identifier); + continue; + } + + if ($from = $link->getFromProperty()) { + $relation = $this->application->make($link->getFromClass()); + $builder = $builder->getModel()->where($builder->getModel()->getTable().'.'.$relation->{$from}()->getForeignKeyName(), $identifier); + continue; + } + + $builder->where($builder->getModel()->getTable().'.'.$link->getIdentifiers()[0], $identifier); + } + + return $builder; + } +} diff --git a/src/Laravel/Eloquent/State/LinksHandlerInterface.php b/src/Laravel/Eloquent/State/LinksHandlerInterface.php new file mode 100644 index 00000000000..66c74a8c895 --- /dev/null +++ b/src/Laravel/Eloquent/State/LinksHandlerInterface.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\State; + +use ApiPlatform\Metadata\Operation; +use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Model; + +/** + * @template T of Model + */ +interface LinksHandlerInterface +{ + /** + * Handle Laravel links. + * + * @param Builder $builder + * @param array $uriVariables + * @param array{modelClass: string, operation: Operation}|array $context + * + * @return Builder + */ + public function handleLinks(Builder $builder, array $uriVariables, array $context): Builder; +} diff --git a/src/Laravel/Eloquent/State/LinksHandlerLocatorTrait.php b/src/Laravel/Eloquent/State/LinksHandlerLocatorTrait.php new file mode 100644 index 00000000000..356e64f69bc --- /dev/null +++ b/src/Laravel/Eloquent/State/LinksHandlerLocatorTrait.php @@ -0,0 +1,44 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\State; + +use ApiPlatform\Metadata\Exception\RuntimeException; +use ApiPlatform\Metadata\Operation; +use Psr\Container\ContainerInterface; + +/** + * @internal + */ +trait LinksHandlerLocatorTrait +{ + private ?ContainerInterface $handleLinksLocator; + + private function getLinksHandler(Operation $operation): ?callable + { + if (!($options = $operation->getStateOptions()) || !$options instanceof Options) { + return null; + } + + $handleLinks = $options->getHandleLinks(); + if (\is_callable($handleLinks)) { + return $handleLinks; + } + + if ($this->handleLinksLocator && \is_string($handleLinks) && $this->handleLinksLocator->has($handleLinks)) { + return [$this->handleLinksLocator->get($handleLinks), 'handleLinks']; // @phpstan-ignore-line + } + + throw new RuntimeException(sprintf('Could not find handleLinks service "%s"', $handleLinks)); + } +} diff --git a/src/Laravel/Eloquent/State/Options.php b/src/Laravel/Eloquent/State/Options.php new file mode 100644 index 00000000000..f9466c509da --- /dev/null +++ b/src/Laravel/Eloquent/State/Options.php @@ -0,0 +1,42 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\State; + +use ApiPlatform\State\OptionsInterface; + +class Options implements OptionsInterface +{ + /** + * @param string|callable $handleLinks experimental callable, typed mixed as we may want a service name in the future + * + * @see LinksHandlerInterface + */ + public function __construct( + protected mixed $handleLinks = null, + ) { + } + + public function getHandleLinks(): mixed + { + return $this->handleLinks; + } + + public function withHandleLinks(mixed $handleLinks): self + { + $self = clone $this; + $self->handleLinks = $handleLinks; + + return $self; + } +} diff --git a/src/Laravel/Eloquent/State/PersistProcessor.php b/src/Laravel/Eloquent/State/PersistProcessor.php new file mode 100644 index 00000000000..71889d8f591 --- /dev/null +++ b/src/Laravel/Eloquent/State/PersistProcessor.php @@ -0,0 +1,48 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\State; + +use ApiPlatform\Laravel\Eloquent\Metadata\ModelMetadata; +use ApiPlatform\Metadata\Operation; +use ApiPlatform\State\ProcessorInterface; +use Illuminate\Database\Eloquent\Relations\BelongsTo; + +/** + * @implements ProcessorInterface<\Illuminate\Database\Eloquent\Model, \Illuminate\Database\Eloquent\Model> + */ +class PersistProcessor implements ProcessorInterface +{ + public function __construct(private readonly ModelMetadata $modelMetadata) + { + } + + public function process(mixed $data, Operation $operation, array $uriVariables = [], array $context = []) + { + foreach ($this->modelMetadata->getRelations($data) as $relation) { + if (!isset($data->{$relation['name']})) { + continue; + } + + if (BelongsTo::class === $relation['type']) { + $data->{$relation['name']}()->associate($data->{$relation['name']}); + unset($data->{$relation['name']}); + } + } + + $data->saveOrFail(); + $data->refresh(); + + return $data; + } +} diff --git a/src/Laravel/Eloquent/State/RemoveProcessor.php b/src/Laravel/Eloquent/State/RemoveProcessor.php new file mode 100644 index 00000000000..c6f338fc33d --- /dev/null +++ b/src/Laravel/Eloquent/State/RemoveProcessor.php @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Eloquent\State; + +use ApiPlatform\Metadata\Operation; +use ApiPlatform\State\ProcessorInterface; + +/** + * @implements ProcessorInterface<\Illuminate\Database\Eloquent\Model, null> + */ +class RemoveProcessor implements ProcessorInterface +{ + public function process(mixed $data, Operation $operation, array $uriVariables = [], array $context = []) + { + $data->delete(); + + return null; + } +} diff --git a/src/Laravel/Exception/Handler.php b/src/Laravel/Exception/Handler.php new file mode 100644 index 00000000000..3c96d0f6ab8 --- /dev/null +++ b/src/Laravel/Exception/Handler.php @@ -0,0 +1,198 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Exception; + +use ApiPlatform\Laravel\ApiResource\Error; +use ApiPlatform\Laravel\Controller\ApiPlatformController; +use ApiPlatform\Metadata\Exception\ProblemExceptionInterface; +use ApiPlatform\Metadata\Exception\StatusAwareExceptionInterface; +use ApiPlatform\Metadata\HttpOperation; +use ApiPlatform\Metadata\IdentifiersExtractorInterface; +use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; +use ApiPlatform\Metadata\ResourceClassResolverInterface; +use ApiPlatform\Metadata\Util\ContentNegotiationTrait; +use ApiPlatform\State\Util\OperationRequestInitiatorTrait; +use ApiPlatform\Symfony\Validator\Exception\ConstraintViolationListAwareExceptionInterface; +use ApiPlatform\Validator\Exception\ValidationException; +use Illuminate\Contracts\Container\Container; +use Illuminate\Foundation\Exceptions\Handler as ExceptionsHandler; +use Illuminate\Http\Request; +use Negotiation\Negotiator; +use Symfony\Component\HttpFoundation\Exception\RequestExceptionInterface; +use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface as SymfonyHttpExceptionInterface; + +class Handler extends ExceptionsHandler +{ + use ContentNegotiationTrait; + use OperationRequestInitiatorTrait; + public static mixed $error; + + public function __construct( + Container $container, + ResourceMetadataCollectionFactoryInterface $resourceMetadataCollectionFactory, + private readonly ApiPlatformController $apiPlatformController, + private readonly ?IdentifiersExtractorInterface $identifiersExtractor = null, + private readonly ?ResourceClassResolverInterface $resourceClassResolver = null, + ?Negotiator $negotiator = null + ) { + $this->resourceMetadataCollectionFactory = $resourceMetadataCollectionFactory; + $this->negotiator = $negotiator; + // calls register + parent::__construct($container); + $this->register(); + } + + public function register(): void + { + $this->renderable(function (\Throwable $exception, Request $request) { + $apiOperation = $this->initializeOperation($request); + if (!$apiOperation) { + return null; + } + + $formats = config('api-platform.error_formats') ?? ['jsonproblem' => ['application/problem+json']]; + $format = $request->getRequestFormat() ?? $this->getRequestFormat($request, $formats, false); + + if ($this->resourceClassResolver->isResourceClass($exception::class)) { + $resourceCollection = $this->resourceMetadataCollectionFactory->create($exception::class); + + $operation = null; + foreach ($resourceCollection as $resource) { + foreach ($resource->getOperations() as $op) { + foreach ($op->getOutputFormats() as $key => $value) { + if ($key === $format) { + $operation = $op; + break 3; + } + } + } + } + + // No operation found for the requested format, we take the first available + if (!$operation) { + $operation = $resourceCollection->getOperation(); + } + $errorResource = $exception; + if ($errorResource instanceof ProblemExceptionInterface && $operation instanceof HttpOperation) { + $statusCode = $this->getStatusCode($apiOperation, $operation, $exception); + $operation = $operation->withStatus($statusCode); + if ($errorResource instanceof StatusAwareExceptionInterface) { + $errorResource->setStatus($statusCode); + } + } + } else { + // Create a generic, rfc7807 compatible error according to the wanted format + $operation = $this->resourceMetadataCollectionFactory->create(Error::class)->getOperation($this->getFormatOperation($format)); + // status code may be overriden by the exceptionToStatus option + $statusCode = 500; + if ($operation instanceof HttpOperation) { + $statusCode = $this->getStatusCode($apiOperation, $operation, $exception); + $operation = $operation->withStatus($statusCode); + } + + $errorResource = Error::createFromException($exception, $statusCode); + } + + /** @var HttpOperation $operation */ + if (!$operation->getProvider()) { + // TODO: validation + // static::$error = 'jsonapi' === $format && $errorResource instanceof ConstraintViolationListAwareExceptionInterface ? $errorResource->getConstraintViolationList() : $errorResource; + static::$error = $errorResource; + $operation = $operation->withProvider([self::class, 'provide']); + } + + // For our swagger Ui errors + if ('html' === $format) { + $operation = $operation->withOutputFormats(['html' => ['text/html']]); + } + + $identifiers = []; + try { + $identifiers = $this->identifiersExtractor?->getIdentifiersFromItem($errorResource, $operation) ?? []; + } catch (\Exception $e) { + } + + $dup = $request->duplicate(null, null, []); + $dup->setMethod('GET'); + $dup->attributes->set('_api_resource_class', $operation->getClass()); + $dup->attributes->set('_api_previous_operation', $apiOperation); + $dup->attributes->set('_api_operation', $operation); + $dup->attributes->set('_api_operation_name', $operation->getName()); + $dup->attributes->remove('exception'); + // These are for swagger + $dup->attributes->set('_api_original_route', $request->attributes->get('_route')); + $dup->attributes->set('_api_original_route_params', $request->attributes->get('_route_params')); + $dup->attributes->set('_api_requested_operation', $request->attributes->get('_api_requested_operation')); + + foreach ($identifiers as $name => $value) { + $dup->attributes->set($name, $value); + } + + return $this->apiPlatformController->__invoke($dup); + }); + } + + private function getStatusCode(?HttpOperation $apiOperation, ?HttpOperation $errorOperation, \Throwable $exception): int + { + $exceptionToStatus = array_merge( + $apiOperation ? $apiOperation->getExceptionToStatus() ?? [] : [], + $errorOperation ? $errorOperation->getExceptionToStatus() ?? [] : [] + ); + + foreach ($exceptionToStatus as $class => $status) { + if (is_a($exception::class, $class, true)) { + return $status; + } + } + + if ($exception instanceof SymfonyHttpExceptionInterface) { + return $exception->getStatusCode(); + } + + if ($exception instanceof RequestExceptionInterface) { + return 400; + } + + // if ($exception instanceof ValidationException) { + // return 422; + // } + + if ($status = $errorOperation?->getStatus()) { + return $status; + } + + return 500; + } + + private function getFormatOperation(?string $format): string + { + return match ($format) { + 'json' => '_api_errors_problem', + 'jsonproblem' => '_api_errors_problem', + 'jsonld' => '_api_errors_hydra', + 'jsonapi' => '_api_errors_jsonapi', + 'html' => '_api_errors_problem', // This will be intercepted by the SwaggerUiProvider + default => '_api_errors_problem' + }; + } + + public static function provide(): mixed + { + if ($data = static::$error) { + return $data; + } + + throw new \LogicException(sprintf('We could not find the thrown exception in the %s.', self::class)); + } +} diff --git a/src/Laravel/FilterLocator.php b/src/Laravel/FilterLocator.php new file mode 100644 index 00000000000..f11ca239c9b --- /dev/null +++ b/src/Laravel/FilterLocator.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel; + +use Psr\Container\ContainerInterface; + +final class FilterLocator implements ContainerInterface +{ + private $filters = []; + + public function get(string $id): mixed + { + return $this->filters[$id] ?? null; + } + + public function has(string $id): bool + { + return isset($this->filters[$id]); + } +} diff --git a/src/Laravel/README.md b/src/Laravel/README.md new file mode 100644 index 00000000000..17727ae8a2e --- /dev/null +++ b/src/Laravel/README.md @@ -0,0 +1,14 @@ +# API Platform - Laravel + +## Tests + + cd src/Laravel + composer install + vendor/bin/testbench workbench:build + vendor/bin/testbench package:test + # or + vendor/bin/phpunit + +The test server is also available through: + + vendor/bin/testbench serve diff --git a/src/Laravel/Routing/IriConverter.php b/src/Laravel/Routing/IriConverter.php new file mode 100644 index 00000000000..5dc89c459b4 --- /dev/null +++ b/src/Laravel/Routing/IriConverter.php @@ -0,0 +1,188 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Routing; + +use ApiPlatform\Metadata\CollectionOperationInterface; +use ApiPlatform\Metadata\Exception\InvalidArgumentException; +use ApiPlatform\Metadata\Exception\ItemNotFoundException; +use ApiPlatform\Metadata\Exception\OperationNotFoundException; +use ApiPlatform\Metadata\Exception\RuntimeException; +use ApiPlatform\Metadata\Get; +use ApiPlatform\Metadata\GetCollection; +use ApiPlatform\Metadata\HttpOperation; +use ApiPlatform\Metadata\IdentifiersExtractorInterface; +use ApiPlatform\Metadata\IriConverterInterface; +use ApiPlatform\Metadata\Operation; +use ApiPlatform\Metadata\Operation\Factory\OperationMetadataFactoryInterface; +use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; +use ApiPlatform\Metadata\ResourceClassResolverInterface; +use ApiPlatform\Metadata\UrlGeneratorInterface; +use ApiPlatform\Metadata\Util\ClassInfoTrait; +use ApiPlatform\Metadata\Util\ResourceClassInfoTrait; +use ApiPlatform\State\ProviderInterface; +use Illuminate\Database\Eloquent\Relations\Relation; +// use Illuminate\Routing\Router; +use Symfony\Component\Routing\Exception\ExceptionInterface as RoutingExceptionInterface; +use Symfony\Component\Routing\RouterInterface; + +class IriConverter implements IriConverterInterface +{ + use ClassInfoTrait; + use ResourceClassInfoTrait; + /** + * @var array + */ + private $localOperationCache = []; + /** + * @var array + */ + private $localIdentifiersExtractorOperationCache = []; + // use UriVariablesResolverTrait; + + // , UriVariablesConverterInterface $uriVariablesConverter = null TODO + /** + * @param ProviderInterface $provider + */ + public function __construct(private readonly ProviderInterface $provider, private readonly OperationMetadataFactoryInterface $operationMetadataFactory, private readonly RouterInterface $router, private readonly IdentifiersExtractorInterface $identifiersExtractor, ResourceClassResolverInterface $resourceClassResolver, private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataCollectionFactory, private readonly ?IriConverterInterface $decorated = null) + { + $this->resourceClassResolver = $resourceClassResolver; + } + + /** + * @param array $context + */ + public function getResourceFromIri(string $iri, array $context = [], ?Operation $operation = null): object + { + $parameters = $this->router->match($iri); + if (!isset($parameters['_api_resource_class'], $parameters['_api_operation_name'], $parameters['uri_variables'])) { + throw new InvalidArgumentException(sprintf('No resource associated to "%s".', $iri)); + } + + $operation = $parameters['_api_operation'] = $this->resourceMetadataCollectionFactory->create($parameters['_api_resource_class'])->getOperation($parameters['_api_operation_name']); + + if ($operation instanceof CollectionOperationInterface) { + throw new InvalidArgumentException(sprintf('The iri "%s" references a collection not an item.', $iri)); + } + + if (!$operation instanceof HttpOperation) { + throw new RuntimeException(sprintf('The iri "%s" does not reference an HTTP operation.', $iri)); + } + + if ($item = $this->provider->provide($operation, $parameters['uri_variables'], $context)) { + return $item; // @phpstan-ignore-line + } + + throw new ItemNotFoundException(sprintf('Item not found for "%s".', $iri)); + } + + /** + * @param array $context + */ + public function getIriFromResource(object|string $resource, int $referenceType = UrlGeneratorInterface::ABS_PATH, ?Operation $operation = null, array $context = []): ?string + { + $resourceClass = $context['force_resource_class'] ?? (\is_string($resource) ? $resource : $this->getObjectClass($resource)); + if ($resource instanceof Relation) { + $resourceClass = $this->getObjectClass($resource->getRelated()); + } + + if (isset($context['item_uri_template'])) { + $operation = $this->operationMetadataFactory->create($context['item_uri_template']); + } + + $localOperationCacheKey = ($operation?->getName() ?? '').$resourceClass.(\is_string($resource) ? '_c' : '_i'); + if ($operation && isset($this->localOperationCache[$localOperationCacheKey])) { + return $this->generateRoute($resource, $referenceType, $this->localOperationCache[$localOperationCacheKey], $context, $this->localIdentifiersExtractorOperationCache[$localOperationCacheKey] ?? null); + } + + if (!$this->resourceClassResolver->isResourceClass($resourceClass)) { + return $this->generateSkolemIri($resource, $referenceType, $operation, $context, $resourceClass); + } + + // This is only for when a class (that is not a resource) extends another one that is a resource, we should remove this behavior + if (!\is_string($resource) && !isset($context['force_resource_class'])) { + $resourceClass = $this->getResourceClass($resource, true); + } + + if (!$operation) { + $operation = (new Get())->withClass($resourceClass); + } + + if ($operation instanceof HttpOperation && 301 === $operation->getStatus()) { + $operation = ($operation instanceof CollectionOperationInterface ? new GetCollection() : new Get())->withClass($operation->getClass()); + unset($context['uri_variables']); + } + + $identifiersExtractorOperation = $operation; + // In symfony the operation name is the route name, try to find one if none provided + if ( + !$operation->getName() + || ($operation instanceof HttpOperation && 'POST' === $operation->getMethod()) + ) { + $forceCollection = $operation instanceof CollectionOperationInterface; + try { + $operation = $this->resourceMetadataCollectionFactory->create($resourceClass)->getOperation(null, $forceCollection, true); + $identifiersExtractorOperation = $operation; + } catch (OperationNotFoundException) { + } + } + + if (!$operation->getName() || ($operation instanceof HttpOperation && $operation->getUriTemplate() && str_starts_with($operation->getUriTemplate(), SkolemIriConverter::$skolemUriTemplate))) { + return $this->generateSkolemIri($resource, $referenceType, $operation, $context, $resourceClass); + } + + $this->localOperationCache[$localOperationCacheKey] = $operation; + $this->localIdentifiersExtractorOperationCache[$localOperationCacheKey] = $identifiersExtractorOperation; + + return $this->generateRoute($resource, $referenceType, $operation, $context, $identifiersExtractorOperation); + } + + /** + * @param array $context + */ + private function generateRoute(object|string $resource, int $referenceType = UrlGeneratorInterface::ABS_PATH, ?Operation $operation = null, array $context = [], ?Operation $identifiersExtractorOperation = null): string + { + $identifiers = $context['uri_variables'] ?? []; + + if (\is_object($resource)) { + try { + $identifiers = $this->identifiersExtractor->getIdentifiersFromItem($resource, $identifiersExtractorOperation, $context); + } catch (InvalidArgumentException|RuntimeException $e) { + // We can try using context uri variables if any + if (!$identifiers) { + throw new InvalidArgumentException(sprintf('Unable to generate an IRI for the item of type "%s"', $operation->getClass()), $e->getCode(), $e); + } + } + } + + try { + return $this->router->generate($operation->getName(), $identifiers, $operation->getUrlGenerationStrategy() ?? $referenceType); + } catch (RoutingExceptionInterface $e) { + throw new InvalidArgumentException(sprintf('Unable to generate an IRI for the item of type "%s"', $operation->getClass()), $e->getCode(), $e); + } + } + + /** + * @param object|class-string $resource + * @param array $context + */ + private function generateSkolemIri(object|string $resource, int $referenceType = UrlGeneratorInterface::ABS_PATH, ?Operation $operation = null, array $context = [], ?string $resourceClass = null): string + { + if (!$this->decorated) { + throw new InvalidArgumentException(sprintf('Unable to generate an IRI for the item of type "%s"', $resourceClass)); + } + + // Use a skolem iri, the route is defined in genid.xml + return $this->decorated->getIriFromResource($resource, $referenceType, $operation, $context); + } +} diff --git a/src/Laravel/Routing/Router.php b/src/Laravel/Routing/Router.php new file mode 100644 index 00000000000..6bb47fada8b --- /dev/null +++ b/src/Laravel/Routing/Router.php @@ -0,0 +1,100 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Routing; + +use ApiPlatform\Metadata\UrlGeneratorInterface; +use Illuminate\Http\Request as LaravelRequest; +use Illuminate\Routing\Router as BaseRouter; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Routing\Generator\UrlGenerator; +use Symfony\Component\Routing\RequestContext; +use Symfony\Component\Routing\RouteCollection; +use Symfony\Component\Routing\RouterInterface; + +/** + * Laravel router decorator. + * + * @author Kévin Dunglas + */ +final class Router implements RouterInterface, UrlGeneratorInterface +{ + public const CONST_MAP = [ + UrlGeneratorInterface::ABS_URL => RouterInterface::ABSOLUTE_URL, + UrlGeneratorInterface::ABS_PATH => RouterInterface::ABSOLUTE_PATH, + UrlGeneratorInterface::REL_PATH => RouterInterface::RELATIVE_PATH, + UrlGeneratorInterface::NET_PATH => RouterInterface::NETWORK_PATH, + ]; + + private RequestContext $context; + + public function __construct(private readonly BaseRouter $router, private readonly int $urlGenerationStrategy = UrlGeneratorInterface::ABS_PATH) + { + } + + /** + * {@inheritdoc} + */ + public function setContext(RequestContext $context): void + { + $this->context = $context; + } + + /** + * {@inheritdoc} + */ + public function getContext(): RequestContext + { + return $this->context; + } + + /** + * {@inheritdoc} + */ + public function getRouteCollection(): RouteCollection + { + /** @var \Illuminate\Routing\RouteCollection $routes */ + $routes = $this->router->getRoutes(); + + return $routes->toSymfonyRouteCollection(); + } + + /** + * {@inheritdoc} + * + * @return array|array{_api_resource_class?: class-string|string, _api_operation_name?: string, uri_variables?: array} + */ + public function match(string $pathInfo): array + { + $request = LaravelRequest::create($pathInfo, Request::METHOD_GET); + $route = $this->router->getRoutes()->match($request); + + return $route->defaults + ['uri_variables' => array_diff_key($route->parameters, $route->defaults)]; + } + + /** + * {@inheritdoc} + * + * @param array $parameters + */ + public function generate(string $name, array $parameters = [], ?int $referenceType = null): string + { + $routes = $this->getRouteCollection(); + $generator = new UrlGenerator($routes, $this->getContext()); + if (isset($parameters['_format']) && !str_starts_with($parameters['_format'], '.')) { + $parameters['_format'] = '.'.$parameters['_format']; + } + + return $generator->generate($name, $parameters, self::CONST_MAP[$referenceType ?? $this->urlGenerationStrategy]); + } +} diff --git a/src/Laravel/Routing/SkolemIriConverter.php b/src/Laravel/Routing/SkolemIriConverter.php new file mode 100644 index 00000000000..d25fc2ca006 --- /dev/null +++ b/src/Laravel/Routing/SkolemIriConverter.php @@ -0,0 +1,76 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Routing; + +use ApiPlatform\Metadata\Exception\ItemNotFoundException; +use ApiPlatform\Metadata\IriConverterInterface; +use ApiPlatform\Metadata\Operation; +use ApiPlatform\Metadata\UrlGeneratorInterface; + +/** + * {@inheritdoc} + * + * @author Antoine Bluchet + */ +final class SkolemIriConverter implements IriConverterInterface +{ + public static string $skolemUriTemplate = '/.well-known/genid/{id}'; + + /** + * @var \SplObjectStorage + */ + private \SplObjectStorage $objectHashMap; + /** + * @var array + */ + private array $classHashMap = []; + + public function __construct(private readonly Router $router) + { + $this->objectHashMap = new \SplObjectStorage(); + } + + /** + * {@inheritdoc} + */ + public function getResourceFromIri(string $iri, array $context = [], ?Operation $operation = null): object + { + throw new ItemNotFoundException(sprintf('Item not found for "%s".', $iri)); + } + + /** + * {@inheritdoc} + */ + public function getIriFromResource(object|string $resource, int $referenceType = UrlGeneratorInterface::ABS_PATH, ?Operation $operation = null, array $context = []): ?string + { + $referenceType = $operation ? ($operation->getUrlGenerationStrategy() ?? $referenceType) : $referenceType; + if (($isObject = \is_object($resource)) && $this->objectHashMap->contains($resource)) { + return $this->router->generate('api_genid', ['id' => $this->objectHashMap[$resource]], $referenceType); + } + + if (\is_string($resource) && isset($this->classHashMap[$resource])) { + return $this->router->generate('api_genid', ['id' => $this->classHashMap[$resource]], $referenceType); + } + + $id = bin2hex(random_bytes(10)); + + if ($isObject) { + $this->objectHashMap[$resource] = $id; + } else { + $this->classHashMap[$resource] = $id; + } + + return $this->router->generate('api_genid', ['id' => $id], $referenceType); + } +} diff --git a/src/Laravel/ServiceLocator.php b/src/Laravel/ServiceLocator.php new file mode 100644 index 00000000000..c774f8369d0 --- /dev/null +++ b/src/Laravel/ServiceLocator.php @@ -0,0 +1,42 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel; + +use Psr\Container\ContainerInterface; + +// TODO: template T ServiceLocator +final class ServiceLocator implements ContainerInterface +{ + private array $services = []; + + /** + * @param array $services + */ + public function __construct(array $services = []) + { + foreach ($services as $key => $service) { + $this->services[\is_string($key) ? $key : $service::class] = $service; + } + } + + public function get(string $id): mixed + { + return $this->services[$id] ?? null; + } + + public function has(string $id): bool + { + return isset($this->services[$id]); + } +} diff --git a/src/Laravel/State/SwaggerUiProcessor.php b/src/Laravel/State/SwaggerUiProcessor.php new file mode 100644 index 00000000000..f51cdf4597a --- /dev/null +++ b/src/Laravel/State/SwaggerUiProcessor.php @@ -0,0 +1,106 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\State; + +use ApiPlatform\Metadata\Exception\RuntimeException; +use ApiPlatform\Metadata\Operation; +use ApiPlatform\Metadata\UrlGeneratorInterface; +use ApiPlatform\OpenApi\OpenApi; +use ApiPlatform\OpenApi\Options; +use ApiPlatform\OpenApi\Serializer\NormalizeOperationNameTrait; +use ApiPlatform\State\ProcessorInterface; +use Illuminate\Http\Response; +use Symfony\Component\Serializer\Normalizer\NormalizerInterface; + +/** + * @internal + * + * @implements ProcessorInterface + */ +final class SwaggerUiProcessor implements ProcessorInterface +{ + use NormalizeOperationNameTrait; + + /** + * @param array $formats + */ + public function __construct(private readonly UrlGeneratorInterface $urlGenerator, private readonly NormalizerInterface $normalizer, private readonly Options $openApiOptions, private readonly array $formats = [], private readonly ?string $oauthClientId = null, private readonly ?string $oauthClientSecret = null, private readonly bool $oauthPkce = false) + { + } + + /** + * @param OpenApi $openApi + */ + public function process(mixed $openApi, Operation $operation, array $uriVariables = [], array $context = []) + { + $request = $context['request'] ?? null; + + $swaggerContext = [ + 'formats' => $this->formats, + 'title' => $openApi->getInfo()->getTitle(), + 'description' => $openApi->getInfo()->getDescription(), + 'originalRoute' => $request->attributes->get('_api_original_route', $request->attributes->get('_route')), + 'originalRouteParams' => $request->attributes->get('_api_original_route_params', $request->attributes->get('_route_params', [])), + ]; + + $swaggerData = [ + 'url' => $this->urlGenerator->generate('api_doc', ['format' => 'json']), + 'spec' => $this->normalizer->normalize($openApi, 'json', []), + 'oauth' => [ + 'enabled' => $this->openApiOptions->getOAuthEnabled(), + 'type' => $this->openApiOptions->getOAuthType(), + 'flow' => $this->openApiOptions->getOAuthFlow(), + 'tokenUrl' => $this->openApiOptions->getOAuthTokenUrl(), + 'authorizationUrl' => $this->openApiOptions->getOAuthAuthorizationUrl(), + 'scopes' => $this->openApiOptions->getOAuthScopes(), + 'clientId' => $this->oauthClientId, + 'clientSecret' => $this->oauthClientSecret, + 'pkce' => $this->oauthPkce, + ], + ]; + + $status = 200; + $requestedOperation = $request?->attributes->get('_api_requested_operation') ?? null; + if ($request->isMethodSafe() && $requestedOperation && $requestedOperation->getName()) { + $swaggerData['id'] = $request->get('id'); + $swaggerData['queryParameters'] = $request->query->all(); + + $swaggerData['shortName'] = $requestedOperation->getShortName(); + $swaggerData['operationId'] = $this->normalizeOperationName($requestedOperation->getName()); + + [$swaggerData['path'], $swaggerData['method']] = $this->getPathAndMethod($swaggerData); + $status = $requestedOperation->getStatus() ?? $status; + } + + return new Response(view('api-platform::swagger-ui', $swaggerContext + ['swagger_data' => $swaggerData]), 200); + } + + /** + * @param array $swaggerData + * + * @return array{0: string, 1: string} + */ + private function getPathAndMethod(array $swaggerData): array + { + foreach ($swaggerData['spec']['paths'] as $path => $operations) { + foreach ($operations as $method => $operation) { + if (($operation['operationId'] ?? null) === $swaggerData['operationId']) { + return [$path, $method]; + } + } + } + + throw new RuntimeException(sprintf('The operation "%s" cannot be found in the Swagger specification.', $swaggerData['operationId'])); + } +} diff --git a/src/Laravel/State/SwaggerUiProvider.php b/src/Laravel/State/SwaggerUiProvider.php new file mode 100644 index 00000000000..334f0de2eff --- /dev/null +++ b/src/Laravel/State/SwaggerUiProvider.php @@ -0,0 +1,85 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\State; + +use ApiPlatform\Documentation\Documentation; +use ApiPlatform\Metadata\Error; +use ApiPlatform\Metadata\Get; +use ApiPlatform\Metadata\HttpOperation; +use ApiPlatform\Metadata\Operation; +use ApiPlatform\OpenApi\Factory\OpenApiFactoryInterface; +use ApiPlatform\OpenApi\OpenApi; +use ApiPlatform\State\ProviderInterface; + +/** + * When an HTML request is sent we provide a swagger ui documentation. + * + * @implements ProviderInterface + * + * @internal + */ +final class SwaggerUiProvider implements ProviderInterface +{ + /** + * @param ProviderInterface $decorated + */ + public function __construct(private readonly ProviderInterface $decorated, private readonly OpenApiFactoryInterface $openApiFactory) + { + } + + public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null + { + // We went through the DocumentationAction + if (OpenApi::class === $operation->getClass()) { + return $this->decorated->provide($operation, $uriVariables, $context); + } + + if ( + !($operation instanceof HttpOperation) + || !($request = $context['request'] ?? null) + || 'html' !== $request->getRequestFormat() + ) { + return $this->decorated->provide($operation, $uriVariables, $context); + } + + if (!$request->attributes->has('_api_requested_operation')) { + $request->attributes->set('_api_requested_operation', $operation); + } + + // We need to call our operation provider just in case it fails + // when it fails we'll get an Error and we'll fix the status accordingly + // @see features/main/content_negotiation.feature:119 + // DocumentationAction has no content negotation as well we want HTML so render swagger ui + if (!$operation instanceof Error && Documentation::class !== $operation->getClass()) { + $this->decorated->provide($operation, $uriVariables, $context); + } + + $swaggerUiOperation = new Get( + class: OpenApi::class, + processor: 'api_platform.swagger_ui.processor', + validate: false, + read: false, + write: true, // force write so that our processor gets called + status: $operation->getStatus() + ); + + // save our operation + $request->attributes->set('_api_operation', $swaggerUiOperation); + + $data = $this->openApiFactory->__invoke(['base_url' => $request->getBaseUrl() ?: '/']); + $request->attributes->set('data', $data); + + return $data; + } +} diff --git a/src/Laravel/State/ValidateProvider.php b/src/Laravel/State/ValidateProvider.php new file mode 100644 index 00000000000..993f1e34134 --- /dev/null +++ b/src/Laravel/State/ValidateProvider.php @@ -0,0 +1,83 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\State; + +use ApiPlatform\Laravel\ApiResource\ValidationError; +use ApiPlatform\Metadata\Error; +use ApiPlatform\Metadata\Operation; +use ApiPlatform\State\ProviderInterface; +use Illuminate\Foundation\Application; +use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Support\Facades\Validator; +use Illuminate\Validation\ValidationException; + +/** + * @implements ProviderInterface + */ +final class ValidateProvider implements ProviderInterface +{ + /** + * @param ProviderInterface $inner + */ + public function __construct(private readonly ProviderInterface $inner, private readonly Application $app) + { + } + + public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null + { + $request = $context['request']; + $body = $this->inner->provide($operation, $uriVariables, $context); + + if (!$operation->canValidate() || $operation instanceof Error) { + return $body; + } + + $rules = $operation->getRules(); + if (\is_callable($rules)) { + $rules = $rules(); + } + + if (\is_string($rules) && is_a($rules, FormRequest::class, true)) { + try { + $this->app->make($rules); + // } catch (AuthorizationException $e) { // TODO: we may want to catch this to transform to an error + } catch (ValidationException $e) { // @phpstan-ignore-line make->($rules) may throw this + throw $this->getValidationError($e); + } + + return $body; + } + + if (!\is_array($rules)) { + return $body; + } + + $validator = Validator::make($request->all(), $rules); + if ($validator->fails()) { + throw $this->getValidationError(new ValidationException($validator)); + } + + return $body; + } + + private function getValidationError(ValidationException $e): ValidationError + { + $violations = []; + foreach ($e->validator->errors()->messages() as $prop => $message) { + $violations[] = ['propertyPath' => $prop, 'message' => implode(\PHP_EOL, $message)]; + } + + return new ValidationError($e->getMessage(), spl_object_hash($e), $e, $violations); + } +} diff --git a/src/Laravel/Test/ApiTestAssertionsTrait.php b/src/Laravel/Test/ApiTestAssertionsTrait.php new file mode 100644 index 00000000000..879fef08526 --- /dev/null +++ b/src/Laravel/Test/ApiTestAssertionsTrait.php @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Test; + +use ApiPlatform\Laravel\Test\Constraint\ArraySubset; +use ApiPlatform\Metadata\IriConverterInterface; +use PHPUnit\Framework\ExpectationFailedException; + +trait ApiTestAssertionsTrait +{ + /** + * Asserts that an array has a specified subset. + * + * Imported from dms/phpunit-arraysubset, because the original constraint has been deprecated. + * + * @copyright Sebastian Bergmann + * @copyright Rafael Dohms + * + * @see https://github.com/sebastianbergmann/phpunit/issues/3494 + * + * @param array $subset + * @param array $array + * + * @throws ExpectationFailedException + * @throws \Exception + */ + public static function assertArraySubset(iterable $subset, iterable $array, bool $checkForObjectIdentity = false, string $message = ''): void + { + $constraint = new ArraySubset($subset, $checkForObjectIdentity); + + static::assertThat($array, $constraint, $message); + } + + /** + * Asserts that the retrieved JSON contains the specified subset. + * + * This method delegates to static::assertArraySubset(). + * + * @param array $subset + * @param array $json + */ + public static function assertJsonContains(array|string $subset, array $json, bool $checkForObjectIdentity = true, string $message = ''): void + { + if (\is_string($subset)) { + $subset = json_decode($subset, true, 512, \JSON_THROW_ON_ERROR); + } + if (!\is_array($subset)) { + throw new \InvalidArgumentException('$subset must be array or string (JSON array or JSON object)'); + } + + static::assertArraySubset($subset, $json, $checkForObjectIdentity, $message); + } + + /** + * Generate the IRI of a resource item. + */ + protected function getIriFromResource(object $resource): ?string + { + $iriConverter = $this->app->make(IriConverterInterface::class); + + return $iriConverter->getIriFromResource($resource); + } +} diff --git a/src/Laravel/Test/Constraint/ArraySubset.php b/src/Laravel/Test/Constraint/ArraySubset.php new file mode 100644 index 00000000000..9727721c70b --- /dev/null +++ b/src/Laravel/Test/Constraint/ArraySubset.php @@ -0,0 +1,34 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Test\Constraint; + +use PHPUnit\Framework\Constraint\Constraint; + +/** + * Is used for phpunit >= 9. + * + * @internal + */ +final class ArraySubset extends Constraint +{ + use ArraySubsetTrait; + + /** + * {@inheritdoc} + */ + public function evaluate(mixed $other, string $description = '', bool $returnResult = false): ?bool + { + return $this->_evaluate($other, $description, $returnResult); + } +} diff --git a/src/Laravel/Test/Constraint/ArraySubsetTrait.php b/src/Laravel/Test/Constraint/ArraySubsetTrait.php new file mode 100644 index 00000000000..692b6a2ada4 --- /dev/null +++ b/src/Laravel/Test/Constraint/ArraySubsetTrait.php @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Test\Constraint; + +use SebastianBergmann\Comparator\ComparisonFailure; +use SebastianBergmann\Exporter\Exporter; + +/** + * Constraint that asserts that the array it is evaluated for has a specified subset. + * + * Uses array_replace_recursive() to check if a key value subset is part of the + * subject array. + * + * Imported from dms/phpunit-arraysubset-asserts, because the original constraint has been deprecated. + * + * @copyright Sebastian Bergmann + * @copyright Rafael Dohms + * + * @see https://github.com/sebastianbergmann/phpunit/issues/3494 + */ +trait ArraySubsetTrait +{ + /** + * @param array $subset + */ + public function __construct(private iterable $subset, private readonly bool $strict = false) + { + } + + private function _evaluate(mixed $other, string $description = '', bool $returnResult = false): ?bool + { + // type cast $other & $this->subset as an array to allow + // support in standard array functions. + $other = $this->toArray($other); + $this->subset = $this->toArray($this->subset); + $patched = array_replace_recursive($other, $this->subset); + if ($this->strict) { + $result = $other === $patched; + } else { + $result = $other == $patched; + } + if ($returnResult) { + return $result; + } + if ($result) { + return null; + } + + $f = new ComparisonFailure( + $patched, + $other, + var_export($patched, true), + var_export($other, true) + ); + $this->fail($other, $description, $f); + } + + /** + * {@inheritdoc} + */ + public function toString(): string + { + return 'has the subset '.(new Exporter())->export($this->subset); + } + + /** + * {@inheritdoc} + */ + protected function failureDescription(mixed $other): string + { + return 'an array '.$this->toString(); + } + + /** + * @param array $other + * + * @return array + */ + private function toArray(iterable $other): array + { + if (\is_array($other)) { + return $other; + } + if ($other instanceof \ArrayObject) { + return $other->getArrayCopy(); + } + + return iterator_to_array($other); + } +} diff --git a/src/Laravel/Tests/JsonApiTest.php b/src/Laravel/Tests/JsonApiTest.php new file mode 100644 index 00000000000..67caa6766b2 --- /dev/null +++ b/src/Laravel/Tests/JsonApiTest.php @@ -0,0 +1,153 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Tests; + +use ApiPlatform\Laravel\Test\ApiTestAssertionsTrait; +use Illuminate\Foundation\Testing\RefreshDatabase; +use Orchestra\Testbench\Concerns\WithWorkbench; +use Orchestra\Testbench\TestCase; +use Workbench\App\Models\Author; +use Workbench\App\Models\Book; + +class JsonApiTest extends TestCase +{ + use ApiTestAssertionsTrait; + use RefreshDatabase; + use WithWorkbench; + + public function testGetCollection(): void + { + $response = $this->get('/api/books', ['accept' => ['application/vnd.api+json']]); + $response->assertStatus(200); + $response->assertHeader('content-type', 'application/vnd.api+json; charset=utf-8'); + $response->assertJsonFragment([ + 'links' => [ + 'self' => '/api/books?page=1', + 'first' => '/api/books?page=1', + 'last' => '/api/books?page=2', + 'next' => '/api/books?page=2', + ], + 'meta' => ['totalItems' => 10, 'itemsPerPage' => 5, 'currentPage' => 1], + ]); + $response->assertJsonCount(5, 'data'); + } + + public function testGetBook(): void + { + $book = Book::first(); + $iri = $this->getIriFromResource($book); + $response = $this->get($iri, ['accept' => ['application/vnd.api+json']]); + $response->assertStatus(200); + $response->assertHeader('content-type', 'application/vnd.api+json; charset=utf-8'); + + $this->assertJsonContains([ + 'data' => [ + 'id' => $iri, + 'type' => 'Book', + 'attributes' => [ + 'name' => $book->name, // @phpstan-ignore-line + ], + ], + ], $response->json()); + } + + public function testCreateBook(): void + { + $author = Author::find(1); + $response = $this->postJson( + '/api/books', + [ + 'data' => [ + 'attributes' => ['name' => 'Don Quichotte', 'isbn' => fake()->isbn13()], + 'relationships' => ['author' => ['data' => ['id' => $this->getIriFromResource($author), 'type' => 'Author']]], + ], + ], + [ + 'accept' => 'application/vnd.api+json', + 'content_type' => 'application/vnd.api+json', + ] + ); + + $response->assertStatus(201); + $response->assertHeader('content-type', 'application/vnd.api+json; charset=utf-8'); + $this->assertJsonContains([ + 'data' => [ + 'type' => 'Book', + 'attributes' => [ + 'name' => 'Don Quichotte', + ], + ], + ], $response->json()); + $this->assertMatchesRegularExpression('~^/api/books/~', $response->json('data.id')); + } + + public function testUpdateBook(): void + { + $book = Book::first(); + $iri = $this->getIriFromResource($book); + $response = $this->putJson( + $iri, + [ + 'data' => ['attributes' => ['name' => 'updated title']], + ], + [ + 'accept' => 'application/vnd.api+json', + 'content_type' => 'application/vnd.api+json', + ] + ); + $response->assertStatus(200); + $this->assertJsonContains([ + 'data' => [ + 'id' => $iri, + 'attributes' => [ + 'name' => 'updated title', + ], + ], + ], $response->json()); + } + + public function testPatchBook(): void + { + $book = Book::first(); + $iri = $this->getIriFromResource($book); + $response = $this->patchJson( + $iri, + [ + 'name' => 'updated title', + ], + [ + 'accept' => 'application/vnd.api+json', + 'content_type' => 'application/merge-patch+json', + ] + ); + $response->assertStatus(200); + $this->assertJsonContains([ + 'data' => [ + 'id' => $iri, + 'attributes' => [ + 'name' => 'updated title', + ], + ], + ], $response->json()); + } + + public function testDeleteBook(): void + { + $book = Book::first(); + $iri = $this->getIriFromResource($book); + $response = $this->delete($iri, ['accept' => 'application/vnd.api+json']); + $response->assertStatus(204); + $this->assertNull(Book::find($book->id)); + } +} diff --git a/src/Laravel/Tests/JsonLdTest.php b/src/Laravel/Tests/JsonLdTest.php new file mode 100644 index 00000000000..064eee085d4 --- /dev/null +++ b/src/Laravel/Tests/JsonLdTest.php @@ -0,0 +1,271 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Tests; + +use ApiPlatform\Laravel\Test\ApiTestAssertionsTrait; +use Illuminate\Foundation\Testing\RefreshDatabase; +use Orchestra\Testbench\Concerns\WithWorkbench; +use Orchestra\Testbench\TestCase; +use Workbench\App\Models\Author; +use Workbench\App\Models\Book; + +class JsonLdTest extends TestCase +{ + use ApiTestAssertionsTrait; + use RefreshDatabase; + use WithWorkbench; + + public function testGetCollection(): void + { + $response = $this->get('/api/books', ['accept' => 'application/ld+json']); + $response->assertStatus(200); + $response->assertHeader('content-type', 'application/ld+json; charset=utf-8'); + $response->assertJsonFragment([ + '@context' => '/api/contexts/Book', + '@id' => '/api/books', + '@type' => 'hydra:Collection', + 'hydra:totalItems' => 10, + ]); + $response->assertJsonCount(5, 'hydra:member'); + } + + public function testGetBook(): void + { + $book = Book::first(); + $response = $this->get($this->getIriFromResource($book), ['accept' => 'application/ld+json']); + $response->assertStatus(200); + $response->assertHeader('content-type', 'application/ld+json; charset=utf-8'); + $response->assertJsonFragment([ + '@context' => '/api/contexts/Book', + '@id' => $this->getIriFromResource($book), + '@type' => 'Book', + 'name' => $book->name, // @phpstan-ignore-line + ]); + } + + public function testCreateBook(): void + { + $author = Author::find(1); + $response = $this->postJson( + '/api/books', + [ + 'name' => 'Don Quichotte', + 'author' => $this->getIriFromResource($author), + 'isbn' => fake()->isbn13(), + ], + [ + 'accept' => 'application/ld+json', + 'content_type' => 'application/ld+json', + ] + ); + + $response->assertStatus(201); + $response->assertHeader('content-type', 'application/ld+json; charset=utf-8'); + $response->assertJsonFragment([ + '@context' => '/api/contexts/Book', + '@type' => 'Book', + 'name' => 'Don Quichotte', + ]); + $this->assertMatchesRegularExpression('~^/api/books/~', $response->json('@id')); + } + + public function testUpdateBook(): void + { + $book = Book::first(); + $iri = $this->getIriFromResource($book); + $response = $this->putJson( + $iri, + [ + 'name' => 'updated title', + ], + [ + 'accept' => 'application/ld+json', + 'content_type' => 'application/ld+json', + ] + ); + $response->assertStatus(200); + $response->assertJsonFragment([ + '@id' => $iri, + 'name' => 'updated title', + ]); + } + + public function testPatchBook(): void + { + $book = Book::first(); + $iri = $this->getIriFromResource($book); + $response = $this->patchJson( + $iri, + [ + 'name' => 'updated title', + ], + [ + 'accept' => 'application/ld+json', + 'content_type' => 'application/merge-patch+json', + ] + ); + $response->assertStatus(200); + $response->assertJsonFragment([ + '@id' => $iri, + 'name' => 'updated title', + ]); + } + + public function testDeleteBook(): void + { + $book = Book::first(); + $iri = $this->getIriFromResource($book); + $response = $this->delete($iri, ['accept' => 'application/ld+json']); + $response->assertStatus(204); + $this->assertNull(Book::find($book->id)); + } + + public function testPatchBookAuthor(): void + { + $book = Book::first(); + $iri = $this->getIriFromResource($book); + $author = Author::find(2); + $authorIri = $this->getIriFromResource($author); + $response = $this->patchJson( + $iri, + [ + 'author' => $authorIri, + ], + [ + 'accept' => 'application/ld+json', + 'content_type' => 'application/merge-patch+json', + ] + ); + $response->assertStatus(200); + $response->assertJsonFragment([ + '@id' => $iri, + 'author' => $authorIri, + ]); + } + + public function testSkolemIris(): void + { + $response = $this->get('/api/outputs', ['accept' => 'application/ld+json']); + $response->assertStatus(200); + $response->assertHeader('content-type', 'application/ld+json; charset=utf-8'); + $response->assertJsonFragment([ + '@type' => 'NotAResource', + 'name' => 'test', + ]); + + $this->assertMatchesRegularExpression('~^/api/.well-known/genid/~', $response->json('@id')); + } + + public function testSubresourceCollection(): void + { + $response = $this->get('/api/posts', ['accept' => 'application/ld+json']); + $response->assertStatus(200); + $response->assertHeader('content-type', 'application/ld+json; charset=utf-8'); + + $response->assertJsonFragment([ + '@context' => '/api/contexts/Post', + '@id' => '/api/posts', + '@type' => 'hydra:Collection', + 'hydra:totalItems' => 10, + ]); + $response->assertJsonCount(10, 'hydra:member'); + $postIri = $response->json('hydra:member.0.@id'); + $commentsIri = $response->json('hydra:member.0.comments'); + $this->assertMatchesRegularExpression('~^/api/posts/\d+/comments$~', $commentsIri); + $response = $this->get($commentsIri, ['accept' => 'application/ld+json']); + $response->assertJsonFragment([ + '@context' => '/api/contexts/Comment', + '@id' => $commentsIri, + '@type' => 'hydra:Collection', + 'hydra:totalItems' => 10, + ]); + + $commentIri = $response->json('hydra:member.0.@id'); + $response = $this->get($commentIri, ['accept' => 'application/ld+json']); + $response->assertJsonFragment([ + '@id' => $commentIri, + 'post' => $postIri, + ]); + } + + public function testCreateNotValid(): void + { + $author = Author::find(1); + $response = $this->postJson( + '/api/books', + [ + 'name' => 'Don Quichotte', + 'author' => $this->getIriFromResource($author), + 'isbn' => 'test@foo', + ], + [ + 'accept' => 'application/ld+json', + 'content_type' => 'application/ld+json', + ] + ); + + $response->assertStatus(422); + $response->assertHeader('content-type', 'application/problem+json; charset=utf-8'); + $response->assertJsonFragment([ + '@context' => '/api/contexts/ValidationError', + '@type' => 'ValidationError', + 'description' => 'The isbn field must only contain letters and numbers.', + ]); + + $violations = $response->json('violations'); + $this->assertCount(1, $violations); + $this->assertEquals($violations[0], ['propertyPath' => 'isbn', 'message' => 'The isbn field must only contain letters and numbers.']); + } + + public function testCreateNotValidPost(): void + { + $response = $this->postJson( + '/api/posts', + [ + ], + [ + 'accept' => 'application/ld+json', + 'content_type' => 'application/ld+json', + ] + ); + + $response->assertStatus(422); + $response->assertHeader('content-type', 'application/problem+json; charset=utf-8'); + $response->assertJsonFragment([ + '@context' => '/api/contexts/ValidationError', + '@type' => 'ValidationError', + 'description' => 'The title field is required.', + ]); + + $violations = $response->json('violations'); + $this->assertCount(1, $violations); + $this->assertEquals($violations[0], ['propertyPath' => 'title', 'message' => 'The title field is required.']); + } + + public function testSluggable(): void + { + $response = $this->get('/api/sluggables', ['accept' => 'application/ld+json']); + $response->assertStatus(200); + $response->assertHeader('content-type', 'application/ld+json; charset=utf-8'); + $response->assertJsonFragment([ + '@context' => '/api/contexts/Sluggable', + '@id' => '/api/sluggables', + '@type' => 'hydra:Collection', + 'hydra:totalItems' => 10, + ]); + $iri = $response->json('hydra:member.0.@id'); + $response = $this->get($iri, ['accept' => 'application/ld+json']); + $response->assertStatus(200); + } +} diff --git a/src/Laravel/Tests/JsonProblemTest.php b/src/Laravel/Tests/JsonProblemTest.php new file mode 100644 index 00000000000..615d2e1d8a2 --- /dev/null +++ b/src/Laravel/Tests/JsonProblemTest.php @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Laravel\Tests; + +use Illuminate\Foundation\Testing\RefreshDatabase; +use Orchestra\Testbench\Concerns\WithWorkbench; +use Orchestra\Testbench\TestCase; + +class JsonProblemTest extends TestCase +{ + use RefreshDatabase; + use WithWorkbench; + + public function testNotFound(): void + { + $response = $this->get('/api/books/notfound'); + $response->assertStatus(404); + $response->assertHeader('content-type', 'application/problem+json; charset=utf-8'); + $response->assertJsonFragment([ + '@context' => '/api/contexts/Error', + '@id' => '/api/errors/404.jsonld', + '@type' => 'hydra:Error', + 'type' => '/errors/404', + 'title' => 'An error occurred', + 'status' => 404, + 'detail' => 'Not Found', + ]); + } +} diff --git a/src/Laravel/composer.json b/src/Laravel/composer.json new file mode 100644 index 00000000000..d260e95fb87 --- /dev/null +++ b/src/Laravel/composer.json @@ -0,0 +1,119 @@ +{ + "name": "api-platform/laravel", + "description": "API Platform support for Laravel", + "keywords": [ + "todo" + ], + "homepage": "https://api-platform.com", + "license": "MIT", + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "require": { + "php": "^8.0", + "api-platform/documentation": "*@dev || ^3.1", + "api-platform/hydra": "*@dev || ^3.1", + "api-platform/json-schema": "*@dev || ^3.1", + "api-platform/jsonld": "*@dev || ^3.1", + "api-platform/json-api": "*@dev || ^3.1", + "api-platform/metadata": "*@dev || ^3.1", + "api-platform/openapi": "*@dev || ^3.1", + "api-platform/serializer": "*@dev || ^3.1", + "api-platform/state": "*@dev || ^3.1", + "illuminate/config": "^11.0", + "laravel/framework": "^11.0", + "illuminate/contracts": "^11.0", + "illuminate/database": "^11.0", + "illuminate/http": "^11.0", + "illuminate/pagination": "^11.0", + "illuminate/routing": "^11.0", + "illuminate/support": "^11.0", + "illuminate/container": "^11.0", + "symfony/web-link": "^6.3", + "willdurand/negotiation": "^3.1" + }, + "require-dev": { + "doctrine/dbal": "^3.7", + "larastan/larastan": "^2.0", + "orchestra/testbench": "^9.12", + "phpstan/phpdoc-parser": "^1.29", + "phpunit/phpunit": "^10" + }, + "autoload": { + "psr-4": { + "ApiPlatform\\Laravel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/", + "/Workbench/" + ] + }, + "config": { + "sort-packages": true + }, + "suggest": { + "phpdocumentor/reflection-docblock": "" + }, + "extra": { + "laravel": { + "providers": [ + "ApiPlatform\\Laravel\\ApiPlatformProvider" + ] + } + }, + "minimum-stability": "dev", + "prefer-stable": true, + "repositories": [ + { + "type": "path", + "url": "../Metadata" + }, + { + "type": "path", + "url": "../State" + }, + { + "type": "path", + "url": "../Serializer" + }, + { + "type": "path", + "url": "../Hydra" + }, + { + "type": "path", + "url": "../JsonLd" + }, + { + "type": "path", + "url": "../Documentation" + }, + { + "type": "path", + "url": "../OpenApi" + }, + { + "type": "path", + "url": "../JsonSchema" + } + ], + "autoload-dev": { + "psr-4": { + "Workbench\\App\\": "workbench/app/", + "Workbench\\Database\\Factories\\": "workbench/database/factories/", + "Workbench\\Database\\Seeders\\": "workbench/database/seeders/" + } + }, + "scripts": { + "build": "@php vendor/bin/testbench workbench:build --ansi", + "test": "@php vendor/bin/testbench package:test" + } +} diff --git a/src/Laravel/config/api-platform.php b/src/Laravel/config/api-platform.php new file mode 100644 index 00000000000..d2ff8e7bbb0 --- /dev/null +++ b/src/Laravel/config/api-platform.php @@ -0,0 +1,71 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +return [ + 'title' => 'API Platform', + 'description' => 'My awesome API', + 'version' => '1.0.0', + + /* + * Automatic registration of routes will only happen if this setting is `true` + */ + 'register_routes' => true, + 'prefix' => '/api', + + /* + * Where are ApiResource defined + * TODO: link the docs on how to plug on eloquent models or create apiResource like controllers :D + */ + 'resources' => [ + app_path('Models'), + ], + + 'formats' => [ + 'jsonld' => ['application/ld+json'], + 'jsonapi' => ['application/vnd.api+json'], + ], + + 'patch_formats' => [ + 'json' => ['application/merge-patch+json'], + ], + + 'docs_formats' => [ + 'jsonopenapi' => ['application/vnd.openapi+json'], + 'json' => ['application/json'], + 'jsonld' => ['application/ld+json'], + 'html' => ['text/html'], + ], + + 'error_formats' => [ + 'jsonproblem' => ['application/problem+json'], + ], + + 'collection' => [ + 'pagination' => [ + 'enabled' => true, + 'partial' => false, + 'client_enabled' => false, + 'client_items_per_page' => false, + 'client_partial' => false, + 'items_per_page' => 30, + 'maximum_items_per_page' => null, + 'page_parameter_name' => 'page', + 'enabled_parameter_name' => 'pagination', + 'items_per_page_parameter_name' => 'itemsPerPage', + 'partial_parameter_name' => 'partial', + ], + 'order' => [ + 'parameter_name' => 'order', + ], + ], +]; diff --git a/src/Laravel/phpstan.neon.dist b/src/Laravel/phpstan.neon.dist new file mode 100644 index 00000000000..b752955ad8c --- /dev/null +++ b/src/Laravel/phpstan.neon.dist @@ -0,0 +1,22 @@ +includes: + - vendor/larastan/larastan/extension.neon + +parameters: + level: 7 + paths: + - ApiResource + - config + - Controller + - Eloquent + - Exception + - Routing + - State + - Test + - Tests +# ignoreErrors: +# - '#PHPDoc tag @var#' +# +# excludePaths: +# - ./*/*/FileToBeExcluded.php +# +# checkMissingIterableValueType: false diff --git a/src/Laravel/phpunit.xml.dist b/src/Laravel/phpunit.xml.dist new file mode 100644 index 00000000000..b3326b6b5d6 --- /dev/null +++ b/src/Laravel/phpunit.xml.dist @@ -0,0 +1,29 @@ + + + + + + + + + ./Tests/ + + + + + + ./ + + + ./Tests + ./vendor + + + diff --git a/src/Laravel/public/400.css b/src/Laravel/public/400.css new file mode 100644 index 00000000000..4a3ee47e66f --- /dev/null +++ b/src/Laravel/public/400.css @@ -0,0 +1,79 @@ +/* open-sans-cyrillic-ext-400-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/open-sans-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/open-sans-cyrillic-ext-400-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* open-sans-cyrillic-400-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/open-sans-cyrillic-400-normal.woff2) format('woff2'), url(./files/open-sans-cyrillic-400-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* open-sans-greek-ext-400-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/open-sans-greek-ext-400-normal.woff2) format('woff2'), url(./files/open-sans-greek-ext-400-normal.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* open-sans-greek-400-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/open-sans-greek-400-normal.woff2) format('woff2'), url(./files/open-sans-greek-400-normal.woff) format('woff'); + unicode-range: U+0370-03FF; +} + +/* open-sans-hebrew-400-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/open-sans-hebrew-400-normal.woff2) format('woff2'), url(./files/open-sans-hebrew-400-normal.woff) format('woff'); + unicode-range: U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F; +} + +/* open-sans-vietnamese-400-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/open-sans-vietnamese-400-normal.woff2) format('woff2'), url(./files/open-sans-vietnamese-400-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* open-sans-latin-ext-400-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/open-sans-latin-ext-400-normal.woff2) format('woff2'), url(./files/open-sans-latin-ext-400-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* open-sans-latin-400-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/open-sans-latin-400-normal.woff2) format('woff2'), url(./files/open-sans-latin-400-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/src/Laravel/public/700.css b/src/Laravel/public/700.css new file mode 100644 index 00000000000..f20bbcf0684 --- /dev/null +++ b/src/Laravel/public/700.css @@ -0,0 +1,79 @@ +/* open-sans-cyrillic-ext-700-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/open-sans-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/open-sans-cyrillic-ext-700-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* open-sans-cyrillic-700-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/open-sans-cyrillic-700-normal.woff2) format('woff2'), url(./files/open-sans-cyrillic-700-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* open-sans-greek-ext-700-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/open-sans-greek-ext-700-normal.woff2) format('woff2'), url(./files/open-sans-greek-ext-700-normal.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* open-sans-greek-700-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/open-sans-greek-700-normal.woff2) format('woff2'), url(./files/open-sans-greek-700-normal.woff) format('woff'); + unicode-range: U+0370-03FF; +} + +/* open-sans-hebrew-700-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/open-sans-hebrew-700-normal.woff2) format('woff2'), url(./files/open-sans-hebrew-700-normal.woff) format('woff'); + unicode-range: U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F; +} + +/* open-sans-vietnamese-700-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/open-sans-vietnamese-700-normal.woff2) format('woff2'), url(./files/open-sans-vietnamese-700-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* open-sans-latin-ext-700-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/open-sans-latin-ext-700-normal.woff2) format('woff2'), url(./files/open-sans-latin-ext-700-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* open-sans-latin-700-normal */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/open-sans-latin-700-normal.woff2) format('woff2'), url(./files/open-sans-latin-700-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/src/Laravel/public/car.svg b/src/Laravel/public/car.svg new file mode 100644 index 00000000000..b74b16f85fb --- /dev/null +++ b/src/Laravel/public/car.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Laravel/public/es6-promise/es6-promise.auto.min.js b/src/Laravel/public/es6-promise/es6-promise.auto.min.js new file mode 100644 index 00000000000..fdf8bff2676 --- /dev/null +++ b/src/Laravel/public/es6-promise/es6-promise.auto.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){"use strict";function t(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}function e(t){return"function"==typeof t}function n(t){B=t}function r(t){G=t}function o(){return function(){return process.nextTick(a)}}function i(){return"undefined"!=typeof z?function(){z(a)}:c()}function s(){var t=0,e=new J(a),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t this.readyToRead) { + push = USE_ALLOC ? Buffer.alloc(this.readyToRead, '', 'binary') : new Buffer(this.readyToRead, 'binary'); + this.responseBuffer.copy(push, 0, 0, this.readyToRead); + restSize = this.responseBuffer.length - this.readyToRead; + rest = USE_ALLOC ? Buffer.alloc(restSize, '', 'binary') : new Buffer(restSize, 'binary'); + this.responseBuffer.copy(rest, 0, this.readyToRead); + } else { + push = this.responseBuffer; + rest = USE_ALLOC ? Buffer.alloc(0, '', 'binary') : new Buffer(0, 'binary'); + } + this.responseBuffer = rest; + this.readyToRead = 0; + if (this.options.encoding) { + this.push(push, this.options.encoding); + } else { + this.push(push); + } +}; + +FetchStream.prototype.destroy = function (ex) { + this.emit('destroy', ex); +}; + +FetchStream.prototype.normalizeOptions = function () { + + // cookiejar + this.cookieJar = this.options.cookieJar || new CookieJar(); + + // default redirects - 10 + // if disableRedirect is set, then 0 + if (!this.options.disableRedirect && typeof this.options.maxRedirects !== 'number' && + !(this.options.maxRedirects instanceof Number)) { + this.options.maxRedirects = 10; + } else if (this.options.disableRedirects) { + this.options.maxRedirects = 0; + } + + // normalize header keys + // HTTP and HTTPS takes in key names in case insensitive but to find + // an exact value from an object key name needs to be case sensitive + // so we're just lowercasing all input keys + this.options.headers = this.options.headers || {}; + + var keys = Object.keys(this.options.headers); + var newheaders = {}; + var i; + + for (i = keys.length - 1; i >= 0; i--) { + newheaders[keys[i].toLowerCase().trim()] = this.options.headers[keys[i]]; + } + + this.options.headers = newheaders; + + if (!this.options.headers['user-agent']) { + this.options.headers['user-agent'] = this.userAgent; + } + + if (!this.options.headers.pragma) { + this.options.headers.pragma = 'no-cache'; + } + + if (!this.options.headers['cache-control']) { + this.options.headers['cache-control'] = 'no-cache'; + } + + if (!this.options.disableGzip) { + this.options.headers['accept-encoding'] = 'gzip, deflate'; + } else { + delete this.options.headers['accept-encoding']; + } + + // max length for the response, + // if not set, default is Infinity + if (!this.options.maxResponseLength) { + this.options.maxResponseLength = Infinity; + } + + // method: + // defaults to GET, or when payload present to POST + if (!this.options.method) { + this.options.method = this.options.payload || this.options.payloadSize ? 'POST' : 'GET'; + } + + // set cookies + // takes full cookie definition strings as params + if (this.options.cookies) { + for (i = 0; i < this.options.cookies.length; i++) { + this.cookieJar.setCookie(this.options.cookies[i], this.url); + } + } + + // rejectUnauthorized + if (typeof this.options.rejectUnauthorized === 'undefined') { + this.options.rejectUnauthorized = true; + } +}; + +FetchStream.prototype.parseUrl = function (url) { + var urlparts = urllib.parse(url, false, true), + transport, + urloptions = { + host: urlparts.hostname || urlparts.host, + port: urlparts.port, + path: urlparts.pathname + (urlparts.search || '') || '/', + method: this.options.method, + rejectUnauthorized: this.options.rejectUnauthorized + }; + + switch (urlparts.protocol) { + case 'https:': + transport = https; + break; + case 'http:': + default: + transport = http; + break; + } + + if (transport === https) { + if('agentHttps' in this.options){ + urloptions.agent = this.options.agentHttps; + } + if('agent' in this.options){ + urloptions.agent = this.options.agent; + } + } else { + if('agentHttp' in this.options){ + urloptions.agent = this.options.agentHttp; + } + if('agent' in this.options){ + urloptions.agent = this.options.agent; + } + } + + if (!urloptions.port) { + switch (urlparts.protocol) { + case 'https:': + urloptions.port = 443; + break; + case 'http:': + default: + urloptions.port = 80; + break; + } + } + + urloptions.headers = this.options.headers || {}; + + if (urlparts.auth) { + var buf = USE_ALLOC ? Buffer.alloc(Buffer.byteLength(urlparts.auth), urlparts.auth) : new Buffer(urlparts.auth); + urloptions.headers.Authorization = 'Basic ' + buf.toString('base64'); + } + + return { + urloptions: urloptions, + transport: transport + }; +}; + +FetchStream.prototype.setEncoding = function (encoding) { + this.options.encoding = encoding; +}; + +FetchStream.prototype.runStream = function (url) { + var url_data = this.parseUrl(url), + cookies = this.cookieJar.getCookies(url); + + if (cookies) { + url_data.urloptions.headers.cookie = cookies; + } else { + delete url_data.urloptions.headers.cookie; + } + + if (this.options.payload) { + url_data.urloptions.headers['content-length'] = Buffer.byteLength(this.options.payload || '', 'utf-8'); + } + + if (this.options.payloadSize) { + url_data.urloptions.headers['content-length'] = this.options.payloadSize; + } + + if (this.options.asyncDnsLoookup) { + var dnsCallback = (function (err, addresses) { + if (err) { + this.emit('error', err); + return; + } + + url_data.urloptions.headers.host = url_data.urloptions.hostname || url_data.urloptions.host; + url_data.urloptions.hostname = addresses[0]; + url_data.urloptions.host = url_data.urloptions.headers.host + (url_data.urloptions.port ? ':' + url_data.urloptions.port : ''); + + this._runStream(url_data, url); + }).bind(this); + + if (net.isIP(url_data.urloptions.host)) { + dnsCallback(null, [url_data.urloptions.host]); + } else { + dns.resolve4(url_data.urloptions.host, dnsCallback); + } + } else { + this._runStream(url_data, url); + } +}; + +FetchStream.prototype._runStream = function (url_data, url) { + + var req = url_data.transport.request(url_data.urloptions, (function (res) { + + // catch new cookies before potential redirect + if (Array.isArray(res.headers['set-cookie'])) { + for (var i = 0; i < res.headers['set-cookie'].length; i++) { + this.cookieJar.setCookie(res.headers['set-cookie'][i], url); + } + } + + if ([301, 302, 303, 307, 308].indexOf(res.statusCode) >= 0) { + if (!this.options.disableRedirects && this.options.maxRedirects > this._redirect_count && res.headers.location) { + this._redirect_count++; + req.destroy(); + this.runStream(urllib.resolve(url, res.headers.location)); + return; + } + } + + this.meta = { + status: res.statusCode, + responseHeaders: res.headers, + finalUrl: url, + redirectCount: this._redirect_count, + cookieJar: this.cookieJar + }; + + var curlen = 0, + maxlen, + + receive = (function (chunk) { + if (curlen + chunk.length > this.options.maxResponseLength) { + maxlen = this.options.maxResponseLength - curlen; + } else { + maxlen = chunk.length; + } + + if (maxlen <= 0) { + return; + } + + curlen += Math.min(maxlen, chunk.length); + if (maxlen >= chunk.length) { + if (this.responseBuffer.length === 0) { + this.responseBuffer = chunk; + } else { + this.responseBuffer = Buffer.concat([this.responseBuffer, chunk]); + } + } else { + this.responseBuffer = Buffer.concat([this.responseBuffer, chunk], this.responseBuffer.length + maxlen); + } + this.drainBuffer(); + }).bind(this), + + error = (function (e) { + this.ended = true; + this.emit('error', e); + this.drainBuffer(); + }).bind(this), + + end = (function () { + this.ended = true; + if (this.responseBuffer.length === 0) { + this.push(null); + } + }).bind(this), + + unpack = (function (type, res) { + var z = zlib['create' + type](); + z.on('data', receive); + z.on('error', error); + z.on('end', end); + res.pipe(z); + }).bind(this); + + this.emit('meta', this.meta); + + if (res.headers['content-encoding']) { + switch (res.headers['content-encoding'].toLowerCase().trim()) { + case 'gzip': + return unpack('Gunzip', res); + case 'deflate': + return unpack('InflateRaw', res); + } + } + + res.on('data', receive); + res.on('end', end); + + }).bind(this)); + + req.on('error', (function (e) { + this.emit('error', e); + }).bind(this)); + + if (this.options.timeout) { + req.setTimeout(this.options.timeout, req.abort.bind(req)); + } + this.on('destroy', req.abort.bind(req)); + + if (this.options.payload) { + req.end(this.options.payload); + } else if (this.options.payloadStream) { + this.options.payloadStream.pipe(req); + this.options.payloadStream.resume(); + } else { + req.end(); + } +}; + +function fetchUrl(url, options, callback) { + if (!callback && typeof options === 'function') { + callback = options; + options = undefined; + } + options = options || {}; + + var fetchstream = new FetchStream(url, options), + response_data, chunks = [], + length = 0, + curpos = 0, + buffer, + content_type, + callbackFired = false; + + fetchstream.on('meta', function (meta) { + response_data = meta; + content_type = _parseContentType(meta.responseHeaders['content-type']); + }); + + fetchstream.on('data', function (chunk) { + if (chunk) { + chunks.push(chunk); + length += chunk.length; + } + }); + + fetchstream.on('error', function (error) { + if (error && error.code === 'HPE_INVALID_CONSTANT') { + // skip invalid formatting errors + return; + } + if (callbackFired) { + return; + } + callbackFired = true; + callback(error); + }); + + fetchstream.on('end', function () { + if (callbackFired) { + return; + } + callbackFired = true; + + buffer = USE_ALLOC ? Buffer.alloc(length) : new Buffer(length); + for (var i = 0, len = chunks.length; i < len; i++) { + chunks[i].copy(buffer, curpos); + curpos += chunks[i].length; + } + + if (content_type.mimeType === 'text/html') { + content_type.charset = _findHTMLCharset(buffer) || content_type.charset; + } + + content_type.charset = (options.overrideCharset || content_type.charset || 'utf-8').trim().toLowerCase(); + + + if (!options.disableDecoding && !content_type.charset.match(/^utf-?8$/i)) { + buffer = encodinglib.convert(buffer, 'UTF-8', content_type.charset); + } + + if (options.outputEncoding) { + return callback(null, response_data, buffer.toString(options.outputEncoding)); + } else { + return callback(null, response_data, buffer); + } + + }); +} + +function _parseContentType(str) { + if (!str) { + return {}; + } + var parts = str.split(';'), + mimeType = parts.shift(), + charset, chparts; + + for (var i = 0, len = parts.length; i < len; i++) { + chparts = parts[i].split('='); + if (chparts.length > 1) { + if (chparts[0].trim().toLowerCase() === 'charset') { + charset = chparts[1]; + } + } + } + + return { + mimeType: (mimeType || '').trim().toLowerCase(), + charset: (charset || 'UTF-8').trim().toLowerCase() // defaults to UTF-8 + }; +} + +function _findHTMLCharset(htmlbuffer) { + + var body = htmlbuffer.toString('ascii'), + input, meta, charset; + + if ((meta = body.match(/]*?>/i))) { + input = meta[0]; + } + + if (input) { + charset = input.match(/charset\s?=\s?([a-zA-Z\-0-9]*);?/); + if (charset) { + charset = (charset[1] || '').trim().toLowerCase(); + } + } + + if (!charset && (meta = body.match(/AYz*e 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 z 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 SrVX#x*U@>q?TjY@0000bUWIS~ literal 0 HcmV?d00001 diff --git a/src/Laravel/public/fonts/open-sans/files/open-sans-cyrillic-700-normal.woff2 b/src/Laravel/public/fonts/open-sans/files/open-sans-cyrillic-700-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cb8952e9ea944922ce58ec2f1c7b47ec1a929165 GIT binary patch literal 10872 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 DLm~`Q literal 0 HcmV?d00001 diff --git a/src/Laravel/public/fonts/open-sans/files/open-sans-greek-400-normal.woff2 b/src/Laravel/public/fonts/open-sans/files/open-sans-greek-400-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..84fb02378cf95bad7d37f46788a7f1c969c54de2 GIT binary patch literal 9388 zcmV;dBvadWPew8T0RR9103@sc5&!@I06}m703=2L0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/src/Laravel/public/fonts/open-sans/files/open-sans-greek-700-normal.woff2 b/src/Laravel/public/fonts/open-sans/files/open-sans-greek-700-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ea199a1cf6990e600882d008ca277ea6392b55a6 GIT binary patch literal 9236 zcmV+vB27z7{%gkT4T zXbgoP8&*3N?AQ=)2T&y6e_bU1e?D%=5G(}Os(w<@jV_!RgSBQl!wF(sL9p01g(7SS z8&^4ELtE7%p(8Tf!QGB1WAd!tc;@ZxzR}6|QkT-(0D||*g0mlP0ugx~R_w?3oVrpuenqgIXp+`^TW_mJ4e-*xJ@2eAE3GuI!z3Xqw zGL}?Y6dEMK;?Z`>Ar)I|nVompCjvA zbZJX>_W+G7k0J$tG(ICHF&_j7E+nX7_7Y#F=H4fFF=>0HF(T3BH<(x%zjt zbKs|pzH=^0mDf3?)M^+zJb*gdC8 zE&~3(@BU4A`f!(SJpH*QzyI|2iifwa0tx^}5zHb6V@hq6SH9qLq4DUdBy0;vcBEW!NwaOcDhk`+@@ z1pLQ0)81y4Kc0K&wyVxN>9D%3$$IC=mPsHGDD1ZaN- zzi?WaOL1kPi;0ZQIxo%9cAnkG{=u$fuP$s%d-H&B=ET_vgzuN1oi^-I^8n8ri_Cjz zBIq;1F{TG(-cPVc*)x}I>WeFU+AF<~t9P znM9D_z+F6_zNylcaTtR!vW!E3zz#fSM*(?ckwxl8MEb2vX%O$b`CHrs8^V}j1Ek4y z-XcnGWRBMtxJtTAS>KDmqyQ|jpyIi9Ffc&Y{Zc@9o>Xi+26-Ax`_5aYI_{hq!BqkA z?{2;S^?}TG>rOd(S)Vw5Oa`?347q?DOip|?iwrhC53eE^*cewIA_(+zWM2njV}J>8 zhTvde)bj>97`dp}hgls)on#6S7HBs_J_(A;(SoJobRov(uIj1Pb-AwBZPTYlBYcZ&N0E=J@SIyz}&Uo*n5vnys zoW0pOLyF9;@+DORB`v|QYoiq#334_%g4h^`gE9eTRbNbC39Y3}!n2b*$(Lo!IM2u( zTb6-;Ao&pYpNA)8CO%lnwm=ExddSE7iYv~D1{wiNhkiTI0unfFILmODzooyf09Fve z72G`*?KhaRVHHk=51kq9=a#(B)nnMqd;M72twb=8IDVN+s{FFhNUjINzAVaDLQ2A8 zpSI|pLKssHK@OS2UQkSw6Q_>9;!Rd|RvNoky0^*tCTV}Qyi(C z@xxLgyN&uzecv?@f@%CVPOv(sdN|{#DK)L;sD`={_T$$)@jn6t2tQ)1L5Y;?bmcFW z6@SHKZPDo+ErHES@sJ}JRi>7^Kl__3d2#KfM!v;RgIxr7>BsG7X}9V`(~e`?8#Ry+ z2sVQ^+(#^=)Py<{@kTJ#f2@BRhXlJo5*`@#skvG2)~UY!$(|-BO}dH4jVYUu!D-w< zwAHv;PXn;TPLDgm)?nD;gFEY5?~=001N^*3RY!*tLr45WL2HF9kOoo?ld%`eD?PP_tqvc^2cLQ=RVQnd7lX^Ky-Tl z@XN-`AP?N_ePpn-xy9EAht4q^^R7ujGF;VhuKOAcLjz}mxc+o?SS6L3*1NX*H*_s&xA6oNwL ztTi)r>NJcI2G`#3*r)n&Bc3Nw7veE2@1q91MKRX~Y#Cr14=tY*#*9+IMUKK{$yOjFbQbiqFZW|2)fzUh1`VH_$yMYio#OX#7w_IAE6igq@-*Fe@ ze0fy@%nN4684nXj-D4AKTQxucYB=9qjJ;SftTA>cM2U*6(a<8$B982Py>oeJnDSCU z+P97^xy&MI*tjPalYsd4wu5Th>KN_KsiYTZ{)7nF$^akf>toVN6Tj`1v6MIDD5bR_$vYWe6=RQ`b6j%Y`r3N zRr9ef_%k2+FV?-s0yx&SDMLVXkiq)u$JeL6MH%lJTaFu#tv+#y3ts9{}weB)*AGIzZw;x*u}tE*xE?bQkvXa6~)q4#2RlW7XHU zdRkxDrAaK8wB8#C#TvW;jtY3xOFf2J^XRj(j?ZN_QM7brF)L!_H^1YXuc${{V+5f| zb9K&jAt3|75gz$fj*%Kff&xZgbf?4c)*a;UCXOVA)A+$3m>>b*{fwAnh45k@vR28k z3DfD$Wvpv_8KI;KmRN^W$s2l{)f1+RJ?S`vmQ+Wt0g!jD0aWn@^ATZLd%qZX<=QRP zehv2)r#NQ5kSje`L&AXE5^G_CD0vTq(W`?fShoU4eEQ#L2Z(Y1{r-D^)hsQ;Kl*fd zFqh=Bl3dPS-G5d%mrnpz@*gx)tUJjblu^qi-aCDVe5A8RxT5k@ajNShjr>%jO9-|QVR+30(_DRr zJ+j0Lpx)|w&XuuhN%rQxMqq}IA(ni@Y;RhGD+M{>uX(LS!GobW(i3N}gITU_>T+v)$6NA5P`mWjt8e)V#9fT5gg8}<6>l9gz$e4k(tfY5 z=?Ysm=;&3C(j{P#h+D;^oS{>Lz+vDcgdP?a+T69cUq<^}pti2Af6OdBO-@hMW1!Mk zXYL9r2-}RlcRs`*CaJJkk_J3}4|uGV`U4vv;&-x=0uqhu2>8P8_Kkhp@cbYUahYdv z=$pXvvp5KNvQdVSfEQBzPw&zuI(M-E6r{kshGSWI-&i1rh;cOPS$|{&0TiqR0 z-S%wL+ekvEmy8Z2Ffi0(yO7B(^z88|y917QF)jD|3M=uq!`YG1vWXI&2&pQ(@-4Lz zYJgQFP}LZu81BI85{-;LDR*>0=CUygBe2T7s!+k8Q zbb;C9FyC6kpLm9Bk_O9VP2?Id+;XsLD@M*v$ObU*X*xdjUy>Ayzx@#&l+uWVOsV%; zss4cBy<5+w|EmhA;H3(ark;?xtCy+NEG8UetgeZ3rAx2?07?%ZFU!t;v#M#jz?Z-S&KlPKzT=~&r{9lJELmzliVvsAlY zx&jJc%PucZCZKrox;n}R{sbErex*KE!SIT*Nn+Yf7&br?mws1#t}K6t_#F^8JX@cl zf22~xEzHCNx0_|d9p<}gS)N~4s)ts)p>9r{QiGK$c0$v$$Fo-^@c{iUrvA-*=!E&N zcR@wGDD3q-lCGBRolF5HB|OsRd@Nk!{_UoynlmR88cSFP+1Ua}3;Q#GQ{ThxHi@bm z?MlZ1Ku?!z^Tm)B*d{jUO=yMM|FR~~3Xv~YT(7q4BM3}k>1dRl^Jj**Fg`Y9WY4>o z+C4IQXY;Zlew4z*qIH5HNOyp9WBVjcbzeOpjqc>FDdZm5`^NIV$jLO*(BEkH6`Elm zOx=Y!$?j?(+7kK`Aac2t!l;Y?Y+gR95wJSJwMqouqs=?q@qO|zT+&hZbJQwq2pLca zV442+N*@p2yJEEA2U?qq$BfMzT^xsxRRc2JF*$udzbeHP99w0v-M}IkykIW`VR?o4 z`~{WCJKn+>=jJA_9?Imo*?o7JPLVAZ@<)*(Av=;UY?}n+Cferh6oKa+tifj;1gGRm z2Jm_KqD6}wDuMj$90_KA>*N_H;@Zm+-_{Hn-_%54rV;SE)UAz&K4nfgT4$*B?MkUc zS}kZ@OVgh3Da=pw_l_>{%m55TAlRg6)`mGVJ5yzYlBa_FD%chN!g~J@c8DKpFU8Yg zOl2TYTBmGEHsNo1`Fon|efOuh|7~bTIJ9OS(s;~hpLo5kJ~&}JrZ9wmQ%unB&|c4l z?lM|~oQD{$!Y1{D)a7K%JO~HY4eK)CZkPC$+FkT~BQP7*3T*|m^azAP^=N~{X5$%H z-mYE4o2Qo8ZhSEu<+pEUn!Il~nzjAq;;@Hn%bQwYg6QGm*PDz^HIJ3E7hvJKdlCcr zax0a(wWHHDK?$2kJ)%3h;j`kp z@{{8J;fOmu`~iP~S}J(4AkiOv*zjT9Ao4Q2^rstU#}EHzqw6g`M4 zq4U`iCN(IEImo&df~is>CBaV+W}+5_;*I-=`8vKhkw6Pc_xfY#1d$u05*Q>#})9?Q~w{4BGj+{S#{HcaVNB;efVpFnbjb~{`J6G?g zjq)W-0=AP>OY7nupvJB#I~Ui4tLn9s6jA}$q;(8v%66!l{Wa^mhCaJ&HYI86ziK}{ zT5l2Y?e@I$=ciuG?sXP|MNrA9;}7TaV7)NjHISyCx}cwiVHRt@=#uG2hFAa2+6Q@t zcyyjmPOj< zW=%fnU|k&P_|4g)hwBgg;SF_$o^O8P@T4-leuYo9G2FO#m6u#w`2rwIFKE`MB<$}j z_c^6rmg$eEhpJP8bi2dfb?)C_6|nI3ZJc_8^?}Zaw|%?PXywpmM7FPH1?jA&BVk{( z0hpSa^#7qTD|#$VXA^bcBGa`Qo7)O=w@i%Xk6V2?`PmU;_sivG#X<>5V%}sQQ}^!! zUI*Wj7|6A7Fq5Z$8u?p+P-^)O3fo6<;#vAT>5R9Yya93UjsciXa(fT+X=+Y z0ddhxnyXVVr#dXrt2$))sCZZYp7sylOU9Rd&g;53s8b%?Syl+#Dad5jhK>AMZlX3U zs)&f`E?`iyGlK*oWw3vRJg;y7>)W*b#`@d_yUm^iz6MCs-u2@G-@+UoxOLitcaGK! zS69PL@{qYLnfcB2kEm^B?>uFMaPRnctX5MYMDb zNw2QlAx+o!pCVON%Bzx-bEWQM6=o#GJ6D}0HILt9j}c}V{w_$LI&{*?cueyT(zW2FYQ2M3hKT56(}iEQezyRo$}S4eBAeuxcYGXrcGA1iMtc{ zy1E<*-h^Y3#-e0$g~7@?eg@)82`mX>1%KjnT`U;|G@)z-L#|3#J#l@#y5FBw5EI9a z)4IZP>!G3jPb5EgDgX<$+%{p58mYWHT#9L(;r!-jQ|Z-A8|NG)|cAy|2XJ zN}Dcnz`fKe!el8EMZxW@1y8kaSoprZ&A@E9s912iV^i2DI-56B;wk$-y<=H3Q@iW7zvAAmLr zJPxo$dz7g&*isO3q)qnQ_s$C9l709_I3S{bzt-E#>PSiR$l1P(|Kml7{XV;#(+KpoVB19_iTjnI94e+b$_3>Tg)Qb%L%33@ z%ShTn8k*7Oc+CBq_4EfiPD$GqM_sql4!&x{(agI;f9sCT6zyo;=%1n>Xy}eG9*l)` z+l)m}-imjx9;GD4E0g2g4P%WGyy>z8Wm;n<_m1x{-~9S{evOqb(ls^i>z}+jbiDjTS>7Ovsh$LS^l+1KDEvj z@$bh!vB)woZ#W`*S^kILR^9TD=`?Jz`#Mn-CZ{6!^J@NWNr2nEwfm$@ee}1^N~tc( z{vKm9Uwa?WD7Nb!kP!sHkHRc8{tO-&<=mSyJA3%sqh=63B=D$|wm>`Wz$;hC87Bat zYnR*q0j3}crkG|KGt6T?vn*gCi&)H3nxr%EtgPnSzY)h|(mWD+ps7&o5e<)_oz={7 z&b9OeaJld=pyv>!k1Sb>HAy27-#Op@QJl9k*2oq8%sI~C;RO~dw4lkX6Xd*~F@Vi` ztn@>D>baj#9uuN0Ci@SW53)pESbD$6Onh@0y_u-s7OBUgS@{b z{^s{)l+o4j4%WQ97FFr5D0BM7>Ra>+{Tt11d`Sm=Bkj}s5D;!>t~}T6zuoMOo5bUQ z7f0J5btz7TSrK0N@;|KCgNqynpXsy?M$gNk`VWZ^k&FAZNb2FDSrI~cC0RbJThe@L zbaxqQbod>=BYi=I@3Q7uhlRD3)%{_}Gsd`NPIJR*8B0k`cyc^*Z*a*@(4I5UxuVO7Zr(`_3xNf?xW zNsGi3LD6Gb;5F>tj7N7|=Y741yO#9&VeA{mo@b+gIU7vQ^)!kq2XsA^S7g!}LH?VH zMxZzXN;f7-L&I7K$s99A73BV7*ZZnSyVkYj#$nza+cvp}L0#KAeVPVV@Uk@4k?(S- z1}^7a4?O=3r3fjNIy1^~?K`91%?=$pAPm+zU-oZ;S5{SK55+XQ+xo{POpQ$TIHN&A z^tLYxhxO(6GT7vy)^?R!B$A|o(D6469)UCFjc43-ybzASWm%LfEWAY4T~Y`bPstNX zsP;Yuu3Qb4ps2yE)mkIq?+e2uLAZF^lkM11Py1BK1W~&vxtsL;@i1_~{mNQc69CJR z%Vtw~p6L}ab7n>&3d4HL(UEgE*6ogt8f$$seglip2vNlN@>jn~pIT+Q@vg&iogu$u zY4nm3Pfionc~5o3yu=_`+nD&m)grR*jFx z*0n(eRCn32u!9ccr@ktzaw?u13;-y|)@fjCoTVri7a2=uMz!-(t9N8a z{ua%4yVIEo_z2u!0QICeRW9+Jj9sHtp%Yi^#K#qsStgp6TqNwW*4~?_oVOMd_;pxH zb0Tb2FDFBC@JF0$`&uDgF9uNQ0tHFWP*vmOE3Gh0(=2PiG(61>CVtK&NSi!KGUX!Q zLEDXCiu-me(=Nn~y3^_Pghf!%wYJ~Ms;Go|PT}AR(eA}n6{LJihz$lq&(B$-(R>#b z*4~%O^~FA5(${Fk&J@K&4jlrjK)G1oa4nydg?ZjKT`4fqI%9xV=4(V)aS0DT?Y40a|>PR1*Ra)Isl--}gjk=Jw`2W0U6ch7VZmAKDc8kg#l@#ra~ zRMpjjI{5zPXtz5yDGwg>51Tx$jitnMyMe)?dZqKwAgyata&H}Z1iaH_u47!{ap3*+ zoK(!srL5a6%g#vqY+*Dtm0Gv#2Tx8}r}Y*46Hp2r#e8LIkSq1T(h-fp-N?lwK2mr_Wd+S!2vUdO7ScCQjKlt+TpZFervLVkH`t$wLCV`;9000F1(6rXC zY?^n%m1GvwG>nL}-XVbW6JKE5QklItedTJ3|&pPyAfqMPK;`}q2hU7~H8gB|uk zFSr0UOK$8n1#qRM0nT)X{6n}@Kg_9a0kY~B3EVrRX1FCM;z;(|{^PlFX;63IRIlUZ zGn#h8Gi>2@+70uAd&={_MAy}q*%|OD{fH5*pFoL#c*B37?KAhu;10fiD*AfMk<%A^ zxL2}s{TptX_2E1r7xvj@|H!X{6%Uk&8Q@?_?h5Q;@amakekC- zGx$-#gof|N$mzDyEJ<=Ry^38qzg$J-V+W7Sr%UjpEXms3og|8?VV-6(BvU30K;S)y z%(;RUsVh`IKq%2jPbOmxfP=*cDlyHH4FrIR-o&>Xsmqod1GMjUxD44>cP$Vx;^0U* zA#g?H0Tz-%|EHt~KocxP3|&x?q)3w?k9@KeP)HHQl(1yQnhjfU2uLVs7+5%V0C@Hs zIC4VZ%!MmA?ua~i^5V@02^obiKmGy)q6$J2EJSFQM#sR!!p6bH!zUmlA{HiGgh)}M z#du;TW_ww$snL;t<=FLMP1F3a_WeAC+(Vabi@a!55B>iK3>ZfGL*1f|Mfk7z@m_ecx<8Au^UW1Q`%-=Q0V&M`KmI2+RE_>g?a2D!_Q_#VHYn|-E3;-Q(ol6TpK zJY`ZM+v4~58UM@7G{6NP)Z1nTGzr*S+hj#~T{rXQSQT%>A z7b7-a)Z0+UNm!WRrvj`|_br2D*Xo4|fuDZ0KGh4t?I)RMC2`+5=&UZln!&-R!4;4$ q)&n3Sc2v*&3Ke9M;}bUlKLOU@dW0X`1ClK;WU+Z8%kg{pppgIySNr?` literal 0 HcmV?d00001 diff --git a/src/Laravel/public/fonts/open-sans/files/open-sans-greek-ext-400-normal.woff2 b/src/Laravel/public/fonts/open-sans/files/open-sans-greek-ext-400-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c70192e25e3450359c5c0c68351a5b24182ef480 GIT binary patch literal 3768 zcmV;p4oC5KPew8T0RR9101mhS5&!@I02@F601j0E0RR9100000000000000000000 z0000QHXDI996APIKT}jeR9*m72!VVFpA-=g3W6+xE(;I<0X7080~`b(1%!A9NDPG^ z8~Pa|5yHj+fI>TbM3rV@*7d2T1;g|g9 zannEdN0mI=IJg;BncKHgnb3=&W zR1MX#Ke?_kX>E@esNg}X7q$6m&ey)A&Hvf>gB!8ighM4}Wba+C&ATgP_wkw!Jiv^b zVFy5JMi7$PgqxhuZt(y9P5+`xc-0fDURz%}3p9|2X-iTJqJR=kK)c^h>kU|vZX_<} z8iYY7*b}z5-&+<0hDap6LtqF3hlm>3_6X#-Cm}v!-txAU$ecJeKdI9S{L=Dt`{Z zA?YzV)x~xpnNb763#E?SRC*9_ysvEi?*gFw&ool-;!gGIa@5n>XahA_bRT7E0r|Bo>K7=;(b z-vGGal6||1b5_%3_>)bJ+wP)so>a&0kQ&<@*6oa~nS-?sImPdL>vSd!>vTKhm`iSP zWa^w94mwUW7X@5`bFQ?~+--GBC}|f;C*l|FcG_jvt+B;{%s~^M4YtRtpVeo*&Gr_L zzUF(K`fap3Y3Sl(f7>31oUez4ZqbY|qs@*9=e3N32lnsVuzuazHLF+o2KxJYd%C+i zJKEb?Tbi318|v$7YpSa%E6U4Cy(ONNE0!Mk&BkXR zW*h6JG+KgHuFf~gr6ig|3xBh07zN2d{utyMg4VaXJFxYd(%LE3(7;g_Jz*wZqvwc} zIA}=6->N(0Za=qFmzBV@9Y%_%${*k&Zv->3L5hhtj3Koo*jbvbEd7Q|z+C*Z2-kS5 zQ&W-tJy&P{ZQDRuLozse4-YBIen4!X+OvHleOD+hCatqbpxE8S! zYCO_qh6VckZSh7P>XZl)c+#^n8gyr+RtzlP{GnttYjUnI9uoe8SeHwYNhOX=AM&G? zJ{0D*uqRL-itI1US*ZGoi{tPF0%}aN6$|)*T_2HTrrm+cxDvTRF9JT9D{5 zKRmjGILpL4u_rLpVsV}u6D=NB;?|jDDYkv7M<_}#PbNCzT6x&T#`4A5#rnn8!uEoS zRHk2o>;6TOm?-(x>TIVb@Wlpg1=$<4IjSH57c0x+5^QSIo5_ZacrHm!db_L9ukOz6 zuU6S6m9a`$NzPL))gzl4zDXxUBNz-o9o{KE1c8WmKpR?GyI0z!zN@+6E$b7=@?5ct zVXsSLJ=(KsR}%ZVg{J1qM$gJ8-pI`jZ)A;}9nFg%pgrY=x3@DmQfilrrepFb@#eCf zvWD0S>NF6)3E9Y8A4hV3oSr3Tk<`i-%z9pdMOV=3^W@x?KyCtMJ^q{PT&K71#mf^S zXgzzYZd`ymg~kC~S5)Lu(b~P8mP=HRn3`I-)a^&@h3Q>e4QM!tzeaPHJ_*whEmzZu zwU|#GTdO&;SLc4l}l*~$#%<+Od^mA_jiNo&3@TJO(vcvrISPT^PS!T-4IHc=1x~!#%PXY zaD7&Z!V6(UFaxV;<_M>kfw`T#U~=jt2xz!P?8k~jEMW7KNZ>Xozmp9y!h_=p4>YOK z^)#v#YMrs)EWkG*Q8PZ`JwMWFLX*UQ5#Ka`0n+V`m8{OHWG6~HaPpko+7ba%)4iOC zdehuZm_Tc*!7!C#_~vel0@0ksXLW^aWn60o$$vn!c_7-}+LxdRJMd?{My7W_)m5Nv+i zyMU&(a_l6qHOum~Y#*0Z8t}LzU1IChSYsB^p_0;=6-=P`^#&5h2%D6rl4_3^b$Nyk zLbhq}jA1ufLTxeY4+@FG>Z<1s5DZ0*Pk~cD?3s6#Q!)fuby_G=Tvp?7`Y9vv}nM z9q^0HLaWpf$ngHG#s9EYh|6~FoyN*NEW8gh4j~I1A@|GNUIWa#B}Ef6J+hO?TCTF0 z*fdf`Q-9yA*`Xzaq!a zPd5!FWE-*MxgmU#&v0u(@gwm^jqH+Ib}*AN2srYk#|6o%FLSK@e4p4Nuom%eKK5fU z?-8OUFDy@rgOn}@`b@bb{p1x%1gU^&~=il2fb zk8CYS<`A6k#=MP?Hp29qtHVBEY?54~AYI^>ztw&S6}a+u+7x1_^rfxi1A1uko)bUq z;zL(smhu^#C4!iL9Uo~eh{abVHiGs|<4|nHB z-t);@lkPf@m-gUicUJ|yz5C*&H+NSA-97x<;Xjw&*;#G1+b8b%U}(+s)3&5L!e=ii zORropU~jNgwpC7_5g+3`5;x?h+ZRWSN!7%Wmm*nfw^o9cm96^i{P9#O|y=$STHm=SmHhcVqC+Xt-4~S22T};ya~XSj4H+uLdZ(2+WCKs zfEjpl496Ip8zW*Ewv3UWqIR?m(=cl}0<4IHF$6QlNZz&p8pfRn8Uc=(Mn*3V6lhS# zqh7jJ9<{1?SqEMg=sEtM*MvD~H>_!b$ORJcQXvFSPPI;A2Mct5Q<|36!x!Io0 z?X6VVR1YRmgHBy|>XeNN7e`@K6lqYl>5)+$-887ily@D(Yx5ZM2CvFb@?N$j4k}bt znl>d&d9M>hs9{GHEGSd%6XsopWgGg-wnS>342GoDI06?QWq=q75a1$CBL8nm?pR`h z+*V%|mohC$zDi2gjP8>zcbDEiE7#FB%b<1EWk<`5=V+c$sA&d`Gl7QbVD(d%JL;xV zJ55*3G*!E-Dz?H=8GBI?+w3ThO?H&U6_m!gC2w4=qa=nZPYf%g87rdcS{|L2Mb8+` ztH8L<<9g(i%X{2%JY91>mT8pXn4xNrv3~kPFFn1GdY`1JuPVTUsp}S z1rf&MwYU&>aGc#8qTBUBE~{H~ako|HdJrGrKX4()u(>TRvs-paZdw6%)6Kf1zaae} zG3XluuKNMEgG?^PEx4Fl(U~5^2G|cwutU%^k?y1&fg)$-ow8BT4Vdzl1ZZPmd|`k# z2DJRe0cm3Z?zyD+2GKTs-PWxbnUERSQCNJl0E|q~Z!ngaUwnfL+w_DMIN@|UTUy`@ i7dVqZhU`qcio;%v`0O+kMA9h{9?v7%uVYh(00027&J+;< literal 0 HcmV?d00001 diff --git a/src/Laravel/public/fonts/open-sans/files/open-sans-greek-ext-700-normal.woff2 b/src/Laravel/public/fonts/open-sans/files/open-sans-greek-ext-700-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..70b7661e9838e907731e8c50a0f63df50a0fd34f GIT binary patch literal 3768 zcmV;p4oC5KPew8T0RR9101mhS5&!@I02?F#01j6G0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/src/Laravel/public/fonts/open-sans/files/open-sans-latin-400-normal.woff2 b/src/Laravel/public/fonts/open-sans/files/open-sans-latin-400-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..510ca891ab2e187e49747183f769ac80758cbca8 GIT binary patch literal 18664 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 literal 0 HcmV?d00001 diff --git a/src/Laravel/public/fonts/open-sans/files/open-sans-latin-ext-400-normal.woff2 b/src/Laravel/public/fonts/open-sans/files/open-sans-latin-ext-400-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8dd77186fe91029231049335517e11c09aa16f8a GIT binary patch literal 15296 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

1H{0+Mc@AwDgv3VmXGwv?-%BS*JFq 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 S04l%V_%nZ4|DAtGF#rIGuB=}G literal 0 HcmV?d00001 diff --git a/src/Laravel/public/fonts/open-sans/files/open-sans-vietnamese-700-normal.woff2 b/src/Laravel/public/fonts/open-sans/files/open-sans-vietnamese-700-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1a64bd75c61852f41e77b7cf9c017b8ca7f232e2 GIT binary patch literal 8512 zcmV-GA-~>tPew8T0RR9103kpC5&!@I07oPM03g@^0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/src/Laravel/public/graphiql-style.css b/src/Laravel/public/graphiql-style.css new file mode 100644 index 00000000000..ad5431eaf35 --- /dev/null +++ b/src/Laravel/public/graphiql-style.css @@ -0,0 +1,119 @@ +body { + height: 100%; + margin: 0; + width: 100%; + overflow: hidden; +} + +#graphiql { + height: 100vh; +} + +#graphiql .graphiql-container .topBar { + background: none; + height: 70px; + box-sizing: border-box; +} + +#graphiql .graphiql-container .docExplorerShow { + background: none; +} + +#graphiql .graphiql-container .title span { + padding-left: 10px; +} + +#graphiql .graphiql-container .title { + color: #85cdd4; + display: flex; + align-items: center; +} + +#graphiql .graphiql-container .title:before { + content: ""; + width: 185px; + height: 50px; + background: url("logo-header.svg") no-repeat; + vertical-align: middle; + border-right: 1px solid white; +} + +#graphiql .graphiql-container .doc-explorer-title-bar, #graphiql .graphiql-container .history-title-bar { + background: #3CAAB5; + height: 69px; + display: flex; + align-items: center; + padding: 0; +} + +#graphiql .graphiql-container .docExplorerHide { + color: white; + margin: 0; +} + +#graphiql .graphiql-container .doc-explorer-title, #graphiql .graphiql-container .history-title { + text-transform: uppercase; + color: white; +} + +#graphiql .graphiql-container .topBarWrap { + background-color: #288690; +} + +#graphiql .graphiql-container .history-contents, #graphiql .graphiql-container .doc-explorer-contents { + top: 69px; + box-sizing: border-box; +} + +#graphiql .graphiql-container .execute-button-wrap { + flex: 1; +} + +#graphiql .graphiql-container .execute-button { + background: white; + box-shadow: none; + border: 1px solid #85cdd4; +} + +#graphiql .graphiql-container .docExplorerShow { + color: white; + text-transform: uppercase; +} + +#graphiql .graphiql-container .docExplorerShow:before { + border-left: 2px solid #85cdd4; + border-top: 2px solid #85cdd4; +} + +#graphiql .graphiql-container .field-name, #graphiql .cm-property { + color: #28858f; +} + +#graphiql .graphiql-container .doc-explorer-back { + color: #294e52; +} + +#graphiql .graphiql-container .doc-explorer-back:before { + border-left: 2px solid #294e52; + border-top: 2px solid #294e52; +} + +#graphiql .graphiql-container .toolbar-button { + padding: 10px; + border-radius: 5px; + box-shadow: none; + border: 1px solid #85cdd5; + background: white; +} + +#graphiql .graphiql-container .execute-options>li.selected, +#graphiql .graphiql-container .toolbar-menu-items>li.hover, +#graphiql.graphiql-container .toolbar-menu-items>li:active, +#graphiql .graphiql-container .toolbar-menu-items>li:hover, +#graphiql.graphiql-container .toolbar-select-options>li.hover, +#graphiql .graphiql-container .toolbar-select-options>li:active, +#graphiql .graphiql-container .toolbar-select-options>li:hover, +#graphiql .graphiql-container .history-contents>p:hover, +#graphiql .graphiql-container .history-contents>p:active { + background: #288690; +} diff --git a/src/Laravel/public/graphiql/graphiql.css b/src/Laravel/public/graphiql/graphiql.css new file mode 100644 index 00000000000..e99012ff6f5 --- /dev/null +++ b/src/Laravel/public/graphiql/graphiql.css @@ -0,0 +1,641 @@ +/*!*********************************************************************************************!*\ + !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/font/roboto.css ***! + \*********************************************************************************************/ +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,d09GMgABAAAAAAMwAA4AAAAABZgAAALdAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoI4ghsLEAABNgIkAxwEIAWDCgcgG3YEyI7DdHsjE9IUV+CFDh74vPL9/MmgO0un0soqjWt7En2kQoCMtXsRxyxkMqP9iO6NfSiUaLJuoRIKnhI0+ImbcWOB5XOAFVmCgxZQQmuBJRhZtsUCXm/492Dyuk2YZJdkdApZeOzyEQgKOwDgRjASBEEBVmAlgACtOHEhpjLyyrACMAB0vaLa6cAw5bc5bvhA2uwO7zXAyKPmkYNnAJgBxLEMDxFLqVBPI6EQ/daTr/QOAgfCngRoZc4UZiL623qCkf/oHVsfRCOuAIbJyF4ajQQKQLmQhNBAA4aygH9b19Xw4iAC8DkKM6WrYw/ABMAOWEAamA7sgBWACgAUSlc3SCmlc95o45idYD92Qt/+5gF19v3FALtB9+7dq/h6/Ljyu/zzYfnngwdlHxO+k39nOcO/e7nPf2vCoo3HVlmNTdnWwW3JZffuVU6cQX14kb3qUGOOJ+mjP9iMeb1Nivq5gXpJUWm+cmVK56e6PjI2uce23hHlG48vyDvym5/5q+wbkjq90rN+z53D6zXqmVUPVshZoVtrZgc4vleS1NNrni6VR8I/vTrpzpPwu1+1Pel4xBIzK16W3KcLNnVGl2RGZHbPXBAvhw4M02Ci/t0BBfw/p79XS9V7CKAMF0++DK9rtI/7MXvGATjz0TEA4K4oef476t9dS555BAoLBYCA6ei/FSzVgvg/cIR45gpTaLWeLiB+oa4xJuTks7r7/xwCmCzlpoJKALCDQmkyEsCsN0mELUADghGsGgAF6c9IXkabDYyqg6WMkZd9z7BT5gaphhhqnOH66aOvkTQhggQLpsk0xBB9DNSLJttgPQTQJBtoIE0JEY2wb+1lhF6GG62XngKUGKLFECMNkW2kZgP10+M31GZUwfojwkU0uAcQkISKFNtqGMlau3vIjjRUjMANjYkDNKeouYh7CRBmuD4CHQgHG6GXET8oT7ZU6QqUStddiABBJPSv6P315AAA) + format('woff2'); + unicode-range: U+1F00-1FFF; +} +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,d09GMgABAAAAABX0AA4AAAAAJRAAABWfAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmQbjEocNgZgAIFkEQwKrnCmEwuBSAABNgIkA4MMBCAFgwoHIBv2HiMRwsYBgKA2n+CvErg5YHVUkRAJo8aMqlEXjSMQVVUI6BratcEu3sY+K7ZekZeA+A0njZBklodqv8j3p3tmdw+YExmNDtAheGKX00EoHxYmFQmkWBjkHp7m9u9iY7vbmoqRigEWosAXkErltiNG5XAoTBmcQQn+AUahfoRWfpmA0V8wEmSBYEEbCfqjFvQsfYGTMtEF8B8A/Q/gH/Cv6Te7j3ct9L3rjt41CA3K4LLvWjZl/uaX4W9oNRdKPr2H7jgL6jQS1ZoqpSsOBRLXhEI4hwUJGhujCVj/LcbY6dJ0qD2ma4OVuMgfXDi53SubwDhW8tKexpmpkSF27EEcOWQ+hyzkkMUc4mIyd7WCu/HmPmK5VAppTwWWnVdAgFxyvMoF0LPPDSWAw3VF+bnA4ab8dBlwuD1ZIQcOoNtuyJcDHgiHPlDsNFpZIAmo0nzO01UoYE+jI1djPK62RW11i25b2/4sa0daU8CIV+Tk/iiJyuiU+hla6b4Ymsp/SdD1c54WYrICuy+DAnm6W+LBnUx2DVCOxqn53kqk+eZrgq/O7P74j7aIk+5z1vtg/Lj/SWHqK7OfGWUqjh35+oQWvdQg5a8d64pqw6dbvqMlDoZHj9/Hqzc//TxeY5mToe174gl9Z2qQ2k6OWKlP6mwi72fEfM5dCn1fuVRWDLlqPpr+5U0wKzsnN69AwUJFihUvWSYoW75ipWq16ukbmVpY29ja2Tt6ePnhBCWL28URN/PpHCv5T5T4q/x99f/W/pTgmIFEvTPrMyTHpKDfQEq9k9YnsWzjXOPAqJZx/QNGx+0O2H/ieADJ9pDrobwvLQ+NPoSCJKiS9/QinokZEfdBwqSUmbS3Ml7L+pQzpeCZomdKxpQ9V/FIlVrNsNNnLmdun3vUeh3x/dyv1v9zsohPMc+kvQPJct4o+FT0qaRH2UcVU04/3X70+sz3R/8fcWJ6pX0AKeW8UyJS9vn282uv78//n0kRUyBZwZSi7rpTUKV4vGPTou4R915OoDAtpyEtOMnIj2+88H6FmJjZl74WQtCEkH6QWskdmBHdVzXOyN7z9J0QnpmAT/CWEBf3VfQL+YMeADgBd9lWQyarMqSzhjI5ZQpmS8BMgHrJp7T308pXIEzBBP9AHPaSPg71xrOet8zDhtfrai2qaYvr4jS8hvswNPU21BZfBHfetK0hy+KIMIwZS0AojprPaRZfjs6DNz2+orBJiFuI5Zak3ErSdxWBmPHHBYPATjrPdEsTM4h3IG36hMlLTnJwzpsLNBsGASu5UIdIzeLJQcz5o4MnTE7iJBDQsrij4tG6YfDJJcYByHmkBCAv1CBxJnsvRfuhFDugJdqgzd427d48qhCZN+1GA/rTfSkw7UxPJD6W0QDoeuLB7D2fd0FEAICiIrQD/AfAjbMjDYhALwDkWf0UcRHEa9ajdRBQ5Ki+e9+AB0EPVdTE3miOU3Eh7sajeBLa+p941D73ztgXrXE6Lsa96P8r+Lfz37MAS4U+w/5/s/5NBzG0GmcHN8DFrraJCQ+mvrOKJzPnbjxAIAtBglkKEcpKGJFw1h9TaZNerS07a0UhiEmQosVwEkfKWaxFFltiqWVcLBf/uycfe8PFSrwO3r+VK4B+Elh8AUwPAtP5wAK0bRDQGcBbcXtDy6lIWQLCkOYkCcv3g6hsTUcXrpMjTORn8GfKQH7nOEwmi4WyuJiQhzMZLCbGF+ixWPosNoriOB1FUCFfD0VRBttQT890jglb35BpzXW0EAowJtfU2UifbSPkCgzNmJbz7XEzI0NLPofiKqmsHIZMys2BZByKE41ReBG2iZ2AU8nVGkJNaIpZr7AEaXc1HanTSlJSRXFGexA8ik/M4gqxRBEvCKXcRJztgkIimmoLcUWRVZQsJWYlar9YilrCWyoR8VCt02aXl2iHh0mdWPNUrBkcJNSU7rLUDTNojVjzhJQNir+hSraaPs9SYvoeSSElwxXZWE4WVpiDF8pwpRRLLMZJPiEgKc6qKE3WnTBWl0m0cVI3rJM2iQ3zbNHpSJ1NBYGaSK3wa4txqnHA9Vy/eUnfss4nqdxsSqq2HrRJ8SlJtUQlicaoxFZdALYeaOrz7dRmYjero/HM/6FM/fkKSY0Dun6gI/MG7Pr4QLoBiqPEKD6FFxWn8ospFslWaock2mFSN9YDi/D+4KskQuVgtHpqnI7CdRqM5BM8iktwqDojxBRnCQsV3KYmC3OQDCe7YdNHrwgCI9dx3RhJ4gp1sChTFemOG1DqdIU6HZmIS9XjRDQWpx3iqC8bUXiebpgkSfw0oAhWVw3FrWp4jAnbNQ8SaoIkWJSyyaTZBTcS3/HXStQS7dCsmhJjGVJRd4aMAzuF0jw4ZpuwWbrMjgdfv4iUNzS4JhuTkJkUrsR0XDG+3oBYIya0hEotUouDNE8JY/W4d9LsBZZRTf4F4itiol2mQNUp0XbIfzNxM4oh4UJXjYaQoLRaUSwmKCLN4xpbbE1JPEW3SiQT6w5nZnJIitCJx2JKjGq11JqUcZMfF3PVyZqng+sTg+PFXFudZGiTSeZAi2niKOUhkzqsDiDU/lMPSVHV4iKNHz6HaFum0koSlBglOXN1uYMdeY7SYhVnxERlA2o0mocakbpFEqWzbbWfjdPNbRLDmShMeshEg3e5EmqrduKjzjA7EWG9H5lm4p6eJ5Fisi6kdJ13JbnAeDC54aZ5bLl2iLTSZRGVpCH0wRKyQiPdFL5OWfKq5ufhPGqKJTUvwatDxDW0kHxKSoxVw7FeScSN4Ol4yohgnXYIkyt+XOxE/8hxNZ4ULZkt3rEG0UNQSl1xLkl911XG4dGKIiQgQElHhRXUi9RMRie5Lq0ZrMOVPLcbDcdRdwhCTbArxZHRTdaa24+0Q6SRzsONo3UB+WqNOI7siMw0r6s6iDiGaYksKZaYoPU/uExyH9cgbq0BJZPQIzOLIKm0mC1WP1Lz4kicyPg6avBXGCPDs2I0/S4urkSnnVoiic3CqFithCBvz+0BtFM9SLoU0PT4ZX6bPuKFY80IFL8DikfAiv7N4beou4s3nmoX0E5d8DR5qTwG3LmaUz+Bl89vs8/w+2azk+2TzjHknB6LybHbHbH4XLDj3B4Oxd64rnwjMv8IB2w7UcrZwMrOlW1BLQBow81pMcgds/pyruZUkdnRK5EDaaD4sqLpdj7CZa7m1OXcDbdmXwHopeYGl4BVi/pq1NiI66R6Jnq+tFWbR9n1AxvxKe5si2NPy+/iK6V6bgpy9FXt5vk2xxQkLSg6DSjuFlXksHxzrjgzfoz781hE3iUQKVTBD7Zt/IN2hKb0Tm22KBDXF9xB1MhXS8YskrXEp8wgLf5kK2+sjtZzYHAfsh15UlfpxJ+CvWg3657vRi6jf5jO/V+4BcSsTFk52TOaACMzH3i9/L65H2dWHfUBh28e5u3gFm8/tA2JBmCjEfRyDASX9B9Vr9lRP+DYWt6xYHr50Fr1ALS8a/n06smgO30gRfPh6au5Az9I9S8lOupHVT4Ar+ttzOpppoc90pSzZkeHTA6CORXhVdCNXdJ/OAcMBEcP/Pe+thaphH7bFfM7az/neB3+Ye/LADndh7lRWZ0Gx8B1CZnXOAq9uHBcWVSdhlTDN0cMu8Hxf4xTv7tmo++mYvu6nQHs9hh2/ee+exynSyOvfmxawD468uki1/niSN9dYDLulpHHjHJkdu+Bu2lJ9Yyz1t14j1uLIF/+fTNUFREcrenk+Q2BNg3w8OJ//rcA/oNueLmBpgfyiAcF77k78m5k391pU4MCWzUwMfQ89XOkAsw9tuPqbj3Vyjmc+njkkpPzpZHTg7vqT7915lzqH7kAxR8FgQcEHRwDgXefbjpYZH/quFB8am0fsKlfwvZ1AG5f9v1uWve7cbnnE+SbJXMGTXb29q6W3nTuu4IMIF/NGd/gKOZaPMpy8EaQcZuBzwGk2P1qVVoKfB39P2+rxy0Aq2nXDrzah1yg/2U6Fwi3AKeeKntFVb/z11MdvPRTv4E59TvN8lNxojyfmdY/R8o5Rfc6xaDgMsdAcE6T83Fn8PkxtuQzfIpR0zrXoHX+RpVnYnt5GOUIVqq/7tYbqsn+wt3Nbfzlb4OadsT2xFXbU7tpQ9U5M9y93Iaf/zaqbUfsz19pmdA/vqu3hc0Yw0/SJgZcvVr12/feacT7f+3P6o1owH96Pxg/eGLeEmd8WWo3742H5QdDn+wrvrLHFloX0xGSfTmaw/ClezGzN9WkGmGpbVdAcVOdqNfI/htPqZcD//j9zSrkODrxR2A3sgXen3Uiwci4+YVZvQZqgucuFZZbnO0U6dUdhbfCvRsLXjBU9EyP1OgDEZWb4nWwWb0O+Ni5MXwMijwC9vC/MFUR16sRbsP3HdeQE3CnmeEkFjz/D+CeR6/RyHqn2tJQNBIuzz2QDrXCiish113PHKZXo13vTO6DhfY9PyMPtex23iXNhviFiRcYm7n3TP69h/yMyKXi+93cA6d5G1QXdNkseRF0uATLZSZllSQjMqhjp0DOGPtOVeUaVAZdOMatYK/PbEhCDwLTg+CKgclNu+s2FayIh13EG3zs42mgP/ueXjvS9iNUBO1aLmwqXbUFEivCGjnSnV4BncFtpsIbdqKv82360UrkcpX4I3uPveGZwX9aLBeE2EVt92pah3ph1ZLVs6FQBXrtocVdzo7ikVxOJf/mJEBfbN4fz4xmBFFx2XAOdDyHJ+kE3KP4xZuoCsp0aRUzf2Gem1zjbR1agKymqZ7+col5/VdUfRKuOQ2g4HxpCpxbF4tHCvY8pg0A033Ap/eUYUnfy/perfFjZvDcrCDTB76qxcxyZl3vobhoYVgU06cowUou+n7elp+4u8xw7yBxSKppHTC2c9ffUdt4EWlHDj7Rv453irvwzrXiVawf2uAOZF0Ho1zw6v1GgmGhEm7bEvwOOQjnhz1Pbtg1DdO6kHNM2jsomOFr1r0k2HCN4Vl34x2cDVAQxjtHr0JOTM39+NdjI4NtcBpcnbo3Bp7BY3cD8x43RrmjowEtKBy2WYnX+fP7ZZCsDi9nFDgA44l33XN+5diJhWvLhHza4cENkcliK8XmMJMBZr+tgrf0JfOY9foSvPYv0BEzttjH1JzJYsVyUnfK9wEVMK3bCm5MneAdwWXrf5hZHW31zsbXBg3I+iExMFXyy3c+Ww+TRscW+IhmCwwN8J0XH51YIXVM34+Ksc7W+J2RPXAZVOwAAvc118l3ORrQQyK83zIOefO9QS6UW4dXyGoqMGFzl/5/rs30kCPY7sXLk9zxD/x+Vy+aD7fJyAfwVpyRLKgr+XKnpAS6hKQUJTG6nc541RxCdsDdDwx+ZOTQW1JP5iJF0PEBi24wpzPiJ6RHxzzxI6DnZpakIWXo5SHTKx4WnKUpYvP9rswq1D+nUeofF6PyD2b454YZDj9acYsu6HHjHTjw/2QNCLJtFsC7Ogw/Mi3eL3V4QFsHfk5Pv8bYiHrTV1tZfXF0HF4G3M5U7spvlCEq9PoLk/OMmBBGnqIiBc6G20vJaeCZ2paVV8ciAq2PWZSHL5YCGZRxgLUnp2aN6QE5MNV3y92LSuODsv2hVtqQgm5gwCyz3twF2W9GSzkVK/sg2gnk+EfDB7m1AOK8NH+1wnxCeLwNr40RV5VkF88RlLNl23fnGhU/YmXs2bYO2gLd2Cf9nV1pOhu1ENEnHnTZpFy3fCekXaHXFran6J3le4HlnW5YVJfG7oM3Q38hXmpX3Ak5FOuVmA/pPW2t/CyIutVF3Htu+dhP9Peaia4108wQJBAtVjbkGWP7TgPR/pUBW4PLYmlQA7YtvCIIfsJyD1+yqttpfgITylmzNQLqpIfMWXpf+JBVtmBzN+REMUt5T+XNLwePIDKorkQo2/z1BT0D3pXn1Q9vQ+O184F/fv7iRJZlt0N/af62vHNoEXxWEfWYs9UlrAtyicxMw8RZqQS8CT5Yb7DLouOafb+Q3WPFPnz/1n5kN3LwIb/VLTkMizeLYG5bd36LnRuJBCA1cigAis1iRgObAcaCv1zSlWQ45PW308E7Bt6Qy9oD+5OcLqYF/FJsEtjyitQ/FL0qGEqVWCWClILmEnpcbN+Got8uVCBy6GAZP2fLt2f0JLh0g+sQbTN9v8+kp1wBmR2KTQKhYXAMFrukD4pQBb6mH0a3etR6o4Ns10z7b+cc/qb50svXqMRQB+IeZt4EeMv8o6FCheNebyQSuv50uPCJYYTV0lejHvULvPagvpfMJYRPwaq7ogIzWatDmQT1g9n7LcaXYDAE2gEoYDBOAB9AB8wY/78VaAfosbwGXMyo3QvSibWurlyATrzrO/2f7dlJnBVquHBEk1r4XaMDVFRIQzryUQ8ZyEQMcWQhGznIY9xmg6F+nZ9Wd4t4df6FlqN9T+Mpq/4uduTW9VfxfMddAgvZ8PdNRseFS5tsM45GKEADJmwuq9Q//Y6owz2eQB0XeC5sWr/27oowUvOoMcAutbIy/s+3ru21ljVtj9A6CeRjw7MagXy9Zr9eQ79jeNdZoE10L5Ka6tY2qKzHuYylkd+vLKrZMBsKnbp+irv3YmCvG/XW/SAa/Q4WlGsT714YjhzvygYtrKnOpt0x8hfZwd4iZWcapXaP6s2LhR6T4uNfgTWV0t2N42liYqxk939yzPSvtL1mW/qwl1kTidEVGPN5Rbq4X02nVa6Ns/9PSnsXyoH4TmTGXPnzftaPv+p6eXa48f6wxz6U8f7PsAEB2t4121oKG1+ux28MkzkAeO8T3wkAPofWfvPXin81i9B5ARgTDGACZrf/zwJgsSEa/+UeA6A3nQx1XRyU5iGn34G+pU7mS+5ZwL3v5d4cBOUU99EXC3qSwvzo1v1ZR06VOs/WL+Zkvc1CfvGAPAINoXk10XjaM87CpgdZxzczMJ/at08vr9N9jewuqp5UYvV9fFNZQ/0wcc9S2ZfCMldgttaneK8i8/jkSo7JBWWZxy43Kmi1tqekzsUgz/xRUubVs1wuXB48OA1VpZ/MXsa7F4kYchlZZU3OlzlsZLT5Mwqqse+tX5tDne0Kkm5Uqh7AstUSYaD2dg2FexYHSYmjFsg2WSa7ZIlwECbCU49Kj1UPghnCppTsPiAIcJ3dDEnQQABWAA28BZ2Xc/h8CCiZALgS4PpCWBIALs7pizC1aXy0L42D3ZJuF3ffKwehD/jIs16RfNkyZVEQWWKRxaqHSIA8wTxX+sBB5FI5SW8DclNri50CVqbXYbp8m6JO42ToPCkaFDJIdLLcyWTqcFK0dCQ6sqA3NY/cEjgtW8qVu8Gka5xgIZFI4XpunBUWSieoYr1knc7J9c2XyXlqOrl5WWDIUCn04SdcVOUsNPGDFkGA+hWoW9OcAA==) + format('woff2'); + unicode-range: U+0370-03FF; +} +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, + U+01AF-01B0, U+1EA0-1EF9, U+20AB; +} +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,d09GMgABAAAAAANUAA4AAAAABbwAAAMBAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoI0ghgLEAABNgIkAxwEIAWDMgcgG5sECK4GbGM62A+KOMNGmZWUwcdhKI9l4Sh/WwYP/3af9w0W4ERa2bOg405uoSptTooGKkF8HniO5b+Iojvye4dReBbNtVHwcLQTG2gBzQfYOqjJ/XYU/jItwgxa4I3czM4Fj9LAAnlHz+dzgSO71Jqn2QML8H66dROj0qAFLYnRhtm0b89/erW/v8l/LA6we9gCizDBtQzSf4EtkcwDT6RtmgYEQXnDKGQslZyX/CkQSFgBAE4ERggEAgmwACwQgADMsONAJKVkFWEBgAJgwMz1NlLWec3G+jtZu+rXO1i7rx/sZi0AEwB5WVY28FUE1CORQAjvtSPftAwCQQjGAbTUfm4qwrvbNmDEf5pjR4JoxElAiYiMWjQyIAEy4EBGAA4UNKCgIMC7a5Cej2sCAA+SMEEyYA2AMQBWgCmQAObACrAAQAUAJCSDMEDmo7CztfXoRGu7SUeVdbvosOq6N6PHnZ2yf9l3eXPj/q2qXdkjBL+qrix1cYsqzItOvXfRPaMXkUvPeFWoxr7tZB8gfxIhMauBapmSUhO8d3O8wUt0MoI7UAxLzt0/zhCwJnVHrsPYXenm8suPeLYORWqn/3wwK6Qp+frDiYGvxHSXFzoXfpihfmlODl9oFbOqKa8nXbZgd6axNivh4JS8xEZKChij/nuDBPx/MrxQA/WBACCtK44947xa66g/k0YcALjxaesDuBuQP/7x/3bTwmQACVMkAAQYd/7HYBqK1H97hriqWIzlN7cD8Qu1mY6Ql7eR9v8qAcCY/apKqAgArEBCCmOEAExoJiOUENTgBAI3NSBhwSjIbLboV0Blo3PIiN06hxVFfmrr0WtMvzYtWg3SBPDjz58mVY8eLTrpNOm6NfKhidepk6ZAbgbym+oG6PoN0zXxUaBHgx6Demiy6Zq0GdIl3aB6ndo04r7WvSV0/Qa0Nd2+yKcNFCrSvh/6dNKO3xV33aBeEXxNZKTyQUaverfOR49+LZno1XUboBt4oSzpEiXLUSjZDgF8+JHBMIY0KQAA) + format('woff2'); + unicode-range: U+1F00-1FFF; +} +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0370-03FF; +} +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, + U+01AF-01B0, U+1EA0-1EF9, U+20AB; +} +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { + font-family: Roboto; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,d09GMgABAAAAAALsAA4AAAAABWAAAAKbAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoIYgXsLEAABNgIkAxwEIAWCdAcgG0AEAB6HcYyyEjO2Dy0eKLv4XvfsrGs+wIhEBOHOERRRTI2158fc/aln0WYmSJq8uTRSIgUyIVMqpfa/7uYHCqzWDuHREj0f5UuuL+ZAokTaYgiIs5sF5aUutjO7QhBlgMaYvCAIIqqoCggoq0+HjRlX70MGclDLyR3Z8fb0q/ectzCv30obmLesvO5hBhRhcp7kToaLpaRXpL0htKmb5C3rIgzUIwA1fnqrhHSbqXhA3v+sK1wRtcWuhdyg9E5tGXERkaAhroCGeNqCnJxAm6m1Sb58SICvFhXFWnVAAWQoYRjYADJUQQqIYm0uSZKkfpYv1sv21dm9b7kWbV6i3BQ2Z/sOf/hl+ezXH88LRz75pnLuq4/MO/Zx+eyHc3x9VDn3yfx9n1ILyusq3ps75y90fVZ657PJ2iXgF+odHbvzv7Lrm+uTsPR0WJqYcelN7180rHDDnbeWbrx0QHht49uXjCzffOsd5RsvGvHe4yF5o+Ej97/ZMP62+Z+3Wz/08CtZ/FezhpdvG/nb6PMhC9vNvHFx3Du9X47etewROuONg4L0v2eI+L9X7dt0evq+gNihfvWttiuWK4f8VmxWBM/+WK8b8F6Y9evfLf57r9SjuA2URBAobPm/Smni3y3+n1TqgQEACsl5awAI/5AetjNp65A+/38vDAUXaayPL4CMKHYkEFC0DlfIlbAMegyqlmGU2eSTO58TTHX2xLyWvlczc/wY7eDo5WxlYenKyMvNg9Go5MAatqis2Jty2oytLaPupFxOlsgFObsjM05dBxMHVwcMbeFma4xFh8jZxUr2e62Th09I7Bd96I2RI3gzYzqKcsHjqZzGjsamlojTwdmCy9bKFNm7IBcudRU5BU09BQ5eTm5coMaMAw==) + format('woff2'); + unicode-range: U+1F00-1FFF; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0370-03FF; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, + U+01AF-01B0, U+1EA0-1EF9, U+20AB; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,d09GMgABAAAAAAMAAA4AAAAABWwAAAKuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoIYgXkLEAABNgIkAxwEIAWDAAcgG0oEAB6D426JQgSiDJGrY+EepR5ejwf4/fWd+/C1EBKYZDS7sRFxHTf9uCJn/m9Of4qsOwRQBbqEex0QSbKziM9Pj42dA85/tYTLU84Cj+f+PIAlq3AtV5GCrQWUqr11TNFedSEUjKs7rSju46fX7RWCSHFAeYQcQRBEKIqiAgIKlGZBdO5a3w4akEBWj6orkgSzThrq5iF0WjfiKGe7e/0dAHkwOR8nW+GblHR72hyEGmzEl02NcDPu9oBKt35NVVBcoyEuIJNhau72SE3EHkhapkdqCiZGhBhliQWUJVETSCQCNfr8o/boWoBjI3miLHqQC4ojH22AaUBxFAUpIBJlJeIVGIvLFI6PlFi4hGYVs0brZ4ZZlT0rbz1SLT+50xlW3X269vh2x+CpO/n7bw02ebvIys0wMkpteMHUIq4PGfxCRBdKjxXGaDRIc42rK+a/qgeebsfBvjGMiQ14cnJjW8fSe6fHlr2NIrgbeH2jS+k9X+md9WJP/5IvZ8LRg1cQ3gz+dJMePnr2/6ZSiy3c9rHc87Zj4tqOx0WLe1U0VR2OOEt9kq4gV/r/NBEyVbPvpL70poCoTunu3LVVZ4nW3xWV8gAKP5VqBMD10Pruq+7/52x5c4B8EQjkzs5oyJ/1JzxT0mgEACA3XjUZACFDut7UuAEqPZepikCuTcprJBVAcSJREzIBeaYSC4kSGAs2BJU5IFLcQjt+sxNAqr55kwOx947iBrvVCRYwpBuDQusVLFWyFCmCVcEwCg8JVsPPK1GwEjxesNZJv6dyHtID6dYP8UnUCvPAemHBGiA+jD6CVgilD8+tWyfSPRiYXwVJDNNkydPUzvrRmeBZvFdArqSTDSCJ3ALcvDp0JBHWjTK8pb0Qvx7N35CkXo0yFRq1qZAgVaJkYiA7H3AA) + format('woff2'); + unicode-range: U+1F00-1FFF; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0370-03FF; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, + U+01AF-01B0, U+1EA0-1EF9, U+20AB; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,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) + format('woff2'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { + font-family: Roboto; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(data:font/woff2;base64,d09GMgABAAAAACtAAA4AAAAAVDQAACrqAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmQbmh4chV4GYACDIBEMCvEg2jgLhAoAATYCJAOIEAQgBYMAByAbzUVFB3LGOAA2hoZ6FOV6NB5F6aCsCf6vE7gxBPND66LCKDAU4igzi9aJiBMRT1JycnUrasRHaHnjqSMIxc/03DZoXwLEnmJ7dL/z6jNwnI+ay8P3es//OkpuHj5Ywub0gGpWVvYP/Nx6fwUtFQZGnlIxBEeOyJyUuFE5RktLtFQ4EBSbLPMUC5BS6YGRRzqtHYFhZteKH6gCpKLEXcmUOGw6YME0ktNJl6J5wKIhqK/6/1KWjiDBnwD4h7y9bcsxsjDhALi7QAL7VpoT8D4XdZIIKXcuWw9F68sxDbi0zu52vm43+Z8U1IwC1rspzcJOAT8EShAAVzbLdPtGWycw6TnUmhVekD2FBr3LQeLUQbTbI91qdnbFD9q7J93TSk+Ch9OZtDJIDxRRZiDev3fVvfkBIwNwChTZoZ1xkDhz5jhEChIHYeLQmYk+75Ezh6ElfGQ1/I01gXIKFuwUhIqdQm0Uc1zOPj0SExGJ/M0vm2d6HRlEgqQSJEixe1wff2trjULXjJuxQk0EXrcMJ15gLi0qIdDLLy4JCicAW0JhdZIqhBYniHDhEPHiIRIlQtDQIFKlQqTLhKjXBGXAdwgECpgGzAQBEkQ4BJjihPMw629oYAGn9gsP9oNTBwV7XoZTh7uSA+AU5LADggOAC4ITH0ACMpDxaAXxTwJS+wYG2LiLGXqH3o7aXR/UB5PBZ3Dqynqn3mPw6Uk9uU/ry/pH/ewQ0C/2a0PjBDXZe+I1tEf3rkn+pH64NxkkMDf0TvYUBvsM6mhrOKHVZ0DA0IhWKuBeS++7gxoWhwHDw1O2HSRk45vF/vGxJYd0Zv3ji6nR0gth4Oc+RWmvOH1Zs+3FPoKn2yolkjHtylIyvF78rVHxHcHYRqxx/NKrVhV0Wd9g6bb4hbUCzGa66J3Gkm/1Ne8bII7sx3YWzSiL3VWGreob8hl3YGuLpf88ac+VFkAs94nIq/rwhYP1uI+9Krv6OlJ9rVeFG08Mt9g2DkB8wh3CE/PZWBANLWUmeSykZFP7m9Hiiq4G3wR6v+XAOOIatzsDmhF26MDU8RWYGzjmOalz89U+/gUjt7CuGcKjSZ/sIQVLtR5n/Zzyt7u1L+LZwUxrE+a5YAyOatS+A/qUncR42TN0Tnpy1YvRm0eB92oiqbVkxk9Iji9CjS+kTTE0u6e6QSlN7xm1oeJNJHhkFW30og+B2xe/uEIG62jWtdxY01jj/HlE1tOW6i5Lsm91hZ4F4a4aZfx8cyc6MHDYsON10mlnnHWOBEkyZMmRpwhPmQpVl+jSY8CYKTPmrNiwY8+Rs0JFSpQaMGjIsBGjxoybMGnKtOdeeOl/r7yzbMWqNRs2bdm2Y9c33/3w0y8IxRiEgcdH2SkqBLwjAMEbzCRxjZt48qadDALxkKSIj1a8R4wvdAx0QR/MwdLZKlbYxmd2scbRWObEigVlrMKlwQiGYBhGYBTGpPe99wHmYQEW4aO01BfLsAKrsAabsAXbsAO7EqPP9mAfvkrfWvO9gLCPPrark1BscIof/4elGB/gY4lyrFOJd97BMCNMs40BZu/dWcwwMcgqHrOPJ/zDT1QEiA8NtGiVGtUwOPBRw70uLHLFCzgA7PCFc7rovgxHPDYpZXgNc/AG3gYLwuHCFrYs5kGMNTqALuiDJY5gmZUV7lmRoARK2RKwDCuwytaQfuDyE345I4qiCBtirNMx0AV9sIRMWIJlWIFVWOsdQw8fG9LscQ+1mJjHYpMVshlsS7ANO7AbjMUVVDxQDGVQgZPDOqzDOqzDukwwL2IU0QFd0LfMI4iluluHEHtsMju25LAMK7AKa9JmQbZgG3Zgd9PRjsdNNrHFPj5A44gVarHHdbBQ9GJztj5DxK8KnFhjMe4OzpiJnOltLKt4xaZi1MX+0S4qpk69V6FFn9ToVR7P4uS9jKRAdkAPx/B9UPjgEjAVggsKz3e0k87COE8WC0Wq07sWImG6OMigHmLKwmFWjrGrxzlwckJaPa1QmTMq/hU3YI2EDbssffOLPRR5DxGMYESb6AWUU4Sdxu0MxFlY4lhJYCNJgAyELD6KOChhhSdCmZCLuKhgp+oALTjamBAn/4wdc8McMxjmQLPAxAovOywc8HDEwgmntMX0UbcFFTNFP/LunTJlI4wmeqkiBo1BGf+N24RpWM+9gnjtLVbvrLJ77yOcpcpv2RpmG58Ym3ahPxCx+PEUjDPc4X7w1Rc3gVA7voWjjfJfgiJOkAwUOSgKkzPCjjUs4Q9vDoQtXCO8owuh7wuJLehgNpolENbY2U5shDeYhXlzSARKBpRMGyxHFLhOIFTCTfgIN+HL8umHC4DgOCpOgiIshA2YOtYgQRK0zH4MX2EJc5z7T5LoRgJIAAm4+mCs+x8Z6A+0f7zTAzIOn3m7wnVGypwbDz9G8Qf64cfd/eD2t1wwPDi6keq/aeOjWGUrUqURXY9eime9Mg5wYFpnVy0xRGA9MwtbeEMzNTFYPzdgMmrLdazwb7uV4T7bb6sfLAAkzOUFDhOWC6B45VRSIQfBEiAsBI1dAFIXDIh30rCIOCq+778EZyzKxjpm/QXxT1OOxYQZS4P0zZg9mQC6Ebdv7W3RiqpGtEIgaXFBCZj/8WmG0og9Fb1+++Ovfwh4PiEpE3EQSgl2Dz0iip8AQUKEFdWH8EEpgnk0bZQjrrsGXWT89eD5CCZQ8rFq16bVTXQdOt3SpRtKBFa3RbiK7I4ed91z3wMIRC4UD35Q/JChoPA5BFwVWCHYhzc9ngB3WnLCMRokNOS8Jv5q1Z2P637mEVOnh6HpMVQPVXiT6DfRIJlAILePrjenPVjQbm0yIM3Fq8qHvDKANRE4GywENoO5HywbbWVMBAKIPx38BQf2JRnEIHcB6qqNTowY9KOQ+GwhIvyYdPlXq40RYDED08Wo0qrNY8NmrNjyD1kmmecHeTjP5bdzo8QGsalis4mJiB0WOyZ2SkxGDC+mKUYWaz366DGev//+/R//wHRiqlRr067XiFmrtodUMjPcb1YxIbGDRywtpnRvpfgaS45GP/7oAwqIPyDswo+X/h/9v/v/rs+z5lPTRyRhPlaMSGFG5r04Ev/w7cO57/OQFu0QG/eq3Os7LI9U++P47PEGPPth/OEnSPTanDfeeocqyXsfzFuw6COa5B/ML4kUqRj27PvqmzTfIVCYoeKfGQGpAvIE+AtMfwPMvjpAXRzkrwGawvP26COw0JBGFAcUQ/9LkdrAlYEW60BEjSwCKJWpAqWTZkI1tY40lMc9Yez7jKgoAGlnBN2ITBUpEGFE+uOIrIahduptmF1s9hW1YLKQv8bkqeUVYwO0aRZ4RkqBpXhT+9kVhgia3QyrodFEdeQE0NR+nX8yy8rVde0oqZu1hskosly4UnJRBhOwtuLLbCMezqxC0xPAqhaTJzPOw44ZRSeYfn5L+XazSGPgEyLziLl2I0YCVcfkiL5ZphQzLT8+EUn8vBmvAuoj5mKY+NpZ1EYiohJEOCTGBOMrLpgCmFDo0TAfGA2EB04lavx7Ef99eTHKc4yARWeCiYoyLViklAv30KWtfeI0Pl1DBLXrRz3yCdxF3KAhciaVX9lMAyCxYoGZYE4i5Q+07FMLhEqAUqZCOVMlWfy5LmAuYDYJgKCCePxJ03mCPHvb9NkMMw0qgY+R+2bovdrSEoz0y7vlVpH2n5ZdkaQYPPc/nZryHBhn7UpgytzTy2J0VS+Hab6o/brZcFD9Z9OqXDK8HWwNqLdjNvt60PNZCWmhLUHZ1Pdr+6p0SWEHvB0V0II+MzXIxMuMeR3AQUO0BKjwtLZ+30HgYXsTjtPda7Co1ZwoPu30NHc9pvfouehcM5Yn/HATkUmghXbHZ4qU+/R43DWd3j25iDR7/D6tIjwrP2GBJemvhPUHt7XhYKdGOWmRcqEHwhFyB7os84Qe5lFIcEp840mCy22oiu1mN5ZYrjcRqNYBjw6AOi6OigRY8JrtOrJbeAxiEcHEO+all22NkAToavSCiek2qcyY3+hbM6jba9OMSj86XNnKfH5Rl+XWZ+5j8z9ZPKMaXWl3am5xKSpN9wfDf98Rd3qSKZbn1AaxKhbuNOeW8s/YuH2uLteYLy/7kLHr2hisQucSlEv1JSHSfBOT1huc3J07lifWuGvGqdxxcJ0p5xyTB7vcZfBy9yCUqmRL8BjdKUXkeC6p0WRquDwm4fWH2qpygok6E8sdOc7EMasY7XGEyfrWZMaktTs5bhP/l6r9wQ8Xl4zOKmQoSVg8Ua+h3XybZMWX3rNro7cvHOj8oWVMKOkCpGdCntuamdwuayVac4jdyhr11FO2sC3hbm7k22RoUkN3PvTN06wiTBQz9Qq7Kb55XqjpTM6ncjFXYX2MIgfdRO10zV3AHbhbMMYkJCumGFnFEoiRe7igGcZrtsu4r7pf+MmC+i2CymcuY6UojqXMa0njFKepxXTWnHLgVn3KoEQ7Hm6tTDtpa0O2O2EujBtnjfPoUowiEzVQMKr4K3rUJwBXtqborN5PNiUl/p4KKqEmApXRhlD/EXIjSGCDaUdArfin/YAsCvhHOVo4HDjoanp1DWRS2Kb9Vqy1QCd7AL/HxrYHr/kkiaDRsTuTWaYZHahPkCm1q3MdXeasbaqVlmmPS7rDPHLjEGy57TAS9iE4wzXthq01Rtsa9odVJt6eO2bvOFyQyTaNBAIhq82zSKCT/lKxrwznvYtANn8ZAJectCw1qYWTZJITG/fJjREL66lwmFPeQc89GWsXXVX6RlEHQaJKqm8IO9AVJ28PIQtQWKgNmolzKayMWOGejVjhuVRZiA92nlxH5KYedFY1kmVIwhDbNaZYfhOxL5JOtMMlKjS9YWD4nOhr2qGFScHTd1n6U8FHID/TQ6+YRgmDZ0TtB1WKpoGGUSZNw6RMcycprwqtI0KllQU0nYQU2HTnIIHmqt+kRhNd4hTAPBYgh+lXwl6varl5QcxjVXxiGvPGDI1TC0ls5wFnFLYJoi4EyNYN19uYzy8uy63D1ZWkJelLiDLCGm1RJLrPSflFtyE8B+Uln6Pdge6YQTMzLxyzsKnQomrFKT8Iv8lOwzcP+9dUjwtGYtZXEYdk1PRtLf6V7cDEEv+LJsWfcVrxafsWk1OF50n/kEXMq3aRnRUnIhpYFi1kz0XMwIpUPDaK+emdhx/ovqLVQYiuhh3ioNuMOkYAXfOEJWldejZDpfdKUlCnx0Zh0EBECa8NZU/iTarvXd9aojaGk/1gb2J29/T+Li5gEgmo+TMeBCoMohS5zXcdzWIkp5Mt6g8WWsj9KdM8QWG7C2NwYlyfne/u9Hce0VUYFtIQY7Qa4bjQebDGoghI1D6mhUI/SshZY3jELMtfciLNbJDiZF6lvnyx1WWOHrpnG3EJLiDi+yE2Ik3xKYJWxFTuztQD1ijFxT+UP5rF6d9NRW1fw3UQWjt4jTCR2Bw7OV5Pi4rUHt7Mcbaz74QU2wcKRrAEO0ZUtfRqBPoaYULZGdOfK8BXFW/VHyH/cR5NtTQb+MjXyn5N5G29/6C1nAAlflM7Nuf9RR/3pd7intjF4SDw2bBEpVw4vx10IxzRtN2ZmrcbSkihuIcDC13qD8nBfbTQRlCOD/cvvUZTOjGMYZrnOWUeJhy/RrL2oxgxb3GKz3XGpmzcjW2aRNlRKeqc43AcJXH2stqyeJKmH/8h/HaHkoRBQaMAS+SSeAWue/Wnn648Hb5I+FlOgUCUpZ7U/w6eJoECQfoT2iV4YDhUQur/0jHpk4OqWXHIIifNT5Vb1svpAWkGXM3xFBcSvFAYYg5V4H2YFv+Z5B/p7zC7lX4W3xNs0UwfOg5CoX7Rg8YdGdo1QskGd0jNjtEqLaB83P2nL7g/vdp7I+E2u0uq0wrZYgv9WI1GHFPefaIhuvUJQkYDF0VFSVcv7ggoKRB1qb0Bt1zosYR09vbzKae5Ybp4Xr+4kW5utQKrpMio5DasbDj4wt242crN1bh3Fb+2JjVQFObLPz7nQUYqyvJywC8brZNrUfv1Yy9aeeeq3rYJPdwb3I0JynZ1ueztak3y+beeY+zuJZdk1zT9pIdnoLJ/iP/51jAjJiaVHBziDzjZImpTY1pGY2OqTmJjQ1pye21GE1bLwOKSqr6Frq6WgWWMnhXx6HFJWltdckprXSYxob5RqLk+tQmjaWSlStAx09fXNjRXUTUw1/vDiCKeJwdHEcEyxdO/sfqqBUm9QLtlZpheOX4vzd6+yEffjSikfzE07xlHdMuL3yKmLqVkOmpp4VgkyVQlZDnUjuIZH43kNVt4xQTor720UrI0USeaOwNXd6IwrRJzF2KNVyMrtrST1CQyM0jtt5lEwFKiea44UoKWpLatE1EGJpfeh5d9M6MRJGgFV9vfSgsKFI5mpn6RSI5V2VKOpTHNAN/ApKS1fOMFMqf1LU7HM8FyLXLWIyzZvreOdAjkeMK5j0ej3kd1rHfEvI8pWIcKYoKhkt05Gmg9fAPt4OvzHMyZOQY5gPefpq4BXklXT1NNX5esawC9UY+Pv7zwGNSPeeI/q26vb8qjJH/jPyvtbH2WQknu8k4FPooIDexCPdabvDISQQnsQQ3Cv91rPMKnFGaPAOFZwxKXD9mmzNiHHOseEp8VzUgKez5PyXu+9/yBf8RmeqF7VC0IuRPzAyHhip+PX3CQW3SQPSMo5M5zL+rc97kBt6hWt/9Cz0TdjBhkX33zlO3DPYZLXKj/lfjQ4KvJkbQswEszdQ90azI0Kbi80xqvfp1GN0W7HIG2J0bvOJ9qnrb3UIqdXWFZeP+v+zCKW2S9+4XDNzLIIyiqMi0ptSRc3f6YGcjz3xk7PIFivBYYIUfc7nt/4P/3GJ7nc5xqWPNYcofTl9smVNvDeno3kh+9iq5mjq0DDc+zJzzP/juhN3YGdoBwQvKyf72TxBXZiDvkXvT8q9eYhceUyLuBUo4SfvWX7229npzaes0hY+oXR30ek+h/OSr2bUTk4d/O/hH3LpM9Pfwo9/woILXoGh5X0/uR/U321U8v4jPfIkRezTT3chfUobHjL1HLo284dWPNj+k6VycOPI1qpaZGN4BciOEHhqwppU/WlMwAVQa707hTsNOYE3yK9F3ckkfIffIIeQscW5LUyvsfFEYRnRzc7Kx8XMwZCH19amBsfuJOTWF5RJiaHpLFkFfW1blEKGZB+zeS31Mc2493Yo+6LxZL69P09XKvb3GPHrgRg+2/FmARd9ZKTUaaZyjJK2EO28YVpJpMGBQf6AhmXmfbTnM43D1jcfv0zsmUkWlJ37+XX9pNOD5lPcnG/a4rbufrD6+5jpJLT8jsyboZpvLOTofMzq/zSASmz8JFKXNZihnTMU/6x2MUOrP74fqn9pAPWDrjGzI06HG50vs/ypE4etQU7s0+f/aIcGgSxffjKubC3e8hVJKbX4Rzwlcw6pjjX/sP86OduTZLAjWaMp2jxNV0a+ckVnDzN3dZbtq1Ovo2sha/3vitpqAgibdUzmuyve9cS43ypO5MrZJk0xCrx5JI3cjz78ia6cbUj0FQDU6z6r0/3gNYesdkV64VqHT66vn+ASy9fLKqQw+M4aGRl6Bv5x3huiJZ1FSwnnKwKOPQ1sGF72dxTM30PdR60PowpqPf1PrQ+d4zYBoHv5PTk/l0++OU7vQbKn/PZJkQTypb/OcJZv/l0rflqd/kYLK/VxgtFOTIte3DkzajJb216Y/0Qerxgf/OQ/ZYwXju2/XBoSG6iKaDiKwDkd3654XiRZbcukWeuwrFzQvoCaZB8OdMPgvLaSfOdHFw/ALTxc6Xeeo8rbc6+FqvX4JZsxfXtT5314OnuYAAz39jdm8jjbU9gHy22L6HrW/s+vdV9sFDfD42F/YO/3nyUmjjz/lxyeTMmLCQrIxoRAFMcztnEsQpNj/6a/Lk9ia16ewzHV00+A/m650/jTXBnyzXe1gamvKaJUWk6Dca/OZeeJmbMRgtq+3EcUDlFyYuKy6IQo1NRNhA8UmoC83b2debMBw1Rj/8cbloIzB5OuZ38LW4pKgUX2eTPJK5x1Scc33QbYGXWxXM5Nyp1D9RNcnFVCoJ9DFLw0u/lvonE0H/BX1q7Qznt58nWTcmf0/n5hVnn5AdhvyLgieuCogN0ffF6uj8YFLtw4nR+cWPpe9yW5zm7jrNmP2X2y/OE9rcHtrP4UzeDSmOE3ee9L07rcivxH+q/13PkxMQ8MeoQ+hwYpHQX6HDeUXCED/GOn6xVoKPsD55pGopOPrqbB3gdnrgYREwfXQzIBs8vX2qu/ATwGtPCTB9dOvDBsDt9BCIbl/fMTl97mXL2WoKlM5+XPC4AMSufzLOIT47oMepWseFNdZM3U1tg54fC4i6X8zRw8Xc14zAsKWUjFtHP1p4hGpdyz1jxY1q14nR+jmZmJzsaKXtYAYax3h+z58deuSbwkZ+CzhgiPtEdg4vnGTexdEjb4ZUXEp9RMioDI5sQlpAsc0+1BdtuIz2oLSPeVI+spxEC39jOrPUtzuPvb2MdggJdQiJbYa20/SYVjA68XNVfKDVN/QcA3Dwli3QL/H2o89Suzt1MT2UAk3qtHp8QUjsPbDhXT18bPfwjai/C5np77aFUW4DrEllpaENPrSEKILLKxKrRqVHRDpX1AwPU/iVKHhKq+uqc+8aGegiELmxD0Pl2m+5vO16SwPTE7/Xzw/e9Y1j9Xsj/IJ5fyF00Q1vHJwTSK0NT0+I1fUh33y0fWFnv4Z6LyRPO/qtZkReGPUhCAwMhqTetsOkDTDuBbk4OOUS47EMwAEDYhl4BiKkqK1LJeoqKhB1qNo6IFiLL6mvba/UmO21kQxHJdbwfVh4M3M5wJVP7yH6TudMTuT0PwgRhtg3/+sEAnx4XNAV6vBr4zpK3ctb7UNI7wij19vW2cfcx4aPCMuMUcyjR7kXQ7gYeOBfwuOiQrMHzLAJE4yH3jZunnlEKoqBB6NTldF/P6bkv+ESZl1jror4tZR6fZlH8u8uc0Pqg68pj+/WZjwOD01/ABoonl8fz/V2ksgIA7Bz8yz+pPie4flTuB3sjbiHYQWEiHm16OvkhHtgdPLv6tnhbt8YDtIrwM4xfvsGNvd/Et/dr094QM7WiljXolwjU+/CfzIO32QalGKXGPg1bJh1RpnsIZg7qUbS+CZjdrrbuiHjy/3b/ZuPixna3g5WJh66qoqOKodUb1gZhVvn7nQNJs04X21wXcdYhjq4u7jrgMgLNabHXY8dVHGXzjU9MBMwFJLz7OzqZALJXhIpeojeNTXwkHFvuqVDJYaFgV+GHzKc5rhfgmT8M8Fa/G/QkDJu+bzBQ8aPrq58XBnloeI32hffLd4BeDHlzqnHZ3mC/f8rL69wWp7Q5WOHr/Zv3qFFlt67cW3I7Tx46uCgLmJ0zEFwUA4HsX2E/oDKEy9FB41LwMXbxQ3n/GKhr7Nv8TnqVte7m1IS6a0K2B+vFlrtWu0/vsD+aFUAC44GwD1qAJG5m4rov7Or3Zbdlp9n0H9vKkqkd0t3LN0dXejv7F8Yut+51CUNhgM89Ifvr+lFKRSnqIud0jDwtuhr6Z7L16PisxPVj57WMA+0gKaCJwgVhXBRFBSJemrqRD1FBaKeuhpRD4zabEO9scZL6OTByRzRz6Ofbx+dOPz24IuJI7ePLozOl4v2/I8uXcI5U8j2KwcUgEiPaYXflribyZcsemBMeNzM51yAPa6neqSUaWf8x6frq6979p19fJxsveJ9mHcURkBj9nJFzMR4eXRcYkYWLcW9dGjUrzYrNyMrM7skuLe/hJydl5mdd51UMd7nWpqWkZmtmBAZ5j/1kPz2IcVvatNv4gH5/UOy3wQc4zXGunBYjH0ukkiTKJS48PuCbKFsmmzRd6sxbkjmEF0WHV3+ugw6fSM9zTY097ttHEOfvx55NbMDAaWhKeEZTsaGSXb35O9LP/R3KPbvabQlSGkkezTzTKxss81PMkjZsWGRaU5mFqFWCd59QbZF0v4mfPqil09HmbpZ5ot3yn4IFqeYJrsA9oWVtLpGiIaGh4ZGiLrGqOTTZwxoLVoUtVcTHjzvutL+6HlFTWttQZmLvZmNg1dyCCXEO8ne1tbErY5aX3CQu7mmkqum9IhFyRGuegJPU+ERU66G8Xu2esNxusN9NJ+/NBNH+/t0Ru7bgnMvl4aBaVRIQoRvQENYm5dMLFlNR1qylcOnPS4ltTibetFV2MQ5/oz58cZUkj5YKkvZwMWjIaOYyBYNsHrFfN2mXBPK/C0wZ2daaCZc3EKLpoSqEg7KBNTgNK5zlfZVGaipG5YnZWk5qMhra+MdIBNk69hvVtwEIcogqbj8bWGJn39JyduyclKynKa2nKymPomo76NDhLMDidYj1tRXVM8Rz/BXvCd+mQ6aQkeJR/RBTJCXxjkLWbyamvw9cmNRclZp7NXLvp6uVulBV4Fr0N+U6nrcQlWScOr4PffayISsG2G+oTTp/DPXSPTorOTmmCv3TmnKXrw0fM4zCRyAVx74+cQHQEgTH4Vk2MSTGvFhPAz8B5ylPSkv3EC+fxewc0BlNllh/vPyBcvflaOApUPmGF7XkKZniFc21CWo6euCCqquQCTXt4VSiktR1xY/d0H7mDHmSBogJXfxoxK5ASG8wER2rXrUL/+4r16n8n5/ecXDgZp2jJuDv4mR3WVwMXFNu2Fs5ODnBZR8JFI2W8fIy9fWheTk6mBr4+s+CG/t5kz/9MJoT13JDXsHQyJLMN9XeUVtPWp5ynQ/6gElCBI4zb/eMT8mK0efH6JxFZ4YOsg7Vmgq5R0ukgwGl5XVlNXyCvB3LuUKAp4AZscWWfdnV22inl1BU/ZGf7+3xosCDd72zqFrHlbXGnJ3y3rhonKv/ox27BF3vJVF8qKrt0dM9f9dOZx3wlDOd4n0c1WIQhfa2ePeGB3h3mTsnmcAlr47t/I1Ojv+fXpiOAIRu6Yvlzam77+816Qq4qoZxE84fZ5g3pFnkqLf8qpn2KT5lI1k/0TMCXlXW0sNKS27tmSTZBOb6FFDU3sXkx70VzBy4fuTXkUweGFOo4/cLKvYaPn0mGjv5GVjH2yjvsOT+7tn6EMANYE2gjzfQH1JvcOcVlhOSyUp9enUaSnMXpKP68En48efDHojoU7aag5G0p2r7jGpB2IGD1/xCwfZk4J/mHPM6qNxSzkZaQvR0QspBUErU1HU3CA7ycbo8AmaoV/LlWjT6rN6/RtSdNqtUEO/ayvIv0TBKCatoSAmoyEgMGWkDTSCtfee733t0NTVD9bV09SQMs/Qx9TcxoNpaJPxSrq6Ja6LnxsiWR/VvpbjOTNQROihMxxtDxFzF47TUwW7cmWXXM+5LCu1rWKuz1dyOG1TJROZ8hg0gnm+LYr3d9R3zlTFOOsbQh9aPInbxdQn3A0hO5PAwDMgeBbc63nDG5hz89iRJnxrNjdrQWOkojn8lfDKH7Xqva8jedDdm13xCod9dfs03Jfv65gFu1PfOcXnfyTRCea3Hf3g5QZqPaWZNS27nGJ77ay2lFG5tuokIexbeltS29ePHOdRO8zNSXfDQ5N6eutpD8MoyXdVue5ZhqbwhnULBwaFg6zsF7aBgtL80j4OTt4s4Pc65xgb0RwV6uIq+26OieCakVAjiEsQLkmKq6q74e6AHOVTQEyOy+k4H+UWkVM64vlM850scFaqspU9ZSMB3PUikQZ2VFRW0Ys0cPaaBdY9qAHbBFROxd319pmF1rMRhhYxqLy8uSRw8JwBukoM+khBlY3N3YPL8lck3b8R6J6zzkQXTMzddvd8C8yJaOewMA/v0DC3k04hId7uYcGIAygLfb3WcCSJ9z2zAQ7canoir2Z/zYImv/+17IT8jQMe2LYbLUUBTmKiE6EH4+DkESakNbM1Tj52bex//xP5Q6IeFp30POpZWN3CXOOe6RHnAapJLJFk1cir5MCDqXFR1Kikg4GbD9LuU+5nOmeA6q4/6GkPB8zd0oMY3+4++xST3KNGwidGUyWCA91dXDVfdL2geYe4WqbgkieH3mCP/eipMWa+/q5w+2X/YISGBGCXGYvUZjLzg06OJktczTNoZNq0gPoMbM6NWBVwfimo0cyUGTOX9+zADGF7B/9aQfeUPU0vrv56QXZlGhIzwZP3n1KsrLODsh1B3N5gzG68eVzvFuY04VzF3VJ1Nvk4ClS/CGxSqSxvys6taKooKi9vy8mubK24x9ZECUZV9DSFBqKLge1JP/hXhJOSc6Fzzf0aL+Ywv+8PyXP3dl+Aa4xMwfp1C968OWJielJE2I2ijPjWRMTtLsY0mBKtqK6hrkGE48ePFeekOLG7amteptAyI0Ibimh5zfWlUk+3Vt8XNF5QO75yIidWTkNLngxtLWYtg2YxXdfD4DqBHCSfeDGOVBV+LaMm7HJc4sUgebJvCSU+oYQiekRu144gQfo32L3ebDVodVrC5QCsyKkp2sXQUqPDmmqo6dV1yHXl/9+8+gC8eVlhpm4tRse1dNQIsjIEQyUFZQ1QrTt7bOjs3rHBjQcDdOjMuN98P+LfB+tRTV/ur5l4/ntbm2xSR/sywCng+QXABDz/fhVTOM2psJLDARePxlv5JVeJmIHorWLxVyExxafjhbZ4PYvcqk6imGc/PQ8pvds21WVnZ6kPaC0ivtQo0YsqyN4kSbW2us/B4F1CQv4C8DqQMJAU5gqTLdFbNL1/UbI3eQr4TaYpoJ9EA7lKdJBvg3a4WaSLHWKneEvsIt0Wjsg/EEMOAin+56RybpAXdHLYHM10PMlfQympP/SagYOyDQ2F1Uk2NVJWskkkcloKT2Pxi5ydo2ltqCCUkpJDr0npT3KLXAjVjMJQCrnQa6HQnxRuhrRfsmnIzEnwogx5LcqQOVGGvHXJ+BLWUDIj3KISoYtKjR2FkUDEVaZGEK0DNLUBLHEDRDsatrgMzt4KViCd3CllWSRrEMMmKqKuvxqIugZBpCMa1rl4SYeT9MGa5/3wUeaJhDzmeBQEN4Ju5rFlB8N8NLktmhNLl7mxo4S9Q+3cnyTesDUiN0VbYuSybdiKvKRTDUc1ESCObtK6cvGyIThSRASIIBEShAVekdnIQe8hjM+nUVQbrg6Abtm5AT0+FYvnJ87nxn4qr6bEx56UUttaSytJpYkjFLe1Be281sJEeqe18775/9p9Fdm/FhUpCeZps/eWXxXLW50IQgXUCx3ApbHfziSAFXJpftTo9HNmbm49PRT52xizdsDQutvukZ8VV/WWds7KNWobGOtbqt3h81E61gbZg/xs60bMLHn7PIUHtHV7+UVUEM+LqPcun9d4sX5pg/JB3bxXWUTVYpYYBeluzagB+Qw8MRE9deeOx+58wXsmH7Q5+/O8Yv043MvDpaBiH5Ro935oB1FBRmIC9TPB7tTWrw7gQvZsX41J3JwT4/Fi2a9GzO3UNlsHriTf+ogukC5vP2SBfAieuCMd2H5Gi/MxbUg4KH+1r4xZm0oHcCHtuiFtUqh7fbODC1GQ2MfNyksKpZfMyu/EZh1Q9jIBabkKyAHl24C6dhu0Z/wwWUk7N7p4hgdSJf12RxST31mO8bPyYESXRx4B8nyz4N8eNnI+cPF3ZuEJAF75uZcE4NNh9t3PE/+/GBwmV4EBCiCB/vCRHWA4bOUe1fBaUy2Qarmch6iPa+e8gKxcxLMucqm7e7XNc2+HWCU7ZnlcXH7qTEklWik0U7+DuQoxX5RczkHdmK9DI5iCMchCPFBAC3zubcd8REJaJV65XaoRcuo5cWXJxf4M+2aOp7HLb0q8Gl5+pRnz7APBSO2mQ1ZXU6+40NhmwSLZIxvWLka78UM861L/ynpOr77Z76qC6HYBT89KsnE5W+cx1Q+ZZCnUYoPPd4W9HEaulEHn60lVC3Y1XlSVZFypedP1meeXLtRUZvWK8MwmOiPRvS9gscnovl6kq8LrNewX0pN51nflKP3chLkeK7TsE2i7jlacI2UZu7U1yzcpZpT2x0e0maLkw2g1mkft5tTKOVYCtvSflPqdXUni2GmyLjkyyyLr6i9W3tgbpYVVbNXjnL+6mDdNIZcKqvfllg1aWd21zMV/tuJKg9BffN86tlm23X9MOmveZYl6nxRfqybDRuVbx+XXVSldH53awLvm0KgpjGuhhCwiq+/i0ePZlxX5uVNYeSWi8oF0L0gAtEWUd5LiUy/39IBMmiZd+PgVUYTCTDpPSGn10nIwv+zLopS5kL+SqxmcGgv/mqiiNhKqD1zoj9OxAJMVOMzK4gB9UAA5MAZDQ75taPP6mq6aITCPpTLwpZZ99jHLuWYT3zJYd42ZpHlUCZGK0aJUNqH44yzaYhQF0TSH696eHXTJ3NVgSBaJLrcsT9yJt2TOFqMEC8W8IfDti29rfCb2b8/iKqm1S1QFxycjGgJSlUWAESwEYAaQoZaGgwATXtCQOgB7AukAhAinA1A4hTWi240YHIB1Co3hEFt3lZOFYS/sBQaFB/t6+5DFpCWlUkCMGKjg9/MM1g1wF2dqA/jFzbr5VZF5VsszOCSYx8EyC3TLQO4QM2wWfCn+Pcy7yfq53sBKCr7qywOcgPgcGQVlX80KpsNeQComB+ElEgm1xF2DMnNftfUUDwz2Zn5i7gMP8Myu4mSgq6FlZF74BRcxyZ8859XXowI=) + format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} + +/*!************************************************************************************************!*\ + !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/font/fira-code.css ***! + \************************************************************************************************/ +@font-face { + font-family: Fira Code; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(data:font/woff;base64,d09GRgABAAAAADhUAA8AAAAAVfwAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAAHIAAACmCwIKakdQT1MAAAHMAAAAIAAAACBEdkx1R1NVQgAAAewAAABAAAAAQodMa01PUy8yAAACLAAAAFQAAABgc+SqD1NUQVQAAAKAAAAAKgAAAC55kWzdY21hcAAAAqwAAAFAAAABxDJPUwdnYXNwAAAD7AAAAAgAAAAIAAAAEGdseWYAAAP0AAAvawAASRaIk5X9aGVhZAAAM2AAAAA2AAAANhL1JvtoaGVhAAAzmAAAAB8AAAAkAzn+dWhtdHgAADO4AAABdwAAA7RA9GIebG9jYQAANTAAAAHhAAAB5vJU4EVtYXhwAAA3FAAAABwAAAAgAWACg25hbWUAADcwAAABCwAAAkgzWFNlcG9zdAAAODwAAAAWAAAAIP+fADN42h3DsTFFUQAFwD0vhQwyKQCQAgARNAENKEAMAHQAEEEPQANK+Xf+7KyoNAPOVFq1F9GhS/QYFCNFjJkQU+bEQhFLRaxYExu2xI5dsedAHDkWp87FVRE37sRDEU9FvHgTH77ETxF//qWo0FgfaprNFW0AAAABAAAACgAcAB4AAURGTFQACAAEAAAAAP//AAAAAAAAeNpjYGRgYOBisGNwYGBzcfMJYVBLrizKYTBIL0rNZjDISSzJYzCoyszLAJKVlZUMBgwsDEDw/z8DHAAAwqUNgnjaY2Bh2ck4gYGVgYHlC8skBgaGSRCaaTWDEVMFkObm4GQFUgwsIAIZOIe4ODEcYElg1Wff87eGgYGjhPlFAgPD/PvXgWbJsiYClSgwsAIA3zcQA3jaY2AEQg4gZmAQAZMyDEzl6RklICYDEwMziGRkYpwApPYwMAAAOVADUwAAeNpiYGBgAmJmIBYBkoxgmoVxA5DmYuAAyjGxVLL0s6xn1f//n4GBJYGli2USyyYgGwYYgeoABcEDchgAAACwPGOn2TY7b51t27Zt2zZq27btnzQJEOgqurqlm9u6u6OHu3q6p5f7enugj4f6eqSfx/p7YoCnBnqmiytOaXZai0GeG+yFIV4a6pVhXhvujRHeGumdUd4b7YMxPhnns/G+mOCrib6Z5LsAP0z20xS/TPXbdH/N8M9MswSZLVigEHOEmivMPOHmi/DfApEWirJItMViLBFrqTjLxFsuwQqJVkqySrLVUqyRaq0066RbL8MGmTbKskm2zXJskWurPNvk267ADoV2KrJLsd1K7FFqrzL7lNuvwgGVDqpySLXDahxR66g6x9Q7rsEJjU5qMtZH0/xxRquz2pzT7ryOTicvZ3UAAQAB//8AD3jahVsHXBPJ98/MbhKxoAECCoLGCIgNJYRYAOkg0pEmioIgiiBNxa5I71KsKBZaQEDOw16venrdcnpe88rPcr3rCRn+bydF4PB/HwkmQ/a977x5/e3yWF5Q7z52Gf9tHsMT8ibx7Hm8UIlIYimSiJCRQDrBSi53cJDbW0knCIT0o72Dg8zO2FhsJBAy9txbMf1aEDuq+1emoecGUo43MByX7Gu7YJyt6chhxqZO4dbhsdZRCRsmWVhM4l78t/+5uZIf8/wYZo1NTY2VAs/AuYHDhgnMDM2ko1xXOa5aO5L8zX113JQpPMyz4fHYAn4soBvK47lKGCmSISmSMMxy1VdrjqOrX6Krp1V16No3aCk5yo99fhj9gh/wcO9juO4KXDeSZ6C5TiKUGErE9AXX42qyavkrqAb/KiY2K9Ba0pyIIog58UcLqtWkysi0MjKmDP2GH/EQrxvomQG9YUBNBCTULyFqQYRgnNHzgNE3Ym+RGRXEpIQfWw5XRPc+YeX8LJ6Ux/OcYIXl9gZUdiZCKxCnPhYbGRvL7BwUIom1RCQQ4Mz633KX1n+YWnAyeNW8kvAFpamuofUbfLKdyG9i9NGSmyZ1yPHnk2joyUh/35S5s+bk3Dty7fm6CeNRwy5Vmp0XDzh+wOMx32gwqhHK4bec+YZ8gOx6fkR25AN+bEn3qZISdkEJyHYJIAwFhCN5ZnCFERZINTgBpoFwFJZOwKJRBjI7AzY0/Rtl87fp6d82K79JP723o2PvwZaOvfjER+TKqVeQ852PkduZk+TqJ8gQTST3yU/w72sk4QGPaNLEHgUeo3kTOR4CgdACmwin45ezctiaFFu0dMIZm1WHsuo+S8v8BnhmdO0/0XHgcEvHAXyi6s/zcwz9chJ8kqoWnECOL3gbISn5jPyo5Y14enBmzSCP4cCZkTLwIzM0hB+2+eZ3dYefvN5R3XjnUCOnNOzI7t/4sd0xLO4m7DHuWme4NkMty1AZQvAj5X6WX0PTke1FshGdvkZaSOMF1MmPVf2CRap81Ri8RlWFv+SutoWrs+HqIZy2SEWIo4A7O4ntVZSC0ruwoeonLGKCVAH4JMioCM5BxMp443iTebwEI6oi1gKNvclkGvuzpuojRpzOwGfQH+bC5Kk2HitMZrcm1p0mv9bmrbcvDZka2+r/1lvEP6B8+r6OioSH8+bor9fz9Jq/4GR1fUdkxtIx5tsnWpw5pCoO9EIjNyTEJYDS9P4JCC4Bgmm8OTxXwGxnIDYSStQKakKRvAyPiYMDomjod62sEPxFYmXFJHQ1sKqH+klJc6PsAhxzw5OqFfNy4kua7t9atDRCvsh1unuJS+Ym83F55NnCXWuC3d2XzxymjxKiokegTUwgKyM//qqwflVpY5VpOycmblXEyeqGE+GpsYB+3MSlQcExqvvrYuNXLl0sX4s+3XuxqZ3TtcLeJ8wj/n2w+PGwBxORVA0aUGssD3BqrQ4gzlNWj5q7P6LoZHjcuZ3RxfKfc8vnpIcs2j55yib+ffHzuSULA4qf1tf9UzHPadgHHxeeXbzCBeu7eHOcDoG8xCAvU54EOFngF3Lq5yI1wkD+/IXFwcE5noG+l5bvv5ee8UFp3tVEjMmidYeGYUumHN3aVDt/hm3qHDdgeORZ+dZHR8xsDdAnTR0tx0GbNsC+fuG/xRNx2mTU51DkYN14eaz/jPAp06ZsDyrtIJf4b3XPC3A1Em0WS2qLWFkeh7Ya0JqzMo2dq7HpsJpoDw+OFS/afT1h5fWamhuJK9+tKSwpKiwsKmRlBX83H31WVvi0sf5ZSdH12x/duHHz5nWOLolkHgFdtbxBwAqZyFo0kLRW3nji0koH/Qrl7P3hZcf9orvacnIdVodE7pxis5WVeblnPp8rxqODFwAbEHkBCPz0oji1wBHnQ9ky1pyz5Ng+hixj7vxcWPP4alu+8trh/AaG39PNmvcsYGx7PmZOcXa4mUSxcrhuJOBD+lho7YwVXARBrJyUW6afKjFN2TZ/7CyyqwvMejJr3v356pPr9PMNfNcGA6HlzKHeXq3nFwggRnI0R8PnfWDbYqApZaSGgEUmgn+AxhA+i6R42JYPlX/daz616cCmM433/mp7f9MBXKbKxJ/iQtV57EVfG1TW3BrQ84LTmQ0e0lZ7NtRHao7IWmGsORsrqVQB7+hbjfnhmdW3MwOyA8L3xmz/oaHqn0Wrgy+mHn0lrHLxn0Y3/QvDAvPDMtv841b8j5+16FhS2Ob5w4TBlas3v5m+ImaZl9/e7CWZDtW28YG+cTO8nVeGhQGWZtibHuxtFI+XCXvioCAZODB7AwVqbhPo66E/v2ozHEb0wen5bOra7c++8/wwPleHhsR0u4N8msl99pKQ5fF5xjwr8GUgHqmCP5CSIeiHZmMKE33MXqot8LBEPT/2ZXDDb0fokHXG4V7eS4wzhyzcWUyCkFVx8WB8BXr28b5jXBUK1zG+8fZwYpq4BicmoCcmh8+FdFecFjB9tKCQRE8MTTuYYrpyZ7i1J5nThYrRCn5sjzA8Z8lc/ZKRs1ZFMA97ipn1oO0JGtmIeOI+dqjPRTLOEDk3b1iWveGovdhjw/bgjafimYZ2gNtdnBM6q8jBY3zC6c3Y6PlhoMDoostQsB1jiDAimkmxUki7pCLuvEchoPfztu6/CfkBordrZXXZXvQ+xBrCu//eg8+A7hZVR1EjmohzKUnY5UJNvmHO6RFPZIT76I8hZAJYpzam/6AJhf+0Fj4IWOVdu+zU68NVx3CM/uWGtbXzlgV8ws8iStLwKznfEBsY7+L+DOlVIf69IFmiRwJwkfR+z1YCQzvgYmwMYQLrosN0GtAVMoFAm9zIuZOHN87wF2xlzeIxHnYhu5YtW28xPi1+7tqY2TKPMcopLtIZCx1kfq0LZ0udZ5hZukzix3p+Su688R35NWt1QnzyvIqfT7yBpnzqmfaY/FV/+uaimM3oBpmVFW+ZcGlvIxrxJBVOxwgkmga4jDkfFwt8NbYilcplWo+H5BKJGNm3ly6tCe+o7uo88HB78W+HVBfRePQAov9U++y1B7cWR58tPfhGNGuZnc35ziCQaiNIFbJjek5iKXfQAl2qpMvoQMEh4VKHgt6vvjrBhskLkvc92LT9f/uWbpwdNjXIMbIkSh9dJ3Z6YWXRfkut4Qw796jyIP14YjOrATk9eowcj9lMyjAzXfxRZ9Wpr1fajOYxuvxXALqiD1ZJ018kgQ0ihcTEhibA50kBKUBWDWTnVMxMo/nMte7ZOFVViT2qq4EAzxd+naBZtL5a41y5bYCQGDU9mYYeuvXl8eP3qpDf58ivjfxMfr5eRYqnYTwNPNYF/jJVmsqWkv+s2xInq2qwV0kJYFwA1BNormTEecdMQwl1hPCPQUjO5T5ihKwl4gUPcNJHx+ozWjKakIC8nYVskV0aOU/m8fHn+C/VMC5/oq8inJAJ1JMzVbV40bZt3A4s4dcjugND3lgu3mQBZImJRGTSh5thX26Wx7FUoLqruIddr9XvX9y+5MBj8n0WGopGpJMvyXI+3o1gRzUFqmo0gHn8Wo75WtVBHLV9O/BuJGHsMKEI9jYBMrSZID11fFOAXiuMIKzQbN4ECe2pk3YwtpQjMDiAYcKXWipM0JVtO3yqM1ZWBZxyXbsvIj5l8gIvrH/qwN7be5Z+9VDlhZpUHYyUDEPLfMkf6eQ3v+ckTJ4X5rZk1tBhrllRKKYmyVlvqKm1hbW3FB9CVZt24ruhO9C3lbtU99kVYXfvhh0Frwd6z+6mceobHq+fF4ygXnAW/L2en0XrIXUIQZwTNFTnRuxq0Tgjq2ki8t5lkngBze22SFsy1WMc+51ATz67ezOYx0rmTkaioQgoU0rCdwVWnE3AiTzsLUAeoAcGEG0bNPXEZF3Vw5GnfsLazkCkzfSRNYhPHcYZfYzmZxY6OhZmZnC/M6Lmzo1a5OiKro2OSBR7N+3ZlH6g0TA810SJHB98jlzbW8hrD74mrzfnISM0DeK2MXlMbsK/X1Q/7DDNL1AH7u7PNzQngv3mAtZtoDd8TVUkAQ0Rcs6akZO3SdF1ZqahqqKdicvLQ737uhXwTZbXCvtYQP20IWQe1nCdUGKNXgRjuQzcCQMeG8ioc2GFgwPD0TxurHq9GC8OSJ3oOtFNNte1/fD3r37SvnXLhnof5HP2R4gHu3Y9e2Zrlik2ne+ft3nfHv7kb68TG3Qnf1dsxLHQaPSl2ptj3miIpG9Q3HCuCaDbUgUaNNtg39hpZqNH+P/OOSrJfGRViXoGzzzgHL2IlMs84BzBI4CH+eUPjvMl4LyHcjbQcdZ4C1oGsXuKzacMJ3MOd3QcQ00XyQz0900Nq+eqdeDVLmIPjgmnc5dA+nuBlhEXMTVEdISAKroe19oat9oehZ4mO1DT66RKBkcaoyaDwkmrmhQuIcd4mHqxXfSEROCL5TKJmOkLzHcfqvA4wqHafpFEog9usuNyckjyQEwmGl+or/GCUrlEQwC7F7/yGzpWigoukWB05zYuUa1jr+9TXcLu9GLMawXZ5FHZiLSyEdLQD74IXmxesfnUEctUz9rb8ZB2tVAqOWEDAhD988OcfAuA/zmqXVxWCl0Jpg8FxgtlGpA/jhOvjg50ntOXbltcrsrQEWB4CtDOY9QTmnC6GctdDS/DAfpoOEBfsR75vAPveDf/QLufm1uWl1C+g9NTd6krp6dN7NvdczjXzuS3lau6cGCI3/yQcr9Fz2/Zmq3llDU3a/9+QE8zvFwqgRH9JAAvNpdTjDjYPROn2Tt7o9sBqNJ9e/casqXgHcbw5vw/HRE0nXlRQUFypeCSX1pgQt8AZzZ3F0ftey1pc0PwYrdcX/ftiXNjWtOQfcC+Tb6h1TGrdvl6FlzPHXL81Qo/P6ekXE/jeuT8qAOaJtHurmvlM2fn3Dv8zrN0UrXiQlfXsvgjMZG18bFX62L2fnj2ekbcsqO7Dy/lkG4nE9hUQGrI+foEDkj/VNzaUBf0AVefKnkit6eJODu3oSDTI2b81NEustlzFi1eXXA6JNa1MjD96rrUy+vW7lYsmnejupn8VncUjZg59WBS3ObxBiuGj3G2d8+R8bM83NIVtquf3nr/2RqvaRlOUdrUgGYjIP2l/aVvyMleLhEy1pzu+baTEHakgVr87Nxue/a93bshGmg7EgIuj+AoOQOlbf01GfXpc7DbOGo9x//d7tCQ/mhA0wNqI6CYqPG0hpzPlEolckQp8zXajbsMf32ll8cmlptP0VfFnkSHT0KvrLx7hlpb+Jbdq9mPQVuAWoJOz0z6eMBBsm6N2qnCBubeWqCDZ+DabJ4F32eq9k4iZjDyeOu6vwaSZuU951Ec+g5NHYQ4tRKg7sN1H6kkBokU+ErXnfYtNC54Q1xgcgYJA5p66hUNnTGDU1JLGLdcvt2xozhlvxNy7vi0nR3KyaQv1Ta/SDVVjbA5GSPIENbws2D/UprPG0EK27eXoYveiGa30zGyp38SG8lkYvg7uwYzqiAmJC9oSYZtqOJoVvm99RkfFG45n0hiA7J89LCB0HV1zxO7sRmi0Yk1ufmF+IZIbtb12fLZkpW2wfuR/PG3yOvEPvIhck768sSZz+NJrNuKSfaW7lYrygpAZxGRAz4uPrnS+PTDItBkbZcTNJlP8xxajwtZ+JaYfus3Ho9KLoqdSissI67zmEmjBA39Ek5+Ck6SA0N6c/tbaNE5kmJLvsfWZR2iZ1+RL/25UE5dZB0/lquTVMuCVBUotKq06sEH5DiJ6hPMuZO3hhMrAr4GgItqlYQRYNp5YBSGiNbDzJ02cn2myUyF50IHP4nTLLlZADP9QKGnJaK59Xtk5RXS3ZKywDJ7rEf2r9dwTLcNLX6p942iWqvu5AyA3zeO4Efg292k6hxEXxOQ+oFFzf0CE+ZVAvJsmsWLaFTR0VKoUY8n5m1t6Nv2rloOat+gpK7NNVarq5HNXlIlMzIT0Nh/18olb4+Yal48WMUMOgvgOOlaAv1ztMobC9QhAYJowUgZI669AChlhmoRy5nbAc2TWT5G73bcRQw7sSHg9zfOoXsHSz0tORnjD+fvK14h7nFjLpskl+524aqanmDmhFbQoFW07qJahTRapVsVfKJb/RHBqnbWABqJeTxtx4hea6S+djKHPQqsLZB2wsdB9gKW9KIil+nqdYy4Yt3AOIphGGe9rtqEKs+owGu5PUhv83d1td9uRj2VypGqhOFNeK+BgynS/5+bLNE9nDSS5v+Rcx370Uzy5q8Ik9+/43BQjhRtoBrtHzp7oaviF3tQd6HoqrF6VcVhLoNqX8qPhWvG05itUzha6WgLa6SudoTYfvmeLEXk/Op1Bw7vzvu9IKHlgyUbvyR70UXVMWaS6q/NxlJ32+SZzgfzsrOK405kZr+RwkxD5yp3EezMYaDdJ8EZwGBCMfyMdKsUmUkfvLS6oatjtKs8ps9Ew5hn/u+ZBrIzUEiMDQzVbdn+Uw3Cb9rLV20UHKyv2zcc7xy251/TjZ6/kfCfZ+QZu/rpL7887Ychog8y2ocR3IVVc/XqDwhWaQ+K7s1UvTcxT7f6iW71xxerwvW61Z9SudUEnRzM1N/9EU4IjQKLcNVEXW2UpPUNtudCAL5loCrXhUJa4HC0aP+J0hqrkx4LeU8UW66pe8ZwWpoAbp4Z4GXU1JG6knr9ypXlGg/p6NJeh49z3NAT8hYpfqeysp+/EQ6h3AnKy+NOyhx4ZWt4AadYoD3QHffNR5i7rZwvttS4tLqepVxmMuNCv8xkIMP+KYpu32CpVtxsiOfN+1+vH68xVOaYDLoeC7D+oP5PDHhoC3uijKtWLGWaeYsxXlr5KB+Z/vxFO0l5+PWBzvDq6PPlH3yHhz8/XIady2pXbpRzezPo/Y6tBkpc5iJT2w3NaUGalI4mwhoCbS5Lh//oGk0tZRqTguw7YvnbuzOzNlfFefksnjpnRvXWjjXr947smDPLxmsKn9/BCqL2jI0+VVhzO72g4UTVhuWxa9IzmN9RCVnXM7JuFyNQjV0W76Gsmb9h3pzN3uefpMAe7UCztlFk6vrcGoKS8b94y7UWDm9YWBEKmTHZja5tp3ZPj3KTh9rx+W0sf/HRnp8qahoOd3ad6UXCO/fMTYrKULIB6UyI8G474A5Mt7pf+iEFryjcVJ67tvitSx2XJCxPE2fCAAONEKESyoH2IsCJqPlK1DlNJYoAylH7lqL9H5EC8gWyq2nYf4TsZt4sgtyUH/vGlcQD8SaqQziwcGNFXmb3earlwGFo7//Y3X12KR9MwpY0Ikto30ifZRZkNXbM1kqWH7mn550E08nS8aNm4OEdlyYOH2c5Y66Z8gT+YqBQ+RvHeuX/cQNHqeZgB2LY8nh/vA+3yzjAUMtpE517yrXRlJ744IDwbHIHAuyUtpTAHb5tsxWTvSbz+e2AZTeeG0qD7WXs1nNf1eq7f+2/cYB2ayfOEIdYmuOPg8+pXKVIp1S0SpBQ/tS++vPXxyiX1DLHDcmmA5F7FnWE+TulevH5rXz+gi01eD7esW+faofqSEj9hj/u5W/w7Kh1WT9vzia38vd2OEEszAJOSZoZxoDaSCakb7Vaz2qHQ4rpmPsPby/8ZkWcf2vmwsKghQWBj42+ia4Ke6V+zaXQxCjSW33k8baYfWH+Of4b7/CzwsJWOnvPjFsQsNy22mFtzI49fl7LYlakXN2UXBM6dPj8DUFrGqK5fVvosqQJ/86SDAfkZP0ypcPtpGzG6BmzPMIc/CY4znIwDRjgUgbNzzieehApX+POm2YmXF8LIW5ShZBEyCkYZYaOdt7+sJn8iOacfPpjC3IgJiiBf1UK2jVz7sR4qm9wzH/i4SDqcTgBup8PcPYBYk61aqJa04BXCnixA1S/LWhmq62VpXJd01skQbSeS/m98OoKt/UHF62OX7DFtyIrEF8np22QbRs5iuL4sasvb0uoXzuvTJGTUVnWPRlXJOGVqjiVE+fFRgGXNq5PAnykwAdpvZi61ap1ioYi0CrNHRGjIE3ZmPnpgT9Plj0hG8Kzq/O/w/5isgkpyHXUjoMdru7YemYF5F82qrv4DB5XlF+Wo5rPj60gMyvgVgvQYe39AqDDQppLaWb48HkI1emT8BmSRDU+V4h1/L4tIHTNDwf4qX440qc3xb6SRnakNfVrAzG9f4COVNA8Xcr56Ih+3mBgJBIY6mouOoMXRXCHNY46h4sTR1hYzZiLfwlIl3rQZkqnf65k3lynNW5C+bqobRXGWg8BuvOxxkOQBdBWMQKtyslaUeiBmnX9lqatqkOwNzmgq6caPI43Bfb5H70d1LeDtDO/tuPfHZ6OJqJPPgH/Mrnt/2vxAJRyra+hVYEjjZiauUrmy+Yq0Irrbr+2dHd4R80vP9Q+3Fb0W53qmyuo619TFSuum8/wHgHVRfQUR9C6Vga2QkecHHkFR5M7VYgN2KkObakzC6ta8tblpsaLhb8e6uxAy/5G5sxliOnL12xXqLryGiveiCdQPH3Iw70hJOJFhRT6/8jJjstbNNkEbtJWSBFg7cZjfPzzt+zdg1r6VUiC3kcQua5pcq2RgHsCpznuIvBwjISRWoPsrWViiUKtSZYSTpUYJO/frhWNuSm0tUDPLGzZW3uM7qrMsMHECRYjJKicRCKTVCO9MRNt0aqCKkVO5YHXm/bbV5H7qDkbflllkyj4lZ09c82R319FPc8PZ7OLSE7TD03r0Se7sK/qNLzWqqbgAtVGXAAYkwBtAr0HRQRaZMnpUSbojoEOnABDrJdRJy0R87nkXlOa0ej7Cp62PHq8DE9VeWL9ry1MnLz9ya9dDjmZSE5eq/soEY18a8QUiyKmu8hiyogq2zdRgApVPj9cyTqSnvfJkzNr2WaSXORSjqLePNpjD0EfndHGZyEg835pjUy5M++1k1cH1MjDOU4vK5E1XQ3wGJp7M8Bj6NO5hzXoWhFrTrM60WAtdDwi7aOmPx+0nk3bk3ap8cGfxz9MRj8RQyxHj8lC1EZfo1XvcmscvWSgP5SVUbukiZKuiqP2MOjwXipF2y8nbdq5IbDdJyjo8zXrLqVtXOyzxW/r3eLaz3yDfLuyKisLc2/j1ZFeC4NmTE+Y6zFv+7KoVDOh40q/1L1+EY7J8nlJURELOf7XwYAe0XsaqOygkEScTgNjxDxSDh9KXN5TDtdDF+Buhm/RT4lXfHoaWXNitOKaMxPB2d55kH6cYAhvFJ3RD6ABRNRNCtR/Rs9cqx8uJAHv1guHC9EZtDK32NNbQL7rP6TPUbMsvWPfs41jGXJo+0RmW08iCUdWuWzRgCk9vSuFntMo6uk192rAZ0N6bq0A9ibs01CNkUpUlzgpRMxNpWPb8v0HlVExfo0zKOfLDq711egIWbsq2mUWugd73QJnbw80IKenfkY9Z6fuxVCqdWUIqKOx3h//knq94PEvgf4LN7hkY5djsIPW+jM7jvrBm2lktk3C4g0J6Fb3t0AO0J0B9HqgBRZ976jRSQxSrRd3aUw9dmtl6r0jcVfnh7gW++crhxN99OvIuuwF5a5BPq+zsvw/Ghu7S12cUmfMaLmQd7x+mt2auU7aOnAzlch3NPatg90o+BY8I8pVDImFWOeDwaDlMjl6sakbaKj4r7Lqu+u3fVpC3m9vRz5HDgdtX7Cbb/FL/jfe+7cVHHZnWvLvq+YQD2nc4g3Lgf5e4LcL9iSkeqGZdVtq8zk634bt9b/VCbleudKK7y4sdQubGeectVGESkimoDzZOWbqIudan5wribGvgQDdS8lU1tx41uxV1jYnDuada548aYWzc95fzXXdu+CcfGBnSay5dsrtqi76oMiUm0CegS+gE6+SI+RQG3oFLSZ6HRUV3Hkz1T0pQBrn508iepxmrwQqDUCFgfM2AGvXeHqATdMDIIjPFqomNeLfVCMXIscP0Ox6QogK/UFGAB1hCUmkZPf1ACGGs282F6j9x1RbOOVz3PDpgZY9TTXNSEbeX8VVMgnkBskZidNZHKY6jj4mtvT1B/pgMZmF3llM7FDrjh2QpXsBj2vAQ8gbBVzGAxcNXo6DoaGGA+rD2qsReZCL6AL5NaXn7xXkd/KqEJvpqSZ9jP65cbh6/sH5NbCVWSXEoR+39q1be5ZRLDeIA/eC0z4KU+3hgilQn0zRTrRhoE3rL834WmMsmvG2dpj9Su5O5fm0au+YINKMjqo6mZlkXk39m8lXt6ZkTg3xRW5+5E8YYgc9I2GzCsMSUgyGW/m5RS/YgRZV7CT7yvYnFvjqDzObZG7jYyVcsfCnnxae5nQ9lESy6VTXv+Xx+nmHy9QbZICkWtjN9Fx1U2utYiL0Nak8gyz+mbB06QQPqcOo8aMmWI0i4D16tjHD05cbGqQJBZNn9CRylCklQQH0ACpo7+PhQe4OyF7wPhdYmS7jsnbGfebT/e/rE1hr3T7IBZuPTixcaLzg8sn8nW3nR2++RkpTC52ci9esyXdyKUgOVigCg+fOJlFbxe7rlmhm07/mn1uJctQ31Klvriu4ceeTGzfu3bpBJ7CAMAK0guUNpXYOqiDlsmzGTHXsolKJvxSrvsKL8/JUoOxl8K33SRTzNXx/FNXUSZzm9w9K1AxEoEkDmznM7CV+S3NnTZCf3BheFNjzIxDPNd7mT8fXdo7eyqMofXVUnOeK4PW+pfFkOzWPvfn5z1+3NUsxGuMVVLR5zz4O8QyIKa/SGGv2sihrSeM6xNp3Gn+419YBsbar6d73rW8n41GbzL35L4u4RSQYWRVx55ZMpFzchXPbSs/te8RxvsVNq4Fzn2k1v++Emd1TYuHFV1krb6EZl0gd2v8uafhITRSSAohMrZTTD0TMadktLtsFakaaXBeEpKUklsqloluti2JmIYtOch5tPUtenRWzCGhEPnyIlMRM9Q56/PQpGc2h8gc6y+FO1OGAinozzngVHCpLCdc5w9fRgfdIg1KpbANYPVfQTfIJOY/laiT8t8Q9+1Hrvfx8jtZIboZO730cxclW8WJvDIyu0VDlFWR3mRxAB98jxy4ou1E9q2fUd19M7U6g0gZyAm/50sl1SgkcQiyxUyrRB0qNfNAdMgX254Yud3+rrb1OAQ315BrUqV/dsVuJ3hGR+SQFSFQrmeri4p6UgRQuAoqtQGGw6fFWOCiKgLHQ8Fc7eLgSOM4C+1TClZqpd6bmKjRQoftpvlg0C1d2kBu4NhDqoImuM+d5Hz+m5zYvKFkxRJa/OqOSKnRVzxquyk8FhQ7J27gXaiC0f0FgoFdKSMx+SEo43Jkwu/and2g7QEeJdi6Avm5C/cIbgJu00r6VCfvce8zsrewM8syNyT04v/BKlnDTfu95c+e5uu7LIfctg+22V3vkLBHuupmefKPEc4Pip9onlyODixYezYtq3OlXHF4d5Ru+2C/g8I0KdrSh+L2PS7siinf83qrsKTYdD+jOkAk0FzHkzRh8Xq3oH7N1npPCxMk5jTCuXjqOjqtnRy2OCiyaE+L5+pJDX6xd90Vdwiu+Ie4FXoWdwWUDZ9Wb7CetmetR8FcjBHEnpzRbW0D2SignL9gVO7v/OSMhPTE5E1hq7sVHt41IgZJsV580U1Pak8pUloIFZkIccIIr6Z3z6g6wCAtIykmun9FBUqBKus709DQwi3tY4sfxSuXy2f6azZcipGnBIDaO02zVmasojxy/9ufTq6QN5X5AHmh0DE9Fv5ENqJAYq95Hb/I0c+wwDXY6x56C5RJNJsGn5HGjwc+t3YysVWXRisrRhFJzb8ya5+ZyuSHsgxLmkO0BSrGU0hjdtH6QTJaN5RB6901ntWIZJKnlYV1mzPBMNM8XDEIVx6WgL/rSZPRU7TgUGQ1O812g+Zh/h06a+8cPGj4g33aJDYnLdZjgcGLzrpaeb5V4adbSlQtXxG1sr1EV8N8weD4F8LzGzRCBCp/m21oLH4Qam039TWxwXJ5cqgCSSiCpOZJBKYshHwij8dmG0/JQ7STaWD2K5g9yD75Bn1vwxTPNkw1G28v2bissRJ1M4I4Av5WzQuY0La14L2Xl5ZzLNzEi61aXDEO/MFm4yzl2KjeFtnPYvmX7hgO+Uyck2brDnfmHnlXCYwncnfn3lB0t7RCTxETOoYKYpFRPqMMgUmnv1xcIAC33mVaggiHwrS30W78STs8+gah9hzX/14SaM5KXTag/URYgs1Okc8Zd1Bq/bkLTOfKFf5q6ewnBGjytI3pT1buA2D7fGFNcryS/kqgBkToUTmgRcBVpdUcCTYp+0+krSnJytL61c4ynj+Xc6dIR4xkbWu1RX1lJvu/8ojDMOtlkdvLrh1GrprjjKF8nUbQu/e/Z9JsvMB8Zogk5/YCi5n6BA/PeA9TLgPbLZtPmJAKotChr84o8vfl9L87V4YN7tzT15JhBK0rNYBrqyrkdcVqjKfue721eQqvL9x1cwGh2kdykaBcFutGTXKSeSa8CbK1AV93NgFzHygpQMcb9JtLWzF2/YzZClu1qfpfP8i2O+H55sRW9mlfg6Ys56pgJO7tRNQnfi78RpnrOmqtm4g+1sgUNok8IUQ0aptagn3Sr/Ee61Ue/wqr2WR7QvuE8XT+EXrtZfS3tYnD5tRnY08S+9SvmagBIUIyMxPTsrOUvqlifxvdj0z7a9d6PmME/qbpQxc7SSsSW7wrM8wjwPglV7NPm43/nIYM/TKeJs/lD+PCA2KcWty9OmZU5xw1QUH4U62k11l6dZdDVLepViph2WPiPdZneoz8QyHkziYT8z1w9i3b9z1n09Pi6rfYrPfcmlx6qP9SR51V1O3PTXdKOTqnqGClBWSTSJsgx2nPegZryjdlRJ3Nz3kxmXNHf5TmqC46AgXZZ+O8Ahm0UwxMeT7f6SLf66EWtQld3aFd5jLaC0c6iBz53g9S1NEP9U/8nb9Bh1cPh+Zs35/duLdLDpkMK+j+Cozp2trUVlyqbmpT9uV9Wc8fcKu1P0NVc9epfuh4L3ZVhn13RVfrdbA1+3aqgQLf6OJBbpbGHfnen+rsPuSm0I9jAGNa87xTahJYsOJ/z8z5K/IWR6itd2k07/bQ3Qynl6KTG8iqAK9Q+mhm0xeAzaHU5ZMhVRujBq6+mwWBY60+mq8uj51ApFRUNcCrAmLyXlwe0o4GLv4bLy+bcfXIIZunPPzv0cVqq1H9lEwN5DcwrIE+B7blSHwZRIbYPdUtOYW0pxXd+f6ah+JDMZ1ZSIgmolhK5NyEzE+SmfcoN7HsE1TMDOmn8DOzCQXNn5eAjZctBsz9Nf89QZCJiAgO2Bw5pcZ81Y74NnfyF7VE1J1X6Bu1NjE6aZGAZ5ha23MrHziVl7rSpsfFHWsy89m/En6ts4lM8W/Z4ZcE40OPS9yls4d/Hjj6viJ6XP2fx+x+WnFqUVrg4PdseDWUfG3f7gecRA95skMMksIkXjTNrad+pM+2jmryYTLNZfH5868q8Zp9lt99evTk75+9/Pn6QtW6FXYKTItqBz8e/qZnn5pzYGZm0PGrnsUNrdlmeiXL0bN0LyEBK+0FDp9G4p54762bN8IZyM0QKpKCa+z80bfWWnTtJA4r5+Ot3ThPy+VHk6sXpMdqfq6FeWTuGJKJ3xWS8pkDFvGHcOVAOkwfMkxg+nfma/PtMQrzHT59gOnw81j9+zWSklUMQPuuXE3R8juN0v+kwiObzl9Qap5o6p712CNWRIWg1+efkNyWR0zwr05HvUNLmGddX8oAhGjDUA4bBp87yQRDgKeR+ayuyalvvlxfcNsd5qp8tn22H8X4tKvKjYdQFXVUlk8XAUzWU/DOAJY0kPzDf0NpowOyXBlWptYQGWizihr2bNzQsiHXaGBRQFrU3zzHJ7oYB2un9xvq7Twu+ZGXuc5Ntp4V0ln932cQETconfBsXZIIMW37P4WYGsDMv2NkYbpbtObg89THSDLlxy7L9UcpYf8cUD5Zpw3zvrGoSRzqZICNy0Sz0UCq2Hqr6OTPFU1m9IGPurKyAwje3OmIBaiotJYu4PTWB9/TQ9PiF/W7a0I2vBzEmGeM67P3cwl1Va89AT/+b/UV3Nodtc1q8MfXS2tQvgoJ82oOydm5KwquLFkZEJc2TJ8+N9N+TEpQymxm7JmLJDnePuQnTZwQt9IrkvMVCyKZ6aDYledkMW5u34U/7uKYjSrJ+9Ahr56Ve3pZzbKXDJf38Ev/NQXI44DYBptdtnN7Q/g1S9724+TVfrcdiOso6g0yfnmg7efQfZH7yw4+IvrfZVEuL4eNQ8U8m+laKoP4ujzgap5rMTnmrAdUVkD84tQUrjIQYrgS5CnhjqP1zPOSGln0a6CKhSGZCHx0VinT2b8WW/Y5GnPv0BhmRmjcnvCIqINb6xF79yemznWKnTomU2YbIxoNyEKT6Bn26A71pXPR3Y8vTfGc5EUEzZbtbaGGIl+pHF5+Arr01p0IgygzjnuqiFbMJVBMKQKI5QQgE1pqTlSBDEwZRDC+vK/Du75LXpyQnnEyKXZVwaj1q6ul4WHMbvS/ctsw/0c1Pdjxlc+fi6JZ1bccxJp2LkoeifCaKORa/Ojpm55hJFavja0IgtfzMmvihWxeUU6bF2SyseFZ35Gm5ptC4r+xs7QCvr33WFry+iEZnzROx8NmAzgbgrlja39HNxVG/5yx6fdCXPj2/9euCMZnJ5Ppq1RsD2mBM70+aXosIdG/mQF/2Xx0Xe2/TaRPHgUuzbP/cGNQimDEISJO6S91mOvtA88XdOXi1YohdQVJGlU4/QCd3qT0b8X55H6ZPF4jq6ZT+lYDhf+DC5uTt48fRnLYzL+kFoTtad9f97X/1g0pA2ta0Tzim79OG2tilmYkL0WzlNr9tvs/Pnr95P/3OPuLWgVqNoUeQNGFx+NWctr0ZtQGMSTG9c/Z9sIwJoJEMxKeJmom4zixeYhXoL244/l5ps29UV1F7knKX/pyjioi8qZO3+izPnGm/Ep1WVbE/QNJ4+J/yTWQomEJ1cGTBKhfV307ePq8eKT7D3S3Tm0wiaN32nxNz/4BUXamJ07R1W0TftKelX93G7/2Be4pJnRfSqZUtnZeb0Hm5QiZCMNwRghuTqxWMGTgrF3/NuI9FH5t6sF+qvv1nxSg9sblNu4l0rLGeKarKuHXQrnZf1/3mrhkHYbp8qoIbkleQBegUJt9VnVnj2V5h4pzUVYbKwcKelCIliYQXp+VPiAl6ApgSuQk57TWJtRPyBAlF1OcmKcjN4NYWDiHqizwR3fh9lJ6l3DWu4HiQcl0qSiIu2KXnprmb47Sh5Jvvh/iMxd+Yewt+LGWYh9u6toagyKCjm06258WUYaj3Sg2c086W9CxAJ0s52KUkALRqPuBZPXhtrpmKX1eSutEjrZ2gNgfvPmGEhPHg8pLBS/NkdWaCtE8G8kZzujodq0teE/jt4EDfY6EI85rvregs6uhoLen88SnaMSL7/R1YQNiajlFMQE/XqLYa1KN6/hpRick2HtJOa+gcUkSf7oUIzPlF0E9hHxa4ZePmKaZmx0ebLb1+pK729Whl1n7Q/1j9OGXWGjSqKoeoDtY8yNcnm8Sodnh6RzyuVa3dmidiDkMU1s4/edOBC0cda580BoYGChkdS6mNQa4Adjq7sGaNLV0O7EvcOtJkS9z+akfr3dKJw8a4Ozq6jD46xsXR0c1U38qSNY8nDy4+Jn+uW5u6CTG/XUSS5RmXO5clNSyOq1vUY0x+SjgYubghaekrV9IByzVswzzBF3gMzR3F15gJ2KaqCjwxMmT/ZA4JClhv3mO2k8e7ynPhKiIzvoip5j8CvTeh8RtCh9o1SPq8R0UznJ1nTJs3D6VOd3aebjtvHl/kON3Wycl2uqP2fx7WcgDeQqAFUUkBL2RYu/v1+51V9/hTUbQXOStD0f7kPA8hX74PE89/h0PqCtkQE696iE35PlCaIrSWSJnZvPH0CWCuxyQTDxxd45YlwQaZy8M9Ul0d11g7jPWVyN3JI4fx31YNWe7oFjHF1CR2pMiSo1VN5IyU58QTg9VABaFJkYQcMRooGT3TxNVWds7jFZYGFrOtM3YGNDo5TQvwlk6TCYX5giEZoV5Zy0B+pgIeUyX4hBXyHkFc+wVWDPjfMgeF62HlsWZlvkDBLBecgZUnmhXNTgQwB+JxaGz5I5gcwRA6meh/6wIO98sOGbLWONzbK0a8dkjYTv6I/ncioKkCPWaHkAXqv/YSXs//AaUcDTsAAAEAAAAFAIMbFkmEXw889QADB9AAAAAA2wktdwAAAADdVa6+8iv8GAlQCWAAAAAGAAIAAAAAAAB42mNgZGBg3/O3hoGBM+GT9rcNnAFAEVTwAgCTpQasAHjaXdMzYOhQGIbhnGvbtm1v17Zt27Ztq7bNpbb2qe7UTvU7fOXwxPl1kmYe1hqMbuZRlcu+DNuRhJ06bo0FmIinPFfC/gl+4grey1BcV4xeWAR72YnpOKhYGzAY3WryYxmWYzhs0VfvzZIueACnevFDZRl66t5jzFTexbitHBOV28JBsRcjSYptj5Hav9WzwzG60ay2Sk09Lxv0LOp3umgOppPquY3+Ot6rPqcobxvsw3YMxGUMQGucRKd6a+RFXcWKPw85nK8De+sYWuKn+jqBWAThPa5rdjfgrxgX8RlLcARj1eNfrNd754CqKq1DIiYpfrqsREe4wAshmIXzynVfx6dh4ZNqiUckussV1Z6l/LFI0LNH8bTe9/kT76Wm3+uIlff1+OO6aA5mnmbxWvM9jSfoolq+oq3uvdds7bABQ7BF92v+iyTqKlLfz5HI+QkUcHwYS9FXfU1HtGWZrtTR13Q1y8wF8970MV3MUo4mmnHV0dcStgB42gXBAwDjQAAAsNq2t/X6tm3btm3btm3btm3bto0EgqDyUGtoMrQGegr9hdPDbeHR8Cr4IIIiTZFZyEXkIxqgldB26AR0BnoAI7FkWEusIzYF24U9wS28MT4eP49/IkKiMjGReEK8Ib6QDpmUbE+OJE+TfymaSkdVpXpQ06gd1A3aorPQI+lr9Gf6N5OEKc30ZlYx55i/bFm2BtuAbc0uZ69xOJeMq8aN5qZxC7mV3BbuLfeDx3iRL8pX4Gvzzfi5/Ap+M7+PP8lf4e/zvwRCyC10E4YIK4VvYg6xpbhafCq+lYDUUlos3ZR5ubhcXq4u95ZPKZKSS2muTFXeqDnVFmoHdYZ6Q/2h5dGKaGW0dtps7ax2VSf0QnpTfYy+T/9jFDZKG5WNHsZg46Tx0ARmFbO+OcxcZV4wP1uGlc2qbE2yHtqp7OJ2A3uEvda+6WBOMqeyM89Z6Wx09jjf3SRuJbeLu8C95N51X7gf3N9eZi+fV9Kr4o32pnkLvTXeA++1981HfN63fODn8Yv7vfwt/g3/QZAj6BwsCZ7FErHKsVGx03E0ni3eK345fjv+OMEkqiVmJQ6HcJgu7BseDT8CF5QFk8ECsBpcBC/At8iPCkQlo0pR7ahxNDAa9R/zOY7nAAAAeNpjYGRgYPjExMaQwFDBwAXmIQAzAwsALeMB5njalJDFWYQxEEAf7lxxyA13d+eC63Xd5XccCqCWrYECqIBukHyD60ZfMj5AJdcUUVBcAeRAuIBWcsKF1HInXMQC98LF9BXUC5fQWLAmXEpXgV+4lpGCGzQXQHXBrbD2yTIGJmfYJIgRx0UxxACDjNDLE+mtOCBOBMUaCWwCKG0Z1n872Bgknzik7RfxcIljYOOg6NB+XUwcpuinnxgJreERpI8QBhn6cTHI4pDijH4k0muczm9jb7zmvUfkiTzSBLAZpY8Bnf00yxywwtITffb5Zt37yf73WOqT9hERbBwSugL1Fj2PiNIj6ZBDCJsEJi4Ofdp3mj4MbGL0s80aGzwunCEVZh4AkbdX7QB42mNgZgCD/3MYjIAUIwMaAAAqlAHSAAA=) + format('woff'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +@font-face { + font-family: Fira Code; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(data:font/woff;base64,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) + format('woff'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +@font-face { + font-family: Fira Code; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(data:font/woff;base64,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) + format('woff'); + unicode-range: U+1F00-1FFF; +} +@font-face { + font-family: Fira Code; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(data:font/woff;base64,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) + format('woff'); + unicode-range: U+0370-03FF; +} +@font-face { + font-family: Fira Code; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(data:font/woff;base64,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) + format('woff'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { + font-family: Fira Code; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(data:font/woff;base64,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) + format('woff'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} + +/*!********************************************************************************************!*\ + !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/dist/style.css ***! + \********************************************************************************************/ +.graphiql-container *{box-sizing:border-box;font-variant-ligatures:none}.graphiql-container,.CodeMirror-info,.CodeMirror-lint-tooltip,.graphiql-dialog,.graphiql-dialog-overlay,.graphiql-tooltip,[data-radix-popper-content-wrapper]{--color-primary: 320, 95%, 43%;--color-secondary: 242, 51%, 61%;--color-tertiary: 188, 100%, 36%;--color-info: 208, 100%, 46%;--color-success: 158, 60%, 42%;--color-warning: 36, 100%, 41%;--color-error: 13, 93%, 58%;--color-neutral: 219, 28%, 32%;--color-base: 219, 28%, 100%;--alpha-secondary: .76;--alpha-tertiary: .5;--alpha-background-heavy: .15;--alpha-background-medium: .1;--alpha-background-light: .07;--font-family: "Roboto", sans-serif;--font-family-mono: "Fira Code", monospace;--font-size-hint:.75rem;--font-size-inline-code:.8125rem;--font-size-body:.9375rem;--font-size-h4:1.125rem;--font-size-h3:1.375rem;--font-size-h2:1.8125rem;--font-weight-regular: 400;--font-weight-medium: 500;--line-height: 1.5;--px-2: 2px;--px-4: 4px;--px-6: 6px;--px-8: 8px;--px-10: 10px;--px-12: 12px;--px-16: 16px;--px-20: 20px;--px-24: 24px;--border-radius-2: 2px;--border-radius-4: 4px;--border-radius-8: 8px;--border-radius-12: 12px;--popover-box-shadow: 0px 6px 20px rgba(59, 76, 106, .13), 0px 1.34018px 4.46726px rgba(59, 76, 106, .0774939), 0px .399006px 1.33002px rgba(59, 76, 106, .0525061);--popover-border: none;--sidebar-width: 60px;--toolbar-width: 40px;--session-header-height: 51px}@media (prefers-color-scheme: dark){body:not(.graphiql-light) .graphiql-container,body:not(.graphiql-light) .CodeMirror-info,body:not(.graphiql-light) .CodeMirror-lint-tooltip,body:not(.graphiql-light) .graphiql-dialog,body:not(.graphiql-light) .graphiql-dialog-overlay,body:not(.graphiql-light) .graphiql-tooltip,body:not(.graphiql-light) [data-radix-popper-content-wrapper]{--color-primary: 338, 100%, 67%;--color-secondary: 243, 100%, 77%;--color-tertiary: 188, 100%, 44%;--color-info: 208, 100%, 72%;--color-success: 158, 100%, 42%;--color-warning: 30, 100%, 80%;--color-error: 13, 100%, 58%;--color-neutral: 219, 29%, 78%;--color-base: 219, 29%, 18%;--popover-box-shadow: none;--popover-border: 1px solid hsl(var(--color-neutral))}}body.graphiql-dark .graphiql-container,body.graphiql-dark .CodeMirror-info,body.graphiql-dark .CodeMirror-lint-tooltip,body.graphiql-dark .graphiql-dialog,body.graphiql-dark .graphiql-dialog-overlay,body.graphiql-dark .graphiql-tooltip,body.graphiql-dark [data-radix-popper-content-wrapper]{--color-primary: 338, 100%, 67%;--color-secondary: 243, 100%, 77%;--color-tertiary: 188, 100%, 44%;--color-info: 208, 100%, 72%;--color-success: 158, 100%, 42%;--color-warning: 30, 100%, 80%;--color-error: 13, 100%, 58%;--color-neutral: 219, 29%, 78%;--color-base: 219, 29%, 18%;--popover-box-shadow: none;--popover-border: 1px solid hsl(var(--color-neutral))}.graphiql-container,.CodeMirror-info,.CodeMirror-lint-tooltip,.graphiql-dialog,.graphiql-container:is(button),.CodeMirror-info:is(button),.CodeMirror-lint-tooltip:is(button),.graphiql-dialog:is(button){color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-body);font-weight:var(----font-weight-regular);line-height:var(--line-height)}.graphiql-container input,.CodeMirror-info input,.CodeMirror-lint-tooltip input,.graphiql-dialog input{color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-caption)}.graphiql-container input::placeholder,.CodeMirror-info input::placeholder,.CodeMirror-lint-tooltip input::placeholder,.graphiql-dialog input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-container a,.CodeMirror-info a,.CodeMirror-lint-tooltip a,.graphiql-dialog a{color:hsl(var(--color-primary))}.graphiql-container a:focus,.CodeMirror-info a:focus,.CodeMirror-lint-tooltip a:focus,.graphiql-dialog a:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-un-styled,button.graphiql-un-styled{all:unset;border-radius:var(--border-radius-4);cursor:pointer}:is(.graphiql-un-styled,button.graphiql-un-styled):hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}:is(.graphiql-un-styled,button.graphiql-un-styled):active{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-un-styled,button.graphiql-un-styled):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button,button.graphiql-button{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border:none;border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),1);cursor:pointer;font-size:var(--font-size-body);padding:var(--px-8) var(--px-12)}:is(.graphiql-button,button.graphiql-button):hover,:is(.graphiql-button,button.graphiql-button):active{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-button,button.graphiql-button):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button-success:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-success),var(--alpha-background-heavy))}.graphiql-button-error:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-button-group{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:calc(var(--border-radius-4) + var(--px-4));display:flex;padding:var(--px-4)}.graphiql-button-group>button.graphiql-button{background-color:transparent}.graphiql-button-group>button.graphiql-button:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-button-group>button.graphiql-button.active{background-color:hsl(var(--color-base));cursor:default}.graphiql-button-group>*+*{margin-left:var(--px-8)}.graphiql-dialog-overlay{position:fixed;inset:0;background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));z-index:10}.graphiql-dialog{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-12);box-shadow:var(--popover-box-shadow);margin:0;max-height:80vh;max-width:80vw;overflow:auto;padding:0;width:unset;transform:translate(-50%,-50%);top:50%;left:50%;position:fixed;z-index:10}.graphiql-dialog-close>svg{color:hsla(var(--color-neutral),var(--alpha-secondary));display:block;height:var(--px-12);padding:var(--px-12);width:var(--px-12)}.graphiql-dropdown-content{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);font-size:inherit;max-width:250px;padding:var(--px-4);font-family:var(--font-family);color:hsl(var(--color-neutral));max-height:min(calc(var(--radix-dropdown-menu-content-available-height) - 10px),400px);overflow-y:scroll}.graphiql-dropdown-item{border-radius:var(--border-radius-4);font-size:inherit;margin:var(--px-4);overflow:hidden;padding:var(--px-6) var(--px-8);text-overflow:ellipsis;white-space:nowrap;outline:none;cursor:pointer;line-height:var(--line-height)}.graphiql-dropdown-item[data-selected],.graphiql-dropdown-item[data-current-nav],.graphiql-dropdown-item:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:inherit}.graphiql-dropdown-item:not(:first-child){margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) blockquote{margin-left:0;margin-right:0;padding-left:var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{border-radius:var(--border-radius-4);font-family:var(--font-family-mono);font-size:var(--font-size-inline-code)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code{padding:var(--px-2)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{overflow:auto;padding:var(--px-6) var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre code{background-color:initial;border-radius:0;padding:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{padding-left:var(--px-16)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol{list-style-type:decimal}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{list-style-type:disc}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) img{border-radius:var(--border-radius-4);max-height:120px;max-width:100%}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:first-child{margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:last-child{margin-bottom:0}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a{color:hsl(var(--color-primary));text-decoration:none}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a:hover{text-decoration:underline}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) blockquote{border-left:1.5px solid hsla(var(--color-neutral),var(--alpha-tertiary))}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) code,:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) pre{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:hsla(var(--color-neutral),1)}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description)>*{margin:var(--px-12) 0}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) a{color:hsl(var(--color-warning));text-decoration:underline}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) blockquote{border-left:1.5px solid hsl(var(--color-warning))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) pre{background-color:hsla(var(--color-warning),var(--alpha-background-heavy))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation)>*{margin:var(--px-8) 0}.graphiql-markdown-preview>:not(:first-child){display:none}.CodeMirror-hint-information-deprecation,.CodeMirror-info .info-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));margin-top:var(--px-12);padding:var(--px-6) var(--px-8)}.CodeMirror-hint-information-deprecation-label,.CodeMirror-info .info-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation-reason{margin-top:var(--px-6)}.graphiql-spinner{height:56px;margin:auto;margin-top:var(--px-16);width:56px}.graphiql-spinner:after{animation:rotation .8s linear 0s infinite;border:4px solid transparent;border-radius:100%;border-top:4px solid hsla(var(--color-neutral),var(--alpha-tertiary));content:"";display:inline-block;height:46px;vertical-align:middle;width:46px}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.graphiql-tooltip{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsl(var(--color-neutral));font-size:inherit;padding:var(--px-4) var(--px-6);font-family:var(--font-family)}.graphiql-tabs{display:flex;align-items:center;overflow-x:auto;padding:var(--px-12)}.graphiql-tabs>:not(:first-child){margin-left:var(--px-12)}.graphiql-tab{align-items:stretch;border-radius:var(--border-radius-8);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex}.graphiql-tab>button.graphiql-tab-close{visibility:hidden}.graphiql-tab.graphiql-tab-active>button.graphiql-tab-close,.graphiql-tab:hover>button.graphiql-tab-close,.graphiql-tab:focus-within>button.graphiql-tab-close{visibility:unset}.graphiql-tab.graphiql-tab-active{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));color:hsla(var(--color-neutral),1)}button.graphiql-tab-button{padding:var(--px-4) 0 var(--px-4) var(--px-8)}button.graphiql-tab-close{align-items:center;display:flex;padding:var(--px-4) var(--px-8)}button.graphiql-tab-close>svg{height:var(--px-8);width:var(--px-8)}.graphiql-history-header{font-size:var(--font-size-h2);font-weight:var(--font-weight-medium);display:flex;justify-content:space-between;align-items:center}.graphiql-history-header button{font-size:var(--font-size-inline-code);padding:var(--px-6) var(--px-10)}.graphiql-history-items{margin:var(--px-16) 0 0;list-style:none;padding:0}.graphiql-history-item{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;font-size:var(--font-size-inline-code);font-family:var(--font-family-mono);height:34px}.graphiql-history-item:hover{color:hsla(var(--color-neutral),1);background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-history-item:not(:first-child){margin-top:var(--px-4)}.graphiql-history-item.editable{background-color:hsla(var(--color-primary),var(--alpha-background-medium))}.graphiql-history-item.editable>input{background:transparent;border:none;flex:1;margin:0;outline:none;padding:0 var(--px-10);width:100%}.graphiql-history-item.editable>input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-history-item.editable>button{color:hsl(var(--color-primary));padding:0 var(--px-10)}.graphiql-history-item.editable>button:active{background-color:hsla(var(--color-primary),var(--alpha-background-heavy))}.graphiql-history-item.editable>button:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-history-item.editable>button>svg{display:block}button.graphiql-history-item-label{flex:1;padding:var(--px-8) var(--px-10);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}button.graphiql-history-item-action{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;padding:var(--px-8) var(--px-6)}button.graphiql-history-item-action:hover{color:hsla(var(--color-neutral),1)}button.graphiql-history-item-action>svg{height:14px;width:14px}.graphiql-history-item-spacer{height:var(--px-16)}.graphiql-doc-explorer-default-value{color:hsl(var(--color-success))}a.graphiql-doc-explorer-type-name{color:hsl(var(--color-warning));text-decoration:none}a.graphiql-doc-explorer-type-name:hover{text-decoration:underline}a.graphiql-doc-explorer-type-name:focus{outline:hsl(var(--color-warning)) auto 1px}.graphiql-doc-explorer-argument>*+*{margin-top:var(--px-12)}.graphiql-doc-explorer-argument-name{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-argument-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-argument-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--px-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-directive{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-section-title{align-items:center;display:flex;font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);line-height:1}.graphiql-doc-explorer-section-title>svg{height:var(--px-16);margin-right:var(--px-8);width:var(--px-16)}.graphiql-doc-explorer-section-content{margin-left:var(--px-8);margin-top:var(--px-16)}.graphiql-doc-explorer-section-content>*+*{margin-top:var(--px-16)}.graphiql-doc-explorer-root-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-doc-explorer-search:not([data-state="idle"]){border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1)}.graphiql-doc-explorer-search:not([data-state="idle"]) .graphiql-doc-explorer-search-input{background:hsl(var(--color-base))}.graphiql-doc-explorer-search-input{align-items:center;background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:var(--border-radius-4);display:flex;padding:var(--px-8) var(--px-12)}.graphiql-doc-explorer-search [role=combobox]{border:none;background-color:transparent;margin-left:var(--px-4);width:100%}.graphiql-doc-explorer-search [role=combobox]:focus{outline:none}.graphiql-doc-explorer-search [role=listbox]{background-color:hsl(var(--color-base));border:none;border-bottom-left-radius:var(--border-radius-4);border-bottom-right-radius:var(--border-radius-4);border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));max-height:400px;overflow-y:auto;margin:0;font-size:var(--font-size-body);padding:var(--px-4);position:relative}.graphiql-doc-explorer-search [role=option]{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));overflow-x:hidden;padding:var(--px-8) var(--px-12);text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-doc-explorer-search [role=option]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy))}:is(.graphiql-doc-explorer-search [role="option"])+:is(.graphiql-doc-explorer-search [role="option"]){margin-top:var(--px-4)}.graphiql-doc-explorer-search-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search-field{color:hsl(var(--color-warning))}.graphiql-doc-explorer-search-argument{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-search-divider{color:hsla(var(--color-neutral),var(--alpha-secondary));font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);margin-top:var(--px-8);padding:var(--px-8) var(--px-12)}.graphiql-doc-explorer-search-empty{color:hsla(var(--color-neutral),var(--alpha-secondary));padding:var(--px-8) var(--px-12)}a.graphiql-doc-explorer-field-name{color:hsl(var(--color-info));text-decoration:none}a.graphiql-doc-explorer-field-name:hover{text-decoration:underline}a.graphiql-doc-explorer-field-name:focus{outline:hsl(var(--color-info)) auto 1px}.graphiql-doc-explorer-item>:not(:first-child){margin-top:var(--px-12)}.graphiql-doc-explorer-argument-multiple{margin-left:var(--px-8)}.graphiql-doc-explorer-enum-value{color:hsl(var(--color-info))}.graphiql-doc-explorer-header{display:flex;justify-content:space-between;position:relative}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-title{visibility:hidden}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-back:not(:focus){color:transparent}.graphiql-doc-explorer-header-content{display:flex;flex-direction:column;min-width:0}.graphiql-doc-explorer-search{position:absolute;right:0;top:0}.graphiql-doc-explorer-search:focus-within{left:0}.graphiql-doc-explorer-search [role=combobox]{height:24px;width:4ch}.graphiql-doc-explorer-search [role=combobox]:focus{width:100%}a.graphiql-doc-explorer-back{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;text-decoration:none}a.graphiql-doc-explorer-back:hover{text-decoration:underline}a.graphiql-doc-explorer-back:focus{outline:hsla(var(--color-neutral),var(--alpha-secondary)) auto 1px}a.graphiql-doc-explorer-back:focus+.graphiql-doc-explorer-title{visibility:unset}a.graphiql-doc-explorer-back>svg{height:var(--px-8);margin-right:var(--px-8);width:var(--px-8)}.graphiql-doc-explorer-title{font-weight:var(--font-weight-medium);font-size:var(--font-size-h2);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.graphiql-doc-explorer-title:not(:first-child){font-size:var(--font-size-h3);margin-top:var(--px-8)}.graphiql-doc-explorer-content>*{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-20)}.graphiql-doc-explorer-error{background-color:hsla(var(--color-error),var(--alpha-background-heavy));border:1px solid hsl(var(--color-error));border-radius:var(--border-radius-8);color:hsl(var(--color-error));padding:var(--px-8) var(--px-12)}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.graphiql-container .CodeMirror{height:100%;position:absolute;width:100%}.graphiql-container .CodeMirror{font-family:var(--font-family-mono)}.graphiql-container .CodeMirror,.graphiql-container .CodeMirror-gutters{background:none;background-color:var(--editor-background, hsl(var(--color-base)))}.graphiql-container .CodeMirror-linenumber{padding:0}.graphiql-container .CodeMirror-gutters{border:none}.cm-s-graphiql{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-keyword{color:hsl(var(--color-primary))}.cm-s-graphiql .cm-def{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-punctuation{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-variable{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-atom{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-number{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string{color:hsl(var(--color-warning))}.cm-s-graphiql .cm-builtin{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string-2{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-attribute,.cm-s-graphiql .cm-meta{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-property{color:hsl(var(--color-info))}.cm-s-graphiql .cm-qualifier{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-comment{color:hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .cm-ws{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-invalidchar{color:hsl(var(--color-error))}.cm-s-graphiql .CodeMirror-cursor{border-left:2px solid hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .CodeMirror-linenumber{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.graphiql-container div.CodeMirror span.CodeMirror-matchingbracket,.graphiql-container div.CodeMirror span.CodeMirror-nonmatchingbracket{color:hsl(var(--color-warning))}.graphiql-container .CodeMirror-selected,.graphiql-container .CodeMirror-focused .CodeMirror-selected{background:hsla(var(--color-neutral),var(--alpha-background-heavy))}.graphiql-container .CodeMirror-dialog{background:inherit;color:inherit;left:0;right:0;overflow:hidden;padding:var(--px-2) var(--px-6);position:absolute;z-index:6}.graphiql-container .CodeMirror-dialog-top{border-bottom:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));padding-bottom:var(--px-12);top:0}.graphiql-container .CodeMirror-dialog-bottom{border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));bottom:0;padding-top:var(--px-12)}.graphiql-container .CodeMirror-search-hint{display:none}.graphiql-container .CodeMirror-dialog input{border:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));border-radius:var(--border-radius-4);padding:var(--px-4)}.graphiql-container .CodeMirror-dialog input:focus{outline:hsl(var(--color-primary)) solid 2px}.graphiql-container .cm-searching{background-color:hsla(var(--color-warning),var(--alpha-background-light));padding-bottom:1.5px;padding-top:.5px}.CodeMirror-foldmarker{color:#00f;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"▾"}.CodeMirror-foldgutter-folded:after{content:"▸"}.CodeMirror-foldgutter{width:var(--px-12)}.CodeMirror-foldmarker{background-color:hsl(var(--color-info));border-radius:var(--border-radius-4);color:hsl(var(--color-base));font-family:inherit;margin:0 var(--px-4);padding:0 var(--px-8);text-shadow:none}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.CodeMirror-foldgutter-open:after,.CodeMirror-foldgutter-folded:after{margin:0 var(--px-2)}.graphiql-editor{height:100%;position:relative;width:100%}.graphiql-editor.hidden{left:-9999px;position:absolute;top:-9999px;visibility:hidden}.CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:#ffd;border:1px solid black;border-radius:4px;color:#000;font-family:monospace;font-size:10pt;overflow:hidden;padding:2px 5px;position:fixed;white-space:pre;white-space:pre-wrap;z-index:100;max-width:600px;opacity:0;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s}.CodeMirror-lint-mark{background-position:left bottom;background-repeat:repeat-x}.CodeMirror-lint-mark-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=)}.CodeMirror-lint-mark-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==)}.CodeMirror-lint-marker{background-position:center center;background-repeat:no-repeat;cursor:pointer;display:inline-block;height:16px;width:16px;vertical-align:middle;position:relative}.CodeMirror-lint-message{padding-left:18px;background-position:top left;background-repeat:no-repeat}.CodeMirror-lint-marker-warning,.CodeMirror-lint-message-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-error,.CodeMirror-lint-message-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=)}.CodeMirror-lint-marker-multiple{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:right bottom;width:100%;height:100%}.CodeMirror-lint-line-error{background-color:#b74c5114}.CodeMirror-lint-line-warning{background-color:#ffd3001a}.CodeMirror-lint-mark-error,.CodeMirror-lint-mark-warning{background-repeat:repeat-x;background-size:10px 3px;background-position:0 95%}.cm-s-graphiql .CodeMirror-lint-mark-error{color:hsl(var(--color-error))}.CodeMirror-lint-mark-error{background-image:linear-gradient(45deg,transparent 65%,hsl(var(--color-error)) 80%,transparent 90%),linear-gradient(135deg,transparent 5%,hsl(var(--color-error)) 15%,transparent 25%),linear-gradient(135deg,transparent 45%,hsl(var(--color-error)) 55%,transparent 65%),linear-gradient(45deg,transparent 25%,hsl(var(--color-error)) 35%,transparent 50%)}.cm-s-graphiql .CodeMirror-lint-mark-warning{color:hsl(var(--color-warning))}.CodeMirror-lint-mark-warning{background-image:linear-gradient(45deg,transparent 65%,hsl(var(--color-warning)) 80%,transparent 90%),linear-gradient(135deg,transparent 5%,hsl(var(--color-warning)) 15%,transparent 25%),linear-gradient(135deg,transparent 45%,hsl(var(--color-warning)) 55%,transparent 65%),linear-gradient(45deg,transparent 25%,hsl(var(--color-warning)) 35%,transparent 50%)}.CodeMirror-lint-tooltip{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);font-size:var(--font-size-body);font-family:var(--font-family);max-width:600px;overflow:hidden;padding:var(--px-12)}.CodeMirror-lint-message-error,.CodeMirror-lint-message-warning{background-image:none;padding:0}.CodeMirror-lint-message-error{color:hsl(var(--color-error))}.CodeMirror-lint-message-warning{color:hsl(var(--color-warning))}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px #0003;border-radius:3px;border:1px solid silver;background:white;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.CodeMirror-hints{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);display:grid;font-family:var(--font-family);font-size:var(--font-size-body);grid-template-columns:auto fit-content(300px);max-height:264px;padding:0}.CodeMirror-hint{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));grid-column:1 / 2;margin:var(--px-4);padding:var(--px-6) var(--px-8)!important}.CodeMirror-hint:not(:first-child){margin-top:0}li.CodeMirror-hint-active{background:hsla(var(--color-primary),var(--alpha-background-medium));color:hsl(var(--color-primary))}.CodeMirror-hint-information{border-left:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));grid-column:2 / 3;grid-row:1 / 99999;max-height:264px;overflow:auto;padding:var(--px-12)}.CodeMirror-hint-information-header{display:flex;align-items:baseline}.CodeMirror-hint-information-field-name{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-hint-information-type-name{color:inherit;text-decoration:none}.CodeMirror-hint-information-type-name:hover{text-decoration:underline dotted}.CodeMirror-hint-information-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12)}.CodeMirror-info{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1);max-height:300px;max-width:400px;opacity:0;overflow:auto;padding:var(--px-12);position:fixed;transition:opacity .15s;z-index:10}.CodeMirror-info a{color:inherit;text-decoration:none}.CodeMirror-info a:hover{text-decoration:underline dotted}.CodeMirror-info .CodeMirror-info-header{display:flex;align-items:baseline}.CodeMirror-info .CodeMirror-info-header>.type-name,.CodeMirror-info .CodeMirror-info-header>.field-name,.CodeMirror-info .CodeMirror-info-header>.arg-name,.CodeMirror-info .CodeMirror-info-header>.directive-name,.CodeMirror-info .CodeMirror-info-header>.enum-value{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-info .type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-info .info-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12);overflow:hidden}.CodeMirror-jump-token{text-decoration:underline dotted;cursor:pointer}.auto-inserted-leaf.cm-property{animation-duration:6s;animation-name:insertionFade;border-radius:var(--border-radius-4);padding:var(--px-2)}@keyframes insertionFade{0%,to{background-color:none}15%,85%{background-color:hsla(var(--color-warning),var(--alpha-background-light))}}button.graphiql-toolbar-button{display:flex;align-items:center;justify-content:center;height:var(--toolbar-width);width:var(--toolbar-width)}button.graphiql-toolbar-button.error{background:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-execute-button-wrapper{position:relative}button.graphiql-execute-button{background-color:hsl(var(--color-primary));border:none;border-radius:var(--border-radius-8);cursor:pointer;height:var(--toolbar-width);padding:0;width:var(--toolbar-width)}button.graphiql-execute-button:hover{background-color:hsla(var(--color-primary),.9)}button.graphiql-execute-button:active{background-color:hsla(var(--color-primary),.8)}button.graphiql-execute-button:focus{outline:hsla(var(--color-primary),.8) auto 1px}button.graphiql-execute-button>svg{color:#fff;display:block;height:var(--px-16);margin:auto;width:var(--px-16)}button.graphiql-toolbar-menu{display:block;height:var(--toolbar-width);width:var(--toolbar-width)} + +/*!*********************************************************************************************************************!*\ + !*** css ../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js!./style.css ***! + \*********************************************************************************************************************/ +/* Everything */ +.graphiql-container { + background-color: hsl(var(--color-base)); + display: flex; + height: 100%; + margin: 0; + overflow: hidden; + width: 100%; +} +/* The sidebar */ +.graphiql-container .graphiql-sidebar { + display: flex; + flex-direction: column; + justify-content: space-between; + padding: var(--px-8); + width: var(--sidebar-width); +} +.graphiql-container .graphiql-sidebar .graphiql-sidebar-section { + display: flex; + flex-direction: column; + gap: var(--px-8); +} +.graphiql-container .graphiql-sidebar button { + display: flex; + align-items: center; + justify-content: center; + color: hsla(var(--color-neutral), var(--alpha-secondary)); + height: calc(var(--sidebar-width) - (2 * var(--px-8))); + width: calc(var(--sidebar-width) - (2 * var(--px-8))); +} +.graphiql-container .graphiql-sidebar button.active { + color: hsla(var(--color-neutral), 1); +} +.graphiql-container .graphiql-sidebar button:not(:first-child) { + margin-top: var(--px-4); +} +.graphiql-container .graphiql-sidebar button > svg { + height: var(--px-20); + width: var(--px-20); +} +/* The main content, i.e. everything except the sidebar */ +.graphiql-container .graphiql-main { + display: flex; + flex: 1; + min-width: 0; +} +/* The current session and tabs */ +.graphiql-container .graphiql-sessions { + background-color: hsla(var(--color-neutral), var(--alpha-background-light)); + /* Adding the 8px of padding to the inner border radius of the query editor */ + border-radius: calc(var(--border-radius-12) + var(--px-8)); + display: flex; + flex-direction: column; + flex: 1; + max-height: 100%; + margin: var(--px-16); + margin-left: 0; + min-width: 0; +} +/* The session header containing tabs and the logo */ +.graphiql-container .graphiql-session-header { + align-items: center; + display: flex; + justify-content: space-between; + height: var(--session-header-height); +} +/* The button to add a new tab */ +button.graphiql-tab-add { + height: 100%; + padding: var(--px-4); +} +button.graphiql-tab-add > svg { + color: hsla(var(--color-neutral), var(--alpha-secondary)); + display: block; + height: var(--px-16); + width: var(--px-16); +} +/* The right-hand-side of the session header */ +.graphiql-container .graphiql-session-header-right { + align-items: center; + display: flex; +} +/* The GraphiQL logo */ +.graphiql-container .graphiql-logo { + color: hsla(var(--color-neutral), var(--alpha-secondary)); + font-size: var(--font-size-h4); + font-weight: var(--font-weight-medium); + padding: var(--px-12) var(--px-16); +} +/* Undo default link styling for the default GraphiQL logo link */ +.graphiql-container .graphiql-logo .graphiql-logo-link { + color: hsla(var(--color-neutral), var(--alpha-secondary)); + text-decoration: none; +} +/* The editor of the session */ +.graphiql-container .graphiql-session { + display: flex; + flex: 1; + padding: 0 var(--px-8) var(--px-8); +} +/* All editors (query, variable, headers) */ +.graphiql-container .graphiql-editors { + background-color: hsl(var(--color-base)); + border-radius: calc(var(--border-radius-12)); + box-shadow: var(--popover-box-shadow); + display: flex; + flex: 1; + flex-direction: column; +} +.graphiql-container .graphiql-editors.full-height { + margin-top: calc(var(--px-8) - var(--session-header-height)); +} +/* The query editor and the toolbar */ +.graphiql-container .graphiql-query-editor { + border-bottom: 1px solid + hsla(var(--color-neutral), var(--alpha-background-heavy)); + padding: var(--px-16); + column-gap: var(--px-16); + display: flex; + width: 100%; +} +/* The vertical toolbar next to the query editor */ +.graphiql-container .graphiql-toolbar { + width: var(--toolbar-width); +} +.graphiql-container .graphiql-toolbar > * + * { + margin-top: var(--px-8); +} +/* The toolbar icons */ +.graphiql-toolbar-icon { + color: hsla(var(--color-neutral), var(--alpha-tertiary)); + display: block; + height: calc(var(--toolbar-width) - (var(--px-8) * 2)); + width: calc(var(--toolbar-width) - (var(--px-8) * 2)); +} +/* The tab bar for editor tools */ +.graphiql-container .graphiql-editor-tools { + cursor: row-resize; + display: flex; + width: 100%; + column-gap: var(--px-8); + padding: var(--px-8); +} +.graphiql-container .graphiql-editor-tools button { + color: hsla(var(--color-neutral), var(--alpha-secondary)); +} +.graphiql-container .graphiql-editor-tools button.active { + color: hsla(var(--color-neutral), 1); +} +/* The tab buttons to switch between editor tools */ +.graphiql-container + .graphiql-editor-tools + > button:not(.graphiql-toggle-editor-tools) { + padding: var(--px-8) var(--px-12); +} +.graphiql-container .graphiql-editor-tools .graphiql-toggle-editor-tools { + margin-left: auto; +} +/* An editor tool, e.g. variable or header editor */ +.graphiql-container .graphiql-editor-tool { + flex: 1; + padding: var(--px-16); +} +/** + * The way CodeMirror editors are styled they overflow their containing + * element. For some OS-browser-combinations this might cause overlap issues, + * setting the position of this to `relative` makes sure this element will + * always be on top of any editors. + */ +.graphiql-container .graphiql-toolbar, +.graphiql-container .graphiql-editor-tools, +.graphiql-container .graphiql-editor-tool { + position: relative; +} +/* The response view */ +.graphiql-container .graphiql-response { + --editor-background: transparent; + display: flex; + width: 100%; + flex-direction: column; +} +/* The results editor wrapping container */ +.graphiql-container .graphiql-response .result-window { + position: relative; + flex: 1; +} +/* The footer below the response view */ +.graphiql-container .graphiql-footer { + border-top: 1px solid + hsla(var(--color-neutral), var(--alpha-background-heavy)); +} +/* The plugin container */ +.graphiql-container .graphiql-plugin { + border-left: 1px solid + hsla(var(--color-neutral), var(--alpha-background-heavy)); + flex: 1; + overflow-y: auto; + padding: var(--px-16); +} +/* Generic drag bar for horizontal resizing */ +.graphiql-horizontal-drag-bar { + width: var(--px-12); + cursor: col-resize; +} +.graphiql-horizontal-drag-bar:hover::after { + border: var(--px-2) solid + hsla(var(--color-neutral), var(--alpha-background-heavy)); + border-radius: var(--border-radius-2); + content: ''; + display: block; + height: 25%; + margin: 0 auto; + position: relative; + /* (100% - 25%) / 2 = 37.5% */ + top: 37.5%; + width: 0; +} +.graphiql-container .graphiql-chevron-icon { + color: hsla(var(--color-neutral), var(--alpha-tertiary)); + display: block; + height: var(--px-12); + margin: var(--px-12); + width: var(--px-12); +} +/* Generic spin animation */ +.graphiql-spin { + animation: spin 0.8s linear 0s infinite; +} +@keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +/* The header of the settings dialog */ +.graphiql-dialog .graphiql-dialog-header { + align-items: center; + display: flex; + justify-content: space-between; + padding: var(--px-24); +} +/* The title of the settings dialog */ +.graphiql-dialog .graphiql-dialog-title { + font-size: var(--font-size-h3); + font-weight: var(--font-weight-medium); + margin: 0; +} +/* A section inside the settings dialog */ +.graphiql-dialog .graphiql-dialog-section { + align-items: center; + border-top: 1px solid + hsla(var(--color-neutral), var(--alpha-background-heavy)); + display: flex; + justify-content: space-between; + padding: var(--px-24); +} +.graphiql-dialog .graphiql-dialog-section > :not(:first-child) { + margin-left: var(--px-24); +} +/* The section title in the settings dialog */ +.graphiql-dialog .graphiql-dialog-section-title { + font-size: var(--font-size-h4); + font-weight: var(--font-weight-medium); +} +/* The section caption in the settings dialog */ +.graphiql-dialog .graphiql-dialog-section-caption { + color: hsla(var(--color-neutral), var(--alpha-secondary)); +} +.graphiql-dialog .graphiql-warning-text { + color: hsl(var(--color-warning)); + font-weight: var(--font-weight-medium); +} +.graphiql-dialog .graphiql-table { + border-collapse: collapse; + width: 100%; +} +.graphiql-dialog .graphiql-table :is(th, td) { + border: 1px solid hsla(var(--color-neutral), var(--alpha-background-heavy)); + padding: var(--px-8) var(--px-12); +} +/* A single key the short-key dialog */ +.graphiql-dialog .graphiql-key { + background-color: hsla(var(--color-neutral), var(--alpha-background-medium)); + border-radius: var(--border-radius-4); + padding: var(--px-4); +} +/* Avoid showing native tooltips for icons with titles */ +.graphiql-container svg { + pointer-events: none; +} + + +/*# sourceMappingURL=graphiql.css.map*/ \ No newline at end of file diff --git a/src/Laravel/public/graphiql/graphiql.min.js b/src/Laravel/public/graphiql/graphiql.min.js new file mode 100644 index 00000000000..39edad7af18 --- /dev/null +++ b/src/Laravel/public/graphiql/graphiql.min.js @@ -0,0 +1,83643 @@ +/******/ (function() { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js": +/*!**************************************************************************************!*\ + !*** ../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js ***! + \**************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _memoize = _interopRequireDefault(__webpack_require__(/*! @emotion/memoize */ "../../../node_modules/@emotion/memoize/dist/memoize.browser.esm.js")); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23 + +var index = (0, _memoize.default)(function (prop) { + return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 + /* o */ && prop.charCodeAt(1) === 110 + /* n */ && prop.charCodeAt(2) < 91; +} +/* Z+1 */); +var _default = index; +exports["default"] = _default; + +/***/ }), + +/***/ "../../../node_modules/@emotion/memoize/dist/memoize.browser.esm.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/@emotion/memoize/dist/memoize.browser.esm.js ***! + \**************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +function memoize(fn) { + var cache = {}; + return function (arg) { + if (cache[arg] === undefined) cache[arg] = fn(arg); + return cache[arg]; + }; +} +var _default = memoize; +exports["default"] = _default; + +/***/ }), + +/***/ "../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js ***! + \****************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.computePosition = exports.autoPlacement = exports.arrow = void 0; +exports.detectOverflow = detectOverflow; +exports.offset = exports.limitShift = exports.inline = exports.hide = exports.flip = void 0; +exports.rectToClientRect = rectToClientRect; +exports.size = exports.shift = void 0; +function getAlignment(placement) { + return placement.split('-')[1]; +} +function getLengthFromAxis(axis) { + return axis === 'y' ? 'height' : 'width'; +} +function getSide(placement) { + return placement.split('-')[0]; +} +function getMainAxisFromPlacement(placement) { + return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y'; +} +function computeCoordsFromPlacement(_ref, placement, rtl) { + let { + reference, + floating + } = _ref; + const commonX = reference.x + reference.width / 2 - floating.width / 2; + const commonY = reference.y + reference.height / 2 - floating.height / 2; + const mainAxis = getMainAxisFromPlacement(placement); + const length = getLengthFromAxis(mainAxis); + const commonAlign = reference[length] / 2 - floating[length] / 2; + const side = getSide(placement); + const isVertical = mainAxis === 'x'; + let coords; + switch (side) { + case 'top': + coords = { + x: commonX, + y: reference.y - floating.height + }; + break; + case 'bottom': + coords = { + x: commonX, + y: reference.y + reference.height + }; + break; + case 'right': + coords = { + x: reference.x + reference.width, + y: commonY + }; + break; + case 'left': + coords = { + x: reference.x - floating.width, + y: commonY + }; + break; + default: + coords = { + x: reference.x, + y: reference.y + }; + } + switch (getAlignment(placement)) { + case 'start': + coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1); + break; + case 'end': + coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1); + break; + } + return coords; +} + +/** + * Computes the `x` and `y` coordinates that will place the floating element + * next to a reference element when it is given a certain positioning strategy. + * + * This export does not have any `platform` interface logic. You will need to + * write one for the platform you are using Floating UI with. + */ +const computePosition = async (reference, floating, config) => { + const { + placement = 'bottom', + strategy = 'absolute', + middleware = [], + platform + } = config; + const validMiddleware = middleware.filter(Boolean); + const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating)); + let rects = await platform.getElementRects({ + reference, + floating, + strategy + }); + let { + x, + y + } = computeCoordsFromPlacement(rects, placement, rtl); + let statefulPlacement = placement; + let middlewareData = {}; + let resetCount = 0; + for (let i = 0; i < validMiddleware.length; i++) { + const { + name, + fn + } = validMiddleware[i]; + const { + x: nextX, + y: nextY, + data, + reset + } = await fn({ + x, + y, + initialPlacement: placement, + placement: statefulPlacement, + strategy, + middlewareData, + rects, + platform, + elements: { + reference, + floating + } + }); + x = nextX != null ? nextX : x; + y = nextY != null ? nextY : y; + middlewareData = { + ...middlewareData, + [name]: { + ...middlewareData[name], + ...data + } + }; + if (reset && resetCount <= 50) { + resetCount++; + if (typeof reset === 'object') { + if (reset.placement) { + statefulPlacement = reset.placement; + } + if (reset.rects) { + rects = reset.rects === true ? await platform.getElementRects({ + reference, + floating, + strategy + }) : reset.rects; + } + ({ + x, + y + } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); + } + i = -1; + continue; + } + } + return { + x, + y, + placement: statefulPlacement, + strategy, + middlewareData + }; +}; +exports.computePosition = computePosition; +function evaluate(value, param) { + return typeof value === 'function' ? value(param) : value; +} +function expandPaddingObject(padding) { + return { + top: 0, + right: 0, + bottom: 0, + left: 0, + ...padding + }; +} +function getSideObjectFromPadding(padding) { + return typeof padding !== 'number' ? expandPaddingObject(padding) : { + top: padding, + right: padding, + bottom: padding, + left: padding + }; +} +function rectToClientRect(rect) { + return { + ...rect, + top: rect.y, + left: rect.x, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }; +} + +/** + * Resolves with an object of overflow side offsets that determine how much the + * element is overflowing a given clipping boundary on each side. + * - positive = overflowing the boundary by that number of pixels + * - negative = how many pixels left before it will overflow + * - 0 = lies flush with the boundary + * @see https://floating-ui.com/docs/detectOverflow + */ +async function detectOverflow(state, options) { + var _await$platform$isEle; + if (options === void 0) { + options = {}; + } + const { + x, + y, + platform, + rects, + elements, + strategy + } = state; + const { + boundary = 'clippingAncestors', + rootBoundary = 'viewport', + elementContext = 'floating', + altBoundary = false, + padding = 0 + } = evaluate(options, state); + const paddingObject = getSideObjectFromPadding(padding); + const altContext = elementContext === 'floating' ? 'reference' : 'floating'; + const element = elements[altBoundary ? altContext : elementContext]; + const clippingClientRect = rectToClientRect(await platform.getClippingRect({ + element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))), + boundary, + rootBoundary, + strategy + })); + const rect = elementContext === 'floating' ? { + ...rects.floating, + x, + y + } : rects.reference; + const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)); + const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || { + x: 1, + y: 1 + } : { + x: 1, + y: 1 + }; + const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({ + rect, + offsetParent, + strategy + }) : rect); + return { + top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, + bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, + left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, + right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x + }; +} +const min = Math.min; +const max = Math.max; +function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); +} + +/** + * Provides data to position an inner element of the floating element so that it + * appears centered to the reference element. + * @see https://floating-ui.com/docs/arrow + */ +const arrow = options => ({ + name: 'arrow', + options, + async fn(state) { + const { + x, + y, + placement, + rects, + platform, + elements + } = state; + // Since `element` is required, we don't Partial<> the type. + const { + element, + padding = 0 + } = evaluate(options, state) || {}; + if (element == null) { + return {}; + } + const paddingObject = getSideObjectFromPadding(padding); + const coords = { + x, + y + }; + const axis = getMainAxisFromPlacement(placement); + const length = getLengthFromAxis(axis); + const arrowDimensions = await platform.getDimensions(element); + const isYAxis = axis === 'y'; + const minProp = isYAxis ? 'top' : 'left'; + const maxProp = isYAxis ? 'bottom' : 'right'; + const clientProp = isYAxis ? 'clientHeight' : 'clientWidth'; + const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; + const startDiff = coords[axis] - rects.reference[axis]; + const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element)); + let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0; + + // DOM platform can return `window` as the `offsetParent`. + if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) { + clientSize = elements.floating[clientProp] || rects.floating[length]; + } + const centerToReference = endDiff / 2 - startDiff / 2; + + // If the padding is large enough that it causes the arrow to no longer be + // centered, modify the padding so that it is centered. + const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1; + const minPadding = min(paddingObject[minProp], largestPossiblePadding); + const maxPadding = min(paddingObject[maxProp], largestPossiblePadding); + + // Make sure the arrow doesn't overflow the floating element if the center + // point is outside the floating element's bounds. + const min$1 = minPadding; + const max = clientSize - arrowDimensions[length] - maxPadding; + const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; + const offset = within(min$1, center, max); + + // If the reference is small enough that the arrow's padding causes it to + // to point to nothing for an aligned placement, adjust the offset of the + // floating element itself. This stops `shift()` from taking action, but can + // be worked around by calling it again after the `arrow()` if desired. + const shouldAddOffset = getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0; + const alignmentOffset = shouldAddOffset ? center < min$1 ? min$1 - center : max - center : 0; + return { + [axis]: coords[axis] - alignmentOffset, + data: { + [axis]: offset, + centerOffset: center - offset + } + }; + } +}); +exports.arrow = arrow; +const sides = ['top', 'right', 'bottom', 'left']; +const allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + "-start", side + "-end"), []); +const oppositeSideMap = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' +}; +function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]); +} +function getAlignmentSides(placement, rects, rtl) { + if (rtl === void 0) { + rtl = false; + } + const alignment = getAlignment(placement); + const mainAxis = getMainAxisFromPlacement(placement); + const length = getLengthFromAxis(mainAxis); + let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top'; + if (rects.reference[length] > rects.floating[length]) { + mainAlignmentSide = getOppositePlacement(mainAlignmentSide); + } + return { + main: mainAlignmentSide, + cross: getOppositePlacement(mainAlignmentSide) + }; +} +const oppositeAlignmentMap = { + start: 'end', + end: 'start' +}; +function getOppositeAlignmentPlacement(placement) { + return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]); +} +function getPlacementList(alignment, autoAlignment, allowedPlacements) { + const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement); + return allowedPlacementsSortedByAlignment.filter(placement => { + if (alignment) { + return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false); + } + return true; + }); +} +/** + * Optimizes the visibility of the floating element by choosing the placement + * that has the most space available automatically, without needing to specify a + * preferred placement. Alternative to `flip`. + * @see https://floating-ui.com/docs/autoPlacement + */ +const autoPlacement = function (options) { + if (options === void 0) { + options = {}; + } + return { + name: 'autoPlacement', + options, + async fn(state) { + var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE; + const { + rects, + middlewareData, + placement, + platform, + elements + } = state; + const { + crossAxis = false, + alignment, + allowedPlacements = allPlacements, + autoAlignment = true, + ...detectOverflowOptions + } = evaluate(options, state); + const placements = alignment !== undefined || allowedPlacements === allPlacements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements; + const overflow = await detectOverflow(state, detectOverflowOptions); + const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0; + const currentPlacement = placements[currentIndex]; + if (currentPlacement == null) { + return {}; + } + const { + main, + cross + } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))); + + // Make `computeCoords` start from the right place. + if (placement !== currentPlacement) { + return { + reset: { + placement: placements[0] + } + }; + } + const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]]; + const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), { + placement: currentPlacement, + overflows: currentOverflows + }]; + const nextPlacement = placements[currentIndex + 1]; + + // There are more placements to check. + if (nextPlacement) { + return { + data: { + index: currentIndex + 1, + overflows: allOverflows + }, + reset: { + placement: nextPlacement + } + }; + } + const placementsSortedByMostSpace = allOverflows.map(d => { + const alignment = getAlignment(d.placement); + return [d.placement, alignment && crossAxis ? + // Check along the mainAxis and main crossAxis side. + d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) : + // Check only the mainAxis. + d.overflows[0], d.overflows]; + }).sort((a, b) => a[1] - b[1]); + const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0, + // Aligned placements should not check their opposite crossAxis + // side. + getAlignment(d[0]) ? 2 : 3).every(v => v <= 0)); + const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0]; + if (resetPlacement !== placement) { + return { + data: { + index: currentIndex + 1, + overflows: allOverflows + }, + reset: { + placement: resetPlacement + } + }; + } + return {}; + } + }; +}; +exports.autoPlacement = autoPlacement; +function getExpandedPlacements(placement) { + const oppositePlacement = getOppositePlacement(placement); + return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; +} +function getSideList(side, isStart, rtl) { + const lr = ['left', 'right']; + const rl = ['right', 'left']; + const tb = ['top', 'bottom']; + const bt = ['bottom', 'top']; + switch (side) { + case 'top': + case 'bottom': + if (rtl) return isStart ? rl : lr; + return isStart ? lr : rl; + case 'left': + case 'right': + return isStart ? tb : bt; + default: + return []; + } +} +function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { + const alignment = getAlignment(placement); + let list = getSideList(getSide(placement), direction === 'start', rtl); + if (alignment) { + list = list.map(side => side + "-" + alignment); + if (flipAlignment) { + list = list.concat(list.map(getOppositeAlignmentPlacement)); + } + } + return list; +} + +/** + * Optimizes the visibility of the floating element by flipping the `placement` + * in order to keep it in view when the preferred placement(s) will overflow the + * clipping boundary. Alternative to `autoPlacement`. + * @see https://floating-ui.com/docs/flip + */ +const flip = function (options) { + if (options === void 0) { + options = {}; + } + return { + name: 'flip', + options, + async fn(state) { + var _middlewareData$flip; + const { + placement, + middlewareData, + rects, + initialPlacement, + platform, + elements + } = state; + const { + mainAxis: checkMainAxis = true, + crossAxis: checkCrossAxis = true, + fallbackPlacements: specifiedFallbackPlacements, + fallbackStrategy = 'bestFit', + fallbackAxisSideDirection = 'none', + flipAlignment = true, + ...detectOverflowOptions + } = evaluate(options, state); + const side = getSide(placement); + const isBasePlacement = getSide(initialPlacement) === initialPlacement; + const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)); + const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); + if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') { + fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); + } + const placements = [initialPlacement, ...fallbackPlacements]; + const overflow = await detectOverflow(state, detectOverflowOptions); + const overflows = []; + let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; + if (checkMainAxis) { + overflows.push(overflow[side]); + } + if (checkCrossAxis) { + const { + main, + cross + } = getAlignmentSides(placement, rects, rtl); + overflows.push(overflow[main], overflow[cross]); + } + overflowsData = [...overflowsData, { + placement, + overflows + }]; + + // One or more sides is overflowing. + if (!overflows.every(side => side <= 0)) { + var _middlewareData$flip2, _overflowsData$filter; + const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; + const nextPlacement = placements[nextIndex]; + if (nextPlacement) { + // Try next placement and re-run the lifecycle. + return { + data: { + index: nextIndex, + overflows: overflowsData + }, + reset: { + placement: nextPlacement + } + }; + } + + // First, find the candidates that fit on the mainAxis side of overflow, + // then find the placement that fits the best on the main crossAxis side. + let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement; + + // Otherwise fallback. + if (!resetPlacement) { + switch (fallbackStrategy) { + case 'bestFit': + { + var _overflowsData$map$so; + const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0]; + if (placement) { + resetPlacement = placement; + } + break; + } + case 'initialPlacement': + resetPlacement = initialPlacement; + break; + } + } + if (placement !== resetPlacement) { + return { + reset: { + placement: resetPlacement + } + }; + } + } + return {}; + } + }; +}; +exports.flip = flip; +function getSideOffsets(overflow, rect) { + return { + top: overflow.top - rect.height, + right: overflow.right - rect.width, + bottom: overflow.bottom - rect.height, + left: overflow.left - rect.width + }; +} +function isAnySideFullyClipped(overflow) { + return sides.some(side => overflow[side] >= 0); +} +/** + * Provides data to hide the floating element in applicable situations, such as + * when it is not in the same clipping context as the reference element. + * @see https://floating-ui.com/docs/hide + */ +const hide = function (options) { + if (options === void 0) { + options = {}; + } + return { + name: 'hide', + options, + async fn(state) { + const { + rects + } = state; + const { + strategy = 'referenceHidden', + ...detectOverflowOptions + } = evaluate(options, state); + switch (strategy) { + case 'referenceHidden': + { + const overflow = await detectOverflow(state, { + ...detectOverflowOptions, + elementContext: 'reference' + }); + const offsets = getSideOffsets(overflow, rects.reference); + return { + data: { + referenceHiddenOffsets: offsets, + referenceHidden: isAnySideFullyClipped(offsets) + } + }; + } + case 'escaped': + { + const overflow = await detectOverflow(state, { + ...detectOverflowOptions, + altBoundary: true + }); + const offsets = getSideOffsets(overflow, rects.floating); + return { + data: { + escapedOffsets: offsets, + escaped: isAnySideFullyClipped(offsets) + } + }; + } + default: + { + return {}; + } + } + } + }; +}; +exports.hide = hide; +function getBoundingRect(rects) { + const minX = min(...rects.map(rect => rect.left)); + const minY = min(...rects.map(rect => rect.top)); + const maxX = max(...rects.map(rect => rect.right)); + const maxY = max(...rects.map(rect => rect.bottom)); + return { + x: minX, + y: minY, + width: maxX - minX, + height: maxY - minY + }; +} +function getRectsByLine(rects) { + const sortedRects = rects.slice().sort((a, b) => a.y - b.y); + const groups = []; + let prevRect = null; + for (let i = 0; i < sortedRects.length; i++) { + const rect = sortedRects[i]; + if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) { + groups.push([rect]); + } else { + groups[groups.length - 1].push(rect); + } + prevRect = rect; + } + return groups.map(rect => rectToClientRect(getBoundingRect(rect))); +} +/** + * Provides improved positioning for inline reference elements that can span + * over multiple lines, such as hyperlinks or range selections. + * @see https://floating-ui.com/docs/inline + */ +const inline = function (options) { + if (options === void 0) { + options = {}; + } + return { + name: 'inline', + options, + async fn(state) { + const { + placement, + elements, + rects, + platform, + strategy + } = state; + // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a + // ClientRect's bounds, despite the event listener being triggered. A + // padding of 2 seems to handle this issue. + const { + padding = 2, + x, + y + } = evaluate(options, state); + const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []); + const clientRects = getRectsByLine(nativeClientRects); + const fallback = rectToClientRect(getBoundingRect(nativeClientRects)); + const paddingObject = getSideObjectFromPadding(padding); + function getBoundingClientRect() { + // There are two rects and they are disjoined. + if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) { + // Find the first rect in which the point is fully inside. + return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback; + } + + // There are 2 or more connected rects. + if (clientRects.length >= 2) { + if (getMainAxisFromPlacement(placement) === 'x') { + const firstRect = clientRects[0]; + const lastRect = clientRects[clientRects.length - 1]; + const isTop = getSide(placement) === 'top'; + const top = firstRect.top; + const bottom = lastRect.bottom; + const left = isTop ? firstRect.left : lastRect.left; + const right = isTop ? firstRect.right : lastRect.right; + const width = right - left; + const height = bottom - top; + return { + top, + bottom, + left, + right, + width, + height, + x: left, + y: top + }; + } + const isLeftSide = getSide(placement) === 'left'; + const maxRight = max(...clientRects.map(rect => rect.right)); + const minLeft = min(...clientRects.map(rect => rect.left)); + const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight); + const top = measureRects[0].top; + const bottom = measureRects[measureRects.length - 1].bottom; + const left = minLeft; + const right = maxRight; + const width = right - left; + const height = bottom - top; + return { + top, + bottom, + left, + right, + width, + height, + x: left, + y: top + }; + } + return fallback; + } + const resetRects = await platform.getElementRects({ + reference: { + getBoundingClientRect + }, + floating: elements.floating, + strategy + }); + if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) { + return { + reset: { + rects: resetRects + } + }; + } + return {}; + } + }; +}; +exports.inline = inline; +async function convertValueToCoords(state, options) { + const { + placement, + platform, + elements + } = state; + const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)); + const side = getSide(placement); + const alignment = getAlignment(placement); + const isVertical = getMainAxisFromPlacement(placement) === 'x'; + const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1; + const crossAxisMulti = rtl && isVertical ? -1 : 1; + const rawValue = evaluate(options, state); + + // eslint-disable-next-line prefer-const + let { + mainAxis, + crossAxis, + alignmentAxis + } = typeof rawValue === 'number' ? { + mainAxis: rawValue, + crossAxis: 0, + alignmentAxis: null + } : { + mainAxis: 0, + crossAxis: 0, + alignmentAxis: null, + ...rawValue + }; + if (alignment && typeof alignmentAxis === 'number') { + crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis; + } + return isVertical ? { + x: crossAxis * crossAxisMulti, + y: mainAxis * mainAxisMulti + } : { + x: mainAxis * mainAxisMulti, + y: crossAxis * crossAxisMulti + }; +} + +/** + * Modifies the placement by translating the floating element along the + * specified axes. + * A number (shorthand for `mainAxis` or distance), or an axes configuration + * object may be passed. + * @see https://floating-ui.com/docs/offset + */ +const offset = function (options) { + if (options === void 0) { + options = 0; + } + return { + name: 'offset', + options, + async fn(state) { + const { + x, + y + } = state; + const diffCoords = await convertValueToCoords(state, options); + return { + x: x + diffCoords.x, + y: y + diffCoords.y, + data: diffCoords + }; + } + }; +}; +exports.offset = offset; +function getCrossAxis(axis) { + return axis === 'x' ? 'y' : 'x'; +} + +/** + * Optimizes the visibility of the floating element by shifting it in order to + * keep it in view when it will overflow the clipping boundary. + * @see https://floating-ui.com/docs/shift + */ +const shift = function (options) { + if (options === void 0) { + options = {}; + } + return { + name: 'shift', + options, + async fn(state) { + const { + x, + y, + placement + } = state; + const { + mainAxis: checkMainAxis = true, + crossAxis: checkCrossAxis = false, + limiter = { + fn: _ref => { + let { + x, + y + } = _ref; + return { + x, + y + }; + } + }, + ...detectOverflowOptions + } = evaluate(options, state); + const coords = { + x, + y + }; + const overflow = await detectOverflow(state, detectOverflowOptions); + const mainAxis = getMainAxisFromPlacement(getSide(placement)); + const crossAxis = getCrossAxis(mainAxis); + let mainAxisCoord = coords[mainAxis]; + let crossAxisCoord = coords[crossAxis]; + if (checkMainAxis) { + const minSide = mainAxis === 'y' ? 'top' : 'left'; + const maxSide = mainAxis === 'y' ? 'bottom' : 'right'; + const min = mainAxisCoord + overflow[minSide]; + const max = mainAxisCoord - overflow[maxSide]; + mainAxisCoord = within(min, mainAxisCoord, max); + } + if (checkCrossAxis) { + const minSide = crossAxis === 'y' ? 'top' : 'left'; + const maxSide = crossAxis === 'y' ? 'bottom' : 'right'; + const min = crossAxisCoord + overflow[minSide]; + const max = crossAxisCoord - overflow[maxSide]; + crossAxisCoord = within(min, crossAxisCoord, max); + } + const limitedCoords = limiter.fn({ + ...state, + [mainAxis]: mainAxisCoord, + [crossAxis]: crossAxisCoord + }); + return { + ...limitedCoords, + data: { + x: limitedCoords.x - x, + y: limitedCoords.y - y + } + }; + } + }; +}; +/** + * Built-in `limiter` that will stop `shift()` at a certain point. + */ +exports.shift = shift; +const limitShift = function (options) { + if (options === void 0) { + options = {}; + } + return { + options, + fn(state) { + const { + x, + y, + placement, + rects, + middlewareData + } = state; + const { + offset = 0, + mainAxis: checkMainAxis = true, + crossAxis: checkCrossAxis = true + } = evaluate(options, state); + const coords = { + x, + y + }; + const mainAxis = getMainAxisFromPlacement(placement); + const crossAxis = getCrossAxis(mainAxis); + let mainAxisCoord = coords[mainAxis]; + let crossAxisCoord = coords[crossAxis]; + const rawOffset = evaluate(offset, state); + const computedOffset = typeof rawOffset === 'number' ? { + mainAxis: rawOffset, + crossAxis: 0 + } : { + mainAxis: 0, + crossAxis: 0, + ...rawOffset + }; + if (checkMainAxis) { + const len = mainAxis === 'y' ? 'height' : 'width'; + const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis; + const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis; + if (mainAxisCoord < limitMin) { + mainAxisCoord = limitMin; + } else if (mainAxisCoord > limitMax) { + mainAxisCoord = limitMax; + } + } + if (checkCrossAxis) { + var _middlewareData$offse, _middlewareData$offse2; + const len = mainAxis === 'y' ? 'width' : 'height'; + const isOriginSide = ['top', 'left'].includes(getSide(placement)); + const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis); + const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0); + if (crossAxisCoord < limitMin) { + crossAxisCoord = limitMin; + } else if (crossAxisCoord > limitMax) { + crossAxisCoord = limitMax; + } + } + return { + [mainAxis]: mainAxisCoord, + [crossAxis]: crossAxisCoord + }; + } + }; +}; + +/** + * Provides data that allows you to change the size of the floating element — + * for instance, prevent it from overflowing the clipping boundary or match the + * width of the reference element. + * @see https://floating-ui.com/docs/size + */ +exports.limitShift = limitShift; +const size = function (options) { + if (options === void 0) { + options = {}; + } + return { + name: 'size', + options, + async fn(state) { + const { + placement, + rects, + platform, + elements + } = state; + const { + apply = () => {}, + ...detectOverflowOptions + } = evaluate(options, state); + const overflow = await detectOverflow(state, detectOverflowOptions); + const side = getSide(placement); + const alignment = getAlignment(placement); + const axis = getMainAxisFromPlacement(placement); + const isXAxis = axis === 'x'; + const { + width, + height + } = rects.floating; + let heightSide; + let widthSide; + if (side === 'top' || side === 'bottom') { + heightSide = side; + widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right'; + } else { + widthSide = side; + heightSide = alignment === 'end' ? 'top' : 'bottom'; + } + const overflowAvailableHeight = height - overflow[heightSide]; + const overflowAvailableWidth = width - overflow[widthSide]; + const noShift = !state.middlewareData.shift; + let availableHeight = overflowAvailableHeight; + let availableWidth = overflowAvailableWidth; + if (isXAxis) { + const maximumClippingWidth = width - overflow.left - overflow.right; + availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth; + } else { + const maximumClippingHeight = height - overflow.top - overflow.bottom; + availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight; + } + if (noShift && !alignment) { + const xMin = max(overflow.left, 0); + const xMax = max(overflow.right, 0); + const yMin = max(overflow.top, 0); + const yMax = max(overflow.bottom, 0); + if (isXAxis) { + availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)); + } else { + availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)); + } + } + await apply({ + ...state, + availableWidth, + availableHeight + }); + const nextDimensions = await platform.getDimensions(elements.floating); + if (width !== nextDimensions.width || height !== nextDimensions.height) { + return { + reset: { + rects: true + } + }; + } + return {}; + } + }; +}; +exports.size = size; + +/***/ }), + +/***/ "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js ***! + \**************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "arrow", ({ + enumerable: true, + get: function () { + return _core.arrow; + } +})); +Object.defineProperty(exports, "autoPlacement", ({ + enumerable: true, + get: function () { + return _core.autoPlacement; + } +})); +exports.autoUpdate = autoUpdate; +exports.computePosition = void 0; +Object.defineProperty(exports, "detectOverflow", ({ + enumerable: true, + get: function () { + return _core.detectOverflow; + } +})); +Object.defineProperty(exports, "flip", ({ + enumerable: true, + get: function () { + return _core.flip; + } +})); +exports.getOverflowAncestors = getOverflowAncestors; +Object.defineProperty(exports, "hide", ({ + enumerable: true, + get: function () { + return _core.hide; + } +})); +Object.defineProperty(exports, "inline", ({ + enumerable: true, + get: function () { + return _core.inline; + } +})); +Object.defineProperty(exports, "limitShift", ({ + enumerable: true, + get: function () { + return _core.limitShift; + } +})); +Object.defineProperty(exports, "offset", ({ + enumerable: true, + get: function () { + return _core.offset; + } +})); +exports.platform = void 0; +Object.defineProperty(exports, "shift", ({ + enumerable: true, + get: function () { + return _core.shift; + } +})); +Object.defineProperty(exports, "size", ({ + enumerable: true, + get: function () { + return _core.size; + } +})); +var _core = __webpack_require__(/*! @floating-ui/core */ "../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js"); +function getWindow(node) { + var _node$ownerDocument; + return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; +} +function getComputedStyle$1(element) { + return getWindow(element).getComputedStyle(element); +} +function isNode(value) { + return value instanceof getWindow(value).Node; +} +function getNodeName(node) { + return isNode(node) ? (node.nodeName || '').toLowerCase() : ''; +} +function isHTMLElement(value) { + return value instanceof getWindow(value).HTMLElement; +} +function isElement(value) { + return value instanceof getWindow(value).Element; +} +function isShadowRoot(node) { + // Browsers without `ShadowRoot` support. + if (typeof ShadowRoot === 'undefined') { + return false; + } + const OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; +} +function isOverflowElement(element) { + const { + overflow, + overflowX, + overflowY, + display + } = getComputedStyle$1(element); + return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display); +} +function isTableElement(element) { + return ['table', 'td', 'th'].includes(getNodeName(element)); +} +function isContainingBlock(element) { + const safari = isSafari(); + const css = getComputedStyle$1(element); + + // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block + return css.transform !== 'none' || css.perspective !== 'none' || !safari && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !safari && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value)); +} +function isSafari() { + if (typeof CSS === 'undefined' || !CSS.supports) return false; + return CSS.supports('-webkit-backdrop-filter', 'none'); +} +function isLastTraversableNode(node) { + return ['html', 'body', '#document'].includes(getNodeName(node)); +} +const min = Math.min; +const max = Math.max; +const round = Math.round; +function getCssDimensions(element) { + const css = getComputedStyle$1(element); + // In testing environments, the `width` and `height` properties are empty + // strings for SVG elements, returning NaN. Fallback to `0` in this case. + let width = parseFloat(css.width) || 0; + let height = parseFloat(css.height) || 0; + const hasOffset = isHTMLElement(element); + const offsetWidth = hasOffset ? element.offsetWidth : width; + const offsetHeight = hasOffset ? element.offsetHeight : height; + const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; + if (shouldFallback) { + width = offsetWidth; + height = offsetHeight; + } + return { + width, + height, + fallback: shouldFallback + }; +} +function unwrapElement(element) { + return !isElement(element) ? element.contextElement : element; +} +const FALLBACK_SCALE = { + x: 1, + y: 1 +}; +function getScale(element) { + const domElement = unwrapElement(element); + if (!isHTMLElement(domElement)) { + return FALLBACK_SCALE; + } + const rect = domElement.getBoundingClientRect(); + const { + width, + height, + fallback + } = getCssDimensions(domElement); + let x = (fallback ? round(rect.width) : rect.width) / width; + let y = (fallback ? round(rect.height) : rect.height) / height; + + // 0, NaN, or Infinity should always fallback to 1. + + if (!x || !Number.isFinite(x)) { + x = 1; + } + if (!y || !Number.isFinite(y)) { + y = 1; + } + return { + x, + y + }; +} +const noOffsets = { + x: 0, + y: 0 +}; +function getVisualOffsets(element, isFixed, floatingOffsetParent) { + var _win$visualViewport, _win$visualViewport2; + if (isFixed === void 0) { + isFixed = true; + } + if (!isSafari()) { + return noOffsets; + } + const win = element ? getWindow(element) : window; + if (!floatingOffsetParent || isFixed && floatingOffsetParent !== win) { + return noOffsets; + } + return { + x: ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0, + y: ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0 + }; +} +function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { + if (includeScale === void 0) { + includeScale = false; + } + if (isFixedStrategy === void 0) { + isFixedStrategy = false; + } + const clientRect = element.getBoundingClientRect(); + const domElement = unwrapElement(element); + let scale = FALLBACK_SCALE; + if (includeScale) { + if (offsetParent) { + if (isElement(offsetParent)) { + scale = getScale(offsetParent); + } + } else { + scale = getScale(element); + } + } + const visualOffsets = getVisualOffsets(domElement, isFixedStrategy, offsetParent); + let x = (clientRect.left + visualOffsets.x) / scale.x; + let y = (clientRect.top + visualOffsets.y) / scale.y; + let width = clientRect.width / scale.x; + let height = clientRect.height / scale.y; + if (domElement) { + const win = getWindow(domElement); + const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; + let currentIFrame = win.frameElement; + while (currentIFrame && offsetParent && offsetWin !== win) { + const iframeScale = getScale(currentIFrame); + const iframeRect = currentIFrame.getBoundingClientRect(); + const css = getComputedStyle(currentIFrame); + iframeRect.x += (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; + iframeRect.y += (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; + x *= iframeScale.x; + y *= iframeScale.y; + width *= iframeScale.x; + height *= iframeScale.y; + x += iframeRect.x; + y += iframeRect.y; + currentIFrame = getWindow(currentIFrame).frameElement; + } + } + return (0, _core.rectToClientRect)({ + width, + height, + x, + y + }); +} +function getDocumentElement(node) { + return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement; +} +function getNodeScroll(element) { + if (isElement(element)) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + return { + scrollLeft: element.pageXOffset, + scrollTop: element.pageYOffset + }; +} +function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { + let { + rect, + offsetParent, + strategy + } = _ref; + const isOffsetParentAnElement = isHTMLElement(offsetParent); + const documentElement = getDocumentElement(offsetParent); + if (offsetParent === documentElement) { + return rect; + } + let scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + let scale = { + x: 1, + y: 1 + }; + const offsets = { + x: 0, + y: 0 + }; + if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') { + if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isHTMLElement(offsetParent)) { + const offsetRect = getBoundingClientRect(offsetParent); + scale = getScale(offsetParent); + offsets.x = offsetRect.x + offsetParent.clientLeft; + offsets.y = offsetRect.y + offsetParent.clientTop; + } + } + return { + width: rect.width * scale.x, + height: rect.height * scale.y, + x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x, + y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + }; +} +function getWindowScrollBarX(element) { + // If has a CSS width greater than the viewport, then this will be + // incorrect for RTL. + return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft; +} + +// Gets the entire size of the scrollable document area, even extending outside +// of the `` and `` rect bounds if horizontally scrollable. +function getDocumentRect(element) { + const html = getDocumentElement(element); + const scroll = getNodeScroll(element); + const body = element.ownerDocument.body; + const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); + const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); + let x = -scroll.scrollLeft + getWindowScrollBarX(element); + const y = -scroll.scrollTop; + if (getComputedStyle$1(body).direction === 'rtl') { + x += max(html.clientWidth, body.clientWidth) - width; + } + return { + width, + height, + x, + y + }; +} +function getParentNode(node) { + if (getNodeName(node) === 'html') { + return node; + } + const result = + // Step into the shadow DOM of the parent of a slotted node. + node.assignedSlot || + // DOM Element detected. + node.parentNode || + // ShadowRoot detected. + isShadowRoot(node) && node.host || + // Fallback. + getDocumentElement(node); + return isShadowRoot(result) ? result.host : result; +} +function getNearestOverflowAncestor(node) { + const parentNode = getParentNode(node); + if (isLastTraversableNode(parentNode)) { + // `getParentNode` will never return a `Document` due to the fallback + // check, so it's either the or element. + return parentNode.ownerDocument.body; + } + if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { + return parentNode; + } + return getNearestOverflowAncestor(parentNode); +} +function getOverflowAncestors(node, list) { + var _node$ownerDocument; + if (list === void 0) { + list = []; + } + const scrollableAncestor = getNearestOverflowAncestor(node); + const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body); + const win = getWindow(scrollableAncestor); + if (isBody) { + return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []); + } + return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor)); +} +function getViewportRect(element, strategy) { + const win = getWindow(element); + const html = getDocumentElement(element); + const visualViewport = win.visualViewport; + let width = html.clientWidth; + let height = html.clientHeight; + let x = 0; + let y = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + const visualViewportBased = isSafari(); + if (!visualViewportBased || visualViewportBased && strategy === 'fixed') { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + return { + width, + height, + x, + y + }; +} + +// Returns the inner client rect, subtracting scrollbars if present. +function getInnerBoundingClientRect(element, strategy) { + const clientRect = getBoundingClientRect(element, true, strategy === 'fixed'); + const top = clientRect.top + element.clientTop; + const left = clientRect.left + element.clientLeft; + const scale = isHTMLElement(element) ? getScale(element) : { + x: 1, + y: 1 + }; + const width = element.clientWidth * scale.x; + const height = element.clientHeight * scale.y; + const x = left * scale.x; + const y = top * scale.y; + return { + width, + height, + x, + y + }; +} +function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { + let rect; + if (clippingAncestor === 'viewport') { + rect = getViewportRect(element, strategy); + } else if (clippingAncestor === 'document') { + rect = getDocumentRect(getDocumentElement(element)); + } else if (isElement(clippingAncestor)) { + rect = getInnerBoundingClientRect(clippingAncestor, strategy); + } else { + const visualOffsets = getVisualOffsets(element); + rect = { + ...clippingAncestor, + x: clippingAncestor.x - visualOffsets.x, + y: clippingAncestor.y - visualOffsets.y + }; + } + return (0, _core.rectToClientRect)(rect); +} +function hasFixedPositionAncestor(element, stopNode) { + const parentNode = getParentNode(element); + if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) { + return false; + } + return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode); +} + +// A "clipping ancestor" is an `overflow` element with the characteristic of +// clipping (or hiding) child elements. This returns all clipping ancestors +// of the given element up the tree. +function getClippingElementAncestors(element, cache) { + const cachedResult = cache.get(element); + if (cachedResult) { + return cachedResult; + } + let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body'); + let currentContainingBlockComputedStyle = null; + const elementIsFixed = getComputedStyle$1(element).position === 'fixed'; + let currentNode = elementIsFixed ? getParentNode(element) : element; + + // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block + while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { + const computedStyle = getComputedStyle$1(currentNode); + const currentNodeIsContaining = isContainingBlock(currentNode); + if (!currentNodeIsContaining && computedStyle.position === 'fixed') { + currentContainingBlockComputedStyle = null; + } + const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode); + if (shouldDropCurrentNode) { + // Drop non-containing blocks. + result = result.filter(ancestor => ancestor !== currentNode); + } else { + // Record last containing block for next iteration. + currentContainingBlockComputedStyle = computedStyle; + } + currentNode = getParentNode(currentNode); + } + cache.set(element, result); + return result; +} + +// Gets the maximum area that the element is visible in due to any number of +// clipping ancestors. +function getClippingRect(_ref) { + let { + element, + boundary, + rootBoundary, + strategy + } = _ref; + const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary); + const clippingAncestors = [...elementClippingAncestors, rootBoundary]; + const firstClippingAncestor = clippingAncestors[0]; + const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => { + const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy)); + return { + width: clippingRect.right - clippingRect.left, + height: clippingRect.bottom - clippingRect.top, + x: clippingRect.left, + y: clippingRect.top + }; +} +function getDimensions(element) { + return getCssDimensions(element); +} +function getTrueOffsetParent(element, polyfill) { + if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') { + return null; + } + if (polyfill) { + return polyfill(element); + } + return element.offsetParent; +} +function getContainingBlock(element) { + let currentNode = getParentNode(element); + while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { + if (isContainingBlock(currentNode)) { + return currentNode; + } else { + currentNode = getParentNode(currentNode); + } + } + return null; +} + +// Gets the closest ancestor positioned element. Handles some edge cases, +// such as table ancestors and cross browser bugs. +function getOffsetParent(element, polyfill) { + const window = getWindow(element); + if (!isHTMLElement(element)) { + return window; + } + let offsetParent = getTrueOffsetParent(element, polyfill); + while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') { + offsetParent = getTrueOffsetParent(offsetParent, polyfill); + } + if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) { + return window; + } + return offsetParent || getContainingBlock(element) || window; +} +function getRectRelativeToOffsetParent(element, offsetParent, strategy) { + const isOffsetParentAnElement = isHTMLElement(offsetParent); + const documentElement = getDocumentElement(offsetParent); + const isFixed = strategy === 'fixed'; + const rect = getBoundingClientRect(element, true, isFixed, offsetParent); + let scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + const offsets = { + x: 0, + y: 0 + }; + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isHTMLElement(offsetParent)) { + const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); + offsets.x = offsetRect.x + offsetParent.clientLeft; + offsets.y = offsetRect.y + offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; +} +const platform = { + getClippingRect, + convertOffsetParentRelativeRectToViewportRelativeRect, + isElement, + getDimensions, + getOffsetParent, + getDocumentElement, + getScale, + async getElementRects(_ref) { + let { + reference, + floating, + strategy + } = _ref; + const getOffsetParentFn = this.getOffsetParent || getOffsetParent; + const getDimensionsFn = this.getDimensions; + return { + reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy), + floating: { + x: 0, + y: 0, + ...(await getDimensionsFn(floating)) + } + }; + }, + getClientRects: element => Array.from(element.getClientRects()), + isRTL: element => getComputedStyle$1(element).direction === 'rtl' +}; + +/** + * Automatically updates the position of the floating element when necessary. + * Should only be called when the floating element is mounted on the DOM or + * visible on the screen. + * @returns cleanup function that should be invoked when the floating element is + * removed from the DOM or hidden from the screen. + * @see https://floating-ui.com/docs/autoUpdate + */ +exports.platform = platform; +function autoUpdate(reference, floating, update, options) { + if (options === void 0) { + options = {}; + } + const { + ancestorScroll = true, + ancestorResize = true, + elementResize = true, + animationFrame = false + } = options; + const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : reference.contextElement ? getOverflowAncestors(reference.contextElement) : []), ...getOverflowAncestors(floating)] : []; + ancestors.forEach(ancestor => { + // ignores Window, checks for [object VisualViewport] + const isVisualViewport = !isElement(ancestor) && ancestor.toString().includes('V'); + if (ancestorScroll && (animationFrame ? isVisualViewport : true)) { + ancestor.addEventListener('scroll', update, { + passive: true + }); + } + ancestorResize && ancestor.addEventListener('resize', update); + }); + let observer = null; + if (elementResize) { + observer = new ResizeObserver(() => { + update(); + }); + isElement(reference) && !animationFrame && observer.observe(reference); + if (!isElement(reference) && reference.contextElement && !animationFrame) { + observer.observe(reference.contextElement); + } + observer.observe(floating); + } + let frameId; + let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; + if (animationFrame) { + frameLoop(); + } + function frameLoop() { + const nextRefRect = getBoundingClientRect(reference); + if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) { + update(); + } + prevRefRect = nextRefRect; + frameId = requestAnimationFrame(frameLoop); + } + update(); + return () => { + var _observer; + ancestors.forEach(ancestor => { + ancestorScroll && ancestor.removeEventListener('scroll', update); + ancestorResize && ancestor.removeEventListener('resize', update); + }); + (_observer = observer) == null ? void 0 : _observer.disconnect(); + observer = null; + if (animationFrame) { + cancelAnimationFrame(frameId); + } + }; +} + +/** + * Computes the `x` and `y` coordinates that will place the floating element + * next to a reference element when it is given a certain CSS positioning + * strategy. + */ +const computePosition = (reference, floating, options) => { + // This caches the expensive `getClippingElementAncestors` function so that + // multiple lifecycle resets re-use the same result. It only lives for a + // single call. If other functions become expensive, we can add them as well. + const cache = new Map(); + const mergedOptions = { + platform, + ...options + }; + const platformWithCache = { + ...mergedOptions.platform, + _c: cache + }; + return (0, _core.computePosition)(reference, floating, { + ...mergedOptions, + platform: platformWithCache + }); +}; +exports.computePosition = computePosition; + +/***/ }), + +/***/ "../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js": +/*!**************************************************************************************!*\ + !*** ../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js ***! + \**************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.arrow = void 0; +Object.defineProperty(exports, "autoPlacement", ({ + enumerable: true, + get: function () { + return _dom.autoPlacement; + } +})); +Object.defineProperty(exports, "autoUpdate", ({ + enumerable: true, + get: function () { + return _dom.autoUpdate; + } +})); +Object.defineProperty(exports, "computePosition", ({ + enumerable: true, + get: function () { + return _dom.computePosition; + } +})); +Object.defineProperty(exports, "detectOverflow", ({ + enumerable: true, + get: function () { + return _dom.detectOverflow; + } +})); +Object.defineProperty(exports, "flip", ({ + enumerable: true, + get: function () { + return _dom.flip; + } +})); +Object.defineProperty(exports, "getOverflowAncestors", ({ + enumerable: true, + get: function () { + return _dom.getOverflowAncestors; + } +})); +Object.defineProperty(exports, "hide", ({ + enumerable: true, + get: function () { + return _dom.hide; + } +})); +Object.defineProperty(exports, "inline", ({ + enumerable: true, + get: function () { + return _dom.inline; + } +})); +Object.defineProperty(exports, "limitShift", ({ + enumerable: true, + get: function () { + return _dom.limitShift; + } +})); +Object.defineProperty(exports, "offset", ({ + enumerable: true, + get: function () { + return _dom.offset; + } +})); +Object.defineProperty(exports, "platform", ({ + enumerable: true, + get: function () { + return _dom.platform; + } +})); +Object.defineProperty(exports, "shift", ({ + enumerable: true, + get: function () { + return _dom.shift; + } +})); +Object.defineProperty(exports, "size", ({ + enumerable: true, + get: function () { + return _dom.size; + } +})); +exports.useFloating = useFloating; +var _dom = __webpack_require__(/*! @floating-ui/dom */ "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js"); +var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var ReactDOM = _interopRequireWildcard(__webpack_require__(/*! react-dom */ "react-dom")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +/** + * Provides data to position an inner element of the floating element so that it + * appears centered to the reference element. + * This wraps the core `arrow` middleware to allow React refs as the element. + * @see https://floating-ui.com/docs/arrow + */ +const arrow = options => { + function isRef(value) { + return {}.hasOwnProperty.call(value, 'current'); + } + return { + name: 'arrow', + options, + fn(state) { + const { + element, + padding + } = typeof options === 'function' ? options(state) : options; + if (element && isRef(element)) { + if (element.current != null) { + return (0, _dom.arrow)({ + element: element.current, + padding + }).fn(state); + } + return {}; + } else if (element) { + return (0, _dom.arrow)({ + element, + padding + }).fn(state); + } + return {}; + } + }; +}; +exports.arrow = arrow; +var index = typeof document !== 'undefined' ? React.useLayoutEffect : React.useEffect; + +// Fork of `fast-deep-equal` that only does the comparisons we need and compares +// functions +function deepEqual(a, b) { + if (a === b) { + return true; + } + if (typeof a !== typeof b) { + return false; + } + if (typeof a === 'function' && a.toString() === b.toString()) { + return true; + } + let length, i, keys; + if (a && b && typeof a == 'object') { + if (Array.isArray(a)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) { + if (!deepEqual(a[i], b[i])) { + return false; + } + } + return true; + } + keys = Object.keys(a); + length = keys.length; + if (length !== Object.keys(b).length) { + return false; + } + for (i = length; i-- !== 0;) { + if (!{}.hasOwnProperty.call(b, keys[i])) { + return false; + } + } + for (i = length; i-- !== 0;) { + const key = keys[i]; + if (key === '_owner' && a.$$typeof) { + continue; + } + if (!deepEqual(a[key], b[key])) { + return false; + } + } + return true; + } + return a !== a && b !== b; +} +function getDPR(element) { + if (typeof window === 'undefined') { + return 1; + } + const win = element.ownerDocument.defaultView || window; + return win.devicePixelRatio || 1; +} +function roundByDPR(element, value) { + const dpr = getDPR(element); + return Math.round(value * dpr) / dpr; +} +function useLatestRef(value) { + const ref = React.useRef(value); + index(() => { + ref.current = value; + }); + return ref; +} + +/** + * Provides data to position a floating element. + * @see https://floating-ui.com/docs/react + */ +function useFloating(options) { + if (options === void 0) { + options = {}; + } + const { + placement = 'bottom', + strategy = 'absolute', + middleware = [], + platform, + elements: { + reference: externalReference, + floating: externalFloating + } = {}, + transform = true, + whileElementsMounted, + open + } = options; + const [data, setData] = React.useState({ + x: 0, + y: 0, + strategy, + placement, + middlewareData: {}, + isPositioned: false + }); + const [latestMiddleware, setLatestMiddleware] = React.useState(middleware); + if (!deepEqual(latestMiddleware, middleware)) { + setLatestMiddleware(middleware); + } + const [_reference, _setReference] = React.useState(null); + const [_floating, _setFloating] = React.useState(null); + const setReference = React.useCallback(node => { + if (node != referenceRef.current) { + referenceRef.current = node; + _setReference(node); + } + }, [_setReference]); + const setFloating = React.useCallback(node => { + if (node !== floatingRef.current) { + floatingRef.current = node; + _setFloating(node); + } + }, [_setFloating]); + const referenceEl = externalReference || _reference; + const floatingEl = externalFloating || _floating; + const referenceRef = React.useRef(null); + const floatingRef = React.useRef(null); + const dataRef = React.useRef(data); + const whileElementsMountedRef = useLatestRef(whileElementsMounted); + const platformRef = useLatestRef(platform); + const update = React.useCallback(() => { + if (!referenceRef.current || !floatingRef.current) { + return; + } + const config = { + placement, + strategy, + middleware: latestMiddleware + }; + if (platformRef.current) { + config.platform = platformRef.current; + } + (0, _dom.computePosition)(referenceRef.current, floatingRef.current, config).then(data => { + const fullData = { + ...data, + isPositioned: true + }; + if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) { + dataRef.current = fullData; + ReactDOM.flushSync(() => { + setData(fullData); + }); + } + }); + }, [latestMiddleware, placement, strategy, platformRef]); + index(() => { + if (open === false && dataRef.current.isPositioned) { + dataRef.current.isPositioned = false; + setData(data => ({ + ...data, + isPositioned: false + })); + } + }, [open]); + const isMountedRef = React.useRef(false); + index(() => { + isMountedRef.current = true; + return () => { + isMountedRef.current = false; + }; + }, []); + index(() => { + if (referenceEl) referenceRef.current = referenceEl; + if (floatingEl) floatingRef.current = floatingEl; + if (referenceEl && floatingEl) { + if (whileElementsMountedRef.current) { + return whileElementsMountedRef.current(referenceEl, floatingEl, update); + } else { + update(); + } + } + }, [referenceEl, floatingEl, update, whileElementsMountedRef]); + const refs = React.useMemo(() => ({ + reference: referenceRef, + floating: floatingRef, + setReference, + setFloating + }), [setReference, setFloating]); + const elements = React.useMemo(() => ({ + reference: referenceEl, + floating: floatingEl + }), [referenceEl, floatingEl]); + const floatingStyles = React.useMemo(() => { + const initialStyles = { + position: strategy, + left: 0, + top: 0 + }; + if (!elements.floating) { + return initialStyles; + } + const x = roundByDPR(elements.floating, data.x); + const y = roundByDPR(elements.floating, data.y); + if (transform) { + return { + ...initialStyles, + transform: "translate(" + x + "px, " + y + "px)", + ...(getDPR(elements.floating) >= 1.5 && { + willChange: 'transform' + }) + }; + } + return { + position: strategy, + left: x, + top: y + }; + }, [strategy, transform, elements.floating, data.x, data.y]); + return React.useMemo(() => ({ + ...data, + update, + refs, + elements, + floatingStyles + }), [data, update, refs, elements, floatingStyles]); +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/animation/dist/Animation.es.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/@motionone/animation/dist/Animation.es.js ***! + \***********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Animation = void 0; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +var _easingEs = __webpack_require__(/*! ./utils/easing.es.js */ "../../../node_modules/@motionone/animation/dist/utils/easing.es.js"); +class Animation { + constructor(output) { + let keyframes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 1]; + let { + easing, + duration: initialDuration = _utils.defaults.duration, + delay = _utils.defaults.delay, + endDelay = _utils.defaults.endDelay, + repeat = _utils.defaults.repeat, + offset, + direction = "normal" + } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + this.startTime = null; + this.rate = 1; + this.t = 0; + this.cancelTimestamp = null; + this.easing = _utils.noopReturn; + this.duration = 0; + this.totalDuration = 0; + this.repeat = 0; + this.playState = "idle"; + this.finished = new Promise((resolve, reject) => { + this.resolve = resolve; + this.reject = reject; + }); + easing = easing || _utils.defaults.easing; + if ((0, _utils.isEasingGenerator)(easing)) { + const custom = easing.createAnimation(keyframes); + easing = custom.easing; + keyframes = custom.keyframes || keyframes; + initialDuration = custom.duration || initialDuration; + } + this.repeat = repeat; + this.easing = (0, _utils.isEasingList)(easing) ? _utils.noopReturn : (0, _easingEs.getEasingFunction)(easing); + this.updateDuration(initialDuration); + const interpolate$1 = (0, _utils.interpolate)(keyframes, offset, (0, _utils.isEasingList)(easing) ? easing.map(_easingEs.getEasingFunction) : _utils.noopReturn); + this.tick = timestamp => { + var _a; + // TODO: Temporary fix for OptionsResolver typing + delay = delay; + let t = 0; + if (this.pauseTime !== undefined) { + t = this.pauseTime; + } else { + t = (timestamp - this.startTime) * this.rate; + } + this.t = t; + // Convert to seconds + t /= 1000; + // Rebase on delay + t = Math.max(t - delay, 0); + /** + * If this animation has finished, set the current time + * to the total duration. + */ + if (this.playState === "finished" && this.pauseTime === undefined) { + t = this.totalDuration; + } + /** + * Get the current progress (0-1) of the animation. If t is > + * than duration we'll get values like 2.5 (midway through the + * third iteration) + */ + const progress = t / this.duration; + // TODO progress += iterationStart + /** + * Get the current iteration (0 indexed). For instance the floor of + * 2.5 is 2. + */ + let currentIteration = Math.floor(progress); + /** + * Get the current progress of the iteration by taking the remainder + * so 2.5 is 0.5 through iteration 2 + */ + let iterationProgress = progress % 1.0; + if (!iterationProgress && progress >= 1) { + iterationProgress = 1; + } + /** + * If iteration progress is 1 we count that as the end + * of the previous iteration. + */ + iterationProgress === 1 && currentIteration--; + /** + * Reverse progress if we're not running in "normal" direction + */ + const iterationIsOdd = currentIteration % 2; + if (direction === "reverse" || direction === "alternate" && iterationIsOdd || direction === "alternate-reverse" && !iterationIsOdd) { + iterationProgress = 1 - iterationProgress; + } + const p = t >= this.totalDuration ? 1 : Math.min(iterationProgress, 1); + const latest = interpolate$1(this.easing(p)); + output(latest); + const isAnimationFinished = this.pauseTime === undefined && (this.playState === "finished" || t >= this.totalDuration + endDelay); + if (isAnimationFinished) { + this.playState = "finished"; + (_a = this.resolve) === null || _a === void 0 ? void 0 : _a.call(this, latest); + } else if (this.playState !== "idle") { + this.frameRequestId = requestAnimationFrame(this.tick); + } + }; + this.play(); + } + play() { + const now = performance.now(); + this.playState = "running"; + if (this.pauseTime !== undefined) { + this.startTime = now - this.pauseTime; + } else if (!this.startTime) { + this.startTime = now; + } + this.cancelTimestamp = this.startTime; + this.pauseTime = undefined; + this.frameRequestId = requestAnimationFrame(this.tick); + } + pause() { + this.playState = "paused"; + this.pauseTime = this.t; + } + finish() { + this.playState = "finished"; + this.tick(0); + } + stop() { + var _a; + this.playState = "idle"; + if (this.frameRequestId !== undefined) { + cancelAnimationFrame(this.frameRequestId); + } + (_a = this.reject) === null || _a === void 0 ? void 0 : _a.call(this, false); + } + cancel() { + this.stop(); + this.tick(this.cancelTimestamp); + } + reverse() { + this.rate *= -1; + } + commitStyles() {} + updateDuration(duration) { + this.duration = duration; + this.totalDuration = duration * (this.repeat + 1); + } + get currentTime() { + return this.t; + } + set currentTime(t) { + if (this.pauseTime !== undefined || this.rate === 0) { + this.pauseTime = t; + } else { + this.startTime = performance.now() - t / this.rate; + } + } + get playbackRate() { + return this.rate; + } + set playbackRate(rate) { + this.rate = rate; + } +} +exports.Animation = Animation; + +/***/ }), + +/***/ "../../../node_modules/@motionone/animation/dist/index.es.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/@motionone/animation/dist/index.es.js ***! + \*******************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "Animation", ({ + enumerable: true, + get: function () { + return _AnimationEs.Animation; + } +})); +Object.defineProperty(exports, "getEasingFunction", ({ + enumerable: true, + get: function () { + return _easingEs.getEasingFunction; + } +})); +var _AnimationEs = __webpack_require__(/*! ./Animation.es.js */ "../../../node_modules/@motionone/animation/dist/Animation.es.js"); +var _easingEs = __webpack_require__(/*! ./utils/easing.es.js */ "../../../node_modules/@motionone/animation/dist/utils/easing.es.js"); + +/***/ }), + +/***/ "../../../node_modules/@motionone/animation/dist/utils/easing.es.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/@motionone/animation/dist/utils/easing.es.js ***! + \**************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getEasingFunction = getEasingFunction; +var _easing = __webpack_require__(/*! @motionone/easing */ "../../../node_modules/@motionone/easing/dist/index.es.js"); +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +const namedEasings = { + ease: (0, _easing.cubicBezier)(0.25, 0.1, 0.25, 1.0), + "ease-in": (0, _easing.cubicBezier)(0.42, 0.0, 1.0, 1.0), + "ease-in-out": (0, _easing.cubicBezier)(0.42, 0.0, 0.58, 1.0), + "ease-out": (0, _easing.cubicBezier)(0.0, 0.0, 0.58, 1.0) +}; +const functionArgsRegex = /\((.*?)\)/; +function getEasingFunction(definition) { + // If already an easing function, return + if ((0, _utils.isFunction)(definition)) return definition; + // If an easing curve definition, return bezier function + if ((0, _utils.isCubicBezier)(definition)) return (0, _easing.cubicBezier)(...definition); + // If we have a predefined easing function, return + if (namedEasings[definition]) return namedEasings[definition]; + // If this is a steps function, attempt to create easing curve + if (definition.startsWith("steps")) { + const args = functionArgsRegex.exec(definition); + if (args) { + const argsArray = args[1].split(","); + return (0, _easing.steps)(parseFloat(argsArray[0]), argsArray[1].trim()); + } + } + return _utils.noopReturn; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js ***! + \*****************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.animateStyle = animateStyle; +var _dataEs = __webpack_require__(/*! ./data.es.js */ "../../../node_modules/@motionone/dom/dist/animate/data.es.js"); +var _cssVarEs = __webpack_require__(/*! ./utils/css-var.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/css-var.es.js"); +var _animation = __webpack_require__(/*! @motionone/animation */ "../../../node_modules/@motionone/animation/dist/index.es.js"); +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +var _transformsEs = __webpack_require__(/*! ./utils/transforms.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js"); +var _easingEs = __webpack_require__(/*! ./utils/easing.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/easing.es.js"); +var _featureDetectionEs = __webpack_require__(/*! ./utils/feature-detection.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/feature-detection.es.js"); +var _keyframesEs = __webpack_require__(/*! ./utils/keyframes.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/keyframes.es.js"); +var _styleEs = __webpack_require__(/*! ./style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/style.es.js"); +var _getStyleNameEs = __webpack_require__(/*! ./utils/get-style-name.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js"); +var _stopAnimationEs = __webpack_require__(/*! ./utils/stop-animation.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/stop-animation.es.js"); +function getDevToolsRecord() { + return window.__MOTION_DEV_TOOLS_RECORD; +} +function animateStyle(element, key, keyframesDefinition) { + let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + const record = getDevToolsRecord(); + const isRecording = options.record !== false && record; + let animation; + let { + duration = _utils.defaults.duration, + delay = _utils.defaults.delay, + endDelay = _utils.defaults.endDelay, + repeat = _utils.defaults.repeat, + easing = _utils.defaults.easing, + direction, + offset, + allowWebkitAcceleration = false + } = options; + const data = (0, _dataEs.getAnimationData)(element); + let canAnimateNatively = _featureDetectionEs.supports.waapi(); + const valueIsTransform = (0, _transformsEs.isTransform)(key); + /** + * If this is an individual transform, we need to map its + * key to a CSS variable and update the element's transform style + */ + valueIsTransform && (0, _transformsEs.addTransformToElement)(element, key); + const name = (0, _getStyleNameEs.getStyleName)(key); + const motionValue = (0, _dataEs.getMotionValue)(data.values, name); + /** + * Get definition of value, this will be used to convert numerical + * keyframes into the default value type. + */ + const definition = _transformsEs.transformDefinitions.get(name); + /** + * Stop the current animation, if any. Because this will trigger + * commitStyles (DOM writes) and we might later trigger DOM reads, + * this is fired now and we return a factory function to create + * the actual animation that can get called in batch, + */ + (0, _stopAnimationEs.stopAnimation)(motionValue.animation, !((0, _utils.isEasingGenerator)(easing) && motionValue.generator) && options.record !== false); + /** + * Batchable factory function containing all DOM reads. + */ + return () => { + const readInitialValue = () => { + var _a, _b; + return (_b = (_a = _styleEs.style.get(element, name)) !== null && _a !== void 0 ? _a : definition === null || definition === void 0 ? void 0 : definition.initialValue) !== null && _b !== void 0 ? _b : 0; + }; + /** + * Replace null values with the previous keyframe value, or read + * it from the DOM if it's the first keyframe. + */ + let keyframes = (0, _keyframesEs.hydrateKeyframes)((0, _keyframesEs.keyframesList)(keyframesDefinition), readInitialValue); + if ((0, _utils.isEasingGenerator)(easing)) { + const custom = easing.createAnimation(keyframes, readInitialValue, valueIsTransform, name, motionValue); + easing = custom.easing; + if (custom.keyframes !== undefined) keyframes = custom.keyframes; + if (custom.duration !== undefined) duration = custom.duration; + } + /** + * If this is a CSS variable we need to register it with the browser + * before it can be animated natively. We also set it with setProperty + * rather than directly onto the element.style object. + */ + if ((0, _cssVarEs.isCssVar)(name)) { + if (_featureDetectionEs.supports.cssRegisterProperty()) { + (0, _cssVarEs.registerCssVariable)(name); + } else { + canAnimateNatively = false; + } + } + /** + * If we can animate this value with WAAPI, do so. Currently this only + * feature detects CSS.registerProperty but could check WAAPI too. + */ + if (canAnimateNatively) { + /** + * Convert numbers to default value types. Currently this only supports + * transforms but it could also support other value types. + */ + if (definition) { + keyframes = keyframes.map(value => (0, _utils.isNumber)(value) ? definition.toDefaultUnit(value) : value); + } + /** + * If this browser doesn't support partial/implicit keyframes we need to + * explicitly provide one. + */ + if (keyframes.length === 1 && (!_featureDetectionEs.supports.partialKeyframes() || isRecording)) { + keyframes.unshift(readInitialValue()); + } + const animationOptions = { + delay: _utils.time.ms(delay), + duration: _utils.time.ms(duration), + endDelay: _utils.time.ms(endDelay), + easing: !(0, _utils.isEasingList)(easing) ? (0, _easingEs.convertEasing)(easing) : undefined, + direction, + iterations: repeat + 1, + fill: "both" + }; + animation = element.animate({ + [name]: keyframes, + offset, + easing: (0, _utils.isEasingList)(easing) ? easing.map(_easingEs.convertEasing) : undefined + }, animationOptions); + /** + * Polyfill finished Promise in browsers that don't support it + */ + if (!animation.finished) { + animation.finished = new Promise((resolve, reject) => { + animation.onfinish = resolve; + animation.oncancel = reject; + }); + } + const target = keyframes[keyframes.length - 1]; + animation.finished.then(() => { + // Apply styles to target + _styleEs.style.set(element, name, target); + // Ensure fill modes don't persist + animation.cancel(); + }).catch(_utils.noop); + /** + * This forces Webkit to run animations on the main thread by exploiting + * this condition: + * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp?rev=281238#L1099 + * + * This fixes Webkit's timing bugs, like accelerated animations falling + * out of sync with main thread animations and massive delays in starting + * accelerated animations in WKWebView. + */ + if (!allowWebkitAcceleration) animation.playbackRate = 1.000001; + /** + * If we can't animate the value natively then we can fallback to the numbers-only + * polyfill for transforms. + */ + } else if (valueIsTransform) { + /** + * If any keyframe is a string (because we measured it from the DOM), we need to convert + * it into a number before passing to the Animation polyfill. + */ + keyframes = keyframes.map(value => typeof value === "string" ? parseFloat(value) : value); + /** + * If we only have a single keyframe, we need to create an initial keyframe by reading + * the current value from the DOM. + */ + if (keyframes.length === 1) { + keyframes.unshift(parseFloat(readInitialValue())); + } + const render = latest => { + if (definition) latest = definition.toDefaultUnit(latest); + _styleEs.style.set(element, name, latest); + }; + animation = new _animation.Animation(render, keyframes, Object.assign(Object.assign({}, options), { + duration, + easing + })); + } else { + const target = keyframes[keyframes.length - 1]; + _styleEs.style.set(element, name, definition && (0, _utils.isNumber)(target) ? definition.toDefaultUnit(target) : target); + } + if (isRecording) { + record(element, key, keyframes, { + duration, + delay: delay, + easing, + repeat, + offset + }, "motion-one"); + } + motionValue.setAnimation(animation); + return animation; + }; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/data.es.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/data.es.js ***! + \********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getAnimationData = getAnimationData; +exports.getMotionValue = getMotionValue; +var _types = __webpack_require__(/*! @motionone/types */ "../../../node_modules/@motionone/types/dist/index.es.js"); +const data = new WeakMap(); +function getAnimationData(element) { + if (!data.has(element)) { + data.set(element, { + transforms: [], + values: new Map() + }); + } + return data.get(element); +} +function getMotionValue(motionValues, name) { + if (!motionValues.has(name)) { + motionValues.set(name, new _types.MotionValue()); + } + return motionValues.get(name); +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/index.es.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/index.es.js ***! + \*********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.animate = animate; +var _animateStyleEs = __webpack_require__(/*! ./animate-style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js"); +var _optionsEs = __webpack_require__(/*! ./utils/options.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/options.es.js"); +var _resolveElementsEs = __webpack_require__(/*! ../utils/resolve-elements.es.js */ "../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js"); +var _controlsEs = __webpack_require__(/*! ./utils/controls.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/controls.es.js"); +var _staggerEs = __webpack_require__(/*! ../utils/stagger.es.js */ "../../../node_modules/@motionone/dom/dist/utils/stagger.es.js"); +function animate(elements, keyframes) { + let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + elements = (0, _resolveElementsEs.resolveElements)(elements); + const numElements = elements.length; + /** + * Create and start new animations + */ + const animationFactories = []; + for (let i = 0; i < numElements; i++) { + const element = elements[i]; + for (const key in keyframes) { + const valueOptions = (0, _optionsEs.getOptions)(options, key); + valueOptions.delay = (0, _staggerEs.resolveOption)(valueOptions.delay, i, numElements); + const animation = (0, _animateStyleEs.animateStyle)(element, key, keyframes[key], valueOptions); + animationFactories.push(animation); + } + } + return (0, _controlsEs.withControls)(animationFactories, options, + /** + * TODO: + * If easing is set to spring or glide, duration will be dynamically + * generated. Ideally we would dynamically generate this from + * animation.effect.getComputedTiming().duration but this isn't + * supported in iOS13 or our number polyfill. Perhaps it's possible + * to Proxy animations returned from animateStyle that has duration + * as a getter. + */ + options.duration); +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/style.es.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/style.es.js ***! + \*********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.style = void 0; +var _cssVarEs = __webpack_require__(/*! ./utils/css-var.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/css-var.es.js"); +var _getStyleNameEs = __webpack_require__(/*! ./utils/get-style-name.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js"); +var _transformsEs = __webpack_require__(/*! ./utils/transforms.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js"); +const style = { + get: (element, name) => { + name = (0, _getStyleNameEs.getStyleName)(name); + let value = (0, _cssVarEs.isCssVar)(name) ? element.style.getPropertyValue(name) : getComputedStyle(element)[name]; + if (!value && value !== 0) { + const definition = _transformsEs.transformDefinitions.get(name); + if (definition) value = definition.initialValue; + } + return value; + }, + set: (element, name, value) => { + name = (0, _getStyleNameEs.getStyleName)(name); + if ((0, _cssVarEs.isCssVar)(name)) { + element.style.setProperty(name, value); + } else { + element.style[name] = value; + } + } +}; +exports.style = style; + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/controls.es.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/utils/controls.es.js ***! + \******************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.withControls = exports.controls = void 0; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +var _stopAnimationEs = __webpack_require__(/*! ./stop-animation.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/stop-animation.es.js"); +const createAnimation = factory => factory(); +const withControls = function (animationFactory, options) { + let duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _utils.defaults.duration; + return new Proxy({ + animations: animationFactory.map(createAnimation).filter(Boolean), + duration, + options + }, controls); +}; +/** + * TODO: + * Currently this returns the first animation, ideally it would return + * the first active animation. + */ +exports.withControls = withControls; +const getActiveAnimation = state => state.animations[0]; +const controls = { + get: (target, key) => { + const activeAnimation = getActiveAnimation(target); + switch (key) { + case "duration": + return target.duration; + case "currentTime": + return _utils.time.s((activeAnimation === null || activeAnimation === void 0 ? void 0 : activeAnimation[key]) || 0); + case "playbackRate": + case "playState": + return activeAnimation === null || activeAnimation === void 0 ? void 0 : activeAnimation[key]; + case "finished": + if (!target.finished) { + target.finished = Promise.all(target.animations.map(selectFinished)).catch(_utils.noop); + } + return target.finished; + case "stop": + return () => { + target.animations.forEach(animation => (0, _stopAnimationEs.stopAnimation)(animation)); + }; + case "forEachNative": + /** + * This is for internal use only, fire a callback for each + * underlying animation. + */ + return callback => { + target.animations.forEach(animation => callback(animation, target)); + }; + default: + return typeof (activeAnimation === null || activeAnimation === void 0 ? void 0 : activeAnimation[key]) === "undefined" ? undefined : () => target.animations.forEach(animation => animation[key]()); + } + }, + set: (target, key, value) => { + switch (key) { + case "currentTime": + value = _utils.time.ms(value); + case "currentTime": + case "playbackRate": + for (let i = 0; i < target.animations.length; i++) { + target.animations[i][key] = value; + } + return true; + } + return false; + } +}; +exports.controls = controls; +const selectFinished = animation => animation.finished; + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/css-var.es.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/utils/css-var.es.js ***! + \*****************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isCssVar = void 0; +exports.registerCssVariable = registerCssVariable; +exports.registeredProperties = void 0; +var _transformsEs = __webpack_require__(/*! ./transforms.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js"); +const isCssVar = name => name.startsWith("--"); +exports.isCssVar = isCssVar; +const registeredProperties = new Set(); +exports.registeredProperties = registeredProperties; +function registerCssVariable(name) { + if (registeredProperties.has(name)) return; + registeredProperties.add(name); + try { + const { + syntax, + initialValue + } = _transformsEs.transformDefinitions.has(name) ? _transformsEs.transformDefinitions.get(name) : {}; + CSS.registerProperty({ + name, + inherits: false, + syntax, + initialValue + }); + } catch (e) {} +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/easing.es.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/utils/easing.es.js ***! + \****************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.cubicBezierAsString = exports.convertEasing = void 0; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +const convertEasing = easing => (0, _utils.isCubicBezier)(easing) ? cubicBezierAsString(easing) : easing; +exports.convertEasing = convertEasing; +const cubicBezierAsString = _ref => { + let [a, b, c, d] = _ref; + return `cubic-bezier(${a}, ${b}, ${c}, ${d})`; +}; +exports.cubicBezierAsString = cubicBezierAsString; + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/feature-detection.es.js": +/*!***************************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/utils/feature-detection.es.js ***! + \***************************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.supports = void 0; +const testAnimation = keyframes => document.createElement("div").animate(keyframes, { + duration: 0.001 +}); +const featureTests = { + cssRegisterProperty: () => typeof CSS !== "undefined" && Object.hasOwnProperty.call(CSS, "registerProperty"), + waapi: () => Object.hasOwnProperty.call(Element.prototype, "animate"), + partialKeyframes: () => { + try { + testAnimation({ + opacity: [1] + }); + } catch (e) { + return false; + } + return true; + }, + finished: () => Boolean(testAnimation({ + opacity: [0, 1] + }).finished) +}; +const results = {}; +const supports = {}; +exports.supports = supports; +for (const key in featureTests) { + supports[key] = () => { + if (results[key] === undefined) results[key] = featureTests[key](); + return results[key]; + }; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js": +/*!************************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js ***! + \************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getStyleName = getStyleName; +var _transformsEs = __webpack_require__(/*! ./transforms.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js"); +function getStyleName(key) { + if (_transformsEs.transformAlias[key]) key = _transformsEs.transformAlias[key]; + return (0, _transformsEs.isTransform)(key) ? (0, _transformsEs.asTransformCssVar)(key) : key; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/keyframes.es.js": +/*!*******************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/utils/keyframes.es.js ***! + \*******************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.hydrateKeyframes = hydrateKeyframes; +exports.keyframesList = void 0; +function hydrateKeyframes(keyframes, readInitialValue) { + for (let i = 0; i < keyframes.length; i++) { + if (keyframes[i] === null) { + keyframes[i] = i ? keyframes[i - 1] : readInitialValue(); + } + } + return keyframes; +} +const keyframesList = keyframes => Array.isArray(keyframes) ? keyframes : [keyframes]; +exports.keyframesList = keyframesList; + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/options.es.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/utils/options.es.js ***! + \*****************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getOptions = void 0; +const getOptions = (options, key) => +/** + * TODO: Make test for this + * Always return a new object otherwise delay is overwritten by results of stagger + * and this results in no stagger + */ +options[key] ? Object.assign(Object.assign({}, options), options[key]) : Object.assign({}, options); +exports.getOptions = getOptions; + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/stop-animation.es.js": +/*!************************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/utils/stop-animation.es.js ***! + \************************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.stopAnimation = stopAnimation; +function stopAnimation(animation) { + let needsCommit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (!animation || animation.playState === "finished") return; + // Suppress error thrown by WAAPI + try { + if (animation.stop) { + animation.stop(); + } else { + needsCommit && animation.commitStyles(); + animation.cancel(); + } + } catch (e) {} +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/style-object.es.js": +/*!**********************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/utils/style-object.es.js ***! + \**********************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createStyles = createStyles; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +var _transformsEs = __webpack_require__(/*! ./transforms.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js"); +function createStyles(keyframes) { + const initialKeyframes = {}; + const transformKeys = []; + for (let key in keyframes) { + const value = keyframes[key]; + if ((0, _transformsEs.isTransform)(key)) { + if (_transformsEs.transformAlias[key]) key = _transformsEs.transformAlias[key]; + transformKeys.push(key); + key = (0, _transformsEs.asTransformCssVar)(key); + } + let initialKeyframe = Array.isArray(value) ? value[0] : value; + /** + * If this is a number and we have a default value type, convert the number + * to this type. + */ + const definition = _transformsEs.transformDefinitions.get(key); + if (definition) { + initialKeyframe = (0, _utils.isNumber)(value) ? definition.toDefaultUnit(value) : value; + } + initialKeyframes[key] = initialKeyframe; + } + if (transformKeys.length) { + initialKeyframes.transform = (0, _transformsEs.buildTransformTemplate)(transformKeys); + } + return initialKeyframes; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/style-string.es.js": +/*!**********************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/utils/style-string.es.js ***! + \**********************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createStyleString = createStyleString; +var _styleObjectEs = __webpack_require__(/*! ./style-object.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/style-object.es.js"); +const camelLetterToPipeLetter = letter => `-${letter.toLowerCase()}`; +const camelToPipeCase = str => str.replace(/[A-Z]/g, camelLetterToPipeLetter); +function createStyleString() { + let target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + const styles = (0, _styleObjectEs.createStyles)(target); + let style = ""; + for (const key in styles) { + style += key.startsWith("--") ? key : camelToPipeCase(key); + style += `: ${styles[key]}; `; + } + return style; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js": +/*!********************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js ***! + \********************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.transformDefinitions = exports.transformAlias = exports.isTransform = exports.compareTransformOrder = exports.buildTransformTemplate = exports.axes = exports.asTransformCssVar = exports.addTransformToElement = void 0; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +var _dataEs = __webpack_require__(/*! ../data.es.js */ "../../../node_modules/@motionone/dom/dist/animate/data.es.js"); +/** + * A list of all transformable axes. We'll use this list to generated a version + * of each axes for each transform. + */ +const axes = ["", "X", "Y", "Z"]; +/** + * An ordered array of each transformable value. By default, transform values + * will be sorted to this order. + */ +exports.axes = axes; +const order = ["translate", "scale", "rotate", "skew"]; +const transformAlias = { + x: "translateX", + y: "translateY", + z: "translateZ" +}; +exports.transformAlias = transformAlias; +const rotation = { + syntax: "", + initialValue: "0deg", + toDefaultUnit: v => v + "deg" +}; +const baseTransformProperties = { + translate: { + syntax: "", + initialValue: "0px", + toDefaultUnit: v => v + "px" + }, + rotate: rotation, + scale: { + syntax: "", + initialValue: 1, + toDefaultUnit: _utils.noopReturn + }, + skew: rotation +}; +const transformDefinitions = new Map(); +exports.transformDefinitions = transformDefinitions; +const asTransformCssVar = name => `--motion-${name}`; +/** + * Generate a list of every possible transform key + */ +exports.asTransformCssVar = asTransformCssVar; +const transforms = ["x", "y", "z"]; +order.forEach(name => { + axes.forEach(axis => { + transforms.push(name + axis); + transformDefinitions.set(asTransformCssVar(name + axis), baseTransformProperties[name]); + }); +}); +/** + * A function to use with Array.sort to sort transform keys by their default order. + */ +const compareTransformOrder = (a, b) => transforms.indexOf(a) - transforms.indexOf(b); +/** + * Provide a quick way to check if a string is the name of a transform + */ +exports.compareTransformOrder = compareTransformOrder; +const transformLookup = new Set(transforms); +const isTransform = name => transformLookup.has(name); +exports.isTransform = isTransform; +const addTransformToElement = (element, name) => { + // Map x to translateX etc + if (transformAlias[name]) name = transformAlias[name]; + const { + transforms + } = (0, _dataEs.getAnimationData)(element); + (0, _utils.addUniqueItem)(transforms, name); + /** + * TODO: An optimisation here could be to cache the transform in element data + * and only update if this has changed. + */ + element.style.transform = buildTransformTemplate(transforms); +}; +exports.addTransformToElement = addTransformToElement; +const buildTransformTemplate = transforms => transforms.sort(compareTransformOrder).reduce(transformListToString, "").trim(); +exports.buildTransformTemplate = buildTransformTemplate; +const transformListToString = (template, name) => `${template} ${name}(var(${asTransformCssVar(name)}))`; + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/easing/create-generator-easing.es.js": +/*!**************************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/easing/create-generator-easing.es.js ***! + \**************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createGeneratorEasing = createGeneratorEasing; +var _generators = __webpack_require__(/*! @motionone/generators */ "../../../node_modules/@motionone/generators/dist/index.es.js"); +function createGeneratorEasing(createGenerator) { + const keyframesCache = new WeakMap(); + return function () { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + const generatorCache = new Map(); + const getGenerator = function () { + let from = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let to = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100; + let velocity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + let isScale = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + const key = `${from}-${to}-${velocity}-${isScale}`; + if (!generatorCache.has(key)) { + generatorCache.set(key, createGenerator(Object.assign({ + from, + to, + velocity, + restSpeed: isScale ? 0.05 : 2, + restDistance: isScale ? 0.01 : 0.5 + }, options))); + } + return generatorCache.get(key); + }; + const getKeyframes = generator => { + if (!keyframesCache.has(generator)) { + keyframesCache.set(generator, (0, _generators.pregenerateKeyframes)(generator)); + } + return keyframesCache.get(generator); + }; + return { + createAnimation: (keyframes, getOrigin, canUseGenerator, name, motionValue) => { + var _a, _b; + let settings; + const numKeyframes = keyframes.length; + let shouldUseGenerator = canUseGenerator && numKeyframes <= 2 && keyframes.every(isNumberOrNull); + if (shouldUseGenerator) { + const target = keyframes[numKeyframes - 1]; + const unresolvedOrigin = numKeyframes === 1 ? null : keyframes[0]; + let velocity = 0; + let origin = 0; + const prevGenerator = motionValue === null || motionValue === void 0 ? void 0 : motionValue.generator; + if (prevGenerator) { + /** + * If we have a generator for this value we can use it to resolve + * the animations's current value and velocity. + */ + const { + animation, + generatorStartTime + } = motionValue; + const startTime = (animation === null || animation === void 0 ? void 0 : animation.startTime) || generatorStartTime || 0; + const currentTime = (animation === null || animation === void 0 ? void 0 : animation.currentTime) || performance.now() - startTime; + const prevGeneratorCurrent = prevGenerator(currentTime).current; + origin = (_a = unresolvedOrigin) !== null && _a !== void 0 ? _a : prevGeneratorCurrent; + if (numKeyframes === 1 || numKeyframes === 2 && keyframes[0] === null) { + velocity = (0, _generators.calcGeneratorVelocity)(t => prevGenerator(t).current, currentTime, prevGeneratorCurrent); + } + } else { + origin = (_b = unresolvedOrigin) !== null && _b !== void 0 ? _b : parseFloat(getOrigin()); + } + const generator = getGenerator(origin, target, velocity, name === null || name === void 0 ? void 0 : name.includes("scale")); + const keyframesMetadata = getKeyframes(generator); + settings = Object.assign(Object.assign({}, keyframesMetadata), { + easing: "linear" + }); + // TODO Add test for this + if (motionValue) { + motionValue.generator = generator; + motionValue.generatorStartTime = performance.now(); + } + } else { + const keyframesMetadata = getKeyframes(getGenerator(0, 100)); + settings = { + easing: "ease", + duration: keyframesMetadata.overshootDuration + }; + } + return settings; + } + }; + }; +} +const isNumberOrNull = value => typeof value !== "string"; + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/easing/glide/index.es.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/easing/glide/index.es.js ***! + \**************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.glide = void 0; +var _generators = __webpack_require__(/*! @motionone/generators */ "../../../node_modules/@motionone/generators/dist/index.es.js"); +var _createGeneratorEasingEs = __webpack_require__(/*! ../create-generator-easing.es.js */ "../../../node_modules/@motionone/dom/dist/easing/create-generator-easing.es.js"); +const glide = (0, _createGeneratorEasingEs.createGeneratorEasing)(_generators.glide); +exports.glide = glide; + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/easing/spring/index.es.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/easing/spring/index.es.js ***! + \***************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.spring = void 0; +var _generators = __webpack_require__(/*! @motionone/generators */ "../../../node_modules/@motionone/generators/dist/index.es.js"); +var _createGeneratorEasingEs = __webpack_require__(/*! ../create-generator-easing.es.js */ "../../../node_modules/@motionone/dom/dist/easing/create-generator-easing.es.js"); +const spring = (0, _createGeneratorEasingEs.createGeneratorEasing)(_generators.spring); +exports.spring = spring; + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/gestures/in-view.es.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/gestures/in-view.es.js ***! + \************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.inView = inView; +var _resolveElementsEs = __webpack_require__(/*! ../utils/resolve-elements.es.js */ "../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js"); +const thresholds = { + any: 0, + all: 1 +}; +function inView(elementOrSelector, onStart) { + let { + root, + margin: rootMargin, + amount = "any" + } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + /** + * If this browser doesn't support IntersectionObserver, return a dummy stop function. + * Default triggering of onStart is tricky - it could be used for starting/stopping + * videos, lazy loading content etc. We could provide an option to enable a fallback, or + * provide a fallback callback option. + */ + if (typeof IntersectionObserver === "undefined") { + return () => {}; + } + const elements = (0, _resolveElementsEs.resolveElements)(elementOrSelector); + const activeIntersections = new WeakMap(); + const onIntersectionChange = entries => { + entries.forEach(entry => { + const onEnd = activeIntersections.get(entry.target); + /** + * If there's no change to the intersection, we don't need to + * do anything here. + */ + if (entry.isIntersecting === Boolean(onEnd)) return; + if (entry.isIntersecting) { + const newOnEnd = onStart(entry); + if (typeof newOnEnd === "function") { + activeIntersections.set(entry.target, newOnEnd); + } else { + observer.unobserve(entry.target); + } + } else if (onEnd) { + onEnd(entry); + activeIntersections.delete(entry.target); + } + }); + }; + const observer = new IntersectionObserver(onIntersectionChange, { + root, + rootMargin, + threshold: typeof amount === "number" ? amount : thresholds[amount] + }); + elements.forEach(element => observer.observe(element)); + return () => observer.disconnect(); +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/gestures/resize/handle-element.es.js": +/*!**************************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/gestures/resize/handle-element.es.js ***! + \**************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.resizeElement = resizeElement; +var _resolveElementsEs = __webpack_require__(/*! ../../utils/resolve-elements.es.js */ "../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js"); +const resizeHandlers = new WeakMap(); +let observer; +function getElementSize(target, borderBoxSize) { + if (borderBoxSize) { + const { + inlineSize, + blockSize + } = borderBoxSize[0]; + return { + width: inlineSize, + height: blockSize + }; + } else if (target instanceof SVGElement && "getBBox" in target) { + return target.getBBox(); + } else { + return { + width: target.offsetWidth, + height: target.offsetHeight + }; + } +} +function notifyTarget(_ref) { + let { + target, + contentRect, + borderBoxSize + } = _ref; + var _a; + (_a = resizeHandlers.get(target)) === null || _a === void 0 ? void 0 : _a.forEach(handler => { + handler({ + target, + contentSize: contentRect, + get size() { + return getElementSize(target, borderBoxSize); + } + }); + }); +} +function notifyAll(entries) { + entries.forEach(notifyTarget); +} +function createResizeObserver() { + if (typeof ResizeObserver === "undefined") return; + observer = new ResizeObserver(notifyAll); +} +function resizeElement(target, handler) { + if (!observer) createResizeObserver(); + const elements = (0, _resolveElementsEs.resolveElements)(target); + elements.forEach(element => { + let elementHandlers = resizeHandlers.get(element); + if (!elementHandlers) { + elementHandlers = new Set(); + resizeHandlers.set(element, elementHandlers); + } + elementHandlers.add(handler); + observer === null || observer === void 0 ? void 0 : observer.observe(element); + }); + return () => { + elements.forEach(element => { + const elementHandlers = resizeHandlers.get(element); + elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.delete(handler); + if (!(elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.size)) { + observer === null || observer === void 0 ? void 0 : observer.unobserve(element); + } + }); + }; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/gestures/resize/handle-window.es.js": +/*!*************************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/gestures/resize/handle-window.es.js ***! + \*************************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.resizeWindow = resizeWindow; +const windowCallbacks = new Set(); +let windowResizeHandler; +function createWindowResizeHandler() { + windowResizeHandler = () => { + const size = { + width: window.innerWidth, + height: window.innerHeight + }; + const info = { + target: window, + size, + contentSize: size + }; + windowCallbacks.forEach(callback => callback(info)); + }; + window.addEventListener("resize", windowResizeHandler); +} +function resizeWindow(callback) { + windowCallbacks.add(callback); + if (!windowResizeHandler) createWindowResizeHandler(); + return () => { + windowCallbacks.delete(callback); + if (!windowCallbacks.size && windowResizeHandler) { + windowResizeHandler = undefined; + } + }; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/gestures/resize/index.es.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/gestures/resize/index.es.js ***! + \*****************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.resize = resize; +var _handleElementEs = __webpack_require__(/*! ./handle-element.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/resize/handle-element.es.js"); +var _handleWindowEs = __webpack_require__(/*! ./handle-window.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/resize/handle-window.es.js"); +function resize(a, b) { + return typeof a === "function" ? (0, _handleWindowEs.resizeWindow)(a) : (0, _handleElementEs.resizeElement)(a, b); +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/index.es.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/index.es.js ***! + \*****************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.scroll = scroll; +var _tslib = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js"); +var _indexEs = __webpack_require__(/*! ../resize/index.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/resize/index.es.js"); +var _infoEs = __webpack_require__(/*! ./info.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/info.es.js"); +var _onScrollHandlerEs = __webpack_require__(/*! ./on-scroll-handler.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/on-scroll-handler.es.js"); +const scrollListeners = new WeakMap(); +const resizeListeners = new WeakMap(); +const onScrollHandlers = new WeakMap(); +const getEventTarget = element => element === document.documentElement ? window : element; +function scroll(onScroll) { + let _a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var { + container = document.documentElement + } = _a, + options = (0, _tslib.__rest)(_a, ["container"]); + let containerHandlers = onScrollHandlers.get(container); + /** + * Get the onScroll handlers for this container. + * If one isn't found, create a new one. + */ + if (!containerHandlers) { + containerHandlers = new Set(); + onScrollHandlers.set(container, containerHandlers); + } + /** + * Create a new onScroll handler for the provided callback. + */ + const info = (0, _infoEs.createScrollInfo)(); + const containerHandler = (0, _onScrollHandlerEs.createOnScrollHandler)(container, onScroll, info, options); + containerHandlers.add(containerHandler); + /** + * Check if there's a scroll event listener for this container. + * If not, create one. + */ + if (!scrollListeners.has(container)) { + const listener = () => { + const time = performance.now(); + for (const handler of containerHandlers) handler.measure(); + for (const handler of containerHandlers) handler.update(time); + for (const handler of containerHandlers) handler.notify(); + }; + scrollListeners.set(container, listener); + const target = getEventTarget(container); + window.addEventListener("resize", listener, { + passive: true + }); + if (container !== document.documentElement) { + resizeListeners.set(container, (0, _indexEs.resize)(container, listener)); + } + target.addEventListener("scroll", listener, { + passive: true + }); + } + const listener = scrollListeners.get(container); + const onLoadProcesss = requestAnimationFrame(listener); + return () => { + var _a; + if (typeof onScroll !== "function") onScroll.stop(); + cancelAnimationFrame(onLoadProcesss); + /** + * Check if we even have any handlers for this container. + */ + const containerHandlers = onScrollHandlers.get(container); + if (!containerHandlers) return; + containerHandlers.delete(containerHandler); + if (containerHandlers.size) return; + /** + * If no more handlers, remove the scroll listener too. + */ + const listener = scrollListeners.get(container); + scrollListeners.delete(container); + if (listener) { + getEventTarget(container).removeEventListener("scroll", listener); + (_a = resizeListeners.get(container)) === null || _a === void 0 ? void 0 : _a(); + window.removeEventListener("resize", listener); + } + }; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/info.es.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/info.es.js ***! + \****************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createScrollInfo = void 0; +exports.updateScrollInfo = updateScrollInfo; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +/** + * A time in milliseconds, beyond which we consider the scroll velocity to be 0. + */ +const maxElapsed = 50; +const createAxisInfo = () => ({ + current: 0, + offset: [], + progress: 0, + scrollLength: 0, + targetOffset: 0, + targetLength: 0, + containerLength: 0, + velocity: 0 +}); +const createScrollInfo = () => ({ + time: 0, + x: createAxisInfo(), + y: createAxisInfo() +}); +exports.createScrollInfo = createScrollInfo; +const keys = { + x: { + length: "Width", + position: "Left" + }, + y: { + length: "Height", + position: "Top" + } +}; +function updateAxisInfo(element, axisName, info, time) { + const axis = info[axisName]; + const { + length, + position + } = keys[axisName]; + const prev = axis.current; + const prevTime = info.time; + axis.current = element["scroll" + position]; + axis.scrollLength = element["scroll" + length] - element["client" + length]; + axis.offset.length = 0; + axis.offset[0] = 0; + axis.offset[1] = axis.scrollLength; + axis.progress = (0, _utils.progress)(0, axis.scrollLength, axis.current); + const elapsed = time - prevTime; + axis.velocity = elapsed > maxElapsed ? 0 : (0, _utils.velocityPerSecond)(axis.current - prev, elapsed); +} +function updateScrollInfo(element, info, time) { + updateAxisInfo(element, "x", info, time); + updateAxisInfo(element, "y", info, time); + info.time = time; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/edge.es.js": +/*!************************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/edge.es.js ***! + \************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.namedEdges = void 0; +exports.resolveEdge = resolveEdge; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +const namedEdges = { + start: 0, + center: 0.5, + end: 1 +}; +exports.namedEdges = namedEdges; +function resolveEdge(edge, length) { + let inset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + let delta = 0; + /** + * If we have this edge defined as a preset, replace the definition + * with the numerical value. + */ + if (namedEdges[edge] !== undefined) { + edge = namedEdges[edge]; + } + /** + * Handle unit values + */ + if ((0, _utils.isString)(edge)) { + const asNumber = parseFloat(edge); + if (edge.endsWith("px")) { + delta = asNumber; + } else if (edge.endsWith("%")) { + edge = asNumber / 100; + } else if (edge.endsWith("vw")) { + delta = asNumber / 100 * document.documentElement.clientWidth; + } else if (edge.endsWith("vh")) { + delta = asNumber / 100 * document.documentElement.clientHeight; + } else { + edge = asNumber; + } + } + /** + * If the edge is defined as a number, handle as a progress value. + */ + if ((0, _utils.isNumber)(edge)) { + delta = length * edge; + } + return inset + delta; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/index.es.js": +/*!*************************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/index.es.js ***! + \*************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.resolveOffsets = resolveOffsets; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +var _insetEs = __webpack_require__(/*! ./inset.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/inset.es.js"); +var _presetsEs = __webpack_require__(/*! ./presets.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/presets.es.js"); +var _offsetEs = __webpack_require__(/*! ./offset.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/offset.es.js"); +const point = { + x: 0, + y: 0 +}; +function resolveOffsets(container, info, options) { + let { + offset: offsetDefinition = _presetsEs.ScrollOffset.All + } = options; + const { + target = container, + axis = "y" + } = options; + const lengthLabel = axis === "y" ? "height" : "width"; + const inset = target !== container ? (0, _insetEs.calcInset)(target, container) : point; + /** + * Measure the target and container. If they're the same thing then we + * use the container's scrollWidth/Height as the target, from there + * all other calculations can remain the same. + */ + const targetSize = target === container ? { + width: container.scrollWidth, + height: container.scrollHeight + } : { + width: target.clientWidth, + height: target.clientHeight + }; + const containerSize = { + width: container.clientWidth, + height: container.clientHeight + }; + /** + * Reset the length of the resolved offset array rather than creating a new one. + * TODO: More reusable data structures for targetSize/containerSize would also be good. + */ + info[axis].offset.length = 0; + /** + * Populate the offset array by resolving the user's offset definition into + * a list of pixel scroll offets. + */ + let hasChanged = !info[axis].interpolate; + const numOffsets = offsetDefinition.length; + for (let i = 0; i < numOffsets; i++) { + const offset = (0, _offsetEs.resolveOffset)(offsetDefinition[i], containerSize[lengthLabel], targetSize[lengthLabel], inset[axis]); + if (!hasChanged && offset !== info[axis].interpolatorOffsets[i]) { + hasChanged = true; + } + info[axis].offset[i] = offset; + } + /** + * If the pixel scroll offsets have changed, create a new interpolator function + * to map scroll value into a progress. + */ + if (hasChanged) { + info[axis].interpolate = (0, _utils.interpolate)((0, _utils.defaultOffset)(numOffsets), info[axis].offset); + info[axis].interpolatorOffsets = [...info[axis].offset]; + } + info[axis].progress = info[axis].interpolate(info[axis].current); +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/inset.es.js": +/*!*************************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/inset.es.js ***! + \*************************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.calcInset = calcInset; +function calcInset(element, container) { + let inset = { + x: 0, + y: 0 + }; + let current = element; + while (current && current !== container) { + if (current instanceof HTMLElement) { + inset.x += current.offsetLeft; + inset.y += current.offsetTop; + current = current.offsetParent; + } else if (current instanceof SVGGraphicsElement && "getBBox" in current) { + const { + top, + left + } = current.getBBox(); + inset.x += left; + inset.y += top; + /** + * Assign the next parent element as the tag. + */ + while (current && current.tagName !== "svg") { + current = current.parentNode; + } + } + } + return inset; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/offset.es.js": +/*!**************************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/offset.es.js ***! + \**************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.resolveOffset = resolveOffset; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +var _edgeEs = __webpack_require__(/*! ./edge.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/edge.es.js"); +const defaultOffset = [0, 0]; +function resolveOffset(offset, containerLength, targetLength, targetInset) { + let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset; + let targetPoint = 0; + let containerPoint = 0; + if ((0, _utils.isNumber)(offset)) { + /** + * If we're provided offset: [0, 0.5, 1] then each number x should become + * [x, x], so we default to the behaviour of mapping 0 => 0 of both target + * and container etc. + */ + offsetDefinition = [offset, offset]; + } else if ((0, _utils.isString)(offset)) { + offset = offset.trim(); + if (offset.includes(" ")) { + offsetDefinition = offset.split(" "); + } else { + /** + * If we're provided a definition like "100px" then we want to apply + * that only to the top of the target point, leaving the container at 0. + * Whereas a named offset like "end" should be applied to both. + */ + offsetDefinition = [offset, _edgeEs.namedEdges[offset] ? offset : `0`]; + } + } + targetPoint = (0, _edgeEs.resolveEdge)(offsetDefinition[0], targetLength, targetInset); + containerPoint = (0, _edgeEs.resolveEdge)(offsetDefinition[1], containerLength); + return targetPoint - containerPoint; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/presets.es.js": +/*!***************************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/presets.es.js ***! + \***************************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ScrollOffset = void 0; +const ScrollOffset = { + Enter: [[0, 1], [1, 1]], + Exit: [[0, 0], [1, 0]], + Any: [[1, 0], [0, 1]], + All: [[0, 0], [1, 1]] +}; +exports.ScrollOffset = ScrollOffset; + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/on-scroll-handler.es.js": +/*!*****************************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/on-scroll-handler.es.js ***! + \*****************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createOnScrollHandler = createOnScrollHandler; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +var _infoEs = __webpack_require__(/*! ./info.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/info.es.js"); +var _indexEs = __webpack_require__(/*! ./offsets/index.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/index.es.js"); +function measure(container) { + let target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : container; + let info = arguments.length > 2 ? arguments[2] : undefined; + /** + * Find inset of target within scrollable container + */ + info.x.targetOffset = 0; + info.y.targetOffset = 0; + if (target !== container) { + let node = target; + while (node && node != container) { + info.x.targetOffset += node.offsetLeft; + info.y.targetOffset += node.offsetTop; + node = node.offsetParent; + } + } + info.x.targetLength = target === container ? target.scrollWidth : target.clientWidth; + info.y.targetLength = target === container ? target.scrollHeight : target.clientHeight; + info.x.containerLength = container.clientWidth; + info.y.containerLength = container.clientHeight; +} +function createOnScrollHandler(element, onScroll, info) { + let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + const axis = options.axis || "y"; + return { + measure: () => measure(element, options.target, info), + update: time => { + (0, _infoEs.updateScrollInfo)(element, info, time); + if (options.offset || options.target) { + (0, _indexEs.resolveOffsets)(element, info, options); + } + }, + notify: typeof onScroll === "function" ? () => onScroll(info) : scrubAnimation(onScroll, info[axis]) + }; +} +function scrubAnimation(controls, axisInfo) { + controls.pause(); + controls.forEachNative((animation, _ref) => { + let { + easing + } = _ref; + var _a, _b; + if (animation.updateDuration) { + if (!easing) animation.easing = _utils.noopReturn; + animation.updateDuration(1); + } else { + const timingOptions = { + duration: 1000 + }; + if (!easing) timingOptions.easing = "linear"; + (_b = (_a = animation.effect) === null || _a === void 0 ? void 0 : _a.updateTiming) === null || _b === void 0 ? void 0 : _b.call(_a, timingOptions); + } + }); + return () => { + controls.currentTime = axisInfo.progress; + }; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/index.es.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/index.es.js ***! + \*************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "ScrollOffset", ({ + enumerable: true, + get: function () { + return _presetsEs.ScrollOffset; + } +})); +Object.defineProperty(exports, "animate", ({ + enumerable: true, + get: function () { + return _indexEs.animate; + } +})); +Object.defineProperty(exports, "animateStyle", ({ + enumerable: true, + get: function () { + return _animateStyleEs.animateStyle; + } +})); +Object.defineProperty(exports, "createMotionState", ({ + enumerable: true, + get: function () { + return _indexEs7.createMotionState; + } +})); +Object.defineProperty(exports, "createStyleString", ({ + enumerable: true, + get: function () { + return _styleStringEs.createStyleString; + } +})); +Object.defineProperty(exports, "createStyles", ({ + enumerable: true, + get: function () { + return _styleObjectEs.createStyles; + } +})); +Object.defineProperty(exports, "getAnimationData", ({ + enumerable: true, + get: function () { + return _dataEs.getAnimationData; + } +})); +Object.defineProperty(exports, "getStyleName", ({ + enumerable: true, + get: function () { + return _getStyleNameEs.getStyleName; + } +})); +Object.defineProperty(exports, "glide", ({ + enumerable: true, + get: function () { + return _indexEs4.glide; + } +})); +Object.defineProperty(exports, "inView", ({ + enumerable: true, + get: function () { + return _inViewEs.inView; + } +})); +Object.defineProperty(exports, "mountedStates", ({ + enumerable: true, + get: function () { + return _indexEs7.mountedStates; + } +})); +Object.defineProperty(exports, "resize", ({ + enumerable: true, + get: function () { + return _indexEs5.resize; + } +})); +Object.defineProperty(exports, "scroll", ({ + enumerable: true, + get: function () { + return _indexEs6.scroll; + } +})); +Object.defineProperty(exports, "spring", ({ + enumerable: true, + get: function () { + return _indexEs3.spring; + } +})); +Object.defineProperty(exports, "stagger", ({ + enumerable: true, + get: function () { + return _staggerEs.stagger; + } +})); +Object.defineProperty(exports, "style", ({ + enumerable: true, + get: function () { + return _styleEs.style; + } +})); +Object.defineProperty(exports, "timeline", ({ + enumerable: true, + get: function () { + return _indexEs2.timeline; + } +})); +Object.defineProperty(exports, "withControls", ({ + enumerable: true, + get: function () { + return _controlsEs.withControls; + } +})); +var _indexEs = __webpack_require__(/*! ./animate/index.es.js */ "../../../node_modules/@motionone/dom/dist/animate/index.es.js"); +var _animateStyleEs = __webpack_require__(/*! ./animate/animate-style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js"); +var _indexEs2 = __webpack_require__(/*! ./timeline/index.es.js */ "../../../node_modules/@motionone/dom/dist/timeline/index.es.js"); +var _staggerEs = __webpack_require__(/*! ./utils/stagger.es.js */ "../../../node_modules/@motionone/dom/dist/utils/stagger.es.js"); +var _indexEs3 = __webpack_require__(/*! ./easing/spring/index.es.js */ "../../../node_modules/@motionone/dom/dist/easing/spring/index.es.js"); +var _indexEs4 = __webpack_require__(/*! ./easing/glide/index.es.js */ "../../../node_modules/@motionone/dom/dist/easing/glide/index.es.js"); +var _styleEs = __webpack_require__(/*! ./animate/style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/style.es.js"); +var _inViewEs = __webpack_require__(/*! ./gestures/in-view.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/in-view.es.js"); +var _indexEs5 = __webpack_require__(/*! ./gestures/resize/index.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/resize/index.es.js"); +var _indexEs6 = __webpack_require__(/*! ./gestures/scroll/index.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/index.es.js"); +var _presetsEs = __webpack_require__(/*! ./gestures/scroll/offsets/presets.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/presets.es.js"); +var _controlsEs = __webpack_require__(/*! ./animate/utils/controls.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/controls.es.js"); +var _dataEs = __webpack_require__(/*! ./animate/data.es.js */ "../../../node_modules/@motionone/dom/dist/animate/data.es.js"); +var _getStyleNameEs = __webpack_require__(/*! ./animate/utils/get-style-name.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js"); +var _indexEs7 = __webpack_require__(/*! ./state/index.es.js */ "../../../node_modules/@motionone/dom/dist/state/index.es.js"); +var _styleObjectEs = __webpack_require__(/*! ./animate/utils/style-object.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/style-object.es.js"); +var _styleStringEs = __webpack_require__(/*! ./animate/utils/style-string.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/style-string.es.js"); + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/state/gestures/hover.es.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/state/gestures/hover.es.js ***! + \****************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.hover = void 0; +var _eventsEs = __webpack_require__(/*! ../utils/events.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/events.es.js"); +const mouseEvent = (element, name, action) => event => { + if (event.pointerType && event.pointerType !== "mouse") return; + action(); + (0, _eventsEs.dispatchPointerEvent)(element, name, event); +}; +const hover = { + isActive: options => Boolean(options.hover), + subscribe: (element, _ref) => { + let { + enable, + disable + } = _ref; + const onEnter = mouseEvent(element, "hoverstart", enable); + const onLeave = mouseEvent(element, "hoverend", disable); + element.addEventListener("pointerenter", onEnter); + element.addEventListener("pointerleave", onLeave); + return () => { + element.removeEventListener("pointerenter", onEnter); + element.removeEventListener("pointerleave", onLeave); + }; + } +}; +exports.hover = hover; + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/state/gestures/in-view.es.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/state/gestures/in-view.es.js ***! + \******************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.inView = void 0; +var _tslib = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js"); +var _eventsEs = __webpack_require__(/*! ../utils/events.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/events.es.js"); +var _inViewEs = __webpack_require__(/*! ../../gestures/in-view.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/in-view.es.js"); +const inView = { + isActive: options => Boolean(options.inView), + subscribe: (element, _ref, _ref2) => { + let { + enable, + disable + } = _ref; + let { + inViewOptions = {} + } = _ref2; + const { + once + } = inViewOptions, + viewOptions = (0, _tslib.__rest)(inViewOptions, ["once"]); + return (0, _inViewEs.inView)(element, enterEntry => { + enable(); + (0, _eventsEs.dispatchViewEvent)(element, "viewenter", enterEntry); + if (!once) { + return leaveEntry => { + disable(); + (0, _eventsEs.dispatchViewEvent)(element, "viewleave", leaveEntry); + }; + } + }, viewOptions); + } +}; +exports.inView = inView; + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/state/gestures/press.es.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/state/gestures/press.es.js ***! + \****************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.press = void 0; +var _eventsEs = __webpack_require__(/*! ../utils/events.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/events.es.js"); +const press = { + isActive: options => Boolean(options.press), + subscribe: (element, _ref) => { + let { + enable, + disable + } = _ref; + const onPointerUp = event => { + disable(); + (0, _eventsEs.dispatchPointerEvent)(element, "pressend", event); + window.removeEventListener("pointerup", onPointerUp); + }; + const onPointerDown = event => { + enable(); + (0, _eventsEs.dispatchPointerEvent)(element, "pressstart", event); + window.addEventListener("pointerup", onPointerUp); + }; + element.addEventListener("pointerdown", onPointerDown); + return () => { + element.removeEventListener("pointerdown", onPointerDown); + window.removeEventListener("pointerup", onPointerUp); + }; + } +}; +exports.press = press; + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/state/index.es.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/state/index.es.js ***! + \*******************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createMotionState = createMotionState; +exports.mountedStates = void 0; +var _tslib = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js"); +var _heyListen = __webpack_require__(/*! hey-listen */ "../../../node_modules/hey-listen/dist/hey-listen.es.js"); +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +var _animateStyleEs = __webpack_require__(/*! ../animate/animate-style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js"); +var _styleEs = __webpack_require__(/*! ../animate/style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/style.es.js"); +var _optionsEs = __webpack_require__(/*! ../animate/utils/options.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/options.es.js"); +var _hasChangedEs = __webpack_require__(/*! ./utils/has-changed.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/has-changed.es.js"); +var _resolveVariantEs = __webpack_require__(/*! ./utils/resolve-variant.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/resolve-variant.es.js"); +var _scheduleEs = __webpack_require__(/*! ./utils/schedule.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/schedule.es.js"); +var _inViewEs = __webpack_require__(/*! ./gestures/in-view.es.js */ "../../../node_modules/@motionone/dom/dist/state/gestures/in-view.es.js"); +var _hoverEs = __webpack_require__(/*! ./gestures/hover.es.js */ "../../../node_modules/@motionone/dom/dist/state/gestures/hover.es.js"); +var _pressEs = __webpack_require__(/*! ./gestures/press.es.js */ "../../../node_modules/@motionone/dom/dist/state/gestures/press.es.js"); +var _eventsEs = __webpack_require__(/*! ./utils/events.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/events.es.js"); +const gestures = { + inView: _inViewEs.inView, + hover: _hoverEs.hover, + press: _pressEs.press +}; +/** + * A list of state types, in priority order. If a value is defined in + * a righter-most type, it will override any definition in a lefter-most. + */ +const stateTypes = ["initial", "animate", ...Object.keys(gestures), "exit"]; +/** + * A global store of all generated motion states. This can be used to lookup + * a motion state for a given Element. + */ +const mountedStates = new WeakMap(); +exports.mountedStates = mountedStates; +function createMotionState() { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + let parent = arguments.length > 1 ? arguments[1] : undefined; + /** + * The element represented by the motion state. This is an empty reference + * when we create the state to support SSR and allow for later mounting + * in view libraries. + * + * @ts-ignore + */ + let element; + /** + * Calculate a depth that we can use to order motion states by tree depth. + */ + let depth = parent ? parent.getDepth() + 1 : 0; + /** + * Track which states are currently active. + */ + const activeStates = { + initial: true, + animate: true + }; + /** + * A map of functions that, when called, will remove event listeners for + * a given gesture. + */ + const gestureSubscriptions = {}; + /** + * Initialise a context to share through motion states. This + * will be populated by variant names (if any). + */ + const context = {}; + for (const name of stateTypes) { + context[name] = typeof options[name] === "string" ? options[name] : parent === null || parent === void 0 ? void 0 : parent.getContext()[name]; + } + /** + * If initial is set to false we use the animate prop as the initial + * animation state. + */ + const initialVariantSource = options.initial === false ? "animate" : "initial"; + /** + * Destructure an initial target out from the resolved initial variant. + */ + let _a = (0, _resolveVariantEs.resolveVariant)(options[initialVariantSource] || context[initialVariantSource], options.variants) || {}, + target = (0, _tslib.__rest)(_a, ["transition"]); + /** + * The base target is a cached map of values that we'll use to animate + * back to if a value is removed from all active state types. This + * is usually the initial value as read from the DOM, for instance if + * it hasn't been defined in initial. + */ + const baseTarget = Object.assign({}, target); + /** + * A generator that will be processed by the global animation scheduler. + * This yeilds when it switches from reading the DOM to writing to it + * to prevent layout thrashing. + */ + function* animateUpdates() { + var _a, _b; + const prevTarget = target; + target = {}; + const animationOptions = {}; + for (const name of stateTypes) { + if (!activeStates[name]) continue; + const variant = (0, _resolveVariantEs.resolveVariant)(options[name]); + if (!variant) continue; + for (const key in variant) { + if (key === "transition") continue; + target[key] = variant[key]; + animationOptions[key] = (0, _optionsEs.getOptions)((_b = (_a = variant.transition) !== null && _a !== void 0 ? _a : options.transition) !== null && _b !== void 0 ? _b : {}, key); + } + } + const allTargetKeys = new Set([...Object.keys(target), ...Object.keys(prevTarget)]); + const animationFactories = []; + allTargetKeys.forEach(key => { + var _a; + if (target[key] === undefined) { + target[key] = baseTarget[key]; + } + if ((0, _hasChangedEs.hasChanged)(prevTarget[key], target[key])) { + (_a = baseTarget[key]) !== null && _a !== void 0 ? _a : baseTarget[key] = _styleEs.style.get(element, key); + animationFactories.push((0, _animateStyleEs.animateStyle)(element, key, target[key], animationOptions[key])); + } + }); + // Wait for all animation states to read from the DOM + yield; + const animations = animationFactories.map(factory => factory()).filter(Boolean); + if (!animations.length) return; + const animationTarget = target; + element.dispatchEvent((0, _eventsEs.motionEvent)("motionstart", animationTarget)); + Promise.all(animations.map(animation => animation.finished)).then(() => { + element.dispatchEvent((0, _eventsEs.motionEvent)("motioncomplete", animationTarget)); + }).catch(_utils.noop); + } + const setGesture = (name, isActive) => () => { + activeStates[name] = isActive; + (0, _scheduleEs.scheduleAnimation)(state); + }; + const updateGestureSubscriptions = () => { + for (const name in gestures) { + const isGestureActive = gestures[name].isActive(options); + const remove = gestureSubscriptions[name]; + if (isGestureActive && !remove) { + gestureSubscriptions[name] = gestures[name].subscribe(element, { + enable: setGesture(name, true), + disable: setGesture(name, false) + }, options); + } else if (!isGestureActive && remove) { + remove(); + delete gestureSubscriptions[name]; + } + } + }; + const state = { + update: newOptions => { + if (!element) return; + options = newOptions; + updateGestureSubscriptions(); + (0, _scheduleEs.scheduleAnimation)(state); + }, + setActive: (name, isActive) => { + if (!element) return; + activeStates[name] = isActive; + (0, _scheduleEs.scheduleAnimation)(state); + }, + animateUpdates, + getDepth: () => depth, + getTarget: () => target, + getOptions: () => options, + getContext: () => context, + mount: newElement => { + (0, _heyListen.invariant)(Boolean(newElement), "Animation state must be mounted with valid Element"); + element = newElement; + mountedStates.set(element, state); + updateGestureSubscriptions(); + return () => { + mountedStates.delete(element); + (0, _scheduleEs.unscheduleAnimation)(state); + for (const key in gestureSubscriptions) { + gestureSubscriptions[key](); + } + }; + }, + isMounted: () => Boolean(element) + }; + return state; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/state/utils/events.es.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/state/utils/events.es.js ***! + \**************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.dispatchPointerEvent = dispatchPointerEvent; +exports.dispatchViewEvent = dispatchViewEvent; +exports.motionEvent = void 0; +const motionEvent = (name, target) => new CustomEvent(name, { + detail: { + target + } +}); +exports.motionEvent = motionEvent; +function dispatchPointerEvent(element, name, event) { + element.dispatchEvent(new CustomEvent(name, { + detail: { + originalEvent: event + } + })); +} +function dispatchViewEvent(element, name, entry) { + element.dispatchEvent(new CustomEvent(name, { + detail: { + originalEntry: entry + } + })); +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/state/utils/has-changed.es.js": +/*!*******************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/state/utils/has-changed.es.js ***! + \*******************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.hasChanged = hasChanged; +exports.shallowCompare = shallowCompare; +function hasChanged(a, b) { + if (typeof a !== typeof b) return true; + if (Array.isArray(a) && Array.isArray(b)) return !shallowCompare(a, b); + return a !== b; +} +function shallowCompare(next, prev) { + const prevLength = prev.length; + if (prevLength !== next.length) return false; + for (let i = 0; i < prevLength; i++) { + if (prev[i] !== next[i]) return false; + } + return true; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/state/utils/is-variant.es.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/state/utils/is-variant.es.js ***! + \******************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isVariant = isVariant; +function isVariant(definition) { + return typeof definition === "object"; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/state/utils/resolve-variant.es.js": +/*!***********************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/state/utils/resolve-variant.es.js ***! + \***********************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.resolveVariant = resolveVariant; +var _isVariantEs = __webpack_require__(/*! ./is-variant.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/is-variant.es.js"); +function resolveVariant(definition, variants) { + if ((0, _isVariantEs.isVariant)(definition)) { + return definition; + } else if (definition && variants) { + return variants[definition]; + } +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/state/utils/schedule.es.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/state/utils/schedule.es.js ***! + \****************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.scheduleAnimation = scheduleAnimation; +exports.unscheduleAnimation = unscheduleAnimation; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +let scheduled = undefined; +function processScheduledAnimations() { + if (!scheduled) return; + const generators = scheduled.sort(compareByDepth).map(fireAnimateUpdates); + generators.forEach(fireNext); + generators.forEach(fireNext); + scheduled = undefined; +} +function scheduleAnimation(state) { + if (!scheduled) { + scheduled = [state]; + requestAnimationFrame(processScheduledAnimations); + } else { + (0, _utils.addUniqueItem)(scheduled, state); + } +} +function unscheduleAnimation(state) { + scheduled && (0, _utils.removeItem)(scheduled, state); +} +const compareByDepth = (a, b) => a.getDepth() - b.getDepth(); +const fireAnimateUpdates = state => state.animateUpdates(); +const fireNext = iterator => iterator.next(); + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/timeline/index.es.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/timeline/index.es.js ***! + \**********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createAnimationsFromTimeline = createAnimationsFromTimeline; +exports.timeline = timeline; +var _tslib = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js"); +var _heyListen = __webpack_require__(/*! hey-listen */ "../../../node_modules/hey-listen/dist/hey-listen.es.js"); +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +var _staggerEs = __webpack_require__(/*! ../utils/stagger.es.js */ "../../../node_modules/@motionone/dom/dist/utils/stagger.es.js"); +var _animateStyleEs = __webpack_require__(/*! ../animate/animate-style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js"); +var _controlsEs = __webpack_require__(/*! ../animate/utils/controls.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/controls.es.js"); +var _keyframesEs = __webpack_require__(/*! ../animate/utils/keyframes.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/keyframes.es.js"); +var _optionsEs = __webpack_require__(/*! ../animate/utils/options.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/options.es.js"); +var _resolveElementsEs = __webpack_require__(/*! ../utils/resolve-elements.es.js */ "../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js"); +var _transformsEs = __webpack_require__(/*! ../animate/utils/transforms.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js"); +var _calcTimeEs = __webpack_require__(/*! ./utils/calc-time.es.js */ "../../../node_modules/@motionone/dom/dist/timeline/utils/calc-time.es.js"); +var _editEs = __webpack_require__(/*! ./utils/edit.es.js */ "../../../node_modules/@motionone/dom/dist/timeline/utils/edit.es.js"); +var _sortEs = __webpack_require__(/*! ./utils/sort.es.js */ "../../../node_modules/@motionone/dom/dist/timeline/utils/sort.es.js"); +function timeline(definition) { + let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var _a; + const animationDefinitions = createAnimationsFromTimeline(definition, options); + /** + * Create and start animations + */ + const animationFactories = animationDefinitions.map(definition => (0, _animateStyleEs.animateStyle)(...definition)).filter(Boolean); + return (0, _controlsEs.withControls)(animationFactories, options, + // Get the duration from the first animation definition + (_a = animationDefinitions[0]) === null || _a === void 0 ? void 0 : _a[3].duration); +} +function createAnimationsFromTimeline(definition) { + let _a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var { + defaultOptions = {} + } = _a, + timelineOptions = (0, _tslib.__rest)(_a, ["defaultOptions"]); + const animationDefinitions = []; + const elementSequences = new Map(); + const elementCache = {}; + const timeLabels = new Map(); + let prevTime = 0; + let currentTime = 0; + let totalDuration = 0; + /** + * Build the timeline by mapping over the definition array and converting + * the definitions into keyframes and offsets with absolute time values. + * These will later get converted into relative offsets in a second pass. + */ + for (let i = 0; i < definition.length; i++) { + const segment = definition[i]; + /** + * If this is a timeline label, mark it and skip the rest of this iteration. + */ + if ((0, _utils.isString)(segment)) { + timeLabels.set(segment, currentTime); + continue; + } else if (!Array.isArray(segment)) { + timeLabels.set(segment.name, (0, _calcTimeEs.calcNextTime)(currentTime, segment.at, prevTime, timeLabels)); + continue; + } + const [elementDefinition, keyframes, options = {}] = segment; + /** + * If a relative or absolute time value has been specified we need to resolve + * it in relation to the currentTime. + */ + if (options.at !== undefined) { + currentTime = (0, _calcTimeEs.calcNextTime)(currentTime, options.at, prevTime, timeLabels); + } + /** + * Keep track of the maximum duration in this definition. This will be + * applied to currentTime once the definition has been parsed. + */ + let maxDuration = 0; + /** + * Find all the elements specified in the definition and parse value + * keyframes from their timeline definitions. + */ + const elements = (0, _resolveElementsEs.resolveElements)(elementDefinition, elementCache); + const numElements = elements.length; + for (let elementIndex = 0; elementIndex < numElements; elementIndex++) { + const element = elements[elementIndex]; + const elementSequence = getElementSequence(element, elementSequences); + for (const key in keyframes) { + const valueSequence = getValueSequence(key, elementSequence); + let valueKeyframes = (0, _keyframesEs.keyframesList)(keyframes[key]); + const valueOptions = (0, _optionsEs.getOptions)(options, key); + let { + duration = defaultOptions.duration || _utils.defaults.duration, + easing = defaultOptions.easing || _utils.defaults.easing + } = valueOptions; + if ((0, _utils.isEasingGenerator)(easing)) { + const valueIsTransform = (0, _transformsEs.isTransform)(key); + (0, _heyListen.invariant)(valueKeyframes.length === 2 || !valueIsTransform, "spring must be provided 2 keyframes within timeline"); + const custom = easing.createAnimation(valueKeyframes, + // TODO We currently only support explicit keyframes + // so this doesn't currently read from the DOM + () => "0", valueIsTransform); + easing = custom.easing; + if (custom.keyframes !== undefined) valueKeyframes = custom.keyframes; + if (custom.duration !== undefined) duration = custom.duration; + } + const delay = (0, _staggerEs.resolveOption)(options.delay, elementIndex, numElements) || 0; + const startTime = currentTime + delay; + const targetTime = startTime + duration; + /** + * + */ + let { + offset = (0, _utils.defaultOffset)(valueKeyframes.length) + } = valueOptions; + /** + * If there's only one offset of 0, fill in a second with length 1 + * + * TODO: Ensure there's a test that covers this removal + */ + if (offset.length === 1 && offset[0] === 0) { + offset[1] = 1; + } + /** + * Fill out if offset if fewer offsets than keyframes + */ + const remainder = length - valueKeyframes.length; + remainder > 0 && (0, _utils.fillOffset)(offset, remainder); + /** + * If only one value has been set, ie [1], push a null to the start of + * the keyframe array. This will let us mark a keyframe at this point + * that will later be hydrated with the previous value. + */ + valueKeyframes.length === 1 && valueKeyframes.unshift(null); + /** + * Add keyframes, mapping offsets to absolute time. + */ + (0, _editEs.addKeyframes)(valueSequence, valueKeyframes, easing, offset, startTime, targetTime); + maxDuration = Math.max(delay + duration, maxDuration); + totalDuration = Math.max(targetTime, totalDuration); + } + } + prevTime = currentTime; + currentTime += maxDuration; + } + /** + * For every element and value combination create a new animation. + */ + elementSequences.forEach((valueSequences, element) => { + for (const key in valueSequences) { + const valueSequence = valueSequences[key]; + /** + * Arrange all the keyframes in ascending time order. + */ + valueSequence.sort(_sortEs.compareByTime); + const keyframes = []; + const valueOffset = []; + const valueEasing = []; + /** + * For each keyframe, translate absolute times into + * relative offsets based on the total duration of the timeline. + */ + for (let i = 0; i < valueSequence.length; i++) { + const { + at, + value, + easing + } = valueSequence[i]; + keyframes.push(value); + valueOffset.push((0, _utils.progress)(0, totalDuration, at)); + valueEasing.push(easing || _utils.defaults.easing); + } + /** + * If the first keyframe doesn't land on offset: 0 + * provide one by duplicating the initial keyframe. This ensures + * it snaps to the first keyframe when the animation starts. + */ + if (valueOffset[0] !== 0) { + valueOffset.unshift(0); + keyframes.unshift(keyframes[0]); + valueEasing.unshift("linear"); + } + /** + * If the last keyframe doesn't land on offset: 1 + * provide one with a null wildcard value. This will ensure it + * stays static until the end of the animation. + */ + if (valueOffset[valueOffset.length - 1] !== 1) { + valueOffset.push(1); + keyframes.push(null); + } + animationDefinitions.push([element, key, keyframes, Object.assign(Object.assign(Object.assign({}, defaultOptions), { + duration: totalDuration, + easing: valueEasing, + offset: valueOffset + }), timelineOptions)]); + } + }); + return animationDefinitions; +} +function getElementSequence(element, sequences) { + !sequences.has(element) && sequences.set(element, {}); + return sequences.get(element); +} +function getValueSequence(name, sequences) { + if (!sequences[name]) sequences[name] = []; + return sequences[name]; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/timeline/utils/calc-time.es.js": +/*!********************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/timeline/utils/calc-time.es.js ***! + \********************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.calcNextTime = calcNextTime; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +function calcNextTime(current, next, prev, labels) { + var _a; + if ((0, _utils.isNumber)(next)) { + return next; + } else if (next.startsWith("-") || next.startsWith("+")) { + return Math.max(0, current + parseFloat(next)); + } else if (next === "<") { + return prev; + } else { + return (_a = labels.get(next)) !== null && _a !== void 0 ? _a : current; + } +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/timeline/utils/edit.es.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/timeline/utils/edit.es.js ***! + \***************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.addKeyframes = addKeyframes; +exports.eraseKeyframes = eraseKeyframes; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +function eraseKeyframes(sequence, startTime, endTime) { + for (let i = 0; i < sequence.length; i++) { + const keyframe = sequence[i]; + if (keyframe.at > startTime && keyframe.at < endTime) { + (0, _utils.removeItem)(sequence, keyframe); + // If we remove this item we have to push the pointer back one + i--; + } + } +} +function addKeyframes(sequence, keyframes, easing, offset, startTime, endTime) { + /** + * Erase every existing value between currentTime and targetTime, + * this will essentially splice this timeline into any currently + * defined ones. + */ + eraseKeyframes(sequence, startTime, endTime); + for (let i = 0; i < keyframes.length; i++) { + sequence.push({ + value: keyframes[i], + at: (0, _utils.mix)(startTime, endTime, offset[i]), + easing: (0, _utils.getEasingForSegment)(easing, i) + }); + } +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/timeline/utils/sort.es.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/timeline/utils/sort.es.js ***! + \***************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.compareByTime = compareByTime; +function compareByTime(a, b) { + if (a.at === b.at) { + return a.value === null ? 1 : -1; + } else { + return a.at - b.at; + } +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js ***! + \******************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.resolveElements = resolveElements; +function resolveElements(elements, selectorCache) { + var _a; + if (typeof elements === "string") { + if (selectorCache) { + (_a = selectorCache[elements]) !== null && _a !== void 0 ? _a : selectorCache[elements] = document.querySelectorAll(elements); + elements = selectorCache[elements]; + } else { + elements = document.querySelectorAll(elements); + } + } else if (elements instanceof Element) { + elements = [elements]; + } + /** + * Return an empty array + */ + return Array.from(elements || []); +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/dom/dist/utils/stagger.es.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/@motionone/dom/dist/utils/stagger.es.js ***! + \*********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getFromIndex = getFromIndex; +exports.resolveOption = resolveOption; +exports.stagger = stagger; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +var _animation = __webpack_require__(/*! @motionone/animation */ "../../../node_modules/@motionone/animation/dist/index.es.js"); +function stagger() { + let duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.1; + let { + start = 0, + from = 0, + easing + } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return (i, total) => { + const fromIndex = (0, _utils.isNumber)(from) ? from : getFromIndex(from, total); + const distance = Math.abs(fromIndex - i); + let delay = duration * distance; + if (easing) { + const maxDelay = total * duration; + const easingFunction = (0, _animation.getEasingFunction)(easing); + delay = easingFunction(delay / maxDelay) * maxDelay; + } + return start + delay; + }; +} +function getFromIndex(from, total) { + if (from === "first") { + return 0; + } else { + const lastIndex = total - 1; + return from === "last" ? lastIndex : lastIndex / 2; + } +} +function resolveOption(option, i, total) { + return typeof option === "function" ? option(i, total) : option; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/easing/dist/cubic-bezier.es.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/@motionone/easing/dist/cubic-bezier.es.js ***! + \***********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.cubicBezier = cubicBezier; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +/* + Bezier function generator + + This has been modified from Gaëtan Renaudeau's BezierEasing + https://github.com/gre/bezier-easing/blob/master/src/index.js + https://github.com/gre/bezier-easing/blob/master/LICENSE + + I've removed the newtonRaphsonIterate algo because in benchmarking it + wasn't noticiably faster than binarySubdivision, indeed removing it + usually improved times, depending on the curve. + + I also removed the lookup table, as for the added bundle size and loop we're + only cutting ~4 or so subdivision iterations. I bumped the max iterations up + to 12 to compensate and this still tended to be faster for no perceivable + loss in accuracy. + + Usage + const easeOut = cubicBezier(.17,.67,.83,.67); + const x = easeOut(0.5); // returns 0.627... +*/ +// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2. +const calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) * t; +const subdivisionPrecision = 0.0000001; +const subdivisionMaxIterations = 12; +function binarySubdivide(x, lowerBound, upperBound, mX1, mX2) { + let currentX; + let currentT; + let i = 0; + do { + currentT = lowerBound + (upperBound - lowerBound) / 2.0; + currentX = calcBezier(currentT, mX1, mX2) - x; + if (currentX > 0.0) { + upperBound = currentT; + } else { + lowerBound = currentT; + } + } while (Math.abs(currentX) > subdivisionPrecision && ++i < subdivisionMaxIterations); + return currentT; +} +function cubicBezier(mX1, mY1, mX2, mY2) { + // If this is a linear gradient, return linear easing + if (mX1 === mY1 && mX2 === mY2) return _utils.noopReturn; + const getTForX = aX => binarySubdivide(aX, 0, 1, mX1, mX2); + // If animation is at start/end, return t without easing + return t => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2); +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/easing/dist/index.es.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/@motionone/easing/dist/index.es.js ***! + \****************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "cubicBezier", ({ + enumerable: true, + get: function () { + return _cubicBezierEs.cubicBezier; + } +})); +Object.defineProperty(exports, "steps", ({ + enumerable: true, + get: function () { + return _stepsEs.steps; + } +})); +var _cubicBezierEs = __webpack_require__(/*! ./cubic-bezier.es.js */ "../../../node_modules/@motionone/easing/dist/cubic-bezier.es.js"); +var _stepsEs = __webpack_require__(/*! ./steps.es.js */ "../../../node_modules/@motionone/easing/dist/steps.es.js"); + +/***/ }), + +/***/ "../../../node_modules/@motionone/easing/dist/steps.es.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/@motionone/easing/dist/steps.es.js ***! + \****************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.steps = void 0; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +const steps = function (steps) { + let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "end"; + return progress => { + progress = direction === "end" ? Math.min(progress, 0.999) : Math.max(progress, 0.001); + const expanded = progress * steps; + const rounded = direction === "end" ? Math.floor(expanded) : Math.ceil(expanded); + return (0, _utils.clamp)(0, 1, rounded / steps); + }; +}; +exports.steps = steps; + +/***/ }), + +/***/ "../../../node_modules/@motionone/generators/dist/glide/index.es.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/@motionone/generators/dist/glide/index.es.js ***! + \**************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.glide = void 0; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +var _velocityEs = __webpack_require__(/*! ../utils/velocity.es.js */ "../../../node_modules/@motionone/generators/dist/utils/velocity.es.js"); +var _indexEs = __webpack_require__(/*! ../spring/index.es.js */ "../../../node_modules/@motionone/generators/dist/spring/index.es.js"); +const glide = _ref => { + let { + from = 0, + velocity = 0.0, + power = 0.8, + decay = 0.325, + bounceDamping, + bounceStiffness, + changeTarget, + min, + max, + restDistance = 0.5, + restSpeed + } = _ref; + decay = _utils.time.ms(decay); + const state = { + hasReachedTarget: false, + done: false, + current: from, + target: from + }; + const isOutOfBounds = v => min !== undefined && v < min || max !== undefined && v > max; + const nearestBoundary = v => { + if (min === undefined) return max; + if (max === undefined) return min; + return Math.abs(min - v) < Math.abs(max - v) ? min : max; + }; + let amplitude = power * velocity; + const ideal = from + amplitude; + const target = changeTarget === undefined ? ideal : changeTarget(ideal); + state.target = target; + /** + * If the target has changed we need to re-calculate the amplitude, otherwise + * the animation will start from the wrong position. + */ + if (target !== ideal) amplitude = target - from; + const calcDelta = t => -amplitude * Math.exp(-t / decay); + const calcLatest = t => target + calcDelta(t); + const applyFriction = t => { + const delta = calcDelta(t); + const latest = calcLatest(t); + state.done = Math.abs(delta) <= restDistance; + state.current = state.done ? target : latest; + }; + /** + * Ideally this would resolve for t in a stateless way, we could + * do that by always precalculating the animation but as we know + * this will be done anyway we can assume that spring will + * be discovered during that. + */ + let timeReachedBoundary; + let spring$1; + const checkCatchBoundary = t => { + if (!isOutOfBounds(state.current)) return; + timeReachedBoundary = t; + spring$1 = (0, _indexEs.spring)({ + from: state.current, + to: nearestBoundary(state.current), + velocity: (0, _velocityEs.calcGeneratorVelocity)(calcLatest, t, state.current), + damping: bounceDamping, + stiffness: bounceStiffness, + restDistance, + restSpeed + }); + }; + checkCatchBoundary(0); + return t => { + /** + * We need to resolve the friction to figure out if we need a + * spring but we don't want to do this twice per frame. So here + * we flag if we updated for this frame and later if we did + * we can skip doing it again. + */ + let hasUpdatedFrame = false; + if (!spring$1 && timeReachedBoundary === undefined) { + hasUpdatedFrame = true; + applyFriction(t); + checkCatchBoundary(t); + } + /** + * If we have a spring and the provided t is beyond the moment the friction + * animation crossed the min/max boundary, use the spring. + */ + if (timeReachedBoundary !== undefined && t > timeReachedBoundary) { + state.hasReachedTarget = true; + return spring$1(t - timeReachedBoundary); + } else { + state.hasReachedTarget = false; + !hasUpdatedFrame && applyFriction(t); + return state; + } + }; +}; +exports.glide = glide; + +/***/ }), + +/***/ "../../../node_modules/@motionone/generators/dist/index.es.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/@motionone/generators/dist/index.es.js ***! + \********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "calcGeneratorVelocity", ({ + enumerable: true, + get: function () { + return _velocityEs.calcGeneratorVelocity; + } +})); +Object.defineProperty(exports, "glide", ({ + enumerable: true, + get: function () { + return _indexEs.glide; + } +})); +Object.defineProperty(exports, "pregenerateKeyframes", ({ + enumerable: true, + get: function () { + return _pregenerateKeyframesEs.pregenerateKeyframes; + } +})); +Object.defineProperty(exports, "spring", ({ + enumerable: true, + get: function () { + return _indexEs2.spring; + } +})); +var _indexEs = __webpack_require__(/*! ./glide/index.es.js */ "../../../node_modules/@motionone/generators/dist/glide/index.es.js"); +var _indexEs2 = __webpack_require__(/*! ./spring/index.es.js */ "../../../node_modules/@motionone/generators/dist/spring/index.es.js"); +var _pregenerateKeyframesEs = __webpack_require__(/*! ./utils/pregenerate-keyframes.es.js */ "../../../node_modules/@motionone/generators/dist/utils/pregenerate-keyframes.es.js"); +var _velocityEs = __webpack_require__(/*! ./utils/velocity.es.js */ "../../../node_modules/@motionone/generators/dist/utils/velocity.es.js"); + +/***/ }), + +/***/ "../../../node_modules/@motionone/generators/dist/spring/defaults.es.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/@motionone/generators/dist/spring/defaults.es.js ***! + \******************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.defaults = void 0; +const defaults = { + stiffness: 100.0, + damping: 10.0, + mass: 1.0 +}; +exports.defaults = defaults; + +/***/ }), + +/***/ "../../../node_modules/@motionone/generators/dist/spring/index.es.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/@motionone/generators/dist/spring/index.es.js ***! + \***************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.spring = void 0; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +var _defaultsEs = __webpack_require__(/*! ./defaults.es.js */ "../../../node_modules/@motionone/generators/dist/spring/defaults.es.js"); +var _utilsEs = __webpack_require__(/*! ./utils.es.js */ "../../../node_modules/@motionone/generators/dist/spring/utils.es.js"); +var _hasReachedTargetEs = __webpack_require__(/*! ../utils/has-reached-target.es.js */ "../../../node_modules/@motionone/generators/dist/utils/has-reached-target.es.js"); +var _velocityEs = __webpack_require__(/*! ../utils/velocity.es.js */ "../../../node_modules/@motionone/generators/dist/utils/velocity.es.js"); +const spring = function () { + let { + stiffness = _defaultsEs.defaults.stiffness, + damping = _defaultsEs.defaults.damping, + mass = _defaultsEs.defaults.mass, + from = 0, + to = 1, + velocity = 0.0, + restSpeed = 2, + restDistance = 0.5 + } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + velocity = velocity ? _utils.time.s(velocity) : 0.0; + const state = { + done: false, + hasReachedTarget: false, + current: from, + target: to + }; + const initialDelta = to - from; + const undampedAngularFreq = Math.sqrt(stiffness / mass) / 1000; + const dampingRatio = (0, _utilsEs.calcDampingRatio)(stiffness, damping, mass); + let resolveSpring; + if (dampingRatio < 1) { + const angularFreq = undampedAngularFreq * Math.sqrt(1 - dampingRatio * dampingRatio); + // Underdamped spring (bouncy) + resolveSpring = t => to - Math.exp(-dampingRatio * undampedAngularFreq * t) * ((-velocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq * Math.sin(angularFreq * t) + initialDelta * Math.cos(angularFreq * t)); + } else { + // Critically damped spring + resolveSpring = t => { + return to - Math.exp(-undampedAngularFreq * t) * (initialDelta + (-velocity + undampedAngularFreq * initialDelta) * t); + }; + } + return t => { + state.current = resolveSpring(t); + const currentVelocity = t === 0 ? velocity : (0, _velocityEs.calcGeneratorVelocity)(resolveSpring, t, state.current); + const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed; + const isBelowDisplacementThreshold = Math.abs(to - state.current) <= restDistance; + state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold; + state.hasReachedTarget = (0, _hasReachedTargetEs.hasReachedTarget)(from, to, state.current); + return state; + }; +}; +exports.spring = spring; + +/***/ }), + +/***/ "../../../node_modules/@motionone/generators/dist/spring/utils.es.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/@motionone/generators/dist/spring/utils.es.js ***! + \***************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.calcDampingRatio = void 0; +var _defaultsEs = __webpack_require__(/*! ./defaults.es.js */ "../../../node_modules/@motionone/generators/dist/spring/defaults.es.js"); +const calcDampingRatio = function () { + let stiffness = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _defaultsEs.defaults.stiffness; + let damping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _defaultsEs.defaults.damping; + let mass = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _defaultsEs.defaults.mass; + return damping / (2 * Math.sqrt(stiffness * mass)); +}; +exports.calcDampingRatio = calcDampingRatio; + +/***/ }), + +/***/ "../../../node_modules/@motionone/generators/dist/utils/has-reached-target.es.js": +/*!***************************************************************************************!*\ + !*** ../../../node_modules/@motionone/generators/dist/utils/has-reached-target.es.js ***! + \***************************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.hasReachedTarget = hasReachedTarget; +function hasReachedTarget(origin, target, current) { + return origin < target && current >= target || origin > target && current <= target; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/generators/dist/utils/pregenerate-keyframes.es.js": +/*!******************************************************************************************!*\ + !*** ../../../node_modules/@motionone/generators/dist/utils/pregenerate-keyframes.es.js ***! + \******************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.pregenerateKeyframes = pregenerateKeyframes; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +const timeStep = 10; +const maxDuration = 10000; +function pregenerateKeyframes(generator) { + let toUnit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.noopReturn; + let overshootDuration = undefined; + let timestamp = timeStep; + let state = generator(0); + const keyframes = [toUnit(state.current)]; + while (!state.done && timestamp < maxDuration) { + state = generator(timestamp); + keyframes.push(toUnit(state.done ? state.target : state.current)); + if (overshootDuration === undefined && state.hasReachedTarget) { + overshootDuration = timestamp; + } + timestamp += timeStep; + } + const duration = timestamp - timeStep; + /** + * If generating an animation that didn't actually move, + * generate a second keyframe so we have an origin and target. + */ + if (keyframes.length === 1) keyframes.push(state.current); + return { + keyframes, + duration: duration / 1000, + overshootDuration: (overshootDuration !== null && overshootDuration !== void 0 ? overshootDuration : duration) / 1000 + }; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/generators/dist/utils/velocity.es.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/@motionone/generators/dist/utils/velocity.es.js ***! + \*****************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.calcGeneratorVelocity = calcGeneratorVelocity; +var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); +const sampleT = 5; // ms +function calcGeneratorVelocity(resolveValue, t, current) { + const prevT = Math.max(t - sampleT, 0); + return (0, _utils.velocityPerSecond)(current - resolveValue(prevT), t - prevT); +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/types/dist/MotionValue.es.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/@motionone/types/dist/MotionValue.es.js ***! + \*********************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MotionValue = void 0; +/** + * The MotionValue tracks the state of a single animatable + * value. Currently, updatedAt and current are unused. The + * long term idea is to use this to minimise the number + * of DOM reads, and to abstract the DOM interactions here. + */ +class MotionValue { + setAnimation(animation) { + this.animation = animation; + animation === null || animation === void 0 ? void 0 : animation.finished.then(() => this.clearAnimation()).catch(() => {}); + } + clearAnimation() { + this.animation = this.generator = undefined; + } +} +exports.MotionValue = MotionValue; + +/***/ }), + +/***/ "../../../node_modules/@motionone/types/dist/index.es.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/@motionone/types/dist/index.es.js ***! + \***************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "MotionValue", ({ + enumerable: true, + get: function () { + return _MotionValueEs.MotionValue; + } +})); +var _MotionValueEs = __webpack_require__(/*! ./MotionValue.es.js */ "../../../node_modules/@motionone/types/dist/MotionValue.es.js"); + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/array.es.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/array.es.js ***! + \***************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.addUniqueItem = addUniqueItem; +exports.removeItem = removeItem; +function addUniqueItem(array, item) { + array.indexOf(item) === -1 && array.push(item); +} +function removeItem(arr, item) { + const index = arr.indexOf(item); + index > -1 && arr.splice(index, 1); +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/clamp.es.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/clamp.es.js ***! + \***************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.clamp = void 0; +const clamp = (min, max, v) => Math.min(Math.max(v, min), max); +exports.clamp = clamp; + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/defaults.es.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/defaults.es.js ***! + \******************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.defaults = void 0; +const defaults = { + duration: 0.3, + delay: 0, + endDelay: 0, + repeat: 0, + easing: "ease" +}; +exports.defaults = defaults; + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/easing.es.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/easing.es.js ***! + \****************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getEasingForSegment = getEasingForSegment; +var _isEasingListEs = __webpack_require__(/*! ./is-easing-list.es.js */ "../../../node_modules/@motionone/utils/dist/is-easing-list.es.js"); +var _wrapEs = __webpack_require__(/*! ./wrap.es.js */ "../../../node_modules/@motionone/utils/dist/wrap.es.js"); +function getEasingForSegment(easing, i) { + return (0, _isEasingListEs.isEasingList)(easing) ? easing[(0, _wrapEs.wrap)(0, easing.length, i)] : easing; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/index.es.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/index.es.js ***! + \***************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "addUniqueItem", ({ + enumerable: true, + get: function () { + return _arrayEs.addUniqueItem; + } +})); +Object.defineProperty(exports, "clamp", ({ + enumerable: true, + get: function () { + return _clampEs.clamp; + } +})); +Object.defineProperty(exports, "defaultOffset", ({ + enumerable: true, + get: function () { + return _offsetEs.defaultOffset; + } +})); +Object.defineProperty(exports, "defaults", ({ + enumerable: true, + get: function () { + return _defaultsEs.defaults; + } +})); +Object.defineProperty(exports, "fillOffset", ({ + enumerable: true, + get: function () { + return _offsetEs.fillOffset; + } +})); +Object.defineProperty(exports, "getEasingForSegment", ({ + enumerable: true, + get: function () { + return _easingEs.getEasingForSegment; + } +})); +Object.defineProperty(exports, "interpolate", ({ + enumerable: true, + get: function () { + return _interpolateEs.interpolate; + } +})); +Object.defineProperty(exports, "isCubicBezier", ({ + enumerable: true, + get: function () { + return _isCubicBezierEs.isCubicBezier; + } +})); +Object.defineProperty(exports, "isEasingGenerator", ({ + enumerable: true, + get: function () { + return _isEasingGeneratorEs.isEasingGenerator; + } +})); +Object.defineProperty(exports, "isEasingList", ({ + enumerable: true, + get: function () { + return _isEasingListEs.isEasingList; + } +})); +Object.defineProperty(exports, "isFunction", ({ + enumerable: true, + get: function () { + return _isFunctionEs.isFunction; + } +})); +Object.defineProperty(exports, "isNumber", ({ + enumerable: true, + get: function () { + return _isNumberEs.isNumber; + } +})); +Object.defineProperty(exports, "isString", ({ + enumerable: true, + get: function () { + return _isStringEs.isString; + } +})); +Object.defineProperty(exports, "mix", ({ + enumerable: true, + get: function () { + return _mixEs.mix; + } +})); +Object.defineProperty(exports, "noop", ({ + enumerable: true, + get: function () { + return _noopEs.noop; + } +})); +Object.defineProperty(exports, "noopReturn", ({ + enumerable: true, + get: function () { + return _noopEs.noopReturn; + } +})); +Object.defineProperty(exports, "progress", ({ + enumerable: true, + get: function () { + return _progressEs.progress; + } +})); +Object.defineProperty(exports, "removeItem", ({ + enumerable: true, + get: function () { + return _arrayEs.removeItem; + } +})); +Object.defineProperty(exports, "time", ({ + enumerable: true, + get: function () { + return _timeEs.time; + } +})); +Object.defineProperty(exports, "velocityPerSecond", ({ + enumerable: true, + get: function () { + return _velocityEs.velocityPerSecond; + } +})); +Object.defineProperty(exports, "wrap", ({ + enumerable: true, + get: function () { + return _wrapEs.wrap; + } +})); +var _arrayEs = __webpack_require__(/*! ./array.es.js */ "../../../node_modules/@motionone/utils/dist/array.es.js"); +var _clampEs = __webpack_require__(/*! ./clamp.es.js */ "../../../node_modules/@motionone/utils/dist/clamp.es.js"); +var _defaultsEs = __webpack_require__(/*! ./defaults.es.js */ "../../../node_modules/@motionone/utils/dist/defaults.es.js"); +var _easingEs = __webpack_require__(/*! ./easing.es.js */ "../../../node_modules/@motionone/utils/dist/easing.es.js"); +var _interpolateEs = __webpack_require__(/*! ./interpolate.es.js */ "../../../node_modules/@motionone/utils/dist/interpolate.es.js"); +var _isCubicBezierEs = __webpack_require__(/*! ./is-cubic-bezier.es.js */ "../../../node_modules/@motionone/utils/dist/is-cubic-bezier.es.js"); +var _isEasingGeneratorEs = __webpack_require__(/*! ./is-easing-generator.es.js */ "../../../node_modules/@motionone/utils/dist/is-easing-generator.es.js"); +var _isEasingListEs = __webpack_require__(/*! ./is-easing-list.es.js */ "../../../node_modules/@motionone/utils/dist/is-easing-list.es.js"); +var _isFunctionEs = __webpack_require__(/*! ./is-function.es.js */ "../../../node_modules/@motionone/utils/dist/is-function.es.js"); +var _isNumberEs = __webpack_require__(/*! ./is-number.es.js */ "../../../node_modules/@motionone/utils/dist/is-number.es.js"); +var _isStringEs = __webpack_require__(/*! ./is-string.es.js */ "../../../node_modules/@motionone/utils/dist/is-string.es.js"); +var _mixEs = __webpack_require__(/*! ./mix.es.js */ "../../../node_modules/@motionone/utils/dist/mix.es.js"); +var _noopEs = __webpack_require__(/*! ./noop.es.js */ "../../../node_modules/@motionone/utils/dist/noop.es.js"); +var _offsetEs = __webpack_require__(/*! ./offset.es.js */ "../../../node_modules/@motionone/utils/dist/offset.es.js"); +var _progressEs = __webpack_require__(/*! ./progress.es.js */ "../../../node_modules/@motionone/utils/dist/progress.es.js"); +var _timeEs = __webpack_require__(/*! ./time.es.js */ "../../../node_modules/@motionone/utils/dist/time.es.js"); +var _velocityEs = __webpack_require__(/*! ./velocity.es.js */ "../../../node_modules/@motionone/utils/dist/velocity.es.js"); +var _wrapEs = __webpack_require__(/*! ./wrap.es.js */ "../../../node_modules/@motionone/utils/dist/wrap.es.js"); + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/interpolate.es.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/interpolate.es.js ***! + \*********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.interpolate = interpolate; +var _mixEs = __webpack_require__(/*! ./mix.es.js */ "../../../node_modules/@motionone/utils/dist/mix.es.js"); +var _noopEs = __webpack_require__(/*! ./noop.es.js */ "../../../node_modules/@motionone/utils/dist/noop.es.js"); +var _offsetEs = __webpack_require__(/*! ./offset.es.js */ "../../../node_modules/@motionone/utils/dist/offset.es.js"); +var _progressEs = __webpack_require__(/*! ./progress.es.js */ "../../../node_modules/@motionone/utils/dist/progress.es.js"); +var _easingEs = __webpack_require__(/*! ./easing.es.js */ "../../../node_modules/@motionone/utils/dist/easing.es.js"); +var _clampEs = __webpack_require__(/*! ./clamp.es.js */ "../../../node_modules/@motionone/utils/dist/clamp.es.js"); +function interpolate(output) { + let input = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _offsetEs.defaultOffset)(output.length); + let easing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _noopEs.noopReturn; + const length = output.length; + /** + * If the input length is lower than the output we + * fill the input to match. This currently assumes the input + * is an animation progress value so is a good candidate for + * moving outside the function. + */ + const remainder = length - input.length; + remainder > 0 && (0, _offsetEs.fillOffset)(input, remainder); + return t => { + let i = 0; + for (; i < length - 2; i++) { + if (t < input[i + 1]) break; + } + let progressInRange = (0, _clampEs.clamp)(0, 1, (0, _progressEs.progress)(input[i], input[i + 1], t)); + const segmentEasing = (0, _easingEs.getEasingForSegment)(easing, i); + progressInRange = segmentEasing(progressInRange); + return (0, _mixEs.mix)(output[i], output[i + 1], progressInRange); + }; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/is-cubic-bezier.es.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/is-cubic-bezier.es.js ***! + \*************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isCubicBezier = void 0; +var _isNumberEs = __webpack_require__(/*! ./is-number.es.js */ "../../../node_modules/@motionone/utils/dist/is-number.es.js"); +const isCubicBezier = easing => Array.isArray(easing) && (0, _isNumberEs.isNumber)(easing[0]); +exports.isCubicBezier = isCubicBezier; + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/is-easing-generator.es.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/is-easing-generator.es.js ***! + \*****************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isEasingGenerator = void 0; +const isEasingGenerator = easing => typeof easing === "object" && Boolean(easing.createAnimation); +exports.isEasingGenerator = isEasingGenerator; + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/is-easing-list.es.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/is-easing-list.es.js ***! + \************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isEasingList = void 0; +var _isNumberEs = __webpack_require__(/*! ./is-number.es.js */ "../../../node_modules/@motionone/utils/dist/is-number.es.js"); +const isEasingList = easing => Array.isArray(easing) && !(0, _isNumberEs.isNumber)(easing[0]); +exports.isEasingList = isEasingList; + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/is-function.es.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/is-function.es.js ***! + \*********************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isFunction = void 0; +const isFunction = value => typeof value === "function"; +exports.isFunction = isFunction; + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/is-number.es.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/is-number.es.js ***! + \*******************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isNumber = void 0; +const isNumber = value => typeof value === "number"; +exports.isNumber = isNumber; + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/is-string.es.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/is-string.es.js ***! + \*******************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isString = void 0; +const isString = value => typeof value === "string"; +exports.isString = isString; + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/mix.es.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/mix.es.js ***! + \*************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.mix = void 0; +const mix = (min, max, progress) => -progress * min + progress * max + min; +exports.mix = mix; + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/noop.es.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/noop.es.js ***! + \**************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.noopReturn = exports.noop = void 0; +const noop = () => {}; +exports.noop = noop; +const noopReturn = v => v; +exports.noopReturn = noopReturn; + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/offset.es.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/offset.es.js ***! + \****************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.defaultOffset = defaultOffset; +exports.fillOffset = fillOffset; +var _mixEs = __webpack_require__(/*! ./mix.es.js */ "../../../node_modules/@motionone/utils/dist/mix.es.js"); +var _progressEs = __webpack_require__(/*! ./progress.es.js */ "../../../node_modules/@motionone/utils/dist/progress.es.js"); +function fillOffset(offset, remaining) { + const min = offset[offset.length - 1]; + for (let i = 1; i <= remaining; i++) { + const offsetProgress = (0, _progressEs.progress)(0, remaining, i); + offset.push((0, _mixEs.mix)(min, 1, offsetProgress)); + } +} +function defaultOffset(length) { + const offset = [0]; + fillOffset(offset, length - 1); + return offset; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/progress.es.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/progress.es.js ***! + \******************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.progress = void 0; +const progress = (min, max, value) => max - min === 0 ? 1 : (value - min) / (max - min); +exports.progress = progress; + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/time.es.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/time.es.js ***! + \**************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.time = void 0; +const time = { + ms: seconds => seconds * 1000, + s: milliseconds => milliseconds / 1000 +}; +exports.time = time; + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/velocity.es.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/velocity.es.js ***! + \******************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.velocityPerSecond = velocityPerSecond; +/* + Convert velocity into velocity per second + + @param [number]: Unit per frame + @param [number]: Frame duration in ms +*/ +function velocityPerSecond(velocity, frameDuration) { + return frameDuration ? velocity * (1000 / frameDuration) : 0; +} + +/***/ }), + +/***/ "../../../node_modules/@motionone/utils/dist/wrap.es.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/@motionone/utils/dist/wrap.es.js ***! + \**************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.wrap = void 0; +const wrap = (min, max, v) => { + const rangeSize = max - min; + return ((v - min) % rangeSize + rangeSize) % rangeSize + min; +}; +exports.wrap = wrap; + +/***/ }), + +/***/ "../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/index.js": +/*!********************************************************************************!*\ + !*** ../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/index.js ***! + \********************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +function createDeferred() { + const d = {}; + d.promise = new Promise((resolve, reject) => { + d.resolve = resolve; + d.reject = reject; + }); + return d; +} +const SYMBOL_FINISHED = Symbol(); +const SYMBOL_NEW_VALUE = Symbol(); +/** + * makePushPullAsyncIterableIterator + * + * The iterable will publish values until return or throw is called. + * Afterwards it is in the completed state and cannot be used for publishing any further values. + * It will handle back-pressure and keep pushed values until they are consumed by a source. + */ +function makePushPullAsyncIterableIterator() { + let isRunning = true; + const values = []; + let newValueD = createDeferred(); + const finishedD = createDeferred(); + const asyncIterableIterator = async function* PushPullAsyncIterableIterator() { + while (true) { + if (values.length > 0) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + yield values.shift(); + } else { + const result = await Promise.race([newValueD.promise, finishedD.promise]); + if (result === SYMBOL_FINISHED) { + break; + } + if (result !== SYMBOL_NEW_VALUE) { + throw result; + } + } + } + }(); + function pushValue(value) { + if (isRunning === false) { + // TODO: Should this throw? + return; + } + values.push(value); + newValueD.resolve(SYMBOL_NEW_VALUE); + newValueD = createDeferred(); + } + // We monkey patch the original generator for clean-up + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const originalReturn = asyncIterableIterator.return.bind(asyncIterableIterator); + asyncIterableIterator.return = function () { + isRunning = false; + finishedD.resolve(SYMBOL_FINISHED); + return originalReturn(...arguments); + }; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const originalThrow = asyncIterableIterator.throw.bind(asyncIterableIterator); + asyncIterableIterator.throw = err => { + isRunning = false; + finishedD.resolve(err); + return originalThrow(err); + }; + return { + pushValue, + asyncIterableIterator + }; +} +const makeAsyncIterableIteratorFromSink = make => { + const { + pushValue, + asyncIterableIterator + } = makePushPullAsyncIterableIterator(); + const dispose = make({ + next: value => { + pushValue(value); + }, + complete: () => { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + asyncIterableIterator.return(); + }, + error: err => { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + asyncIterableIterator.throw(err); + } + }); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const originalReturn = asyncIterableIterator.return; + let returnValue = undefined; + asyncIterableIterator.return = () => { + if (returnValue === undefined) { + dispose(); + returnValue = originalReturn(); + } + return returnValue; + }; + return asyncIterableIterator; +}; +function applyAsyncIterableIteratorToSink(asyncIterableIterator, sink) { + const run = async () => { + try { + for await (const value of asyncIterableIterator) { + sink.next(value); + } + sink.complete(); + } catch (err) { + sink.error(err); + } + }; + run(); + return () => { + var _a; + (_a = asyncIterableIterator.return) === null || _a === void 0 ? void 0 : _a.call(asyncIterableIterator); + }; +} +function isAsyncIterable(input) { + return typeof input === "object" && input !== null && ( + // The AsyncGenerator check is for Safari on iOS which currently does not have + // Symbol.asyncIterator implemented + // That means every custom AsyncIterable must be built using a AsyncGeneratorFunction (async function * () {}) + // eslint-disable-next-line @typescript-eslint/no-explicit-any + input[Symbol.toStringTag] === "AsyncGenerator" || Symbol.asyncIterator && Symbol.asyncIterator in input); +} +exports.applyAsyncIterableIteratorToSink = applyAsyncIterableIteratorToSink; +exports.isAsyncIterable = isAsyncIterable; +exports.makeAsyncIterableIteratorFromSink = makeAsyncIterableIteratorFromSink; +exports.makePushPullAsyncIterableIterator = makePushPullAsyncIterableIterator; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/primitive/dist/index.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/@radix-ui/primitive/dist/index.js ***! + \***************************************************************/ +/***/ (function(module) { + + + +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +$parcel$export(module.exports, "composeEventHandlers", () => $1a6a90a521dcd173$export$b9ecd428b558ff10); +function $1a6a90a521dcd173$export$b9ecd428b558ff10(originalEventHandler, ourEventHandler) { + let { + checkForDefaultPrevented = true + } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return function handleEvent(event) { + originalEventHandler === null || originalEventHandler === void 0 || originalEventHandler(event); + if (checkForDefaultPrevented === false || !event.defaultPrevented) return ourEventHandler === null || ourEventHandler === void 0 ? void 0 : ourEventHandler(event); + }; +} + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-arrow/dist/index.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-arrow/dist/index.js ***! + \*****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $eQpDd$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); +var $eQpDd$react = __webpack_require__(/*! react */ "react"); +var $eQpDd$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "Arrow", () => $09f4ad68a9251bc3$export$21b07c8f274aebd5); +$parcel$export(module.exports, "Root", () => $09f4ad68a9251bc3$export$be92b6f5f03c0fe9); + +/* ------------------------------------------------------------------------------------------------- + * Arrow + * -----------------------------------------------------------------------------------------------*/ +const $09f4ad68a9251bc3$var$NAME = 'Arrow'; +const $09f4ad68a9251bc3$export$21b07c8f274aebd5 = /*#__PURE__*/$eQpDd$react.forwardRef((props, forwardedRef) => { + const { + children: children, + width = 10, + height = 5, + ...arrowProps + } = props; + return /*#__PURE__*/$eQpDd$react.createElement($eQpDd$radixuireactprimitive.Primitive.svg, $parcel$interopDefault($eQpDd$babelruntimehelpersextends)({}, arrowProps, { + ref: forwardedRef, + width: width, + height: height, + viewBox: "0 0 30 10", + preserveAspectRatio: "none" + }), props.asChild ? children : /*#__PURE__*/$eQpDd$react.createElement("polygon", { + points: "0,0 30,0 15,10" + })); +}); +/*#__PURE__*/ +Object.assign($09f4ad68a9251bc3$export$21b07c8f274aebd5, { + displayName: $09f4ad68a9251bc3$var$NAME +}); +/* -----------------------------------------------------------------------------------------------*/ +const $09f4ad68a9251bc3$export$be92b6f5f03c0fe9 = $09f4ad68a9251bc3$export$21b07c8f274aebd5; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-collection/dist/index.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-collection/dist/index.js ***! + \**********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $hnlpS$react = __webpack_require__(/*! react */ "react"); +var $hnlpS$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); +var $hnlpS$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); +var $hnlpS$radixuireactslot = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "createCollection", () => $1a96635ec239608b$export$c74125a8e3af6bb2); + +// We have resorted to returning slots directly rather than exposing primitives that can then +// be slotted like ``. +// This is because we encountered issues with generic types that cannot be statically analysed +// due to creating them dynamically via createCollection. +function $1a96635ec239608b$export$c74125a8e3af6bb2(name) { + /* ----------------------------------------------------------------------------------------------- + * CollectionProvider + * ---------------------------------------------------------------------------------------------*/ + const PROVIDER_NAME = name + 'CollectionProvider'; + const [createCollectionContext, createCollectionScope] = $hnlpS$radixuireactcontext.createContextScope(PROVIDER_NAME); + const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(PROVIDER_NAME, { + collectionRef: { + current: null + }, + itemMap: new Map() + }); + const CollectionProvider = props => { + const { + scope: scope, + children: children + } = props; + const ref = $parcel$interopDefault($hnlpS$react).useRef(null); + const itemMap = $parcel$interopDefault($hnlpS$react).useRef(new Map()).current; + return /*#__PURE__*/$parcel$interopDefault($hnlpS$react).createElement(CollectionProviderImpl, { + scope: scope, + itemMap: itemMap, + collectionRef: ref + }, children); + }; + /*#__PURE__*/ + Object.assign(CollectionProvider, { + displayName: PROVIDER_NAME + }); + /* ----------------------------------------------------------------------------------------------- + * CollectionSlot + * ---------------------------------------------------------------------------------------------*/ + const COLLECTION_SLOT_NAME = name + 'CollectionSlot'; + const CollectionSlot = /*#__PURE__*/$parcel$interopDefault($hnlpS$react).forwardRef((props, forwardedRef) => { + const { + scope: scope, + children: children + } = props; + const context = useCollectionContext(COLLECTION_SLOT_NAME, scope); + const composedRefs = $hnlpS$radixuireactcomposerefs.useComposedRefs(forwardedRef, context.collectionRef); + return /*#__PURE__*/$parcel$interopDefault($hnlpS$react).createElement($hnlpS$radixuireactslot.Slot, { + ref: composedRefs + }, children); + }); + /*#__PURE__*/ + Object.assign(CollectionSlot, { + displayName: COLLECTION_SLOT_NAME + }); + /* ----------------------------------------------------------------------------------------------- + * CollectionItem + * ---------------------------------------------------------------------------------------------*/ + const ITEM_SLOT_NAME = name + 'CollectionItemSlot'; + const ITEM_DATA_ATTR = 'data-radix-collection-item'; + const CollectionItemSlot = /*#__PURE__*/$parcel$interopDefault($hnlpS$react).forwardRef((props, forwardedRef) => { + const { + scope: scope, + children: children, + ...itemData + } = props; + const ref = $parcel$interopDefault($hnlpS$react).useRef(null); + const composedRefs = $hnlpS$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); + const context = useCollectionContext(ITEM_SLOT_NAME, scope); + $parcel$interopDefault($hnlpS$react).useEffect(() => { + context.itemMap.set(ref, { + ref: ref, + ...itemData + }); + return () => void context.itemMap.delete(ref); + }); + return /*#__PURE__*/$parcel$interopDefault($hnlpS$react).createElement($hnlpS$radixuireactslot.Slot, { + [ITEM_DATA_ATTR]: '', + ref: composedRefs + }, children); + }); + /*#__PURE__*/ + Object.assign(CollectionItemSlot, { + displayName: ITEM_SLOT_NAME + }); + /* ----------------------------------------------------------------------------------------------- + * useCollection + * ---------------------------------------------------------------------------------------------*/ + function useCollection(scope) { + const context = useCollectionContext(name + 'CollectionConsumer', scope); + const getItems = $parcel$interopDefault($hnlpS$react).useCallback(() => { + const collectionNode = context.collectionRef.current; + if (!collectionNode) return []; + const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`)); + const items = Array.from(context.itemMap.values()); + const orderedItems = items.sort((a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)); + return orderedItems; + }, [context.collectionRef, context.itemMap]); + return getItems; + } + return [{ + Provider: CollectionProvider, + Slot: CollectionSlot, + ItemSlot: CollectionItemSlot + }, useCollection, createCollectionScope]; +} + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-compose-refs/dist/index.js ***! + \************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $dJwbH$react = __webpack_require__(/*! react */ "react"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +$parcel$export(module.exports, "composeRefs", () => $9c2aaba23466b352$export$43e446d32b3d21af); +$parcel$export(module.exports, "useComposedRefs", () => $9c2aaba23466b352$export$c7b2cbe3552a0d05); + +/** + * Set a given ref to a given value + * This utility takes care of different types of refs: callback refs and RefObject(s) + */ +function $9c2aaba23466b352$var$setRef(ref, value) { + if (typeof ref === 'function') ref(value);else if (ref !== null && ref !== undefined) ref.current = value; +} +/** + * A utility to compose multiple refs together + * Accepts callback refs and RefObject(s) + */ +function $9c2aaba23466b352$export$43e446d32b3d21af() { + for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) { + refs[_key] = arguments[_key]; + } + return node => refs.forEach(ref => $9c2aaba23466b352$var$setRef(ref, node)); +} +/** + * A custom hook that composes multiple refs + * Accepts callback refs and RefObject(s) + */ +function $9c2aaba23466b352$export$c7b2cbe3552a0d05() { + for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + refs[_key2] = arguments[_key2]; + } + // eslint-disable-next-line react-hooks/exhaustive-deps + return $dJwbH$react.useCallback($9c2aaba23466b352$export$43e446d32b3d21af(...refs), refs); +} + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-context/dist/index.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-context/dist/index.js ***! + \*******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $4O1Ne$react = __webpack_require__(/*! react */ "react"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +$parcel$export(module.exports, "createContext", () => $dec3cc0142d4f286$export$fd42f52fd3ae1109); +$parcel$export(module.exports, "createContextScope", () => $dec3cc0142d4f286$export$50c7b4e9d9f19c1); +function $dec3cc0142d4f286$export$fd42f52fd3ae1109(rootComponentName, defaultContext) { + const Context = /*#__PURE__*/$4O1Ne$react.createContext(defaultContext); + function Provider(props) { + const { + children: children, + ...context + } = props; // Only re-memoize when prop values change + // eslint-disable-next-line react-hooks/exhaustive-deps + const value = $4O1Ne$react.useMemo(() => context, Object.values(context)); + return /*#__PURE__*/$4O1Ne$react.createElement(Context.Provider, { + value: value + }, children); + } + function useContext(consumerName) { + const context = $4O1Ne$react.useContext(Context); + if (context) return context; + if (defaultContext !== undefined) return defaultContext; // if a defaultContext wasn't specified, it's a required context. + throw new Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``); + } + Provider.displayName = rootComponentName + 'Provider'; + return [Provider, useContext]; +} +/* ------------------------------------------------------------------------------------------------- + * createContextScope + * -----------------------------------------------------------------------------------------------*/ +function $dec3cc0142d4f286$export$50c7b4e9d9f19c1(scopeName) { + let createContextScopeDeps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + let defaultContexts = []; + /* ----------------------------------------------------------------------------------------------- + * createContext + * ---------------------------------------------------------------------------------------------*/ + function $dec3cc0142d4f286$export$fd42f52fd3ae1109(rootComponentName, defaultContext) { + const BaseContext = /*#__PURE__*/$4O1Ne$react.createContext(defaultContext); + const index = defaultContexts.length; + defaultContexts = [...defaultContexts, defaultContext]; + function Provider(props) { + const { + scope: scope, + children: children, + ...context + } = props; + const Context = (scope === null || scope === void 0 ? void 0 : scope[scopeName][index]) || BaseContext; // Only re-memoize when prop values change + // eslint-disable-next-line react-hooks/exhaustive-deps + const value = $4O1Ne$react.useMemo(() => context, Object.values(context)); + return /*#__PURE__*/$4O1Ne$react.createElement(Context.Provider, { + value: value + }, children); + } + function useContext(consumerName, scope) { + const Context = (scope === null || scope === void 0 ? void 0 : scope[scopeName][index]) || BaseContext; + const context = $4O1Ne$react.useContext(Context); + if (context) return context; + if (defaultContext !== undefined) return defaultContext; // if a defaultContext wasn't specified, it's a required context. + throw new Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``); + } + Provider.displayName = rootComponentName + 'Provider'; + return [Provider, useContext]; + } + /* ----------------------------------------------------------------------------------------------- + * createScope + * ---------------------------------------------------------------------------------------------*/ + const createScope = () => { + const scopeContexts = defaultContexts.map(defaultContext => { + return /*#__PURE__*/$4O1Ne$react.createContext(defaultContext); + }); + return function useScope(scope) { + const contexts = (scope === null || scope === void 0 ? void 0 : scope[scopeName]) || scopeContexts; + return $4O1Ne$react.useMemo(() => ({ + [`__scope${scopeName}`]: { + ...scope, + [scopeName]: contexts + } + }), [scope, contexts]); + }; + }; + createScope.scopeName = scopeName; + return [$dec3cc0142d4f286$export$fd42f52fd3ae1109, $dec3cc0142d4f286$var$composeContextScopes(createScope, ...createContextScopeDeps)]; +} +/* ------------------------------------------------------------------------------------------------- + * composeContextScopes + * -----------------------------------------------------------------------------------------------*/ +function $dec3cc0142d4f286$var$composeContextScopes() { + for (var _len = arguments.length, scopes = new Array(_len), _key = 0; _key < _len; _key++) { + scopes[_key] = arguments[_key]; + } + const baseScope = scopes[0]; + if (scopes.length === 1) return baseScope; + const createScope1 = () => { + const scopeHooks = scopes.map(createScope => ({ + useScope: createScope(), + scopeName: createScope.scopeName + })); + return function useComposedScopes(overrideScopes) { + const nextScopes1 = scopeHooks.reduce((nextScopes, _ref) => { + let { + useScope: useScope, + scopeName: scopeName + } = _ref; + // We are calling a hook inside a callback which React warns against to avoid inconsistent + // renders, however, scoping doesn't have render side effects so we ignore the rule. + // eslint-disable-next-line react-hooks/rules-of-hooks + const scopeProps = useScope(overrideScopes); + const currentScope = scopeProps[`__scope${scopeName}`]; + return { + ...nextScopes, + ...currentScope + }; + }, {}); + return $4O1Ne$react.useMemo(() => ({ + [`__scope${baseScope.scopeName}`]: nextScopes1 + }), [nextScopes1]); + }; + }; + createScope1.scopeName = baseScope.scopeName; + return createScope1; +} + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-dialog/dist/index.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-dialog/dist/index.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $aJCrN$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); +var $aJCrN$react = __webpack_require__(/*! react */ "react"); +var $aJCrN$radixuiprimitive = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.js"); +var $aJCrN$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); +var $aJCrN$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); +var $aJCrN$radixuireactid = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.js"); +var $aJCrN$radixuireactusecontrollablestate = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js"); +var $aJCrN$radixuireactdismissablelayer = __webpack_require__(/*! @radix-ui/react-dismissable-layer */ "../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.js"); +var $aJCrN$radixuireactfocusscope = __webpack_require__(/*! @radix-ui/react-focus-scope */ "../../../node_modules/@radix-ui/react-focus-scope/dist/index.js"); +var $aJCrN$radixuireactportal = __webpack_require__(/*! @radix-ui/react-portal */ "../../../node_modules/@radix-ui/react-portal/dist/index.js"); +var $aJCrN$radixuireactpresence = __webpack_require__(/*! @radix-ui/react-presence */ "../../../node_modules/@radix-ui/react-presence/dist/index.js"); +var $aJCrN$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); +var $aJCrN$radixuireactfocusguards = __webpack_require__(/*! @radix-ui/react-focus-guards */ "../../../node_modules/@radix-ui/react-focus-guards/dist/index.js"); +var $aJCrN$reactremovescroll = __webpack_require__(/*! react-remove-scroll */ "../../../node_modules/react-remove-scroll/dist/es2015/index.js"); +var $aJCrN$ariahidden = __webpack_require__(/*! aria-hidden */ "../../../node_modules/aria-hidden/dist/es2015/index.js"); +var $aJCrN$radixuireactslot = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "createDialogScope", () => $f4833395aa1bca1a$export$cc702773b8ea3e41); +$parcel$export(module.exports, "Dialog", () => $f4833395aa1bca1a$export$3ddf2d174ce01153); +$parcel$export(module.exports, "DialogTrigger", () => $f4833395aa1bca1a$export$2e1e1122cf0cba88); +$parcel$export(module.exports, "DialogPortal", () => $f4833395aa1bca1a$export$dad7c95542bacce0); +$parcel$export(module.exports, "DialogOverlay", () => $f4833395aa1bca1a$export$bd1d06c79be19e17); +$parcel$export(module.exports, "DialogContent", () => $f4833395aa1bca1a$export$b6d9565de1e068cf); +$parcel$export(module.exports, "DialogTitle", () => $f4833395aa1bca1a$export$16f7638e4a34b909); +$parcel$export(module.exports, "DialogDescription", () => $f4833395aa1bca1a$export$94e94c2ec2c954d5); +$parcel$export(module.exports, "DialogClose", () => $f4833395aa1bca1a$export$fba2fb7cd781b7ac); +$parcel$export(module.exports, "Root", () => $f4833395aa1bca1a$export$be92b6f5f03c0fe9); +$parcel$export(module.exports, "Trigger", () => $f4833395aa1bca1a$export$41fb9f06171c75f4); +$parcel$export(module.exports, "Portal", () => $f4833395aa1bca1a$export$602eac185826482c); +$parcel$export(module.exports, "Overlay", () => $f4833395aa1bca1a$export$c6fdb837b070b4ff); +$parcel$export(module.exports, "Content", () => $f4833395aa1bca1a$export$7c6e2c02157bb7d2); +$parcel$export(module.exports, "Title", () => $f4833395aa1bca1a$export$f99233281efd08a0); +$parcel$export(module.exports, "Description", () => $f4833395aa1bca1a$export$393edc798c47379d); +$parcel$export(module.exports, "Close", () => $f4833395aa1bca1a$export$f39c2d165cd861fe); +$parcel$export(module.exports, "WarningProvider", () => $f4833395aa1bca1a$export$69b62a49393917d6); + +/* ------------------------------------------------------------------------------------------------- + * Dialog + * -----------------------------------------------------------------------------------------------*/ +const $f4833395aa1bca1a$var$DIALOG_NAME = 'Dialog'; +const [$f4833395aa1bca1a$var$createDialogContext, $f4833395aa1bca1a$export$cc702773b8ea3e41] = $aJCrN$radixuireactcontext.createContextScope($f4833395aa1bca1a$var$DIALOG_NAME); +const [$f4833395aa1bca1a$var$DialogProvider, $f4833395aa1bca1a$var$useDialogContext] = $f4833395aa1bca1a$var$createDialogContext($f4833395aa1bca1a$var$DIALOG_NAME); +const $f4833395aa1bca1a$export$3ddf2d174ce01153 = props => { + const { + __scopeDialog: __scopeDialog, + children: children, + open: openProp, + defaultOpen: defaultOpen, + onOpenChange: onOpenChange, + modal = true + } = props; + const triggerRef = $aJCrN$react.useRef(null); + const contentRef = $aJCrN$react.useRef(null); + const [open = false, setOpen] = $aJCrN$radixuireactusecontrollablestate.useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChange + }); + return /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$DialogProvider, { + scope: __scopeDialog, + triggerRef: triggerRef, + contentRef: contentRef, + contentId: $aJCrN$radixuireactid.useId(), + titleId: $aJCrN$radixuireactid.useId(), + descriptionId: $aJCrN$radixuireactid.useId(), + open: open, + onOpenChange: setOpen, + onOpenToggle: $aJCrN$react.useCallback(() => setOpen(prevOpen => !prevOpen), [setOpen]), + modal: modal + }, children); +}; +/*#__PURE__*/ +Object.assign($f4833395aa1bca1a$export$3ddf2d174ce01153, { + displayName: $f4833395aa1bca1a$var$DIALOG_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DialogTrigger + * -----------------------------------------------------------------------------------------------*/ +const $f4833395aa1bca1a$var$TRIGGER_NAME = 'DialogTrigger'; +const $f4833395aa1bca1a$export$2e1e1122cf0cba88 = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { + const { + __scopeDialog: __scopeDialog, + ...triggerProps + } = props; + const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$TRIGGER_NAME, __scopeDialog); + const composedTriggerRef = $aJCrN$radixuireactcomposerefs.useComposedRefs(forwardedRef, context.triggerRef); + return /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactprimitive.Primitive.button, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({ + type: "button", + "aria-haspopup": "dialog", + "aria-expanded": context.open, + "aria-controls": context.contentId, + "data-state": $f4833395aa1bca1a$var$getState(context.open) + }, triggerProps, { + ref: composedTriggerRef, + onClick: $aJCrN$radixuiprimitive.composeEventHandlers(props.onClick, context.onOpenToggle) + })); +}); +/*#__PURE__*/ +Object.assign($f4833395aa1bca1a$export$2e1e1122cf0cba88, { + displayName: $f4833395aa1bca1a$var$TRIGGER_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DialogPortal + * -----------------------------------------------------------------------------------------------*/ +const $f4833395aa1bca1a$var$PORTAL_NAME = 'DialogPortal'; +const [$f4833395aa1bca1a$var$PortalProvider, $f4833395aa1bca1a$var$usePortalContext] = $f4833395aa1bca1a$var$createDialogContext($f4833395aa1bca1a$var$PORTAL_NAME, { + forceMount: undefined +}); +const $f4833395aa1bca1a$export$dad7c95542bacce0 = props => { + const { + __scopeDialog: __scopeDialog, + forceMount: forceMount, + children: children, + container: container + } = props; + const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$PORTAL_NAME, __scopeDialog); + return /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$PortalProvider, { + scope: __scopeDialog, + forceMount: forceMount + }, $aJCrN$react.Children.map(children, child => /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactpresence.Presence, { + present: forceMount || context.open + }, /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactportal.Portal, { + asChild: true, + container: container + }, child)))); +}; +/*#__PURE__*/ +Object.assign($f4833395aa1bca1a$export$dad7c95542bacce0, { + displayName: $f4833395aa1bca1a$var$PORTAL_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DialogOverlay + * -----------------------------------------------------------------------------------------------*/ +const $f4833395aa1bca1a$var$OVERLAY_NAME = 'DialogOverlay'; +const $f4833395aa1bca1a$export$bd1d06c79be19e17 = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { + const portalContext = $f4833395aa1bca1a$var$usePortalContext($f4833395aa1bca1a$var$OVERLAY_NAME, props.__scopeDialog); + const { + forceMount = portalContext.forceMount, + ...overlayProps + } = props; + const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$OVERLAY_NAME, props.__scopeDialog); + return context.modal ? /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactpresence.Presence, { + present: forceMount || context.open + }, /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$DialogOverlayImpl, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({}, overlayProps, { + ref: forwardedRef + }))) : null; +}); +/*#__PURE__*/ +Object.assign($f4833395aa1bca1a$export$bd1d06c79be19e17, { + displayName: $f4833395aa1bca1a$var$OVERLAY_NAME +}); +const $f4833395aa1bca1a$var$DialogOverlayImpl = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { + const { + __scopeDialog: __scopeDialog, + ...overlayProps + } = props; + const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$OVERLAY_NAME, __scopeDialog); + return /*#__PURE__*/ (// Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll` + // ie. when `Overlay` and `Content` are siblings + $aJCrN$react.createElement($aJCrN$reactremovescroll.RemoveScroll, { + as: $aJCrN$radixuireactslot.Slot, + allowPinchZoom: true, + shards: [context.contentRef] + }, /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactprimitive.Primitive.div, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({ + "data-state": $f4833395aa1bca1a$var$getState(context.open) + }, overlayProps, { + ref: forwardedRef // We re-enable pointer-events prevented by `Dialog.Content` to allow scrolling the overlay. + , + + style: { + pointerEvents: 'auto', + ...overlayProps.style + } + }))) + ); +}); +/* ------------------------------------------------------------------------------------------------- + * DialogContent + * -----------------------------------------------------------------------------------------------*/ +const $f4833395aa1bca1a$var$CONTENT_NAME = 'DialogContent'; +const $f4833395aa1bca1a$export$b6d9565de1e068cf = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { + const portalContext = $f4833395aa1bca1a$var$usePortalContext($f4833395aa1bca1a$var$CONTENT_NAME, props.__scopeDialog); + const { + forceMount = portalContext.forceMount, + ...contentProps + } = props; + const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$CONTENT_NAME, props.__scopeDialog); + return /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactpresence.Presence, { + present: forceMount || context.open + }, context.modal ? /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$DialogContentModal, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({}, contentProps, { + ref: forwardedRef + })) : /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$DialogContentNonModal, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({}, contentProps, { + ref: forwardedRef + }))); +}); +/*#__PURE__*/ +Object.assign($f4833395aa1bca1a$export$b6d9565de1e068cf, { + displayName: $f4833395aa1bca1a$var$CONTENT_NAME +}); +/* -----------------------------------------------------------------------------------------------*/ +const $f4833395aa1bca1a$var$DialogContentModal = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { + const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$CONTENT_NAME, props.__scopeDialog); + const contentRef = $aJCrN$react.useRef(null); + const composedRefs = $aJCrN$radixuireactcomposerefs.useComposedRefs(forwardedRef, context.contentRef, contentRef); // aria-hide everything except the content (better supported equivalent to setting aria-modal) + $aJCrN$react.useEffect(() => { + const content = contentRef.current; + if (content) return $aJCrN$ariahidden.hideOthers(content); + }, []); + return /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$DialogContentImpl, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({}, props, { + ref: composedRefs // we make sure focus isn't trapped once `DialogContent` has been closed + , + + trapFocus: context.open, + disableOutsidePointerEvents: true, + onCloseAutoFocus: $aJCrN$radixuiprimitive.composeEventHandlers(props.onCloseAutoFocus, event => { + var _context$triggerRef$c; + event.preventDefault(); + (_context$triggerRef$c = context.triggerRef.current) === null || _context$triggerRef$c === void 0 || _context$triggerRef$c.focus(); + }), + onPointerDownOutside: $aJCrN$radixuiprimitive.composeEventHandlers(props.onPointerDownOutside, event => { + const originalEvent = event.detail.originalEvent; + const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true; + const isRightClick = originalEvent.button === 2 || ctrlLeftClick; // If the event is a right-click, we shouldn't close because + // it is effectively as if we right-clicked the `Overlay`. + if (isRightClick) event.preventDefault(); + }) // When focus is trapped, a `focusout` event may still happen. + , + + onFocusOutside: $aJCrN$radixuiprimitive.composeEventHandlers(props.onFocusOutside, event => event.preventDefault()) + })); +}); +/* -----------------------------------------------------------------------------------------------*/ +const $f4833395aa1bca1a$var$DialogContentNonModal = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { + const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$CONTENT_NAME, props.__scopeDialog); + const hasInteractedOutsideRef = $aJCrN$react.useRef(false); + const hasPointerDownOutsideRef = $aJCrN$react.useRef(false); + return /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$DialogContentImpl, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({}, props, { + ref: forwardedRef, + trapFocus: false, + disableOutsidePointerEvents: false, + onCloseAutoFocus: event => { + var _props$onCloseAutoFoc; + (_props$onCloseAutoFoc = props.onCloseAutoFocus) === null || _props$onCloseAutoFoc === void 0 || _props$onCloseAutoFoc.call(props, event); + if (!event.defaultPrevented) { + var _context$triggerRef$c2; + if (!hasInteractedOutsideRef.current) (_context$triggerRef$c2 = context.triggerRef.current) === null || _context$triggerRef$c2 === void 0 || _context$triggerRef$c2.focus(); // Always prevent auto focus because we either focus manually or want user agent focus + event.preventDefault(); + } + hasInteractedOutsideRef.current = false; + hasPointerDownOutsideRef.current = false; + }, + onInteractOutside: event => { + var _props$onInteractOuts, _context$triggerRef$c3; + (_props$onInteractOuts = props.onInteractOutside) === null || _props$onInteractOuts === void 0 || _props$onInteractOuts.call(props, event); + if (!event.defaultPrevented) { + hasInteractedOutsideRef.current = true; + if (event.detail.originalEvent.type === 'pointerdown') hasPointerDownOutsideRef.current = true; + } // Prevent dismissing when clicking the trigger. + // As the trigger is already setup to close, without doing so would + // cause it to close and immediately open. + const target = event.target; + const targetIsTrigger = (_context$triggerRef$c3 = context.triggerRef.current) === null || _context$triggerRef$c3 === void 0 ? void 0 : _context$triggerRef$c3.contains(target); + if (targetIsTrigger) event.preventDefault(); // On Safari if the trigger is inside a container with tabIndex={0}, when clicked + // we will get the pointer down outside event on the trigger, but then a subsequent + // focus outside event on the container, we ignore any focus outside event when we've + // already had a pointer down outside event. + if (event.detail.originalEvent.type === 'focusin' && hasPointerDownOutsideRef.current) event.preventDefault(); + } + })); +}); +/* -----------------------------------------------------------------------------------------------*/ +const $f4833395aa1bca1a$var$DialogContentImpl = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { + const { + __scopeDialog: __scopeDialog, + trapFocus: trapFocus, + onOpenAutoFocus: onOpenAutoFocus, + onCloseAutoFocus: onCloseAutoFocus, + ...contentProps + } = props; + const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$CONTENT_NAME, __scopeDialog); + const contentRef = $aJCrN$react.useRef(null); + const composedRefs = $aJCrN$radixuireactcomposerefs.useComposedRefs(forwardedRef, contentRef); // Make sure the whole tree has focus guards as our `Dialog` will be + // the last element in the DOM (beacuse of the `Portal`) + $aJCrN$radixuireactfocusguards.useFocusGuards(); + return /*#__PURE__*/$aJCrN$react.createElement($aJCrN$react.Fragment, null, /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactfocusscope.FocusScope, { + asChild: true, + loop: true, + trapped: trapFocus, + onMountAutoFocus: onOpenAutoFocus, + onUnmountAutoFocus: onCloseAutoFocus + }, /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactdismissablelayer.DismissableLayer, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({ + role: "dialog", + id: context.contentId, + "aria-describedby": context.descriptionId, + "aria-labelledby": context.titleId, + "data-state": $f4833395aa1bca1a$var$getState(context.open) + }, contentProps, { + ref: composedRefs, + onDismiss: () => context.onOpenChange(false) + }))), false); +}); +/* ------------------------------------------------------------------------------------------------- + * DialogTitle + * -----------------------------------------------------------------------------------------------*/ +const $f4833395aa1bca1a$var$TITLE_NAME = 'DialogTitle'; +const $f4833395aa1bca1a$export$16f7638e4a34b909 = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { + const { + __scopeDialog: __scopeDialog, + ...titleProps + } = props; + const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$TITLE_NAME, __scopeDialog); + return /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactprimitive.Primitive.h2, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({ + id: context.titleId + }, titleProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($f4833395aa1bca1a$export$16f7638e4a34b909, { + displayName: $f4833395aa1bca1a$var$TITLE_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DialogDescription + * -----------------------------------------------------------------------------------------------*/ +const $f4833395aa1bca1a$var$DESCRIPTION_NAME = 'DialogDescription'; +const $f4833395aa1bca1a$export$94e94c2ec2c954d5 = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { + const { + __scopeDialog: __scopeDialog, + ...descriptionProps + } = props; + const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$DESCRIPTION_NAME, __scopeDialog); + return /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactprimitive.Primitive.p, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({ + id: context.descriptionId + }, descriptionProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($f4833395aa1bca1a$export$94e94c2ec2c954d5, { + displayName: $f4833395aa1bca1a$var$DESCRIPTION_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DialogClose + * -----------------------------------------------------------------------------------------------*/ +const $f4833395aa1bca1a$var$CLOSE_NAME = 'DialogClose'; +const $f4833395aa1bca1a$export$fba2fb7cd781b7ac = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { + const { + __scopeDialog: __scopeDialog, + ...closeProps + } = props; + const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$CLOSE_NAME, __scopeDialog); + return /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactprimitive.Primitive.button, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({ + type: "button" + }, closeProps, { + ref: forwardedRef, + onClick: $aJCrN$radixuiprimitive.composeEventHandlers(props.onClick, () => context.onOpenChange(false)) + })); +}); +/*#__PURE__*/ +Object.assign($f4833395aa1bca1a$export$fba2fb7cd781b7ac, { + displayName: $f4833395aa1bca1a$var$CLOSE_NAME +}); +/* -----------------------------------------------------------------------------------------------*/ +function $f4833395aa1bca1a$var$getState(open) { + return open ? 'open' : 'closed'; +} +const $f4833395aa1bca1a$var$TITLE_WARNING_NAME = 'DialogTitleWarning'; +const [$f4833395aa1bca1a$export$69b62a49393917d6, $f4833395aa1bca1a$var$useWarningContext] = $aJCrN$radixuireactcontext.createContext($f4833395aa1bca1a$var$TITLE_WARNING_NAME, { + contentName: $f4833395aa1bca1a$var$CONTENT_NAME, + titleName: $f4833395aa1bca1a$var$TITLE_NAME, + docsSlug: 'dialog' +}); +const $f4833395aa1bca1a$var$TitleWarning = _ref => { + let { + titleId: titleId + } = _ref; + const titleWarningContext = $f4833395aa1bca1a$var$useWarningContext($f4833395aa1bca1a$var$TITLE_WARNING_NAME); + const MESSAGE = `\`${titleWarningContext.contentName}\` requires a \`${titleWarningContext.titleName}\` for the component to be accessible for screen reader users. + +If you want to hide the \`${titleWarningContext.titleName}\`, you can wrap it with our VisuallyHidden component. + +For more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`; + $aJCrN$react.useEffect(() => { + if (titleId) { + const hasTitle = document.getElementById(titleId); + if (!hasTitle) throw new Error(MESSAGE); + } + }, [MESSAGE, titleId]); + return null; +}; +const $f4833395aa1bca1a$var$DESCRIPTION_WARNING_NAME = 'DialogDescriptionWarning'; +const $f4833395aa1bca1a$var$DescriptionWarning = _ref2 => { + let { + contentRef: contentRef, + descriptionId: descriptionId + } = _ref2; + const descriptionWarningContext = $f4833395aa1bca1a$var$useWarningContext($f4833395aa1bca1a$var$DESCRIPTION_WARNING_NAME); + const MESSAGE = `Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${descriptionWarningContext.contentName}}.`; + $aJCrN$react.useEffect(() => { + var _contentRef$current; + const describedById = (_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 ? void 0 : _contentRef$current.getAttribute('aria-describedby'); // if we have an id and the user hasn't set aria-describedby={undefined} + if (descriptionId && describedById) { + const hasDescription = document.getElementById(descriptionId); + if (!hasDescription) console.warn(MESSAGE); + } + }, [MESSAGE, contentRef, descriptionId]); + return null; +}; +const $f4833395aa1bca1a$export$be92b6f5f03c0fe9 = $f4833395aa1bca1a$export$3ddf2d174ce01153; +const $f4833395aa1bca1a$export$41fb9f06171c75f4 = $f4833395aa1bca1a$export$2e1e1122cf0cba88; +const $f4833395aa1bca1a$export$602eac185826482c = $f4833395aa1bca1a$export$dad7c95542bacce0; +const $f4833395aa1bca1a$export$c6fdb837b070b4ff = $f4833395aa1bca1a$export$bd1d06c79be19e17; +const $f4833395aa1bca1a$export$7c6e2c02157bb7d2 = $f4833395aa1bca1a$export$b6d9565de1e068cf; +const $f4833395aa1bca1a$export$f99233281efd08a0 = $f4833395aa1bca1a$export$16f7638e4a34b909; +const $f4833395aa1bca1a$export$393edc798c47379d = $f4833395aa1bca1a$export$94e94c2ec2c954d5; +const $f4833395aa1bca1a$export$f39c2d165cd861fe = $f4833395aa1bca1a$export$fba2fb7cd781b7ac; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-direction/dist/index.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-direction/dist/index.js ***! + \*********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $9g4ps$react = __webpack_require__(/*! react */ "react"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +$parcel$export(module.exports, "useDirection", () => $cc45c1b701a63adc$export$b39126d51d94e6f3); +$parcel$export(module.exports, "Provider", () => $cc45c1b701a63adc$export$2881499e37b75b9a); +$parcel$export(module.exports, "DirectionProvider", () => $cc45c1b701a63adc$export$c760c09fdd558351); +const $cc45c1b701a63adc$var$DirectionContext = /*#__PURE__*/$9g4ps$react.createContext(undefined); +/* ------------------------------------------------------------------------------------------------- + * Direction + * -----------------------------------------------------------------------------------------------*/ +const $cc45c1b701a63adc$export$c760c09fdd558351 = props => { + const { + dir: dir, + children: children + } = props; + return /*#__PURE__*/$9g4ps$react.createElement($cc45c1b701a63adc$var$DirectionContext.Provider, { + value: dir + }, children); +}; +/* -----------------------------------------------------------------------------------------------*/ +function $cc45c1b701a63adc$export$b39126d51d94e6f3(localDir) { + const globalDir = $9g4ps$react.useContext($cc45c1b701a63adc$var$DirectionContext); + return localDir || globalDir || 'ltr'; +} +const $cc45c1b701a63adc$export$2881499e37b75b9a = $cc45c1b701a63adc$export$c760c09fdd558351; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.js ***! + \*****************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $g2vWm$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); +var $g2vWm$react = __webpack_require__(/*! react */ "react"); +var $g2vWm$radixuiprimitive = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.js"); +var $g2vWm$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); +var $g2vWm$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); +var $g2vWm$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); +var $g2vWm$radixuireactuseescapekeydown = __webpack_require__(/*! @radix-ui/react-use-escape-keydown */ "../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "DismissableLayer", () => $d715e0554b679f1f$export$177fb62ff3ec1f22); +$parcel$export(module.exports, "DismissableLayerBranch", () => $d715e0554b679f1f$export$4d5eb2109db14228); +$parcel$export(module.exports, "Root", () => $d715e0554b679f1f$export$be92b6f5f03c0fe9); +$parcel$export(module.exports, "Branch", () => $d715e0554b679f1f$export$aecb2ddcb55c95be); + +/* ------------------------------------------------------------------------------------------------- + * DismissableLayer + * -----------------------------------------------------------------------------------------------*/ +const $d715e0554b679f1f$var$DISMISSABLE_LAYER_NAME = 'DismissableLayer'; +const $d715e0554b679f1f$var$CONTEXT_UPDATE = 'dismissableLayer.update'; +const $d715e0554b679f1f$var$POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside'; +const $d715e0554b679f1f$var$FOCUS_OUTSIDE = 'dismissableLayer.focusOutside'; +let $d715e0554b679f1f$var$originalBodyPointerEvents; +const $d715e0554b679f1f$var$DismissableLayerContext = /*#__PURE__*/$g2vWm$react.createContext({ + layers: new Set(), + layersWithOutsidePointerEventsDisabled: new Set(), + branches: new Set() +}); +const $d715e0554b679f1f$export$177fb62ff3ec1f22 = /*#__PURE__*/$g2vWm$react.forwardRef((props, forwardedRef) => { + var _node$ownerDocument; + const { + disableOutsidePointerEvents = false, + onEscapeKeyDown: onEscapeKeyDown, + onPointerDownOutside: onPointerDownOutside, + onFocusOutside: onFocusOutside, + onInteractOutside: onInteractOutside, + onDismiss: onDismiss, + ...layerProps + } = props; + const context = $g2vWm$react.useContext($d715e0554b679f1f$var$DismissableLayerContext); + const [node1, setNode] = $g2vWm$react.useState(null); + const ownerDocument = (_node$ownerDocument = node1 === null || node1 === void 0 ? void 0 : node1.ownerDocument) !== null && _node$ownerDocument !== void 0 ? _node$ownerDocument : globalThis === null || globalThis === void 0 ? void 0 : globalThis.document; + const [, force] = $g2vWm$react.useState({}); + const composedRefs = $g2vWm$radixuireactcomposerefs.useComposedRefs(forwardedRef, node => setNode(node)); + const layers = Array.from(context.layers); + const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1); // prettier-ignore + const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled); // prettier-ignore + const index = node1 ? layers.indexOf(node1) : -1; + const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0; + const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex; + const pointerDownOutside = $d715e0554b679f1f$var$usePointerDownOutside(event => { + const target = event.target; + const isPointerDownOnBranch = [...context.branches].some(branch => branch.contains(target)); + if (!isPointerEventsEnabled || isPointerDownOnBranch) return; + onPointerDownOutside === null || onPointerDownOutside === void 0 || onPointerDownOutside(event); + onInteractOutside === null || onInteractOutside === void 0 || onInteractOutside(event); + if (!event.defaultPrevented) onDismiss === null || onDismiss === void 0 || onDismiss(); + }, ownerDocument); + const focusOutside = $d715e0554b679f1f$var$useFocusOutside(event => { + const target = event.target; + const isFocusInBranch = [...context.branches].some(branch => branch.contains(target)); + if (isFocusInBranch) return; + onFocusOutside === null || onFocusOutside === void 0 || onFocusOutside(event); + onInteractOutside === null || onInteractOutside === void 0 || onInteractOutside(event); + if (!event.defaultPrevented) onDismiss === null || onDismiss === void 0 || onDismiss(); + }, ownerDocument); + $g2vWm$radixuireactuseescapekeydown.useEscapeKeydown(event => { + const isHighestLayer = index === context.layers.size - 1; + if (!isHighestLayer) return; + onEscapeKeyDown === null || onEscapeKeyDown === void 0 || onEscapeKeyDown(event); + if (!event.defaultPrevented && onDismiss) { + event.preventDefault(); + onDismiss(); + } + }, ownerDocument); + $g2vWm$react.useEffect(() => { + if (!node1) return; + if (disableOutsidePointerEvents) { + if (context.layersWithOutsidePointerEventsDisabled.size === 0) { + $d715e0554b679f1f$var$originalBodyPointerEvents = ownerDocument.body.style.pointerEvents; + ownerDocument.body.style.pointerEvents = 'none'; + } + context.layersWithOutsidePointerEventsDisabled.add(node1); + } + context.layers.add(node1); + $d715e0554b679f1f$var$dispatchUpdate(); + return () => { + if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) ownerDocument.body.style.pointerEvents = $d715e0554b679f1f$var$originalBodyPointerEvents; + }; + }, [node1, ownerDocument, disableOutsidePointerEvents, context]); + /** + * We purposefully prevent combining this effect with the `disableOutsidePointerEvents` effect + * because a change to `disableOutsidePointerEvents` would remove this layer from the stack + * and add it to the end again so the layering order wouldn't be _creation order_. + * We only want them to be removed from context stacks when unmounted. + */ + $g2vWm$react.useEffect(() => { + return () => { + if (!node1) return; + context.layers.delete(node1); + context.layersWithOutsidePointerEventsDisabled.delete(node1); + $d715e0554b679f1f$var$dispatchUpdate(); + }; + }, [node1, context]); + $g2vWm$react.useEffect(() => { + const handleUpdate = () => force({}); + document.addEventListener($d715e0554b679f1f$var$CONTEXT_UPDATE, handleUpdate); + return () => document.removeEventListener($d715e0554b679f1f$var$CONTEXT_UPDATE, handleUpdate); + }, []); + return /*#__PURE__*/$g2vWm$react.createElement($g2vWm$radixuireactprimitive.Primitive.div, $parcel$interopDefault($g2vWm$babelruntimehelpersextends)({}, layerProps, { + ref: composedRefs, + style: { + pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? 'auto' : 'none' : undefined, + ...props.style + }, + onFocusCapture: $g2vWm$radixuiprimitive.composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture), + onBlurCapture: $g2vWm$radixuiprimitive.composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture), + onPointerDownCapture: $g2vWm$radixuiprimitive.composeEventHandlers(props.onPointerDownCapture, pointerDownOutside.onPointerDownCapture) + })); +}); +/*#__PURE__*/ +Object.assign($d715e0554b679f1f$export$177fb62ff3ec1f22, { + displayName: $d715e0554b679f1f$var$DISMISSABLE_LAYER_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DismissableLayerBranch + * -----------------------------------------------------------------------------------------------*/ +const $d715e0554b679f1f$var$BRANCH_NAME = 'DismissableLayerBranch'; +const $d715e0554b679f1f$export$4d5eb2109db14228 = /*#__PURE__*/$g2vWm$react.forwardRef((props, forwardedRef) => { + const context = $g2vWm$react.useContext($d715e0554b679f1f$var$DismissableLayerContext); + const ref = $g2vWm$react.useRef(null); + const composedRefs = $g2vWm$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); + $g2vWm$react.useEffect(() => { + const node = ref.current; + if (node) { + context.branches.add(node); + return () => { + context.branches.delete(node); + }; + } + }, [context.branches]); + return /*#__PURE__*/$g2vWm$react.createElement($g2vWm$radixuireactprimitive.Primitive.div, $parcel$interopDefault($g2vWm$babelruntimehelpersextends)({}, props, { + ref: composedRefs + })); +}); +/*#__PURE__*/ +Object.assign($d715e0554b679f1f$export$4d5eb2109db14228, { + displayName: $d715e0554b679f1f$var$BRANCH_NAME +}); +/* -----------------------------------------------------------------------------------------------*/ /** + * Listens for `pointerdown` outside a react subtree. We use `pointerdown` rather than `pointerup` + * to mimic layer dismissing behaviour present in OS. + * Returns props to pass to the node we want to check for outside events. + */ +function $d715e0554b679f1f$var$usePointerDownOutside(onPointerDownOutside) { + let ownerDocument = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis === null || globalThis === void 0 ? void 0 : globalThis.document; + const handlePointerDownOutside = $g2vWm$radixuireactusecallbackref.useCallbackRef(onPointerDownOutside); + const isPointerInsideReactTreeRef = $g2vWm$react.useRef(false); + const handleClickRef = $g2vWm$react.useRef(() => {}); + $g2vWm$react.useEffect(() => { + const handlePointerDown = event => { + if (event.target && !isPointerInsideReactTreeRef.current) { + const eventDetail = { + originalEvent: event + }; + function handleAndDispatchPointerDownOutsideEvent() { + $d715e0554b679f1f$var$handleAndDispatchCustomEvent($d715e0554b679f1f$var$POINTER_DOWN_OUTSIDE, handlePointerDownOutside, eventDetail, { + discrete: true + }); + } + /** + * On touch devices, we need to wait for a click event because browsers implement + * a ~350ms delay between the time the user stops touching the display and when the + * browser executres events. We need to ensure we don't reactivate pointer-events within + * this timeframe otherwise the browser may execute events that should have been prevented. + * + * Additionally, this also lets us deal automatically with cancellations when a click event + * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc. + * + * This is why we also continuously remove the previous listener, because we cannot be + * certain that it was raised, and therefore cleaned-up. + */ + if (event.pointerType === 'touch') { + ownerDocument.removeEventListener('click', handleClickRef.current); + handleClickRef.current = handleAndDispatchPointerDownOutsideEvent; + ownerDocument.addEventListener('click', handleClickRef.current, { + once: true + }); + } else handleAndDispatchPointerDownOutsideEvent(); + } + isPointerInsideReactTreeRef.current = false; + }; + /** + * if this hook executes in a component that mounts via a `pointerdown` event, the event + * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid + * this by delaying the event listener registration on the document. + * This is not React specific, but rather how the DOM works, ie: + * ``` + * button.addEventListener('pointerdown', () => { + * console.log('I will log'); + * document.addEventListener('pointerdown', () => { + * console.log('I will also log'); + * }) + * }); + */ + const timerId = window.setTimeout(() => { + ownerDocument.addEventListener('pointerdown', handlePointerDown); + }, 0); + return () => { + window.clearTimeout(timerId); + ownerDocument.removeEventListener('pointerdown', handlePointerDown); + ownerDocument.removeEventListener('click', handleClickRef.current); + }; + }, [ownerDocument, handlePointerDownOutside]); + return { + // ensures we check React component tree (not just DOM tree) + onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true + }; +} +/** + * Listens for when focus happens outside a react subtree. + * Returns props to pass to the root (node) of the subtree we want to check. + */ +function $d715e0554b679f1f$var$useFocusOutside(onFocusOutside) { + let ownerDocument = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis === null || globalThis === void 0 ? void 0 : globalThis.document; + const handleFocusOutside = $g2vWm$radixuireactusecallbackref.useCallbackRef(onFocusOutside); + const isFocusInsideReactTreeRef = $g2vWm$react.useRef(false); + $g2vWm$react.useEffect(() => { + const handleFocus = event => { + if (event.target && !isFocusInsideReactTreeRef.current) { + const eventDetail = { + originalEvent: event + }; + $d715e0554b679f1f$var$handleAndDispatchCustomEvent($d715e0554b679f1f$var$FOCUS_OUTSIDE, handleFocusOutside, eventDetail, { + discrete: false + }); + } + }; + ownerDocument.addEventListener('focusin', handleFocus); + return () => ownerDocument.removeEventListener('focusin', handleFocus); + }, [ownerDocument, handleFocusOutside]); + return { + onFocusCapture: () => isFocusInsideReactTreeRef.current = true, + onBlurCapture: () => isFocusInsideReactTreeRef.current = false + }; +} +function $d715e0554b679f1f$var$dispatchUpdate() { + const event = new CustomEvent($d715e0554b679f1f$var$CONTEXT_UPDATE); + document.dispatchEvent(event); +} +function $d715e0554b679f1f$var$handleAndDispatchCustomEvent(name, handler, detail, _ref) { + let { + discrete: discrete + } = _ref; + const target = detail.originalEvent.target; + const event = new CustomEvent(name, { + bubbles: false, + cancelable: true, + detail: detail + }); + if (handler) target.addEventListener(name, handler, { + once: true + }); + if (discrete) $g2vWm$radixuireactprimitive.dispatchDiscreteCustomEvent(target, event);else target.dispatchEvent(event); +} +const $d715e0554b679f1f$export$be92b6f5f03c0fe9 = $d715e0554b679f1f$export$177fb62ff3ec1f22; +const $d715e0554b679f1f$export$aecb2ddcb55c95be = $d715e0554b679f1f$export$4d5eb2109db14228; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-dropdown-menu/dist/index.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-dropdown-menu/dist/index.js ***! + \*************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $7dQ7Q$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); +var $7dQ7Q$react = __webpack_require__(/*! react */ "react"); +var $7dQ7Q$radixuiprimitive = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.js"); +var $7dQ7Q$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); +var $7dQ7Q$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); +var $7dQ7Q$radixuireactusecontrollablestate = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js"); +var $7dQ7Q$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); +var $7dQ7Q$radixuireactmenu = __webpack_require__(/*! @radix-ui/react-menu */ "../../../node_modules/@radix-ui/react-menu/dist/index.js"); +var $7dQ7Q$radixuireactid = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "createDropdownMenuScope", () => $d1bf075a6b218014$export$c0623cd925aeb687); +$parcel$export(module.exports, "DropdownMenu", () => $d1bf075a6b218014$export$e44a253a59704894); +$parcel$export(module.exports, "DropdownMenuTrigger", () => $d1bf075a6b218014$export$d2469213b3befba9); +$parcel$export(module.exports, "DropdownMenuPortal", () => $d1bf075a6b218014$export$cd369b4d4d54efc9); +$parcel$export(module.exports, "DropdownMenuContent", () => $d1bf075a6b218014$export$6e76d93a37c01248); +$parcel$export(module.exports, "DropdownMenuGroup", () => $d1bf075a6b218014$export$246bebaba3a2f70e); +$parcel$export(module.exports, "DropdownMenuLabel", () => $d1bf075a6b218014$export$76e48c5b57f24495); +$parcel$export(module.exports, "DropdownMenuItem", () => $d1bf075a6b218014$export$ed97964d1871885d); +$parcel$export(module.exports, "DropdownMenuCheckboxItem", () => $d1bf075a6b218014$export$53a69729da201fa9); +$parcel$export(module.exports, "DropdownMenuRadioGroup", () => $d1bf075a6b218014$export$3323ad73d55f587e); +$parcel$export(module.exports, "DropdownMenuRadioItem", () => $d1bf075a6b218014$export$e4f69b41b1637536); +$parcel$export(module.exports, "DropdownMenuItemIndicator", () => $d1bf075a6b218014$export$42355ae145153fb6); +$parcel$export(module.exports, "DropdownMenuSeparator", () => $d1bf075a6b218014$export$da160178fd3bc7e9); +$parcel$export(module.exports, "DropdownMenuArrow", () => $d1bf075a6b218014$export$34b8980744021ec5); +$parcel$export(module.exports, "DropdownMenuSub", () => $d1bf075a6b218014$export$2f307d81a64f5442); +$parcel$export(module.exports, "DropdownMenuSubTrigger", () => $d1bf075a6b218014$export$21dcb7ec56f874cf); +$parcel$export(module.exports, "DropdownMenuSubContent", () => $d1bf075a6b218014$export$f34ec8bc2482cc5f); +$parcel$export(module.exports, "Root", () => $d1bf075a6b218014$export$be92b6f5f03c0fe9); +$parcel$export(module.exports, "Trigger", () => $d1bf075a6b218014$export$41fb9f06171c75f4); +$parcel$export(module.exports, "Portal", () => $d1bf075a6b218014$export$602eac185826482c); +$parcel$export(module.exports, "Content", () => $d1bf075a6b218014$export$7c6e2c02157bb7d2); +$parcel$export(module.exports, "Group", () => $d1bf075a6b218014$export$eb2fcfdbd7ba97d4); +$parcel$export(module.exports, "Label", () => $d1bf075a6b218014$export$b04be29aa201d4f5); +$parcel$export(module.exports, "Item", () => $d1bf075a6b218014$export$6d08773d2e66f8f2); +$parcel$export(module.exports, "CheckboxItem", () => $d1bf075a6b218014$export$16ce288f89fa631c); +$parcel$export(module.exports, "RadioGroup", () => $d1bf075a6b218014$export$a98f0dcb43a68a25); +$parcel$export(module.exports, "RadioItem", () => $d1bf075a6b218014$export$371ab307eab489c0); +$parcel$export(module.exports, "ItemIndicator", () => $d1bf075a6b218014$export$c3468e2714d175fa); +$parcel$export(module.exports, "Separator", () => $d1bf075a6b218014$export$1ff3c3f08ae963c0); +$parcel$export(module.exports, "Arrow", () => $d1bf075a6b218014$export$21b07c8f274aebd5); +$parcel$export(module.exports, "Sub", () => $d1bf075a6b218014$export$d7a01e11500dfb6f); +$parcel$export(module.exports, "SubTrigger", () => $d1bf075a6b218014$export$2ea8a7a591ac5eac); +$parcel$export(module.exports, "SubContent", () => $d1bf075a6b218014$export$6d4de93b380beddf); + +/* ------------------------------------------------------------------------------------------------- + * DropdownMenu + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$DROPDOWN_MENU_NAME = 'DropdownMenu'; +const [$d1bf075a6b218014$var$createDropdownMenuContext, $d1bf075a6b218014$export$c0623cd925aeb687] = $7dQ7Q$radixuireactcontext.createContextScope($d1bf075a6b218014$var$DROPDOWN_MENU_NAME, [$7dQ7Q$radixuireactmenu.createMenuScope]); +const $d1bf075a6b218014$var$useMenuScope = $7dQ7Q$radixuireactmenu.createMenuScope(); +const [$d1bf075a6b218014$var$DropdownMenuProvider, $d1bf075a6b218014$var$useDropdownMenuContext] = $d1bf075a6b218014$var$createDropdownMenuContext($d1bf075a6b218014$var$DROPDOWN_MENU_NAME); +const $d1bf075a6b218014$export$e44a253a59704894 = props => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + children: children, + dir: dir, + open: openProp, + defaultOpen: defaultOpen, + onOpenChange: onOpenChange, + modal = true + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + const triggerRef = $7dQ7Q$react.useRef(null); + const [open = false, setOpen] = $7dQ7Q$radixuireactusecontrollablestate.useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChange + }); + return /*#__PURE__*/$7dQ7Q$react.createElement($d1bf075a6b218014$var$DropdownMenuProvider, { + scope: __scopeDropdownMenu, + triggerId: $7dQ7Q$radixuireactid.useId(), + triggerRef: triggerRef, + contentId: $7dQ7Q$radixuireactid.useId(), + open: open, + onOpenChange: setOpen, + onOpenToggle: $7dQ7Q$react.useCallback(() => setOpen(prevOpen => !prevOpen), [setOpen]), + modal: modal + }, /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Root, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, { + open: open, + onOpenChange: setOpen, + dir: dir, + modal: modal + }), children)); +}; +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$e44a253a59704894, { + displayName: $d1bf075a6b218014$var$DROPDOWN_MENU_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuTrigger + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$TRIGGER_NAME = 'DropdownMenuTrigger'; +const $d1bf075a6b218014$export$d2469213b3befba9 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + disabled = false, + ...triggerProps + } = props; + const context = $d1bf075a6b218014$var$useDropdownMenuContext($d1bf075a6b218014$var$TRIGGER_NAME, __scopeDropdownMenu); + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Anchor, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({ + asChild: true + }, menuScope), /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactprimitive.Primitive.button, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({ + type: "button", + id: context.triggerId, + "aria-haspopup": "menu", + "aria-expanded": context.open, + "aria-controls": context.open ? context.contentId : undefined, + "data-state": context.open ? 'open' : 'closed', + "data-disabled": disabled ? '' : undefined, + disabled: disabled + }, triggerProps, { + ref: $7dQ7Q$radixuireactcomposerefs.composeRefs(forwardedRef, context.triggerRef), + onPointerDown: $7dQ7Q$radixuiprimitive.composeEventHandlers(props.onPointerDown, event => { + // only call handler if it's the left button (mousedown gets triggered by all mouse buttons) + // but not when the control key is pressed (avoiding MacOS right click) + if (!disabled && event.button === 0 && event.ctrlKey === false) { + context.onOpenToggle(); // prevent trigger focusing when opening + // this allows the content to be given focus without competition + if (!context.open) event.preventDefault(); + } + }), + onKeyDown: $7dQ7Q$radixuiprimitive.composeEventHandlers(props.onKeyDown, event => { + if (disabled) return; + if (['Enter', ' '].includes(event.key)) context.onOpenToggle(); + if (event.key === 'ArrowDown') context.onOpenChange(true); // prevent keydown from scrolling window / first focused item to execute + // that keydown (inadvertently closing the menu) + if (['Enter', ' ', 'ArrowDown'].includes(event.key)) event.preventDefault(); + }) + }))); +}); +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$d2469213b3befba9, { + displayName: $d1bf075a6b218014$var$TRIGGER_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuPortal + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$PORTAL_NAME = 'DropdownMenuPortal'; +const $d1bf075a6b218014$export$cd369b4d4d54efc9 = props => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + ...portalProps + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Portal, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, portalProps)); +}; +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$cd369b4d4d54efc9, { + displayName: $d1bf075a6b218014$var$PORTAL_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuContent + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$CONTENT_NAME = 'DropdownMenuContent'; +const $d1bf075a6b218014$export$6e76d93a37c01248 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + ...contentProps + } = props; + const context = $d1bf075a6b218014$var$useDropdownMenuContext($d1bf075a6b218014$var$CONTENT_NAME, __scopeDropdownMenu); + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + const hasInteractedOutsideRef = $7dQ7Q$react.useRef(false); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Content, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({ + id: context.contentId, + "aria-labelledby": context.triggerId + }, menuScope, contentProps, { + ref: forwardedRef, + onCloseAutoFocus: $7dQ7Q$radixuiprimitive.composeEventHandlers(props.onCloseAutoFocus, event => { + var _context$triggerRef$c; + if (!hasInteractedOutsideRef.current) (_context$triggerRef$c = context.triggerRef.current) === null || _context$triggerRef$c === void 0 || _context$triggerRef$c.focus(); + hasInteractedOutsideRef.current = false; // Always prevent auto focus because we either focus manually or want user agent focus + event.preventDefault(); + }), + onInteractOutside: $7dQ7Q$radixuiprimitive.composeEventHandlers(props.onInteractOutside, event => { + const originalEvent = event.detail.originalEvent; + const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true; + const isRightClick = originalEvent.button === 2 || ctrlLeftClick; + if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true; + }), + style: { + ...props.style, + '--radix-dropdown-menu-content-transform-origin': 'var(--radix-popper-transform-origin)', + '--radix-dropdown-menu-content-available-width': 'var(--radix-popper-available-width)', + '--radix-dropdown-menu-content-available-height': 'var(--radix-popper-available-height)', + '--radix-dropdown-menu-trigger-width': 'var(--radix-popper-anchor-width)', + '--radix-dropdown-menu-trigger-height': 'var(--radix-popper-anchor-height)' + } + })); +}); +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$6e76d93a37c01248, { + displayName: $d1bf075a6b218014$var$CONTENT_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuGroup + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$GROUP_NAME = 'DropdownMenuGroup'; +const $d1bf075a6b218014$export$246bebaba3a2f70e = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + ...groupProps + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Group, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, groupProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$246bebaba3a2f70e, { + displayName: $d1bf075a6b218014$var$GROUP_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuLabel + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$LABEL_NAME = 'DropdownMenuLabel'; +const $d1bf075a6b218014$export$76e48c5b57f24495 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + ...labelProps + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Label, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, labelProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$76e48c5b57f24495, { + displayName: $d1bf075a6b218014$var$LABEL_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuItem + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$ITEM_NAME = 'DropdownMenuItem'; +const $d1bf075a6b218014$export$ed97964d1871885d = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + ...itemProps + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Item, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, itemProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$ed97964d1871885d, { + displayName: $d1bf075a6b218014$var$ITEM_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuCheckboxItem + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$CHECKBOX_ITEM_NAME = 'DropdownMenuCheckboxItem'; +const $d1bf075a6b218014$export$53a69729da201fa9 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + ...checkboxItemProps + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.CheckboxItem, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, checkboxItemProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$53a69729da201fa9, { + displayName: $d1bf075a6b218014$var$CHECKBOX_ITEM_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuRadioGroup + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$RADIO_GROUP_NAME = 'DropdownMenuRadioGroup'; +const $d1bf075a6b218014$export$3323ad73d55f587e = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + ...radioGroupProps + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.RadioGroup, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, radioGroupProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$3323ad73d55f587e, { + displayName: $d1bf075a6b218014$var$RADIO_GROUP_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuRadioItem + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$RADIO_ITEM_NAME = 'DropdownMenuRadioItem'; +const $d1bf075a6b218014$export$e4f69b41b1637536 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + ...radioItemProps + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.RadioItem, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, radioItemProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$e4f69b41b1637536, { + displayName: $d1bf075a6b218014$var$RADIO_ITEM_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuItemIndicator + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$INDICATOR_NAME = 'DropdownMenuItemIndicator'; +const $d1bf075a6b218014$export$42355ae145153fb6 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + ...itemIndicatorProps + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.ItemIndicator, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, itemIndicatorProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$42355ae145153fb6, { + displayName: $d1bf075a6b218014$var$INDICATOR_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuSeparator + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$SEPARATOR_NAME = 'DropdownMenuSeparator'; +const $d1bf075a6b218014$export$da160178fd3bc7e9 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + ...separatorProps + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Separator, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, separatorProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$da160178fd3bc7e9, { + displayName: $d1bf075a6b218014$var$SEPARATOR_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuArrow + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$ARROW_NAME = 'DropdownMenuArrow'; +const $d1bf075a6b218014$export$34b8980744021ec5 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + ...arrowProps + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Arrow, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, arrowProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$34b8980744021ec5, { + displayName: $d1bf075a6b218014$var$ARROW_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuSub + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$export$2f307d81a64f5442 = props => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + children: children, + open: openProp, + onOpenChange: onOpenChange, + defaultOpen: defaultOpen + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + const [open = false, setOpen] = $7dQ7Q$radixuireactusecontrollablestate.useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChange + }); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Sub, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, { + open: open, + onOpenChange: setOpen + }), children); +}; +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuSubTrigger + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$SUB_TRIGGER_NAME = 'DropdownMenuSubTrigger'; +const $d1bf075a6b218014$export$21dcb7ec56f874cf = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + ...subTriggerProps + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.SubTrigger, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, subTriggerProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$21dcb7ec56f874cf, { + displayName: $d1bf075a6b218014$var$SUB_TRIGGER_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * DropdownMenuSubContent + * -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$var$SUB_CONTENT_NAME = 'DropdownMenuSubContent'; +const $d1bf075a6b218014$export$f34ec8bc2482cc5f = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { + const { + __scopeDropdownMenu: __scopeDropdownMenu, + ...subContentProps + } = props; + const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); + return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.SubContent, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, subContentProps, { + ref: forwardedRef, + style: { + ...props.style, + '--radix-dropdown-menu-content-transform-origin': 'var(--radix-popper-transform-origin)', + '--radix-dropdown-menu-content-available-width': 'var(--radix-popper-available-width)', + '--radix-dropdown-menu-content-available-height': 'var(--radix-popper-available-height)', + '--radix-dropdown-menu-trigger-width': 'var(--radix-popper-anchor-width)', + '--radix-dropdown-menu-trigger-height': 'var(--radix-popper-anchor-height)' + } + })); +}); +/*#__PURE__*/ +Object.assign($d1bf075a6b218014$export$f34ec8bc2482cc5f, { + displayName: $d1bf075a6b218014$var$SUB_CONTENT_NAME +}); +/* -----------------------------------------------------------------------------------------------*/ +const $d1bf075a6b218014$export$be92b6f5f03c0fe9 = $d1bf075a6b218014$export$e44a253a59704894; +const $d1bf075a6b218014$export$41fb9f06171c75f4 = $d1bf075a6b218014$export$d2469213b3befba9; +const $d1bf075a6b218014$export$602eac185826482c = $d1bf075a6b218014$export$cd369b4d4d54efc9; +const $d1bf075a6b218014$export$7c6e2c02157bb7d2 = $d1bf075a6b218014$export$6e76d93a37c01248; +const $d1bf075a6b218014$export$eb2fcfdbd7ba97d4 = $d1bf075a6b218014$export$246bebaba3a2f70e; +const $d1bf075a6b218014$export$b04be29aa201d4f5 = $d1bf075a6b218014$export$76e48c5b57f24495; +const $d1bf075a6b218014$export$6d08773d2e66f8f2 = $d1bf075a6b218014$export$ed97964d1871885d; +const $d1bf075a6b218014$export$16ce288f89fa631c = $d1bf075a6b218014$export$53a69729da201fa9; +const $d1bf075a6b218014$export$a98f0dcb43a68a25 = $d1bf075a6b218014$export$3323ad73d55f587e; +const $d1bf075a6b218014$export$371ab307eab489c0 = $d1bf075a6b218014$export$e4f69b41b1637536; +const $d1bf075a6b218014$export$c3468e2714d175fa = $d1bf075a6b218014$export$42355ae145153fb6; +const $d1bf075a6b218014$export$1ff3c3f08ae963c0 = $d1bf075a6b218014$export$da160178fd3bc7e9; +const $d1bf075a6b218014$export$21b07c8f274aebd5 = $d1bf075a6b218014$export$34b8980744021ec5; +const $d1bf075a6b218014$export$d7a01e11500dfb6f = $d1bf075a6b218014$export$2f307d81a64f5442; +const $d1bf075a6b218014$export$2ea8a7a591ac5eac = $d1bf075a6b218014$export$21dcb7ec56f874cf; +const $d1bf075a6b218014$export$6d4de93b380beddf = $d1bf075a6b218014$export$f34ec8bc2482cc5f; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-focus-guards/dist/index.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-focus-guards/dist/index.js ***! + \************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $cnctE$react = __webpack_require__(/*! react */ "react"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +$parcel$export(module.exports, "FocusGuards", () => $71476a6ed7dbbaf3$export$ac5b58043b79449b); +$parcel$export(module.exports, "Root", () => $71476a6ed7dbbaf3$export$be92b6f5f03c0fe9); +$parcel$export(module.exports, "useFocusGuards", () => $71476a6ed7dbbaf3$export$b7ece24a22aeda8c); + +/** Number of components which have requested interest to have focus guards */ +let $71476a6ed7dbbaf3$var$count = 0; +function $71476a6ed7dbbaf3$export$ac5b58043b79449b(props) { + $71476a6ed7dbbaf3$export$b7ece24a22aeda8c(); + return props.children; +} +/** + * Injects a pair of focus guards at the edges of the whole DOM tree + * to ensure `focusin` & `focusout` events can be caught consistently. + */ +function $71476a6ed7dbbaf3$export$b7ece24a22aeda8c() { + $cnctE$react.useEffect(() => { + var _edgeGuards$, _edgeGuards$2; + const edgeGuards = document.querySelectorAll('[data-radix-focus-guard]'); + document.body.insertAdjacentElement('afterbegin', (_edgeGuards$ = edgeGuards[0]) !== null && _edgeGuards$ !== void 0 ? _edgeGuards$ : $71476a6ed7dbbaf3$var$createFocusGuard()); + document.body.insertAdjacentElement('beforeend', (_edgeGuards$2 = edgeGuards[1]) !== null && _edgeGuards$2 !== void 0 ? _edgeGuards$2 : $71476a6ed7dbbaf3$var$createFocusGuard()); + $71476a6ed7dbbaf3$var$count++; + return () => { + if ($71476a6ed7dbbaf3$var$count === 1) document.querySelectorAll('[data-radix-focus-guard]').forEach(node => node.remove()); + $71476a6ed7dbbaf3$var$count--; + }; + }, []); +} +function $71476a6ed7dbbaf3$var$createFocusGuard() { + const element = document.createElement('span'); + element.setAttribute('data-radix-focus-guard', ''); + element.tabIndex = 0; + element.style.cssText = 'outline: none; opacity: 0; position: fixed; pointer-events: none'; + return element; +} +const $71476a6ed7dbbaf3$export$be92b6f5f03c0fe9 = $71476a6ed7dbbaf3$export$ac5b58043b79449b; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-focus-scope/dist/index.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-focus-scope/dist/index.js ***! + \***********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $buum9$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); +var $buum9$react = __webpack_require__(/*! react */ "react"); +var $buum9$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); +var $buum9$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); +var $buum9$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "FocusScope", () => $2bc01e66e04aa9ed$export$20e40289641fbbb6); +$parcel$export(module.exports, "Root", () => $2bc01e66e04aa9ed$export$be92b6f5f03c0fe9); +const $2bc01e66e04aa9ed$var$AUTOFOCUS_ON_MOUNT = 'focusScope.autoFocusOnMount'; +const $2bc01e66e04aa9ed$var$AUTOFOCUS_ON_UNMOUNT = 'focusScope.autoFocusOnUnmount'; +const $2bc01e66e04aa9ed$var$EVENT_OPTIONS = { + bubbles: false, + cancelable: true +}; +/* ------------------------------------------------------------------------------------------------- + * FocusScope + * -----------------------------------------------------------------------------------------------*/ +const $2bc01e66e04aa9ed$var$FOCUS_SCOPE_NAME = 'FocusScope'; +const $2bc01e66e04aa9ed$export$20e40289641fbbb6 = /*#__PURE__*/$buum9$react.forwardRef((props, forwardedRef) => { + const { + loop = false, + trapped = false, + onMountAutoFocus: onMountAutoFocusProp, + onUnmountAutoFocus: onUnmountAutoFocusProp, + ...scopeProps + } = props; + const [container1, setContainer] = $buum9$react.useState(null); + const onMountAutoFocus = $buum9$radixuireactusecallbackref.useCallbackRef(onMountAutoFocusProp); + const onUnmountAutoFocus = $buum9$radixuireactusecallbackref.useCallbackRef(onUnmountAutoFocusProp); + const lastFocusedElementRef = $buum9$react.useRef(null); + const composedRefs = $buum9$radixuireactcomposerefs.useComposedRefs(forwardedRef, node => setContainer(node)); + const focusScope = $buum9$react.useRef({ + paused: false, + pause() { + this.paused = true; + }, + resume() { + this.paused = false; + } + }).current; // Takes care of trapping focus if focus is moved outside programmatically for example + $buum9$react.useEffect(() => { + if (trapped) { + function handleFocusIn(event) { + if (focusScope.paused || !container1) return; + const target = event.target; + if (container1.contains(target)) lastFocusedElementRef.current = target;else $2bc01e66e04aa9ed$var$focus(lastFocusedElementRef.current, { + select: true + }); + } + function handleFocusOut(event) { + if (focusScope.paused || !container1) return; + const relatedTarget = event.relatedTarget; // A `focusout` event with a `null` `relatedTarget` will happen in at least two cases: + // + // 1. When the user switches app/tabs/windows/the browser itself loses focus. + // 2. In Google Chrome, when the focused element is removed from the DOM. + // + // We let the browser do its thing here because: + // + // 1. The browser already keeps a memory of what's focused for when the page gets refocused. + // 2. In Google Chrome, if we try to focus the deleted focused element (as per below), it + // throws the CPU to 100%, so we avoid doing anything for this reason here too. + if (relatedTarget === null) return; // If the focus has moved to an actual legitimate element (`relatedTarget !== null`) + // that is outside the container, we move focus to the last valid focused element inside. + if (!container1.contains(relatedTarget)) $2bc01e66e04aa9ed$var$focus(lastFocusedElementRef.current, { + select: true + }); + } // When the focused element gets removed from the DOM, browsers move focus + // back to the document.body. In this case, we move focus to the container + // to keep focus trapped correctly. + function handleMutations(mutations) { + const focusedElement = document.activeElement; + for (const mutation of mutations) { + if (mutation.removedNodes.length > 0) { + if (!(container1 !== null && container1 !== void 0 && container1.contains(focusedElement))) $2bc01e66e04aa9ed$var$focus(container1); + } + } + } + document.addEventListener('focusin', handleFocusIn); + document.addEventListener('focusout', handleFocusOut); + const mutationObserver = new MutationObserver(handleMutations); + if (container1) mutationObserver.observe(container1, { + childList: true, + subtree: true + }); + return () => { + document.removeEventListener('focusin', handleFocusIn); + document.removeEventListener('focusout', handleFocusOut); + mutationObserver.disconnect(); + }; + } + }, [trapped, container1, focusScope.paused]); + $buum9$react.useEffect(() => { + if (container1) { + $2bc01e66e04aa9ed$var$focusScopesStack.add(focusScope); + const previouslyFocusedElement = document.activeElement; + const hasFocusedCandidate = container1.contains(previouslyFocusedElement); + if (!hasFocusedCandidate) { + const mountEvent = new CustomEvent($2bc01e66e04aa9ed$var$AUTOFOCUS_ON_MOUNT, $2bc01e66e04aa9ed$var$EVENT_OPTIONS); + container1.addEventListener($2bc01e66e04aa9ed$var$AUTOFOCUS_ON_MOUNT, onMountAutoFocus); + container1.dispatchEvent(mountEvent); + if (!mountEvent.defaultPrevented) { + $2bc01e66e04aa9ed$var$focusFirst($2bc01e66e04aa9ed$var$removeLinks($2bc01e66e04aa9ed$var$getTabbableCandidates(container1)), { + select: true + }); + if (document.activeElement === previouslyFocusedElement) $2bc01e66e04aa9ed$var$focus(container1); + } + } + return () => { + container1.removeEventListener($2bc01e66e04aa9ed$var$AUTOFOCUS_ON_MOUNT, onMountAutoFocus); // We hit a react bug (fixed in v17) with focusing in unmount. + // We need to delay the focus a little to get around it for now. + // See: https://github.com/facebook/react/issues/17894 + setTimeout(() => { + const unmountEvent = new CustomEvent($2bc01e66e04aa9ed$var$AUTOFOCUS_ON_UNMOUNT, $2bc01e66e04aa9ed$var$EVENT_OPTIONS); + container1.addEventListener($2bc01e66e04aa9ed$var$AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus); + container1.dispatchEvent(unmountEvent); + if (!unmountEvent.defaultPrevented) $2bc01e66e04aa9ed$var$focus(previouslyFocusedElement !== null && previouslyFocusedElement !== void 0 ? previouslyFocusedElement : document.body, { + select: true + }); + // we need to remove the listener after we `dispatchEvent` + container1.removeEventListener($2bc01e66e04aa9ed$var$AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus); + $2bc01e66e04aa9ed$var$focusScopesStack.remove(focusScope); + }, 0); + }; + } + }, [container1, onMountAutoFocus, onUnmountAutoFocus, focusScope]); // Takes care of looping focus (when tabbing whilst at the edges) + const handleKeyDown = $buum9$react.useCallback(event => { + if (!loop && !trapped) return; + if (focusScope.paused) return; + const isTabKey = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey; + const focusedElement = document.activeElement; + if (isTabKey && focusedElement) { + const container = event.currentTarget; + const [first, last] = $2bc01e66e04aa9ed$var$getTabbableEdges(container); + const hasTabbableElementsInside = first && last; // we can only wrap focus if we have tabbable edges + if (!hasTabbableElementsInside) { + if (focusedElement === container) event.preventDefault(); + } else { + if (!event.shiftKey && focusedElement === last) { + event.preventDefault(); + if (loop) $2bc01e66e04aa9ed$var$focus(first, { + select: true + }); + } else if (event.shiftKey && focusedElement === first) { + event.preventDefault(); + if (loop) $2bc01e66e04aa9ed$var$focus(last, { + select: true + }); + } + } + } + }, [loop, trapped, focusScope.paused]); + return /*#__PURE__*/$buum9$react.createElement($buum9$radixuireactprimitive.Primitive.div, $parcel$interopDefault($buum9$babelruntimehelpersextends)({ + tabIndex: -1 + }, scopeProps, { + ref: composedRefs, + onKeyDown: handleKeyDown + })); +}); +/*#__PURE__*/ +Object.assign($2bc01e66e04aa9ed$export$20e40289641fbbb6, { + displayName: $2bc01e66e04aa9ed$var$FOCUS_SCOPE_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * Utils + * -----------------------------------------------------------------------------------------------*/ /** + * Attempts focusing the first element in a list of candidates. + * Stops when focus has actually moved. + */ +function $2bc01e66e04aa9ed$var$focusFirst(candidates) { + let { + select = false + } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + const previouslyFocusedElement = document.activeElement; + for (const candidate of candidates) { + $2bc01e66e04aa9ed$var$focus(candidate, { + select: select + }); + if (document.activeElement !== previouslyFocusedElement) return; + } +} +/** + * Returns the first and last tabbable elements inside a container. + */ +function $2bc01e66e04aa9ed$var$getTabbableEdges(container) { + const candidates = $2bc01e66e04aa9ed$var$getTabbableCandidates(container); + const first = $2bc01e66e04aa9ed$var$findVisible(candidates, container); + const last = $2bc01e66e04aa9ed$var$findVisible(candidates.reverse(), container); + return [first, last]; +} +/** + * Returns a list of potential tabbable candidates. + * + * NOTE: This is only a close approximation. For example it doesn't take into account cases like when + * elements are not visible. This cannot be worked out easily by just reading a property, but rather + * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately. + * + * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker + * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1 + */ +function $2bc01e66e04aa9ed$var$getTabbableCandidates(container) { + const nodes = []; + const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, { + acceptNode: node => { + const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden'; + if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP; // `.tabIndex` is not the same as the `tabindex` attribute. It works on the + // runtime's understanding of tabbability, so this automatically accounts + // for any kind of element that could be tabbed to. + return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP; + } + }); + while (walker.nextNode()) nodes.push(walker.currentNode); // we do not take into account the order of nodes with positive `tabIndex` as it + // hinders accessibility to have tab order different from visual order. + return nodes; +} +/** + * Returns the first visible element in a list. + * NOTE: Only checks visibility up to the `container`. + */ +function $2bc01e66e04aa9ed$var$findVisible(elements, container) { + for (const element of elements) { + // we stop checking if it's hidden at the `container` level (excluding) + if (!$2bc01e66e04aa9ed$var$isHidden(element, { + upTo: container + })) return element; + } +} +function $2bc01e66e04aa9ed$var$isHidden(node, _ref) { + let { + upTo: upTo + } = _ref; + if (getComputedStyle(node).visibility === 'hidden') return true; + while (node) { + // we stop at `upTo` (excluding it) + if (upTo !== undefined && node === upTo) return false; + if (getComputedStyle(node).display === 'none') return true; + node = node.parentElement; + } + return false; +} +function $2bc01e66e04aa9ed$var$isSelectableInput(element) { + return element instanceof HTMLInputElement && 'select' in element; +} +function $2bc01e66e04aa9ed$var$focus(element) { + let { + select = false + } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + // only focus if that element is focusable + if (element && element.focus) { + const previouslyFocusedElement = document.activeElement; // NOTE: we prevent scrolling on focus, to minimize jarring transitions for users + element.focus({ + preventScroll: true + }); // only select if its not the same element, it supports selection and we need to select + if (element !== previouslyFocusedElement && $2bc01e66e04aa9ed$var$isSelectableInput(element) && select) element.select(); + } +} +/* ------------------------------------------------------------------------------------------------- + * FocusScope stack + * -----------------------------------------------------------------------------------------------*/ +const $2bc01e66e04aa9ed$var$focusScopesStack = $2bc01e66e04aa9ed$var$createFocusScopesStack(); +function $2bc01e66e04aa9ed$var$createFocusScopesStack() { + /** A stack of focus scopes, with the active one at the top */let stack = []; + return { + add(focusScope) { + // pause the currently active focus scope (at the top of the stack) + const activeFocusScope = stack[0]; + if (focusScope !== activeFocusScope) activeFocusScope === null || activeFocusScope === void 0 || activeFocusScope.pause(); + // remove in case it already exists (because we'll re-add it at the top of the stack) + stack = $2bc01e66e04aa9ed$var$arrayRemove(stack, focusScope); + stack.unshift(focusScope); + }, + remove(focusScope) { + var _stack$; + stack = $2bc01e66e04aa9ed$var$arrayRemove(stack, focusScope); + (_stack$ = stack[0]) === null || _stack$ === void 0 || _stack$.resume(); + } + }; +} +function $2bc01e66e04aa9ed$var$arrayRemove(array, item) { + const updatedArray = [...array]; + const index = updatedArray.indexOf(item); + if (index !== -1) updatedArray.splice(index, 1); + return updatedArray; +} +function $2bc01e66e04aa9ed$var$removeLinks(items) { + return items.filter(item => item.tagName !== 'A'); +} +const $2bc01e66e04aa9ed$export$be92b6f5f03c0fe9 = $2bc01e66e04aa9ed$export$20e40289641fbbb6; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-id/dist/index.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-id/dist/index.js ***! + \**************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $47woD$react = __webpack_require__(/*! react */ "react"); +var $47woD$radixuireactuselayouteffect = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +$parcel$export(module.exports, "useId", () => $dc478e4659f630c5$export$f680877a34711e37); +const $dc478e4659f630c5$var$useReactId = $47woD$react['useId'.toString()] || (() => undefined); +let $dc478e4659f630c5$var$count = 0; +function $dc478e4659f630c5$export$f680877a34711e37(deterministicId) { + const [id, setId] = $47woD$react.useState($dc478e4659f630c5$var$useReactId()); // React versions older than 18 will have client-side ids only. + $47woD$radixuireactuselayouteffect.useLayoutEffect(() => { + if (!deterministicId) setId(reactId => reactId !== null && reactId !== void 0 ? reactId : String($dc478e4659f630c5$var$count++)); + }, [deterministicId]); + return deterministicId || (id ? `radix-${id}` : ''); +} + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-menu/dist/index.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-menu/dist/index.js ***! + \****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $cnSS2$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); +var $cnSS2$react = __webpack_require__(/*! react */ "react"); +var $cnSS2$radixuiprimitive = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.js"); +var $cnSS2$radixuireactcollection = __webpack_require__(/*! @radix-ui/react-collection */ "../../../node_modules/@radix-ui/react-collection/dist/index.js"); +var $cnSS2$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); +var $cnSS2$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); +var $cnSS2$radixuireactdirection = __webpack_require__(/*! @radix-ui/react-direction */ "../../../node_modules/@radix-ui/react-direction/dist/index.js"); +var $cnSS2$radixuireactdismissablelayer = __webpack_require__(/*! @radix-ui/react-dismissable-layer */ "../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.js"); +var $cnSS2$radixuireactfocusguards = __webpack_require__(/*! @radix-ui/react-focus-guards */ "../../../node_modules/@radix-ui/react-focus-guards/dist/index.js"); +var $cnSS2$radixuireactfocusscope = __webpack_require__(/*! @radix-ui/react-focus-scope */ "../../../node_modules/@radix-ui/react-focus-scope/dist/index.js"); +var $cnSS2$radixuireactid = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.js"); +var $cnSS2$radixuireactpopper = __webpack_require__(/*! @radix-ui/react-popper */ "../../../node_modules/@radix-ui/react-popper/dist/index.js"); +var $cnSS2$radixuireactportal = __webpack_require__(/*! @radix-ui/react-portal */ "../../../node_modules/@radix-ui/react-portal/dist/index.js"); +var $cnSS2$radixuireactpresence = __webpack_require__(/*! @radix-ui/react-presence */ "../../../node_modules/@radix-ui/react-presence/dist/index.js"); +var $cnSS2$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); +var $cnSS2$radixuireactrovingfocus = __webpack_require__(/*! @radix-ui/react-roving-focus */ "../../../node_modules/@radix-ui/react-roving-focus/dist/index.js"); +var $cnSS2$radixuireactslot = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.js"); +var $cnSS2$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); +var $cnSS2$ariahidden = __webpack_require__(/*! aria-hidden */ "../../../node_modules/aria-hidden/dist/es2015/index.js"); +var $cnSS2$reactremovescroll = __webpack_require__(/*! react-remove-scroll */ "../../../node_modules/react-remove-scroll/dist/es2015/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "createMenuScope", () => $213e4d2df823067d$export$4027731b685e72eb); +$parcel$export(module.exports, "Menu", () => $213e4d2df823067d$export$d9b273488cd8ce6f); +$parcel$export(module.exports, "MenuAnchor", () => $213e4d2df823067d$export$9fa5ebd18bee4d43); +$parcel$export(module.exports, "MenuPortal", () => $213e4d2df823067d$export$793392f970497feb); +$parcel$export(module.exports, "MenuContent", () => $213e4d2df823067d$export$479f0f2f71193efe); +$parcel$export(module.exports, "MenuGroup", () => $213e4d2df823067d$export$22a631d1f72787bb); +$parcel$export(module.exports, "MenuLabel", () => $213e4d2df823067d$export$dd37bec0e8a99143); +$parcel$export(module.exports, "MenuItem", () => $213e4d2df823067d$export$2ce376c2cc3355c8); +$parcel$export(module.exports, "MenuCheckboxItem", () => $213e4d2df823067d$export$f6f243521332502d); +$parcel$export(module.exports, "MenuRadioGroup", () => $213e4d2df823067d$export$ea2200c9eee416b3); +$parcel$export(module.exports, "MenuRadioItem", () => $213e4d2df823067d$export$69bd225e9817f6d0); +$parcel$export(module.exports, "MenuItemIndicator", () => $213e4d2df823067d$export$a2593e23056970a3); +$parcel$export(module.exports, "MenuSeparator", () => $213e4d2df823067d$export$1cec7dcdd713e220); +$parcel$export(module.exports, "MenuArrow", () => $213e4d2df823067d$export$bcdda4773debf5fa); +$parcel$export(module.exports, "MenuSub", () => $213e4d2df823067d$export$71bdb9d1e2909932); +$parcel$export(module.exports, "MenuSubTrigger", () => $213e4d2df823067d$export$5fbbb3ba7297405f); +$parcel$export(module.exports, "MenuSubContent", () => $213e4d2df823067d$export$e7142ab31822bde6); +$parcel$export(module.exports, "Root", () => $213e4d2df823067d$export$be92b6f5f03c0fe9); +$parcel$export(module.exports, "Anchor", () => $213e4d2df823067d$export$b688253958b8dfe7); +$parcel$export(module.exports, "Portal", () => $213e4d2df823067d$export$602eac185826482c); +$parcel$export(module.exports, "Content", () => $213e4d2df823067d$export$7c6e2c02157bb7d2); +$parcel$export(module.exports, "Group", () => $213e4d2df823067d$export$eb2fcfdbd7ba97d4); +$parcel$export(module.exports, "Label", () => $213e4d2df823067d$export$b04be29aa201d4f5); +$parcel$export(module.exports, "Item", () => $213e4d2df823067d$export$6d08773d2e66f8f2); +$parcel$export(module.exports, "CheckboxItem", () => $213e4d2df823067d$export$16ce288f89fa631c); +$parcel$export(module.exports, "RadioGroup", () => $213e4d2df823067d$export$a98f0dcb43a68a25); +$parcel$export(module.exports, "RadioItem", () => $213e4d2df823067d$export$371ab307eab489c0); +$parcel$export(module.exports, "ItemIndicator", () => $213e4d2df823067d$export$c3468e2714d175fa); +$parcel$export(module.exports, "Separator", () => $213e4d2df823067d$export$1ff3c3f08ae963c0); +$parcel$export(module.exports, "Arrow", () => $213e4d2df823067d$export$21b07c8f274aebd5); +$parcel$export(module.exports, "Sub", () => $213e4d2df823067d$export$d7a01e11500dfb6f); +$parcel$export(module.exports, "SubTrigger", () => $213e4d2df823067d$export$2ea8a7a591ac5eac); +$parcel$export(module.exports, "SubContent", () => $213e4d2df823067d$export$6d4de93b380beddf); +const $213e4d2df823067d$var$SELECTION_KEYS = ['Enter', ' ']; +const $213e4d2df823067d$var$FIRST_KEYS = ['ArrowDown', 'PageUp', 'Home']; +const $213e4d2df823067d$var$LAST_KEYS = ['ArrowUp', 'PageDown', 'End']; +const $213e4d2df823067d$var$FIRST_LAST_KEYS = [...$213e4d2df823067d$var$FIRST_KEYS, ...$213e4d2df823067d$var$LAST_KEYS]; +const $213e4d2df823067d$var$SUB_OPEN_KEYS = { + ltr: [...$213e4d2df823067d$var$SELECTION_KEYS, 'ArrowRight'], + rtl: [...$213e4d2df823067d$var$SELECTION_KEYS, 'ArrowLeft'] +}; +const $213e4d2df823067d$var$SUB_CLOSE_KEYS = { + ltr: ['ArrowLeft'], + rtl: ['ArrowRight'] +}; +/* ------------------------------------------------------------------------------------------------- + * Menu + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$MENU_NAME = 'Menu'; +const [$213e4d2df823067d$var$Collection, $213e4d2df823067d$var$useCollection, $213e4d2df823067d$var$createCollectionScope] = $cnSS2$radixuireactcollection.createCollection($213e4d2df823067d$var$MENU_NAME); +const [$213e4d2df823067d$var$createMenuContext, $213e4d2df823067d$export$4027731b685e72eb] = $cnSS2$radixuireactcontext.createContextScope($213e4d2df823067d$var$MENU_NAME, [$213e4d2df823067d$var$createCollectionScope, $cnSS2$radixuireactpopper.createPopperScope, $cnSS2$radixuireactrovingfocus.createRovingFocusGroupScope]); +const $213e4d2df823067d$var$usePopperScope = $cnSS2$radixuireactpopper.createPopperScope(); +const $213e4d2df823067d$var$useRovingFocusGroupScope = $cnSS2$radixuireactrovingfocus.createRovingFocusGroupScope(); +const [$213e4d2df823067d$var$MenuProvider, $213e4d2df823067d$var$useMenuContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$MENU_NAME); +const [$213e4d2df823067d$var$MenuRootProvider, $213e4d2df823067d$var$useMenuRootContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$MENU_NAME); +const $213e4d2df823067d$export$d9b273488cd8ce6f = props => { + const { + __scopeMenu: __scopeMenu, + open = false, + children: children, + dir: dir, + onOpenChange: onOpenChange, + modal = true + } = props; + const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu); + const [content, setContent] = $cnSS2$react.useState(null); + const isUsingKeyboardRef = $cnSS2$react.useRef(false); + const handleOpenChange = $cnSS2$radixuireactusecallbackref.useCallbackRef(onOpenChange); + const direction = $cnSS2$radixuireactdirection.useDirection(dir); + $cnSS2$react.useEffect(() => { + // Capture phase ensures we set the boolean before any side effects execute + // in response to the key or pointer event as they might depend on this value. + const handleKeyDown = () => { + isUsingKeyboardRef.current = true; + document.addEventListener('pointerdown', handlePointer, { + capture: true, + once: true + }); + document.addEventListener('pointermove', handlePointer, { + capture: true, + once: true + }); + }; + const handlePointer = () => isUsingKeyboardRef.current = false; + document.addEventListener('keydown', handleKeyDown, { + capture: true + }); + return () => { + document.removeEventListener('keydown', handleKeyDown, { + capture: true + }); + document.removeEventListener('pointerdown', handlePointer, { + capture: true + }); + document.removeEventListener('pointermove', handlePointer, { + capture: true + }); + }; + }, []); + return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpopper.Root, popperScope, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuProvider, { + scope: __scopeMenu, + open: open, + onOpenChange: handleOpenChange, + content: content, + onContentChange: setContent + }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuRootProvider, { + scope: __scopeMenu, + onClose: $cnSS2$react.useCallback(() => handleOpenChange(false), [handleOpenChange]), + isUsingKeyboardRef: isUsingKeyboardRef, + dir: direction, + modal: modal + }, children))); +}; +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$d9b273488cd8ce6f, { + displayName: $213e4d2df823067d$var$MENU_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuAnchor + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$ANCHOR_NAME = 'MenuAnchor'; +const $213e4d2df823067d$export$9fa5ebd18bee4d43 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const { + __scopeMenu: __scopeMenu, + ...anchorProps + } = props; + const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu); + return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpopper.Anchor, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, popperScope, anchorProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$9fa5ebd18bee4d43, { + displayName: $213e4d2df823067d$var$ANCHOR_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuPortal + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$PORTAL_NAME = 'MenuPortal'; +const [$213e4d2df823067d$var$PortalProvider, $213e4d2df823067d$var$usePortalContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$PORTAL_NAME, { + forceMount: undefined +}); +const $213e4d2df823067d$export$793392f970497feb = props => { + const { + __scopeMenu: __scopeMenu, + forceMount: forceMount, + children: children, + container: container + } = props; + const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$PORTAL_NAME, __scopeMenu); + return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$PortalProvider, { + scope: __scopeMenu, + forceMount: forceMount + }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpresence.Presence, { + present: forceMount || context.open + }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactportal.Portal, { + asChild: true, + container: container + }, children))); +}; +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$793392f970497feb, { + displayName: $213e4d2df823067d$var$PORTAL_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuContent + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$CONTENT_NAME = 'MenuContent'; +const [$213e4d2df823067d$var$MenuContentProvider, $213e4d2df823067d$var$useMenuContentContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$CONTENT_NAME); +const $213e4d2df823067d$export$479f0f2f71193efe = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const portalContext = $213e4d2df823067d$var$usePortalContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); + const { + forceMount = portalContext.forceMount, + ...contentProps + } = props; + const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); + const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); + return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$Collection.Provider, { + scope: props.__scopeMenu + }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpresence.Presence, { + present: forceMount || context.open + }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$Collection.Slot, { + scope: props.__scopeMenu + }, rootContext.modal ? /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuRootContentModal, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, contentProps, { + ref: forwardedRef + })) : /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuRootContentNonModal, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, contentProps, { + ref: forwardedRef + }))))); +}); +/* ---------------------------------------------------------------------------------------------- */ +const $213e4d2df823067d$var$MenuRootContentModal = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); + const ref = $cnSS2$react.useRef(null); + const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); // Hide everything from ARIA except the `MenuContent` + $cnSS2$react.useEffect(() => { + const content = ref.current; + if (content) return $cnSS2$ariahidden.hideOthers(content); + }, []); + return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuContentImpl, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, props, { + ref: composedRefs // we make sure we're not trapping once it's been closed + , + + trapFocus: context.open // make sure to only disable pointer events when open + , + + disableOutsidePointerEvents: context.open, + disableOutsideScroll: true // When focus is trapped, a `focusout` event may still happen. + , + + onFocusOutside: $cnSS2$radixuiprimitive.composeEventHandlers(props.onFocusOutside, event => event.preventDefault(), { + checkForDefaultPrevented: false + }), + onDismiss: () => context.onOpenChange(false) + })); +}); +const $213e4d2df823067d$var$MenuRootContentNonModal = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); + return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuContentImpl, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, props, { + ref: forwardedRef, + trapFocus: false, + disableOutsidePointerEvents: false, + disableOutsideScroll: false, + onDismiss: () => context.onOpenChange(false) + })); +}); +/* ---------------------------------------------------------------------------------------------- */ +const $213e4d2df823067d$var$MenuContentImpl = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const { + __scopeMenu: __scopeMenu, + loop = false, + trapFocus: trapFocus, + onOpenAutoFocus: onOpenAutoFocus, + onCloseAutoFocus: onCloseAutoFocus, + disableOutsidePointerEvents: disableOutsidePointerEvents, + onEntryFocus: onEntryFocus, + onEscapeKeyDown: onEscapeKeyDown, + onPointerDownOutside: onPointerDownOutside, + onFocusOutside: onFocusOutside, + onInteractOutside: onInteractOutside, + onDismiss: onDismiss, + disableOutsideScroll: disableOutsideScroll, + ...contentProps + } = props; + const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, __scopeMenu); + const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$CONTENT_NAME, __scopeMenu); + const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu); + const rovingFocusGroupScope = $213e4d2df823067d$var$useRovingFocusGroupScope(__scopeMenu); + const getItems = $213e4d2df823067d$var$useCollection(__scopeMenu); + const [currentItemId, setCurrentItemId] = $cnSS2$react.useState(null); + const contentRef = $cnSS2$react.useRef(null); + const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, contentRef, context.onContentChange); + const timerRef = $cnSS2$react.useRef(0); + const searchRef = $cnSS2$react.useRef(''); + const pointerGraceTimerRef = $cnSS2$react.useRef(0); + const pointerGraceIntentRef = $cnSS2$react.useRef(null); + const pointerDirRef = $cnSS2$react.useRef('right'); + const lastPointerXRef = $cnSS2$react.useRef(0); + const ScrollLockWrapper = disableOutsideScroll ? $cnSS2$reactremovescroll.RemoveScroll : $cnSS2$react.Fragment; + const scrollLockWrapperProps = disableOutsideScroll ? { + as: $cnSS2$radixuireactslot.Slot, + allowPinchZoom: true + } : undefined; + const handleTypeaheadSearch = key => { + var _items$find, _items$find2; + const search = searchRef.current + key; + const items = getItems().filter(item => !item.disabled); + const currentItem = document.activeElement; + const currentMatch = (_items$find = items.find(item => item.ref.current === currentItem)) === null || _items$find === void 0 ? void 0 : _items$find.textValue; + const values = items.map(item => item.textValue); + const nextMatch = $213e4d2df823067d$var$getNextMatch(values, search, currentMatch); + const newItem = (_items$find2 = items.find(item => item.textValue === nextMatch)) === null || _items$find2 === void 0 ? void 0 : _items$find2.ref.current; // Reset `searchRef` 1 second after it was last updated + (function updateSearch(value) { + searchRef.current = value; + window.clearTimeout(timerRef.current); + if (value !== '') timerRef.current = window.setTimeout(() => updateSearch(''), 1000); + })(search); + if (newItem) + /** + * Imperative focus during keydown is risky so we prevent React's batching updates + * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332 + */ + setTimeout(() => newItem.focus()); + }; + $cnSS2$react.useEffect(() => { + return () => window.clearTimeout(timerRef.current); + }, []); // Make sure the whole tree has focus guards as our `MenuContent` may be + // the last element in the DOM (beacuse of the `Portal`) + $cnSS2$radixuireactfocusguards.useFocusGuards(); + const isPointerMovingToSubmenu = $cnSS2$react.useCallback(event => { + var _pointerGraceIntentRe, _pointerGraceIntentRe2; + const isMovingTowards = pointerDirRef.current === ((_pointerGraceIntentRe = pointerGraceIntentRef.current) === null || _pointerGraceIntentRe === void 0 ? void 0 : _pointerGraceIntentRe.side); + return isMovingTowards && $213e4d2df823067d$var$isPointerInGraceArea(event, (_pointerGraceIntentRe2 = pointerGraceIntentRef.current) === null || _pointerGraceIntentRe2 === void 0 ? void 0 : _pointerGraceIntentRe2.area); + }, []); + return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuContentProvider, { + scope: __scopeMenu, + searchRef: searchRef, + onItemEnter: $cnSS2$react.useCallback(event => { + if (isPointerMovingToSubmenu(event)) event.preventDefault(); + }, [isPointerMovingToSubmenu]), + onItemLeave: $cnSS2$react.useCallback(event => { + var _contentRef$current; + if (isPointerMovingToSubmenu(event)) return; + (_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 || _contentRef$current.focus(); + setCurrentItemId(null); + }, [isPointerMovingToSubmenu]), + onTriggerLeave: $cnSS2$react.useCallback(event => { + if (isPointerMovingToSubmenu(event)) event.preventDefault(); + }, [isPointerMovingToSubmenu]), + pointerGraceTimerRef: pointerGraceTimerRef, + onPointerGraceIntentChange: $cnSS2$react.useCallback(intent => { + pointerGraceIntentRef.current = intent; + }, []) + }, /*#__PURE__*/$cnSS2$react.createElement(ScrollLockWrapper, scrollLockWrapperProps, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactfocusscope.FocusScope, { + asChild: true, + trapped: trapFocus, + onMountAutoFocus: $cnSS2$radixuiprimitive.composeEventHandlers(onOpenAutoFocus, event => { + var _contentRef$current2; + // when opening, explicitly focus the content area only and leave + // `onEntryFocus` in control of focusing first item + event.preventDefault(); + (_contentRef$current2 = contentRef.current) === null || _contentRef$current2 === void 0 || _contentRef$current2.focus(); + }), + onUnmountAutoFocus: onCloseAutoFocus + }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactdismissablelayer.DismissableLayer, { + asChild: true, + disableOutsidePointerEvents: disableOutsidePointerEvents, + onEscapeKeyDown: onEscapeKeyDown, + onPointerDownOutside: onPointerDownOutside, + onFocusOutside: onFocusOutside, + onInteractOutside: onInteractOutside, + onDismiss: onDismiss + }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactrovingfocus.Root, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ + asChild: true + }, rovingFocusGroupScope, { + dir: rootContext.dir, + orientation: "vertical", + loop: loop, + currentTabStopId: currentItemId, + onCurrentTabStopIdChange: setCurrentItemId, + onEntryFocus: $cnSS2$radixuiprimitive.composeEventHandlers(onEntryFocus, event => { + // only focus first item when using keyboard + if (!rootContext.isUsingKeyboardRef.current) event.preventDefault(); + }) + }), /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpopper.Content, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ + role: "menu", + "aria-orientation": "vertical", + "data-state": $213e4d2df823067d$var$getOpenState(context.open), + "data-radix-menu-content": "", + dir: rootContext.dir + }, popperScope, contentProps, { + ref: composedRefs, + style: { + outline: 'none', + ...contentProps.style + }, + onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(contentProps.onKeyDown, event => { + // submenu key events bubble through portals. We only care about keys in this menu. + const target = event.target; + const isKeyDownInside = target.closest('[data-radix-menu-content]') === event.currentTarget; + const isModifierKey = event.ctrlKey || event.altKey || event.metaKey; + const isCharacterKey = event.key.length === 1; + if (isKeyDownInside) { + // menus should not be navigated using tab key so we prevent it + if (event.key === 'Tab') event.preventDefault(); + if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key); + } // focus first/last item based on key pressed + const content = contentRef.current; + if (event.target !== content) return; + if (!$213e4d2df823067d$var$FIRST_LAST_KEYS.includes(event.key)) return; + event.preventDefault(); + const items = getItems().filter(item => !item.disabled); + const candidateNodes = items.map(item => item.ref.current); + if ($213e4d2df823067d$var$LAST_KEYS.includes(event.key)) candidateNodes.reverse(); + $213e4d2df823067d$var$focusFirst(candidateNodes); + }), + onBlur: $cnSS2$radixuiprimitive.composeEventHandlers(props.onBlur, event => { + // clear search buffer when leaving the menu + if (!event.currentTarget.contains(event.target)) { + window.clearTimeout(timerRef.current); + searchRef.current = ''; + } + }), + onPointerMove: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerMove, $213e4d2df823067d$var$whenMouse(event => { + const target = event.target; + const pointerXHasChanged = lastPointerXRef.current !== event.clientX; // We don't use `event.movementX` for this check because Safari will + // always return `0` on a pointer event. + if (event.currentTarget.contains(target) && pointerXHasChanged) { + const newDir = event.clientX > lastPointerXRef.current ? 'right' : 'left'; + pointerDirRef.current = newDir; + lastPointerXRef.current = event.clientX; + } + })) + }))))))); +}); +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$479f0f2f71193efe, { + displayName: $213e4d2df823067d$var$CONTENT_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuGroup + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$GROUP_NAME = 'MenuGroup'; +const $213e4d2df823067d$export$22a631d1f72787bb = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const { + __scopeMenu: __scopeMenu, + ...groupProps + } = props; + return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactprimitive.Primitive.div, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ + role: "group" + }, groupProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$22a631d1f72787bb, { + displayName: $213e4d2df823067d$var$GROUP_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuLabel + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$LABEL_NAME = 'MenuLabel'; +const $213e4d2df823067d$export$dd37bec0e8a99143 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const { + __scopeMenu: __scopeMenu, + ...labelProps + } = props; + return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactprimitive.Primitive.div, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, labelProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$dd37bec0e8a99143, { + displayName: $213e4d2df823067d$var$LABEL_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuItem + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$ITEM_NAME = 'MenuItem'; +const $213e4d2df823067d$var$ITEM_SELECT = 'menu.itemSelect'; +const $213e4d2df823067d$export$2ce376c2cc3355c8 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const { + disabled = false, + onSelect: onSelect, + ...itemProps + } = props; + const ref = $cnSS2$react.useRef(null); + const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$ITEM_NAME, props.__scopeMenu); + const contentContext = $213e4d2df823067d$var$useMenuContentContext($213e4d2df823067d$var$ITEM_NAME, props.__scopeMenu); + const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); + const isPointerDownRef = $cnSS2$react.useRef(false); + const handleSelect = () => { + const menuItem = ref.current; + if (!disabled && menuItem) { + const itemSelectEvent = new CustomEvent($213e4d2df823067d$var$ITEM_SELECT, { + bubbles: true, + cancelable: true + }); + menuItem.addEventListener($213e4d2df823067d$var$ITEM_SELECT, event => onSelect === null || onSelect === void 0 ? void 0 : onSelect(event), { + once: true + }); + $cnSS2$radixuireactprimitive.dispatchDiscreteCustomEvent(menuItem, itemSelectEvent); + if (itemSelectEvent.defaultPrevented) isPointerDownRef.current = false;else rootContext.onClose(); + } + }; + return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuItemImpl, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, itemProps, { + ref: composedRefs, + disabled: disabled, + onClick: $cnSS2$radixuiprimitive.composeEventHandlers(props.onClick, handleSelect), + onPointerDown: event => { + var _props$onPointerDown; + (_props$onPointerDown = props.onPointerDown) === null || _props$onPointerDown === void 0 || _props$onPointerDown.call(props, event); + isPointerDownRef.current = true; + }, + onPointerUp: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerUp, event => { + var _event$currentTarget; + // Pointer down can move to a different menu item which should activate it on pointer up. + // We dispatch a click for selection to allow composition with click based triggers and to + // prevent Firefox from getting stuck in text selection mode when the menu closes. + if (!isPointerDownRef.current) (_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 || _event$currentTarget.click(); + }), + onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onKeyDown, event => { + const isTypingAhead = contentContext.searchRef.current !== ''; + if (disabled || isTypingAhead && event.key === ' ') return; + if ($213e4d2df823067d$var$SELECTION_KEYS.includes(event.key)) { + event.currentTarget.click(); + /** + * We prevent default browser behaviour for selection keys as they should trigger + * a selection only: + * - prevents space from scrolling the page. + * - if keydown causes focus to move, prevents keydown from firing on the new target. + */ + event.preventDefault(); + } + }) + })); +}); +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$2ce376c2cc3355c8, { + displayName: $213e4d2df823067d$var$ITEM_NAME +}); +/* ---------------------------------------------------------------------------------------------- */ +const $213e4d2df823067d$var$MenuItemImpl = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const { + __scopeMenu: __scopeMenu, + disabled = false, + textValue: textValue, + ...itemProps + } = props; + const contentContext = $213e4d2df823067d$var$useMenuContentContext($213e4d2df823067d$var$ITEM_NAME, __scopeMenu); + const rovingFocusGroupScope = $213e4d2df823067d$var$useRovingFocusGroupScope(__scopeMenu); + const ref = $cnSS2$react.useRef(null); + const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); + const [isFocused, setIsFocused] = $cnSS2$react.useState(false); // get the item's `.textContent` as default strategy for typeahead `textValue` + const [textContent, setTextContent] = $cnSS2$react.useState(''); + $cnSS2$react.useEffect(() => { + const menuItem = ref.current; + if (menuItem) { + var _menuItem$textContent; + setTextContent(((_menuItem$textContent = menuItem.textContent) !== null && _menuItem$textContent !== void 0 ? _menuItem$textContent : '').trim()); + } + }, [itemProps.children]); + return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$Collection.ItemSlot, { + scope: __scopeMenu, + disabled: disabled, + textValue: textValue !== null && textValue !== void 0 ? textValue : textContent + }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactrovingfocus.Item, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ + asChild: true + }, rovingFocusGroupScope, { + focusable: !disabled + }), /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactprimitive.Primitive.div, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ + role: "menuitem", + "data-highlighted": isFocused ? '' : undefined, + "aria-disabled": disabled || undefined, + "data-disabled": disabled ? '' : undefined + }, itemProps, { + ref: composedRefs, + onPointerMove: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerMove, $213e4d2df823067d$var$whenMouse(event => { + if (disabled) contentContext.onItemLeave(event);else { + contentContext.onItemEnter(event); + if (!event.defaultPrevented) { + const item = event.currentTarget; + item.focus(); + } + } + })), + onPointerLeave: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerLeave, $213e4d2df823067d$var$whenMouse(event => contentContext.onItemLeave(event))), + onFocus: $cnSS2$radixuiprimitive.composeEventHandlers(props.onFocus, () => setIsFocused(true)), + onBlur: $cnSS2$radixuiprimitive.composeEventHandlers(props.onBlur, () => setIsFocused(false)) + })))); +}); +/* ------------------------------------------------------------------------------------------------- + * MenuCheckboxItem + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$CHECKBOX_ITEM_NAME = 'MenuCheckboxItem'; +const $213e4d2df823067d$export$f6f243521332502d = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const { + checked = false, + onCheckedChange: onCheckedChange, + ...checkboxItemProps + } = props; + return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$ItemIndicatorProvider, { + scope: props.__scopeMenu, + checked: checked + }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$export$2ce376c2cc3355c8, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ + role: "menuitemcheckbox", + "aria-checked": $213e4d2df823067d$var$isIndeterminate(checked) ? 'mixed' : checked + }, checkboxItemProps, { + ref: forwardedRef, + "data-state": $213e4d2df823067d$var$getCheckedState(checked), + onSelect: $cnSS2$radixuiprimitive.composeEventHandlers(checkboxItemProps.onSelect, () => onCheckedChange === null || onCheckedChange === void 0 ? void 0 : onCheckedChange($213e4d2df823067d$var$isIndeterminate(checked) ? true : !checked), { + checkForDefaultPrevented: false + }) + }))); +}); +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$f6f243521332502d, { + displayName: $213e4d2df823067d$var$CHECKBOX_ITEM_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuRadioGroup + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$RADIO_GROUP_NAME = 'MenuRadioGroup'; +const [$213e4d2df823067d$var$RadioGroupProvider, $213e4d2df823067d$var$useRadioGroupContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$RADIO_GROUP_NAME, { + value: undefined, + onValueChange: () => {} +}); +const $213e4d2df823067d$export$ea2200c9eee416b3 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const { + value: value, + onValueChange: onValueChange, + ...groupProps + } = props; + const handleValueChange = $cnSS2$radixuireactusecallbackref.useCallbackRef(onValueChange); + return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$RadioGroupProvider, { + scope: props.__scopeMenu, + value: value, + onValueChange: handleValueChange + }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$export$22a631d1f72787bb, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, groupProps, { + ref: forwardedRef + }))); +}); +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$ea2200c9eee416b3, { + displayName: $213e4d2df823067d$var$RADIO_GROUP_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuRadioItem + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$RADIO_ITEM_NAME = 'MenuRadioItem'; +const $213e4d2df823067d$export$69bd225e9817f6d0 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const { + value: value, + ...radioItemProps + } = props; + const context = $213e4d2df823067d$var$useRadioGroupContext($213e4d2df823067d$var$RADIO_ITEM_NAME, props.__scopeMenu); + const checked = value === context.value; + return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$ItemIndicatorProvider, { + scope: props.__scopeMenu, + checked: checked + }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$export$2ce376c2cc3355c8, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ + role: "menuitemradio", + "aria-checked": checked + }, radioItemProps, { + ref: forwardedRef, + "data-state": $213e4d2df823067d$var$getCheckedState(checked), + onSelect: $cnSS2$radixuiprimitive.composeEventHandlers(radioItemProps.onSelect, () => { + var _context$onValueChang; + return (_context$onValueChang = context.onValueChange) === null || _context$onValueChang === void 0 ? void 0 : _context$onValueChang.call(context, value); + }, { + checkForDefaultPrevented: false + }) + }))); +}); +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$69bd225e9817f6d0, { + displayName: $213e4d2df823067d$var$RADIO_ITEM_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuItemIndicator + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$ITEM_INDICATOR_NAME = 'MenuItemIndicator'; +const [$213e4d2df823067d$var$ItemIndicatorProvider, $213e4d2df823067d$var$useItemIndicatorContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$ITEM_INDICATOR_NAME, { + checked: false +}); +const $213e4d2df823067d$export$a2593e23056970a3 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const { + __scopeMenu: __scopeMenu, + forceMount: forceMount, + ...itemIndicatorProps + } = props; + const indicatorContext = $213e4d2df823067d$var$useItemIndicatorContext($213e4d2df823067d$var$ITEM_INDICATOR_NAME, __scopeMenu); + return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpresence.Presence, { + present: forceMount || $213e4d2df823067d$var$isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true + }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactprimitive.Primitive.span, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, itemIndicatorProps, { + ref: forwardedRef, + "data-state": $213e4d2df823067d$var$getCheckedState(indicatorContext.checked) + }))); +}); +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$a2593e23056970a3, { + displayName: $213e4d2df823067d$var$ITEM_INDICATOR_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuSeparator + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$SEPARATOR_NAME = 'MenuSeparator'; +const $213e4d2df823067d$export$1cec7dcdd713e220 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const { + __scopeMenu: __scopeMenu, + ...separatorProps + } = props; + return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactprimitive.Primitive.div, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ + role: "separator", + "aria-orientation": "horizontal" + }, separatorProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$1cec7dcdd713e220, { + displayName: $213e4d2df823067d$var$SEPARATOR_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuArrow + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$ARROW_NAME = 'MenuArrow'; +const $213e4d2df823067d$export$bcdda4773debf5fa = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const { + __scopeMenu: __scopeMenu, + ...arrowProps + } = props; + const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu); + return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpopper.Arrow, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, popperScope, arrowProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$bcdda4773debf5fa, { + displayName: $213e4d2df823067d$var$ARROW_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuSub + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$SUB_NAME = 'MenuSub'; +const [$213e4d2df823067d$var$MenuSubProvider, $213e4d2df823067d$var$useMenuSubContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$SUB_NAME); +const $213e4d2df823067d$export$71bdb9d1e2909932 = props => { + const { + __scopeMenu: __scopeMenu, + children: children, + open = false, + onOpenChange: onOpenChange + } = props; + const parentMenuContext = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$SUB_NAME, __scopeMenu); + const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu); + const [trigger, setTrigger] = $cnSS2$react.useState(null); + const [content, setContent] = $cnSS2$react.useState(null); + const handleOpenChange = $cnSS2$radixuireactusecallbackref.useCallbackRef(onOpenChange); // Prevent the parent menu from reopening with open submenus. + $cnSS2$react.useEffect(() => { + if (parentMenuContext.open === false) handleOpenChange(false); + return () => handleOpenChange(false); + }, [parentMenuContext.open, handleOpenChange]); + return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpopper.Root, popperScope, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuProvider, { + scope: __scopeMenu, + open: open, + onOpenChange: handleOpenChange, + content: content, + onContentChange: setContent + }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuSubProvider, { + scope: __scopeMenu, + contentId: $cnSS2$radixuireactid.useId(), + triggerId: $cnSS2$radixuireactid.useId(), + trigger: trigger, + onTriggerChange: setTrigger + }, children))); +}; +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$71bdb9d1e2909932, { + displayName: $213e4d2df823067d$var$SUB_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuSubTrigger + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$SUB_TRIGGER_NAME = 'MenuSubTrigger'; +const $213e4d2df823067d$export$5fbbb3ba7297405f = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu); + const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu); + const subContext = $213e4d2df823067d$var$useMenuSubContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu); + const contentContext = $213e4d2df823067d$var$useMenuContentContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu); + const openTimerRef = $cnSS2$react.useRef(null); + const { + pointerGraceTimerRef: pointerGraceTimerRef, + onPointerGraceIntentChange: onPointerGraceIntentChange + } = contentContext; + const scope = { + __scopeMenu: props.__scopeMenu + }; + const clearOpenTimer = $cnSS2$react.useCallback(() => { + if (openTimerRef.current) window.clearTimeout(openTimerRef.current); + openTimerRef.current = null; + }, []); + $cnSS2$react.useEffect(() => clearOpenTimer, [clearOpenTimer]); + $cnSS2$react.useEffect(() => { + const pointerGraceTimer = pointerGraceTimerRef.current; + return () => { + window.clearTimeout(pointerGraceTimer); + onPointerGraceIntentChange(null); + }; + }, [pointerGraceTimerRef, onPointerGraceIntentChange]); + return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$export$9fa5ebd18bee4d43, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ + asChild: true + }, scope), /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuItemImpl, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ + id: subContext.triggerId, + "aria-haspopup": "menu", + "aria-expanded": context.open, + "aria-controls": subContext.contentId, + "data-state": $213e4d2df823067d$var$getOpenState(context.open) + }, props, { + ref: $cnSS2$radixuireactcomposerefs.composeRefs(forwardedRef, subContext.onTriggerChange) // This is redundant for mouse users but we cannot determine pointer type from + , + + onClick: event => { + var _props$onClick; + (_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, event); + if (props.disabled || event.defaultPrevented) return; + /** + * We manually focus because iOS Safari doesn't always focus on click (e.g. buttons) + * and we rely heavily on `onFocusOutside` for submenus to close when switching + * between separate submenus. + */ + event.currentTarget.focus(); + if (!context.open) context.onOpenChange(true); + }, + onPointerMove: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerMove, $213e4d2df823067d$var$whenMouse(event => { + contentContext.onItemEnter(event); + if (event.defaultPrevented) return; + if (!props.disabled && !context.open && !openTimerRef.current) { + contentContext.onPointerGraceIntentChange(null); + openTimerRef.current = window.setTimeout(() => { + context.onOpenChange(true); + clearOpenTimer(); + }, 100); + } + })), + onPointerLeave: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerLeave, $213e4d2df823067d$var$whenMouse(event => { + var _context$content; + clearOpenTimer(); + const contentRect = (_context$content = context.content) === null || _context$content === void 0 ? void 0 : _context$content.getBoundingClientRect(); + if (contentRect) { + var _context$content2; + // TODO: make sure to update this when we change positioning logic + const side = (_context$content2 = context.content) === null || _context$content2 === void 0 ? void 0 : _context$content2.dataset.side; + const rightSide = side === 'right'; + const bleed = rightSide ? -5 : 5; + const contentNearEdge = contentRect[rightSide ? 'left' : 'right']; + const contentFarEdge = contentRect[rightSide ? 'right' : 'left']; + contentContext.onPointerGraceIntentChange({ + area: [ + // consistently within polygon bounds + { + x: event.clientX + bleed, + y: event.clientY + }, { + x: contentNearEdge, + y: contentRect.top + }, { + x: contentFarEdge, + y: contentRect.top + }, { + x: contentFarEdge, + y: contentRect.bottom + }, { + x: contentNearEdge, + y: contentRect.bottom + }], + side: side + }); + window.clearTimeout(pointerGraceTimerRef.current); + pointerGraceTimerRef.current = window.setTimeout(() => contentContext.onPointerGraceIntentChange(null), 300); + } else { + contentContext.onTriggerLeave(event); + if (event.defaultPrevented) return; // There's 100ms where the user may leave an item before the submenu was opened. + contentContext.onPointerGraceIntentChange(null); + } + })), + onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onKeyDown, event => { + const isTypingAhead = contentContext.searchRef.current !== ''; + if (props.disabled || isTypingAhead && event.key === ' ') return; + if ($213e4d2df823067d$var$SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) { + var _context$content3; + context.onOpenChange(true); // The trigger may hold focus if opened via pointer interaction + // so we ensure content is given focus again when switching to keyboard. + (_context$content3 = context.content) === null || _context$content3 === void 0 || _context$content3.focus(); // prevent window from scrolling + event.preventDefault(); + } + }) + }))); +}); +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$5fbbb3ba7297405f, { + displayName: $213e4d2df823067d$var$SUB_TRIGGER_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * MenuSubContent + * -----------------------------------------------------------------------------------------------*/ +const $213e4d2df823067d$var$SUB_CONTENT_NAME = 'MenuSubContent'; +const $213e4d2df823067d$export$e7142ab31822bde6 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { + const portalContext = $213e4d2df823067d$var$usePortalContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); + const { + forceMount = portalContext.forceMount, + ...subContentProps + } = props; + const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); + const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); + const subContext = $213e4d2df823067d$var$useMenuSubContext($213e4d2df823067d$var$SUB_CONTENT_NAME, props.__scopeMenu); + const ref = $cnSS2$react.useRef(null); + const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); + return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$Collection.Provider, { + scope: props.__scopeMenu + }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpresence.Presence, { + present: forceMount || context.open + }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$Collection.Slot, { + scope: props.__scopeMenu + }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuContentImpl, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ + id: subContext.contentId, + "aria-labelledby": subContext.triggerId + }, subContentProps, { + ref: composedRefs, + align: "start", + side: rootContext.dir === 'rtl' ? 'left' : 'right', + disableOutsidePointerEvents: false, + disableOutsideScroll: false, + trapFocus: false, + onOpenAutoFocus: event => { + var _ref$current; + // when opening a submenu, focus content for keyboard users only + if (rootContext.isUsingKeyboardRef.current) (_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.focus(); + event.preventDefault(); + } // The menu might close because of focusing another menu item in the parent menu. We + , + + onCloseAutoFocus: event => event.preventDefault(), + onFocusOutside: $cnSS2$radixuiprimitive.composeEventHandlers(props.onFocusOutside, event => { + // We prevent closing when the trigger is focused to avoid triggering a re-open animation + // on pointer interaction. + if (event.target !== subContext.trigger) context.onOpenChange(false); + }), + onEscapeKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onEscapeKeyDown, event => { + rootContext.onClose(); // ensure pressing escape in submenu doesn't escape full screen mode + event.preventDefault(); + }), + onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onKeyDown, event => { + // Submenu key events bubble through portals. We only care about keys in this menu. + const isKeyDownInside = event.currentTarget.contains(event.target); + const isCloseKey = $213e4d2df823067d$var$SUB_CLOSE_KEYS[rootContext.dir].includes(event.key); + if (isKeyDownInside && isCloseKey) { + var _subContext$trigger; + context.onOpenChange(false); // We focus manually because we prevented it in `onCloseAutoFocus` + (_subContext$trigger = subContext.trigger) === null || _subContext$trigger === void 0 || _subContext$trigger.focus(); // prevent window from scrolling + event.preventDefault(); + } + }) + }))))); +}); +/*#__PURE__*/ +Object.assign($213e4d2df823067d$export$e7142ab31822bde6, { + displayName: $213e4d2df823067d$var$SUB_CONTENT_NAME +}); +/* -----------------------------------------------------------------------------------------------*/ +function $213e4d2df823067d$var$getOpenState(open) { + return open ? 'open' : 'closed'; +} +function $213e4d2df823067d$var$isIndeterminate(checked) { + return checked === 'indeterminate'; +} +function $213e4d2df823067d$var$getCheckedState(checked) { + return $213e4d2df823067d$var$isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked'; +} +function $213e4d2df823067d$var$focusFirst(candidates) { + const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement; + for (const candidate of candidates) { + // if focus is already where we want to go, we don't want to keep going through the candidates + if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return; + candidate.focus(); + if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return; + } +} +/** + * Wraps an array around itself at a given start index + * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']` + */ +function $213e4d2df823067d$var$wrapArray(array, startIndex) { + return array.map((_, index) => array[(startIndex + index) % array.length]); +} +/** + * This is the "meat" of the typeahead matching logic. It takes in all the values, + * the search and the current match, and returns the next match (or `undefined`). + * + * We normalize the search because if a user has repeatedly pressed a character, + * we want the exact same behavior as if we only had that one character + * (ie. cycle through options starting with that character) + * + * We also reorder the values by wrapping the array around the current match. + * This is so we always look forward from the current match, and picking the first + * match will always be the correct one. + * + * Finally, if the normalized search is exactly one character, we exclude the + * current match from the values because otherwise it would be the first to match always + * and focus would never move. This is as opposed to the regular case, where we + * don't want focus to move if the current match still matches. + */ +function $213e4d2df823067d$var$getNextMatch(values, search, currentMatch) { + const isRepeated = search.length > 1 && Array.from(search).every(char => char === search[0]); + const normalizedSearch = isRepeated ? search[0] : search; + const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1; + let wrappedValues = $213e4d2df823067d$var$wrapArray(values, Math.max(currentMatchIndex, 0)); + const excludeCurrentMatch = normalizedSearch.length === 1; + if (excludeCurrentMatch) wrappedValues = wrappedValues.filter(v => v !== currentMatch); + const nextMatch = wrappedValues.find(value => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())); + return nextMatch !== currentMatch ? nextMatch : undefined; +} +// Determine if a point is inside of a polygon. +// Based on https://github.com/substack/point-in-polygon +function $213e4d2df823067d$var$isPointInPolygon(point, polygon) { + const { + x: x, + y: y + } = point; + let inside = false; + for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) { + const xi = polygon[i].x; + const yi = polygon[i].y; + const xj = polygon[j].x; + const yj = polygon[j].y; // prettier-ignore + const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi; + if (intersect) inside = !inside; + } + return inside; +} +function $213e4d2df823067d$var$isPointerInGraceArea(event, area) { + if (!area) return false; + const cursorPos = { + x: event.clientX, + y: event.clientY + }; + return $213e4d2df823067d$var$isPointInPolygon(cursorPos, area); +} +function $213e4d2df823067d$var$whenMouse(handler) { + return event => event.pointerType === 'mouse' ? handler(event) : undefined; +} +const $213e4d2df823067d$export$be92b6f5f03c0fe9 = $213e4d2df823067d$export$d9b273488cd8ce6f; +const $213e4d2df823067d$export$b688253958b8dfe7 = $213e4d2df823067d$export$9fa5ebd18bee4d43; +const $213e4d2df823067d$export$602eac185826482c = $213e4d2df823067d$export$793392f970497feb; +const $213e4d2df823067d$export$7c6e2c02157bb7d2 = $213e4d2df823067d$export$479f0f2f71193efe; +const $213e4d2df823067d$export$eb2fcfdbd7ba97d4 = $213e4d2df823067d$export$22a631d1f72787bb; +const $213e4d2df823067d$export$b04be29aa201d4f5 = $213e4d2df823067d$export$dd37bec0e8a99143; +const $213e4d2df823067d$export$6d08773d2e66f8f2 = $213e4d2df823067d$export$2ce376c2cc3355c8; +const $213e4d2df823067d$export$16ce288f89fa631c = $213e4d2df823067d$export$f6f243521332502d; +const $213e4d2df823067d$export$a98f0dcb43a68a25 = $213e4d2df823067d$export$ea2200c9eee416b3; +const $213e4d2df823067d$export$371ab307eab489c0 = $213e4d2df823067d$export$69bd225e9817f6d0; +const $213e4d2df823067d$export$c3468e2714d175fa = $213e4d2df823067d$export$a2593e23056970a3; +const $213e4d2df823067d$export$1ff3c3f08ae963c0 = $213e4d2df823067d$export$1cec7dcdd713e220; +const $213e4d2df823067d$export$21b07c8f274aebd5 = $213e4d2df823067d$export$bcdda4773debf5fa; +const $213e4d2df823067d$export$d7a01e11500dfb6f = $213e4d2df823067d$export$71bdb9d1e2909932; +const $213e4d2df823067d$export$2ea8a7a591ac5eac = $213e4d2df823067d$export$5fbbb3ba7297405f; +const $213e4d2df823067d$export$6d4de93b380beddf = $213e4d2df823067d$export$e7142ab31822bde6; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-popper/dist/index.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-popper/dist/index.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $50Iv9$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); +var $50Iv9$react = __webpack_require__(/*! react */ "react"); +var $50Iv9$floatinguireactdom = __webpack_require__(/*! @floating-ui/react-dom */ "../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js"); +var $50Iv9$radixuireactarrow = __webpack_require__(/*! @radix-ui/react-arrow */ "../../../node_modules/@radix-ui/react-arrow/dist/index.js"); +var $50Iv9$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); +var $50Iv9$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); +var $50Iv9$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); +var $50Iv9$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); +var $50Iv9$radixuireactuselayouteffect = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js"); +var $50Iv9$radixuireactusesize = __webpack_require__(/*! @radix-ui/react-use-size */ "../../../node_modules/@radix-ui/react-use-size/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "createPopperScope", () => $34310caa050a8d63$export$722aac194ae923); +$parcel$export(module.exports, "Popper", () => $34310caa050a8d63$export$badac9ada3a0bdf9); +$parcel$export(module.exports, "PopperAnchor", () => $34310caa050a8d63$export$ecd4e1ccab6ed6d); +$parcel$export(module.exports, "PopperContent", () => $34310caa050a8d63$export$bc4ae5855d3c4fc); +$parcel$export(module.exports, "PopperArrow", () => $34310caa050a8d63$export$79d62cd4e10a3fd0); +$parcel$export(module.exports, "Root", () => $34310caa050a8d63$export$be92b6f5f03c0fe9); +$parcel$export(module.exports, "Anchor", () => $34310caa050a8d63$export$b688253958b8dfe7); +$parcel$export(module.exports, "Content", () => $34310caa050a8d63$export$7c6e2c02157bb7d2); +$parcel$export(module.exports, "Arrow", () => $34310caa050a8d63$export$21b07c8f274aebd5); +$parcel$export(module.exports, "SIDE_OPTIONS", () => $34310caa050a8d63$export$36f0086da09c4b9f); +$parcel$export(module.exports, "ALIGN_OPTIONS", () => $34310caa050a8d63$export$3671ffab7b302fc9); +const $34310caa050a8d63$export$36f0086da09c4b9f = ['top', 'right', 'bottom', 'left']; +const $34310caa050a8d63$export$3671ffab7b302fc9 = ['start', 'center', 'end']; +/* ------------------------------------------------------------------------------------------------- + * Popper + * -----------------------------------------------------------------------------------------------*/ +const $34310caa050a8d63$var$POPPER_NAME = 'Popper'; +const [$34310caa050a8d63$var$createPopperContext, $34310caa050a8d63$export$722aac194ae923] = $50Iv9$radixuireactcontext.createContextScope($34310caa050a8d63$var$POPPER_NAME); +const [$34310caa050a8d63$var$PopperProvider, $34310caa050a8d63$var$usePopperContext] = $34310caa050a8d63$var$createPopperContext($34310caa050a8d63$var$POPPER_NAME); +const $34310caa050a8d63$export$badac9ada3a0bdf9 = props => { + const { + __scopePopper: __scopePopper, + children: children + } = props; + const [anchor, setAnchor] = $50Iv9$react.useState(null); + return /*#__PURE__*/$50Iv9$react.createElement($34310caa050a8d63$var$PopperProvider, { + scope: __scopePopper, + anchor: anchor, + onAnchorChange: setAnchor + }, children); +}; +/*#__PURE__*/ +Object.assign($34310caa050a8d63$export$badac9ada3a0bdf9, { + displayName: $34310caa050a8d63$var$POPPER_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * PopperAnchor + * -----------------------------------------------------------------------------------------------*/ +const $34310caa050a8d63$var$ANCHOR_NAME = 'PopperAnchor'; +const $34310caa050a8d63$export$ecd4e1ccab6ed6d = /*#__PURE__*/$50Iv9$react.forwardRef((props, forwardedRef) => { + const { + __scopePopper: __scopePopper, + virtualRef: virtualRef, + ...anchorProps + } = props; + const context = $34310caa050a8d63$var$usePopperContext($34310caa050a8d63$var$ANCHOR_NAME, __scopePopper); + const ref = $50Iv9$react.useRef(null); + const composedRefs = $50Iv9$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); + $50Iv9$react.useEffect(() => { + // Consumer can anchor the popper to something that isn't + // a DOM node e.g. pointer position, so we override the + // `anchorRef` with their virtual ref in this case. + context.onAnchorChange((virtualRef === null || virtualRef === void 0 ? void 0 : virtualRef.current) || ref.current); + }); + return virtualRef ? null : /*#__PURE__*/$50Iv9$react.createElement($50Iv9$radixuireactprimitive.Primitive.div, $parcel$interopDefault($50Iv9$babelruntimehelpersextends)({}, anchorProps, { + ref: composedRefs + })); +}); +/*#__PURE__*/ +Object.assign($34310caa050a8d63$export$ecd4e1ccab6ed6d, { + displayName: $34310caa050a8d63$var$ANCHOR_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * PopperContent + * -----------------------------------------------------------------------------------------------*/ +const $34310caa050a8d63$var$CONTENT_NAME = 'PopperContent'; +const [$34310caa050a8d63$var$PopperContentProvider, $34310caa050a8d63$var$useContentContext] = $34310caa050a8d63$var$createPopperContext($34310caa050a8d63$var$CONTENT_NAME); +const $34310caa050a8d63$export$bc4ae5855d3c4fc = /*#__PURE__*/$50Iv9$react.forwardRef((props, forwardedRef) => { + var _arrowSize$width, _arrowSize$height, _middlewareData$arrow, _middlewareData$arrow2, _middlewareData$arrow3, _middlewareData$trans, _middlewareData$trans2, _middlewareData$hide; + const { + __scopePopper: __scopePopper, + side = 'bottom', + sideOffset = 0, + align = 'center', + alignOffset = 0, + arrowPadding = 0, + collisionBoundary = [], + collisionPadding: collisionPaddingProp = 0, + sticky = 'partial', + hideWhenDetached = false, + avoidCollisions = true, + onPlaced: onPlaced, + ...contentProps + } = props; + const context = $34310caa050a8d63$var$usePopperContext($34310caa050a8d63$var$CONTENT_NAME, __scopePopper); + const [content, setContent] = $50Iv9$react.useState(null); + const composedRefs = $50Iv9$radixuireactcomposerefs.useComposedRefs(forwardedRef, node => setContent(node)); + const [arrow, setArrow] = $50Iv9$react.useState(null); + const arrowSize = $50Iv9$radixuireactusesize.useSize(arrow); + const arrowWidth = (_arrowSize$width = arrowSize === null || arrowSize === void 0 ? void 0 : arrowSize.width) !== null && _arrowSize$width !== void 0 ? _arrowSize$width : 0; + const arrowHeight = (_arrowSize$height = arrowSize === null || arrowSize === void 0 ? void 0 : arrowSize.height) !== null && _arrowSize$height !== void 0 ? _arrowSize$height : 0; + const desiredPlacement = side + (align !== 'center' ? '-' + align : ''); + const collisionPadding = typeof collisionPaddingProp === 'number' ? collisionPaddingProp : { + top: 0, + right: 0, + bottom: 0, + left: 0, + ...collisionPaddingProp + }; + const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary]; + const hasExplicitBoundaries = boundary.length > 0; + const detectOverflowOptions = { + padding: collisionPadding, + boundary: boundary.filter($34310caa050a8d63$var$isNotNull), + // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries + altBoundary: hasExplicitBoundaries + }; + const { + refs: refs, + floatingStyles: floatingStyles, + placement: placement, + isPositioned: isPositioned, + middlewareData: middlewareData + } = $50Iv9$floatinguireactdom.useFloating({ + // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues + strategy: 'fixed', + placement: desiredPlacement, + whileElementsMounted: $50Iv9$floatinguireactdom.autoUpdate, + elements: { + reference: context.anchor + }, + middleware: [$50Iv9$floatinguireactdom.offset({ + mainAxis: sideOffset + arrowHeight, + alignmentAxis: alignOffset + }), avoidCollisions && $50Iv9$floatinguireactdom.shift({ + mainAxis: true, + crossAxis: false, + limiter: sticky === 'partial' ? $50Iv9$floatinguireactdom.limitShift() : undefined, + ...detectOverflowOptions + }), avoidCollisions && $50Iv9$floatinguireactdom.flip({ + ...detectOverflowOptions + }), $50Iv9$floatinguireactdom.size({ + ...detectOverflowOptions, + apply: _ref => { + let { + elements: elements, + rects: rects, + availableWidth: availableWidth, + availableHeight: availableHeight + } = _ref; + const { + width: anchorWidth, + height: anchorHeight + } = rects.reference; + const contentStyle = elements.floating.style; + contentStyle.setProperty('--radix-popper-available-width', `${availableWidth}px`); + contentStyle.setProperty('--radix-popper-available-height', `${availableHeight}px`); + contentStyle.setProperty('--radix-popper-anchor-width', `${anchorWidth}px`); + contentStyle.setProperty('--radix-popper-anchor-height', `${anchorHeight}px`); + } + }), arrow && $50Iv9$floatinguireactdom.arrow({ + element: arrow, + padding: arrowPadding + }), $34310caa050a8d63$var$transformOrigin({ + arrowWidth: arrowWidth, + arrowHeight: arrowHeight + }), hideWhenDetached && $50Iv9$floatinguireactdom.hide({ + strategy: 'referenceHidden' + })] + }); + const [placedSide, placedAlign] = $34310caa050a8d63$var$getSideAndAlignFromPlacement(placement); + const handlePlaced = $50Iv9$radixuireactusecallbackref.useCallbackRef(onPlaced); + $50Iv9$radixuireactuselayouteffect.useLayoutEffect(() => { + if (isPositioned) handlePlaced === null || handlePlaced === void 0 || handlePlaced(); + }, [isPositioned, handlePlaced]); + const arrowX = (_middlewareData$arrow = middlewareData.arrow) === null || _middlewareData$arrow === void 0 ? void 0 : _middlewareData$arrow.x; + const arrowY = (_middlewareData$arrow2 = middlewareData.arrow) === null || _middlewareData$arrow2 === void 0 ? void 0 : _middlewareData$arrow2.y; + const cannotCenterArrow = ((_middlewareData$arrow3 = middlewareData.arrow) === null || _middlewareData$arrow3 === void 0 ? void 0 : _middlewareData$arrow3.centerOffset) !== 0; + const [contentZIndex, setContentZIndex] = $50Iv9$react.useState(); + $50Iv9$radixuireactuselayouteffect.useLayoutEffect(() => { + if (content) setContentZIndex(window.getComputedStyle(content).zIndex); + }, [content]); + return /*#__PURE__*/$50Iv9$react.createElement("div", { + ref: refs.setFloating, + "data-radix-popper-content-wrapper": "", + style: { + ...floatingStyles, + transform: isPositioned ? floatingStyles.transform : 'translate(0, -200%)', + // keep off the page when measuring + minWidth: 'max-content', + zIndex: contentZIndex, + ['--radix-popper-transform-origin']: [(_middlewareData$trans = middlewareData.transformOrigin) === null || _middlewareData$trans === void 0 ? void 0 : _middlewareData$trans.x, (_middlewareData$trans2 = middlewareData.transformOrigin) === null || _middlewareData$trans2 === void 0 ? void 0 : _middlewareData$trans2.y].join(' ') + } // Floating UI interally calculates logical alignment based the `dir` attribute on + , + + dir: props.dir + }, /*#__PURE__*/$50Iv9$react.createElement($34310caa050a8d63$var$PopperContentProvider, { + scope: __scopePopper, + placedSide: placedSide, + onArrowChange: setArrow, + arrowX: arrowX, + arrowY: arrowY, + shouldHideArrow: cannotCenterArrow + }, /*#__PURE__*/$50Iv9$react.createElement($50Iv9$radixuireactprimitive.Primitive.div, $parcel$interopDefault($50Iv9$babelruntimehelpersextends)({ + "data-side": placedSide, + "data-align": placedAlign + }, contentProps, { + ref: composedRefs, + style: { + ...contentProps.style, + // if the PopperContent hasn't been placed yet (not all measurements done) + // we prevent animations so that users's animation don't kick in too early referring wrong sides + animation: !isPositioned ? 'none' : undefined, + // hide the content if using the hide middleware and should be hidden + opacity: (_middlewareData$hide = middlewareData.hide) !== null && _middlewareData$hide !== void 0 && _middlewareData$hide.referenceHidden ? 0 : undefined + } + })))); +}); +/*#__PURE__*/ +Object.assign($34310caa050a8d63$export$bc4ae5855d3c4fc, { + displayName: $34310caa050a8d63$var$CONTENT_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * PopperArrow + * -----------------------------------------------------------------------------------------------*/ +const $34310caa050a8d63$var$ARROW_NAME = 'PopperArrow'; +const $34310caa050a8d63$var$OPPOSITE_SIDE = { + top: 'bottom', + right: 'left', + bottom: 'top', + left: 'right' +}; +const $34310caa050a8d63$export$79d62cd4e10a3fd0 = /*#__PURE__*/$50Iv9$react.forwardRef(function $34310caa050a8d63$export$79d62cd4e10a3fd0(props, forwardedRef) { + const { + __scopePopper: __scopePopper, + ...arrowProps + } = props; + const contentContext = $34310caa050a8d63$var$useContentContext($34310caa050a8d63$var$ARROW_NAME, __scopePopper); + const baseSide = $34310caa050a8d63$var$OPPOSITE_SIDE[contentContext.placedSide]; + return /*#__PURE__*/ (// we have to use an extra wrapper because `ResizeObserver` (used by `useSize`) + // doesn't report size as we'd expect on SVG elements. + // it reports their bounding box which is effectively the largest path inside the SVG. + $50Iv9$react.createElement("span", { + ref: contentContext.onArrowChange, + style: { + position: 'absolute', + left: contentContext.arrowX, + top: contentContext.arrowY, + [baseSide]: 0, + transformOrigin: { + top: '', + right: '0 0', + bottom: 'center 0', + left: '100% 0' + }[contentContext.placedSide], + transform: { + top: 'translateY(100%)', + right: 'translateY(50%) rotate(90deg) translateX(-50%)', + bottom: `rotate(180deg)`, + left: 'translateY(50%) rotate(-90deg) translateX(50%)' + }[contentContext.placedSide], + visibility: contentContext.shouldHideArrow ? 'hidden' : undefined + } + }, /*#__PURE__*/$50Iv9$react.createElement($50Iv9$radixuireactarrow.Root, $parcel$interopDefault($50Iv9$babelruntimehelpersextends)({}, arrowProps, { + ref: forwardedRef, + style: { + ...arrowProps.style, + // ensures the element can be measured correctly (mostly for if SVG) + display: 'block' + } + }))) + ); +}); +/*#__PURE__*/ +Object.assign($34310caa050a8d63$export$79d62cd4e10a3fd0, { + displayName: $34310caa050a8d63$var$ARROW_NAME +}); +/* -----------------------------------------------------------------------------------------------*/ +function $34310caa050a8d63$var$isNotNull(value) { + return value !== null; +} +const $34310caa050a8d63$var$transformOrigin = options => ({ + name: 'transformOrigin', + options: options, + fn(data) { + var _middlewareData$arrow4, _middlewareData$arrow5, _middlewareData$arrow6, _middlewareData$arrow7, _middlewareData$arrow8; + const { + placement: placement, + rects: rects, + middlewareData: middlewareData + } = data; + const cannotCenterArrow = ((_middlewareData$arrow4 = middlewareData.arrow) === null || _middlewareData$arrow4 === void 0 ? void 0 : _middlewareData$arrow4.centerOffset) !== 0; + const isArrowHidden = cannotCenterArrow; + const arrowWidth = isArrowHidden ? 0 : options.arrowWidth; + const arrowHeight = isArrowHidden ? 0 : options.arrowHeight; + const [placedSide, placedAlign] = $34310caa050a8d63$var$getSideAndAlignFromPlacement(placement); + const noArrowAlign = { + start: '0%', + center: '50%', + end: '100%' + }[placedAlign]; + const arrowXCenter = ((_middlewareData$arrow5 = (_middlewareData$arrow6 = middlewareData.arrow) === null || _middlewareData$arrow6 === void 0 ? void 0 : _middlewareData$arrow6.x) !== null && _middlewareData$arrow5 !== void 0 ? _middlewareData$arrow5 : 0) + arrowWidth / 2; + const arrowYCenter = ((_middlewareData$arrow7 = (_middlewareData$arrow8 = middlewareData.arrow) === null || _middlewareData$arrow8 === void 0 ? void 0 : _middlewareData$arrow8.y) !== null && _middlewareData$arrow7 !== void 0 ? _middlewareData$arrow7 : 0) + arrowHeight / 2; + let x = ''; + let y = ''; + if (placedSide === 'bottom') { + x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`; + y = `${-arrowHeight}px`; + } else if (placedSide === 'top') { + x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`; + y = `${rects.floating.height + arrowHeight}px`; + } else if (placedSide === 'right') { + x = `${-arrowHeight}px`; + y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`; + } else if (placedSide === 'left') { + x = `${rects.floating.width + arrowHeight}px`; + y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`; + } + return { + data: { + x: x, + y: y + } + }; + } +}); +function $34310caa050a8d63$var$getSideAndAlignFromPlacement(placement) { + const [side, align = 'center'] = placement.split('-'); + return [side, align]; +} +const $34310caa050a8d63$export$be92b6f5f03c0fe9 = $34310caa050a8d63$export$badac9ada3a0bdf9; +const $34310caa050a8d63$export$b688253958b8dfe7 = $34310caa050a8d63$export$ecd4e1ccab6ed6d; +const $34310caa050a8d63$export$7c6e2c02157bb7d2 = $34310caa050a8d63$export$bc4ae5855d3c4fc; +const $34310caa050a8d63$export$21b07c8f274aebd5 = $34310caa050a8d63$export$79d62cd4e10a3fd0; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-portal/dist/index.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-portal/dist/index.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $amzHf$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); +var $amzHf$react = __webpack_require__(/*! react */ "react"); +var $amzHf$reactdom = __webpack_require__(/*! react-dom */ "react-dom"); +var $amzHf$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "Portal", () => $913a70b877676c16$export$602eac185826482c); +$parcel$export(module.exports, "Root", () => $913a70b877676c16$export$be92b6f5f03c0fe9); + +/* ------------------------------------------------------------------------------------------------- + * Portal + * -----------------------------------------------------------------------------------------------*/ +const $913a70b877676c16$var$PORTAL_NAME = 'Portal'; +const $913a70b877676c16$export$602eac185826482c = /*#__PURE__*/$amzHf$react.forwardRef((props, forwardedRef) => { + var _globalThis$document; + const { + container = globalThis === null || globalThis === void 0 ? void 0 : (_globalThis$document = globalThis.document) === null || _globalThis$document === void 0 ? void 0 : _globalThis$document.body, + ...portalProps + } = props; + return container ? /*#__PURE__*/$parcel$interopDefault($amzHf$reactdom).createPortal( /*#__PURE__*/$amzHf$react.createElement($amzHf$radixuireactprimitive.Primitive.div, $parcel$interopDefault($amzHf$babelruntimehelpersextends)({}, portalProps, { + ref: forwardedRef + })), container) : null; +}); +/*#__PURE__*/ +Object.assign($913a70b877676c16$export$602eac185826482c, { + displayName: $913a70b877676c16$var$PORTAL_NAME +}); +/* -----------------------------------------------------------------------------------------------*/ +const $913a70b877676c16$export$be92b6f5f03c0fe9 = $913a70b877676c16$export$602eac185826482c; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-presence/dist/index.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-presence/dist/index.js ***! + \********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $fnLeV$react = __webpack_require__(/*! react */ "react"); +var $fnLeV$reactdom = __webpack_require__(/*! react-dom */ "react-dom"); +var $fnLeV$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); +var $fnLeV$radixuireactuselayouteffect = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +$parcel$export(module.exports, "Presence", () => $a2fa0214bb2735a1$export$99c2b779aa4e8b8b); +function $8f63844556d0d3cd$export$3e6543de14f8614f(initialState, machine) { + return $fnLeV$react.useReducer((state, event) => { + const nextState = machine[state][event]; + return nextState !== null && nextState !== void 0 ? nextState : state; + }, initialState); +} +const $a2fa0214bb2735a1$export$99c2b779aa4e8b8b = props => { + const { + present: present, + children: children + } = props; + const presence = $a2fa0214bb2735a1$var$usePresence(present); + const child = typeof children === 'function' ? children({ + present: presence.isPresent + }) : $fnLeV$react.Children.only(children); + const ref = $fnLeV$radixuireactcomposerefs.useComposedRefs(presence.ref, child.ref); + const forceMount = typeof children === 'function'; + return forceMount || presence.isPresent ? /*#__PURE__*/$fnLeV$react.cloneElement(child, { + ref: ref + }) : null; +}; +$a2fa0214bb2735a1$export$99c2b779aa4e8b8b.displayName = 'Presence'; +/* ------------------------------------------------------------------------------------------------- + * usePresence + * -----------------------------------------------------------------------------------------------*/ +function $a2fa0214bb2735a1$var$usePresence(present) { + const [node1, setNode] = $fnLeV$react.useState(); + const stylesRef = $fnLeV$react.useRef({}); + const prevPresentRef = $fnLeV$react.useRef(present); + const prevAnimationNameRef = $fnLeV$react.useRef('none'); + const initialState = present ? 'mounted' : 'unmounted'; + const [state, send] = $8f63844556d0d3cd$export$3e6543de14f8614f(initialState, { + mounted: { + UNMOUNT: 'unmounted', + ANIMATION_OUT: 'unmountSuspended' + }, + unmountSuspended: { + MOUNT: 'mounted', + ANIMATION_END: 'unmounted' + }, + unmounted: { + MOUNT: 'mounted' + } + }); + $fnLeV$react.useEffect(() => { + const currentAnimationName = $a2fa0214bb2735a1$var$getAnimationName(stylesRef.current); + prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none'; + }, [state]); + $fnLeV$radixuireactuselayouteffect.useLayoutEffect(() => { + const styles = stylesRef.current; + const wasPresent = prevPresentRef.current; + const hasPresentChanged = wasPresent !== present; + if (hasPresentChanged) { + const prevAnimationName = prevAnimationNameRef.current; + const currentAnimationName = $a2fa0214bb2735a1$var$getAnimationName(styles); + if (present) send('MOUNT');else if (currentAnimationName === 'none' || (styles === null || styles === void 0 ? void 0 : styles.display) === 'none') + // If there is no exit animation or the element is hidden, animations won't run + // so we unmount instantly + send('UNMOUNT');else { + /** + * When `present` changes to `false`, we check changes to animation-name to + * determine whether an animation has started. We chose this approach (reading + * computed styles) because there is no `animationrun` event and `animationstart` + * fires after `animation-delay` has expired which would be too late. + */ + const isAnimating = prevAnimationName !== currentAnimationName; + if (wasPresent && isAnimating) send('ANIMATION_OUT');else send('UNMOUNT'); + } + prevPresentRef.current = present; + } + }, [present, send]); + $fnLeV$radixuireactuselayouteffect.useLayoutEffect(() => { + if (node1) { + /** + * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel` + * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we + * make sure we only trigger ANIMATION_END for the currently active animation. + */ + const handleAnimationEnd = event => { + const currentAnimationName = $a2fa0214bb2735a1$var$getAnimationName(stylesRef.current); + const isCurrentAnimation = currentAnimationName.includes(event.animationName); + if (event.target === node1 && isCurrentAnimation) + // With React 18 concurrency this update is applied + // a frame after the animation ends, creating a flash of visible content. + // By manually flushing we ensure they sync within a frame, removing the flash. + $fnLeV$reactdom.flushSync(() => send('ANIMATION_END')); + }; + const handleAnimationStart = event => { + if (event.target === node1) + // if animation occurred, store its name as the previous animation. + prevAnimationNameRef.current = $a2fa0214bb2735a1$var$getAnimationName(stylesRef.current); + }; + node1.addEventListener('animationstart', handleAnimationStart); + node1.addEventListener('animationcancel', handleAnimationEnd); + node1.addEventListener('animationend', handleAnimationEnd); + return () => { + node1.removeEventListener('animationstart', handleAnimationStart); + node1.removeEventListener('animationcancel', handleAnimationEnd); + node1.removeEventListener('animationend', handleAnimationEnd); + }; + } else + // Transition to the unmounted state if the node is removed prematurely. + // We avoid doing so during cleanup as the node may change but still exist. + send('ANIMATION_END'); + }, [node1, send]); + return { + isPresent: ['mounted', 'unmountSuspended'].includes(state), + ref: $fnLeV$react.useCallback(node => { + if (node) stylesRef.current = getComputedStyle(node); + setNode(node); + }, []) + }; +} +/* -----------------------------------------------------------------------------------------------*/ +function $a2fa0214bb2735a1$var$getAnimationName(styles) { + return (styles === null || styles === void 0 ? void 0 : styles.animationName) || 'none'; +} + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-primitive/dist/index.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-primitive/dist/index.js ***! + \*********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $iMixA$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); +var $iMixA$react = __webpack_require__(/*! react */ "react"); +var $iMixA$reactdom = __webpack_require__(/*! react-dom */ "react-dom"); +var $iMixA$radixuireactslot = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "Primitive", () => $c3def6332c2749a6$export$250ffa63cdc0d034); +$parcel$export(module.exports, "Root", () => $c3def6332c2749a6$export$be92b6f5f03c0fe9); +$parcel$export(module.exports, "dispatchDiscreteCustomEvent", () => $c3def6332c2749a6$export$6d1a0317bde7de7f); +const $c3def6332c2749a6$var$NODES = ['a', 'button', 'div', 'form', 'h2', 'h3', 'img', 'input', 'label', 'li', 'nav', 'ol', 'p', 'span', 'svg', 'ul']; // Temporary while we await merge of this fix: +// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396 +// prettier-ignore +/* ------------------------------------------------------------------------------------------------- + * Primitive + * -----------------------------------------------------------------------------------------------*/ +const $c3def6332c2749a6$export$250ffa63cdc0d034 = $c3def6332c2749a6$var$NODES.reduce((primitive, node) => { + const Node = /*#__PURE__*/$iMixA$react.forwardRef((props, forwardedRef) => { + const { + asChild: asChild, + ...primitiveProps + } = props; + const Comp = asChild ? $iMixA$radixuireactslot.Slot : node; + $iMixA$react.useEffect(() => { + window[Symbol.for('radix-ui')] = true; + }, []); + return /*#__PURE__*/$iMixA$react.createElement(Comp, $parcel$interopDefault($iMixA$babelruntimehelpersextends)({}, primitiveProps, { + ref: forwardedRef + })); + }); + Node.displayName = `Primitive.${node}`; + return { + ...primitive, + [node]: Node + }; +}, {}); +/* ------------------------------------------------------------------------------------------------- + * Utils + * -----------------------------------------------------------------------------------------------*/ /** + * Flush custom event dispatch + * https://github.com/radix-ui/primitives/pull/1378 + * + * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types. + * + * Internally, React prioritises events in the following order: + * - discrete + * - continuous + * - default + * + * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350 + * + * `discrete` is an important distinction as updates within these events are applied immediately. + * React however, is not able to infer the priority of custom event types due to how they are detected internally. + * Because of this, it's possible for updates from custom events to be unexpectedly batched when + * dispatched by another `discrete` event. + * + * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch. + * This utility should be used when dispatching a custom event from within another `discrete` event, this utility + * is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event. + * For example: + * + * dispatching a known click 👎 + * target.dispatchEvent(new Event(‘click’)) + * + * dispatching a custom type within a non-discrete event 👎 + * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))} + * + * dispatching a custom type within a `discrete` event 👍 + * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))} + * + * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use + * this utility with them. This is because it's possible for those handlers to be called implicitly during render + * e.g. when focus is within a component as it is unmounted, or when managing focus on mount. + */ +function $c3def6332c2749a6$export$6d1a0317bde7de7f(target, event) { + if (target) $iMixA$reactdom.flushSync(() => target.dispatchEvent(event)); +} +/* -----------------------------------------------------------------------------------------------*/ +const $c3def6332c2749a6$export$be92b6f5f03c0fe9 = $c3def6332c2749a6$export$250ffa63cdc0d034; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-roving-focus/dist/index.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-roving-focus/dist/index.js ***! + \************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $9QJ9Y$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); +var $9QJ9Y$react = __webpack_require__(/*! react */ "react"); +var $9QJ9Y$radixuiprimitive = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.js"); +var $9QJ9Y$radixuireactcollection = __webpack_require__(/*! @radix-ui/react-collection */ "../../../node_modules/@radix-ui/react-collection/dist/index.js"); +var $9QJ9Y$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); +var $9QJ9Y$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); +var $9QJ9Y$radixuireactid = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.js"); +var $9QJ9Y$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); +var $9QJ9Y$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); +var $9QJ9Y$radixuireactusecontrollablestate = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js"); +var $9QJ9Y$radixuireactdirection = __webpack_require__(/*! @radix-ui/react-direction */ "../../../node_modules/@radix-ui/react-direction/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "createRovingFocusGroupScope", () => $0063afae63b3fa70$export$c7109489551a4f4); +$parcel$export(module.exports, "RovingFocusGroup", () => $0063afae63b3fa70$export$8699f7c8af148338); +$parcel$export(module.exports, "RovingFocusGroupItem", () => $0063afae63b3fa70$export$ab9df7c53fe8454); +$parcel$export(module.exports, "Root", () => $0063afae63b3fa70$export$be92b6f5f03c0fe9); +$parcel$export(module.exports, "Item", () => $0063afae63b3fa70$export$6d08773d2e66f8f2); +const $0063afae63b3fa70$var$ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus'; +const $0063afae63b3fa70$var$EVENT_OPTIONS = { + bubbles: false, + cancelable: true +}; +/* ------------------------------------------------------------------------------------------------- + * RovingFocusGroup + * -----------------------------------------------------------------------------------------------*/ +const $0063afae63b3fa70$var$GROUP_NAME = 'RovingFocusGroup'; +const [$0063afae63b3fa70$var$Collection, $0063afae63b3fa70$var$useCollection, $0063afae63b3fa70$var$createCollectionScope] = $9QJ9Y$radixuireactcollection.createCollection($0063afae63b3fa70$var$GROUP_NAME); +const [$0063afae63b3fa70$var$createRovingFocusGroupContext, $0063afae63b3fa70$export$c7109489551a4f4] = $9QJ9Y$radixuireactcontext.createContextScope($0063afae63b3fa70$var$GROUP_NAME, [$0063afae63b3fa70$var$createCollectionScope]); +const [$0063afae63b3fa70$var$RovingFocusProvider, $0063afae63b3fa70$var$useRovingFocusContext] = $0063afae63b3fa70$var$createRovingFocusGroupContext($0063afae63b3fa70$var$GROUP_NAME); +const $0063afae63b3fa70$export$8699f7c8af148338 = /*#__PURE__*/$9QJ9Y$react.forwardRef((props, forwardedRef) => { + return /*#__PURE__*/$9QJ9Y$react.createElement($0063afae63b3fa70$var$Collection.Provider, { + scope: props.__scopeRovingFocusGroup + }, /*#__PURE__*/$9QJ9Y$react.createElement($0063afae63b3fa70$var$Collection.Slot, { + scope: props.__scopeRovingFocusGroup + }, /*#__PURE__*/$9QJ9Y$react.createElement($0063afae63b3fa70$var$RovingFocusGroupImpl, $parcel$interopDefault($9QJ9Y$babelruntimehelpersextends)({}, props, { + ref: forwardedRef + })))); +}); +/*#__PURE__*/ +Object.assign($0063afae63b3fa70$export$8699f7c8af148338, { + displayName: $0063afae63b3fa70$var$GROUP_NAME +}); +/* -----------------------------------------------------------------------------------------------*/ +const $0063afae63b3fa70$var$RovingFocusGroupImpl = /*#__PURE__*/$9QJ9Y$react.forwardRef((props, forwardedRef) => { + const { + __scopeRovingFocusGroup: __scopeRovingFocusGroup, + orientation: orientation, + loop = false, + dir: dir, + currentTabStopId: currentTabStopIdProp, + defaultCurrentTabStopId: defaultCurrentTabStopId, + onCurrentTabStopIdChange: onCurrentTabStopIdChange, + onEntryFocus: onEntryFocus, + ...groupProps + } = props; + const ref = $9QJ9Y$react.useRef(null); + const composedRefs = $9QJ9Y$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); + const direction = $9QJ9Y$radixuireactdirection.useDirection(dir); + const [currentTabStopId = null, setCurrentTabStopId] = $9QJ9Y$radixuireactusecontrollablestate.useControllableState({ + prop: currentTabStopIdProp, + defaultProp: defaultCurrentTabStopId, + onChange: onCurrentTabStopIdChange + }); + const [isTabbingBackOut, setIsTabbingBackOut] = $9QJ9Y$react.useState(false); + const handleEntryFocus = $9QJ9Y$radixuireactusecallbackref.useCallbackRef(onEntryFocus); + const getItems = $0063afae63b3fa70$var$useCollection(__scopeRovingFocusGroup); + const isClickFocusRef = $9QJ9Y$react.useRef(false); + const [focusableItemsCount, setFocusableItemsCount] = $9QJ9Y$react.useState(0); + $9QJ9Y$react.useEffect(() => { + const node = ref.current; + if (node) { + node.addEventListener($0063afae63b3fa70$var$ENTRY_FOCUS, handleEntryFocus); + return () => node.removeEventListener($0063afae63b3fa70$var$ENTRY_FOCUS, handleEntryFocus); + } + }, [handleEntryFocus]); + return /*#__PURE__*/$9QJ9Y$react.createElement($0063afae63b3fa70$var$RovingFocusProvider, { + scope: __scopeRovingFocusGroup, + orientation: orientation, + dir: direction, + loop: loop, + currentTabStopId: currentTabStopId, + onItemFocus: $9QJ9Y$react.useCallback(tabStopId => setCurrentTabStopId(tabStopId), [setCurrentTabStopId]), + onItemShiftTab: $9QJ9Y$react.useCallback(() => setIsTabbingBackOut(true), []), + onFocusableItemAdd: $9QJ9Y$react.useCallback(() => setFocusableItemsCount(prevCount => prevCount + 1), []), + onFocusableItemRemove: $9QJ9Y$react.useCallback(() => setFocusableItemsCount(prevCount => prevCount - 1), []) + }, /*#__PURE__*/$9QJ9Y$react.createElement($9QJ9Y$radixuireactprimitive.Primitive.div, $parcel$interopDefault($9QJ9Y$babelruntimehelpersextends)({ + tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0, + "data-orientation": orientation + }, groupProps, { + ref: composedRefs, + style: { + outline: 'none', + ...props.style + }, + onMouseDown: $9QJ9Y$radixuiprimitive.composeEventHandlers(props.onMouseDown, () => { + isClickFocusRef.current = true; + }), + onFocus: $9QJ9Y$radixuiprimitive.composeEventHandlers(props.onFocus, event => { + // We normally wouldn't need this check, because we already check + // that the focus is on the current target and not bubbling to it. + // We do this because Safari doesn't focus buttons when clicked, and + // instead, the wrapper will get focused and not through a bubbling event. + const isKeyboardFocus = !isClickFocusRef.current; + if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) { + const entryFocusEvent = new CustomEvent($0063afae63b3fa70$var$ENTRY_FOCUS, $0063afae63b3fa70$var$EVENT_OPTIONS); + event.currentTarget.dispatchEvent(entryFocusEvent); + if (!entryFocusEvent.defaultPrevented) { + const items = getItems().filter(item => item.focusable); + const activeItem = items.find(item => item.active); + const currentItem = items.find(item => item.id === currentTabStopId); + const candidateItems = [activeItem, currentItem, ...items].filter(Boolean); + const candidateNodes = candidateItems.map(item => item.ref.current); + $0063afae63b3fa70$var$focusFirst(candidateNodes); + } + } + isClickFocusRef.current = false; + }), + onBlur: $9QJ9Y$radixuiprimitive.composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false)) + }))); +}); +/* ------------------------------------------------------------------------------------------------- + * RovingFocusGroupItem + * -----------------------------------------------------------------------------------------------*/ +const $0063afae63b3fa70$var$ITEM_NAME = 'RovingFocusGroupItem'; +const $0063afae63b3fa70$export$ab9df7c53fe8454 = /*#__PURE__*/$9QJ9Y$react.forwardRef((props, forwardedRef) => { + const { + __scopeRovingFocusGroup: __scopeRovingFocusGroup, + focusable = true, + active = false, + tabStopId: tabStopId, + ...itemProps + } = props; + const autoId = $9QJ9Y$radixuireactid.useId(); + const id = tabStopId || autoId; + const context = $0063afae63b3fa70$var$useRovingFocusContext($0063afae63b3fa70$var$ITEM_NAME, __scopeRovingFocusGroup); + const isCurrentTabStop = context.currentTabStopId === id; + const getItems = $0063afae63b3fa70$var$useCollection(__scopeRovingFocusGroup); + const { + onFocusableItemAdd: onFocusableItemAdd, + onFocusableItemRemove: onFocusableItemRemove + } = context; + $9QJ9Y$react.useEffect(() => { + if (focusable) { + onFocusableItemAdd(); + return () => onFocusableItemRemove(); + } + }, [focusable, onFocusableItemAdd, onFocusableItemRemove]); + return /*#__PURE__*/$9QJ9Y$react.createElement($0063afae63b3fa70$var$Collection.ItemSlot, { + scope: __scopeRovingFocusGroup, + id: id, + focusable: focusable, + active: active + }, /*#__PURE__*/$9QJ9Y$react.createElement($9QJ9Y$radixuireactprimitive.Primitive.span, $parcel$interopDefault($9QJ9Y$babelruntimehelpersextends)({ + tabIndex: isCurrentTabStop ? 0 : -1, + "data-orientation": context.orientation + }, itemProps, { + ref: forwardedRef, + onMouseDown: $9QJ9Y$radixuiprimitive.composeEventHandlers(props.onMouseDown, event => { + // We prevent focusing non-focusable items on `mousedown`. + // Even though the item has tabIndex={-1}, that only means take it out of the tab order. + if (!focusable) event.preventDefault(); // Safari doesn't focus a button when clicked so we run our logic on mousedown also + else context.onItemFocus(id); + }), + onFocus: $9QJ9Y$radixuiprimitive.composeEventHandlers(props.onFocus, () => context.onItemFocus(id)), + onKeyDown: $9QJ9Y$radixuiprimitive.composeEventHandlers(props.onKeyDown, event => { + if (event.key === 'Tab' && event.shiftKey) { + context.onItemShiftTab(); + return; + } + if (event.target !== event.currentTarget) return; + const focusIntent = $0063afae63b3fa70$var$getFocusIntent(event, context.orientation, context.dir); + if (focusIntent !== undefined) { + event.preventDefault(); + const items = getItems().filter(item => item.focusable); + let candidateNodes = items.map(item => item.ref.current); + if (focusIntent === 'last') candidateNodes.reverse();else if (focusIntent === 'prev' || focusIntent === 'next') { + if (focusIntent === 'prev') candidateNodes.reverse(); + const currentIndex = candidateNodes.indexOf(event.currentTarget); + candidateNodes = context.loop ? $0063afae63b3fa70$var$wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1); + } + /** + * Imperative focus during keydown is risky so we prevent React's batching updates + * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332 + */ + setTimeout(() => $0063afae63b3fa70$var$focusFirst(candidateNodes)); + } + }) + }))); +}); +/*#__PURE__*/ +Object.assign($0063afae63b3fa70$export$ab9df7c53fe8454, { + displayName: $0063afae63b3fa70$var$ITEM_NAME +}); +/* -----------------------------------------------------------------------------------------------*/ // prettier-ignore +const $0063afae63b3fa70$var$MAP_KEY_TO_FOCUS_INTENT = { + ArrowLeft: 'prev', + ArrowUp: 'prev', + ArrowRight: 'next', + ArrowDown: 'next', + PageUp: 'first', + Home: 'first', + PageDown: 'last', + End: 'last' +}; +function $0063afae63b3fa70$var$getDirectionAwareKey(key, dir) { + if (dir !== 'rtl') return key; + return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key; +} +function $0063afae63b3fa70$var$getFocusIntent(event, orientation, dir) { + const key = $0063afae63b3fa70$var$getDirectionAwareKey(event.key, dir); + if (orientation === 'vertical' && ['ArrowLeft', 'ArrowRight'].includes(key)) return undefined; + if (orientation === 'horizontal' && ['ArrowUp', 'ArrowDown'].includes(key)) return undefined; + return $0063afae63b3fa70$var$MAP_KEY_TO_FOCUS_INTENT[key]; +} +function $0063afae63b3fa70$var$focusFirst(candidates) { + const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement; + for (const candidate of candidates) { + // if focus is already where we want to go, we don't want to keep going through the candidates + if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return; + candidate.focus(); + if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return; + } +} +/** + * Wraps an array around itself at a given start index + * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']` + */ +function $0063afae63b3fa70$var$wrapArray(array, startIndex) { + return array.map((_, index) => array[(startIndex + index) % array.length]); +} +const $0063afae63b3fa70$export$be92b6f5f03c0fe9 = $0063afae63b3fa70$export$8699f7c8af148338; +const $0063afae63b3fa70$export$6d08773d2e66f8f2 = $0063afae63b3fa70$export$ab9df7c53fe8454; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-slot/dist/index.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-slot/dist/index.js ***! + \****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $dAvBt$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); +var $dAvBt$react = __webpack_require__(/*! react */ "react"); +var $dAvBt$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "Slot", () => $82dc8d030dec7549$export$8c6ed5c666ac1360); +$parcel$export(module.exports, "Slottable", () => $82dc8d030dec7549$export$d9f1ccf0bdb05d45); +$parcel$export(module.exports, "Root", () => $82dc8d030dec7549$export$be92b6f5f03c0fe9); + +/* ------------------------------------------------------------------------------------------------- + * Slot + * -----------------------------------------------------------------------------------------------*/ +const $82dc8d030dec7549$export$8c6ed5c666ac1360 = /*#__PURE__*/$dAvBt$react.forwardRef((props, forwardedRef) => { + const { + children: children, + ...slotProps + } = props; + const childrenArray = $dAvBt$react.Children.toArray(children); + const slottable = childrenArray.find($82dc8d030dec7549$var$isSlottable); + if (slottable) { + // the new element to render is the one passed as a child of `Slottable` + const newElement = slottable.props.children; + const newChildren = childrenArray.map(child => { + if (child === slottable) { + // because the new element will be the one rendered, we are only interested + // in grabbing its children (`newElement.props.children`) + if ($dAvBt$react.Children.count(newElement) > 1) return $dAvBt$react.Children.only(null); + return /*#__PURE__*/$dAvBt$react.isValidElement(newElement) ? newElement.props.children : null; + } else return child; + }); + return /*#__PURE__*/$dAvBt$react.createElement($82dc8d030dec7549$var$SlotClone, $parcel$interopDefault($dAvBt$babelruntimehelpersextends)({}, slotProps, { + ref: forwardedRef + }), /*#__PURE__*/$dAvBt$react.isValidElement(newElement) ? /*#__PURE__*/$dAvBt$react.cloneElement(newElement, undefined, newChildren) : null); + } + return /*#__PURE__*/$dAvBt$react.createElement($82dc8d030dec7549$var$SlotClone, $parcel$interopDefault($dAvBt$babelruntimehelpersextends)({}, slotProps, { + ref: forwardedRef + }), children); +}); +$82dc8d030dec7549$export$8c6ed5c666ac1360.displayName = 'Slot'; +/* ------------------------------------------------------------------------------------------------- + * SlotClone + * -----------------------------------------------------------------------------------------------*/ +const $82dc8d030dec7549$var$SlotClone = /*#__PURE__*/$dAvBt$react.forwardRef((props, forwardedRef) => { + const { + children: children, + ...slotProps + } = props; + if ( /*#__PURE__*/$dAvBt$react.isValidElement(children)) return /*#__PURE__*/$dAvBt$react.cloneElement(children, { + ...$82dc8d030dec7549$var$mergeProps(slotProps, children.props), + ref: forwardedRef ? $dAvBt$radixuireactcomposerefs.composeRefs(forwardedRef, children.ref) : children.ref + }); + return $dAvBt$react.Children.count(children) > 1 ? $dAvBt$react.Children.only(null) : null; +}); +$82dc8d030dec7549$var$SlotClone.displayName = 'SlotClone'; +/* ------------------------------------------------------------------------------------------------- + * Slottable + * -----------------------------------------------------------------------------------------------*/ +const $82dc8d030dec7549$export$d9f1ccf0bdb05d45 = _ref => { + let { + children: children + } = _ref; + return /*#__PURE__*/$dAvBt$react.createElement($dAvBt$react.Fragment, null, children); +}; +/* ---------------------------------------------------------------------------------------------- */ +function $82dc8d030dec7549$var$isSlottable(child) { + return /*#__PURE__*/$dAvBt$react.isValidElement(child) && child.type === $82dc8d030dec7549$export$d9f1ccf0bdb05d45; +} +function $82dc8d030dec7549$var$mergeProps(slotProps, childProps) { + // all child props should override + const overrideProps = { + ...childProps + }; + for (const propName in childProps) { + const slotPropValue = slotProps[propName]; + const childPropValue = childProps[propName]; + const isHandler = /^on[A-Z]/.test(propName); + if (isHandler) { + // if the handler exists on both, we compose them + if (slotPropValue && childPropValue) overrideProps[propName] = function () { + childPropValue(...arguments); + slotPropValue(...arguments); + };else if (slotPropValue) overrideProps[propName] = slotPropValue; + } else if (propName === 'style') overrideProps[propName] = { + ...slotPropValue, + ...childPropValue + };else if (propName === 'className') overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' '); + } + return { + ...slotProps, + ...overrideProps + }; +} +const $82dc8d030dec7549$export$be92b6f5f03c0fe9 = $82dc8d030dec7549$export$8c6ed5c666ac1360; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-tooltip/dist/index.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-tooltip/dist/index.js ***! + \*******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $iVrL9$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); +var $iVrL9$react = __webpack_require__(/*! react */ "react"); +var $iVrL9$radixuiprimitive = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.js"); +var $iVrL9$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); +var $iVrL9$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); +var $iVrL9$radixuireactdismissablelayer = __webpack_require__(/*! @radix-ui/react-dismissable-layer */ "../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.js"); +var $iVrL9$radixuireactid = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.js"); +var $iVrL9$radixuireactpopper = __webpack_require__(/*! @radix-ui/react-popper */ "../../../node_modules/@radix-ui/react-popper/dist/index.js"); +var $iVrL9$radixuireactportal = __webpack_require__(/*! @radix-ui/react-portal */ "../../../node_modules/@radix-ui/react-portal/dist/index.js"); +var $iVrL9$radixuireactpresence = __webpack_require__(/*! @radix-ui/react-presence */ "../../../node_modules/@radix-ui/react-presence/dist/index.js"); +var $iVrL9$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); +var $iVrL9$radixuireactslot = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.js"); +var $iVrL9$radixuireactusecontrollablestate = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js"); +var $iVrL9$radixuireactvisuallyhidden = __webpack_require__(/*! @radix-ui/react-visually-hidden */ "../../../node_modules/@radix-ui/react-visually-hidden/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "createTooltipScope", () => $c34afbc43c90cc6f$export$1c540a2224f0d865); +$parcel$export(module.exports, "TooltipProvider", () => $c34afbc43c90cc6f$export$f78649fb9ca566b8); +$parcel$export(module.exports, "Tooltip", () => $c34afbc43c90cc6f$export$28c660c63b792dea); +$parcel$export(module.exports, "TooltipTrigger", () => $c34afbc43c90cc6f$export$8c610744efcf8a1d); +$parcel$export(module.exports, "TooltipPortal", () => $c34afbc43c90cc6f$export$7b36b8f925ab7497); +$parcel$export(module.exports, "TooltipContent", () => $c34afbc43c90cc6f$export$e9003e2be37ec060); +$parcel$export(module.exports, "TooltipArrow", () => $c34afbc43c90cc6f$export$c27ee0ad710f7559); +$parcel$export(module.exports, "Provider", () => $c34afbc43c90cc6f$export$2881499e37b75b9a); +$parcel$export(module.exports, "Root", () => $c34afbc43c90cc6f$export$be92b6f5f03c0fe9); +$parcel$export(module.exports, "Trigger", () => $c34afbc43c90cc6f$export$41fb9f06171c75f4); +$parcel$export(module.exports, "Portal", () => $c34afbc43c90cc6f$export$602eac185826482c); +$parcel$export(module.exports, "Content", () => $c34afbc43c90cc6f$export$7c6e2c02157bb7d2); +$parcel$export(module.exports, "Arrow", () => $c34afbc43c90cc6f$export$21b07c8f274aebd5); +const [$c34afbc43c90cc6f$var$createTooltipContext, $c34afbc43c90cc6f$export$1c540a2224f0d865] = $iVrL9$radixuireactcontext.createContextScope('Tooltip', [$iVrL9$radixuireactpopper.createPopperScope]); +const $c34afbc43c90cc6f$var$usePopperScope = $iVrL9$radixuireactpopper.createPopperScope(); +/* ------------------------------------------------------------------------------------------------- + * TooltipProvider + * -----------------------------------------------------------------------------------------------*/ +const $c34afbc43c90cc6f$var$PROVIDER_NAME = 'TooltipProvider'; +const $c34afbc43c90cc6f$var$DEFAULT_DELAY_DURATION = 700; +const $c34afbc43c90cc6f$var$TOOLTIP_OPEN = 'tooltip.open'; +const [$c34afbc43c90cc6f$var$TooltipProviderContextProvider, $c34afbc43c90cc6f$var$useTooltipProviderContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$PROVIDER_NAME); +const $c34afbc43c90cc6f$export$f78649fb9ca566b8 = props => { + const { + __scopeTooltip: __scopeTooltip, + delayDuration = $c34afbc43c90cc6f$var$DEFAULT_DELAY_DURATION, + skipDelayDuration = 300, + disableHoverableContent = false, + children: children + } = props; + const [isOpenDelayed, setIsOpenDelayed] = $iVrL9$react.useState(true); + const isPointerInTransitRef = $iVrL9$react.useRef(false); + const skipDelayTimerRef = $iVrL9$react.useRef(0); + $iVrL9$react.useEffect(() => { + const skipDelayTimer = skipDelayTimerRef.current; + return () => window.clearTimeout(skipDelayTimer); + }, []); + return /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipProviderContextProvider, { + scope: __scopeTooltip, + isOpenDelayed: isOpenDelayed, + delayDuration: delayDuration, + onOpen: $iVrL9$react.useCallback(() => { + window.clearTimeout(skipDelayTimerRef.current); + setIsOpenDelayed(false); + }, []), + onClose: $iVrL9$react.useCallback(() => { + window.clearTimeout(skipDelayTimerRef.current); + skipDelayTimerRef.current = window.setTimeout(() => setIsOpenDelayed(true), skipDelayDuration); + }, [skipDelayDuration]), + isPointerInTransitRef: isPointerInTransitRef, + onPointerInTransitChange: $iVrL9$react.useCallback(inTransit => { + isPointerInTransitRef.current = inTransit; + }, []), + disableHoverableContent: disableHoverableContent + }, children); +}; +/*#__PURE__*/ +Object.assign($c34afbc43c90cc6f$export$f78649fb9ca566b8, { + displayName: $c34afbc43c90cc6f$var$PROVIDER_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * Tooltip + * -----------------------------------------------------------------------------------------------*/ +const $c34afbc43c90cc6f$var$TOOLTIP_NAME = 'Tooltip'; +const [$c34afbc43c90cc6f$var$TooltipContextProvider, $c34afbc43c90cc6f$var$useTooltipContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$TOOLTIP_NAME); +const $c34afbc43c90cc6f$export$28c660c63b792dea = props => { + const { + __scopeTooltip: __scopeTooltip, + children: children, + open: openProp, + defaultOpen = false, + onOpenChange: onOpenChange, + disableHoverableContent: disableHoverableContentProp, + delayDuration: delayDurationProp + } = props; + const providerContext = $c34afbc43c90cc6f$var$useTooltipProviderContext($c34afbc43c90cc6f$var$TOOLTIP_NAME, props.__scopeTooltip); + const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip); + const [trigger, setTrigger] = $iVrL9$react.useState(null); + const contentId = $iVrL9$radixuireactid.useId(); + const openTimerRef = $iVrL9$react.useRef(0); + const disableHoverableContent = disableHoverableContentProp !== null && disableHoverableContentProp !== void 0 ? disableHoverableContentProp : providerContext.disableHoverableContent; + const delayDuration = delayDurationProp !== null && delayDurationProp !== void 0 ? delayDurationProp : providerContext.delayDuration; + const wasOpenDelayedRef = $iVrL9$react.useRef(false); + const [open1 = false, setOpen] = $iVrL9$radixuireactusecontrollablestate.useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: open => { + if (open) { + providerContext.onOpen(); // as `onChange` is called within a lifecycle method we + // avoid dispatching via `dispatchDiscreteCustomEvent`. + document.dispatchEvent(new CustomEvent($c34afbc43c90cc6f$var$TOOLTIP_OPEN)); + } else providerContext.onClose(); + onOpenChange === null || onOpenChange === void 0 || onOpenChange(open); + } + }); + const stateAttribute = $iVrL9$react.useMemo(() => { + return open1 ? wasOpenDelayedRef.current ? 'delayed-open' : 'instant-open' : 'closed'; + }, [open1]); + const handleOpen = $iVrL9$react.useCallback(() => { + window.clearTimeout(openTimerRef.current); + wasOpenDelayedRef.current = false; + setOpen(true); + }, [setOpen]); + const handleClose = $iVrL9$react.useCallback(() => { + window.clearTimeout(openTimerRef.current); + setOpen(false); + }, [setOpen]); + const handleDelayedOpen = $iVrL9$react.useCallback(() => { + window.clearTimeout(openTimerRef.current); + openTimerRef.current = window.setTimeout(() => { + wasOpenDelayedRef.current = true; + setOpen(true); + }, delayDuration); + }, [delayDuration, setOpen]); + $iVrL9$react.useEffect(() => { + return () => window.clearTimeout(openTimerRef.current); + }, []); + return /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactpopper.Root, popperScope, /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContextProvider, { + scope: __scopeTooltip, + contentId: contentId, + open: open1, + stateAttribute: stateAttribute, + trigger: trigger, + onTriggerChange: setTrigger, + onTriggerEnter: $iVrL9$react.useCallback(() => { + if (providerContext.isOpenDelayed) handleDelayedOpen();else handleOpen(); + }, [providerContext.isOpenDelayed, handleDelayedOpen, handleOpen]), + onTriggerLeave: $iVrL9$react.useCallback(() => { + if (disableHoverableContent) handleClose();else + // Clear the timer in case the pointer leaves the trigger before the tooltip is opened. + window.clearTimeout(openTimerRef.current); + }, [handleClose, disableHoverableContent]), + onOpen: handleOpen, + onClose: handleClose, + disableHoverableContent: disableHoverableContent + }, children)); +}; +/*#__PURE__*/ +Object.assign($c34afbc43c90cc6f$export$28c660c63b792dea, { + displayName: $c34afbc43c90cc6f$var$TOOLTIP_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * TooltipTrigger + * -----------------------------------------------------------------------------------------------*/ +const $c34afbc43c90cc6f$var$TRIGGER_NAME = 'TooltipTrigger'; +const $c34afbc43c90cc6f$export$8c610744efcf8a1d = /*#__PURE__*/$iVrL9$react.forwardRef((props, forwardedRef) => { + const { + __scopeTooltip: __scopeTooltip, + ...triggerProps + } = props; + const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$TRIGGER_NAME, __scopeTooltip); + const providerContext = $c34afbc43c90cc6f$var$useTooltipProviderContext($c34afbc43c90cc6f$var$TRIGGER_NAME, __scopeTooltip); + const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip); + const ref = $iVrL9$react.useRef(null); + const composedRefs = $iVrL9$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref, context.onTriggerChange); + const isPointerDownRef = $iVrL9$react.useRef(false); + const hasPointerMoveOpenedRef = $iVrL9$react.useRef(false); + const handlePointerUp = $iVrL9$react.useCallback(() => isPointerDownRef.current = false, []); + $iVrL9$react.useEffect(() => { + return () => document.removeEventListener('pointerup', handlePointerUp); + }, [handlePointerUp]); + return /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactpopper.Anchor, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({ + asChild: true + }, popperScope), /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactprimitive.Primitive.button, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({ + // We purposefully avoid adding `type=button` here because tooltip triggers are also + // commonly anchors and the anchor `type` attribute signifies MIME type. + "aria-describedby": context.open ? context.contentId : undefined, + "data-state": context.stateAttribute + }, triggerProps, { + ref: composedRefs, + onPointerMove: $iVrL9$radixuiprimitive.composeEventHandlers(props.onPointerMove, event => { + if (event.pointerType === 'touch') return; + if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) { + context.onTriggerEnter(); + hasPointerMoveOpenedRef.current = true; + } + }), + onPointerLeave: $iVrL9$radixuiprimitive.composeEventHandlers(props.onPointerLeave, () => { + context.onTriggerLeave(); + hasPointerMoveOpenedRef.current = false; + }), + onPointerDown: $iVrL9$radixuiprimitive.composeEventHandlers(props.onPointerDown, () => { + isPointerDownRef.current = true; + document.addEventListener('pointerup', handlePointerUp, { + once: true + }); + }), + onFocus: $iVrL9$radixuiprimitive.composeEventHandlers(props.onFocus, () => { + if (!isPointerDownRef.current) context.onOpen(); + }), + onBlur: $iVrL9$radixuiprimitive.composeEventHandlers(props.onBlur, context.onClose), + onClick: $iVrL9$radixuiprimitive.composeEventHandlers(props.onClick, context.onClose) + }))); +}); +/*#__PURE__*/ +Object.assign($c34afbc43c90cc6f$export$8c610744efcf8a1d, { + displayName: $c34afbc43c90cc6f$var$TRIGGER_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * TooltipPortal + * -----------------------------------------------------------------------------------------------*/ +const $c34afbc43c90cc6f$var$PORTAL_NAME = 'TooltipPortal'; +const [$c34afbc43c90cc6f$var$PortalProvider, $c34afbc43c90cc6f$var$usePortalContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$PORTAL_NAME, { + forceMount: undefined +}); +const $c34afbc43c90cc6f$export$7b36b8f925ab7497 = props => { + const { + __scopeTooltip: __scopeTooltip, + forceMount: forceMount, + children: children, + container: container + } = props; + const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$PORTAL_NAME, __scopeTooltip); + return /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$PortalProvider, { + scope: __scopeTooltip, + forceMount: forceMount + }, /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactpresence.Presence, { + present: forceMount || context.open + }, /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactportal.Portal, { + asChild: true, + container: container + }, children))); +}; +/*#__PURE__*/ +Object.assign($c34afbc43c90cc6f$export$7b36b8f925ab7497, { + displayName: $c34afbc43c90cc6f$var$PORTAL_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * TooltipContent + * -----------------------------------------------------------------------------------------------*/ +const $c34afbc43c90cc6f$var$CONTENT_NAME = 'TooltipContent'; +const $c34afbc43c90cc6f$export$e9003e2be37ec060 = /*#__PURE__*/$iVrL9$react.forwardRef((props, forwardedRef) => { + const portalContext = $c34afbc43c90cc6f$var$usePortalContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip); + const { + forceMount = portalContext.forceMount, + side = 'top', + ...contentProps + } = props; + const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip); + return /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactpresence.Presence, { + present: forceMount || context.open + }, context.disableHoverableContent ? /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContentImpl, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({ + side: side + }, contentProps, { + ref: forwardedRef + })) : /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContentHoverable, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({ + side: side + }, contentProps, { + ref: forwardedRef + }))); +}); +const $c34afbc43c90cc6f$var$TooltipContentHoverable = /*#__PURE__*/$iVrL9$react.forwardRef((props, forwardedRef) => { + const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip); + const providerContext = $c34afbc43c90cc6f$var$useTooltipProviderContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip); + const ref = $iVrL9$react.useRef(null); + const composedRefs = $iVrL9$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); + const [pointerGraceArea, setPointerGraceArea] = $iVrL9$react.useState(null); + const { + trigger: trigger, + onClose: onClose + } = context; + const content = ref.current; + const { + onPointerInTransitChange: onPointerInTransitChange + } = providerContext; + const handleRemoveGraceArea = $iVrL9$react.useCallback(() => { + setPointerGraceArea(null); + onPointerInTransitChange(false); + }, [onPointerInTransitChange]); + const handleCreateGraceArea = $iVrL9$react.useCallback((event, hoverTarget) => { + const currentTarget = event.currentTarget; + const exitPoint = { + x: event.clientX, + y: event.clientY + }; + const exitSide = $c34afbc43c90cc6f$var$getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect()); + const paddedExitPoints = $c34afbc43c90cc6f$var$getPaddedExitPoints(exitPoint, exitSide); + const hoverTargetPoints = $c34afbc43c90cc6f$var$getPointsFromRect(hoverTarget.getBoundingClientRect()); + const graceArea = $c34afbc43c90cc6f$var$getHull([...paddedExitPoints, ...hoverTargetPoints]); + setPointerGraceArea(graceArea); + onPointerInTransitChange(true); + }, [onPointerInTransitChange]); + $iVrL9$react.useEffect(() => { + return () => handleRemoveGraceArea(); + }, [handleRemoveGraceArea]); + $iVrL9$react.useEffect(() => { + if (trigger && content) { + const handleTriggerLeave = event => handleCreateGraceArea(event, content); + const handleContentLeave = event => handleCreateGraceArea(event, trigger); + trigger.addEventListener('pointerleave', handleTriggerLeave); + content.addEventListener('pointerleave', handleContentLeave); + return () => { + trigger.removeEventListener('pointerleave', handleTriggerLeave); + content.removeEventListener('pointerleave', handleContentLeave); + }; + } + }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]); + $iVrL9$react.useEffect(() => { + if (pointerGraceArea) { + const handleTrackPointerGrace = event => { + const target = event.target; + const pointerPosition = { + x: event.clientX, + y: event.clientY + }; + const hasEnteredTarget = (trigger === null || trigger === void 0 ? void 0 : trigger.contains(target)) || (content === null || content === void 0 ? void 0 : content.contains(target)); + const isPointerOutsideGraceArea = !$c34afbc43c90cc6f$var$isPointInPolygon(pointerPosition, pointerGraceArea); + if (hasEnteredTarget) handleRemoveGraceArea();else if (isPointerOutsideGraceArea) { + handleRemoveGraceArea(); + onClose(); + } + }; + document.addEventListener('pointermove', handleTrackPointerGrace); + return () => document.removeEventListener('pointermove', handleTrackPointerGrace); + } + }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]); + return /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContentImpl, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({}, props, { + ref: composedRefs + })); +}); +const [$c34afbc43c90cc6f$var$VisuallyHiddenContentContextProvider, $c34afbc43c90cc6f$var$useVisuallyHiddenContentContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$TOOLTIP_NAME, { + isInside: false +}); +const $c34afbc43c90cc6f$var$TooltipContentImpl = /*#__PURE__*/$iVrL9$react.forwardRef((props, forwardedRef) => { + const { + __scopeTooltip: __scopeTooltip, + children: children, + 'aria-label': ariaLabel, + onEscapeKeyDown: onEscapeKeyDown, + onPointerDownOutside: onPointerDownOutside, + ...contentProps + } = props; + const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$CONTENT_NAME, __scopeTooltip); + const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip); + const { + onClose: onClose + } = context; // Close this tooltip if another one opens + $iVrL9$react.useEffect(() => { + document.addEventListener($c34afbc43c90cc6f$var$TOOLTIP_OPEN, onClose); + return () => document.removeEventListener($c34afbc43c90cc6f$var$TOOLTIP_OPEN, onClose); + }, [onClose]); // Close the tooltip if the trigger is scrolled + $iVrL9$react.useEffect(() => { + if (context.trigger) { + const handleScroll = event => { + const target = event.target; + if (target !== null && target !== void 0 && target.contains(context.trigger)) onClose(); + }; + window.addEventListener('scroll', handleScroll, { + capture: true + }); + return () => window.removeEventListener('scroll', handleScroll, { + capture: true + }); + } + }, [context.trigger, onClose]); + return /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactdismissablelayer.DismissableLayer, { + asChild: true, + disableOutsidePointerEvents: false, + onEscapeKeyDown: onEscapeKeyDown, + onPointerDownOutside: onPointerDownOutside, + onFocusOutside: event => event.preventDefault(), + onDismiss: onClose + }, /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactpopper.Content, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({ + "data-state": context.stateAttribute + }, popperScope, contentProps, { + ref: forwardedRef, + style: { + ...contentProps.style, + '--radix-tooltip-content-transform-origin': 'var(--radix-popper-transform-origin)', + '--radix-tooltip-content-available-width': 'var(--radix-popper-available-width)', + '--radix-tooltip-content-available-height': 'var(--radix-popper-available-height)', + '--radix-tooltip-trigger-width': 'var(--radix-popper-anchor-width)', + '--radix-tooltip-trigger-height': 'var(--radix-popper-anchor-height)' + } + }), /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactslot.Slottable, null, children), /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$VisuallyHiddenContentContextProvider, { + scope: __scopeTooltip, + isInside: true + }, /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactvisuallyhidden.Root, { + id: context.contentId, + role: "tooltip" + }, ariaLabel || children)))); +}); +/*#__PURE__*/ +Object.assign($c34afbc43c90cc6f$export$e9003e2be37ec060, { + displayName: $c34afbc43c90cc6f$var$CONTENT_NAME +}); +/* ------------------------------------------------------------------------------------------------- + * TooltipArrow + * -----------------------------------------------------------------------------------------------*/ +const $c34afbc43c90cc6f$var$ARROW_NAME = 'TooltipArrow'; +const $c34afbc43c90cc6f$export$c27ee0ad710f7559 = /*#__PURE__*/$iVrL9$react.forwardRef((props, forwardedRef) => { + const { + __scopeTooltip: __scopeTooltip, + ...arrowProps + } = props; + const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip); + const visuallyHiddenContentContext = $c34afbc43c90cc6f$var$useVisuallyHiddenContentContext($c34afbc43c90cc6f$var$ARROW_NAME, __scopeTooltip); // if the arrow is inside the `VisuallyHidden`, we don't want to render it all to + // prevent issues in positioning the arrow due to the duplicate + return visuallyHiddenContentContext.isInside ? null : /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactpopper.Arrow, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({}, popperScope, arrowProps, { + ref: forwardedRef + })); +}); +/*#__PURE__*/ +Object.assign($c34afbc43c90cc6f$export$c27ee0ad710f7559, { + displayName: $c34afbc43c90cc6f$var$ARROW_NAME +}); +/* -----------------------------------------------------------------------------------------------*/ +function $c34afbc43c90cc6f$var$getExitSideFromRect(point, rect) { + const top = Math.abs(rect.top - point.y); + const bottom = Math.abs(rect.bottom - point.y); + const right = Math.abs(rect.right - point.x); + const left = Math.abs(rect.left - point.x); + switch (Math.min(top, bottom, right, left)) { + case left: + return 'left'; + case right: + return 'right'; + case top: + return 'top'; + case bottom: + return 'bottom'; + default: + throw new Error('unreachable'); + } +} +function $c34afbc43c90cc6f$var$getPaddedExitPoints(exitPoint, exitSide) { + let padding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5; + const paddedExitPoints = []; + switch (exitSide) { + case 'top': + paddedExitPoints.push({ + x: exitPoint.x - padding, + y: exitPoint.y + padding + }, { + x: exitPoint.x + padding, + y: exitPoint.y + padding + }); + break; + case 'bottom': + paddedExitPoints.push({ + x: exitPoint.x - padding, + y: exitPoint.y - padding + }, { + x: exitPoint.x + padding, + y: exitPoint.y - padding + }); + break; + case 'left': + paddedExitPoints.push({ + x: exitPoint.x + padding, + y: exitPoint.y - padding + }, { + x: exitPoint.x + padding, + y: exitPoint.y + padding + }); + break; + case 'right': + paddedExitPoints.push({ + x: exitPoint.x - padding, + y: exitPoint.y - padding + }, { + x: exitPoint.x - padding, + y: exitPoint.y + padding + }); + break; + } + return paddedExitPoints; +} +function $c34afbc43c90cc6f$var$getPointsFromRect(rect) { + const { + top: top, + right: right, + bottom: bottom, + left: left + } = rect; + return [{ + x: left, + y: top + }, { + x: right, + y: top + }, { + x: right, + y: bottom + }, { + x: left, + y: bottom + }]; +} // Determine if a point is inside of a polygon. +// Based on https://github.com/substack/point-in-polygon +function $c34afbc43c90cc6f$var$isPointInPolygon(point, polygon) { + const { + x: x, + y: y + } = point; + let inside = false; + for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) { + const xi = polygon[i].x; + const yi = polygon[i].y; + const xj = polygon[j].x; + const yj = polygon[j].y; // prettier-ignore + const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi; + if (intersect) inside = !inside; + } + return inside; +} // Returns a new array of points representing the convex hull of the given set of points. +// https://www.nayuki.io/page/convex-hull-algorithm +function $c34afbc43c90cc6f$var$getHull(points) { + const newPoints = points.slice(); + newPoints.sort((a, b) => { + if (a.x < b.x) return -1;else if (a.x > b.x) return 1;else if (a.y < b.y) return -1;else if (a.y > b.y) return 1;else return 0; + }); + return $c34afbc43c90cc6f$var$getHullPresorted(newPoints); +} // Returns the convex hull, assuming that each points[i] <= points[i + 1]. Runs in O(n) time. +function $c34afbc43c90cc6f$var$getHullPresorted(points) { + if (points.length <= 1) return points.slice(); + const upperHull = []; + for (let i = 0; i < points.length; i++) { + const p = points[i]; + while (upperHull.length >= 2) { + const q = upperHull[upperHull.length - 1]; + const r = upperHull[upperHull.length - 2]; + if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();else break; + } + upperHull.push(p); + } + upperHull.pop(); + const lowerHull = []; + for (let i1 = points.length - 1; i1 >= 0; i1--) { + const p = points[i1]; + while (lowerHull.length >= 2) { + const q = lowerHull[lowerHull.length - 1]; + const r = lowerHull[lowerHull.length - 2]; + if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();else break; + } + lowerHull.push(p); + } + lowerHull.pop(); + if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) return upperHull;else return upperHull.concat(lowerHull); +} +const $c34afbc43c90cc6f$export$2881499e37b75b9a = $c34afbc43c90cc6f$export$f78649fb9ca566b8; +const $c34afbc43c90cc6f$export$be92b6f5f03c0fe9 = $c34afbc43c90cc6f$export$28c660c63b792dea; +const $c34afbc43c90cc6f$export$41fb9f06171c75f4 = $c34afbc43c90cc6f$export$8c610744efcf8a1d; +const $c34afbc43c90cc6f$export$602eac185826482c = $c34afbc43c90cc6f$export$7b36b8f925ab7497; +const $c34afbc43c90cc6f$export$7c6e2c02157bb7d2 = $c34afbc43c90cc6f$export$e9003e2be37ec060; +const $c34afbc43c90cc6f$export$21b07c8f274aebd5 = $c34afbc43c90cc6f$export$c27ee0ad710f7559; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js ***! + \****************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $92muK$react = __webpack_require__(/*! react */ "react"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +$parcel$export(module.exports, "useCallbackRef", () => $28e03942f763e819$export$25bec8c6f54ee79a); + +/** + * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a + * prop or avoid re-executing effects when passed as a dependency + */ +function $28e03942f763e819$export$25bec8c6f54ee79a(callback) { + const callbackRef = $92muK$react.useRef(callback); + $92muK$react.useEffect(() => { + callbackRef.current = callback; + }); // https://github.com/facebook/react/issues/19240 + return $92muK$react.useMemo(() => function () { + var _callbackRef$current; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return (_callbackRef$current = callbackRef.current) === null || _callbackRef$current === void 0 ? void 0 : _callbackRef$current.call(callbackRef, ...args); + }, []); +} + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js": +/*!**********************************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js ***! + \**********************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $ijazI$react = __webpack_require__(/*! react */ "react"); +var $ijazI$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +$parcel$export(module.exports, "useControllableState", () => $b84d42d44371bff7$export$6f32135080cb4c3); +function $b84d42d44371bff7$export$6f32135080cb4c3(_ref) { + let { + prop: prop, + defaultProp: defaultProp, + onChange = () => {} + } = _ref; + const [uncontrolledProp, setUncontrolledProp] = $b84d42d44371bff7$var$useUncontrolledState({ + defaultProp: defaultProp, + onChange: onChange + }); + const isControlled = prop !== undefined; + const value1 = isControlled ? prop : uncontrolledProp; + const handleChange = $ijazI$radixuireactusecallbackref.useCallbackRef(onChange); + const setValue = $ijazI$react.useCallback(nextValue => { + if (isControlled) { + const setter = nextValue; + const value = typeof nextValue === 'function' ? setter(prop) : nextValue; + if (value !== prop) handleChange(value); + } else setUncontrolledProp(nextValue); + }, [isControlled, prop, setUncontrolledProp, handleChange]); + return [value1, setValue]; +} +function $b84d42d44371bff7$var$useUncontrolledState(_ref2) { + let { + defaultProp: defaultProp, + onChange: onChange + } = _ref2; + const uncontrolledState = $ijazI$react.useState(defaultProp); + const [value] = uncontrolledState; + const prevValueRef = $ijazI$react.useRef(value); + const handleChange = $ijazI$radixuireactusecallbackref.useCallbackRef(onChange); + $ijazI$react.useEffect(() => { + if (prevValueRef.current !== value) { + handleChange(value); + prevValueRef.current = value; + } + }, [value, prevValueRef, handleChange]); + return uncontrolledState; +} + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.js ***! + \******************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $b0gz3$react = __webpack_require__(/*! react */ "react"); +var $b0gz3$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +$parcel$export(module.exports, "useEscapeKeydown", () => $24c84e9f83c4454f$export$3a72a57244d6e765); + +/** + * Listens for when the escape key is down + */ +function $24c84e9f83c4454f$export$3a72a57244d6e765(onEscapeKeyDownProp) { + let ownerDocument = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis === null || globalThis === void 0 ? void 0 : globalThis.document; + const onEscapeKeyDown = $b0gz3$radixuireactusecallbackref.useCallbackRef(onEscapeKeyDownProp); + $b0gz3$react.useEffect(() => { + const handleKeyDown = event => { + if (event.key === 'Escape') onEscapeKeyDown(event); + }; + ownerDocument.addEventListener('keydown', handleKeyDown); + return () => ownerDocument.removeEventListener('keydown', handleKeyDown); + }, [onEscapeKeyDown, ownerDocument]); +} + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js ***! + \*****************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $caHyQ$react = __webpack_require__(/*! react */ "react"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +$parcel$export(module.exports, "useLayoutEffect", () => $ca21affb0542a8a4$export$e5c5a5f917a5871c); + +/** + * On the server, React emits a warning when calling `useLayoutEffect`. + * This is because neither `useLayoutEffect` nor `useEffect` run on the server. + * We use this safe version which suppresses the warning by replacing it with a noop on the server. + * + * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect + */ +const $ca21affb0542a8a4$export$e5c5a5f917a5871c = Boolean(globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) ? $caHyQ$react.useLayoutEffect : () => {}; + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-use-size/dist/index.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-use-size/dist/index.js ***! + \********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $ksDzM$react = __webpack_require__(/*! react */ "react"); +var $ksDzM$radixuireactuselayouteffect = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +$parcel$export(module.exports, "useSize", () => $d2c1d285af17635b$export$1ab7ae714698c4b8); +function $d2c1d285af17635b$export$1ab7ae714698c4b8(element) { + const [size, setSize] = $ksDzM$react.useState(undefined); + $ksDzM$radixuireactuselayouteffect.useLayoutEffect(() => { + if (element) { + // provide size as early as possible + setSize({ + width: element.offsetWidth, + height: element.offsetHeight + }); + const resizeObserver = new ResizeObserver(entries => { + if (!Array.isArray(entries)) return; + // Since we only observe the one element, we don't need to loop over the + // array + if (!entries.length) return; + const entry = entries[0]; + let width; + let height; + if ('borderBoxSize' in entry) { + const borderSizeEntry = entry['borderBoxSize']; // iron out differences between browsers + const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry; + width = borderSize['inlineSize']; + height = borderSize['blockSize']; + } else { + // for browsers that don't support `borderBoxSize` + // we calculate it ourselves to get the correct border box. + width = element.offsetWidth; + height = element.offsetHeight; + } + setSize({ + width: width, + height: height + }); + }); + resizeObserver.observe(element, { + box: 'border-box' + }); + return () => resizeObserver.unobserve(element); + } else + // We only want to reset to `undefined` when the element becomes `null`, + // not if it changes to another element. + setSize(undefined); + }, [element]); + return size; +} + +/***/ }), + +/***/ "../../../node_modules/@radix-ui/react-visually-hidden/dist/index.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/@radix-ui/react-visually-hidden/dist/index.js ***! + \***************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var $awrN2$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); +var $awrN2$react = __webpack_require__(/*! react */ "react"); +var $awrN2$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); +function $parcel$export(e, n, v, s) { + Object.defineProperty(e, n, { + get: v, + set: s, + enumerable: true, + configurable: true + }); +} +function $parcel$interopDefault(a) { + return a && a.__esModule ? a.default : a; +} +$parcel$export(module.exports, "VisuallyHidden", () => $685371e9c20848e2$export$439d29a4e110a164); +$parcel$export(module.exports, "Root", () => $685371e9c20848e2$export$be92b6f5f03c0fe9); + +/* ------------------------------------------------------------------------------------------------- + * VisuallyHidden + * -----------------------------------------------------------------------------------------------*/ +const $685371e9c20848e2$var$NAME = 'VisuallyHidden'; +const $685371e9c20848e2$export$439d29a4e110a164 = /*#__PURE__*/$awrN2$react.forwardRef((props, forwardedRef) => { + return /*#__PURE__*/$awrN2$react.createElement($awrN2$radixuireactprimitive.Primitive.span, $parcel$interopDefault($awrN2$babelruntimehelpersextends)({}, props, { + ref: forwardedRef, + style: { + // See: https://github.com/twbs/bootstrap/blob/master/scss/mixins/_screen-reader.scss + position: 'absolute', + border: 0, + width: 1, + height: 1, + padding: 0, + margin: -1, + overflow: 'hidden', + clip: 'rect(0, 0, 0, 0)', + whiteSpace: 'nowrap', + wordWrap: 'normal', + ...props.style + } + })); +}); +/*#__PURE__*/ +Object.assign($685371e9c20848e2$export$439d29a4e110a164, { + displayName: $685371e9c20848e2$var$NAME +}); +/* -----------------------------------------------------------------------------------------------*/ +const $685371e9c20848e2$export$be92b6f5f03c0fe9 = $685371e9c20848e2$export$439d29a4e110a164; + +/***/ }), + +/***/ "../../../node_modules/aria-hidden/dist/es2015/index.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/aria-hidden/dist/es2015/index.js ***! + \**************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.suppressOthers = exports.supportsInert = exports.inertOthers = exports.hideOthers = void 0; +var getDefaultParent = function (originalTarget) { + if (typeof document === 'undefined') { + return null; + } + var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget; + return sampleTarget.ownerDocument.body; +}; +var counterMap = new WeakMap(); +var uncontrolledNodes = new WeakMap(); +var markerMap = {}; +var lockCount = 0; +var unwrapHost = function (node) { + return node && (node.host || unwrapHost(node.parentNode)); +}; +var correctTargets = function (parent, targets) { + return targets.map(function (target) { + if (parent.contains(target)) { + return target; + } + var correctedTarget = unwrapHost(target); + if (correctedTarget && parent.contains(correctedTarget)) { + return correctedTarget; + } + console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing'); + return null; + }).filter(function (x) { + return Boolean(x); + }); +}; +/** + * Marks everything except given node(or nodes) as aria-hidden + * @param {Element | Element[]} originalTarget - elements to keep on the page + * @param [parentNode] - top element, defaults to document.body + * @param {String} [markerName] - a special attribute to mark every node + * @param {String} [controlAttribute] - html Attribute to control + * @return {Undo} undo command + */ +var applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) { + var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]); + if (!markerMap[markerName]) { + markerMap[markerName] = new WeakMap(); + } + var markerCounter = markerMap[markerName]; + var hiddenNodes = []; + var elementsToKeep = new Set(); + var elementsToStop = new Set(targets); + var keep = function (el) { + if (!el || elementsToKeep.has(el)) { + return; + } + elementsToKeep.add(el); + keep(el.parentNode); + }; + targets.forEach(keep); + var deep = function (parent) { + if (!parent || elementsToStop.has(parent)) { + return; + } + Array.prototype.forEach.call(parent.children, function (node) { + if (elementsToKeep.has(node)) { + deep(node); + } else { + var attr = node.getAttribute(controlAttribute); + var alreadyHidden = attr !== null && attr !== 'false'; + var counterValue = (counterMap.get(node) || 0) + 1; + var markerValue = (markerCounter.get(node) || 0) + 1; + counterMap.set(node, counterValue); + markerCounter.set(node, markerValue); + hiddenNodes.push(node); + if (counterValue === 1 && alreadyHidden) { + uncontrolledNodes.set(node, true); + } + if (markerValue === 1) { + node.setAttribute(markerName, 'true'); + } + if (!alreadyHidden) { + node.setAttribute(controlAttribute, 'true'); + } + } + }); + }; + deep(parentNode); + elementsToKeep.clear(); + lockCount++; + return function () { + hiddenNodes.forEach(function (node) { + var counterValue = counterMap.get(node) - 1; + var markerValue = markerCounter.get(node) - 1; + counterMap.set(node, counterValue); + markerCounter.set(node, markerValue); + if (!counterValue) { + if (!uncontrolledNodes.has(node)) { + node.removeAttribute(controlAttribute); + } + uncontrolledNodes.delete(node); + } + if (!markerValue) { + node.removeAttribute(markerName); + } + }); + lockCount--; + if (!lockCount) { + // clear + counterMap = new WeakMap(); + counterMap = new WeakMap(); + uncontrolledNodes = new WeakMap(); + markerMap = {}; + } + }; +}; +/** + * Marks everything except given node(or nodes) as aria-hidden + * @param {Element | Element[]} originalTarget - elements to keep on the page + * @param [parentNode] - top element, defaults to document.body + * @param {String} [markerName] - a special attribute to mark every node + * @return {Undo} undo command + */ +var hideOthers = function (originalTarget, parentNode, markerName) { + if (markerName === void 0) { + markerName = 'data-aria-hidden'; + } + var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]); + var activeParentNode = parentNode || getDefaultParent(originalTarget); + if (!activeParentNode) { + return function () { + return null; + }; + } + // we should not hide ariaLive elements - https://github.com/theKashey/aria-hidden/issues/10 + targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live]'))); + return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden'); +}; +/** + * Marks everything except given node(or nodes) as inert + * @param {Element | Element[]} originalTarget - elements to keep on the page + * @param [parentNode] - top element, defaults to document.body + * @param {String} [markerName] - a special attribute to mark every node + * @return {Undo} undo command + */ +exports.hideOthers = hideOthers; +var inertOthers = function (originalTarget, parentNode, markerName) { + if (markerName === void 0) { + markerName = 'data-inert-ed'; + } + var activeParentNode = parentNode || getDefaultParent(originalTarget); + if (!activeParentNode) { + return function () { + return null; + }; + } + return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert'); +}; +/** + * @returns if current browser supports inert + */ +exports.inertOthers = inertOthers; +var supportsInert = function () { + return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert'); +}; +/** + * Automatic function to "suppress" DOM elements - _hide_ or _inert_ in the best possible way + * @param {Element | Element[]} originalTarget - elements to keep on the page + * @param [parentNode] - top element, defaults to document.body + * @param {String} [markerName] - a special attribute to mark every node + * @return {Undo} undo command + */ +exports.supportsInert = supportsInert; +var suppressOthers = function (originalTarget, parentNode, markerName) { + if (markerName === void 0) { + markerName = 'data-suppressed'; + } + return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName); +}; +exports.suppressOthers = suppressOthers; + +/***/ }), + +/***/ "../../../node_modules/clsx/dist/clsx.m.js": +/*!*************************************************!*\ + !*** ../../../node_modules/clsx/dist/clsx.m.js ***! + \*************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.clsx = clsx; +exports["default"] = void 0; +function r(e) { + var t, + f, + n = ""; + if ("string" == typeof e || "number" == typeof e) n += e;else if ("object" == typeof e) if (Array.isArray(e)) for (t = 0; t < e.length; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);else for (t in e) e[t] && (n && (n += " "), n += t); + return n; +} +function clsx() { + for (var e, t, f = 0, n = ""; f < arguments.length;) (e = arguments[f++]) && (t = r(e)) && (n && (n += " "), n += t); + return n; +} +var _default = clsx; +exports["default"] = _default; + +/***/ }), + +/***/ "../../../node_modules/copy-to-clipboard/index.js": +/*!********************************************************!*\ + !*** ../../../node_modules/copy-to-clipboard/index.js ***! + \********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + + +var deselectCurrent = __webpack_require__(/*! toggle-selection */ "../../../node_modules/toggle-selection/index.js"); +var clipboardToIE11Formatting = { + "text/plain": "Text", + "text/html": "Url", + "default": "Text" +}; +var defaultMessage = "Copy to clipboard: #{key}, Enter"; +function format(message) { + var copyKey = (/mac os x/i.test(navigator.userAgent) ? "⌘" : "Ctrl") + "+C"; + return message.replace(/#{\s*key\s*}/g, copyKey); +} +function copy(text, options) { + var debug, + message, + reselectPrevious, + range, + selection, + mark, + success = false; + if (!options) { + options = {}; + } + debug = options.debug || false; + try { + reselectPrevious = deselectCurrent(); + range = document.createRange(); + selection = document.getSelection(); + mark = document.createElement("span"); + mark.textContent = text; + // avoid screen readers from reading out loud the text + mark.ariaHidden = "true"; + // reset user styles for span element + mark.style.all = "unset"; + // prevents scrolling to the end of the page + mark.style.position = "fixed"; + mark.style.top = 0; + mark.style.clip = "rect(0, 0, 0, 0)"; + // used to preserve spaces and line breaks + mark.style.whiteSpace = "pre"; + // do not inherit user-select (it may be `none`) + mark.style.webkitUserSelect = "text"; + mark.style.MozUserSelect = "text"; + mark.style.msUserSelect = "text"; + mark.style.userSelect = "text"; + mark.addEventListener("copy", function (e) { + e.stopPropagation(); + if (options.format) { + e.preventDefault(); + if (typeof e.clipboardData === "undefined") { + // IE 11 + debug && console.warn("unable to use e.clipboardData"); + debug && console.warn("trying IE specific stuff"); + window.clipboardData.clearData(); + var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting["default"]; + window.clipboardData.setData(format, text); + } else { + // all other browsers + e.clipboardData.clearData(); + e.clipboardData.setData(options.format, text); + } + } + if (options.onCopy) { + e.preventDefault(); + options.onCopy(e.clipboardData); + } + }); + document.body.appendChild(mark); + range.selectNodeContents(mark); + selection.addRange(range); + var successful = document.execCommand("copy"); + if (!successful) { + throw new Error("copy command was unsuccessful"); + } + success = true; + } catch (err) { + debug && console.error("unable to copy using execCommand: ", err); + debug && console.warn("trying IE specific stuff"); + try { + window.clipboardData.setData(options.format || "text", text); + options.onCopy && options.onCopy(window.clipboardData); + success = true; + } catch (err) { + debug && console.error("unable to copy using clipboardData: ", err); + debug && console.error("falling back to prompt"); + message = format("message" in options ? options.message : defaultMessage); + window.prompt(message, text); + } + } finally { + if (selection) { + if (typeof selection.removeRange == "function") { + selection.removeRange(range); + } else { + selection.removeAllRanges(); + } + } + if (mark) { + document.body.removeChild(mark); + } + reselectPrevious(); + } + return success; +} +module.exports = copy; + +/***/ }), + +/***/ "../../../node_modules/detect-node-es/esm/browser.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/detect-node-es/esm/browser.js ***! + \***********************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isNode = void 0; +const isNode = false; +exports.isNode = isNode; + +/***/ }), + +/***/ "../../../node_modules/framer-motion/dist/cjs/index.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/framer-motion/dist/cjs/index.js ***! + \*************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var tslib = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js"); +var React = __webpack_require__(/*! react */ "react"); +var heyListen = __webpack_require__(/*! hey-listen */ "../../../node_modules/hey-listen/dist/hey-listen.es.js"); +var styleValueTypes = __webpack_require__(/*! style-value-types */ "../../../node_modules/style-value-types/dist/valueTypes.cjs.js"); +var popmotion = __webpack_require__(/*! popmotion */ "../../../node_modules/popmotion/dist/popmotion.cjs.js"); +var sync = __webpack_require__(/*! framesync */ "../../../node_modules/framesync/dist/framesync.cjs.js"); +var dom = __webpack_require__(/*! @motionone/dom */ "../../../node_modules/@motionone/dom/dist/index.es.js"); +function _interopDefaultLegacy(e) { + return e && typeof e === 'object' && 'default' in e ? e : { + 'default': e + }; +} +function _interopNamespace(e) { + if (e && e.__esModule) return e; + var n = Object.create(null); + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { + return e[k]; + } + }); + } + }); + } + n["default"] = e; + return Object.freeze(n); +} +var React__namespace = /*#__PURE__*/_interopNamespace(React); +var React__default = /*#__PURE__*/_interopDefaultLegacy(React); +var sync__default = /*#__PURE__*/_interopDefaultLegacy(sync); + +/** + * Browser-safe usage of process + */ +var defaultEnvironment = "production"; +var env = typeof process === "undefined" || process.env === undefined ? defaultEnvironment : "development" || 0; +var createDefinition = function (propNames) { + return { + isEnabled: function (props) { + return propNames.some(function (name) { + return !!props[name]; + }); + } + }; +}; +var featureDefinitions = { + measureLayout: createDefinition(["layout", "layoutId", "drag"]), + animation: createDefinition(["animate", "exit", "variants", "whileHover", "whileTap", "whileFocus", "whileDrag", "whileInView"]), + exit: createDefinition(["exit"]), + drag: createDefinition(["drag", "dragControls"]), + focus: createDefinition(["whileFocus"]), + hover: createDefinition(["whileHover", "onHoverStart", "onHoverEnd"]), + tap: createDefinition(["whileTap", "onTap", "onTapStart", "onTapCancel"]), + pan: createDefinition(["onPan", "onPanStart", "onPanSessionStart", "onPanEnd"]), + inView: createDefinition(["whileInView", "onViewportEnter", "onViewportLeave"]) +}; +function loadFeatures(features) { + for (var key in features) { + if (features[key] === null) continue; + if (key === "projectionNodeConstructor") { + featureDefinitions.projectionNodeConstructor = features[key]; + } else { + featureDefinitions[key].Component = features[key]; + } + } +} +var LazyContext = React.createContext({ + strict: false +}); +var featureNames = Object.keys(featureDefinitions); +var numFeatures = featureNames.length; +/** + * Load features via renderless components based on the provided MotionProps. + */ +function useFeatures(props, visualElement, preloadedFeatures) { + var features = []; + var lazyContext = React.useContext(LazyContext); + if (!visualElement) return null; + /** + * If we're in development mode, check to make sure we're not rendering a motion component + * as a child of LazyMotion, as this will break the file-size benefits of using it. + */ + if (env !== "production" && preloadedFeatures && lazyContext.strict) { + heyListen.invariant(false, "You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead."); + } + for (var i = 0; i < numFeatures; i++) { + var name_1 = featureNames[i]; + var _a = featureDefinitions[name_1], + isEnabled = _a.isEnabled, + Component = _a.Component; + /** + * It might be possible in the future to use this moment to + * dynamically request functionality. In initial tests this + * was producing a lot of duplication amongst bundles. + */ + if (isEnabled(props) && Component) { + features.push(React__namespace.createElement(Component, tslib.__assign({ + key: name_1 + }, props, { + visualElement: visualElement + }))); + } + } + return features; +} + +/** + * @public + */ +var MotionConfigContext = React.createContext({ + transformPagePoint: function (p) { + return p; + }, + isStatic: false, + reducedMotion: "never" +}); +var MotionContext = React.createContext({}); +function useVisualElementContext() { + return React.useContext(MotionContext).visualElement; +} + +/** + * @public + */ +var PresenceContext = React.createContext(null); +var isBrowser = typeof document !== "undefined"; +var useIsomorphicLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect; + +// Does this device prefer reduced motion? Returns `null` server-side. +var prefersReducedMotion = { + current: null +}; +var hasDetected = false; +function initPrefersReducedMotion() { + hasDetected = true; + if (!isBrowser) return; + if (window.matchMedia) { + var motionMediaQuery_1 = window.matchMedia("(prefers-reduced-motion)"); + var setReducedMotionPreferences = function () { + return prefersReducedMotion.current = motionMediaQuery_1.matches; + }; + motionMediaQuery_1.addListener(setReducedMotionPreferences); + setReducedMotionPreferences(); + } else { + prefersReducedMotion.current = false; + } +} +/** + * A hook that returns `true` if we should be using reduced motion based on the current device's Reduced Motion setting. + * + * This can be used to implement changes to your UI based on Reduced Motion. For instance, replacing motion-sickness inducing + * `x`/`y` animations with `opacity`, disabling the autoplay of background videos, or turning off parallax motion. + * + * It will actively respond to changes and re-render your components with the latest setting. + * + * ```jsx + * export function Sidebar({ isOpen }) { + * const shouldReduceMotion = useReducedMotion() + * const closedX = shouldReduceMotion ? 0 : "-100%" + * + * return ( + * + * ) + * } + * ``` + * + * @return boolean + * + * @public + */ +function useReducedMotion() { + /** + * Lazy initialisation of prefersReducedMotion + */ + !hasDetected && initPrefersReducedMotion(); + var _a = tslib.__read(React.useState(prefersReducedMotion.current), 1), + shouldReduceMotion = _a[0]; + /** + * TODO See if people miss automatically updating shouldReduceMotion setting + */ + return shouldReduceMotion; +} +function useReducedMotionConfig() { + var reducedMotionPreference = useReducedMotion(); + var reducedMotion = React.useContext(MotionConfigContext).reducedMotion; + if (reducedMotion === "never") { + return false; + } else if (reducedMotion === "always") { + return true; + } else { + return reducedMotionPreference; + } +} +function useVisualElement(Component, visualState, props, createVisualElement) { + var lazyContext = React.useContext(LazyContext); + var parent = useVisualElementContext(); + var presenceContext = React.useContext(PresenceContext); + var shouldReduceMotion = useReducedMotionConfig(); + var visualElementRef = React.useRef(undefined); + /** + * If we haven't preloaded a renderer, check to see if we have one lazy-loaded + */ + if (!createVisualElement) createVisualElement = lazyContext.renderer; + if (!visualElementRef.current && createVisualElement) { + visualElementRef.current = createVisualElement(Component, { + visualState: visualState, + parent: parent, + props: props, + presenceId: presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.id, + blockInitialAnimation: (presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) === false, + shouldReduceMotion: shouldReduceMotion + }); + } + var visualElement = visualElementRef.current; + useIsomorphicLayoutEffect(function () { + visualElement === null || visualElement === void 0 ? void 0 : visualElement.syncRender(); + }); + React.useEffect(function () { + var _a; + (_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.animationState) === null || _a === void 0 ? void 0 : _a.animateChanges(); + }); + useIsomorphicLayoutEffect(function () { + return function () { + return visualElement === null || visualElement === void 0 ? void 0 : visualElement.notifyUnmount(); + }; + }, []); + return visualElement; +} +function isRefObject(ref) { + return typeof ref === "object" && Object.prototype.hasOwnProperty.call(ref, "current"); +} + +/** + * Creates a ref function that, when called, hydrates the provided + * external ref and VisualElement. + */ +function useMotionRef(visualState, visualElement, externalRef) { + return React.useCallback(function (instance) { + var _a; + instance && ((_a = visualState.mount) === null || _a === void 0 ? void 0 : _a.call(visualState, instance)); + if (visualElement) { + instance ? visualElement.mount(instance) : visualElement.unmount(); + } + if (externalRef) { + if (typeof externalRef === "function") { + externalRef(instance); + } else if (isRefObject(externalRef)) { + externalRef.current = instance; + } + } + }, + /** + * Only pass a new ref callback to React if we've received a visual element + * factory. Otherwise we'll be mounting/remounting every time externalRef + * or other dependencies change. + */ + [visualElement]); +} + +/** + * Decides if the supplied variable is an array of variant labels + */ +function isVariantLabels(v) { + return Array.isArray(v); +} +/** + * Decides if the supplied variable is variant label + */ +function isVariantLabel(v) { + return typeof v === "string" || isVariantLabels(v); +} +/** + * Creates an object containing the latest state of every MotionValue on a VisualElement + */ +function getCurrent(visualElement) { + var current = {}; + visualElement.forEachValue(function (value, key) { + return current[key] = value.get(); + }); + return current; +} +/** + * Creates an object containing the latest velocity of every MotionValue on a VisualElement + */ +function getVelocity$1(visualElement) { + var velocity = {}; + visualElement.forEachValue(function (value, key) { + return velocity[key] = value.getVelocity(); + }); + return velocity; +} +function resolveVariantFromProps(props, definition, custom, currentValues, currentVelocity) { + var _a; + if (currentValues === void 0) { + currentValues = {}; + } + if (currentVelocity === void 0) { + currentVelocity = {}; + } + /** + * If the variant definition is a function, resolve. + */ + if (typeof definition === "function") { + definition = definition(custom !== null && custom !== void 0 ? custom : props.custom, currentValues, currentVelocity); + } + /** + * If the variant definition is a variant label, or + * the function returned a variant label, resolve. + */ + if (typeof definition === "string") { + definition = (_a = props.variants) === null || _a === void 0 ? void 0 : _a[definition]; + } + /** + * At this point we've resolved both functions and variant labels, + * but the resolved variant label might itself have been a function. + * If so, resolve. This can only have returned a valid target object. + */ + if (typeof definition === "function") { + definition = definition(custom !== null && custom !== void 0 ? custom : props.custom, currentValues, currentVelocity); + } + return definition; +} +function resolveVariant(visualElement, definition, custom) { + var props = visualElement.getProps(); + return resolveVariantFromProps(props, definition, custom !== null && custom !== void 0 ? custom : props.custom, getCurrent(visualElement), getVelocity$1(visualElement)); +} +function checkIfControllingVariants(props) { + var _a; + return typeof ((_a = props.animate) === null || _a === void 0 ? void 0 : _a.start) === "function" || isVariantLabel(props.initial) || isVariantLabel(props.animate) || isVariantLabel(props.whileHover) || isVariantLabel(props.whileDrag) || isVariantLabel(props.whileTap) || isVariantLabel(props.whileFocus) || isVariantLabel(props.exit); +} +function checkIfVariantNode(props) { + return Boolean(checkIfControllingVariants(props) || props.variants); +} +function getCurrentTreeVariants(props, context) { + if (checkIfControllingVariants(props)) { + var initial = props.initial, + animate = props.animate; + return { + initial: initial === false || isVariantLabel(initial) ? initial : undefined, + animate: isVariantLabel(animate) ? animate : undefined + }; + } + return props.inherit !== false ? context : {}; +} +function useCreateMotionContext(props) { + var _a = getCurrentTreeVariants(props, React.useContext(MotionContext)), + initial = _a.initial, + animate = _a.animate; + return React.useMemo(function () { + return { + initial: initial, + animate: animate + }; + }, [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]); +} +function variantLabelsAsDependency(prop) { + return Array.isArray(prop) ? prop.join(" ") : prop; +} + +/** + * Creates a constant value over the lifecycle of a component. + * + * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer + * a guarantee that it won't re-run for performance reasons later on. By using `useConstant` + * you can ensure that initialisers don't execute twice or more. + */ +function useConstant(init) { + var ref = React.useRef(null); + if (ref.current === null) { + ref.current = init(); + } + return ref.current; +} + +/** + * This should only ever be modified on the client otherwise it'll + * persist through server requests. If we need instanced states we + * could lazy-init via root. + */ +var globalProjectionState = { + /** + * Global flag as to whether the tree has animated since the last time + * we resized the window + */ + hasAnimatedSinceResize: true, + /** + * We set this to true once, on the first update. Any nodes added to the tree beyond that + * update will be given a `data-projection-id` attribute. + */ + hasEverUpdated: false +}; +var id$1 = 1; +function useProjectionId() { + return useConstant(function () { + if (globalProjectionState.hasEverUpdated) { + return id$1++; + } + }); +} +var LayoutGroupContext = React.createContext({}); + +/** + * Internal, exported only for usage in Framer + */ +var SwitchLayoutGroupContext = React.createContext({}); +function useProjection(projectionId, _a, visualElement, ProjectionNodeConstructor) { + var _b; + var layoutId = _a.layoutId, + layout = _a.layout, + drag = _a.drag, + dragConstraints = _a.dragConstraints, + layoutScroll = _a.layoutScroll; + var initialPromotionConfig = React.useContext(SwitchLayoutGroupContext); + if (!ProjectionNodeConstructor || !visualElement || (visualElement === null || visualElement === void 0 ? void 0 : visualElement.projection)) { + return; + } + visualElement.projection = new ProjectionNodeConstructor(projectionId, visualElement.getLatestValues(), (_b = visualElement.parent) === null || _b === void 0 ? void 0 : _b.projection); + visualElement.projection.setOptions({ + layoutId: layoutId, + layout: layout, + alwaysMeasureLayout: Boolean(drag) || dragConstraints && isRefObject(dragConstraints), + visualElement: visualElement, + scheduleRender: function () { + return visualElement.scheduleRender(); + }, + /** + * TODO: Update options in an effect. This could be tricky as it'll be too late + * to update by the time layout animations run. + * We also need to fix this safeToRemove by linking it up to the one returned by usePresence, + * ensuring it gets called if there's no potential layout animations. + * + */ + animationType: typeof layout === "string" ? layout : "both", + initialPromotionConfig: initialPromotionConfig, + layoutScroll: layoutScroll + }); +} +var VisualElementHandler = /** @class */function (_super) { + tslib.__extends(VisualElementHandler, _super); + function VisualElementHandler() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * Update visual element props as soon as we know this update is going to be commited. + */ + VisualElementHandler.prototype.getSnapshotBeforeUpdate = function () { + this.updateProps(); + return null; + }; + VisualElementHandler.prototype.componentDidUpdate = function () {}; + VisualElementHandler.prototype.updateProps = function () { + var _a = this.props, + visualElement = _a.visualElement, + props = _a.props; + if (visualElement) visualElement.setProps(props); + }; + VisualElementHandler.prototype.render = function () { + return this.props.children; + }; + return VisualElementHandler; +}(React__default["default"].Component); + +/** + * Create a `motion` component. + * + * This function accepts a Component argument, which can be either a string (ie "div" + * for `motion.div`), or an actual React component. + * + * Alongside this is a config option which provides a way of rendering the provided + * component "offline", or outside the React render cycle. + */ +function createMotionComponent(_a) { + var preloadedFeatures = _a.preloadedFeatures, + createVisualElement = _a.createVisualElement, + projectionNodeConstructor = _a.projectionNodeConstructor, + useRender = _a.useRender, + useVisualState = _a.useVisualState, + Component = _a.Component; + preloadedFeatures && loadFeatures(preloadedFeatures); + function MotionComponent(props, externalRef) { + var layoutId = useLayoutId(props); + props = tslib.__assign(tslib.__assign({}, props), { + layoutId: layoutId + }); + /** + * If we're rendering in a static environment, we only visually update the component + * as a result of a React-rerender rather than interactions or animations. This + * means we don't need to load additional memory structures like VisualElement, + * or any gesture/animation features. + */ + var config = React.useContext(MotionConfigContext); + var features = null; + var context = useCreateMotionContext(props); + /** + * Create a unique projection ID for this component. If a new component is added + * during a layout animation we'll use this to query the DOM and hydrate its ref early, allowing + * us to measure it as soon as any layout effect flushes pending layout animations. + * + * Performance note: It'd be better not to have to search the DOM for these elements. + * For newly-entering components it could be enough to only correct treeScale, in which + * case we could mount in a scale-correction mode. This wouldn't be enough for + * shared element transitions however. Perhaps for those we could revert to a root node + * that gets forceRendered and layout animations are triggered on its layout effect. + */ + var projectionId = config.isStatic ? undefined : useProjectionId(); + /** + * + */ + var visualState = useVisualState(props, config.isStatic); + if (!config.isStatic && isBrowser) { + /** + * Create a VisualElement for this component. A VisualElement provides a common + * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as + * providing a way of rendering to these APIs outside of the React render loop + * for more performant animations and interactions + */ + context.visualElement = useVisualElement(Component, visualState, tslib.__assign(tslib.__assign({}, config), props), createVisualElement); + useProjection(projectionId, props, context.visualElement, projectionNodeConstructor || featureDefinitions.projectionNodeConstructor); + /** + * Load Motion gesture and animation features. These are rendered as renderless + * components so each feature can optionally make use of React lifecycle methods. + */ + features = useFeatures(props, context.visualElement, preloadedFeatures); + } + /** + * The mount order and hierarchy is specific to ensure our element ref + * is hydrated by the time features fire their effects. + */ + return React__namespace.createElement(VisualElementHandler, { + visualElement: context.visualElement, + props: tslib.__assign(tslib.__assign({}, config), props) + }, features, React__namespace.createElement(MotionContext.Provider, { + value: context + }, useRender(Component, props, projectionId, useMotionRef(visualState, context.visualElement, externalRef), visualState, config.isStatic, context.visualElement))); + } + return React.forwardRef(MotionComponent); +} +function useLayoutId(_a) { + var _b; + var layoutId = _a.layoutId; + var layoutGroupId = (_b = React.useContext(LayoutGroupContext)) === null || _b === void 0 ? void 0 : _b.id; + return layoutGroupId && layoutId !== undefined ? layoutGroupId + "-" + layoutId : layoutId; +} + +/** + * Convert any React component into a `motion` component. The provided component + * **must** use `React.forwardRef` to the underlying DOM component you want to animate. + * + * ```jsx + * const Component = React.forwardRef((props, ref) => { + * return
+ * }) + * + * const MotionComponent = motion(Component) + * ``` + * + * @public + */ +function createMotionProxy(createConfig) { + function custom(Component, customMotionComponentConfig) { + if (customMotionComponentConfig === void 0) { + customMotionComponentConfig = {}; + } + return createMotionComponent(createConfig(Component, customMotionComponentConfig)); + } + if (typeof Proxy === "undefined") { + return custom; + } + /** + * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc. + * Rather than generating them anew every render. + */ + var componentCache = new Map(); + return new Proxy(custom, { + /** + * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc. + * The prop name is passed through as `key` and we can use that to generate a `motion` + * DOM component with that name. + */ + get: function (_target, key) { + /** + * If this element doesn't exist in the component cache, create it and cache. + */ + if (!componentCache.has(key)) { + componentCache.set(key, custom(key)); + } + return componentCache.get(key); + } + }); +} + +/** + * We keep these listed seperately as we use the lowercase tag names as part + * of the runtime bundle to detect SVG components + */ +var lowercaseSVGElements = ["animate", "circle", "defs", "desc", "ellipse", "g", "image", "line", "filter", "marker", "mask", "metadata", "path", "pattern", "polygon", "polyline", "rect", "stop", "svg", "switch", "symbol", "text", "tspan", "use", "view"]; +function isSVGComponent(Component) { + if ( + /** + * If it's not a string, it's a custom React component. Currently we only support + * HTML custom React components. + */ + typeof Component !== "string" || + /** + * If it contains a dash, the element is a custom HTML webcomponent. + */ + Component.includes("-")) { + return false; + } else if ( + /** + * If it's in our list of lowercase SVG tags, it's an SVG component + */ + lowercaseSVGElements.indexOf(Component) > -1 || + /** + * If it contains a capital letter, it's an SVG component + */ + /[A-Z]/.test(Component)) { + return true; + } + return false; +} +var scaleCorrectors = {}; +function addScaleCorrector(correctors) { + Object.assign(scaleCorrectors, correctors); +} + +/** + * A list of all transformable axes. We'll use this list to generated a version + * of each axes for each transform. + */ +var transformAxes = ["", "X", "Y", "Z"]; +/** + * An ordered array of each transformable value. By default, transform values + * will be sorted to this order. + */ +var order = ["translate", "scale", "rotate", "skew"]; +/** + * Generate a list of every possible transform key. + */ +var transformProps = ["transformPerspective", "x", "y", "z"]; +order.forEach(function (operationKey) { + return transformAxes.forEach(function (axesKey) { + return transformProps.push(operationKey + axesKey); + }); +}); +/** + * A function to use with Array.sort to sort transform keys by their default order. + */ +function sortTransformProps(a, b) { + return transformProps.indexOf(a) - transformProps.indexOf(b); +} +/** + * A quick lookup for transform props. + */ +var transformPropSet = new Set(transformProps); +function isTransformProp(key) { + return transformPropSet.has(key); +} +/** + * A quick lookup for transform origin props + */ +var transformOriginProps = new Set(["originX", "originY", "originZ"]); +function isTransformOriginProp(key) { + return transformOriginProps.has(key); +} +function isForcedMotionValue(key, _a) { + var layout = _a.layout, + layoutId = _a.layoutId; + return isTransformProp(key) || isTransformOriginProp(key) || (layout || layoutId !== undefined) && (!!scaleCorrectors[key] || key === "opacity"); +} +var isMotionValue = function (value) { + return Boolean(value !== null && typeof value === "object" && value.getVelocity); +}; +var translateAlias = { + x: "translateX", + y: "translateY", + z: "translateZ", + transformPerspective: "perspective" +}; +/** + * Build a CSS transform style from individual x/y/scale etc properties. + * + * This outputs with a default order of transforms/scales/rotations, this can be customised by + * providing a transformTemplate function. + */ +function buildTransform(_a, _b, transformIsDefault, transformTemplate) { + var transform = _a.transform, + transformKeys = _a.transformKeys; + var _c = _b.enableHardwareAcceleration, + enableHardwareAcceleration = _c === void 0 ? true : _c, + _d = _b.allowTransformNone, + allowTransformNone = _d === void 0 ? true : _d; + // The transform string we're going to build into. + var transformString = ""; + // Transform keys into their default order - this will determine the output order. + transformKeys.sort(sortTransformProps); + // Track whether the defined transform has a defined z so we don't add a + // second to enable hardware acceleration + var transformHasZ = false; + // Loop over each transform and build them into transformString + var numTransformKeys = transformKeys.length; + for (var i = 0; i < numTransformKeys; i++) { + var key = transformKeys[i]; + transformString += "".concat(translateAlias[key] || key, "(").concat(transform[key], ") "); + if (key === "z") transformHasZ = true; + } + if (!transformHasZ && enableHardwareAcceleration) { + transformString += "translateZ(0)"; + } else { + transformString = transformString.trim(); + } + // If we have a custom `transform` template, pass our transform values and + // generated transformString to that before returning + if (transformTemplate) { + transformString = transformTemplate(transform, transformIsDefault ? "" : transformString); + } else if (allowTransformNone && transformIsDefault) { + transformString = "none"; + } + return transformString; +} +/** + * Build a transformOrigin style. Uses the same defaults as the browser for + * undefined origins. + */ +function buildTransformOrigin(_a) { + var _b = _a.originX, + originX = _b === void 0 ? "50%" : _b, + _c = _a.originY, + originY = _c === void 0 ? "50%" : _c, + _d = _a.originZ, + originZ = _d === void 0 ? 0 : _d; + return "".concat(originX, " ").concat(originY, " ").concat(originZ); +} + +/** + * Returns true if the provided key is a CSS variable + */ +function isCSSVariable$1(key) { + return key.startsWith("--"); +} + +/** + * Provided a value and a ValueType, returns the value as that value type. + */ +var getValueAsType = function (value, type) { + return type && typeof value === "number" ? type.transform(value) : value; +}; +var int = tslib.__assign(tslib.__assign({}, styleValueTypes.number), { + transform: Math.round +}); +var numberValueTypes = { + // Border props + borderWidth: styleValueTypes.px, + borderTopWidth: styleValueTypes.px, + borderRightWidth: styleValueTypes.px, + borderBottomWidth: styleValueTypes.px, + borderLeftWidth: styleValueTypes.px, + borderRadius: styleValueTypes.px, + radius: styleValueTypes.px, + borderTopLeftRadius: styleValueTypes.px, + borderTopRightRadius: styleValueTypes.px, + borderBottomRightRadius: styleValueTypes.px, + borderBottomLeftRadius: styleValueTypes.px, + // Positioning props + width: styleValueTypes.px, + maxWidth: styleValueTypes.px, + height: styleValueTypes.px, + maxHeight: styleValueTypes.px, + size: styleValueTypes.px, + top: styleValueTypes.px, + right: styleValueTypes.px, + bottom: styleValueTypes.px, + left: styleValueTypes.px, + // Spacing props + padding: styleValueTypes.px, + paddingTop: styleValueTypes.px, + paddingRight: styleValueTypes.px, + paddingBottom: styleValueTypes.px, + paddingLeft: styleValueTypes.px, + margin: styleValueTypes.px, + marginTop: styleValueTypes.px, + marginRight: styleValueTypes.px, + marginBottom: styleValueTypes.px, + marginLeft: styleValueTypes.px, + // Transform props + rotate: styleValueTypes.degrees, + rotateX: styleValueTypes.degrees, + rotateY: styleValueTypes.degrees, + rotateZ: styleValueTypes.degrees, + scale: styleValueTypes.scale, + scaleX: styleValueTypes.scale, + scaleY: styleValueTypes.scale, + scaleZ: styleValueTypes.scale, + skew: styleValueTypes.degrees, + skewX: styleValueTypes.degrees, + skewY: styleValueTypes.degrees, + distance: styleValueTypes.px, + translateX: styleValueTypes.px, + translateY: styleValueTypes.px, + translateZ: styleValueTypes.px, + x: styleValueTypes.px, + y: styleValueTypes.px, + z: styleValueTypes.px, + perspective: styleValueTypes.px, + transformPerspective: styleValueTypes.px, + opacity: styleValueTypes.alpha, + originX: styleValueTypes.progressPercentage, + originY: styleValueTypes.progressPercentage, + originZ: styleValueTypes.px, + // Misc + zIndex: int, + // SVG + fillOpacity: styleValueTypes.alpha, + strokeOpacity: styleValueTypes.alpha, + numOctaves: int +}; +function buildHTMLStyles(state, latestValues, options, transformTemplate) { + var _a; + var style = state.style, + vars = state.vars, + transform = state.transform, + transformKeys = state.transformKeys, + transformOrigin = state.transformOrigin; + // Empty the transformKeys array. As we're throwing out refs to its items + // this might not be as cheap as suspected. Maybe using the array as a buffer + // with a manual incrementation would be better. + transformKeys.length = 0; + // Track whether we encounter any transform or transformOrigin values. + var hasTransform = false; + var hasTransformOrigin = false; + // Does the calculated transform essentially equal "none"? + var transformIsNone = true; + /** + * Loop over all our latest animated values and decide whether to handle them + * as a style or CSS variable. + * + * Transforms and transform origins are kept seperately for further processing. + */ + for (var key in latestValues) { + var value = latestValues[key]; + /** + * If this is a CSS variable we don't do any further processing. + */ + if (isCSSVariable$1(key)) { + vars[key] = value; + continue; + } + // Convert the value to its default value type, ie 0 -> "0px" + var valueType = numberValueTypes[key]; + var valueAsType = getValueAsType(value, valueType); + if (isTransformProp(key)) { + // If this is a transform, flag to enable further transform processing + hasTransform = true; + transform[key] = valueAsType; + transformKeys.push(key); + // If we already know we have a non-default transform, early return + if (!transformIsNone) continue; + // Otherwise check to see if this is a default transform + if (value !== ((_a = valueType.default) !== null && _a !== void 0 ? _a : 0)) transformIsNone = false; + } else if (isTransformOriginProp(key)) { + transformOrigin[key] = valueAsType; + // If this is a transform origin, flag and enable further transform-origin processing + hasTransformOrigin = true; + } else { + style[key] = valueAsType; + } + } + if (hasTransform) { + style.transform = buildTransform(state, options, transformIsNone, transformTemplate); + } else if (transformTemplate) { + style.transform = transformTemplate({}, ""); + } else if (!latestValues.transform && style.transform) { + style.transform = "none"; + } + if (hasTransformOrigin) { + style.transformOrigin = buildTransformOrigin(transformOrigin); + } +} +var createHtmlRenderState = function () { + return { + style: {}, + transform: {}, + transformKeys: [], + transformOrigin: {}, + vars: {} + }; +}; +function copyRawValuesOnly(target, source, props) { + for (var key in source) { + if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) { + target[key] = source[key]; + } + } +} +function useInitialMotionValues(_a, visualState, isStatic) { + var transformTemplate = _a.transformTemplate; + return React.useMemo(function () { + var state = createHtmlRenderState(); + buildHTMLStyles(state, visualState, { + enableHardwareAcceleration: !isStatic + }, transformTemplate); + var vars = state.vars, + style = state.style; + return tslib.__assign(tslib.__assign({}, vars), style); + }, [visualState]); +} +function useStyle(props, visualState, isStatic) { + var styleProp = props.style || {}; + var style = {}; + /** + * Copy non-Motion Values straight into style + */ + copyRawValuesOnly(style, styleProp, props); + Object.assign(style, useInitialMotionValues(props, visualState, isStatic)); + if (props.transformValues) { + style = props.transformValues(style); + } + return style; +} +function useHTMLProps(props, visualState, isStatic) { + // The `any` isn't ideal but it is the type of createElement props argument + var htmlProps = {}; + var style = useStyle(props, visualState, isStatic); + if (Boolean(props.drag) && props.dragListener !== false) { + // Disable the ghost element when a user drags + htmlProps.draggable = false; + // Disable text selection + style.userSelect = style.WebkitUserSelect = style.WebkitTouchCallout = "none"; + // Disable scrolling on the draggable direction + style.touchAction = props.drag === true ? "none" : "pan-".concat(props.drag === "x" ? "y" : "x"); + } + htmlProps.style = style; + return htmlProps; +} + +/** + * A list of all valid MotionProps. + * + * @privateRemarks + * This doesn't throw if a `MotionProp` name is missing - it should. + */ +var validMotionProps = new Set(["initial", "animate", "exit", "style", "variants", "transition", "transformTemplate", "transformValues", "custom", "inherit", "layout", "layoutId", "layoutDependency", "onLayoutAnimationStart", "onLayoutAnimationComplete", "onLayoutMeasure", "onBeforeLayoutMeasure", "onAnimationStart", "onAnimationComplete", "onUpdate", "onDragStart", "onDrag", "onDragEnd", "onMeasureDragConstraints", "onDirectionLock", "onDragTransitionEnd", "drag", "dragControls", "dragListener", "dragConstraints", "dragDirectionLock", "dragSnapToOrigin", "_dragX", "_dragY", "dragElastic", "dragMomentum", "dragPropagation", "dragTransition", "whileDrag", "onPan", "onPanStart", "onPanEnd", "onPanSessionStart", "onTap", "onTapStart", "onTapCancel", "onHoverStart", "onHoverEnd", "whileFocus", "whileTap", "whileHover", "whileInView", "onViewportEnter", "onViewportLeave", "viewport", "layoutScroll"]); +/** + * Check whether a prop name is a valid `MotionProp` key. + * + * @param key - Name of the property to check + * @returns `true` is key is a valid `MotionProp`. + * + * @public + */ +function isValidMotionProp(key) { + return validMotionProps.has(key); +} +var shouldForward = function (key) { + return !isValidMotionProp(key); +}; +function loadExternalIsValidProp(isValidProp) { + if (!isValidProp) return; + // Explicitly filter our events + shouldForward = function (key) { + return key.startsWith("on") ? !isValidMotionProp(key) : isValidProp(key); + }; +} +/** + * Emotion and Styled Components both allow users to pass through arbitrary props to their components + * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which + * of these should be passed to the underlying DOM node. + * + * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props + * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props + * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of + * `@emotion/is-prop-valid`, however to fix this problem we need to use it. + * + * By making it an optionalDependency we can offer this functionality only in the situations where it's + * actually required. + */ +try { + /** + * We attempt to import this package but require won't be defined in esm environments, in that case + * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed + * in favour of explicit injection. + */ + loadExternalIsValidProp((__webpack_require__(/*! @emotion/is-prop-valid */ "../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js")["default"])); +} catch (_a) { + // We don't need to actually do anything here - the fallback is the existing `isPropValid`. +} +function filterProps(props, isDom, forwardMotionProps) { + var filteredProps = {}; + for (var key in props) { + if (shouldForward(key) || forwardMotionProps === true && isValidMotionProp(key) || !isDom && !isValidMotionProp(key) || + // If trying to use native HTML drag events, forward drag listeners + props["draggable"] && key.startsWith("onDrag")) { + filteredProps[key] = props[key]; + } + } + return filteredProps; +} +function calcOrigin$1(origin, offset, size) { + return typeof origin === "string" ? origin : styleValueTypes.px.transform(offset + size * origin); +} +/** + * The SVG transform origin defaults are different to CSS and is less intuitive, + * so we use the measured dimensions of the SVG to reconcile these. + */ +function calcSVGTransformOrigin(dimensions, originX, originY) { + var pxOriginX = calcOrigin$1(originX, dimensions.x, dimensions.width); + var pxOriginY = calcOrigin$1(originY, dimensions.y, dimensions.height); + return "".concat(pxOriginX, " ").concat(pxOriginY); +} +var dashKeys = { + offset: "stroke-dashoffset", + array: "stroke-dasharray" +}; +var camelKeys = { + offset: "strokeDashoffset", + array: "strokeDasharray" +}; +/** + * Build SVG path properties. Uses the path's measured length to convert + * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset + * and stroke-dasharray attributes. + * + * This function is mutative to reduce per-frame GC. + */ +function buildSVGPath(attrs, length, spacing, offset, useDashCase) { + if (spacing === void 0) { + spacing = 1; + } + if (offset === void 0) { + offset = 0; + } + if (useDashCase === void 0) { + useDashCase = true; + } + // Normalise path length by setting SVG attribute pathLength to 1 + attrs.pathLength = 1; + // We use dash case when setting attributes directly to the DOM node and camel case + // when defining props on a React component. + var keys = useDashCase ? dashKeys : camelKeys; + // Build the dash offset + attrs[keys.offset] = styleValueTypes.px.transform(-offset); + // Build the dash array + var pathLength = styleValueTypes.px.transform(length); + var pathSpacing = styleValueTypes.px.transform(spacing); + attrs[keys.array] = "".concat(pathLength, " ").concat(pathSpacing); +} + +/** + * Build SVG visual attrbutes, like cx and style.transform + */ +function buildSVGAttrs(state, _a, options, transformTemplate) { + var attrX = _a.attrX, + attrY = _a.attrY, + originX = _a.originX, + originY = _a.originY, + pathLength = _a.pathLength, + _b = _a.pathSpacing, + pathSpacing = _b === void 0 ? 1 : _b, + _c = _a.pathOffset, + pathOffset = _c === void 0 ? 0 : _c, + // This is object creation, which we try to avoid per-frame. + latest = tslib.__rest(_a, ["attrX", "attrY", "originX", "originY", "pathLength", "pathSpacing", "pathOffset"]); + buildHTMLStyles(state, latest, options, transformTemplate); + state.attrs = state.style; + state.style = {}; + var attrs = state.attrs, + style = state.style, + dimensions = state.dimensions; + /** + * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs + * and copy it into style. + */ + if (attrs.transform) { + if (dimensions) style.transform = attrs.transform; + delete attrs.transform; + } + // Parse transformOrigin + if (dimensions && (originX !== undefined || originY !== undefined || style.transform)) { + style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5); + } + // Treat x/y not as shortcuts but as actual attributes + if (attrX !== undefined) attrs.x = attrX; + if (attrY !== undefined) attrs.y = attrY; + // Build SVG path if one has been defined + if (pathLength !== undefined) { + buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false); + } +} +var createSvgRenderState = function () { + return tslib.__assign(tslib.__assign({}, createHtmlRenderState()), { + attrs: {} + }); +}; +function useSVGProps(props, visualState) { + var visualProps = React.useMemo(function () { + var state = createSvgRenderState(); + buildSVGAttrs(state, visualState, { + enableHardwareAcceleration: false + }, props.transformTemplate); + return tslib.__assign(tslib.__assign({}, state.attrs), { + style: tslib.__assign({}, state.style) + }); + }, [visualState]); + if (props.style) { + var rawStyles = {}; + copyRawValuesOnly(rawStyles, props.style, props); + visualProps.style = tslib.__assign(tslib.__assign({}, rawStyles), visualProps.style); + } + return visualProps; +} +function createUseRender(forwardMotionProps) { + if (forwardMotionProps === void 0) { + forwardMotionProps = false; + } + var useRender = function (Component, props, projectionId, ref, _a, isStatic) { + var latestValues = _a.latestValues; + var useVisualProps = isSVGComponent(Component) ? useSVGProps : useHTMLProps; + var visualProps = useVisualProps(props, latestValues, isStatic); + var filteredProps = filterProps(props, typeof Component === "string", forwardMotionProps); + var elementProps = tslib.__assign(tslib.__assign(tslib.__assign({}, filteredProps), visualProps), { + ref: ref + }); + if (projectionId) { + elementProps["data-projection-id"] = projectionId; + } + return React.createElement(Component, elementProps); + }; + return useRender; +} +var CAMEL_CASE_PATTERN = /([a-z])([A-Z])/g; +var REPLACE_TEMPLATE = "$1-$2"; +/** + * Convert camelCase to dash-case properties. + */ +var camelToDash = function (str) { + return str.replace(CAMEL_CASE_PATTERN, REPLACE_TEMPLATE).toLowerCase(); +}; +function renderHTML(element, _a, styleProp, projection) { + var style = _a.style, + vars = _a.vars; + Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp)); + // Loop over any CSS variables and assign those. + for (var key in vars) { + element.style.setProperty(key, vars[key]); + } +} + +/** + * A set of attribute names that are always read/written as camel case. + */ +var camelCaseAttributes = new Set(["baseFrequency", "diffuseConstant", "kernelMatrix", "kernelUnitLength", "keySplines", "keyTimes", "limitingConeAngle", "markerHeight", "markerWidth", "numOctaves", "targetX", "targetY", "surfaceScale", "specularConstant", "specularExponent", "stdDeviation", "tableValues", "viewBox", "gradientTransform", "pathLength"]); +function renderSVG(element, renderState, _styleProp, projection) { + renderHTML(element, renderState, undefined, projection); + for (var key in renderState.attrs) { + element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]); + } +} +function scrapeMotionValuesFromProps$1(props) { + var style = props.style; + var newValues = {}; + for (var key in style) { + if (isMotionValue(style[key]) || isForcedMotionValue(key, props)) { + newValues[key] = style[key]; + } + } + return newValues; +} +function scrapeMotionValuesFromProps(props) { + var newValues = scrapeMotionValuesFromProps$1(props); + for (var key in props) { + if (isMotionValue(props[key])) { + var targetKey = key === "x" || key === "y" ? "attr" + key.toUpperCase() : key; + newValues[targetKey] = props[key]; + } + } + return newValues; +} +function isAnimationControls(v) { + return typeof v === "object" && typeof v.start === "function"; +} +var isKeyframesTarget = function (v) { + return Array.isArray(v); +}; +var isCustomValue = function (v) { + return Boolean(v && typeof v === "object" && v.mix && v.toValue); +}; +var resolveFinalValueInKeyframes = function (v) { + // TODO maybe throw if v.length - 1 is placeholder token? + return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v; +}; + +/** + * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself + * + * TODO: Remove and move to library + */ +function resolveMotionValue(value) { + var unwrappedValue = isMotionValue(value) ? value.get() : value; + return isCustomValue(unwrappedValue) ? unwrappedValue.toValue() : unwrappedValue; +} +function makeState(_a, props, context, presenceContext) { + var scrapeMotionValuesFromProps = _a.scrapeMotionValuesFromProps, + createRenderState = _a.createRenderState, + onMount = _a.onMount; + var state = { + latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps), + renderState: createRenderState() + }; + if (onMount) { + state.mount = function (instance) { + return onMount(props, instance, state); + }; + } + return state; +} +var makeUseVisualState = function (config) { + return function (props, isStatic) { + var context = React.useContext(MotionContext); + var presenceContext = React.useContext(PresenceContext); + return isStatic ? makeState(config, props, context, presenceContext) : useConstant(function () { + return makeState(config, props, context, presenceContext); + }); + }; +}; +function makeLatestValues(props, context, presenceContext, scrapeMotionValues) { + var values = {}; + var blockInitialAnimation = (presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) === false; + var motionValues = scrapeMotionValues(props); + for (var key in motionValues) { + values[key] = resolveMotionValue(motionValues[key]); + } + var initial = props.initial, + animate = props.animate; + var isControllingVariants = checkIfControllingVariants(props); + var isVariantNode = checkIfVariantNode(props); + if (context && isVariantNode && !isControllingVariants && props.inherit !== false) { + initial !== null && initial !== void 0 ? initial : initial = context.initial; + animate !== null && animate !== void 0 ? animate : animate = context.animate; + } + var initialAnimationIsBlocked = blockInitialAnimation || initial === false; + var variantToSet = initialAnimationIsBlocked ? animate : initial; + if (variantToSet && typeof variantToSet !== "boolean" && !isAnimationControls(variantToSet)) { + var list = Array.isArray(variantToSet) ? variantToSet : [variantToSet]; + list.forEach(function (definition) { + var resolved = resolveVariantFromProps(props, definition); + if (!resolved) return; + var transitionEnd = resolved.transitionEnd; + resolved.transition; + var target = tslib.__rest(resolved, ["transitionEnd", "transition"]); + for (var key in target) { + var valueTarget = target[key]; + if (Array.isArray(valueTarget)) { + /** + * Take final keyframe if the initial animation is blocked because + * we want to initialise at the end of that blocked animation. + */ + var index = initialAnimationIsBlocked ? valueTarget.length - 1 : 0; + valueTarget = valueTarget[index]; + } + if (valueTarget !== null) { + values[key] = valueTarget; + } + } + for (var key in transitionEnd) values[key] = transitionEnd[key]; + }); + } + return values; +} +var svgMotionConfig = { + useVisualState: makeUseVisualState({ + scrapeMotionValuesFromProps: scrapeMotionValuesFromProps, + createRenderState: createSvgRenderState, + onMount: function (props, instance, _a) { + var renderState = _a.renderState, + latestValues = _a.latestValues; + try { + renderState.dimensions = typeof instance.getBBox === "function" ? instance.getBBox() : instance.getBoundingClientRect(); + } catch (e) { + // Most likely trying to measure an unrendered element under Firefox + renderState.dimensions = { + x: 0, + y: 0, + width: 0, + height: 0 + }; + } + buildSVGAttrs(renderState, latestValues, { + enableHardwareAcceleration: false + }, props.transformTemplate); + renderSVG(instance, renderState); + } + }) +}; +var htmlMotionConfig = { + useVisualState: makeUseVisualState({ + scrapeMotionValuesFromProps: scrapeMotionValuesFromProps$1, + createRenderState: createHtmlRenderState + }) +}; +function createDomMotionConfig(Component, _a, preloadedFeatures, createVisualElement, projectionNodeConstructor) { + var _b = _a.forwardMotionProps, + forwardMotionProps = _b === void 0 ? false : _b; + var baseConfig = isSVGComponent(Component) ? svgMotionConfig : htmlMotionConfig; + return tslib.__assign(tslib.__assign({}, baseConfig), { + preloadedFeatures: preloadedFeatures, + useRender: createUseRender(forwardMotionProps), + createVisualElement: createVisualElement, + projectionNodeConstructor: projectionNodeConstructor, + Component: Component + }); +} +exports.AnimationType = void 0; +(function (AnimationType) { + AnimationType["Animate"] = "animate"; + AnimationType["Hover"] = "whileHover"; + AnimationType["Tap"] = "whileTap"; + AnimationType["Drag"] = "whileDrag"; + AnimationType["Focus"] = "whileFocus"; + AnimationType["InView"] = "whileInView"; + AnimationType["Exit"] = "exit"; +})(exports.AnimationType || (exports.AnimationType = {})); +function addDomEvent(target, eventName, handler, options) { + if (options === void 0) { + options = { + passive: true + }; + } + target.addEventListener(eventName, handler, options); + return function () { + return target.removeEventListener(eventName, handler); + }; +} +/** + * Attaches an event listener directly to the provided DOM element. + * + * Bypassing React's event system can be desirable, for instance when attaching non-passive + * event handlers. + * + * ```jsx + * const ref = useRef(null) + * + * useDomEvent(ref, 'wheel', onWheel, { passive: false }) + * + * return
+ * ``` + * + * @param ref - React.RefObject that's been provided to the element you want to bind the listener to. + * @param eventName - Name of the event you want listen for. + * @param handler - Function to fire when receiving the event. + * @param options - Options to pass to `Event.addEventListener`. + * + * @public + */ +function useDomEvent(ref, eventName, handler, options) { + React.useEffect(function () { + var element = ref.current; + if (handler && element) { + return addDomEvent(element, eventName, handler, options); + } + }, [ref, eventName, handler, options]); +} + +/** + * + * @param props + * @param ref + * @internal + */ +function useFocusGesture(_a) { + var whileFocus = _a.whileFocus, + visualElement = _a.visualElement; + var onFocus = function () { + var _a; + (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.Focus, true); + }; + var onBlur = function () { + var _a; + (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.Focus, false); + }; + useDomEvent(visualElement, "focus", whileFocus ? onFocus : undefined); + useDomEvent(visualElement, "blur", whileFocus ? onBlur : undefined); +} +function isMouseEvent(event) { + // PointerEvent inherits from MouseEvent so we can't use a straight instanceof check. + if (typeof PointerEvent !== "undefined" && event instanceof PointerEvent) { + return !!(event.pointerType === "mouse"); + } + return event instanceof MouseEvent; +} +function isTouchEvent(event) { + var hasTouches = !!event.touches; + return hasTouches; +} + +/** + * Filters out events not attached to the primary pointer (currently left mouse button) + * @param eventHandler + */ +function filterPrimaryPointer(eventHandler) { + return function (event) { + var isMouseEvent = event instanceof MouseEvent; + var isPrimaryPointer = !isMouseEvent || isMouseEvent && event.button === 0; + if (isPrimaryPointer) { + eventHandler(event); + } + }; +} +var defaultPagePoint = { + pageX: 0, + pageY: 0 +}; +function pointFromTouch(e, pointType) { + if (pointType === void 0) { + pointType = "page"; + } + var primaryTouch = e.touches[0] || e.changedTouches[0]; + var point = primaryTouch || defaultPagePoint; + return { + x: point[pointType + "X"], + y: point[pointType + "Y"] + }; +} +function pointFromMouse(point, pointType) { + if (pointType === void 0) { + pointType = "page"; + } + return { + x: point[pointType + "X"], + y: point[pointType + "Y"] + }; +} +function extractEventInfo(event, pointType) { + if (pointType === void 0) { + pointType = "page"; + } + return { + point: isTouchEvent(event) ? pointFromTouch(event, pointType) : pointFromMouse(event, pointType) + }; +} +var wrapHandler = function (handler, shouldFilterPrimaryPointer) { + if (shouldFilterPrimaryPointer === void 0) { + shouldFilterPrimaryPointer = false; + } + var listener = function (event) { + return handler(event, extractEventInfo(event)); + }; + return shouldFilterPrimaryPointer ? filterPrimaryPointer(listener) : listener; +}; + +// We check for event support via functions in case they've been mocked by a testing suite. +var supportsPointerEvents = function () { + return isBrowser && window.onpointerdown === null; +}; +var supportsTouchEvents = function () { + return isBrowser && window.ontouchstart === null; +}; +var supportsMouseEvents = function () { + return isBrowser && window.onmousedown === null; +}; +var mouseEventNames = { + pointerdown: "mousedown", + pointermove: "mousemove", + pointerup: "mouseup", + pointercancel: "mousecancel", + pointerover: "mouseover", + pointerout: "mouseout", + pointerenter: "mouseenter", + pointerleave: "mouseleave" +}; +var touchEventNames = { + pointerdown: "touchstart", + pointermove: "touchmove", + pointerup: "touchend", + pointercancel: "touchcancel" +}; +function getPointerEventName(name) { + if (supportsPointerEvents()) { + return name; + } else if (supportsTouchEvents()) { + return touchEventNames[name]; + } else if (supportsMouseEvents()) { + return mouseEventNames[name]; + } + return name; +} +function addPointerEvent(target, eventName, handler, options) { + return addDomEvent(target, getPointerEventName(eventName), wrapHandler(handler, eventName === "pointerdown"), options); +} +function usePointerEvent(ref, eventName, handler, options) { + return useDomEvent(ref, getPointerEventName(eventName), handler && wrapHandler(handler, eventName === "pointerdown"), options); +} +function createLock(name) { + var lock = null; + return function () { + var openLock = function () { + lock = null; + }; + if (lock === null) { + lock = name; + return openLock; + } + return false; + }; +} +var globalHorizontalLock = createLock("dragHorizontal"); +var globalVerticalLock = createLock("dragVertical"); +function getGlobalLock(drag) { + var lock = false; + if (drag === "y") { + lock = globalVerticalLock(); + } else if (drag === "x") { + lock = globalHorizontalLock(); + } else { + var openHorizontal_1 = globalHorizontalLock(); + var openVertical_1 = globalVerticalLock(); + if (openHorizontal_1 && openVertical_1) { + lock = function () { + openHorizontal_1(); + openVertical_1(); + }; + } else { + // Release the locks because we don't use them + if (openHorizontal_1) openHorizontal_1(); + if (openVertical_1) openVertical_1(); + } + } + return lock; +} +function isDragActive() { + // Check the gesture lock - if we get it, it means no drag gesture is active + // and we can safely fire the tap gesture. + var openGestureLock = getGlobalLock(true); + if (!openGestureLock) return true; + openGestureLock(); + return false; +} +function createHoverEvent(visualElement, isActive, callback) { + return function (event, info) { + var _a; + if (!isMouseEvent(event) || isDragActive()) return; + /** + * Ensure we trigger animations before firing event callback + */ + (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.Hover, isActive); + callback === null || callback === void 0 ? void 0 : callback(event, info); + }; +} +function useHoverGesture(_a) { + var onHoverStart = _a.onHoverStart, + onHoverEnd = _a.onHoverEnd, + whileHover = _a.whileHover, + visualElement = _a.visualElement; + usePointerEvent(visualElement, "pointerenter", onHoverStart || whileHover ? createHoverEvent(visualElement, true, onHoverStart) : undefined, { + passive: !onHoverStart + }); + usePointerEvent(visualElement, "pointerleave", onHoverEnd || whileHover ? createHoverEvent(visualElement, false, onHoverEnd) : undefined, { + passive: !onHoverEnd + }); +} + +/** + * Recursively traverse up the tree to check whether the provided child node + * is the parent or a descendant of it. + * + * @param parent - Element to find + * @param child - Element to test against parent + */ +var isNodeOrChild = function (parent, child) { + if (!child) { + return false; + } else if (parent === child) { + return true; + } else { + return isNodeOrChild(parent, child.parentElement); + } +}; +function useUnmountEffect(callback) { + return React.useEffect(function () { + return function () { + return callback(); + }; + }, []); +} + +/** + * @param handlers - + * @internal + */ +function useTapGesture(_a) { + var onTap = _a.onTap, + onTapStart = _a.onTapStart, + onTapCancel = _a.onTapCancel, + whileTap = _a.whileTap, + visualElement = _a.visualElement; + var hasPressListeners = onTap || onTapStart || onTapCancel || whileTap; + var isPressing = React.useRef(false); + var cancelPointerEndListeners = React.useRef(null); + /** + * Only set listener to passive if there are no external listeners. + */ + var eventOptions = { + passive: !(onTapStart || onTap || onTapCancel || onPointerDown) + }; + function removePointerEndListener() { + var _a; + (_a = cancelPointerEndListeners.current) === null || _a === void 0 ? void 0 : _a.call(cancelPointerEndListeners); + cancelPointerEndListeners.current = null; + } + function checkPointerEnd() { + var _a; + removePointerEndListener(); + isPressing.current = false; + (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.Tap, false); + return !isDragActive(); + } + function onPointerUp(event, info) { + if (!checkPointerEnd()) return; + /** + * We only count this as a tap gesture if the event.target is the same + * as, or a child of, this component's element + */ + !isNodeOrChild(visualElement.getInstance(), event.target) ? onTapCancel === null || onTapCancel === void 0 ? void 0 : onTapCancel(event, info) : onTap === null || onTap === void 0 ? void 0 : onTap(event, info); + } + function onPointerCancel(event, info) { + if (!checkPointerEnd()) return; + onTapCancel === null || onTapCancel === void 0 ? void 0 : onTapCancel(event, info); + } + function onPointerDown(event, info) { + var _a; + removePointerEndListener(); + if (isPressing.current) return; + isPressing.current = true; + cancelPointerEndListeners.current = popmotion.pipe(addPointerEvent(window, "pointerup", onPointerUp, eventOptions), addPointerEvent(window, "pointercancel", onPointerCancel, eventOptions)); + /** + * Ensure we trigger animations before firing event callback + */ + (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.Tap, true); + onTapStart === null || onTapStart === void 0 ? void 0 : onTapStart(event, info); + } + usePointerEvent(visualElement, "pointerdown", hasPressListeners ? onPointerDown : undefined, eventOptions); + useUnmountEffect(removePointerEndListener); +} +var warned = new Set(); +function warnOnce(condition, message, element) { + if (condition || warned.has(message)) return; + console.warn(message); + if (element) console.warn(element); + warned.add(message); +} + +/** + * Map an IntersectionHandler callback to an element. We only ever make one handler for one + * element, so even though these handlers might all be triggered by different + * observers, we can keep them in the same map. + */ +var observerCallbacks = new WeakMap(); +/** + * Multiple observers can be created for multiple element/document roots. Each with + * different settings. So here we store dictionaries of observers to each root, + * using serialised settings (threshold/margin) as lookup keys. + */ +var observers = new WeakMap(); +var fireObserverCallback = function (entry) { + var _a; + (_a = observerCallbacks.get(entry.target)) === null || _a === void 0 ? void 0 : _a(entry); +}; +var fireAllObserverCallbacks = function (entries) { + entries.forEach(fireObserverCallback); +}; +function initIntersectionObserver(_a) { + var root = _a.root, + options = tslib.__rest(_a, ["root"]); + var lookupRoot = root || document; + /** + * If we don't have an observer lookup map for this root, create one. + */ + if (!observers.has(lookupRoot)) { + observers.set(lookupRoot, {}); + } + var rootObservers = observers.get(lookupRoot); + var key = JSON.stringify(options); + /** + * If we don't have an observer for this combination of root and settings, + * create one. + */ + if (!rootObservers[key]) { + rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, tslib.__assign({ + root: root + }, options)); + } + return rootObservers[key]; +} +function observeIntersection(element, options, callback) { + var rootInteresectionObserver = initIntersectionObserver(options); + observerCallbacks.set(element, callback); + rootInteresectionObserver.observe(element); + return function () { + observerCallbacks.delete(element); + rootInteresectionObserver.unobserve(element); + }; +} +function useViewport(_a) { + var visualElement = _a.visualElement, + whileInView = _a.whileInView, + onViewportEnter = _a.onViewportEnter, + onViewportLeave = _a.onViewportLeave, + _b = _a.viewport, + viewport = _b === void 0 ? {} : _b; + var state = React.useRef({ + hasEnteredView: false, + isInView: false + }); + var shouldObserve = Boolean(whileInView || onViewportEnter || onViewportLeave); + if (viewport.once && state.current.hasEnteredView) shouldObserve = false; + var useObserver = typeof IntersectionObserver === "undefined" ? useMissingIntersectionObserver : useIntersectionObserver; + useObserver(shouldObserve, state.current, visualElement, viewport); +} +var thresholdNames = { + some: 0, + all: 1 +}; +function useIntersectionObserver(shouldObserve, state, visualElement, _a) { + var root = _a.root, + rootMargin = _a.margin, + _b = _a.amount, + amount = _b === void 0 ? "some" : _b, + once = _a.once; + React.useEffect(function () { + if (!shouldObserve) return; + var options = { + root: root === null || root === void 0 ? void 0 : root.current, + rootMargin: rootMargin, + threshold: typeof amount === "number" ? amount : thresholdNames[amount] + }; + var intersectionCallback = function (entry) { + var _a; + var isIntersecting = entry.isIntersecting; + /** + * If there's been no change in the viewport state, early return. + */ + if (state.isInView === isIntersecting) return; + state.isInView = isIntersecting; + /** + * Handle hasEnteredView. If this is only meant to run once, and + * element isn't visible, early return. Otherwise set hasEnteredView to true. + */ + if (once && !isIntersecting && state.hasEnteredView) { + return; + } else if (isIntersecting) { + state.hasEnteredView = true; + } + (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.InView, isIntersecting); + /** + * Use the latest committed props rather than the ones in scope + * when this observer is created + */ + var props = visualElement.getProps(); + var callback = isIntersecting ? props.onViewportEnter : props.onViewportLeave; + callback === null || callback === void 0 ? void 0 : callback(entry); + }; + return observeIntersection(visualElement.getInstance(), options, intersectionCallback); + }, [shouldObserve, root, rootMargin, amount]); +} +/** + * If IntersectionObserver is missing, we activate inView and fire onViewportEnter + * on mount. This way, the page will be in the state the author expects users + * to see it in for everyone. + */ +function useMissingIntersectionObserver(shouldObserve, state, visualElement, _a) { + var _b = _a.fallback, + fallback = _b === void 0 ? true : _b; + React.useEffect(function () { + if (!shouldObserve || !fallback) return; + if (env !== "production") { + warnOnce(false, "IntersectionObserver not available on this device. whileInView animations will trigger on mount."); + } + /** + * Fire this in an rAF because, at this point, the animation state + * won't have flushed for the first time and there's certain logic in + * there that behaves differently on the initial animation. + * + * This hook should be quite rarely called so setting this in an rAF + * is preferred to changing the behaviour of the animation state. + */ + requestAnimationFrame(function () { + var _a; + state.hasEnteredView = true; + var onViewportEnter = visualElement.getProps().onViewportEnter; + onViewportEnter === null || onViewportEnter === void 0 ? void 0 : onViewportEnter(null); + (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.InView, true); + }); + }, [shouldObserve]); +} +var makeRenderlessComponent = function (hook) { + return function (props) { + hook(props); + return null; + }; +}; +var gestureAnimations = { + inView: makeRenderlessComponent(useViewport), + tap: makeRenderlessComponent(useTapGesture), + focus: makeRenderlessComponent(useFocusGesture), + hover: makeRenderlessComponent(useHoverGesture) +}; +var counter = 0; +var incrementId = function () { + return counter++; +}; +var useId = function () { + return useConstant(incrementId); +}; +/** + * Ideally we'd use the following code to support React 18 optionally. + * But this fairly fails in Webpack (otherwise treeshaking wouldn't work at all). + * Need to come up with a different way of figuring this out. + */ +// export const useId = (React as any).useId +// ? (React as any).useId +// : () => useConstant(incrementId) + +/** + * When a component is the child of `AnimatePresence`, it can use `usePresence` + * to access information about whether it's still present in the React tree. + * + * ```jsx + * import { usePresence } from "framer-motion" + * + * export const Component = () => { + * const [isPresent, safeToRemove] = usePresence() + * + * useEffect(() => { + * !isPresent && setTimeout(safeToRemove, 1000) + * }, [isPresent]) + * + * return
+ * } + * ``` + * + * If `isPresent` is `false`, it means that a component has been removed the tree, but + * `AnimatePresence` won't really remove it until `safeToRemove` has been called. + * + * @public + */ +function usePresence() { + var context = React.useContext(PresenceContext); + if (context === null) return [true, null]; + var isPresent = context.isPresent, + onExitComplete = context.onExitComplete, + register = context.register; + // It's safe to call the following hooks conditionally (after an early return) because the context will always + // either be null or non-null for the lifespan of the component. + // Replace with useId when released in React + var id = useId(); + React.useEffect(function () { + return register(id); + }, []); + var safeToRemove = function () { + return onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete(id); + }; + return !isPresent && onExitComplete ? [false, safeToRemove] : [true]; +} +/** + * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present. + * There is no `safeToRemove` function. + * + * ```jsx + * import { useIsPresent } from "framer-motion" + * + * export const Component = () => { + * const isPresent = useIsPresent() + * + * useEffect(() => { + * !isPresent && console.log("I've been removed!") + * }, [isPresent]) + * + * return
+ * } + * ``` + * + * @public + */ +function useIsPresent() { + return isPresent(React.useContext(PresenceContext)); +} +function isPresent(context) { + return context === null ? true : context.isPresent; +} +function shallowCompare(next, prev) { + if (!Array.isArray(prev)) return false; + var prevLength = prev.length; + if (prevLength !== next.length) return false; + for (var i = 0; i < prevLength; i++) { + if (prev[i] !== next[i]) return false; + } + return true; +} + +/** + * Converts seconds to milliseconds + * + * @param seconds - Time in seconds. + * @return milliseconds - Converted time in milliseconds. + */ +var secondsToMilliseconds = function (seconds) { + return seconds * 1000; +}; +var easingLookup = { + linear: popmotion.linear, + easeIn: popmotion.easeIn, + easeInOut: popmotion.easeInOut, + easeOut: popmotion.easeOut, + circIn: popmotion.circIn, + circInOut: popmotion.circInOut, + circOut: popmotion.circOut, + backIn: popmotion.backIn, + backInOut: popmotion.backInOut, + backOut: popmotion.backOut, + anticipate: popmotion.anticipate, + bounceIn: popmotion.bounceIn, + bounceInOut: popmotion.bounceInOut, + bounceOut: popmotion.bounceOut +}; +var easingDefinitionToFunction = function (definition) { + if (Array.isArray(definition)) { + // If cubic bezier definition, create bezier curve + heyListen.invariant(definition.length === 4, "Cubic bezier arrays must contain four numerical values."); + var _a = tslib.__read(definition, 4), + x1 = _a[0], + y1 = _a[1], + x2 = _a[2], + y2 = _a[3]; + return popmotion.cubicBezier(x1, y1, x2, y2); + } else if (typeof definition === "string") { + // Else lookup from table + heyListen.invariant(easingLookup[definition] !== undefined, "Invalid easing type '".concat(definition, "'")); + return easingLookup[definition]; + } + return definition; +}; +var isEasingArray = function (ease) { + return Array.isArray(ease) && typeof ease[0] !== "number"; +}; + +/** + * Check if a value is animatable. Examples: + * + * ✅: 100, "100px", "#fff" + * ❌: "block", "url(2.jpg)" + * @param value + * + * @internal + */ +var isAnimatable = function (key, value) { + // If the list of keys tat might be non-animatable grows, replace with Set + if (key === "zIndex") return false; + // If it's a number or a keyframes array, we can animate it. We might at some point + // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this, + // but for now lets leave it like this for performance reasons + if (typeof value === "number" || Array.isArray(value)) return true; + if (typeof value === "string" && + // It's animatable if we have a string + styleValueTypes.complex.test(value) && + // And it contains numbers and/or colors + !value.startsWith("url(") // Unless it starts with "url(" + ) { + return true; + } + return false; +}; +var underDampedSpring = function () { + return { + type: "spring", + stiffness: 500, + damping: 25, + restSpeed: 10 + }; +}; +var criticallyDampedSpring = function (to) { + return { + type: "spring", + stiffness: 550, + damping: to === 0 ? 2 * Math.sqrt(550) : 30, + restSpeed: 10 + }; +}; +var linearTween = function () { + return { + type: "keyframes", + ease: "linear", + duration: 0.3 + }; +}; +var keyframes = function (values) { + return { + type: "keyframes", + duration: 0.8, + values: values + }; +}; +var defaultTransitions = { + x: underDampedSpring, + y: underDampedSpring, + z: underDampedSpring, + rotate: underDampedSpring, + rotateX: underDampedSpring, + rotateY: underDampedSpring, + rotateZ: underDampedSpring, + scaleX: criticallyDampedSpring, + scaleY: criticallyDampedSpring, + scale: criticallyDampedSpring, + opacity: linearTween, + backgroundColor: linearTween, + color: linearTween, + default: criticallyDampedSpring +}; +var getDefaultTransition = function (valueKey, to) { + var transitionFactory; + if (isKeyframesTarget(to)) { + transitionFactory = keyframes; + } else { + transitionFactory = defaultTransitions[valueKey] || defaultTransitions.default; + } + return tslib.__assign({ + to: to + }, transitionFactory(to)); +}; + +/** + * A map of default value types for common values + */ +var defaultValueTypes = tslib.__assign(tslib.__assign({}, numberValueTypes), { + // Color props + color: styleValueTypes.color, + backgroundColor: styleValueTypes.color, + outlineColor: styleValueTypes.color, + fill: styleValueTypes.color, + stroke: styleValueTypes.color, + // Border props + borderColor: styleValueTypes.color, + borderTopColor: styleValueTypes.color, + borderRightColor: styleValueTypes.color, + borderBottomColor: styleValueTypes.color, + borderLeftColor: styleValueTypes.color, + filter: styleValueTypes.filter, + WebkitFilter: styleValueTypes.filter +}); +/** + * Gets the default ValueType for the provided value key + */ +var getDefaultValueType = function (key) { + return defaultValueTypes[key]; +}; +function getAnimatableNone(key, value) { + var _a; + var defaultValueType = getDefaultValueType(key); + if (defaultValueType !== styleValueTypes.filter) defaultValueType = styleValueTypes.complex; + // If value is not recognised as animatable, ie "none", create an animatable version origin based on the target + return (_a = defaultValueType.getAnimatableNone) === null || _a === void 0 ? void 0 : _a.call(defaultValueType, value); +} +var instantAnimationState = { + current: false +}; + +/** + * Decide whether a transition is defined on a given Transition. + * This filters out orchestration options and returns true + * if any options are left. + */ +function isTransitionDefined(_a) { + _a.when; + _a.delay; + _a.delayChildren; + _a.staggerChildren; + _a.staggerDirection; + _a.repeat; + _a.repeatType; + _a.repeatDelay; + _a.from; + var transition = tslib.__rest(_a, ["when", "delay", "delayChildren", "staggerChildren", "staggerDirection", "repeat", "repeatType", "repeatDelay", "from"]); + return !!Object.keys(transition).length; +} +var legacyRepeatWarning = false; +/** + * Convert Framer Motion's Transition type into Popmotion-compatible options. + */ +function convertTransitionToAnimationOptions(_a) { + var ease = _a.ease, + times = _a.times, + yoyo = _a.yoyo, + flip = _a.flip, + loop = _a.loop, + transition = tslib.__rest(_a, ["ease", "times", "yoyo", "flip", "loop"]); + var options = tslib.__assign({}, transition); + if (times) options["offset"] = times; + /** + * Convert any existing durations from seconds to milliseconds + */ + if (transition.duration) options["duration"] = secondsToMilliseconds(transition.duration); + if (transition.repeatDelay) options.repeatDelay = secondsToMilliseconds(transition.repeatDelay); + /** + * Map easing names to Popmotion's easing functions + */ + if (ease) { + options["ease"] = isEasingArray(ease) ? ease.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease); + } + /** + * Support legacy transition API + */ + if (transition.type === "tween") options.type = "keyframes"; + /** + * TODO: These options are officially removed from the API. + */ + if (yoyo || loop || flip) { + heyListen.warning(!legacyRepeatWarning, "yoyo, loop and flip have been removed from the API. Replace with repeat and repeatType options."); + legacyRepeatWarning = true; + if (yoyo) { + options.repeatType = "reverse"; + } else if (loop) { + options.repeatType = "loop"; + } else if (flip) { + options.repeatType = "mirror"; + } + options.repeat = loop || yoyo || flip || transition.repeat; + } + /** + * TODO: Popmotion 9 has the ability to automatically detect whether to use + * a keyframes or spring animation, but does so by detecting velocity and other spring options. + * It'd be good to introduce a similar thing here. + */ + if (transition.type !== "spring") options.type = "keyframes"; + return options; +} +/** + * Get the delay for a value by checking Transition with decreasing specificity. + */ +function getDelayFromTransition(transition, key) { + var _a, _b; + var valueTransition = getValueTransition(transition, key) || {}; + return (_b = (_a = valueTransition.delay) !== null && _a !== void 0 ? _a : transition.delay) !== null && _b !== void 0 ? _b : 0; +} +function hydrateKeyframes(options) { + if (Array.isArray(options.to) && options.to[0] === null) { + options.to = tslib.__spreadArray([], tslib.__read(options.to), false); + options.to[0] = options.from; + } + return options; +} +function getPopmotionAnimationOptions(transition, options, key) { + var _a; + if (Array.isArray(options.to)) { + (_a = transition.duration) !== null && _a !== void 0 ? _a : transition.duration = 0.8; + } + hydrateKeyframes(options); + /** + * Get a default transition if none is determined to be defined. + */ + if (!isTransitionDefined(transition)) { + transition = tslib.__assign(tslib.__assign({}, transition), getDefaultTransition(key, options.to)); + } + return tslib.__assign(tslib.__assign({}, options), convertTransitionToAnimationOptions(transition)); +} +/** + * + */ +function getAnimation(key, value, target, transition, onComplete) { + var _a; + var valueTransition = getValueTransition(transition, key); + var origin = (_a = valueTransition.from) !== null && _a !== void 0 ? _a : value.get(); + var isTargetAnimatable = isAnimatable(key, target); + if (origin === "none" && isTargetAnimatable && typeof target === "string") { + /** + * If we're trying to animate from "none", try and get an animatable version + * of the target. This could be improved to work both ways. + */ + origin = getAnimatableNone(key, target); + } else if (isZero(origin) && typeof target === "string") { + origin = getZeroUnit(target); + } else if (!Array.isArray(target) && isZero(target) && typeof origin === "string") { + target = getZeroUnit(origin); + } + var isOriginAnimatable = isAnimatable(key, origin); + heyListen.warning(isOriginAnimatable === isTargetAnimatable, "You are trying to animate ".concat(key, " from \"").concat(origin, "\" to \"").concat(target, "\". ").concat(origin, " is not an animatable value - to enable this animation set ").concat(origin, " to a value animatable to ").concat(target, " via the `style` property.")); + function start() { + var options = { + from: origin, + to: target, + velocity: value.getVelocity(), + onComplete: onComplete, + onUpdate: function (v) { + return value.set(v); + } + }; + return valueTransition.type === "inertia" || valueTransition.type === "decay" ? popmotion.inertia(tslib.__assign(tslib.__assign({}, options), valueTransition)) : popmotion.animate(tslib.__assign(tslib.__assign({}, getPopmotionAnimationOptions(valueTransition, options, key)), { + onUpdate: function (v) { + var _a; + options.onUpdate(v); + (_a = valueTransition.onUpdate) === null || _a === void 0 ? void 0 : _a.call(valueTransition, v); + }, + onComplete: function () { + var _a; + options.onComplete(); + (_a = valueTransition.onComplete) === null || _a === void 0 ? void 0 : _a.call(valueTransition); + } + })); + } + function set() { + var _a, _b; + var finalTarget = resolveFinalValueInKeyframes(target); + value.set(finalTarget); + onComplete(); + (_a = valueTransition === null || valueTransition === void 0 ? void 0 : valueTransition.onUpdate) === null || _a === void 0 ? void 0 : _a.call(valueTransition, finalTarget); + (_b = valueTransition === null || valueTransition === void 0 ? void 0 : valueTransition.onComplete) === null || _b === void 0 ? void 0 : _b.call(valueTransition); + return { + stop: function () {} + }; + } + return !isOriginAnimatable || !isTargetAnimatable || valueTransition.type === false ? set : start; +} +function isZero(value) { + return value === 0 || typeof value === "string" && parseFloat(value) === 0 && value.indexOf(" ") === -1; +} +function getZeroUnit(potentialUnitType) { + return typeof potentialUnitType === "number" ? 0 : getAnimatableNone("", potentialUnitType); +} +function getValueTransition(transition, key) { + return transition[key] || transition["default"] || transition; +} +/** + * Start animation on a MotionValue. This function is an interface between + * Framer Motion and Popmotion + */ +function startAnimation(key, value, target, transition) { + if (transition === void 0) { + transition = {}; + } + if (instantAnimationState.current) { + transition = { + type: false + }; + } + return value.start(function (onComplete) { + var delayTimer; + var controls; + var animation = getAnimation(key, value, target, transition, onComplete); + var delay = getDelayFromTransition(transition, key); + var start = function () { + return controls = animation(); + }; + if (delay) { + delayTimer = window.setTimeout(start, secondsToMilliseconds(delay)); + } else { + start(); + } + return function () { + clearTimeout(delayTimer); + controls === null || controls === void 0 ? void 0 : controls.stop(); + }; + }); +} + +/** + * Check if value is a numerical string, ie a string that is purely a number eg "100" or "-100.1" + */ +var isNumericalString = function (v) { + return /^\-?\d*\.?\d+$/.test(v); +}; + +/** + * Check if the value is a zero value string like "0px" or "0%" + */ +var isZeroValueString = function (v) { + return /^0[^.\s]+$/.test(v); +}; +function addUniqueItem(arr, item) { + arr.indexOf(item) === -1 && arr.push(item); +} +function removeItem(arr, item) { + var index = arr.indexOf(item); + index > -1 && arr.splice(index, 1); +} +// Adapted from array-move +function moveItem(_a, fromIndex, toIndex) { + var _b = tslib.__read(_a), + arr = _b.slice(0); + var startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex; + if (startIndex >= 0 && startIndex < arr.length) { + var endIndex = toIndex < 0 ? arr.length + toIndex : toIndex; + var _c = tslib.__read(arr.splice(fromIndex, 1), 1), + item = _c[0]; + arr.splice(endIndex, 0, item); + } + return arr; +} +var SubscriptionManager = /** @class */function () { + function SubscriptionManager() { + this.subscriptions = []; + } + SubscriptionManager.prototype.add = function (handler) { + var _this = this; + addUniqueItem(this.subscriptions, handler); + return function () { + return removeItem(_this.subscriptions, handler); + }; + }; + SubscriptionManager.prototype.notify = function (a, b, c) { + var numSubscriptions = this.subscriptions.length; + if (!numSubscriptions) return; + if (numSubscriptions === 1) { + /** + * If there's only a single handler we can just call it without invoking a loop. + */ + this.subscriptions[0](a, b, c); + } else { + for (var i = 0; i < numSubscriptions; i++) { + /** + * Check whether the handler exists before firing as it's possible + * the subscriptions were modified during this loop running. + */ + var handler = this.subscriptions[i]; + handler && handler(a, b, c); + } + } + }; + SubscriptionManager.prototype.getSize = function () { + return this.subscriptions.length; + }; + SubscriptionManager.prototype.clear = function () { + this.subscriptions.length = 0; + }; + return SubscriptionManager; +}(); +var isFloat = function (value) { + return !isNaN(parseFloat(value)); +}; +/** + * `MotionValue` is used to track the state and velocity of motion values. + * + * @public + */ +var MotionValue = /** @class */function () { + /** + * @param init - The initiating value + * @param config - Optional configuration options + * + * - `transformer`: A function to transform incoming values with. + * + * @internal + */ + function MotionValue(init) { + var _this = this; + /** + * This will be replaced by the build step with the latest version number. + * When MotionValues are provided to motion components, warn if versions are mixed. + */ + this.version = "6.5.1"; + /** + * Duration, in milliseconds, since last updating frame. + * + * @internal + */ + this.timeDelta = 0; + /** + * Timestamp of the last time this `MotionValue` was updated. + * + * @internal + */ + this.lastUpdated = 0; + /** + * Functions to notify when the `MotionValue` updates. + * + * @internal + */ + this.updateSubscribers = new SubscriptionManager(); + /** + * Functions to notify when the velocity updates. + * + * @internal + */ + this.velocityUpdateSubscribers = new SubscriptionManager(); + /** + * Functions to notify when the `MotionValue` updates and `render` is set to `true`. + * + * @internal + */ + this.renderSubscribers = new SubscriptionManager(); + /** + * Tracks whether this value can output a velocity. Currently this is only true + * if the value is numerical, but we might be able to widen the scope here and support + * other value types. + * + * @internal + */ + this.canTrackVelocity = false; + this.updateAndNotify = function (v, render) { + if (render === void 0) { + render = true; + } + _this.prev = _this.current; + _this.current = v; + // Update timestamp + var _a = sync.getFrameData(), + delta = _a.delta, + timestamp = _a.timestamp; + if (_this.lastUpdated !== timestamp) { + _this.timeDelta = delta; + _this.lastUpdated = timestamp; + sync__default["default"].postRender(_this.scheduleVelocityCheck); + } + // Update update subscribers + if (_this.prev !== _this.current) { + _this.updateSubscribers.notify(_this.current); + } + // Update velocity subscribers + if (_this.velocityUpdateSubscribers.getSize()) { + _this.velocityUpdateSubscribers.notify(_this.getVelocity()); + } + // Update render subscribers + if (render) { + _this.renderSubscribers.notify(_this.current); + } + }; + /** + * Schedule a velocity check for the next frame. + * + * This is an instanced and bound function to prevent generating a new + * function once per frame. + * + * @internal + */ + this.scheduleVelocityCheck = function () { + return sync__default["default"].postRender(_this.velocityCheck); + }; + /** + * Updates `prev` with `current` if the value hasn't been updated this frame. + * This ensures velocity calculations return `0`. + * + * This is an instanced and bound function to prevent generating a new + * function once per frame. + * + * @internal + */ + this.velocityCheck = function (_a) { + var timestamp = _a.timestamp; + if (timestamp !== _this.lastUpdated) { + _this.prev = _this.current; + _this.velocityUpdateSubscribers.notify(_this.getVelocity()); + } + }; + this.hasAnimated = false; + this.prev = this.current = init; + this.canTrackVelocity = isFloat(this.current); + } + /** + * Adds a function that will be notified when the `MotionValue` is updated. + * + * It returns a function that, when called, will cancel the subscription. + * + * When calling `onChange` inside a React component, it should be wrapped with the + * `useEffect` hook. As it returns an unsubscribe function, this should be returned + * from the `useEffect` function to ensure you don't add duplicate subscribers.. + * + * ```jsx + * export const MyComponent = () => { + * const x = useMotionValue(0) + * const y = useMotionValue(0) + * const opacity = useMotionValue(1) + * + * useEffect(() => { + * function updateOpacity() { + * const maxXY = Math.max(x.get(), y.get()) + * const newOpacity = transform(maxXY, [0, 100], [1, 0]) + * opacity.set(newOpacity) + * } + * + * const unsubscribeX = x.onChange(updateOpacity) + * const unsubscribeY = y.onChange(updateOpacity) + * + * return () => { + * unsubscribeX() + * unsubscribeY() + * } + * }, []) + * + * return + * } + * ``` + * + * @privateRemarks + * + * We could look into a `useOnChange` hook if the above lifecycle management proves confusing. + * + * ```jsx + * useOnChange(x, () => {}) + * ``` + * + * @param subscriber - A function that receives the latest value. + * @returns A function that, when called, will cancel this subscription. + * + * @public + */ + MotionValue.prototype.onChange = function (subscription) { + return this.updateSubscribers.add(subscription); + }; + MotionValue.prototype.clearListeners = function () { + this.updateSubscribers.clear(); + }; + /** + * Adds a function that will be notified when the `MotionValue` requests a render. + * + * @param subscriber - A function that's provided the latest value. + * @returns A function that, when called, will cancel this subscription. + * + * @internal + */ + MotionValue.prototype.onRenderRequest = function (subscription) { + // Render immediately + subscription(this.get()); + return this.renderSubscribers.add(subscription); + }; + /** + * Attaches a passive effect to the `MotionValue`. + * + * @internal + */ + MotionValue.prototype.attach = function (passiveEffect) { + this.passiveEffect = passiveEffect; + }; + /** + * Sets the state of the `MotionValue`. + * + * @remarks + * + * ```jsx + * const x = useMotionValue(0) + * x.set(10) + * ``` + * + * @param latest - Latest value to set. + * @param render - Whether to notify render subscribers. Defaults to `true` + * + * @public + */ + MotionValue.prototype.set = function (v, render) { + if (render === void 0) { + render = true; + } + if (!render || !this.passiveEffect) { + this.updateAndNotify(v, render); + } else { + this.passiveEffect(v, this.updateAndNotify); + } + }; + /** + * Returns the latest state of `MotionValue` + * + * @returns - The latest state of `MotionValue` + * + * @public + */ + MotionValue.prototype.get = function () { + return this.current; + }; + /** + * @public + */ + MotionValue.prototype.getPrevious = function () { + return this.prev; + }; + /** + * Returns the latest velocity of `MotionValue` + * + * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical. + * + * @public + */ + MotionValue.prototype.getVelocity = function () { + // This could be isFloat(this.prev) && isFloat(this.current), but that would be wasteful + return this.canTrackVelocity ? + // These casts could be avoided if parseFloat would be typed better + popmotion.velocityPerSecond(parseFloat(this.current) - parseFloat(this.prev), this.timeDelta) : 0; + }; + /** + * Registers a new animation to control this `MotionValue`. Only one + * animation can drive a `MotionValue` at one time. + * + * ```jsx + * value.start() + * ``` + * + * @param animation - A function that starts the provided animation + * + * @internal + */ + MotionValue.prototype.start = function (animation) { + var _this = this; + this.stop(); + return new Promise(function (resolve) { + _this.hasAnimated = true; + _this.stopAnimation = animation(resolve); + }).then(function () { + return _this.clearAnimation(); + }); + }; + /** + * Stop the currently active animation. + * + * @public + */ + MotionValue.prototype.stop = function () { + if (this.stopAnimation) this.stopAnimation(); + this.clearAnimation(); + }; + /** + * Returns `true` if this value is currently animating. + * + * @public + */ + MotionValue.prototype.isAnimating = function () { + return !!this.stopAnimation; + }; + MotionValue.prototype.clearAnimation = function () { + this.stopAnimation = null; + }; + /** + * Destroy and clean up subscribers to this `MotionValue`. + * + * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically + * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually + * created a `MotionValue` via the `motionValue` function. + * + * @public + */ + MotionValue.prototype.destroy = function () { + this.updateSubscribers.clear(); + this.renderSubscribers.clear(); + this.stop(); + }; + return MotionValue; +}(); +function motionValue(init) { + return new MotionValue(init); +} + +/** + * Tests a provided value against a ValueType + */ +var testValueType = function (v) { + return function (type) { + return type.test(v); + }; +}; + +/** + * ValueType for "auto" + */ +var auto = { + test: function (v) { + return v === "auto"; + }, + parse: function (v) { + return v; + } +}; + +/** + * A list of value types commonly used for dimensions + */ +var dimensionValueTypes = [styleValueTypes.number, styleValueTypes.px, styleValueTypes.percent, styleValueTypes.degrees, styleValueTypes.vw, styleValueTypes.vh, auto]; +/** + * Tests a dimensional value against the list of dimension ValueTypes + */ +var findDimensionValueType = function (v) { + return dimensionValueTypes.find(testValueType(v)); +}; + +/** + * A list of all ValueTypes + */ +var valueTypes = tslib.__spreadArray(tslib.__spreadArray([], tslib.__read(dimensionValueTypes), false), [styleValueTypes.color, styleValueTypes.complex], false); +/** + * Tests a value against the list of ValueTypes + */ +var findValueType = function (v) { + return valueTypes.find(testValueType(v)); +}; + +/** + * Set VisualElement's MotionValue, creating a new MotionValue for it if + * it doesn't exist. + */ +function setMotionValue(visualElement, key, value) { + if (visualElement.hasValue(key)) { + visualElement.getValue(key).set(value); + } else { + visualElement.addValue(key, motionValue(value)); + } +} +function setTarget(visualElement, definition) { + var resolved = resolveVariant(visualElement, definition); + var _a = resolved ? visualElement.makeTargetAnimatable(resolved, false) : {}, + _b = _a.transitionEnd, + transitionEnd = _b === void 0 ? {} : _b; + _a.transition; + var target = tslib.__rest(_a, ["transitionEnd", "transition"]); + target = tslib.__assign(tslib.__assign({}, target), transitionEnd); + for (var key in target) { + var value = resolveFinalValueInKeyframes(target[key]); + setMotionValue(visualElement, key, value); + } +} +function setVariants(visualElement, variantLabels) { + var reversedLabels = tslib.__spreadArray([], tslib.__read(variantLabels), false).reverse(); + reversedLabels.forEach(function (key) { + var _a; + var variant = visualElement.getVariant(key); + variant && setTarget(visualElement, variant); + (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach(function (child) { + setVariants(child, variantLabels); + }); + }); +} +function setValues(visualElement, definition) { + if (Array.isArray(definition)) { + return setVariants(visualElement, definition); + } else if (typeof definition === "string") { + return setVariants(visualElement, [definition]); + } else { + setTarget(visualElement, definition); + } +} +function checkTargetForNewValues(visualElement, target, origin) { + var _a, _b, _c; + var _d; + var newValueKeys = Object.keys(target).filter(function (key) { + return !visualElement.hasValue(key); + }); + var numNewValues = newValueKeys.length; + if (!numNewValues) return; + for (var i = 0; i < numNewValues; i++) { + var key = newValueKeys[i]; + var targetValue = target[key]; + var value = null; + /** + * If the target is a series of keyframes, we can use the first value + * in the array. If this first value is null, we'll still need to read from the DOM. + */ + if (Array.isArray(targetValue)) { + value = targetValue[0]; + } + /** + * If the target isn't keyframes, or the first keyframe was null, we need to + * first check if an origin value was explicitly defined in the transition as "from", + * if not read the value from the DOM. As an absolute fallback, take the defined target value. + */ + if (value === null) { + value = (_b = (_a = origin[key]) !== null && _a !== void 0 ? _a : visualElement.readValue(key)) !== null && _b !== void 0 ? _b : target[key]; + } + /** + * If value is still undefined or null, ignore it. Preferably this would throw, + * but this was causing issues in Framer. + */ + if (value === undefined || value === null) continue; + if (typeof value === "string" && (isNumericalString(value) || isZeroValueString(value))) { + // If this is a number read as a string, ie "0" or "200", convert it to a number + value = parseFloat(value); + } else if (!findValueType(value) && styleValueTypes.complex.test(targetValue)) { + value = getAnimatableNone(key, targetValue); + } + visualElement.addValue(key, motionValue(value)); + (_c = (_d = origin)[key]) !== null && _c !== void 0 ? _c : _d[key] = value; + visualElement.setBaseTarget(key, value); + } +} +function getOriginFromTransition(key, transition) { + if (!transition) return; + var valueTransition = transition[key] || transition["default"] || transition; + return valueTransition.from; +} +function getOrigin(target, transition, visualElement) { + var _a, _b; + var origin = {}; + for (var key in target) { + origin[key] = (_a = getOriginFromTransition(key, transition)) !== null && _a !== void 0 ? _a : (_b = visualElement.getValue(key)) === null || _b === void 0 ? void 0 : _b.get(); + } + return origin; +} +function animateVisualElement(visualElement, definition, options) { + if (options === void 0) { + options = {}; + } + visualElement.notifyAnimationStart(definition); + var animation; + if (Array.isArray(definition)) { + var animations = definition.map(function (variant) { + return animateVariant(visualElement, variant, options); + }); + animation = Promise.all(animations); + } else if (typeof definition === "string") { + animation = animateVariant(visualElement, definition, options); + } else { + var resolvedDefinition = typeof definition === "function" ? resolveVariant(visualElement, definition, options.custom) : definition; + animation = animateTarget(visualElement, resolvedDefinition, options); + } + return animation.then(function () { + return visualElement.notifyAnimationComplete(definition); + }); +} +function animateVariant(visualElement, variant, options) { + var _a; + if (options === void 0) { + options = {}; + } + var resolved = resolveVariant(visualElement, variant, options.custom); + var _b = (resolved || {}).transition, + transition = _b === void 0 ? visualElement.getDefaultTransition() || {} : _b; + if (options.transitionOverride) { + transition = options.transitionOverride; + } + /** + * If we have a variant, create a callback that runs it as an animation. + * Otherwise, we resolve a Promise immediately for a composable no-op. + */ + var getAnimation = resolved ? function () { + return animateTarget(visualElement, resolved, options); + } : function () { + return Promise.resolve(); + }; + /** + * If we have children, create a callback that runs all their animations. + * Otherwise, we resolve a Promise immediately for a composable no-op. + */ + var getChildAnimations = ((_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.size) ? function (forwardDelay) { + if (forwardDelay === void 0) { + forwardDelay = 0; + } + var _a = transition.delayChildren, + delayChildren = _a === void 0 ? 0 : _a, + staggerChildren = transition.staggerChildren, + staggerDirection = transition.staggerDirection; + return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options); + } : function () { + return Promise.resolve(); + }; + /** + * If the transition explicitly defines a "when" option, we need to resolve either + * this animation or all children animations before playing the other. + */ + var when = transition.when; + if (when) { + var _c = tslib.__read(when === "beforeChildren" ? [getAnimation, getChildAnimations] : [getChildAnimations, getAnimation], 2), + first = _c[0], + last = _c[1]; + return first().then(last); + } else { + return Promise.all([getAnimation(), getChildAnimations(options.delay)]); + } +} +/** + * @internal + */ +function animateTarget(visualElement, definition, _a) { + var _b; + var _c = _a === void 0 ? {} : _a, + _d = _c.delay, + delay = _d === void 0 ? 0 : _d, + transitionOverride = _c.transitionOverride, + type = _c.type; + var _e = visualElement.makeTargetAnimatable(definition), + _f = _e.transition, + transition = _f === void 0 ? visualElement.getDefaultTransition() : _f, + transitionEnd = _e.transitionEnd, + target = tslib.__rest(_e, ["transition", "transitionEnd"]); + if (transitionOverride) transition = transitionOverride; + var animations = []; + var animationTypeState = type && ((_b = visualElement.animationState) === null || _b === void 0 ? void 0 : _b.getState()[type]); + for (var key in target) { + var value = visualElement.getValue(key); + var valueTarget = target[key]; + if (!value || valueTarget === undefined || animationTypeState && shouldBlockAnimation(animationTypeState, key)) { + continue; + } + var valueTransition = tslib.__assign({ + delay: delay + }, transition); + /** + * Make animation instant if this is a transform prop and we should reduce motion. + */ + if (visualElement.shouldReduceMotion && isTransformProp(key)) { + valueTransition = tslib.__assign(tslib.__assign({}, valueTransition), { + type: false, + delay: 0 + }); + } + var animation = startAnimation(key, value, valueTarget, valueTransition); + animations.push(animation); + } + return Promise.all(animations).then(function () { + transitionEnd && setTarget(visualElement, transitionEnd); + }); +} +function animateChildren(visualElement, variant, delayChildren, staggerChildren, staggerDirection, options) { + if (delayChildren === void 0) { + delayChildren = 0; + } + if (staggerChildren === void 0) { + staggerChildren = 0; + } + if (staggerDirection === void 0) { + staggerDirection = 1; + } + var animations = []; + var maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren; + var generateStaggerDuration = staggerDirection === 1 ? function (i) { + if (i === void 0) { + i = 0; + } + return i * staggerChildren; + } : function (i) { + if (i === void 0) { + i = 0; + } + return maxStaggerDuration - i * staggerChildren; + }; + Array.from(visualElement.variantChildren).sort(sortByTreeOrder).forEach(function (child, i) { + animations.push(animateVariant(child, variant, tslib.__assign(tslib.__assign({}, options), { + delay: delayChildren + generateStaggerDuration(i) + })).then(function () { + return child.notifyAnimationComplete(variant); + })); + }); + return Promise.all(animations); +} +function stopAnimation(visualElement) { + visualElement.forEachValue(function (value) { + return value.stop(); + }); +} +function sortByTreeOrder(a, b) { + return a.sortNodePosition(b); +} +/** + * Decide whether we should block this animation. Previously, we achieved this + * just by checking whether the key was listed in protectedKeys, but this + * posed problems if an animation was triggered by afterChildren and protectedKeys + * had been set to true in the meantime. + */ +function shouldBlockAnimation(_a, key) { + var protectedKeys = _a.protectedKeys, + needsAnimating = _a.needsAnimating; + var shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true; + needsAnimating[key] = false; + return shouldBlock; +} +var variantPriorityOrder = [exports.AnimationType.Animate, exports.AnimationType.InView, exports.AnimationType.Focus, exports.AnimationType.Hover, exports.AnimationType.Tap, exports.AnimationType.Drag, exports.AnimationType.Exit]; +var reversePriorityOrder = tslib.__spreadArray([], tslib.__read(variantPriorityOrder), false).reverse(); +var numAnimationTypes = variantPriorityOrder.length; +function animateList(visualElement) { + return function (animations) { + return Promise.all(animations.map(function (_a) { + var animation = _a.animation, + options = _a.options; + return animateVisualElement(visualElement, animation, options); + })); + }; +} +function createAnimationState(visualElement) { + var animate = animateList(visualElement); + var state = createState(); + var allAnimatedKeys = {}; + var isInitialRender = true; + /** + * This function will be used to reduce the animation definitions for + * each active animation type into an object of resolved values for it. + */ + var buildResolvedTypeValues = function (acc, definition) { + var resolved = resolveVariant(visualElement, definition); + if (resolved) { + resolved.transition; + var transitionEnd = resolved.transitionEnd, + target = tslib.__rest(resolved, ["transition", "transitionEnd"]); + acc = tslib.__assign(tslib.__assign(tslib.__assign({}, acc), target), transitionEnd); + } + return acc; + }; + function isAnimated(key) { + return allAnimatedKeys[key] !== undefined; + } + /** + * This just allows us to inject mocked animation functions + * @internal + */ + function setAnimateFunction(makeAnimator) { + animate = makeAnimator(visualElement); + } + /** + * When we receive new props, we need to: + * 1. Create a list of protected keys for each type. This is a directory of + * value keys that are currently being "handled" by types of a higher priority + * so that whenever an animation is played of a given type, these values are + * protected from being animated. + * 2. Determine if an animation type needs animating. + * 3. Determine if any values have been removed from a type and figure out + * what to animate those to. + */ + function animateChanges(options, changedActiveType) { + var _a; + var props = visualElement.getProps(); + var context = visualElement.getVariantContext(true) || {}; + /** + * A list of animations that we'll build into as we iterate through the animation + * types. This will get executed at the end of the function. + */ + var animations = []; + /** + * Keep track of which values have been removed. Then, as we hit lower priority + * animation types, we can check if they contain removed values and animate to that. + */ + var removedKeys = new Set(); + /** + * A dictionary of all encountered keys. This is an object to let us build into and + * copy it without iteration. Each time we hit an animation type we set its protected + * keys - the keys its not allowed to animate - to the latest version of this object. + */ + var encounteredKeys = {}; + /** + * If a variant has been removed at a given index, and this component is controlling + * variant animations, we want to ensure lower-priority variants are forced to animate. + */ + var removedVariantIndex = Infinity; + var _loop_1 = function (i) { + var type = reversePriorityOrder[i]; + var typeState = state[type]; + var prop = (_a = props[type]) !== null && _a !== void 0 ? _a : context[type]; + var propIsVariant = isVariantLabel(prop); + /** + * If this type has *just* changed isActive status, set activeDelta + * to that status. Otherwise set to null. + */ + var activeDelta = type === changedActiveType ? typeState.isActive : null; + if (activeDelta === false) removedVariantIndex = i; + /** + * If this prop is an inherited variant, rather than been set directly on the + * component itself, we want to make sure we allow the parent to trigger animations. + * + * TODO: Can probably change this to a !isControllingVariants check + */ + var isInherited = prop === context[type] && prop !== props[type] && propIsVariant; + /** + * + */ + if (isInherited && isInitialRender && visualElement.manuallyAnimateOnMount) { + isInherited = false; + } + /** + * Set all encountered keys so far as the protected keys for this type. This will + * be any key that has been animated or otherwise handled by active, higher-priortiy types. + */ + typeState.protectedKeys = tslib.__assign({}, encounteredKeys); + // Check if we can skip analysing this prop early + if ( + // If it isn't active and hasn't *just* been set as inactive + !typeState.isActive && activeDelta === null || + // If we didn't and don't have any defined prop for this animation type + !prop && !typeState.prevProp || + // Or if the prop doesn't define an animation + isAnimationControls(prop) || typeof prop === "boolean") { + return "continue"; + } + /** + * As we go look through the values defined on this type, if we detect + * a changed value or a value that was removed in a higher priority, we set + * this to true and add this prop to the animation list. + */ + var variantDidChange = checkVariantsDidChange(typeState.prevProp, prop); + var shouldAnimateType = variantDidChange || + // If we're making this variant active, we want to always make it active + type === changedActiveType && typeState.isActive && !isInherited && propIsVariant || + // If we removed a higher-priority variant (i is in reverse order) + i > removedVariantIndex && propIsVariant; + /** + * As animations can be set as variant lists, variants or target objects, we + * coerce everything to an array if it isn't one already + */ + var definitionList = Array.isArray(prop) ? prop : [prop]; + /** + * Build an object of all the resolved values. We'll use this in the subsequent + * animateChanges calls to determine whether a value has changed. + */ + var resolvedValues = definitionList.reduce(buildResolvedTypeValues, {}); + if (activeDelta === false) resolvedValues = {}; + /** + * Now we need to loop through all the keys in the prev prop and this prop, + * and decide: + * 1. If the value has changed, and needs animating + * 2. If it has been removed, and needs adding to the removedKeys set + * 3. If it has been removed in a higher priority type and needs animating + * 4. If it hasn't been removed in a higher priority but hasn't changed, and + * needs adding to the type's protectedKeys list. + */ + var _b = typeState.prevResolvedValues, + prevResolvedValues = _b === void 0 ? {} : _b; + var allKeys = tslib.__assign(tslib.__assign({}, prevResolvedValues), resolvedValues); + var markToAnimate = function (key) { + shouldAnimateType = true; + removedKeys.delete(key); + typeState.needsAnimating[key] = true; + }; + for (var key in allKeys) { + var next = resolvedValues[key]; + var prev = prevResolvedValues[key]; + // If we've already handled this we can just skip ahead + if (encounteredKeys.hasOwnProperty(key)) continue; + /** + * If the value has changed, we probably want to animate it. + */ + if (next !== prev) { + /** + * If both values are keyframes, we need to shallow compare them to + * detect whether any value has changed. If it has, we animate it. + */ + if (isKeyframesTarget(next) && isKeyframesTarget(prev)) { + if (!shallowCompare(next, prev) || variantDidChange) { + markToAnimate(key); + } else { + /** + * If it hasn't changed, we want to ensure it doesn't animate by + * adding it to the list of protected keys. + */ + typeState.protectedKeys[key] = true; + } + } else if (next !== undefined) { + // If next is defined and doesn't equal prev, it needs animating + markToAnimate(key); + } else { + // If it's undefined, it's been removed. + removedKeys.add(key); + } + } else if (next !== undefined && removedKeys.has(key)) { + /** + * If next hasn't changed and it isn't undefined, we want to check if it's + * been removed by a higher priority + */ + markToAnimate(key); + } else { + /** + * If it hasn't changed, we add it to the list of protected values + * to ensure it doesn't get animated. + */ + typeState.protectedKeys[key] = true; + } + } + /** + * Update the typeState so next time animateChanges is called we can compare the + * latest prop and resolvedValues to these. + */ + typeState.prevProp = prop; + typeState.prevResolvedValues = resolvedValues; + /** + * + */ + if (typeState.isActive) { + encounteredKeys = tslib.__assign(tslib.__assign({}, encounteredKeys), resolvedValues); + } + if (isInitialRender && visualElement.blockInitialAnimation) { + shouldAnimateType = false; + } + /** + * If this is an inherited prop we want to hard-block animations + * TODO: Test as this should probably still handle animations triggered + * by removed values? + */ + if (shouldAnimateType && !isInherited) { + animations.push.apply(animations, tslib.__spreadArray([], tslib.__read(definitionList.map(function (animation) { + return { + animation: animation, + options: tslib.__assign({ + type: type + }, options) + }; + })), false)); + } + }; + /** + * Iterate through all animation types in reverse priority order. For each, we want to + * detect which values it's handling and whether or not they've changed (and therefore + * need to be animated). If any values have been removed, we want to detect those in + * lower priority props and flag for animation. + */ + for (var i = 0; i < numAnimationTypes; i++) { + _loop_1(i); + } + allAnimatedKeys = tslib.__assign({}, encounteredKeys); + /** + * If there are some removed value that haven't been dealt with, + * we need to create a new animation that falls back either to the value + * defined in the style prop, or the last read value. + */ + if (removedKeys.size) { + var fallbackAnimation_1 = {}; + removedKeys.forEach(function (key) { + var fallbackTarget = visualElement.getBaseTarget(key); + if (fallbackTarget !== undefined) { + fallbackAnimation_1[key] = fallbackTarget; + } + }); + animations.push({ + animation: fallbackAnimation_1 + }); + } + var shouldAnimate = Boolean(animations.length); + if (isInitialRender && props.initial === false && !visualElement.manuallyAnimateOnMount) { + shouldAnimate = false; + } + isInitialRender = false; + return shouldAnimate ? animate(animations) : Promise.resolve(); + } + /** + * Change whether a certain animation type is active. + */ + function setActive(type, isActive, options) { + var _a; + // If the active state hasn't changed, we can safely do nothing here + if (state[type].isActive === isActive) return Promise.resolve(); + // Propagate active change to children + (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach(function (child) { + var _a; + return (_a = child.animationState) === null || _a === void 0 ? void 0 : _a.setActive(type, isActive); + }); + state[type].isActive = isActive; + var animations = animateChanges(options, type); + for (var key in state) { + state[key].protectedKeys = {}; + } + return animations; + } + return { + isAnimated: isAnimated, + animateChanges: animateChanges, + setActive: setActive, + setAnimateFunction: setAnimateFunction, + getState: function () { + return state; + } + }; +} +function checkVariantsDidChange(prev, next) { + if (typeof next === "string") { + return next !== prev; + } else if (isVariantLabels(next)) { + return !shallowCompare(next, prev); + } + return false; +} +function createTypeState(isActive) { + if (isActive === void 0) { + isActive = false; + } + return { + isActive: isActive, + protectedKeys: {}, + needsAnimating: {}, + prevResolvedValues: {} + }; +} +function createState() { + var _a; + return _a = {}, _a[exports.AnimationType.Animate] = createTypeState(true), _a[exports.AnimationType.InView] = createTypeState(), _a[exports.AnimationType.Hover] = createTypeState(), _a[exports.AnimationType.Tap] = createTypeState(), _a[exports.AnimationType.Drag] = createTypeState(), _a[exports.AnimationType.Focus] = createTypeState(), _a[exports.AnimationType.Exit] = createTypeState(), _a; +} +var animations = { + animation: makeRenderlessComponent(function (_a) { + var visualElement = _a.visualElement, + animate = _a.animate; + /** + * We dynamically generate the AnimationState manager as it contains a reference + * to the underlying animation library. We only want to load that if we load this, + * so people can optionally code split it out using the `m` component. + */ + visualElement.animationState || (visualElement.animationState = createAnimationState(visualElement)); + /** + * Subscribe any provided AnimationControls to the component's VisualElement + */ + if (isAnimationControls(animate)) { + React.useEffect(function () { + return animate.subscribe(visualElement); + }, [animate]); + } + }), + exit: makeRenderlessComponent(function (props) { + var custom = props.custom, + visualElement = props.visualElement; + var _a = tslib.__read(usePresence(), 2), + isPresent = _a[0], + safeToRemove = _a[1]; + var presenceContext = React.useContext(PresenceContext); + React.useEffect(function () { + var _a, _b; + visualElement.isPresent = isPresent; + var animation = (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.Exit, !isPresent, { + custom: (_b = presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.custom) !== null && _b !== void 0 ? _b : custom + }); + !isPresent && (animation === null || animation === void 0 ? void 0 : animation.then(safeToRemove)); + }, [isPresent]); + }) +}; + +/** + * @internal + */ +var PanSession = /** @class */function () { + function PanSession(event, handlers, _a) { + var _this = this; + var _b = _a === void 0 ? {} : _a, + transformPagePoint = _b.transformPagePoint; + /** + * @internal + */ + this.startEvent = null; + /** + * @internal + */ + this.lastMoveEvent = null; + /** + * @internal + */ + this.lastMoveEventInfo = null; + /** + * @internal + */ + this.handlers = {}; + this.updatePoint = function () { + if (!(_this.lastMoveEvent && _this.lastMoveEventInfo)) return; + var info = getPanInfo(_this.lastMoveEventInfo, _this.history); + var isPanStarted = _this.startEvent !== null; + // Only start panning if the offset is larger than 3 pixels. If we make it + // any larger than this we'll want to reset the pointer history + // on the first update to avoid visual snapping to the cursoe. + var isDistancePastThreshold = popmotion.distance(info.offset, { + x: 0, + y: 0 + }) >= 3; + if (!isPanStarted && !isDistancePastThreshold) return; + var point = info.point; + var timestamp = sync.getFrameData().timestamp; + _this.history.push(tslib.__assign(tslib.__assign({}, point), { + timestamp: timestamp + })); + var _a = _this.handlers, + onStart = _a.onStart, + onMove = _a.onMove; + if (!isPanStarted) { + onStart && onStart(_this.lastMoveEvent, info); + _this.startEvent = _this.lastMoveEvent; + } + onMove && onMove(_this.lastMoveEvent, info); + }; + this.handlePointerMove = function (event, info) { + _this.lastMoveEvent = event; + _this.lastMoveEventInfo = transformPoint(info, _this.transformPagePoint); + // Because Safari doesn't trigger mouseup events when it's above a ` ' + e.phrase("(Use line:column or scroll% syntax)") + ""; + } + c(i, "getJumpDialog"); + function a(e, t) { + var n = Number(t); + return /^[-+]/.test(t) ? e.getCursor().line + n : n - 1; + } + c(a, "interpretLine"), o.commands.jumpToLine = function (e) { + var t = e.getCursor(); + s(e, i(e), e.phrase("Jump to line:"), t.line + 1 + ":" + t.ch, function (n) { + if (n) { + var r; + if (r = /^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(n)) e.setCursor(a(e, r[1]), Number(r[2]));else if (r = /^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(n)) { + var l = Math.round(e.lineCount() * Number(r[1]) / 100); + /^[-+]/.test(r[1]) && (l = t.line + l + 1), e.setCursor(l - 1, t.ch); + } else (r = /^\s*\:?\s*([\+\-]?\d+)\s*/.exec(n)) && e.setCursor(a(e, r[1]), t.ch); + } + }); + }, o.keyMap.default["Alt-G"] = "jumpToLine"; + }); +})(); +var d = b.exports; +const j = f.getDefaultExportFromCjs(d), + y = h({ + __proto__: null, + default: j + }, [d]); +exports.jumpToLine = y; + +/***/ }), + +/***/ "../../graphiql-react/dist/jump.cjs.js": +/*!*********************************************!*\ + !*** ../../graphiql-react/dist/jump.cjs.js ***! + \*********************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + + + +var c = Object.defineProperty; +var s = (e, r) => c(e, "name", { + value: r, + configurable: !0 +}); +const u = __webpack_require__(/*! ./codemirror.cjs.js */ "../../graphiql-react/dist/codemirror.cjs.js"), + d = __webpack_require__(/*! ./SchemaReference.cjs.js */ "../../graphiql-react/dist/SchemaReference.cjs.js"); +__webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); +__webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +__webpack_require__(/*! ./forEachState.cjs.js */ "../../graphiql-react/dist/forEachState.cjs.js"); +u.CodeMirror.defineOption("jump", !1, (e, r, n) => { + if (n && n !== u.CodeMirror.Init) { + const t = e.state.jump.onMouseOver; + u.CodeMirror.off(e.getWrapperElement(), "mouseover", t); + const i = e.state.jump.onMouseOut; + u.CodeMirror.off(e.getWrapperElement(), "mouseout", i), u.CodeMirror.off(document, "keydown", e.state.jump.onKeyDown), delete e.state.jump; + } + if (r) { + const t = e.state.jump = { + options: r, + onMouseOver: M.bind(null, e), + onMouseOut: m.bind(null, e), + onKeyDown: g.bind(null, e) + }; + u.CodeMirror.on(e.getWrapperElement(), "mouseover", t.onMouseOver), u.CodeMirror.on(e.getWrapperElement(), "mouseout", t.onMouseOut), u.CodeMirror.on(document, "keydown", t.onKeyDown); + } +}); +function M(e, r) { + const n = r.target || r.srcElement; + if (!(n instanceof HTMLElement) || (n == null ? void 0 : n.nodeName) !== "SPAN") return; + const t = n.getBoundingClientRect(), + i = { + left: (t.left + t.right) / 2, + top: (t.top + t.bottom) / 2 + }; + e.state.jump.cursor = i, e.state.jump.isHoldingModifier && l(e); +} +s(M, "onMouseOver"); +function m(e) { + if (!e.state.jump.isHoldingModifier && e.state.jump.cursor) { + e.state.jump.cursor = null; + return; + } + e.state.jump.isHoldingModifier && e.state.jump.marker && p(e); +} +s(m, "onMouseOut"); +function g(e, r) { + if (e.state.jump.isHoldingModifier || !k(r.key)) return; + e.state.jump.isHoldingModifier = !0, e.state.jump.cursor && l(e); + const n = s(o => { + o.code === r.code && (e.state.jump.isHoldingModifier = !1, e.state.jump.marker && p(e), u.CodeMirror.off(document, "keyup", n), u.CodeMirror.off(document, "click", t), e.off("mousedown", i)); + }, "onKeyUp"), + t = s(o => { + const { + destination: a, + options: f + } = e.state.jump; + a && f.onClick(a, o); + }, "onClick"), + i = s((o, a) => { + e.state.jump.destination && (a.codemirrorIgnore = !0); + }, "onMouseDown"); + u.CodeMirror.on(document, "keyup", n), u.CodeMirror.on(document, "click", t), e.on("mousedown", i); +} +s(g, "onKeyDown"); +const j = typeof navigator < "u" && navigator && navigator.appVersion.includes("Mac"); +function k(e) { + return e === (j ? "Meta" : "Control"); +} +s(k, "isJumpModifier"); +function l(e) { + if (e.state.jump.marker) return; + const { + cursor: r, + options: n + } = e.state.jump, + t = e.coordsChar(r), + i = e.getTokenAt(t, !0), + o = n.getDestination || e.getHelper(t, "jump"); + if (o) { + const a = o(i, n, e); + if (a) { + const f = e.markText({ + line: t.line, + ch: i.start + }, { + line: t.line, + ch: i.end + }, { + className: "CodeMirror-jump-token" + }); + e.state.jump.marker = f, e.state.jump.destination = a; + } + } +} +s(l, "enableJumpMode"); +function p(e) { + const { + marker: r + } = e.state.jump; + e.state.jump.marker = null, e.state.jump.destination = null, r.clear(); +} +s(p, "disableJumpMode"); +u.CodeMirror.registerHelper("jump", "graphql", (e, r) => { + if (!r.schema || !r.onClick || !e.state) return; + const { + state: n + } = e, + { + kind: t, + step: i + } = n, + o = d.getTypeInfo(r.schema, n); + if (t === "Field" && i === 0 && o.fieldDef || t === "AliasedField" && i === 2 && o.fieldDef) return d.getFieldReference(o); + if (t === "Directive" && i === 1 && o.directiveDef) return d.getDirectiveReference(o); + if (t === "Argument" && i === 0 && o.argDef) return d.getArgumentReference(o); + if (t === "EnumValue" && o.enumValue) return d.getEnumValueReference(o); + if (t === "NamedType" && o.type) return d.getTypeReference(o); +}); + +/***/ }), + +/***/ "../../graphiql-react/dist/lint.cjs.js": +/*!*********************************************!*\ + !*** ../../graphiql-react/dist/lint.cjs.js ***! + \*********************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +var W = Object.defineProperty; +var s = (h, v) => W(h, "name", { + value: v, + configurable: !0 +}); +const x = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); +function q(h, v) { + for (var l = 0; l < v.length; l++) { + const u = v[l]; + if (typeof u != "string" && !Array.isArray(u)) { + for (const g in u) if (g !== "default" && !(g in h)) { + const c = Object.getOwnPropertyDescriptor(u, g); + c && Object.defineProperty(h, g, c.get ? c : { + enumerable: !0, + get: () => u[g] + }); + } + } + } + return Object.freeze(Object.defineProperty(h, Symbol.toStringTag, { + value: "Module" + })); +} +s(q, "_mergeNamespaces"); +var B = { + exports: {} +}; +(function (h, v) { + (function (l) { + l(x.requireCodemirror()); + })(function (l) { + var u = "CodeMirror-lint-markers", + g = "CodeMirror-lint-line-"; + function c(t, e, r) { + var n = document.createElement("div"); + n.className = "CodeMirror-lint-tooltip cm-s-" + t.options.theme, n.appendChild(r.cloneNode(!0)), t.state.lint.options.selfContain ? t.getWrapperElement().appendChild(n) : document.body.appendChild(n); + function i(o) { + if (!n.parentNode) return l.off(document, "mousemove", i); + n.style.top = Math.max(0, o.clientY - n.offsetHeight - 5) + "px", n.style.left = o.clientX + 5 + "px"; + } + return s(i, "position"), l.on(document, "mousemove", i), i(e), n.style.opacity != null && (n.style.opacity = 1), n; + } + s(c, "showTooltip"); + function L(t) { + t.parentNode && t.parentNode.removeChild(t); + } + s(L, "rm"); + function A(t) { + t.parentNode && (t.style.opacity == null && L(t), t.style.opacity = 0, setTimeout(function () { + L(t); + }, 600)); + } + s(A, "hideTooltip"); + function M(t, e, r, n) { + var i = c(t, e, r); + function o() { + l.off(n, "mouseout", o), i && (A(i), i = null); + } + s(o, "hide"); + var a = setInterval(function () { + if (i) for (var f = n;; f = f.parentNode) { + if (f && f.nodeType == 11 && (f = f.host), f == document.body) return; + if (!f) { + o(); + break; + } + } + if (!i) return clearInterval(a); + }, 400); + l.on(n, "mouseout", o); + } + s(M, "showTooltipFor"); + function F(t, e, r) { + this.marked = [], e instanceof Function && (e = { + getAnnotations: e + }), (!e || e === !0) && (e = {}), this.options = {}, this.linterOptions = e.options || {}; + for (var n in C) this.options[n] = C[n]; + for (var n in e) C.hasOwnProperty(n) ? e[n] != null && (this.options[n] = e[n]) : e.options || (this.linterOptions[n] = e[n]); + this.timeout = null, this.hasGutter = r, this.onMouseOver = function (i) { + U(t, i); + }, this.waitingFor = 0; + } + s(F, "LintState"); + var C = { + highlightLines: !1, + tooltips: !0, + delay: 500, + lintOnChange: !0, + getAnnotations: null, + async: !1, + selfContain: null, + formatAnnotation: null, + onUpdateLinting: null + }; + function E(t) { + var e = t.state.lint; + e.hasGutter && t.clearGutter(u), e.options.highlightLines && G(t); + for (var r = 0; r < e.marked.length; ++r) e.marked[r].clear(); + e.marked.length = 0; + } + s(E, "clearMarks"); + function G(t) { + t.eachLine(function (e) { + var r = e.wrapClass && /\bCodeMirror-lint-line-\w+\b/.exec(e.wrapClass); + r && t.removeLineClass(e, "wrap", r[0]); + }); + } + s(G, "clearErrorLines"); + function I(t, e, r, n, i) { + var o = document.createElement("div"), + a = o; + return o.className = "CodeMirror-lint-marker CodeMirror-lint-marker-" + r, n && (a = o.appendChild(document.createElement("div")), a.className = "CodeMirror-lint-marker CodeMirror-lint-marker-multiple"), i != !1 && l.on(a, "mouseover", function (f) { + M(t, f, e, a); + }), o; + } + s(I, "makeMarker"); + function D(t, e) { + return t == "error" ? t : e; + } + s(D, "getMaxSeverity"); + function j(t) { + for (var e = [], r = 0; r < t.length; ++r) { + var n = t[r], + i = n.from.line; + (e[i] || (e[i] = [])).push(n); + } + return e; + } + s(j, "groupByLine"); + function N(t) { + var e = t.severity; + e || (e = "error"); + var r = document.createElement("div"); + return r.className = "CodeMirror-lint-message CodeMirror-lint-message-" + e, typeof t.messageHTML < "u" ? r.innerHTML = t.messageHTML : r.appendChild(document.createTextNode(t.message)), r; + } + s(N, "annotationTooltip"); + function H(t, e) { + var r = t.state.lint, + n = ++r.waitingFor; + function i() { + n = -1, t.off("change", i); + } + s(i, "abort"), t.on("change", i), e(t.getValue(), function (o, a) { + t.off("change", i), r.waitingFor == n && (a && o instanceof l && (o = a), t.operation(function () { + O(t, o); + })); + }, r.linterOptions, t); + } + s(H, "lintAsync"); + function k(t) { + var e = t.state.lint; + if (e) { + var r = e.options, + n = r.getAnnotations || t.getHelper(l.Pos(0, 0), "lint"); + if (n) if (r.async || n.async) H(t, n);else { + var i = n(t.getValue(), e.linterOptions, t); + if (!i) return; + i.then ? i.then(function (o) { + t.operation(function () { + O(t, o); + }); + }) : t.operation(function () { + O(t, i); + }); + } + } + } + s(k, "startLinting"); + function O(t, e) { + var r = t.state.lint; + if (r) { + var n = r.options; + E(t); + for (var i = j(e), o = 0; o < i.length; ++o) { + var a = i[o]; + if (a) { + var f = []; + a = a.filter(function (w) { + return f.indexOf(w.message) > -1 ? !1 : f.push(w.message); + }); + for (var p = null, m = r.hasGutter && document.createDocumentFragment(), T = 0; T < a.length; ++T) { + var d = a[T], + y = d.severity; + y || (y = "error"), p = D(p, y), n.formatAnnotation && (d = n.formatAnnotation(d)), r.hasGutter && m.appendChild(N(d)), d.to && r.marked.push(t.markText(d.from, d.to, { + className: "CodeMirror-lint-mark CodeMirror-lint-mark-" + y, + __annotation: d + })); + } + r.hasGutter && t.setGutterMarker(o, u, I(t, m, p, i[o].length > 1, n.tooltips)), n.highlightLines && t.addLineClass(o, "wrap", g + p); + } + } + n.onUpdateLinting && n.onUpdateLinting(e, i, t); + } + } + s(O, "updateLinting"); + function b(t) { + var e = t.state.lint; + e && (clearTimeout(e.timeout), e.timeout = setTimeout(function () { + k(t); + }, e.options.delay)); + } + s(b, "onChange"); + function P(t, e, r) { + for (var n = r.target || r.srcElement, i = document.createDocumentFragment(), o = 0; o < e.length; o++) { + var a = e[o]; + i.appendChild(N(a)); + } + M(t, r, i, n); + } + s(P, "popupTooltips"); + function U(t, e) { + var r = e.target || e.srcElement; + if (/\bCodeMirror-lint-mark-/.test(r.className)) { + for (var n = r.getBoundingClientRect(), i = (n.left + n.right) / 2, o = (n.top + n.bottom) / 2, a = t.findMarksAt(t.coordsChar({ + left: i, + top: o + }, "client")), f = [], p = 0; p < a.length; ++p) { + var m = a[p].__annotation; + m && f.push(m); + } + f.length && P(t, f, e); + } + } + s(U, "onMouseOver"), l.defineOption("lint", !1, function (t, e, r) { + if (r && r != l.Init && (E(t), t.state.lint.options.lintOnChange !== !1 && t.off("change", b), l.off(t.getWrapperElement(), "mouseover", t.state.lint.onMouseOver), clearTimeout(t.state.lint.timeout), delete t.state.lint), e) { + for (var n = t.getOption("gutters"), i = !1, o = 0; o < n.length; ++o) n[o] == u && (i = !0); + var a = t.state.lint = new F(t, e, i); + a.options.lintOnChange && t.on("change", b), a.options.tooltips != !1 && a.options.tooltips != "gutter" && l.on(t.getWrapperElement(), "mouseover", a.onMouseOver), k(t); + } + }), l.defineExtension("performLint", function () { + k(this); + }); + }); +})(); +var _ = B.exports; +const R = x.getDefaultExportFromCjs(_), + V = q({ + __proto__: null, + default: R + }, [_]); +exports.lint = V; + +/***/ }), + +/***/ "../../graphiql-react/dist/lint.cjs2.js": +/*!**********************************************!*\ + !*** ../../graphiql-react/dist/lint.cjs2.js ***! + \**********************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + + + +const t = __webpack_require__(/*! ./codemirror.cjs.js */ "../../graphiql-react/dist/codemirror.cjs.js"), + c = __webpack_require__(/*! graphql-language-service */ "../../graphql-language-service/esm/index.js"); +__webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); +const a = ["error", "warning", "information", "hint"], + g = { + "GraphQL: Validation": "validation", + "GraphQL: Deprecation": "deprecation", + "GraphQL: Syntax": "syntax" + }; +t.CodeMirror.registerHelper("lint", "graphql", (n, s) => { + const { + schema: r, + validationRules: i, + externalFragments: o + } = s; + return c.getDiagnostics(n, r, i, void 0, o).map(e => ({ + message: e.message, + severity: e.severity ? a[e.severity - 1] : a[0], + type: e.source ? g[e.source] : void 0, + from: t.CodeMirror.Pos(e.range.start.line, e.range.start.character), + to: t.CodeMirror.Pos(e.range.end.line, e.range.end.character) + })); +}); + +/***/ }), + +/***/ "../../graphiql-react/dist/lint.cjs3.js": +/*!**********************************************!*\ + !*** ../../graphiql-react/dist/lint.cjs3.js ***! + \**********************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + + + +var V = Object.defineProperty; +var t = (e, n) => V(e, "name", { + value: n, + configurable: !0 +}); +const I = __webpack_require__(/*! ./codemirror.cjs.js */ "../../graphiql-react/dist/codemirror.cjs.js"), + b = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +__webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); +function C(e) { + d = e, E = e.length, s = u = N = -1, o(), y(); + const n = q(); + return p("EOF"), n; +} +t(C, "jsonParse"); +let d, E, s, u, N, r, l; +function q() { + const e = s, + n = []; + if (p("{"), !x("}")) { + do n.push(M()); while (x(",")); + p("}"); + } + return { + kind: "Object", + start: e, + end: N, + members: n + }; +} +t(q, "parseObj"); +function M() { + const e = s, + n = l === "String" ? G() : null; + p("String"), p(":"); + const i = B(); + return { + kind: "Member", + start: e, + end: N, + key: n, + value: i + }; +} +t(M, "parseMember"); +function v() { + const e = s, + n = []; + if (p("["), !x("]")) { + do n.push(B()); while (x(",")); + p("]"); + } + return { + kind: "Array", + start: e, + end: N, + values: n + }; +} +t(v, "parseArr"); +function B() { + switch (l) { + case "[": + return v(); + case "{": + return q(); + case "String": + case "Number": + case "Boolean": + case "Null": + const e = G(); + return y(), e; + } + p("Value"); +} +t(B, "parseVal"); +function G() { + return { + kind: l, + start: s, + end: u, + value: JSON.parse(d.slice(s, u)) + }; +} +t(G, "curToken"); +function p(e) { + if (l === e) { + y(); + return; + } + let n; + if (l === "EOF") n = "[end of file]";else if (u - s > 1) n = "`" + d.slice(s, u) + "`";else { + const i = d.slice(s).match(/^.+?\b/); + n = "`" + (i ? i[0] : d[s]) + "`"; + } + throw k(`Expected ${e} but found ${n}.`); +} +t(p, "expect"); +class j extends Error { + constructor(n, i) { + super(n), this.position = i; + } +} +t(j, "JSONSyntaxError"); +function k(e) { + return new j(e, { + start: s, + end: u + }); +} +t(k, "syntaxError"); +function x(e) { + if (l === e) return y(), !0; +} +t(x, "skip"); +function o() { + return u < E && (u++, r = u === E ? 0 : d.charCodeAt(u)), r; +} +t(o, "ch"); +function y() { + for (N = u; r === 9 || r === 10 || r === 13 || r === 32;) o(); + if (r === 0) { + l = "EOF"; + return; + } + switch (s = u, r) { + case 34: + return l = "String", D(); + case 45: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + return l = "Number", H(); + case 102: + if (d.slice(s, s + 5) !== "false") break; + u += 4, o(), l = "Boolean"; + return; + case 110: + if (d.slice(s, s + 4) !== "null") break; + u += 3, o(), l = "Null"; + return; + case 116: + if (d.slice(s, s + 4) !== "true") break; + u += 3, o(), l = "Boolean"; + return; + } + l = d[s], o(); +} +t(y, "lex"); +function D() { + for (o(); r !== 34 && r > 31;) if (r === 92) switch (r = o(), r) { + case 34: + case 47: + case 92: + case 98: + case 102: + case 110: + case 114: + case 116: + o(); + break; + case 117: + o(), w(), w(), w(), w(); + break; + default: + throw k("Bad character escape sequence."); + } else { + if (u === E) throw k("Unterminated string."); + o(); + } + if (r === 34) { + o(); + return; + } + throw k("Unterminated string."); +} +t(D, "readString"); +function w() { + if (r >= 48 && r <= 57 || r >= 65 && r <= 70 || r >= 97 && r <= 102) return o(); + throw k("Expected hexadecimal digit."); +} +t(w, "readHex"); +function H() { + r === 45 && o(), r === 48 ? o() : $(), r === 46 && (o(), $()), (r === 69 || r === 101) && (r = o(), (r === 43 || r === 45) && o(), $()); +} +t(H, "readNumber"); +function $() { + if (r < 48 || r > 57) throw k("Expected decimal digit."); + do o(); while (r >= 48 && r <= 57); +} +t($, "readDigits"); +I.CodeMirror.registerHelper("lint", "graphql-variables", (e, n, i) => { + if (!e) return []; + let f; + try { + f = C(e); + } catch (c) { + if (c instanceof j) return [F(i, c.position, c.message)]; + throw c; + } + const { + variableToType: a + } = n; + return a ? U(i, a, f) : []; +}); +function U(e, n, i) { + var f; + const a = []; + for (const c of i.members) if (c) { + const h = (f = c.key) === null || f === void 0 ? void 0 : f.value, + m = n[h]; + if (m) for (const [O, Q] of g(m, c.value)) a.push(F(e, O, Q));else a.push(F(e, c.key, `Variable "$${h}" does not appear in any GraphQL query.`)); + } + return a; +} +t(U, "validateVariables"); +function g(e, n) { + if (!e || !n) return []; + if (e instanceof b.GraphQLNonNull) return n.kind === "Null" ? [[n, `Type "${e}" is non-nullable and cannot be null.`]] : g(e.ofType, n); + if (n.kind === "Null") return []; + if (e instanceof b.GraphQLList) { + const i = e.ofType; + if (n.kind === "Array") { + const f = n.values || []; + return L(f, a => g(i, a)); + } + return g(i, n); + } + if (e instanceof b.GraphQLInputObjectType) { + if (n.kind !== "Object") return [[n, `Type "${e}" must be an Object.`]]; + const i = Object.create(null), + f = L(n.members, a => { + var c; + const h = (c = a == null ? void 0 : a.key) === null || c === void 0 ? void 0 : c.value; + i[h] = !0; + const m = e.getFields()[h]; + if (!m) return [[a.key, `Type "${e}" does not have a field "${h}".`]]; + const O = m ? m.type : void 0; + return g(O, a.value); + }); + for (const a of Object.keys(e.getFields())) { + const c = e.getFields()[a]; + !i[a] && c.type instanceof b.GraphQLNonNull && !c.defaultValue && f.push([n, `Object of type "${e}" is missing required field "${a}".`]); + } + return f; + } + return e.name === "Boolean" && n.kind !== "Boolean" || e.name === "String" && n.kind !== "String" || e.name === "ID" && n.kind !== "Number" && n.kind !== "String" || e.name === "Float" && n.kind !== "Number" || e.name === "Int" && (n.kind !== "Number" || (n.value | 0) !== n.value) ? [[n, `Expected value of type "${e}".`]] : (e instanceof b.GraphQLEnumType || e instanceof b.GraphQLScalarType) && (n.kind !== "String" && n.kind !== "Number" && n.kind !== "Boolean" && n.kind !== "Null" || _(e.parseValue(n.value))) ? [[n, `Expected value of type "${e}".`]] : []; +} +t(g, "validateValue"); +function F(e, n, i) { + return { + message: i, + severity: "error", + type: "validation", + from: e.posFromIndex(n.start), + to: e.posFromIndex(n.end) + }; +} +t(F, "lintError"); +function _(e) { + return e == null || e !== e; +} +t(_, "isNullish"); +function L(e, n) { + return Array.prototype.concat.apply([], e.map(n)); +} +t(L, "mapCat"); + +/***/ }), + +/***/ "../../graphiql-react/dist/matchbrackets.cjs.js": +/*!******************************************************!*\ + !*** ../../graphiql-react/dist/matchbrackets.cjs.js ***! + \******************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +var i = Object.defineProperty; +var s = (e, c) => i(e, "name", { + value: c, + configurable: !0 +}); +const u = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"), + f = __webpack_require__(/*! ./matchbrackets.cjs2.js */ "../../graphiql-react/dist/matchbrackets.cjs2.js"); +function b(e, c) { + for (var o = 0; o < c.length; o++) { + const t = c[o]; + if (typeof t != "string" && !Array.isArray(t)) { + for (const r in t) if (r !== "default" && !(r in e)) { + const a = Object.getOwnPropertyDescriptor(t, r); + a && Object.defineProperty(e, r, a.get ? a : { + enumerable: !0, + get: () => t[r] + }); + } + } + } + return Object.freeze(Object.defineProperty(e, Symbol.toStringTag, { + value: "Module" + })); +} +s(b, "_mergeNamespaces"); +var n = f.requireMatchbrackets(); +const l = u.getDefaultExportFromCjs(n), + m = b({ + __proto__: null, + default: l + }, [n]); +exports.matchbrackets = m; + +/***/ }), + +/***/ "../../graphiql-react/dist/matchbrackets.cjs2.js": +/*!*******************************************************!*\ + !*** ../../graphiql-react/dist/matchbrackets.cjs2.js ***! + \*******************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +var R = Object.defineProperty; +var f = (L, y) => R(L, "name", { + value: y, + configurable: !0 +}); +const F = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); +var T = { + exports: {} + }, + E; +function I() { + return E || (E = 1, function (L, y) { + (function (o) { + o(F.requireCodemirror()); + })(function (o) { + var S = /MSIE \d/.test(navigator.userAgent) && (document.documentMode == null || document.documentMode < 8), + g = o.Pos, + B = { + "(": ")>", + ")": "(<", + "[": "]>", + "]": "[<", + "{": "}>", + "}": "{<", + "<": ">>", + ">": "<<" + }; + function A(t) { + return t && t.bracketRegex || /[(){}[\]]/; + } + f(A, "bracketRegex"); + function b(t, r, e) { + var s = t.getLineHandle(r.line), + n = r.ch - 1, + h = e && e.afterCursor; + h == null && (h = /(^| )cm-fat-cursor($| )/.test(t.getWrapperElement().className)); + var l = A(e), + u = !h && n >= 0 && l.test(s.text.charAt(n)) && B[s.text.charAt(n)] || l.test(s.text.charAt(n + 1)) && B[s.text.charAt(++n)]; + if (!u) return null; + var a = u.charAt(1) == ">" ? 1 : -1; + if (e && e.strict && a > 0 != (n == r.ch)) return null; + var k = t.getTokenTypeAt(g(r.line, n + 1)), + i = H(t, g(r.line, n + (a > 0 ? 1 : 0)), a, k, e); + return i == null ? null : { + from: g(r.line, n), + to: i && i.pos, + match: i && i.ch == u.charAt(0), + forward: a > 0 + }; + } + f(b, "findMatchingBracket"); + function H(t, r, e, s, n) { + for (var h = n && n.maxScanLineLength || 1e4, l = n && n.maxScanLines || 1e3, u = [], a = A(n), k = e > 0 ? Math.min(r.line + l, t.lastLine() + 1) : Math.max(t.firstLine() - 1, r.line - l), i = r.line; i != k; i += e) { + var c = t.getLine(i); + if (c) { + var v = e > 0 ? 0 : c.length - 1, + q = e > 0 ? c.length : -1; + if (!(c.length > h)) for (i == r.line && (v = r.ch - (e < 0 ? 1 : 0)); v != q; v += e) { + var d = c.charAt(v); + if (a.test(d) && (s === void 0 || (t.getTokenTypeAt(g(i, v + 1)) || "") == (s || ""))) { + var m = B[d]; + if (m && m.charAt(1) == ">" == e > 0) u.push(d);else if (u.length) u.pop();else return { + pos: g(i, v), + ch: d + }; + } + } + } + } + return i - e == (e > 0 ? t.lastLine() : t.firstLine()) ? !1 : null; + } + f(H, "scanForBracket"); + function M(t, r, e) { + for (var s = t.state.matchBrackets.maxHighlightLineLength || 1e3, n = e && e.highlightNonMatching, h = [], l = t.listSelections(), u = 0; u < l.length; u++) { + var a = l[u].empty() && b(t, l[u].head, e); + if (a && (a.match || n !== !1) && t.getLine(a.from.line).length <= s) { + var k = a.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket"; + h.push(t.markText(a.from, g(a.from.line, a.from.ch + 1), { + className: k + })), a.to && t.getLine(a.to.line).length <= s && h.push(t.markText(a.to, g(a.to.line, a.to.ch + 1), { + className: k + })); + } + } + if (h.length) { + S && t.state.focused && t.focus(); + var i = f(function () { + t.operation(function () { + for (var c = 0; c < h.length; c++) h[c].clear(); + }); + }, "clear"); + if (r) setTimeout(i, 800);else return i; + } + } + f(M, "matchBrackets"); + function x(t) { + t.operation(function () { + t.state.matchBrackets.currentlyHighlighted && (t.state.matchBrackets.currentlyHighlighted(), t.state.matchBrackets.currentlyHighlighted = null), t.state.matchBrackets.currentlyHighlighted = M(t, !1, t.state.matchBrackets); + }); + } + f(x, "doMatchBrackets"); + function p(t) { + t.state.matchBrackets && t.state.matchBrackets.currentlyHighlighted && (t.state.matchBrackets.currentlyHighlighted(), t.state.matchBrackets.currentlyHighlighted = null); + } + f(p, "clearHighlighted"), o.defineOption("matchBrackets", !1, function (t, r, e) { + e && e != o.Init && (t.off("cursorActivity", x), t.off("focus", x), t.off("blur", p), p(t)), r && (t.state.matchBrackets = typeof r == "object" ? r : {}, t.on("cursorActivity", x), t.on("focus", x), t.on("blur", p)); + }), o.defineExtension("matchBrackets", function () { + M(this, !0); + }), o.defineExtension("findMatchingBracket", function (t, r, e) { + return (e || typeof r == "boolean") && (e ? (e.strict = r, r = e) : r = r ? { + strict: !0 + } : null), b(this, t, r); + }), o.defineExtension("scanForBracket", function (t, r, e, s) { + return H(this, t, r, e, s); + }); + }); + }()), T.exports; +} +f(I, "requireMatchbrackets"); +exports.requireMatchbrackets = I; + +/***/ }), + +/***/ "../../graphiql-react/dist/mode-indent.cjs.js": +/*!****************************************************!*\ + !*** ../../graphiql-react/dist/mode-indent.cjs.js ***! + \****************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +var o = Object.defineProperty; +var v = (n, t) => o(n, "name", { + value: t, + configurable: !0 +}); +function s(n, t) { + var e, i; + const { + levels: l, + indentLevel: d + } = n; + return ((!l || l.length === 0 ? d : l.at(-1) - (!((e = this.electricInput) === null || e === void 0) && e.test(t) ? 1 : 0)) || 0) * (((i = this.config) === null || i === void 0 ? void 0 : i.indentUnit) || 0); +} +v(s, "indent"); +exports.indent = s; + +/***/ }), + +/***/ "../../graphiql-react/dist/mode.cjs.js": +/*!*********************************************!*\ + !*** ../../graphiql-react/dist/mode.cjs.js ***! + \*********************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + + + +var n = Object.defineProperty; +var s = (e, r) => n(e, "name", { + value: r, + configurable: !0 +}); +const o = __webpack_require__(/*! ./codemirror.cjs.js */ "../../graphiql-react/dist/codemirror.cjs.js"), + t = __webpack_require__(/*! graphql-language-service */ "../../graphql-language-service/esm/index.js"), + i = __webpack_require__(/*! ./mode-indent.cjs.js */ "../../graphiql-react/dist/mode-indent.cjs.js"); +__webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); +const l = s(e => { + const r = t.onlineParser({ + eatWhitespace: a => a.eatWhile(t.isIgnored), + lexRules: t.LexRules, + parseRules: t.ParseRules, + editorConfig: { + tabSize: e.tabSize + } + }); + return { + config: e, + startState: r.startState, + token: r.token, + indent: i.indent, + electricInput: /^\s*[})\]]/, + fold: "brace", + lineComment: "#", + closeBrackets: { + pairs: '()[]{}""', + explode: "()[]{}" + } + }; +}, "graphqlModeFactory"); +o.CodeMirror.defineMode("graphql", l); + +/***/ }), + +/***/ "../../graphiql-react/dist/mode.cjs2.js": +/*!**********************************************!*\ + !*** ../../graphiql-react/dist/mode.cjs2.js ***! + \**********************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + + + +var n = Object.defineProperty; +var u = (t, r) => n(t, "name", { + value: r, + configurable: !0 +}); +const i = __webpack_require__(/*! ./codemirror.cjs.js */ "../../graphiql-react/dist/codemirror.cjs.js"), + e = __webpack_require__(/*! graphql-language-service */ "../../graphql-language-service/esm/index.js"), + s = __webpack_require__(/*! ./mode-indent.cjs.js */ "../../graphiql-react/dist/mode-indent.cjs.js"); +__webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); +i.CodeMirror.defineMode("graphql-variables", t => { + const r = e.onlineParser({ + eatWhitespace: a => a.eatSpace(), + lexRules: c, + parseRules: o, + editorConfig: { + tabSize: t.tabSize + } + }); + return { + config: t, + startState: r.startState, + token: r.token, + indent: s.indent, + electricInput: /^\s*[}\]]/, + fold: "brace", + closeBrackets: { + pairs: '[]{}""', + explode: "[]{}" + } + }; +}); +const c = { + Punctuation: /^\[|]|\{|\}|:|,/, + Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/, + String: /^"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?/, + Keyword: /^true|false|null/ + }, + o = { + Document: [e.p("{"), e.list("Variable", e.opt(e.p(","))), e.p("}")], + Variable: [l("variable"), e.p(":"), "Value"], + Value(t) { + switch (t.kind) { + case "Number": + return "NumberValue"; + case "String": + return "StringValue"; + case "Punctuation": + switch (t.value) { + case "[": + return "ListValue"; + case "{": + return "ObjectValue"; + } + return null; + case "Keyword": + switch (t.value) { + case "true": + case "false": + return "BooleanValue"; + case "null": + return "NullValue"; + } + return null; + } + }, + NumberValue: [e.t("Number", "number")], + StringValue: [e.t("String", "string")], + BooleanValue: [e.t("Keyword", "builtin")], + NullValue: [e.t("Keyword", "keyword")], + ListValue: [e.p("["), e.list("Value", e.opt(e.p(","))), e.p("]")], + ObjectValue: [e.p("{"), e.list("ObjectField", e.opt(e.p(","))), e.p("}")], + ObjectField: [l("attribute"), e.p(":"), "Value"] + }; +function l(t) { + return { + style: t, + match: r => r.kind === "String", + update(r, a) { + r.name = a.value.slice(1, -1); + } + }; +} +u(l, "namedKey"); + +/***/ }), + +/***/ "../../graphiql-react/dist/mode.cjs3.js": +/*!**********************************************!*\ + !*** ../../graphiql-react/dist/mode.cjs3.js ***! + \**********************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + + + +const a = __webpack_require__(/*! ./codemirror.cjs.js */ "../../graphiql-react/dist/codemirror.cjs.js"), + e = __webpack_require__(/*! graphql-language-service */ "../../graphql-language-service/esm/index.js"), + l = __webpack_require__(/*! ./mode-indent.cjs.js */ "../../graphiql-react/dist/mode-indent.cjs.js"); +__webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); +a.CodeMirror.defineMode("graphql-results", r => { + const t = e.onlineParser({ + eatWhitespace: u => u.eatSpace(), + lexRules: n, + parseRules: s, + editorConfig: { + tabSize: r.tabSize + } + }); + return { + config: r, + startState: t.startState, + token: t.token, + indent: l.indent, + electricInput: /^\s*[}\]]/, + fold: "brace", + closeBrackets: { + pairs: '[]{}""', + explode: "[]{}" + } + }; +}); +const n = { + Punctuation: /^\[|]|\{|\}|:|,/, + Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/, + String: /^"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?/, + Keyword: /^true|false|null/ + }, + s = { + Document: [e.p("{"), e.list("Entry", e.p(",")), e.p("}")], + Entry: [e.t("String", "def"), e.p(":"), "Value"], + Value(r) { + switch (r.kind) { + case "Number": + return "NumberValue"; + case "String": + return "StringValue"; + case "Punctuation": + switch (r.value) { + case "[": + return "ListValue"; + case "{": + return "ObjectValue"; + } + return null; + case "Keyword": + switch (r.value) { + case "true": + case "false": + return "BooleanValue"; + case "null": + return "NullValue"; + } + return null; + } + }, + NumberValue: [e.t("Number", "number")], + StringValue: [e.t("String", "string")], + BooleanValue: [e.t("Keyword", "builtin")], + NullValue: [e.t("Keyword", "keyword")], + ListValue: [e.p("["), e.list("Value", e.p(",")), e.p("]")], + ObjectValue: [e.p("{"), e.list("ObjectField", e.p(",")), e.p("}")], + ObjectField: [e.t("String", "property"), e.p(":"), "Value"] + }; + +/***/ }), + +/***/ "../../graphiql-react/dist/search.cjs.js": +/*!***********************************************!*\ + !*** ../../graphiql-react/dist/search.cjs.js ***! + \***********************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +var K = Object.defineProperty; +var a = (S, O) => K(S, "name", { + value: O, + configurable: !0 +}); +const Q = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"), + L = __webpack_require__(/*! ./searchcursor.cjs2.js */ "../../graphiql-react/dist/searchcursor.cjs2.js"), + z = __webpack_require__(/*! ./dialog.cjs2.js */ "../../graphiql-react/dist/dialog.cjs2.js"); +function U(S, O) { + for (var i = 0; i < O.length; i++) { + const y = O[i]; + if (typeof y != "string" && !Array.isArray(y)) { + for (const v in y) if (v !== "default" && !(v in S)) { + const h = Object.getOwnPropertyDescriptor(y, v); + h && Object.defineProperty(S, v, h.get ? h : { + enumerable: !0, + get: () => y[v] + }); + } + } + } + return Object.freeze(Object.defineProperty(S, Symbol.toStringTag, { + value: "Module" + })); +} +a(U, "_mergeNamespaces"); +var B = { + exports: {} +}; +(function (S, O) { + (function (i) { + i(Q.requireCodemirror(), L.requireSearchcursor(), z.requireDialog()); + })(function (i) { + i.defineOption("search", { + bottom: !1 + }); + function y(e, n) { + return typeof e == "string" ? e = new RegExp(e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), n ? "gi" : "g") : e.global || (e = new RegExp(e.source, e.ignoreCase ? "gi" : "g")), { + token: function (t) { + e.lastIndex = t.pos; + var o = e.exec(t.string); + if (o && o.index == t.pos) return t.pos += o[0].length || 1, "searching"; + o ? t.pos = o.index : t.skipToEnd(); + } + }; + } + a(y, "searchOverlay"); + function v() { + this.posFrom = this.posTo = this.lastQuery = this.query = null, this.overlay = null; + } + a(v, "SearchState"); + function h(e) { + return e.state.search || (e.state.search = new v()); + } + a(h, "getSearchState"); + function m(e) { + return typeof e == "string" && e == e.toLowerCase(); + } + a(m, "queryCaseInsensitive"); + function N(e, n, t) { + return e.getSearchCursor(n, t, { + caseFold: m(n), + multiline: !0 + }); + } + a(N, "getSearchCursor"); + function j(e, n, t, o, r) { + e.openDialog(n, o, { + value: t, + selectValueOnOpen: !0, + closeOnEnter: !1, + onClose: function () { + w(e); + }, + onKeyDown: r, + bottom: e.options.search.bottom + }); + } + a(j, "persistentDialog"); + function R(e, n, t, o, r) { + e.openDialog ? e.openDialog(n, r, { + value: o, + selectValueOnOpen: !0, + bottom: e.options.search.bottom + }) : r(prompt(t, o)); + } + a(R, "dialog"); + function k(e, n, t, o) { + e.openConfirm ? e.openConfirm(n, o) : confirm(t) && o[0](); + } + a(k, "confirmDialog"); + function C(e) { + return e.replace(/\\([nrt\\])/g, function (n, t) { + return t == "n" ? ` +` : t == "r" ? "\r" : t == "t" ? " " : t == "\\" ? "\\" : n; + }); + } + a(C, "parseString"); + function T(e) { + var n = e.match(/^\/(.*)\/([a-z]*)$/); + if (n) try { + e = new RegExp(n[1], n[2].indexOf("i") == -1 ? "" : "i"); + } catch {} else e = C(e); + return (typeof e == "string" ? e == "" : e.test("")) && (e = /x^/), e; + } + a(T, "parseQuery"); + function D(e, n, t) { + n.queryText = t, n.query = T(t), e.removeOverlay(n.overlay, m(n.query)), n.overlay = y(n.query, m(n.query)), e.addOverlay(n.overlay), e.showMatchesOnScrollbar && (n.annotate && (n.annotate.clear(), n.annotate = null), n.annotate = e.showMatchesOnScrollbar(n.query, m(n.query))); + } + a(D, "startSearch"); + function b(e, n, t, o) { + var r = h(e); + if (r.query) return P(e, n); + var s = e.getSelection() || r.lastQuery; + if (s instanceof RegExp && s.source == "x^" && (s = null), t && e.openDialog) { + var c = null, + u = a(function (f, x) { + i.e_stop(x), f && (f != r.queryText && (D(e, r, f), r.posFrom = r.posTo = e.getCursor()), c && (c.style.opacity = 1), P(e, x.shiftKey, function (d, g) { + var p; + g.line < 3 && document.querySelector && (p = e.display.wrapper.querySelector(".CodeMirror-dialog")) && p.getBoundingClientRect().bottom - 4 > e.cursorCoords(g, "window").top && ((c = p).style.opacity = .4); + })); + }, "searchNext"); + j(e, _(e), s, u, function (f, x) { + var d = i.keyName(f), + g = e.getOption("extraKeys"), + p = g && g[d] || i.keyMap[e.getOption("keyMap")][d]; + p == "findNext" || p == "findPrev" || p == "findPersistentNext" || p == "findPersistentPrev" ? (i.e_stop(f), D(e, h(e), x), e.execCommand(p)) : (p == "find" || p == "findPersistent") && (i.e_stop(f), u(x, f)); + }), o && s && (D(e, r, s), P(e, n)); + } else R(e, _(e), "Search for:", s, function (f) { + f && !r.query && e.operation(function () { + D(e, r, f), r.posFrom = r.posTo = e.getCursor(), P(e, n); + }); + }); + } + a(b, "doSearch"); + function P(e, n, t) { + e.operation(function () { + var o = h(e), + r = N(e, o.query, n ? o.posFrom : o.posTo); + !r.find(n) && (r = N(e, o.query, n ? i.Pos(e.lastLine()) : i.Pos(e.firstLine(), 0)), !r.find(n)) || (e.setSelection(r.from(), r.to()), e.scrollIntoView({ + from: r.from(), + to: r.to() + }, 20), o.posFrom = r.from(), o.posTo = r.to(), t && t(r.from(), r.to())); + }); + } + a(P, "findNext"); + function w(e) { + e.operation(function () { + var n = h(e); + n.lastQuery = n.query, n.query && (n.query = n.queryText = null, e.removeOverlay(n.overlay), n.annotate && (n.annotate.clear(), n.annotate = null)); + }); + } + a(w, "clearSearch"); + function l(e, n) { + var t = e ? document.createElement(e) : document.createDocumentFragment(); + for (var o in n) t[o] = n[o]; + for (var r = 2; r < arguments.length; r++) { + var s = arguments[r]; + t.appendChild(typeof s == "string" ? document.createTextNode(s) : s); + } + return t; + } + a(l, "el"); + function _(e) { + return l("", null, l("span", { + className: "CodeMirror-search-label" + }, e.phrase("Search:")), " ", l("input", { + type: "text", + style: "width: 10em", + className: "CodeMirror-search-field" + }), " ", l("span", { + style: "color: #888", + className: "CodeMirror-search-hint" + }, e.phrase("(Use /re/ syntax for regexp search)"))); + } + a(_, "getQueryDialog"); + function A(e) { + return l("", null, " ", l("input", { + type: "text", + style: "width: 10em", + className: "CodeMirror-search-field" + }), " ", l("span", { + style: "color: #888", + className: "CodeMirror-search-hint" + }, e.phrase("(Use /re/ syntax for regexp search)"))); + } + a(A, "getReplaceQueryDialog"); + function I(e) { + return l("", null, l("span", { + className: "CodeMirror-search-label" + }, e.phrase("With:")), " ", l("input", { + type: "text", + style: "width: 10em", + className: "CodeMirror-search-field" + })); + } + a(I, "getReplacementQueryDialog"); + function V(e) { + return l("", null, l("span", { + className: "CodeMirror-search-label" + }, e.phrase("Replace?")), " ", l("button", {}, e.phrase("Yes")), " ", l("button", {}, e.phrase("No")), " ", l("button", {}, e.phrase("All")), " ", l("button", {}, e.phrase("Stop"))); + } + a(V, "getDoReplaceConfirm"); + function E(e, n, t) { + e.operation(function () { + for (var o = N(e, n); o.findNext();) if (typeof n != "string") { + var r = e.getRange(o.from(), o.to()).match(n); + o.replace(t.replace(/\$(\d)/g, function (s, c) { + return r[c]; + })); + } else o.replace(t); + }); + } + a(E, "replaceAll"); + function F(e, n) { + if (!e.getOption("readOnly")) { + var t = e.getSelection() || h(e).lastQuery, + o = n ? e.phrase("Replace all:") : e.phrase("Replace:"), + r = l("", null, l("span", { + className: "CodeMirror-search-label" + }, o), A(e)); + R(e, r, o, t, function (s) { + s && (s = T(s), R(e, I(e), e.phrase("Replace with:"), "", function (c) { + if (c = C(c), n) E(e, s, c);else { + w(e); + var u = N(e, s, e.getCursor("from")), + f = a(function () { + var d = u.from(), + g; + !(g = u.findNext()) && (u = N(e, s), !(g = u.findNext()) || d && u.from().line == d.line && u.from().ch == d.ch) || (e.setSelection(u.from(), u.to()), e.scrollIntoView({ + from: u.from(), + to: u.to() + }), k(e, V(e), e.phrase("Replace?"), [function () { + x(g); + }, f, function () { + E(e, s, c); + }])); + }, "advance"), + x = a(function (d) { + u.replace(typeof s == "string" ? c : c.replace(/\$(\d)/g, function (g, p) { + return d[p]; + })), f(); + }, "doReplace"); + f(); + } + })); + }); + } + } + a(F, "replace"), i.commands.find = function (e) { + w(e), b(e); + }, i.commands.findPersistent = function (e) { + w(e), b(e, !1, !0); + }, i.commands.findPersistentNext = function (e) { + b(e, !1, !0, !0); + }, i.commands.findPersistentPrev = function (e) { + b(e, !0, !0, !0); + }, i.commands.findNext = b, i.commands.findPrev = function (e) { + b(e, !0); + }, i.commands.clearSearch = w, i.commands.replace = F, i.commands.replaceAll = function (e) { + F(e, !0); + }; + }); +})(); +var $ = B.exports; +const W = Q.getDefaultExportFromCjs($), + Y = U({ + __proto__: null, + default: W + }, [$]); +exports.search = Y; + +/***/ }), + +/***/ "../../graphiql-react/dist/searchcursor.cjs.js": +/*!*****************************************************!*\ + !*** ../../graphiql-react/dist/searchcursor.cjs.js ***! + \*****************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +var n = Object.defineProperty; +var u = (r, o) => n(r, "name", { + value: o, + configurable: !0 +}); +const i = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"), + f = __webpack_require__(/*! ./searchcursor.cjs2.js */ "../../graphiql-react/dist/searchcursor.cjs2.js"); +function l(r, o) { + for (var c = 0; c < o.length; c++) { + const e = o[c]; + if (typeof e != "string" && !Array.isArray(e)) { + for (const t in e) if (t !== "default" && !(t in r)) { + const s = Object.getOwnPropertyDescriptor(e, t); + s && Object.defineProperty(r, t, s.get ? s : { + enumerable: !0, + get: () => e[t] + }); + } + } + } + return Object.freeze(Object.defineProperty(r, Symbol.toStringTag, { + value: "Module" + })); +} +u(l, "_mergeNamespaces"); +var a = f.requireSearchcursor(); +const g = i.getDefaultExportFromCjs(a), + p = l({ + __proto__: null, + default: g + }, [a]); +exports.searchcursor = p; + +/***/ }), + +/***/ "../../graphiql-react/dist/searchcursor.cjs2.js": +/*!******************************************************!*\ + !*** ../../graphiql-react/dist/searchcursor.cjs2.js ***! + \******************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +var W = Object.defineProperty; +var o = (d, E) => W(d, "name", { + value: E, + configurable: !0 +}); +const G = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); +var N = { + exports: {} + }, + b; +function H() { + return b || (b = 1, function (d, E) { + (function (m) { + m(G.requireCodemirror()); + })(function (m) { + var a = m.Pos; + function B(e) { + var t = e.flags; + return t !== null && t !== void 0 ? t : (e.ignoreCase ? "i" : "") + (e.global ? "g" : "") + (e.multiline ? "m" : ""); + } + o(B, "regexpFlags"); + function F(e, t) { + for (var n = B(e), r = n, l = 0; l < t.length; l++) r.indexOf(t.charAt(l)) == -1 && (r += t.charAt(l)); + return n == r ? e : new RegExp(e.source, r); + } + o(F, "ensureFlags"); + function R(e) { + return /\\s|\\n|\n|\\W|\\D|\[\^/.test(e.source); + } + o(R, "maybeMultiline"); + function I(e, t, n) { + t = F(t, "g"); + for (var r = n.line, l = n.ch, i = e.lastLine(); r <= i; r++, l = 0) { + t.lastIndex = l; + var h = e.getLine(r), + f = t.exec(h); + if (f) return { + from: a(r, f.index), + to: a(r, f.index + f[0].length), + match: f + }; + } + } + o(I, "searchRegexpForward"); + function j(e, t, n) { + if (!R(t)) return I(e, t, n); + t = F(t, "gm"); + for (var r, l = 1, i = n.line, h = e.lastLine(); i <= h;) { + for (var f = 0; f < l && !(i > h); f++) { + var p = e.getLine(i++); + r = r == null ? p : r + ` +` + p; + } + l = l * 2, t.lastIndex = n.ch; + var u = t.exec(r); + if (u) { + var s = r.slice(0, u.index).split(` +`), + c = u[0].split(` +`), + g = n.line + s.length - 1, + v = s[s.length - 1].length; + return { + from: a(g, v), + to: a(g + c.length - 1, c.length == 1 ? v + c[0].length : c[c.length - 1].length), + match: u + }; + } + } + } + o(j, "searchRegexpForwardMultiline"); + function z(e, t, n) { + for (var r, l = 0; l <= e.length;) { + t.lastIndex = l; + var i = t.exec(e); + if (!i) break; + var h = i.index + i[0].length; + if (h > e.length - n) break; + (!r || h > r.index + r[0].length) && (r = i), l = i.index + 1; + } + return r; + } + o(z, "lastMatchIn"); + function D(e, t, n) { + t = F(t, "g"); + for (var r = n.line, l = n.ch, i = e.firstLine(); r >= i; r--, l = -1) { + var h = e.getLine(r), + f = z(h, t, l < 0 ? 0 : h.length - l); + if (f) return { + from: a(r, f.index), + to: a(r, f.index + f[0].length), + match: f + }; + } + } + o(D, "searchRegexpBackward"); + function A(e, t, n) { + if (!R(t)) return D(e, t, n); + t = F(t, "gm"); + for (var r, l = 1, i = e.getLine(n.line).length - n.ch, h = n.line, f = e.firstLine(); h >= f;) { + for (var p = 0; p < l && h >= f; p++) { + var u = e.getLine(h--); + r = r == null ? u : u + ` +` + r; + } + l *= 2; + var s = z(r, t, i); + if (s) { + var c = r.slice(0, s.index).split(` +`), + g = s[0].split(` +`), + v = h + c.length, + x = c[c.length - 1].length; + return { + from: a(v, x), + to: a(v + g.length - 1, g.length == 1 ? x + g[0].length : g[g.length - 1].length), + match: s + }; + } + } + } + o(A, "searchRegexpBackwardMultiline"); + var P, k; + String.prototype.normalize ? (P = o(function (e) { + return e.normalize("NFD").toLowerCase(); + }, "doFold"), k = o(function (e) { + return e.normalize("NFD"); + }, "noFold")) : (P = o(function (e) { + return e.toLowerCase(); + }, "doFold"), k = o(function (e) { + return e; + }, "noFold")); + function L(e, t, n, r) { + if (e.length == t.length) return n; + for (var l = 0, i = n + Math.max(0, e.length - t.length);;) { + if (l == i) return l; + var h = l + i >> 1, + f = r(e.slice(0, h)).length; + if (f == n) return h; + f > n ? i = h : l = h + 1; + } + } + o(L, "adjustPos"); + function y(e, t, n, r) { + if (!t.length) return null; + var l = r ? P : k, + i = l(t).split(/\r|\n\r?/); + t: for (var h = n.line, f = n.ch, p = e.lastLine() + 1 - i.length; h <= p; h++, f = 0) { + var u = e.getLine(h).slice(f), + s = l(u); + if (i.length == 1) { + var c = s.indexOf(i[0]); + if (c == -1) continue t; + var n = L(u, s, c, l) + f; + return { + from: a(h, L(u, s, c, l) + f), + to: a(h, L(u, s, c + i[0].length, l) + f) + }; + } else { + var g = s.length - i[0].length; + if (s.slice(g) != i[0]) continue t; + for (var v = 1; v < i.length - 1; v++) if (l(e.getLine(h + v)) != i[v]) continue t; + var x = e.getLine(h + i.length - 1), + O = l(x), + S = i[i.length - 1]; + if (O.slice(0, S.length) != S) continue t; + return { + from: a(h, L(u, s, g, l) + f), + to: a(h + i.length - 1, L(x, O, S.length, l)) + }; + } + } + } + o(y, "searchStringForward"); + function C(e, t, n, r) { + if (!t.length) return null; + var l = r ? P : k, + i = l(t).split(/\r|\n\r?/); + t: for (var h = n.line, f = n.ch, p = e.firstLine() - 1 + i.length; h >= p; h--, f = -1) { + var u = e.getLine(h); + f > -1 && (u = u.slice(0, f)); + var s = l(u); + if (i.length == 1) { + var c = s.lastIndexOf(i[0]); + if (c == -1) continue t; + return { + from: a(h, L(u, s, c, l)), + to: a(h, L(u, s, c + i[0].length, l)) + }; + } else { + var g = i[i.length - 1]; + if (s.slice(0, g.length) != g) continue t; + for (var v = 1, n = h - i.length + 1; v < i.length - 1; v++) if (l(e.getLine(n + v)) != i[v]) continue t; + var x = e.getLine(h + 1 - i.length), + O = l(x); + if (O.slice(O.length - i[0].length) != i[0]) continue t; + return { + from: a(h + 1 - i.length, L(x, O, x.length - i[0].length, l)), + to: a(h, L(u, s, g.length, l)) + }; + } + } + } + o(C, "searchStringBackward"); + function w(e, t, n, r) { + this.atOccurrence = !1, this.afterEmptyMatch = !1, this.doc = e, n = n ? e.clipPos(n) : a(0, 0), this.pos = { + from: n, + to: n + }; + var l; + typeof r == "object" ? l = r.caseFold : (l = r, r = null), typeof t == "string" ? (l == null && (l = !1), this.matches = function (i, h) { + return (i ? C : y)(e, t, h, l); + }) : (t = F(t, "gm"), !r || r.multiline !== !1 ? this.matches = function (i, h) { + return (i ? A : j)(e, t, h); + } : this.matches = function (i, h) { + return (i ? D : I)(e, t, h); + }); + } + o(w, "SearchCursor"), w.prototype = { + findNext: function () { + return this.find(!1); + }, + findPrevious: function () { + return this.find(!0); + }, + find: function (e) { + var t = this.doc.clipPos(e ? this.pos.from : this.pos.to); + if (this.afterEmptyMatch && this.atOccurrence && (t = a(t.line, t.ch), e ? (t.ch--, t.ch < 0 && (t.line--, t.ch = (this.doc.getLine(t.line) || "").length)) : (t.ch++, t.ch > (this.doc.getLine(t.line) || "").length && (t.ch = 0, t.line++)), m.cmpPos(t, this.doc.clipPos(t)) != 0)) return this.atOccurrence = !1; + var n = this.matches(e, t); + if (this.afterEmptyMatch = n && m.cmpPos(n.from, n.to) == 0, n) return this.pos = n, this.atOccurrence = !0, this.pos.match || !0; + var r = a(e ? this.doc.firstLine() : this.doc.lastLine() + 1, 0); + return this.pos = { + from: r, + to: r + }, this.atOccurrence = !1; + }, + from: function () { + if (this.atOccurrence) return this.pos.from; + }, + to: function () { + if (this.atOccurrence) return this.pos.to; + }, + replace: function (e, t) { + if (this.atOccurrence) { + var n = m.splitLines(e); + this.doc.replaceRange(n, this.pos.from, this.pos.to, t), this.pos.to = a(this.pos.from.line + n.length - 1, n[n.length - 1].length + (n.length == 1 ? this.pos.from.ch : 0)); + } + } + }, m.defineExtension("getSearchCursor", function (e, t, n) { + return new w(this.doc, e, t, n); + }), m.defineDocExtension("getSearchCursor", function (e, t, n) { + return new w(this, e, t, n); + }), m.defineExtension("selectMatches", function (e, t) { + for (var n = [], r = this.getSearchCursor(e, this.getCursor("from"), t); r.findNext() && !(m.cmpPos(r.to(), this.getCursor("to")) > 0);) n.push({ + anchor: r.from(), + head: r.to() + }); + n.length && this.setSelections(n, 0); + }); + }); + }()), N.exports; +} +o(H, "requireSearchcursor"); +exports.requireSearchcursor = H; + +/***/ }), + +/***/ "../../graphiql-react/dist/show-hint.cjs.js": +/*!**************************************************!*\ + !*** ../../graphiql-react/dist/show-hint.cjs.js ***! + \**************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +var ct = Object.defineProperty; +var p = (H, A) => ct(H, "name", { + value: A, + configurable: !0 +}); +const G = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); +function lt(H, A) { + for (var r = 0; r < A.length; r++) { + const w = A[r]; + if (typeof w != "string" && !Array.isArray(w)) { + for (const v in w) if (v !== "default" && !(v in H)) { + const b = Object.getOwnPropertyDescriptor(w, v); + b && Object.defineProperty(H, v, b.get ? b : { + enumerable: !0, + get: () => w[v] + }); + } + } + } + return Object.freeze(Object.defineProperty(H, Symbol.toStringTag, { + value: "Module" + })); +} +p(lt, "_mergeNamespaces"); +var ht = { + exports: {} +}; +(function (H, A) { + (function (r) { + r(G.requireCodemirror()); + })(function (r) { + var w = "CodeMirror-hint", + v = "CodeMirror-hint-active"; + r.showHint = function (t, e, i) { + if (!e) return t.showHint(i); + i && i.async && (e.async = !0); + var n = { + hint: e + }; + if (i) for (var s in i) n[s] = i[s]; + return t.showHint(n); + }, r.defineExtension("showHint", function (t) { + t = tt(this, this.getCursor("start"), t); + var e = this.listSelections(); + if (!(e.length > 1)) { + if (this.somethingSelected()) { + if (!t.hint.supportsSelection) return; + for (var i = 0; i < e.length; i++) if (e[i].head.line != e[i].anchor.line) return; + } + this.state.completionActive && this.state.completionActive.close(); + var n = this.state.completionActive = new b(this, t); + n.options.hint && (r.signal(this, "startCompletion", this), n.update(!0)); + } + }), r.defineExtension("closeHint", function () { + this.state.completionActive && this.state.completionActive.close(); + }); + function b(t, e) { + if (this.cm = t, this.options = e, this.widget = null, this.debounce = 0, this.tick = 0, this.startPos = this.cm.getCursor("start"), this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length, this.options.updateOnCursorActivity) { + var i = this; + t.on("cursorActivity", this.activityFunc = function () { + i.cursorActivity(); + }); + } + } + p(b, "Completion"); + var Q = window.requestAnimationFrame || function (t) { + return setTimeout(t, 1e3 / 60); + }, + Z = window.cancelAnimationFrame || clearTimeout; + b.prototype = { + close: function () { + this.active() && (this.cm.state.completionActive = null, this.tick = null, this.options.updateOnCursorActivity && this.cm.off("cursorActivity", this.activityFunc), this.widget && this.data && r.signal(this.data, "close"), this.widget && this.widget.close(), r.signal(this.cm, "endCompletion", this.cm)); + }, + active: function () { + return this.cm.state.completionActive == this; + }, + pick: function (t, e) { + var i = t.list[e], + n = this; + this.cm.operation(function () { + i.hint ? i.hint(n.cm, t, i) : n.cm.replaceRange(_(i), i.from || t.from, i.to || t.to, "complete"), r.signal(t, "pick", i), n.cm.scrollIntoView(); + }), this.options.closeOnPick && this.close(); + }, + cursorActivity: function () { + this.debounce && (Z(this.debounce), this.debounce = 0); + var t = this.startPos; + this.data && (t = this.data.from); + var e = this.cm.getCursor(), + i = this.cm.getLine(e.line); + if (e.line != this.startPos.line || i.length - e.ch != this.startLen - this.startPos.ch || e.ch < t.ch || this.cm.somethingSelected() || !e.ch || this.options.closeCharacters.test(i.charAt(e.ch - 1))) this.close();else { + var n = this; + this.debounce = Q(function () { + n.update(); + }), this.widget && this.widget.disable(); + } + }, + update: function (t) { + if (this.tick != null) { + var e = this, + i = ++this.tick; + U(this.options.hint, this.cm, this.options, function (n) { + e.tick == i && e.finishUpdate(n, t); + }); + } + }, + finishUpdate: function (t, e) { + this.data && r.signal(this.data, "update"); + var i = this.widget && this.widget.picked || e && this.options.completeSingle; + this.widget && this.widget.close(), this.data = t, t && t.list.length && (i && t.list.length == 1 ? this.pick(t, 0) : (this.widget = new K(this, t), r.signal(t, "shown"))); + } + }; + function tt(t, e, i) { + var n = t.options.hintOptions, + s = {}; + for (var c in D) s[c] = D[c]; + if (n) for (var c in n) n[c] !== void 0 && (s[c] = n[c]); + if (i) for (var c in i) i[c] !== void 0 && (s[c] = i[c]); + return s.hint.resolve && (s.hint = s.hint.resolve(t, e)), s; + } + p(tt, "parseOptions"); + function _(t) { + return typeof t == "string" ? t : t.text; + } + p(_, "getText"); + function et(t, e) { + var i = { + Up: function () { + e.moveFocus(-1); + }, + Down: function () { + e.moveFocus(1); + }, + PageUp: function () { + e.moveFocus(-e.menuSize() + 1, !0); + }, + PageDown: function () { + e.moveFocus(e.menuSize() - 1, !0); + }, + Home: function () { + e.setFocus(0); + }, + End: function () { + e.setFocus(e.length - 1); + }, + Enter: e.pick, + Tab: e.pick, + Esc: e.close + }, + n = /Mac/.test(navigator.platform); + n && (i["Ctrl-P"] = function () { + e.moveFocus(-1); + }, i["Ctrl-N"] = function () { + e.moveFocus(1); + }); + var s = t.options.customKeys, + c = s ? {} : i; + function o(u, l) { + var a; + typeof l != "string" ? a = p(function (S) { + return l(S, e); + }, "bound") : i.hasOwnProperty(l) ? a = i[l] : a = l, c[u] = a; + } + if (p(o, "addBinding"), s) for (var f in s) s.hasOwnProperty(f) && o(f, s[f]); + var h = t.options.extraKeys; + if (h) for (var f in h) h.hasOwnProperty(f) && o(f, h[f]); + return c; + } + p(et, "buildKeyMap"); + function B(t, e) { + for (; e && e != t;) { + if (e.nodeName.toUpperCase() === "LI" && e.parentNode == t) return e; + e = e.parentNode; + } + } + p(B, "getHintElement"); + function K(t, e) { + this.id = "cm-complete-" + Math.floor(Math.random(1e6)), this.completion = t, this.data = e, this.picked = !1; + var i = this, + n = t.cm, + s = n.getInputField().ownerDocument, + c = s.defaultView || s.parentWindow, + o = this.hints = s.createElement("ul"); + o.setAttribute("role", "listbox"), o.setAttribute("aria-expanded", "true"), o.id = this.id; + var f = t.cm.options.theme; + o.className = "CodeMirror-hints " + f, this.selectedHint = e.selectedHint || 0; + for (var h = e.list, u = 0; u < h.length; ++u) { + var l = o.appendChild(s.createElement("li")), + a = h[u], + S = w + (u != this.selectedHint ? "" : " " + v); + a.className != null && (S = a.className + " " + S), l.className = S, u == this.selectedHint && l.setAttribute("aria-selected", "true"), l.id = this.id + "-" + u, l.setAttribute("role", "option"), a.render ? a.render(l, e, a) : l.appendChild(s.createTextNode(a.displayText || _(a))), l.hintId = u; + } + var T = t.options.container || s.body, + y = n.cursorCoords(t.options.alignWithWord ? e.from : null), + k = y.left, + O = y.bottom, + j = !0, + F = 0, + E = 0; + if (T !== s.body) { + var st = ["absolute", "relative", "fixed"].indexOf(c.getComputedStyle(T).position) !== -1, + W = st ? T : T.offsetParent, + M = W.getBoundingClientRect(), + q = s.body.getBoundingClientRect(); + F = M.left - q.left - W.scrollLeft, E = M.top - q.top - W.scrollTop; + } + o.style.left = k - F + "px", o.style.top = O - E + "px"; + var N = c.innerWidth || Math.max(s.body.offsetWidth, s.documentElement.offsetWidth), + L = c.innerHeight || Math.max(s.body.offsetHeight, s.documentElement.offsetHeight); + T.appendChild(o), n.getInputField().setAttribute("aria-autocomplete", "list"), n.getInputField().setAttribute("aria-owns", this.id), n.getInputField().setAttribute("aria-activedescendant", this.id + "-" + this.selectedHint); + var m = t.options.moveOnOverlap ? o.getBoundingClientRect() : new DOMRect(), + z = t.options.paddingForScrollbar ? o.scrollHeight > o.clientHeight + 1 : !1, + x; + setTimeout(function () { + x = n.getScrollInfo(); + }); + var ot = m.bottom - L; + if (ot > 0) { + var P = m.bottom - m.top, + rt = y.top - (y.bottom - m.top); + if (rt - P > 0) o.style.top = (O = y.top - P - E) + "px", j = !1;else if (P > L) { + o.style.height = L - 5 + "px", o.style.top = (O = y.bottom - m.top - E) + "px"; + var V = n.getCursor(); + e.from.ch != V.ch && (y = n.cursorCoords(V), o.style.left = (k = y.left - F) + "px", m = o.getBoundingClientRect()); + } + } + var C = m.right - N; + if (z && (C += n.display.nativeBarWidth), C > 0 && (m.right - m.left > N && (o.style.width = N - 5 + "px", C -= m.right - m.left - N), o.style.left = (k = y.left - C - F) + "px"), z) for (var I = o.firstChild; I; I = I.nextSibling) I.style.paddingRight = n.display.nativeBarWidth + "px"; + if (n.addKeyMap(this.keyMap = et(t, { + moveFocus: function (d, g) { + i.changeActive(i.selectedHint + d, g); + }, + setFocus: function (d) { + i.changeActive(d); + }, + menuSize: function () { + return i.screenAmount(); + }, + length: h.length, + close: function () { + t.close(); + }, + pick: function () { + i.pick(); + }, + data: e + })), t.options.closeOnUnfocus) { + var Y; + n.on("blur", this.onBlur = function () { + Y = setTimeout(function () { + t.close(); + }, 100); + }), n.on("focus", this.onFocus = function () { + clearTimeout(Y); + }); + } + n.on("scroll", this.onScroll = function () { + var d = n.getScrollInfo(), + g = n.getWrapperElement().getBoundingClientRect(); + x || (x = n.getScrollInfo()); + var X = O + x.top - d.top, + R = X - (c.pageYOffset || (s.documentElement || s.body).scrollTop); + if (j || (R += o.offsetHeight), R <= g.top || R >= g.bottom) return t.close(); + o.style.top = X + "px", o.style.left = k + x.left - d.left + "px"; + }), r.on(o, "dblclick", function (d) { + var g = B(o, d.target || d.srcElement); + g && g.hintId != null && (i.changeActive(g.hintId), i.pick()); + }), r.on(o, "click", function (d) { + var g = B(o, d.target || d.srcElement); + g && g.hintId != null && (i.changeActive(g.hintId), t.options.completeOnSingleClick && i.pick()); + }), r.on(o, "mousedown", function () { + setTimeout(function () { + n.focus(); + }, 20); + }); + var $ = this.getSelectedHintRange(); + return ($.from !== 0 || $.to !== 0) && this.scrollToActive(), r.signal(e, "select", h[this.selectedHint], o.childNodes[this.selectedHint]), !0; + } + p(K, "Widget"), K.prototype = { + close: function () { + if (this.completion.widget == this) { + this.completion.widget = null, this.hints.parentNode && this.hints.parentNode.removeChild(this.hints), this.completion.cm.removeKeyMap(this.keyMap); + var t = this.completion.cm.getInputField(); + t.removeAttribute("aria-activedescendant"), t.removeAttribute("aria-owns"); + var e = this.completion.cm; + this.completion.options.closeOnUnfocus && (e.off("blur", this.onBlur), e.off("focus", this.onFocus)), e.off("scroll", this.onScroll); + } + }, + disable: function () { + this.completion.cm.removeKeyMap(this.keyMap); + var t = this; + this.keyMap = { + Enter: function () { + t.picked = !0; + } + }, this.completion.cm.addKeyMap(this.keyMap); + }, + pick: function () { + this.completion.pick(this.data, this.selectedHint); + }, + changeActive: function (t, e) { + if (t >= this.data.list.length ? t = e ? this.data.list.length - 1 : 0 : t < 0 && (t = e ? 0 : this.data.list.length - 1), this.selectedHint != t) { + var i = this.hints.childNodes[this.selectedHint]; + i && (i.className = i.className.replace(" " + v, ""), i.removeAttribute("aria-selected")), i = this.hints.childNodes[this.selectedHint = t], i.className += " " + v, i.setAttribute("aria-selected", "true"), this.completion.cm.getInputField().setAttribute("aria-activedescendant", i.id), this.scrollToActive(), r.signal(this.data, "select", this.data.list[this.selectedHint], i); + } + }, + scrollToActive: function () { + var t = this.getSelectedHintRange(), + e = this.hints.childNodes[t.from], + i = this.hints.childNodes[t.to], + n = this.hints.firstChild; + e.offsetTop < this.hints.scrollTop ? this.hints.scrollTop = e.offsetTop - n.offsetTop : i.offsetTop + i.offsetHeight > this.hints.scrollTop + this.hints.clientHeight && (this.hints.scrollTop = i.offsetTop + i.offsetHeight - this.hints.clientHeight + n.offsetTop); + }, + screenAmount: function () { + return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1; + }, + getSelectedHintRange: function () { + var t = this.completion.options.scrollMargin || 0; + return { + from: Math.max(0, this.selectedHint - t), + to: Math.min(this.data.list.length - 1, this.selectedHint + t) + }; + } + }; + function it(t, e) { + if (!t.somethingSelected()) return e; + for (var i = [], n = 0; n < e.length; n++) e[n].supportsSelection && i.push(e[n]); + return i; + } + p(it, "applicableHelpers"); + function U(t, e, i, n) { + if (t.async) t(e, n, i);else { + var s = t(e, i); + s && s.then ? s.then(n) : n(s); + } + } + p(U, "fetchHints"); + function nt(t, e) { + var i = t.getHelpers(e, "hint"), + n; + if (i.length) { + var s = p(function (c, o, f) { + var h = it(c, i); + function u(l) { + if (l == h.length) return o(null); + U(h[l], c, f, function (a) { + a && a.list.length > 0 ? o(a) : u(l + 1); + }); + } + p(u, "run"), u(0); + }, "resolved"); + return s.async = !0, s.supportsSelection = !0, s; + } else return (n = t.getHelper(t.getCursor(), "hintWords")) ? function (c) { + return r.hint.fromList(c, { + words: n + }); + } : r.hint.anyword ? function (c, o) { + return r.hint.anyword(c, o); + } : function () {}; + } + p(nt, "resolveAutoHints"), r.registerHelper("hint", "auto", { + resolve: nt + }), r.registerHelper("hint", "fromList", function (t, e) { + var i = t.getCursor(), + n = t.getTokenAt(i), + s, + c = r.Pos(i.line, n.start), + o = i; + n.start < i.ch && /\w/.test(n.string.charAt(i.ch - n.start - 1)) ? s = n.string.substr(0, i.ch - n.start) : (s = "", c = i); + for (var f = [], h = 0; h < e.words.length; h++) { + var u = e.words[h]; + u.slice(0, s.length) == s && f.push(u); + } + if (f.length) return { + list: f, + from: c, + to: o + }; + }), r.commands.autocomplete = r.showHint; + var D = { + hint: r.hint.auto, + completeSingle: !0, + alignWithWord: !0, + closeCharacters: /[\s()\[\]{};:>,]/, + closeOnPick: !0, + closeOnUnfocus: !0, + updateOnCursorActivity: !0, + completeOnSingleClick: !0, + container: null, + customKeys: null, + extraKeys: null, + paddingForScrollbar: !0, + moveOnOverlap: !0 + }; + r.defineOption("hintOptions", null); + }); +})(); +var J = ht.exports; +const at = G.getDefaultExportFromCjs(J), + ft = lt({ + __proto__: null, + default: at + }, [J]); +exports.showHint = ft; + +/***/ }), + +/***/ "../../graphiql-react/dist/sublime.cjs.js": +/*!************************************************!*\ + !*** ../../graphiql-react/dist/sublime.cjs.js ***! + \************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +var _ = Object.defineProperty; +var v = (m, B) => _(m, "name", { + value: B, + configurable: !0 +}); +const E = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"), + Y = __webpack_require__(/*! ./searchcursor.cjs2.js */ "../../graphiql-react/dist/searchcursor.cjs2.js"), + z = __webpack_require__(/*! ./matchbrackets.cjs2.js */ "../../graphiql-react/dist/matchbrackets.cjs2.js"); +function J(m, B) { + for (var h = 0; h < B.length; h++) { + const a = B[h]; + if (typeof a != "string" && !Array.isArray(a)) { + for (const f in a) if (f !== "default" && !(f in m)) { + const A = Object.getOwnPropertyDescriptor(a, f); + A && Object.defineProperty(m, f, A.get ? A : { + enumerable: !0, + get: () => a[f] + }); + } + } + } + return Object.freeze(Object.defineProperty(m, Symbol.toStringTag, { + value: "Module" + })); +} +v(J, "_mergeNamespaces"); +var G = { + exports: {} +}; +(function (m, B) { + (function (h) { + h(E.requireCodemirror(), Y.requireSearchcursor(), z.requireMatchbrackets()); + })(function (h) { + var a = h.commands, + f = h.Pos; + function A(e, t, n) { + if (n < 0 && t.ch == 0) return e.clipPos(f(t.line - 1)); + var r = e.getLine(t.line); + if (n > 0 && t.ch >= r.length) return e.clipPos(f(t.line + 1, 0)); + for (var l = "start", i, o = t.ch, s = o, u = n < 0 ? 0 : r.length, d = 0; s != u; s += n, d++) { + var p = r.charAt(n < 0 ? s - 1 : s), + c = p != "_" && h.isWordChar(p) ? "w" : "o"; + if (c == "w" && p.toUpperCase() == p && (c = "W"), l == "start") c != "o" ? (l = "in", i = c) : o = s + n;else if (l == "in" && i != c) { + if (i == "w" && c == "W" && n < 0 && s--, i == "W" && c == "w" && n > 0) if (s == o + 1) { + i = "w"; + continue; + } else s--; + break; + } + } + return f(t.line, s); + } + v(A, "findPosSubword"); + function T(e, t) { + e.extendSelectionsBy(function (n) { + return e.display.shift || e.doc.extend || n.empty() ? A(e.doc, n.head, t) : t < 0 ? n.from() : n.to(); + }); + } + v(T, "moveSubword"), a.goSubwordLeft = function (e) { + T(e, -1); + }, a.goSubwordRight = function (e) { + T(e, 1); + }, a.scrollLineUp = function (e) { + var t = e.getScrollInfo(); + if (!e.somethingSelected()) { + var n = e.lineAtHeight(t.top + t.clientHeight, "local"); + e.getCursor().line >= n && e.execCommand("goLineUp"); + } + e.scrollTo(null, t.top - e.defaultTextHeight()); + }, a.scrollLineDown = function (e) { + var t = e.getScrollInfo(); + if (!e.somethingSelected()) { + var n = e.lineAtHeight(t.top, "local") + 1; + e.getCursor().line <= n && e.execCommand("goLineDown"); + } + e.scrollTo(null, t.top + e.defaultTextHeight()); + }, a.splitSelectionByLine = function (e) { + for (var t = e.listSelections(), n = [], r = 0; r < t.length; r++) for (var l = t[r].from(), i = t[r].to(), o = l.line; o <= i.line; ++o) i.line > l.line && o == i.line && i.ch == 0 || n.push({ + anchor: o == l.line ? l : f(o, 0), + head: o == i.line ? i : f(o) + }); + e.setSelections(n, 0); + }, a.singleSelectionTop = function (e) { + var t = e.listSelections()[0]; + e.setSelection(t.anchor, t.head, { + scroll: !1 + }); + }, a.selectLine = function (e) { + for (var t = e.listSelections(), n = [], r = 0; r < t.length; r++) { + var l = t[r]; + n.push({ + anchor: f(l.from().line, 0), + head: f(l.to().line + 1, 0) + }); + } + e.setSelections(n); + }; + function x(e, t) { + if (e.isReadOnly()) return h.Pass; + e.operation(function () { + for (var n = e.listSelections().length, r = [], l = -1, i = 0; i < n; i++) { + var o = e.listSelections()[i].head; + if (!(o.line <= l)) { + var s = f(o.line + (t ? 0 : 1), 0); + e.replaceRange(` +`, s, null, "+insertLine"), e.indentLine(s.line, null, !0), r.push({ + head: s, + anchor: s + }), l = o.line + 1; + } + } + e.setSelections(r); + }), e.execCommand("indentAuto"); + } + v(x, "insertLine"), a.insertLineAfter = function (e) { + return x(e, !1); + }, a.insertLineBefore = function (e) { + return x(e, !0); + }; + function K(e, t) { + for (var n = t.ch, r = n, l = e.getLine(t.line); n && h.isWordChar(l.charAt(n - 1));) --n; + for (; r < l.length && h.isWordChar(l.charAt(r));) ++r; + return { + from: f(t.line, n), + to: f(t.line, r), + word: l.slice(n, r) + }; + } + v(K, "wordAt"), a.selectNextOccurrence = function (e) { + var t = e.getCursor("from"), + n = e.getCursor("to"), + r = e.state.sublimeFindFullWord == e.doc.sel; + if (h.cmpPos(t, n) == 0) { + var l = K(e, t); + if (!l.word) return; + e.setSelection(l.from, l.to), r = !0; + } else { + var i = e.getRange(t, n), + o = r ? new RegExp("\\b" + i + "\\b") : i, + s = e.getSearchCursor(o, n), + u = s.findNext(); + if (u || (s = e.getSearchCursor(o, f(e.firstLine(), 0)), u = s.findNext()), !u || H(e.listSelections(), s.from(), s.to())) return; + e.addSelection(s.from(), s.to()); + } + r && (e.state.sublimeFindFullWord = e.doc.sel); + }, a.skipAndSelectNextOccurrence = function (e) { + var t = e.getCursor("anchor"), + n = e.getCursor("head"); + a.selectNextOccurrence(e), h.cmpPos(t, n) != 0 && e.doc.setSelections(e.doc.listSelections().filter(function (r) { + return r.anchor != t || r.head != n; + })); + }; + function y(e, t) { + for (var n = e.listSelections(), r = [], l = 0; l < n.length; l++) { + var i = n[l], + o = e.findPosV(i.anchor, t, "line", i.anchor.goalColumn), + s = e.findPosV(i.head, t, "line", i.head.goalColumn); + o.goalColumn = i.anchor.goalColumn != null ? i.anchor.goalColumn : e.cursorCoords(i.anchor, "div").left, s.goalColumn = i.head.goalColumn != null ? i.head.goalColumn : e.cursorCoords(i.head, "div").left; + var u = { + anchor: o, + head: s + }; + r.push(i), r.push(u); + } + e.setSelections(r); + } + v(y, "addCursorToSelection"), a.addCursorToPrevLine = function (e) { + y(e, -1); + }, a.addCursorToNextLine = function (e) { + y(e, 1); + }; + function H(e, t, n) { + for (var r = 0; r < e.length; r++) if (h.cmpPos(e[r].from(), t) == 0 && h.cmpPos(e[r].to(), n) == 0) return !0; + return !1; + } + v(H, "isSelectedRange"); + var P = "(){}[]"; + function U(e) { + for (var t = e.listSelections(), n = [], r = 0; r < t.length; r++) { + var l = t[r], + i = l.head, + o = e.scanForBracket(i, -1); + if (!o) return !1; + for (;;) { + var s = e.scanForBracket(i, 1); + if (!s) return !1; + if (s.ch == P.charAt(P.indexOf(o.ch) + 1)) { + var u = f(o.pos.line, o.pos.ch + 1); + if (h.cmpPos(u, l.from()) == 0 && h.cmpPos(s.pos, l.to()) == 0) { + if (o = e.scanForBracket(o.pos, -1), !o) return !1; + } else { + n.push({ + anchor: u, + head: s.pos + }); + break; + } + } + i = f(s.pos.line, s.pos.ch + 1); + } + } + return e.setSelections(n), !0; + } + v(U, "selectBetweenBrackets"), a.selectScope = function (e) { + U(e) || e.execCommand("selectAll"); + }, a.selectBetweenBrackets = function (e) { + if (!U(e)) return h.Pass; + }; + function I(e) { + return e ? /\bpunctuation\b/.test(e) ? e : void 0 : null; + } + v(I, "puncType"), a.goToBracket = function (e) { + e.extendSelectionsBy(function (t) { + var n = e.scanForBracket(t.head, 1, I(e.getTokenTypeAt(t.head))); + if (n && h.cmpPos(n.pos, t.head) != 0) return n.pos; + var r = e.scanForBracket(t.head, -1, I(e.getTokenTypeAt(f(t.head.line, t.head.ch + 1)))); + return r && f(r.pos.line, r.pos.ch + 1) || t.head; + }); + }, a.swapLineUp = function (e) { + if (e.isReadOnly()) return h.Pass; + for (var t = e.listSelections(), n = [], r = e.firstLine() - 1, l = [], i = 0; i < t.length; i++) { + var o = t[i], + s = o.from().line - 1, + u = o.to().line; + l.push({ + anchor: f(o.anchor.line - 1, o.anchor.ch), + head: f(o.head.line - 1, o.head.ch) + }), o.to().ch == 0 && !o.empty() && --u, s > r ? n.push(s, u) : n.length && (n[n.length - 1] = u), r = u; + } + e.operation(function () { + for (var d = 0; d < n.length; d += 2) { + var p = n[d], + c = n[d + 1], + b = e.getLine(p); + e.replaceRange("", f(p, 0), f(p + 1, 0), "+swapLine"), c > e.lastLine() ? e.replaceRange(` +` + b, f(e.lastLine()), null, "+swapLine") : e.replaceRange(b + ` +`, f(c, 0), null, "+swapLine"); + } + e.setSelections(l), e.scrollIntoView(); + }); + }, a.swapLineDown = function (e) { + if (e.isReadOnly()) return h.Pass; + for (var t = e.listSelections(), n = [], r = e.lastLine() + 1, l = t.length - 1; l >= 0; l--) { + var i = t[l], + o = i.to().line + 1, + s = i.from().line; + i.to().ch == 0 && !i.empty() && o--, o < r ? n.push(o, s) : n.length && (n[n.length - 1] = s), r = s; + } + e.operation(function () { + for (var u = n.length - 2; u >= 0; u -= 2) { + var d = n[u], + p = n[u + 1], + c = e.getLine(d); + d == e.lastLine() ? e.replaceRange("", f(d - 1), f(d), "+swapLine") : e.replaceRange("", f(d, 0), f(d + 1, 0), "+swapLine"), e.replaceRange(c + ` +`, f(p, 0), null, "+swapLine"); + } + e.scrollIntoView(); + }); + }, a.toggleCommentIndented = function (e) { + e.toggleComment({ + indent: !0 + }); + }, a.joinLines = function (e) { + for (var t = e.listSelections(), n = [], r = 0; r < t.length; r++) { + for (var l = t[r], i = l.from(), o = i.line, s = l.to().line; r < t.length - 1 && t[r + 1].from().line == s;) s = t[++r].to().line; + n.push({ + start: o, + end: s, + anchor: !l.empty() && i + }); + } + e.operation(function () { + for (var u = 0, d = [], p = 0; p < n.length; p++) { + for (var c = n[p], b = c.anchor && f(c.anchor.line - u, c.anchor.ch), w, g = c.start; g <= c.end; g++) { + var S = g - u; + g == c.end && (w = f(S, e.getLine(S).length + 1)), S < e.lastLine() && (e.replaceRange(" ", f(S), f(S + 1, /^\s*/.exec(e.getLine(S + 1))[0].length)), ++u); + } + d.push({ + anchor: b || w, + head: w + }); + } + e.setSelections(d, 0); + }); + }, a.duplicateLine = function (e) { + e.operation(function () { + for (var t = e.listSelections().length, n = 0; n < t; n++) { + var r = e.listSelections()[n]; + r.empty() ? e.replaceRange(e.getLine(r.head.line) + ` +`, f(r.head.line, 0)) : e.replaceRange(e.getRange(r.from(), r.to()), r.from()); + } + e.scrollIntoView(); + }); + }; + function R(e, t, n) { + if (e.isReadOnly()) return h.Pass; + for (var r = e.listSelections(), l = [], i, o = 0; o < r.length; o++) { + var s = r[o]; + if (!s.empty()) { + for (var u = s.from().line, d = s.to().line; o < r.length - 1 && r[o + 1].from().line == d;) d = r[++o].to().line; + r[o].to().ch || d--, l.push(u, d); + } + } + l.length ? i = !0 : l.push(e.firstLine(), e.lastLine()), e.operation(function () { + for (var p = [], c = 0; c < l.length; c += 2) { + var b = l[c], + w = l[c + 1], + g = f(b, 0), + S = f(w), + F = e.getRange(g, S, !1); + t ? F.sort(function (k, L) { + return k < L ? -n : k == L ? 0 : n; + }) : F.sort(function (k, L) { + var W = k.toUpperCase(), + M = L.toUpperCase(); + return W != M && (k = W, L = M), k < L ? -n : k == L ? 0 : n; + }), e.replaceRange(F, g, S), i && p.push({ + anchor: g, + head: f(w + 1, 0) + }); + } + i && e.setSelections(p, 0); + }); + } + v(R, "sortLines"), a.sortLines = function (e) { + R(e, !0, 1); + }, a.reverseSortLines = function (e) { + R(e, !0, -1); + }, a.sortLinesInsensitive = function (e) { + R(e, !1, 1); + }, a.reverseSortLinesInsensitive = function (e) { + R(e, !1, -1); + }, a.nextBookmark = function (e) { + var t = e.state.sublimeBookmarks; + if (t) for (; t.length;) { + var n = t.shift(), + r = n.find(); + if (r) return t.push(n), e.setSelection(r.from, r.to); + } + }, a.prevBookmark = function (e) { + var t = e.state.sublimeBookmarks; + if (t) for (; t.length;) { + t.unshift(t.pop()); + var n = t[t.length - 1].find(); + if (!n) t.pop();else return e.setSelection(n.from, n.to); + } + }, a.toggleBookmark = function (e) { + for (var t = e.listSelections(), n = e.state.sublimeBookmarks || (e.state.sublimeBookmarks = []), r = 0; r < t.length; r++) { + for (var l = t[r].from(), i = t[r].to(), o = t[r].empty() ? e.findMarksAt(l) : e.findMarks(l, i), s = 0; s < o.length; s++) if (o[s].sublimeBookmark) { + o[s].clear(); + for (var u = 0; u < n.length; u++) n[u] == o[s] && n.splice(u--, 1); + break; + } + s == o.length && n.push(e.markText(l, i, { + sublimeBookmark: !0, + clearWhenEmpty: !1 + })); + } + }, a.clearBookmarks = function (e) { + var t = e.state.sublimeBookmarks; + if (t) for (var n = 0; n < t.length; n++) t[n].clear(); + t.length = 0; + }, a.selectBookmarks = function (e) { + var t = e.state.sublimeBookmarks, + n = []; + if (t) for (var r = 0; r < t.length; r++) { + var l = t[r].find(); + l ? n.push({ + anchor: l.from, + head: l.to + }) : t.splice(r--, 0); + } + n.length && e.setSelections(n, 0); + }; + function D(e, t) { + e.operation(function () { + for (var n = e.listSelections(), r = [], l = [], i = 0; i < n.length; i++) { + var o = n[i]; + o.empty() ? (r.push(i), l.push("")) : l.push(t(e.getRange(o.from(), o.to()))); + } + e.replaceSelections(l, "around", "case"); + for (var i = r.length - 1, s; i >= 0; i--) { + var o = n[r[i]]; + if (!(s && h.cmpPos(o.head, s) > 0)) { + var u = K(e, o.head); + s = u.from, e.replaceRange(t(u.word), u.from, u.to); + } + } + }); + } + v(D, "modifyWordOrSelection"), a.smartBackspace = function (e) { + if (e.somethingSelected()) return h.Pass; + e.operation(function () { + for (var t = e.listSelections(), n = e.getOption("indentUnit"), r = t.length - 1; r >= 0; r--) { + var l = t[r].head, + i = e.getRange({ + line: l.line, + ch: 0 + }, l), + o = h.countColumn(i, null, e.getOption("tabSize")), + s = e.findPosH(l, -1, "char", !1); + if (i && !/\S/.test(i) && o % n == 0) { + var u = new f(l.line, h.findColumn(i, o - n, n)); + u.ch != l.ch && (s = u); + } + e.replaceRange("", s, l, "+delete"); + } + }); + }, a.delLineRight = function (e) { + e.operation(function () { + for (var t = e.listSelections(), n = t.length - 1; n >= 0; n--) e.replaceRange("", t[n].anchor, f(t[n].to().line), "+delete"); + e.scrollIntoView(); + }); + }, a.upcaseAtCursor = function (e) { + D(e, function (t) { + return t.toUpperCase(); + }); + }, a.downcaseAtCursor = function (e) { + D(e, function (t) { + return t.toLowerCase(); + }); + }, a.setSublimeMark = function (e) { + e.state.sublimeMark && e.state.sublimeMark.clear(), e.state.sublimeMark = e.setBookmark(e.getCursor()); + }, a.selectToSublimeMark = function (e) { + var t = e.state.sublimeMark && e.state.sublimeMark.find(); + t && e.setSelection(e.getCursor(), t); + }, a.deleteToSublimeMark = function (e) { + var t = e.state.sublimeMark && e.state.sublimeMark.find(); + if (t) { + var n = e.getCursor(), + r = t; + if (h.cmpPos(n, r) > 0) { + var l = r; + r = n, n = l; + } + e.state.sublimeKilled = e.getRange(n, r), e.replaceRange("", n, r); + } + }, a.swapWithSublimeMark = function (e) { + var t = e.state.sublimeMark && e.state.sublimeMark.find(); + t && (e.state.sublimeMark.clear(), e.state.sublimeMark = e.setBookmark(e.getCursor()), e.setCursor(t)); + }, a.sublimeYank = function (e) { + e.state.sublimeKilled != null && e.replaceSelection(e.state.sublimeKilled, null, "paste"); + }, a.showInCenter = function (e) { + var t = e.cursorCoords(null, "local"); + e.scrollTo(null, (t.top + t.bottom) / 2 - e.getScrollInfo().clientHeight / 2); + }; + function N(e) { + var t = e.getCursor("from"), + n = e.getCursor("to"); + if (h.cmpPos(t, n) == 0) { + var r = K(e, t); + if (!r.word) return; + t = r.from, n = r.to; + } + return { + from: t, + to: n, + query: e.getRange(t, n), + word: r + }; + } + v(N, "getTarget"); + function O(e, t) { + var n = N(e); + if (n) { + var r = n.query, + l = e.getSearchCursor(r, t ? n.to : n.from); + (t ? l.findNext() : l.findPrevious()) ? e.setSelection(l.from(), l.to()) : (l = e.getSearchCursor(r, t ? f(e.firstLine(), 0) : e.clipPos(f(e.lastLine()))), (t ? l.findNext() : l.findPrevious()) ? e.setSelection(l.from(), l.to()) : n.word && e.setSelection(n.from, n.to)); + } + } + v(O, "findAndGoTo"), a.findUnder = function (e) { + O(e, !0); + }, a.findUnderPrevious = function (e) { + O(e, !1); + }, a.findAllUnder = function (e) { + var t = N(e); + if (t) { + for (var n = e.getSearchCursor(t.query), r = [], l = -1; n.findNext();) r.push({ + anchor: n.from(), + head: n.to() + }), n.from().line <= t.from.line && n.from().ch <= t.from.ch && l++; + e.setSelections(r, l); + } + }; + var C = h.keyMap; + C.macSublime = { + "Cmd-Left": "goLineStartSmart", + "Shift-Tab": "indentLess", + "Shift-Ctrl-K": "deleteLine", + "Alt-Q": "wrapLines", + "Ctrl-Left": "goSubwordLeft", + "Ctrl-Right": "goSubwordRight", + "Ctrl-Alt-Up": "scrollLineUp", + "Ctrl-Alt-Down": "scrollLineDown", + "Cmd-L": "selectLine", + "Shift-Cmd-L": "splitSelectionByLine", + Esc: "singleSelectionTop", + "Cmd-Enter": "insertLineAfter", + "Shift-Cmd-Enter": "insertLineBefore", + "Cmd-D": "selectNextOccurrence", + "Shift-Cmd-Space": "selectScope", + "Shift-Cmd-M": "selectBetweenBrackets", + "Cmd-M": "goToBracket", + "Cmd-Ctrl-Up": "swapLineUp", + "Cmd-Ctrl-Down": "swapLineDown", + "Cmd-/": "toggleCommentIndented", + "Cmd-J": "joinLines", + "Shift-Cmd-D": "duplicateLine", + F5: "sortLines", + "Shift-F5": "reverseSortLines", + "Cmd-F5": "sortLinesInsensitive", + "Shift-Cmd-F5": "reverseSortLinesInsensitive", + F2: "nextBookmark", + "Shift-F2": "prevBookmark", + "Cmd-F2": "toggleBookmark", + "Shift-Cmd-F2": "clearBookmarks", + "Alt-F2": "selectBookmarks", + Backspace: "smartBackspace", + "Cmd-K Cmd-D": "skipAndSelectNextOccurrence", + "Cmd-K Cmd-K": "delLineRight", + "Cmd-K Cmd-U": "upcaseAtCursor", + "Cmd-K Cmd-L": "downcaseAtCursor", + "Cmd-K Cmd-Space": "setSublimeMark", + "Cmd-K Cmd-A": "selectToSublimeMark", + "Cmd-K Cmd-W": "deleteToSublimeMark", + "Cmd-K Cmd-X": "swapWithSublimeMark", + "Cmd-K Cmd-Y": "sublimeYank", + "Cmd-K Cmd-C": "showInCenter", + "Cmd-K Cmd-G": "clearBookmarks", + "Cmd-K Cmd-Backspace": "delLineLeft", + "Cmd-K Cmd-1": "foldAll", + "Cmd-K Cmd-0": "unfoldAll", + "Cmd-K Cmd-J": "unfoldAll", + "Ctrl-Shift-Up": "addCursorToPrevLine", + "Ctrl-Shift-Down": "addCursorToNextLine", + "Cmd-F3": "findUnder", + "Shift-Cmd-F3": "findUnderPrevious", + "Alt-F3": "findAllUnder", + "Shift-Cmd-[": "fold", + "Shift-Cmd-]": "unfold", + "Cmd-I": "findIncremental", + "Shift-Cmd-I": "findIncrementalReverse", + "Cmd-H": "replace", + F3: "findNext", + "Shift-F3": "findPrev", + fallthrough: "macDefault" + }, h.normalizeKeyMap(C.macSublime), C.pcSublime = { + "Shift-Tab": "indentLess", + "Shift-Ctrl-K": "deleteLine", + "Alt-Q": "wrapLines", + "Ctrl-T": "transposeChars", + "Alt-Left": "goSubwordLeft", + "Alt-Right": "goSubwordRight", + "Ctrl-Up": "scrollLineUp", + "Ctrl-Down": "scrollLineDown", + "Ctrl-L": "selectLine", + "Shift-Ctrl-L": "splitSelectionByLine", + Esc: "singleSelectionTop", + "Ctrl-Enter": "insertLineAfter", + "Shift-Ctrl-Enter": "insertLineBefore", + "Ctrl-D": "selectNextOccurrence", + "Shift-Ctrl-Space": "selectScope", + "Shift-Ctrl-M": "selectBetweenBrackets", + "Ctrl-M": "goToBracket", + "Shift-Ctrl-Up": "swapLineUp", + "Shift-Ctrl-Down": "swapLineDown", + "Ctrl-/": "toggleCommentIndented", + "Ctrl-J": "joinLines", + "Shift-Ctrl-D": "duplicateLine", + F9: "sortLines", + "Shift-F9": "reverseSortLines", + "Ctrl-F9": "sortLinesInsensitive", + "Shift-Ctrl-F9": "reverseSortLinesInsensitive", + F2: "nextBookmark", + "Shift-F2": "prevBookmark", + "Ctrl-F2": "toggleBookmark", + "Shift-Ctrl-F2": "clearBookmarks", + "Alt-F2": "selectBookmarks", + Backspace: "smartBackspace", + "Ctrl-K Ctrl-D": "skipAndSelectNextOccurrence", + "Ctrl-K Ctrl-K": "delLineRight", + "Ctrl-K Ctrl-U": "upcaseAtCursor", + "Ctrl-K Ctrl-L": "downcaseAtCursor", + "Ctrl-K Ctrl-Space": "setSublimeMark", + "Ctrl-K Ctrl-A": "selectToSublimeMark", + "Ctrl-K Ctrl-W": "deleteToSublimeMark", + "Ctrl-K Ctrl-X": "swapWithSublimeMark", + "Ctrl-K Ctrl-Y": "sublimeYank", + "Ctrl-K Ctrl-C": "showInCenter", + "Ctrl-K Ctrl-G": "clearBookmarks", + "Ctrl-K Ctrl-Backspace": "delLineLeft", + "Ctrl-K Ctrl-1": "foldAll", + "Ctrl-K Ctrl-0": "unfoldAll", + "Ctrl-K Ctrl-J": "unfoldAll", + "Ctrl-Alt-Up": "addCursorToPrevLine", + "Ctrl-Alt-Down": "addCursorToNextLine", + "Ctrl-F3": "findUnder", + "Shift-Ctrl-F3": "findUnderPrevious", + "Alt-F3": "findAllUnder", + "Shift-Ctrl-[": "fold", + "Shift-Ctrl-]": "unfold", + "Ctrl-I": "findIncremental", + "Shift-Ctrl-I": "findIncrementalReverse", + "Ctrl-H": "replace", + F3: "findNext", + "Shift-F3": "findPrev", + fallthrough: "pcDefault" + }, h.normalizeKeyMap(C.pcSublime); + var V = C.default == C.macDefault; + C.sublime = V ? C.macSublime : C.pcSublime; + }); +})(); +var q = G.exports; +const Q = E.getDefaultExportFromCjs(q), + X = J({ + __proto__: null, + default: Q + }, [q]); +exports.sublime = X; + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/async-helpers/index.js": +/*!*********************************************************!*\ + !*** ../../graphiql-toolkit/esm/async-helpers/index.js ***! + \*********************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.fetcherReturnToPromise = fetcherReturnToPromise; +exports.isAsyncIterable = isAsyncIterable; +exports.isObservable = isObservable; +exports.isPromise = isPromise; +var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +function isPromise(value) { + return typeof value === 'object' && value !== null && typeof value.then === 'function'; +} +function observableToPromise(observable) { + return new Promise((resolve, reject) => { + const subscription = observable.subscribe({ + next(v) { + resolve(v); + subscription.unsubscribe(); + }, + error: reject, + complete() { + reject(new Error('no value resolved')); + } + }); + }); +} +function isObservable(value) { + return typeof value === 'object' && value !== null && 'subscribe' in value && typeof value.subscribe === 'function'; +} +function isAsyncIterable(input) { + return typeof input === 'object' && input !== null && (input[Symbol.toStringTag] === 'AsyncGenerator' || Symbol.asyncIterator in input); +} +function asyncIterableToPromise(input) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const iteratorReturn = (_a = ('return' in input ? input : input[Symbol.asyncIterator]()).return) === null || _a === void 0 ? void 0 : _a.bind(input); + const iteratorNext = ('next' in input ? input : input[Symbol.asyncIterator]()).next.bind(input); + const result = yield iteratorNext(); + void (iteratorReturn === null || iteratorReturn === void 0 ? void 0 : iteratorReturn()); + return result.value; + }); +} +function fetcherReturnToPromise(fetcherResult) { + return __awaiter(this, void 0, void 0, function* () { + const result = yield fetcherResult; + if (isAsyncIterable(result)) { + return asyncIterableToPromise(result); + } + if (isObservable(result)) { + return observableToPromise(result); + } + return result; + }); +} + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/create-fetcher/createFetcher.js": +/*!******************************************************************!*\ + !*** ../../graphiql-toolkit/esm/create-fetcher/createFetcher.js ***! + \******************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createGraphiQLFetcher = createGraphiQLFetcher; +var _lib = __webpack_require__(/*! ./lib */ "../../graphiql-toolkit/esm/create-fetcher/lib.js"); +function createGraphiQLFetcher(options) { + let httpFetch; + if (typeof window !== 'undefined' && window.fetch) { + httpFetch = window.fetch; + } + if ((options === null || options === void 0 ? void 0 : options.enableIncrementalDelivery) === null || options.enableIncrementalDelivery !== false) { + options.enableIncrementalDelivery = true; + } + if (options.fetch) { + httpFetch = options.fetch; + } + if (!httpFetch) { + throw new Error('No valid fetcher implementation available'); + } + const simpleFetcher = (0, _lib.createSimpleFetcher)(options, httpFetch); + const httpFetcher = options.enableIncrementalDelivery ? (0, _lib.createMultipartFetcher)(options, httpFetch) : simpleFetcher; + return (graphQLParams, fetcherOpts) => { + if (graphQLParams.operationName === 'IntrospectionQuery') { + return (options.schemaFetcher || simpleFetcher)(graphQLParams, fetcherOpts); + } + const isSubscription = (fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.documentAST) ? (0, _lib.isSubscriptionWithName)(fetcherOpts.documentAST, graphQLParams.operationName || undefined) : false; + if (isSubscription) { + const wsFetcher = (0, _lib.getWsFetcher)(options, fetcherOpts); + if (!wsFetcher) { + throw new Error(`Your GraphiQL createFetcher is not properly configured for websocket subscriptions yet. ${options.subscriptionUrl ? `Provided URL ${options.subscriptionUrl} failed` : 'Please provide subscriptionUrl, wsClient or legacyClient option first.'}`); + } + return wsFetcher(graphQLParams); + } + return httpFetcher(graphQLParams, fetcherOpts); + }; +} + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/create-fetcher/index.js": +/*!**********************************************************!*\ + !*** ../../graphiql-toolkit/esm/create-fetcher/index.js ***! + \**********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var _exportNames = { + createGraphiQLFetcher: true +}; +Object.defineProperty(exports, "createGraphiQLFetcher", ({ + enumerable: true, + get: function () { + return _createFetcher.createGraphiQLFetcher; + } +})); +var _types = __webpack_require__(/*! ./types */ "../../graphiql-toolkit/esm/create-fetcher/types.js"); +Object.keys(_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _types[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _types[key]; + } + }); +}); +var _createFetcher = __webpack_require__(/*! ./createFetcher */ "../../graphiql-toolkit/esm/create-fetcher/createFetcher.js"); + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/create-fetcher/lib.js": +/*!********************************************************!*\ + !*** ../../graphiql-toolkit/esm/create-fetcher/lib.js ***! + \********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isSubscriptionWithName = exports.getWsFetcher = exports.createWebsocketsFetcherFromUrl = exports.createWebsocketsFetcherFromClient = exports.createSimpleFetcher = exports.createMultipartFetcher = exports.createLegacyWebsocketsFetcher = void 0; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +var _meros = __webpack_require__(/*! meros */ "../../../node_modules/meros/browser/index.mjs"); +var _pushPullAsyncIterableIterator = __webpack_require__(/*! @n1ru4l/push-pull-async-iterable-iterator */ "../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/index.js"); +var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __await = void 0 && (void 0).__await || function (v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +}; +var __asyncValues = void 0 && (void 0).__asyncValues || function (o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], + i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { + return this; + }, i); + function verb(n) { + i[n] = o[n] && function (v) { + return new Promise(function (resolve, reject) { + v = o[n](v), settle(resolve, reject, v.done, v.value); + }); + }; + } + function settle(resolve, reject, d, v) { + Promise.resolve(v).then(function (v) { + resolve({ + value: v, + done: d + }); + }, reject); + } +}; +var __asyncGenerator = void 0 && (void 0).__asyncGenerator || function (thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), + i, + q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { + return this; + }, i; + function verb(n) { + if (g[n]) i[n] = function (v) { + return new Promise(function (a, b) { + q.push([n, v, a, b]) > 1 || resume(n, v); + }); + }; + } + function resume(n, v) { + try { + step(g[n](v)); + } catch (e) { + settle(q[0][3], e); + } + } + function step(r) { + r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); + } + function fulfill(value) { + resume("next", value); + } + function reject(value) { + resume("throw", value); + } + function settle(f, v) { + if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); + } +}; +const errorHasCode = err => { + return typeof err === 'object' && err !== null && 'code' in err; +}; +const isSubscriptionWithName = (document, name) => { + let isSubscription = false; + (0, _graphql.visit)(document, { + OperationDefinition(node) { + var _a; + if (name === ((_a = node.name) === null || _a === void 0 ? void 0 : _a.value) && node.operation === 'subscription') { + isSubscription = true; + } + } + }); + return isSubscription; +}; +exports.isSubscriptionWithName = isSubscriptionWithName; +const createSimpleFetcher = (options, httpFetch) => (graphQLParams, fetcherOpts) => __awaiter(void 0, void 0, void 0, function* () { + const data = yield httpFetch(options.url, { + method: 'POST', + body: JSON.stringify(graphQLParams), + headers: Object.assign(Object.assign({ + 'content-type': 'application/json' + }, options.headers), fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.headers) + }); + return data.json(); +}); +exports.createSimpleFetcher = createSimpleFetcher; +const createWebsocketsFetcherFromUrl = (url, connectionParams) => { + let wsClient; + try { + const { + createClient + } = __webpack_require__(/*! graphql-ws */ "../../../node_modules/graphql-ws/lib/index.js"); + wsClient = createClient({ + url, + connectionParams + }); + return createWebsocketsFetcherFromClient(wsClient); + } catch (err) { + if (errorHasCode(err) && err.code === 'MODULE_NOT_FOUND') { + throw new Error("You need to install the 'graphql-ws' package to use websockets when passing a 'subscriptionUrl'"); + } + console.error(`Error creating websocket client for ${url}`, err); + } +}; +exports.createWebsocketsFetcherFromUrl = createWebsocketsFetcherFromUrl; +const createWebsocketsFetcherFromClient = wsClient => graphQLParams => (0, _pushPullAsyncIterableIterator.makeAsyncIterableIteratorFromSink)(sink => wsClient.subscribe(graphQLParams, Object.assign(Object.assign({}, sink), { + error(err) { + if (err instanceof CloseEvent) { + sink.error(new Error(`Socket closed with event ${err.code} ${err.reason || ''}`.trim())); + } else { + sink.error(err); + } + } +}))); +exports.createWebsocketsFetcherFromClient = createWebsocketsFetcherFromClient; +const createLegacyWebsocketsFetcher = legacyWsClient => graphQLParams => { + const observable = legacyWsClient.request(graphQLParams); + return (0, _pushPullAsyncIterableIterator.makeAsyncIterableIteratorFromSink)(sink => observable.subscribe(sink).unsubscribe); +}; +exports.createLegacyWebsocketsFetcher = createLegacyWebsocketsFetcher; +const createMultipartFetcher = (options, httpFetch) => function (graphQLParams, fetcherOpts) { + return __asyncGenerator(this, arguments, function* () { + var e_1, _a; + const response = yield __await(httpFetch(options.url, { + method: 'POST', + body: JSON.stringify(graphQLParams), + headers: Object.assign(Object.assign({ + 'content-type': 'application/json', + accept: 'application/json, multipart/mixed' + }, options.headers), fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.headers) + }).then(r => (0, _meros.meros)(r, { + multiple: true + }))); + if (!(0, _pushPullAsyncIterableIterator.isAsyncIterable)(response)) { + return yield __await(yield yield __await(response.json())); + } + try { + for (var response_1 = __asyncValues(response), response_1_1; response_1_1 = yield __await(response_1.next()), !response_1_1.done;) { + const chunk = response_1_1.value; + if (chunk.some(part => !part.json)) { + const message = chunk.map(part => `Headers::\n${part.headers}\n\nBody::\n${part.body}`); + throw new Error(`Expected multipart chunks to be of json type. got:\n${message}`); + } + yield yield __await(chunk.map(part => part.body)); + } + } catch (e_1_1) { + e_1 = { + error: e_1_1 + }; + } finally { + try { + if (response_1_1 && !response_1_1.done && (_a = response_1.return)) yield __await(_a.call(response_1)); + } finally { + if (e_1) throw e_1.error; + } + } + }); +}; +exports.createMultipartFetcher = createMultipartFetcher; +const getWsFetcher = (options, fetcherOpts) => { + if (options.wsClient) { + return createWebsocketsFetcherFromClient(options.wsClient); + } + if (options.subscriptionUrl) { + return createWebsocketsFetcherFromUrl(options.subscriptionUrl, Object.assign(Object.assign({}, options.wsConnectionParams), fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.headers)); + } + const legacyWebsocketsClient = options.legacyClient || options.legacyWsClient; + if (legacyWebsocketsClient) { + return createLegacyWebsocketsFetcher(legacyWebsocketsClient); + } +}; +exports.getWsFetcher = getWsFetcher; + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/create-fetcher/types.js": +/*!**********************************************************!*\ + !*** ../../graphiql-toolkit/esm/create-fetcher/types.js ***! + \**********************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/format/index.js": +/*!**************************************************!*\ + !*** ../../graphiql-toolkit/esm/format/index.js ***! + \**************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.formatError = formatError; +exports.formatResult = formatResult; +function stringify(obj) { + return JSON.stringify(obj, null, 2); +} +function formatSingleError(error) { + return Object.assign(Object.assign({}, error), { + message: error.message, + stack: error.stack + }); +} +function handleSingleError(error) { + if (error instanceof Error) { + return formatSingleError(error); + } + return error; +} +function formatError(error) { + if (Array.isArray(error)) { + return stringify({ + errors: error.map(e => handleSingleError(e)) + }); + } + return stringify({ + errors: [handleSingleError(error)] + }); +} +function formatResult(result) { + return stringify(result); +} + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/graphql-helpers/auto-complete.js": +/*!*******************************************************************!*\ + !*** ../../graphiql-toolkit/esm/graphql-helpers/auto-complete.js ***! + \*******************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.fillLeafs = fillLeafs; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +function fillLeafs(schema, docString, getDefaultFieldNames) { + const insertions = []; + if (!schema || !docString) { + return { + insertions, + result: docString + }; + } + let ast; + try { + ast = (0, _graphql.parse)(docString); + } catch (_a) { + return { + insertions, + result: docString + }; + } + const fieldNameFn = getDefaultFieldNames || defaultGetDefaultFieldNames; + const typeInfo = new _graphql.TypeInfo(schema); + (0, _graphql.visit)(ast, { + leave(node) { + typeInfo.leave(node); + }, + enter(node) { + typeInfo.enter(node); + if (node.kind === 'Field' && !node.selectionSet) { + const fieldType = typeInfo.getType(); + const selectionSet = buildSelectionSet(isFieldType(fieldType), fieldNameFn); + if (selectionSet && node.loc) { + const indent = getIndentation(docString, node.loc.start); + insertions.push({ + index: node.loc.end, + string: ' ' + (0, _graphql.print)(selectionSet).replaceAll('\n', '\n' + indent) + }); + } + } + } + }); + return { + insertions, + result: withInsertions(docString, insertions) + }; +} +function defaultGetDefaultFieldNames(type) { + if (!('getFields' in type)) { + return []; + } + const fields = type.getFields(); + if (fields.id) { + return ['id']; + } + if (fields.edges) { + return ['edges']; + } + if (fields.node) { + return ['node']; + } + const leafFieldNames = []; + for (const fieldName of Object.keys(fields)) { + if ((0, _graphql.isLeafType)(fields[fieldName].type)) { + leafFieldNames.push(fieldName); + } + } + return leafFieldNames; +} +function buildSelectionSet(type, getDefaultFieldNames) { + const namedType = (0, _graphql.getNamedType)(type); + if (!type || (0, _graphql.isLeafType)(type)) { + return; + } + const fieldNames = getDefaultFieldNames(namedType); + if (!Array.isArray(fieldNames) || fieldNames.length === 0 || !('getFields' in namedType)) { + return; + } + return { + kind: _graphql.Kind.SELECTION_SET, + selections: fieldNames.map(fieldName => { + const fieldDef = namedType.getFields()[fieldName]; + const fieldType = fieldDef ? fieldDef.type : null; + return { + kind: _graphql.Kind.FIELD, + name: { + kind: _graphql.Kind.NAME, + value: fieldName + }, + selectionSet: buildSelectionSet(fieldType, getDefaultFieldNames) + }; + }) + }; +} +function withInsertions(initial, insertions) { + if (insertions.length === 0) { + return initial; + } + let edited = ''; + let prevIndex = 0; + for (const { + index, + string + } of insertions) { + edited += initial.slice(prevIndex, index) + string; + prevIndex = index; + } + edited += initial.slice(prevIndex); + return edited; +} +function getIndentation(str, index) { + let indentStart = index; + let indentEnd = index; + while (indentStart) { + const c = str.charCodeAt(indentStart - 1); + if (c === 10 || c === 13 || c === 0x2028 || c === 0x2029) { + break; + } + indentStart--; + if (c !== 9 && c !== 11 && c !== 12 && c !== 32 && c !== 160) { + indentEnd = indentStart; + } + } + return str.slice(indentStart, indentEnd); +} +function isFieldType(fieldType) { + if (fieldType) { + return fieldType; + } +} + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/graphql-helpers/index.js": +/*!***********************************************************!*\ + !*** ../../graphiql-toolkit/esm/graphql-helpers/index.js ***! + \***********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var _autoComplete = __webpack_require__(/*! ./auto-complete */ "../../graphiql-toolkit/esm/graphql-helpers/auto-complete.js"); +Object.keys(_autoComplete).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _autoComplete[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _autoComplete[key]; + } + }); +}); +var _mergeAst = __webpack_require__(/*! ./merge-ast */ "../../graphiql-toolkit/esm/graphql-helpers/merge-ast.js"); +Object.keys(_mergeAst).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _mergeAst[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _mergeAst[key]; + } + }); +}); +var _operationName = __webpack_require__(/*! ./operation-name */ "../../graphiql-toolkit/esm/graphql-helpers/operation-name.js"); +Object.keys(_operationName).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _operationName[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _operationName[key]; + } + }); +}); + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/graphql-helpers/merge-ast.js": +/*!***************************************************************!*\ + !*** ../../graphiql-toolkit/esm/graphql-helpers/merge-ast.js ***! + \***************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.mergeAst = mergeAst; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +function uniqueBy(array, iteratee) { + var _a; + const FilteredMap = new Map(); + const result = []; + for (const item of array) { + if (item.kind === 'Field') { + const uniqueValue = iteratee(item); + const existing = FilteredMap.get(uniqueValue); + if ((_a = item.directives) === null || _a === void 0 ? void 0 : _a.length) { + const itemClone = Object.assign({}, item); + result.push(itemClone); + } else if ((existing === null || existing === void 0 ? void 0 : existing.selectionSet) && item.selectionSet) { + existing.selectionSet.selections = [...existing.selectionSet.selections, ...item.selectionSet.selections]; + } else if (!existing) { + const itemClone = Object.assign({}, item); + FilteredMap.set(uniqueValue, itemClone); + result.push(itemClone); + } + } else { + result.push(item); + } + } + return result; +} +function inlineRelevantFragmentSpreads(fragmentDefinitions, selections, selectionSetType) { + var _a; + const selectionSetTypeName = selectionSetType ? (0, _graphql.getNamedType)(selectionSetType).name : null; + const outputSelections = []; + const seenSpreads = []; + for (let selection of selections) { + if (selection.kind === 'FragmentSpread') { + const fragmentName = selection.name.value; + if (!selection.directives || selection.directives.length === 0) { + if (seenSpreads.includes(fragmentName)) { + continue; + } else { + seenSpreads.push(fragmentName); + } + } + const fragmentDefinition = fragmentDefinitions[selection.name.value]; + if (fragmentDefinition) { + const { + typeCondition, + directives, + selectionSet + } = fragmentDefinition; + selection = { + kind: _graphql.Kind.INLINE_FRAGMENT, + typeCondition, + directives, + selectionSet + }; + } + } + if (selection.kind === _graphql.Kind.INLINE_FRAGMENT && (!selection.directives || ((_a = selection.directives) === null || _a === void 0 ? void 0 : _a.length) === 0)) { + const fragmentTypeName = selection.typeCondition ? selection.typeCondition.name.value : null; + if (!fragmentTypeName || fragmentTypeName === selectionSetTypeName) { + outputSelections.push(...inlineRelevantFragmentSpreads(fragmentDefinitions, selection.selectionSet.selections, selectionSetType)); + continue; + } + } + outputSelections.push(selection); + } + return outputSelections; +} +function mergeAst(documentAST, schema) { + const typeInfo = schema ? new _graphql.TypeInfo(schema) : null; + const fragmentDefinitions = Object.create(null); + for (const definition of documentAST.definitions) { + if (definition.kind === _graphql.Kind.FRAGMENT_DEFINITION) { + fragmentDefinitions[definition.name.value] = definition; + } + } + const flattenVisitors = { + SelectionSet(node) { + const selectionSetType = typeInfo ? typeInfo.getParentType() : null; + let { + selections + } = node; + selections = inlineRelevantFragmentSpreads(fragmentDefinitions, selections, selectionSetType); + return Object.assign(Object.assign({}, node), { + selections + }); + }, + FragmentDefinition() { + return null; + } + }; + const flattenedAST = (0, _graphql.visit)(documentAST, typeInfo ? (0, _graphql.visitWithTypeInfo)(typeInfo, flattenVisitors) : flattenVisitors); + const deduplicateVisitors = { + SelectionSet(node) { + let { + selections + } = node; + selections = uniqueBy(selections, selection => selection.alias ? selection.alias.value : selection.name.value); + return Object.assign(Object.assign({}, node), { + selections + }); + }, + FragmentDefinition() { + return null; + } + }; + return (0, _graphql.visit)(flattenedAST, deduplicateVisitors); +} + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/graphql-helpers/operation-name.js": +/*!********************************************************************!*\ + !*** ../../graphiql-toolkit/esm/graphql-helpers/operation-name.js ***! + \********************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getSelectedOperationName = getSelectedOperationName; +function getSelectedOperationName(prevOperations, prevSelectedOperationName, operations) { + if (!operations || operations.length < 1) { + return; + } + const names = operations.map(op => { + var _a; + return (_a = op.name) === null || _a === void 0 ? void 0 : _a.value; + }); + if (prevSelectedOperationName && names.includes(prevSelectedOperationName)) { + return prevSelectedOperationName; + } + if (prevSelectedOperationName && prevOperations) { + const prevNames = prevOperations.map(op => { + var _a; + return (_a = op.name) === null || _a === void 0 ? void 0 : _a.value; + }); + const prevIndex = prevNames.indexOf(prevSelectedOperationName); + if (prevIndex !== -1 && prevIndex < names.length) { + return names[prevIndex]; + } + } + return names[0]; +} + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/index.js": +/*!*******************************************!*\ + !*** ../../graphiql-toolkit/esm/index.js ***! + \*******************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var _asyncHelpers = __webpack_require__(/*! ./async-helpers */ "../../graphiql-toolkit/esm/async-helpers/index.js"); +Object.keys(_asyncHelpers).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _asyncHelpers[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _asyncHelpers[key]; + } + }); +}); +var _createFetcher = __webpack_require__(/*! ./create-fetcher */ "../../graphiql-toolkit/esm/create-fetcher/index.js"); +Object.keys(_createFetcher).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _createFetcher[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _createFetcher[key]; + } + }); +}); +var _format = __webpack_require__(/*! ./format */ "../../graphiql-toolkit/esm/format/index.js"); +Object.keys(_format).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _format[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _format[key]; + } + }); +}); +var _graphqlHelpers = __webpack_require__(/*! ./graphql-helpers */ "../../graphiql-toolkit/esm/graphql-helpers/index.js"); +Object.keys(_graphqlHelpers).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _graphqlHelpers[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _graphqlHelpers[key]; + } + }); +}); +var _storage = __webpack_require__(/*! ./storage */ "../../graphiql-toolkit/esm/storage/index.js"); +Object.keys(_storage).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _storage[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _storage[key]; + } + }); +}); + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/storage/base.js": +/*!**************************************************!*\ + !*** ../../graphiql-toolkit/esm/storage/base.js ***! + \**************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StorageAPI = void 0; +function isQuotaError(storage, e) { + return e instanceof DOMException && (e.code === 22 || e.code === 1014 || e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') && storage.length !== 0; +} +class StorageAPI { + constructor(storage) { + if (storage) { + this.storage = storage; + } else if (storage === null) { + this.storage = null; + } else if (typeof window === 'undefined') { + this.storage = null; + } else { + this.storage = { + getItem: window.localStorage.getItem.bind(window.localStorage), + setItem: window.localStorage.setItem.bind(window.localStorage), + removeItem: window.localStorage.removeItem.bind(window.localStorage), + get length() { + let keys = 0; + for (const key in window.localStorage) { + if (key.indexOf(`${STORAGE_NAMESPACE}:`) === 0) { + keys += 1; + } + } + return keys; + }, + clear() { + for (const key in window.localStorage) { + if (key.indexOf(`${STORAGE_NAMESPACE}:`) === 0) { + window.localStorage.removeItem(key); + } + } + } + }; + } + } + get(name) { + if (!this.storage) { + return null; + } + const key = `${STORAGE_NAMESPACE}:${name}`; + const value = this.storage.getItem(key); + if (value === 'null' || value === 'undefined') { + this.storage.removeItem(key); + return null; + } + return value || null; + } + set(name, value) { + let quotaError = false; + let error = null; + if (this.storage) { + const key = `${STORAGE_NAMESPACE}:${name}`; + if (value) { + try { + this.storage.setItem(key, value); + } catch (e) { + error = e instanceof Error ? e : new Error(`${e}`); + quotaError = isQuotaError(this.storage, e); + } + } else { + this.storage.removeItem(key); + } + } + return { + isQuotaError: quotaError, + error + }; + } + clear() { + if (this.storage) { + this.storage.clear(); + } + } +} +exports.StorageAPI = StorageAPI; +const STORAGE_NAMESPACE = 'graphiql'; + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/storage/custom.js": +/*!****************************************************!*\ + !*** ../../graphiql-toolkit/esm/storage/custom.js ***! + \****************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createLocalStorage = createLocalStorage; +function createLocalStorage(_ref) { + let { + namespace + } = _ref; + const storageKeyPrefix = `${namespace}:`; + const getStorageKey = key => `${storageKeyPrefix}${key}`; + const storage = { + setItem: (key, value) => localStorage.setItem(getStorageKey(key), value), + getItem: key => localStorage.getItem(getStorageKey(key)), + removeItem: key => localStorage.removeItem(getStorageKey(key)), + get length() { + let keys = 0; + for (const key in window.localStorage) { + if (key.indexOf(storageKeyPrefix) === 0) { + keys += 1; + } + } + return keys; + }, + clear() { + for (const key in window.localStorage) { + if (key.indexOf(storageKeyPrefix) === 0) { + window.localStorage.removeItem(key); + } + } + } + }; + return storage; +} + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/storage/history.js": +/*!*****************************************************!*\ + !*** ../../graphiql-toolkit/esm/storage/history.js ***! + \*****************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.HistoryStore = void 0; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +var _query = __webpack_require__(/*! ./query */ "../../graphiql-toolkit/esm/storage/query.js"); +const MAX_QUERY_SIZE = 100000; +class HistoryStore { + constructor(storage, maxHistoryLength) { + var _this = this; + this.storage = storage; + this.maxHistoryLength = maxHistoryLength; + this.updateHistory = _ref => { + let { + query, + variables, + headers, + operationName + } = _ref; + if (!this.shouldSaveQuery(query, variables, headers, this.history.fetchRecent())) { + return; + } + this.history.push({ + query, + variables, + headers, + operationName + }); + const historyQueries = this.history.items; + const favoriteQueries = this.favorite.items; + this.queries = historyQueries.concat(favoriteQueries); + }; + this.deleteHistory = function (_ref2) { + let { + query, + variables, + headers, + operationName, + favorite + } = _ref2; + let clearFavorites = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + function deleteFromStore(store) { + const found = store.items.find(x => x.query === query && x.variables === variables && x.headers === headers && x.operationName === operationName); + if (found) { + store.delete(found); + } + } + if (favorite || clearFavorites) { + deleteFromStore(_this.favorite); + } + if (!favorite || clearFavorites) { + deleteFromStore(_this.history); + } + _this.queries = [..._this.history.items, ..._this.favorite.items]; + }; + this.history = new _query.QueryStore('queries', this.storage, this.maxHistoryLength); + this.favorite = new _query.QueryStore('favorites', this.storage, null); + this.queries = [...this.history.fetchAll(), ...this.favorite.fetchAll()]; + } + shouldSaveQuery(query, variables, headers, lastQuerySaved) { + if (!query) { + return false; + } + try { + (0, _graphql.parse)(query); + } catch (_a) { + return false; + } + if (query.length > MAX_QUERY_SIZE) { + return false; + } + if (!lastQuerySaved) { + return true; + } + if (JSON.stringify(query) === JSON.stringify(lastQuerySaved.query)) { + if (JSON.stringify(variables) === JSON.stringify(lastQuerySaved.variables)) { + if (JSON.stringify(headers) === JSON.stringify(lastQuerySaved.headers)) { + return false; + } + if (headers && !lastQuerySaved.headers) { + return false; + } + } + if (variables && !lastQuerySaved.variables) { + return false; + } + } + return true; + } + toggleFavorite(_ref3) { + let { + query, + variables, + headers, + operationName, + label, + favorite + } = _ref3; + const item = { + query, + variables, + headers, + operationName, + label + }; + if (favorite) { + item.favorite = false; + this.favorite.delete(item); + this.history.push(item); + } else { + item.favorite = true; + this.favorite.push(item); + this.history.delete(item); + } + this.queries = [...this.history.items, ...this.favorite.items]; + } + editLabel(_ref4, index) { + let { + query, + variables, + headers, + operationName, + label, + favorite + } = _ref4; + const item = { + query, + variables, + headers, + operationName, + label + }; + if (favorite) { + this.favorite.edit(Object.assign(Object.assign({}, item), { + favorite + }), index); + } else { + this.history.edit(item, index); + } + this.queries = [...this.history.items, ...this.favorite.items]; + } +} +exports.HistoryStore = HistoryStore; + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/storage/index.js": +/*!***************************************************!*\ + !*** ../../graphiql-toolkit/esm/storage/index.js ***! + \***************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var _base = __webpack_require__(/*! ./base */ "../../graphiql-toolkit/esm/storage/base.js"); +Object.keys(_base).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _base[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _base[key]; + } + }); +}); +var _history = __webpack_require__(/*! ./history */ "../../graphiql-toolkit/esm/storage/history.js"); +Object.keys(_history).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _history[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _history[key]; + } + }); +}); +var _query = __webpack_require__(/*! ./query */ "../../graphiql-toolkit/esm/storage/query.js"); +Object.keys(_query).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _query[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _query[key]; + } + }); +}); +var _custom = __webpack_require__(/*! ./custom */ "../../graphiql-toolkit/esm/storage/custom.js"); +Object.keys(_custom).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _custom[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _custom[key]; + } + }); +}); + +/***/ }), + +/***/ "../../graphiql-toolkit/esm/storage/query.js": +/*!***************************************************!*\ + !*** ../../graphiql-toolkit/esm/storage/query.js ***! + \***************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.QueryStore = void 0; +class QueryStore { + constructor(key, storage) { + let maxSize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + this.key = key; + this.storage = storage; + this.maxSize = maxSize; + this.items = this.fetchAll(); + } + get length() { + return this.items.length; + } + contains(item) { + return this.items.some(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName); + } + edit(item, index) { + if (typeof index === 'number' && this.items[index]) { + const found = this.items[index]; + if (found.query === item.query && found.variables === item.variables && found.headers === item.headers && found.operationName === item.operationName) { + this.items.splice(index, 1, item); + this.save(); + return; + } + } + const itemIndex = this.items.findIndex(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName); + if (itemIndex !== -1) { + this.items.splice(itemIndex, 1, item); + this.save(); + } + } + delete(item) { + const itemIndex = this.items.findIndex(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName); + if (itemIndex !== -1) { + this.items.splice(itemIndex, 1); + this.save(); + } + } + fetchRecent() { + return this.items.at(-1); + } + fetchAll() { + const raw = this.storage.get(this.key); + if (raw) { + return JSON.parse(raw)[this.key]; + } + return []; + } + push(item) { + const items = [...this.items, item]; + if (this.maxSize && items.length > this.maxSize) { + items.shift(); + } + for (let attempts = 0; attempts < 5; attempts++) { + const response = this.storage.set(this.key, JSON.stringify({ + [this.key]: items + })); + if (!(response === null || response === void 0 ? void 0 : response.error)) { + this.items = items; + } else if (response.isQuotaError && this.maxSize) { + items.shift(); + } else { + return; + } + } + } + save() { + this.storage.set(this.key, JSON.stringify({ + [this.key]: this.items + })); + } +} +exports.QueryStore = QueryStore; + +/***/ }), + +/***/ "./components/GraphiQL.tsx": +/*!*********************************!*\ + !*** ./components/GraphiQL.tsx ***! + \*********************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GraphiQL = GraphiQL; +exports.GraphiQLInterface = GraphiQLInterface; +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); +var _react2 = __webpack_require__(/*! @graphiql/react */ "../../graphiql-react/dist/index.js"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +const majorVersion = parseInt(_react.default.version.slice(0, 2), 10); +if (majorVersion < 16) { + throw new Error(['GraphiQL 0.18.0 and after is not compatible with React 15 or below.', 'If you are using a CDN source (jsdelivr, unpkg, etc), follow this example:', 'https://github.com/graphql/graphiql/blob/master/examples/graphiql-cdn/index.html#L49'].join('\n')); +} +/** + * The top-level React component for GraphiQL, intended to encompass the entire + * browser viewport. + * + * @see https://github.com/graphql/graphiql#usage + */ + +function GraphiQL(_ref) { + let { + dangerouslyAssumeSchemaIsValid, + defaultQuery, + defaultTabs, + externalFragments, + fetcher, + getDefaultFieldNames, + headers, + inputValueDeprecation, + introspectionQueryName, + maxHistoryLength, + onEditOperationName, + onSchemaChange, + onTabChange, + onTogglePluginVisibility, + operationName, + plugins, + query, + response, + schema, + schemaDescription, + shouldPersistHeaders, + storage, + validationRules, + variables, + visiblePlugin, + defaultHeaders, + ...props + } = _ref; + // Ensure props are correct + if (typeof fetcher !== 'function') { + throw new TypeError('The `GraphiQL` component requires a `fetcher` function to be passed as prop.'); + } + return /*#__PURE__*/_react.default.createElement(_react2.GraphiQLProvider, { + getDefaultFieldNames: getDefaultFieldNames, + dangerouslyAssumeSchemaIsValid: dangerouslyAssumeSchemaIsValid, + defaultQuery: defaultQuery, + defaultHeaders: defaultHeaders, + defaultTabs: defaultTabs, + externalFragments: externalFragments, + fetcher: fetcher, + headers: headers, + inputValueDeprecation: inputValueDeprecation, + introspectionQueryName: introspectionQueryName, + maxHistoryLength: maxHistoryLength, + onEditOperationName: onEditOperationName, + onSchemaChange: onSchemaChange, + onTabChange: onTabChange, + onTogglePluginVisibility: onTogglePluginVisibility, + plugins: plugins, + visiblePlugin: visiblePlugin, + operationName: operationName, + query: query, + response: response, + schema: schema, + schemaDescription: schemaDescription, + shouldPersistHeaders: shouldPersistHeaders, + storage: storage, + validationRules: validationRules, + variables: variables + }, /*#__PURE__*/_react.default.createElement(GraphiQLInterface, _extends({ + showPersistHeadersSettings: shouldPersistHeaders !== false + }, props))); +} + +// Export main windows/panes to be used separately if desired. +GraphiQL.Logo = GraphiQLLogo; +GraphiQL.Toolbar = GraphiQLToolbar; +GraphiQL.Footer = GraphiQLFooter; +function GraphiQLInterface(props) { + var _props$isHeadersEdito, _pluginContext$visibl, _props$toolbar; + const isHeadersEditorEnabled = (_props$isHeadersEdito = props.isHeadersEditorEnabled) !== null && _props$isHeadersEdito !== void 0 ? _props$isHeadersEdito : true; + const editorContext = (0, _react2.useEditorContext)({ + nonNull: true + }); + const executionContext = (0, _react2.useExecutionContext)({ + nonNull: true + }); + const schemaContext = (0, _react2.useSchemaContext)({ + nonNull: true + }); + const storageContext = (0, _react2.useStorageContext)(); + const pluginContext = (0, _react2.usePluginContext)(); + const copy = (0, _react2.useCopyQuery)({ + onCopyQuery: props.onCopyQuery + }); + const merge = (0, _react2.useMergeQuery)(); + const prettify = (0, _react2.usePrettifyEditors)(); + const { + theme, + setTheme + } = (0, _react2.useTheme)(); + const PluginContent = pluginContext === null || pluginContext === void 0 ? void 0 : (_pluginContext$visibl = pluginContext.visiblePlugin) === null || _pluginContext$visibl === void 0 ? void 0 : _pluginContext$visibl.content; + const pluginResize = (0, _react2.useDragResize)({ + defaultSizeRelation: 1 / 3, + direction: 'horizontal', + initiallyHidden: pluginContext !== null && pluginContext !== void 0 && pluginContext.visiblePlugin ? undefined : 'first', + onHiddenElementChange(resizableElement) { + if (resizableElement === 'first') { + pluginContext === null || pluginContext === void 0 ? void 0 : pluginContext.setVisiblePlugin(null); + } + }, + sizeThresholdSecond: 200, + storageKey: 'docExplorerFlex' + }); + const editorResize = (0, _react2.useDragResize)({ + direction: 'horizontal', + storageKey: 'editorFlex' + }); + const editorToolsResize = (0, _react2.useDragResize)({ + defaultSizeRelation: 3, + direction: 'vertical', + initiallyHidden: (() => { + if (props.defaultEditorToolsVisibility === 'variables' || props.defaultEditorToolsVisibility === 'headers') { + return; + } + if (typeof props.defaultEditorToolsVisibility === 'boolean') { + return props.defaultEditorToolsVisibility ? undefined : 'second'; + } + return editorContext.initialVariables || editorContext.initialHeaders ? undefined : 'second'; + })(), + sizeThresholdSecond: 60, + storageKey: 'secondaryEditorFlex' + }); + const [activeSecondaryEditor, setActiveSecondaryEditor] = (0, _react.useState)(() => { + if (props.defaultEditorToolsVisibility === 'variables' || props.defaultEditorToolsVisibility === 'headers') { + return props.defaultEditorToolsVisibility; + } + return !editorContext.initialVariables && editorContext.initialHeaders && isHeadersEditorEnabled ? 'headers' : 'variables'; + }); + const [showDialog, setShowDialog] = (0, _react.useState)(null); + const [clearStorageStatus, setClearStorageStatus] = (0, _react.useState)(null); + const children = _react.default.Children.toArray(props.children); + const logo = children.find(child => isChildComponentType(child, GraphiQL.Logo)) || /*#__PURE__*/_react.default.createElement(GraphiQL.Logo, null); + const toolbar = children.find(child => isChildComponentType(child, GraphiQL.Toolbar)) || /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_react2.ToolbarButton, { + onClick: prettify, + label: "Prettify query (Shift-Ctrl-P)" + }, /*#__PURE__*/_react.default.createElement(_react2.PrettifyIcon, { + className: "graphiql-toolbar-icon", + "aria-hidden": "true" + })), /*#__PURE__*/_react.default.createElement(_react2.ToolbarButton, { + onClick: merge, + label: "Merge fragments into query (Shift-Ctrl-M)" + }, /*#__PURE__*/_react.default.createElement(_react2.MergeIcon, { + className: "graphiql-toolbar-icon", + "aria-hidden": "true" + })), /*#__PURE__*/_react.default.createElement(_react2.ToolbarButton, { + onClick: copy, + label: "Copy query (Shift-Ctrl-C)" + }, /*#__PURE__*/_react.default.createElement(_react2.CopyIcon, { + className: "graphiql-toolbar-icon", + "aria-hidden": "true" + })), (_props$toolbar = props.toolbar) === null || _props$toolbar === void 0 ? void 0 : _props$toolbar.additionalContent); + const footer = children.find(child => isChildComponentType(child, GraphiQL.Footer)); + const onClickReference = (0, _react.useCallback)(() => { + if (pluginResize.hiddenElement === 'first') { + pluginResize.setHiddenElement(null); + } + }, [pluginResize]); + const handleClearData = (0, _react.useCallback)(() => { + try { + storageContext === null || storageContext === void 0 ? void 0 : storageContext.clear(); + setClearStorageStatus('success'); + } catch { + setClearStorageStatus('error'); + } + }, [storageContext]); + const handlePersistHeaders = (0, _react.useCallback)(event => { + editorContext.setShouldPersistHeaders(event.currentTarget.dataset.value === 'true'); + }, [editorContext]); + const handleChangeTheme = (0, _react.useCallback)(event => { + const selectedTheme = event.currentTarget.dataset.theme; + setTheme(selectedTheme || null); + }, [setTheme]); + const handleAddTab = editorContext.addTab; + const handleRefetchSchema = schemaContext.introspect; + const handleReorder = editorContext.moveTab; + const handleShowDialog = (0, _react.useCallback)(event => { + setShowDialog(event.currentTarget.dataset.value); + }, []); + const handlePluginClick = (0, _react.useCallback)(e => { + const context = pluginContext; + const pluginIndex = Number(e.currentTarget.dataset.index); + const plugin = context.plugins.find((_, index) => pluginIndex === index); + const isVisible = plugin === context.visiblePlugin; + if (isVisible) { + context.setVisiblePlugin(null); + pluginResize.setHiddenElement('first'); + } else { + context.setVisiblePlugin(plugin); + pluginResize.setHiddenElement(null); + } + }, [pluginContext, pluginResize]); + const handleToolsTabClick = (0, _react.useCallback)(event => { + if (editorToolsResize.hiddenElement === 'second') { + editorToolsResize.setHiddenElement(null); + } + setActiveSecondaryEditor(event.currentTarget.dataset.name); + }, [editorToolsResize]); + const toggleEditorTools = (0, _react.useCallback)(() => { + editorToolsResize.setHiddenElement(editorToolsResize.hiddenElement === 'second' ? null : 'second'); + }, [editorToolsResize]); + const handleOpenShortKeysDialog = (0, _react.useCallback)(isOpen => { + if (!isOpen) { + setShowDialog(null); + } + }, []); + const handleOpenSettingsDialog = (0, _react.useCallback)(isOpen => { + if (!isOpen) { + setShowDialog(null); + setClearStorageStatus(null); + } + }, []); + const addTab = /*#__PURE__*/_react.default.createElement(_react2.Tooltip, { + label: "Add tab" + }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { + type: "button", + className: "graphiql-tab-add", + onClick: handleAddTab, + "aria-label": "Add tab" + }, /*#__PURE__*/_react.default.createElement(_react2.PlusIcon, { + "aria-hidden": "true" + }))); + return /*#__PURE__*/_react.default.createElement(_react2.Tooltip.Provider, null, /*#__PURE__*/_react.default.createElement("div", { + "data-testid": "graphiql-container", + className: "graphiql-container" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-sidebar" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-sidebar-section" + }, pluginContext === null || pluginContext === void 0 ? void 0 : pluginContext.plugins.map((plugin, index) => { + const isVisible = plugin === pluginContext.visiblePlugin; + const label = `${isVisible ? 'Hide' : 'Show'} ${plugin.title}`; + const Icon = plugin.icon; + return /*#__PURE__*/_react.default.createElement(_react2.Tooltip, { + key: plugin.title, + label: label + }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { + type: "button", + className: isVisible ? 'active' : '', + onClick: handlePluginClick, + "data-index": index, + "aria-label": label + }, /*#__PURE__*/_react.default.createElement(Icon, { + "aria-hidden": "true" + }))); + })), /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-sidebar-section" + }, /*#__PURE__*/_react.default.createElement(_react2.Tooltip, { + label: "Re-fetch GraphQL schema" + }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { + type: "button", + disabled: schemaContext.isFetching, + onClick: handleRefetchSchema, + "aria-label": "Re-fetch GraphQL schema" + }, /*#__PURE__*/_react.default.createElement(_react2.ReloadIcon, { + className: schemaContext.isFetching ? 'graphiql-spin' : '', + "aria-hidden": "true" + }))), /*#__PURE__*/_react.default.createElement(_react2.Tooltip, { + label: "Open short keys dialog" + }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { + type: "button", + "data-value": "short-keys", + onClick: handleShowDialog, + "aria-label": "Open short keys dialog" + }, /*#__PURE__*/_react.default.createElement(_react2.KeyboardShortcutIcon, { + "aria-hidden": "true" + }))), /*#__PURE__*/_react.default.createElement(_react2.Tooltip, { + label: "Open settings dialog" + }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { + type: "button", + "data-value": "settings", + onClick: handleShowDialog, + "aria-label": "Open settings dialog" + }, /*#__PURE__*/_react.default.createElement(_react2.SettingsIcon, { + "aria-hidden": "true" + }))))), /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-main" + }, /*#__PURE__*/_react.default.createElement("div", { + ref: pluginResize.firstRef, + style: { + // Make sure the container shrinks when containing long + // non-breaking texts + minWidth: '200px' + } + }, /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-plugin" + }, PluginContent ? /*#__PURE__*/_react.default.createElement(PluginContent, null) : null)), (pluginContext === null || pluginContext === void 0 ? void 0 : pluginContext.visiblePlugin) && /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-horizontal-drag-bar", + ref: pluginResize.dragBarRef + }), /*#__PURE__*/_react.default.createElement("div", { + ref: pluginResize.secondRef, + className: "graphiql-sessions" + }, /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-session-header" + }, /*#__PURE__*/_react.default.createElement(_react2.Tabs, { + values: editorContext.tabs, + onReorder: handleReorder, + "aria-label": "Select active operation" + }, editorContext.tabs.length > 1 && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, editorContext.tabs.map((tab, index) => /*#__PURE__*/_react.default.createElement(_react2.Tab, { + key: tab.id, + value: tab, + isActive: index === editorContext.activeTabIndex + }, /*#__PURE__*/_react.default.createElement(_react2.Tab.Button, { + "aria-controls": "graphiql-session", + id: `graphiql-session-tab-${index}`, + onClick: () => { + executionContext.stop(); + editorContext.changeTab(index); + } + }, tab.title), /*#__PURE__*/_react.default.createElement(_react2.Tab.Close, { + onClick: () => { + if (editorContext.activeTabIndex === index) { + executionContext.stop(); + } + editorContext.closeTab(index); + } + }))), addTab)), /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-session-header-right" + }, editorContext.tabs.length === 1 && addTab, logo)), /*#__PURE__*/_react.default.createElement("div", { + role: "tabpanel", + id: "graphiql-session", + className: "graphiql-session", + "aria-labelledby": `graphiql-session-tab-${editorContext.activeTabIndex}` + }, /*#__PURE__*/_react.default.createElement("div", { + ref: editorResize.firstRef + }, /*#__PURE__*/_react.default.createElement("div", { + className: `graphiql-editors${editorContext.tabs.length === 1 ? ' full-height' : ''}` + }, /*#__PURE__*/_react.default.createElement("div", { + ref: editorToolsResize.firstRef + }, /*#__PURE__*/_react.default.createElement("section", { + className: "graphiql-query-editor", + "aria-label": "Query Editor" + }, /*#__PURE__*/_react.default.createElement(_react2.QueryEditor, { + editorTheme: props.editorTheme, + keyMap: props.keyMap, + onClickReference: onClickReference, + onCopyQuery: props.onCopyQuery, + onEdit: props.onEditQuery, + readOnly: props.readOnly + }), /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-toolbar", + role: "toolbar", + "aria-label": "Editor Commands" + }, /*#__PURE__*/_react.default.createElement(_react2.ExecuteButton, null), toolbar))), /*#__PURE__*/_react.default.createElement("div", { + ref: editorToolsResize.dragBarRef + }, /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-editor-tools" + }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { + type: "button", + className: activeSecondaryEditor === 'variables' && editorToolsResize.hiddenElement !== 'second' ? 'active' : '', + onClick: handleToolsTabClick, + "data-name": "variables" + }, "Variables"), isHeadersEditorEnabled && /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { + type: "button", + className: activeSecondaryEditor === 'headers' && editorToolsResize.hiddenElement !== 'second' ? 'active' : '', + onClick: handleToolsTabClick, + "data-name": "headers" + }, "Headers"), /*#__PURE__*/_react.default.createElement(_react2.Tooltip, { + label: editorToolsResize.hiddenElement === 'second' ? 'Show editor tools' : 'Hide editor tools' + }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { + type: "button", + onClick: toggleEditorTools, + "aria-label": editorToolsResize.hiddenElement === 'second' ? 'Show editor tools' : 'Hide editor tools', + className: "graphiql-toggle-editor-tools" + }, editorToolsResize.hiddenElement === 'second' ? /*#__PURE__*/_react.default.createElement(_react2.ChevronUpIcon, { + className: "graphiql-chevron-icon", + "aria-hidden": "true" + }) : /*#__PURE__*/_react.default.createElement(_react2.ChevronDownIcon, { + className: "graphiql-chevron-icon", + "aria-hidden": "true" + }))))), /*#__PURE__*/_react.default.createElement("div", { + ref: editorToolsResize.secondRef + }, /*#__PURE__*/_react.default.createElement("section", { + className: "graphiql-editor-tool", + "aria-label": activeSecondaryEditor === 'variables' ? 'Variables' : 'Headers' + }, /*#__PURE__*/_react.default.createElement(_react2.VariableEditor, { + editorTheme: props.editorTheme, + isHidden: activeSecondaryEditor !== 'variables', + keyMap: props.keyMap, + onEdit: props.onEditVariables, + onClickReference: onClickReference, + readOnly: props.readOnly + }), isHeadersEditorEnabled && /*#__PURE__*/_react.default.createElement(_react2.HeaderEditor, { + editorTheme: props.editorTheme, + isHidden: activeSecondaryEditor !== 'headers', + keyMap: props.keyMap, + onEdit: props.onEditHeaders, + readOnly: props.readOnly + }))))), /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-horizontal-drag-bar", + ref: editorResize.dragBarRef + }), /*#__PURE__*/_react.default.createElement("div", { + ref: editorResize.secondRef + }, /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-response" + }, executionContext.isFetching ? /*#__PURE__*/_react.default.createElement(_react2.Spinner, null) : null, /*#__PURE__*/_react.default.createElement(_react2.ResponseEditor, { + editorTheme: props.editorTheme, + responseTooltip: props.responseTooltip, + keyMap: props.keyMap + }), footer))))), /*#__PURE__*/_react.default.createElement(_react2.Dialog, { + open: showDialog === 'short-keys', + onOpenChange: handleOpenShortKeysDialog + }, /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-dialog-header" + }, /*#__PURE__*/_react.default.createElement(_react2.Dialog.Title, { + className: "graphiql-dialog-title" + }, "Short Keys"), /*#__PURE__*/_react.default.createElement(_react2.Dialog.Close, null)), /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-dialog-section" + }, /*#__PURE__*/_react.default.createElement(ShortKeys, { + keyMap: props.keyMap || 'sublime' + }))), /*#__PURE__*/_react.default.createElement(_react2.Dialog, { + open: showDialog === 'settings', + onOpenChange: handleOpenSettingsDialog + }, /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-dialog-header" + }, /*#__PURE__*/_react.default.createElement(_react2.Dialog.Title, { + className: "graphiql-dialog-title" + }, "Settings"), /*#__PURE__*/_react.default.createElement(_react2.Dialog.Close, null)), props.showPersistHeadersSettings ? /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-dialog-section" + }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-dialog-section-title" + }, "Persist headers"), /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-dialog-section-caption" + }, "Save headers upon reloading.", ' ', /*#__PURE__*/_react.default.createElement("span", { + className: "graphiql-warning-text" + }, "Only enable if you trust this device."))), /*#__PURE__*/_react.default.createElement(_react2.ButtonGroup, null, /*#__PURE__*/_react.default.createElement(_react2.Button, { + type: "button", + id: "enable-persist-headers", + className: editorContext.shouldPersistHeaders ? 'active' : '', + "data-value": "true", + onClick: handlePersistHeaders + }, "On"), /*#__PURE__*/_react.default.createElement(_react2.Button, { + type: "button", + id: "disable-persist-headers", + className: editorContext.shouldPersistHeaders ? '' : 'active', + onClick: handlePersistHeaders + }, "Off"))) : null, /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-dialog-section" + }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-dialog-section-title" + }, "Theme"), /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-dialog-section-caption" + }, "Adjust how the interface looks like.")), /*#__PURE__*/_react.default.createElement(_react2.ButtonGroup, null, /*#__PURE__*/_react.default.createElement(_react2.Button, { + type: "button", + className: theme === null ? 'active' : '', + onClick: handleChangeTheme + }, "System"), /*#__PURE__*/_react.default.createElement(_react2.Button, { + type: "button", + className: theme === 'light' ? 'active' : '', + "data-theme": "light", + onClick: handleChangeTheme + }, "Light"), /*#__PURE__*/_react.default.createElement(_react2.Button, { + type: "button", + className: theme === 'dark' ? 'active' : '', + "data-theme": "dark", + onClick: handleChangeTheme + }, "Dark"))), storageContext ? /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-dialog-section" + }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-dialog-section-title" + }, "Clear storage"), /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-dialog-section-caption" + }, "Remove all locally stored data and start fresh.")), /*#__PURE__*/_react.default.createElement(_react2.Button, { + type: "button", + state: clearStorageStatus || undefined, + disabled: clearStorageStatus === 'success', + onClick: handleClearData + }, { + success: 'Cleared data', + error: 'Failed' + }[clearStorageStatus] || 'Clear data')) : null))); +} +const modifier = typeof window !== 'undefined' && window.navigator.platform.toLowerCase().indexOf('mac') === 0 ? 'Cmd' : 'Ctrl'; +const SHORT_KEYS = Object.entries({ + 'Search in editor': [modifier, 'F'], + 'Search in documentation': [modifier, 'K'], + 'Execute query': [modifier, 'Enter'], + 'Prettify editors': ['Ctrl', 'Shift', 'P'], + 'Merge fragments definitions into operation definition': ['Ctrl', 'Shift', 'M'], + 'Copy query': ['Ctrl', 'Shift', 'C'], + 'Re-fetch schema using introspection': ['Ctrl', 'Shift', 'R'] +}); +function ShortKeys(_ref2) { + let { + keyMap + } = _ref2; + return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("table", { + className: "graphiql-table" + }, /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("th", null, "Short Key"), /*#__PURE__*/_react.default.createElement("th", null, "Function"))), /*#__PURE__*/_react.default.createElement("tbody", null, SHORT_KEYS.map(_ref3 => { + let [title, keys] = _ref3; + return /*#__PURE__*/_react.default.createElement("tr", { + key: title + }, /*#__PURE__*/_react.default.createElement("td", null, keys.map((key, index, array) => /*#__PURE__*/_react.default.createElement(_react.Fragment, { + key: key + }, /*#__PURE__*/_react.default.createElement("code", { + className: "graphiql-key" + }, key), index !== array.length - 1 && ' + '))), /*#__PURE__*/_react.default.createElement("td", null, title)); + }))), /*#__PURE__*/_react.default.createElement("p", null, "The editors use", ' ', /*#__PURE__*/_react.default.createElement("a", { + href: "https://codemirror.net/5/doc/manual.html#keymaps", + target: "_blank", + rel: "noopener noreferrer" + }, "CodeMirror Key Maps"), ' ', "that add more short keys. This instance of Graph", /*#__PURE__*/_react.default.createElement("em", null, "i"), "QL uses", ' ', /*#__PURE__*/_react.default.createElement("code", null, keyMap), ".")); +} + +// Configure the UI by providing this Component as a child of GraphiQL. +function GraphiQLLogo(props) { + return /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-logo" + }, props.children || /*#__PURE__*/_react.default.createElement("a", { + className: "graphiql-logo-link", + href: "https://github.com/graphql/graphiql", + target: "_blank", + rel: "noreferrer" + }, "Graph", /*#__PURE__*/_react.default.createElement("em", null, "i"), "QL")); +} +GraphiQLLogo.displayName = 'GraphiQLLogo'; + +// Configure the UI by providing this Component as a child of GraphiQL. +function GraphiQLToolbar(props) { + // eslint-disable-next-line react/jsx-no-useless-fragment + return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, props.children); +} +GraphiQLToolbar.displayName = 'GraphiQLToolbar'; + +// Configure the UI by providing this Component as a child of GraphiQL. +function GraphiQLFooter(props) { + return /*#__PURE__*/_react.default.createElement("div", { + className: "graphiql-footer" + }, props.children); +} +GraphiQLFooter.displayName = 'GraphiQLFooter'; + +// Determines if the React child is of the same type of the provided React component +function isChildComponentType(child, component) { + var _child$type; + if (child !== null && child !== void 0 && (_child$type = child.type) !== null && _child$type !== void 0 && _child$type.displayName && child.type.displayName === component.displayName) { + return true; + } + return child.type === component; +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/index.js": +/*!***************************************************!*\ + !*** ../../graphql-language-service/esm/index.js ***! + \***************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "CharacterStream", ({ + enumerable: true, + get: function () { + return _parser.CharacterStream; + } +})); +Object.defineProperty(exports, "CompletionItemKind", ({ + enumerable: true, + get: function () { + return _types.CompletionItemKind; + } +})); +Object.defineProperty(exports, "DIAGNOSTIC_SEVERITY", ({ + enumerable: true, + get: function () { + return _interface.DIAGNOSTIC_SEVERITY; + } +})); +Object.defineProperty(exports, "FileChangeTypeKind", ({ + enumerable: true, + get: function () { + return _types.FileChangeTypeKind; + } +})); +Object.defineProperty(exports, "LexRules", ({ + enumerable: true, + get: function () { + return _parser.LexRules; + } +})); +Object.defineProperty(exports, "ParseRules", ({ + enumerable: true, + get: function () { + return _parser.ParseRules; + } +})); +Object.defineProperty(exports, "Position", ({ + enumerable: true, + get: function () { + return _utils.Position; + } +})); +Object.defineProperty(exports, "Range", ({ + enumerable: true, + get: function () { + return _utils.Range; + } +})); +Object.defineProperty(exports, "RuleKinds", ({ + enumerable: true, + get: function () { + return _parser.RuleKinds; + } +})); +Object.defineProperty(exports, "SEVERITY", ({ + enumerable: true, + get: function () { + return _interface.SEVERITY; + } +})); +Object.defineProperty(exports, "SuggestionCommand", ({ + enumerable: true, + get: function () { + return _interface.SuggestionCommand; + } +})); +Object.defineProperty(exports, "canUseDirective", ({ + enumerable: true, + get: function () { + return _interface.canUseDirective; + } +})); +Object.defineProperty(exports, "collectVariables", ({ + enumerable: true, + get: function () { + return _utils.collectVariables; + } +})); +Object.defineProperty(exports, "getASTNodeAtPosition", ({ + enumerable: true, + get: function () { + return _utils.getASTNodeAtPosition; + } +})); +Object.defineProperty(exports, "getAutocompleteSuggestions", ({ + enumerable: true, + get: function () { + return _interface.getAutocompleteSuggestions; + } +})); +Object.defineProperty(exports, "getDefinitionQueryResultForDefinitionNode", ({ + enumerable: true, + get: function () { + return _interface.getDefinitionQueryResultForDefinitionNode; + } +})); +Object.defineProperty(exports, "getDefinitionQueryResultForField", ({ + enumerable: true, + get: function () { + return _interface.getDefinitionQueryResultForField; + } +})); +Object.defineProperty(exports, "getDefinitionQueryResultForFragmentSpread", ({ + enumerable: true, + get: function () { + return _interface.getDefinitionQueryResultForFragmentSpread; + } +})); +Object.defineProperty(exports, "getDefinitionQueryResultForNamedType", ({ + enumerable: true, + get: function () { + return _interface.getDefinitionQueryResultForNamedType; + } +})); +Object.defineProperty(exports, "getDefinitionState", ({ + enumerable: true, + get: function () { + return _interface.getDefinitionState; + } +})); +Object.defineProperty(exports, "getDiagnostics", ({ + enumerable: true, + get: function () { + return _interface.getDiagnostics; + } +})); +Object.defineProperty(exports, "getFieldDef", ({ + enumerable: true, + get: function () { + return _interface.getFieldDef; + } +})); +Object.defineProperty(exports, "getFragmentDefinitions", ({ + enumerable: true, + get: function () { + return _interface.getFragmentDefinitions; + } +})); +Object.defineProperty(exports, "getFragmentDependencies", ({ + enumerable: true, + get: function () { + return _utils.getFragmentDependencies; + } +})); +Object.defineProperty(exports, "getFragmentDependenciesForAST", ({ + enumerable: true, + get: function () { + return _utils.getFragmentDependenciesForAST; + } +})); +Object.defineProperty(exports, "getHoverInformation", ({ + enumerable: true, + get: function () { + return _interface.getHoverInformation; + } +})); +Object.defineProperty(exports, "getOperationASTFacts", ({ + enumerable: true, + get: function () { + return _utils.getOperationASTFacts; + } +})); +Object.defineProperty(exports, "getOperationFacts", ({ + enumerable: true, + get: function () { + return _utils.getOperationFacts; + } +})); +Object.defineProperty(exports, "getOutline", ({ + enumerable: true, + get: function () { + return _interface.getOutline; + } +})); +Object.defineProperty(exports, "getQueryFacts", ({ + enumerable: true, + get: function () { + return _utils.getQueryFacts; + } +})); +Object.defineProperty(exports, "getRange", ({ + enumerable: true, + get: function () { + return _interface.getRange; + } +})); +Object.defineProperty(exports, "getTokenAtPosition", ({ + enumerable: true, + get: function () { + return _interface.getTokenAtPosition; + } +})); +Object.defineProperty(exports, "getTypeInfo", ({ + enumerable: true, + get: function () { + return _interface.getTypeInfo; + } +})); +Object.defineProperty(exports, "getVariableCompletions", ({ + enumerable: true, + get: function () { + return _interface.getVariableCompletions; + } +})); +Object.defineProperty(exports, "getVariablesJSONSchema", ({ + enumerable: true, + get: function () { + return _utils.getVariablesJSONSchema; + } +})); +Object.defineProperty(exports, "isIgnored", ({ + enumerable: true, + get: function () { + return _parser.isIgnored; + } +})); +Object.defineProperty(exports, "list", ({ + enumerable: true, + get: function () { + return _parser.list; + } +})); +Object.defineProperty(exports, "offsetToPosition", ({ + enumerable: true, + get: function () { + return _utils.offsetToPosition; + } +})); +Object.defineProperty(exports, "onlineParser", ({ + enumerable: true, + get: function () { + return _parser.onlineParser; + } +})); +Object.defineProperty(exports, "opt", ({ + enumerable: true, + get: function () { + return _parser.opt; + } +})); +Object.defineProperty(exports, "p", ({ + enumerable: true, + get: function () { + return _parser.p; + } +})); +Object.defineProperty(exports, "pointToOffset", ({ + enumerable: true, + get: function () { + return _utils.pointToOffset; + } +})); +Object.defineProperty(exports, "t", ({ + enumerable: true, + get: function () { + return _parser.t; + } +})); +Object.defineProperty(exports, "validateQuery", ({ + enumerable: true, + get: function () { + return _interface.validateQuery; + } +})); +Object.defineProperty(exports, "validateWithCustomRules", ({ + enumerable: true, + get: function () { + return _utils.validateWithCustomRules; + } +})); +var _interface = __webpack_require__(/*! ./interface */ "../../graphql-language-service/esm/interface/index.js"); +var _parser = __webpack_require__(/*! ./parser */ "../../graphql-language-service/esm/parser/index.js"); +var _types = __webpack_require__(/*! ./types */ "../../graphql-language-service/esm/types.js"); +var _utils = __webpack_require__(/*! ./utils */ "../../graphql-language-service/esm/utils/index.js"); + +/***/ }), + +/***/ "../../graphql-language-service/esm/interface/autocompleteUtils.js": +/*!*************************************************************************!*\ + !*** ../../graphql-language-service/esm/interface/autocompleteUtils.js ***! + \*************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.forEachState = forEachState; +exports.getDefinitionState = getDefinitionState; +exports.getFieldDef = getFieldDef; +exports.hintList = hintList; +exports.objectValues = objectValues; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +function getDefinitionState(tokenState) { + let definitionState; + forEachState(tokenState, state => { + switch (state.kind) { + case 'Query': + case 'ShortQuery': + case 'Mutation': + case 'Subscription': + case 'FragmentDefinition': + definitionState = state; + break; + } + }); + return definitionState; +} +function getFieldDef(schema, type, fieldName) { + if (fieldName === _graphql.SchemaMetaFieldDef.name && schema.getQueryType() === type) { + return _graphql.SchemaMetaFieldDef; + } + if (fieldName === _graphql.TypeMetaFieldDef.name && schema.getQueryType() === type) { + return _graphql.TypeMetaFieldDef; + } + if (fieldName === _graphql.TypeNameMetaFieldDef.name && (0, _graphql.isCompositeType)(type)) { + return _graphql.TypeNameMetaFieldDef; + } + if ('getFields' in type) { + return type.getFields()[fieldName]; + } + return null; +} +function forEachState(stack, fn) { + const reverseStateStack = []; + let state = stack; + while (state === null || state === void 0 ? void 0 : state.kind) { + reverseStateStack.push(state); + state = state.prevState; + } + for (let i = reverseStateStack.length - 1; i >= 0; i--) { + fn(reverseStateStack[i]); + } +} +function objectValues(object) { + const keys = Object.keys(object); + const len = keys.length; + const values = new Array(len); + for (let i = 0; i < len; ++i) { + values[i] = object[keys[i]]; + } + return values; +} +function hintList(token, list) { + return filterAndSortList(list, normalizeText(token.string)); +} +function filterAndSortList(list, text) { + if (!text) { + return filterNonEmpty(list, entry => !entry.isDeprecated); + } + const byProximity = list.map(entry => ({ + proximity: getProximity(normalizeText(entry.label), text), + entry + })); + return filterNonEmpty(filterNonEmpty(byProximity, pair => pair.proximity <= 2), pair => !pair.entry.isDeprecated).sort((a, b) => (a.entry.isDeprecated ? 1 : 0) - (b.entry.isDeprecated ? 1 : 0) || a.proximity - b.proximity || a.entry.label.length - b.entry.label.length).map(pair => pair.entry); +} +function filterNonEmpty(array, predicate) { + const filtered = array.filter(predicate); + return filtered.length === 0 ? array : filtered; +} +function normalizeText(text) { + return text.toLowerCase().replaceAll(/\W/g, ''); +} +function getProximity(suggestion, text) { + let proximity = lexicalDistance(text, suggestion); + if (suggestion.length > text.length) { + proximity -= suggestion.length - text.length - 1; + proximity += suggestion.indexOf(text) === 0 ? 0 : 0.5; + } + return proximity; +} +function lexicalDistance(a, b) { + let i; + let j; + const d = []; + const aLength = a.length; + const bLength = b.length; + for (i = 0; i <= aLength; i++) { + d[i] = [i]; + } + for (j = 1; j <= bLength; j++) { + d[0][j] = j; + } + for (i = 1; i <= aLength; i++) { + for (j = 1; j <= bLength; j++) { + const cost = a[i - 1] === b[j - 1] ? 0 : 1; + d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost); + if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) { + d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost); + } + } + } + return d[aLength][bLength]; +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/interface/getAutocompleteSuggestions.js": +/*!**********************************************************************************!*\ + !*** ../../graphql-language-service/esm/interface/getAutocompleteSuggestions.js ***! + \**********************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SuggestionCommand = exports.GraphQLDocumentMode = void 0; +exports.canUseDirective = canUseDirective; +exports.getAutocompleteSuggestions = getAutocompleteSuggestions; +exports.getFragmentDefinitions = getFragmentDefinitions; +exports.getTokenAtPosition = getTokenAtPosition; +exports.getTypeInfo = getTypeInfo; +exports.getVariableCompletions = getVariableCompletions; +exports.runOnlineParser = runOnlineParser; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +var _types = __webpack_require__(/*! ../types */ "../../graphql-language-service/esm/types.js"); +var _parser = __webpack_require__(/*! ../parser */ "../../graphql-language-service/esm/parser/index.js"); +var _autocompleteUtils = __webpack_require__(/*! ./autocompleteUtils */ "../../graphql-language-service/esm/interface/autocompleteUtils.js"); +const SuggestionCommand = { + command: 'editor.action.triggerSuggest', + title: 'Suggestions' +}; +exports.SuggestionCommand = SuggestionCommand; +const collectFragmentDefs = op => { + const externalFragments = []; + if (op) { + try { + (0, _graphql.visit)((0, _graphql.parse)(op), { + FragmentDefinition(def) { + externalFragments.push(def); + } + }); + } catch (_a) { + return []; + } + } + return externalFragments; +}; +const typeSystemKinds = [_graphql.Kind.SCHEMA_DEFINITION, _graphql.Kind.OPERATION_TYPE_DEFINITION, _graphql.Kind.SCALAR_TYPE_DEFINITION, _graphql.Kind.OBJECT_TYPE_DEFINITION, _graphql.Kind.INTERFACE_TYPE_DEFINITION, _graphql.Kind.UNION_TYPE_DEFINITION, _graphql.Kind.ENUM_TYPE_DEFINITION, _graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION, _graphql.Kind.DIRECTIVE_DEFINITION, _graphql.Kind.SCHEMA_EXTENSION, _graphql.Kind.SCALAR_TYPE_EXTENSION, _graphql.Kind.OBJECT_TYPE_EXTENSION, _graphql.Kind.INTERFACE_TYPE_EXTENSION, _graphql.Kind.UNION_TYPE_EXTENSION, _graphql.Kind.ENUM_TYPE_EXTENSION, _graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION]; +const hasTypeSystemDefinitions = sdl => { + let hasTypeSystemDef = false; + if (sdl) { + try { + (0, _graphql.visit)((0, _graphql.parse)(sdl), { + enter(node) { + if (node.kind === 'Document') { + return; + } + if (typeSystemKinds.includes(node.kind)) { + hasTypeSystemDef = true; + return _graphql.BREAK; + } + return false; + } + }); + } catch (_a) { + return hasTypeSystemDef; + } + } + return hasTypeSystemDef; +}; +function getAutocompleteSuggestions(schema, queryText, cursor, contextToken, fragmentDefs, options) { + var _a; + const opts = Object.assign(Object.assign({}, options), { + schema + }); + const token = contextToken || getTokenAtPosition(queryText, cursor, 1); + const state = token.state.kind === 'Invalid' ? token.state.prevState : token.state; + const mode = (options === null || options === void 0 ? void 0 : options.mode) || getDocumentMode(queryText, options === null || options === void 0 ? void 0 : options.uri); + if (!state) { + return []; + } + const { + kind, + step, + prevState + } = state; + const typeInfo = getTypeInfo(schema, token.state); + if (kind === _parser.RuleKinds.DOCUMENT) { + if (mode === GraphQLDocumentMode.TYPE_SYSTEM) { + return getSuggestionsForTypeSystemDefinitions(token); + } + return getSuggestionsForExecutableDefinitions(token); + } + if (kind === _parser.RuleKinds.EXTEND_DEF) { + return getSuggestionsForExtensionDefinitions(token); + } + if (((_a = prevState === null || prevState === void 0 ? void 0 : prevState.prevState) === null || _a === void 0 ? void 0 : _a.kind) === _parser.RuleKinds.EXTENSION_DEFINITION && state.name) { + return (0, _autocompleteUtils.hintList)(token, []); + } + if ((prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _graphql.Kind.SCALAR_TYPE_EXTENSION) { + return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(_graphql.isScalarType).map(type => ({ + label: type.name, + kind: _types.CompletionItemKind.Function + }))); + } + if ((prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _graphql.Kind.OBJECT_TYPE_EXTENSION) { + return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(type => (0, _graphql.isObjectType)(type) && !type.name.startsWith('__')).map(type => ({ + label: type.name, + kind: _types.CompletionItemKind.Function + }))); + } + if ((prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _graphql.Kind.INTERFACE_TYPE_EXTENSION) { + return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(_graphql.isInterfaceType).map(type => ({ + label: type.name, + kind: _types.CompletionItemKind.Function + }))); + } + if ((prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _graphql.Kind.UNION_TYPE_EXTENSION) { + return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(_graphql.isUnionType).map(type => ({ + label: type.name, + kind: _types.CompletionItemKind.Function + }))); + } + if ((prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _graphql.Kind.ENUM_TYPE_EXTENSION) { + return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(type => (0, _graphql.isEnumType)(type) && !type.name.startsWith('__')).map(type => ({ + label: type.name, + kind: _types.CompletionItemKind.Function + }))); + } + if ((prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION) { + return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(_graphql.isInputObjectType).map(type => ({ + label: type.name, + kind: _types.CompletionItemKind.Function + }))); + } + if (kind === _parser.RuleKinds.IMPLEMENTS || kind === _parser.RuleKinds.NAMED_TYPE && (prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _parser.RuleKinds.IMPLEMENTS) { + return getSuggestionsForImplements(token, state, schema, queryText, typeInfo); + } + if (kind === _parser.RuleKinds.SELECTION_SET || kind === _parser.RuleKinds.FIELD || kind === _parser.RuleKinds.ALIASED_FIELD) { + return getSuggestionsForFieldNames(token, typeInfo, opts); + } + if (kind === _parser.RuleKinds.ARGUMENTS || kind === _parser.RuleKinds.ARGUMENT && step === 0) { + const { + argDefs + } = typeInfo; + if (argDefs) { + return (0, _autocompleteUtils.hintList)(token, argDefs.map(argDef => { + var _a; + return { + label: argDef.name, + insertText: argDef.name + ': ', + command: SuggestionCommand, + detail: String(argDef.type), + documentation: (_a = argDef.description) !== null && _a !== void 0 ? _a : undefined, + kind: _types.CompletionItemKind.Variable, + type: argDef.type + }; + })); + } + } + if ((kind === _parser.RuleKinds.OBJECT_VALUE || kind === _parser.RuleKinds.OBJECT_FIELD && step === 0) && typeInfo.objectFieldDefs) { + const objectFields = (0, _autocompleteUtils.objectValues)(typeInfo.objectFieldDefs); + const completionKind = kind === _parser.RuleKinds.OBJECT_VALUE ? _types.CompletionItemKind.Value : _types.CompletionItemKind.Field; + return (0, _autocompleteUtils.hintList)(token, objectFields.map(field => { + var _a; + return { + label: field.name, + detail: String(field.type), + documentation: (_a = field.description) !== null && _a !== void 0 ? _a : undefined, + kind: completionKind, + type: field.type + }; + })); + } + if (kind === _parser.RuleKinds.ENUM_VALUE || kind === _parser.RuleKinds.LIST_VALUE && step === 1 || kind === _parser.RuleKinds.OBJECT_FIELD && step === 2 || kind === _parser.RuleKinds.ARGUMENT && step === 2) { + return getSuggestionsForInputValues(token, typeInfo, queryText, schema); + } + if (kind === _parser.RuleKinds.VARIABLE && step === 1) { + const namedInputType = (0, _graphql.getNamedType)(typeInfo.inputType); + const variableDefinitions = getVariableCompletions(queryText, schema, token); + return (0, _autocompleteUtils.hintList)(token, variableDefinitions.filter(v => v.detail === (namedInputType === null || namedInputType === void 0 ? void 0 : namedInputType.name))); + } + if (kind === _parser.RuleKinds.TYPE_CONDITION && step === 1 || kind === _parser.RuleKinds.NAMED_TYPE && prevState != null && prevState.kind === _parser.RuleKinds.TYPE_CONDITION) { + return getSuggestionsForFragmentTypeConditions(token, typeInfo, schema, kind); + } + if (kind === _parser.RuleKinds.FRAGMENT_SPREAD && step === 1) { + return getSuggestionsForFragmentSpread(token, typeInfo, schema, queryText, Array.isArray(fragmentDefs) ? fragmentDefs : collectFragmentDefs(fragmentDefs)); + } + const unwrappedState = unwrapType(state); + if (mode === GraphQLDocumentMode.TYPE_SYSTEM && !unwrappedState.needsAdvance && kind === _parser.RuleKinds.NAMED_TYPE || kind === _parser.RuleKinds.LIST_TYPE) { + if (unwrappedState.kind === _parser.RuleKinds.FIELD_DEF) { + return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(type => (0, _graphql.isOutputType)(type) && !type.name.startsWith('__')).map(type => ({ + label: type.name, + kind: _types.CompletionItemKind.Function + }))); + } + if (unwrappedState.kind === _parser.RuleKinds.INPUT_VALUE_DEF) { + return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(type => (0, _graphql.isInputType)(type) && !type.name.startsWith('__')).map(type => ({ + label: type.name, + kind: _types.CompletionItemKind.Function + }))); + } + } + if (kind === _parser.RuleKinds.VARIABLE_DEFINITION && step === 2 || kind === _parser.RuleKinds.LIST_TYPE && step === 1 || kind === _parser.RuleKinds.NAMED_TYPE && prevState && (prevState.kind === _parser.RuleKinds.VARIABLE_DEFINITION || prevState.kind === _parser.RuleKinds.LIST_TYPE || prevState.kind === _parser.RuleKinds.NON_NULL_TYPE)) { + return getSuggestionsForVariableDefinition(token, schema, kind); + } + if (kind === _parser.RuleKinds.DIRECTIVE) { + return getSuggestionsForDirective(token, state, schema, kind); + } + return []; +} +const insertSuffix = ' {\n $1\n}'; +const getInsertText = field => { + const { + type + } = field; + if ((0, _graphql.isCompositeType)(type)) { + return insertSuffix; + } + if ((0, _graphql.isListType)(type) && (0, _graphql.isCompositeType)(type.ofType)) { + return insertSuffix; + } + if ((0, _graphql.isNonNullType)(type)) { + if ((0, _graphql.isCompositeType)(type.ofType)) { + return insertSuffix; + } + if ((0, _graphql.isListType)(type.ofType) && (0, _graphql.isCompositeType)(type.ofType.ofType)) { + return insertSuffix; + } + } + return null; +}; +function getSuggestionsForTypeSystemDefinitions(token) { + return (0, _autocompleteUtils.hintList)(token, [{ + label: 'extend', + kind: _types.CompletionItemKind.Function + }, { + label: 'type', + kind: _types.CompletionItemKind.Function + }, { + label: 'interface', + kind: _types.CompletionItemKind.Function + }, { + label: 'union', + kind: _types.CompletionItemKind.Function + }, { + label: 'input', + kind: _types.CompletionItemKind.Function + }, { + label: 'scalar', + kind: _types.CompletionItemKind.Function + }, { + label: 'schema', + kind: _types.CompletionItemKind.Function + }]); +} +function getSuggestionsForExecutableDefinitions(token) { + return (0, _autocompleteUtils.hintList)(token, [{ + label: 'query', + kind: _types.CompletionItemKind.Function + }, { + label: 'mutation', + kind: _types.CompletionItemKind.Function + }, { + label: 'subscription', + kind: _types.CompletionItemKind.Function + }, { + label: 'fragment', + kind: _types.CompletionItemKind.Function + }, { + label: '{', + kind: _types.CompletionItemKind.Constructor + }]); +} +function getSuggestionsForExtensionDefinitions(token) { + return (0, _autocompleteUtils.hintList)(token, [{ + label: 'type', + kind: _types.CompletionItemKind.Function + }, { + label: 'interface', + kind: _types.CompletionItemKind.Function + }, { + label: 'union', + kind: _types.CompletionItemKind.Function + }, { + label: 'input', + kind: _types.CompletionItemKind.Function + }, { + label: 'scalar', + kind: _types.CompletionItemKind.Function + }, { + label: 'schema', + kind: _types.CompletionItemKind.Function + }]); +} +function getSuggestionsForFieldNames(token, typeInfo, options) { + var _a; + if (typeInfo.parentType) { + const { + parentType + } = typeInfo; + let fields = []; + if ('getFields' in parentType) { + fields = (0, _autocompleteUtils.objectValues)(parentType.getFields()); + } + if ((0, _graphql.isCompositeType)(parentType)) { + fields.push(_graphql.TypeNameMetaFieldDef); + } + if (parentType === ((_a = options === null || options === void 0 ? void 0 : options.schema) === null || _a === void 0 ? void 0 : _a.getQueryType())) { + fields.push(_graphql.SchemaMetaFieldDef, _graphql.TypeMetaFieldDef); + } + return (0, _autocompleteUtils.hintList)(token, fields.map((field, index) => { + var _a; + const suggestion = { + sortText: String(index) + field.name, + label: field.name, + detail: String(field.type), + documentation: (_a = field.description) !== null && _a !== void 0 ? _a : undefined, + deprecated: Boolean(field.deprecationReason), + isDeprecated: Boolean(field.deprecationReason), + deprecationReason: field.deprecationReason, + kind: _types.CompletionItemKind.Field, + type: field.type + }; + if (options === null || options === void 0 ? void 0 : options.fillLeafsOnComplete) { + const insertText = getInsertText(field); + if (insertText) { + suggestion.insertText = field.name + insertText; + suggestion.insertTextFormat = _types.InsertTextFormat.Snippet; + suggestion.command = SuggestionCommand; + } + } + return suggestion; + })); + } + return []; +} +function getSuggestionsForInputValues(token, typeInfo, queryText, schema) { + const namedInputType = (0, _graphql.getNamedType)(typeInfo.inputType); + const queryVariables = getVariableCompletions(queryText, schema, token).filter(v => v.detail === namedInputType.name); + if (namedInputType instanceof _graphql.GraphQLEnumType) { + const values = namedInputType.getValues(); + return (0, _autocompleteUtils.hintList)(token, values.map(value => { + var _a; + return { + label: value.name, + detail: String(namedInputType), + documentation: (_a = value.description) !== null && _a !== void 0 ? _a : undefined, + deprecated: Boolean(value.deprecationReason), + isDeprecated: Boolean(value.deprecationReason), + deprecationReason: value.deprecationReason, + kind: _types.CompletionItemKind.EnumMember, + type: namedInputType + }; + }).concat(queryVariables)); + } + if (namedInputType === _graphql.GraphQLBoolean) { + return (0, _autocompleteUtils.hintList)(token, queryVariables.concat([{ + label: 'true', + detail: String(_graphql.GraphQLBoolean), + documentation: 'Not false.', + kind: _types.CompletionItemKind.Variable, + type: _graphql.GraphQLBoolean + }, { + label: 'false', + detail: String(_graphql.GraphQLBoolean), + documentation: 'Not true.', + kind: _types.CompletionItemKind.Variable, + type: _graphql.GraphQLBoolean + }])); + } + return queryVariables; +} +function getSuggestionsForImplements(token, tokenState, schema, documentText, typeInfo) { + if (tokenState.needsSeparator) { + return []; + } + const typeMap = schema.getTypeMap(); + const schemaInterfaces = (0, _autocompleteUtils.objectValues)(typeMap).filter(_graphql.isInterfaceType); + const schemaInterfaceNames = schemaInterfaces.map(_ref => { + let { + name + } = _ref; + return name; + }); + const inlineInterfaces = new Set(); + runOnlineParser(documentText, (_, state) => { + var _a, _b, _c, _d, _e; + if (state.name) { + if (state.kind === _parser.RuleKinds.INTERFACE_DEF && !schemaInterfaceNames.includes(state.name)) { + inlineInterfaces.add(state.name); + } + if (state.kind === _parser.RuleKinds.NAMED_TYPE && ((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind) === _parser.RuleKinds.IMPLEMENTS) { + if (typeInfo.interfaceDef) { + const existingType = (_b = typeInfo.interfaceDef) === null || _b === void 0 ? void 0 : _b.getInterfaces().find(_ref2 => { + let { + name + } = _ref2; + return name === state.name; + }); + if (existingType) { + return; + } + const type = schema.getType(state.name); + const interfaceConfig = (_c = typeInfo.interfaceDef) === null || _c === void 0 ? void 0 : _c.toConfig(); + typeInfo.interfaceDef = new _graphql.GraphQLInterfaceType(Object.assign(Object.assign({}, interfaceConfig), { + interfaces: [...interfaceConfig.interfaces, type || new _graphql.GraphQLInterfaceType({ + name: state.name, + fields: {} + })] + })); + } else if (typeInfo.objectTypeDef) { + const existingType = (_d = typeInfo.objectTypeDef) === null || _d === void 0 ? void 0 : _d.getInterfaces().find(_ref3 => { + let { + name + } = _ref3; + return name === state.name; + }); + if (existingType) { + return; + } + const type = schema.getType(state.name); + const objectTypeConfig = (_e = typeInfo.objectTypeDef) === null || _e === void 0 ? void 0 : _e.toConfig(); + typeInfo.objectTypeDef = new _graphql.GraphQLObjectType(Object.assign(Object.assign({}, objectTypeConfig), { + interfaces: [...objectTypeConfig.interfaces, type || new _graphql.GraphQLInterfaceType({ + name: state.name, + fields: {} + })] + })); + } + } + } + }); + const currentTypeToExtend = typeInfo.interfaceDef || typeInfo.objectTypeDef; + const siblingInterfaces = (currentTypeToExtend === null || currentTypeToExtend === void 0 ? void 0 : currentTypeToExtend.getInterfaces()) || []; + const siblingInterfaceNames = siblingInterfaces.map(_ref4 => { + let { + name + } = _ref4; + return name; + }); + const possibleInterfaces = schemaInterfaces.concat([...inlineInterfaces].map(name => ({ + name + }))).filter(_ref5 => { + let { + name + } = _ref5; + return name !== (currentTypeToExtend === null || currentTypeToExtend === void 0 ? void 0 : currentTypeToExtend.name) && !siblingInterfaceNames.includes(name); + }); + return (0, _autocompleteUtils.hintList)(token, possibleInterfaces.map(type => { + const result = { + label: type.name, + kind: _types.CompletionItemKind.Interface, + type + }; + if (type === null || type === void 0 ? void 0 : type.description) { + result.documentation = type.description; + } + return result; + })); +} +function getSuggestionsForFragmentTypeConditions(token, typeInfo, schema, _kind) { + let possibleTypes; + if (typeInfo.parentType) { + if ((0, _graphql.isAbstractType)(typeInfo.parentType)) { + const abstractType = (0, _graphql.assertAbstractType)(typeInfo.parentType); + const possibleObjTypes = schema.getPossibleTypes(abstractType); + const possibleIfaceMap = Object.create(null); + for (const type of possibleObjTypes) { + for (const iface of type.getInterfaces()) { + possibleIfaceMap[iface.name] = iface; + } + } + possibleTypes = possibleObjTypes.concat((0, _autocompleteUtils.objectValues)(possibleIfaceMap)); + } else { + possibleTypes = [typeInfo.parentType]; + } + } else { + const typeMap = schema.getTypeMap(); + possibleTypes = (0, _autocompleteUtils.objectValues)(typeMap).filter(type => (0, _graphql.isCompositeType)(type) && !type.name.startsWith('__')); + } + return (0, _autocompleteUtils.hintList)(token, possibleTypes.map(type => { + const namedType = (0, _graphql.getNamedType)(type); + return { + label: String(type), + documentation: (namedType === null || namedType === void 0 ? void 0 : namedType.description) || '', + kind: _types.CompletionItemKind.Field + }; + })); +} +function getSuggestionsForFragmentSpread(token, typeInfo, schema, queryText, fragmentDefs) { + if (!queryText) { + return []; + } + const typeMap = schema.getTypeMap(); + const defState = (0, _autocompleteUtils.getDefinitionState)(token.state); + const fragments = getFragmentDefinitions(queryText); + if (fragmentDefs && fragmentDefs.length > 0) { + fragments.push(...fragmentDefs); + } + const relevantFrags = fragments.filter(frag => typeMap[frag.typeCondition.name.value] && !(defState && defState.kind === _parser.RuleKinds.FRAGMENT_DEFINITION && defState.name === frag.name.value) && (0, _graphql.isCompositeType)(typeInfo.parentType) && (0, _graphql.isCompositeType)(typeMap[frag.typeCondition.name.value]) && (0, _graphql.doTypesOverlap)(schema, typeInfo.parentType, typeMap[frag.typeCondition.name.value])); + return (0, _autocompleteUtils.hintList)(token, relevantFrags.map(frag => ({ + label: frag.name.value, + detail: String(typeMap[frag.typeCondition.name.value]), + documentation: `fragment ${frag.name.value} on ${frag.typeCondition.name.value}`, + kind: _types.CompletionItemKind.Field, + type: typeMap[frag.typeCondition.name.value] + }))); +} +const getParentDefinition = (state, kind) => { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; + if (((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind) === kind) { + return state.prevState; + } + if (((_c = (_b = state.prevState) === null || _b === void 0 ? void 0 : _b.prevState) === null || _c === void 0 ? void 0 : _c.kind) === kind) { + return state.prevState.prevState; + } + if (((_f = (_e = (_d = state.prevState) === null || _d === void 0 ? void 0 : _d.prevState) === null || _e === void 0 ? void 0 : _e.prevState) === null || _f === void 0 ? void 0 : _f.kind) === kind) { + return state.prevState.prevState.prevState; + } + if (((_k = (_j = (_h = (_g = state.prevState) === null || _g === void 0 ? void 0 : _g.prevState) === null || _h === void 0 ? void 0 : _h.prevState) === null || _j === void 0 ? void 0 : _j.prevState) === null || _k === void 0 ? void 0 : _k.kind) === kind) { + return state.prevState.prevState.prevState.prevState; + } +}; +function getVariableCompletions(queryText, schema, token) { + let variableName = null; + let variableType; + const definitions = Object.create({}); + runOnlineParser(queryText, (_, state) => { + if ((state === null || state === void 0 ? void 0 : state.kind) === _parser.RuleKinds.VARIABLE && state.name) { + variableName = state.name; + } + if ((state === null || state === void 0 ? void 0 : state.kind) === _parser.RuleKinds.NAMED_TYPE && variableName) { + const parentDefinition = getParentDefinition(state, _parser.RuleKinds.TYPE); + if (parentDefinition === null || parentDefinition === void 0 ? void 0 : parentDefinition.type) { + variableType = schema.getType(parentDefinition === null || parentDefinition === void 0 ? void 0 : parentDefinition.type); + } + } + if (variableName && variableType && !definitions[variableName]) { + definitions[variableName] = { + detail: variableType.toString(), + insertText: token.string === '$' ? variableName : '$' + variableName, + label: variableName, + type: variableType, + kind: _types.CompletionItemKind.Variable + }; + variableName = null; + variableType = null; + } + }); + return (0, _autocompleteUtils.objectValues)(definitions); +} +function getFragmentDefinitions(queryText) { + const fragmentDefs = []; + runOnlineParser(queryText, (_, state) => { + if (state.kind === _parser.RuleKinds.FRAGMENT_DEFINITION && state.name && state.type) { + fragmentDefs.push({ + kind: _parser.RuleKinds.FRAGMENT_DEFINITION, + name: { + kind: _graphql.Kind.NAME, + value: state.name + }, + selectionSet: { + kind: _parser.RuleKinds.SELECTION_SET, + selections: [] + }, + typeCondition: { + kind: _parser.RuleKinds.NAMED_TYPE, + name: { + kind: _graphql.Kind.NAME, + value: state.type + } + } + }); + } + }); + return fragmentDefs; +} +function getSuggestionsForVariableDefinition(token, schema, _kind) { + const inputTypeMap = schema.getTypeMap(); + const inputTypes = (0, _autocompleteUtils.objectValues)(inputTypeMap).filter(_graphql.isInputType); + return (0, _autocompleteUtils.hintList)(token, inputTypes.map(type => ({ + label: type.name, + documentation: type.description, + kind: _types.CompletionItemKind.Variable + }))); +} +function getSuggestionsForDirective(token, state, schema, _kind) { + var _a; + if ((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind) { + const directives = schema.getDirectives().filter(directive => canUseDirective(state.prevState, directive)); + return (0, _autocompleteUtils.hintList)(token, directives.map(directive => ({ + label: directive.name, + documentation: directive.description || '', + kind: _types.CompletionItemKind.Function + }))); + } + return []; +} +function getTokenAtPosition(queryText, cursor) { + let offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + let styleAtCursor = null; + let stateAtCursor = null; + let stringAtCursor = null; + const token = runOnlineParser(queryText, (stream, state, style, index) => { + if (index !== cursor.line || stream.getCurrentPosition() + offset < cursor.character + 1) { + return; + } + styleAtCursor = style; + stateAtCursor = Object.assign({}, state); + stringAtCursor = stream.current(); + return 'BREAK'; + }); + return { + start: token.start, + end: token.end, + string: stringAtCursor || token.string, + state: stateAtCursor || token.state, + style: styleAtCursor || token.style + }; +} +function runOnlineParser(queryText, callback) { + const lines = queryText.split('\n'); + const parser = (0, _parser.onlineParser)(); + let state = parser.startState(); + let style = ''; + let stream = new _parser.CharacterStream(''); + for (let i = 0; i < lines.length; i++) { + stream = new _parser.CharacterStream(lines[i]); + while (!stream.eol()) { + style = parser.token(stream, state); + const code = callback(stream, state, style, i); + if (code === 'BREAK') { + break; + } + } + callback(stream, state, style, i); + if (!state.kind) { + state = parser.startState(); + } + } + return { + start: stream.getStartOfToken(), + end: stream.getCurrentPosition(), + string: stream.current(), + state, + style + }; +} +function canUseDirective(state, directive) { + if (!(state === null || state === void 0 ? void 0 : state.kind)) { + return false; + } + const { + kind, + prevState + } = state; + const { + locations + } = directive; + switch (kind) { + case _parser.RuleKinds.QUERY: + return locations.includes(_graphql.DirectiveLocation.QUERY); + case _parser.RuleKinds.MUTATION: + return locations.includes(_graphql.DirectiveLocation.MUTATION); + case _parser.RuleKinds.SUBSCRIPTION: + return locations.includes(_graphql.DirectiveLocation.SUBSCRIPTION); + case _parser.RuleKinds.FIELD: + case _parser.RuleKinds.ALIASED_FIELD: + return locations.includes(_graphql.DirectiveLocation.FIELD); + case _parser.RuleKinds.FRAGMENT_DEFINITION: + return locations.includes(_graphql.DirectiveLocation.FRAGMENT_DEFINITION); + case _parser.RuleKinds.FRAGMENT_SPREAD: + return locations.includes(_graphql.DirectiveLocation.FRAGMENT_SPREAD); + case _parser.RuleKinds.INLINE_FRAGMENT: + return locations.includes(_graphql.DirectiveLocation.INLINE_FRAGMENT); + case _parser.RuleKinds.SCHEMA_DEF: + return locations.includes(_graphql.DirectiveLocation.SCHEMA); + case _parser.RuleKinds.SCALAR_DEF: + return locations.includes(_graphql.DirectiveLocation.SCALAR); + case _parser.RuleKinds.OBJECT_TYPE_DEF: + return locations.includes(_graphql.DirectiveLocation.OBJECT); + case _parser.RuleKinds.FIELD_DEF: + return locations.includes(_graphql.DirectiveLocation.FIELD_DEFINITION); + case _parser.RuleKinds.INTERFACE_DEF: + return locations.includes(_graphql.DirectiveLocation.INTERFACE); + case _parser.RuleKinds.UNION_DEF: + return locations.includes(_graphql.DirectiveLocation.UNION); + case _parser.RuleKinds.ENUM_DEF: + return locations.includes(_graphql.DirectiveLocation.ENUM); + case _parser.RuleKinds.ENUM_VALUE: + return locations.includes(_graphql.DirectiveLocation.ENUM_VALUE); + case _parser.RuleKinds.INPUT_DEF: + return locations.includes(_graphql.DirectiveLocation.INPUT_OBJECT); + case _parser.RuleKinds.INPUT_VALUE_DEF: + const prevStateKind = prevState === null || prevState === void 0 ? void 0 : prevState.kind; + switch (prevStateKind) { + case _parser.RuleKinds.ARGUMENTS_DEF: + return locations.includes(_graphql.DirectiveLocation.ARGUMENT_DEFINITION); + case _parser.RuleKinds.INPUT_DEF: + return locations.includes(_graphql.DirectiveLocation.INPUT_FIELD_DEFINITION); + } + } + return false; +} +function getTypeInfo(schema, tokenState) { + let argDef; + let argDefs; + let directiveDef; + let enumValue; + let fieldDef; + let inputType; + let objectTypeDef; + let objectFieldDefs; + let parentType; + let type; + let interfaceDef; + (0, _autocompleteUtils.forEachState)(tokenState, state => { + var _a; + switch (state.kind) { + case _parser.RuleKinds.QUERY: + case 'ShortQuery': + type = schema.getQueryType(); + break; + case _parser.RuleKinds.MUTATION: + type = schema.getMutationType(); + break; + case _parser.RuleKinds.SUBSCRIPTION: + type = schema.getSubscriptionType(); + break; + case _parser.RuleKinds.INLINE_FRAGMENT: + case _parser.RuleKinds.FRAGMENT_DEFINITION: + if (state.type) { + type = schema.getType(state.type); + } + break; + case _parser.RuleKinds.FIELD: + case _parser.RuleKinds.ALIASED_FIELD: + { + if (!type || !state.name) { + fieldDef = null; + } else { + fieldDef = parentType ? (0, _autocompleteUtils.getFieldDef)(schema, parentType, state.name) : null; + type = fieldDef ? fieldDef.type : null; + } + break; + } + case _parser.RuleKinds.SELECTION_SET: + parentType = (0, _graphql.getNamedType)(type); + break; + case _parser.RuleKinds.DIRECTIVE: + directiveDef = state.name ? schema.getDirective(state.name) : null; + break; + case _parser.RuleKinds.INTERFACE_DEF: + if (state.name) { + objectTypeDef = null; + interfaceDef = new _graphql.GraphQLInterfaceType({ + name: state.name, + interfaces: [], + fields: {} + }); + } + break; + case _parser.RuleKinds.OBJECT_TYPE_DEF: + if (state.name) { + interfaceDef = null; + objectTypeDef = new _graphql.GraphQLObjectType({ + name: state.name, + interfaces: [], + fields: {} + }); + } + break; + case _parser.RuleKinds.ARGUMENTS: + { + if (state.prevState) { + switch (state.prevState.kind) { + case _parser.RuleKinds.FIELD: + argDefs = fieldDef && fieldDef.args; + break; + case _parser.RuleKinds.DIRECTIVE: + argDefs = directiveDef && directiveDef.args; + break; + case _parser.RuleKinds.ALIASED_FIELD: + { + const name = (_a = state.prevState) === null || _a === void 0 ? void 0 : _a.name; + if (!name) { + argDefs = null; + break; + } + const field = parentType ? (0, _autocompleteUtils.getFieldDef)(schema, parentType, name) : null; + if (!field) { + argDefs = null; + break; + } + argDefs = field.args; + break; + } + default: + argDefs = null; + break; + } + } else { + argDefs = null; + } + break; + } + case _parser.RuleKinds.ARGUMENT: + if (argDefs) { + for (let i = 0; i < argDefs.length; i++) { + if (argDefs[i].name === state.name) { + argDef = argDefs[i]; + break; + } + } + } + inputType = argDef === null || argDef === void 0 ? void 0 : argDef.type; + break; + case _parser.RuleKinds.ENUM_VALUE: + const enumType = (0, _graphql.getNamedType)(inputType); + enumValue = enumType instanceof _graphql.GraphQLEnumType ? enumType.getValues().find(val => val.value === state.name) : null; + break; + case _parser.RuleKinds.LIST_VALUE: + const nullableType = (0, _graphql.getNullableType)(inputType); + inputType = nullableType instanceof _graphql.GraphQLList ? nullableType.ofType : null; + break; + case _parser.RuleKinds.OBJECT_VALUE: + const objectType = (0, _graphql.getNamedType)(inputType); + objectFieldDefs = objectType instanceof _graphql.GraphQLInputObjectType ? objectType.getFields() : null; + break; + case _parser.RuleKinds.OBJECT_FIELD: + const objectField = state.name && objectFieldDefs ? objectFieldDefs[state.name] : null; + inputType = objectField === null || objectField === void 0 ? void 0 : objectField.type; + break; + case _parser.RuleKinds.NAMED_TYPE: + if (state.name) { + type = schema.getType(state.name); + } + break; + } + }); + return { + argDef, + argDefs, + directiveDef, + enumValue, + fieldDef, + inputType, + objectFieldDefs, + parentType, + type, + interfaceDef, + objectTypeDef + }; +} +var GraphQLDocumentMode; +exports.GraphQLDocumentMode = GraphQLDocumentMode; +(function (GraphQLDocumentMode) { + GraphQLDocumentMode["TYPE_SYSTEM"] = "TYPE_SYSTEM"; + GraphQLDocumentMode["EXECUTABLE"] = "EXECUTABLE"; +})(GraphQLDocumentMode || (exports.GraphQLDocumentMode = GraphQLDocumentMode = {})); +function getDocumentMode(documentText, uri) { + if (uri === null || uri === void 0 ? void 0 : uri.endsWith('.graphqls')) { + return GraphQLDocumentMode.TYPE_SYSTEM; + } + return hasTypeSystemDefinitions(documentText) ? GraphQLDocumentMode.TYPE_SYSTEM : GraphQLDocumentMode.EXECUTABLE; +} +function unwrapType(state) { + if (state.prevState && state.kind && [_parser.RuleKinds.NAMED_TYPE, _parser.RuleKinds.LIST_TYPE, _parser.RuleKinds.TYPE, _parser.RuleKinds.NON_NULL_TYPE].includes(state.kind)) { + return unwrapType(state.prevState); + } + return state; +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/interface/getDefinition.js": +/*!*********************************************************************!*\ + !*** ../../graphql-language-service/esm/interface/getDefinition.js ***! + \*********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.LANGUAGE = void 0; +exports.getDefinitionQueryResultForDefinitionNode = getDefinitionQueryResultForDefinitionNode; +exports.getDefinitionQueryResultForField = getDefinitionQueryResultForField; +exports.getDefinitionQueryResultForFragmentSpread = getDefinitionQueryResultForFragmentSpread; +exports.getDefinitionQueryResultForNamedType = getDefinitionQueryResultForNamedType; +var _utils = __webpack_require__(/*! ../utils */ "../../graphql-language-service/esm/utils/index.js"); +var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const LANGUAGE = 'GraphQL'; +exports.LANGUAGE = LANGUAGE; +function assert(value, message) { + if (!value) { + throw new Error(message); + } +} +function getRange(text, node) { + const location = node.loc; + assert(location, 'Expected ASTNode to have a location.'); + return (0, _utils.locToRange)(text, location); +} +function getPosition(text, node) { + const location = node.loc; + assert(location, 'Expected ASTNode to have a location.'); + return (0, _utils.offsetToPosition)(text, location.start); +} +function getDefinitionQueryResultForNamedType(text, node, dependencies) { + return __awaiter(this, void 0, void 0, function* () { + const name = node.name.value; + const defNodes = dependencies.filter(_ref => { + let { + definition + } = _ref; + return definition.name && definition.name.value === name; + }); + if (defNodes.length === 0) { + throw new Error(`Definition not found for GraphQL type ${name}`); + } + const definitions = defNodes.map(_ref2 => { + let { + filePath, + content, + definition + } = _ref2; + return getDefinitionForNodeDefinition(filePath || '', content, definition); + }); + return { + definitions, + queryRange: definitions.map(_ => getRange(text, node)) + }; + }); +} +function getDefinitionQueryResultForField(fieldName, typeName, dependencies) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const defNodes = dependencies.filter(_ref3 => { + let { + definition + } = _ref3; + return definition.name && definition.name.value === typeName; + }); + if (defNodes.length === 0) { + throw new Error(`Definition not found for GraphQL type ${typeName}`); + } + const definitions = []; + for (const { + filePath, + content, + definition + } of defNodes) { + const fieldDefinition = (_a = definition.fields) === null || _a === void 0 ? void 0 : _a.find(item => item.name.value === fieldName); + if (fieldDefinition == null) { + continue; + } + definitions.push(getDefinitionForFieldDefinition(filePath || '', content, fieldDefinition)); + } + return { + definitions, + queryRange: [] + }; + }); +} +function getDefinitionQueryResultForFragmentSpread(text, fragment, dependencies) { + return __awaiter(this, void 0, void 0, function* () { + const name = fragment.name.value; + const defNodes = dependencies.filter(_ref4 => { + let { + definition + } = _ref4; + return definition.name.value === name; + }); + if (defNodes.length === 0) { + throw new Error(`Definition not found for GraphQL fragment ${name}`); + } + const definitions = defNodes.map(_ref5 => { + let { + filePath, + content, + definition + } = _ref5; + return getDefinitionForFragmentDefinition(filePath || '', content, definition); + }); + return { + definitions, + queryRange: definitions.map(_ => getRange(text, fragment)) + }; + }); +} +function getDefinitionQueryResultForDefinitionNode(path, text, definition) { + return { + definitions: [getDefinitionForFragmentDefinition(path, text, definition)], + queryRange: definition.name ? [getRange(text, definition.name)] : [] + }; +} +function getDefinitionForFragmentDefinition(path, text, definition) { + const { + name + } = definition; + if (!name) { + throw new Error('Expected ASTNode to have a Name.'); + } + return { + path, + position: getPosition(text, definition), + range: getRange(text, definition), + name: name.value || '', + language: LANGUAGE, + projectRoot: path + }; +} +function getDefinitionForNodeDefinition(path, text, definition) { + const { + name + } = definition; + assert(name, 'Expected ASTNode to have a Name.'); + return { + path, + position: getPosition(text, definition), + range: getRange(text, definition), + name: name.value || '', + language: LANGUAGE, + projectRoot: path + }; +} +function getDefinitionForFieldDefinition(path, text, definition) { + const { + name + } = definition; + assert(name, 'Expected ASTNode to have a Name.'); + return { + path, + position: getPosition(text, definition), + range: getRange(text, definition), + name: name.value || '', + language: LANGUAGE, + projectRoot: path + }; +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/interface/getDiagnostics.js": +/*!**********************************************************************!*\ + !*** ../../graphql-language-service/esm/interface/getDiagnostics.js ***! + \**********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SEVERITY = exports.DIAGNOSTIC_SEVERITY = void 0; +exports.getDiagnostics = getDiagnostics; +exports.getRange = getRange; +exports.validateQuery = validateQuery; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +var _parser = __webpack_require__(/*! ../parser */ "../../graphql-language-service/esm/parser/index.js"); +var _utils = __webpack_require__(/*! ../utils */ "../../graphql-language-service/esm/utils/index.js"); +const SEVERITY = { + Error: 'Error', + Warning: 'Warning', + Information: 'Information', + Hint: 'Hint' +}; +exports.SEVERITY = SEVERITY; +const DIAGNOSTIC_SEVERITY = { + [SEVERITY.Error]: 1, + [SEVERITY.Warning]: 2, + [SEVERITY.Information]: 3, + [SEVERITY.Hint]: 4 +}; +exports.DIAGNOSTIC_SEVERITY = DIAGNOSTIC_SEVERITY; +const invariant = (condition, message) => { + if (!condition) { + throw new Error(message); + } +}; +function getDiagnostics(query) { + let schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + let customRules = arguments.length > 2 ? arguments[2] : undefined; + let isRelayCompatMode = arguments.length > 3 ? arguments[3] : undefined; + let externalFragments = arguments.length > 4 ? arguments[4] : undefined; + var _a, _b; + let ast = null; + let fragments = ''; + if (externalFragments) { + fragments = typeof externalFragments === 'string' ? externalFragments : externalFragments.reduce((acc, node) => acc + (0, _graphql.print)(node) + '\n\n', ''); + } + const enhancedQuery = fragments ? `${query}\n\n${fragments}` : query; + try { + ast = (0, _graphql.parse)(enhancedQuery); + } catch (error) { + if (error instanceof _graphql.GraphQLError) { + const range = getRange((_b = (_a = error.locations) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : { + line: 0, + column: 0 + }, enhancedQuery); + return [{ + severity: DIAGNOSTIC_SEVERITY.Error, + message: error.message, + source: 'GraphQL: Syntax', + range + }]; + } + throw error; + } + return validateQuery(ast, schema, customRules, isRelayCompatMode); +} +function validateQuery(ast) { + let schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + let customRules = arguments.length > 2 ? arguments[2] : undefined; + let isRelayCompatMode = arguments.length > 3 ? arguments[3] : undefined; + if (!schema) { + return []; + } + const validationErrorAnnotations = (0, _utils.validateWithCustomRules)(schema, ast, customRules, isRelayCompatMode).flatMap(error => annotations(error, DIAGNOSTIC_SEVERITY.Error, 'Validation')); + const deprecationWarningAnnotations = (0, _graphql.validate)(schema, ast, [_graphql.NoDeprecatedCustomRule]).flatMap(error => annotations(error, DIAGNOSTIC_SEVERITY.Warning, 'Deprecation')); + return validationErrorAnnotations.concat(deprecationWarningAnnotations); +} +function annotations(error, severity, type) { + if (!error.nodes) { + return []; + } + const highlightedNodes = []; + for (const [i, node] of error.nodes.entries()) { + const highlightNode = node.kind !== 'Variable' && 'name' in node && node.name !== undefined ? node.name : 'variable' in node && node.variable !== undefined ? node.variable : node; + if (highlightNode) { + invariant(error.locations, 'GraphQL validation error requires locations.'); + const loc = error.locations[i]; + const highlightLoc = getLocation(highlightNode); + const end = loc.column + (highlightLoc.end - highlightLoc.start); + highlightedNodes.push({ + source: `GraphQL: ${type}`, + message: error.message, + severity, + range: new _utils.Range(new _utils.Position(loc.line - 1, loc.column - 1), new _utils.Position(loc.line - 1, end)) + }); + } + } + return highlightedNodes; +} +function getRange(location, queryText) { + const parser = (0, _parser.onlineParser)(); + const state = parser.startState(); + const lines = queryText.split('\n'); + invariant(lines.length >= location.line, 'Query text must have more lines than where the error happened'); + let stream = null; + for (let i = 0; i < location.line; i++) { + stream = new _parser.CharacterStream(lines[i]); + while (!stream.eol()) { + const style = parser.token(stream, state); + if (style === 'invalidchar') { + break; + } + } + } + invariant(stream, 'Expected Parser stream to be available.'); + const line = location.line - 1; + const start = stream.getStartOfToken(); + const end = stream.getCurrentPosition(); + return new _utils.Range(new _utils.Position(line, start), new _utils.Position(line, end)); +} +function getLocation(node) { + const typeCastedNode = node; + const location = typeCastedNode.loc; + invariant(location, 'Expected ASTNode to have a location.'); + return location; +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/interface/getHoverInformation.js": +/*!***************************************************************************!*\ + !*** ../../graphql-language-service/esm/interface/getHoverInformation.js ***! + \***************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getHoverInformation = getHoverInformation; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +var _getAutocompleteSuggestions = __webpack_require__(/*! ./getAutocompleteSuggestions */ "../../graphql-language-service/esm/interface/getAutocompleteSuggestions.js"); +function getHoverInformation(schema, queryText, cursor, contextToken, config) { + const token = contextToken || (0, _getAutocompleteSuggestions.getTokenAtPosition)(queryText, cursor); + if (!schema || !token || !token.state) { + return ''; + } + const { + kind, + step + } = token.state; + const typeInfo = (0, _getAutocompleteSuggestions.getTypeInfo)(schema, token.state); + const options = Object.assign(Object.assign({}, config), { + schema + }); + if (kind === 'Field' && step === 0 && typeInfo.fieldDef || kind === 'AliasedField' && step === 2 && typeInfo.fieldDef) { + const into = []; + renderMdCodeStart(into, options); + renderField(into, typeInfo, options); + renderMdCodeEnd(into, options); + renderDescription(into, options, typeInfo.fieldDef); + return into.join('').trim(); + } + if (kind === 'Directive' && step === 1 && typeInfo.directiveDef) { + const into = []; + renderMdCodeStart(into, options); + renderDirective(into, typeInfo, options); + renderMdCodeEnd(into, options); + renderDescription(into, options, typeInfo.directiveDef); + return into.join('').trim(); + } + if (kind === 'Argument' && step === 0 && typeInfo.argDef) { + const into = []; + renderMdCodeStart(into, options); + renderArg(into, typeInfo, options); + renderMdCodeEnd(into, options); + renderDescription(into, options, typeInfo.argDef); + return into.join('').trim(); + } + if (kind === 'EnumValue' && typeInfo.enumValue && 'description' in typeInfo.enumValue) { + const into = []; + renderMdCodeStart(into, options); + renderEnumValue(into, typeInfo, options); + renderMdCodeEnd(into, options); + renderDescription(into, options, typeInfo.enumValue); + return into.join('').trim(); + } + if (kind === 'NamedType' && typeInfo.type && 'description' in typeInfo.type) { + const into = []; + renderMdCodeStart(into, options); + renderType(into, typeInfo, options, typeInfo.type); + renderMdCodeEnd(into, options); + renderDescription(into, options, typeInfo.type); + return into.join('').trim(); + } + return ''; +} +function renderMdCodeStart(into, options) { + if (options.useMarkdown) { + text(into, '```graphql\n'); + } +} +function renderMdCodeEnd(into, options) { + if (options.useMarkdown) { + text(into, '\n```'); + } +} +function renderField(into, typeInfo, options) { + renderQualifiedField(into, typeInfo, options); + renderTypeAnnotation(into, typeInfo, options, typeInfo.type); +} +function renderQualifiedField(into, typeInfo, options) { + if (!typeInfo.fieldDef) { + return; + } + const fieldName = typeInfo.fieldDef.name; + if (fieldName.slice(0, 2) !== '__') { + renderType(into, typeInfo, options, typeInfo.parentType); + text(into, '.'); + } + text(into, fieldName); +} +function renderDirective(into, typeInfo, _options) { + if (!typeInfo.directiveDef) { + return; + } + const name = '@' + typeInfo.directiveDef.name; + text(into, name); +} +function renderArg(into, typeInfo, options) { + if (typeInfo.directiveDef) { + renderDirective(into, typeInfo, options); + } else if (typeInfo.fieldDef) { + renderQualifiedField(into, typeInfo, options); + } + if (!typeInfo.argDef) { + return; + } + const { + name + } = typeInfo.argDef; + text(into, '('); + text(into, name); + renderTypeAnnotation(into, typeInfo, options, typeInfo.inputType); + text(into, ')'); +} +function renderTypeAnnotation(into, typeInfo, options, t) { + text(into, ': '); + renderType(into, typeInfo, options, t); +} +function renderEnumValue(into, typeInfo, options) { + if (!typeInfo.enumValue) { + return; + } + const { + name + } = typeInfo.enumValue; + renderType(into, typeInfo, options, typeInfo.inputType); + text(into, '.'); + text(into, name); +} +function renderType(into, typeInfo, options, t) { + if (!t) { + return; + } + if (t instanceof _graphql.GraphQLNonNull) { + renderType(into, typeInfo, options, t.ofType); + text(into, '!'); + } else if (t instanceof _graphql.GraphQLList) { + text(into, '['); + renderType(into, typeInfo, options, t.ofType); + text(into, ']'); + } else { + text(into, t.name); + } +} +function renderDescription(into, options, def) { + if (!def) { + return; + } + const description = typeof def.description === 'string' ? def.description : null; + if (description) { + text(into, '\n\n'); + text(into, description); + } + renderDeprecation(into, options, def); +} +function renderDeprecation(into, _options, def) { + if (!def) { + return; + } + const reason = def.deprecationReason || null; + if (!reason) { + return; + } + text(into, '\n\n'); + text(into, 'Deprecated: '); + text(into, reason); +} +function text(into, content) { + into.push(content); +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/interface/getOutline.js": +/*!******************************************************************!*\ + !*** ../../graphql-language-service/esm/interface/getOutline.js ***! + \******************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getOutline = getOutline; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +var _utils = __webpack_require__(/*! ../utils */ "../../graphql-language-service/esm/utils/index.js"); +const { + INLINE_FRAGMENT +} = _graphql.Kind; +const OUTLINEABLE_KINDS = { + Field: true, + OperationDefinition: true, + Document: true, + SelectionSet: true, + Name: true, + FragmentDefinition: true, + FragmentSpread: true, + InlineFragment: true, + ObjectTypeDefinition: true, + InputObjectTypeDefinition: true, + InterfaceTypeDefinition: true, + EnumTypeDefinition: true, + EnumValueDefinition: true, + InputValueDefinition: true, + FieldDefinition: true +}; +function getOutline(documentText) { + let ast; + try { + ast = (0, _graphql.parse)(documentText); + } catch (_a) { + return null; + } + const visitorFns = outlineTreeConverter(documentText); + const outlineTrees = (0, _graphql.visit)(ast, { + leave(node) { + if (visitorFns !== undefined && node.kind in visitorFns) { + return visitorFns[node.kind](node); + } + return null; + } + }); + return { + outlineTrees + }; +} +function outlineTreeConverter(docText) { + const meta = node => { + return { + representativeName: node.name, + startPosition: (0, _utils.offsetToPosition)(docText, node.loc.start), + endPosition: (0, _utils.offsetToPosition)(docText, node.loc.end), + kind: node.kind, + children: node.selectionSet || node.fields || node.values || node.arguments || [] + }; + }; + return { + Field(node) { + const tokenizedText = node.alias ? [buildToken('plain', node.alias), buildToken('plain', ': ')] : []; + tokenizedText.push(buildToken('plain', node.name)); + return Object.assign({ + tokenizedText + }, meta(node)); + }, + OperationDefinition: node => Object.assign({ + tokenizedText: [buildToken('keyword', node.operation), buildToken('whitespace', ' '), buildToken('class-name', node.name)] + }, meta(node)), + Document: node => node.definitions, + SelectionSet: node => concatMap(node.selections, child => { + return child.kind === INLINE_FRAGMENT ? child.selectionSet : child; + }), + Name: node => node.value, + FragmentDefinition: node => Object.assign({ + tokenizedText: [buildToken('keyword', 'fragment'), buildToken('whitespace', ' '), buildToken('class-name', node.name)] + }, meta(node)), + InterfaceTypeDefinition: node => Object.assign({ + tokenizedText: [buildToken('keyword', 'interface'), buildToken('whitespace', ' '), buildToken('class-name', node.name)] + }, meta(node)), + EnumTypeDefinition: node => Object.assign({ + tokenizedText: [buildToken('keyword', 'enum'), buildToken('whitespace', ' '), buildToken('class-name', node.name)] + }, meta(node)), + EnumValueDefinition: node => Object.assign({ + tokenizedText: [buildToken('plain', node.name)] + }, meta(node)), + ObjectTypeDefinition: node => Object.assign({ + tokenizedText: [buildToken('keyword', 'type'), buildToken('whitespace', ' '), buildToken('class-name', node.name)] + }, meta(node)), + InputObjectTypeDefinition: node => Object.assign({ + tokenizedText: [buildToken('keyword', 'input'), buildToken('whitespace', ' '), buildToken('class-name', node.name)] + }, meta(node)), + FragmentSpread: node => Object.assign({ + tokenizedText: [buildToken('plain', '...'), buildToken('class-name', node.name)] + }, meta(node)), + InputValueDefinition(node) { + return Object.assign({ + tokenizedText: [buildToken('plain', node.name)] + }, meta(node)); + }, + FieldDefinition(node) { + return Object.assign({ + tokenizedText: [buildToken('plain', node.name)] + }, meta(node)); + }, + InlineFragment: node => node.selectionSet + }; +} +function buildToken(kind, value) { + return { + kind, + value + }; +} +function concatMap(arr, fn) { + const res = []; + for (let i = 0; i < arr.length; i++) { + const x = fn(arr[i], i); + if (Array.isArray(x)) { + res.push(...x); + } else { + res.push(x); + } + } + return res; +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/interface/index.js": +/*!*************************************************************!*\ + !*** ../../graphql-language-service/esm/interface/index.js ***! + \*************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var _exportNames = { + getOutline: true, + getHoverInformation: true +}; +Object.defineProperty(exports, "getHoverInformation", ({ + enumerable: true, + get: function () { + return _getHoverInformation.getHoverInformation; + } +})); +Object.defineProperty(exports, "getOutline", ({ + enumerable: true, + get: function () { + return _getOutline.getOutline; + } +})); +var _autocompleteUtils = __webpack_require__(/*! ./autocompleteUtils */ "../../graphql-language-service/esm/interface/autocompleteUtils.js"); +Object.keys(_autocompleteUtils).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _autocompleteUtils[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _autocompleteUtils[key]; + } + }); +}); +var _getAutocompleteSuggestions = __webpack_require__(/*! ./getAutocompleteSuggestions */ "../../graphql-language-service/esm/interface/getAutocompleteSuggestions.js"); +Object.keys(_getAutocompleteSuggestions).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _getAutocompleteSuggestions[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _getAutocompleteSuggestions[key]; + } + }); +}); +var _getDefinition = __webpack_require__(/*! ./getDefinition */ "../../graphql-language-service/esm/interface/getDefinition.js"); +Object.keys(_getDefinition).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _getDefinition[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _getDefinition[key]; + } + }); +}); +var _getDiagnostics = __webpack_require__(/*! ./getDiagnostics */ "../../graphql-language-service/esm/interface/getDiagnostics.js"); +Object.keys(_getDiagnostics).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _getDiagnostics[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _getDiagnostics[key]; + } + }); +}); +var _getOutline = __webpack_require__(/*! ./getOutline */ "../../graphql-language-service/esm/interface/getOutline.js"); +var _getHoverInformation = __webpack_require__(/*! ./getHoverInformation */ "../../graphql-language-service/esm/interface/getHoverInformation.js"); + +/***/ }), + +/***/ "../../graphql-language-service/esm/parser/CharacterStream.js": +/*!********************************************************************!*\ + !*** ../../graphql-language-service/esm/parser/CharacterStream.js ***! + \********************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +class CharacterStream { + constructor(sourceText) { + var _this = this; + this._start = 0; + this._pos = 0; + this.getStartOfToken = () => this._start; + this.getCurrentPosition = () => this._pos; + this.eol = () => this._sourceText.length === this._pos; + this.sol = () => this._pos === 0; + this.peek = () => { + return this._sourceText.charAt(this._pos) || null; + }; + this.next = () => { + const char = this._sourceText.charAt(this._pos); + this._pos++; + return char; + }; + this.eat = pattern => { + const isMatched = this._testNextCharacter(pattern); + if (isMatched) { + this._start = this._pos; + this._pos++; + return this._sourceText.charAt(this._pos - 1); + } + return undefined; + }; + this.eatWhile = match => { + let isMatched = this._testNextCharacter(match); + let didEat = false; + if (isMatched) { + didEat = isMatched; + this._start = this._pos; + } + while (isMatched) { + this._pos++; + isMatched = this._testNextCharacter(match); + didEat = true; + } + return didEat; + }; + this.eatSpace = () => this.eatWhile(/[\s\u00a0]/); + this.skipToEnd = () => { + this._pos = this._sourceText.length; + }; + this.skipTo = position => { + this._pos = position; + }; + this.match = function (pattern) { + let consume = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + let caseFold = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + let token = null; + let match = null; + if (typeof pattern === 'string') { + const regex = new RegExp(pattern, caseFold ? 'i' : 'g'); + match = regex.test(_this._sourceText.slice(_this._pos, _this._pos + pattern.length)); + token = pattern; + } else if (pattern instanceof RegExp) { + match = _this._sourceText.slice(_this._pos).match(pattern); + token = match === null || match === void 0 ? void 0 : match[0]; + } + if (match != null && (typeof pattern === 'string' || match instanceof Array && _this._sourceText.startsWith(match[0], _this._pos))) { + if (consume) { + _this._start = _this._pos; + if (token && token.length) { + _this._pos += token.length; + } + } + return match; + } + return false; + }; + this.backUp = num => { + this._pos -= num; + }; + this.column = () => this._pos; + this.indentation = () => { + const match = this._sourceText.match(/\s*/); + let indent = 0; + if (match && match.length !== 0) { + const whiteSpaces = match[0]; + let pos = 0; + while (whiteSpaces.length > pos) { + if (whiteSpaces.charCodeAt(pos) === 9) { + indent += 2; + } else { + indent++; + } + pos++; + } + } + return indent; + }; + this.current = () => this._sourceText.slice(this._start, this._pos); + this._sourceText = sourceText; + } + _testNextCharacter(pattern) { + const character = this._sourceText.charAt(this._pos); + let isMatched = false; + if (typeof pattern === 'string') { + isMatched = character === pattern; + } else { + isMatched = pattern instanceof RegExp ? pattern.test(character) : pattern(character); + } + return isMatched; + } +} +exports["default"] = CharacterStream; + +/***/ }), + +/***/ "../../graphql-language-service/esm/parser/RuleHelpers.js": +/*!****************************************************************!*\ + !*** ../../graphql-language-service/esm/parser/RuleHelpers.js ***! + \****************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.butNot = butNot; +exports.list = list; +exports.opt = opt; +exports.p = p; +exports.t = t; +function opt(ofRule) { + return { + ofRule + }; +} +function list(ofRule, separator) { + return { + ofRule, + isList: true, + separator + }; +} +function butNot(rule, exclusions) { + const ruleMatch = rule.match; + rule.match = token => { + let check = false; + if (ruleMatch) { + check = ruleMatch(token); + } + return check && exclusions.every(exclusion => exclusion.match && !exclusion.match(token)); + }; + return rule; +} +function t(kind, style) { + return { + style, + match: token => token.kind === kind + }; +} +function p(value, style) { + return { + style: style || 'punctuation', + match: token => token.kind === 'Punctuation' && token.value === value + }; +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/parser/Rules.js": +/*!**********************************************************!*\ + !*** ../../graphql-language-service/esm/parser/Rules.js ***! + \**********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isIgnored = exports.ParseRules = exports.LexRules = void 0; +var _RuleHelpers = __webpack_require__(/*! ./RuleHelpers */ "../../graphql-language-service/esm/parser/RuleHelpers.js"); +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +const isIgnored = ch => ch === ' ' || ch === '\t' || ch === ',' || ch === '\n' || ch === '\r' || ch === '\uFEFF' || ch === '\u00A0'; +exports.isIgnored = isIgnored; +const LexRules = { + Name: /^[_A-Za-z][_0-9A-Za-z]*/, + Punctuation: /^(?:!|\$|\(|\)|\.\.\.|:|=|&|@|\[|]|\{|\||\})/, + Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/, + String: /^(?:"""(?:\\"""|[^"]|"[^"]|""[^"])*(?:""")?|"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?)/, + Comment: /^#.*/ +}; +exports.LexRules = LexRules; +const ParseRules = { + Document: [(0, _RuleHelpers.list)('Definition')], + Definition(token) { + switch (token.value) { + case '{': + return 'ShortQuery'; + case 'query': + return 'Query'; + case 'mutation': + return 'Mutation'; + case 'subscription': + return 'Subscription'; + case 'fragment': + return _graphql.Kind.FRAGMENT_DEFINITION; + case 'schema': + return 'SchemaDef'; + case 'scalar': + return 'ScalarDef'; + case 'type': + return 'ObjectTypeDef'; + case 'interface': + return 'InterfaceDef'; + case 'union': + return 'UnionDef'; + case 'enum': + return 'EnumDef'; + case 'input': + return 'InputDef'; + case 'extend': + return 'ExtendDef'; + case 'directive': + return 'DirectiveDef'; + } + }, + ShortQuery: ['SelectionSet'], + Query: [word('query'), (0, _RuleHelpers.opt)(name('def')), (0, _RuleHelpers.opt)('VariableDefinitions'), (0, _RuleHelpers.list)('Directive'), 'SelectionSet'], + Mutation: [word('mutation'), (0, _RuleHelpers.opt)(name('def')), (0, _RuleHelpers.opt)('VariableDefinitions'), (0, _RuleHelpers.list)('Directive'), 'SelectionSet'], + Subscription: [word('subscription'), (0, _RuleHelpers.opt)(name('def')), (0, _RuleHelpers.opt)('VariableDefinitions'), (0, _RuleHelpers.list)('Directive'), 'SelectionSet'], + VariableDefinitions: [(0, _RuleHelpers.p)('('), (0, _RuleHelpers.list)('VariableDefinition'), (0, _RuleHelpers.p)(')')], + VariableDefinition: ['Variable', (0, _RuleHelpers.p)(':'), 'Type', (0, _RuleHelpers.opt)('DefaultValue')], + Variable: [(0, _RuleHelpers.p)('$', 'variable'), name('variable')], + DefaultValue: [(0, _RuleHelpers.p)('='), 'Value'], + SelectionSet: [(0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('Selection'), (0, _RuleHelpers.p)('}')], + Selection(token, stream) { + return token.value === '...' ? stream.match(/[\s\u00a0,]*(on\b|@|{)/, false) ? 'InlineFragment' : 'FragmentSpread' : stream.match(/[\s\u00a0,]*:/, false) ? 'AliasedField' : 'Field'; + }, + AliasedField: [name('property'), (0, _RuleHelpers.p)(':'), name('qualifier'), (0, _RuleHelpers.opt)('Arguments'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.opt)('SelectionSet')], + Field: [name('property'), (0, _RuleHelpers.opt)('Arguments'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.opt)('SelectionSet')], + Arguments: [(0, _RuleHelpers.p)('('), (0, _RuleHelpers.list)('Argument'), (0, _RuleHelpers.p)(')')], + Argument: [name('attribute'), (0, _RuleHelpers.p)(':'), 'Value'], + FragmentSpread: [(0, _RuleHelpers.p)('...'), name('def'), (0, _RuleHelpers.list)('Directive')], + InlineFragment: [(0, _RuleHelpers.p)('...'), (0, _RuleHelpers.opt)('TypeCondition'), (0, _RuleHelpers.list)('Directive'), 'SelectionSet'], + FragmentDefinition: [word('fragment'), (0, _RuleHelpers.opt)((0, _RuleHelpers.butNot)(name('def'), [word('on')])), 'TypeCondition', (0, _RuleHelpers.list)('Directive'), 'SelectionSet'], + TypeCondition: [word('on'), 'NamedType'], + Value(token) { + switch (token.kind) { + case 'Number': + return 'NumberValue'; + case 'String': + return 'StringValue'; + case 'Punctuation': + switch (token.value) { + case '[': + return 'ListValue'; + case '{': + return 'ObjectValue'; + case '$': + return 'Variable'; + case '&': + return 'NamedType'; + } + return null; + case 'Name': + switch (token.value) { + case 'true': + case 'false': + return 'BooleanValue'; + } + if (token.value === 'null') { + return 'NullValue'; + } + return 'EnumValue'; + } + }, + NumberValue: [(0, _RuleHelpers.t)('Number', 'number')], + StringValue: [{ + style: 'string', + match: token => token.kind === 'String', + update(state, token) { + if (token.value.startsWith('"""')) { + state.inBlockstring = !token.value.slice(3).endsWith('"""'); + } + } + }], + BooleanValue: [(0, _RuleHelpers.t)('Name', 'builtin')], + NullValue: [(0, _RuleHelpers.t)('Name', 'keyword')], + EnumValue: [name('string-2')], + ListValue: [(0, _RuleHelpers.p)('['), (0, _RuleHelpers.list)('Value'), (0, _RuleHelpers.p)(']')], + ObjectValue: [(0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('ObjectField'), (0, _RuleHelpers.p)('}')], + ObjectField: [name('attribute'), (0, _RuleHelpers.p)(':'), 'Value'], + Type(token) { + return token.value === '[' ? 'ListType' : 'NonNullType'; + }, + ListType: [(0, _RuleHelpers.p)('['), 'Type', (0, _RuleHelpers.p)(']'), (0, _RuleHelpers.opt)((0, _RuleHelpers.p)('!'))], + NonNullType: ['NamedType', (0, _RuleHelpers.opt)((0, _RuleHelpers.p)('!'))], + NamedType: [type('atom')], + Directive: [(0, _RuleHelpers.p)('@', 'meta'), name('meta'), (0, _RuleHelpers.opt)('Arguments')], + DirectiveDef: [word('directive'), (0, _RuleHelpers.p)('@', 'meta'), name('meta'), (0, _RuleHelpers.opt)('ArgumentsDef'), word('on'), (0, _RuleHelpers.list)('DirectiveLocation', (0, _RuleHelpers.p)('|'))], + InterfaceDef: [word('interface'), name('atom'), (0, _RuleHelpers.opt)('Implements'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('FieldDef'), (0, _RuleHelpers.p)('}')], + Implements: [word('implements'), (0, _RuleHelpers.list)('NamedType', (0, _RuleHelpers.p)('&'))], + DirectiveLocation: [name('string-2')], + SchemaDef: [word('schema'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('OperationTypeDef'), (0, _RuleHelpers.p)('}')], + OperationTypeDef: [name('keyword'), (0, _RuleHelpers.p)(':'), name('atom')], + ScalarDef: [word('scalar'), name('atom'), (0, _RuleHelpers.list)('Directive')], + ObjectTypeDef: [word('type'), name('atom'), (0, _RuleHelpers.opt)('Implements'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('FieldDef'), (0, _RuleHelpers.p)('}')], + FieldDef: [name('property'), (0, _RuleHelpers.opt)('ArgumentsDef'), (0, _RuleHelpers.p)(':'), 'Type', (0, _RuleHelpers.list)('Directive')], + ArgumentsDef: [(0, _RuleHelpers.p)('('), (0, _RuleHelpers.list)('InputValueDef'), (0, _RuleHelpers.p)(')')], + InputValueDef: [name('attribute'), (0, _RuleHelpers.p)(':'), 'Type', (0, _RuleHelpers.opt)('DefaultValue'), (0, _RuleHelpers.list)('Directive')], + UnionDef: [word('union'), name('atom'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('='), (0, _RuleHelpers.list)('UnionMember', (0, _RuleHelpers.p)('|'))], + UnionMember: ['NamedType'], + EnumDef: [word('enum'), name('atom'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('EnumValueDef'), (0, _RuleHelpers.p)('}')], + EnumValueDef: [name('string-2'), (0, _RuleHelpers.list)('Directive')], + InputDef: [word('input'), name('atom'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('InputValueDef'), (0, _RuleHelpers.p)('}')], + ExtendDef: [word('extend'), 'ExtensionDefinition'], + ExtensionDefinition(token) { + switch (token.value) { + case 'schema': + return _graphql.Kind.SCHEMA_EXTENSION; + case 'scalar': + return _graphql.Kind.SCALAR_TYPE_EXTENSION; + case 'type': + return _graphql.Kind.OBJECT_TYPE_EXTENSION; + case 'interface': + return _graphql.Kind.INTERFACE_TYPE_EXTENSION; + case 'union': + return _graphql.Kind.UNION_TYPE_EXTENSION; + case 'enum': + return _graphql.Kind.ENUM_TYPE_EXTENSION; + case 'input': + return _graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION; + } + }, + [_graphql.Kind.SCHEMA_EXTENSION]: ['SchemaDef'], + [_graphql.Kind.SCALAR_TYPE_EXTENSION]: ['ScalarDef'], + [_graphql.Kind.OBJECT_TYPE_EXTENSION]: ['ObjectTypeDef'], + [_graphql.Kind.INTERFACE_TYPE_EXTENSION]: ['InterfaceDef'], + [_graphql.Kind.UNION_TYPE_EXTENSION]: ['UnionDef'], + [_graphql.Kind.ENUM_TYPE_EXTENSION]: ['EnumDef'], + [_graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION]: ['InputDef'] +}; +exports.ParseRules = ParseRules; +function word(value) { + return { + style: 'keyword', + match: token => token.kind === 'Name' && token.value === value + }; +} +function name(style) { + return { + style, + match: token => token.kind === 'Name', + update(state, token) { + state.name = token.value; + } + }; +} +function type(style) { + return { + style, + match: token => token.kind === 'Name', + update(state, token) { + var _a; + if ((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.prevState) { + state.name = token.value; + state.prevState.prevState.type = token.value; + } + } + }; +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/parser/index.js": +/*!**********************************************************!*\ + !*** ../../graphql-language-service/esm/parser/index.js ***! + \**********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var _exportNames = { + CharacterStream: true, + LexRules: true, + ParseRules: true, + isIgnored: true, + butNot: true, + list: true, + opt: true, + p: true, + t: true, + onlineParser: true +}; +Object.defineProperty(exports, "CharacterStream", ({ + enumerable: true, + get: function () { + return _CharacterStream.default; + } +})); +Object.defineProperty(exports, "LexRules", ({ + enumerable: true, + get: function () { + return _Rules.LexRules; + } +})); +Object.defineProperty(exports, "ParseRules", ({ + enumerable: true, + get: function () { + return _Rules.ParseRules; + } +})); +Object.defineProperty(exports, "butNot", ({ + enumerable: true, + get: function () { + return _RuleHelpers.butNot; + } +})); +Object.defineProperty(exports, "isIgnored", ({ + enumerable: true, + get: function () { + return _Rules.isIgnored; + } +})); +Object.defineProperty(exports, "list", ({ + enumerable: true, + get: function () { + return _RuleHelpers.list; + } +})); +Object.defineProperty(exports, "onlineParser", ({ + enumerable: true, + get: function () { + return _onlineParser.default; + } +})); +Object.defineProperty(exports, "opt", ({ + enumerable: true, + get: function () { + return _RuleHelpers.opt; + } +})); +Object.defineProperty(exports, "p", ({ + enumerable: true, + get: function () { + return _RuleHelpers.p; + } +})); +Object.defineProperty(exports, "t", ({ + enumerable: true, + get: function () { + return _RuleHelpers.t; + } +})); +var _CharacterStream = _interopRequireDefault(__webpack_require__(/*! ./CharacterStream */ "../../graphql-language-service/esm/parser/CharacterStream.js")); +var _Rules = __webpack_require__(/*! ./Rules */ "../../graphql-language-service/esm/parser/Rules.js"); +var _RuleHelpers = __webpack_require__(/*! ./RuleHelpers */ "../../graphql-language-service/esm/parser/RuleHelpers.js"); +var _onlineParser = _interopRequireDefault(__webpack_require__(/*! ./onlineParser */ "../../graphql-language-service/esm/parser/onlineParser.js")); +var _types = __webpack_require__(/*! ./types */ "../../graphql-language-service/esm/parser/types.js"); +Object.keys(_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _types[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _types[key]; + } + }); +}); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/***/ }), + +/***/ "../../graphql-language-service/esm/parser/onlineParser.js": +/*!*****************************************************************!*\ + !*** ../../graphql-language-service/esm/parser/onlineParser.js ***! + \*****************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = onlineParser; +var _Rules = __webpack_require__(/*! ./Rules */ "../../graphql-language-service/esm/parser/Rules.js"); +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +function onlineParser() { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { + eatWhitespace: stream => stream.eatWhile(_Rules.isIgnored), + lexRules: _Rules.LexRules, + parseRules: _Rules.ParseRules, + editorConfig: {} + }; + return { + startState() { + const initialState = { + level: 0, + step: 0, + name: null, + kind: null, + type: null, + rule: null, + needsSeparator: false, + prevState: null + }; + pushRule(options.parseRules, initialState, _graphql.Kind.DOCUMENT); + return initialState; + }, + token(stream, state) { + return getToken(stream, state, options); + } + }; +} +function getToken(stream, state, options) { + var _a; + if (state.inBlockstring) { + if (stream.match(/.*"""/)) { + state.inBlockstring = false; + return 'string'; + } + stream.skipToEnd(); + return 'string'; + } + const { + lexRules, + parseRules, + eatWhitespace, + editorConfig + } = options; + if (state.rule && state.rule.length === 0) { + popRule(state); + } else if (state.needsAdvance) { + state.needsAdvance = false; + advanceRule(state, true); + } + if (stream.sol()) { + const tabSize = (editorConfig === null || editorConfig === void 0 ? void 0 : editorConfig.tabSize) || 2; + state.indentLevel = Math.floor(stream.indentation() / tabSize); + } + if (eatWhitespace(stream)) { + return 'ws'; + } + const token = lex(lexRules, stream); + if (!token) { + const matchedSomething = stream.match(/\S+/); + if (!matchedSomething) { + stream.match(/\s/); + } + pushRule(SpecialParseRules, state, 'Invalid'); + return 'invalidchar'; + } + if (token.kind === 'Comment') { + pushRule(SpecialParseRules, state, 'Comment'); + return 'comment'; + } + const backupState = assign({}, state); + if (token.kind === 'Punctuation') { + if (/^[{([]/.test(token.value)) { + if (state.indentLevel !== undefined) { + state.levels = (state.levels || []).concat(state.indentLevel + 1); + } + } else if (/^[})\]]/.test(token.value)) { + const levels = state.levels = (state.levels || []).slice(0, -1); + if (state.indentLevel && levels.length > 0 && levels.at(-1) < state.indentLevel) { + state.indentLevel = levels.at(-1); + } + } + } + while (state.rule) { + let expected = typeof state.rule === 'function' ? state.step === 0 ? state.rule(token, stream) : null : state.rule[state.step]; + if (state.needsSeparator) { + expected = expected === null || expected === void 0 ? void 0 : expected.separator; + } + if (expected) { + if (expected.ofRule) { + expected = expected.ofRule; + } + if (typeof expected === 'string') { + pushRule(parseRules, state, expected); + continue; + } + if ((_a = expected.match) === null || _a === void 0 ? void 0 : _a.call(expected, token)) { + if (expected.update) { + expected.update(state, token); + } + if (token.kind === 'Punctuation') { + advanceRule(state, true); + } else { + state.needsAdvance = true; + } + return expected.style; + } + } + unsuccessful(state); + } + assign(state, backupState); + pushRule(SpecialParseRules, state, 'Invalid'); + return 'invalidchar'; +} +function assign(to, from) { + const keys = Object.keys(from); + for (let i = 0; i < keys.length; i++) { + to[keys[i]] = from[keys[i]]; + } + return to; +} +const SpecialParseRules = { + Invalid: [], + Comment: [] +}; +function pushRule(rules, state, ruleKind) { + if (!rules[ruleKind]) { + throw new TypeError('Unknown rule: ' + ruleKind); + } + state.prevState = Object.assign({}, state); + state.kind = ruleKind; + state.name = null; + state.type = null; + state.rule = rules[ruleKind]; + state.step = 0; + state.needsSeparator = false; +} +function popRule(state) { + if (!state.prevState) { + return; + } + state.kind = state.prevState.kind; + state.name = state.prevState.name; + state.type = state.prevState.type; + state.rule = state.prevState.rule; + state.step = state.prevState.step; + state.needsSeparator = state.prevState.needsSeparator; + state.prevState = state.prevState.prevState; +} +function advanceRule(state, successful) { + var _a; + if (isList(state) && state.rule) { + const step = state.rule[state.step]; + if (step.separator) { + const { + separator + } = step; + state.needsSeparator = !state.needsSeparator; + if (!state.needsSeparator && separator.ofRule) { + return; + } + } + if (successful) { + return; + } + } + state.needsSeparator = false; + state.step++; + while (state.rule && !(Array.isArray(state.rule) && state.step < state.rule.length)) { + popRule(state); + if (state.rule) { + if (isList(state)) { + if ((_a = state.rule) === null || _a === void 0 ? void 0 : _a[state.step].separator) { + state.needsSeparator = !state.needsSeparator; + } + } else { + state.needsSeparator = false; + state.step++; + } + } + } +} +function isList(state) { + const step = Array.isArray(state.rule) && typeof state.rule[state.step] !== 'string' && state.rule[state.step]; + return step && step.isList; +} +function unsuccessful(state) { + while (state.rule && !(Array.isArray(state.rule) && state.rule[state.step].ofRule)) { + popRule(state); + } + if (state.rule) { + advanceRule(state, false); + } +} +function lex(lexRules, stream) { + const kinds = Object.keys(lexRules); + for (let i = 0; i < kinds.length; i++) { + const match = stream.match(lexRules[kinds[i]]); + if (match && match instanceof Array) { + return { + kind: kinds[i], + value: match[0] + }; + } + } +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/parser/types.js": +/*!**********************************************************!*\ + !*** ../../graphql-language-service/esm/parser/types.js ***! + \**********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.RuleKinds = exports.AdditionalRuleKinds = void 0; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +const AdditionalRuleKinds = { + ALIASED_FIELD: 'AliasedField', + ARGUMENTS: 'Arguments', + SHORT_QUERY: 'ShortQuery', + QUERY: 'Query', + MUTATION: 'Mutation', + SUBSCRIPTION: 'Subscription', + TYPE_CONDITION: 'TypeCondition', + INVALID: 'Invalid', + COMMENT: 'Comment', + SCHEMA_DEF: 'SchemaDef', + SCALAR_DEF: 'ScalarDef', + OBJECT_TYPE_DEF: 'ObjectTypeDef', + OBJECT_VALUE: 'ObjectValue', + LIST_VALUE: 'ListValue', + INTERFACE_DEF: 'InterfaceDef', + UNION_DEF: 'UnionDef', + ENUM_DEF: 'EnumDef', + ENUM_VALUE: 'EnumValue', + FIELD_DEF: 'FieldDef', + INPUT_DEF: 'InputDef', + INPUT_VALUE_DEF: 'InputValueDef', + ARGUMENTS_DEF: 'ArgumentsDef', + EXTEND_DEF: 'ExtendDef', + EXTENSION_DEFINITION: 'ExtensionDefinition', + DIRECTIVE_DEF: 'DirectiveDef', + IMPLEMENTS: 'Implements', + VARIABLE_DEFINITIONS: 'VariableDefinitions', + TYPE: 'Type' +}; +exports.AdditionalRuleKinds = AdditionalRuleKinds; +const RuleKinds = Object.assign(Object.assign({}, _graphql.Kind), AdditionalRuleKinds); +exports.RuleKinds = RuleKinds; + +/***/ }), + +/***/ "../../graphql-language-service/esm/types.js": +/*!***************************************************!*\ + !*** ../../graphql-language-service/esm/types.js ***! + \***************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FileChangeTypeKind = exports.CompletionItemKind = void 0; +Object.defineProperty(exports, "InsertTextFormat", ({ + enumerable: true, + get: function () { + return _vscodeLanguageserverTypes.InsertTextFormat; + } +})); +var _vscodeLanguageserverTypes = __webpack_require__(/*! vscode-languageserver-types */ "../../../node_modules/vscode-languageserver-types/lib/esm/main.js"); +const FileChangeTypeKind = { + Created: 1, + Changed: 2, + Deleted: 3 +}; +exports.FileChangeTypeKind = FileChangeTypeKind; +var CompletionItemKind; +exports.CompletionItemKind = CompletionItemKind; +(function (CompletionItemKind) { + CompletionItemKind.Text = 1; + CompletionItemKind.Method = 2; + CompletionItemKind.Function = 3; + CompletionItemKind.Constructor = 4; + CompletionItemKind.Field = 5; + CompletionItemKind.Variable = 6; + CompletionItemKind.Class = 7; + CompletionItemKind.Interface = 8; + CompletionItemKind.Module = 9; + CompletionItemKind.Property = 10; + CompletionItemKind.Unit = 11; + CompletionItemKind.Value = 12; + CompletionItemKind.Enum = 13; + CompletionItemKind.Keyword = 14; + CompletionItemKind.Snippet = 15; + CompletionItemKind.Color = 16; + CompletionItemKind.File = 17; + CompletionItemKind.Reference = 18; + CompletionItemKind.Folder = 19; + CompletionItemKind.EnumMember = 20; + CompletionItemKind.Constant = 21; + CompletionItemKind.Struct = 22; + CompletionItemKind.Event = 23; + CompletionItemKind.Operator = 24; + CompletionItemKind.TypeParameter = 25; +})(CompletionItemKind || (exports.CompletionItemKind = CompletionItemKind = {})); + +/***/ }), + +/***/ "../../graphql-language-service/esm/utils/Range.js": +/*!*********************************************************!*\ + !*** ../../graphql-language-service/esm/utils/Range.js ***! + \*********************************************************/ +/***/ (function(__unused_webpack_module, exports) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Range = exports.Position = void 0; +exports.locToRange = locToRange; +exports.offsetToPosition = offsetToPosition; +class Range { + constructor(start, end) { + this.containsPosition = position => { + if (this.start.line === position.line) { + return this.start.character <= position.character; + } + if (this.end.line === position.line) { + return this.end.character >= position.character; + } + return this.start.line <= position.line && this.end.line >= position.line; + }; + this.start = start; + this.end = end; + } + setStart(line, character) { + this.start = new Position(line, character); + } + setEnd(line, character) { + this.end = new Position(line, character); + } +} +exports.Range = Range; +class Position { + constructor(line, character) { + this.lessThanOrEqualTo = position => this.line < position.line || this.line === position.line && this.character <= position.character; + this.line = line; + this.character = character; + } + setLine(line) { + this.line = line; + } + setCharacter(character) { + this.character = character; + } +} +exports.Position = Position; +function offsetToPosition(text, loc) { + const EOL = '\n'; + const buf = text.slice(0, loc); + const lines = buf.split(EOL).length - 1; + const lastLineIndex = buf.lastIndexOf(EOL); + return new Position(lines, loc - lastLineIndex - 1); +} +function locToRange(text, loc) { + const start = offsetToPosition(text, loc.start); + const end = offsetToPosition(text, loc.end); + return new Range(start, end); +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/utils/collectVariables.js": +/*!********************************************************************!*\ + !*** ../../graphql-language-service/esm/utils/collectVariables.js ***! + \********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.collectVariables = collectVariables; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +function collectVariables(schema, documentAST) { + const variableToType = Object.create(null); + for (const definition of documentAST.definitions) { + if (definition.kind === 'OperationDefinition') { + const { + variableDefinitions + } = definition; + if (variableDefinitions) { + for (const { + variable, + type + } of variableDefinitions) { + const inputType = (0, _graphql.typeFromAST)(schema, type); + if (inputType) { + variableToType[variable.name.value] = inputType; + } else if (type.kind === _graphql.Kind.NAMED_TYPE && type.name.value === 'Float') { + variableToType[variable.name.value] = _graphql.GraphQLFloat; + } + } + } + } + } + return variableToType; +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/utils/fragmentDependencies.js": +/*!************************************************************************!*\ + !*** ../../graphql-language-service/esm/utils/fragmentDependencies.js ***! + \************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getFragmentDependenciesForAST = exports.getFragmentDependencies = void 0; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +var _nullthrows = _interopRequireDefault(__webpack_require__(/*! nullthrows */ "../../../node_modules/nullthrows/nullthrows.js")); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +const getFragmentDependencies = (operationString, fragmentDefinitions) => { + if (!fragmentDefinitions) { + return []; + } + let parsedOperation; + try { + parsedOperation = (0, _graphql.parse)(operationString); + } catch (_a) { + return []; + } + return getFragmentDependenciesForAST(parsedOperation, fragmentDefinitions); +}; +exports.getFragmentDependencies = getFragmentDependencies; +const getFragmentDependenciesForAST = (parsedOperation, fragmentDefinitions) => { + if (!fragmentDefinitions) { + return []; + } + const existingFrags = new Map(); + const referencedFragNames = new Set(); + (0, _graphql.visit)(parsedOperation, { + FragmentDefinition(node) { + existingFrags.set(node.name.value, true); + }, + FragmentSpread(node) { + if (!referencedFragNames.has(node.name.value)) { + referencedFragNames.add(node.name.value); + } + } + }); + const asts = new Set(); + for (const name of referencedFragNames) { + if (!existingFrags.has(name) && fragmentDefinitions.has(name)) { + asts.add((0, _nullthrows.default)(fragmentDefinitions.get(name))); + } + } + const referencedFragments = []; + for (const ast of asts) { + (0, _graphql.visit)(ast, { + FragmentSpread(node) { + if (!referencedFragNames.has(node.name.value) && fragmentDefinitions.get(node.name.value)) { + asts.add((0, _nullthrows.default)(fragmentDefinitions.get(node.name.value))); + referencedFragNames.add(node.name.value); + } + } + }); + if (!existingFrags.has(ast.name.value)) { + referencedFragments.push(ast); + } + } + return referencedFragments; +}; +exports.getFragmentDependenciesForAST = getFragmentDependenciesForAST; + +/***/ }), + +/***/ "../../graphql-language-service/esm/utils/getASTNodeAtPosition.js": +/*!************************************************************************!*\ + !*** ../../graphql-language-service/esm/utils/getASTNodeAtPosition.js ***! + \************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getASTNodeAtPosition = getASTNodeAtPosition; +exports.pointToOffset = pointToOffset; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +function getASTNodeAtPosition(query, ast, point) { + const offset = pointToOffset(query, point); + let nodeContainingPosition; + (0, _graphql.visit)(ast, { + enter(node) { + if (node.kind !== 'Name' && node.loc && node.loc.start <= offset && offset <= node.loc.end) { + nodeContainingPosition = node; + } else { + return false; + } + }, + leave(node) { + if (node.loc && node.loc.start <= offset && offset <= node.loc.end) { + return false; + } + } + }); + return nodeContainingPosition; +} +function pointToOffset(text, point) { + const linesUntilPosition = text.split('\n').slice(0, point.line); + return point.character + linesUntilPosition.map(line => line.length + 1).reduce((a, b) => a + b, 0); +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/utils/getOperationFacts.js": +/*!*********************************************************************!*\ + !*** ../../graphql-language-service/esm/utils/getOperationFacts.js ***! + \*********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = getOperationFacts; +exports.getOperationASTFacts = getOperationASTFacts; +exports.getQueryFacts = void 0; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +var _collectVariables = __webpack_require__(/*! ./collectVariables */ "../../graphql-language-service/esm/utils/collectVariables.js"); +function getOperationASTFacts(documentAST, schema) { + const variableToType = schema ? (0, _collectVariables.collectVariables)(schema, documentAST) : undefined; + const operations = []; + (0, _graphql.visit)(documentAST, { + OperationDefinition(node) { + operations.push(node); + } + }); + return { + variableToType, + operations + }; +} +function getOperationFacts(schema, documentString) { + if (!documentString) { + return; + } + try { + const documentAST = (0, _graphql.parse)(documentString); + return Object.assign(Object.assign({}, getOperationASTFacts(documentAST, schema)), { + documentAST + }); + } catch (_a) { + return; + } +} +const getQueryFacts = getOperationFacts; +exports.getQueryFacts = getQueryFacts; + +/***/ }), + +/***/ "../../graphql-language-service/esm/utils/getVariablesJSONSchema.js": +/*!**************************************************************************!*\ + !*** ../../graphql-language-service/esm/utils/getVariablesJSONSchema.js ***! + \**************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.defaultJSONSchemaOptions = void 0; +exports.getVariablesJSONSchema = getVariablesJSONSchema; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +const defaultJSONSchemaOptions = { + useMarkdownDescription: false +}; +exports.defaultJSONSchemaOptions = defaultJSONSchemaOptions; +function text(into, newText) { + into.push(newText); +} +function renderType(into, t) { + if ((0, _graphql.isNonNullType)(t)) { + renderType(into, t.ofType); + text(into, '!'); + } else if ((0, _graphql.isListType)(t)) { + text(into, '['); + renderType(into, t.ofType); + text(into, ']'); + } else { + text(into, t.name); + } +} +function renderTypeToString(t, useMarkdown) { + const into = []; + if (useMarkdown) { + text(into, '```graphql\n'); + } + renderType(into, t); + if (useMarkdown) { + text(into, '\n```'); + } + return into.join(''); +} +const scalarTypesMap = { + Int: 'integer', + String: 'string', + Float: 'number', + ID: 'string', + Boolean: 'boolean', + DateTime: 'string' +}; +class Marker { + constructor() { + this.set = new Set(); + } + mark(name) { + if (this.set.has(name)) { + return false; + } + this.set.add(name); + return true; + } +} +function getJSONSchemaFromGraphQLType(type, options) { + let required = false; + let definition = Object.create(null); + const definitions = Object.create(null); + if ('defaultValue' in type && type.defaultValue !== undefined) { + definition.default = type.defaultValue; + } + if ((0, _graphql.isEnumType)(type)) { + definition.type = 'string'; + definition.enum = type.getValues().map(val => val.name); + } + if ((0, _graphql.isScalarType)(type) && scalarTypesMap[type.name]) { + definition.type = scalarTypesMap[type.name]; + } + if ((0, _graphql.isListType)(type)) { + definition.type = 'array'; + const { + definition: def, + definitions: defs + } = getJSONSchemaFromGraphQLType(type.ofType, options); + if (def.$ref) { + definition.items = { + $ref: def.$ref + }; + } else { + definition.items = def; + } + if (defs) { + for (const defName of Object.keys(defs)) { + definitions[defName] = defs[defName]; + } + } + } + if ((0, _graphql.isNonNullType)(type)) { + required = true; + const { + definition: def, + definitions: defs + } = getJSONSchemaFromGraphQLType(type.ofType, options); + definition = def; + if (defs) { + for (const defName of Object.keys(defs)) { + definitions[defName] = defs[defName]; + } + } + } + if ((0, _graphql.isInputObjectType)(type)) { + definition.$ref = `#/definitions/${type.name}`; + if (options === null || options === void 0 ? void 0 : options.definitionMarker.mark(type.name)) { + const fields = type.getFields(); + const fieldDef = { + type: 'object', + properties: {}, + required: [] + }; + if (type.description) { + fieldDef.description = type.description + '\n' + renderTypeToString(type); + if (options === null || options === void 0 ? void 0 : options.useMarkdownDescription) { + fieldDef.markdownDescription = type.description + '\n' + renderTypeToString(type, true); + } + } else { + fieldDef.description = renderTypeToString(type); + if (options === null || options === void 0 ? void 0 : options.useMarkdownDescription) { + fieldDef.markdownDescription = renderTypeToString(type, true); + } + } + for (const fieldName of Object.keys(fields)) { + const field = fields[fieldName]; + const { + required: fieldRequired, + definition: typeDefinition, + definitions: typeDefinitions + } = getJSONSchemaFromGraphQLType(field.type, options); + const { + definition: fieldDefinition + } = getJSONSchemaFromGraphQLType(field, options); + fieldDef.properties[fieldName] = Object.assign(Object.assign({}, typeDefinition), fieldDefinition); + const renderedField = renderTypeToString(field.type); + fieldDef.properties[fieldName].description = field.description ? field.description + '\n' + renderedField : renderedField; + if (options === null || options === void 0 ? void 0 : options.useMarkdownDescription) { + const renderedFieldMarkdown = renderTypeToString(field.type, true); + fieldDef.properties[fieldName].markdownDescription = field.description ? field.description + '\n' + renderedFieldMarkdown : renderedFieldMarkdown; + } + if (fieldRequired) { + fieldDef.required.push(fieldName); + } + if (typeDefinitions) { + for (const [defName, value] of Object.entries(typeDefinitions)) { + definitions[defName] = value; + } + } + } + definitions[type.name] = fieldDef; + } + } + if ('description' in type && !(0, _graphql.isScalarType)(type) && type.description && !definition.description) { + definition.description = type.description + '\n' + renderTypeToString(type); + if (options === null || options === void 0 ? void 0 : options.useMarkdownDescription) { + definition.markdownDescription = type.description + '\n' + renderTypeToString(type, true); + } + } else { + definition.description = renderTypeToString(type); + if (options === null || options === void 0 ? void 0 : options.useMarkdownDescription) { + definition.markdownDescription = renderTypeToString(type, true); + } + } + return { + required, + definition, + definitions + }; +} +function getVariablesJSONSchema(variableToType, options) { + var _a; + const jsonSchema = { + $schema: 'https://json-schema.org/draft/2020-12/schema', + type: 'object', + properties: {}, + required: [] + }; + const runtimeOptions = Object.assign(Object.assign({}, options), { + definitionMarker: new Marker() + }); + if (variableToType) { + for (const [variableName, type] of Object.entries(variableToType)) { + const { + definition, + required, + definitions + } = getJSONSchemaFromGraphQLType(type, runtimeOptions); + jsonSchema.properties[variableName] = definition; + if (required) { + (_a = jsonSchema.required) === null || _a === void 0 ? void 0 : _a.push(variableName); + } + if (definitions) { + jsonSchema.definitions = Object.assign(Object.assign({}, jsonSchema === null || jsonSchema === void 0 ? void 0 : jsonSchema.definitions), definitions); + } + } + } + return jsonSchema; +} + +/***/ }), + +/***/ "../../graphql-language-service/esm/utils/index.js": +/*!*********************************************************!*\ + !*** ../../graphql-language-service/esm/utils/index.js ***! + \*********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "Position", ({ + enumerable: true, + get: function () { + return _Range.Position; + } +})); +Object.defineProperty(exports, "Range", ({ + enumerable: true, + get: function () { + return _Range.Range; + } +})); +Object.defineProperty(exports, "collectVariables", ({ + enumerable: true, + get: function () { + return _collectVariables.collectVariables; + } +})); +Object.defineProperty(exports, "getASTNodeAtPosition", ({ + enumerable: true, + get: function () { + return _getASTNodeAtPosition.getASTNodeAtPosition; + } +})); +Object.defineProperty(exports, "getFragmentDependencies", ({ + enumerable: true, + get: function () { + return _fragmentDependencies.getFragmentDependencies; + } +})); +Object.defineProperty(exports, "getFragmentDependenciesForAST", ({ + enumerable: true, + get: function () { + return _fragmentDependencies.getFragmentDependenciesForAST; + } +})); +Object.defineProperty(exports, "getOperationASTFacts", ({ + enumerable: true, + get: function () { + return _getOperationFacts.getOperationASTFacts; + } +})); +Object.defineProperty(exports, "getOperationFacts", ({ + enumerable: true, + get: function () { + return _getOperationFacts.default; + } +})); +Object.defineProperty(exports, "getQueryFacts", ({ + enumerable: true, + get: function () { + return _getOperationFacts.getQueryFacts; + } +})); +Object.defineProperty(exports, "getVariablesJSONSchema", ({ + enumerable: true, + get: function () { + return _getVariablesJSONSchema.getVariablesJSONSchema; + } +})); +Object.defineProperty(exports, "locToRange", ({ + enumerable: true, + get: function () { + return _Range.locToRange; + } +})); +Object.defineProperty(exports, "offsetToPosition", ({ + enumerable: true, + get: function () { + return _Range.offsetToPosition; + } +})); +Object.defineProperty(exports, "pointToOffset", ({ + enumerable: true, + get: function () { + return _getASTNodeAtPosition.pointToOffset; + } +})); +Object.defineProperty(exports, "validateWithCustomRules", ({ + enumerable: true, + get: function () { + return _validateWithCustomRules.validateWithCustomRules; + } +})); +var _fragmentDependencies = __webpack_require__(/*! ./fragmentDependencies */ "../../graphql-language-service/esm/utils/fragmentDependencies.js"); +var _getVariablesJSONSchema = __webpack_require__(/*! ./getVariablesJSONSchema */ "../../graphql-language-service/esm/utils/getVariablesJSONSchema.js"); +var _getASTNodeAtPosition = __webpack_require__(/*! ./getASTNodeAtPosition */ "../../graphql-language-service/esm/utils/getASTNodeAtPosition.js"); +var _Range = __webpack_require__(/*! ./Range */ "../../graphql-language-service/esm/utils/Range.js"); +var _validateWithCustomRules = __webpack_require__(/*! ./validateWithCustomRules */ "../../graphql-language-service/esm/utils/validateWithCustomRules.js"); +var _collectVariables = __webpack_require__(/*! ./collectVariables */ "../../graphql-language-service/esm/utils/collectVariables.js"); +var _getOperationFacts = _interopRequireWildcard(__webpack_require__(/*! ./getOperationFacts */ "../../graphql-language-service/esm/utils/getOperationFacts.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +/***/ }), + +/***/ "../../graphql-language-service/esm/utils/validateWithCustomRules.js": +/*!***************************************************************************!*\ + !*** ../../graphql-language-service/esm/utils/validateWithCustomRules.js ***! + \***************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.validateWithCustomRules = validateWithCustomRules; +var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); +const specifiedSDLRules = [_graphql.LoneSchemaDefinitionRule, _graphql.UniqueOperationTypesRule, _graphql.UniqueTypeNamesRule, _graphql.UniqueEnumValueNamesRule, _graphql.UniqueFieldDefinitionNamesRule, _graphql.UniqueDirectiveNamesRule, _graphql.KnownTypeNamesRule, _graphql.KnownDirectivesRule, _graphql.UniqueDirectivesPerLocationRule, _graphql.PossibleTypeExtensionsRule, _graphql.UniqueArgumentNamesRule, _graphql.UniqueInputFieldNamesRule]; +function validateWithCustomRules(schema, ast, customRules, isRelayCompatMode, isSchemaDocument) { + const rules = _graphql.specifiedRules.filter(rule => { + if (rule === _graphql.NoUnusedFragmentsRule || rule === _graphql.ExecutableDefinitionsRule) { + return false; + } + if (isRelayCompatMode && rule === _graphql.KnownFragmentNamesRule) { + return false; + } + return true; + }); + if (customRules) { + Array.prototype.push.apply(rules, customRules); + } + if (isSchemaDocument) { + Array.prototype.push.apply(rules, specifiedSDLRules); + } + const errors = (0, _graphql.validate)(schema, ast, rules); + return errors.filter(error => { + if (error.message.includes('Unknown directive') && error.nodes) { + const node = error.nodes[0]; + if (node && node.kind === _graphql.Kind.DIRECTIVE) { + const name = node.name.value; + if (name === 'arguments' || name === 'argumentDefinitions') { + return false; + } + } + } + return true; + }); +} + +/***/ }), + +/***/ "./style.css": +/*!*******************!*\ + !*** ./style.css ***! + \*******************/ +/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "../../graphiql-react/dist/style.css": +/*!*******************************************!*\ + !*** ../../graphiql-react/dist/style.css ***! + \*******************************************/ +/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "../../graphiql-react/font/fira-code.css": +/*!***********************************************!*\ + !*** ../../graphiql-react/font/fira-code.css ***! + \***********************************************/ +/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "../../graphiql-react/font/roboto.css": +/*!********************************************!*\ + !*** ../../graphiql-react/font/roboto.css ***! + \********************************************/ +/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "react": +/*!************************!*\ + !*** external "React" ***! + \************************/ +/***/ (function(module) { + +module.exports = window["React"]; + +/***/ }), + +/***/ "react-dom": +/*!***************************!*\ + !*** external "ReactDOM" ***! + \***************************/ +/***/ (function(module) { + +module.exports = window["ReactDOM"]; + +/***/ }), + +/***/ "../../../node_modules/@headlessui/react/dist/headlessui.dev.cjs": +/*!***********************************************************************!*\ + !*** ../../../node_modules/@headlessui/react/dist/headlessui.dev.cjs ***! + \***********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + + +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + Combobox: () => Combobox, + Dialog: () => Dialog, + Disclosure: () => Disclosure, + FocusTrap: () => FocusTrap, + Listbox: () => Listbox, + Menu: () => Menu, + Popover: () => Popover, + Portal: () => Portal, + RadioGroup: () => RadioGroup, + Switch: () => Switch, + Tab: () => Tab, + Transition: () => Transition +}); +module.exports = __toCommonJS(src_exports); + +// src/components/combobox/combobox.tsx +var import_react19 = __toESM(__webpack_require__(/*! react */ "react"), 1); + +// src/hooks/use-computed.ts +var import_react3 = __webpack_require__(/*! react */ "react"); + +// src/hooks/use-iso-morphic-effect.ts +var import_react = __webpack_require__(/*! react */ "react"); + +// src/utils/env.ts +var Env = class { + constructor() { + __publicField(this, "current", this.detect()); + __publicField(this, "handoffState", "pending"); + __publicField(this, "currentId", 0); + } + set(env2) { + if (this.current === env2) + return; + this.handoffState = "pending"; + this.currentId = 0; + this.current = env2; + } + reset() { + this.set(this.detect()); + } + nextId() { + return ++this.currentId; + } + get isServer() { + return this.current === "server"; + } + get isClient() { + return this.current === "client"; + } + detect() { + if (typeof window === "undefined" || typeof document === "undefined") { + return "server"; + } + return "client"; + } + handoff() { + if (this.handoffState === "pending") { + this.handoffState = "complete"; + } + } + get isHandoffComplete() { + return this.handoffState === "complete"; + } +}; +var env = new Env(); + +// src/hooks/use-iso-morphic-effect.ts +var useIsoMorphicEffect = (effect, deps) => { + if (env.isServer) { + (0, import_react.useEffect)(effect, deps); + } else { + (0, import_react.useLayoutEffect)(effect, deps); + } +}; + +// src/hooks/use-latest-value.ts +var import_react2 = __webpack_require__(/*! react */ "react"); +function useLatestValue(value) { + let cache = (0, import_react2.useRef)(value); + useIsoMorphicEffect(() => { + cache.current = value; + }, [value]); + return cache; +} + +// src/hooks/use-computed.ts +function useComputed(cb, dependencies) { + let [value, setValue] = (0, import_react3.useState)(cb); + let cbRef = useLatestValue(cb); + useIsoMorphicEffect(() => setValue(cbRef.current), [cbRef, setValue, ...dependencies]); + return value; +} + +// src/hooks/use-disposables.ts +var import_react4 = __webpack_require__(/*! react */ "react"); + +// src/utils/micro-task.ts +function microTask(cb) { + if (typeof queueMicrotask === "function") { + queueMicrotask(cb); + } else { + Promise.resolve().then(cb).catch( + (e) => setTimeout(() => { + throw e; + }) + ); + } +} + +// src/utils/disposables.ts +function disposables() { + let _disposables = []; + let api = { + addEventListener(element, name, listener, options) { + element.addEventListener(name, listener, options); + return api.add(() => element.removeEventListener(name, listener, options)); + }, + requestAnimationFrame(...args) { + let raf = requestAnimationFrame(...args); + return api.add(() => cancelAnimationFrame(raf)); + }, + nextFrame(...args) { + return api.requestAnimationFrame(() => { + return api.requestAnimationFrame(...args); + }); + }, + setTimeout(...args) { + let timer = setTimeout(...args); + return api.add(() => clearTimeout(timer)); + }, + microTask(...args) { + let task = { current: true }; + microTask(() => { + if (task.current) { + args[0](); + } + }); + return api.add(() => { + task.current = false; + }); + }, + style(node, property, value) { + let previous = node.style.getPropertyValue(property); + Object.assign(node.style, { [property]: value }); + return this.add(() => { + Object.assign(node.style, { [property]: previous }); + }); + }, + group(cb) { + let d = disposables(); + cb(d); + return this.add(() => d.dispose()); + }, + add(cb) { + _disposables.push(cb); + return () => { + let idx = _disposables.indexOf(cb); + if (idx >= 0) { + for (let dispose of _disposables.splice(idx, 1)) { + dispose(); + } + } + }; + }, + dispose() { + for (let dispose of _disposables.splice(0)) { + dispose(); + } + } + }; + return api; +} + +// src/hooks/use-disposables.ts +function useDisposables() { + let [d] = (0, import_react4.useState)(disposables); + (0, import_react4.useEffect)(() => () => d.dispose(), [d]); + return d; +} + +// src/hooks/use-event.ts +var import_react5 = __toESM(__webpack_require__(/*! react */ "react"), 1); +var useEvent = ( + // TODO: Add React.useEvent ?? once the useEvent hook is available + function useEvent2(cb) { + let cache = useLatestValue(cb); + return import_react5.default.useCallback((...args) => cache.current(...args), [cache]); + } +); + +// src/hooks/use-id.ts +var import_react7 = __toESM(__webpack_require__(/*! react */ "react"), 1); + +// src/hooks/use-server-handoff-complete.ts +var import_react6 = __webpack_require__(/*! react */ "react"); +function useServerHandoffComplete() { + let [complete, setComplete] = (0, import_react6.useState)(env.isHandoffComplete); + if (complete && env.isHandoffComplete === false) { + setComplete(false); + } + (0, import_react6.useEffect)(() => { + if (complete === true) + return; + setComplete(true); + }, [complete]); + (0, import_react6.useEffect)(() => env.handoff(), []); + return complete; +} + +// src/hooks/use-id.ts +var _a; +var useId = ( + // Prefer React's `useId` if it's available. + // @ts-expect-error - `useId` doesn't exist in React < 18. + (_a = import_react7.default.useId) != null ? _a : function useId2() { + let ready = useServerHandoffComplete(); + let [id, setId] = import_react7.default.useState(ready ? () => env.nextId() : null); + useIsoMorphicEffect(() => { + if (id === null) + setId(env.nextId()); + }, [id]); + return id != null ? "" + id : void 0; + } +); + +// src/hooks/use-outside-click.ts +var import_react10 = __webpack_require__(/*! react */ "react"); + +// src/utils/match.ts +function match(value, lookup, ...args) { + if (value in lookup) { + let returnValue = lookup[value]; + return typeof returnValue === "function" ? returnValue(...args) : returnValue; + } + let error = new Error( + `Tried to handle "${value}" but there is no handler defined. Only defined handlers are: ${Object.keys( + lookup + ).map((key) => `"${key}"`).join(", ")}.` + ); + if (Error.captureStackTrace) + Error.captureStackTrace(error, match); + throw error; +} + +// src/utils/owner.ts +function getOwnerDocument(element) { + if (env.isServer) + return null; + if (element instanceof Node) + return element.ownerDocument; + if (element == null ? void 0 : element.hasOwnProperty("current")) { + if (element.current instanceof Node) + return element.current.ownerDocument; + } + return document; +} + +// src/utils/focus-management.ts +var focusableSelector = [ + "[contentEditable=true]", + "[tabindex]", + "a[href]", + "area[href]", + "button:not([disabled])", + "iframe", + "input:not([disabled])", + "select:not([disabled])", + "textarea:not([disabled])" +].map( + false ? ( + // TODO: Remove this once JSDOM fixes the issue where an element that is + // "hidden" can be the document.activeElement, because this is not possible + // in real browsers. + 0 + ) : (selector) => `${selector}:not([tabindex='-1'])` +).join(","); +function getFocusableElements(container = document.body) { + if (container == null) + return []; + return Array.from(container.querySelectorAll(focusableSelector)).sort( + // We want to move `tabIndex={0}` to the end of the list, this is what the browser does as well. + (a, z) => Math.sign((a.tabIndex || Number.MAX_SAFE_INTEGER) - (z.tabIndex || Number.MAX_SAFE_INTEGER)) + ); +} +function isFocusableElement(element, mode = 0 /* Strict */) { + var _a3; + if (element === ((_a3 = getOwnerDocument(element)) == null ? void 0 : _a3.body)) + return false; + return match(mode, { + [0 /* Strict */]() { + return element.matches(focusableSelector); + }, + [1 /* Loose */]() { + let next = element; + while (next !== null) { + if (next.matches(focusableSelector)) + return true; + next = next.parentElement; + } + return false; + } + }); +} +function restoreFocusIfNecessary(element) { + let ownerDocument = getOwnerDocument(element); + disposables().nextFrame(() => { + if (ownerDocument && !isFocusableElement(ownerDocument.activeElement, 0 /* Strict */)) { + focusElement(element); + } + }); +} +if (typeof window !== "undefined" && typeof document !== "undefined") { + document.addEventListener( + "keydown", + (event) => { + if (event.metaKey || event.altKey || event.ctrlKey) { + return; + } + document.documentElement.dataset.headlessuiFocusVisible = ""; + }, + true + ); + document.addEventListener( + "click", + (event) => { + if (event.detail === 1 /* Mouse */) { + delete document.documentElement.dataset.headlessuiFocusVisible; + } else if (event.detail === 0 /* Keyboard */) { + document.documentElement.dataset.headlessuiFocusVisible = ""; + } + }, + true + ); +} +function focusElement(element) { + element == null ? void 0 : element.focus({ preventScroll: true }); +} +var selectableSelector = ["textarea", "input"].join(","); +function isSelectableElement(element) { + var _a3, _b; + return (_b = (_a3 = element == null ? void 0 : element.matches) == null ? void 0 : _a3.call(element, selectableSelector)) != null ? _b : false; +} +function sortByDomNode(nodes, resolveKey = (i) => i) { + return nodes.slice().sort((aItem, zItem) => { + let a = resolveKey(aItem); + let z = resolveKey(zItem); + if (a === null || z === null) + return 0; + let position = a.compareDocumentPosition(z); + if (position & Node.DOCUMENT_POSITION_FOLLOWING) + return -1; + if (position & Node.DOCUMENT_POSITION_PRECEDING) + return 1; + return 0; + }); +} +function focusFrom(current, focus) { + return focusIn(getFocusableElements(), focus, { relativeTo: current }); +} +function focusIn(container, focus, { + sorted = true, + relativeTo = null, + skipElements = [] +} = {}) { + let ownerDocument = Array.isArray(container) ? container.length > 0 ? container[0].ownerDocument : document : container.ownerDocument; + let elements = Array.isArray(container) ? sorted ? sortByDomNode(container) : container : getFocusableElements(container); + if (skipElements.length > 0 && elements.length > 1) { + elements = elements.filter((x) => !skipElements.includes(x)); + } + relativeTo = relativeTo != null ? relativeTo : ownerDocument.activeElement; + let direction = (() => { + if (focus & (1 /* First */ | 4 /* Next */)) + return 1 /* Next */; + if (focus & (2 /* Previous */ | 8 /* Last */)) + return -1 /* Previous */; + throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last"); + })(); + let startIndex = (() => { + if (focus & 1 /* First */) + return 0; + if (focus & 2 /* Previous */) + return Math.max(0, elements.indexOf(relativeTo)) - 1; + if (focus & 4 /* Next */) + return Math.max(0, elements.indexOf(relativeTo)) + 1; + if (focus & 8 /* Last */) + return elements.length - 1; + throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last"); + })(); + let focusOptions = focus & 32 /* NoScroll */ ? { preventScroll: true } : {}; + let offset = 0; + let total = elements.length; + let next = void 0; + do { + if (offset >= total || offset + total <= 0) + return 0 /* Error */; + let nextIdx = startIndex + offset; + if (focus & 16 /* WrapAround */) { + nextIdx = (nextIdx + total) % total; + } else { + if (nextIdx < 0) + return 3 /* Underflow */; + if (nextIdx >= total) + return 1 /* Overflow */; + } + next = elements[nextIdx]; + next == null ? void 0 : next.focus(focusOptions); + offset += direction; + } while (next !== ownerDocument.activeElement); + if (focus & (4 /* Next */ | 2 /* Previous */) && isSelectableElement(next)) { + next.select(); + } + return 2 /* Success */; +} + +// src/hooks/use-document-event.ts +var import_react8 = __webpack_require__(/*! react */ "react"); +function useDocumentEvent(type, listener, options) { + let listenerRef = useLatestValue(listener); + (0, import_react8.useEffect)(() => { + function handler(event) { + listenerRef.current(event); + } + document.addEventListener(type, handler, options); + return () => document.removeEventListener(type, handler, options); + }, [type, options]); +} + +// src/hooks/use-window-event.ts +var import_react9 = __webpack_require__(/*! react */ "react"); +function useWindowEvent(type, listener, options) { + let listenerRef = useLatestValue(listener); + (0, import_react9.useEffect)(() => { + function handler(event) { + listenerRef.current(event); + } + window.addEventListener(type, handler, options); + return () => window.removeEventListener(type, handler, options); + }, [type, options]); +} + +// src/hooks/use-outside-click.ts +function useOutsideClick(containers, cb, enabled = true) { + let enabledRef = (0, import_react10.useRef)(false); + (0, import_react10.useEffect)( + false ? 0 : () => { + requestAnimationFrame(() => { + enabledRef.current = enabled; + }); + }, + [enabled] + ); + function handleOutsideClick(event, resolveTarget) { + if (!enabledRef.current) + return; + if (event.defaultPrevented) + return; + let target = resolveTarget(event); + if (target === null) { + return; + } + if (!target.getRootNode().contains(target)) + return; + let _containers = function resolve(containers2) { + if (typeof containers2 === "function") { + return resolve(containers2()); + } + if (Array.isArray(containers2)) { + return containers2; + } + if (containers2 instanceof Set) { + return containers2; + } + return [containers2]; + }(containers); + for (let container of _containers) { + if (container === null) + continue; + let domNode = container instanceof HTMLElement ? container : container.current; + if (domNode == null ? void 0 : domNode.contains(target)) { + return; + } + if (event.composed && event.composedPath().includes(domNode)) { + return; + } + } + if ( + // This check alllows us to know whether or not we clicked on a "focusable" element like a + // button or an input. This is a backwards compatibility check so that you can open a and click on another which should close Menu A and open Menu B. We might + // revisit that so that you will require 2 clicks instead. + !isFocusableElement(target, 1 /* Loose */) && // This could be improved, but the `Combobox.Button` adds tabIndex={-1} to make it + // unfocusable via the keyboard so that tabbing to the next item from the input doesn't + // first go to the button. + target.tabIndex !== -1 + ) { + event.preventDefault(); + } + return cb(event, target); + } + let initialClickTarget = (0, import_react10.useRef)(null); + useDocumentEvent( + "mousedown", + (event) => { + var _a3, _b; + if (enabledRef.current) { + initialClickTarget.current = ((_b = (_a3 = event.composedPath) == null ? void 0 : _a3.call(event)) == null ? void 0 : _b[0]) || event.target; + } + }, + true + ); + useDocumentEvent( + "click", + (event) => { + if (!initialClickTarget.current) { + return; + } + handleOutsideClick(event, () => { + return initialClickTarget.current; + }); + initialClickTarget.current = null; + }, + // We will use the `capture` phase so that layers in between with `event.stopPropagation()` + // don't "cancel" this outside click check. E.g.: A `Menu` inside a `DialogPanel` if the `Menu` + // is open, and you click outside of it in the `DialogPanel` the `Menu` should close. However, + // the `DialogPanel` has a `onClick(e) { e.stopPropagation() }` which would cancel this. + true + ); + useWindowEvent( + "blur", + (event) => handleOutsideClick( + event, + () => window.document.activeElement instanceof HTMLIFrameElement ? window.document.activeElement : null + ), + true + ); +} + +// src/hooks/use-resolve-button-type.ts +var import_react11 = __webpack_require__(/*! react */ "react"); +function resolveType(props) { + var _a3; + if (props.type) + return props.type; + let tag = (_a3 = props.as) != null ? _a3 : "button"; + if (typeof tag === "string" && tag.toLowerCase() === "button") + return "button"; + return void 0; +} +function useResolveButtonType(props, ref) { + let [type, setType] = (0, import_react11.useState)(() => resolveType(props)); + useIsoMorphicEffect(() => { + setType(resolveType(props)); + }, [props.type, props.as]); + useIsoMorphicEffect(() => { + if (type) + return; + if (!ref.current) + return; + if (ref.current instanceof HTMLButtonElement && !ref.current.hasAttribute("type")) { + setType("button"); + } + }, [type, ref]); + return type; +} + +// src/hooks/use-sync-refs.ts +var import_react12 = __webpack_require__(/*! react */ "react"); +var Optional = Symbol(); +function optionalRef(cb, isOptional = true) { + return Object.assign(cb, { [Optional]: isOptional }); +} +function useSyncRefs(...refs) { + let cache = (0, import_react12.useRef)(refs); + (0, import_react12.useEffect)(() => { + cache.current = refs; + }, [refs]); + let syncRefs = useEvent((value) => { + for (let ref of cache.current) { + if (ref == null) + continue; + if (typeof ref === "function") + ref(value); + else + ref.current = value; + } + }); + return refs.every( + (ref) => ref == null || // @ts-expect-error + (ref == null ? void 0 : ref[Optional]) + ) ? void 0 : syncRefs; +} + +// src/hooks/use-tree-walker.ts +var import_react13 = __webpack_require__(/*! react */ "react"); +function useTreeWalker({ + container, + accept, + walk, + enabled = true +}) { + let acceptRef = (0, import_react13.useRef)(accept); + let walkRef = (0, import_react13.useRef)(walk); + (0, import_react13.useEffect)(() => { + acceptRef.current = accept; + walkRef.current = walk; + }, [accept, walk]); + useIsoMorphicEffect(() => { + if (!container) + return; + if (!enabled) + return; + let ownerDocument = getOwnerDocument(container); + if (!ownerDocument) + return; + let accept2 = acceptRef.current; + let walk2 = walkRef.current; + let acceptNode = Object.assign((node) => accept2(node), { acceptNode: accept2 }); + let walker = ownerDocument.createTreeWalker( + container, + NodeFilter.SHOW_ELEMENT, + acceptNode, + // @ts-expect-error This `false` is a simple small fix for older browsers + false + ); + while (walker.nextNode()) + walk2(walker.currentNode); + }, [container, enabled, acceptRef, walkRef]); +} + +// src/utils/calculate-active-index.ts +function assertNever(x) { + throw new Error("Unexpected object: " + x); +} +function calculateActiveIndex(action, resolvers) { + let items = resolvers.resolveItems(); + if (items.length <= 0) + return null; + let currentActiveIndex = resolvers.resolveActiveIndex(); + let activeIndex = currentActiveIndex != null ? currentActiveIndex : -1; + let nextActiveIndex = (() => { + switch (action.focus) { + case 0 /* First */: + return items.findIndex((item) => !resolvers.resolveDisabled(item)); + case 1 /* Previous */: { + let idx = items.slice().reverse().findIndex((item, idx2, all) => { + if (activeIndex !== -1 && all.length - idx2 - 1 >= activeIndex) + return false; + return !resolvers.resolveDisabled(item); + }); + if (idx === -1) + return idx; + return items.length - 1 - idx; + } + case 2 /* Next */: + return items.findIndex((item, idx) => { + if (idx <= activeIndex) + return false; + return !resolvers.resolveDisabled(item); + }); + case 3 /* Last */: { + let idx = items.slice().reverse().findIndex((item) => !resolvers.resolveDisabled(item)); + if (idx === -1) + return idx; + return items.length - 1 - idx; + } + case 4 /* Specific */: + return items.findIndex((item) => resolvers.resolveId(item) === action.id); + case 5 /* Nothing */: + return null; + default: + assertNever(action); + } + })(); + return nextActiveIndex === -1 ? currentActiveIndex : nextActiveIndex; +} + +// src/utils/render.ts +var import_react14 = __webpack_require__(/*! react */ "react"); + +// src/utils/class-names.ts +function classNames(...classes) { + return classes.filter(Boolean).join(" "); +} + +// src/utils/render.ts +function render({ + ourProps, + theirProps, + slot, + defaultTag, + features, + visible = true, + name +}) { + let props = mergeProps(theirProps, ourProps); + if (visible) + return _render(props, slot, defaultTag, name); + let featureFlags = features != null ? features : 0 /* None */; + if (featureFlags & 2 /* Static */) { + let { static: isStatic = false, ...rest } = props; + if (isStatic) + return _render(rest, slot, defaultTag, name); + } + if (featureFlags & 1 /* RenderStrategy */) { + let { unmount = true, ...rest } = props; + let strategy = unmount ? 0 /* Unmount */ : 1 /* Hidden */; + return match(strategy, { + [0 /* Unmount */]() { + return null; + }, + [1 /* Hidden */]() { + return _render( + { ...rest, ...{ hidden: true, style: { display: "none" } } }, + slot, + defaultTag, + name + ); + } + }); + } + return _render(props, slot, defaultTag, name); +} +function _render(props, slot = {}, tag, name) { + let { + as: Component = tag, + children, + refName = "ref", + ...rest + } = omit(props, ["unmount", "static"]); + let refRelatedProps = props.ref !== void 0 ? { [refName]: props.ref } : {}; + let resolvedChildren = typeof children === "function" ? children(slot) : children; + if ("className" in rest && rest.className && typeof rest.className === "function") { + rest.className = rest.className(slot); + } + let dataAttributes = {}; + if (slot) { + let exposeState = false; + let states = []; + for (let [k, v] of Object.entries(slot)) { + if (typeof v === "boolean") { + exposeState = true; + } + if (v === true) { + states.push(k); + } + } + if (exposeState) + dataAttributes[`data-headlessui-state`] = states.join(" "); + } + if (Component === import_react14.Fragment) { + if (Object.keys(compact(rest)).length > 0) { + if (!(0, import_react14.isValidElement)(resolvedChildren) || Array.isArray(resolvedChildren) && resolvedChildren.length > 1) { + throw new Error( + [ + 'Passing props on "Fragment"!', + "", + `The current component <${name} /> is rendering a "Fragment".`, + `However we need to passthrough the following props:`, + Object.keys(rest).map((line) => ` - ${line}`).join("\n"), + "", + "You can apply a few solutions:", + [ + 'Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".', + "Render a single element as the child so that we can forward the props onto that element." + ].map((line) => ` - ${line}`).join("\n") + ].join("\n") + ); + } + let childProps = resolvedChildren.props; + let newClassName = typeof (childProps == null ? void 0 : childProps.className) === "function" ? (...args) => classNames(childProps == null ? void 0 : childProps.className(...args), rest.className) : classNames(childProps == null ? void 0 : childProps.className, rest.className); + let classNameProps = newClassName ? { className: newClassName } : {}; + return (0, import_react14.cloneElement)( + resolvedChildren, + Object.assign( + {}, + // Filter out undefined values so that they don't override the existing values + mergeProps(resolvedChildren.props, compact(omit(rest, ["ref"]))), + dataAttributes, + refRelatedProps, + mergeRefs(resolvedChildren.ref, refRelatedProps.ref), + classNameProps + ) + ); + } + } + return (0, import_react14.createElement)( + Component, + Object.assign( + {}, + omit(rest, ["ref"]), + Component !== import_react14.Fragment && refRelatedProps, + Component !== import_react14.Fragment && dataAttributes + ), + resolvedChildren + ); +} +function mergeRefs(...refs) { + return { + ref: refs.every((ref) => ref == null) ? void 0 : (value) => { + for (let ref of refs) { + if (ref == null) + continue; + if (typeof ref === "function") + ref(value); + else + ref.current = value; + } + } + }; +} +function mergeProps(...listOfProps) { + var _a3; + if (listOfProps.length === 0) + return {}; + if (listOfProps.length === 1) + return listOfProps[0]; + let target = {}; + let eventHandlers = {}; + for (let props of listOfProps) { + for (let prop in props) { + if (prop.startsWith("on") && typeof props[prop] === "function") { + (_a3 = eventHandlers[prop]) != null ? _a3 : eventHandlers[prop] = []; + eventHandlers[prop].push(props[prop]); + } else { + target[prop] = props[prop]; + } + } + } + if (target.disabled || target["aria-disabled"]) { + return Object.assign( + target, + // Set all event listeners that we collected to `undefined`. This is + // important because of the `cloneElement` from above, which merges the + // existing and new props, they don't just override therefore we have to + // explicitly nullify them. + Object.fromEntries(Object.keys(eventHandlers).map((eventName) => [eventName, void 0])) + ); + } + for (let eventName in eventHandlers) { + Object.assign(target, { + [eventName](event, ...args) { + let handlers = eventHandlers[eventName]; + for (let handler of handlers) { + if ((event instanceof Event || (event == null ? void 0 : event.nativeEvent) instanceof Event) && event.defaultPrevented) { + return; + } + handler(event, ...args); + } + } + }); + } + return target; +} +function forwardRefWithAs(component) { + var _a3; + return Object.assign((0, import_react14.forwardRef)(component), { + displayName: (_a3 = component.displayName) != null ? _a3 : component.name + }); +} +function compact(object) { + let clone = Object.assign({}, object); + for (let key in clone) { + if (clone[key] === void 0) + delete clone[key]; + } + return clone; +} +function omit(object, keysToOmit = []) { + let clone = Object.assign({}, object); + for (let key of keysToOmit) { + if (key in clone) + delete clone[key]; + } + return clone; +} + +// src/utils/bugs.ts +function isDisabledReactIssue7711(element) { + let parent = element.parentElement; + let legend = null; + while (parent && !(parent instanceof HTMLFieldSetElement)) { + if (parent instanceof HTMLLegendElement) + legend = parent; + parent = parent.parentElement; + } + let isParentDisabled = (parent == null ? void 0 : parent.getAttribute("disabled")) === ""; + if (isParentDisabled && isFirstLegend(legend)) + return false; + return isParentDisabled; +} +function isFirstLegend(element) { + if (!element) + return false; + let previous = element.previousElementSibling; + while (previous !== null) { + if (previous instanceof HTMLLegendElement) + return false; + previous = previous.previousElementSibling; + } + return true; +} + +// src/utils/form.ts +function objectToFormEntries(source = {}, parentKey = null, entries = []) { + for (let [key, value] of Object.entries(source)) { + append(entries, composeKey(parentKey, key), value); + } + return entries; +} +function composeKey(parent, key) { + return parent ? parent + "[" + key + "]" : key; +} +function append(entries, key, value) { + if (Array.isArray(value)) { + for (let [subkey, subvalue] of value.entries()) { + append(entries, composeKey(key, subkey.toString()), subvalue); + } + } else if (value instanceof Date) { + entries.push([key, value.toISOString()]); + } else if (typeof value === "boolean") { + entries.push([key, value ? "1" : "0"]); + } else if (typeof value === "string") { + entries.push([key, value]); + } else if (typeof value === "number") { + entries.push([key, `${value}`]); + } else if (value === null || value === void 0) { + entries.push([key, ""]); + } else { + objectToFormEntries(value, key, entries); + } +} +function attemptSubmit(element) { + var _a3; + let form = (_a3 = element == null ? void 0 : element.form) != null ? _a3 : element.closest("form"); + if (!form) + return; + for (let element2 of form.elements) { + if (element2.tagName === "INPUT" && element2.type === "submit" || element2.tagName === "BUTTON" && element2.type === "submit" || element2.nodeName === "INPUT" && element2.type === "image") { + element2.click(); + return; + } + } +} + +// src/internal/hidden.tsx +var DEFAULT_VISUALLY_HIDDEN_TAG = "div"; +function VisuallyHidden(props, ref) { + let { features = 1 /* None */, ...theirProps } = props; + let ourProps = { + ref, + "aria-hidden": (features & 2 /* Focusable */) === 2 /* Focusable */ ? true : void 0, + style: { + position: "fixed", + top: 1, + left: 1, + width: 1, + height: 0, + padding: 0, + margin: -1, + overflow: "hidden", + clip: "rect(0, 0, 0, 0)", + whiteSpace: "nowrap", + borderWidth: "0", + ...(features & 4 /* Hidden */) === 4 /* Hidden */ && !((features & 2 /* Focusable */) === 2 /* Focusable */) && { display: "none" } + } + }; + return render({ + ourProps, + theirProps, + slot: {}, + defaultTag: DEFAULT_VISUALLY_HIDDEN_TAG, + name: "Hidden" + }); +} +var Hidden = forwardRefWithAs(VisuallyHidden); + +// src/internal/open-closed.tsx +var import_react15 = __toESM(__webpack_require__(/*! react */ "react"), 1); +var Context = (0, import_react15.createContext)(null); +Context.displayName = "OpenClosedContext"; +function useOpenClosed() { + return (0, import_react15.useContext)(Context); +} +function OpenClosedProvider({ value, children }) { + return /* @__PURE__ */ import_react15.default.createElement(Context.Provider, { value }, children); +} + +// src/hooks/use-controllable.ts +var import_react16 = __webpack_require__(/*! react */ "react"); +function useControllable(controlledValue, onChange, defaultValue) { + let [internalValue, setInternalValue] = (0, import_react16.useState)(defaultValue); + let isControlled = controlledValue !== void 0; + let wasControlled = (0, import_react16.useRef)(isControlled); + let didWarnOnUncontrolledToControlled = (0, import_react16.useRef)(false); + let didWarnOnControlledToUncontrolled = (0, import_react16.useRef)(false); + if (isControlled && !wasControlled.current && !didWarnOnUncontrolledToControlled.current) { + didWarnOnUncontrolledToControlled.current = true; + wasControlled.current = isControlled; + console.error( + "A component is changing from uncontrolled to controlled. This may be caused by the value changing from undefined to a defined value, which should not happen." + ); + } else if (!isControlled && wasControlled.current && !didWarnOnControlledToUncontrolled.current) { + didWarnOnControlledToUncontrolled.current = true; + wasControlled.current = isControlled; + console.error( + "A component is changing from controlled to uncontrolled. This may be caused by the value changing from a defined value to undefined, which should not happen." + ); + } + return [ + isControlled ? controlledValue : internalValue, + useEvent((value) => { + if (isControlled) { + return onChange == null ? void 0 : onChange(value); + } else { + setInternalValue(value); + return onChange == null ? void 0 : onChange(value); + } + }) + ]; +} + +// src/hooks/use-watch.ts +var import_react17 = __webpack_require__(/*! react */ "react"); +function useWatch(cb, dependencies) { + let track = (0, import_react17.useRef)([]); + let action = useEvent(cb); + (0, import_react17.useEffect)(() => { + let oldValues = [...track.current]; + for (let [idx, value] of dependencies.entries()) { + if (track.current[idx] !== value) { + let returnValue = action(dependencies, oldValues); + track.current = dependencies; + return returnValue; + } + } + }, [action, ...dependencies]); +} + +// src/hooks/use-tracked-pointer.ts +var import_react18 = __webpack_require__(/*! react */ "react"); +function eventToPosition(evt) { + return [evt.screenX, evt.screenY]; +} +function useTrackedPointer() { + let lastPos = (0, import_react18.useRef)([-1, -1]); + return { + wasMoved(evt) { + if (false) {} + let newPos = eventToPosition(evt); + if (lastPos.current[0] === newPos[0] && lastPos.current[1] === newPos[1]) { + return false; + } + lastPos.current = newPos; + return true; + }, + update(evt) { + lastPos.current = eventToPosition(evt); + } + }; +} + +// src/utils/platform.ts +function isIOS() { + return ( + // Check if it is an iPhone + /iPhone/gi.test(window.navigator.platform) || // Check if it is an iPad. iPad reports itself as "MacIntel", but we can check if it is a touch + // screen. Let's hope that Apple doesn't release a touch screen Mac (or maybe this would then + // work as expected 🤔). + /Mac/gi.test(window.navigator.platform) && window.navigator.maxTouchPoints > 0 + ); +} +function isAndroid() { + return /Android/gi.test(window.navigator.userAgent); +} +function isMobile() { + return isIOS() || isAndroid(); +} + +// src/components/combobox/combobox.tsx +function adjustOrderedState(state, adjustment = (i) => i) { + let currentActiveOption = state.activeOptionIndex !== null ? state.options[state.activeOptionIndex] : null; + let sortedOptions = sortByDomNode( + adjustment(state.options.slice()), + (option) => option.dataRef.current.domRef.current + ); + let adjustedActiveOptionIndex = currentActiveOption ? sortedOptions.indexOf(currentActiveOption) : null; + if (adjustedActiveOptionIndex === -1) { + adjustedActiveOptionIndex = null; + } + return { + options: sortedOptions, + activeOptionIndex: adjustedActiveOptionIndex + }; +} +var reducers = { + [1 /* CloseCombobox */](state) { + var _a3; + if ((_a3 = state.dataRef.current) == null ? void 0 : _a3.disabled) + return state; + if (state.comboboxState === 1 /* Closed */) + return state; + return { ...state, activeOptionIndex: null, comboboxState: 1 /* Closed */ }; + }, + [0 /* OpenCombobox */](state) { + var _a3; + if ((_a3 = state.dataRef.current) == null ? void 0 : _a3.disabled) + return state; + if (state.comboboxState === 0 /* Open */) + return state; + let activeOptionIndex = state.activeOptionIndex; + if (state.dataRef.current) { + let { isSelected } = state.dataRef.current; + let optionIdx = state.options.findIndex((option) => isSelected(option.dataRef.current.value)); + if (optionIdx !== -1) { + activeOptionIndex = optionIdx; + } + } + return { ...state, comboboxState: 0 /* Open */, activeOptionIndex }; + }, + [2 /* GoToOption */](state, action) { + var _a3, _b, _c, _d; + if ((_a3 = state.dataRef.current) == null ? void 0 : _a3.disabled) + return state; + if (((_b = state.dataRef.current) == null ? void 0 : _b.optionsRef.current) && !((_c = state.dataRef.current) == null ? void 0 : _c.optionsPropsRef.current.static) && state.comboboxState === 1 /* Closed */) { + return state; + } + let adjustedState = adjustOrderedState(state); + if (adjustedState.activeOptionIndex === null) { + let localActiveOptionIndex = adjustedState.options.findIndex( + (option) => !option.dataRef.current.disabled + ); + if (localActiveOptionIndex !== -1) { + adjustedState.activeOptionIndex = localActiveOptionIndex; + } + } + let activeOptionIndex = calculateActiveIndex(action, { + resolveItems: () => adjustedState.options, + resolveActiveIndex: () => adjustedState.activeOptionIndex, + resolveId: (item) => item.id, + resolveDisabled: (item) => item.dataRef.current.disabled + }); + return { + ...state, + ...adjustedState, + activeOptionIndex, + activationTrigger: (_d = action.trigger) != null ? _d : 1 /* Other */ + }; + }, + [3 /* RegisterOption */]: (state, action) => { + var _a3, _b; + let option = { id: action.id, dataRef: action.dataRef }; + let adjustedState = adjustOrderedState(state, (options) => [...options, option]); + if (state.activeOptionIndex === null) { + if ((_a3 = state.dataRef.current) == null ? void 0 : _a3.isSelected(action.dataRef.current.value)) { + adjustedState.activeOptionIndex = adjustedState.options.indexOf(option); + } + } + let nextState = { + ...state, + ...adjustedState, + activationTrigger: 1 /* Other */ + }; + if (((_b = state.dataRef.current) == null ? void 0 : _b.__demoMode) && state.dataRef.current.value === void 0) { + nextState.activeOptionIndex = 0; + } + return nextState; + }, + [4 /* UnregisterOption */]: (state, action) => { + let adjustedState = adjustOrderedState(state, (options) => { + let idx = options.findIndex((a) => a.id === action.id); + if (idx !== -1) + options.splice(idx, 1); + return options; + }); + return { + ...state, + ...adjustedState, + activationTrigger: 1 /* Other */ + }; + }, + [5 /* RegisterLabel */]: (state, action) => { + return { + ...state, + labelId: action.id + }; + } +}; +var ComboboxActionsContext = (0, import_react19.createContext)(null); +ComboboxActionsContext.displayName = "ComboboxActionsContext"; +function useActions(component) { + let context = (0, import_react19.useContext)(ComboboxActionsContext); + if (context === null) { + let err = new Error(`<${component} /> is missing a parent component.`); + if (Error.captureStackTrace) + Error.captureStackTrace(err, useActions); + throw err; + } + return context; +} +var ComboboxDataContext = (0, import_react19.createContext)(null); +ComboboxDataContext.displayName = "ComboboxDataContext"; +function useData(component) { + let context = (0, import_react19.useContext)(ComboboxDataContext); + if (context === null) { + let err = new Error(`<${component} /> is missing a parent component.`); + if (Error.captureStackTrace) + Error.captureStackTrace(err, useData); + throw err; + } + return context; +} +function stateReducer(state, action) { + return match(action.type, reducers, state, action); +} +var DEFAULT_COMBOBOX_TAG = import_react19.Fragment; +function ComboboxFn(props, ref) { + let { + value: controlledValue, + defaultValue, + onChange: controlledOnChange, + form: formName, + name, + by = (a, z) => a === z, + disabled = false, + __demoMode = false, + nullable = false, + multiple = false, + ...theirProps + } = props; + let [value = multiple ? [] : void 0, theirOnChange] = useControllable( + controlledValue, + controlledOnChange, + defaultValue + ); + let [state, dispatch] = (0, import_react19.useReducer)(stateReducer, { + dataRef: (0, import_react19.createRef)(), + comboboxState: __demoMode ? 0 /* Open */ : 1 /* Closed */, + options: [], + activeOptionIndex: null, + activationTrigger: 1 /* Other */, + labelId: null + }); + let defaultToFirstOption = (0, import_react19.useRef)(false); + let optionsPropsRef = (0, import_react19.useRef)({ static: false, hold: false }); + let labelRef = (0, import_react19.useRef)(null); + let inputRef = (0, import_react19.useRef)(null); + let buttonRef = (0, import_react19.useRef)(null); + let optionsRef = (0, import_react19.useRef)(null); + let compare = useEvent( + // @ts-expect-error Eventually we'll want to tackle this, but for now this will do. + typeof by === "string" ? (a, z) => { + let property = by; + return (a == null ? void 0 : a[property]) === (z == null ? void 0 : z[property]); + } : by + ); + let isSelected = (0, import_react19.useCallback)( + (compareValue) => match(data.mode, { + [1 /* Multi */]: () => value.some((option) => compare(option, compareValue)), + [0 /* Single */]: () => compare(value, compareValue) + }), + [value] + ); + let data = (0, import_react19.useMemo)( + () => ({ + ...state, + optionsPropsRef, + labelRef, + inputRef, + buttonRef, + optionsRef, + value, + defaultValue, + disabled, + mode: multiple ? 1 /* Multi */ : 0 /* Single */, + get activeOptionIndex() { + if (defaultToFirstOption.current && state.activeOptionIndex === null && state.options.length > 0) { + let localActiveOptionIndex = state.options.findIndex( + (option) => !option.dataRef.current.disabled + ); + if (localActiveOptionIndex !== -1) { + return localActiveOptionIndex; + } + } + return state.activeOptionIndex; + }, + compare, + isSelected, + nullable, + __demoMode + }), + [value, defaultValue, disabled, multiple, nullable, __demoMode, state] + ); + let lastActiveOption = (0, import_react19.useRef)( + data.activeOptionIndex !== null ? data.options[data.activeOptionIndex] : null + ); + (0, import_react19.useEffect)(() => { + let currentActiveOption = data.activeOptionIndex !== null ? data.options[data.activeOptionIndex] : null; + if (lastActiveOption.current !== currentActiveOption) { + lastActiveOption.current = currentActiveOption; + } + }); + useIsoMorphicEffect(() => { + state.dataRef.current = data; + }, [data]); + useOutsideClick( + [data.buttonRef, data.inputRef, data.optionsRef], + () => actions.closeCombobox(), + data.comboboxState === 0 /* Open */ + ); + let slot = (0, import_react19.useMemo)( + () => ({ + open: data.comboboxState === 0 /* Open */, + disabled, + activeIndex: data.activeOptionIndex, + activeOption: data.activeOptionIndex === null ? null : data.options[data.activeOptionIndex].dataRef.current.value, + value + }), + [data, disabled, value] + ); + let selectOption = useEvent((id) => { + let option = data.options.find((item) => item.id === id); + if (!option) + return; + onChange(option.dataRef.current.value); + }); + let selectActiveOption = useEvent(() => { + if (data.activeOptionIndex !== null) { + let { dataRef, id } = data.options[data.activeOptionIndex]; + onChange(dataRef.current.value); + actions.goToOption(4 /* Specific */, id); + } + }); + let openCombobox = useEvent(() => { + dispatch({ type: 0 /* OpenCombobox */ }); + defaultToFirstOption.current = true; + }); + let closeCombobox = useEvent(() => { + dispatch({ type: 1 /* CloseCombobox */ }); + defaultToFirstOption.current = false; + }); + let goToOption = useEvent((focus, id, trigger) => { + defaultToFirstOption.current = false; + if (focus === 4 /* Specific */) { + return dispatch({ type: 2 /* GoToOption */, focus: 4 /* Specific */, id, trigger }); + } + return dispatch({ type: 2 /* GoToOption */, focus, trigger }); + }); + let registerOption = useEvent((id, dataRef) => { + dispatch({ type: 3 /* RegisterOption */, id, dataRef }); + return () => { + var _a3; + if (((_a3 = lastActiveOption.current) == null ? void 0 : _a3.id) === id) { + defaultToFirstOption.current = true; + } + dispatch({ type: 4 /* UnregisterOption */, id }); + }; + }); + let registerLabel = useEvent((id) => { + dispatch({ type: 5 /* RegisterLabel */, id }); + return () => dispatch({ type: 5 /* RegisterLabel */, id: null }); + }); + let onChange = useEvent((value2) => { + return match(data.mode, { + [0 /* Single */]() { + return theirOnChange == null ? void 0 : theirOnChange(value2); + }, + [1 /* Multi */]() { + let copy = data.value.slice(); + let idx = copy.findIndex((item) => compare(item, value2)); + if (idx === -1) { + copy.push(value2); + } else { + copy.splice(idx, 1); + } + return theirOnChange == null ? void 0 : theirOnChange(copy); + } + }); + }); + let actions = (0, import_react19.useMemo)( + () => ({ + onChange, + registerOption, + registerLabel, + goToOption, + closeCombobox, + openCombobox, + selectActiveOption, + selectOption + }), + [] + ); + let ourProps = ref === null ? {} : { ref }; + let form = (0, import_react19.useRef)(null); + let d = useDisposables(); + (0, import_react19.useEffect)(() => { + if (!form.current) + return; + if (defaultValue === void 0) + return; + d.addEventListener(form.current, "reset", () => { + onChange(defaultValue); + }); + }, [ + form, + onChange + /* Explicitly ignoring `defaultValue` */ + ]); + return /* @__PURE__ */ import_react19.default.createElement(ComboboxActionsContext.Provider, { value: actions }, /* @__PURE__ */ import_react19.default.createElement(ComboboxDataContext.Provider, { value: data }, /* @__PURE__ */ import_react19.default.createElement( + OpenClosedProvider, + { + value: match(data.comboboxState, { + [0 /* Open */]: 1 /* Open */, + [1 /* Closed */]: 2 /* Closed */ + }) + }, + name != null && value != null && objectToFormEntries({ [name]: value }).map(([name2, value2], idx) => /* @__PURE__ */ import_react19.default.createElement( + Hidden, + { + features: 4 /* Hidden */, + ref: idx === 0 ? (element) => { + var _a3; + form.current = (_a3 = element == null ? void 0 : element.closest("form")) != null ? _a3 : null; + } : void 0, + ...compact({ + key: name2, + as: "input", + type: "hidden", + hidden: true, + readOnly: true, + form: formName, + name: name2, + value: value2 + }) + } + )), + render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_COMBOBOX_TAG, + name: "Combobox" + }) + ))); +} +var DEFAULT_INPUT_TAG = "input"; +function InputFn(props, ref) { + var _a3, _b, _c, _d; + let internalId = useId(); + let { + id = `headlessui-combobox-input-${internalId}`, + onChange, + displayValue, + // @ts-ignore: We know this MAY NOT exist for a given tag but we only care when it _does_ exist. + type = "text", + ...theirProps + } = props; + let data = useData("Combobox.Input"); + let actions = useActions("Combobox.Input"); + let inputRef = useSyncRefs(data.inputRef, ref); + let isTyping = (0, import_react19.useRef)(false); + let d = useDisposables(); + let currentDisplayValue = function() { + var _a4; + if (typeof displayValue === "function" && data.value !== void 0) { + return (_a4 = displayValue(data.value)) != null ? _a4 : ""; + } else if (typeof data.value === "string") { + return data.value; + } else { + return ""; + } + }(); + useWatch( + ([currentDisplayValue2, state], [oldCurrentDisplayValue, oldState]) => { + if (isTyping.current) + return; + if (!data.inputRef.current) + return; + if (oldState === 0 /* Open */ && state === 1 /* Closed */) { + data.inputRef.current.value = currentDisplayValue2; + } else if (currentDisplayValue2 !== oldCurrentDisplayValue) { + data.inputRef.current.value = currentDisplayValue2; + } + }, + [currentDisplayValue, data.comboboxState] + ); + useWatch( + ([newState], [oldState]) => { + if (newState === 0 /* Open */ && oldState === 1 /* Closed */) { + let input = data.inputRef.current; + if (!input) + return; + let currentValue = input.value; + let { selectionStart, selectionEnd, selectionDirection } = input; + input.value = ""; + input.value = currentValue; + if (selectionDirection !== null) { + input.setSelectionRange(selectionStart, selectionEnd, selectionDirection); + } else { + input.setSelectionRange(selectionStart, selectionEnd); + } + } + }, + [data.comboboxState] + ); + let isComposing = (0, import_react19.useRef)(false); + let composedChangeEvent = (0, import_react19.useRef)(null); + let handleCompositionStart = useEvent(() => { + isComposing.current = true; + }); + let handleCompositionEnd = useEvent(() => { + d.nextFrame(() => { + isComposing.current = false; + if (composedChangeEvent.current) { + actions.openCombobox(); + onChange == null ? void 0 : onChange(composedChangeEvent.current); + composedChangeEvent.current = null; + } + }); + }); + let handleKeyDown = useEvent((event) => { + isTyping.current = true; + switch (event.key) { + case "Backspace" /* Backspace */: + case "Delete" /* Delete */: + if (data.mode !== 0 /* Single */) + return; + if (!data.nullable) + return; + let input = event.currentTarget; + d.requestAnimationFrame(() => { + if (input.value === "") { + actions.onChange(null); + if (data.optionsRef.current) { + data.optionsRef.current.scrollTop = 0; + } + actions.goToOption(5 /* Nothing */); + } + }); + break; + case "Enter" /* Enter */: + isTyping.current = false; + if (data.comboboxState !== 0 /* Open */) + return; + if (isComposing.current) + return; + event.preventDefault(); + event.stopPropagation(); + if (data.activeOptionIndex === null) { + actions.closeCombobox(); + return; + } + actions.selectActiveOption(); + if (data.mode === 0 /* Single */) { + actions.closeCombobox(); + } + break; + case "ArrowDown" /* ArrowDown */: + isTyping.current = false; + event.preventDefault(); + event.stopPropagation(); + return match(data.comboboxState, { + [0 /* Open */]: () => { + actions.goToOption(2 /* Next */); + }, + [1 /* Closed */]: () => { + actions.openCombobox(); + } + }); + case "ArrowUp" /* ArrowUp */: + isTyping.current = false; + event.preventDefault(); + event.stopPropagation(); + return match(data.comboboxState, { + [0 /* Open */]: () => { + actions.goToOption(1 /* Previous */); + }, + [1 /* Closed */]: () => { + actions.openCombobox(); + d.nextFrame(() => { + if (!data.value) { + actions.goToOption(3 /* Last */); + } + }); + } + }); + case "Home" /* Home */: + if (event.shiftKey) { + break; + } + isTyping.current = false; + event.preventDefault(); + event.stopPropagation(); + return actions.goToOption(0 /* First */); + case "PageUp" /* PageUp */: + isTyping.current = false; + event.preventDefault(); + event.stopPropagation(); + return actions.goToOption(0 /* First */); + case "End" /* End */: + if (event.shiftKey) { + break; + } + isTyping.current = false; + event.preventDefault(); + event.stopPropagation(); + return actions.goToOption(3 /* Last */); + case "PageDown" /* PageDown */: + isTyping.current = false; + event.preventDefault(); + event.stopPropagation(); + return actions.goToOption(3 /* Last */); + case "Escape" /* Escape */: + isTyping.current = false; + if (data.comboboxState !== 0 /* Open */) + return; + event.preventDefault(); + if (data.optionsRef.current && !data.optionsPropsRef.current.static) { + event.stopPropagation(); + } + return actions.closeCombobox(); + case "Tab" /* Tab */: + isTyping.current = false; + if (data.comboboxState !== 0 /* Open */) + return; + if (data.mode === 0 /* Single */) + actions.selectActiveOption(); + actions.closeCombobox(); + break; + } + }); + let handleChange = useEvent((event) => { + if (isComposing.current) { + composedChangeEvent.current = event; + return; + } + actions.openCombobox(); + onChange == null ? void 0 : onChange(event); + }); + let handleBlur = useEvent(() => { + isTyping.current = false; + }); + let labelledby = useComputed(() => { + if (!data.labelId) + return void 0; + return [data.labelId].join(" "); + }, [data.labelId]); + let slot = (0, import_react19.useMemo)( + () => ({ open: data.comboboxState === 0 /* Open */, disabled: data.disabled }), + [data] + ); + let ourProps = { + ref: inputRef, + id, + role: "combobox", + type, + "aria-controls": (_a3 = data.optionsRef.current) == null ? void 0 : _a3.id, + "aria-expanded": data.disabled ? void 0 : data.comboboxState === 0 /* Open */, + "aria-activedescendant": data.activeOptionIndex === null ? void 0 : (_b = data.options[data.activeOptionIndex]) == null ? void 0 : _b.id, + "aria-labelledby": labelledby, + "aria-autocomplete": "list", + defaultValue: (_d = (_c = props.defaultValue) != null ? _c : data.defaultValue !== void 0 ? displayValue == null ? void 0 : displayValue(data.defaultValue) : null) != null ? _d : data.defaultValue, + disabled: data.disabled, + onCompositionStart: handleCompositionStart, + onCompositionEnd: handleCompositionEnd, + onKeyDown: handleKeyDown, + onChange: handleChange, + onBlur: handleBlur + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_INPUT_TAG, + name: "Combobox.Input" + }); +} +var DEFAULT_BUTTON_TAG = "button"; +function ButtonFn(props, ref) { + var _a3; + let data = useData("Combobox.Button"); + let actions = useActions("Combobox.Button"); + let buttonRef = useSyncRefs(data.buttonRef, ref); + let internalId = useId(); + let { id = `headlessui-combobox-button-${internalId}`, ...theirProps } = props; + let d = useDisposables(); + let handleKeyDown = useEvent((event) => { + switch (event.key) { + case "ArrowDown" /* ArrowDown */: + event.preventDefault(); + event.stopPropagation(); + if (data.comboboxState === 1 /* Closed */) { + actions.openCombobox(); + } + return d.nextFrame(() => { + var _a4; + return (_a4 = data.inputRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); + }); + case "ArrowUp" /* ArrowUp */: + event.preventDefault(); + event.stopPropagation(); + if (data.comboboxState === 1 /* Closed */) { + actions.openCombobox(); + d.nextFrame(() => { + if (!data.value) { + actions.goToOption(3 /* Last */); + } + }); + } + return d.nextFrame(() => { + var _a4; + return (_a4 = data.inputRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); + }); + case "Escape" /* Escape */: + if (data.comboboxState !== 0 /* Open */) + return; + event.preventDefault(); + if (data.optionsRef.current && !data.optionsPropsRef.current.static) { + event.stopPropagation(); + } + actions.closeCombobox(); + return d.nextFrame(() => { + var _a4; + return (_a4 = data.inputRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); + }); + default: + return; + } + }); + let handleClick = useEvent((event) => { + if (isDisabledReactIssue7711(event.currentTarget)) + return event.preventDefault(); + if (data.comboboxState === 0 /* Open */) { + actions.closeCombobox(); + } else { + event.preventDefault(); + actions.openCombobox(); + } + d.nextFrame(() => { + var _a4; + return (_a4 = data.inputRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); + }); + }); + let labelledby = useComputed(() => { + if (!data.labelId) + return void 0; + return [data.labelId, id].join(" "); + }, [data.labelId, id]); + let slot = (0, import_react19.useMemo)( + () => ({ + open: data.comboboxState === 0 /* Open */, + disabled: data.disabled, + value: data.value + }), + [data] + ); + let ourProps = { + ref: buttonRef, + id, + type: useResolveButtonType(props, data.buttonRef), + tabIndex: -1, + "aria-haspopup": "listbox", + "aria-controls": (_a3 = data.optionsRef.current) == null ? void 0 : _a3.id, + "aria-expanded": data.disabled ? void 0 : data.comboboxState === 0 /* Open */, + "aria-labelledby": labelledby, + disabled: data.disabled, + onClick: handleClick, + onKeyDown: handleKeyDown + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_BUTTON_TAG, + name: "Combobox.Button" + }); +} +var DEFAULT_LABEL_TAG = "label"; +function LabelFn(props, ref) { + let internalId = useId(); + let { id = `headlessui-combobox-label-${internalId}`, ...theirProps } = props; + let data = useData("Combobox.Label"); + let actions = useActions("Combobox.Label"); + let labelRef = useSyncRefs(data.labelRef, ref); + useIsoMorphicEffect(() => actions.registerLabel(id), [id]); + let handleClick = useEvent(() => { + var _a3; + return (_a3 = data.inputRef.current) == null ? void 0 : _a3.focus({ preventScroll: true }); + }); + let slot = (0, import_react19.useMemo)( + () => ({ open: data.comboboxState === 0 /* Open */, disabled: data.disabled }), + [data] + ); + let ourProps = { ref: labelRef, id, onClick: handleClick }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_LABEL_TAG, + name: "Combobox.Label" + }); +} +var DEFAULT_OPTIONS_TAG = "ul"; +var OptionsRenderFeatures = 1 /* RenderStrategy */ | 2 /* Static */; +function OptionsFn(props, ref) { + let internalId = useId(); + let { id = `headlessui-combobox-options-${internalId}`, hold = false, ...theirProps } = props; + let data = useData("Combobox.Options"); + let optionsRef = useSyncRefs(data.optionsRef, ref); + let usesOpenClosedState = useOpenClosed(); + let visible = (() => { + if (usesOpenClosedState !== null) { + return (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; + } + return data.comboboxState === 0 /* Open */; + })(); + useIsoMorphicEffect(() => { + var _a3; + data.optionsPropsRef.current.static = (_a3 = props.static) != null ? _a3 : false; + }, [data.optionsPropsRef, props.static]); + useIsoMorphicEffect(() => { + data.optionsPropsRef.current.hold = hold; + }, [data.optionsPropsRef, hold]); + useTreeWalker({ + container: data.optionsRef.current, + enabled: data.comboboxState === 0 /* Open */, + accept(node) { + if (node.getAttribute("role") === "option") + return NodeFilter.FILTER_REJECT; + if (node.hasAttribute("role")) + return NodeFilter.FILTER_SKIP; + return NodeFilter.FILTER_ACCEPT; + }, + walk(node) { + node.setAttribute("role", "none"); + } + }); + let labelledby = useComputed( + () => { + var _a3, _b; + return (_b = data.labelId) != null ? _b : (_a3 = data.buttonRef.current) == null ? void 0 : _a3.id; + }, + [data.labelId, data.buttonRef.current] + ); + let slot = (0, import_react19.useMemo)( + () => ({ open: data.comboboxState === 0 /* Open */ }), + [data] + ); + let ourProps = { + "aria-labelledby": labelledby, + role: "listbox", + "aria-multiselectable": data.mode === 1 /* Multi */ ? true : void 0, + id, + ref: optionsRef + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_OPTIONS_TAG, + features: OptionsRenderFeatures, + visible, + name: "Combobox.Options" + }); +} +var DEFAULT_OPTION_TAG = "li"; +function OptionFn(props, ref) { + var _a3, _b; + let internalId = useId(); + let { + id = `headlessui-combobox-option-${internalId}`, + disabled = false, + value, + ...theirProps + } = props; + let data = useData("Combobox.Option"); + let actions = useActions("Combobox.Option"); + let active = data.activeOptionIndex !== null ? data.options[data.activeOptionIndex].id === id : false; + let selected = data.isSelected(value); + let internalOptionRef = (0, import_react19.useRef)(null); + let bag = useLatestValue({ + disabled, + value, + domRef: internalOptionRef, + textValue: (_b = (_a3 = internalOptionRef.current) == null ? void 0 : _a3.textContent) == null ? void 0 : _b.toLowerCase() + }); + let optionRef = useSyncRefs(ref, internalOptionRef); + let select = useEvent(() => actions.selectOption(id)); + useIsoMorphicEffect(() => actions.registerOption(id, bag), [bag, id]); + let enableScrollIntoView = (0, import_react19.useRef)(data.__demoMode ? false : true); + useIsoMorphicEffect(() => { + if (!data.__demoMode) + return; + let d = disposables(); + d.requestAnimationFrame(() => { + enableScrollIntoView.current = true; + }); + return d.dispose; + }, []); + useIsoMorphicEffect(() => { + if (data.comboboxState !== 0 /* Open */) + return; + if (!active) + return; + if (!enableScrollIntoView.current) + return; + if (data.activationTrigger === 0 /* Pointer */) + return; + let d = disposables(); + d.requestAnimationFrame(() => { + var _a4, _b2; + (_b2 = (_a4 = internalOptionRef.current) == null ? void 0 : _a4.scrollIntoView) == null ? void 0 : _b2.call(_a4, { block: "nearest" }); + }); + return d.dispose; + }, [ + internalOptionRef, + active, + data.comboboxState, + data.activationTrigger, + /* We also want to trigger this when the position of the active item changes so that we can re-trigger the scrollIntoView */ + data.activeOptionIndex + ]); + let handleClick = useEvent((event) => { + if (disabled) + return event.preventDefault(); + select(); + if (data.mode === 0 /* Single */) { + actions.closeCombobox(); + } + if (!isMobile()) { + requestAnimationFrame(() => { + var _a4; + return (_a4 = data.inputRef.current) == null ? void 0 : _a4.focus(); + }); + } + }); + let handleFocus = useEvent(() => { + if (disabled) + return actions.goToOption(5 /* Nothing */); + actions.goToOption(4 /* Specific */, id); + }); + let pointer = useTrackedPointer(); + let handleEnter = useEvent((evt) => pointer.update(evt)); + let handleMove = useEvent((evt) => { + if (!pointer.wasMoved(evt)) + return; + if (disabled) + return; + if (active) + return; + actions.goToOption(4 /* Specific */, id, 0 /* Pointer */); + }); + let handleLeave = useEvent((evt) => { + if (!pointer.wasMoved(evt)) + return; + if (disabled) + return; + if (!active) + return; + if (data.optionsPropsRef.current.hold) + return; + actions.goToOption(5 /* Nothing */); + }); + let slot = (0, import_react19.useMemo)( + () => ({ active, selected, disabled }), + [active, selected, disabled] + ); + let ourProps = { + id, + ref: optionRef, + role: "option", + tabIndex: disabled === true ? void 0 : -1, + "aria-disabled": disabled === true ? true : void 0, + // According to the WAI-ARIA best practices, we should use aria-checked for + // multi-select,but Voice-Over disagrees. So we use aria-checked instead for + // both single and multi-select. + "aria-selected": selected, + disabled: void 0, + // Never forward the `disabled` prop + onClick: handleClick, + onFocus: handleFocus, + onPointerEnter: handleEnter, + onMouseEnter: handleEnter, + onPointerMove: handleMove, + onMouseMove: handleMove, + onPointerLeave: handleLeave, + onMouseLeave: handleLeave + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_OPTION_TAG, + name: "Combobox.Option" + }); +} +var ComboboxRoot = forwardRefWithAs(ComboboxFn); +var Button = forwardRefWithAs(ButtonFn); +var Input = forwardRefWithAs(InputFn); +var Label = forwardRefWithAs(LabelFn); +var Options = forwardRefWithAs(OptionsFn); +var Option = forwardRefWithAs(OptionFn); +var Combobox = Object.assign(ComboboxRoot, { Input, Button, Label, Options, Option }); + +// src/components/dialog/dialog.tsx +var import_react31 = __toESM(__webpack_require__(/*! react */ "react"), 1); + +// src/components/focus-trap/focus-trap.tsx +var import_react25 = __toESM(__webpack_require__(/*! react */ "react"), 1); + +// src/hooks/use-tab-direction.ts +var import_react20 = __webpack_require__(/*! react */ "react"); +function useTabDirection() { + let direction = (0, import_react20.useRef)(0 /* Forwards */); + useWindowEvent( + "keydown", + (event) => { + if (event.key === "Tab") { + direction.current = event.shiftKey ? 1 /* Backwards */ : 0 /* Forwards */; + } + }, + true + ); + return direction; +} + +// src/hooks/use-is-mounted.ts +var import_react21 = __webpack_require__(/*! react */ "react"); +function useIsMounted() { + let mounted = (0, import_react21.useRef)(false); + useIsoMorphicEffect(() => { + mounted.current = true; + return () => { + mounted.current = false; + }; + }, []); + return mounted; +} + +// src/hooks/use-owner.ts +var import_react22 = __webpack_require__(/*! react */ "react"); +function useOwnerDocument(...args) { + return (0, import_react22.useMemo)(() => getOwnerDocument(...args), [...args]); +} + +// src/hooks/use-event-listener.ts +var import_react23 = __webpack_require__(/*! react */ "react"); +function useEventListener(element, type, listener, options) { + let listenerRef = useLatestValue(listener); + (0, import_react23.useEffect)(() => { + element = element != null ? element : window; + function handler(event) { + listenerRef.current(event); + } + element.addEventListener(type, handler, options); + return () => element.removeEventListener(type, handler, options); + }, [element, type, options]); +} + +// src/utils/document-ready.ts +function onDocumentReady(cb) { + function check() { + if (document.readyState === "loading") + return; + cb(); + document.removeEventListener("DOMContentLoaded", check); + } + if (typeof window !== "undefined" && typeof document !== "undefined") { + document.addEventListener("DOMContentLoaded", check); + check(); + } +} + +// src/hooks/use-on-unmount.ts +var import_react24 = __webpack_require__(/*! react */ "react"); +function useOnUnmount(cb) { + let stableCb = useEvent(cb); + let trulyUnmounted = (0, import_react24.useRef)(false); + (0, import_react24.useEffect)(() => { + trulyUnmounted.current = false; + return () => { + trulyUnmounted.current = true; + microTask(() => { + if (!trulyUnmounted.current) + return; + stableCb(); + }); + }; + }, [stableCb]); +} + +// src/components/focus-trap/focus-trap.tsx +function resolveContainers(containers) { + if (!containers) + return /* @__PURE__ */ new Set(); + if (typeof containers === "function") + return new Set(containers()); + let all = /* @__PURE__ */ new Set(); + for (let container of containers.current) { + if (container.current instanceof HTMLElement) { + all.add(container.current); + } + } + return all; +} +var DEFAULT_FOCUS_TRAP_TAG = "div"; +var Features3 = /* @__PURE__ */ ((Features4) => { + Features4[Features4["None"] = 1] = "None"; + Features4[Features4["InitialFocus"] = 2] = "InitialFocus"; + Features4[Features4["TabLock"] = 4] = "TabLock"; + Features4[Features4["FocusLock"] = 8] = "FocusLock"; + Features4[Features4["RestoreFocus"] = 16] = "RestoreFocus"; + Features4[Features4["All"] = 30] = "All"; + return Features4; +})(Features3 || {}); +function FocusTrapFn(props, ref) { + let container = (0, import_react25.useRef)(null); + let focusTrapRef = useSyncRefs(container, ref); + let { initialFocus, containers, features = 30 /* All */, ...theirProps } = props; + if (!useServerHandoffComplete()) { + features = 1 /* None */; + } + let ownerDocument = useOwnerDocument(container); + useRestoreFocus({ ownerDocument }, Boolean(features & 16 /* RestoreFocus */)); + let previousActiveElement = useInitialFocus( + { ownerDocument, container, initialFocus }, + Boolean(features & 2 /* InitialFocus */) + ); + useFocusLock( + { ownerDocument, container, containers, previousActiveElement }, + Boolean(features & 8 /* FocusLock */) + ); + let direction = useTabDirection(); + let handleFocus = useEvent((e) => { + let el = container.current; + if (!el) + return; + let wrapper = false ? 0 : (cb) => cb(); + wrapper(() => { + match(direction.current, { + [0 /* Forwards */]: () => { + focusIn(el, 1 /* First */, { skipElements: [e.relatedTarget] }); + }, + [1 /* Backwards */]: () => { + focusIn(el, 8 /* Last */, { skipElements: [e.relatedTarget] }); + } + }); + }); + }); + let d = useDisposables(); + let recentlyUsedTabKey = (0, import_react25.useRef)(false); + let ourProps = { + ref: focusTrapRef, + onKeyDown(e) { + if (e.key == "Tab") { + recentlyUsedTabKey.current = true; + d.requestAnimationFrame(() => { + recentlyUsedTabKey.current = false; + }); + } + }, + onBlur(e) { + let allContainers = resolveContainers(containers); + if (container.current instanceof HTMLElement) + allContainers.add(container.current); + let relatedTarget = e.relatedTarget; + if (!(relatedTarget instanceof HTMLElement)) + return; + if (relatedTarget.dataset.headlessuiFocusGuard === "true") { + return; + } + if (!contains(allContainers, relatedTarget)) { + if (recentlyUsedTabKey.current) { + focusIn( + container.current, + match(direction.current, { + [0 /* Forwards */]: () => 4 /* Next */, + [1 /* Backwards */]: () => 2 /* Previous */ + }) | 16 /* WrapAround */, + { relativeTo: e.target } + ); + } else if (e.target instanceof HTMLElement) { + focusElement(e.target); + } + } + } + }; + return /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, Boolean(features & 4 /* TabLock */) && /* @__PURE__ */ import_react25.default.createElement( + Hidden, + { + as: "button", + type: "button", + "data-headlessui-focus-guard": true, + onFocus: handleFocus, + features: 2 /* Focusable */ + } + ), render({ + ourProps, + theirProps, + defaultTag: DEFAULT_FOCUS_TRAP_TAG, + name: "FocusTrap" + }), Boolean(features & 4 /* TabLock */) && /* @__PURE__ */ import_react25.default.createElement( + Hidden, + { + as: "button", + type: "button", + "data-headlessui-focus-guard": true, + onFocus: handleFocus, + features: 2 /* Focusable */ + } + )); +} +var FocusTrapRoot = forwardRefWithAs(FocusTrapFn); +var FocusTrap = Object.assign(FocusTrapRoot, { + features: Features3 +}); +var history = []; +onDocumentReady(() => { + function handle(e) { + if (!(e.target instanceof HTMLElement)) + return; + if (e.target === document.body) + return; + if (history[0] === e.target) + return; + history.unshift(e.target); + history = history.filter((x) => x != null && x.isConnected); + history.splice(10); + } + window.addEventListener("click", handle, { capture: true }); + window.addEventListener("mousedown", handle, { capture: true }); + window.addEventListener("focus", handle, { capture: true }); + document.body.addEventListener("click", handle, { capture: true }); + document.body.addEventListener("mousedown", handle, { capture: true }); + document.body.addEventListener("focus", handle, { capture: true }); +}); +function useRestoreElement(enabled = true) { + let localHistory = (0, import_react25.useRef)(history.slice()); + useWatch( + ([newEnabled], [oldEnabled]) => { + if (oldEnabled === true && newEnabled === false) { + microTask(() => { + localHistory.current.splice(0); + }); + } + if (oldEnabled === false && newEnabled === true) { + localHistory.current = history.slice(); + } + }, + [enabled, history, localHistory] + ); + return useEvent(() => { + var _a3; + return (_a3 = localHistory.current.find((x) => x != null && x.isConnected)) != null ? _a3 : null; + }); +} +function useRestoreFocus({ ownerDocument }, enabled) { + let getRestoreElement = useRestoreElement(enabled); + useWatch(() => { + if (enabled) + return; + if ((ownerDocument == null ? void 0 : ownerDocument.activeElement) === (ownerDocument == null ? void 0 : ownerDocument.body)) { + focusElement(getRestoreElement()); + } + }, [enabled]); + useOnUnmount(() => { + if (!enabled) + return; + focusElement(getRestoreElement()); + }); +} +function useInitialFocus({ + ownerDocument, + container, + initialFocus +}, enabled) { + let previousActiveElement = (0, import_react25.useRef)(null); + let mounted = useIsMounted(); + useWatch(() => { + if (!enabled) + return; + let containerElement = container.current; + if (!containerElement) + return; + microTask(() => { + if (!mounted.current) { + return; + } + let activeElement = ownerDocument == null ? void 0 : ownerDocument.activeElement; + if (initialFocus == null ? void 0 : initialFocus.current) { + if ((initialFocus == null ? void 0 : initialFocus.current) === activeElement) { + previousActiveElement.current = activeElement; + return; + } + } else if (containerElement.contains(activeElement)) { + previousActiveElement.current = activeElement; + return; + } + if (initialFocus == null ? void 0 : initialFocus.current) { + focusElement(initialFocus.current); + } else { + if (focusIn(containerElement, 1 /* First */) === 0 /* Error */) { + console.warn("There are no focusable elements inside the "); + } + } + previousActiveElement.current = ownerDocument == null ? void 0 : ownerDocument.activeElement; + }); + }, [enabled]); + return previousActiveElement; +} +function useFocusLock({ + ownerDocument, + container, + containers, + previousActiveElement +}, enabled) { + let mounted = useIsMounted(); + useEventListener( + ownerDocument == null ? void 0 : ownerDocument.defaultView, + "focus", + (event) => { + if (!enabled) + return; + if (!mounted.current) + return; + let allContainers = resolveContainers(containers); + if (container.current instanceof HTMLElement) + allContainers.add(container.current); + let previous = previousActiveElement.current; + if (!previous) + return; + let toElement = event.target; + if (toElement && toElement instanceof HTMLElement) { + if (!contains(allContainers, toElement)) { + event.preventDefault(); + event.stopPropagation(); + focusElement(previous); + } else { + previousActiveElement.current = toElement; + focusElement(toElement); + } + } else { + focusElement(previousActiveElement.current); + } + }, + true + ); +} +function contains(containers, element) { + for (let container of containers) { + if (container.contains(element)) + return true; + } + return false; +} + +// src/components/portal/portal.tsx +var import_react27 = __toESM(__webpack_require__(/*! react */ "react"), 1); +var import_react_dom = __webpack_require__(/*! react-dom */ "react-dom"); + +// src/internal/portal-force-root.tsx +var import_react26 = __toESM(__webpack_require__(/*! react */ "react"), 1); +var ForcePortalRootContext = (0, import_react26.createContext)(false); +function usePortalRoot() { + return (0, import_react26.useContext)(ForcePortalRootContext); +} +function ForcePortalRoot(props) { + return /* @__PURE__ */ import_react26.default.createElement(ForcePortalRootContext.Provider, { value: props.force }, props.children); +} + +// src/components/portal/portal.tsx +function usePortalTarget(ref) { + let forceInRoot = usePortalRoot(); + let groupTarget = (0, import_react27.useContext)(PortalGroupContext); + let ownerDocument = useOwnerDocument(ref); + let [target, setTarget] = (0, import_react27.useState)(() => { + if (!forceInRoot && groupTarget !== null) + return null; + if (env.isServer) + return null; + let existingRoot = ownerDocument == null ? void 0 : ownerDocument.getElementById("headlessui-portal-root"); + if (existingRoot) + return existingRoot; + if (ownerDocument === null) + return null; + let root = ownerDocument.createElement("div"); + root.setAttribute("id", "headlessui-portal-root"); + return ownerDocument.body.appendChild(root); + }); + (0, import_react27.useEffect)(() => { + if (target === null) + return; + if (!(ownerDocument == null ? void 0 : ownerDocument.body.contains(target))) { + ownerDocument == null ? void 0 : ownerDocument.body.appendChild(target); + } + }, [target, ownerDocument]); + (0, import_react27.useEffect)(() => { + if (forceInRoot) + return; + if (groupTarget === null) + return; + setTarget(groupTarget.current); + }, [groupTarget, setTarget, forceInRoot]); + return target; +} +var DEFAULT_PORTAL_TAG = import_react27.Fragment; +function PortalFn(props, ref) { + let theirProps = props; + let internalPortalRootRef = (0, import_react27.useRef)(null); + let portalRef = useSyncRefs( + optionalRef((ref2) => { + internalPortalRootRef.current = ref2; + }), + ref + ); + let ownerDocument = useOwnerDocument(internalPortalRootRef); + let target = usePortalTarget(internalPortalRootRef); + let [element] = (0, import_react27.useState)( + () => { + var _a3; + return env.isServer ? null : (_a3 = ownerDocument == null ? void 0 : ownerDocument.createElement("div")) != null ? _a3 : null; + } + ); + let parent = (0, import_react27.useContext)(PortalParentContext); + let ready = useServerHandoffComplete(); + useIsoMorphicEffect(() => { + if (!target || !element) + return; + if (!target.contains(element)) { + element.setAttribute("data-headlessui-portal", ""); + target.appendChild(element); + } + }, [target, element]); + useIsoMorphicEffect(() => { + if (!element) + return; + if (!parent) + return; + return parent.register(element); + }, [parent, element]); + useOnUnmount(() => { + var _a3; + if (!target || !element) + return; + if (element instanceof Node && target.contains(element)) { + target.removeChild(element); + } + if (target.childNodes.length <= 0) { + (_a3 = target.parentElement) == null ? void 0 : _a3.removeChild(target); + } + }); + if (!ready) + return null; + let ourProps = { ref: portalRef }; + return !target || !element ? null : (0, import_react_dom.createPortal)( + render({ + ourProps, + theirProps, + defaultTag: DEFAULT_PORTAL_TAG, + name: "Portal" + }), + element + ); +} +var DEFAULT_GROUP_TAG = import_react27.Fragment; +var PortalGroupContext = (0, import_react27.createContext)(null); +function GroupFn(props, ref) { + let { target, ...theirProps } = props; + let groupRef = useSyncRefs(ref); + let ourProps = { ref: groupRef }; + return /* @__PURE__ */ import_react27.default.createElement(PortalGroupContext.Provider, { value: target }, render({ + ourProps, + theirProps, + defaultTag: DEFAULT_GROUP_TAG, + name: "Popover.Group" + })); +} +var PortalParentContext = (0, import_react27.createContext)(null); +function useNestedPortals() { + let parent = (0, import_react27.useContext)(PortalParentContext); + let portals = (0, import_react27.useRef)([]); + let register = useEvent((portal) => { + portals.current.push(portal); + if (parent) + parent.register(portal); + return () => unregister(portal); + }); + let unregister = useEvent((portal) => { + let idx = portals.current.indexOf(portal); + if (idx !== -1) + portals.current.splice(idx, 1); + if (parent) + parent.unregister(portal); + }); + let api = (0, import_react27.useMemo)( + () => ({ register, unregister, portals }), + [register, unregister, portals] + ); + return [ + portals, + (0, import_react27.useMemo)(() => { + return function PortalWrapper({ children }) { + return /* @__PURE__ */ import_react27.default.createElement(PortalParentContext.Provider, { value: api }, children); + }; + }, [api]) + ]; +} +var PortalRoot = forwardRefWithAs(PortalFn); +var Group = forwardRefWithAs(GroupFn); +var Portal = Object.assign(PortalRoot, { Group }); + +// src/components/description/description.tsx +var import_react28 = __toESM(__webpack_require__(/*! react */ "react"), 1); +var DescriptionContext = (0, import_react28.createContext)(null); +function useDescriptionContext() { + let context = (0, import_react28.useContext)(DescriptionContext); + if (context === null) { + let err = new Error( + "You used a component, but it is not inside a relevant parent." + ); + if (Error.captureStackTrace) + Error.captureStackTrace(err, useDescriptionContext); + throw err; + } + return context; +} +function useDescriptions() { + let [descriptionIds, setDescriptionIds] = (0, import_react28.useState)([]); + return [ + // The actual id's as string or undefined + descriptionIds.length > 0 ? descriptionIds.join(" ") : void 0, + // The provider component + (0, import_react28.useMemo)(() => { + return function DescriptionProvider(props) { + let register = useEvent((value) => { + setDescriptionIds((existing) => [...existing, value]); + return () => setDescriptionIds((existing) => { + let clone = existing.slice(); + let idx = clone.indexOf(value); + if (idx !== -1) + clone.splice(idx, 1); + return clone; + }); + }); + let contextBag = (0, import_react28.useMemo)( + () => ({ register, slot: props.slot, name: props.name, props: props.props }), + [register, props.slot, props.name, props.props] + ); + return /* @__PURE__ */ import_react28.default.createElement(DescriptionContext.Provider, { value: contextBag }, props.children); + }; + }, [setDescriptionIds]) + ]; +} +var DEFAULT_DESCRIPTION_TAG = "p"; +function DescriptionFn(props, ref) { + let internalId = useId(); + let { id = `headlessui-description-${internalId}`, ...theirProps } = props; + let context = useDescriptionContext(); + let descriptionRef = useSyncRefs(ref); + useIsoMorphicEffect(() => context.register(id), [id, context.register]); + let ourProps = { ref: descriptionRef, ...context.props, id }; + return render({ + ourProps, + theirProps, + slot: context.slot || {}, + defaultTag: DEFAULT_DESCRIPTION_TAG, + name: context.name || "Description" + }); +} +var DescriptionRoot = forwardRefWithAs(DescriptionFn); +var Description = Object.assign(DescriptionRoot, { + // +}); + +// src/internal/stack-context.tsx +var import_react29 = __toESM(__webpack_require__(/*! react */ "react"), 1); +var StackContext = (0, import_react29.createContext)(() => { +}); +StackContext.displayName = "StackContext"; +function useStackContext() { + return (0, import_react29.useContext)(StackContext); +} +function StackProvider({ + children, + onUpdate, + type, + element, + enabled +}) { + let parentUpdate = useStackContext(); + let notify = useEvent((...args) => { + onUpdate == null ? void 0 : onUpdate(...args); + parentUpdate(...args); + }); + useIsoMorphicEffect(() => { + let shouldNotify = enabled === void 0 || enabled === true; + shouldNotify && notify(0 /* Add */, type, element); + return () => { + shouldNotify && notify(1 /* Remove */, type, element); + }; + }, [notify, type, element, enabled]); + return /* @__PURE__ */ import_react29.default.createElement(StackContext.Provider, { value: notify }, children); +} + +// src/use-sync-external-store-shim/index.ts +var React11 = __toESM(__webpack_require__(/*! react */ "react"), 1); + +// src/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts +var React10 = __toESM(__webpack_require__(/*! react */ "react"), 1); +function isPolyfill(x, y) { + return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y; +} +var is = typeof Object.is === "function" ? Object.is : isPolyfill; +var { useState: useState8, useEffect: useEffect14, useLayoutEffect: useLayoutEffect2, useDebugValue } = React10; +var didWarnOld18Alpha = false; +var didWarnUncachedGetSnapshot = false; +function useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) { + if (true) { + if (!didWarnOld18Alpha) { + if ("startTransition" in React10) { + didWarnOld18Alpha = true; + console.error( + "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release." + ); + } + } + } + const value = getSnapshot(); + if (true) { + if (!didWarnUncachedGetSnapshot) { + const cachedValue = getSnapshot(); + if (!is(value, cachedValue)) { + console.error("The result of getSnapshot should be cached to avoid an infinite loop"); + didWarnUncachedGetSnapshot = true; + } + } + } + const [{ inst }, forceUpdate] = useState8({ inst: { value, getSnapshot } }); + useLayoutEffect2(() => { + inst.value = value; + inst.getSnapshot = getSnapshot; + if (checkIfSnapshotChanged(inst)) { + forceUpdate({ inst }); + } + }, [subscribe, value, getSnapshot]); + useEffect14(() => { + if (checkIfSnapshotChanged(inst)) { + forceUpdate({ inst }); + } + const handleStoreChange = () => { + if (checkIfSnapshotChanged(inst)) { + forceUpdate({ inst }); + } + }; + return subscribe(handleStoreChange); + }, [subscribe]); + useDebugValue(value); + return value; +} +function checkIfSnapshotChanged(inst) { + const latestGetSnapshot = inst.getSnapshot; + const prevValue = inst.value; + try { + const nextValue = latestGetSnapshot(); + return !is(prevValue, nextValue); + } catch (error) { + return true; + } +} + +// src/use-sync-external-store-shim/useSyncExternalStoreShimServer.ts +function useSyncExternalStore2(subscribe, getSnapshot, getServerSnapshot) { + return getSnapshot(); +} + +// src/use-sync-external-store-shim/index.ts +var canUseDOM = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"); +var isServerEnvironment = !canUseDOM; +var shim = isServerEnvironment ? useSyncExternalStore2 : useSyncExternalStore; +var useSyncExternalStore3 = "useSyncExternalStore" in React11 ? ((r) => r.useSyncExternalStore)(React11) : shim; + +// src/hooks/use-store.ts +function useStore(store) { + return useSyncExternalStore3(store.subscribe, store.getSnapshot, store.getSnapshot); +} + +// src/utils/store.ts +function createStore(initial, actions) { + let state = initial(); + let listeners = /* @__PURE__ */ new Set(); + return { + getSnapshot() { + return state; + }, + subscribe(onChange) { + listeners.add(onChange); + return () => listeners.delete(onChange); + }, + dispatch(key, ...args) { + let newState = actions[key].call(state, ...args); + if (newState) { + state = newState; + listeners.forEach((listener) => listener()); + } + } + }; +} + +// src/hooks/document-overflow/adjust-scrollbar-padding.ts +function adjustScrollbarPadding() { + let scrollbarWidthBefore; + return { + before({ doc }) { + var _a3; + let documentElement = doc.documentElement; + let ownerWindow = (_a3 = doc.defaultView) != null ? _a3 : window; + scrollbarWidthBefore = ownerWindow.innerWidth - documentElement.clientWidth; + }, + after({ doc, d }) { + let documentElement = doc.documentElement; + let scrollbarWidthAfter = documentElement.clientWidth - documentElement.offsetWidth; + let scrollbarWidth = scrollbarWidthBefore - scrollbarWidthAfter; + d.style(documentElement, "paddingRight", `${scrollbarWidth}px`); + } + }; +} + +// src/hooks/document-overflow/handle-ios-locking.ts +function handleIOSLocking() { + if (!isIOS()) { + return {}; + } + let scrollPosition; + return { + before() { + scrollPosition = window.pageYOffset; + }, + after({ doc, d, meta }) { + function inAllowedContainer(el) { + return meta.containers.flatMap((resolve) => resolve()).some((container) => container.contains(el)); + } + d.style(doc.body, "marginTop", `-${scrollPosition}px`); + window.scrollTo(0, 0); + let scrollToElement = null; + d.addEventListener( + doc, + "click", + (e) => { + if (!(e.target instanceof HTMLElement)) { + return; + } + try { + let anchor = e.target.closest("a"); + if (!anchor) + return; + let { hash } = new URL(anchor.href); + let el = doc.querySelector(hash); + if (el && !inAllowedContainer(el)) { + scrollToElement = el; + } + } catch (err) { + } + }, + true + ); + d.addEventListener( + doc, + "touchmove", + (e) => { + if (e.target instanceof HTMLElement && !inAllowedContainer(e.target)) { + e.preventDefault(); + } + }, + { passive: false } + ); + d.add(() => { + window.scrollTo(0, window.pageYOffset + scrollPosition); + if (scrollToElement && scrollToElement.isConnected) { + scrollToElement.scrollIntoView({ block: "nearest" }); + scrollToElement = null; + } + }); + } + }; +} + +// src/hooks/document-overflow/prevent-scroll.ts +function preventScroll() { + return { + before({ doc, d }) { + d.style(doc.documentElement, "overflow", "hidden"); + } + }; +} + +// src/hooks/document-overflow/overflow-store.ts +function buildMeta(fns) { + let tmp = {}; + for (let fn of fns) { + Object.assign(tmp, fn(tmp)); + } + return tmp; +} +var overflows = createStore(() => /* @__PURE__ */ new Map(), { + PUSH(doc, meta) { + var _a3; + let entry = (_a3 = this.get(doc)) != null ? _a3 : { + doc, + count: 0, + d: disposables(), + meta: /* @__PURE__ */ new Set() + }; + entry.count++; + entry.meta.add(meta); + this.set(doc, entry); + return this; + }, + POP(doc, meta) { + let entry = this.get(doc); + if (entry) { + entry.count--; + entry.meta.delete(meta); + } + return this; + }, + SCROLL_PREVENT({ doc, d, meta }) { + let ctx = { + doc, + d, + meta: buildMeta(meta) + }; + let steps = [ + handleIOSLocking(), + adjustScrollbarPadding(), + preventScroll() + ]; + steps.forEach(({ before }) => before == null ? void 0 : before(ctx)); + steps.forEach(({ after }) => after == null ? void 0 : after(ctx)); + }, + SCROLL_ALLOW({ d }) { + d.dispose(); + }, + TEARDOWN({ doc }) { + this.delete(doc); + } +}); +overflows.subscribe(() => { + let docs = overflows.getSnapshot(); + let styles = /* @__PURE__ */ new Map(); + for (let [doc] of docs) { + styles.set(doc, doc.documentElement.style.overflow); + } + for (let entry of docs.values()) { + let isHidden = styles.get(entry.doc) === "hidden"; + let isLocked = entry.count !== 0; + let willChange = isLocked && !isHidden || !isLocked && isHidden; + if (willChange) { + overflows.dispatch(entry.count > 0 ? "SCROLL_PREVENT" : "SCROLL_ALLOW", entry); + } + if (entry.count === 0) { + overflows.dispatch("TEARDOWN", entry); + } + } +}); + +// src/hooks/document-overflow/use-document-overflow.ts +function useDocumentOverflowLockedEffect(doc, shouldBeLocked, meta) { + let store = useStore(overflows); + let entry = doc ? store.get(doc) : void 0; + let locked = entry ? entry.count > 0 : false; + useIsoMorphicEffect(() => { + if (!doc || !shouldBeLocked) { + return; + } + overflows.dispatch("PUSH", doc, meta); + return () => overflows.dispatch("POP", doc, meta); + }, [shouldBeLocked, doc]); + return locked; +} + +// src/hooks/use-inert.tsx +var originals = /* @__PURE__ */ new Map(); +var counts = /* @__PURE__ */ new Map(); +function useInert(node, enabled = true) { + useIsoMorphicEffect(() => { + var _a3; + if (!enabled) + return; + let element = typeof node === "function" ? node() : node.current; + if (!element) + return; + function cleanup() { + var _a4; + if (!element) + return; + let count2 = (_a4 = counts.get(element)) != null ? _a4 : 1; + if (count2 === 1) + counts.delete(element); + else + counts.set(element, count2 - 1); + if (count2 !== 1) + return; + let original = originals.get(element); + if (!original) + return; + if (original["aria-hidden"] === null) + element.removeAttribute("aria-hidden"); + else + element.setAttribute("aria-hidden", original["aria-hidden"]); + element.inert = original.inert; + originals.delete(element); + } + let count = (_a3 = counts.get(element)) != null ? _a3 : 0; + counts.set(element, count + 1); + if (count !== 0) + return cleanup; + originals.set(element, { + "aria-hidden": element.getAttribute("aria-hidden"), + inert: element.inert + }); + element.setAttribute("aria-hidden", "true"); + element.inert = true; + return cleanup; + }, [node, enabled]); +} + +// src/hooks/use-root-containers.tsx +var import_react30 = __toESM(__webpack_require__(/*! react */ "react"), 1); +function useRootContainers({ + defaultContainers = [], + portals +} = {}) { + let mainTreeNodeRef = (0, import_react30.useRef)(null); + let ownerDocument = useOwnerDocument(mainTreeNodeRef); + let resolveContainers2 = useEvent(() => { + var _a3; + let containers = []; + for (let container of defaultContainers) { + if (container === null) + continue; + if (container instanceof HTMLElement) { + containers.push(container); + } else if ("current" in container && container.current instanceof HTMLElement) { + containers.push(container.current); + } + } + if (portals == null ? void 0 : portals.current) { + for (let portal of portals.current) { + containers.push(portal); + } + } + for (let container of (_a3 = ownerDocument == null ? void 0 : ownerDocument.querySelectorAll("html > *, body > *")) != null ? _a3 : []) { + if (container === document.body) + continue; + if (container === document.head) + continue; + if (!(container instanceof HTMLElement)) + continue; + if (container.id === "headlessui-portal-root") + continue; + if (container.contains(mainTreeNodeRef.current)) + continue; + if (containers.some((defaultContainer) => container.contains(defaultContainer))) + continue; + containers.push(container); + } + return containers; + }); + return { + resolveContainers: resolveContainers2, + contains: useEvent( + (element) => resolveContainers2().some((container) => container.contains(element)) + ), + mainTreeNodeRef, + MainTreeNode: (0, import_react30.useMemo)(() => { + return function MainTreeNode() { + return /* @__PURE__ */ import_react30.default.createElement(Hidden, { features: 4 /* Hidden */, ref: mainTreeNodeRef }); + }; + }, [mainTreeNodeRef]) + }; +} + +// src/components/dialog/dialog.tsx +var reducers2 = { + [0 /* SetTitleId */](state, action) { + if (state.titleId === action.id) + return state; + return { ...state, titleId: action.id }; + } +}; +var DialogContext = (0, import_react31.createContext)(null); +DialogContext.displayName = "DialogContext"; +function useDialogContext(component) { + let context = (0, import_react31.useContext)(DialogContext); + if (context === null) { + let err = new Error(`<${component} /> is missing a parent component.`); + if (Error.captureStackTrace) + Error.captureStackTrace(err, useDialogContext); + throw err; + } + return context; +} +function useScrollLock(ownerDocument, enabled, resolveAllowedContainers = () => [document.body]) { + useDocumentOverflowLockedEffect(ownerDocument, enabled, (meta) => { + var _a3; + return { + containers: [...(_a3 = meta.containers) != null ? _a3 : [], resolveAllowedContainers] + }; + }); +} +function stateReducer2(state, action) { + return match(action.type, reducers2, state, action); +} +var DEFAULT_DIALOG_TAG = "div"; +var DialogRenderFeatures = 1 /* RenderStrategy */ | 2 /* Static */; +function DialogFn(props, ref) { + var _a3; + let internalId = useId(); + let { + id = `headlessui-dialog-${internalId}`, + open, + onClose, + initialFocus, + __demoMode = false, + ...theirProps + } = props; + let [nestedDialogCount, setNestedDialogCount] = (0, import_react31.useState)(0); + let usesOpenClosedState = useOpenClosed(); + if (open === void 0 && usesOpenClosedState !== null) { + open = (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; + } + let internalDialogRef = (0, import_react31.useRef)(null); + let dialogRef = useSyncRefs(internalDialogRef, ref); + let ownerDocument = useOwnerDocument(internalDialogRef); + let hasOpen = props.hasOwnProperty("open") || usesOpenClosedState !== null; + let hasOnClose = props.hasOwnProperty("onClose"); + if (!hasOpen && !hasOnClose) { + throw new Error( + `You have to provide an \`open\` and an \`onClose\` prop to the \`Dialog\` component.` + ); + } + if (!hasOpen) { + throw new Error( + `You provided an \`onClose\` prop to the \`Dialog\`, but forgot an \`open\` prop.` + ); + } + if (!hasOnClose) { + throw new Error( + `You provided an \`open\` prop to the \`Dialog\`, but forgot an \`onClose\` prop.` + ); + } + if (typeof open !== "boolean") { + throw new Error( + `You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${open}` + ); + } + if (typeof onClose !== "function") { + throw new Error( + `You provided an \`onClose\` prop to the \`Dialog\`, but the value is not a function. Received: ${onClose}` + ); + } + let dialogState = open ? 0 /* Open */ : 1 /* Closed */; + let [state, dispatch] = (0, import_react31.useReducer)(stateReducer2, { + titleId: null, + descriptionId: null, + panelRef: (0, import_react31.createRef)() + }); + let close = useEvent(() => onClose(false)); + let setTitleId = useEvent((id2) => dispatch({ type: 0 /* SetTitleId */, id: id2 })); + let ready = useServerHandoffComplete(); + let enabled = ready ? __demoMode ? false : dialogState === 0 /* Open */ : false; + let hasNestedDialogs = nestedDialogCount > 1; + let hasParentDialog = (0, import_react31.useContext)(DialogContext) !== null; + let [portals, PortalWrapper] = useNestedPortals(); + let { + resolveContainers: resolveRootContainers, + mainTreeNodeRef, + MainTreeNode + } = useRootContainers({ + portals, + defaultContainers: [(_a3 = state.panelRef.current) != null ? _a3 : internalDialogRef.current] + }); + let position = !hasNestedDialogs ? "leaf" : "parent"; + let isClosing = usesOpenClosedState !== null ? (usesOpenClosedState & 4 /* Closing */) === 4 /* Closing */ : false; + let inertOthersEnabled = (() => { + if (hasParentDialog) + return false; + if (isClosing) + return false; + return enabled; + })(); + let resolveRootOfMainTreeNode = (0, import_react31.useCallback)(() => { + var _a4, _b; + return (_b = Array.from((_a4 = ownerDocument == null ? void 0 : ownerDocument.querySelectorAll("body > *")) != null ? _a4 : []).find((root) => { + if (root.id === "headlessui-portal-root") + return false; + return root.contains(mainTreeNodeRef.current) && root instanceof HTMLElement; + })) != null ? _b : null; + }, [mainTreeNodeRef]); + useInert(resolveRootOfMainTreeNode, inertOthersEnabled); + let inertParentDialogs = (() => { + if (hasNestedDialogs) + return true; + return enabled; + })(); + let resolveRootOfParentDialog = (0, import_react31.useCallback)(() => { + var _a4, _b; + return (_b = Array.from((_a4 = ownerDocument == null ? void 0 : ownerDocument.querySelectorAll("[data-headlessui-portal]")) != null ? _a4 : []).find( + (root) => root.contains(mainTreeNodeRef.current) && root instanceof HTMLElement + )) != null ? _b : null; + }, [mainTreeNodeRef]); + useInert(resolveRootOfParentDialog, inertParentDialogs); + let outsideClickEnabled = (() => { + if (!enabled) + return false; + if (hasNestedDialogs) + return false; + return true; + })(); + useOutsideClick(resolveRootContainers, close, outsideClickEnabled); + let escapeToCloseEnabled = (() => { + if (hasNestedDialogs) + return false; + if (dialogState !== 0 /* Open */) + return false; + return true; + })(); + useEventListener(ownerDocument == null ? void 0 : ownerDocument.defaultView, "keydown", (event) => { + if (!escapeToCloseEnabled) + return; + if (event.defaultPrevented) + return; + if (event.key !== "Escape" /* Escape */) + return; + event.preventDefault(); + event.stopPropagation(); + close(); + }); + let scrollLockEnabled = (() => { + if (isClosing) + return false; + if (dialogState !== 0 /* Open */) + return false; + if (hasParentDialog) + return false; + return true; + })(); + useScrollLock(ownerDocument, scrollLockEnabled, resolveRootContainers); + (0, import_react31.useEffect)(() => { + if (dialogState !== 0 /* Open */) + return; + if (!internalDialogRef.current) + return; + let observer = new ResizeObserver((entries) => { + for (let entry of entries) { + let rect = entry.target.getBoundingClientRect(); + if (rect.x === 0 && rect.y === 0 && rect.width === 0 && rect.height === 0) { + close(); + } + } + }); + observer.observe(internalDialogRef.current); + return () => observer.disconnect(); + }, [dialogState, internalDialogRef, close]); + let [describedby, DescriptionProvider] = useDescriptions(); + let contextBag = (0, import_react31.useMemo)( + () => [{ dialogState, close, setTitleId }, state], + [dialogState, state, close, setTitleId] + ); + let slot = (0, import_react31.useMemo)( + () => ({ open: dialogState === 0 /* Open */ }), + [dialogState] + ); + let ourProps = { + ref: dialogRef, + id, + role: "dialog", + "aria-modal": dialogState === 0 /* Open */ ? true : void 0, + "aria-labelledby": state.titleId, + "aria-describedby": describedby + }; + return /* @__PURE__ */ import_react31.default.createElement( + StackProvider, + { + type: "Dialog", + enabled: dialogState === 0 /* Open */, + element: internalDialogRef, + onUpdate: useEvent((message, type) => { + if (type !== "Dialog") + return; + match(message, { + [0 /* Add */]: () => setNestedDialogCount((count) => count + 1), + [1 /* Remove */]: () => setNestedDialogCount((count) => count - 1) + }); + }) + }, + /* @__PURE__ */ import_react31.default.createElement(ForcePortalRoot, { force: true }, /* @__PURE__ */ import_react31.default.createElement(Portal, null, /* @__PURE__ */ import_react31.default.createElement(DialogContext.Provider, { value: contextBag }, /* @__PURE__ */ import_react31.default.createElement(Portal.Group, { target: internalDialogRef }, /* @__PURE__ */ import_react31.default.createElement(ForcePortalRoot, { force: false }, /* @__PURE__ */ import_react31.default.createElement(DescriptionProvider, { slot, name: "Dialog.Description" }, /* @__PURE__ */ import_react31.default.createElement( + FocusTrap, + { + initialFocus, + containers: resolveRootContainers, + features: enabled ? match(position, { + parent: FocusTrap.features.RestoreFocus, + leaf: FocusTrap.features.All & ~FocusTrap.features.FocusLock + }) : FocusTrap.features.None + }, + /* @__PURE__ */ import_react31.default.createElement(PortalWrapper, null, render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_DIALOG_TAG, + features: DialogRenderFeatures, + visible: dialogState === 0 /* Open */, + name: "Dialog" + })) + ))))))), + /* @__PURE__ */ import_react31.default.createElement(MainTreeNode, null) + ); +} +var DEFAULT_OVERLAY_TAG = "div"; +function OverlayFn(props, ref) { + let internalId = useId(); + let { id = `headlessui-dialog-overlay-${internalId}`, ...theirProps } = props; + let [{ dialogState, close }] = useDialogContext("Dialog.Overlay"); + let overlayRef = useSyncRefs(ref); + let handleClick = useEvent((event) => { + if (event.target !== event.currentTarget) + return; + if (isDisabledReactIssue7711(event.currentTarget)) + return event.preventDefault(); + event.preventDefault(); + event.stopPropagation(); + close(); + }); + let slot = (0, import_react31.useMemo)( + () => ({ open: dialogState === 0 /* Open */ }), + [dialogState] + ); + let ourProps = { + ref: overlayRef, + id, + "aria-hidden": true, + onClick: handleClick + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_OVERLAY_TAG, + name: "Dialog.Overlay" + }); +} +var DEFAULT_BACKDROP_TAG = "div"; +function BackdropFn(props, ref) { + let internalId = useId(); + let { id = `headlessui-dialog-backdrop-${internalId}`, ...theirProps } = props; + let [{ dialogState }, state] = useDialogContext("Dialog.Backdrop"); + let backdropRef = useSyncRefs(ref); + (0, import_react31.useEffect)(() => { + if (state.panelRef.current === null) { + throw new Error( + `A component is being used, but a component is missing.` + ); + } + }, [state.panelRef]); + let slot = (0, import_react31.useMemo)( + () => ({ open: dialogState === 0 /* Open */ }), + [dialogState] + ); + let ourProps = { + ref: backdropRef, + id, + "aria-hidden": true + }; + return /* @__PURE__ */ import_react31.default.createElement(ForcePortalRoot, { force: true }, /* @__PURE__ */ import_react31.default.createElement(Portal, null, render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_BACKDROP_TAG, + name: "Dialog.Backdrop" + }))); +} +var DEFAULT_PANEL_TAG = "div"; +function PanelFn(props, ref) { + let internalId = useId(); + let { id = `headlessui-dialog-panel-${internalId}`, ...theirProps } = props; + let [{ dialogState }, state] = useDialogContext("Dialog.Panel"); + let panelRef = useSyncRefs(ref, state.panelRef); + let slot = (0, import_react31.useMemo)( + () => ({ open: dialogState === 0 /* Open */ }), + [dialogState] + ); + let handleClick = useEvent((event) => { + event.stopPropagation(); + }); + let ourProps = { + ref: panelRef, + id, + onClick: handleClick + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_PANEL_TAG, + name: "Dialog.Panel" + }); +} +var DEFAULT_TITLE_TAG = "h2"; +function TitleFn(props, ref) { + let internalId = useId(); + let { id = `headlessui-dialog-title-${internalId}`, ...theirProps } = props; + let [{ dialogState, setTitleId }] = useDialogContext("Dialog.Title"); + let titleRef = useSyncRefs(ref); + (0, import_react31.useEffect)(() => { + setTitleId(id); + return () => setTitleId(null); + }, [id, setTitleId]); + let slot = (0, import_react31.useMemo)( + () => ({ open: dialogState === 0 /* Open */ }), + [dialogState] + ); + let ourProps = { ref: titleRef, id }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_TITLE_TAG, + name: "Dialog.Title" + }); +} +var DialogRoot = forwardRefWithAs(DialogFn); +var Backdrop = forwardRefWithAs(BackdropFn); +var Panel = forwardRefWithAs(PanelFn); +var Overlay = forwardRefWithAs(OverlayFn); +var Title = forwardRefWithAs(TitleFn); +var Dialog = Object.assign(DialogRoot, { + Backdrop, + Panel, + Overlay, + Title, + Description +}); + +// src/components/disclosure/disclosure.tsx +var import_react33 = __toESM(__webpack_require__(/*! react */ "react"), 1); + +// src/utils/start-transition.ts +var import_react32 = __toESM(__webpack_require__(/*! react */ "react"), 1); +var _a2; +var startTransition = ( + // Prefer React's `startTransition` if it's available. + // @ts-expect-error - `startTransition` doesn't exist in React < 18. + (_a2 = import_react32.default.startTransition) != null ? _a2 : function startTransition2(cb) { + cb(); + } +); + +// src/components/disclosure/disclosure.tsx +var reducers3 = { + [0 /* ToggleDisclosure */]: (state) => ({ + ...state, + disclosureState: match(state.disclosureState, { + [0 /* Open */]: 1 /* Closed */, + [1 /* Closed */]: 0 /* Open */ + }) + }), + [1 /* CloseDisclosure */]: (state) => { + if (state.disclosureState === 1 /* Closed */) + return state; + return { ...state, disclosureState: 1 /* Closed */ }; + }, + [4 /* LinkPanel */](state) { + if (state.linkedPanel === true) + return state; + return { ...state, linkedPanel: true }; + }, + [5 /* UnlinkPanel */](state) { + if (state.linkedPanel === false) + return state; + return { ...state, linkedPanel: false }; + }, + [2 /* SetButtonId */](state, action) { + if (state.buttonId === action.buttonId) + return state; + return { ...state, buttonId: action.buttonId }; + }, + [3 /* SetPanelId */](state, action) { + if (state.panelId === action.panelId) + return state; + return { ...state, panelId: action.panelId }; + } +}; +var DisclosureContext = (0, import_react33.createContext)(null); +DisclosureContext.displayName = "DisclosureContext"; +function useDisclosureContext(component) { + let context = (0, import_react33.useContext)(DisclosureContext); + if (context === null) { + let err = new Error(`<${component} /> is missing a parent component.`); + if (Error.captureStackTrace) + Error.captureStackTrace(err, useDisclosureContext); + throw err; + } + return context; +} +var DisclosureAPIContext = (0, import_react33.createContext)(null); +DisclosureAPIContext.displayName = "DisclosureAPIContext"; +function useDisclosureAPIContext(component) { + let context = (0, import_react33.useContext)(DisclosureAPIContext); + if (context === null) { + let err = new Error(`<${component} /> is missing a parent component.`); + if (Error.captureStackTrace) + Error.captureStackTrace(err, useDisclosureAPIContext); + throw err; + } + return context; +} +var DisclosurePanelContext = (0, import_react33.createContext)(null); +DisclosurePanelContext.displayName = "DisclosurePanelContext"; +function useDisclosurePanelContext() { + return (0, import_react33.useContext)(DisclosurePanelContext); +} +function stateReducer3(state, action) { + return match(action.type, reducers3, state, action); +} +var DEFAULT_DISCLOSURE_TAG = import_react33.Fragment; +function DisclosureFn(props, ref) { + let { defaultOpen = false, ...theirProps } = props; + let internalDisclosureRef = (0, import_react33.useRef)(null); + let disclosureRef = useSyncRefs( + ref, + optionalRef( + (ref2) => { + internalDisclosureRef.current = ref2; + }, + props.as === void 0 || // @ts-expect-error The `as` prop _can_ be a Fragment + props.as === import_react33.Fragment + ) + ); + let panelRef = (0, import_react33.useRef)(null); + let buttonRef = (0, import_react33.useRef)(null); + let reducerBag = (0, import_react33.useReducer)(stateReducer3, { + disclosureState: defaultOpen ? 0 /* Open */ : 1 /* Closed */, + linkedPanel: false, + buttonRef, + panelRef, + buttonId: null, + panelId: null + }); + let [{ disclosureState, buttonId }, dispatch] = reducerBag; + let close = useEvent((focusableElement) => { + dispatch({ type: 1 /* CloseDisclosure */ }); + let ownerDocument = getOwnerDocument(internalDisclosureRef); + if (!ownerDocument) + return; + if (!buttonId) + return; + let restoreElement = (() => { + if (!focusableElement) + return ownerDocument.getElementById(buttonId); + if (focusableElement instanceof HTMLElement) + return focusableElement; + if (focusableElement.current instanceof HTMLElement) + return focusableElement.current; + return ownerDocument.getElementById(buttonId); + })(); + restoreElement == null ? void 0 : restoreElement.focus(); + }); + let api = (0, import_react33.useMemo)(() => ({ close }), [close]); + let slot = (0, import_react33.useMemo)( + () => ({ open: disclosureState === 0 /* Open */, close }), + [disclosureState, close] + ); + let ourProps = { + ref: disclosureRef + }; + return /* @__PURE__ */ import_react33.default.createElement(DisclosureContext.Provider, { value: reducerBag }, /* @__PURE__ */ import_react33.default.createElement(DisclosureAPIContext.Provider, { value: api }, /* @__PURE__ */ import_react33.default.createElement( + OpenClosedProvider, + { + value: match(disclosureState, { + [0 /* Open */]: 1 /* Open */, + [1 /* Closed */]: 2 /* Closed */ + }) + }, + render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_DISCLOSURE_TAG, + name: "Disclosure" + }) + ))); +} +var DEFAULT_BUTTON_TAG2 = "button"; +function ButtonFn2(props, ref) { + let internalId = useId(); + let { id = `headlessui-disclosure-button-${internalId}`, ...theirProps } = props; + let [state, dispatch] = useDisclosureContext("Disclosure.Button"); + let panelContext = useDisclosurePanelContext(); + let isWithinPanel = panelContext === null ? false : panelContext === state.panelId; + let internalButtonRef = (0, import_react33.useRef)(null); + let buttonRef = useSyncRefs(internalButtonRef, ref, !isWithinPanel ? state.buttonRef : null); + (0, import_react33.useEffect)(() => { + if (isWithinPanel) + return; + dispatch({ type: 2 /* SetButtonId */, buttonId: id }); + return () => { + dispatch({ type: 2 /* SetButtonId */, buttonId: null }); + }; + }, [id, dispatch, isWithinPanel]); + let handleKeyDown = useEvent((event) => { + var _a3; + if (isWithinPanel) { + if (state.disclosureState === 1 /* Closed */) + return; + switch (event.key) { + case " " /* Space */: + case "Enter" /* Enter */: + event.preventDefault(); + event.stopPropagation(); + dispatch({ type: 0 /* ToggleDisclosure */ }); + (_a3 = state.buttonRef.current) == null ? void 0 : _a3.focus(); + break; + } + } else { + switch (event.key) { + case " " /* Space */: + case "Enter" /* Enter */: + event.preventDefault(); + event.stopPropagation(); + dispatch({ type: 0 /* ToggleDisclosure */ }); + break; + } + } + }); + let handleKeyUp = useEvent((event) => { + switch (event.key) { + case " " /* Space */: + event.preventDefault(); + break; + } + }); + let handleClick = useEvent((event) => { + var _a3; + if (isDisabledReactIssue7711(event.currentTarget)) + return; + if (props.disabled) + return; + if (isWithinPanel) { + dispatch({ type: 0 /* ToggleDisclosure */ }); + (_a3 = state.buttonRef.current) == null ? void 0 : _a3.focus(); + } else { + dispatch({ type: 0 /* ToggleDisclosure */ }); + } + }); + let slot = (0, import_react33.useMemo)( + () => ({ open: state.disclosureState === 0 /* Open */ }), + [state] + ); + let type = useResolveButtonType(props, internalButtonRef); + let ourProps = isWithinPanel ? { ref: buttonRef, type, onKeyDown: handleKeyDown, onClick: handleClick } : { + ref: buttonRef, + id, + type, + "aria-expanded": props.disabled ? void 0 : state.disclosureState === 0 /* Open */, + "aria-controls": state.linkedPanel ? state.panelId : void 0, + onKeyDown: handleKeyDown, + onKeyUp: handleKeyUp, + onClick: handleClick + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_BUTTON_TAG2, + name: "Disclosure.Button" + }); +} +var DEFAULT_PANEL_TAG2 = "div"; +var PanelRenderFeatures = 1 /* RenderStrategy */ | 2 /* Static */; +function PanelFn2(props, ref) { + let internalId = useId(); + let { id = `headlessui-disclosure-panel-${internalId}`, ...theirProps } = props; + let [state, dispatch] = useDisclosureContext("Disclosure.Panel"); + let { close } = useDisclosureAPIContext("Disclosure.Panel"); + let panelRef = useSyncRefs(ref, state.panelRef, (el) => { + startTransition(() => dispatch({ type: el ? 4 /* LinkPanel */ : 5 /* UnlinkPanel */ })); + }); + (0, import_react33.useEffect)(() => { + dispatch({ type: 3 /* SetPanelId */, panelId: id }); + return () => { + dispatch({ type: 3 /* SetPanelId */, panelId: null }); + }; + }, [id, dispatch]); + let usesOpenClosedState = useOpenClosed(); + let visible = (() => { + if (usesOpenClosedState !== null) { + return (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; + } + return state.disclosureState === 0 /* Open */; + })(); + let slot = (0, import_react33.useMemo)( + () => ({ open: state.disclosureState === 0 /* Open */, close }), + [state, close] + ); + let ourProps = { + ref: panelRef, + id + }; + return /* @__PURE__ */ import_react33.default.createElement(DisclosurePanelContext.Provider, { value: state.panelId }, render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_PANEL_TAG2, + features: PanelRenderFeatures, + visible, + name: "Disclosure.Panel" + })); +} +var DisclosureRoot = forwardRefWithAs(DisclosureFn); +var Button2 = forwardRefWithAs(ButtonFn2); +var Panel2 = forwardRefWithAs(PanelFn2); +var Disclosure = Object.assign(DisclosureRoot, { Button: Button2, Panel: Panel2 }); + +// src/components/listbox/listbox.tsx +var import_react35 = __toESM(__webpack_require__(/*! react */ "react"), 1); + +// src/hooks/use-text-value.ts +var import_react34 = __webpack_require__(/*! react */ "react"); + +// src/utils/get-text-value.ts +var emojiRegex = /([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g; +function getTextContents(element) { + var _a3, _b; + let currentInnerText = (_a3 = element.innerText) != null ? _a3 : ""; + let copy = element.cloneNode(true); + if (!(copy instanceof HTMLElement)) { + return currentInnerText; + } + let dropped = false; + for (let child of copy.querySelectorAll('[hidden],[aria-hidden],[role="img"]')) { + child.remove(); + dropped = true; + } + let value = dropped ? (_b = copy.innerText) != null ? _b : "" : currentInnerText; + if (emojiRegex.test(value)) { + value = value.replace(emojiRegex, ""); + } + return value; +} +function getTextValue(element) { + let label = element.getAttribute("aria-label"); + if (typeof label === "string") + return label.trim(); + let labelledby = element.getAttribute("aria-labelledby"); + if (labelledby) { + let labels = labelledby.split(" ").map((labelledby2) => { + let labelEl = document.getElementById(labelledby2); + if (labelEl) { + let label2 = labelEl.getAttribute("aria-label"); + if (typeof label2 === "string") + return label2.trim(); + return getTextContents(labelEl).trim(); + } + return null; + }).filter(Boolean); + if (labels.length > 0) + return labels.join(", "); + } + return getTextContents(element).trim(); +} + +// src/hooks/use-text-value.ts +function useTextValue(element) { + let cacheKey = (0, import_react34.useRef)(""); + let cacheValue = (0, import_react34.useRef)(""); + return useEvent(() => { + let el = element.current; + if (!el) + return ""; + let currentKey = el.innerText; + if (cacheKey.current === currentKey) { + return cacheValue.current; + } + let value = getTextValue(el).trim().toLowerCase(); + cacheKey.current = currentKey; + cacheValue.current = value; + return value; + }); +} + +// src/components/listbox/listbox.tsx +function adjustOrderedState2(state, adjustment = (i) => i) { + let currentActiveOption = state.activeOptionIndex !== null ? state.options[state.activeOptionIndex] : null; + let sortedOptions = sortByDomNode( + adjustment(state.options.slice()), + (option) => option.dataRef.current.domRef.current + ); + let adjustedActiveOptionIndex = currentActiveOption ? sortedOptions.indexOf(currentActiveOption) : null; + if (adjustedActiveOptionIndex === -1) { + adjustedActiveOptionIndex = null; + } + return { + options: sortedOptions, + activeOptionIndex: adjustedActiveOptionIndex + }; +} +var reducers4 = { + [1 /* CloseListbox */](state) { + if (state.dataRef.current.disabled) + return state; + if (state.listboxState === 1 /* Closed */) + return state; + return { ...state, activeOptionIndex: null, listboxState: 1 /* Closed */ }; + }, + [0 /* OpenListbox */](state) { + if (state.dataRef.current.disabled) + return state; + if (state.listboxState === 0 /* Open */) + return state; + let activeOptionIndex = state.activeOptionIndex; + let { isSelected } = state.dataRef.current; + let optionIdx = state.options.findIndex((option) => isSelected(option.dataRef.current.value)); + if (optionIdx !== -1) { + activeOptionIndex = optionIdx; + } + return { ...state, listboxState: 0 /* Open */, activeOptionIndex }; + }, + [2 /* GoToOption */](state, action) { + var _a3; + if (state.dataRef.current.disabled) + return state; + if (state.listboxState === 1 /* Closed */) + return state; + let adjustedState = adjustOrderedState2(state); + let activeOptionIndex = calculateActiveIndex(action, { + resolveItems: () => adjustedState.options, + resolveActiveIndex: () => adjustedState.activeOptionIndex, + resolveId: (option) => option.id, + resolveDisabled: (option) => option.dataRef.current.disabled + }); + return { + ...state, + ...adjustedState, + searchQuery: "", + activeOptionIndex, + activationTrigger: (_a3 = action.trigger) != null ? _a3 : 1 /* Other */ + }; + }, + [3 /* Search */]: (state, action) => { + if (state.dataRef.current.disabled) + return state; + if (state.listboxState === 1 /* Closed */) + return state; + let wasAlreadySearching = state.searchQuery !== ""; + let offset = wasAlreadySearching ? 0 : 1; + let searchQuery = state.searchQuery + action.value.toLowerCase(); + let reOrderedOptions = state.activeOptionIndex !== null ? state.options.slice(state.activeOptionIndex + offset).concat(state.options.slice(0, state.activeOptionIndex + offset)) : state.options; + let matchingOption = reOrderedOptions.find( + (option) => { + var _a3; + return !option.dataRef.current.disabled && ((_a3 = option.dataRef.current.textValue) == null ? void 0 : _a3.startsWith(searchQuery)); + } + ); + let matchIdx = matchingOption ? state.options.indexOf(matchingOption) : -1; + if (matchIdx === -1 || matchIdx === state.activeOptionIndex) + return { ...state, searchQuery }; + return { + ...state, + searchQuery, + activeOptionIndex: matchIdx, + activationTrigger: 1 /* Other */ + }; + }, + [4 /* ClearSearch */](state) { + if (state.dataRef.current.disabled) + return state; + if (state.listboxState === 1 /* Closed */) + return state; + if (state.searchQuery === "") + return state; + return { ...state, searchQuery: "" }; + }, + [5 /* RegisterOption */]: (state, action) => { + let option = { id: action.id, dataRef: action.dataRef }; + let adjustedState = adjustOrderedState2(state, (options) => [...options, option]); + if (state.activeOptionIndex === null) { + if (state.dataRef.current.isSelected(action.dataRef.current.value)) { + adjustedState.activeOptionIndex = adjustedState.options.indexOf(option); + } + } + return { ...state, ...adjustedState }; + }, + [6 /* UnregisterOption */]: (state, action) => { + let adjustedState = adjustOrderedState2(state, (options) => { + let idx = options.findIndex((a) => a.id === action.id); + if (idx !== -1) + options.splice(idx, 1); + return options; + }); + return { + ...state, + ...adjustedState, + activationTrigger: 1 /* Other */ + }; + }, + [7 /* RegisterLabel */]: (state, action) => { + return { + ...state, + labelId: action.id + }; + } +}; +var ListboxActionsContext = (0, import_react35.createContext)(null); +ListboxActionsContext.displayName = "ListboxActionsContext"; +function useActions2(component) { + let context = (0, import_react35.useContext)(ListboxActionsContext); + if (context === null) { + let err = new Error(`<${component} /> is missing a parent component.`); + if (Error.captureStackTrace) + Error.captureStackTrace(err, useActions2); + throw err; + } + return context; +} +var ListboxDataContext = (0, import_react35.createContext)(null); +ListboxDataContext.displayName = "ListboxDataContext"; +function useData2(component) { + let context = (0, import_react35.useContext)(ListboxDataContext); + if (context === null) { + let err = new Error(`<${component} /> is missing a parent component.`); + if (Error.captureStackTrace) + Error.captureStackTrace(err, useData2); + throw err; + } + return context; +} +function stateReducer4(state, action) { + return match(action.type, reducers4, state, action); +} +var DEFAULT_LISTBOX_TAG = import_react35.Fragment; +function ListboxFn(props, ref) { + let { + value: controlledValue, + defaultValue, + form: formName, + name, + onChange: controlledOnChange, + by = (a, z) => a === z, + disabled = false, + horizontal = false, + multiple = false, + ...theirProps + } = props; + const orientation = horizontal ? "horizontal" : "vertical"; + let listboxRef = useSyncRefs(ref); + let [value = multiple ? [] : void 0, theirOnChange] = useControllable( + controlledValue, + controlledOnChange, + defaultValue + ); + let [state, dispatch] = (0, import_react35.useReducer)(stateReducer4, { + dataRef: (0, import_react35.createRef)(), + listboxState: 1 /* Closed */, + options: [], + searchQuery: "", + labelId: null, + activeOptionIndex: null, + activationTrigger: 1 /* Other */ + }); + let optionsPropsRef = (0, import_react35.useRef)({ static: false, hold: false }); + let labelRef = (0, import_react35.useRef)(null); + let buttonRef = (0, import_react35.useRef)(null); + let optionsRef = (0, import_react35.useRef)(null); + let compare = useEvent( + typeof by === "string" ? (a, z) => { + let property = by; + return (a == null ? void 0 : a[property]) === (z == null ? void 0 : z[property]); + } : by + ); + let isSelected = (0, import_react35.useCallback)( + (compareValue) => match(data.mode, { + [1 /* Multi */]: () => value.some((option) => compare(option, compareValue)), + [0 /* Single */]: () => compare(value, compareValue) + }), + [value] + ); + let data = (0, import_react35.useMemo)( + () => ({ + ...state, + value, + disabled, + mode: multiple ? 1 /* Multi */ : 0 /* Single */, + orientation, + compare, + isSelected, + optionsPropsRef, + labelRef, + buttonRef, + optionsRef + }), + [value, disabled, multiple, state] + ); + useIsoMorphicEffect(() => { + state.dataRef.current = data; + }, [data]); + useOutsideClick( + [data.buttonRef, data.optionsRef], + (event, target) => { + var _a3; + dispatch({ type: 1 /* CloseListbox */ }); + if (!isFocusableElement(target, 1 /* Loose */)) { + event.preventDefault(); + (_a3 = data.buttonRef.current) == null ? void 0 : _a3.focus(); + } + }, + data.listboxState === 0 /* Open */ + ); + let slot = (0, import_react35.useMemo)( + () => ({ open: data.listboxState === 0 /* Open */, disabled, value }), + [data, disabled, value] + ); + let selectOption = useEvent((id) => { + let option = data.options.find((item) => item.id === id); + if (!option) + return; + onChange(option.dataRef.current.value); + }); + let selectActiveOption = useEvent(() => { + if (data.activeOptionIndex !== null) { + let { dataRef, id } = data.options[data.activeOptionIndex]; + onChange(dataRef.current.value); + dispatch({ type: 2 /* GoToOption */, focus: 4 /* Specific */, id }); + } + }); + let openListbox = useEvent(() => dispatch({ type: 0 /* OpenListbox */ })); + let closeListbox = useEvent(() => dispatch({ type: 1 /* CloseListbox */ })); + let goToOption = useEvent((focus, id, trigger) => { + if (focus === 4 /* Specific */) { + return dispatch({ type: 2 /* GoToOption */, focus: 4 /* Specific */, id, trigger }); + } + return dispatch({ type: 2 /* GoToOption */, focus, trigger }); + }); + let registerOption = useEvent((id, dataRef) => { + dispatch({ type: 5 /* RegisterOption */, id, dataRef }); + return () => dispatch({ type: 6 /* UnregisterOption */, id }); + }); + let registerLabel = useEvent((id) => { + dispatch({ type: 7 /* RegisterLabel */, id }); + return () => dispatch({ type: 7 /* RegisterLabel */, id: null }); + }); + let onChange = useEvent((value2) => { + return match(data.mode, { + [0 /* Single */]() { + return theirOnChange == null ? void 0 : theirOnChange(value2); + }, + [1 /* Multi */]() { + let copy = data.value.slice(); + let idx = copy.findIndex((item) => compare(item, value2)); + if (idx === -1) { + copy.push(value2); + } else { + copy.splice(idx, 1); + } + return theirOnChange == null ? void 0 : theirOnChange(copy); + } + }); + }); + let search = useEvent((value2) => dispatch({ type: 3 /* Search */, value: value2 })); + let clearSearch = useEvent(() => dispatch({ type: 4 /* ClearSearch */ })); + let actions = (0, import_react35.useMemo)( + () => ({ + onChange, + registerOption, + registerLabel, + goToOption, + closeListbox, + openListbox, + selectActiveOption, + selectOption, + search, + clearSearch + }), + [] + ); + let ourProps = { ref: listboxRef }; + let form = (0, import_react35.useRef)(null); + let d = useDisposables(); + (0, import_react35.useEffect)(() => { + if (!form.current) + return; + if (defaultValue === void 0) + return; + d.addEventListener(form.current, "reset", () => { + onChange(defaultValue); + }); + }, [ + form, + onChange + /* Explicitly ignoring `defaultValue` */ + ]); + return /* @__PURE__ */ import_react35.default.createElement(ListboxActionsContext.Provider, { value: actions }, /* @__PURE__ */ import_react35.default.createElement(ListboxDataContext.Provider, { value: data }, /* @__PURE__ */ import_react35.default.createElement( + OpenClosedProvider, + { + value: match(data.listboxState, { + [0 /* Open */]: 1 /* Open */, + [1 /* Closed */]: 2 /* Closed */ + }) + }, + name != null && value != null && objectToFormEntries({ [name]: value }).map(([name2, value2], idx) => /* @__PURE__ */ import_react35.default.createElement( + Hidden, + { + features: 4 /* Hidden */, + ref: idx === 0 ? (element) => { + var _a3; + form.current = (_a3 = element == null ? void 0 : element.closest("form")) != null ? _a3 : null; + } : void 0, + ...compact({ + key: name2, + as: "input", + type: "hidden", + hidden: true, + readOnly: true, + form: formName, + name: name2, + value: value2 + }) + } + )), + render({ ourProps, theirProps, slot, defaultTag: DEFAULT_LISTBOX_TAG, name: "Listbox" }) + ))); +} +var DEFAULT_BUTTON_TAG3 = "button"; +function ButtonFn3(props, ref) { + var _a3; + let internalId = useId(); + let { id = `headlessui-listbox-button-${internalId}`, ...theirProps } = props; + let data = useData2("Listbox.Button"); + let actions = useActions2("Listbox.Button"); + let buttonRef = useSyncRefs(data.buttonRef, ref); + let d = useDisposables(); + let handleKeyDown = useEvent((event) => { + switch (event.key) { + case " " /* Space */: + case "Enter" /* Enter */: + case "ArrowDown" /* ArrowDown */: + event.preventDefault(); + actions.openListbox(); + d.nextFrame(() => { + if (!data.value) + actions.goToOption(0 /* First */); + }); + break; + case "ArrowUp" /* ArrowUp */: + event.preventDefault(); + actions.openListbox(); + d.nextFrame(() => { + if (!data.value) + actions.goToOption(3 /* Last */); + }); + break; + } + }); + let handleKeyUp = useEvent((event) => { + switch (event.key) { + case " " /* Space */: + event.preventDefault(); + break; + } + }); + let handleClick = useEvent((event) => { + if (isDisabledReactIssue7711(event.currentTarget)) + return event.preventDefault(); + if (data.listboxState === 0 /* Open */) { + actions.closeListbox(); + d.nextFrame(() => { + var _a4; + return (_a4 = data.buttonRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); + }); + } else { + event.preventDefault(); + actions.openListbox(); + } + }); + let labelledby = useComputed(() => { + if (!data.labelId) + return void 0; + return [data.labelId, id].join(" "); + }, [data.labelId, id]); + let slot = (0, import_react35.useMemo)( + () => ({ + open: data.listboxState === 0 /* Open */, + disabled: data.disabled, + value: data.value + }), + [data] + ); + let ourProps = { + ref: buttonRef, + id, + type: useResolveButtonType(props, data.buttonRef), + "aria-haspopup": "listbox", + "aria-controls": (_a3 = data.optionsRef.current) == null ? void 0 : _a3.id, + "aria-expanded": data.disabled ? void 0 : data.listboxState === 0 /* Open */, + "aria-labelledby": labelledby, + disabled: data.disabled, + onKeyDown: handleKeyDown, + onKeyUp: handleKeyUp, + onClick: handleClick + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_BUTTON_TAG3, + name: "Listbox.Button" + }); +} +var DEFAULT_LABEL_TAG2 = "label"; +function LabelFn2(props, ref) { + let internalId = useId(); + let { id = `headlessui-listbox-label-${internalId}`, ...theirProps } = props; + let data = useData2("Listbox.Label"); + let actions = useActions2("Listbox.Label"); + let labelRef = useSyncRefs(data.labelRef, ref); + useIsoMorphicEffect(() => actions.registerLabel(id), [id]); + let handleClick = useEvent(() => { + var _a3; + return (_a3 = data.buttonRef.current) == null ? void 0 : _a3.focus({ preventScroll: true }); + }); + let slot = (0, import_react35.useMemo)( + () => ({ open: data.listboxState === 0 /* Open */, disabled: data.disabled }), + [data] + ); + let ourProps = { ref: labelRef, id, onClick: handleClick }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_LABEL_TAG2, + name: "Listbox.Label" + }); +} +var DEFAULT_OPTIONS_TAG2 = "ul"; +var OptionsRenderFeatures2 = 1 /* RenderStrategy */ | 2 /* Static */; +function OptionsFn2(props, ref) { + var _a3; + let internalId = useId(); + let { id = `headlessui-listbox-options-${internalId}`, ...theirProps } = props; + let data = useData2("Listbox.Options"); + let actions = useActions2("Listbox.Options"); + let optionsRef = useSyncRefs(data.optionsRef, ref); + let d = useDisposables(); + let searchDisposables = useDisposables(); + let usesOpenClosedState = useOpenClosed(); + let visible = (() => { + if (usesOpenClosedState !== null) { + return (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; + } + return data.listboxState === 0 /* Open */; + })(); + (0, import_react35.useEffect)(() => { + var _a4; + let container = data.optionsRef.current; + if (!container) + return; + if (data.listboxState !== 0 /* Open */) + return; + if (container === ((_a4 = getOwnerDocument(container)) == null ? void 0 : _a4.activeElement)) + return; + container.focus({ preventScroll: true }); + }, [data.listboxState, data.optionsRef]); + let handleKeyDown = useEvent((event) => { + searchDisposables.dispose(); + switch (event.key) { + case " " /* Space */: + if (data.searchQuery !== "") { + event.preventDefault(); + event.stopPropagation(); + return actions.search(event.key); + } + case "Enter" /* Enter */: + event.preventDefault(); + event.stopPropagation(); + if (data.activeOptionIndex !== null) { + let { dataRef } = data.options[data.activeOptionIndex]; + actions.onChange(dataRef.current.value); + } + if (data.mode === 0 /* Single */) { + actions.closeListbox(); + disposables().nextFrame(() => { + var _a4; + return (_a4 = data.buttonRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); + }); + } + break; + case match(data.orientation, { vertical: "ArrowDown" /* ArrowDown */, horizontal: "ArrowRight" /* ArrowRight */ }): + event.preventDefault(); + event.stopPropagation(); + return actions.goToOption(2 /* Next */); + case match(data.orientation, { vertical: "ArrowUp" /* ArrowUp */, horizontal: "ArrowLeft" /* ArrowLeft */ }): + event.preventDefault(); + event.stopPropagation(); + return actions.goToOption(1 /* Previous */); + case "Home" /* Home */: + case "PageUp" /* PageUp */: + event.preventDefault(); + event.stopPropagation(); + return actions.goToOption(0 /* First */); + case "End" /* End */: + case "PageDown" /* PageDown */: + event.preventDefault(); + event.stopPropagation(); + return actions.goToOption(3 /* Last */); + case "Escape" /* Escape */: + event.preventDefault(); + event.stopPropagation(); + actions.closeListbox(); + return d.nextFrame(() => { + var _a4; + return (_a4 = data.buttonRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); + }); + case "Tab" /* Tab */: + event.preventDefault(); + event.stopPropagation(); + break; + default: + if (event.key.length === 1) { + actions.search(event.key); + searchDisposables.setTimeout(() => actions.clearSearch(), 350); + } + break; + } + }); + let labelledby = useComputed( + () => { + var _a4, _b, _c; + return (_c = (_a4 = data.labelRef.current) == null ? void 0 : _a4.id) != null ? _c : (_b = data.buttonRef.current) == null ? void 0 : _b.id; + }, + [data.labelRef.current, data.buttonRef.current] + ); + let slot = (0, import_react35.useMemo)( + () => ({ open: data.listboxState === 0 /* Open */ }), + [data] + ); + let ourProps = { + "aria-activedescendant": data.activeOptionIndex === null ? void 0 : (_a3 = data.options[data.activeOptionIndex]) == null ? void 0 : _a3.id, + "aria-multiselectable": data.mode === 1 /* Multi */ ? true : void 0, + "aria-labelledby": labelledby, + "aria-orientation": data.orientation, + id, + onKeyDown: handleKeyDown, + role: "listbox", + tabIndex: 0, + ref: optionsRef + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_OPTIONS_TAG2, + features: OptionsRenderFeatures2, + visible, + name: "Listbox.Options" + }); +} +var DEFAULT_OPTION_TAG2 = "li"; +function OptionFn2(props, ref) { + let internalId = useId(); + let { + id = `headlessui-listbox-option-${internalId}`, + disabled = false, + value, + ...theirProps + } = props; + let data = useData2("Listbox.Option"); + let actions = useActions2("Listbox.Option"); + let active = data.activeOptionIndex !== null ? data.options[data.activeOptionIndex].id === id : false; + let selected = data.isSelected(value); + let internalOptionRef = (0, import_react35.useRef)(null); + let getTextValue2 = useTextValue(internalOptionRef); + let bag = useLatestValue({ + disabled, + value, + domRef: internalOptionRef, + get textValue() { + return getTextValue2(); + } + }); + let optionRef = useSyncRefs(ref, internalOptionRef); + useIsoMorphicEffect(() => { + if (data.listboxState !== 0 /* Open */) + return; + if (!active) + return; + if (data.activationTrigger === 0 /* Pointer */) + return; + let d = disposables(); + d.requestAnimationFrame(() => { + var _a3, _b; + (_b = (_a3 = internalOptionRef.current) == null ? void 0 : _a3.scrollIntoView) == null ? void 0 : _b.call(_a3, { block: "nearest" }); + }); + return d.dispose; + }, [ + internalOptionRef, + active, + data.listboxState, + data.activationTrigger, + /* We also want to trigger this when the position of the active item changes so that we can re-trigger the scrollIntoView */ + data.activeOptionIndex + ]); + useIsoMorphicEffect(() => actions.registerOption(id, bag), [bag, id]); + let handleClick = useEvent((event) => { + if (disabled) + return event.preventDefault(); + actions.onChange(value); + if (data.mode === 0 /* Single */) { + actions.closeListbox(); + disposables().nextFrame(() => { + var _a3; + return (_a3 = data.buttonRef.current) == null ? void 0 : _a3.focus({ preventScroll: true }); + }); + } + }); + let handleFocus = useEvent(() => { + if (disabled) + return actions.goToOption(5 /* Nothing */); + actions.goToOption(4 /* Specific */, id); + }); + let pointer = useTrackedPointer(); + let handleEnter = useEvent((evt) => pointer.update(evt)); + let handleMove = useEvent((evt) => { + if (!pointer.wasMoved(evt)) + return; + if (disabled) + return; + if (active) + return; + actions.goToOption(4 /* Specific */, id, 0 /* Pointer */); + }); + let handleLeave = useEvent((evt) => { + if (!pointer.wasMoved(evt)) + return; + if (disabled) + return; + if (!active) + return; + actions.goToOption(5 /* Nothing */); + }); + let slot = (0, import_react35.useMemo)( + () => ({ active, selected, disabled }), + [active, selected, disabled] + ); + let ourProps = { + id, + ref: optionRef, + role: "option", + tabIndex: disabled === true ? void 0 : -1, + "aria-disabled": disabled === true ? true : void 0, + // According to the WAI-ARIA best practices, we should use aria-checked for + // multi-select,but Voice-Over disagrees. So we use aria-checked instead for + // both single and multi-select. + "aria-selected": selected, + disabled: void 0, + // Never forward the `disabled` prop + onClick: handleClick, + onFocus: handleFocus, + onPointerEnter: handleEnter, + onMouseEnter: handleEnter, + onPointerMove: handleMove, + onMouseMove: handleMove, + onPointerLeave: handleLeave, + onMouseLeave: handleLeave + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_OPTION_TAG2, + name: "Listbox.Option" + }); +} +var ListboxRoot = forwardRefWithAs(ListboxFn); +var Button3 = forwardRefWithAs(ButtonFn3); +var Label2 = forwardRefWithAs(LabelFn2); +var Options2 = forwardRefWithAs(OptionsFn2); +var Option2 = forwardRefWithAs(OptionFn2); +var Listbox = Object.assign(ListboxRoot, { Button: Button3, Label: Label2, Options: Options2, Option: Option2 }); + +// src/components/menu/menu.tsx +var import_react36 = __toESM(__webpack_require__(/*! react */ "react"), 1); +function adjustOrderedState3(state, adjustment = (i) => i) { + let currentActiveItem = state.activeItemIndex !== null ? state.items[state.activeItemIndex] : null; + let sortedItems = sortByDomNode( + adjustment(state.items.slice()), + (item) => item.dataRef.current.domRef.current + ); + let adjustedActiveItemIndex = currentActiveItem ? sortedItems.indexOf(currentActiveItem) : null; + if (adjustedActiveItemIndex === -1) { + adjustedActiveItemIndex = null; + } + return { + items: sortedItems, + activeItemIndex: adjustedActiveItemIndex + }; +} +var reducers5 = { + [1 /* CloseMenu */](state) { + if (state.menuState === 1 /* Closed */) + return state; + return { ...state, activeItemIndex: null, menuState: 1 /* Closed */ }; + }, + [0 /* OpenMenu */](state) { + if (state.menuState === 0 /* Open */) + return state; + return { + ...state, + /* We can turn off demo mode once we re-open the `Menu` */ + __demoMode: false, + menuState: 0 /* Open */ + }; + }, + [2 /* GoToItem */]: (state, action) => { + var _a3; + let adjustedState = adjustOrderedState3(state); + let activeItemIndex = calculateActiveIndex(action, { + resolveItems: () => adjustedState.items, + resolveActiveIndex: () => adjustedState.activeItemIndex, + resolveId: (item) => item.id, + resolveDisabled: (item) => item.dataRef.current.disabled + }); + return { + ...state, + ...adjustedState, + searchQuery: "", + activeItemIndex, + activationTrigger: (_a3 = action.trigger) != null ? _a3 : 1 /* Other */ + }; + }, + [3 /* Search */]: (state, action) => { + let wasAlreadySearching = state.searchQuery !== ""; + let offset = wasAlreadySearching ? 0 : 1; + let searchQuery = state.searchQuery + action.value.toLowerCase(); + let reOrderedItems = state.activeItemIndex !== null ? state.items.slice(state.activeItemIndex + offset).concat(state.items.slice(0, state.activeItemIndex + offset)) : state.items; + let matchingItem = reOrderedItems.find( + (item) => { + var _a3; + return ((_a3 = item.dataRef.current.textValue) == null ? void 0 : _a3.startsWith(searchQuery)) && !item.dataRef.current.disabled; + } + ); + let matchIdx = matchingItem ? state.items.indexOf(matchingItem) : -1; + if (matchIdx === -1 || matchIdx === state.activeItemIndex) + return { ...state, searchQuery }; + return { + ...state, + searchQuery, + activeItemIndex: matchIdx, + activationTrigger: 1 /* Other */ + }; + }, + [4 /* ClearSearch */](state) { + if (state.searchQuery === "") + return state; + return { ...state, searchQuery: "", searchActiveItemIndex: null }; + }, + [5 /* RegisterItem */]: (state, action) => { + let adjustedState = adjustOrderedState3(state, (items) => [ + ...items, + { id: action.id, dataRef: action.dataRef } + ]); + return { ...state, ...adjustedState }; + }, + [6 /* UnregisterItem */]: (state, action) => { + let adjustedState = adjustOrderedState3(state, (items) => { + let idx = items.findIndex((a) => a.id === action.id); + if (idx !== -1) + items.splice(idx, 1); + return items; + }); + return { + ...state, + ...adjustedState, + activationTrigger: 1 /* Other */ + }; + } +}; +var MenuContext = (0, import_react36.createContext)(null); +MenuContext.displayName = "MenuContext"; +function useMenuContext(component) { + let context = (0, import_react36.useContext)(MenuContext); + if (context === null) { + let err = new Error(`<${component} /> is missing a parent component.`); + if (Error.captureStackTrace) + Error.captureStackTrace(err, useMenuContext); + throw err; + } + return context; +} +function stateReducer5(state, action) { + return match(action.type, reducers5, state, action); +} +var DEFAULT_MENU_TAG = import_react36.Fragment; +function MenuFn(props, ref) { + let { __demoMode = false, ...theirProps } = props; + let reducerBag = (0, import_react36.useReducer)(stateReducer5, { + __demoMode, + menuState: __demoMode ? 0 /* Open */ : 1 /* Closed */, + buttonRef: (0, import_react36.createRef)(), + itemsRef: (0, import_react36.createRef)(), + items: [], + searchQuery: "", + activeItemIndex: null, + activationTrigger: 1 /* Other */ + }); + let [{ menuState, itemsRef, buttonRef }, dispatch] = reducerBag; + let menuRef = useSyncRefs(ref); + useOutsideClick( + [buttonRef, itemsRef], + (event, target) => { + var _a3; + dispatch({ type: 1 /* CloseMenu */ }); + if (!isFocusableElement(target, 1 /* Loose */)) { + event.preventDefault(); + (_a3 = buttonRef.current) == null ? void 0 : _a3.focus(); + } + }, + menuState === 0 /* Open */ + ); + let close = useEvent(() => { + dispatch({ type: 1 /* CloseMenu */ }); + }); + let slot = (0, import_react36.useMemo)( + () => ({ open: menuState === 0 /* Open */, close }), + [menuState, close] + ); + let ourProps = { ref: menuRef }; + return /* @__PURE__ */ import_react36.default.createElement(MenuContext.Provider, { value: reducerBag }, /* @__PURE__ */ import_react36.default.createElement( + OpenClosedProvider, + { + value: match(menuState, { + [0 /* Open */]: 1 /* Open */, + [1 /* Closed */]: 2 /* Closed */ + }) + }, + render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_MENU_TAG, + name: "Menu" + }) + )); +} +var DEFAULT_BUTTON_TAG4 = "button"; +function ButtonFn4(props, ref) { + var _a3; + let internalId = useId(); + let { id = `headlessui-menu-button-${internalId}`, ...theirProps } = props; + let [state, dispatch] = useMenuContext("Menu.Button"); + let buttonRef = useSyncRefs(state.buttonRef, ref); + let d = useDisposables(); + let handleKeyDown = useEvent((event) => { + switch (event.key) { + case " " /* Space */: + case "Enter" /* Enter */: + case "ArrowDown" /* ArrowDown */: + event.preventDefault(); + event.stopPropagation(); + dispatch({ type: 0 /* OpenMenu */ }); + d.nextFrame(() => dispatch({ type: 2 /* GoToItem */, focus: 0 /* First */ })); + break; + case "ArrowUp" /* ArrowUp */: + event.preventDefault(); + event.stopPropagation(); + dispatch({ type: 0 /* OpenMenu */ }); + d.nextFrame(() => dispatch({ type: 2 /* GoToItem */, focus: 3 /* Last */ })); + break; + } + }); + let handleKeyUp = useEvent((event) => { + switch (event.key) { + case " " /* Space */: + event.preventDefault(); + break; + } + }); + let handleClick = useEvent((event) => { + if (isDisabledReactIssue7711(event.currentTarget)) + return event.preventDefault(); + if (props.disabled) + return; + if (state.menuState === 0 /* Open */) { + dispatch({ type: 1 /* CloseMenu */ }); + d.nextFrame(() => { + var _a4; + return (_a4 = state.buttonRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); + }); + } else { + event.preventDefault(); + dispatch({ type: 0 /* OpenMenu */ }); + } + }); + let slot = (0, import_react36.useMemo)( + () => ({ open: state.menuState === 0 /* Open */ }), + [state] + ); + let ourProps = { + ref: buttonRef, + id, + type: useResolveButtonType(props, state.buttonRef), + "aria-haspopup": "menu", + "aria-controls": (_a3 = state.itemsRef.current) == null ? void 0 : _a3.id, + "aria-expanded": props.disabled ? void 0 : state.menuState === 0 /* Open */, + onKeyDown: handleKeyDown, + onKeyUp: handleKeyUp, + onClick: handleClick + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_BUTTON_TAG4, + name: "Menu.Button" + }); +} +var DEFAULT_ITEMS_TAG = "div"; +var ItemsRenderFeatures = 1 /* RenderStrategy */ | 2 /* Static */; +function ItemsFn(props, ref) { + var _a3, _b; + let internalId = useId(); + let { id = `headlessui-menu-items-${internalId}`, ...theirProps } = props; + let [state, dispatch] = useMenuContext("Menu.Items"); + let itemsRef = useSyncRefs(state.itemsRef, ref); + let ownerDocument = useOwnerDocument(state.itemsRef); + let searchDisposables = useDisposables(); + let usesOpenClosedState = useOpenClosed(); + let visible = (() => { + if (usesOpenClosedState !== null) { + return (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; + } + return state.menuState === 0 /* Open */; + })(); + (0, import_react36.useEffect)(() => { + let container = state.itemsRef.current; + if (!container) + return; + if (state.menuState !== 0 /* Open */) + return; + if (container === (ownerDocument == null ? void 0 : ownerDocument.activeElement)) + return; + container.focus({ preventScroll: true }); + }, [state.menuState, state.itemsRef, ownerDocument]); + useTreeWalker({ + container: state.itemsRef.current, + enabled: state.menuState === 0 /* Open */, + accept(node) { + if (node.getAttribute("role") === "menuitem") + return NodeFilter.FILTER_REJECT; + if (node.hasAttribute("role")) + return NodeFilter.FILTER_SKIP; + return NodeFilter.FILTER_ACCEPT; + }, + walk(node) { + node.setAttribute("role", "none"); + } + }); + let handleKeyDown = useEvent((event) => { + var _a4, _b2; + searchDisposables.dispose(); + switch (event.key) { + case " " /* Space */: + if (state.searchQuery !== "") { + event.preventDefault(); + event.stopPropagation(); + return dispatch({ type: 3 /* Search */, value: event.key }); + } + case "Enter" /* Enter */: + event.preventDefault(); + event.stopPropagation(); + dispatch({ type: 1 /* CloseMenu */ }); + if (state.activeItemIndex !== null) { + let { dataRef } = state.items[state.activeItemIndex]; + (_b2 = (_a4 = dataRef.current) == null ? void 0 : _a4.domRef.current) == null ? void 0 : _b2.click(); + } + restoreFocusIfNecessary(state.buttonRef.current); + break; + case "ArrowDown" /* ArrowDown */: + event.preventDefault(); + event.stopPropagation(); + return dispatch({ type: 2 /* GoToItem */, focus: 2 /* Next */ }); + case "ArrowUp" /* ArrowUp */: + event.preventDefault(); + event.stopPropagation(); + return dispatch({ type: 2 /* GoToItem */, focus: 1 /* Previous */ }); + case "Home" /* Home */: + case "PageUp" /* PageUp */: + event.preventDefault(); + event.stopPropagation(); + return dispatch({ type: 2 /* GoToItem */, focus: 0 /* First */ }); + case "End" /* End */: + case "PageDown" /* PageDown */: + event.preventDefault(); + event.stopPropagation(); + return dispatch({ type: 2 /* GoToItem */, focus: 3 /* Last */ }); + case "Escape" /* Escape */: + event.preventDefault(); + event.stopPropagation(); + dispatch({ type: 1 /* CloseMenu */ }); + disposables().nextFrame(() => { + var _a5; + return (_a5 = state.buttonRef.current) == null ? void 0 : _a5.focus({ preventScroll: true }); + }); + break; + case "Tab" /* Tab */: + event.preventDefault(); + event.stopPropagation(); + dispatch({ type: 1 /* CloseMenu */ }); + disposables().nextFrame(() => { + focusFrom( + state.buttonRef.current, + event.shiftKey ? 2 /* Previous */ : 4 /* Next */ + ); + }); + break; + default: + if (event.key.length === 1) { + dispatch({ type: 3 /* Search */, value: event.key }); + searchDisposables.setTimeout(() => dispatch({ type: 4 /* ClearSearch */ }), 350); + } + break; + } + }); + let handleKeyUp = useEvent((event) => { + switch (event.key) { + case " " /* Space */: + event.preventDefault(); + break; + } + }); + let slot = (0, import_react36.useMemo)( + () => ({ open: state.menuState === 0 /* Open */ }), + [state] + ); + let ourProps = { + "aria-activedescendant": state.activeItemIndex === null ? void 0 : (_a3 = state.items[state.activeItemIndex]) == null ? void 0 : _a3.id, + "aria-labelledby": (_b = state.buttonRef.current) == null ? void 0 : _b.id, + id, + onKeyDown: handleKeyDown, + onKeyUp: handleKeyUp, + role: "menu", + tabIndex: 0, + ref: itemsRef + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_ITEMS_TAG, + features: ItemsRenderFeatures, + visible, + name: "Menu.Items" + }); +} +var DEFAULT_ITEM_TAG = import_react36.Fragment; +function ItemFn(props, ref) { + let internalId = useId(); + let { id = `headlessui-menu-item-${internalId}`, disabled = false, ...theirProps } = props; + let [state, dispatch] = useMenuContext("Menu.Item"); + let active = state.activeItemIndex !== null ? state.items[state.activeItemIndex].id === id : false; + let internalItemRef = (0, import_react36.useRef)(null); + let itemRef = useSyncRefs(ref, internalItemRef); + useIsoMorphicEffect(() => { + if (state.__demoMode) + return; + if (state.menuState !== 0 /* Open */) + return; + if (!active) + return; + if (state.activationTrigger === 0 /* Pointer */) + return; + let d = disposables(); + d.requestAnimationFrame(() => { + var _a3, _b; + (_b = (_a3 = internalItemRef.current) == null ? void 0 : _a3.scrollIntoView) == null ? void 0 : _b.call(_a3, { block: "nearest" }); + }); + return d.dispose; + }, [ + state.__demoMode, + internalItemRef, + active, + state.menuState, + state.activationTrigger, + /* We also want to trigger this when the position of the active item changes so that we can re-trigger the scrollIntoView */ + state.activeItemIndex + ]); + let getTextValue2 = useTextValue(internalItemRef); + let bag = (0, import_react36.useRef)({ + disabled, + domRef: internalItemRef, + get textValue() { + return getTextValue2(); + } + }); + useIsoMorphicEffect(() => { + bag.current.disabled = disabled; + }, [bag, disabled]); + useIsoMorphicEffect(() => { + dispatch({ type: 5 /* RegisterItem */, id, dataRef: bag }); + return () => dispatch({ type: 6 /* UnregisterItem */, id }); + }, [bag, id]); + let close = useEvent(() => { + dispatch({ type: 1 /* CloseMenu */ }); + }); + let handleClick = useEvent((event) => { + if (disabled) + return event.preventDefault(); + dispatch({ type: 1 /* CloseMenu */ }); + restoreFocusIfNecessary(state.buttonRef.current); + }); + let handleFocus = useEvent(() => { + if (disabled) + return dispatch({ type: 2 /* GoToItem */, focus: 5 /* Nothing */ }); + dispatch({ type: 2 /* GoToItem */, focus: 4 /* Specific */, id }); + }); + let pointer = useTrackedPointer(); + let handleEnter = useEvent((evt) => pointer.update(evt)); + let handleMove = useEvent((evt) => { + if (!pointer.wasMoved(evt)) + return; + if (disabled) + return; + if (active) + return; + dispatch({ + type: 2 /* GoToItem */, + focus: 4 /* Specific */, + id, + trigger: 0 /* Pointer */ + }); + }); + let handleLeave = useEvent((evt) => { + if (!pointer.wasMoved(evt)) + return; + if (disabled) + return; + if (!active) + return; + dispatch({ type: 2 /* GoToItem */, focus: 5 /* Nothing */ }); + }); + let slot = (0, import_react36.useMemo)( + () => ({ active, disabled, close }), + [active, disabled, close] + ); + let ourProps = { + id, + ref: itemRef, + role: "menuitem", + tabIndex: disabled === true ? void 0 : -1, + "aria-disabled": disabled === true ? true : void 0, + disabled: void 0, + // Never forward the `disabled` prop + onClick: handleClick, + onFocus: handleFocus, + onPointerEnter: handleEnter, + onMouseEnter: handleEnter, + onPointerMove: handleMove, + onMouseMove: handleMove, + onPointerLeave: handleLeave, + onMouseLeave: handleLeave + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_ITEM_TAG, + name: "Menu.Item" + }); +} +var MenuRoot = forwardRefWithAs(MenuFn); +var Button4 = forwardRefWithAs(ButtonFn4); +var Items = forwardRefWithAs(ItemsFn); +var Item = forwardRefWithAs(ItemFn); +var Menu = Object.assign(MenuRoot, { Button: Button4, Items, Item }); + +// src/components/popover/popover.tsx +var import_react37 = __toESM(__webpack_require__(/*! react */ "react"), 1); +var reducers6 = { + [0 /* TogglePopover */]: (state) => { + let nextState = { + ...state, + popoverState: match(state.popoverState, { + [0 /* Open */]: 1 /* Closed */, + [1 /* Closed */]: 0 /* Open */ + }) + }; + if (nextState.popoverState === 0 /* Open */) { + nextState.__demoMode = false; + } + return nextState; + }, + [1 /* ClosePopover */](state) { + if (state.popoverState === 1 /* Closed */) + return state; + return { ...state, popoverState: 1 /* Closed */ }; + }, + [2 /* SetButton */](state, action) { + if (state.button === action.button) + return state; + return { ...state, button: action.button }; + }, + [3 /* SetButtonId */](state, action) { + if (state.buttonId === action.buttonId) + return state; + return { ...state, buttonId: action.buttonId }; + }, + [4 /* SetPanel */](state, action) { + if (state.panel === action.panel) + return state; + return { ...state, panel: action.panel }; + }, + [5 /* SetPanelId */](state, action) { + if (state.panelId === action.panelId) + return state; + return { ...state, panelId: action.panelId }; + } +}; +var PopoverContext = (0, import_react37.createContext)(null); +PopoverContext.displayName = "PopoverContext"; +function usePopoverContext(component) { + let context = (0, import_react37.useContext)(PopoverContext); + if (context === null) { + let err = new Error(`<${component} /> is missing a parent component.`); + if (Error.captureStackTrace) + Error.captureStackTrace(err, usePopoverContext); + throw err; + } + return context; +} +var PopoverAPIContext = (0, import_react37.createContext)(null); +PopoverAPIContext.displayName = "PopoverAPIContext"; +function usePopoverAPIContext(component) { + let context = (0, import_react37.useContext)(PopoverAPIContext); + if (context === null) { + let err = new Error(`<${component} /> is missing a parent component.`); + if (Error.captureStackTrace) + Error.captureStackTrace(err, usePopoverAPIContext); + throw err; + } + return context; +} +var PopoverGroupContext = (0, import_react37.createContext)(null); +PopoverGroupContext.displayName = "PopoverGroupContext"; +function usePopoverGroupContext() { + return (0, import_react37.useContext)(PopoverGroupContext); +} +var PopoverPanelContext = (0, import_react37.createContext)(null); +PopoverPanelContext.displayName = "PopoverPanelContext"; +function usePopoverPanelContext() { + return (0, import_react37.useContext)(PopoverPanelContext); +} +function stateReducer6(state, action) { + return match(action.type, reducers6, state, action); +} +var DEFAULT_POPOVER_TAG = "div"; +function PopoverFn(props, ref) { + var _a3; + let { __demoMode = false, ...theirProps } = props; + let internalPopoverRef = (0, import_react37.useRef)(null); + let popoverRef = useSyncRefs( + ref, + optionalRef((ref2) => { + internalPopoverRef.current = ref2; + }) + ); + let buttons = (0, import_react37.useRef)([]); + let reducerBag = (0, import_react37.useReducer)(stateReducer6, { + __demoMode, + popoverState: __demoMode ? 0 /* Open */ : 1 /* Closed */, + buttons, + button: null, + buttonId: null, + panel: null, + panelId: null, + beforePanelSentinel: (0, import_react37.createRef)(), + afterPanelSentinel: (0, import_react37.createRef)() + }); + let [ + { popoverState, button, buttonId, panel, panelId, beforePanelSentinel, afterPanelSentinel }, + dispatch + ] = reducerBag; + let ownerDocument = useOwnerDocument((_a3 = internalPopoverRef.current) != null ? _a3 : button); + let isPortalled = (0, import_react37.useMemo)(() => { + if (!button) + return false; + if (!panel) + return false; + for (let root2 of document.querySelectorAll("body > *")) { + if (Number(root2 == null ? void 0 : root2.contains(button)) ^ Number(root2 == null ? void 0 : root2.contains(panel))) { + return true; + } + } + let elements = getFocusableElements(); + let buttonIdx = elements.indexOf(button); + let beforeIdx = (buttonIdx + elements.length - 1) % elements.length; + let afterIdx = (buttonIdx + 1) % elements.length; + let beforeElement = elements[beforeIdx]; + let afterElement = elements[afterIdx]; + if (!panel.contains(beforeElement) && !panel.contains(afterElement)) { + return true; + } + return false; + }, [button, panel]); + let buttonIdRef = useLatestValue(buttonId); + let panelIdRef = useLatestValue(panelId); + let registerBag = (0, import_react37.useMemo)( + () => ({ + buttonId: buttonIdRef, + panelId: panelIdRef, + close: () => dispatch({ type: 1 /* ClosePopover */ }) + }), + [buttonIdRef, panelIdRef, dispatch] + ); + let groupContext = usePopoverGroupContext(); + let registerPopover = groupContext == null ? void 0 : groupContext.registerPopover; + let isFocusWithinPopoverGroup = useEvent(() => { + var _a4; + return (_a4 = groupContext == null ? void 0 : groupContext.isFocusWithinPopoverGroup()) != null ? _a4 : (ownerDocument == null ? void 0 : ownerDocument.activeElement) && ((button == null ? void 0 : button.contains(ownerDocument.activeElement)) || (panel == null ? void 0 : panel.contains(ownerDocument.activeElement))); + }); + (0, import_react37.useEffect)(() => registerPopover == null ? void 0 : registerPopover(registerBag), [registerPopover, registerBag]); + let [portals, PortalWrapper] = useNestedPortals(); + let root = useRootContainers({ + portals, + defaultContainers: [button, panel] + }); + useEventListener( + ownerDocument == null ? void 0 : ownerDocument.defaultView, + "focus", + (event) => { + var _a4, _b, _c, _d; + if (event.target === window) + return; + if (!(event.target instanceof HTMLElement)) + return; + if (popoverState !== 0 /* Open */) + return; + if (isFocusWithinPopoverGroup()) + return; + if (!button) + return; + if (!panel) + return; + if (root.contains(event.target)) + return; + if ((_b = (_a4 = beforePanelSentinel.current) == null ? void 0 : _a4.contains) == null ? void 0 : _b.call(_a4, event.target)) + return; + if ((_d = (_c = afterPanelSentinel.current) == null ? void 0 : _c.contains) == null ? void 0 : _d.call(_c, event.target)) + return; + dispatch({ type: 1 /* ClosePopover */ }); + }, + true + ); + useOutsideClick( + root.resolveContainers, + (event, target) => { + dispatch({ type: 1 /* ClosePopover */ }); + if (!isFocusableElement(target, 1 /* Loose */)) { + event.preventDefault(); + button == null ? void 0 : button.focus(); + } + }, + popoverState === 0 /* Open */ + ); + let close = useEvent( + (focusableElement) => { + dispatch({ type: 1 /* ClosePopover */ }); + let restoreElement = (() => { + if (!focusableElement) + return button; + if (focusableElement instanceof HTMLElement) + return focusableElement; + if ("current" in focusableElement && focusableElement.current instanceof HTMLElement) + return focusableElement.current; + return button; + })(); + restoreElement == null ? void 0 : restoreElement.focus(); + } + ); + let api = (0, import_react37.useMemo)( + () => ({ close, isPortalled }), + [close, isPortalled] + ); + let slot = (0, import_react37.useMemo)( + () => ({ open: popoverState === 0 /* Open */, close }), + [popoverState, close] + ); + let ourProps = { ref: popoverRef }; + return /* @__PURE__ */ import_react37.default.createElement(PopoverPanelContext.Provider, { value: null }, /* @__PURE__ */ import_react37.default.createElement(PopoverContext.Provider, { value: reducerBag }, /* @__PURE__ */ import_react37.default.createElement(PopoverAPIContext.Provider, { value: api }, /* @__PURE__ */ import_react37.default.createElement( + OpenClosedProvider, + { + value: match(popoverState, { + [0 /* Open */]: 1 /* Open */, + [1 /* Closed */]: 2 /* Closed */ + }) + }, + /* @__PURE__ */ import_react37.default.createElement(PortalWrapper, null, render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_POPOVER_TAG, + name: "Popover" + }), /* @__PURE__ */ import_react37.default.createElement(root.MainTreeNode, null)) + )))); +} +var DEFAULT_BUTTON_TAG5 = "button"; +function ButtonFn5(props, ref) { + let internalId = useId(); + let { id = `headlessui-popover-button-${internalId}`, ...theirProps } = props; + let [state, dispatch] = usePopoverContext("Popover.Button"); + let { isPortalled } = usePopoverAPIContext("Popover.Button"); + let internalButtonRef = (0, import_react37.useRef)(null); + let sentinelId = `headlessui-focus-sentinel-${useId()}`; + let groupContext = usePopoverGroupContext(); + let closeOthers = groupContext == null ? void 0 : groupContext.closeOthers; + let panelContext = usePopoverPanelContext(); + let isWithinPanel = panelContext !== null; + (0, import_react37.useEffect)(() => { + if (isWithinPanel) + return; + dispatch({ type: 3 /* SetButtonId */, buttonId: id }); + return () => { + dispatch({ type: 3 /* SetButtonId */, buttonId: null }); + }; + }, [isWithinPanel, id, dispatch]); + let [uniqueIdentifier] = (0, import_react37.useState)(() => Symbol()); + let buttonRef = useSyncRefs( + internalButtonRef, + ref, + isWithinPanel ? null : (button) => { + if (button) { + state.buttons.current.push(uniqueIdentifier); + } else { + let idx = state.buttons.current.indexOf(uniqueIdentifier); + if (idx !== -1) + state.buttons.current.splice(idx, 1); + } + if (state.buttons.current.length > 1) { + console.warn( + "You are already using a but only 1 is supported." + ); + } + button && dispatch({ type: 2 /* SetButton */, button }); + } + ); + let withinPanelButtonRef = useSyncRefs(internalButtonRef, ref); + let ownerDocument = useOwnerDocument(internalButtonRef); + let handleKeyDown = useEvent((event) => { + var _a3, _b, _c; + if (isWithinPanel) { + if (state.popoverState === 1 /* Closed */) + return; + switch (event.key) { + case " " /* Space */: + case "Enter" /* Enter */: + event.preventDefault(); + (_b = (_a3 = event.target).click) == null ? void 0 : _b.call(_a3); + dispatch({ type: 1 /* ClosePopover */ }); + (_c = state.button) == null ? void 0 : _c.focus(); + break; + } + } else { + switch (event.key) { + case " " /* Space */: + case "Enter" /* Enter */: + event.preventDefault(); + event.stopPropagation(); + if (state.popoverState === 1 /* Closed */) + closeOthers == null ? void 0 : closeOthers(state.buttonId); + dispatch({ type: 0 /* TogglePopover */ }); + break; + case "Escape" /* Escape */: + if (state.popoverState !== 0 /* Open */) + return closeOthers == null ? void 0 : closeOthers(state.buttonId); + if (!internalButtonRef.current) + return; + if ((ownerDocument == null ? void 0 : ownerDocument.activeElement) && !internalButtonRef.current.contains(ownerDocument.activeElement)) { + return; + } + event.preventDefault(); + event.stopPropagation(); + dispatch({ type: 1 /* ClosePopover */ }); + break; + } + } + }); + let handleKeyUp = useEvent((event) => { + if (isWithinPanel) + return; + if (event.key === " " /* Space */) { + event.preventDefault(); + } + }); + let handleClick = useEvent((event) => { + var _a3, _b; + if (isDisabledReactIssue7711(event.currentTarget)) + return; + if (props.disabled) + return; + if (isWithinPanel) { + dispatch({ type: 1 /* ClosePopover */ }); + (_a3 = state.button) == null ? void 0 : _a3.focus(); + } else { + event.preventDefault(); + event.stopPropagation(); + if (state.popoverState === 1 /* Closed */) + closeOthers == null ? void 0 : closeOthers(state.buttonId); + dispatch({ type: 0 /* TogglePopover */ }); + (_b = state.button) == null ? void 0 : _b.focus(); + } + }); + let handleMouseDown = useEvent((event) => { + event.preventDefault(); + event.stopPropagation(); + }); + let visible = state.popoverState === 0 /* Open */; + let slot = (0, import_react37.useMemo)(() => ({ open: visible }), [visible]); + let type = useResolveButtonType(props, internalButtonRef); + let ourProps = isWithinPanel ? { + ref: withinPanelButtonRef, + type, + onKeyDown: handleKeyDown, + onClick: handleClick + } : { + ref: buttonRef, + id: state.buttonId, + type, + "aria-expanded": props.disabled ? void 0 : state.popoverState === 0 /* Open */, + "aria-controls": state.panel ? state.panelId : void 0, + onKeyDown: handleKeyDown, + onKeyUp: handleKeyUp, + onClick: handleClick, + onMouseDown: handleMouseDown + }; + let direction = useTabDirection(); + let handleFocus = useEvent(() => { + let el = state.panel; + if (!el) + return; + function run() { + let result = match(direction.current, { + [0 /* Forwards */]: () => focusIn(el, 1 /* First */), + [1 /* Backwards */]: () => focusIn(el, 8 /* Last */) + }); + if (result === 0 /* Error */) { + focusIn( + getFocusableElements().filter((el2) => el2.dataset.headlessuiFocusGuard !== "true"), + match(direction.current, { + [0 /* Forwards */]: 4 /* Next */, + [1 /* Backwards */]: 2 /* Previous */ + }), + { relativeTo: state.button } + ); + } + } + if (false) {} else { + run(); + } + }); + return /* @__PURE__ */ import_react37.default.createElement(import_react37.default.Fragment, null, render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_BUTTON_TAG5, + name: "Popover.Button" + }), visible && !isWithinPanel && isPortalled && /* @__PURE__ */ import_react37.default.createElement( + Hidden, + { + id: sentinelId, + features: 2 /* Focusable */, + "data-headlessui-focus-guard": true, + as: "button", + type: "button", + onFocus: handleFocus + } + )); +} +var DEFAULT_OVERLAY_TAG2 = "div"; +var OverlayRenderFeatures = 1 /* RenderStrategy */ | 2 /* Static */; +function OverlayFn2(props, ref) { + let internalId = useId(); + let { id = `headlessui-popover-overlay-${internalId}`, ...theirProps } = props; + let [{ popoverState }, dispatch] = usePopoverContext("Popover.Overlay"); + let overlayRef = useSyncRefs(ref); + let usesOpenClosedState = useOpenClosed(); + let visible = (() => { + if (usesOpenClosedState !== null) { + return (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; + } + return popoverState === 0 /* Open */; + })(); + let handleClick = useEvent((event) => { + if (isDisabledReactIssue7711(event.currentTarget)) + return event.preventDefault(); + dispatch({ type: 1 /* ClosePopover */ }); + }); + let slot = (0, import_react37.useMemo)( + () => ({ open: popoverState === 0 /* Open */ }), + [popoverState] + ); + let ourProps = { + ref: overlayRef, + id, + "aria-hidden": true, + onClick: handleClick + }; + return render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_OVERLAY_TAG2, + features: OverlayRenderFeatures, + visible, + name: "Popover.Overlay" + }); +} +var DEFAULT_PANEL_TAG3 = "div"; +var PanelRenderFeatures2 = 1 /* RenderStrategy */ | 2 /* Static */; +function PanelFn3(props, ref) { + let internalId = useId(); + let { id = `headlessui-popover-panel-${internalId}`, focus = false, ...theirProps } = props; + let [state, dispatch] = usePopoverContext("Popover.Panel"); + let { close, isPortalled } = usePopoverAPIContext("Popover.Panel"); + let beforePanelSentinelId = `headlessui-focus-sentinel-before-${useId()}`; + let afterPanelSentinelId = `headlessui-focus-sentinel-after-${useId()}`; + let internalPanelRef = (0, import_react37.useRef)(null); + let panelRef = useSyncRefs(internalPanelRef, ref, (panel) => { + dispatch({ type: 4 /* SetPanel */, panel }); + }); + let ownerDocument = useOwnerDocument(internalPanelRef); + useIsoMorphicEffect(() => { + dispatch({ type: 5 /* SetPanelId */, panelId: id }); + return () => { + dispatch({ type: 5 /* SetPanelId */, panelId: null }); + }; + }, [id, dispatch]); + let usesOpenClosedState = useOpenClosed(); + let visible = (() => { + if (usesOpenClosedState !== null) { + return (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; + } + return state.popoverState === 0 /* Open */; + })(); + let handleKeyDown = useEvent((event) => { + var _a3; + switch (event.key) { + case "Escape" /* Escape */: + if (state.popoverState !== 0 /* Open */) + return; + if (!internalPanelRef.current) + return; + if ((ownerDocument == null ? void 0 : ownerDocument.activeElement) && !internalPanelRef.current.contains(ownerDocument.activeElement)) { + return; + } + event.preventDefault(); + event.stopPropagation(); + dispatch({ type: 1 /* ClosePopover */ }); + (_a3 = state.button) == null ? void 0 : _a3.focus(); + break; + } + }); + (0, import_react37.useEffect)(() => { + var _a3; + if (props.static) + return; + if (state.popoverState === 1 /* Closed */ && ((_a3 = props.unmount) != null ? _a3 : true)) { + dispatch({ type: 4 /* SetPanel */, panel: null }); + } + }, [state.popoverState, props.unmount, props.static, dispatch]); + (0, import_react37.useEffect)(() => { + if (state.__demoMode) + return; + if (!focus) + return; + if (state.popoverState !== 0 /* Open */) + return; + if (!internalPanelRef.current) + return; + let activeElement = ownerDocument == null ? void 0 : ownerDocument.activeElement; + if (internalPanelRef.current.contains(activeElement)) + return; + focusIn(internalPanelRef.current, 1 /* First */); + }, [state.__demoMode, focus, internalPanelRef, state.popoverState]); + let slot = (0, import_react37.useMemo)( + () => ({ open: state.popoverState === 0 /* Open */, close }), + [state, close] + ); + let ourProps = { + ref: panelRef, + id, + onKeyDown: handleKeyDown, + onBlur: focus && state.popoverState === 0 /* Open */ ? (event) => { + var _a3, _b, _c, _d, _e; + let el = event.relatedTarget; + if (!el) + return; + if (!internalPanelRef.current) + return; + if ((_a3 = internalPanelRef.current) == null ? void 0 : _a3.contains(el)) + return; + dispatch({ type: 1 /* ClosePopover */ }); + if (((_c = (_b = state.beforePanelSentinel.current) == null ? void 0 : _b.contains) == null ? void 0 : _c.call(_b, el)) || ((_e = (_d = state.afterPanelSentinel.current) == null ? void 0 : _d.contains) == null ? void 0 : _e.call(_d, el))) { + el.focus({ preventScroll: true }); + } + } : void 0, + tabIndex: -1 + }; + let direction = useTabDirection(); + let handleBeforeFocus = useEvent(() => { + let el = internalPanelRef.current; + if (!el) + return; + function run() { + match(direction.current, { + [0 /* Forwards */]: () => { + var _a3; + let result = focusIn(el, 1 /* First */); + if (result === 0 /* Error */) { + (_a3 = state.afterPanelSentinel.current) == null ? void 0 : _a3.focus(); + } + }, + [1 /* Backwards */]: () => { + var _a3; + (_a3 = state.button) == null ? void 0 : _a3.focus({ preventScroll: true }); + } + }); + } + if (false) {} else { + run(); + } + }); + let handleAfterFocus = useEvent(() => { + let el = internalPanelRef.current; + if (!el) + return; + function run() { + match(direction.current, { + [0 /* Forwards */]: () => { + var _a3; + if (!state.button) + return; + let elements = getFocusableElements(); + let idx = elements.indexOf(state.button); + let before = elements.slice(0, idx + 1); + let after = elements.slice(idx + 1); + let combined = [...after, ...before]; + for (let element of combined.slice()) { + if (element.dataset.headlessuiFocusGuard === "true" || ((_a3 = state.panel) == null ? void 0 : _a3.contains(element))) { + let idx2 = combined.indexOf(element); + if (idx2 !== -1) + combined.splice(idx2, 1); + } + } + focusIn(combined, 1 /* First */, { sorted: false }); + }, + [1 /* Backwards */]: () => { + var _a3; + let result = focusIn(el, 2 /* Previous */); + if (result === 0 /* Error */) { + (_a3 = state.button) == null ? void 0 : _a3.focus(); + } + } + }); + } + if (false) {} else { + run(); + } + }); + return /* @__PURE__ */ import_react37.default.createElement(PopoverPanelContext.Provider, { value: id }, visible && isPortalled && /* @__PURE__ */ import_react37.default.createElement( + Hidden, + { + id: beforePanelSentinelId, + ref: state.beforePanelSentinel, + features: 2 /* Focusable */, + "data-headlessui-focus-guard": true, + as: "button", + type: "button", + onFocus: handleBeforeFocus + } + ), render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_PANEL_TAG3, + features: PanelRenderFeatures2, + visible, + name: "Popover.Panel" + }), visible && isPortalled && /* @__PURE__ */ import_react37.default.createElement( + Hidden, + { + id: afterPanelSentinelId, + ref: state.afterPanelSentinel, + features: 2 /* Focusable */, + "data-headlessui-focus-guard": true, + as: "button", + type: "button", + onFocus: handleAfterFocus + } + )); +} +var DEFAULT_GROUP_TAG2 = "div"; +function GroupFn2(props, ref) { + let internalGroupRef = (0, import_react37.useRef)(null); + let groupRef = useSyncRefs(internalGroupRef, ref); + let [popovers, setPopovers] = (0, import_react37.useState)([]); + let unregisterPopover = useEvent((registerbag) => { + setPopovers((existing) => { + let idx = existing.indexOf(registerbag); + if (idx !== -1) { + let clone = existing.slice(); + clone.splice(idx, 1); + return clone; + } + return existing; + }); + }); + let registerPopover = useEvent((registerbag) => { + setPopovers((existing) => [...existing, registerbag]); + return () => unregisterPopover(registerbag); + }); + let isFocusWithinPopoverGroup = useEvent(() => { + var _a3; + let ownerDocument = getOwnerDocument(internalGroupRef); + if (!ownerDocument) + return false; + let element = ownerDocument.activeElement; + if ((_a3 = internalGroupRef.current) == null ? void 0 : _a3.contains(element)) + return true; + return popovers.some((bag) => { + var _a4, _b; + return ((_a4 = ownerDocument.getElementById(bag.buttonId.current)) == null ? void 0 : _a4.contains(element)) || ((_b = ownerDocument.getElementById(bag.panelId.current)) == null ? void 0 : _b.contains(element)); + }); + }); + let closeOthers = useEvent((buttonId) => { + for (let popover of popovers) { + if (popover.buttonId.current !== buttonId) + popover.close(); + } + }); + let contextBag = (0, import_react37.useMemo)( + () => ({ + registerPopover, + unregisterPopover, + isFocusWithinPopoverGroup, + closeOthers + }), + [registerPopover, unregisterPopover, isFocusWithinPopoverGroup, closeOthers] + ); + let slot = (0, import_react37.useMemo)(() => ({}), []); + let theirProps = props; + let ourProps = { ref: groupRef }; + return /* @__PURE__ */ import_react37.default.createElement(PopoverGroupContext.Provider, { value: contextBag }, render({ + ourProps, + theirProps, + slot, + defaultTag: DEFAULT_GROUP_TAG2, + name: "Popover.Group" + })); +} +var PopoverRoot = forwardRefWithAs(PopoverFn); +var Button5 = forwardRefWithAs(ButtonFn5); +var Overlay2 = forwardRefWithAs(OverlayFn2); +var Panel3 = forwardRefWithAs(PanelFn3); +var Group2 = forwardRefWithAs(GroupFn2); +var Popover = Object.assign(PopoverRoot, { Button: Button5, Overlay: Overlay2, Panel: Panel3, Group: Group2 }); + +// src/components/radio-group/radio-group.tsx +var import_react40 = __toESM(__webpack_require__(/*! react */ "react"), 1); + +// src/hooks/use-flags.ts +var import_react38 = __webpack_require__(/*! react */ "react"); +function useFlags(initialFlags = 0) { + let [flags, setFlags] = (0, import_react38.useState)(initialFlags); + let mounted = useIsMounted(); + let addFlag = (0, import_react38.useCallback)( + (flag) => { + if (!mounted.current) + return; + setFlags((flags2) => flags2 | flag); + }, + [flags, mounted] + ); + let hasFlag = (0, import_react38.useCallback)((flag) => Boolean(flags & flag), [flags]); + let removeFlag = (0, import_react38.useCallback)( + (flag) => { + if (!mounted.current) + return; + setFlags((flags2) => flags2 & ~flag); + }, + [setFlags, mounted] + ); + let toggleFlag = (0, import_react38.useCallback)( + (flag) => { + if (!mounted.current) + return; + setFlags((flags2) => flags2 ^ flag); + }, + [setFlags] + ); + return { flags, addFlag, hasFlag, removeFlag, toggleFlag }; +} + +// src/components/label/label.tsx +var import_react39 = __toESM(__webpack_require__(/*! react */ "react"), 1); +var LabelContext = (0, import_react39.createContext)( + null +); +function useLabelContext() { + let context = (0, import_react39.useContext)(LabelContext); + if (context === null) { + let err = new Error("You used a
\n"},uj.dd_close=function(){return"\n"};var pj=uj.getBreak=function getBreak(i,s){return(s=nextToken(i,s))1)break;if(41===u&&--m<0)break;s++}return _!==s&&(v=unescapeMd(i.src.slice(_,s)),!!i.parser.validateLink(v)&&(i.linkContent=v,i.pos=s,!0))}function parseLinkTitle(i,s){var u,m=s,v=i.posMax,_=i.src.charCodeAt(s);if(34!==_&&39!==_&&40!==_)return!1;for(s++,40===_&&(_=41);s=i.length)&&!Cj.test(i[s])}function replaceAt(i,s,u){return i.substr(0,s)+u+i.substr(s+1)}var jj=[["block",function block(i){i.inlineMode?i.tokens.push({type:"inline",content:i.src.replace(/\n/g," ").trim(),level:0,lines:[0,1],children:[]}):i.block.parse(i.src,i.options,i.env,i.tokens)}],["abbr",function abbr(i){var s,u,m,v,_=i.tokens;if(!i.inlineMode)for(s=1,u=_.length-1;s0?j[s].count:1,m=0;m=0;s--)if("text"===(_=v[s]).type){for($=0,j=_.content,X.lastIndex=0,W=_.level,M=[];Y=X.exec(j);)X.lastIndex>$&&M.push({type:"text",content:j.slice($,Y.index+Y[1].length),level:W}),M.push({type:"abbr_open",title:i.env.abbreviations[":"+Y[2]],level:W++}),M.push({type:"text",content:Y[2],level:W}),M.push({type:"abbr_close",level:--W}),$=X.lastIndex-Y[3].length;M.length&&($=0;_--)if("inline"===i.tokens[_].type)for(s=(v=i.tokens[_].children).length-1;s>=0;s--)"text"===(u=v[s]).type&&(m=replaceScopedAbbr(m=u.content),vj.test(m)&&(m=m.replace(/\+-/g,"±").replace(/\.{2,}/g,"…").replace(/([?!])…/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/gm,"$1—$2").replace(/(^|\s)--(\s|$)/gm,"$1–$2").replace(/(^|[^-\s])--([^-\s]|$)/gm,"$1–$2")),u.content=m)}],["smartquotes",function smartquotes(i){var s,u,m,v,_,j,M,$,W,X,Y,Z,ee,ie,ae,ce,le;if(i.options.typographer)for(le=[],ae=i.tokens.length-1;ae>=0;ae--)if("inline"===i.tokens[ae].type)for(ce=i.tokens[ae].children,le.length=0,s=0;s=0&&!(le[ee].level<=M);ee--);le.length=ee+1,_=0,j=(m=u.content).length;e:for(;_=0&&(X=le[ee],!(le[ee].level=(v=i.eMarks[s])||42!==(u=i.src.charCodeAt(m++))&&45!==u&&43!==u||m=v)return-1;if((u=i.src.charCodeAt(m++))<48||u>57)return-1;for(;;){if(m>=v)return-1;if(!((u=i.src.charCodeAt(m++))>=48&&u<=57)){if(41===u||46===u)break;return-1}}return m=this.eMarks[i]},StateBlock.prototype.skipEmptyLines=function skipEmptyLines(i){for(var s=this.lineMax;iu;)if(s!==this.src.charCodeAt(--i))return i+1;return i},StateBlock.prototype.getLines=function getLines(i,s,u,m){var v,_,j,M,$,W=i;if(i>=s)return"";if(W+1===s)return _=this.bMarks[W]+Math.min(this.tShift[W],u),j=m?this.eMarks[W]+1:this.eMarks[W],this.src.slice(_,j);for(M=new Array(s-i),v=0;Wu&&($=u),$<0&&($=0),_=this.bMarks[W]+$,j=W+1]/,Bj=/^<\/([a-zA-Z]{1,15})[\s>]/;function index_browser_getLine(i,s){var u=i.bMarks[s]+i.blkIndent,m=i.eMarks[s];return i.src.substr(u,m-u)}function skipMarker(i,s){var u,m,v=i.bMarks[s]+i.tShift[s],_=i.eMarks[s];return v>=_||126!==(m=i.src.charCodeAt(v++))&&58!==m||v===(u=i.skipSpaces(v))||u>=_?-1:u}var Fj=[["code",function code(i,s,u){var m,v;if(i.tShift[s]-i.blkIndent<4)return!1;for(v=m=s+1;m=4))break;v=++m}return i.line=m,i.tokens.push({type:"code",content:i.getLines(s,v,4+i.blkIndent,!0),block:!0,lines:[s,i.line],level:i.level}),!0}],["fences",function fences(i,s,u,m){var v,_,j,M,$,W=!1,X=i.bMarks[s]+i.tShift[s],Y=i.eMarks[s];if(X+3>Y)return!1;if(126!==(v=i.src.charCodeAt(X))&&96!==v)return!1;if($=X,(_=(X=i.skipChars(X,v))-$)<3)return!1;if((j=i.src.slice(X,Y).trim()).indexOf("`")>=0)return!1;if(m)return!0;for(M=s;!(++M>=u)&&!((X=$=i.bMarks[M]+i.tShift[M])<(Y=i.eMarks[M])&&i.tShift[M]=4||(X=i.skipChars(X,v))-$<_||(X=i.skipSpaces(X))ce)return!1;if(62!==i.src.charCodeAt(ae++))return!1;if(i.level>=i.options.maxNesting)return!1;if(m)return!0;for(32===i.src.charCodeAt(ae)&&ae++,$=i.blkIndent,i.blkIndent=0,M=[i.bMarks[s]],i.bMarks[s]=ae,_=(ae=ae=ce,j=[i.tShift[s]],i.tShift[s]=ae-i.bMarks[s],Y=i.parser.ruler.getRules("blockquote"),v=s+1;v=(ce=i.eMarks[v]));v++)if(62!==i.src.charCodeAt(ae++)){if(_)break;for(ie=!1,Z=0,ee=Y.length;Z=ce,j.push(i.tShift[v]),i.tShift[v]=ae-i.bMarks[v];for(W=i.parentType,i.parentType="blockquote",i.tokens.push({type:"blockquote_open",lines:X=[s,0],level:i.level++}),i.parser.tokenize(i,s,v),i.tokens.push({type:"blockquote_close",level:--i.level}),i.parentType=W,X[1]=i.line,Z=0;Z$)return!1;if(42!==(v=i.src.charCodeAt(M++))&&45!==v&&95!==v)return!1;for(_=1;M<$;){if((j=i.src.charCodeAt(M++))!==v&&32!==j)return!1;j===v&&_++}return!(_<3)&&(m||(i.line=s+1,i.tokens.push({type:"hr",lines:[s,i.line],level:i.level})),!0)},["paragraph","blockquote","list"]],["list",function index_browser_list(i,s,u,m){var v,_,j,M,$,W,X,Y,Z,ee,ie,ae,ce,le,pe,de,fe,ye,be,_e,we,Se=!0;if((Y=skipOrderedListMarker(i,s))>=0)ae=!0;else{if(!((Y=skipBulletListMarker(i,s))>=0))return!1;ae=!1}if(i.level>=i.options.maxNesting)return!1;if(ie=i.src.charCodeAt(Y-1),m)return!0;for(le=i.tokens.length,ae?(X=i.bMarks[s]+i.tShift[s],ee=Number(i.src.substr(X,Y-X-1)),i.tokens.push({type:"ordered_list_open",order:ee,lines:de=[s,0],level:i.level++})):i.tokens.push({type:"bullet_list_open",lines:de=[s,0],level:i.level++}),v=s,pe=!1,ye=i.parser.ruler.getRules("list");!(!(v=i.eMarks[v]?1:ce-Y)>4&&(Z=1),Z<1&&(Z=1),_=Y-i.bMarks[v]+Z,i.tokens.push({type:"list_item_open",lines:fe=[s,0],level:i.level++}),M=i.blkIndent,$=i.tight,j=i.tShift[s],W=i.parentType,i.tShift[s]=ce-i.bMarks[s],i.blkIndent=_,i.tight=!0,i.parentType="list",i.parser.tokenize(i,s,u,!0),i.tight&&!pe||(Se=!1),pe=i.line-s>1&&i.isEmpty(i.line-1),i.blkIndent=M,i.tShift[s]=j,i.tight=$,i.parentType=W,i.tokens.push({type:"list_item_close",level:--i.level}),v=s=i.line,fe[1]=v,ce=i.bMarks[s],v>=u)||i.isEmpty(v)||i.tShift[v]X)return!1;if(91!==i.src.charCodeAt(W))return!1;if(94!==i.src.charCodeAt(W+1))return!1;if(i.level>=i.options.maxNesting)return!1;for(M=W+2;M=X||58!==i.src.charCodeAt(++M))&&(m||(M++,i.env.footnotes||(i.env.footnotes={}),i.env.footnotes.refs||(i.env.footnotes.refs={}),$=i.src.slice(W+2,M-2),i.env.footnotes.refs[":"+$]=-1,i.tokens.push({type:"footnote_reference_open",label:$,level:i.level++}),v=i.bMarks[s],_=i.tShift[s],j=i.parentType,i.tShift[s]=i.skipSpaces(M)-M,i.bMarks[s]=M,i.blkIndent+=4,i.parentType="footnote",i.tShift[s]=$)return!1;if(35!==(v=i.src.charCodeAt(M))||M>=$)return!1;for(_=1,v=i.src.charCodeAt(++M);35===v&&M<$&&_<=6;)_++,v=i.src.charCodeAt(++M);return!(_>6||M<$&&32!==v)&&(m||($=i.skipCharsBack($,32,M),(j=i.skipCharsBack($,35,M))>M&&32===i.src.charCodeAt(j-1)&&($=j),i.line=s+1,i.tokens.push({type:"heading_open",hLevel:_,lines:[s,i.line],level:i.level}),M<$&&i.tokens.push({type:"inline",content:i.src.slice(M,$).trim(),level:i.level+1,lines:[s,i.line],children:[]}),i.tokens.push({type:"heading_close",hLevel:_,level:i.level})),!0)},["paragraph","blockquote"]],["lheading",function lheading(i,s,u){var m,v,_,j=s+1;return!(j>=u)&&(!(i.tShift[j]3)&&(!((v=i.bMarks[j]+i.tShift[j])>=(_=i.eMarks[j]))&&((45===(m=i.src.charCodeAt(v))||61===m)&&(v=i.skipChars(v,m),!((v=i.skipSpaces(v))<_)&&(v=i.bMarks[s]+i.tShift[s],i.line=j+1,i.tokens.push({type:"heading_open",hLevel:61===m?1:2,lines:[s,i.line],level:i.level}),i.tokens.push({type:"inline",content:i.src.slice(v,i.eMarks[s]).trim(),level:i.level+1,lines:[s,i.line-1],children:[]}),i.tokens.push({type:"heading_close",hLevel:61===m?1:2,level:i.level}),!0))))))}],["htmlblock",function htmlblock(i,s,u,m){var v,_,j,M=i.bMarks[s],$=i.eMarks[s],W=i.tShift[s];if(M+=W,!i.options.html)return!1;if(W>3||M+2>=$)return!1;if(60!==i.src.charCodeAt(M))return!1;if(33===(v=i.src.charCodeAt(M+1))||63===v){if(m)return!0}else{if(47!==v&&!function isLetter$1(i){var s=32|i;return s>=97&&s<=122}(v))return!1;if(47===v){if(!(_=i.src.slice(M,$).match(Bj)))return!1}else if(!(_=i.src.slice(M,$).match(Dj)))return!1;if(!0!==Ij[_[1].toLowerCase()])return!1;if(m)return!0}for(j=s+1;ju)return!1;if($=s+1,i.tShift[$]=i.eMarks[$])return!1;if(124!==(v=i.src.charCodeAt(j))&&45!==v&&58!==v)return!1;if(_=index_browser_getLine(i,s+1),!/^[-:| ]+$/.test(_))return!1;if((W=_.split("|"))<=2)return!1;for(Y=[],M=0;M=0;if(X=s+1,i.isEmpty(X)&&++X>u)return!1;if(i.tShift[X]=i.options.maxNesting)return!1;W=i.tokens.length,i.tokens.push({type:"dl_open",lines:$=[s,0],level:i.level++}),j=s,_=X;e:for(;;){for(le=!0,ce=!1,i.tokens.push({type:"dt_open",lines:[j,j],level:i.level++}),i.tokens.push({type:"inline",content:i.getLines(j,j+1,i.blkIndent,!1).trim(),level:i.level+1,lines:[j,j],children:[]}),i.tokens.push({type:"dt_close",level:--i.level});;){if(i.tokens.push({type:"dd_open",lines:M=[X,0],level:i.level++}),ae=i.tight,Z=i.ddIndent,Y=i.blkIndent,ie=i.tShift[_],ee=i.parentType,i.blkIndent=i.ddIndent=i.tShift[_]+2,i.tShift[_]=v-i.bMarks[_],i.tight=!0,i.parentType="deflist",i.parser.tokenize(i,_,u,!0),i.tight&&!ce||(le=!1),ce=i.line-_>1&&i.isEmpty(i.line-1),i.tShift[_]=ie,i.tight=ae,i.parentType=ee,i.blkIndent=Y,i.ddIndent=Z,i.tokens.push({type:"dd_close",level:--i.level}),M[1]=X=i.line,X>=u)break e;if(i.tShift[X]=u)break;if(j=X,i.isEmpty(j))break;if(i.tShift[j]=u)break;if(i.isEmpty(_)&&_++,_>=u)break;if(i.tShift[_]3)){for(v=!1,_=0,j=M.length;_=u))&&!(i.tShift[j]=0&&(i=i.replace(qj,(function(s,u){var m;return 10===i.charCodeAt(u)?(_=u+1,j=0,s):(m=" ".slice((u-_-j)%4),j=u-_+1,m)}))),v=new StateBlock(i,this,s,u,m),this.tokenize(v,v.line,v.lineMax)};for(var Hj=[],Jj=0;Jj<256;Jj++)Hj.push(0);function isAlphaNum(i){return i>=48&&i<=57||i>=65&&i<=90||i>=97&&i<=122}function scanDelims(i,s){var u,m,v,_=s,j=!0,M=!0,$=i.posMax,W=i.src.charCodeAt(s);for(u=s>0?i.src.charCodeAt(s-1):-1;_<$&&i.src.charCodeAt(_)===W;)_++;return _>=$&&(j=!1),(v=_-s)>=4?j=M=!1:(32!==(m=_<$?i.src.charCodeAt(_):-1)&&10!==m||(j=!1),32!==u&&10!==u||(M=!1),95===W&&(isAlphaNum(u)&&(j=!1),isAlphaNum(m)&&(M=!1))),{can_open:j,can_close:M,delims:v}}"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach((function(i){Hj[i.charCodeAt(0)]=1}));var Gj=/\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g;var eP=/\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g;var tP=["coap","doi","javascript","aaa","aaas","about","acap","cap","cid","crid","data","dav","dict","dns","file","ftp","geo","go","gopher","h323","http","https","iax","icap","im","imap","info","ipp","iris","iris.beep","iris.xpc","iris.xpcs","iris.lwz","ldap","mailto","mid","msrp","msrps","mtqp","mupdate","news","nfs","ni","nih","nntp","opaquelocktoken","pop","pres","rtsp","service","session","shttp","sieve","sip","sips","sms","snmp","soap.beep","soap.beeps","tag","tel","telnet","tftp","thismessage","tn3270","tip","tv","urn","vemmi","ws","wss","xcon","xcon-userid","xmlrpc.beep","xmlrpc.beeps","xmpp","z39.50r","z39.50s","adiumxtra","afp","afs","aim","apt","attachment","aw","beshare","bitcoin","bolo","callto","chrome","chrome-extension","com-eventbrite-attendee","content","cvs","dlna-playsingle","dlna-playcontainer","dtn","dvb","ed2k","facetime","feed","finger","fish","gg","git","gizmoproject","gtalk","hcp","icon","ipn","irc","irc6","ircs","itms","jar","jms","keyparc","lastfm","ldaps","magnet","maps","market","message","mms","ms-help","msnim","mumble","mvn","notes","oid","palm","paparazzi","platform","proxy","psyc","query","res","resource","rmi","rsync","rtmp","secondlife","sftp","sgn","skype","smb","soldat","spotify","ssh","steam","svn","teamspeak","things","udp","unreal","ut2004","ventrilo","view-source","webcal","wtai","wyciwyg","xfire","xri","ymsgr"],rP=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,nP=/^<([a-zA-Z.\-]{1,25}):([^<>\x00-\x20]*)>/;function replace$1(i,s){return i=i.source,s=s||"",function self(u,m){return u?(m=m.source||m,i=i.replace(u,m),self):new RegExp(i,s)}}var oP=replace$1(/(?:unquoted|single_quoted|double_quoted)/)("unquoted",/[^"'=<>`\x00-\x20]+/)("single_quoted",/'[^']*'/)("double_quoted",/"[^"]*"/)(),iP=replace$1(/(?:\s+attr_name(?:\s*=\s*attr_value)?)/)("attr_name",/[a-zA-Z_:][a-zA-Z0-9:._-]*/)("attr_value",oP)(),aP=replace$1(/<[A-Za-z][A-Za-z0-9]*attribute*\s*\/?>/)("attribute",iP)(),sP=replace$1(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/)("open_tag",aP)("close_tag",/<\/[A-Za-z][A-Za-z0-9]*\s*>/)("comment",/|/)("processing",/<[?].*?[?]>/)("declaration",/]*>/)("cdata",//)();var cP=/^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,lP=/^&([a-z][a-z0-9]{1,31});/i;var uP=[["text",function index_browser_text(i,s){for(var u=i.pos;u=0&&32===i.pending.charCodeAt(u))if(u>=1&&32===i.pending.charCodeAt(u-1)){for(var _=u-2;_>=0;_--)if(32!==i.pending.charCodeAt(_)){i.pending=i.pending.substring(0,_+1);break}i.push({type:"hardbreak",level:i.level})}else i.pending=i.pending.slice(0,-1),i.push({type:"softbreak",level:i.level});else i.push({type:"softbreak",level:i.level});for(v++;v=M)return!1;if(126!==i.src.charCodeAt($+1))return!1;if(i.level>=i.options.maxNesting)return!1;if(_=$>0?i.src.charCodeAt($-1):-1,j=i.src.charCodeAt($+2),126===_)return!1;if(126===j)return!1;if(32===j||10===j)return!1;for(m=$+2;m$+3)return i.pos+=m-$,s||(i.pending+=i.src.slice($,m)),!0;for(i.pos=$+2,v=1;i.pos+1=M)return!1;if(43!==i.src.charCodeAt($+1))return!1;if(i.level>=i.options.maxNesting)return!1;if(_=$>0?i.src.charCodeAt($-1):-1,j=i.src.charCodeAt($+2),43===_)return!1;if(43===j)return!1;if(32===j||10===j)return!1;for(m=$+2;m=M)return!1;if(61!==i.src.charCodeAt($+1))return!1;if(i.level>=i.options.maxNesting)return!1;if(_=$>0?i.src.charCodeAt($-1):-1,j=i.src.charCodeAt($+2),61===_)return!1;if(61===j)return!1;if(32===j||10===j)return!1;for(m=$+2;m=i.options.maxNesting)return!1;for(i.pos=X+u,M=[u];i.pos=v)return!1;if(i.level>=i.options.maxNesting)return!1;for(i.pos=_+1;i.pos=v)return!1;if(i.level>=i.options.maxNesting)return!1;for(i.pos=_+1;i.pos=i.options.maxNesting)return!1;if(u=ee+1,(m=parseLinkLabel(i,ee))<0)return!1;if((M=m+1)=Z)return!1;for(ee=M,parseLinkDestination(i,M)?(_=i.linkContent,M=i.pos):_="",ee=M;M=Z||41!==i.src.charCodeAt(M))return i.pos=Y,!1;M++}else{if(i.linkLevel>0)return!1;for(;M=0?v=i.src.slice(ee,M++):M=ee-1),v||(void 0===v&&(M=m+1),v=i.src.slice(u,m)),!($=i.env.references[normalizeReference(v)]))return i.pos=Y,!1;_=$.href,j=$.title}return s||(i.pos=u,i.posMax=m,X?i.push({type:"image",src:_,title:j,alt:i.src.substr(u,m-u),level:i.level}):(i.push({type:"link_open",href:_,title:j,level:i.level++}),i.linkLevel++,i.parser.tokenize(i),i.linkLevel--,i.push({type:"link_close",level:--i.level}))),i.pos=M,i.posMax=Z,!0}],["footnote_inline",function footnote_inline(i,s){var u,m,v,_,j=i.posMax,M=i.pos;return!(M+2>=j)&&(94===i.src.charCodeAt(M)&&(91===i.src.charCodeAt(M+1)&&(!(i.level>=i.options.maxNesting)&&(u=M+2,!((m=parseLinkLabel(i,M+1))<0)&&(s||(i.env.footnotes||(i.env.footnotes={}),i.env.footnotes.list||(i.env.footnotes.list=[]),v=i.env.footnotes.list.length,i.pos=u,i.posMax=m,i.push({type:"footnote_ref",id:v,level:i.level}),i.linkLevel++,_=i.tokens.length,i.parser.tokenize(i),i.env.footnotes.list[v]={tokens:i.tokens.splice(_)},i.linkLevel--),i.pos=m+1,i.posMax=j,!0)))))}],["footnote_ref",function footnote_ref(i,s){var u,m,v,_,j=i.posMax,M=i.pos;if(M+3>j)return!1;if(!i.env.footnotes||!i.env.footnotes.refs)return!1;if(91!==i.src.charCodeAt(M))return!1;if(94!==i.src.charCodeAt(M+1))return!1;if(i.level>=i.options.maxNesting)return!1;for(m=M+2;m=j)&&(m++,u=i.src.slice(M+2,m-1),void 0!==i.env.footnotes.refs[":"+u]&&(s||(i.env.footnotes.list||(i.env.footnotes.list=[]),i.env.footnotes.refs[":"+u]<0?(v=i.env.footnotes.list.length,i.env.footnotes.list[v]={label:u,count:0},i.env.footnotes.refs[":"+u]=v):v=i.env.footnotes.refs[":"+u],_=i.env.footnotes.list[v].count,i.env.footnotes.list[v].count++,i.push({type:"footnote_ref",id:v,subId:_,level:i.level})),i.pos=m,i.posMax=j,!0)))}],["autolink",function autolink(i,s){var u,m,v,_,j,M=i.pos;return 60===i.src.charCodeAt(M)&&(!((u=i.src.slice(M)).indexOf(">")<0)&&((m=u.match(nP))?!(tP.indexOf(m[1].toLowerCase())<0)&&(j=normalizeLink(_=m[0].slice(1,-1)),!!i.parser.validateLink(_)&&(s||(i.push({type:"link_open",href:j,level:i.level}),i.push({type:"text",content:_,level:i.level+1}),i.push({type:"link_close",level:i.level})),i.pos+=m[0].length,!0)):!!(v=u.match(rP))&&(j=normalizeLink("mailto:"+(_=v[0].slice(1,-1))),!!i.parser.validateLink(j)&&(s||(i.push({type:"link_open",href:j,level:i.level}),i.push({type:"text",content:_,level:i.level+1}),i.push({type:"link_close",level:i.level})),i.pos+=v[0].length,!0))))}],["htmltag",function htmltag(i,s){var u,m,v,_=i.pos;return!!i.options.html&&(v=i.posMax,!(60!==i.src.charCodeAt(_)||_+2>=v)&&(!(33!==(u=i.src.charCodeAt(_+1))&&63!==u&&47!==u&&!function isLetter$2(i){var s=32|i;return s>=97&&s<=122}(u))&&(!!(m=i.src.slice(_).match(sP))&&(s||i.push({type:"htmltag",content:i.src.slice(_,_+m[0].length),level:i.level}),i.pos+=m[0].length,!0))))}],["entity",function entity(i,s){var u,m,v=i.pos,_=i.posMax;if(38!==i.src.charCodeAt(v))return!1;if(v+1<_)if(35===i.src.charCodeAt(v+1)){if(m=i.src.slice(v).match(cP))return s||(u="x"===m[1][0].toLowerCase()?parseInt(m[1].slice(1),16):parseInt(m[1],10),i.pending+=isValidEntityCode(u)?fromCodePoint(u):fromCodePoint(65533)),i.pos+=m[0].length,!0}else if(m=i.src.slice(v).match(lP)){var j=decodeEntity(m[1]);if(m[1]!==j)return s||(i.pending+=j),i.pos+=m[0].length,!0}return s||(i.pending+="&"),i.pos++,!0}]];function ParserInline(){this.ruler=new Ruler;for(var i=0;i0)i.pos=u;else{for(s=0;s=_)break}else i.pending+=i.src[i.pos++]}i.pending&&i.pushPending()},ParserInline.prototype.parse=function(i,s,u,m){var v=new StateInline(i,this,s,u,m);this.tokenize(v)};var pP={default:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkTarget:"",typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["block","inline","references","replacements","smartquotes","references","abbr2","footnote_tail"]},block:{rules:["blockquote","code","fences","footnote","heading","hr","htmlblock","lheading","list","paragraph","table"]},inline:{rules:["autolink","backticks","del","emphasis","entity","escape","footnote_ref","htmltag","links","newline","text"]}}},full:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkTarget:"",typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{},block:{},inline:{}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkTarget:"",typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["block","inline","references","abbr2"]},block:{rules:["blockquote","code","fences","heading","hr","htmlblock","lheading","list","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","htmltag","links","newline","text"]}}}};function StateCore(i,s,u){this.src=s,this.env=u,this.options=i.options,this.tokens=[],this.inlineMode=!1,this.inline=i.inline,this.block=i.block,this.renderer=i.renderer,this.typographer=i.typographer}function Remarkable(i,s){"string"!=typeof i&&(s=i,i="default"),s&&null!=s.linkify&&console.warn("linkify option is removed. Use linkify plugin instead:\n\nimport Remarkable from 'remarkable';\nimport linkify from 'remarkable/linkify';\nnew Remarkable().use(linkify)\n"),this.inline=new ParserInline,this.block=new ParserBlock,this.core=new Core,this.renderer=new Renderer,this.ruler=new Ruler,this.options={},this.configure(pP[i]),this.set(s||{})}Remarkable.prototype.set=function(i){index_browser_assign(this.options,i)},Remarkable.prototype.configure=function(i){var s=this;if(!i)throw new Error("Wrong `remarkable` preset, check name/content");i.options&&s.set(i.options),i.components&&Object.keys(i.components).forEach((function(u){i.components[u].rules&&s[u].ruler.enable(i.components[u].rules,!0)}))},Remarkable.prototype.use=function(i,s){return i(this,s),this},Remarkable.prototype.parse=function(i,s){var u=new StateCore(this,i,s);return this.core.process(u),u.tokens},Remarkable.prototype.render=function(i,s){return s=s||{},this.renderer.render(this.parse(i,s),this.options,s)},Remarkable.prototype.parseInline=function(i,s){var u=new StateCore(this,i,s);return u.inlineMode=!0,this.core.process(u),u.tokens},Remarkable.prototype.renderInline=function(i,s){return s=s||{},this.renderer.render(this.parseInline(i,s),this.options,s)};function utils_indexOf(i,s){if(Array.prototype.indexOf)return i.indexOf(s);for(var u=0,m=i.length;u=0;u--)!0===s(i[u])&&i.splice(u,1)}function throwUnhandledCaseError(i){throw new Error("Unhandled case for value: '".concat(i,"'"))}var hP=function(){function HtmlTag(i){void 0===i&&(i={}),this.tagName="",this.attrs={},this.innerHTML="",this.whitespaceRegex=/\s+/,this.tagName=i.tagName||"",this.attrs=i.attrs||{},this.innerHTML=i.innerHtml||i.innerHTML||""}return HtmlTag.prototype.setTagName=function(i){return this.tagName=i,this},HtmlTag.prototype.getTagName=function(){return this.tagName||""},HtmlTag.prototype.setAttr=function(i,s){return this.getAttrs()[i]=s,this},HtmlTag.prototype.getAttr=function(i){return this.getAttrs()[i]},HtmlTag.prototype.setAttrs=function(i){return Object.assign(this.getAttrs(),i),this},HtmlTag.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},HtmlTag.prototype.setClass=function(i){return this.setAttr("class",i)},HtmlTag.prototype.addClass=function(i){for(var s,u=this.getClass(),m=this.whitespaceRegex,v=u?u.split(m):[],_=i.split(m);s=_.shift();)-1===utils_indexOf(v,s)&&v.push(s);return this.getAttrs().class=v.join(" "),this},HtmlTag.prototype.removeClass=function(i){for(var s,u=this.getClass(),m=this.whitespaceRegex,v=u?u.split(m):[],_=i.split(m);v.length&&(s=_.shift());){var j=utils_indexOf(v,s);-1!==j&&v.splice(j,1)}return this.getAttrs().class=v.join(" "),this},HtmlTag.prototype.getClass=function(){return this.getAttrs().class||""},HtmlTag.prototype.hasClass=function(i){return-1!==(" "+this.getClass()+" ").indexOf(" "+i+" ")},HtmlTag.prototype.setInnerHTML=function(i){return this.innerHTML=i,this},HtmlTag.prototype.setInnerHtml=function(i){return this.setInnerHTML(i)},HtmlTag.prototype.getInnerHTML=function(){return this.innerHTML||""},HtmlTag.prototype.getInnerHtml=function(){return this.getInnerHTML()},HtmlTag.prototype.toAnchorString=function(){var i=this.getTagName(),s=this.buildAttrsStr();return["<",i,s=s?" "+s:"",">",this.getInnerHtml(),""].join("")},HtmlTag.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var i=this.getAttrs(),s=[];for(var u in i)i.hasOwnProperty(u)&&s.push(u+'="'+i[u]+'"');return s.join(" ")},HtmlTag}();var dP=function(){function AnchorTagBuilder(i){void 0===i&&(i={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=i.newWindow||!1,this.truncate=i.truncate||{},this.className=i.className||""}return AnchorTagBuilder.prototype.build=function(i){return new hP({tagName:"a",attrs:this.createAttrs(i),innerHtml:this.processAnchorText(i.getAnchorText())})},AnchorTagBuilder.prototype.createAttrs=function(i){var s={href:i.getAnchorHref()},u=this.createCssClass(i);return u&&(s.class=u),this.newWindow&&(s.target="_blank",s.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length=_)return j.host.length==s?(j.host.substr(0,s-v)+u).substr(0,_+m):buildSegment($,_).substr(0,_+m);var W="";if(j.path&&(W+="/"+j.path),j.query&&(W+="?"+j.query),W){if(($+W).length>=_)return($+W).length==s?($+W).substr(0,s):($+buildSegment(W,_-$.length)).substr(0,_+m);$+=W}if(j.fragment){var X="#"+j.fragment;if(($+X).length>=_)return($+X).length==s?($+X).substr(0,s):($+buildSegment(X,_-$.length)).substr(0,_+m);$+=X}if(j.scheme&&j.host){var Y=j.scheme+"://";if(($+Y).length<_)return(Y+$).substr(0,s)}if($.length<=s)return $;var Z="";return _>0&&(Z=$.substr(-1*Math.floor(_/2))),($.substr(0,Math.ceil(_/2))+u+Z).substr(0,_+m)}(i,u):"middle"===m?function truncateMiddle(i,s,u){if(i.length<=s)return i;var m,v;null==u?(u="…",m=8,v=3):(m=u.length,v=u.length);var _=s-v,j="";return _>0&&(j=i.substr(-1*Math.floor(_/2))),(i.substr(0,Math.ceil(_/2))+u+j).substr(0,_+m)}(i,u):function truncateEnd(i,s,u){return function ellipsis(i,s,u){var m;return i.length>s&&(null==u?(u="…",m=3):m=u.length,i=i.substring(0,s-m)+u),i}(i,s,u)}(i,u)},AnchorTagBuilder}(),fP=function(){function Match(i){this.__jsduckDummyDocProp=null,this.matchedText="",this.offset=0,this.tagBuilder=i.tagBuilder,this.matchedText=i.matchedText,this.offset=i.offset}return Match.prototype.getMatchedText=function(){return this.matchedText},Match.prototype.setOffset=function(i){this.offset=i},Match.prototype.getOffset=function(){return this.offset},Match.prototype.getCssClassSuffixes=function(){return[this.getType()]},Match.prototype.buildTag=function(){return this.tagBuilder.build(this)},Match}(),extendStatics=function(i,s){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,s){i.__proto__=s}||function(i,s){for(var u in s)Object.prototype.hasOwnProperty.call(s,u)&&(i[u]=s[u])},extendStatics(i,s)};function tslib_es6_extends(i,s){if("function"!=typeof s&&null!==s)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function __(){this.constructor=i}extendStatics(i,s),i.prototype=null===s?Object.create(s):(__.prototype=s.prototype,new __)}var __assign=function(){return __assign=Object.assign||function __assign(i){for(var s,u=1,m=arguments.length;u-1},UrlMatchValidator.isValidUriScheme=function(i){var s=i.match(this.uriSchemeRegex),u=s&&s[0].toLowerCase();return"javascript:"!==u&&"vbscript:"!==u},UrlMatchValidator.urlMatchDoesNotHaveProtocolOrDot=function(i,s){return!(!i||s&&this.hasFullProtocolRegex.test(s)||-1!==i.indexOf("."))},UrlMatchValidator.urlMatchDoesNotHaveAtLeastOneWordChar=function(i,s){return!(!i||!s)&&(!this.hasFullProtocolRegex.test(s)&&!this.hasWordCharAfterProtocolRegex.test(i))},UrlMatchValidator.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\/\//,UrlMatchValidator.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,UrlMatchValidator.hasWordCharAfterProtocolRegex=new RegExp(":[^\\s]*?["+CP+"]"),UrlMatchValidator.ipRegex=/[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?(:[0-9]*)?\/?$/,UrlMatchValidator}(),zP=(mP=new RegExp("[/?#](?:["+NP+"\\-+&@#/%=~_()|'$*\\[\\]{}?!:,.;^✓]*["+NP+"\\-+&@#/%=~_()|'$*\\[\\]{}✓])?"),new RegExp(["(?:","(",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\/\/)(?!\d+\/?)(?:\/\/)?)/.source,getDomainNameStr(2),")","|","(","(//)?",/(?:www\.)/.source,getDomainNameStr(6),")","|","(","(//)?",getDomainNameStr(10)+"\\.",BP.source,"(?![-"+IP+"])",")",")","(?::[0-9]+)?","(?:"+mP.source+")?"].join(""),"gi")),VP=new RegExp("["+NP+"]"),WP=function(i){function UrlMatcher(s){var u=i.call(this,s)||this;return u.stripPrefix={scheme:!0,www:!0},u.stripTrailingSlash=!0,u.decodePercentEncoding=!0,u.matcherRegex=zP,u.wordCharRegExp=VP,u.stripPrefix=s.stripPrefix,u.stripTrailingSlash=s.stripTrailingSlash,u.decodePercentEncoding=s.decodePercentEncoding,u}return tslib_es6_extends(UrlMatcher,i),UrlMatcher.prototype.parseMatches=function(i){for(var s,u=this.matcherRegex,m=this.stripPrefix,v=this.stripTrailingSlash,_=this.decodePercentEncoding,j=this.tagBuilder,M=[],_loop_1=function(){var u=s[0],W=s[1],X=s[4],Y=s[5],Z=s[9],ee=s.index,ie=Y||Z,ae=i.charAt(ee-1);if(!UP.isValid(u,W))return"continue";if(ee>0&&"@"===ae)return"continue";if(ee>0&&ie&&$.wordCharRegExp.test(ae))return"continue";if(/\?$/.test(u)&&(u=u.substr(0,u.length-1)),$.matchHasUnbalancedClosingParen(u))u=u.substr(0,u.length-1);else{var ce=$.matchHasInvalidCharAfterTld(u,W);ce>-1&&(u=u.substr(0,ce))}var le=["http://","https://"].find((function(i){return!!W&&-1!==W.indexOf(i)}));if(le){var pe=u.indexOf(le);u=u.substr(pe),W=W.substr(pe),ee+=pe}var de=W?"scheme":X?"www":"tld",fe=!!W;M.push(new _P({tagBuilder:j,matchedText:u,offset:ee,urlMatchType:de,url:u,protocolUrlMatch:fe,protocolRelativeMatch:!!ie,stripPrefix:m,stripTrailingSlash:v,decodePercentEncoding:_}))},$=this;null!==(s=u.exec(i));)_loop_1();return M},UrlMatcher.prototype.matchHasUnbalancedClosingParen=function(i){var s,u=i.charAt(i.length-1);if(")"===u)s="(";else if("]"===u)s="[";else{if("}"!==u)return!1;s="{"}for(var m=0,v=0,_=i.length-1;v<_;v++){var j=i.charAt(v);j===s?m++:j===u&&(m=Math.max(m-1,0))}return 0===m},UrlMatcher.prototype.matchHasInvalidCharAfterTld=function(i,s){if(!i)return-1;var u=0;s&&(u=i.indexOf(":"),i=i.slice(u));var m=new RegExp("^((.?//)?[-."+NP+"]*[-"+NP+"]\\.[-"+NP+"]+)").exec(i);return null===m?-1:(u+=m[1].length,i=i.slice(m[1].length),/^[^-.A-Za-z0-9:\/?#]/.test(i)?u:-1)},UrlMatcher}(wP),KP=new RegExp("[_".concat(NP,"]")),HP=function(i){function HashtagMatcher(s){var u=i.call(this,s)||this;return u.serviceName="twitter",u.serviceName=s.serviceName,u}return tslib_es6_extends(HashtagMatcher,i),HashtagMatcher.prototype.parseMatches=function(i){for(var s=this.tagBuilder,u=this.serviceName,m=[],v=i.length,_=0,j=-1,M=0;_-1&&_-j<=140){var v=i.slice(j,_),M=new gP({tagBuilder:s,matchedText:v,offset:j,serviceName:u,hashtag:v.slice(1)});m.push(M)}}},HashtagMatcher}(wP),JP=["twitter","facebook","instagram","tiktok"],GP=new RegExp("".concat(/(?:(?:(?:(\+)?\d{1,3}[-\040.]?)?\(?\d{3}\)?[-\040.]?\d{3}[-\040.]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\040.]?(?:\d[-\040.]?){6,12}\d+))([,;]+[0-9]+#?)*/.source,"|").concat(/(0([1-9]{1}-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/.source),"g"),XP=function(i){function PhoneMatcher(){var s=null!==i&&i.apply(this,arguments)||this;return s.matcherRegex=GP,s}return tslib_es6_extends(PhoneMatcher,i),PhoneMatcher.prototype.parseMatches=function(i){for(var s,u=this.matcherRegex,m=this.tagBuilder,v=[];null!==(s=u.exec(i));){var _=s[0],j=_.replace(/[^0-9,;#]/g,""),M=!(!s[1]&&!s[2]),$=0==s.index?"":i.substr(s.index-1,1),W=i.substr(s.index+_.length,1),X=!$.match(/\d/)&&!W.match(/\d/);this.testMatch(s[3])&&this.testMatch(_)&&X&&v.push(new bP({tagBuilder:m,matchedText:_,offset:s.index,number:j,plusSign:M}))}return v},PhoneMatcher.prototype.testMatch=function(i){return xP.test(i)},PhoneMatcher}(wP),YP=new RegExp("@[_".concat(NP,"]{1,50}(?![_").concat(NP,"])"),"g"),QP=new RegExp("@[_.".concat(NP,"]{1,30}(?![_").concat(NP,"])"),"g"),ZP=new RegExp("@[-_.".concat(NP,"]{1,50}(?![-_").concat(NP,"])"),"g"),eI=new RegExp("@[_.".concat(NP,"]{1,23}[_").concat(NP,"](?![_").concat(NP,"])"),"g"),tI=new RegExp("[^"+NP+"]"),rI=function(i){function MentionMatcher(s){var u=i.call(this,s)||this;return u.serviceName="twitter",u.matcherRegexes={twitter:YP,instagram:QP,soundcloud:ZP,tiktok:eI},u.nonWordCharRegex=tI,u.serviceName=s.serviceName,u}return tslib_es6_extends(MentionMatcher,i),MentionMatcher.prototype.parseMatches=function(i){var s,u=this.serviceName,m=this.matcherRegexes[this.serviceName],v=this.nonWordCharRegex,_=this.tagBuilder,j=[];if(!m)return j;for(;null!==(s=m.exec(i));){var M=s.index,$=i.charAt(M-1);if(0===M||v.test($)){var W=s[0].replace(/\.+$/g,""),X=W.slice(1);j.push(new vP({tagBuilder:_,matchedText:W,offset:M,serviceName:u,mention:X}))}}return j},MentionMatcher}(wP);function parseHtml(i,s){for(var u=s.onOpenTag,m=s.onCloseTag,v=s.onText,_=s.onComment,j=s.onDoctype,M=new nI,$=0,W=i.length,X=0,Y=0,Z=M;$"===i?(Z=new nI(__assign(__assign({},Z),{name:captureTagName()})),emitTagAndPreviousTextNode()):EP.test(i)||SP.test(i)||":"===i||resetToDataState()}function stateEndTagOpen(i){">"===i?resetToDataState():EP.test(i)?X=3:resetToDataState()}function stateBeforeAttributeName(i){OP.test(i)||("/"===i?X=12:">"===i?emitTagAndPreviousTextNode():"<"===i?startNewTag():"="===i||kP.test(i)||AP.test(i)?resetToDataState():X=5)}function stateAttributeName(i){OP.test(i)?X=6:"/"===i?X=12:"="===i?X=7:">"===i?emitTagAndPreviousTextNode():"<"===i?startNewTag():kP.test(i)&&resetToDataState()}function stateAfterAttributeName(i){OP.test(i)||("/"===i?X=12:"="===i?X=7:">"===i?emitTagAndPreviousTextNode():"<"===i?startNewTag():kP.test(i)?resetToDataState():X=5)}function stateBeforeAttributeValue(i){OP.test(i)||('"'===i?X=8:"'"===i?X=9:/[>=`]/.test(i)?resetToDataState():"<"===i?startNewTag():X=10)}function stateAttributeValueDoubleQuoted(i){'"'===i&&(X=11)}function stateAttributeValueSingleQuoted(i){"'"===i&&(X=11)}function stateAttributeValueUnquoted(i){OP.test(i)?X=4:">"===i?emitTagAndPreviousTextNode():"<"===i&&startNewTag()}function stateAfterAttributeValueQuoted(i){OP.test(i)?X=4:"/"===i?X=12:">"===i?emitTagAndPreviousTextNode():"<"===i?startNewTag():(X=4,function reconsumeCurrentCharacter(){$--}())}function stateSelfClosingStartTag(i){">"===i?(Z=new nI(__assign(__assign({},Z),{isClosing:!0})),emitTagAndPreviousTextNode()):X=4}function stateMarkupDeclarationOpen(s){"--"===i.substr($,2)?($+=2,Z=new nI(__assign(__assign({},Z),{type:"comment"})),X=14):"DOCTYPE"===i.substr($,7).toUpperCase()?($+=7,Z=new nI(__assign(__assign({},Z),{type:"doctype"})),X=20):resetToDataState()}function stateCommentStart(i){"-"===i?X=15:">"===i?resetToDataState():X=16}function stateCommentStartDash(i){"-"===i?X=18:">"===i?resetToDataState():X=16}function stateComment(i){"-"===i&&(X=17)}function stateCommentEndDash(i){X="-"===i?18:16}function stateCommentEnd(i){">"===i?emitTagAndPreviousTextNode():"!"===i?X=19:"-"===i||(X=16)}function stateCommentEndBang(i){"-"===i?X=17:">"===i?emitTagAndPreviousTextNode():X=16}function stateDoctype(i){">"===i?emitTagAndPreviousTextNode():"<"===i&&startNewTag()}function resetToDataState(){X=0,Z=M}function startNewTag(){X=1,Z=new nI({idx:$})}function emitTagAndPreviousTextNode(){var s=i.slice(Y,Z.idx);s&&v(s,Y),"comment"===Z.type?_(Z.idx):"doctype"===Z.type?j(Z.idx):(Z.isOpening&&u(Z.name,Z.idx),Z.isClosing&&m(Z.name,Z.idx)),resetToDataState(),Y=$+1}function captureTagName(){var s=Z.idx+(Z.isClosing?2:1);return i.slice(s,$).toLowerCase()}Y<$&&function emitText(){var s=i.slice(Y,$);v(s,Y),Y=$+1}()}var nI=function nI(i){void 0===i&&(i={}),this.idx=void 0!==i.idx?i.idx:-1,this.type=i.type||"tag",this.name=i.name||"",this.isOpening=!!i.isOpening,this.isClosing=!!i.isClosing},oI=function(){function Autolinker(i){void 0===i&&(i={}),this.version=Autolinker.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.matchers=null,this.tagBuilder=null,this.urls=this.normalizeUrlsCfg(i.urls),this.email="boolean"==typeof i.email?i.email:this.email,this.phone="boolean"==typeof i.phone?i.phone:this.phone,this.hashtag=i.hashtag||this.hashtag,this.mention=i.mention||this.mention,this.newWindow="boolean"==typeof i.newWindow?i.newWindow:this.newWindow,this.stripPrefix=this.normalizeStripPrefixCfg(i.stripPrefix),this.stripTrailingSlash="boolean"==typeof i.stripTrailingSlash?i.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding="boolean"==typeof i.decodePercentEncoding?i.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=i.sanitizeHtml||!1;var s=this.mention;if(!1!==s&&-1===["twitter","instagram","soundcloud","tiktok"].indexOf(s))throw new Error("invalid `mention` cfg '".concat(s,"' - see docs"));var u=this.hashtag;if(!1!==u&&-1===JP.indexOf(u))throw new Error("invalid `hashtag` cfg '".concat(u,"' - see docs"));this.truncate=this.normalizeTruncateCfg(i.truncate),this.className=i.className||this.className,this.replaceFn=i.replaceFn||this.replaceFn,this.context=i.context||this}return Autolinker.link=function(i,s){return new Autolinker(s).link(i)},Autolinker.parse=function(i,s){return new Autolinker(s).parse(i)},Autolinker.prototype.normalizeUrlsCfg=function(i){return null==i&&(i=!0),"boolean"==typeof i?{schemeMatches:i,wwwMatches:i,tldMatches:i}:{schemeMatches:"boolean"!=typeof i.schemeMatches||i.schemeMatches,wwwMatches:"boolean"!=typeof i.wwwMatches||i.wwwMatches,tldMatches:"boolean"!=typeof i.tldMatches||i.tldMatches}},Autolinker.prototype.normalizeStripPrefixCfg=function(i){return null==i&&(i=!0),"boolean"==typeof i?{scheme:i,www:i}:{scheme:"boolean"!=typeof i.scheme||i.scheme,www:"boolean"!=typeof i.www||i.www}},Autolinker.prototype.normalizeTruncateCfg=function(i){return"number"==typeof i?{length:i,location:"end"}:function defaults(i,s){for(var u in s)s.hasOwnProperty(u)&&void 0===i[u]&&(i[u]=s[u]);return i}(i||{},{length:Number.POSITIVE_INFINITY,location:"end"})},Autolinker.prototype.parse=function(i){var s=this,u=["a","style","script"],m=0,v=[];return parseHtml(i,{onOpenTag:function(i){u.indexOf(i)>=0&&m++},onText:function(i,u){if(0===m){var _=function splitAndCapture(i,s){if(!s.global)throw new Error("`splitRegex` must have the 'g' flag set");for(var u,m=[],v=0;u=s.exec(i);)m.push(i.substring(v,u.index)),m.push(u[0]),v=u.index+u[0].length;return m.push(i.substring(v)),m}(i,/( | |<|<|>|>|"|"|')/gi),j=u;_.forEach((function(i,u){if(u%2==0){var m=s.parseText(i,j);v.push.apply(v,m)}j+=i.length}))}},onCloseTag:function(i){u.indexOf(i)>=0&&(m=Math.max(m-1,0))},onComment:function(i){},onDoctype:function(i){}}),v=this.compactMatches(v),v=this.removeUnwantedMatches(v)},Autolinker.prototype.compactMatches=function(i){i.sort((function(i,s){return i.getOffset()-s.getOffset()}));for(var s=0;sv?s:s+1;i.splice(j,1);continue}if(i[s+1].getOffset()<_){i.splice(s+1,1);continue}}s++}return i},Autolinker.prototype.removeUnwantedMatches=function(i){return this.hashtag||utils_remove(i,(function(i){return"hashtag"===i.getType()})),this.email||utils_remove(i,(function(i){return"email"===i.getType()})),this.phone||utils_remove(i,(function(i){return"phone"===i.getType()})),this.mention||utils_remove(i,(function(i){return"mention"===i.getType()})),this.urls.schemeMatches||utils_remove(i,(function(i){return"url"===i.getType()&&"scheme"===i.getUrlMatchType()})),this.urls.wwwMatches||utils_remove(i,(function(i){return"url"===i.getType()&&"www"===i.getUrlMatchType()})),this.urls.tldMatches||utils_remove(i,(function(i){return"url"===i.getType()&&"tld"===i.getUrlMatchType()})),i},Autolinker.prototype.parseText=function(i,s){void 0===s&&(s=0),s=s||0;for(var u=this.getMatchers(),m=[],v=0,_=u.length;v<_;v++){for(var j=u[v].parseMatches(i),M=0,$=j.length;M<$;M++)j[M].setOffset(s+j[M].getOffset());m.push.apply(m,j)}return m},Autolinker.prototype.link=function(i){if(!i)return"";this.sanitizeHtml&&(i=i.replace(//g,">"));for(var s=this.parse(i),u=[],m=0,v=0,_=s.length;v<_;v++){var j=s[v];u.push(i.substring(m,j.getOffset())),u.push(this.createMatchReturnVal(j)),m=j.getOffset()+j.getMatchedText().length}return u.push(i.substring(m)),u.join("")},Autolinker.prototype.createMatchReturnVal=function(i){var s;return this.replaceFn&&(s=this.replaceFn.call(this.context,i)),"string"==typeof s?s:!1===s?i.getMatchedText():s instanceof hP?s.toAnchorString():i.buildTag().toAnchorString()},Autolinker.prototype.getMatchers=function(){if(this.matchers)return this.matchers;var i=this.getTagBuilder(),s=[new HP({tagBuilder:i,serviceName:this.hashtag}),new qP({tagBuilder:i}),new XP({tagBuilder:i}),new rI({tagBuilder:i,serviceName:this.mention}),new WP({tagBuilder:i,stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding})];return this.matchers=s},Autolinker.prototype.getTagBuilder=function(){var i=this.tagBuilder;return i||(i=this.tagBuilder=new dP({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),i},Autolinker.version="3.16.2",Autolinker.AnchorTagBuilder=dP,Autolinker.HtmlTag=hP,Autolinker.matcher={Email:qP,Hashtag:HP,Matcher:wP,Mention:rI,Phone:XP,Url:WP},Autolinker.match={Email:yP,Hashtag:gP,Match:fP,Mention:vP,Phone:bP,Url:_P},Autolinker}();const iI=oI;var aI=/www|@|\:\/\//;function isLinkOpen(i){return/^\s]/i.test(i)}function isLinkClose(i){return/^<\/a\s*>/i.test(i)}function createLinkifier(){var i=[],s=new iI({stripPrefix:!1,url:!0,email:!0,replaceFn:function(s){switch(s.getType()){case"url":i.push({text:s.matchedText,url:s.getUrl()});break;case"email":i.push({text:s.matchedText,url:"mailto:"+s.getEmail().replace(/^mailto:/i,"")})}return!1}});return{links:i,autolinker:s}}function parseTokens(i){var s,u,m,v,_,j,M,$,W,X,Y,Z,ee,ie=i.tokens,ae=null;for(u=0,m=ie.length;u=0;s--)if("link_close"!==(_=v[s]).type){if("htmltag"===_.type&&(isLinkOpen(_.content)&&Y>0&&Y--,isLinkClose(_.content)&&Y++),!(Y>0)&&"text"===_.type&&aI.test(_.content)){if(ae||(Z=(ae=createLinkifier()).links,ee=ae.autolinker),j=_.content,Z.length=0,ee.link(j),!Z.length)continue;for(M=[],X=_.level,$=0;$({useUnsafeMarkdown:!1})};const lI=Markdown;function sanitizer(i){let{useUnsafeMarkdown:s=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const u=s,m=s?[]:["style","class"];return s&&!sanitizer.hasWarnedAboutDeprecation&&(console.warn("useUnsafeMarkdown display configuration parameter is deprecated since >3.26.0 and will be removed in v4.0.0."),sanitizer.hasWarnedAboutDeprecation=!0),cI().sanitize(i,{ADD_ATTR:["target"],FORBID_TAGS:["style","form"],ALLOW_DATA_ATTR:u,FORBID_ATTR:m})}sanitizer.hasWarnedAboutDeprecation=!1;class BaseLayout extends He.Component{render(){const{errSelectors:i,specSelectors:s,getComponent:u}=this.props,m=u("SvgAssets"),v=u("InfoContainer",!0),_=u("VersionPragmaFilter"),j=u("operations",!0),M=u("Models",!0),$=u("Webhooks",!0),W=u("Row"),X=u("Col"),Y=u("errors",!0),Z=u("ServersContainer",!0),ee=u("SchemesContainer",!0),ie=u("AuthorizeBtnContainer",!0),ae=u("FilterContainer",!0),ce=s.isSwagger2(),le=s.isOAS3(),pe=s.isOAS31(),de=!s.specStr(),fe=s.loadingStatus();let ye=null;if("loading"===fe&&(ye=He.createElement("div",{className:"info"},He.createElement("div",{className:"loading-container"},He.createElement("div",{className:"loading"})))),"failed"===fe&&(ye=He.createElement("div",{className:"info"},He.createElement("div",{className:"loading-container"},He.createElement("h4",{className:"title"},"Failed to load API definition."),He.createElement(Y,null)))),"failedConfig"===fe){const s=i.lastError(),u=s?s.get("message"):"";ye=He.createElement("div",{className:"info failed-config"},He.createElement("div",{className:"loading-container"},He.createElement("h4",{className:"title"},"Failed to load remote configuration."),He.createElement("p",null,u)))}if(!ye&&de&&(ye=He.createElement("h4",null,"No API definition provided.")),ye)return He.createElement("div",{className:"swagger-ui"},He.createElement("div",{className:"loading-container"},ye));const be=s.servers(),_e=s.schemes(),we=be&&be.size,Se=_e&&_e.size,xe=!!s.securityDefinitions();return He.createElement("div",{className:"swagger-ui"},He.createElement(m,null),He.createElement(_,{isSwagger2:ce,isOAS3:le,alsoShow:He.createElement(Y,null)},He.createElement(Y,null),He.createElement(W,{className:"information-container"},He.createElement(X,{mobile:12},He.createElement(v,null))),we||Se||xe?He.createElement("div",{className:"scheme-container"},He.createElement(X,{className:"schemes wrapper",mobile:12},we?He.createElement(Z,null):null,Se?He.createElement(ee,null):null,xe?He.createElement(ie,null):null)):null,He.createElement(ae,null),He.createElement(W,null,He.createElement(X,{mobile:12,desktop:12},He.createElement(j,null))),pe&&He.createElement(W,{className:"webhooks-container"},He.createElement(X,{mobile:12,desktop:12},He.createElement($,null))),He.createElement(W,null,He.createElement(X,{mobile:12,desktop:12},He.createElement(M,null)))))}}const core_components=()=>({components:{App,authorizationPopup:AuthorizationPopup,authorizeBtn:AuthorizeBtn,AuthorizeBtnContainer,authorizeOperationBtn:AuthorizeOperationBtn,auths:Auths,AuthItem:auth_item_Auths,authError:AuthError,oauth2:Oauth2,apiKeyAuth:ApiKeyAuth,basicAuth:BasicAuth,clear:Clear,liveResponse:LiveResponse,InitializedInput,info:$C,InfoContainer,InfoUrl,InfoBasePath,Contact:UC,License:zC,JumpToPath,CopyToClipboardBtn,onlineValidatorBadge:OnlineValidatorBadge,operations:Operations,operation:operation_Operation,OperationSummary,OperationSummaryMethod,OperationSummaryPath,highlightCode:IC,responses:responses_Responses,response:response_Response,ResponseExtension:response_extension,responseBody:ResponseBody,parameters:Parameters,parameterRow:ParameterRow,execute:Execute,headers:headers_Headers,errors:Errors,contentType:ContentType,overview:Overview,footer:Footer,FilterContainer,ParamBody,curl:Curl,schemes:Schemes,SchemesContainer,modelExample:ModelExample,ModelWrapper,ModelCollapse,Model,Models,EnumModel:enum_model,ObjectModel,ArrayModel,PrimitiveModel:Primitive,Property:property,TryItOutButton,Markdown:lI,BaseLayout,VersionPragmaFilter,VersionStamp:version_stamp,OperationExt:operation_extensions,OperationExtRow:operation_extension_row,ParameterExt:parameter_extension,ParameterIncludeEmpty,OperationTag,OperationContainer,OpenAPIVersion:openapi_version,DeepLink:deep_link,SvgAssets:svg_assets,Example:example_Example,ExamplesSelect,ExamplesSelectValueRetainer}}),form_components=()=>({components:rr()({},xe)});var uI=__webpack_require__(775),pI=__webpack_require__.n(uI);const hI={value:"",onChange:()=>{},schema:{},keyName:"",required:!1,errors:(0,et.List)()};class JsonSchemaForm extends He.Component{componentDidMount(){const{dispatchInitialValue:i,value:s,onChange:u}=this.props;i?u(s):!1===i&&u("")}render(){let{schema:i,errors:s,value:u,onChange:m,getComponent:v,fn:_,disabled:j}=this.props;const M=i&&i.get?i.get("format"):null,$=i&&i.get?i.get("type"):null;let getComponentSilently=i=>v(i,!1,{failSilently:!0}),W=$?getComponentSilently(M?`JsonSchema_${$}_${M}`:`JsonSchema_${$}`):v("JsonSchema_string");return W||(W=v("JsonSchema_string")),He.createElement(W,No()({},this.props,{errors:s,fn:_,getComponent:v,value:u,onChange:m,schema:i,disabled:j}))}}_o()(JsonSchemaForm,"defaultProps",hI);class JsonSchema_string extends He.Component{constructor(){super(...arguments),_o()(this,"onChange",(i=>{const s=this.props.schema&&"file"===this.props.schema.get("type")?i.target.files[0]:i.target.value;this.props.onChange(s,this.props.keyName)})),_o()(this,"onEnumChange",(i=>this.props.onChange(i)))}render(){let{getComponent:i,value:s,schema:u,errors:m,required:v,description:_,disabled:j}=this.props;const M=u&&u.get?u.get("enum"):null,$=u&&u.get?u.get("format"):null,W=u&&u.get?u.get("type"):null,X=u&&u.get?u.get("in"):null;if(s||(s=""),m=m.toJS?m.toJS():[],M){const u=i("Select");return He.createElement(u,{className:m.length?"invalid":"",title:m.length?m:"",allowedValues:[...M],value:s,allowEmptyValue:!v,disabled:j,onChange:this.onEnumChange})}const Y=j||X&&"formData"===X&&!("FormData"in window),Z=i("Input");return W&&"file"===W?He.createElement(Z,{type:"file",className:m.length?"invalid":"",title:m.length?m:"",onChange:this.onChange,disabled:Y}):He.createElement(pI(),{type:$&&"password"===$?"password":"text",className:m.length?"invalid":"",title:m.length?m:"",value:s,minLength:0,debounceTimeout:350,placeholder:_,onChange:this.onChange,disabled:Y})}}_o()(JsonSchema_string,"defaultProps",hI);class JsonSchema_array extends He.PureComponent{constructor(i,s){super(i,s),_o()(this,"onChange",(()=>{this.props.onChange(this.state.value)})),_o()(this,"onItemChange",((i,s)=>{this.setState((u=>{let{value:m}=u;return{value:m.set(s,i)}}),this.onChange)})),_o()(this,"removeItem",(i=>{this.setState((s=>{let{value:u}=s;return{value:u.delete(i)}}),this.onChange)})),_o()(this,"addItem",(()=>{const{fn:i}=this.props;let s=valueOrEmptyList(this.state.value);this.setState((()=>({value:s.push(i.getSampleSchema(this.state.schema.get("items"),!1,{includeWriteOnly:!0}))})),this.onChange)})),_o()(this,"onEnumChange",(i=>{this.setState((()=>({value:i})),this.onChange)})),this.state={value:valueOrEmptyList(i.value),schema:i.schema}}UNSAFE_componentWillReceiveProps(i){const s=valueOrEmptyList(i.value);s!==this.state.value&&this.setState({value:s}),i.schema!==this.state.schema&&this.setState({schema:i.schema})}render(){let{getComponent:i,required:s,schema:u,errors:m,fn:v,disabled:_}=this.props;m=m.toJS?m.toJS():Array.isArray(m)?m:[];const j=m.filter((i=>"string"==typeof i)),M=m.filter((i=>void 0!==i.needRemove)).map((i=>i.error)),$=this.state.value,W=!!($&&$.count&&$.count()>0),X=u.getIn(["items","enum"]),Y=u.getIn(["items","type"]),Z=u.getIn(["items","format"]),ee=u.get("items");let ie,ae=!1,ce="file"===Y||"string"===Y&&"binary"===Z;if(Y&&Z?ie=i(`JsonSchema_${Y}_${Z}`):"boolean"!==Y&&"array"!==Y&&"object"!==Y||(ie=i(`JsonSchema_${Y}`)),ie||ce||(ae=!0),X){const u=i("Select");return He.createElement(u,{className:m.length?"invalid":"",title:m.length?m:"",multiple:!0,value:$,disabled:_,allowedValues:X,allowEmptyValue:!s,onChange:this.onEnumChange})}const le=i("Button");return He.createElement("div",{className:"json-schema-array"},W?$.map(((s,u)=>{const j=(0,et.fromJS)([...m.filter((i=>i.index===u)).map((i=>i.error))]);return He.createElement("div",{key:u,className:"json-schema-form-item"},ce?He.createElement(JsonSchemaArrayItemFile,{value:s,onChange:i=>this.onItemChange(i,u),disabled:_,errors:j,getComponent:i}):ae?He.createElement(JsonSchemaArrayItemText,{value:s,onChange:i=>this.onItemChange(i,u),disabled:_,errors:j}):He.createElement(ie,No()({},this.props,{value:s,onChange:i=>this.onItemChange(i,u),disabled:_,errors:j,schema:ee,getComponent:i,fn:v})),_?null:He.createElement(le,{className:`btn btn-sm json-schema-form-item-remove ${M.length?"invalid":null}`,title:M.length?M:"",onClick:()=>this.removeItem(u)}," - "))})):null,_?null:He.createElement(le,{className:`btn btn-sm json-schema-form-item-add ${j.length?"invalid":null}`,title:j.length?j:"",onClick:this.addItem},"Add ",Y?`${Y} `:"","item"))}}_o()(JsonSchema_array,"defaultProps",hI);class JsonSchemaArrayItemText extends He.Component{constructor(){super(...arguments),_o()(this,"onChange",(i=>{const s=i.target.value;this.props.onChange(s,this.props.keyName)}))}render(){let{value:i,errors:s,description:u,disabled:m}=this.props;return i||(i=""),s=s.toJS?s.toJS():[],He.createElement(pI(),{type:"text",className:s.length?"invalid":"",title:s.length?s:"",value:i,minLength:0,debounceTimeout:350,placeholder:u,onChange:this.onChange,disabled:m})}}_o()(JsonSchemaArrayItemText,"defaultProps",hI);class JsonSchemaArrayItemFile extends He.Component{constructor(){super(...arguments),_o()(this,"onFileChange",(i=>{const s=i.target.files[0];this.props.onChange(s,this.props.keyName)}))}render(){let{getComponent:i,errors:s,disabled:u}=this.props;const m=i("Input"),v=u||!("FormData"in window);return He.createElement(m,{type:"file",className:s.length?"invalid":"",title:s.length?s:"",onChange:this.onFileChange,disabled:v})}}_o()(JsonSchemaArrayItemFile,"defaultProps",hI);class JsonSchema_boolean extends He.Component{constructor(){super(...arguments),_o()(this,"onEnumChange",(i=>this.props.onChange(i)))}render(){let{getComponent:i,value:s,errors:u,schema:m,required:v,disabled:_}=this.props;u=u.toJS?u.toJS():[];let j=m&&m.get?m.get("enum"):null,M=!j||!v,$=!j&&["true","false"];const W=i("Select");return He.createElement(W,{className:u.length?"invalid":"",title:u.length?u:"",value:String(s),disabled:_,allowedValues:j?[...j]:$,allowEmptyValue:M,onChange:this.onEnumChange})}}_o()(JsonSchema_boolean,"defaultProps",hI);const stringifyObjectErrors=i=>i.map((i=>{const s=void 0!==i.propKey?i.propKey:i.index;let u="string"==typeof i?i:"string"==typeof i.error?i.error:null;if(!s&&u)return u;let m=i.error,v=`/${i.propKey}`;for(;"object"==typeof m;){const i=void 0!==m.propKey?m.propKey:m.index;if(void 0===i)break;if(v+=`/${i}`,!m.error)break;m=m.error}return`${v}: ${m}`}));class JsonSchema_object extends He.PureComponent{constructor(){super(),_o()(this,"onChange",(i=>{this.props.onChange(i)})),_o()(this,"handleOnChange",(i=>{const s=i.target.value;this.onChange(s)}))}render(){let{getComponent:i,value:s,errors:u,disabled:m}=this.props;const v=i("TextArea");return u=u.toJS?u.toJS():Array.isArray(u)?u:[],He.createElement("div",null,He.createElement(v,{className:CC()({invalid:u.length}),title:u.length?stringifyObjectErrors(u).join(", "):"",value:stringify(s),disabled:m,onChange:this.handleOnChange}))}}function valueOrEmptyList(i){return et.List.isList(i)?i:Array.isArray(i)?(0,et.fromJS)(i):(0,et.List)()}_o()(JsonSchema_object,"defaultProps",hI);const json_schema_components=()=>({components:rr()({},Pe)}),base=()=>[configsPlugin,util,logs,view,plugins_spec,err,icons,plugins_layout,json_schema_5_samples,core_components,form_components,swagger_client,json_schema_components,auth,downloadUrlPlugin,deep_linking,filter,on_complete,plugins_request_snippets,safe_render()],dI=(0,et.Map)();function onlyOAS3(i){return(s,u)=>function(){if(u.getSystem().specSelectors.isOAS3()){const s=i(...arguments);return"function"==typeof s?s(u):s}return s(...arguments)}}const fI=onlyOAS3(Xt((()=>null))),mI=onlyOAS3((()=>i=>{const s=i.getSystem().specSelectors.specJson().getIn(["components","schemas"]);return et.Map.isMap(s)?s:dI})),yI=onlyOAS3((()=>i=>i.getSystem().specSelectors.specJson().hasIn(["servers",0]))),gI=onlyOAS3(Xt(cs,(i=>i.getIn(["components","securitySchemes"])||null))),wrap_selectors_validOperationMethods=(i,s)=>function(u){if(s.specSelectors.isOAS3())return s.oas3Selectors.validOperationMethods();for(var m=arguments.length,v=new Array(m>1?m-1:0),_=1;_function(){for(var m=arguments.length,v=new Array(m),_=0;_i),(i=>{let{specSelectors:s}=i;return s.securityDefinitions()}),((i,s)=>{let u=(0,et.List)();return s?(s.entrySeq().forEach((i=>{let[s,m]=i;const v=m.get("type");if("oauth2"===v&&m.get("flows").entrySeq().forEach((i=>{let[v,_]=i,j=(0,et.fromJS)({flow:v,authorizationUrl:_.get("authorizationUrl"),tokenUrl:_.get("tokenUrl"),scopes:_.get("scopes"),type:m.get("type"),description:m.get("description")});u=u.push(new et.Map({[s]:j.filter((i=>void 0!==i))}))})),"http"!==v&&"apiKey"!==v||(u=u.push(new et.Map({[s]:m}))),"openIdConnect"===v&&m.get("openIdConnectData")){let i=m.get("openIdConnectData");(i.get("grant_types_supported")||["authorization_code","implicit"]).forEach((v=>{let _=i.get("scopes_supported")&&i.get("scopes_supported").reduce(((i,s)=>i.set(s,"")),new et.Map),j=(0,et.fromJS)({flow:v,authorizationUrl:i.get("authorization_endpoint"),tokenUrl:i.get("token_endpoint"),scopes:_,type:"oauth2",openIdConnectUrl:m.get("openIdConnectUrl")});u=u.push(new et.Map({[s]:j.filter((i=>void 0!==i))}))}))}})),u):u})));function OAS3ComponentWrapFactory(i){return(s,u)=>m=>{var v;return"function"==typeof(null===(v=u.specSelectors)||void 0===v?void 0:v.isOAS3)?u.specSelectors.isOAS3()?He.createElement(i,No()({},m,u,{Ori:s})):He.createElement(s,m):(console.warn("OAS3 wrapper: couldn't get spec"),null)}}const xI=(0,et.Map)(),selectors_isSwagger2=()=>i=>function isSwagger2(i){const s=i.get("swagger");return"string"==typeof s&&"2.0"===s}(i.getSystem().specSelectors.specJson()),selectors_isOAS30=()=>i=>function isOAS30(i){const s=i.get("openapi");return"string"==typeof s&&/^3\.0\.([0123])(?:-rc[012])?$/.test(s)}(i.getSystem().specSelectors.specJson()),selectors_isOAS3=()=>i=>i.getSystem().specSelectors.isOAS30();function selectors_onlyOAS3(i){return function(s){for(var u=arguments.length,m=new Array(u>1?u-1:0),v=1;v{if(u.specSelectors.isOAS3()){const v=i(s,...m);return"function"==typeof v?v(u):v}return null}}}const OI=selectors_onlyOAS3((()=>i=>i.specSelectors.specJson().get("servers",xI))),kI=selectors_onlyOAS3(((i,s)=>{let{callbacks:u,specPath:m}=s;return i=>{const s=i.specSelectors.validOperationMethods();return et.Map.isMap(u)?u.reduce(((i,u,v)=>et.Map.isMap(u)?u.reduce(((i,u,_)=>{if(!et.Map.isMap(u))return i;const j=u.entrySeq().filter((i=>{let[u]=i;return s.includes(u)})).map((i=>{let[s,u]=i;return{operation:(0,et.Map)({operation:u}),method:s,path:_,callbackName:v,specPath:m.concat([v,_,s])}}));return i.concat(j)}),(0,et.List)()):i),(0,et.List)()).groupBy((i=>i.callbackName)).map((i=>i.toArray())).toObject():{}}})),callbacks=i=>{let{callbacks:s,specPath:u,specSelectors:m,getComponent:v}=i;const _=m.callbacksOperations({callbacks:s,specPath:u}),j=Object.keys(_),M=v("OperationContainer",!0);return 0===j.length?He.createElement("span",null,"No callbacks"):He.createElement("div",null,j.map((i=>He.createElement("div",{key:`${i}`},He.createElement("h2",null,i),_[i].map((s=>He.createElement(M,{key:`${i}-${s.path}-${s.method}`,op:s.operation,tag:"callbacks",method:s.method,path:s.path,specPath:s.specPath,allowTryItOut:!1})))))))},getDefaultRequestBodyValue=(i,s,u,m)=>{var v;const _=null!==(v=i.getIn(["content",s]))&&void 0!==v?v:(0,et.OrderedMap)(),j=_.get("schema",(0,et.OrderedMap)()).toJS(),M=void 0!==_.get("examples"),$=_.get("example"),W=M?_.getIn(["examples",u,"value"]):$;return stringify(m.getSampleSchema(j,s,{includeWriteOnly:!0},W))},components_request_body=i=>{var s,u,m;let{userHasEditedBody:v,requestBody:_,requestBodyValue:j,requestBodyInclusionSetting:M,requestBodyErrors:$,getComponent:W,getConfigs:X,specSelectors:Y,fn:Z,contentType:ee,isExecute:ie,specPath:ae,onChange:ce,onChangeIncludeEmpty:le,activeExamplesKey:pe,updateActiveExamplesKey:de,setRetainRequestBodyValueFlag:fe}=i;const handleFile=i=>{ce(i.target.files[0])},setIsIncludedOptions=i=>{let s={key:i,shouldDispatchInit:!1,defaultValue:!0};return"no value"===M.get(i,"no value")&&(s.shouldDispatchInit=!0),s},ye=W("Markdown",!0),be=W("modelExample"),_e=W("RequestBodyEditor"),we=W("highlightCode"),Se=W("ExamplesSelectValueRetainer"),xe=W("Example"),Pe=W("ParameterIncludeEmpty"),{showCommonExtensions:Ie}=X(),Te=null!==(s=null==_?void 0:_.get("description"))&&void 0!==s?s:null,Re=null!==(u=null==_?void 0:_.get("content"))&&void 0!==u?u:new et.OrderedMap;ee=ee||Re.keySeq().first()||"";const qe=null!==(m=Re.get(ee))&&void 0!==m?m:(0,et.OrderedMap)(),ze=qe.get("schema",(0,et.OrderedMap)()),Ve=qe.get("examples",null),We=null==Ve?void 0:Ve.map(((i,s)=>{var u;const m=null===(u=i)||void 0===u?void 0:u.get("value",null);return m&&(i=i.set("value",getDefaultRequestBodyValue(_,ee,s,Z),m)),i}));if($=et.List.isList($)?$:(0,et.List)(),!qe.size)return null;const Xe="object"===qe.getIn(["schema","type"]),Ye="binary"===qe.getIn(["schema","format"]),Qe="base64"===qe.getIn(["schema","format"]);if("application/octet-stream"===ee||0===ee.indexOf("image/")||0===ee.indexOf("audio/")||0===ee.indexOf("video/")||Ye||Qe){const i=W("Input");return ie?He.createElement(i,{type:"file",onChange:handleFile}):He.createElement("i",null,"Example values are not available for ",He.createElement("code",null,ee)," media types.")}if(Xe&&("application/x-www-form-urlencoded"===ee||0===ee.indexOf("multipart/"))&&ze.get("properties",(0,et.OrderedMap)()).size>0){const i=W("JsonSchemaForm"),s=W("ParameterExt"),u=ze.get("properties",(0,et.OrderedMap)());return j=et.Map.isMap(j)?j:(0,et.OrderedMap)(),He.createElement("div",{className:"table-container"},Te&&He.createElement(ye,{source:Te}),He.createElement("table",null,He.createElement("tbody",null,et.Map.isMap(u)&&u.entrySeq().map((u=>{let[m,v]=u;if(v.get("readOnly"))return;let _=Ie?getCommonExtensions(v):null;const X=ze.get("required",(0,et.List)()).includes(m),Y=v.get("type"),ee=v.get("format"),ae=v.get("description"),pe=j.getIn([m,"value"]),de=j.getIn([m,"errors"])||$,fe=M.get(m)||!1,be=v.has("default")||v.has("example")||v.hasIn(["items","example"])||v.hasIn(["items","default"]),_e=v.has("enum")&&(1===v.get("enum").size||X),we=be||_e;let Se="";"array"!==Y||we||(Se=[]),("object"===Y||we)&&(Se=Z.getSampleSchema(v,!1,{includeWriteOnly:!0})),"string"!=typeof Se&&"object"===Y&&(Se=stringify(Se)),"string"==typeof Se&&"array"===Y&&(Se=JSON.parse(Se));const xe="string"===Y&&("binary"===ee||"base64"===ee);return He.createElement("tr",{key:m,className:"parameters","data-property-name":m},He.createElement("td",{className:"parameters-col_name"},He.createElement("div",{className:X?"parameter__name required":"parameter__name"},m,X?He.createElement("span",null," *"):null),He.createElement("div",{className:"parameter__type"},Y,ee&&He.createElement("span",{className:"prop-format"},"($",ee,")"),Ie&&_.size?_.entrySeq().map((i=>{let[u,m]=i;return He.createElement(s,{key:`${u}-${m}`,xKey:u,xVal:m})})):null),He.createElement("div",{className:"parameter__deprecated"},v.get("deprecated")?"deprecated":null)),He.createElement("td",{className:"parameters-col_description"},He.createElement(ye,{source:ae}),ie?He.createElement("div",null,He.createElement(i,{fn:Z,dispatchInitialValue:!xe,schema:v,description:m,getComponent:W,value:void 0===pe?Se:pe,required:X,errors:de,onChange:i=>{ce(i,[m])}}),X?null:He.createElement(Pe,{onChange:i=>le(m,i),isIncluded:fe,isIncludedOptions:setIsIncludedOptions(m),isDisabled:Array.isArray(pe)?0!==pe.length:!isEmptyValue(pe)})):null))})))))}const tt=getDefaultRequestBodyValue(_,ee,pe,Z);let rt=null;return getKnownSyntaxHighlighterLanguage(tt)&&(rt="json"),He.createElement("div",null,Te&&He.createElement(ye,{source:Te}),We?He.createElement(Se,{userHasEditedBody:v,examples:We,currentKey:pe,currentUserInputValue:j,onSelect:i=>{de(i)},updateValue:ce,defaultToFirstExample:!0,getComponent:W,setRetainRequestBodyValueFlag:fe}):null,ie?He.createElement("div",null,He.createElement(_e,{value:j,errors:$,defaultValue:tt,onChange:ce,getComponent:W})):He.createElement(be,{getComponent:W,getConfigs:X,specSelectors:Y,expandDepth:1,isExecute:ie,schema:qe.get("schema"),specPath:ae.push("content",ee),example:He.createElement(we,{className:"body-param__example",getConfigs:X,language:rt,value:stringify(j)||tt}),includeWriteOnly:!0}),We?He.createElement(xe,{example:We.get(pe),getComponent:W,getConfigs:X}):null)};class operation_link_OperationLink extends He.Component{render(){const{link:i,name:s,getComponent:u}=this.props,m=u("Markdown",!0);let v=i.get("operationId")||i.get("operationRef"),_=i.get("parameters")&&i.get("parameters").toJS(),j=i.get("description");return He.createElement("div",{className:"operation-link"},He.createElement("div",{className:"description"},He.createElement("b",null,He.createElement("code",null,s)),j?He.createElement(m,{source:j}):null),He.createElement("pre",null,"Operation `",v,"`",He.createElement("br",null),He.createElement("br",null),"Parameters ",function padString(i,s){if("string"!=typeof s)return"";return s.split("\n").map(((s,u)=>u>0?Array(i+1).join(" ")+s:s)).join("\n")}(0,JSON.stringify(_,null,2))||"{}",He.createElement("br",null)))}}const AI=operation_link_OperationLink;class servers_Servers extends He.Component{constructor(){super(...arguments),_o()(this,"onServerChange",(i=>{this.setServer(i.target.value)})),_o()(this,"onServerVariableValueChange",(i=>{let{setServerVariableValue:s,currentServer:u}=this.props,m=i.target.getAttribute("data-variable"),v=i.target.value;"function"==typeof s&&s({server:u,key:m,val:v})})),_o()(this,"setServer",(i=>{let{setSelectedServer:s}=this.props;s(i)}))}componentDidMount(){var i;let{servers:s,currentServer:u}=this.props;u||this.setServer(null===(i=s.first())||void 0===i?void 0:i.get("url"))}UNSAFE_componentWillReceiveProps(i){let{servers:s,setServerVariableValue:u,getServerVariable:m}=i;if(this.props.currentServer!==i.currentServer||this.props.servers!==i.servers){let v=s.find((s=>s.get("url")===i.currentServer)),_=this.props.servers.find((i=>i.get("url")===this.props.currentServer))||(0,et.OrderedMap)();if(!v)return this.setServer(s.first().get("url"));let j=((_.get("variables")||(0,et.OrderedMap)()).find((i=>i.get("default")))||(0,et.OrderedMap)()).get("default"),M=v.get("variables")||(0,et.OrderedMap)(),$=(M.find((i=>i.get("default")))||(0,et.OrderedMap)()).get("default");M.map(((s,v)=>{m(i.currentServer,v)&&j===$||u({server:i.currentServer,key:v,val:s.get("default")||""})}))}}render(){let{servers:i,currentServer:s,getServerVariable:u,getEffectiveServerValue:m}=this.props,v=(i.find((i=>i.get("url")===s))||(0,et.OrderedMap)()).get("variables")||(0,et.OrderedMap)(),_=0!==v.size;return He.createElement("div",{className:"servers"},He.createElement("label",{htmlFor:"servers"},He.createElement("select",{onChange:this.onServerChange,value:s},i.valueSeq().map((i=>He.createElement("option",{value:i.get("url"),key:i.get("url")},i.get("url"),i.get("description")&&` - ${i.get("description")}`))).toArray())),_?He.createElement("div",null,He.createElement("div",{className:"computed-url"},"Computed URL:",He.createElement("code",null,m(s))),He.createElement("h4",null,"Server variables"),He.createElement("table",null,He.createElement("tbody",null,v.entrySeq().map((i=>{let[m,v]=i;return He.createElement("tr",{key:m},He.createElement("td",null,m),He.createElement("td",null,v.get("enum")?He.createElement("select",{"data-variable":m,onChange:this.onServerVariableValueChange},v.get("enum").map((i=>He.createElement("option",{selected:i===u(s,m),key:i,value:i},i)))):He.createElement("input",{type:"text",value:u(s,m)||"",onChange:this.onServerVariableValueChange,"data-variable":m})))}))))):null)}}class ServersContainer extends He.Component{render(){const{specSelectors:i,oas3Selectors:s,oas3Actions:u,getComponent:m}=this.props,v=i.servers(),_=m("Servers");return v&&v.size?He.createElement("div",null,He.createElement("span",{className:"servers-title"},"Servers"),He.createElement(_,{servers:v,currentServer:s.selectedServer(),setSelectedServer:u.setSelectedServer,setServerVariableValue:u.setServerVariableValue,getServerVariable:s.serverVariableValue,getEffectiveServerValue:s.serverEffectiveValue})):null}}const CI=Function.prototype;class RequestBodyEditor extends He.PureComponent{constructor(i,s){super(i,s),_o()(this,"applyDefaultValue",(i=>{const{onChange:s,defaultValue:u}=i||this.props;return this.setState({value:u}),s(u)})),_o()(this,"onChange",(i=>{this.props.onChange(stringify(i))})),_o()(this,"onDomChange",(i=>{const s=i.target.value;this.setState({value:s},(()=>this.onChange(s)))})),this.state={value:stringify(i.value)||i.defaultValue},i.onChange(i.value)}UNSAFE_componentWillReceiveProps(i){this.props.value!==i.value&&i.value!==this.state.value&&this.setState({value:stringify(i.value)}),!i.value&&i.defaultValue&&this.state.value&&this.applyDefaultValue(i)}render(){let{getComponent:i,errors:s}=this.props,{value:u}=this.state,m=s.size>0;const v=i("TextArea");return He.createElement("div",{className:"body-param"},He.createElement(v,{className:CC()("body-param__text",{invalid:m}),title:s.size?s.join(", "):"",value:u,onChange:this.onDomChange}))}}_o()(RequestBodyEditor,"defaultProps",{onChange:CI,userHasEditedBody:!1});class HttpAuth extends He.Component{constructor(i,s){super(i,s),_o()(this,"onChange",(i=>{let{onChange:s}=this.props,{value:u,name:m}=i.target,v=Object.assign({},this.state.value);m?v[m]=u:v=u,this.setState({value:v},(()=>s(this.state)))}));let{name:u,schema:m}=this.props,v=this.getValue();this.state={name:u,schema:m,value:v}}getValue(){let{name:i,authorized:s}=this.props;return s&&s.getIn([i,"value"])}render(){let{schema:i,getComponent:s,errSelectors:u,name:m}=this.props;const v=s("Input"),_=s("Row"),j=s("Col"),M=s("authError"),$=s("Markdown",!0),W=s("JumpToPath",!0),X=(i.get("scheme")||"").toLowerCase();let Y=this.getValue(),Z=u.allErrors().filter((i=>i.get("authId")===m));if("basic"===X){let s=Y?Y.get("username"):null;return He.createElement("div",null,He.createElement("h4",null,He.createElement("code",null,m||i.get("name")),"  (http, Basic)",He.createElement(W,{path:["securityDefinitions",m]})),s&&He.createElement("h6",null,"Authorized"),He.createElement(_,null,He.createElement($,{source:i.get("description")})),He.createElement(_,null,He.createElement("label",null,"Username:"),s?He.createElement("code",null," ",s," "):He.createElement(j,null,He.createElement(v,{type:"text",required:"required",name:"username","aria-label":"auth-basic-username",onChange:this.onChange,autoFocus:!0}))),He.createElement(_,null,He.createElement("label",null,"Password:"),s?He.createElement("code",null," ****** "):He.createElement(j,null,He.createElement(v,{autoComplete:"new-password",name:"password",type:"password","aria-label":"auth-basic-password",onChange:this.onChange}))),Z.valueSeq().map(((i,s)=>He.createElement(M,{error:i,key:s}))))}return"bearer"===X?He.createElement("div",null,He.createElement("h4",null,He.createElement("code",null,m||i.get("name")),"  (http, Bearer)",He.createElement(W,{path:["securityDefinitions",m]})),Y&&He.createElement("h6",null,"Authorized"),He.createElement(_,null,He.createElement($,{source:i.get("description")})),He.createElement(_,null,He.createElement("label",null,"Value:"),Y?He.createElement("code",null," ****** "):He.createElement(j,null,He.createElement(v,{type:"text","aria-label":"auth-bearer-value",onChange:this.onChange,autoFocus:!0}))),Z.valueSeq().map(((i,s)=>He.createElement(M,{error:i,key:s})))):He.createElement("div",null,He.createElement("em",null,He.createElement("b",null,m)," HTTP authentication: unsupported scheme ",`'${X}'`))}}class operation_servers_OperationServers extends He.Component{constructor(){super(...arguments),_o()(this,"setSelectedServer",(i=>{const{path:s,method:u}=this.props;return this.forceUpdate(),this.props.setSelectedServer(i,`${s}:${u}`)})),_o()(this,"setServerVariableValue",(i=>{const{path:s,method:u}=this.props;return this.forceUpdate(),this.props.setServerVariableValue(rr()(rr()({},i),{},{namespace:`${s}:${u}`}))})),_o()(this,"getSelectedServer",(()=>{const{path:i,method:s}=this.props;return this.props.getSelectedServer(`${i}:${s}`)})),_o()(this,"getServerVariable",((i,s)=>{const{path:u,method:m}=this.props;return this.props.getServerVariable({namespace:`${u}:${m}`,server:i},s)})),_o()(this,"getEffectiveServerValue",(i=>{const{path:s,method:u}=this.props;return this.props.getEffectiveServerValue({server:i,namespace:`${s}:${u}`})}))}render(){const{operationServers:i,pathServers:s,getComponent:u}=this.props;if(!i&&!s)return null;const m=u("Servers"),v=i||s,_=i?"operation":"path";return He.createElement("div",{className:"opblock-section operation-servers"},He.createElement("div",{className:"opblock-section-header"},He.createElement("div",{className:"tab-header"},He.createElement("h4",{className:"opblock-title"},"Servers"))),He.createElement("div",{className:"opblock-description-wrapper"},He.createElement("h4",{className:"message"},"These ",_,"-level options override the global server options."),He.createElement(m,{servers:v,currentServer:this.getSelectedServer(),setSelectedServer:this.setSelectedServer,setServerVariableValue:this.setServerVariableValue,getServerVariable:this.getServerVariable,getEffectiveServerValue:this.getEffectiveServerValue})))}}const jI={Callbacks:callbacks,HttpAuth,RequestBody:components_request_body,Servers:servers_Servers,ServersContainer,RequestBodyEditor,OperationServers:operation_servers_OperationServers,operationLink:AI},PI=new Remarkable("commonmark");PI.block.ruler.enable(["table"]),PI.set({linkTarget:"_blank"});const markdown_Markdown=i=>{let{source:s,className:u="",getConfigs:m}=i;if("string"!=typeof s)return null;if(s){const{useUnsafeMarkdown:i}=m(),v=sanitizer(PI.render(s),{useUnsafeMarkdown:i});let _;return"string"==typeof v&&(_=v.trim()),He.createElement("div",{dangerouslySetInnerHTML:{__html:_},className:CC()(u,"renderedMarkdown")})}return null};markdown_Markdown.defaultProps={getConfigs:()=>({useUnsafeMarkdown:!1})};const II=OAS3ComponentWrapFactory(markdown_Markdown),NI=["Ori"],TI=OAS3ComponentWrapFactory((i=>{let{Ori:s}=i,u=Mo()(i,NI);const{schema:m,getComponent:v,errSelectors:_,authorized:j,onAuthChange:M,name:$}=u,W=v("HttpAuth");return"http"===m.get("type")?He.createElement(W,{key:$,schema:m,name:$,errSelectors:_,authorized:j,getComponent:v,onChange:M}):He.createElement(s,u)})),MI=OAS3ComponentWrapFactory(OnlineValidatorBadge);class ModelComponent extends He.Component{render(){let{getConfigs:i,schema:s}=this.props,u=["model-box"],m=null;return!0===s.get("deprecated")&&(u.push("deprecated"),m=He.createElement("span",{className:"model-deprecated-warning"},"Deprecated:")),He.createElement("div",{className:u.join(" ")},m,He.createElement(Model,No()({},this.props,{getConfigs:i,depth:1,expandDepth:this.props.expandDepth||0})))}}const RI=OAS3ComponentWrapFactory(ModelComponent),DI=["Ori"],BI=OAS3ComponentWrapFactory((i=>{let{Ori:s}=i,u=Mo()(i,DI);const{schema:m,getComponent:v,errors:_,onChange:j}=u,M=m&&m.get?m.get("format"):null,$=m&&m.get?m.get("type"):null,W=v("Input");return $&&"string"===$&&M&&("binary"===M||"base64"===M)?He.createElement(W,{type:"file",className:_.length?"invalid":"",title:_.length?_:"",onChange:i=>{j(i.target.files[0])},disabled:s.isDisabled}):He.createElement(s,u)})),LI=function OAS30ComponentWrapFactory(i){return(s,u)=>m=>{var v;return"function"==typeof(null===(v=u.specSelectors)||void 0===v?void 0:v.isOAS30)?u.specSelectors.isOAS30()?He.createElement(i,No()({},m,u,{Ori:s})):He.createElement(s,m):(console.warn("OAS30 wrapper: couldn't get spec"),null)}}((i=>{const{Ori:s}=i;return He.createElement(s,{oasVersion:"3.0"})})),FI={Markdown:II,AuthItem:TI,OpenAPIVersion:LI,JsonSchema_string:BI,model:RI,onlineValidatorBadge:MI},qI="oas3_set_servers",$I="oas3_set_request_body_value",UI="oas3_set_request_body_retain_flag",zI="oas3_set_request_body_inclusion",VI="oas3_set_active_examples_member",WI="oas3_set_request_content_type",KI="oas3_set_response_content_type",HI="oas3_set_server_variable_value",JI="oas3_set_request_body_validate_error",GI="oas3_clear_request_body_validate_error",XI="oas3_clear_request_body_value";function setSelectedServer(i,s){return{type:qI,payload:{selectedServerUrl:i,namespace:s}}}function setRequestBodyValue(i){let{value:s,pathMethod:u}=i;return{type:$I,payload:{value:s,pathMethod:u}}}const setRetainRequestBodyValueFlag=i=>{let{value:s,pathMethod:u}=i;return{type:UI,payload:{value:s,pathMethod:u}}};function setRequestBodyInclusion(i){let{value:s,pathMethod:u,name:m}=i;return{type:zI,payload:{value:s,pathMethod:u,name:m}}}function setActiveExamplesMember(i){let{name:s,pathMethod:u,contextType:m,contextName:v}=i;return{type:VI,payload:{name:s,pathMethod:u,contextType:m,contextName:v}}}function setRequestContentType(i){let{value:s,pathMethod:u}=i;return{type:WI,payload:{value:s,pathMethod:u}}}function setResponseContentType(i){let{value:s,path:u,method:m}=i;return{type:KI,payload:{value:s,path:u,method:m}}}function setServerVariableValue(i){let{server:s,namespace:u,key:m,val:v}=i;return{type:HI,payload:{server:s,namespace:u,key:m,val:v}}}const setRequestBodyValidateError=i=>{let{path:s,method:u,validationErrors:m}=i;return{type:JI,payload:{path:s,method:u,validationErrors:m}}},clearRequestBodyValidateError=i=>{let{path:s,method:u}=i;return{type:GI,payload:{path:s,method:u}}},initRequestBodyValidateError=i=>{let{pathMethod:s}=i;return{type:GI,payload:{path:s[0],method:s[1]}}},clearRequestBodyValue=i=>{let{pathMethod:s}=i;return{type:XI,payload:{pathMethod:s}}},oas3_selectors_onlyOAS3=i=>function(s){for(var u=arguments.length,m=new Array(u>1?u-1:0),v=1;v{if(u.getSystem().specSelectors.isOAS3()){const v=i(s,...m);return"function"==typeof v?v(u):v}return null}};const YI=oas3_selectors_onlyOAS3(((i,s)=>{const u=s?[s,"selectedServer"]:["selectedServer"];return i.getIn(u)||""})),QI=oas3_selectors_onlyOAS3(((i,s,u)=>i.getIn(["requestData",s,u,"bodyValue"])||null)),ZI=oas3_selectors_onlyOAS3(((i,s,u)=>i.getIn(["requestData",s,u,"retainBodyValue"])||!1)),selectDefaultRequestBodyValue=(i,s,u)=>i=>{const{oas3Selectors:m,specSelectors:v,fn:_}=i.getSystem();if(v.isOAS3()){const i=m.requestContentType(s,u);if(i)return getDefaultRequestBodyValue(v.specResolvedSubtree(["paths",s,u,"requestBody"]),i,m.activeExamplesMember(s,u,"requestBody","requestBody"),_)}return null},eN=oas3_selectors_onlyOAS3(((i,s,u)=>i=>{const{oas3Selectors:m,specSelectors:v,fn:_}=i;let j=!1;const M=m.requestContentType(s,u);let $=m.requestBodyValue(s,u);const W=v.specResolvedSubtree(["paths",s,u,"requestBody"]);if(!W)return!1;if(et.Map.isMap($)&&($=stringify($.mapEntries((i=>et.Map.isMap(i[1])?[i[0],i[1].get("value")]:i)).toJS())),et.List.isList($)&&($=stringify($)),M){const i=getDefaultRequestBodyValue(W,M,m.activeExamplesMember(s,u,"requestBody","requestBody"),_);j=!!$&&$!==i}return j})),tN=oas3_selectors_onlyOAS3(((i,s,u)=>i.getIn(["requestData",s,u,"bodyInclusion"])||(0,et.Map)())),rN=oas3_selectors_onlyOAS3(((i,s,u)=>i.getIn(["requestData",s,u,"errors"])||null)),nN=oas3_selectors_onlyOAS3(((i,s,u,m,v)=>i.getIn(["examples",s,u,m,v,"activeExample"])||null)),oN=oas3_selectors_onlyOAS3(((i,s,u)=>i.getIn(["requestData",s,u,"requestContentType"])||null)),iN=oas3_selectors_onlyOAS3(((i,s,u)=>i.getIn(["requestData",s,u,"responseContentType"])||null)),aN=oas3_selectors_onlyOAS3(((i,s,u)=>{let m;if("string"!=typeof s){const{server:i,namespace:v}=s;m=v?[v,"serverVariableValues",i,u]:["serverVariableValues",i,u]}else{m=["serverVariableValues",s,u]}return i.getIn(m)||null})),sN=oas3_selectors_onlyOAS3(((i,s)=>{let u;if("string"!=typeof s){const{server:i,namespace:m}=s;u=m?[m,"serverVariableValues",i]:["serverVariableValues",i]}else{u=["serverVariableValues",s]}return i.getIn(u)||(0,et.OrderedMap)()})),cN=oas3_selectors_onlyOAS3(((i,s)=>{var u,m;if("string"!=typeof s){const{server:v,namespace:_}=s;m=v,u=_?i.getIn([_,"serverVariableValues",m]):i.getIn(["serverVariableValues",m])}else m=s,u=i.getIn(["serverVariableValues",m]);u=u||(0,et.OrderedMap)();let v=m;return u.map(((i,s)=>{v=v.replace(new RegExp(`{${s}}`,"g"),i)})),v})),lN=function validateRequestBodyIsRequired(i){return function(){for(var s=arguments.length,u=new Array(s),m=0;m{const m=s.getSystem().specSelectors.specJson();let v=[...u][1]||[];return!m.getIn(["paths",...v,"requestBody","required"])||i(...u)}}}(((i,s)=>((i,s)=>(s=s||[],!!i.getIn(["requestData",...s,"bodyValue"])))(i,s))),validateShallowRequired=(i,s)=>{let{oas3RequiredRequestBodyContentType:u,oas3RequestContentType:m,oas3RequestBodyValue:v}=s,_=[];if(!et.Map.isMap(v))return _;let j=[];return Object.keys(u.requestContentType).forEach((i=>{if(i===m){u.requestContentType[i].forEach((i=>{j.indexOf(i)<0&&j.push(i)}))}})),j.forEach((i=>{v.getIn([i,"value"])||_.push(i)})),_},uN=Xt((()=>["get","put","post","delete","options","head","patch","trace"])),pN={[qI]:(i,s)=>{let{payload:{selectedServerUrl:u,namespace:m}}=s;const v=m?[m,"selectedServer"]:["selectedServer"];return i.setIn(v,u)},[$I]:(i,s)=>{let{payload:{value:u,pathMethod:m}}=s,[v,_]=m;if(!et.Map.isMap(u))return i.setIn(["requestData",v,_,"bodyValue"],u);let j,M=i.getIn(["requestData",v,_,"bodyValue"])||(0,et.Map)();et.Map.isMap(M)||(M=(0,et.Map)());const[...$]=u.keys();return $.forEach((i=>{let s=u.getIn([i]);M.has(i)&&et.Map.isMap(s)||(j=M.setIn([i,"value"],s))})),i.setIn(["requestData",v,_,"bodyValue"],j)},[UI]:(i,s)=>{let{payload:{value:u,pathMethod:m}}=s,[v,_]=m;return i.setIn(["requestData",v,_,"retainBodyValue"],u)},[zI]:(i,s)=>{let{payload:{value:u,pathMethod:m,name:v}}=s,[_,j]=m;return i.setIn(["requestData",_,j,"bodyInclusion",v],u)},[VI]:(i,s)=>{let{payload:{name:u,pathMethod:m,contextType:v,contextName:_}}=s,[j,M]=m;return i.setIn(["examples",j,M,v,_,"activeExample"],u)},[WI]:(i,s)=>{let{payload:{value:u,pathMethod:m}}=s,[v,_]=m;return i.setIn(["requestData",v,_,"requestContentType"],u)},[KI]:(i,s)=>{let{payload:{value:u,path:m,method:v}}=s;return i.setIn(["requestData",m,v,"responseContentType"],u)},[HI]:(i,s)=>{let{payload:{server:u,namespace:m,key:v,val:_}}=s;const j=m?[m,"serverVariableValues",u,v]:["serverVariableValues",u,v];return i.setIn(j,_)},[JI]:(i,s)=>{let{payload:{path:u,method:m,validationErrors:v}}=s,_=[];if(_.push("Required field is not provided"),v.missingBodyValue)return i.setIn(["requestData",u,m,"errors"],(0,et.fromJS)(_));if(v.missingRequiredKeys&&v.missingRequiredKeys.length>0){const{missingRequiredKeys:s}=v;return i.updateIn(["requestData",u,m,"bodyValue"],(0,et.fromJS)({}),(i=>s.reduce(((i,s)=>i.setIn([s,"errors"],(0,et.fromJS)(_))),i)))}return console.warn("unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR"),i},[GI]:(i,s)=>{let{payload:{path:u,method:m}}=s;const v=i.getIn(["requestData",u,m,"bodyValue"]);if(!et.Map.isMap(v))return i.setIn(["requestData",u,m,"errors"],(0,et.fromJS)([]));const[..._]=v.keys();return _?i.updateIn(["requestData",u,m,"bodyValue"],(0,et.fromJS)({}),(i=>_.reduce(((i,s)=>i.setIn([s,"errors"],(0,et.fromJS)([]))),i))):i},[XI]:(i,s)=>{let{payload:{pathMethod:u}}=s,[m,v]=u;const _=i.getIn(["requestData",m,v,"bodyValue"]);return _?et.Map.isMap(_)?i.setIn(["requestData",m,v,"bodyValue"],(0,et.Map)()):i.setIn(["requestData",m,v,"bodyValue"],""):i}};function oas3(){return{components:jI,wrapComponents:FI,statePlugins:{spec:{wrapSelectors:Ie,selectors:Re},auth:{wrapSelectors:Te},oas3:{actions:qe,reducers:pN,selectors:ze}}}}const webhooks=i=>{let{specSelectors:s,getComponent:u}=i;const m=s.selectWebhooksOperations(),v=Object.keys(m),_=u("OperationContainer",!0);return 0===v.length?null:He.createElement("div",{className:"webhooks"},He.createElement("h2",null,"Webhooks"),v.map((i=>He.createElement("div",{key:`${i}-webhook`},m[i].map((s=>He.createElement(_,{key:`${i}-${s.method}-webhook`,op:s.operation,tag:"webhooks",method:s.method,path:i,specPath:s.specPath,allowTryItOut:!1})))))))},oas31_components_license=i=>{let{getComponent:s,specSelectors:u}=i;const m=u.selectLicenseNameField(),v=u.selectLicenseUrl(),_=s("Link");return He.createElement("div",{className:"info__license"},v?He.createElement("div",{className:"info__license__url"},He.createElement(_,{target:"_blank",href:sanitizeUrl(v)},m)):He.createElement("span",null,m))},oas31_components_contact=i=>{let{getComponent:s,specSelectors:u}=i;const m=u.selectContactNameField(),v=u.selectContactUrl(),_=u.selectContactEmailField(),j=s("Link");return He.createElement("div",{className:"info__contact"},v&&He.createElement("div",null,He.createElement(j,{href:sanitizeUrl(v),target:"_blank"},m," - Website")),_&&He.createElement(j,{href:sanitizeUrl(`mailto:${_}`)},v?`Send email to ${m}`:`Contact ${m}`))},oas31_components_info=i=>{let{getComponent:s,specSelectors:u}=i;const m=u.version(),v=u.url(),_=u.basePath(),j=u.host(),M=u.selectInfoSummaryField(),$=u.selectInfoDescriptionField(),W=u.selectInfoTitleField(),X=u.selectInfoTermsOfServiceUrl(),Y=u.selectExternalDocsUrl(),Z=u.selectExternalDocsDescriptionField(),ee=u.contact(),ie=u.license(),ae=s("Markdown",!0),ce=s("Link"),le=s("VersionStamp"),pe=s("OpenAPIVersion"),de=s("InfoUrl"),fe=s("InfoBasePath"),ye=s("License",!0),be=s("Contact",!0),_e=s("JsonSchemaDialect",!0);return He.createElement("div",{className:"info"},He.createElement("hgroup",{className:"main"},He.createElement("h2",{className:"title"},W,m&&He.createElement(le,{version:m}),He.createElement(pe,{oasVersion:"3.1"})),(j||_)&&He.createElement(fe,{host:j,basePath:_}),v&&He.createElement(de,{getComponent:s,url:v})),M&&He.createElement("p",{className:"info__summary"},M),He.createElement("div",{className:"info__description description"},He.createElement(ae,{source:$})),X&&He.createElement("div",{className:"info__tos"},He.createElement(ce,{target:"_blank",href:sanitizeUrl(X)},"Terms of service")),ee.size>0&&He.createElement(be,null),ie.size>0&&He.createElement(ye,null),Y&&He.createElement(ce,{className:"info__extdocs",target:"_blank",href:sanitizeUrl(Y)},Z||Y),He.createElement(_e,null))},json_schema_dialect=i=>{let{getComponent:s,specSelectors:u}=i;const m=u.selectJsonSchemaDialectField(),v=u.selectJsonSchemaDialectDefault(),_=s("Link");return He.createElement(He.Fragment,null,m&&m===v&&He.createElement("p",{className:"info__jsonschemadialect"},"JSON Schema dialect:"," ",He.createElement(_,{target:"_blank",href:sanitizeUrl(m)},m)),m&&m!==v&&He.createElement("div",{className:"error-wrapper"},He.createElement("div",{className:"no-margin"},He.createElement("div",{className:"errors"},He.createElement("div",{className:"errors-wrapper"},He.createElement("h4",{className:"center"},"Warning"),He.createElement("p",{className:"message"},He.createElement("strong",null,"OpenAPI.jsonSchemaDialect")," field contains a value different from the default value of"," ",He.createElement(_,{target:"_blank",href:v},v),". Values different from the default one are currently not supported. Please either omit the field or provide it with the default value."))))))},version_pragma_filter=i=>{let{bypass:s,isSwagger2:u,isOAS3:m,isOAS31:v,alsoShow:_,children:j}=i;return s?He.createElement("div",null,j):u&&(m||v)?He.createElement("div",{className:"version-pragma"},_,He.createElement("div",{className:"version-pragma__message version-pragma__message--ambiguous"},He.createElement("div",null,He.createElement("h3",null,"Unable to render this definition"),He.createElement("p",null,He.createElement("code",null,"swagger")," and ",He.createElement("code",null,"openapi")," fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields."),He.createElement("p",null,"Supported version fields are ",He.createElement("code",null,'swagger: "2.0"')," and those that match ",He.createElement("code",null,"openapi: 3.x.y")," (for example,"," ",He.createElement("code",null,"openapi: 3.1.0"),").")))):u||m||v?He.createElement("div",null,j):He.createElement("div",{className:"version-pragma"},_,He.createElement("div",{className:"version-pragma__message version-pragma__message--missing"},He.createElement("div",null,He.createElement("h3",null,"Unable to render this definition"),He.createElement("p",null,"The provided definition does not specify a valid version field."),He.createElement("p",null,"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are ",He.createElement("code",null,'swagger: "2.0"')," and those that match ",He.createElement("code",null,"openapi: 3.x.y")," (for example,"," ",He.createElement("code",null,"openapi: 3.1.0"),")."))))},getModelName=i=>"string"==typeof i&&i.includes("#/components/schemas/")?(i=>{const s=i.replace(/~1/g,"/").replace(/~0/g,"~");try{return decodeURIComponent(s)}catch{return s}})(i.replace(/^.*#\/components\/schemas\//,"")):null,hN=(0,He.forwardRef)(((i,s)=>{let{schema:u,getComponent:m,onToggle:v}=i;const _=m("JSONSchema202012"),j=getModelName(u.get("$$ref")),M=(0,He.useCallback)(((i,s)=>{v(j,s)}),[j,v]);return He.createElement(_,{name:j,schema:u.toJS(),ref:s,onExpand:M})}));hN.defaultProps={name:"",displayName:"",isRef:!1,required:!1,expandDepth:0,depth:1,includeReadOnly:!1,includeWriteOnly:!1,onToggle:()=>{}};const dN=hN,models=i=>{let{specActions:s,specSelectors:u,layoutSelectors:m,layoutActions:v,getComponent:_,getConfigs:j}=i;const M=u.selectSchemas(),$=Object.keys(M).length>0,W=["components","schemas"],{docExpansion:X,defaultModelsExpandDepth:Y}=j(),Z=Y>0&&"none"!==X,ee=m.isShown(W,Z),ie=_("Collapse"),ae=_("JSONSchema202012"),ce=_("ArrowUpIcon"),le=_("ArrowDownIcon");(0,He.useEffect)((()=>{const i=ee&&Y>1,m=null!=u.specResolvedSubtree(W);i&&!m&&s.requestResolvedSubtree(W)}),[ee,Y]);const pe=(0,He.useCallback)((()=>{v.show(W,!ee)}),[ee]),de=(0,He.useCallback)((i=>{null!==i&&v.readyToScroll(W,i)}),[]),handleJSONSchema202012Ref=i=>s=>{null!==s&&v.readyToScroll([...W,i],s)},handleJSONSchema202012Expand=i=>(m,v)=>{if(v){const m=[...W,i];null!=u.specResolvedSubtree(m)||s.requestResolvedSubtree([...W,i])}};return!$||Y<0?null:He.createElement("section",{className:CC()("models",{"is-open":ee}),ref:de},He.createElement("h4",null,He.createElement("button",{"aria-expanded":ee,className:"models-control",onClick:pe},He.createElement("span",null,"Schemas"),ee?He.createElement(ce,null):He.createElement(le,null))),He.createElement(ie,{isOpened:ee},Object.entries(M).map((i=>{let[s,u]=i;return He.createElement(ae,{key:s,ref:handleJSONSchema202012Ref(s),schema:u,name:s,onExpand:handleJSONSchema202012Expand(s)})}))))},isOAS31=i=>{const s=i.get("openapi");return"string"==typeof s&&/^3\.1\.(?:[1-9]\d*|0)$/.test(s)},fn_createOnlyOAS31Selector=i=>function(s){for(var u=arguments.length,m=new Array(u>1?u-1:0),v=1;v{if(u.getSystem().specSelectors.isOAS31()){const v=i(s,...m);return"function"==typeof v?v(u):v}return null}},fn_createSystemSelector=i=>function(s){for(var u=arguments.length,m=new Array(u>1?u-1:0),v=1;v{const v=i(s,u,...m);return"function"==typeof v?v(u):v}},createOnlyOAS31ComponentWrapper=i=>(s,u)=>m=>u.specSelectors.isOAS31()?He.createElement(i,No()({},m,{originalComponent:s,getSystem:u.getSystem})):He.createElement(s,m),fN=createOnlyOAS31ComponentWrapper((i=>{let{getSystem:s}=i;const u=s().getComponent("OAS31License",!0);return He.createElement(u,null)})),mN=createOnlyOAS31ComponentWrapper((i=>{let{getSystem:s}=i;const u=s().getComponent("OAS31Contact",!0);return He.createElement(u,null)})),yN=createOnlyOAS31ComponentWrapper((i=>{let{getSystem:s}=i;const u=s().getComponent("OAS31Info",!0);return He.createElement(u,null)})),makeIsExpandable=(i,s)=>{const{fn:u}=s();if("function"!=typeof i)return null;const{hasKeyword:m}=u.jsonSchema202012;return s=>i(s)||m(s,"example")||(null==s?void 0:s.xml)||(null==s?void 0:s.discriminator)||(null==s?void 0:s.externalDocs)},getProperties=(i,s)=>{let{includeReadOnly:u,includeWriteOnly:m}=s;if(null==i||!i.properties)return{};const v=Object.entries(i.properties).filter((i=>{let[,s]=i;const v=!0===(null==s?void 0:s.readOnly),_=!0===(null==s?void 0:s.writeOnly);return(!v||u)&&(!_||m)}));return Object.fromEntries(v)},gN=["getSystem"],vN=createOnlyOAS31ComponentWrapper((i=>{let{getSystem:s}=i,u=Mo()(i,gN);const m=s(),{getComponent:v,fn:_,getConfigs:j}=m,M=j(),$=v("OAS31Model"),W=v("JSONSchema202012"),X=v("JSONSchema202012Keyword$schema"),Y=v("JSONSchema202012Keyword$vocabulary"),Z=v("JSONSchema202012Keyword$id"),ee=v("JSONSchema202012Keyword$anchor"),ie=v("JSONSchema202012Keyword$dynamicAnchor"),ae=v("JSONSchema202012Keyword$ref"),ce=v("JSONSchema202012Keyword$dynamicRef"),le=v("JSONSchema202012Keyword$defs"),pe=v("JSONSchema202012Keyword$comment"),de=v("JSONSchema202012KeywordAllOf"),fe=v("JSONSchema202012KeywordAnyOf"),ye=v("JSONSchema202012KeywordOneOf"),be=v("JSONSchema202012KeywordNot"),_e=v("JSONSchema202012KeywordIf"),we=v("JSONSchema202012KeywordThen"),Se=v("JSONSchema202012KeywordElse"),xe=v("JSONSchema202012KeywordDependentSchemas"),Pe=v("JSONSchema202012KeywordPrefixItems"),Ie=v("JSONSchema202012KeywordItems"),Te=v("JSONSchema202012KeywordContains"),Re=v("JSONSchema202012KeywordProperties"),qe=v("JSONSchema202012KeywordPatternProperties"),ze=v("JSONSchema202012KeywordAdditionalProperties"),Ve=v("JSONSchema202012KeywordPropertyNames"),We=v("JSONSchema202012KeywordUnevaluatedItems"),Xe=v("JSONSchema202012KeywordUnevaluatedProperties"),Ye=v("JSONSchema202012KeywordType"),Qe=v("JSONSchema202012KeywordEnum"),et=v("JSONSchema202012KeywordConst"),tt=v("JSONSchema202012KeywordConstraint"),rt=v("JSONSchema202012KeywordDependentRequired"),nt=v("JSONSchema202012KeywordContentSchema"),ot=v("JSONSchema202012KeywordTitle"),it=v("JSONSchema202012KeywordDescription"),at=v("JSONSchema202012KeywordDefault"),st=v("JSONSchema202012KeywordDeprecated"),ct=v("JSONSchema202012KeywordReadOnly"),lt=v("JSONSchema202012KeywordWriteOnly"),ut=v("JSONSchema202012Accordion"),pt=v("JSONSchema202012ExpandDeepButton"),ht=v("JSONSchema202012ChevronRightIcon"),dt=v("withJSONSchema202012Context")($,{config:{default$schema:"https://spec.openapis.org/oas/3.1/dialect/base",defaultExpandedLevels:M.defaultModelExpandDepth,includeReadOnly:Boolean(u.includeReadOnly),includeWriteOnly:Boolean(u.includeWriteOnly)},components:{JSONSchema:W,Keyword$schema:X,Keyword$vocabulary:Y,Keyword$id:Z,Keyword$anchor:ee,Keyword$dynamicAnchor:ie,Keyword$ref:ae,Keyword$dynamicRef:ce,Keyword$defs:le,Keyword$comment:pe,KeywordAllOf:de,KeywordAnyOf:fe,KeywordOneOf:ye,KeywordNot:be,KeywordIf:_e,KeywordThen:we,KeywordElse:Se,KeywordDependentSchemas:xe,KeywordPrefixItems:Pe,KeywordItems:Ie,KeywordContains:Te,KeywordProperties:Re,KeywordPatternProperties:qe,KeywordAdditionalProperties:ze,KeywordPropertyNames:Ve,KeywordUnevaluatedItems:We,KeywordUnevaluatedProperties:Xe,KeywordType:Ye,KeywordEnum:Qe,KeywordConst:et,KeywordConstraint:tt,KeywordDependentRequired:rt,KeywordContentSchema:nt,KeywordTitle:ot,KeywordDescription:it,KeywordDefault:at,KeywordDeprecated:st,KeywordReadOnly:ct,KeywordWriteOnly:lt,Accordion:ut,ExpandDeepButton:pt,ChevronRightIcon:ht},fn:{upperFirst:_.upperFirst,isExpandable:makeIsExpandable(_.jsonSchema202012.isExpandable,s),getProperties}});return He.createElement(dt,u)})),bN=vN,_N=createOnlyOAS31ComponentWrapper((i=>{let{getSystem:s}=i;const{getComponent:u,fn:m,getConfigs:v}=s(),_=v();if(_N.ModelsWithJSONSchemaContext)return He.createElement(_N.ModelsWithJSONSchemaContext,null);const j=u("OAS31Models",!0),M=u("JSONSchema202012"),$=u("JSONSchema202012Keyword$schema"),W=u("JSONSchema202012Keyword$vocabulary"),X=u("JSONSchema202012Keyword$id"),Y=u("JSONSchema202012Keyword$anchor"),Z=u("JSONSchema202012Keyword$dynamicAnchor"),ee=u("JSONSchema202012Keyword$ref"),ie=u("JSONSchema202012Keyword$dynamicRef"),ae=u("JSONSchema202012Keyword$defs"),ce=u("JSONSchema202012Keyword$comment"),le=u("JSONSchema202012KeywordAllOf"),pe=u("JSONSchema202012KeywordAnyOf"),de=u("JSONSchema202012KeywordOneOf"),fe=u("JSONSchema202012KeywordNot"),ye=u("JSONSchema202012KeywordIf"),be=u("JSONSchema202012KeywordThen"),_e=u("JSONSchema202012KeywordElse"),we=u("JSONSchema202012KeywordDependentSchemas"),Se=u("JSONSchema202012KeywordPrefixItems"),xe=u("JSONSchema202012KeywordItems"),Pe=u("JSONSchema202012KeywordContains"),Ie=u("JSONSchema202012KeywordProperties"),Te=u("JSONSchema202012KeywordPatternProperties"),Re=u("JSONSchema202012KeywordAdditionalProperties"),qe=u("JSONSchema202012KeywordPropertyNames"),ze=u("JSONSchema202012KeywordUnevaluatedItems"),Ve=u("JSONSchema202012KeywordUnevaluatedProperties"),We=u("JSONSchema202012KeywordType"),Xe=u("JSONSchema202012KeywordEnum"),Ye=u("JSONSchema202012KeywordConst"),Qe=u("JSONSchema202012KeywordConstraint"),et=u("JSONSchema202012KeywordDependentRequired"),tt=u("JSONSchema202012KeywordContentSchema"),rt=u("JSONSchema202012KeywordTitle"),nt=u("JSONSchema202012KeywordDescription"),ot=u("JSONSchema202012KeywordDefault"),it=u("JSONSchema202012KeywordDeprecated"),at=u("JSONSchema202012KeywordReadOnly"),st=u("JSONSchema202012KeywordWriteOnly"),ct=u("JSONSchema202012Accordion"),lt=u("JSONSchema202012ExpandDeepButton"),ut=u("JSONSchema202012ChevronRightIcon"),pt=u("withJSONSchema202012Context");return _N.ModelsWithJSONSchemaContext=pt(j,{config:{default$schema:"https://spec.openapis.org/oas/3.1/dialect/base",defaultExpandedLevels:_.defaultModelsExpandDepth-1,includeReadOnly:!0,includeWriteOnly:!0},components:{JSONSchema:M,Keyword$schema:$,Keyword$vocabulary:W,Keyword$id:X,Keyword$anchor:Y,Keyword$dynamicAnchor:Z,Keyword$ref:ee,Keyword$dynamicRef:ie,Keyword$defs:ae,Keyword$comment:ce,KeywordAllOf:le,KeywordAnyOf:pe,KeywordOneOf:de,KeywordNot:fe,KeywordIf:ye,KeywordThen:be,KeywordElse:_e,KeywordDependentSchemas:we,KeywordPrefixItems:Se,KeywordItems:xe,KeywordContains:Pe,KeywordProperties:Ie,KeywordPatternProperties:Te,KeywordAdditionalProperties:Re,KeywordPropertyNames:qe,KeywordUnevaluatedItems:ze,KeywordUnevaluatedProperties:Ve,KeywordType:We,KeywordEnum:Xe,KeywordConst:Ye,KeywordConstraint:Qe,KeywordDependentRequired:et,KeywordContentSchema:tt,KeywordTitle:rt,KeywordDescription:nt,KeywordDefault:ot,KeywordDeprecated:it,KeywordReadOnly:at,KeywordWriteOnly:st,Accordion:ct,ExpandDeepButton:lt,ChevronRightIcon:ut},fn:{upperFirst:m.upperFirst,isExpandable:m.jsonSchema202012.isExpandable,getProperties:m.jsonSchema202012.getProperties}}),He.createElement(_N.ModelsWithJSONSchemaContext,null)}));_N.ModelsWithJSONSchemaContext=null;const wN=_N,wrap_components_version_pragma_filter=(i,s)=>i=>{const u=s.specSelectors.isOAS31(),m=s.getComponent("OAS31VersionPragmaFilter");return He.createElement(m,No()({isOAS31:u},i))},EN=(0,et.Map)(),SN=Xt(((i,s)=>s.specSelectors.specJson()),isOAS31),selectors_webhooks=()=>i=>i.specSelectors.specJson().get("webhooks",EN),xN=Xt(((i,s)=>s.specSelectors.webhooks()),((i,s)=>s.specSelectors.validOperationMethods()),((i,s)=>s.specSelectors.specResolvedSubtree(["webhooks"])),((i,s)=>et.Map.isMap(i)?i.reduce(((i,u,m)=>{if(!et.Map.isMap(u))return i;const v=u.entrySeq().filter((i=>{let[u]=i;return s.includes(u)})).map((i=>{let[s,u]=i;return{operation:(0,et.Map)({operation:u}),method:s,path:m,specPath:(0,et.List)(["webhooks",m,s])}}));return i.concat(v)}),(0,et.List)()).groupBy((i=>i.path)).map((i=>i.toArray())).toObject():{})),selectors_license=()=>i=>i.specSelectors.info().get("license",EN),selectLicenseNameField=()=>i=>i.specSelectors.license().get("name","License"),selectLicenseUrlField=()=>i=>i.specSelectors.license().get("url"),ON=Xt(((i,s)=>s.specSelectors.url()),((i,s)=>s.oas3Selectors.selectedServer()),((i,s)=>s.specSelectors.selectLicenseUrlField()),((i,s,u)=>{if(u)return safeBuildUrl(u,i,{selectedServer:s})})),selectLicenseIdentifierField=()=>i=>i.specSelectors.license().get("identifier"),selectors_contact=()=>i=>i.specSelectors.info().get("contact",EN),selectContactNameField=()=>i=>i.specSelectors.contact().get("name","the developer"),selectContactEmailField=()=>i=>i.specSelectors.contact().get("email"),selectContactUrlField=()=>i=>i.specSelectors.contact().get("url"),kN=Xt(((i,s)=>s.specSelectors.url()),((i,s)=>s.oas3Selectors.selectedServer()),((i,s)=>s.specSelectors.selectContactUrlField()),((i,s,u)=>{if(u)return safeBuildUrl(u,i,{selectedServer:s})})),selectInfoTitleField=()=>i=>i.specSelectors.info().get("title"),selectInfoSummaryField=()=>i=>i.specSelectors.info().get("summary"),selectInfoDescriptionField=()=>i=>i.specSelectors.info().get("description"),selectInfoTermsOfServiceField=()=>i=>i.specSelectors.info().get("termsOfService"),AN=Xt(((i,s)=>s.specSelectors.url()),((i,s)=>s.oas3Selectors.selectedServer()),((i,s)=>s.specSelectors.selectInfoTermsOfServiceField()),((i,s,u)=>{if(u)return safeBuildUrl(u,i,{selectedServer:s})})),selectExternalDocsDescriptionField=()=>i=>i.specSelectors.externalDocs().get("description"),selectExternalDocsUrlField=()=>i=>i.specSelectors.externalDocs().get("url"),CN=Xt(((i,s)=>s.specSelectors.url()),((i,s)=>s.oas3Selectors.selectedServer()),((i,s)=>s.specSelectors.selectExternalDocsUrlField()),((i,s,u)=>{if(u)return safeBuildUrl(u,i,{selectedServer:s})})),selectJsonSchemaDialectField=()=>i=>i.specSelectors.specJson().get("jsonSchemaDialect"),selectJsonSchemaDialectDefault=()=>"https://spec.openapis.org/oas/3.1/dialect/base",jN=Xt(((i,s)=>s.specSelectors.definitions()),((i,s)=>s.specSelectors.specResolvedSubtree(["components","schemas"])),((i,s)=>et.Map.isMap(i)?et.Map.isMap(s)?Object.entries(i.toJS()).reduce(((i,u)=>{let[m,v]=u;const _=s.get(m);return i[m]=(null==_?void 0:_.toJS())||v,i}),{}):i.toJS():{})),wrap_selectors_isOAS3=(i,s)=>function(u){const m=s.specSelectors.isOAS31();for(var v=arguments.length,_=new Array(v>1?v-1:0),j=1;j(i,s)=>s.oas31Selectors.selectLicenseUrl(),(i,s)=>function(u){for(var m=arguments.length,v=new Array(m>1?m-1:0),_=1;_s.specSelectors.url()),((i,s)=>s.oas3Selectors.selectedServer()),((i,s)=>s.specSelectors.selectLicenseUrlField()),((i,s)=>s.specSelectors.selectLicenseIdentifierField()),((i,s,u,m)=>u?safeBuildUrl(u,i,{selectedServer:s}):m?`https://spdx.org/licenses/${m}.html`:void 0)),keywords_Example=i=>{let{schema:s,getSystem:u}=i;const{fn:m}=u(),{hasKeyword:v,stringify:_}=m.jsonSchema202012.useFn();return v(s,"example")?He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--example"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"Example"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--const"},_(s.example))):null},keywords_Xml=i=>{let{schema:s,getSystem:u}=i;const m=(null==s?void 0:s.xml)||{},{fn:v,getComponent:_}=u(),{useIsExpandedDeeply:j,useComponent:M}=v.jsonSchema202012,$=j(),W=!!(m.name||m.namespace||m.prefix),[X,Y]=(0,He.useState)($),[Z,ee]=(0,He.useState)(!1),ie=M("Accordion"),ae=M("ExpandDeepButton"),ce=_("JSONSchema202012DeepExpansionContext")(),le=(0,He.useCallback)((()=>{Y((i=>!i))}),[]),pe=(0,He.useCallback)(((i,s)=>{Y(s),ee(s)}),[]);return 0===Object.keys(m).length?null:He.createElement(ce.Provider,{value:Z},He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--xml"},W?He.createElement(He.Fragment,null,He.createElement(ie,{expanded:X,onChange:le},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"XML")),He.createElement(ae,{expanded:X,onClick:pe})):He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"XML"),!0===m.attribute&&He.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},"attribute"),!0===m.wrapped&&He.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},"wrapped"),He.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),He.createElement("ul",{className:CC()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!X})},X&&He.createElement(He.Fragment,null,m.name&&He.createElement("li",{className:"json-schema-2020-12-property"},He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"name"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},m.name))),m.namespace&&He.createElement("li",{className:"json-schema-2020-12-property"},He.createElement("div",{className:"json-schema-2020-12-keyword"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"namespace"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},m.namespace))),m.prefix&&He.createElement("li",{className:"json-schema-2020-12-property"},He.createElement("div",{className:"json-schema-2020-12-keyword"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"prefix"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},m.prefix)))))))},DiscriminatorMapping_DiscriminatorMapping=i=>{let{discriminator:s}=i;const u=(null==s?void 0:s.mapping)||{};return 0===Object.keys(u).length?null:Object.entries(u).map((i=>{let[s,u]=i;return He.createElement("div",{key:`${s}-${u}`,className:"json-schema-2020-12-keyword"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},s),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},u))}))};DiscriminatorMapping_DiscriminatorMapping.defaultProps={mapping:void 0};const TN=DiscriminatorMapping_DiscriminatorMapping,keywords_Discriminator_Discriminator=i=>{let{schema:s,getSystem:u}=i;const m=(null==s?void 0:s.discriminator)||{},{fn:v,getComponent:_}=u(),{useIsExpandedDeeply:j,useComponent:M}=v.jsonSchema202012,$=j(),W=!!m.mapping,[X,Y]=(0,He.useState)($),[Z,ee]=(0,He.useState)(!1),ie=M("Accordion"),ae=M("ExpandDeepButton"),ce=_("JSONSchema202012DeepExpansionContext")(),le=(0,He.useCallback)((()=>{Y((i=>!i))}),[]),pe=(0,He.useCallback)(((i,s)=>{Y(s),ee(s)}),[]);return 0===Object.keys(m).length?null:He.createElement(ce.Provider,{value:Z},He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--discriminator"},W?He.createElement(He.Fragment,null,He.createElement(ie,{expanded:X,onChange:le},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"Discriminator")),He.createElement(ae,{expanded:X,onClick:pe})):He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"Discriminator"),m.propertyName&&He.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},m.propertyName),He.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),He.createElement("ul",{className:CC()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!X})},X&&He.createElement("li",{className:"json-schema-2020-12-property"},He.createElement(TN,{discriminator:m})))))},keywords_ExternalDocs=i=>{let{schema:s,getSystem:u}=i;const m=(null==s?void 0:s.externalDocs)||{},{fn:v,getComponent:_}=u(),{useIsExpandedDeeply:j,useComponent:M}=v.jsonSchema202012,$=j(),W=!(!m.description&&!m.url),[X,Y]=(0,He.useState)($),[Z,ee]=(0,He.useState)(!1),ie=M("Accordion"),ae=M("ExpandDeepButton"),ce=_("JSONSchema202012KeywordDescription"),le=_("Link"),pe=_("JSONSchema202012DeepExpansionContext")(),de=(0,He.useCallback)((()=>{Y((i=>!i))}),[]),fe=(0,He.useCallback)(((i,s)=>{Y(s),ee(s)}),[]);return 0===Object.keys(m).length?null:He.createElement(pe.Provider,{value:Z},He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--externalDocs"},W?He.createElement(He.Fragment,null,He.createElement(ie,{expanded:X,onChange:de},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"External documentation")),He.createElement(ae,{expanded:X,onClick:fe})):He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"External documentation"),He.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),He.createElement("ul",{className:CC()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!X})},X&&He.createElement(He.Fragment,null,m.description&&He.createElement("li",{className:"json-schema-2020-12-property"},He.createElement(ce,{schema:m,getSystem:u})),m.url&&He.createElement("li",{className:"json-schema-2020-12-property"},He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"url"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},He.createElement(le,{target:"_blank",href:sanitizeUrl(m.url)},m.url))))))))},keywords_Description=i=>{let{schema:s,getSystem:u}=i;if(null==s||!s.description)return null;const{getComponent:m}=u(),v=m("Markdown");return He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--description"},He.createElement("div",{className:"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary"},He.createElement(v,{source:s.description})))},MN=createOnlyOAS31ComponentWrapper(keywords_Description),RN=createOnlyOAS31ComponentWrapper((i=>{let{schema:s,getSystem:u,originalComponent:m}=i;const{getComponent:v}=u(),_=v("JSONSchema202012KeywordDiscriminator"),j=v("JSONSchema202012KeywordXml"),M=v("JSONSchema202012KeywordExample"),$=v("JSONSchema202012KeywordExternalDocs");return He.createElement(He.Fragment,null,He.createElement(m,{schema:s}),He.createElement(_,{schema:s,getSystem:u}),He.createElement(j,{schema:s,getSystem:u}),He.createElement($,{schema:s,getSystem:u}),He.createElement(M,{schema:s,getSystem:u}))})),DN=RN,keywords_Properties=i=>{let{schema:s,getSystem:u}=i;const{fn:m}=u(),{useComponent:v}=m.jsonSchema202012,{getDependentRequired:_,getProperties:j}=m.jsonSchema202012.useFn(),M=m.jsonSchema202012.useConfig(),$=Array.isArray(null==s?void 0:s.required)?s.required:[],W=v("JSONSchema"),X=j(s,M);return 0===Object.keys(X).length?null:He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties"},He.createElement("ul",null,Object.entries(X).map((i=>{let[u,m]=i;const v=$.includes(u),j=_(u,s);return He.createElement("li",{key:u,className:CC()("json-schema-2020-12-property",{"json-schema-2020-12-property--required":v})},He.createElement(W,{name:u,schema:m,dependentRequired:j}))}))))},BN=createOnlyOAS31ComponentWrapper(keywords_Properties);const LN=function afterLoad(i){let{fn:s,getSystem:u}=i;if(s.jsonSchema202012){const i=makeIsExpandable(s.jsonSchema202012.isExpandable,u);Object.assign(this.fn.jsonSchema202012,{isExpandable:i,getProperties})}if("function"==typeof s.sampleFromSchema&&s.jsonSchema202012){const i=((i,s)=>{const{fn:u,specSelectors:m}=s;return Object.fromEntries(Object.entries(i).map((i=>{let[s,v]=i;const _=u[s];return[s,function(){return m.isOAS31()?v(...arguments):"function"==typeof _?_(...arguments):void 0}]})))})({sampleFromSchema:s.jsonSchema202012.sampleFromSchema,sampleFromSchemaGeneric:s.jsonSchema202012.sampleFromSchemaGeneric,createXMLExample:s.jsonSchema202012.createXMLExample,memoizedSampleFromSchema:s.jsonSchema202012.memoizedSampleFromSchema,memoizedCreateXMLExample:s.jsonSchema202012.memoizedCreateXMLExample},u());Object.assign(this.fn,i)}},oas31=i=>{let{fn:s}=i;const u=s.createSystemSelector||fn_createSystemSelector,m=s.createOnlyOAS31Selector||fn_createOnlyOAS31Selector;return{afterLoad:LN,fn:{isOAS31,createSystemSelector:fn_createSystemSelector,createOnlyOAS31Selector:fn_createOnlyOAS31Selector},components:{Webhooks:webhooks,JsonSchemaDialect:json_schema_dialect,OAS31Info:oas31_components_info,OAS31License:oas31_components_license,OAS31Contact:oas31_components_contact,OAS31VersionPragmaFilter:version_pragma_filter,OAS31Model:dN,OAS31Models:models,JSONSchema202012KeywordExample:keywords_Example,JSONSchema202012KeywordXml:keywords_Xml,JSONSchema202012KeywordDiscriminator:keywords_Discriminator_Discriminator,JSONSchema202012KeywordExternalDocs:keywords_ExternalDocs},wrapComponents:{InfoContainer:yN,License:fN,Contact:mN,VersionPragmaFilter:wrap_components_version_pragma_filter,Model:bN,Models:wN,JSONSchema202012KeywordDescription:MN,JSONSchema202012KeywordDefault:DN,JSONSchema202012KeywordProperties:BN},statePlugins:{spec:{selectors:{isOAS31:u(SN),license:selectors_license,selectLicenseNameField,selectLicenseUrlField,selectLicenseIdentifierField:m(selectLicenseIdentifierField),selectLicenseUrl:u(ON),contact:selectors_contact,selectContactNameField,selectContactEmailField,selectContactUrlField,selectContactUrl:u(kN),selectInfoTitleField,selectInfoSummaryField:m(selectInfoSummaryField),selectInfoDescriptionField,selectInfoTermsOfServiceField,selectInfoTermsOfServiceUrl:u(AN),selectExternalDocsDescriptionField,selectExternalDocsUrlField,selectExternalDocsUrl:u(CN),webhooks:m(selectors_webhooks),selectWebhooksOperations:m(u(xN)),selectJsonSchemaDialectField,selectJsonSchemaDialectDefault,selectSchemas:u(jN)},wrapSelectors:{isOAS3:wrap_selectors_isOAS3,selectLicenseUrl:PN}},oas31:{selectors:{selectLicenseUrl:m(u(NN))}}}}},FN=JC().object,qN=JC().bool,$N=(JC().oneOfType([FN,qN]),(0,He.createContext)(null));$N.displayName="JSONSchemaContext";const UN=(0,He.createContext)(0);UN.displayName="JSONSchemaLevelContext";const zN=(0,He.createContext)(!1);zN.displayName="JSONSchemaDeepExpansionContext";const VN=(0,He.createContext)(new Set),useConfig=()=>{const{config:i}=(0,He.useContext)($N);return i},useComponent=i=>{const{components:s}=(0,He.useContext)($N);return s[i]||null},useFn=function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;const{fn:s}=(0,He.useContext)($N);return void 0!==i?s[i]:s},useLevel=()=>{const i=(0,He.useContext)(UN);return[i,i+1]},useIsExpandedDeeply=()=>(0,He.useContext)(zN),useRenderedSchemas=function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;if(void 0===i)return(0,He.useContext)(VN);const s=(0,He.useContext)(VN);return new Set([...s,i])},WN=(0,He.forwardRef)(((i,s)=>{let{schema:u,name:m,dependentRequired:v,onExpand:_}=i;const j=useFn(),M=(()=>{const[i]=useLevel(),{defaultExpandedLevels:s}=useConfig();return s-i>0})(),$=useIsExpandedDeeply(),[W,X]=(0,He.useState)(M||$),[Y,Z]=(0,He.useState)($),[ee,ie]=useLevel(),ae=(()=>{const[i]=useLevel();return i>0})(),ce=j.isExpandable(u)||v.length>0,le=(i=>useRenderedSchemas().has(i))(u),pe=useRenderedSchemas(u),de=j.stringifyConstraints(u),fe=useComponent("Accordion"),ye=useComponent("Keyword$schema"),be=useComponent("Keyword$vocabulary"),_e=useComponent("Keyword$id"),we=useComponent("Keyword$anchor"),Se=useComponent("Keyword$dynamicAnchor"),xe=useComponent("Keyword$ref"),Pe=useComponent("Keyword$dynamicRef"),Ie=useComponent("Keyword$defs"),Te=useComponent("Keyword$comment"),Re=useComponent("KeywordAllOf"),qe=useComponent("KeywordAnyOf"),ze=useComponent("KeywordOneOf"),Ve=useComponent("KeywordNot"),We=useComponent("KeywordIf"),Xe=useComponent("KeywordThen"),Ye=useComponent("KeywordElse"),Qe=useComponent("KeywordDependentSchemas"),et=useComponent("KeywordPrefixItems"),tt=useComponent("KeywordItems"),rt=useComponent("KeywordContains"),nt=useComponent("KeywordProperties"),ot=useComponent("KeywordPatternProperties"),it=useComponent("KeywordAdditionalProperties"),at=useComponent("KeywordPropertyNames"),st=useComponent("KeywordUnevaluatedItems"),ct=useComponent("KeywordUnevaluatedProperties"),lt=useComponent("KeywordType"),ut=useComponent("KeywordEnum"),pt=useComponent("KeywordConst"),ht=useComponent("KeywordConstraint"),dt=useComponent("KeywordDependentRequired"),mt=useComponent("KeywordContentSchema"),yt=useComponent("KeywordTitle"),gt=useComponent("KeywordDescription"),vt=useComponent("KeywordDefault"),bt=useComponent("KeywordDeprecated"),_t=useComponent("KeywordReadOnly"),wt=useComponent("KeywordWriteOnly"),Et=useComponent("ExpandDeepButton");(0,He.useEffect)((()=>{Z($)}),[$]),(0,He.useEffect)((()=>{Z(Y)}),[Y]);const St=(0,He.useCallback)(((i,s)=>{X(s),!s&&Z(!1),_(i,s,!1)}),[_]),xt=(0,He.useCallback)(((i,s)=>{X(s),Z(s),_(i,s,!0)}),[_]);return He.createElement(UN.Provider,{value:ie},He.createElement(zN.Provider,{value:Y},He.createElement(VN.Provider,{value:pe},He.createElement("article",{ref:s,"data-json-schema-level":ee,className:CC()("json-schema-2020-12",{"json-schema-2020-12--embedded":ae,"json-schema-2020-12--circular":le})},He.createElement("div",{className:"json-schema-2020-12-head"},ce&&!le?He.createElement(He.Fragment,null,He.createElement(fe,{expanded:W,onChange:St},He.createElement(yt,{title:m,schema:u})),He.createElement(Et,{expanded:W,onClick:xt})):He.createElement(yt,{title:m,schema:u}),He.createElement(bt,{schema:u}),He.createElement(_t,{schema:u}),He.createElement(wt,{schema:u}),He.createElement(lt,{schema:u,isCircular:le}),de.length>0&&de.map((i=>He.createElement(ht,{key:`${i.scope}-${i.value}`,constraint:i})))),He.createElement("div",{className:CC()("json-schema-2020-12-body",{"json-schema-2020-12-body--collapsed":!W})},W&&He.createElement(He.Fragment,null,He.createElement(gt,{schema:u}),!le&&ce&&He.createElement(He.Fragment,null,He.createElement(nt,{schema:u}),He.createElement(ot,{schema:u}),He.createElement(it,{schema:u}),He.createElement(ct,{schema:u}),He.createElement(at,{schema:u}),He.createElement(Re,{schema:u}),He.createElement(qe,{schema:u}),He.createElement(ze,{schema:u}),He.createElement(Ve,{schema:u}),He.createElement(We,{schema:u}),He.createElement(Xe,{schema:u}),He.createElement(Ye,{schema:u}),He.createElement(Qe,{schema:u}),He.createElement(et,{schema:u}),He.createElement(tt,{schema:u}),He.createElement(st,{schema:u}),He.createElement(rt,{schema:u}),He.createElement(mt,{schema:u})),He.createElement(ut,{schema:u}),He.createElement(pt,{schema:u}),He.createElement(dt,{schema:u,dependentRequired:v}),He.createElement(vt,{schema:u}),He.createElement(ye,{schema:u}),He.createElement(be,{schema:u}),He.createElement(_e,{schema:u}),He.createElement(we,{schema:u}),He.createElement(Se,{schema:u}),He.createElement(xe,{schema:u}),!le&&ce&&He.createElement(Ie,{schema:u}),He.createElement(Pe,{schema:u}),He.createElement(Te,{schema:u})))))))}));WN.defaultProps={name:"",dependentRequired:[],onExpand:()=>{}};const KN=WN,keywords_$schema=i=>{let{schema:s}=i;return null!=s&&s.$schema?He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$schema"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$schema"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},s.$schema)):null},$vocabulary_$vocabulary=i=>{let{schema:s}=i;const u=useIsExpandedDeeply(),[m,v]=(0,He.useState)(u),_=useComponent("Accordion"),j=(0,He.useCallback)((()=>{v((i=>!i))}),[]);return null!=s&&s.$vocabulary?"object"!=typeof s.$vocabulary?null:He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$vocabulary"},He.createElement(_,{expanded:m,onChange:j},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$vocabulary")),He.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),He.createElement("ul",null,m&&Object.entries(s.$vocabulary).map((i=>{let[s,u]=i;return He.createElement("li",{key:s,className:CC()("json-schema-2020-12-$vocabulary-uri",{"json-schema-2020-12-$vocabulary-uri--disabled":!u})},He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},s))})))):null},keywords_$id=i=>{let{schema:s}=i;return null!=s&&s.$id?He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$id"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$id"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},s.$id)):null},keywords_$anchor=i=>{let{schema:s}=i;return null!=s&&s.$anchor?He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$anchor"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$anchor"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},s.$anchor)):null},keywords_$dynamicAnchor=i=>{let{schema:s}=i;return null!=s&&s.$dynamicAnchor?He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicAnchor"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$dynamicAnchor"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},s.$dynamicAnchor)):null},keywords_$ref=i=>{let{schema:s}=i;return null!=s&&s.$ref?He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$ref"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$ref"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},s.$ref)):null},keywords_$dynamicRef=i=>{let{schema:s}=i;return null!=s&&s.$dynamicRef?He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicRef"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$dynamicRef"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},s.$dynamicRef)):null},keywords_$defs=i=>{let{schema:s}=i;const u=(null==s?void 0:s.$defs)||{},m=useIsExpandedDeeply(),[v,_]=(0,He.useState)(m),[j,M]=(0,He.useState)(!1),$=useComponent("Accordion"),W=useComponent("ExpandDeepButton"),X=useComponent("JSONSchema"),Y=(0,He.useCallback)((()=>{_((i=>!i))}),[]),Z=(0,He.useCallback)(((i,s)=>{_(s),M(s)}),[]);return 0===Object.keys(u).length?null:He.createElement(zN.Provider,{value:j},He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$defs"},He.createElement($,{expanded:v,onChange:Y},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$defs")),He.createElement(W,{expanded:v,onClick:Z}),He.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),He.createElement("ul",{className:CC()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!v})},v&&He.createElement(He.Fragment,null,Object.entries(u).map((i=>{let[s,u]=i;return He.createElement("li",{key:s,className:"json-schema-2020-12-property"},He.createElement(X,{name:s,schema:u}))}))))))},keywords_$comment=i=>{let{schema:s}=i;return null!=s&&s.$comment?He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$comment"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$comment"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},s.$comment)):null},keywords_AllOf=i=>{let{schema:s}=i;const u=(null==s?void 0:s.allOf)||[],m=useFn(),v=useIsExpandedDeeply(),[_,j]=(0,He.useState)(v),[M,$]=(0,He.useState)(!1),W=useComponent("Accordion"),X=useComponent("ExpandDeepButton"),Y=useComponent("JSONSchema"),Z=useComponent("KeywordType"),ee=(0,He.useCallback)((()=>{j((i=>!i))}),[]),ie=(0,He.useCallback)(((i,s)=>{j(s),$(s)}),[]);return Array.isArray(u)&&0!==u.length?He.createElement(zN.Provider,{value:M},He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--allOf"},He.createElement(W,{expanded:_,onChange:ee},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"All of")),He.createElement(X,{expanded:_,onClick:ie}),He.createElement(Z,{schema:{allOf:u}}),He.createElement("ul",{className:CC()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!_})},_&&He.createElement(He.Fragment,null,u.map(((i,s)=>He.createElement("li",{key:`#${s}`,className:"json-schema-2020-12-property"},He.createElement(Y,{name:`#${s} ${m.getTitle(i)}`,schema:i})))))))):null},keywords_AnyOf=i=>{let{schema:s}=i;const u=(null==s?void 0:s.anyOf)||[],m=useFn(),v=useIsExpandedDeeply(),[_,j]=(0,He.useState)(v),[M,$]=(0,He.useState)(!1),W=useComponent("Accordion"),X=useComponent("ExpandDeepButton"),Y=useComponent("JSONSchema"),Z=useComponent("KeywordType"),ee=(0,He.useCallback)((()=>{j((i=>!i))}),[]),ie=(0,He.useCallback)(((i,s)=>{j(s),$(s)}),[]);return Array.isArray(u)&&0!==u.length?He.createElement(zN.Provider,{value:M},He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--anyOf"},He.createElement(W,{expanded:_,onChange:ee},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Any of")),He.createElement(X,{expanded:_,onClick:ie}),He.createElement(Z,{schema:{anyOf:u}}),He.createElement("ul",{className:CC()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!_})},_&&He.createElement(He.Fragment,null,u.map(((i,s)=>He.createElement("li",{key:`#${s}`,className:"json-schema-2020-12-property"},He.createElement(Y,{name:`#${s} ${m.getTitle(i)}`,schema:i})))))))):null},keywords_OneOf=i=>{let{schema:s}=i;const u=(null==s?void 0:s.oneOf)||[],m=useFn(),v=useIsExpandedDeeply(),[_,j]=(0,He.useState)(v),[M,$]=(0,He.useState)(!1),W=useComponent("Accordion"),X=useComponent("ExpandDeepButton"),Y=useComponent("JSONSchema"),Z=useComponent("KeywordType"),ee=(0,He.useCallback)((()=>{j((i=>!i))}),[]),ie=(0,He.useCallback)(((i,s)=>{j(s),$(s)}),[]);return Array.isArray(u)&&0!==u.length?He.createElement(zN.Provider,{value:M},He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--oneOf"},He.createElement(W,{expanded:_,onChange:ee},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"One of")),He.createElement(X,{expanded:_,onClick:ie}),He.createElement(Z,{schema:{oneOf:u}}),He.createElement("ul",{className:CC()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!_})},_&&He.createElement(He.Fragment,null,u.map(((i,s)=>He.createElement("li",{key:`#${s}`,className:"json-schema-2020-12-property"},He.createElement(Y,{name:`#${s} ${m.getTitle(i)}`,schema:i})))))))):null},keywords_Not=i=>{let{schema:s}=i;const u=useFn(),m=useComponent("JSONSchema");if(!u.hasKeyword(s,"not"))return null;const v=He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Not");return He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--not"},He.createElement(m,{name:v,schema:s.not}))},keywords_If=i=>{let{schema:s}=i;const u=useFn(),m=useComponent("JSONSchema");if(!u.hasKeyword(s,"if"))return null;const v=He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"If");return He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--if"},He.createElement(m,{name:v,schema:s.if}))},keywords_Then=i=>{let{schema:s}=i;const u=useFn(),m=useComponent("JSONSchema");if(!u.hasKeyword(s,"then"))return null;const v=He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Then");return He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--then"},He.createElement(m,{name:v,schema:s.then}))},keywords_Else=i=>{let{schema:s}=i;const u=useFn(),m=useComponent("JSONSchema");if(!u.hasKeyword(s,"else"))return null;const v=He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Else");return He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--if"},He.createElement(m,{name:v,schema:s.else}))},keywords_DependentSchemas=i=>{let{schema:s}=i;const u=(null==s?void 0:s.dependentSchemas)||[],m=useIsExpandedDeeply(),[v,_]=(0,He.useState)(m),[j,M]=(0,He.useState)(!1),$=useComponent("Accordion"),W=useComponent("ExpandDeepButton"),X=useComponent("JSONSchema"),Y=(0,He.useCallback)((()=>{_((i=>!i))}),[]),Z=(0,He.useCallback)(((i,s)=>{_(s),M(s)}),[]);return"object"!=typeof u||0===Object.keys(u).length?null:He.createElement(zN.Provider,{value:j},He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentSchemas"},He.createElement($,{expanded:v,onChange:Y},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Dependent schemas")),He.createElement(W,{expanded:v,onClick:Z}),He.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),He.createElement("ul",{className:CC()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!v})},v&&He.createElement(He.Fragment,null,Object.entries(u).map((i=>{let[s,u]=i;return He.createElement("li",{key:s,className:"json-schema-2020-12-property"},He.createElement(X,{name:s,schema:u}))}))))))},keywords_PrefixItems=i=>{let{schema:s}=i;const u=(null==s?void 0:s.prefixItems)||[],m=useFn(),v=useIsExpandedDeeply(),[_,j]=(0,He.useState)(v),[M,$]=(0,He.useState)(!1),W=useComponent("Accordion"),X=useComponent("ExpandDeepButton"),Y=useComponent("JSONSchema"),Z=useComponent("KeywordType"),ee=(0,He.useCallback)((()=>{j((i=>!i))}),[]),ie=(0,He.useCallback)(((i,s)=>{j(s),$(s)}),[]);return Array.isArray(u)&&0!==u.length?He.createElement(zN.Provider,{value:M},He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--prefixItems"},He.createElement(W,{expanded:_,onChange:ee},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Prefix items")),He.createElement(X,{expanded:_,onClick:ie}),He.createElement(Z,{schema:{prefixItems:u}}),He.createElement("ul",{className:CC()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!_})},_&&He.createElement(He.Fragment,null,u.map(((i,s)=>He.createElement("li",{key:`#${s}`,className:"json-schema-2020-12-property"},He.createElement(Y,{name:`#${s} ${m.getTitle(i)}`,schema:i})))))))):null},keywords_Items=i=>{let{schema:s}=i;const u=useFn(),m=useComponent("JSONSchema");if(!u.hasKeyword(s,"items"))return null;const v=He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Items");return He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--items"},He.createElement(m,{name:v,schema:s.items}))},keywords_Contains=i=>{let{schema:s}=i;const u=useFn(),m=useComponent("JSONSchema");if(!u.hasKeyword(s,"contains"))return null;const v=He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Contains");return He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--contains"},He.createElement(m,{name:v,schema:s.contains}))},keywords_Properties_Properties=i=>{let{schema:s}=i;const u=useFn(),m=(null==s?void 0:s.properties)||{},v=Array.isArray(null==s?void 0:s.required)?s.required:[],_=useComponent("JSONSchema");return 0===Object.keys(m).length?null:He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties"},He.createElement("ul",null,Object.entries(m).map((i=>{let[m,j]=i;const M=v.includes(m),$=u.getDependentRequired(m,s);return He.createElement("li",{key:m,className:CC()("json-schema-2020-12-property",{"json-schema-2020-12-property--required":M})},He.createElement(_,{name:m,schema:j,dependentRequired:$}))}))))},keywords_PatternProperties_PatternProperties=i=>{let{schema:s}=i;const u=(null==s?void 0:s.patternProperties)||{},m=useComponent("JSONSchema");return 0===Object.keys(u).length?null:He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--patternProperties"},He.createElement("ul",null,Object.entries(u).map((i=>{let[s,u]=i;return He.createElement("li",{key:s,className:"json-schema-2020-12-property"},He.createElement(m,{name:s,schema:u}))}))))},keywords_AdditionalProperties=i=>{let{schema:s}=i;const u=useFn(),{additionalProperties:m}=s,v=useComponent("JSONSchema");if(!u.hasKeyword(s,"additionalProperties"))return null;const _=He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Additional properties");return He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--additionalProperties"},!0===m?He.createElement(He.Fragment,null,_,He.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"allowed")):!1===m?He.createElement(He.Fragment,null,_,He.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"forbidden")):He.createElement(v,{name:_,schema:m}))},keywords_PropertyNames=i=>{let{schema:s}=i;const u=useFn(),{propertyNames:m}=s,v=useComponent("JSONSchema"),_=He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Property names");return u.hasKeyword(s,"propertyNames")?He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--propertyNames"},He.createElement(v,{name:_,schema:m})):null},keywords_UnevaluatedItems=i=>{let{schema:s}=i;const u=useFn(),{unevaluatedItems:m}=s,v=useComponent("JSONSchema");if(!u.hasKeyword(s,"unevaluatedItems"))return null;const _=He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Unevaluated items");return He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedItems"},He.createElement(v,{name:_,schema:m}))},keywords_UnevaluatedProperties=i=>{let{schema:s}=i;const u=useFn(),{unevaluatedProperties:m}=s,v=useComponent("JSONSchema");if(!u.hasKeyword(s,"unevaluatedProperties"))return null;const _=He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Unevaluated properties");return He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedProperties"},He.createElement(v,{name:_,schema:m}))},Type_Type=i=>{let{schema:s,isCircular:u}=i;const m=useFn().getType(s),v=u?" [circular]":"";return He.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},`${m}${v}`)};Type_Type.defaultProps={isCircular:!1};const HN=Type_Type,Enum_Enum=i=>{let{schema:s}=i;const u=useFn();return Array.isArray(null==s?void 0:s.enum)?He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--enum"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Allowed values"),He.createElement("ul",null,s.enum.map((i=>{const s=u.stringify(i);return He.createElement("li",{key:s},He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--const"},s))})))):null},keywords_Const=i=>{let{schema:s}=i;const u=useFn();return u.hasKeyword(s,"const")?He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--const"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Const"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--const"},u.stringify(s.const))):null},Constraint=i=>{let{constraint:s}=i;return He.createElement("span",{className:`json-schema-2020-12__constraint json-schema-2020-12__constraint--${s.scope}`},s.value)},JN=He.memo(Constraint),DependentRequired_DependentRequired=i=>{let{dependentRequired:s}=i;return 0===s.length?null:He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentRequired"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Required when defined"),He.createElement("ul",null,s.map((i=>He.createElement("li",{key:i},He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--warning"},i))))))},keywords_ContentSchema=i=>{let{schema:s}=i;const u=useFn(),m=useComponent("JSONSchema");if(!u.hasKeyword(s,"contentSchema"))return null;const v=He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Content schema");return He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--contentSchema"},He.createElement(m,{name:v,schema:s.contentSchema}))},Title=i=>{let{title:s,schema:u}=i;const m=useFn();return s||m.getTitle(u)?He.createElement("div",{className:"json-schema-2020-12__title"},s||m.getTitle(u)):null};Title.defaultProps={title:""};const GN=Title,keywords_Description_Description=i=>{let{schema:s}=i;return null!=s&&s.description?He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--description"},He.createElement("div",{className:"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary"},s.description)):null},keywords_Default=i=>{let{schema:s}=i;const u=useFn();return u.hasKeyword(s,"default")?He.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--default"},He.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Default"),He.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--const"},u.stringify(s.default))):null},keywords_Deprecated=i=>{let{schema:s}=i;return!0!==(null==s?void 0:s.deprecated)?null:He.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--warning"},"deprecated")},keywords_ReadOnly=i=>{let{schema:s}=i;return!0!==(null==s?void 0:s.readOnly)?null:He.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},"read-only")},keywords_WriteOnly=i=>{let{schema:s}=i;return!0!==(null==s?void 0:s.writeOnly)?null:He.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},"write-only")},Accordion=i=>{let{expanded:s,children:u,onChange:m}=i;const v=useComponent("ChevronRightIcon"),_=(0,He.useCallback)((i=>{m(i,!s)}),[s,m]);return He.createElement("button",{type:"button",className:"json-schema-2020-12-accordion",onClick:_},He.createElement("div",{className:"json-schema-2020-12-accordion__children"},u),He.createElement("span",{className:CC()("json-schema-2020-12-accordion__icon",{"json-schema-2020-12-accordion__icon--expanded":s,"json-schema-2020-12-accordion__icon--collapsed":!s})},He.createElement(v,null)))};Accordion.defaultProps={expanded:!1};const XN=Accordion,ExpandDeepButton_ExpandDeepButton=i=>{let{expanded:s,onClick:u}=i;const m=(0,He.useCallback)((i=>{u(i,!s)}),[s,u]);return He.createElement("button",{type:"button",className:"json-schema-2020-12-expand-deep-button",onClick:m},s?"Collapse all":"Expand all")},icons_ChevronRight=()=>He.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},He.createElement("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})),fn_upperFirst=i=>"string"==typeof i?`${i.charAt(0).toUpperCase()}${i.slice(1)}`:i,getTitle=i=>{const s=useFn();return null!=i&&i.title?s.upperFirst(i.title):null!=i&&i.$anchor?s.upperFirst(i.$anchor):null!=i&&i.$id?i.$id:""},getType=function(i){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakSet;const u=useFn();if(null==i)return"any";if(u.isBooleanJSONSchema(i))return i?"any":"never";if("object"!=typeof i)return"any";if(s.has(i))return"any";s.add(i);const{type:m,prefixItems:v,items:_}=i,getArrayType=()=>{if(Array.isArray(v)){const i=v.map((i=>getType(i,s))),u=_?getType(_,s):"any";return`array<[${i.join(", ")}], ${u}>`}if(_){return`array<${getType(_,s)}>`}return"array"};if(i.not&&"any"===getType(i.not))return"never";const handleCombiningKeywords=(u,m)=>{if(Array.isArray(i[u])){return`(${i[u].map((i=>getType(i,s))).join(m)})`}return null},j=[Array.isArray(m)?m.map((i=>"array"===i?getArrayType():i)).join(" | "):"array"===m?getArrayType():["null","boolean","object","array","number","integer","string"].includes(m)?m:(()=>{if(Object.hasOwn(i,"prefixItems")||Object.hasOwn(i,"items")||Object.hasOwn(i,"contains"))return getArrayType();if(Object.hasOwn(i,"properties")||Object.hasOwn(i,"additionalProperties")||Object.hasOwn(i,"patternProperties"))return"object";if(["int32","int64"].includes(i.format))return"integer";if(["float","double"].includes(i.format))return"number";if(Object.hasOwn(i,"minimum")||Object.hasOwn(i,"maximum")||Object.hasOwn(i,"exclusiveMinimum")||Object.hasOwn(i,"exclusiveMaximum")||Object.hasOwn(i,"multipleOf"))return"number | integer";if(Object.hasOwn(i,"pattern")||Object.hasOwn(i,"format")||Object.hasOwn(i,"minLength")||Object.hasOwn(i,"maxLength"))return"string";if(void 0!==i.const){if(null===i.const)return"null";if("boolean"==typeof i.const)return"boolean";if("number"==typeof i.const)return Number.isInteger(i.const)?"integer":"number";if("string"==typeof i.const)return"string";if(Array.isArray(i.const))return"array";if("object"==typeof i.const)return"object"}return null})(),handleCombiningKeywords("oneOf"," | "),handleCombiningKeywords("anyOf"," | "),handleCombiningKeywords("allOf"," & ")].filter(Boolean).join(" | ");return s.delete(i),j||"any"},isBooleanJSONSchema=i=>"boolean"==typeof i,hasKeyword=(i,s)=>null!==i&&"object"==typeof i&&Object.hasOwn(i,s),isExpandable=i=>{const s=useFn();return(null==i?void 0:i.$schema)||(null==i?void 0:i.$vocabulary)||(null==i?void 0:i.$id)||(null==i?void 0:i.$anchor)||(null==i?void 0:i.$dynamicAnchor)||(null==i?void 0:i.$ref)||(null==i?void 0:i.$dynamicRef)||(null==i?void 0:i.$defs)||(null==i?void 0:i.$comment)||(null==i?void 0:i.allOf)||(null==i?void 0:i.anyOf)||(null==i?void 0:i.oneOf)||s.hasKeyword(i,"not")||s.hasKeyword(i,"if")||s.hasKeyword(i,"then")||s.hasKeyword(i,"else")||(null==i?void 0:i.dependentSchemas)||(null==i?void 0:i.prefixItems)||s.hasKeyword(i,"items")||s.hasKeyword(i,"contains")||(null==i?void 0:i.properties)||(null==i?void 0:i.patternProperties)||s.hasKeyword(i,"additionalProperties")||s.hasKeyword(i,"propertyNames")||s.hasKeyword(i,"unevaluatedItems")||s.hasKeyword(i,"unevaluatedProperties")||(null==i?void 0:i.description)||(null==i?void 0:i.enum)||s.hasKeyword(i,"const")||s.hasKeyword(i,"contentSchema")||s.hasKeyword(i,"default")},fn_stringify=i=>null===i||["number","bigint","boolean"].includes(typeof i)?String(i):Array.isArray(i)?`[${i.map(fn_stringify).join(", ")}]`:JSON.stringify(i),stringifyConstraintRange=(i,s,u)=>{const m="number"==typeof s,v="number"==typeof u;return m&&v?s===u?`${s} ${i}`:`[${s}, ${u}] ${i}`:m?`>= ${s} ${i}`:v?`<= ${u} ${i}`:null},stringifyConstraints=i=>{const s=[],u=(i=>{if("number"!=typeof(null==i?void 0:i.multipleOf))return null;if(i.multipleOf<=0)return null;if(1===i.multipleOf)return null;const{multipleOf:s}=i;if(Number.isInteger(s))return`multiple of ${s}`;const u=10**s.toString().split(".")[1].length;return`multiple of ${s*u}/${u}`})(i);null!==u&&s.push({scope:"number",value:u});const m=(i=>{const s=null==i?void 0:i.minimum,u=null==i?void 0:i.maximum,m=null==i?void 0:i.exclusiveMinimum,v=null==i?void 0:i.exclusiveMaximum,_="number"==typeof s,j="number"==typeof u,M="number"==typeof m,$="number"==typeof v,W=M&&(!_||sv);if((_||M)&&(j||$))return`${W?"(":"["}${W?m:s}, ${X?v:u}${X?")":"]"}`;if(_||M)return`${W?">":"≥"} ${W?m:s}`;if(j||$)return`${X?"<":"≤"} ${X?v:u}`;return null})(i);null!==m&&s.push({scope:"number",value:m}),null!=i&&i.format&&s.push({scope:"string",value:i.format});const v=stringifyConstraintRange("characters",null==i?void 0:i.minLength,null==i?void 0:i.maxLength);null!==v&&s.push({scope:"string",value:v}),null!=i&&i.pattern&&s.push({scope:"string",value:`matches ${null==i?void 0:i.pattern}`}),null!=i&&i.contentMediaType&&s.push({scope:"string",value:`media type: ${i.contentMediaType}`}),null!=i&&i.contentEncoding&&s.push({scope:"string",value:`encoding: ${i.contentEncoding}`});const _=stringifyConstraintRange(null!=i&&i.hasUniqueItems?"unique items":"items",null==i?void 0:i.minItems,null==i?void 0:i.maxItems);null!==_&&s.push({scope:"array",value:_});const j=stringifyConstraintRange("contained items",null==i?void 0:i.minContains,null==i?void 0:i.maxContains);null!==j&&s.push({scope:"array",value:j});const M=stringifyConstraintRange("properties",null==i?void 0:i.minProperties,null==i?void 0:i.maxProperties);return null!==M&&s.push({scope:"object",value:M}),s},getDependentRequired=(i,s)=>null!=s&&s.dependentRequired?Array.from(Object.entries(s.dependentRequired).reduce(((s,u)=>{let[m,v]=u;return Array.isArray(v)&&v.includes(i)?(s.add(m),s):s}),new Set)):[],withJSONSchemaContext=function(i){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const u={components:rr()({JSONSchema:KN,Keyword$schema:keywords_$schema,Keyword$vocabulary:$vocabulary_$vocabulary,Keyword$id:keywords_$id,Keyword$anchor:keywords_$anchor,Keyword$dynamicAnchor:keywords_$dynamicAnchor,Keyword$ref:keywords_$ref,Keyword$dynamicRef:keywords_$dynamicRef,Keyword$defs:keywords_$defs,Keyword$comment:keywords_$comment,KeywordAllOf:keywords_AllOf,KeywordAnyOf:keywords_AnyOf,KeywordOneOf:keywords_OneOf,KeywordNot:keywords_Not,KeywordIf:keywords_If,KeywordThen:keywords_Then,KeywordElse:keywords_Else,KeywordDependentSchemas:keywords_DependentSchemas,KeywordPrefixItems:keywords_PrefixItems,KeywordItems:keywords_Items,KeywordContains:keywords_Contains,KeywordProperties:keywords_Properties_Properties,KeywordPatternProperties:keywords_PatternProperties_PatternProperties,KeywordAdditionalProperties:keywords_AdditionalProperties,KeywordPropertyNames:keywords_PropertyNames,KeywordUnevaluatedItems:keywords_UnevaluatedItems,KeywordUnevaluatedProperties:keywords_UnevaluatedProperties,KeywordType:HN,KeywordEnum:Enum_Enum,KeywordConst:keywords_Const,KeywordConstraint:JN,KeywordDependentRequired:DependentRequired_DependentRequired,KeywordContentSchema:keywords_ContentSchema,KeywordTitle:GN,KeywordDescription:keywords_Description_Description,KeywordDefault:keywords_Default,KeywordDeprecated:keywords_Deprecated,KeywordReadOnly:keywords_ReadOnly,KeywordWriteOnly:keywords_WriteOnly,Accordion:XN,ExpandDeepButton:ExpandDeepButton_ExpandDeepButton,ChevronRightIcon:icons_ChevronRight},s.components),config:rr()({default$schema:"https://json-schema.org/draft/2020-12/schema",defaultExpandedLevels:0},s.config),fn:rr()({upperFirst:fn_upperFirst,getTitle,getType,isBooleanJSONSchema,hasKeyword,isExpandable,stringify:fn_stringify,stringifyConstraints,getDependentRequired},s.fn)},HOC=s=>He.createElement($N.Provider,{value:u},He.createElement(i,s));return HOC.contexts={JSONSchemaContext:$N},HOC.displayName=i.displayName,HOC},json_schema_2020_12=()=>({components:{JSONSchema202012:KN,JSONSchema202012Keyword$schema:keywords_$schema,JSONSchema202012Keyword$vocabulary:$vocabulary_$vocabulary,JSONSchema202012Keyword$id:keywords_$id,JSONSchema202012Keyword$anchor:keywords_$anchor,JSONSchema202012Keyword$dynamicAnchor:keywords_$dynamicAnchor,JSONSchema202012Keyword$ref:keywords_$ref,JSONSchema202012Keyword$dynamicRef:keywords_$dynamicRef,JSONSchema202012Keyword$defs:keywords_$defs,JSONSchema202012Keyword$comment:keywords_$comment,JSONSchema202012KeywordAllOf:keywords_AllOf,JSONSchema202012KeywordAnyOf:keywords_AnyOf,JSONSchema202012KeywordOneOf:keywords_OneOf,JSONSchema202012KeywordNot:keywords_Not,JSONSchema202012KeywordIf:keywords_If,JSONSchema202012KeywordThen:keywords_Then,JSONSchema202012KeywordElse:keywords_Else,JSONSchema202012KeywordDependentSchemas:keywords_DependentSchemas,JSONSchema202012KeywordPrefixItems:keywords_PrefixItems,JSONSchema202012KeywordItems:keywords_Items,JSONSchema202012KeywordContains:keywords_Contains,JSONSchema202012KeywordProperties:keywords_Properties_Properties,JSONSchema202012KeywordPatternProperties:keywords_PatternProperties_PatternProperties,JSONSchema202012KeywordAdditionalProperties:keywords_AdditionalProperties,JSONSchema202012KeywordPropertyNames:keywords_PropertyNames,JSONSchema202012KeywordUnevaluatedItems:keywords_UnevaluatedItems,JSONSchema202012KeywordUnevaluatedProperties:keywords_UnevaluatedProperties,JSONSchema202012KeywordType:HN,JSONSchema202012KeywordEnum:Enum_Enum,JSONSchema202012KeywordConst:keywords_Const,JSONSchema202012KeywordConstraint:JN,JSONSchema202012KeywordDependentRequired:DependentRequired_DependentRequired,JSONSchema202012KeywordContentSchema:keywords_ContentSchema,JSONSchema202012KeywordTitle:GN,JSONSchema202012KeywordDescription:keywords_Description_Description,JSONSchema202012KeywordDefault:keywords_Default,JSONSchema202012KeywordDeprecated:keywords_Deprecated,JSONSchema202012KeywordReadOnly:keywords_ReadOnly,JSONSchema202012KeywordWriteOnly:keywords_WriteOnly,JSONSchema202012Accordion:XN,JSONSchema202012ExpandDeepButton:ExpandDeepButton_ExpandDeepButton,JSONSchema202012ChevronRightIcon:icons_ChevronRight,withJSONSchema202012Context:withJSONSchemaContext,JSONSchema202012DeepExpansionContext:()=>zN},fn:{upperFirst:fn_upperFirst,jsonSchema202012:{isExpandable,hasKeyword,useFn,useConfig,useComponent,useIsExpandedDeeply}}});var YN=__webpack_require__(68630),QN=__webpack_require__.n(YN);const array=(i,s)=>{let{sample:u}=s;return function(i){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{minItems:u,maxItems:m,uniqueItems:v}=s,{contains:_,minContains:j,maxContains:M}=s;let $=[...i];if(null!=_&&"object"==typeof _){if(Number.isInteger(j)&&j>1){const i=$.at(0);for(let s=1;s0&&($=i.slice(0,m)),Number.isInteger(u)&&u>0)for(let i=0;$.length{throw new Error("Not implemented")},bytes=i=>jt()(i),random_pick=i=>i.at(0),predicates_isBooleanJSONSchema=i=>"boolean"==typeof i,isJSONSchemaObject=i=>QN()(i),isJSONSchema=i=>predicates_isBooleanJSONSchema(i)||isJSONSchemaObject(i),email=()=>"user@example.com",idn_email=()=>"실례@example.com",hostname=()=>"example.com",idn_hostname=()=>"실례.com",ipv4=()=>"198.51.100.42",ipv6=()=>"2001:0db8:5b96:0000:0000:426f:8e17:642a",uri=()=>"https://example.com/",uri_reference=()=>"path/index.html",iri=()=>"https://실례.com/",iri_reference=()=>"path/실례.html",uuid=()=>"3fa85f64-5717-4562-b3fc-2c963f66afa6",uri_template=()=>"https://example.com/dictionary/{term:1}/{term}",json_pointer=()=>"/a/b/c",relative_json_pointer=()=>"1/0",date_time=()=>(new Date).toISOString(),date=()=>(new Date).toISOString().substring(0,10),time=()=>(new Date).toISOString().substring(11),duration=()=>"P3D",generators_password=()=>"********",regex=()=>"^[a-z]+$";const ZN=class Registry{constructor(){_o()(this,"data",{})}register(i,s){this.data[i]=s}unregister(i){void 0===i?this.data={}:delete this.data[i]}get(i){return this.data[i]}},eT=new ZN,api_formatAPI=(i,s)=>"function"==typeof s?eT.register(i,s):null===s?eT.unregister(i):eT.get(i);var tT=__webpack_require__(47667),rT=__webpack_require__.n(tT),nT=__webpack_require__(48764).Buffer;const _7bit=i=>nT.from(i).toString("ascii");var oT=__webpack_require__(48764).Buffer;const _8bit=i=>oT.from(i).toString("utf8");var iT=__webpack_require__(48764).Buffer;const encoders_binary=i=>iT.from(i).toString("binary"),quoted_printable=i=>{let s="";for(let u=0;u=33&&m<=60||m>=62&&m<=126||9===m||32===m)s+=i.charAt(u);else if(13===m||10===m)s+="\r\n";else if(m>126){const m=unescape(encodeURIComponent(i.charAt(u)));for(let i=0;iaT.from(i).toString("hex");var sT=__webpack_require__(48764).Buffer;const base32=i=>{const s=sT.from(i).toString("utf8"),u="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";let m=0,v="",_=0,j=0;for(let i=0;i=5;)v+=u.charAt(_>>>j-5&31),j-=5;j>0&&(v+=u.charAt(_<<5-j&31),m=(8-8*s.length%5)%5);for(let i=0;icT.from(i).toString("base64");function _classPrivateFieldInitSpec(i,s,u){!function _checkPrivateRedeclaration(i,s){if(s.has(i))throw new TypeError("Cannot initialize the same private elements twice on an object")}(i,s),s.set(i,u)}var lT=new WeakMap;const uT=new class EncoderRegistry extends ZN{constructor(){super(...arguments),_classPrivateFieldInitSpec(this,lT,{writable:!0,value:{"7bit":_7bit,"8bit":_8bit,binary:encoders_binary,"quoted-printable":quoted_printable,base16,base32,base64}}),_o()(this,"data",rr()({},rT()(this,lT)))}get defaults(){return rr()({},rT()(this,lT))}},encoderAPI=(i,s)=>"function"==typeof s?uT.register(i,s):null===s?uT.unregister(i):uT.get(i);encoderAPI.getDefaults=()=>uT.defaults;const pT=encoderAPI,hT={"text/plain":()=>"string","text/css":()=>".selector { border: 1px solid red }","text/csv":()=>"value1,value2,value3","text/html":()=>"

content

","text/calendar":()=>"BEGIN:VCALENDAR","text/javascript":()=>"console.dir('Hello world!');","text/xml":()=>'John Doe',"text/*":()=>"string"},dT={"image/*":()=>bytes(25).toString("binary")},fT={"audio/*":()=>bytes(25).toString("binary")},mT={"video/*":()=>bytes(25).toString("binary")},yT={"application/json":()=>'{"key":"value"}',"application/ld+json":()=>'{"name": "John Doe"}',"application/x-httpd-php":()=>"Hello World!

'; ?>","application/rtf":()=>String.raw`{\rtf1\adeflang1025\ansi\ansicpg1252\uc1`,"application/x-sh":()=>'echo "Hello World!"',"application/xhtml+xml":()=>"

content

","application/*":()=>bytes(25).toString("binary")};function MediaTypeRegistry_classPrivateFieldInitSpec(i,s,u){!function MediaTypeRegistry_checkPrivateRedeclaration(i,s){if(s.has(i))throw new TypeError("Cannot initialize the same private elements twice on an object")}(i,s),s.set(i,u)}var gT=new WeakMap;const vT=new class MediaTypeRegistry extends ZN{constructor(){super(...arguments),MediaTypeRegistry_classPrivateFieldInitSpec(this,gT,{writable:!0,value:rr()(rr()(rr()(rr()(rr()({},hT),dT),fT),mT),yT)}),_o()(this,"data",rr()({},rT()(this,gT)))}get defaults(){return rr()({},rT()(this,gT))}},mediaTypeAPI=(i,s)=>{if("function"==typeof s)return vT.register(i,s);if(null===s)return vT.unregister(i);const u=i.split(";").at(0),m=`${u.split("/").at(0)}/*`;return vT.get(i)||vT.get(u)||vT.get(m)};mediaTypeAPI.getDefaults=()=>vT.defaults;const bT=mediaTypeAPI,types_string=function(i){let{sample:s}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{contentEncoding:u,contentMediaType:m,contentSchema:v}=i,{pattern:_,format:j}=i,M=pT(u)||bC();let $;if("string"==typeof _)$=(i=>{try{return new(Aa())(i).gen()}catch{return"string"}})(_);else if("string"==typeof j)$=(i=>{const{format:s}=i,u=api_formatAPI(s);if("function"==typeof u)return u(i);switch(s){case"email":return email();case"idn-email":return idn_email();case"hostname":return hostname();case"idn-hostname":return idn_hostname();case"ipv4":return ipv4();case"ipv6":return ipv6();case"uri":return uri();case"uri-reference":return uri_reference();case"iri":return iri();case"iri-reference":return iri_reference();case"uuid":return uuid();case"uri-template":return uri_template();case"json-pointer":return json_pointer();case"relative-json-pointer":return relative_json_pointer();case"date-time":return date_time();case"date":return date();case"time":return time();case"duration":return duration();case"password":return generators_password();case"regex":return regex()}return"string"})(i);else if(isJSONSchema(v)&&"string"==typeof m&&void 0!==s)$=Array.isArray(s)||"object"==typeof s?JSON.stringify(s):String(s);else if("string"==typeof m){const s=bT(m);"function"==typeof s&&($=s(i))}else $="string";return M(function(i){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{maxLength:u,minLength:m}=s;let v=i;if(Number.isInteger(u)&&u>0&&(v=v.slice(0,u)),Number.isInteger(m)&&m>0){let i=0;for(;v.length.1,generators_double=()=>.1,types_number=i=>{const{format:s}=i;let u;return u="string"==typeof s?(i=>{const{format:s}=i,u=api_formatAPI(s);if("function"==typeof u)return u(i);switch(s){case"float":return generators_float();case"double":return generators_double()}return 0})(i):0,function(i){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{minimum:u,maximum:m,exclusiveMinimum:v,exclusiveMaximum:_}=s,{multipleOf:j}=s,M=Number.isInteger(i)?1:Number.EPSILON;let $="number"==typeof u?u:null,W="number"==typeof m?m:null,X=i;if("number"==typeof v&&($=null!==$?Math.max($,v+M):v+M),"number"==typeof _&&(W=null!==W?Math.min(W,_-M):_-M),X=$>W&&i||$||W||X,"number"==typeof j&&j>0){const i=X%j;X=0===i?X:X+j-i}return X}(u,i)},int32=()=>2**30>>>0,int64=()=>2**53-1,types_integer=i=>{const{format:s}=i;return"string"==typeof s?(i=>{const{format:s}=i,u=api_formatAPI(s);if("function"==typeof u)return u(i);switch(s){case"int32":return int32();case"int64":return int64()}return 0})(i):0},types_boolean=i=>"boolean"!=typeof i.default||i.default,_T=new Proxy({array,object,string:types_string,number:types_number,integer:types_integer,boolean:types_boolean,null:()=>null},{get:(i,s)=>"string"==typeof s&&Object.hasOwn(i,s)?i[s]:()=>`Unknown Type: ${s}`}),wT=["array","object","number","integer","string","boolean","null"],hasExample=i=>{if(!isJSONSchemaObject(i))return!1;const{examples:s,example:u,default:m}=i;return!!(Array.isArray(s)&&s.length>=1)||(void 0!==m||void 0!==u)},extractExample=i=>{if(!isJSONSchemaObject(i))return null;const{examples:s,example:u,default:m}=i;return Array.isArray(s)&&s.length>=1?s.at(0):void 0!==m?m:void 0!==u?u:void 0},ET={array:["items","prefixItems","contains","maxContains","minContains","maxItems","minItems","uniqueItems","unevaluatedItems"],object:["properties","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","required","dependentSchemas","dependentRequired","unevaluatedProperties"],string:["pattern","format","minLength","maxLength","contentEncoding","contentMediaType","contentSchema"],integer:["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf"]};ET.number=ET.integer;const ST="string",inferTypeFromValue=i=>void 0===i?null:null===i?"null":Array.isArray(i)?"array":Number.isInteger(i)?"integer":typeof i,foldType=i=>{if(Array.isArray(i)&&i.length>=1){if(i.includes("array"))return"array";if(i.includes("object"))return"object";{const s=random_pick(i);if(wT.includes(s))return s}}return wT.includes(i)?i:null},inferType=function(i){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakSet;if(!isJSONSchemaObject(i))return ST;if(s.has(i))return ST;s.add(i);let{type:u,const:m}=i;if(u=foldType(u),"string"!=typeof u){const s=Object.keys(ET);e:for(let m=0;m{if(Array.isArray(i[u])){const m=i[u].map((i=>inferType(i,s)));return foldType(m)}return null},m=combineTypes("allOf"),v=combineTypes("anyOf"),_=combineTypes("oneOf"),j=i.not?inferType(i.not,s):null;(m||v||_||j)&&(u=foldType([m,v,_,j].filter(Boolean)))}if("string"!=typeof u&&hasExample(i)){const s=extractExample(i),m=inferTypeFromValue(s);u="string"==typeof m?m:u}return s.delete(i),u||ST},type_getType=i=>inferType(i),typeCast=i=>predicates_isBooleanJSONSchema(i)?(i=>!1===i?{not:{}}:{})(i):isJSONSchemaObject(i)?i:{},merge_merge=function(i,s){let u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(predicates_isBooleanJSONSchema(i)&&!0===i)return!0;if(predicates_isBooleanJSONSchema(i)&&!1===i)return!1;if(predicates_isBooleanJSONSchema(s)&&!0===s)return!0;if(predicates_isBooleanJSONSchema(s)&&!1===s)return!1;if(!isJSONSchema(i))return s;if(!isJSONSchema(s))return i;const m=rr()(rr()({},s),i);if(s.type&&i.type&&Array.isArray(s.type)&&"string"==typeof s.type){const u=normalizeArray(s.type).concat(i.type);m.type=Array.from(new Set(u))}if(Array.isArray(s.required)&&Array.isArray(i.required)&&(m.required=[...new Set([...i.required,...s.required])]),s.properties&&i.properties){const v=new Set([...Object.keys(s.properties),...Object.keys(i.properties)]);m.properties={};for(const _ of v){const v=s.properties[_]||{},j=i.properties[_]||{};v.readOnly&&!u.includeReadOnly||v.writeOnly&&!u.includeWriteOnly?m.required=(m.required||[]).filter((i=>i!==_)):m.properties[_]=merge_merge(j,v,u)}}return isJSONSchema(s.items)&&isJSONSchema(i.items)&&(m.items=merge_merge(i.items,s.items,u)),isJSONSchema(s.contains)&&isJSONSchema(i.contains)&&(m.contains=merge_merge(i.contains,s.contains,u)),isJSONSchema(s.contentSchema)&&isJSONSchema(i.contentSchema)&&(m.contentSchema=merge_merge(i.contentSchema,s.contentSchema,u)),m},xT=merge_merge,main_sampleFromSchemaGeneric=function(i){var s;let u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,v=arguments.length>3&&void 0!==arguments[3]&&arguments[3];"function"==typeof(null===(s=i)||void 0===s?void 0:s.toJS)&&(i=i.toJS()),i=typeCast(i);let _=void 0!==m||hasExample(i);const j=!_&&Array.isArray(i.oneOf)&&i.oneOf.length>0,M=!_&&Array.isArray(i.anyOf)&&i.anyOf.length>0;if(!_&&(j||M)){const s=typeCast(random_pick(j?i.oneOf:i.anyOf));!(i=xT(i,s,u)).xml&&s.xml&&(i.xml=s.xml),hasExample(i)&&hasExample(s)&&(_=!0)}const $={};let{xml:W,properties:X,additionalProperties:Y,items:Z,contains:ee}=i||{},ie=type_getType(i),{includeReadOnly:ae,includeWriteOnly:ce}=u;W=W||{};let le,{name:pe,prefix:de,namespace:fe}=W,ye={};if(Object.hasOwn(i,"type")||(i.type=ie),v&&(pe=pe||"notagname",le=(de?`${de}:`:"")+pe,fe)){$[de?`xmlns:${de}`:"xmlns"]=fe}v&&(ye[le]=[]);const be=objectify(X);let _e,we=0;const hasExceededMaxProperties=()=>Number.isInteger(i.maxProperties)&&i.maxProperties>0&&we>=i.maxProperties,canAddProperty=s=>!(Number.isInteger(i.maxProperties)&&i.maxProperties>0)||!hasExceededMaxProperties()&&(!(s=>!Array.isArray(i.required)||0===i.required.length||!i.required.includes(s))(s)||i.maxProperties-we-(()=>{if(!Array.isArray(i.required)||0===i.required.length)return 0;let s=0;return v?i.required.forEach((i=>s+=void 0===ye[i]?0:1)):i.required.forEach((i=>{var u;s+=void 0===(null===(u=ye[le])||void 0===u?void 0:u.find((s=>void 0!==s[i])))?0:1})),i.required.length-s})()>0);if(_e=v?function(s){let m=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(i&&be[s]){if(be[s].xml=be[s].xml||{},be[s].xml.attribute){const i=Array.isArray(be[s].enum)?random_pick(be[s].enum):void 0;if(hasExample(be[s]))$[be[s].xml.name||s]=extractExample(be[s]);else if(void 0!==i)$[be[s].xml.name||s]=i;else{const i=typeCast(be[s]),u=type_getType(i),m=be[s].xml.name||s;$[m]=_T[u](i)}return}be[s].xml.name=be[s].xml.name||s}else be[s]||!1===Y||(be[s]={xml:{name:s}});let _=main_sampleFromSchemaGeneric(be[s],u,m,v);canAddProperty(s)&&(we++,Array.isArray(_)?ye[le]=ye[le].concat(_):ye[le].push(_))}:(s,m)=>{var _;if(canAddProperty(s)){if(QN()(null===(_=i.discriminator)||void 0===_?void 0:_.mapping)&&i.discriminator.propertyName===s&&"string"==typeof i.$$ref){for(const u in i.discriminator.mapping)if(-1!==i.$$ref.search(i.discriminator.mapping[u])){ye[s]=u;break}}else ye[s]=main_sampleFromSchemaGeneric(be[s],u,m,v);we++}},_){let s;if(s=void 0!==m?m:extractExample(i),!v){if("number"==typeof s&&"string"===ie)return`${s}`;if("string"!=typeof s||"string"===ie)return s;try{return JSON.parse(s)}catch{return s}}if("array"===ie){if(!Array.isArray(s)){if("string"==typeof s)return s;s=[s]}let m=[];return isJSONSchemaObject(Z)&&(Z.xml=Z.xml||W||{},Z.xml.name=Z.xml.name||W.name,m=s.map((i=>main_sampleFromSchemaGeneric(Z,u,i,v)))),isJSONSchemaObject(ee)&&(ee.xml=ee.xml||W||{},ee.xml.name=ee.xml.name||W.name,m=[main_sampleFromSchemaGeneric(ee,u,void 0,v),...m]),m=_T.array(i,{sample:m}),W.wrapped?(ye[le]=m,ja()($)||ye[le].push({_attr:$})):ye=m,ye}if("object"===ie){if("string"==typeof s)return s;for(const i in s){var Se,xe,Pe;Object.hasOwn(s,i)&&(null!==(Se=be[i])&&void 0!==Se&&Se.readOnly&&!ae||null!==(xe=be[i])&&void 0!==xe&&xe.writeOnly&&!ce||(null!==(Pe=be[i])&&void 0!==Pe&&null!==(Pe=Pe.xml)&&void 0!==Pe&&Pe.attribute?$[be[i].xml.name||i]=s[i]:_e(i,s[i])))}return ja()($)||ye[le].push({_attr:$}),ye}return ye[le]=ja()($)?s:[{_attr:$},s],ye}if("array"===ie){let s=[];if(isJSONSchemaObject(ee))if(v&&(ee.xml=ee.xml||i.xml||{},ee.xml.name=ee.xml.name||W.name),Array.isArray(ee.anyOf))s.push(...ee.anyOf.map((i=>main_sampleFromSchemaGeneric(xT(i,ee,u),u,void 0,v))));else if(Array.isArray(ee.oneOf))s.push(...ee.oneOf.map((i=>main_sampleFromSchemaGeneric(xT(i,ee,u),u,void 0,v))));else{if(!(!v||v&&W.wrapped))return main_sampleFromSchemaGeneric(ee,u,void 0,v);s.push(main_sampleFromSchemaGeneric(ee,u,void 0,v))}if(isJSONSchemaObject(Z))if(v&&(Z.xml=Z.xml||i.xml||{},Z.xml.name=Z.xml.name||W.name),Array.isArray(Z.anyOf))s.push(...Z.anyOf.map((i=>main_sampleFromSchemaGeneric(xT(i,Z,u),u,void 0,v))));else if(Array.isArray(Z.oneOf))s.push(...Z.oneOf.map((i=>main_sampleFromSchemaGeneric(xT(i,Z,u),u,void 0,v))));else{if(!(!v||v&&W.wrapped))return main_sampleFromSchemaGeneric(Z,u,void 0,v);s.push(main_sampleFromSchemaGeneric(Z,u,void 0,v))}return s=_T.array(i,{sample:s}),v&&W.wrapped?(ye[le]=s,ja()($)||ye[le].push({_attr:$}),ye):s}if("object"===ie){for(let i in be){var Ie,Te,Re;Object.hasOwn(be,i)&&(null!==(Ie=be[i])&&void 0!==Ie&&Ie.deprecated||null!==(Te=be[i])&&void 0!==Te&&Te.readOnly&&!ae||null!==(Re=be[i])&&void 0!==Re&&Re.writeOnly&&!ce||_e(i))}if(v&&$&&ye[le].push({_attr:$}),hasExceededMaxProperties())return ye;if(predicates_isBooleanJSONSchema(Y)&&Y)v?ye[le].push({additionalProp:"Anything can be here"}):ye.additionalProp1={},we++;else if(isJSONSchemaObject(Y)){var qe,ze;const s=Y,m=main_sampleFromSchemaGeneric(s,u,void 0,v);if(v&&"string"==typeof(null==s||null===(qe=s.xml)||void 0===qe?void 0:qe.name)&&"notagname"!==(null==s||null===(ze=s.xml)||void 0===ze?void 0:ze.name))ye[le].push(m);else{const s=Number.isInteger(i.minProperties)&&i.minProperties>0&&we{const m=main_sampleFromSchemaGeneric(i,s,u,!0);if(m)return"string"==typeof m?m:Oa()(m,{declaration:!0,indent:"\t"})},main_sampleFromSchema=(i,s,u)=>main_sampleFromSchemaGeneric(i,s,u,!1),main_resolver=(i,s,u)=>[i,JSON.stringify(s),JSON.stringify(u)],OT=utils_memoizeN(main_createXMLExample,main_resolver),kT=utils_memoizeN(main_sampleFromSchema,main_resolver),AT=[{when:/json/,shouldStringifyTypes:["string"]}],CT=["object"],fn_get_json_sample_schema=i=>(s,u,m,v)=>{const{fn:_}=i(),j=_.jsonSchema202012.memoizedSampleFromSchema(s,u,v),M=typeof j,$=AT.reduce(((i,s)=>s.when.test(m)?[...i,...s.shouldStringifyTypes]:i),CT);return wt()($,(i=>i===M))?JSON.stringify(j,null,2):j},fn_get_yaml_sample_schema=i=>(s,u,m,v)=>{const{fn:_}=i(),j=_.jsonSchema202012.getJsonSampleSchema(s,u,m,v);let M;try{M=co.dump(co.load(j),{lineWidth:-1},{schema:Yn}),"\n"===M[M.length-1]&&(M=M.slice(0,M.length-1))}catch(i){return console.error(i),"error: could not generate yaml example"}return M.replace(/\t/g," ")},fn_get_xml_sample_schema=i=>(s,u,m)=>{const{fn:v}=i();if(s&&!s.xml&&(s.xml={}),s&&!s.xml.name){if(!s.$$ref&&(s.type||s.items||s.properties||s.additionalProperties))return'\n\x3c!-- XML example cannot be generated; root element name is undefined --\x3e';if(s.$$ref){let i=s.$$ref.match(/\S*\/(\S+)$/);s.xml.name=i[1]}}return v.jsonSchema202012.memoizedCreateXMLExample(s,u,m)},fn_get_sample_schema=i=>function(s){var u,m;let v=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",_=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},j=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;const{fn:M}=i();return"function"==typeof(null===(u=s)||void 0===u?void 0:u.toJS)&&(s=s.toJS()),"function"==typeof(null===(m=j)||void 0===m?void 0:m.toJS)&&(j=j.toJS()),/xml/.test(v)?M.jsonSchema202012.getXmlSampleSchema(s,_,j):/(yaml|yml)/.test(v)?M.jsonSchema202012.getYamlSampleSchema(s,_,v,j):M.jsonSchema202012.getJsonSampleSchema(s,_,v,j)},json_schema_2020_12_samples=i=>{let{getSystem:s}=i;const u=fn_get_json_sample_schema(s),m=fn_get_yaml_sample_schema(s),v=fn_get_xml_sample_schema(s),_=fn_get_sample_schema(s);return{fn:{jsonSchema202012:{sampleFromSchema:main_sampleFromSchema,sampleFromSchemaGeneric:main_sampleFromSchemaGeneric,sampleEncoderAPI:pT,sampleFormatAPI:api_formatAPI,sampleMediaTypeAPI:bT,createXMLExample:main_createXMLExample,memoizedSampleFromSchema:kT,memoizedCreateXMLExample:OT,getJsonSampleSchema:u,getYamlSampleSchema:m,getXmlSampleSchema:v,getSampleSchema:_}}}};function PresetApis(){return[base,oas3,json_schema_2020_12,json_schema_2020_12_samples,oas31]}const{GIT_DIRTY:jT,GIT_COMMIT:PT,PACKAGE_VERSION:IT,BUILD_TIME:NT}={PACKAGE_VERSION:"5.6.2",GIT_COMMIT:"g5dbfc1b4",GIT_DIRTY:!0,BUILD_TIME:"Wed, 06 Sep 2023 05:52:08 GMT"};function SwaggerUI(i){dt.versions=dt.versions||{},dt.versions.swaggerUi={version:IT,gitRevision:PT,gitDirty:jT,buildTimestamp:NT};const s={dom_id:null,domNode:null,spec:{},url:"",urls:null,layout:"BaseLayout",docExpansion:"list",maxDisplayedTags:null,filter:null,validatorUrl:"https://validator.swagger.io/validator",oauth2RedirectUrl:`${window.location.protocol}//${window.location.host}${window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))}/oauth2-redirect.html`,persistAuthorization:!1,configs:{},custom:{},displayOperationId:!1,displayRequestDuration:!1,deepLinking:!1,tryItOutEnabled:!1,requestInterceptor:i=>i,responseInterceptor:i=>i,showMutatedRequest:!0,defaultModelRendering:"example",defaultModelExpandDepth:1,defaultModelsExpandDepth:1,showExtensions:!1,showCommonExtensions:!1,withCredentials:void 0,requestSnippetsEnabled:!1,requestSnippets:{generators:{curl_bash:{title:"cURL (bash)",syntax:"bash"},curl_powershell:{title:"cURL (PowerShell)",syntax:"powershell"},curl_cmd:{title:"cURL (CMD)",syntax:"bash"}},defaultExpanded:!0,languages:null},supportedSubmitMethods:["get","put","post","delete","options","head","patch","trace"],queryConfigEnabled:!1,presets:[PresetApis],plugins:[],pluginsOptions:{pluginLoadType:"legacy"},initialState:{},fn:{},components:{},syntaxHighlight:{activated:!0,theme:"agate"}};let u=i.queryConfigEnabled?(()=>{let i={},s=dt.location.search;if(!s)return{};if(""!=s){let u=s.substr(1).split("&");for(let s in u)Object.prototype.hasOwnProperty.call(u,s)&&(s=u[s].split("="),i[decodeURIComponent(s[0])]=s[1]&&decodeURIComponent(s[1])||"")}return i})():{};const m=i.domNode;delete i.domNode;const v=We()({},s,i,u),_={system:{configs:v.configs},plugins:v.presets,pluginsOptions:v.pluginsOptions,state:We()({layout:{layout:v.layout,filter:v.filter},spec:{spec:"",url:v.url},requestSnippets:v.requestSnippets},v.initialState)};if(v.initialState)for(var j in v.initialState)Object.prototype.hasOwnProperty.call(v.initialState,j)&&void 0===v.initialState[j]&&delete _.state[j];var M=new Store(_);M.register([v.plugins,()=>({fn:v.fn,components:v.components,state:v.state})]);var $=M.getSystem();const downloadSpec=i=>{let s=$.specSelectors.getLocalConfig?$.specSelectors.getLocalConfig():{},_=We()({},s,v,i||{},u);if(m&&(_.domNode=m),M.setConfigs(_),$.configsActions.loaded(),null!==i&&(!u.url&&"object"==typeof _.spec&&Object.keys(_.spec).length?($.specActions.updateUrl(""),$.specActions.updateLoadingStatus("success"),$.specActions.updateSpec(JSON.stringify(_.spec))):$.specActions.download&&_.url&&!_.urls&&($.specActions.updateUrl(_.url),$.specActions.download(_.url))),_.domNode)$.render(_.domNode,"App");else if(_.dom_id){let i=document.querySelector(_.dom_id);$.render(i,"App")}else null===_.dom_id||null===_.domNode||console.error("Skipped rendering: no `dom_id` or `domNode` was specified");return $},W=u.config||v.configUrl;return W&&$.specActions&&$.specActions.getConfigByUrl?($.specActions.getConfigByUrl({url:W,loadRemoteConfig:!0,requestInterceptor:v.requestInterceptor,responseInterceptor:v.responseInterceptor},downloadSpec),$):downloadSpec()}SwaggerUI.System=Store,SwaggerUI.presets={base,apis:PresetApis},SwaggerUI.plugins={Auth:auth,Configs:configsPlugin,DeepLining:deep_linking,Err:err,Filter:filter,Icons:icons,JSONSchema5Samples:json_schema_5_samples,JSONSchema202012:json_schema_2020_12,JSONSchema202012Samples:json_schema_2020_12_samples,Layout:plugins_layout,Logs:logs,OpenAPI30:oas3,OpenAPI31:oas3,OnComplete:on_complete,RequestSnippets:plugins_request_snippets,Spec:plugins_spec,SwaggerClient:swagger_client,Util:util,View:view,DownloadUrl:downloadUrlPlugin,SafeRender:safe_render};const TT=SwaggerUI})(),u=u.default})())); +//# sourceMappingURL=swagger-ui-bundle.js.map \ No newline at end of file diff --git a/src/Laravel/public/swagger-ui-standalone-preset.js b/src/Laravel/public/swagger-ui-standalone-preset.js new file mode 100644 index 00000000000..31826c96aca --- /dev/null +++ b/src/Laravel/public/swagger-ui-standalone-preset.js @@ -0,0 +1,3 @@ +/*! For license information please see swagger-ui-standalone-preset.js.LICENSE.txt */ +!function webpackUniversalModuleDefinition(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.SwaggerUIStandalonePreset=e():t.SwaggerUIStandalonePreset=e()}(this,(()=>(()=>{var t={7967:(t,e)=>{"use strict";e.Rq=void 0;var r=/^([^\w]*)(javascript|data|vbscript)/im,n=/&#(\w+)(^\w|;)?/g,i=/&(newline|tab);/gi,o=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,a=/^.+(:|:)/gim,s=[".","/"];e.Rq="about:blank"},9742:(t,e)=>{"use strict";e.byteLength=function byteLength(t){var e=getLens(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function toByteArray(t){var e,r,o=getLens(t),a=o[0],s=o[1],u=new i(function _byteLength(t,e,r){return 3*(e+r)/4-r}(0,a,s)),c=0,f=s>0?a-4:a;for(r=0;r>16&255,u[c++]=e>>8&255,u[c++]=255&e;2===s&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,u[c++]=255&e);1===s&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,u[c++]=e>>8&255,u[c++]=255&e);return u},e.fromByteArray=function fromByteArray(t){for(var e,n=t.length,i=n%3,o=[],a=16383,s=0,u=n-i;su?u:s+a));1===i?(e=t[n-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===i&&(e=(t[n-2]<<8)+t[n-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"="));return o.join("")};for(var r=[],n=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0;a<64;++a)r[a]=o[a],n[o.charCodeAt(a)]=a;function getLens(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function encodeChunk(t,e,n){for(var i,o,a=[],s=e;s>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return a.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},8764:(t,e,r)=>{"use strict";const n=r(9742),i=r(645),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=Buffer,e.SlowBuffer=function SlowBuffer(t){+t!=t&&(t=0);return Buffer.alloc(+t)},e.INSPECT_MAX_BYTES=50;const a=2147483647;function createBuffer(t){if(t>a)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,Buffer.prototype),e}function Buffer(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return allocUnsafe(t)}return from(t,e,r)}function from(t,e,r){if("string"==typeof t)return function fromString(t,e){"string"==typeof e&&""!==e||(e="utf8");if(!Buffer.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|byteLength(t,e);let n=createBuffer(r);const i=n.write(t,e);i!==r&&(n=n.slice(0,i));return n}(t,e);if(ArrayBuffer.isView(t))return function fromArrayView(t){if(isInstance(t,Uint8Array)){const e=new Uint8Array(t);return fromArrayBuffer(e.buffer,e.byteOffset,e.byteLength)}return fromArrayLike(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(isInstance(t,ArrayBuffer)||t&&isInstance(t.buffer,ArrayBuffer))return fromArrayBuffer(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(isInstance(t,SharedArrayBuffer)||t&&isInstance(t.buffer,SharedArrayBuffer)))return fromArrayBuffer(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return Buffer.from(n,e,r);const i=function fromObject(t){if(Buffer.isBuffer(t)){const e=0|checked(t.length),r=createBuffer(e);return 0===r.length||t.copy(r,0,0,e),r}if(void 0!==t.length)return"number"!=typeof t.length||numberIsNaN(t.length)?createBuffer(0):fromArrayLike(t);if("Buffer"===t.type&&Array.isArray(t.data))return fromArrayLike(t.data)}(t);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return Buffer.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function assertSize(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function allocUnsafe(t){return assertSize(t),createBuffer(t<0?0:0|checked(t))}function fromArrayLike(t){const e=t.length<0?0:0|checked(t.length),r=createBuffer(e);for(let n=0;n=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return 0|t}function byteLength(t,e){if(Buffer.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||isInstance(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return utf8ToBytes(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return base64ToBytes(t).length;default:if(i)return n?-1:utf8ToBytes(t).length;e=(""+e).toLowerCase(),i=!0}}function slowToString(t,e,r){let n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return hexSlice(this,e,r);case"utf8":case"utf-8":return utf8Slice(this,e,r);case"ascii":return asciiSlice(this,e,r);case"latin1":case"binary":return latin1Slice(this,e,r);case"base64":return base64Slice(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function swap(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function bidirectionalIndexOf(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),numberIsNaN(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=Buffer.from(e,n)),Buffer.isBuffer(e))return 0===e.length?-1:arrayIndexOf(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):arrayIndexOf(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(t,e,r,n,i){let o,a=1,s=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a=2,s/=2,u/=2,r/=2}function read(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(i){let n=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;ni&&(n=i):n=i;const o=e.length;let a;for(n>o/2&&(n=o/2),a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function base64Slice(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function utf8Slice(t,e,r){r=Math.min(t.length,r);const n=[];let i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+a<=r){let r,n,s,u;switch(a){case 1:e<128&&(o=e);break;case 2:r=t[i+1],128==(192&r)&&(u=(31&e)<<6|63&r,u>127&&(o=u));break;case 3:r=t[i+1],n=t[i+2],128==(192&r)&&128==(192&n)&&(u=(15&e)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=t[i+1],n=t[i+2],s=t[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&e)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,a=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=a}return function decodeCodePointsArray(t){const e=t.length;if(e<=s)return String.fromCharCode.apply(String,t);let r="",n=0;for(;nn.length?(Buffer.isBuffer(e)||(e=Buffer.from(e)),e.copy(n,i)):Uint8Array.prototype.set.call(n,e,i);else{if(!Buffer.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(n,i)}i+=e.length}return n},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function swap16(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},o&&(Buffer.prototype[o]=Buffer.prototype.inspect),Buffer.prototype.compare=function compare(t,e,r,n,i){if(isInstance(t,Uint8Array)&&(t=Buffer.from(t,t.offset,t.byteLength)),!Buffer.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;let o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(e>>>=0);const s=Math.min(o,a),u=this.slice(n,i),c=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return hexWrite(this,t,e,r);case"utf8":case"utf-8":return utf8Write(this,t,e,r);case"ascii":case"latin1":case"binary":return asciiWrite(this,t,e,r);case"base64":return base64Write(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const s=4096;function asciiSlice(t,e,r){let n="";r=Math.min(t.length,r);for(let i=e;in)&&(r=n);let i="";for(let n=e;nr)throw new RangeError("Trying to access beyond buffer length")}function checkInt(t,e,r,n,i,o){if(!Buffer.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function wrtBigUInt64LE(t,e,r,n,i){checkIntBI(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let a=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=a,a>>=8,t[r++]=a,a>>=8,t[r++]=a,a>>=8,t[r++]=a,r}function wrtBigUInt64BE(t,e,r,n,i){checkIntBI(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let a=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=a,a>>=8,t[r+2]=a,a>>=8,t[r+1]=a,a>>=8,t[r]=a,r+8}function checkIEEE754(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function writeFloat(t,e,r,n,o){return e=+e,r>>>=0,o||checkIEEE754(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function writeDouble(t,e,r,n,o){return e=+e,r>>>=0,o||checkIEEE754(t,0,r,8),i.write(t,e,r,n,52,8),r+8}Buffer.prototype.slice=function slice(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||checkOffset(t,e,this.length);let n=this[t],i=1,o=0;for(;++o>>=0,e>>>=0,r||checkOffset(t,e,this.length);let n=this[t+--e],i=1;for(;e>0&&(i*=256);)n+=this[t+--e]*i;return n},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(t,e){return t>>>=0,e||checkOffset(t,1,this.length),this[t]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(t,e){return t>>>=0,e||checkOffset(t,2,this.length),this[t]|this[t+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(t,e){return t>>>=0,e||checkOffset(t,2,this.length),this[t]<<8|this[t+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(t,e){return t>>>=0,e||checkOffset(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(t,e){return t>>>=0,e||checkOffset(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},Buffer.prototype.readBigUInt64LE=defineBigIntMethod((function readBigUInt64LE(t){validateNumber(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||boundsError(t,this.length-8);const n=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,i=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||boundsError(t,this.length-8);const n=e*2**24+65536*this[++t]+256*this[++t]+this[++t],i=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(n)<>>=0,e>>>=0,r||checkOffset(t,e,this.length);let n=this[t],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*e)),n},Buffer.prototype.readIntBE=function readIntBE(t,e,r){t>>>=0,e>>>=0,r||checkOffset(t,e,this.length);let n=e,i=1,o=this[t+--n];for(;n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},Buffer.prototype.readInt8=function readInt8(t,e){return t>>>=0,e||checkOffset(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},Buffer.prototype.readInt16LE=function readInt16LE(t,e){t>>>=0,e||checkOffset(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt16BE=function readInt16BE(t,e){t>>>=0,e||checkOffset(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt32LE=function readInt32LE(t,e){return t>>>=0,e||checkOffset(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},Buffer.prototype.readInt32BE=function readInt32BE(t,e){return t>>>=0,e||checkOffset(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},Buffer.prototype.readBigInt64LE=defineBigIntMethod((function readBigInt64LE(t){validateNumber(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||boundsError(t,this.length-8);const n=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||boundsError(t,this.length-8);const n=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(n)<>>=0,e||checkOffset(t,4,this.length),i.read(this,t,!0,23,4)},Buffer.prototype.readFloatBE=function readFloatBE(t,e){return t>>>=0,e||checkOffset(t,4,this.length),i.read(this,t,!1,23,4)},Buffer.prototype.readDoubleLE=function readDoubleLE(t,e){return t>>>=0,e||checkOffset(t,8,this.length),i.read(this,t,!0,52,8)},Buffer.prototype.readDoubleBE=function readDoubleBE(t,e){return t>>>=0,e||checkOffset(t,8,this.length),i.read(this,t,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(t,e,r,n){if(t=+t,e>>>=0,r>>>=0,!n){checkInt(this,t,e,r,Math.pow(2,8*r)-1,0)}let i=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,!n){checkInt(this,t,e,r,Math.pow(2,8*r)-1,0)}let i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,1,255,0),this[e]=255&t,e+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},Buffer.prototype.writeBigUInt64LE=defineBigIntMethod((function writeBigUInt64LE(t,e=0){return wrtBigUInt64LE(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeBigUInt64BE=defineBigIntMethod((function writeBigUInt64BE(t,e=0){return wrtBigUInt64BE(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeIntLE=function writeIntLE(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);checkInt(this,t,e,r,n-1,-n)}let i=0,o=1,a=0;for(this[e]=255&t;++i>0)-a&255;return e+r},Buffer.prototype.writeIntBE=function writeIntBE(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);checkInt(this,t,e,r,n-1,-n)}let i=r-1,o=1,a=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&0===a&&0!==this[e+i+1]&&(a=1),this[e+i]=(t/o>>0)-a&255;return e+r},Buffer.prototype.writeInt8=function writeInt8(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},Buffer.prototype.writeInt16LE=function writeInt16LE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},Buffer.prototype.writeInt16BE=function writeInt16BE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},Buffer.prototype.writeInt32LE=function writeInt32LE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},Buffer.prototype.writeInt32BE=function writeInt32BE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},Buffer.prototype.writeBigInt64LE=defineBigIntMethod((function writeBigInt64LE(t,e=0){return wrtBigUInt64LE(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeBigInt64BE=defineBigIntMethod((function writeBigInt64BE(t,e=0){return wrtBigUInt64BE(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeFloatLE=function writeFloatLE(t,e,r){return writeFloat(this,t,e,!0,r)},Buffer.prototype.writeFloatBE=function writeFloatBE(t,e,r){return writeFloat(this,t,e,!1,r)},Buffer.prototype.writeDoubleLE=function writeDoubleLE(t,e,r){return writeDouble(this,t,e,!0,r)},Buffer.prototype.writeDoubleBE=function writeDoubleBE(t,e,r){return writeDouble(this,t,e,!1,r)},Buffer.prototype.copy=function copy(t,e,r,n){if(!Buffer.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(i=e;i=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function checkIntBI(t,e,r,n,i,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${e}${n} and <= ${r}${n}`,new u.ERR_OUT_OF_RANGE("value",i,t)}!function checkBounds(t,e,r){validateNumber(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||boundsError(e,t.length-(r+1))}(n,i,o)}function validateNumber(t,e){if("number"!=typeof t)throw new u.ERR_INVALID_ARG_TYPE(e,"number",t)}function boundsError(t,e,r){if(Math.floor(t)!==t)throw validateNumber(t,r),new u.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new u.ERR_BUFFER_OUT_OF_BOUNDS;throw new u.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}E("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),E("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),E("ERR_OUT_OF_RANGE",(function(t,e,r){let n=`The value of "${t}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=addNumericalSeparator(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=addNumericalSeparator(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n}),RangeError);const c=/[^+/0-9A-Za-z-_]/g;function utf8ToBytes(t,e){let r;e=e||1/0;const n=t.length;let i=null;const o=[];for(let a=0;a55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function base64ToBytes(t){return n.toByteArray(function base64clean(t){if((t=(t=t.split("=")[0]).trim().replace(c,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function blitBuffer(t,e,r,n){let i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function isInstance(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function numberIsNaN(t){return t!=t}const f=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)e[n+i]=t[r]+t[i]}return e}();function defineBigIntMethod(t){return"undefined"==typeof BigInt?BufferBigIntNotDefined:t}function BufferBigIntNotDefined(){throw new Error("BigInt not supported")}},93:(t,e,r)=>{var n=r(8196);t.exports=n},5362:(t,e,r)=>{var n=r(3383);t.exports=n},3536:(t,e,r)=>{var n=r(1910);t.exports=n},281:(t,e,r)=>{var n=r(2547);r(7522),r(3975),r(5414),t.exports=n},31:(t,e,r)=>{var n=r(6509);t.exports=n},7487:(t,e,r)=>{var n=r(5774);t.exports=n},7700:(t,e,r)=>{r(3381);var n=r(5703);t.exports=n("Function").bind},6246:(t,e,r)=>{var n=r(7046),i=r(7700),o=Function.prototype;t.exports=function(t){var e=t.bind;return t===o||n(o,t)&&e===o.bind?i:e}},5999:(t,e,r)=>{r(9221);var n=r(4058);t.exports=n.Object.assign},8171:(t,e,r)=>{r(6450);var n=r(4058).Object,i=t.exports=function defineProperty(t,e,r){return n.defineProperty(t,e,r)};n.defineProperty.sham&&(i.sham=!0)},7473:(t,e,r)=>{r(5906),r(5967),r(5824),r(8555),r(2615),r(1732),r(5903),r(1825),r(8394),r(5915),r(1766),r(2737),r(9911),r(4315),r(3131),r(4714),r(659),r(9120),r(5327),r(1502);var n=r(4058);t.exports=n.Symbol},4227:(t,e,r)=>{r(6274),r(5967),r(7971),r(1825);var n=r(1477);t.exports=n.f("iterator")},2978:(t,e,r)=>{r(8084),r(3131);var n=r(1477);t.exports=n.f("toPrimitive")},4122:(t,e,r)=>{t.exports=r(9097)},269:(t,e,r)=>{t.exports=r(6936)},3685:(t,e,r)=>{t.exports=r(621)},6600:(t,e,r)=>{t.exports=r(2201)},9759:(t,e,r)=>{t.exports=r(7398)},1384:(t,e,r)=>{t.exports=r(6189)},9097:(t,e,r)=>{var n=r(93);t.exports=n},6936:(t,e,r)=>{var n=r(5362);t.exports=n},621:(t,e,r)=>{var n=r(3536);t.exports=n},2201:(t,e,r)=>{var n=r(281);r(8783),r(7618),r(6989),r(5799),r(6774),r(2731),r(5605),r(1943),r(620),r(6172),t.exports=n},7398:(t,e,r)=>{var n=r(31);t.exports=n},6189:(t,e,r)=>{var n=r(7487);t.exports=n},4883:(t,e,r)=>{var n=r(7475),i=r(9826),o=TypeError;t.exports=function(t){if(n(t))return t;throw o(i(t)+" is not a function")}},1851:(t,e,r)=>{var n=r(7475),i=String,o=TypeError;t.exports=function(t){if("object"==typeof t||n(t))return t;throw o("Can't set "+i(t)+" as a prototype")}},8479:t=>{t.exports=function(){}},6059:(t,e,r)=>{var n=r(941),i=String,o=TypeError;t.exports=function(t){if(n(t))return t;throw o(i(t)+" is not an object")}},1692:(t,e,r)=>{var n=r(4529),i=r(9413),o=r(623),createMethod=function(t){return function(e,r,a){var s,u=n(e),c=o(u),f=i(a,c);if(t&&r!=r){for(;c>f;)if((s=u[f++])!=s)return!0}else for(;c>f;f++)if((t||f in u)&&u[f]===r)return t||f||0;return!t&&-1}};t.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},3610:(t,e,r)=>{var n=r(6843),i=r(5329),o=r(7026),a=r(9678),s=r(623),u=r(4692),c=i([].push),createMethod=function(t){var e=1==t,r=2==t,i=3==t,f=4==t,l=6==t,p=7==t,h=5==t||l;return function(d,M,w,g){for(var _,v,I=a(d),m=o(I),j=n(M,w),b=s(m),x=0,A=g||u,T=e?A(d,b):r||p?A(d,0):void 0;b>x;x++)if((h||x in m)&&(v=j(_=m[x],x,I),t))if(e)T[x]=v;else if(v)switch(t){case 3:return!0;case 5:return _;case 6:return x;case 2:c(T,_)}else switch(t){case 4:return!1;case 7:c(T,_)}return l?-1:i||f?f:T}};t.exports={forEach:createMethod(0),map:createMethod(1),filter:createMethod(2),some:createMethod(3),every:createMethod(4),find:createMethod(5),findIndex:createMethod(6),filterReject:createMethod(7)}},568:(t,e,r)=>{var n=r(5981),i=r(9813),o=r(3385),a=i("species");t.exports=function(t){return o>=51||!n((function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},5790:(t,e,r)=>{var n=r(9413),i=r(623),o=r(5449),a=Array,s=Math.max;t.exports=function(t,e,r){for(var u=i(t),c=n(e,u),f=n(void 0===r?u:r,u),l=a(s(f-c,0)),p=0;c{var n=r(5329);t.exports=n([].slice)},5693:(t,e,r)=>{var n=r(1052),i=r(4284),o=r(941),a=r(9813)("species"),s=Array;t.exports=function(t){var e;return n(t)&&(e=t.constructor,(i(e)&&(e===s||n(e.prototype))||o(e)&&null===(e=e[a]))&&(e=void 0)),void 0===e?s:e}},4692:(t,e,r)=>{var n=r(5693);t.exports=function(t,e){return new(n(t))(0===e?0:e)}},2532:(t,e,r)=>{var n=r(5329),i=n({}.toString),o=n("".slice);t.exports=function(t){return o(i(t),8,-1)}},9697:(t,e,r)=>{var n=r(2885),i=r(7475),o=r(2532),a=r(9813)("toStringTag"),s=Object,u="Arguments"==o(function(){return arguments}());t.exports=n?o:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=s(t),a))?r:u?o(e):"Object"==(n=o(e))&&i(e.callee)?"Arguments":n}},4160:(t,e,r)=>{var n=r(5981);t.exports=!n((function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype}))},3538:t=>{t.exports=function(t,e){return{value:t,done:e}}},2029:(t,e,r)=>{var n=r(5746),i=r(5988),o=r(1887);t.exports=n?function(t,e,r){return i.f(t,e,o(1,r))}:function(t,e,r){return t[e]=r,t}},1887:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},5449:(t,e,r)=>{"use strict";var n=r(3894),i=r(5988),o=r(1887);t.exports=function(t,e,r){var a=n(e);a in t?i.f(t,a,o(0,r)):t[a]=r}},9202:(t,e,r)=>{var n=r(5988);t.exports=function(t,e,r){return n.f(t,e,r)}},5929:(t,e,r)=>{var n=r(2029);t.exports=function(t,e,r,i){return i&&i.enumerable?t[e]=r:n(t,e,r),t}},5609:(t,e,r)=>{var n=r(1899),i=Object.defineProperty;t.exports=function(t,e){try{i(n,t,{value:e,configurable:!0,writable:!0})}catch(r){n[t]=e}return e}},5746:(t,e,r)=>{var n=r(5981);t.exports=!n((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},6616:t=>{var e="object"==typeof document&&document.all,r=void 0===e&&void 0!==e;t.exports={all:e,IS_HTMLDDA:r}},1333:(t,e,r)=>{var n=r(1899),i=r(941),o=n.document,a=i(o)&&i(o.createElement);t.exports=function(t){return a?o.createElement(t):{}}},6796:t=>{var e=TypeError;t.exports=function(t){if(t>9007199254740991)throw e("Maximum allowed index exceeded");return t}},3281:t=>{t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},2861:t=>{t.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},3385:(t,e,r)=>{var n,i,o=r(1899),a=r(2861),s=o.process,u=o.Deno,c=s&&s.versions||u&&u.version,f=c&&c.v8;f&&(i=(n=f.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!i&&a&&(!(n=a.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=a.match(/Chrome\/(\d+)/))&&(i=+n[1]),t.exports=i},5703:(t,e,r)=>{var n=r(4058);t.exports=function(t){return n[t+"Prototype"]}},6759:t=>{t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},6887:(t,e,r)=>{"use strict";var n=r(1899),i=r(9730),o=r(7484),a=r(7475),s=r(9677).f,u=r(7252),c=r(4058),f=r(6843),l=r(2029),p=r(953),wrapConstructor=function(t){var Wrapper=function(e,r,n){if(this instanceof Wrapper){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return i(t,this,arguments)};return Wrapper.prototype=t.prototype,Wrapper};t.exports=function(t,e){var r,i,h,d,M,w,g,_,v,I=t.target,m=t.global,j=t.stat,b=t.proto,x=m?n:j?n[I]:(n[I]||{}).prototype,A=m?c:c[I]||l(c,I,{})[I],T=A.prototype;for(d in e)i=!(r=u(m?d:I+(j?".":"#")+d,t.forced))&&x&&p(x,d),w=A[d],i&&(g=t.dontCallGetSet?(v=s(x,d))&&v.value:x[d]),M=i&&g?g:e[d],i&&typeof w==typeof M||(_=t.bind&&i?f(M,n):t.wrap&&i?wrapConstructor(M):b&&a(M)?o(M):M,(t.sham||M&&M.sham||w&&w.sham)&&l(_,"sham",!0),l(A,d,_),b&&(p(c,h=I+"Prototype")||l(c,h,{}),l(c[h],d,M),t.real&&T&&(r||!T[d])&&l(T,d,M)))}},5981:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},9730:(t,e,r)=>{var n=r(8285),i=Function.prototype,o=i.apply,a=i.call;t.exports="object"==typeof Reflect&&Reflect.apply||(n?a.bind(o):function(){return a.apply(o,arguments)})},6843:(t,e,r)=>{var n=r(7484),i=r(4883),o=r(8285),a=n(n.bind);t.exports=function(t,e){return i(t),void 0===e?t:o?a(t,e):function(){return t.apply(e,arguments)}}},8285:(t,e,r)=>{var n=r(5981);t.exports=!n((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},8308:(t,e,r)=>{"use strict";var n=r(5329),i=r(4883),o=r(941),a=r(953),s=r(3765),u=r(8285),c=Function,f=n([].concat),l=n([].join),p={};t.exports=u?c.bind:function bind(t){var e=i(this),r=e.prototype,n=s(arguments,1),u=function bound(){var r=f(n,s(arguments));return this instanceof u?function(t,e,r){if(!a(p,e)){for(var n=[],i=0;i{var n=r(8285),i=Function.prototype.call;t.exports=n?i.bind(i):function(){return i.apply(i,arguments)}},9417:(t,e,r)=>{var n=r(5746),i=r(953),o=Function.prototype,a=n&&Object.getOwnPropertyDescriptor,s=i(o,"name"),u=s&&"something"===function something(){}.name,c=s&&(!n||n&&a(o,"name").configurable);t.exports={EXISTS:s,PROPER:u,CONFIGURABLE:c}},5526:(t,e,r)=>{var n=r(5329),i=r(4883);t.exports=function(t,e,r){try{return n(i(Object.getOwnPropertyDescriptor(t,e)[r]))}catch(t){}}},7484:(t,e,r)=>{var n=r(2532),i=r(5329);t.exports=function(t){if("Function"===n(t))return i(t)}},5329:(t,e,r)=>{var n=r(8285),i=Function.prototype,o=i.call,a=n&&i.bind.bind(o,o);t.exports=n?a:function(t){return function(){return o.apply(t,arguments)}}},626:(t,e,r)=>{var n=r(4058),i=r(1899),o=r(7475),aFunction=function(t){return o(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?aFunction(n[t])||aFunction(i[t]):n[t]&&n[t][e]||i[t]&&i[t][e]}},3323:(t,e,r)=>{var n=r(5329),i=r(1052),o=r(7475),a=r(2532),s=r(5803),u=n([].push);t.exports=function(t){if(o(t))return t;if(i(t)){for(var e=t.length,r=[],n=0;n{var n=r(4883),i=r(2119);t.exports=function(t,e){var r=t[e];return i(r)?void 0:n(r)}},1899:function(t,e,r){var check=function(t){return t&&t.Math==Math&&t};t.exports=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof r.g&&r.g)||function(){return this}()||this||Function("return this")()},953:(t,e,r)=>{var n=r(5329),i=r(9678),o=n({}.hasOwnProperty);t.exports=Object.hasOwn||function hasOwn(t,e){return o(i(t),e)}},7748:t=>{t.exports={}},5463:(t,e,r)=>{var n=r(626);t.exports=n("document","documentElement")},2840:(t,e,r)=>{var n=r(5746),i=r(5981),o=r(1333);t.exports=!n&&!i((function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},7026:(t,e,r)=>{var n=r(5329),i=r(5981),o=r(2532),a=Object,s=n("".split);t.exports=i((function(){return!a("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?s(t,""):a(t)}:a},1302:(t,e,r)=>{var n=r(5329),i=r(7475),o=r(3030),a=n(Function.toString);i(o.inspectSource)||(o.inspectSource=function(t){return a(t)}),t.exports=o.inspectSource},5402:(t,e,r)=>{var n,i,o,a=r(7093),s=r(1899),u=r(941),c=r(2029),f=r(953),l=r(3030),p=r(4262),h=r(7748),d="Object already initialized",M=s.TypeError,w=s.WeakMap;if(a||l.state){var g=l.state||(l.state=new w);g.get=g.get,g.has=g.has,g.set=g.set,n=function(t,e){if(g.has(t))throw M(d);return e.facade=t,g.set(t,e),e},i=function(t){return g.get(t)||{}},o=function(t){return g.has(t)}}else{var _=p("state");h[_]=!0,n=function(t,e){if(f(t,_))throw M(d);return e.facade=t,c(t,_,e),e},i=function(t){return f(t,_)?t[_]:{}},o=function(t){return f(t,_)}}t.exports={set:n,get:i,has:o,enforce:function(t){return o(t)?i(t):n(t,{})},getterFor:function(t){return function(e){var r;if(!u(e)||(r=i(e)).type!==t)throw M("Incompatible receiver, "+t+" required");return r}}}},1052:(t,e,r)=>{var n=r(2532);t.exports=Array.isArray||function isArray(t){return"Array"==n(t)}},7475:(t,e,r)=>{var n=r(6616),i=n.all;t.exports=n.IS_HTMLDDA?function(t){return"function"==typeof t||t===i}:function(t){return"function"==typeof t}},4284:(t,e,r)=>{var n=r(5329),i=r(5981),o=r(7475),a=r(9697),s=r(626),u=r(1302),noop=function(){},c=[],f=s("Reflect","construct"),l=/^\s*(?:class|function)\b/,p=n(l.exec),h=!l.exec(noop),d=function isConstructor(t){if(!o(t))return!1;try{return f(noop,c,t),!0}catch(t){return!1}},M=function isConstructor(t){if(!o(t))return!1;switch(a(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return h||!!p(l,u(t))}catch(t){return!0}};M.sham=!0,t.exports=!f||i((function(){var t;return d(d.call)||!d(Object)||!d((function(){t=!0}))||t}))?M:d},7252:(t,e,r)=>{var n=r(5981),i=r(7475),o=/#|\.prototype\./,isForced=function(t,e){var r=s[a(t)];return r==c||r!=u&&(i(e)?n(e):!!e)},a=isForced.normalize=function(t){return String(t).replace(o,".").toLowerCase()},s=isForced.data={},u=isForced.NATIVE="N",c=isForced.POLYFILL="P";t.exports=isForced},2119:t=>{t.exports=function(t){return null==t}},941:(t,e,r)=>{var n=r(7475),i=r(6616),o=i.all;t.exports=i.IS_HTMLDDA?function(t){return"object"==typeof t?null!==t:n(t)||t===o}:function(t){return"object"==typeof t?null!==t:n(t)}},2529:t=>{t.exports=!0},6664:(t,e,r)=>{var n=r(626),i=r(7475),o=r(7046),a=r(2302),s=Object;t.exports=a?function(t){return"symbol"==typeof t}:function(t){var e=n("Symbol");return i(e)&&o(e.prototype,s(t))}},3847:(t,e,r)=>{"use strict";var n=r(5143).IteratorPrototype,i=r(9290),o=r(1887),a=r(904),s=r(2077),returnThis=function(){return this};t.exports=function(t,e,r,u){var c=e+" Iterator";return t.prototype=i(n,{next:o(+!u,r)}),a(t,c,!1,!0),s[c]=returnThis,t}},5105:(t,e,r)=>{"use strict";var n=r(6887),i=r(8834),o=r(2529),a=r(9417),s=r(7475),u=r(3847),c=r(249),f=r(8929),l=r(904),p=r(2029),h=r(5929),d=r(9813),M=r(2077),w=r(5143),g=a.PROPER,_=a.CONFIGURABLE,v=w.IteratorPrototype,I=w.BUGGY_SAFARI_ITERATORS,m=d("iterator"),j="keys",b="values",x="entries",returnThis=function(){return this};t.exports=function(t,e,r,a,d,w,A){u(r,e,a);var T,k,B,getIterationMethod=function(t){if(t===d&&W)return W;if(!I&&t in q)return q[t];switch(t){case j:return function keys(){return new r(this,t)};case b:return function values(){return new r(this,t)};case x:return function entries(){return new r(this,t)}}return function(){return new r(this)}},U=e+" Iterator",Y=!1,q=t.prototype,R=q[m]||q["@@iterator"]||d&&q[d],W=!I&&R||getIterationMethod(d),G="Array"==e&&q.entries||R;if(G&&(T=c(G.call(new t)))!==Object.prototype&&T.next&&(o||c(T)===v||(f?f(T,v):s(T[m])||h(T,m,returnThis)),l(T,U,!0,!0),o&&(M[U]=returnThis)),g&&d==b&&R&&R.name!==b&&(!o&&_?p(q,"name",b):(Y=!0,W=function values(){return i(R,this)})),d)if(k={values:getIterationMethod(b),keys:w?W:getIterationMethod(j),entries:getIterationMethod(x)},A)for(B in k)(I||Y||!(B in q))&&h(q,B,k[B]);else n({target:e,proto:!0,forced:I||Y},k);return o&&!A||q[m]===W||h(q,m,W,{name:d}),M[e]=W,k}},5143:(t,e,r)=>{"use strict";var n,i,o,a=r(5981),s=r(7475),u=r(941),c=r(9290),f=r(249),l=r(5929),p=r(9813),h=r(2529),d=p("iterator"),M=!1;[].keys&&("next"in(o=[].keys())?(i=f(f(o)))!==Object.prototype&&(n=i):M=!0),!u(n)||a((function(){var t={};return n[d].call(t)!==t}))?n={}:h&&(n=c(n)),s(n[d])||l(n,d,(function(){return this})),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:M}},2077:t=>{t.exports={}},623:(t,e,r)=>{var n=r(3057);t.exports=function(t){return n(t.length)}},5331:t=>{var e=Math.ceil,r=Math.floor;t.exports=Math.trunc||function trunc(t){var n=+t;return(n>0?r:e)(n)}},4420:(t,e,r)=>{"use strict";var n=r(5746),i=r(5329),o=r(8834),a=r(5981),s=r(4771),u=r(7857),c=r(6760),f=r(9678),l=r(7026),p=Object.assign,h=Object.defineProperty,d=i([].concat);t.exports=!p||a((function(){if(n&&1!==p({b:1},p(h({},"a",{enumerable:!0,get:function(){h(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},r=Symbol(),i="abcdefghijklmnopqrst";return t[r]=7,i.split("").forEach((function(t){e[t]=t})),7!=p({},t)[r]||s(p({},e)).join("")!=i}))?function assign(t,e){for(var r=f(t),i=arguments.length,a=1,p=u.f,h=c.f;i>a;)for(var M,w=l(arguments[a++]),g=p?d(s(w),p(w)):s(w),_=g.length,v=0;_>v;)M=g[v++],n&&!o(h,w,M)||(r[M]=w[M]);return r}:p},9290:(t,e,r)=>{var n,i=r(6059),o=r(9938),a=r(6759),s=r(7748),u=r(5463),c=r(1333),f=r(4262),l="prototype",p="script",h=f("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(t){return"<"+p+">"+t+""},NullProtoObjectViaActiveX=function(t){t.write(scriptTag("")),t.close();var e=t.parentWindow.Object;return t=null,e},NullProtoObject=function(){try{n=new ActiveXObject("htmlfile")}catch(t){}var t,e,r;NullProtoObject="undefined"!=typeof document?document.domain&&n?NullProtoObjectViaActiveX(n):(e=c("iframe"),r="java"+p+":",e.style.display="none",u.appendChild(e),e.src=String(r),(t=e.contentWindow.document).open(),t.write(scriptTag("document.F=Object")),t.close(),t.F):NullProtoObjectViaActiveX(n);for(var i=a.length;i--;)delete NullProtoObject[l][a[i]];return NullProtoObject()};s[h]=!0,t.exports=Object.create||function create(t,e){var r;return null!==t?(EmptyConstructor[l]=i(t),r=new EmptyConstructor,EmptyConstructor[l]=null,r[h]=t):r=NullProtoObject(),void 0===e?r:o.f(r,e)}},9938:(t,e,r)=>{var n=r(5746),i=r(3937),o=r(5988),a=r(6059),s=r(4529),u=r(4771);e.f=n&&!i?Object.defineProperties:function defineProperties(t,e){a(t);for(var r,n=s(e),i=u(e),c=i.length,f=0;c>f;)o.f(t,r=i[f++],n[r]);return t}},5988:(t,e,r)=>{var n=r(5746),i=r(2840),o=r(3937),a=r(6059),s=r(3894),u=TypeError,c=Object.defineProperty,f=Object.getOwnPropertyDescriptor,l="enumerable",p="configurable",h="writable";e.f=n?o?function defineProperty(t,e,r){if(a(t),e=s(e),a(r),"function"==typeof t&&"prototype"===e&&"value"in r&&h in r&&!r[h]){var n=f(t,e);n&&n[h]&&(t[e]=r.value,r={configurable:p in r?r[p]:n[p],enumerable:l in r?r[l]:n[l],writable:!1})}return c(t,e,r)}:c:function defineProperty(t,e,r){if(a(t),e=s(e),a(r),i)try{return c(t,e,r)}catch(t){}if("get"in r||"set"in r)throw u("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},9677:(t,e,r)=>{var n=r(5746),i=r(8834),o=r(6760),a=r(1887),s=r(4529),u=r(3894),c=r(953),f=r(2840),l=Object.getOwnPropertyDescriptor;e.f=n?l:function getOwnPropertyDescriptor(t,e){if(t=s(t),e=u(e),f)try{return l(t,e)}catch(t){}if(c(t,e))return a(!i(o.f,t,e),t[e])}},684:(t,e,r)=>{var n=r(2532),i=r(4529),o=r(946).f,a=r(5790),s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function getOwnPropertyNames(t){return s&&"Window"==n(t)?function(t){try{return o(t)}catch(t){return a(s)}}(t):o(i(t))}},946:(t,e,r)=>{var n=r(5629),i=r(6759).concat("length","prototype");e.f=Object.getOwnPropertyNames||function getOwnPropertyNames(t){return n(t,i)}},7857:(t,e)=>{e.f=Object.getOwnPropertySymbols},249:(t,e,r)=>{var n=r(953),i=r(7475),o=r(9678),a=r(4262),s=r(4160),u=a("IE_PROTO"),c=Object,f=c.prototype;t.exports=s?c.getPrototypeOf:function(t){var e=o(t);if(n(e,u))return e[u];var r=e.constructor;return i(r)&&e instanceof r?r.prototype:e instanceof c?f:null}},7046:(t,e,r)=>{var n=r(5329);t.exports=n({}.isPrototypeOf)},5629:(t,e,r)=>{var n=r(5329),i=r(953),o=r(4529),a=r(1692).indexOf,s=r(7748),u=n([].push);t.exports=function(t,e){var r,n=o(t),c=0,f=[];for(r in n)!i(s,r)&&i(n,r)&&u(f,r);for(;e.length>c;)i(n,r=e[c++])&&(~a(f,r)||u(f,r));return f}},4771:(t,e,r)=>{var n=r(5629),i=r(6759);t.exports=Object.keys||function keys(t){return n(t,i)}},6760:(t,e)=>{"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,i=n&&!r.call({1:2},1);e.f=i?function propertyIsEnumerable(t){var e=n(this,t);return!!e&&e.enumerable}:r},8929:(t,e,r)=>{var n=r(5526),i=r(6059),o=r(1851);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=n(Object.prototype,"__proto__","set"))(r,[]),e=r instanceof Array}catch(t){}return function setPrototypeOf(r,n){return i(r),o(n),e?t(r,n):r.__proto__=n,r}}():void 0)},5623:(t,e,r)=>{"use strict";var n=r(2885),i=r(9697);t.exports=n?{}.toString:function toString(){return"[object "+i(this)+"]"}},9811:(t,e,r)=>{var n=r(8834),i=r(7475),o=r(941),a=TypeError;t.exports=function(t,e){var r,s;if("string"===e&&i(r=t.toString)&&!o(s=n(r,t)))return s;if(i(r=t.valueOf)&&!o(s=n(r,t)))return s;if("string"!==e&&i(r=t.toString)&&!o(s=n(r,t)))return s;throw a("Can't convert object to primitive value")}},4058:t=>{t.exports={}},8219:(t,e,r)=>{var n=r(2119),i=TypeError;t.exports=function(t){if(n(t))throw i("Can't call method on "+t);return t}},904:(t,e,r)=>{var n=r(2885),i=r(5988).f,o=r(2029),a=r(953),s=r(5623),u=r(9813)("toStringTag");t.exports=function(t,e,r,c){if(t){var f=r?t:t.prototype;a(f,u)||i(f,u,{configurable:!0,value:e}),c&&!n&&o(f,"toString",s)}}},4262:(t,e,r)=>{var n=r(8726),i=r(9418),o=n("keys");t.exports=function(t){return o[t]||(o[t]=i(t))}},3030:(t,e,r)=>{var n=r(1899),i=r(5609),o="__core-js_shared__",a=n[o]||i(o,{});t.exports=a},8726:(t,e,r)=>{var n=r(2529),i=r(3030);(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.31.1",mode:n?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE",source:"https://github.com/zloirock/core-js"})},4620:(t,e,r)=>{var n=r(5329),i=r(2435),o=r(5803),a=r(8219),s=n("".charAt),u=n("".charCodeAt),c=n("".slice),createMethod=function(t){return function(e,r){var n,f,l=o(a(e)),p=i(r),h=l.length;return p<0||p>=h?t?"":void 0:(n=u(l,p))<55296||n>56319||p+1===h||(f=u(l,p+1))<56320||f>57343?t?s(l,p):n:t?c(l,p,p+2):f-56320+(n-55296<<10)+65536}};t.exports={codeAt:createMethod(!1),charAt:createMethod(!0)}},3405:(t,e,r)=>{var n=r(3385),i=r(5981),o=r(1899).String;t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var t=Symbol();return!o(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},9630:(t,e,r)=>{var n=r(8834),i=r(626),o=r(9813),a=r(5929);t.exports=function(){var t=i("Symbol"),e=t&&t.prototype,r=e&&e.valueOf,s=o("toPrimitive");e&&!e[s]&&a(e,s,(function(t){return n(r,this)}),{arity:1})}},2087:(t,e,r)=>{var n=r(626),i=r(5329),o=n("Symbol"),a=o.keyFor,s=i(o.prototype.valueOf);t.exports=o.isRegisteredSymbol||function isRegisteredSymbol(t){try{return void 0!==a(s(t))}catch(t){return!1}}},6559:(t,e,r)=>{for(var n=r(8726),i=r(626),o=r(5329),a=r(6664),s=r(9813),u=i("Symbol"),c=u.isWellKnownSymbol,f=i("Object","getOwnPropertyNames"),l=o(u.prototype.valueOf),p=n("wks"),h=0,d=f(u),M=d.length;h{var n=r(3405);t.exports=n&&!!Symbol.for&&!!Symbol.keyFor},9413:(t,e,r)=>{var n=r(2435),i=Math.max,o=Math.min;t.exports=function(t,e){var r=n(t);return r<0?i(r+e,0):o(r,e)}},4529:(t,e,r)=>{var n=r(7026),i=r(8219);t.exports=function(t){return n(i(t))}},2435:(t,e,r)=>{var n=r(5331);t.exports=function(t){var e=+t;return e!=e||0===e?0:n(e)}},3057:(t,e,r)=>{var n=r(2435),i=Math.min;t.exports=function(t){return t>0?i(n(t),9007199254740991):0}},9678:(t,e,r)=>{var n=r(8219),i=Object;t.exports=function(t){return i(n(t))}},6935:(t,e,r)=>{var n=r(8834),i=r(941),o=r(6664),a=r(4229),s=r(9811),u=r(9813),c=TypeError,f=u("toPrimitive");t.exports=function(t,e){if(!i(t)||o(t))return t;var r,u=a(t,f);if(u){if(void 0===e&&(e="default"),r=n(u,t,e),!i(r)||o(r))return r;throw c("Can't convert object to primitive value")}return void 0===e&&(e="number"),s(t,e)}},3894:(t,e,r)=>{var n=r(6935),i=r(6664);t.exports=function(t){var e=n(t,"string");return i(e)?e:e+""}},2885:(t,e,r)=>{var n={};n[r(9813)("toStringTag")]="z",t.exports="[object z]"===String(n)},5803:(t,e,r)=>{var n=r(9697),i=String;t.exports=function(t){if("Symbol"===n(t))throw TypeError("Cannot convert a Symbol value to a string");return i(t)}},9826:t=>{var e=String;t.exports=function(t){try{return e(t)}catch(t){return"Object"}}},9418:(t,e,r)=>{var n=r(5329),i=0,o=Math.random(),a=n(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+a(++i+o,36)}},2302:(t,e,r)=>{var n=r(3405);t.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},3937:(t,e,r)=>{var n=r(5746),i=r(5981);t.exports=n&&i((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},7093:(t,e,r)=>{var n=r(1899),i=r(7475),o=n.WeakMap;t.exports=i(o)&&/native code/.test(String(o))},3464:(t,e,r)=>{var n=r(4058),i=r(953),o=r(1477),a=r(5988).f;t.exports=function(t){var e=n.Symbol||(n.Symbol={});i(e,t)||a(e,t,{value:o.f(t)})}},1477:(t,e,r)=>{var n=r(9813);e.f=n},9813:(t,e,r)=>{var n=r(1899),i=r(8726),o=r(953),a=r(9418),s=r(3405),u=r(2302),c=n.Symbol,f=i("wks"),l=u?c.for||c:c&&c.withoutSetter||a;t.exports=function(t){return o(f,t)||(f[t]=s&&o(c,t)?c[t]:l("Symbol."+t)),f[t]}},5906:(t,e,r)=>{"use strict";var n=r(6887),i=r(5981),o=r(1052),a=r(941),s=r(9678),u=r(623),c=r(6796),f=r(5449),l=r(4692),p=r(568),h=r(9813),d=r(3385),M=h("isConcatSpreadable"),w=d>=51||!i((function(){var t=[];return t[M]=!1,t.concat()[0]!==t})),isConcatSpreadable=function(t){if(!a(t))return!1;var e=t[M];return void 0!==e?!!e:o(t)};n({target:"Array",proto:!0,arity:1,forced:!w||!p("concat")},{concat:function concat(t){var e,r,n,i,o,a=s(this),p=l(a,0),h=0;for(e=-1,n=arguments.length;e{"use strict";var n=r(4529),i=r(8479),o=r(2077),a=r(5402),s=r(5988).f,u=r(5105),c=r(3538),f=r(2529),l=r(5746),p="Array Iterator",h=a.set,d=a.getterFor(p);t.exports=u(Array,"Array",(function(t,e){h(this,{type:p,target:n(t),index:0,kind:e})}),(function(){var t=d(this),e=t.target,r=t.kind,n=t.index++;return!e||n>=e.length?(t.target=void 0,c(void 0,!0)):c("keys"==r?n:"values"==r?e[n]:[n,e[n]],!1)}),"values");var M=o.Arguments=o.Array;if(i("keys"),i("values"),i("entries"),!f&&l&&"values"!==M.name)try{s(M,"name",{value:"values"})}catch(t){}},8084:()=>{},3381:(t,e,r)=>{var n=r(6887),i=r(8308);n({target:"Function",proto:!0,forced:Function.bind!==i},{bind:i})},2619:(t,e,r)=>{var n=r(6887),i=r(626),o=r(9730),a=r(8834),s=r(5329),u=r(5981),c=r(7475),f=r(6664),l=r(3765),p=r(3323),h=r(3405),d=String,M=i("JSON","stringify"),w=s(/./.exec),g=s("".charAt),_=s("".charCodeAt),v=s("".replace),I=s(1..toString),m=/[\uD800-\uDFFF]/g,j=/^[\uD800-\uDBFF]$/,b=/^[\uDC00-\uDFFF]$/,x=!h||u((function(){var t=i("Symbol")();return"[null]"!=M([t])||"{}"!=M({a:t})||"{}"!=M(Object(t))})),A=u((function(){return'"\\udf06\\ud834"'!==M("\udf06\ud834")||'"\\udead"'!==M("\udead")})),stringifyWithSymbolsFix=function(t,e){var r=l(arguments),n=p(e);if(c(n)||void 0!==t&&!f(t))return r[1]=function(t,e){if(c(n)&&(e=a(n,this,d(t),e)),!f(e))return e},o(M,null,r)},fixIllFormed=function(t,e,r){var n=g(r,e-1),i=g(r,e+1);return w(j,t)&&!w(b,i)||w(b,t)&&!w(j,n)?"\\u"+I(_(t,0),16):t};M&&n({target:"JSON",stat:!0,arity:3,forced:x||A},{stringify:function stringify(t,e,r){var n=l(arguments),i=o(x?stringifyWithSymbolsFix:M,null,n);return A&&"string"==typeof i?v(i,m,fixIllFormed):i}})},9120:(t,e,r)=>{var n=r(1899);r(904)(n.JSON,"JSON",!0)},5327:()=>{},9221:(t,e,r)=>{var n=r(6887),i=r(4420);n({target:"Object",stat:!0,arity:2,forced:Object.assign!==i},{assign:i})},6450:(t,e,r)=>{var n=r(6887),i=r(5746),o=r(5988).f;n({target:"Object",stat:!0,forced:Object.defineProperty!==o,sham:!i},{defineProperty:o})},7144:(t,e,r)=>{var n=r(6887),i=r(3405),o=r(5981),a=r(7857),s=r(9678);n({target:"Object",stat:!0,forced:!i||o((function(){a.f(1)}))},{getOwnPropertySymbols:function getOwnPropertySymbols(t){var e=a.f;return e?e(s(t)):[]}})},5967:()=>{},1502:()=>{},7971:(t,e,r)=>{"use strict";var n=r(4620).charAt,i=r(5803),o=r(5402),a=r(5105),s=r(3538),u="String Iterator",c=o.set,f=o.getterFor(u);a(String,"String",(function(t){c(this,{type:u,string:i(t),index:0})}),(function next(){var t,e=f(this),r=e.string,i=e.index;return i>=r.length?s(void 0,!0):(t=n(r,i),e.index+=t.length,s(t,!1))}))},8555:(t,e,r)=>{r(3464)("asyncIterator")},8616:(t,e,r)=>{"use strict";var n=r(6887),i=r(1899),o=r(8834),a=r(5329),s=r(2529),u=r(5746),c=r(3405),f=r(5981),l=r(953),p=r(7046),h=r(6059),d=r(4529),M=r(3894),w=r(5803),g=r(1887),_=r(9290),v=r(4771),I=r(946),m=r(684),j=r(7857),b=r(9677),x=r(5988),A=r(9938),T=r(6760),k=r(5929),B=r(9202),U=r(8726),Y=r(4262),q=r(7748),R=r(9418),W=r(9813),G=r(1477),V=r(3464),H=r(9630),Z=r(904),$=r(5402),X=r(3610).forEach,tt=Y("hidden"),et="Symbol",rt="prototype",nt=$.set,it=$.getterFor(et),ot=Object[rt],at=i.Symbol,st=at&&at[rt],ut=i.TypeError,ct=i.QObject,lt=b.f,pt=x.f,ht=m.f,dt=T.f,yt=a([].push),Mt=U("symbols"),wt=U("op-symbols"),gt=U("wks"),Lt=!ct||!ct[rt]||!ct[rt].findChild,_t=u&&f((function(){return 7!=_(pt({},"a",{get:function(){return pt(this,"a",{value:7}).a}})).a}))?function(t,e,r){var n=lt(ot,e);n&&delete ot[e],pt(t,e,r),n&&t!==ot&&pt(ot,e,n)}:pt,wrap=function(t,e){var r=Mt[t]=_(st);return nt(r,{type:et,tag:t,description:e}),u||(r.description=e),r},vt=function defineProperty(t,e,r){t===ot&&vt(wt,e,r),h(t);var n=M(e);return h(r),l(Mt,n)?(r.enumerable?(l(t,tt)&&t[tt][n]&&(t[tt][n]=!1),r=_(r,{enumerable:g(0,!1)})):(l(t,tt)||pt(t,tt,g(1,{})),t[tt][n]=!0),_t(t,n,r)):pt(t,n,r)},St=function defineProperties(t,e){h(t);var r=d(e),n=v(r).concat($getOwnPropertySymbols(r));return X(n,(function(e){u&&!o(It,r,e)||vt(t,e,r[e])})),t},It=function propertyIsEnumerable(t){var e=M(t),r=o(dt,this,e);return!(this===ot&&l(Mt,e)&&!l(wt,e))&&(!(r||!l(this,e)||!l(Mt,e)||l(this,tt)&&this[tt][e])||r)},mt=function getOwnPropertyDescriptor(t,e){var r=d(t),n=M(e);if(r!==ot||!l(Mt,n)||l(wt,n)){var i=lt(r,n);return!i||!l(Mt,n)||l(r,tt)&&r[tt][n]||(i.enumerable=!0),i}},Nt=function getOwnPropertyNames(t){var e=ht(d(t)),r=[];return X(e,(function(t){l(Mt,t)||l(q,t)||yt(r,t)})),r},$getOwnPropertySymbols=function(t){var e=t===ot,r=ht(e?wt:d(t)),n=[];return X(r,(function(t){!l(Mt,t)||e&&!l(ot,t)||yt(n,Mt[t])})),n};c||(k(st=(at=function Symbol(){if(p(st,this))throw ut("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?w(arguments[0]):void 0,e=R(t),setter=function(t){this===ot&&o(setter,wt,t),l(this,tt)&&l(this[tt],e)&&(this[tt][e]=!1),_t(this,e,g(1,t))};return u&&Lt&&_t(ot,e,{configurable:!0,set:setter}),wrap(e,t)})[rt],"toString",(function toString(){return it(this).tag})),k(at,"withoutSetter",(function(t){return wrap(R(t),t)})),T.f=It,x.f=vt,A.f=St,b.f=mt,I.f=m.f=Nt,j.f=$getOwnPropertySymbols,G.f=function(t){return wrap(W(t),t)},u&&(B(st,"description",{configurable:!0,get:function description(){return it(this).description}}),s||k(ot,"propertyIsEnumerable",It,{unsafe:!0}))),n({global:!0,constructor:!0,wrap:!0,forced:!c,sham:!c},{Symbol:at}),X(v(gt),(function(t){V(t)})),n({target:et,stat:!0,forced:!c},{useSetter:function(){Lt=!0},useSimple:function(){Lt=!1}}),n({target:"Object",stat:!0,forced:!c,sham:!u},{create:function create(t,e){return void 0===e?_(t):St(_(t),e)},defineProperty:vt,defineProperties:St,getOwnPropertyDescriptor:mt}),n({target:"Object",stat:!0,forced:!c},{getOwnPropertyNames:Nt}),H(),Z(at,et),q[tt]=!0},2615:()=>{},4523:(t,e,r)=>{var n=r(6887),i=r(626),o=r(953),a=r(5803),s=r(8726),u=r(4680),c=s("string-to-symbol-registry"),f=s("symbol-to-string-registry");n({target:"Symbol",stat:!0,forced:!u},{for:function(t){var e=a(t);if(o(c,e))return c[e];var r=i("Symbol")(e);return c[e]=r,f[r]=e,r}})},1732:(t,e,r)=>{r(3464)("hasInstance")},5903:(t,e,r)=>{r(3464)("isConcatSpreadable")},1825:(t,e,r)=>{r(3464)("iterator")},5824:(t,e,r)=>{r(8616),r(4523),r(8608),r(2619),r(7144)},8608:(t,e,r)=>{var n=r(6887),i=r(953),o=r(6664),a=r(9826),s=r(8726),u=r(4680),c=s("symbol-to-string-registry");n({target:"Symbol",stat:!0,forced:!u},{keyFor:function keyFor(t){if(!o(t))throw TypeError(a(t)+" is not a symbol");if(i(c,t))return c[t]}})},5915:(t,e,r)=>{r(3464)("matchAll")},8394:(t,e,r)=>{r(3464)("match")},1766:(t,e,r)=>{r(3464)("replace")},2737:(t,e,r)=>{r(3464)("search")},9911:(t,e,r)=>{r(3464)("species")},4315:(t,e,r)=>{r(3464)("split")},3131:(t,e,r)=>{var n=r(3464),i=r(9630);n("toPrimitive"),i()},4714:(t,e,r)=>{var n=r(626),i=r(3464),o=r(904);i("toStringTag"),o(n("Symbol"),"Symbol")},659:(t,e,r)=>{r(3464)("unscopables")},7522:(t,e,r)=>{var n=r(9813),i=r(5988).f,o=n("metadata"),a=Function.prototype;void 0===a[o]&&i(a,o,{value:null})},8783:(t,e,r)=>{r(3464)("asyncDispose")},3975:(t,e,r)=>{r(3464)("dispose")},7618:(t,e,r)=>{r(6887)({target:"Symbol",stat:!0},{isRegisteredSymbol:r(2087)})},2731:(t,e,r)=>{r(6887)({target:"Symbol",stat:!0,name:"isRegisteredSymbol"},{isRegistered:r(2087)})},6989:(t,e,r)=>{r(6887)({target:"Symbol",stat:!0,forced:!0},{isWellKnownSymbol:r(6559)})},5605:(t,e,r)=>{r(6887)({target:"Symbol",stat:!0,name:"isWellKnownSymbol",forced:!0},{isWellKnown:r(6559)})},5799:(t,e,r)=>{r(3464)("matcher")},1943:(t,e,r)=>{r(3464)("metadataKey")},5414:(t,e,r)=>{r(3464)("metadata")},6774:(t,e,r)=>{r(3464)("observable")},620:(t,e,r)=>{r(3464)("patternMatch")},6172:(t,e,r)=>{r(3464)("replaceAll")},7634:(t,e,r)=>{r(6274);var n=r(3281),i=r(1899),o=r(9697),a=r(2029),s=r(2077),u=r(9813)("toStringTag");for(var c in n){var f=i[c],l=f&&f.prototype;l&&o(l)!==u&&a(l,u,c),s[c]=s.Array}},8196:(t,e,r)=>{var n=r(6246);t.exports=n},3383:(t,e,r)=>{var n=r(5999);t.exports=n},1910:(t,e,r)=>{var n=r(8171);t.exports=n},2547:(t,e,r)=>{var n=r(7473);r(7634),t.exports=n},6509:(t,e,r)=>{var n=r(4227);r(7634),t.exports=n},5774:(t,e,r)=>{var n=r(2978);t.exports=n},8269:function(t,e,r){var n;n=void 0!==r.g?r.g:this,t.exports=function(t){if(t.CSS&&t.CSS.escape)return t.CSS.escape;var cssEscape=function(t){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var e,r=String(t),n=r.length,i=-1,o="",a=r.charCodeAt(0);++i=1&&e<=31||127==e||0==i&&e>=48&&e<=57||1==i&&e>=48&&e<=57&&45==a?"\\"+e.toString(16)+" ":0==i&&1==n&&45==e||!(e>=128||45==e||95==e||e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122)?"\\"+r.charAt(i):r.charAt(i):o+="�";return o};return t.CSS||(t.CSS={}),t.CSS.escape=cssEscape,cssEscape}(n)},645:(t,e)=>{e.read=function(t,e,r,n,i){var o,a,s=8*i-n-1,u=(1<>1,f=-7,l=r?i-1:0,p=r?-1:1,h=t[e+l];for(l+=p,o=h&(1<<-f)-1,h>>=-f,f+=s;f>0;o=256*o+t[e+l],l+=p,f-=8);for(a=o&(1<<-f)-1,o>>=-f,f+=n;f>0;a=256*a+t[e+l],l+=p,f-=8);if(0===o)o=1-c;else{if(o===u)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,n),o-=c}return(h?-1:1)*a*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var a,s,u,c=8*o-i-1,f=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:o-1,d=n?1:-1,M=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=f):(a=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-a))<1&&(a--,u*=2),(e+=a+l>=1?p/u:p*Math.pow(2,1-l))*u>=2&&(a++,u/=2),a+l>=f?(s=0,a=f):a+l>=1?(s=(e*u-1)*Math.pow(2,i),a+=l):(s=e*Math.pow(2,l-1)*Math.pow(2,i),a=0));i>=8;t[r+h]=255&s,h+=d,s/=256,i-=8);for(a=a<0;t[r+h]=255&a,h+=d,a/=256,c-=8);t[r+h-d]|=128*M}},3393:function(t){t.exports=function(){"use strict";var t=Array.prototype.slice;function createClass(t,e){e&&(t.prototype=Object.create(e.prototype)),t.prototype.constructor=t}function Iterable(t){return isIterable(t)?t:Seq(t)}function KeyedIterable(t){return isKeyed(t)?t:KeyedSeq(t)}function IndexedIterable(t){return isIndexed(t)?t:IndexedSeq(t)}function SetIterable(t){return isIterable(t)&&!isAssociative(t)?t:SetSeq(t)}function isIterable(t){return!(!t||!t[e])}function isKeyed(t){return!(!t||!t[r])}function isIndexed(t){return!(!t||!t[n])}function isAssociative(t){return isKeyed(t)||isIndexed(t)}function isOrdered(t){return!(!t||!t[i])}createClass(KeyedIterable,Iterable),createClass(IndexedIterable,Iterable),createClass(SetIterable,Iterable),Iterable.isIterable=isIterable,Iterable.isKeyed=isKeyed,Iterable.isIndexed=isIndexed,Iterable.isAssociative=isAssociative,Iterable.isOrdered=isOrdered,Iterable.Keyed=KeyedIterable,Iterable.Indexed=IndexedIterable,Iterable.Set=SetIterable;var e="@@__IMMUTABLE_ITERABLE__@@",r="@@__IMMUTABLE_KEYED__@@",n="@@__IMMUTABLE_INDEXED__@@",i="@@__IMMUTABLE_ORDERED__@@",o="delete",a=5,s=1<>>0;if(""+r!==e||4294967295===r)return NaN;e=r}return e<0?ensureSize(t)+e:e}function returnTrue(){return!0}function wholeSlice(t,e,r){return(0===t||void 0!==r&&t<=-r)&&(void 0===e||void 0!==r&&e>=r)}function resolveBegin(t,e){return resolveIndex(t,e,0)}function resolveEnd(t,e){return resolveIndex(t,e,e)}function resolveIndex(t,e,r){return void 0===t?r:t<0?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}var p=0,h=1,d=2,M="function"==typeof Symbol&&Symbol.iterator,w="@@iterator",g=M||w;function Iterator(t){this.next=t}function iteratorValue(t,e,r,n){var i=0===t?e:1===t?r:[e,r];return n?n.value=i:n={value:i,done:!1},n}function iteratorDone(){return{value:void 0,done:!0}}function hasIterator(t){return!!getIteratorFn(t)}function isIterator(t){return t&&"function"==typeof t.next}function getIterator(t){var e=getIteratorFn(t);return e&&e.call(t)}function getIteratorFn(t){var e=t&&(M&&t[M]||t[w]);if("function"==typeof e)return e}function isArrayLike(t){return t&&"number"==typeof t.length}function Seq(t){return null==t?emptySequence():isIterable(t)?t.toSeq():seqFromValue(t)}function KeyedSeq(t){return null==t?emptySequence().toKeyedSeq():isIterable(t)?isKeyed(t)?t.toSeq():t.fromEntrySeq():keyedSeqFromValue(t)}function IndexedSeq(t){return null==t?emptySequence():isIterable(t)?isKeyed(t)?t.entrySeq():t.toIndexedSeq():indexedSeqFromValue(t)}function SetSeq(t){return(null==t?emptySequence():isIterable(t)?isKeyed(t)?t.entrySeq():t:indexedSeqFromValue(t)).toSetSeq()}Iterator.prototype.toString=function(){return"[Iterator]"},Iterator.KEYS=p,Iterator.VALUES=h,Iterator.ENTRIES=d,Iterator.prototype.inspect=Iterator.prototype.toSource=function(){return this.toString()},Iterator.prototype[g]=function(){return this},createClass(Seq,Iterable),Seq.of=function(){return Seq(arguments)},Seq.prototype.toSeq=function(){return this},Seq.prototype.toString=function(){return this.__toString("Seq {","}")},Seq.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},Seq.prototype.__iterate=function(t,e){return seqIterate(this,t,e,!0)},Seq.prototype.__iterator=function(t,e){return seqIterator(this,t,e,!0)},createClass(KeyedSeq,Seq),KeyedSeq.prototype.toKeyedSeq=function(){return this},createClass(IndexedSeq,Seq),IndexedSeq.of=function(){return IndexedSeq(arguments)},IndexedSeq.prototype.toIndexedSeq=function(){return this},IndexedSeq.prototype.toString=function(){return this.__toString("Seq [","]")},IndexedSeq.prototype.__iterate=function(t,e){return seqIterate(this,t,e,!1)},IndexedSeq.prototype.__iterator=function(t,e){return seqIterator(this,t,e,!1)},createClass(SetSeq,Seq),SetSeq.of=function(){return SetSeq(arguments)},SetSeq.prototype.toSetSeq=function(){return this},Seq.isSeq=isSeq,Seq.Keyed=KeyedSeq,Seq.Set=SetSeq,Seq.Indexed=IndexedSeq;var _,v,I,m="@@__IMMUTABLE_SEQ__@@";function ArraySeq(t){this._array=t,this.size=t.length}function ObjectSeq(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}function IterableSeq(t){this._iterable=t,this.size=t.length||t.size}function IteratorSeq(t){this._iterator=t,this._iteratorCache=[]}function isSeq(t){return!(!t||!t[m])}function emptySequence(){return _||(_=new ArraySeq([]))}function keyedSeqFromValue(t){var e=Array.isArray(t)?new ArraySeq(t).fromEntrySeq():isIterator(t)?new IteratorSeq(t).fromEntrySeq():hasIterator(t)?new IterableSeq(t).fromEntrySeq():"object"==typeof t?new ObjectSeq(t):void 0;if(!e)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+t);return e}function indexedSeqFromValue(t){var e=maybeIndexedSeqFromValue(t);if(!e)throw new TypeError("Expected Array or iterable object of values: "+t);return e}function seqFromValue(t){var e=maybeIndexedSeqFromValue(t)||"object"==typeof t&&new ObjectSeq(t);if(!e)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+t);return e}function maybeIndexedSeqFromValue(t){return isArrayLike(t)?new ArraySeq(t):isIterator(t)?new IteratorSeq(t):hasIterator(t)?new IterableSeq(t):void 0}function seqIterate(t,e,r,n){var i=t._cache;if(i){for(var o=i.length-1,a=0;a<=o;a++){var s=i[r?o-a:a];if(!1===e(s[1],n?s[0]:a,t))return a+1}return a}return t.__iterateUncached(e,r)}function seqIterator(t,e,r,n){var i=t._cache;if(i){var o=i.length-1,a=0;return new Iterator((function(){var t=i[r?o-a:a];return a++>o?iteratorDone():iteratorValue(e,n?t[0]:a-1,t[1])}))}return t.__iteratorUncached(e,r)}function fromJS(t,e){return e?fromJSWith(e,t,"",{"":t}):fromJSDefault(t)}function fromJSWith(t,e,r,n){return Array.isArray(e)?t.call(n,r,IndexedSeq(e).map((function(r,n){return fromJSWith(t,r,n,e)}))):isPlainObj(e)?t.call(n,r,KeyedSeq(e).map((function(r,n){return fromJSWith(t,r,n,e)}))):e}function fromJSDefault(t){return Array.isArray(t)?IndexedSeq(t).map(fromJSDefault).toList():isPlainObj(t)?KeyedSeq(t).map(fromJSDefault).toMap():t}function isPlainObj(t){return t&&(t.constructor===Object||void 0===t.constructor)}function is(t,e){if(t===e||t!=t&&e!=e)return!0;if(!t||!e)return!1;if("function"==typeof t.valueOf&&"function"==typeof e.valueOf){if((t=t.valueOf())===(e=e.valueOf())||t!=t&&e!=e)return!0;if(!t||!e)return!1}return!("function"!=typeof t.equals||"function"!=typeof e.equals||!t.equals(e))}function deepEqual(t,e){if(t===e)return!0;if(!isIterable(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||isKeyed(t)!==isKeyed(e)||isIndexed(t)!==isIndexed(e)||isOrdered(t)!==isOrdered(e))return!1;if(0===t.size&&0===e.size)return!0;var r=!isAssociative(t);if(isOrdered(t)){var n=t.entries();return e.every((function(t,e){var i=n.next().value;return i&&is(i[1],t)&&(r||is(i[0],e))}))&&n.next().done}var i=!1;if(void 0===t.size)if(void 0===e.size)"function"==typeof t.cacheResult&&t.cacheResult();else{i=!0;var o=t;t=e,e=o}var a=!0,s=e.__iterate((function(e,n){if(r?!t.has(e):i?!is(e,t.get(n,c)):!is(t.get(n,c),e))return a=!1,!1}));return a&&t.size===s}function Repeat(t,e){if(!(this instanceof Repeat))return new Repeat(t,e);if(this._value=t,this.size=void 0===e?1/0:Math.max(0,e),0===this.size){if(v)return v;v=this}}function invariant(t,e){if(!t)throw new Error(e)}function Range(t,e,r){if(!(this instanceof Range))return new Range(t,e,r);if(invariant(0!==r,"Cannot step a Range by 0"),t=t||0,void 0===e&&(e=1/0),r=void 0===r?1:Math.abs(r),en?iteratorDone():iteratorValue(t,i,r[e?n-i++:i++])}))},createClass(ObjectSeq,KeyedSeq),ObjectSeq.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},ObjectSeq.prototype.has=function(t){return this._object.hasOwnProperty(t)},ObjectSeq.prototype.__iterate=function(t,e){for(var r=this._object,n=this._keys,i=n.length-1,o=0;o<=i;o++){var a=n[e?i-o:o];if(!1===t(r[a],a,this))return o+1}return o},ObjectSeq.prototype.__iterator=function(t,e){var r=this._object,n=this._keys,i=n.length-1,o=0;return new Iterator((function(){var a=n[e?i-o:o];return o++>i?iteratorDone():iteratorValue(t,a,r[a])}))},ObjectSeq.prototype[i]=!0,createClass(IterableSeq,IndexedSeq),IterableSeq.prototype.__iterateUncached=function(t,e){if(e)return this.cacheResult().__iterate(t,e);var r=getIterator(this._iterable),n=0;if(isIterator(r))for(var i;!(i=r.next()).done&&!1!==t(i.value,n++,this););return n},IterableSeq.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var r=getIterator(this._iterable);if(!isIterator(r))return new Iterator(iteratorDone);var n=0;return new Iterator((function(){var e=r.next();return e.done?e:iteratorValue(t,n++,e.value)}))},createClass(IteratorSeq,IndexedSeq),IteratorSeq.prototype.__iterateUncached=function(t,e){if(e)return this.cacheResult().__iterate(t,e);for(var r,n=this._iterator,i=this._iteratorCache,o=0;o=n.length){var e=r.next();if(e.done)return e;n[i]=e.value}return iteratorValue(t,i,n[i++])}))},createClass(Repeat,IndexedSeq),Repeat.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Repeat.prototype.get=function(t,e){return this.has(t)?this._value:e},Repeat.prototype.includes=function(t){return is(this._value,t)},Repeat.prototype.slice=function(t,e){var r=this.size;return wholeSlice(t,e,r)?this:new Repeat(this._value,resolveEnd(e,r)-resolveBegin(t,r))},Repeat.prototype.reverse=function(){return this},Repeat.prototype.indexOf=function(t){return is(this._value,t)?0:-1},Repeat.prototype.lastIndexOf=function(t){return is(this._value,t)?this.size:-1},Repeat.prototype.__iterate=function(t,e){for(var r=0;r=0&&e=0&&rr?iteratorDone():iteratorValue(t,o++,a)}))},Range.prototype.equals=function(t){return t instanceof Range?this._start===t._start&&this._end===t._end&&this._step===t._step:deepEqual(this,t)},createClass(Collection,Iterable),createClass(KeyedCollection,Collection),createClass(IndexedCollection,Collection),createClass(SetCollection,Collection),Collection.Keyed=KeyedCollection,Collection.Indexed=IndexedCollection,Collection.Set=SetCollection;var j="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function imul(t,e){var r=65535&(t|=0),n=65535&(e|=0);return r*n+((t>>>16)*n+r*(e>>>16)<<16>>>0)|0};function smi(t){return t>>>1&1073741824|3221225471&t}function hash(t){if(!1===t||null==t)return 0;if("function"==typeof t.valueOf&&(!1===(t=t.valueOf())||null==t))return 0;if(!0===t)return 1;var e=typeof t;if("number"===e){if(t!=t||t===1/0)return 0;var r=0|t;for(r!==t&&(r^=4294967295*t);t>4294967295;)r^=t/=4294967295;return smi(r)}if("string"===e)return t.length>U?cachedHashString(t):hashString(t);if("function"==typeof t.hashCode)return t.hashCode();if("object"===e)return hashJSObj(t);if("function"==typeof t.toString)return hashString(t.toString());throw new Error("Value type "+e+" cannot be hashed.")}function cachedHashString(t){var e=R[t];return void 0===e&&(e=hashString(t),q===Y&&(q=0,R={}),q++,R[t]=e),e}function hashString(t){for(var e=0,r=0;r0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}var A,T="function"==typeof WeakMap;T&&(A=new WeakMap);var k=0,B="__immutablehash__";"function"==typeof Symbol&&(B=Symbol(B));var U=16,Y=255,q=0,R={};function assertNotInfinite(t){invariant(t!==1/0,"Cannot perform this action with an infinite size.")}function Map(t){return null==t?emptyMap():isMap(t)&&!isOrdered(t)?t:emptyMap().withMutations((function(e){var r=KeyedIterable(t);assertNotInfinite(r.size),r.forEach((function(t,r){return e.set(r,t)}))}))}function isMap(t){return!(!t||!t[G])}createClass(Map,KeyedCollection),Map.of=function(){var e=t.call(arguments,0);return emptyMap().withMutations((function(t){for(var r=0;r=e.length)throw new Error("Missing value for key: "+e[r]);t.set(e[r],e[r+1])}}))},Map.prototype.toString=function(){return this.__toString("Map {","}")},Map.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},Map.prototype.set=function(t,e){return updateMap(this,t,e)},Map.prototype.setIn=function(t,e){return this.updateIn(t,c,(function(){return e}))},Map.prototype.remove=function(t){return updateMap(this,t,c)},Map.prototype.deleteIn=function(t){return this.updateIn(t,(function(){return c}))},Map.prototype.update=function(t,e,r){return 1===arguments.length?t(this):this.updateIn([t],e,r)},Map.prototype.updateIn=function(t,e,r){r||(r=e,e=void 0);var n=updateInDeepMap(this,forceIterator(t),e,r);return n===c?void 0:n},Map.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):emptyMap()},Map.prototype.merge=function(){return mergeIntoMapWith(this,void 0,arguments)},Map.prototype.mergeWith=function(e){return mergeIntoMapWith(this,e,t.call(arguments,1))},Map.prototype.mergeIn=function(e){var r=t.call(arguments,1);return this.updateIn(e,emptyMap(),(function(t){return"function"==typeof t.merge?t.merge.apply(t,r):r[r.length-1]}))},Map.prototype.mergeDeep=function(){return mergeIntoMapWith(this,deepMerger,arguments)},Map.prototype.mergeDeepWith=function(e){var r=t.call(arguments,1);return mergeIntoMapWith(this,deepMergerWith(e),r)},Map.prototype.mergeDeepIn=function(e){var r=t.call(arguments,1);return this.updateIn(e,emptyMap(),(function(t){return"function"==typeof t.mergeDeep?t.mergeDeep.apply(t,r):r[r.length-1]}))},Map.prototype.sort=function(t){return OrderedMap(sortFactory(this,t))},Map.prototype.sortBy=function(t,e){return OrderedMap(sortFactory(this,e,t))},Map.prototype.withMutations=function(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this},Map.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new OwnerID)},Map.prototype.asImmutable=function(){return this.__ensureOwner()},Map.prototype.wasAltered=function(){return this.__altered},Map.prototype.__iterator=function(t,e){return new MapIterator(this,t,e)},Map.prototype.__iterate=function(t,e){var r=this,n=0;return this._root&&this._root.iterate((function(e){return n++,t(e[1],e[0],r)}),e),n},Map.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?makeMap(this.size,this._root,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Map.isMap=isMap;var W,G="@@__IMMUTABLE_MAP__@@",V=Map.prototype;function ArrayMapNode(t,e){this.ownerID=t,this.entries=e}function BitmapIndexedNode(t,e,r){this.ownerID=t,this.bitmap=e,this.nodes=r}function HashArrayMapNode(t,e,r){this.ownerID=t,this.count=e,this.nodes=r}function HashCollisionNode(t,e,r){this.ownerID=t,this.keyHash=e,this.entries=r}function ValueNode(t,e,r){this.ownerID=t,this.keyHash=e,this.entry=r}function MapIterator(t,e,r){this._type=e,this._reverse=r,this._stack=t._root&&mapIteratorFrame(t._root)}function mapIteratorValue(t,e){return iteratorValue(t,e[0],e[1])}function mapIteratorFrame(t,e){return{node:t,index:0,__prev:e}}function makeMap(t,e,r,n){var i=Object.create(V);return i.size=t,i._root=e,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}function emptyMap(){return W||(W=makeMap(0))}function updateMap(t,e,r){var n,i;if(t._root){var o=MakeRef(f),a=MakeRef(l);if(n=updateNode(t._root,t.__ownerID,0,void 0,e,r,o,a),!a.value)return t;i=t.size+(o.value?r===c?-1:1:0)}else{if(r===c)return t;i=1,n=new ArrayMapNode(t.__ownerID,[[e,r]])}return t.__ownerID?(t.size=i,t._root=n,t.__hash=void 0,t.__altered=!0,t):n?makeMap(i,n):emptyMap()}function updateNode(t,e,r,n,i,o,a,s){return t?t.update(e,r,n,i,o,a,s):o===c?t:(SetRef(s),SetRef(a),new ValueNode(e,n,[i,o]))}function isLeafNode(t){return t.constructor===ValueNode||t.constructor===HashCollisionNode}function mergeIntoNode(t,e,r,n,i){if(t.keyHash===n)return new HashCollisionNode(e,n,[t.entry,i]);var o,s=(0===r?t.keyHash:t.keyHash>>>r)&u,c=(0===r?n:n>>>r)&u;return new BitmapIndexedNode(e,1<>>=1)a[u]=1&r?e[o++]:void 0;return a[n]=i,new HashArrayMapNode(t,o+1,a)}function mergeIntoMapWith(t,e,r){for(var n=[],i=0;i>1&1431655765))+(t>>2&858993459))+(t>>4)&252645135,t+=t>>8,127&(t+=t>>16)}function setIn(t,e,r,n){var i=n?t:arrCopy(t);return i[e]=r,i}function spliceIn(t,e,r,n){var i=t.length+1;if(n&&e+1===i)return t[e]=r,t;for(var o=new Array(i),a=0,s=0;s=H)return createNodes(t,u,n,i);var h=t&&t===this.ownerID,d=h?u:arrCopy(u);return p?s?f===l-1?d.pop():d[f]=d.pop():d[f]=[n,i]:d.push([n,i]),h?(this.entries=d,this):new ArrayMapNode(t,d)}},BitmapIndexedNode.prototype.get=function(t,e,r,n){void 0===e&&(e=hash(r));var i=1<<((0===t?e:e>>>t)&u),o=this.bitmap;return 0==(o&i)?n:this.nodes[popCount(o&i-1)].get(t+a,e,r,n)},BitmapIndexedNode.prototype.update=function(t,e,r,n,i,o,s){void 0===r&&(r=hash(n));var f=(0===e?r:r>>>e)&u,l=1<=Z)return expandNodes(t,M,p,f,g);if(h&&!g&&2===M.length&&isLeafNode(M[1^d]))return M[1^d];if(h&&g&&1===M.length&&isLeafNode(g))return g;var _=t&&t===this.ownerID,v=h?g?p:p^l:p|l,I=h?g?setIn(M,d,g,_):spliceOut(M,d,_):spliceIn(M,d,g,_);return _?(this.bitmap=v,this.nodes=I,this):new BitmapIndexedNode(t,v,I)},HashArrayMapNode.prototype.get=function(t,e,r,n){void 0===e&&(e=hash(r));var i=(0===t?e:e>>>t)&u,o=this.nodes[i];return o?o.get(t+a,e,r,n):n},HashArrayMapNode.prototype.update=function(t,e,r,n,i,o,s){void 0===r&&(r=hash(n));var f=(0===e?r:r>>>e)&u,l=i===c,p=this.nodes,h=p[f];if(l&&!h)return this;var d=updateNode(h,t,e+a,r,n,i,o,s);if(d===h)return this;var M=this.count;if(h){if(!d&&--M<$)return packNodes(t,p,M,f)}else M++;var w=t&&t===this.ownerID,g=setIn(p,f,d,w);return w?(this.count=M,this.nodes=g,this):new HashArrayMapNode(t,M,g)},HashCollisionNode.prototype.get=function(t,e,r,n){for(var i=this.entries,o=0,a=i.length;o0&&n=0&&t>>e&u;if(n>=this.array.length)return new VNode([],t);var i,o=0===n;if(e>0){var s=this.array[n];if((i=s&&s.removeBefore(t,e-a,r))===s&&o)return this}if(o&&!i)return this;var c=editableVNode(this,t);if(!o)for(var f=0;f>>e&u;if(i>=this.array.length)return this;if(e>0){var o=this.array[i];if((n=o&&o.removeAfter(t,e-a,r))===o&&i===this.array.length-1)return this}var s=editableVNode(this,t);return s.array.splice(i+1),n&&(s.array[i]=n),s};var et,rt,nt={};function iterateList(t,e){var r=t._origin,n=t._capacity,i=getTailOffset(n),o=t._tail;return iterateNodeOrLeaf(t._root,t._level,0);function iterateNodeOrLeaf(t,e,r){return 0===e?iterateLeaf(t,r):iterateNode(t,e,r)}function iterateLeaf(t,a){var u=a===i?o&&o.array:t&&t.array,c=a>r?0:r-a,f=n-a;return f>s&&(f=s),function(){if(c===f)return nt;var t=e?--f:c++;return u&&u[t]}}function iterateNode(t,i,o){var u,c=t&&t.array,f=o>r?0:r-o>>i,l=1+(n-o>>i);return l>s&&(l=s),function(){for(;;){if(u){var t=u();if(t!==nt)return t;u=null}if(f===l)return nt;var r=e?--l:f++;u=iterateNodeOrLeaf(c&&c[r],i-a,o+(r<=t.size||e<0)return t.withMutations((function(t){e<0?setListBounds(t,e).set(0,r):setListBounds(t,0,e+1).set(e,r)}));e+=t._origin;var n=t._tail,i=t._root,o=MakeRef(l);return e>=getTailOffset(t._capacity)?n=updateVNode(n,t.__ownerID,0,e,r,o):i=updateVNode(i,t.__ownerID,t._level,e,r,o),o.value?t.__ownerID?(t._root=i,t._tail=n,t.__hash=void 0,t.__altered=!0,t):makeList(t._origin,t._capacity,t._level,i,n):t}function updateVNode(t,e,r,n,i,o){var s,c=n>>>r&u,f=t&&c0){var l=t&&t.array[c],p=updateVNode(l,e,r-a,n,i,o);return p===l?t:((s=editableVNode(t,e)).array[c]=p,s)}return f&&t.array[c]===i?t:(SetRef(o),s=editableVNode(t,e),void 0===i&&c===s.array.length-1?s.array.pop():s.array[c]=i,s)}function editableVNode(t,e){return e&&t&&e===t.ownerID?t:new VNode(t?t.array.slice():[],e)}function listNodeFor(t,e){if(e>=getTailOffset(t._capacity))return t._tail;if(e<1<0;)r=r.array[e>>>n&u],n-=a;return r}}function setListBounds(t,e,r){void 0!==e&&(e|=0),void 0!==r&&(r|=0);var n=t.__ownerID||new OwnerID,i=t._origin,o=t._capacity,s=i+e,c=void 0===r?o:r<0?o+r:i+r;if(s===i&&c===o)return t;if(s>=c)return t.clear();for(var f=t._level,l=t._root,p=0;s+p<0;)l=new VNode(l&&l.array.length?[void 0,l]:[],n),p+=1<<(f+=a);p&&(s+=p,i+=p,c+=p,o+=p);for(var h=getTailOffset(o),d=getTailOffset(c);d>=1<h?new VNode([],n):M;if(M&&d>h&&sa;_-=a){var v=h>>>_&u;g=g.array[v]=editableVNode(g.array[v],n)}g.array[h>>>a&u]=M}if(c=d)s-=d,c-=d,f=a,l=null,w=w&&w.removeBefore(n,0,s);else if(s>i||d>>f&u;if(I!==d>>>f&u)break;I&&(p+=(1<i&&(l=l.removeBefore(n,f,s-p)),l&&di&&(i=s.size),isIterable(a)||(s=s.map((function(t){return fromJS(t)}))),n.push(s)}return i>t.size&&(t=t.setSize(i)),mergeIntoCollectionWith(t,e,n)}function getTailOffset(t){return t>>a<=s&&a.size>=2*o.size?(n=(i=a.filter((function(t,e){return void 0!==t&&u!==e}))).toKeyedSeq().map((function(t){return t[0]})).flip().toMap(),t.__ownerID&&(n.__ownerID=i.__ownerID=t.__ownerID)):(n=o.remove(e),i=u===a.size-1?a.pop():a.set(u,void 0))}else if(f){if(r===a.get(u)[1])return t;n=o,i=a.set(u,[e,r])}else n=o.set(e,a.size),i=a.set(a.size,[e,r]);return t.__ownerID?(t.size=n.size,t._map=n,t._list=i,t.__hash=void 0,t):makeOrderedMap(n,i)}function ToKeyedSequence(t,e){this._iter=t,this._useKeys=e,this.size=t.size}function ToIndexedSequence(t){this._iter=t,this.size=t.size}function ToSetSequence(t){this._iter=t,this.size=t.size}function FromEntriesSequence(t){this._iter=t,this.size=t.size}function flipFactory(t){var e=makeSequence(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this);return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=cacheResultThrough,e.__iterateUncached=function(e,r){var n=this;return t.__iterate((function(t,r){return!1!==e(r,t,n)}),r)},e.__iteratorUncached=function(e,r){if(e===d){var n=t.__iterator(e,r);return new Iterator((function(){var t=n.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t}))}return t.__iterator(e===h?p:h,r)},e}function mapFactory(t,e,r){var n=makeSequence(t);return n.size=t.size,n.has=function(e){return t.has(e)},n.get=function(n,i){var o=t.get(n,c);return o===c?i:e.call(r,o,n,t)},n.__iterateUncached=function(n,i){var o=this;return t.__iterate((function(t,i,a){return!1!==n(e.call(r,t,i,a),i,o)}),i)},n.__iteratorUncached=function(n,i){var o=t.__iterator(d,i);return new Iterator((function(){var i=o.next();if(i.done)return i;var a=i.value,s=a[0];return iteratorValue(n,s,e.call(r,a[1],s,t),i)}))},n}function reverseFactory(t,e){var r=makeSequence(t);return r._iter=t,r.size=t.size,r.reverse=function(){return t},t.flip&&(r.flip=function(){var e=flipFactory(t);return e.reverse=function(){return t.flip()},e}),r.get=function(r,n){return t.get(e?r:-1-r,n)},r.has=function(r){return t.has(e?r:-1-r)},r.includes=function(e){return t.includes(e)},r.cacheResult=cacheResultThrough,r.__iterate=function(e,r){var n=this;return t.__iterate((function(t,r){return e(t,r,n)}),!r)},r.__iterator=function(e,r){return t.__iterator(e,!r)},r}function filterFactory(t,e,r,n){var i=makeSequence(t);return n&&(i.has=function(n){var i=t.get(n,c);return i!==c&&!!e.call(r,i,n,t)},i.get=function(n,i){var o=t.get(n,c);return o!==c&&e.call(r,o,n,t)?o:i}),i.__iterateUncached=function(i,o){var a=this,s=0;return t.__iterate((function(t,o,u){if(e.call(r,t,o,u))return s++,i(t,n?o:s-1,a)}),o),s},i.__iteratorUncached=function(i,o){var a=t.__iterator(d,o),s=0;return new Iterator((function(){for(;;){var o=a.next();if(o.done)return o;var u=o.value,c=u[0],f=u[1];if(e.call(r,f,c,t))return iteratorValue(i,n?c:s++,f,o)}}))},i}function countByFactory(t,e,r){var n=Map().asMutable();return t.__iterate((function(i,o){n.update(e.call(r,i,o,t),0,(function(t){return t+1}))})),n.asImmutable()}function groupByFactory(t,e,r){var n=isKeyed(t),i=(isOrdered(t)?OrderedMap():Map()).asMutable();t.__iterate((function(o,a){i.update(e.call(r,o,a,t),(function(t){return(t=t||[]).push(n?[a,o]:o),t}))}));var o=iterableClass(t);return i.map((function(e){return reify(t,o(e))}))}function sliceFactory(t,e,r,n){var i=t.size;if(void 0!==e&&(e|=0),void 0!==r&&(r===1/0?r=i:r|=0),wholeSlice(e,r,i))return t;var o=resolveBegin(e,i),a=resolveEnd(r,i);if(o!=o||a!=a)return sliceFactory(t.toSeq().cacheResult(),e,r,n);var s,u=a-o;u==u&&(s=u<0?0:u);var c=makeSequence(t);return c.size=0===s?s:t.size&&s||void 0,!n&&isSeq(t)&&s>=0&&(c.get=function(e,r){return(e=wrapIndex(this,e))>=0&&es)return iteratorDone();var t=i.next();return n||e===h?t:iteratorValue(e,u-1,e===p?void 0:t.value[1],t)}))},c}function takeWhileFactory(t,e,r){var n=makeSequence(t);return n.__iterateUncached=function(n,i){var o=this;if(i)return this.cacheResult().__iterate(n,i);var a=0;return t.__iterate((function(t,i,s){return e.call(r,t,i,s)&&++a&&n(t,i,o)})),a},n.__iteratorUncached=function(n,i){var o=this;if(i)return this.cacheResult().__iterator(n,i);var a=t.__iterator(d,i),s=!0;return new Iterator((function(){if(!s)return iteratorDone();var t=a.next();if(t.done)return t;var i=t.value,u=i[0],c=i[1];return e.call(r,c,u,o)?n===d?t:iteratorValue(n,u,c,t):(s=!1,iteratorDone())}))},n}function skipWhileFactory(t,e,r,n){var i=makeSequence(t);return i.__iterateUncached=function(i,o){var a=this;if(o)return this.cacheResult().__iterate(i,o);var s=!0,u=0;return t.__iterate((function(t,o,c){if(!s||!(s=e.call(r,t,o,c)))return u++,i(t,n?o:u-1,a)})),u},i.__iteratorUncached=function(i,o){var a=this;if(o)return this.cacheResult().__iterator(i,o);var s=t.__iterator(d,o),u=!0,c=0;return new Iterator((function(){var t,o,f;do{if((t=s.next()).done)return n||i===h?t:iteratorValue(i,c++,i===p?void 0:t.value[1],t);var l=t.value;o=l[0],f=l[1],u&&(u=e.call(r,f,o,a))}while(u);return i===d?t:iteratorValue(i,o,f,t)}))},i}function concatFactory(t,e){var r=isKeyed(t),n=[t].concat(e).map((function(t){return isIterable(t)?r&&(t=KeyedIterable(t)):t=r?keyedSeqFromValue(t):indexedSeqFromValue(Array.isArray(t)?t:[t]),t})).filter((function(t){return 0!==t.size}));if(0===n.length)return t;if(1===n.length){var i=n[0];if(i===t||r&&isKeyed(i)||isIndexed(t)&&isIndexed(i))return i}var o=new ArraySeq(n);return r?o=o.toKeyedSeq():isIndexed(t)||(o=o.toSetSeq()),(o=o.flatten(!0)).size=n.reduce((function(t,e){if(void 0!==t){var r=e.size;if(void 0!==r)return t+r}}),0),o}function flattenFactory(t,e,r){var n=makeSequence(t);return n.__iterateUncached=function(n,i){var o=0,a=!1;function flatDeep(t,s){var u=this;t.__iterate((function(t,i){return(!e||s0}function zipWithFactory(t,e,r){var n=makeSequence(t);return n.size=new ArraySeq(r).map((function(t){return t.size})).min(),n.__iterate=function(t,e){for(var r,n=this.__iterator(h,e),i=0;!(r=n.next()).done&&!1!==t(r.value,i++,this););return i},n.__iteratorUncached=function(t,n){var i=r.map((function(t){return t=Iterable(t),getIterator(n?t.reverse():t)})),o=0,a=!1;return new Iterator((function(){var r;return a||(r=i.map((function(t){return t.next()})),a=r.some((function(t){return t.done}))),a?iteratorDone():iteratorValue(t,o++,e.apply(null,r.map((function(t){return t.value}))))}))},n}function reify(t,e){return isSeq(t)?e:t.constructor(e)}function validateEntry(t){if(t!==Object(t))throw new TypeError("Expected [K, V] tuple: "+t)}function resolveSize(t){return assertNotInfinite(t.size),ensureSize(t)}function iterableClass(t){return isKeyed(t)?KeyedIterable:isIndexed(t)?IndexedIterable:SetIterable}function makeSequence(t){return Object.create((isKeyed(t)?KeyedSeq:isIndexed(t)?IndexedSeq:SetSeq).prototype)}function cacheResultThrough(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):Seq.prototype.cacheResult.call(this)}function defaultComparator(t,e){return t>e?1:t=0;r--)e={value:arguments[r],next:e};return this.__ownerID?(this.size=t,this._head=e,this.__hash=void 0,this.__altered=!0,this):makeStack(t,e)},Stack.prototype.pushAll=function(t){if(0===(t=IndexedIterable(t)).size)return this;assertNotInfinite(t.size);var e=this.size,r=this._head;return t.reverse().forEach((function(t){e++,r={value:t,next:r}})),this.__ownerID?(this.size=e,this._head=r,this.__hash=void 0,this.__altered=!0,this):makeStack(e,r)},Stack.prototype.pop=function(){return this.slice(1)},Stack.prototype.unshift=function(){return this.push.apply(this,arguments)},Stack.prototype.unshiftAll=function(t){return this.pushAll(t)},Stack.prototype.shift=function(){return this.pop.apply(this,arguments)},Stack.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):emptyStack()},Stack.prototype.slice=function(t,e){if(wholeSlice(t,e,this.size))return this;var r=resolveBegin(t,this.size);if(resolveEnd(e,this.size)!==this.size)return IndexedCollection.prototype.slice.call(this,t,e);for(var n=this.size-r,i=this._head;r--;)i=i.next;return this.__ownerID?(this.size=n,this._head=i,this.__hash=void 0,this.__altered=!0,this):makeStack(n,i)},Stack.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?makeStack(this.size,this._head,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Stack.prototype.__iterate=function(t,e){if(e)return this.reverse().__iterate(t);for(var r=0,n=this._head;n&&!1!==t(n.value,r++,this);)n=n.next;return r},Stack.prototype.__iterator=function(t,e){if(e)return this.reverse().__iterator(t);var r=0,n=this._head;return new Iterator((function(){if(n){var e=n.value;return n=n.next,iteratorValue(t,r++,e)}return iteratorDone()}))},Stack.isStack=isStack;var lt,pt="@@__IMMUTABLE_STACK__@@",ht=Stack.prototype;function makeStack(t,e,r,n){var i=Object.create(ht);return i.size=t,i._head=e,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}function emptyStack(){return lt||(lt=makeStack(0))}function mixin(t,e){var keyCopier=function(r){t.prototype[r]=e[r]};return Object.keys(e).forEach(keyCopier),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(e).forEach(keyCopier),t}ht[pt]=!0,ht.withMutations=V.withMutations,ht.asMutable=V.asMutable,ht.asImmutable=V.asImmutable,ht.wasAltered=V.wasAltered,Iterable.Iterator=Iterator,mixin(Iterable,{toArray:function(){assertNotInfinite(this.size);var t=new Array(this.size||0);return this.valueSeq().__iterate((function(e,r){t[r]=e})),t},toIndexedSeq:function(){return new ToIndexedSequence(this)},toJS:function(){return this.toSeq().map((function(t){return t&&"function"==typeof t.toJS?t.toJS():t})).__toJS()},toJSON:function(){return this.toSeq().map((function(t){return t&&"function"==typeof t.toJSON?t.toJSON():t})).__toJS()},toKeyedSeq:function(){return new ToKeyedSequence(this,!0)},toMap:function(){return Map(this.toKeyedSeq())},toObject:function(){assertNotInfinite(this.size);var t={};return this.__iterate((function(e,r){t[r]=e})),t},toOrderedMap:function(){return OrderedMap(this.toKeyedSeq())},toOrderedSet:function(){return OrderedSet(isKeyed(this)?this.valueSeq():this)},toSet:function(){return Set(isKeyed(this)?this.valueSeq():this)},toSetSeq:function(){return new ToSetSequence(this)},toSeq:function(){return isIndexed(this)?this.toIndexedSeq():isKeyed(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Stack(isKeyed(this)?this.valueSeq():this)},toList:function(){return List(isKeyed(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(t,e){return 0===this.size?t+e:t+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+e},concat:function(){return reify(this,concatFactory(this,t.call(arguments,0)))},includes:function(t){return this.some((function(e){return is(e,t)}))},entries:function(){return this.__iterator(d)},every:function(t,e){assertNotInfinite(this.size);var r=!0;return this.__iterate((function(n,i,o){if(!t.call(e,n,i,o))return r=!1,!1})),r},filter:function(t,e){return reify(this,filterFactory(this,t,e,!0))},find:function(t,e,r){var n=this.findEntry(t,e);return n?n[1]:r},forEach:function(t,e){return assertNotInfinite(this.size),this.__iterate(e?t.bind(e):t)},join:function(t){assertNotInfinite(this.size),t=void 0!==t?""+t:",";var e="",r=!0;return this.__iterate((function(n){r?r=!1:e+=t,e+=null!=n?n.toString():""})),e},keys:function(){return this.__iterator(p)},map:function(t,e){return reify(this,mapFactory(this,t,e))},reduce:function(t,e,r){var n,i;return assertNotInfinite(this.size),arguments.length<2?i=!0:n=e,this.__iterate((function(e,o,a){i?(i=!1,n=e):n=t.call(r,n,e,o,a)})),n},reduceRight:function(t,e,r){var n=this.toKeyedSeq().reverse();return n.reduce.apply(n,arguments)},reverse:function(){return reify(this,reverseFactory(this,!0))},slice:function(t,e){return reify(this,sliceFactory(this,t,e,!0))},some:function(t,e){return!this.every(not(t),e)},sort:function(t){return reify(this,sortFactory(this,t))},values:function(){return this.__iterator(h)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(t,e){return ensureSize(t?this.toSeq().filter(t,e):this)},countBy:function(t,e){return countByFactory(this,t,e)},equals:function(t){return deepEqual(this,t)},entrySeq:function(){var t=this;if(t._cache)return new ArraySeq(t._cache);var e=t.toSeq().map(entryMapper).toIndexedSeq();return e.fromEntrySeq=function(){return t.toSeq()},e},filterNot:function(t,e){return this.filter(not(t),e)},findEntry:function(t,e,r){var n=r;return this.__iterate((function(r,i,o){if(t.call(e,r,i,o))return n=[i,r],!1})),n},findKey:function(t,e){var r=this.findEntry(t,e);return r&&r[0]},findLast:function(t,e,r){return this.toKeyedSeq().reverse().find(t,e,r)},findLastEntry:function(t,e,r){return this.toKeyedSeq().reverse().findEntry(t,e,r)},findLastKey:function(t,e){return this.toKeyedSeq().reverse().findKey(t,e)},first:function(){return this.find(returnTrue)},flatMap:function(t,e){return reify(this,flatMapFactory(this,t,e))},flatten:function(t){return reify(this,flattenFactory(this,t,!0))},fromEntrySeq:function(){return new FromEntriesSequence(this)},get:function(t,e){return this.find((function(e,r){return is(r,t)}),void 0,e)},getIn:function(t,e){for(var r,n=this,i=forceIterator(t);!(r=i.next()).done;){var o=r.value;if((n=n&&n.get?n.get(o,c):c)===c)return e}return n},groupBy:function(t,e){return groupByFactory(this,t,e)},has:function(t){return this.get(t,c)!==c},hasIn:function(t){return this.getIn(t,c)!==c},isSubset:function(t){return t="function"==typeof t.includes?t:Iterable(t),this.every((function(e){return t.includes(e)}))},isSuperset:function(t){return(t="function"==typeof t.isSubset?t:Iterable(t)).isSubset(this)},keyOf:function(t){return this.findKey((function(e){return is(e,t)}))},keySeq:function(){return this.toSeq().map(keyMapper).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(t){return this.toKeyedSeq().reverse().keyOf(t)},max:function(t){return maxFactory(this,t)},maxBy:function(t,e){return maxFactory(this,e,t)},min:function(t){return maxFactory(this,t?neg(t):defaultNegComparator)},minBy:function(t,e){return maxFactory(this,e?neg(e):defaultNegComparator,t)},rest:function(){return this.slice(1)},skip:function(t){return this.slice(Math.max(0,t))},skipLast:function(t){return reify(this,this.toSeq().reverse().skip(t).reverse())},skipWhile:function(t,e){return reify(this,skipWhileFactory(this,t,e,!0))},skipUntil:function(t,e){return this.skipWhile(not(t),e)},sortBy:function(t,e){return reify(this,sortFactory(this,e,t))},take:function(t){return this.slice(0,Math.max(0,t))},takeLast:function(t){return reify(this,this.toSeq().reverse().take(t).reverse())},takeWhile:function(t,e){return reify(this,takeWhileFactory(this,t,e))},takeUntil:function(t,e){return this.takeWhile(not(t),e)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=hashIterable(this))}});var dt=Iterable.prototype;dt[e]=!0,dt[g]=dt.values,dt.__toJS=dt.toArray,dt.__toStringMapper=quoteString,dt.inspect=dt.toSource=function(){return this.toString()},dt.chain=dt.flatMap,dt.contains=dt.includes,mixin(KeyedIterable,{flip:function(){return reify(this,flipFactory(this))},mapEntries:function(t,e){var r=this,n=0;return reify(this,this.toSeq().map((function(i,o){return t.call(e,[o,i],n++,r)})).fromEntrySeq())},mapKeys:function(t,e){var r=this;return reify(this,this.toSeq().flip().map((function(n,i){return t.call(e,n,i,r)})).flip())}});var yt=KeyedIterable.prototype;function keyMapper(t,e){return e}function entryMapper(t,e){return[e,t]}function not(t){return function(){return!t.apply(this,arguments)}}function neg(t){return function(){return-t.apply(this,arguments)}}function quoteString(t){return"string"==typeof t?JSON.stringify(t):String(t)}function defaultZipper(){return arrCopy(arguments)}function defaultNegComparator(t,e){return te?-1:0}function hashIterable(t){if(t.size===1/0)return 0;var e=isOrdered(t),r=isKeyed(t),n=e?1:0;return murmurHashOfSize(t.__iterate(r?e?function(t,e){n=31*n+hashMerge(hash(t),hash(e))|0}:function(t,e){n=n+hashMerge(hash(t),hash(e))|0}:e?function(t){n=31*n+hash(t)|0}:function(t){n=n+hash(t)|0}),n)}function murmurHashOfSize(t,e){return e=j(e,3432918353),e=j(e<<15|e>>>-15,461845907),e=j(e<<13|e>>>-13,5),e=j((e=(e+3864292196|0)^t)^e>>>16,2246822507),e=smi((e=j(e^e>>>13,3266489909))^e>>>16)}function hashMerge(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}return yt[r]=!0,yt[g]=dt.entries,yt.__toJS=dt.toObject,yt.__toStringMapper=function(t,e){return JSON.stringify(e)+": "+quoteString(t)},mixin(IndexedIterable,{toKeyedSeq:function(){return new ToKeyedSequence(this,!1)},filter:function(t,e){return reify(this,filterFactory(this,t,e,!1))},findIndex:function(t,e){var r=this.findEntry(t,e);return r?r[0]:-1},indexOf:function(t){var e=this.keyOf(t);return void 0===e?-1:e},lastIndexOf:function(t){var e=this.lastKeyOf(t);return void 0===e?-1:e},reverse:function(){return reify(this,reverseFactory(this,!1))},slice:function(t,e){return reify(this,sliceFactory(this,t,e,!1))},splice:function(t,e){var r=arguments.length;if(e=Math.max(0|e,0),0===r||2===r&&!e)return this;t=resolveBegin(t,t<0?this.count():this.size);var n=this.slice(0,t);return reify(this,1===r?n:n.concat(arrCopy(arguments,2),this.slice(t+e)))},findLastIndex:function(t,e){var r=this.findLastEntry(t,e);return r?r[0]:-1},first:function(){return this.get(0)},flatten:function(t){return reify(this,flattenFactory(this,t,!1))},get:function(t,e){return(t=wrapIndex(this,t))<0||this.size===1/0||void 0!==this.size&&t>this.size?e:this.find((function(e,r){return r===t}),void 0,e)},has:function(t){return(t=wrapIndex(this,t))>=0&&(void 0!==this.size?this.size===1/0||t{"function"==typeof Object.create?t.exports=function inherits(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function inherits(t,e){if(e){t.super_=e;var TempCtor=function(){};TempCtor.prototype=e.prototype,t.prototype=new TempCtor,t.prototype.constructor=t}}},8552:(t,e,r)=>{var n=r(852)(r(5639),"DataView");t.exports=n},1989:(t,e,r)=>{var n=r(1789),i=r(401),o=r(7667),a=r(1327),s=r(1866);function Hash(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{var n=r(7040),i=r(4125),o=r(2117),a=r(7518),s=r(4705);function ListCache(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{var n=r(852)(r(5639),"Map");t.exports=n},3369:(t,e,r)=>{var n=r(4785),i=r(1285),o=r(6e3),a=r(9916),s=r(5265);function MapCache(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{var n=r(852)(r(5639),"Promise");t.exports=n},8525:(t,e,r)=>{var n=r(852)(r(5639),"Set");t.exports=n},8668:(t,e,r)=>{var n=r(3369),i=r(619),o=r(2385);function SetCache(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new n;++e{var n=r(8407),i=r(7465),o=r(3779),a=r(7599),s=r(4758),u=r(4309);function Stack(t){var e=this.__data__=new n(t);this.size=e.size}Stack.prototype.clear=i,Stack.prototype.delete=o,Stack.prototype.get=a,Stack.prototype.has=s,Stack.prototype.set=u,t.exports=Stack},2705:(t,e,r)=>{var n=r(5639).Symbol;t.exports=n},1149:(t,e,r)=>{var n=r(5639).Uint8Array;t.exports=n},577:(t,e,r)=>{var n=r(852)(r(5639),"WeakMap");t.exports=n},4963:t=>{t.exports=function arrayFilter(t,e){for(var r=-1,n=null==t?0:t.length,i=0,o=[];++r{var n=r(2545),i=r(5694),o=r(1469),a=r(4144),s=r(5776),u=r(6719),c=Object.prototype.hasOwnProperty;t.exports=function arrayLikeKeys(t,e){var r=o(t),f=!r&&i(t),l=!r&&!f&&a(t),p=!r&&!f&&!l&&u(t),h=r||f||l||p,d=h?n(t.length,String):[],M=d.length;for(var w in t)!e&&!c.call(t,w)||h&&("length"==w||l&&("offset"==w||"parent"==w)||p&&("buffer"==w||"byteLength"==w||"byteOffset"==w)||s(w,M))||d.push(w);return d}},9932:t=>{t.exports=function arrayMap(t,e){for(var r=-1,n=null==t?0:t.length,i=Array(n);++r{t.exports=function arrayPush(t,e){for(var r=-1,n=e.length,i=t.length;++r{t.exports=function arrayReduce(t,e,r,n){var i=-1,o=null==t?0:t.length;for(n&&o&&(r=t[++i]);++i{t.exports=function arraySome(t,e){for(var r=-1,n=null==t?0:t.length;++r{t.exports=function asciiToArray(t){return t.split("")}},9029:t=>{var e=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;t.exports=function asciiWords(t){return t.match(e)||[]}},4865:(t,e,r)=>{var n=r(9465),i=r(7813),o=Object.prototype.hasOwnProperty;t.exports=function assignValue(t,e,r){var a=t[e];o.call(t,e)&&i(a,r)&&(void 0!==r||e in t)||n(t,e,r)}},8470:(t,e,r)=>{var n=r(7813);t.exports=function assocIndexOf(t,e){for(var r=t.length;r--;)if(n(t[r][0],e))return r;return-1}},9465:(t,e,r)=>{var n=r(8777);t.exports=function baseAssignValue(t,e,r){"__proto__"==e&&n?n(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}},9881:(t,e,r)=>{var n=r(7816),i=r(9291)(n);t.exports=i},1848:t=>{t.exports=function baseFindIndex(t,e,r,n){for(var i=t.length,o=r+(n?1:-1);n?o--:++o{var n=r(5063)();t.exports=n},7816:(t,e,r)=>{var n=r(8483),i=r(3674);t.exports=function baseForOwn(t,e){return t&&n(t,e,i)}},7786:(t,e,r)=>{var n=r(1811),i=r(327);t.exports=function baseGet(t,e){for(var r=0,o=(e=n(e,t)).length;null!=t&&r{var n=r(2488),i=r(1469);t.exports=function baseGetAllKeys(t,e,r){var o=e(t);return i(t)?o:n(o,r(t))}},4239:(t,e,r)=>{var n=r(2705),i=r(9607),o=r(2333),a=n?n.toStringTag:void 0;t.exports=function baseGetTag(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":a&&a in Object(t)?i(t):o(t)}},13:t=>{t.exports=function baseHasIn(t,e){return null!=t&&e in Object(t)}},9454:(t,e,r)=>{var n=r(4239),i=r(7005);t.exports=function baseIsArguments(t){return i(t)&&"[object Arguments]"==n(t)}},939:(t,e,r)=>{var n=r(2492),i=r(7005);t.exports=function baseIsEqual(t,e,r,o,a){return t===e||(null==t||null==e||!i(t)&&!i(e)?t!=t&&e!=e:n(t,e,r,o,baseIsEqual,a))}},2492:(t,e,r)=>{var n=r(6384),i=r(7114),o=r(8351),a=r(6096),s=r(8882),u=r(1469),c=r(4144),f=r(6719),l="[object Arguments]",p="[object Array]",h="[object Object]",d=Object.prototype.hasOwnProperty;t.exports=function baseIsEqualDeep(t,e,r,M,w,g){var _=u(t),v=u(e),I=_?p:s(t),m=v?p:s(e),j=(I=I==l?h:I)==h,b=(m=m==l?h:m)==h,x=I==m;if(x&&c(t)){if(!c(e))return!1;_=!0,j=!1}if(x&&!j)return g||(g=new n),_||f(t)?i(t,e,r,M,w,g):o(t,e,I,r,M,w,g);if(!(1&r)){var A=j&&d.call(t,"__wrapped__"),T=b&&d.call(e,"__wrapped__");if(A||T){var k=A?t.value():t,B=T?e.value():e;return g||(g=new n),w(k,B,r,M,g)}}return!!x&&(g||(g=new n),a(t,e,r,M,w,g))}},2958:(t,e,r)=>{var n=r(6384),i=r(939);t.exports=function baseIsMatch(t,e,r,o){var a=r.length,s=a,u=!o;if(null==t)return!s;for(t=Object(t);a--;){var c=r[a];if(u&&c[2]?c[1]!==t[c[0]]:!(c[0]in t))return!1}for(;++a{var n=r(3560),i=r(5346),o=r(3218),a=r(346),s=/^\[object .+?Constructor\]$/,u=Function.prototype,c=Object.prototype,f=u.toString,l=c.hasOwnProperty,p=RegExp("^"+f.call(l).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function baseIsNative(t){return!(!o(t)||i(t))&&(n(t)?p:s).test(a(t))}},8749:(t,e,r)=>{var n=r(4239),i=r(1780),o=r(7005),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1,t.exports=function baseIsTypedArray(t){return o(t)&&i(t.length)&&!!a[n(t)]}},7206:(t,e,r)=>{var n=r(1573),i=r(6432),o=r(6557),a=r(1469),s=r(9601);t.exports=function baseIteratee(t){return"function"==typeof t?t:null==t?o:"object"==typeof t?a(t)?i(t[0],t[1]):n(t):s(t)}},280:(t,e,r)=>{var n=r(5726),i=r(6916),o=Object.prototype.hasOwnProperty;t.exports=function baseKeys(t){if(!n(t))return i(t);var e=[];for(var r in Object(t))o.call(t,r)&&"constructor"!=r&&e.push(r);return e}},1573:(t,e,r)=>{var n=r(2958),i=r(1499),o=r(2634);t.exports=function baseMatches(t){var e=i(t);return 1==e.length&&e[0][2]?o(e[0][0],e[0][1]):function(r){return r===t||n(r,t,e)}}},6432:(t,e,r)=>{var n=r(939),i=r(7361),o=r(9095),a=r(5403),s=r(9162),u=r(2634),c=r(327);t.exports=function baseMatchesProperty(t,e){return a(t)&&s(e)?u(c(t),e):function(r){var a=i(r,t);return void 0===a&&a===e?o(r,t):n(e,a,3)}}},371:t=>{t.exports=function baseProperty(t){return function(e){return null==e?void 0:e[t]}}},9152:(t,e,r)=>{var n=r(7786);t.exports=function basePropertyDeep(t){return function(e){return n(e,t)}}},8674:t=>{t.exports=function basePropertyOf(t){return function(e){return null==t?void 0:t[e]}}},4259:t=>{t.exports=function baseSlice(t,e,r){var n=-1,i=t.length;e<0&&(e=-e>i?0:i+e),(r=r>i?i:r)<0&&(r+=i),i=e>r?0:r-e>>>0,e>>>=0;for(var o=Array(i);++n{var n=r(9881);t.exports=function baseSome(t,e){var r;return n(t,(function(t,n,i){return!(r=e(t,n,i))})),!!r}},2545:t=>{t.exports=function baseTimes(t,e){for(var r=-1,n=Array(t);++r{var n=r(2705),i=r(9932),o=r(1469),a=r(3448),s=n?n.prototype:void 0,u=s?s.toString:void 0;t.exports=function baseToString(t){if("string"==typeof t)return t;if(o(t))return i(t,baseToString)+"";if(a(t))return u?u.call(t):"";var e=t+"";return"0"==e&&1/t==-Infinity?"-0":e}},7561:(t,e,r)=>{var n=r(7990),i=/^\s+/;t.exports=function baseTrim(t){return t?t.slice(0,n(t)+1).replace(i,""):t}},1717:t=>{t.exports=function baseUnary(t){return function(e){return t(e)}}},1757:t=>{t.exports=function baseZipObject(t,e,r){for(var n=-1,i=t.length,o=e.length,a={};++n{t.exports=function cacheHas(t,e){return t.has(e)}},1811:(t,e,r)=>{var n=r(1469),i=r(5403),o=r(5514),a=r(9833);t.exports=function castPath(t,e){return n(t)?t:i(t,e)?[t]:o(a(t))}},180:(t,e,r)=>{var n=r(4259);t.exports=function castSlice(t,e,r){var i=t.length;return r=void 0===r?i:r,!e&&r>=i?t:n(t,e,r)}},4429:(t,e,r)=>{var n=r(5639)["__core-js_shared__"];t.exports=n},9291:(t,e,r)=>{var n=r(8612);t.exports=function createBaseEach(t,e){return function(r,i){if(null==r)return r;if(!n(r))return t(r,i);for(var o=r.length,a=e?o:-1,s=Object(r);(e?a--:++a{t.exports=function createBaseFor(t){return function(e,r,n){for(var i=-1,o=Object(e),a=n(e),s=a.length;s--;){var u=a[t?s:++i];if(!1===r(o[u],u,o))break}return e}}},8805:(t,e,r)=>{var n=r(180),i=r(2689),o=r(3140),a=r(9833);t.exports=function createCaseFirst(t){return function(e){e=a(e);var r=i(e)?o(e):void 0,s=r?r[0]:e.charAt(0),u=r?n(r,1).join(""):e.slice(1);return s[t]()+u}}},5393:(t,e,r)=>{var n=r(2663),i=r(3816),o=r(8748),a=RegExp("['’]","g");t.exports=function createCompounder(t){return function(e){return n(o(i(e).replace(a,"")),t,"")}}},7740:(t,e,r)=>{var n=r(7206),i=r(8612),o=r(3674);t.exports=function createFind(t){return function(e,r,a){var s=Object(e);if(!i(e)){var u=n(r,3);e=o(e),r=function(t){return u(s[t],t,s)}}var c=t(e,r,a);return c>-1?s[u?e[c]:c]:void 0}}},9389:(t,e,r)=>{var n=r(8674)({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"});t.exports=n},8777:(t,e,r)=>{var n=r(852),i=function(){try{var t=n(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=i},7114:(t,e,r)=>{var n=r(8668),i=r(2908),o=r(4757);t.exports=function equalArrays(t,e,r,a,s,u){var c=1&r,f=t.length,l=e.length;if(f!=l&&!(c&&l>f))return!1;var p=u.get(t),h=u.get(e);if(p&&h)return p==e&&h==t;var d=-1,M=!0,w=2&r?new n:void 0;for(u.set(t,e),u.set(e,t);++d{var n=r(2705),i=r(1149),o=r(7813),a=r(7114),s=r(8776),u=r(1814),c=n?n.prototype:void 0,f=c?c.valueOf:void 0;t.exports=function equalByTag(t,e,r,n,c,l,p){switch(r){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!l(new i(t),new i(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var h=s;case"[object Set]":var d=1&n;if(h||(h=u),t.size!=e.size&&!d)return!1;var M=p.get(t);if(M)return M==e;n|=2,p.set(t,e);var w=a(h(t),h(e),n,c,l,p);return p.delete(t),w;case"[object Symbol]":if(f)return f.call(t)==f.call(e)}return!1}},6096:(t,e,r)=>{var n=r(8234),i=Object.prototype.hasOwnProperty;t.exports=function equalObjects(t,e,r,o,a,s){var u=1&r,c=n(t),f=c.length;if(f!=n(e).length&&!u)return!1;for(var l=f;l--;){var p=c[l];if(!(u?p in e:i.call(e,p)))return!1}var h=s.get(t),d=s.get(e);if(h&&d)return h==e&&d==t;var M=!0;s.set(t,e),s.set(e,t);for(var w=u;++l{var n="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;t.exports=n},8234:(t,e,r)=>{var n=r(8866),i=r(9551),o=r(3674);t.exports=function getAllKeys(t){return n(t,o,i)}},5050:(t,e,r)=>{var n=r(7019);t.exports=function getMapData(t,e){var r=t.__data__;return n(e)?r["string"==typeof e?"string":"hash"]:r.map}},1499:(t,e,r)=>{var n=r(9162),i=r(3674);t.exports=function getMatchData(t){for(var e=i(t),r=e.length;r--;){var o=e[r],a=t[o];e[r]=[o,a,n(a)]}return e}},852:(t,e,r)=>{var n=r(8458),i=r(7801);t.exports=function getNative(t,e){var r=i(t,e);return n(r)?r:void 0}},9607:(t,e,r)=>{var n=r(2705),i=Object.prototype,o=i.hasOwnProperty,a=i.toString,s=n?n.toStringTag:void 0;t.exports=function getRawTag(t){var e=o.call(t,s),r=t[s];try{t[s]=void 0;var n=!0}catch(t){}var i=a.call(t);return n&&(e?t[s]=r:delete t[s]),i}},9551:(t,e,r)=>{var n=r(4963),i=r(479),o=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,s=a?function(t){return null==t?[]:(t=Object(t),n(a(t),(function(e){return o.call(t,e)})))}:i;t.exports=s},8882:(t,e,r)=>{var n=r(8552),i=r(7071),o=r(3818),a=r(8525),s=r(577),u=r(4239),c=r(346),f="[object Map]",l="[object Promise]",p="[object Set]",h="[object WeakMap]",d="[object DataView]",M=c(n),w=c(i),g=c(o),_=c(a),v=c(s),I=u;(n&&I(new n(new ArrayBuffer(1)))!=d||i&&I(new i)!=f||o&&I(o.resolve())!=l||a&&I(new a)!=p||s&&I(new s)!=h)&&(I=function(t){var e=u(t),r="[object Object]"==e?t.constructor:void 0,n=r?c(r):"";if(n)switch(n){case M:return d;case w:return f;case g:return l;case _:return p;case v:return h}return e}),t.exports=I},7801:t=>{t.exports=function getValue(t,e){return null==t?void 0:t[e]}},222:(t,e,r)=>{var n=r(1811),i=r(5694),o=r(1469),a=r(5776),s=r(1780),u=r(327);t.exports=function hasPath(t,e,r){for(var c=-1,f=(e=n(e,t)).length,l=!1;++c{var e=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");t.exports=function hasUnicode(t){return e.test(t)}},3157:t=>{var e=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;t.exports=function hasUnicodeWord(t){return e.test(t)}},1789:(t,e,r)=>{var n=r(4536);t.exports=function hashClear(){this.__data__=n?n(null):{},this.size=0}},401:t=>{t.exports=function hashDelete(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},7667:(t,e,r)=>{var n=r(4536),i=Object.prototype.hasOwnProperty;t.exports=function hashGet(t){var e=this.__data__;if(n){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return i.call(e,t)?e[t]:void 0}},1327:(t,e,r)=>{var n=r(4536),i=Object.prototype.hasOwnProperty;t.exports=function hashHas(t){var e=this.__data__;return n?void 0!==e[t]:i.call(e,t)}},1866:(t,e,r)=>{var n=r(4536);t.exports=function hashSet(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=n&&void 0===e?"__lodash_hash_undefined__":e,this}},5776:t=>{var e=/^(?:0|[1-9]\d*)$/;t.exports=function isIndex(t,r){var n=typeof t;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&e.test(t))&&t>-1&&t%1==0&&t{var n=r(7813),i=r(8612),o=r(5776),a=r(3218);t.exports=function isIterateeCall(t,e,r){if(!a(r))return!1;var s=typeof e;return!!("number"==s?i(r)&&o(e,r.length):"string"==s&&e in r)&&n(r[e],t)}},5403:(t,e,r)=>{var n=r(1469),i=r(3448),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;t.exports=function isKey(t,e){if(n(t))return!1;var r=typeof t;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=t&&!i(t))||(a.test(t)||!o.test(t)||null!=e&&t in Object(e))}},7019:t=>{t.exports=function isKeyable(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},5346:(t,e,r)=>{var n,i=r(4429),o=(n=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"";t.exports=function isMasked(t){return!!o&&o in t}},5726:t=>{var e=Object.prototype;t.exports=function isPrototype(t){var r=t&&t.constructor;return t===("function"==typeof r&&r.prototype||e)}},9162:(t,e,r)=>{var n=r(3218);t.exports=function isStrictComparable(t){return t==t&&!n(t)}},7040:t=>{t.exports=function listCacheClear(){this.__data__=[],this.size=0}},4125:(t,e,r)=>{var n=r(8470),i=Array.prototype.splice;t.exports=function listCacheDelete(t){var e=this.__data__,r=n(e,t);return!(r<0)&&(r==e.length-1?e.pop():i.call(e,r,1),--this.size,!0)}},2117:(t,e,r)=>{var n=r(8470);t.exports=function listCacheGet(t){var e=this.__data__,r=n(e,t);return r<0?void 0:e[r][1]}},7518:(t,e,r)=>{var n=r(8470);t.exports=function listCacheHas(t){return n(this.__data__,t)>-1}},4705:(t,e,r)=>{var n=r(8470);t.exports=function listCacheSet(t,e){var r=this.__data__,i=n(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}},4785:(t,e,r)=>{var n=r(1989),i=r(8407),o=r(7071);t.exports=function mapCacheClear(){this.size=0,this.__data__={hash:new n,map:new(o||i),string:new n}}},1285:(t,e,r)=>{var n=r(5050);t.exports=function mapCacheDelete(t){var e=n(this,t).delete(t);return this.size-=e?1:0,e}},6e3:(t,e,r)=>{var n=r(5050);t.exports=function mapCacheGet(t){return n(this,t).get(t)}},9916:(t,e,r)=>{var n=r(5050);t.exports=function mapCacheHas(t){return n(this,t).has(t)}},5265:(t,e,r)=>{var n=r(5050);t.exports=function mapCacheSet(t,e){var r=n(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}},8776:t=>{t.exports=function mapToArray(t){var e=-1,r=Array(t.size);return t.forEach((function(t,n){r[++e]=[n,t]})),r}},2634:t=>{t.exports=function matchesStrictComparable(t,e){return function(r){return null!=r&&(r[t]===e&&(void 0!==e||t in Object(r)))}}},4569:(t,e,r)=>{var n=r(8306);t.exports=function memoizeCapped(t){var e=n(t,(function(t){return 500===r.size&&r.clear(),t})),r=e.cache;return e}},4536:(t,e,r)=>{var n=r(852)(Object,"create");t.exports=n},6916:(t,e,r)=>{var n=r(5569)(Object.keys,Object);t.exports=n},1167:(t,e,r)=>{t=r.nmd(t);var n=r(1957),i=e&&!e.nodeType&&e,o=i&&t&&!t.nodeType&&t,a=o&&o.exports===i&&n.process,s=function(){try{var t=o&&o.require&&o.require("util").types;return t||a&&a.binding&&a.binding("util")}catch(t){}}();t.exports=s},2333:t=>{var e=Object.prototype.toString;t.exports=function objectToString(t){return e.call(t)}},5569:t=>{t.exports=function overArg(t,e){return function(r){return t(e(r))}}},5639:(t,e,r)=>{var n=r(1957),i="object"==typeof self&&self&&self.Object===Object&&self,o=n||i||Function("return this")();t.exports=o},619:t=>{t.exports=function setCacheAdd(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},2385:t=>{t.exports=function setCacheHas(t){return this.__data__.has(t)}},1814:t=>{t.exports=function setToArray(t){var e=-1,r=Array(t.size);return t.forEach((function(t){r[++e]=t})),r}},7465:(t,e,r)=>{var n=r(8407);t.exports=function stackClear(){this.__data__=new n,this.size=0}},3779:t=>{t.exports=function stackDelete(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}},7599:t=>{t.exports=function stackGet(t){return this.__data__.get(t)}},4758:t=>{t.exports=function stackHas(t){return this.__data__.has(t)}},4309:(t,e,r)=>{var n=r(8407),i=r(7071),o=r(3369);t.exports=function stackSet(t,e){var r=this.__data__;if(r instanceof n){var a=r.__data__;if(!i||a.length<199)return a.push([t,e]),this.size=++r.size,this;r=this.__data__=new o(a)}return r.set(t,e),this.size=r.size,this}},3140:(t,e,r)=>{var n=r(4286),i=r(2689),o=r(676);t.exports=function stringToArray(t){return i(t)?o(t):n(t)}},5514:(t,e,r)=>{var n=r(4569),i=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,a=n((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(i,(function(t,r,n,i){e.push(n?i.replace(o,"$1"):r||t)})),e}));t.exports=a},327:(t,e,r)=>{var n=r(3448);t.exports=function toKey(t){if("string"==typeof t||n(t))return t;var e=t+"";return"0"==e&&1/t==-Infinity?"-0":e}},346:t=>{var e=Function.prototype.toString;t.exports=function toSource(t){if(null!=t){try{return e.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},7990:t=>{var e=/\s/;t.exports=function trimmedEndIndex(t){for(var r=t.length;r--&&e.test(t.charAt(r)););return r}},676:t=>{var e="\\ud800-\\udfff",r="["+e+"]",n="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",i="\\ud83c[\\udffb-\\udfff]",o="[^"+e+"]",a="(?:\\ud83c[\\udde6-\\uddff]){2}",s="[\\ud800-\\udbff][\\udc00-\\udfff]",u="(?:"+n+"|"+i+")"+"?",c="[\\ufe0e\\ufe0f]?",f=c+u+("(?:\\u200d(?:"+[o,a,s].join("|")+")"+c+u+")*"),l="(?:"+[o+n+"?",n,a,s,r].join("|")+")",p=RegExp(i+"(?="+i+")|"+l+f,"g");t.exports=function unicodeToArray(t){return t.match(p)||[]}},2757:t=>{var e="\\ud800-\\udfff",r="\\u2700-\\u27bf",n="a-z\\xdf-\\xf6\\xf8-\\xff",i="A-Z\\xc0-\\xd6\\xd8-\\xde",o="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",a="["+o+"]",s="\\d+",u="["+r+"]",c="["+n+"]",f="[^"+e+o+s+r+n+i+"]",l="(?:\\ud83c[\\udde6-\\uddff]){2}",p="[\\ud800-\\udbff][\\udc00-\\udfff]",h="["+i+"]",d="(?:"+c+"|"+f+")",M="(?:"+h+"|"+f+")",w="(?:['’](?:d|ll|m|re|s|t|ve))?",g="(?:['’](?:D|LL|M|RE|S|T|VE))?",_="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",v="[\\ufe0e\\ufe0f]?",I=v+_+("(?:\\u200d(?:"+["[^"+e+"]",l,p].join("|")+")"+v+_+")*"),m="(?:"+[u,l,p].join("|")+")"+I,j=RegExp([h+"?"+c+"+"+w+"(?="+[a,h,"$"].join("|")+")",M+"+"+g+"(?="+[a,h+d,"$"].join("|")+")",h+"?"+d+"+"+w,h+"+"+g,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",s,m].join("|"),"g");t.exports=function unicodeWords(t){return t.match(j)||[]}},1540:(t,e,r)=>{var n=r(8403),i=r(5393)((function(t,e,r){return e=e.toLowerCase(),t+(r?n(e):e)}));t.exports=i},8403:(t,e,r)=>{var n=r(9833),i=r(1700);t.exports=function capitalize(t){return i(n(t).toLowerCase())}},3816:(t,e,r)=>{var n=r(9389),i=r(9833),o=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,a=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");t.exports=function deburr(t){return(t=i(t))&&t.replace(o,n).replace(a,"")}},7813:t=>{t.exports=function eq(t,e){return t===e||t!=t&&e!=e}},3311:(t,e,r)=>{var n=r(7740)(r(998));t.exports=n},998:(t,e,r)=>{var n=r(1848),i=r(7206),o=r(554),a=Math.max;t.exports=function findIndex(t,e,r){var s=null==t?0:t.length;if(!s)return-1;var u=null==r?0:o(r);return u<0&&(u=a(s+u,0)),n(t,i(e,3),u)}},7361:(t,e,r)=>{var n=r(7786);t.exports=function get(t,e,r){var i=null==t?void 0:n(t,e);return void 0===i?r:i}},9095:(t,e,r)=>{var n=r(13),i=r(222);t.exports=function hasIn(t,e){return null!=t&&i(t,e,n)}},6557:t=>{t.exports=function identity(t){return t}},5694:(t,e,r)=>{var n=r(9454),i=r(7005),o=Object.prototype,a=o.hasOwnProperty,s=o.propertyIsEnumerable,u=n(function(){return arguments}())?n:function(t){return i(t)&&a.call(t,"callee")&&!s.call(t,"callee")};t.exports=u},1469:t=>{var e=Array.isArray;t.exports=e},8612:(t,e,r)=>{var n=r(3560),i=r(1780);t.exports=function isArrayLike(t){return null!=t&&i(t.length)&&!n(t)}},4144:(t,e,r)=>{t=r.nmd(t);var n=r(5639),i=r(5062),o=e&&!e.nodeType&&e,a=o&&t&&!t.nodeType&&t,s=a&&a.exports===o?n.Buffer:void 0,u=(s?s.isBuffer:void 0)||i;t.exports=u},3560:(t,e,r)=>{var n=r(4239),i=r(3218);t.exports=function isFunction(t){if(!i(t))return!1;var e=n(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},1780:t=>{t.exports=function isLength(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},3218:t=>{t.exports=function isObject(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},7005:t=>{t.exports=function isObjectLike(t){return null!=t&&"object"==typeof t}},3448:(t,e,r)=>{var n=r(4239),i=r(7005);t.exports=function isSymbol(t){return"symbol"==typeof t||i(t)&&"[object Symbol]"==n(t)}},6719:(t,e,r)=>{var n=r(8749),i=r(1717),o=r(1167),a=o&&o.isTypedArray,s=a?i(a):n;t.exports=s},3674:(t,e,r)=>{var n=r(4636),i=r(280),o=r(8612);t.exports=function keys(t){return o(t)?n(t):i(t)}},8306:(t,e,r)=>{var n=r(3369);function memoize(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var memoized=function(){var r=arguments,n=e?e.apply(this,r):r[0],i=memoized.cache;if(i.has(n))return i.get(n);var o=t.apply(this,r);return memoized.cache=i.set(n,o)||i,o};return memoized.cache=new(memoize.Cache||n),memoized}memoize.Cache=n,t.exports=memoize},9601:(t,e,r)=>{var n=r(371),i=r(9152),o=r(5403),a=r(327);t.exports=function property(t){return o(t)?n(a(t)):i(t)}},9704:(t,e,r)=>{var n=r(2908),i=r(7206),o=r(5076),a=r(1469),s=r(6612);t.exports=function some(t,e,r){var u=a(t)?n:o;return r&&s(t,e,r)&&(e=void 0),u(t,i(e,3))}},479:t=>{t.exports=function stubArray(){return[]}},5062:t=>{t.exports=function stubFalse(){return!1}},8601:(t,e,r)=>{var n=r(4841),i=1/0;t.exports=function toFinite(t){return t?(t=n(t))===i||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},554:(t,e,r)=>{var n=r(8601);t.exports=function toInteger(t){var e=n(t),r=e%1;return e==e?r?e-r:e:0}},4841:(t,e,r)=>{var n=r(7561),i=r(3218),o=r(3448),a=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,u=/^0o[0-7]+$/i,c=parseInt;t.exports=function toNumber(t){if("number"==typeof t)return t;if(o(t))return NaN;if(i(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=i(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=n(t);var r=s.test(t);return r||u.test(t)?c(t.slice(2),r?2:8):a.test(t)?NaN:+t}},9833:(t,e,r)=>{var n=r(531);t.exports=function toString(t){return null==t?"":n(t)}},1700:(t,e,r)=>{var n=r(8805)("toUpperCase");t.exports=n},8748:(t,e,r)=>{var n=r(9029),i=r(3157),o=r(9833),a=r(2757);t.exports=function words(t,e,r){return t=o(t),void 0===(e=r?void 0:e)?i(t)?a(t):n(t):t.match(e)||[]}},7287:(t,e,r)=>{var n=r(4865),i=r(1757);t.exports=function zipObject(t,e){return i(t||[],e||[],n)}},7418:t=>{"use strict";var e=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable;t.exports=function shouldUseNative(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach((function(t){n[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(t){return!1}}()?Object.assign:function(t,i){for(var o,a,s=function toObject(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}(t),u=1;u{var e,r,n=t.exports={};function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}function runTimeout(t){if(e===setTimeout)return setTimeout(t,0);if((e===defaultSetTimout||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(r){try{return e.call(null,t,0)}catch(r){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(t){e=defaultSetTimout}try{r="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(t){r=defaultClearTimeout}}();var i,o=[],a=!1,s=-1;function cleanUpNextTick(){a&&i&&(a=!1,i.length?o=i.concat(o):s=-1,o.length&&drainQueue())}function drainQueue(){if(!a){var t=runTimeout(cleanUpNextTick);a=!0;for(var e=o.length;e;){for(i=o,o=[];++s1)for(var r=1;r{"use strict";var n=r(4155),i=65536,o=4294967295;var a=r(9509).Buffer,s=r.g.crypto||r.g.msCrypto;s&&s.getRandomValues?t.exports=function randomBytes(t,e){if(t>o)throw new RangeError("requested too many random bytes");var r=a.allocUnsafe(t);if(t>0)if(t>i)for(var u=0;u{"use strict";var n=r(7418),i=60103,o=60106;e.Fragment=60107,e.StrictMode=60108,e.Profiler=60114;var a=60109,s=60110,u=60112;e.Suspense=60113;var c=60115,f=60116;if("function"==typeof Symbol&&Symbol.for){var l=Symbol.for;i=l("react.element"),o=l("react.portal"),e.Fragment=l("react.fragment"),e.StrictMode=l("react.strict_mode"),e.Profiler=l("react.profiler"),a=l("react.provider"),s=l("react.context"),u=l("react.forward_ref"),e.Suspense=l("react.suspense"),c=l("react.memo"),f=l("react.lazy")}var p="function"==typeof Symbol&&Symbol.iterator;function z(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;r{"use strict";t.exports=r(2408)},9509:(t,e,r)=>{var n=r(8764),i=n.Buffer;function copyProps(t,e){for(var r in t)e[r]=t[r]}function SafeBuffer(t,e,r){return i(t,e,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(copyProps(n,e),e.Buffer=SafeBuffer),SafeBuffer.prototype=Object.create(i.prototype),copyProps(i,SafeBuffer),SafeBuffer.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return i(t,e,r)},SafeBuffer.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var n=i(t);return void 0!==e?"string"==typeof r?n.fill(e,r):n.fill(e):n.fill(0),n},SafeBuffer.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i(t)},SafeBuffer.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n.SlowBuffer(t)}},4189:(t,e,r)=>{var n=r(9509).Buffer;function Hash(t,e){this._block=n.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}Hash.prototype.update=function(t,e){"string"==typeof t&&(e=e||"utf8",t=n.from(t,e));for(var r=this._block,i=this._blockSize,o=t.length,a=this._len,s=0;s=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return t?o.toString(t):o},Hash.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=Hash},9072:(t,e,r)=>{var n=t.exports=function SHA(t){t=t.toLowerCase();var e=n[t];if(!e)throw new Error(t+" is not supported (we accept pull requests)");return new e};n.sha=r(4448),n.sha1=r(8336),n.sha224=r(8432),n.sha256=r(7499),n.sha384=r(1686),n.sha512=r(8862)},4448:(t,e,r)=>{var n=r(5717),i=r(4189),o=r(9509).Buffer,a=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function Sha(){this.init(),this._w=s,i.call(this,64,56)}function rotl30(t){return t<<30|t>>>2}function ft(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}n(Sha,i),Sha.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},Sha.prototype._update=function(t){for(var e,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,s=0|this._d,u=0|this._e,c=0;c<16;++c)r[c]=t.readInt32BE(4*c);for(;c<80;++c)r[c]=r[c-3]^r[c-8]^r[c-14]^r[c-16];for(var f=0;f<80;++f){var l=~~(f/20),p=0|((e=n)<<5|e>>>27)+ft(l,i,o,s)+u+r[f]+a[l];u=s,s=o,o=rotl30(i),i=n,n=p}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0},Sha.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=Sha},8336:(t,e,r)=>{var n=r(5717),i=r(4189),o=r(9509).Buffer,a=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function Sha1(){this.init(),this._w=s,i.call(this,64,56)}function rotl5(t){return t<<5|t>>>27}function rotl30(t){return t<<30|t>>>2}function ft(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}n(Sha1,i),Sha1.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},Sha1.prototype._update=function(t){for(var e,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,s=0|this._d,u=0|this._e,c=0;c<16;++c)r[c]=t.readInt32BE(4*c);for(;c<80;++c)r[c]=(e=r[c-3]^r[c-8]^r[c-14]^r[c-16])<<1|e>>>31;for(var f=0;f<80;++f){var l=~~(f/20),p=rotl5(n)+ft(l,i,o,s)+u+r[f]+a[l]|0;u=s,s=o,o=rotl30(i),i=n,n=p}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0},Sha1.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=Sha1},8432:(t,e,r)=>{var n=r(5717),i=r(7499),o=r(4189),a=r(9509).Buffer,s=new Array(64);function Sha224(){this.init(),this._w=s,o.call(this,64,56)}n(Sha224,i),Sha224.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},Sha224.prototype._hash=function(){var t=a.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=Sha224},7499:(t,e,r)=>{var n=r(5717),i=r(4189),o=r(9509).Buffer,a=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],s=new Array(64);function Sha256(){this.init(),this._w=s,i.call(this,64,56)}function ch(t,e,r){return r^t&(e^r)}function maj(t,e,r){return t&e|r&(t|e)}function sigma0(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function sigma1(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function gamma0(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}n(Sha256,i),Sha256.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},Sha256.prototype._update=function(t){for(var e,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,s=0|this._d,u=0|this._e,c=0|this._f,f=0|this._g,l=0|this._h,p=0;p<16;++p)r[p]=t.readInt32BE(4*p);for(;p<64;++p)r[p]=0|(((e=r[p-2])>>>17|e<<15)^(e>>>19|e<<13)^e>>>10)+r[p-7]+gamma0(r[p-15])+r[p-16];for(var h=0;h<64;++h){var d=l+sigma1(u)+ch(u,c,f)+a[h]+r[h]|0,M=sigma0(n)+maj(n,i,o)|0;l=f,f=c,c=u,u=s+d|0,s=o,o=i,i=n,n=d+M|0}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0,this._f=c+this._f|0,this._g=f+this._g|0,this._h=l+this._h|0},Sha256.prototype._hash=function(){var t=o.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=Sha256},1686:(t,e,r)=>{var n=r(5717),i=r(8862),o=r(4189),a=r(9509).Buffer,s=new Array(160);function Sha384(){this.init(),this._w=s,o.call(this,128,112)}n(Sha384,i),Sha384.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},Sha384.prototype._hash=function(){var t=a.allocUnsafe(48);function writeInt64BE(e,r,n){t.writeInt32BE(e,n),t.writeInt32BE(r,n+4)}return writeInt64BE(this._ah,this._al,0),writeInt64BE(this._bh,this._bl,8),writeInt64BE(this._ch,this._cl,16),writeInt64BE(this._dh,this._dl,24),writeInt64BE(this._eh,this._el,32),writeInt64BE(this._fh,this._fl,40),t},t.exports=Sha384},8862:(t,e,r)=>{var n=r(5717),i=r(4189),o=r(9509).Buffer,a=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],s=new Array(160);function Sha512(){this.init(),this._w=s,i.call(this,128,112)}function Ch(t,e,r){return r^t&(e^r)}function maj(t,e,r){return t&e|r&(t|e)}function sigma0(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function sigma1(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function Gamma0(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function Gamma0l(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function Gamma1(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function Gamma1l(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function getCarry(t,e){return t>>>0>>0?1:0}n(Sha512,i),Sha512.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},Sha512.prototype._update=function(t){for(var e=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,o=0|this._dh,s=0|this._eh,u=0|this._fh,c=0|this._gh,f=0|this._hh,l=0|this._al,p=0|this._bl,h=0|this._cl,d=0|this._dl,M=0|this._el,w=0|this._fl,g=0|this._gl,_=0|this._hl,v=0;v<32;v+=2)e[v]=t.readInt32BE(4*v),e[v+1]=t.readInt32BE(4*v+4);for(;v<160;v+=2){var I=e[v-30],m=e[v-30+1],j=Gamma0(I,m),b=Gamma0l(m,I),x=Gamma1(I=e[v-4],m=e[v-4+1]),A=Gamma1l(m,I),T=e[v-14],k=e[v-14+1],B=e[v-32],U=e[v-32+1],Y=b+k|0,q=j+T+getCarry(Y,b)|0;q=(q=q+x+getCarry(Y=Y+A|0,A)|0)+B+getCarry(Y=Y+U|0,U)|0,e[v]=q,e[v+1]=Y}for(var R=0;R<160;R+=2){q=e[R],Y=e[R+1];var W=maj(r,n,i),G=maj(l,p,h),V=sigma0(r,l),H=sigma0(l,r),Z=sigma1(s,M),$=sigma1(M,s),X=a[R],tt=a[R+1],et=Ch(s,u,c),rt=Ch(M,w,g),nt=_+$|0,it=f+Z+getCarry(nt,_)|0;it=(it=(it=it+et+getCarry(nt=nt+rt|0,rt)|0)+X+getCarry(nt=nt+tt|0,tt)|0)+q+getCarry(nt=nt+Y|0,Y)|0;var ot=H+G|0,at=V+W+getCarry(ot,H)|0;f=c,_=g,c=u,g=w,u=s,w=M,s=o+it+getCarry(M=d+nt|0,d)|0,o=i,d=h,i=n,h=p,n=r,p=l,r=it+at+getCarry(l=nt+ot|0,nt)|0}this._al=this._al+l|0,this._bl=this._bl+p|0,this._cl=this._cl+h|0,this._dl=this._dl+d|0,this._el=this._el+M|0,this._fl=this._fl+w|0,this._gl=this._gl+g|0,this._hl=this._hl+_|0,this._ah=this._ah+r+getCarry(this._al,l)|0,this._bh=this._bh+n+getCarry(this._bl,p)|0,this._ch=this._ch+i+getCarry(this._cl,h)|0,this._dh=this._dh+o+getCarry(this._dl,d)|0,this._eh=this._eh+s+getCarry(this._el,M)|0,this._fh=this._fh+u+getCarry(this._fl,w)|0,this._gh=this._gh+c+getCarry(this._gl,g)|0,this._hh=this._hh+f+getCarry(this._hl,_)|0},Sha512.prototype._hash=function(){var t=o.allocUnsafe(64);function writeInt64BE(e,r,n){t.writeInt32BE(e,n),t.writeInt32BE(r,n+4)}return writeInt64BE(this._ah,this._al,0),writeInt64BE(this._bh,this._bl,8),writeInt64BE(this._ch,this._cl,16),writeInt64BE(this._dh,this._dl,24),writeInt64BE(this._eh,this._el,32),writeInt64BE(this._fh,this._fl,40),writeInt64BE(this._gh,this._gl,48),writeInt64BE(this._hh,this._hl,56),t},t.exports=Sha512},1125:(t,e,r)=>{var n=r(3685),i=r(7696);t.exports=function _defineProperty(t,e,r){return(e=i(e))in t?n(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t},t.exports.__esModule=!0,t.exports.default=t.exports},3101:(t,e,r)=>{var n=r(269),i=r(4122);function _extends(){var e;return t.exports=_extends=n?i(e=n).call(e):function(t){for(var e=1;e{var n=r(1384),i=r(474).default;t.exports=function _toPrimitive(t,e){if("object"!==i(t)||null===t)return t;var r=t[n];if(void 0!==r){var o=r.call(t,e||"default");if("object"!==i(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)},t.exports.__esModule=!0,t.exports.default=t.exports},7696:(t,e,r)=>{var n=r(474).default,i=r(8504);t.exports=function _toPropertyKey(t){var e=i(t,"string");return"symbol"===n(e)?e:String(e)},t.exports.__esModule=!0,t.exports.default=t.exports},474:(t,e,r)=>{var n=r(6600),i=r(9759);function _typeof(e){return t.exports=_typeof="function"==typeof n&&"symbol"==typeof i?function(t){return typeof t}:function(t){return t&&"function"==typeof n&&t.constructor===n&&t!==n.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,_typeof(e)}t.exports=_typeof,t.exports.__esModule=!0,t.exports.default=t.exports}},e={};function __webpack_require__(r){var n=e[r];if(void 0!==n)return n.exports;var i=e[r]={id:r,loaded:!1,exports:{}};return t[r].call(i.exports,i,i.exports,__webpack_require__),i.loaded=!0,i.exports}__webpack_require__.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return __webpack_require__.d(e,{a:e}),e},__webpack_require__.d=(t,e)=>{for(var r in e)__webpack_require__.o(e,r)&&!__webpack_require__.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),__webpack_require__.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),__webpack_require__.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},__webpack_require__.nmd=t=>(t.paths=[],t.children||(t.children=[]),t);var r={};return(()=>{"use strict";__webpack_require__.d(r,{default:()=>ge});var t={};__webpack_require__.r(t),__webpack_require__.d(t,{TOGGLE_CONFIGS:()=>ce,UPDATE_CONFIGS:()=>ue,loaded:()=>loaded,toggle:()=>toggle,update:()=>update});var e={};__webpack_require__.r(e),__webpack_require__.d(e,{downloadConfig:()=>downloadConfig,getConfigByUrl:()=>getConfigByUrl});var n={};__webpack_require__.r(n),__webpack_require__.d(n,{get:()=>get});var i=__webpack_require__(7294);class StandaloneLayout extends i.Component{render(){const{getComponent:t}=this.props,e=t("Container"),r=t("Row"),n=t("Col"),o=t("Topbar",!0),a=t("BaseLayout",!0),s=t("onlineValidatorBadge",!0);return i.createElement(e,{className:"swagger-ui"},o?i.createElement(o,null):null,i.createElement(a,null),i.createElement(r,null,i.createElement(n,null,i.createElement(s,null))))}}const o=StandaloneLayout,stadalone_layout=()=>({components:{StandaloneLayout:o}});var a=__webpack_require__(1125),s=__webpack_require__.n(a),u=__webpack_require__(3393),c=__webpack_require__.n(u);__webpack_require__(7967),__webpack_require__(1540),__webpack_require__(1700),__webpack_require__(8306),__webpack_require__(3311),__webpack_require__(9704),__webpack_require__(7813),__webpack_require__(3560),__webpack_require__(8269),__webpack_require__(1798),__webpack_require__(9072);const f=function makeWindow(){var t={location:{},history:{},open:()=>{},close:()=>{},File:function(){},FormData:function(){}};if("undefined"==typeof window)return t;try{t=window;for(var e of["File","Blob","FormData"])e in window&&(t[e]=window[e])}catch(t){console.error(t)}return t}();c().Set.of("type","format","items","default","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","maxItems","minItems","uniqueItems","enum","multipleOf");__webpack_require__(8764).Buffer;const parseSearch=()=>{let t={},e=f.location.search;if(!e)return{};if(""!=e){let r=e.substr(1).split("&");for(let e in r)Object.prototype.hasOwnProperty.call(r,e)&&(e=r[e].split("="),t[decodeURIComponent(e[0])]=e[1]&&decodeURIComponent(e[1])||"")}return t};class TopBar extends i.Component{constructor(t,e){super(t,e),s()(this,"onUrlChange",(t=>{let{target:{value:e}}=t;this.setState({url:e})})),s()(this,"loadSpec",(t=>{this.flushAuthData(),this.props.specActions.updateUrl(t),this.props.specActions.download(t)})),s()(this,"onUrlSelect",(t=>{let e=t.target.value||t.target.href;this.loadSpec(e),this.setSelectedUrl(e),t.preventDefault()})),s()(this,"downloadUrl",(t=>{this.loadSpec(this.state.url),t.preventDefault()})),s()(this,"setSearch",(t=>{let e=parseSearch();e["urls.primaryName"]=t.name;const r=`${window.location.protocol}//${window.location.host}${window.location.pathname}`;var n;window&&window.history&&window.history.pushState&&window.history.replaceState(null,"",`${r}?${n=e,Object.keys(n).map((t=>encodeURIComponent(t)+"="+encodeURIComponent(n[t]))).join("&")}`)})),s()(this,"setSelectedUrl",(t=>{const e=this.props.getConfigs().urls||[];e&&e.length&&t&&e.forEach(((e,r)=>{e.url===t&&(this.setState({selectedIndex:r}),this.setSearch(e))}))})),s()(this,"onFilterChange",(t=>{let{target:{value:e}}=t;this.props.layoutActions.updateFilter(e)})),this.state={url:t.specSelectors.url(),selectedIndex:0}}UNSAFE_componentWillReceiveProps(t){this.setState({url:t.specSelectors.url()})}flushAuthData(){const{persistAuthorization:t}=this.props.getConfigs();t||this.props.authActions.restoreAuthorization({authorized:{}})}componentDidMount(){const t=this.props.getConfigs(),e=t.urls||[];if(e&&e.length){var r=this.state.selectedIndex;let n=parseSearch()["urls.primaryName"]||t["urls.primaryName"];n&&e.forEach(((t,e)=>{t.name===n&&(this.setState({selectedIndex:e}),r=e)})),this.loadSpec(e[r].url)}}render(){let{getComponent:t,specSelectors:e,getConfigs:r}=this.props;const n=t("Button"),o=t("Link"),a=t("Logo");let s="loading"===e.loadingStatus();const u=["download-url-input"];"failed"===e.loadingStatus()&&u.push("failed"),s&&u.push("loading");const{urls:c}=r();let f=[],l=null;if(c){let t=[];c.forEach(((e,r)=>{t.push(i.createElement("option",{key:r,value:e.url},e.name))})),f.push(i.createElement("label",{className:"select-label",htmlFor:"select"},i.createElement("span",null,"Select a definition"),i.createElement("select",{id:"select",disabled:s,onChange:this.onUrlSelect,value:c[this.state.selectedIndex].url},t)))}else l=this.downloadUrl,f.push(i.createElement("input",{className:u.join(" "),type:"text",onChange:this.onUrlChange,value:this.state.url,disabled:s})),f.push(i.createElement(n,{className:"download-url-button",onClick:this.downloadUrl},"Explore"));return i.createElement("div",{className:"topbar"},i.createElement("div",{className:"wrapper"},i.createElement("div",{className:"topbar-wrapper"},i.createElement(o,null,i.createElement(a,null)),i.createElement("form",{className:"download-url-wrapper",onSubmit:l},f.map(((t,e)=>(0,i.cloneElement)(t,{key:e})))))))}}const l=TopBar,components_Logo=()=>i.createElement("img",{height:"40",src:"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDA3IDExNiI+DQogIDxkZWZzPg0KICAgIDxzdHlsZT4NCiAgICAgIC5jbHMtMSB7DQogICAgICAgIGNsaXAtcGF0aDogdXJsKCNjbGlwLVNXX1RNLWxvZ28tb24tZGFyayk7DQogICAgICB9DQoNCiAgICAgIC5jbHMtMiB7DQogICAgICAgIGZpbGw6ICNmZmY7DQogICAgICB9DQoNCiAgICAgIC5jbHMtMyB7DQogICAgICAgIGZpbGw6ICM4NWVhMmQ7DQogICAgICB9DQoNCiAgICAgIC5jbHMtNCB7DQogICAgICAgIGZpbGw6ICMxNzM2NDc7DQogICAgICB9DQogICAgPC9zdHlsZT4NCiAgICA8Y2xpcFBhdGggaWQ9ImNsaXAtU1dfVE0tbG9nby1vbi1kYXJrIj4NCiAgICAgIDxyZWN0IHdpZHRoPSI0MDciIGhlaWdodD0iMTE2Ii8+DQogICAgPC9jbGlwUGF0aD4NCiAgPC9kZWZzPg0KICA8ZyBpZD0iU1dfVE0tbG9nby1vbi1kYXJrIiBjbGFzcz0iY2xzLTEiPg0KICAgIDxnIGlkPSJTV19Jbi1Qcm9kdWN0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC4zMDEpIj4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzI5MzYiIGRhdGEtbmFtZT0iUGF0aCAyOTM2IiBjbGFzcz0iY2xzLTIiIGQ9Ik0zNTkuMTUsNzAuNjc0aC0uN1Y2Ni45OTJoLTEuMjZ2LS42aDMuMjE5di42SDM1OS4xNVoiLz4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzI5MzciIGRhdGEtbmFtZT0iUGF0aCAyOTM3IiBjbGFzcz0iY2xzLTIiIGQ9Ik0zNjMuMjE3LDcwLjY3NCwzNjEuOTc1LDY3LjFoLS4wMjNxLjA1LjguMDUsMS40OTR2Mi4wODNoLS42MzZWNjYuMzkxaC45ODdsMS4xOSwzLjQwN2guMDE3bDEuMjI1LTMuNDA3aC45OXY0LjI4M0gzNjUuMVY2OC41NTZjMC0uMjEzLjAwNi0uNDkuMDE2LS44MzJzLjAyLS41NDkuMDI4LS42MjFoLS4wMjNsLTEuMjg2LDMuNTcxWiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMjkzOCIgZGF0YS1uYW1lPSJQYXRoIDI5MzgiIGNsYXNzPSJjbHMtMyIgZD0iTTUwLjMyOCw5Ny42NjlBNDcuNjQyLDQ3LjY0MiwwLDEsMSw5Ny45NzEsNTAuMDI3LDQ3LjY0Miw0Ny42NDIsMCwwLDEsNTAuMzI4LDk3LjY2OVoiLz4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzI5MzkiIGRhdGEtbmFtZT0iUGF0aCAyOTM5IiBjbGFzcz0iY2xzLTMiIGQ9Ik01MC4zMjgsNC43NjlBNDUuMjU4LDQ1LjI1OCwwLDEsMSw1LjA3LDUwLjAyNyw0NS4yNTgsNDUuMjU4LDAsMCwxLDUwLjMyOCw0Ljc2OW0wLTQuNzY5YTUwLjAyNyw1MC4wMjcsMCwxLDAsNTAuMDI3LDUwLjAyN0E1MC4wMjcsNTAuMDI3LDAsMCwwLDUwLjMyOCwwWiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMjk0MCIgZGF0YS1uYW1lPSJQYXRoIDI5NDAiIGNsYXNzPSJjbHMtNCIgZD0iTTMxLjgsMzMuODU0Yy0uMTU0LDEuNzEyLjA1OCwzLjQ4Mi0uMDU3LDUuMjEzYTQyLjY2NSw0Mi42NjUsMCwwLDEtLjY5Myw1LjE1Niw5LjUzLDkuNTMsMCwwLDEtNC4xLDUuODI5YzQuMDc5LDIuNjU0LDQuNTQsNi43NzEsNC44MSwxMC45NDYuMTM1LDIuMjUuMDc3LDQuNTIuMzA4LDYuNzUyLjE3MywxLjczMS44NDYsMi4xNzQsMi42MzYsMi4yMzEuNzMuMDIsMS40OCwwLDIuMzI3LDBWNzUuMzNjLTUuMjkuOS05LjY1Ny0uNi0xMC43MzQtNS4wNzlhMzAuNzYsMzAuNzYsMCwwLDEtLjY1NC01Yy0uMTE3LTEuNzg5LjA3Ni0zLjU3OC0uMDU4LTUuMzY3LS4zODYtNC45MDYtMS4wMi02LjU2LTUuNzEzLTYuNzkxdi02LjFBOS4xOTEsOS4xOTEsMCwwLDEsMjAuOSw0Ni44MmMyLjU3Ny0uMTM1LDMuNjc0LS45MjQsNC4yMzEtMy40NjNhMjkuMywyOS4zLDAsMCwwLC40ODEtNC4zMjksODIuMSw4Mi4xLDAsMCwxLC42LTguNDA2Yy42NzMtMy45ODIsMy4xMzYtNS45MDYsNy4yMzQtNi4xMzcsMS4xNTQtLjA1NywyLjMyNywwLDMuNjU1LDB2NS40NjRjLS41NTguMDM4LTEuMDM5LjExNS0xLjUzOS4xMTVDMzIuMjI2LDI5Ljk0OSwzMi4wNTIsMzEuMDg0LDMxLjgsMzMuODU0Wm02LjQwNiwxMi42NThoLS4wNzdhMy41MTUsMy41MTUsMCwxLDAtLjM0Niw3LjAyMWguMjMxYTMuNDYxLDMuNDYxLDAsMCwwLDMuNjU1LTMuMjUxVjUwLjA5YTMuNTIzLDMuNTIzLDAsMCwwLTMuNDYxLTMuNTc4Wm0xMi4wNjIsMGEzLjM3MywzLjM3MywwLDAsMC0zLjQ4MiwzLjI1MSwxLjc5LDEuNzksMCwwLDAsLjAyLjMyNywzLjMsMy4zLDAsMCwwLDMuNTc4LDMuNDQzLDMuMjYzLDMuMjYzLDAsMCwwLDMuNDQzLTMuNTU4LDMuMzA4LDMuMzA4LDAsMCwwLTMuNTU3LTMuNDYzWm0xMi4zNTEsMGEzLjU5MiwzLjU5MiwwLDAsMC0zLjY1NSwzLjQ4MkEzLjUyOSwzLjUyOSwwLDAsMCw2Mi41LDUzLjUzM2guMDM5YzEuNzY5LjMwOSwzLjU1OS0xLjQsMy42NzQtMy40NjJhMy41NzEsMy41NzEsMCwwLDAtMy42LTMuNTU5Wm0xNi45NDguMjg4Yy0yLjIzMi0uMS0zLjM0OC0uODQ2LTMuOS0yLjk2MmEyMS40NDcsMjEuNDQ3LDAsMCwxLS42MzUtNC4xMzZjLS4xNTQtMi41NzgtLjEzNS01LjE3NS0uMzA4LTcuNzUzLS40LTYuMTE3LTQuODI4LTguMjUyLTExLjI1NC03LjE5NXY1LjMxYzEuMDE5LDAsMS44MDgsMCwyLjYuMDE5LDEuMzY2LjAxOSwyLjQuNTM5LDIuNTM5LDIuMDU5LjEzNSwxLjM4NS4xMzUsMi43ODkuMjcsNC4xOTMuMjY5LDIuNzkuNDIyLDUuNjE4LjksOC4zNjlBOC43MTUsOC43MTUsMCwwLDAsNzMuNyw1MC4wNTJjLTMuNCwyLjI4OS00LjQwNiw1LjU1OS00LjU3OCw5LjIzNC0uMSwyLjUyLS4xNTQsNS4wNTktLjI4OSw3LjYtLjExNSwyLjMwOC0uOTIzLDMuMDU4LTMuMjUxLDMuMTE2LS42NTQuMDE5LTEuMjg5LjA3Ny0yLjAxOS4xMTV2NS40NDVjMS4zNjUsMCwyLjYxNi4wNzcsMy44NjYsMCwzLjg4Ni0uMjMxLDYuMjMzLTIuMTE3LDctNS44ODdBNDkuMDc5LDQ5LjA3OSwwLDAsMCw3NSw2My40Yy4xMzUtMS45MjMuMTE2LTMuODY2LjMwOC01Ljc3MS4yODktMi45ODIsMS42NTUtNC4yMTMsNC42MzYtNC40YTQuMDM3LDQuMDM3LDAsMCwwLC44MjgtLjE5MnYtNi4xYy0uNS0uMDU4LS44NDMtLjExNS0xLjIwOC0uMTM1WiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMjk0MSIgZGF0YS1uYW1lPSJQYXRoIDI5NDEiIGNsYXNzPSJjbHMtMiIgZD0iTTE1Mi4yNzMsNTguMTIyYTExLjIyOCwxMS4yMjgsMCwwLDEtNC4zODQsOS40MjRxLTQuMzgzLDMuMzgyLTExLjksMy4zODItOC4xNCwwLTEyLjUyNC0yLjFWNjMuN2EzMi45LDMyLjksMCwwLDAsNi4xMzcsMS44NzksMzIuMywzMi4zLDAsMCwwLDYuNTc1LjY4OXE1LjMyMiwwLDguMDE1LTIuMDJhNi42MjYsNi42MjYsMCwwLDAsMi42OTItNS42Miw3LjIyMiw3LjIyMiwwLDAsMC0uOTU0LTMuOSw4Ljg4NSw4Ljg4NSwwLDAsMC0zLjE5NC0yLjgsNDQuNjM0LDQ0LjYzNCwwLDAsMC02LjgxLTIuOTExcS02LjM4Ny0yLjI4Ni05LjEyNi01LjQxN2ExMS45NTUsMTEuOTU1LDAsMCwxLTIuNzQtOC4xNzJBMTAuMTY0LDEwLjE2NCwwLDAsMSwxMjguMDM5LDI3cTMuOTc3LTMuMTMxLDEwLjUyLTMuMTMxYTMxLDMxLDAsMCwxLDEyLjU1NSwyLjVMMTQ5LjQ1NSwzMWEyOC4zODIsMjguMzgyLDAsMCwwLTExLjAyMS0yLjM4LDEwLjY2OCwxMC42NjgsMCwwLDAtNi42MDYsMS44MTYsNS45ODQsNS45ODQsMCwwLDAtMi4zOCw1LjA0MSw3LjcyMiw3LjcyMiwwLDAsMCwuODc3LDMuOSw4LjI0Miw4LjI0MiwwLDAsMCwyLjk1OSwyLjc4NiwzNi43LDM2LjcsMCwwLDAsNi4zNzEsMi44cTcuMiwyLjU2Niw5LjkxLDUuNTFBMTAuODQsMTAuODQsMCwwLDEsMTUyLjI3Myw1OC4xMjJaIi8+DQogICAgICA8cGF0aCBpZD0iUGF0aF8yOTQyIiBkYXRhLW5hbWU9IlBhdGggMjk0MiIgY2xhc3M9ImNscy0yIiBkPSJNMTg1LjI4OCw3MC4zLDE3OSw1MC4xN3EtLjU5NC0xLjg0OC0yLjIyMi04LjM5MWgtLjI1MXEtMS4yNTIsNS40NzktMi4xOTIsOC40NTNMMTY3Ljg0OSw3MC4zaC02LjAxMWwtOS4zNjEtMzQuMzE1aDUuNDQ3cTMuMzE4LDEyLjkzMSw1LjA1NywxOS42OTNhODAuMTEyLDgwLjExMiwwLDAsMSwxLjk4OCw5LjExMWguMjVxLjM0NS0xLjc4NSwxLjExMi00LjYxOHQxLjMzLTQuNDkzbDYuMjk0LTE5LjY5M2g1LjYzNWw2LjEzNywxOS42OTNhNjYuMzY5LDY2LjM2OSwwLDAsMSwyLjM3OSw5LjA0OGguMjUxYTMzLjE2MywzMy4xNjMsMCwwLDEsLjY3My0zLjQ3NXEuNTQ4LTIuMzQ3LDYuNTI4LTI1LjI2Nmg1LjM4NUwxOTEuNDU2LDcwLjNaIi8+DQogICAgICA8cGF0aCBpZD0iUGF0aF8yOTQzIiBkYXRhLW5hbWU9IlBhdGggMjk0MyIgY2xhc3M9ImNscy0yIiBkPSJNMjI1LjExNSw3MC4zbC0xLjAzMy00Ljg4NWgtLjI1YTE0LjQ0NiwxNC40NDYsMCwwLDEtNS4xMTksNC4zNjgsMTUuNjA4LDE1LjYwOCwwLDAsMS02LjM3MiwxLjE0M3EtNS4xLDAtOC0yLjYzdC0yLjktNy40ODNxMC0xMC40LDE2LjYyNi0xMC45bDUuODIzLS4xODhWNDcuNnEwLTQuMDM4LTEuNzM4LTUuOTY0VDIxNi42LDM5LjcxM2EyMi42MzMsMjIuNjMzLDAsMCwwLTkuNzA2LDIuNjNsLTEuNi0zLjk3N2EyNC40MzcsMjQuNDM3LDAsMCwxLDUuNTU3LTIuMTYsMjQuMDU2LDI0LjA1NiwwLDAsMSw2LjA1OC0uNzgzcTYuMTM2LDAsOS4xLDIuNzI0dDIuOTU5LDguNzM1VjcwLjNabS0xMS43NDEtMy42NjNBMTAuNTQ5LDEwLjU0OSwwLDAsMCwyMjEsNjMuOTc3YTkuODQ1LDkuODQ1LDAsMCwwLDIuNzcxLTcuNDUxdi0zLjFsLTUuMi4yMTlxLTYuMi4yMTktOC45MzksMS45MjZhNS44LDUuOCwwLDAsMC0yLjc0LDUuMzA2LDUuMzU0LDUuMzU0LDAsMCwwLDEuNzA3LDQuMjksNy4wODEsNy4wODEsMCwwLDAsNC43NzUsMS40NzJaIi8+DQogICAgICA8cGF0aCBpZD0iUGF0aF8yOTQ0IiBkYXRhLW5hbWU9IlBhdGggMjk0NCIgY2xhc3M9ImNscy0yIiBkPSJNMjY0LjYsMzUuOTg3djMuMjg3bC02LjM1Ni43NTJhMTEuMTYsMTEuMTYsMCwwLDEsMi4yNTUsNi44NTYsMTAuMTQ4LDEwLjE0OCwwLDAsMS0zLjQ0NCw4LjA0N3EtMy40NDQsMy05LjQ1NiwzYTE1LjczNCwxNS43MzQsMCwwLDEtMi44OC0uMjVRMjQxLjQsNTkuNDM4LDI0MS40LDYyLjFhMi4yNDIsMi4yNDIsMCwwLDAsMS4xNTksMi4wODIsOC40NTYsOC40NTYsMCwwLDAsMy45NzYuNjczaDYuMDc0cTUuNTczLDAsOC41NjMsMi4zNDhhOC4xNTgsOC4xNTgsMCwwLDEsMi45OSw2LjgyNSw5Ljc0Myw5Ljc0MywwLDAsMS00LjU3MSw4LjY4OHEtNC41NzIsMi45ODktMTMuMzM4LDIuOTktNi43MzIsMC0xMC4zNzktMi41YTguMDg3LDguMDg3LDAsMCwxLTMuNjQ3LTcuMDc2LDcuOTQ2LDcuOTQ2LDAsMCwxLDItNS40MTcsMTAuMjExLDEwLjIxMSwwLDAsMSw1LjYzNi0zLjEsNS40MjksNS40MjksMCwwLDEtMi4yMDctMS44NDcsNC44OSw0Ljg5LDAsMCwxLS44OTMtMi45MTIsNS41Myw1LjUzLDAsMCwxLDEtMy4yODgsMTAuNTI5LDEwLjUyOSwwLDAsMSwzLjE2Mi0yLjcyMyw5LjI3NSw5LjI3NSwwLDAsMS00LjMzNi0zLjcyNiwxMC45NDUsMTAuOTQ1LDAsMCwxLTEuNjc1LTYuMDEycTAtNS42MzQsMy4zODItOC42ODh0OS41OC0zLjA1MmExNy40MzksMTcuNDM5LDAsMCwxLDQuODUzLjYyNlpNMjM3LjIzMyw3Ni4wNjJhNC42Niw0LjY2LDAsMCwwLDIuMzQ4LDQuMjI3LDEyLjk3MywxMi45NzMsMCwwLDAsNi43MzIsMS40NHE2LjU0MywwLDkuNjktMS45NTZhNS45OTIsNS45OTIsMCwwLDAsMy4xNDctNS4zMDdxMC0yLjc4Ny0xLjcyMy0zLjg2N3QtNi40ODEtMS4wOGgtNi4yM2E4LjIwNSw4LjIwNSwwLDAsMC01LjUxLDEuNjksNi4wNDMsNi4wNDMsMCwwLDAtMS45NzMsNC44NTNabTIuODE4LTI5LjA4NmE2Ljk4NCw2Ljk4NCwwLDAsMCwyLjAzNSw1LjQ0OCw4LjEyMyw4LjEyMywwLDAsMCw1LjY2NywxLjg0N3E3LjYwOCwwLDcuNjA4LTcuMzg5LDAtNy43MzMtNy43LTcuNzMzYTcuNjI4LDcuNjI4LDAsMCwwLTUuNjM1LDEuOTcycS0xLjk3NiwxLjk3My0xLjk3NSw1Ljg1NVoiLz4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzI5NDUiIGRhdGEtbmFtZT0iUGF0aCAyOTQ1IiBjbGFzcz0iY2xzLTIiIGQ9Ik0yOTkuMTM2LDM1Ljk4N3YzLjI4N2wtNi4zNTYuNzUyYTExLjE2OCwxMS4xNjgsMCwwLDEsMi4yNTQsNi44NTYsMTAuMTQ1LDEwLjE0NSwwLDAsMS0zLjQ0NCw4LjA0N3EtMy40NDQsMy05LjQ1NSwzYTE1LjczNCwxNS43MzQsMCwwLDEtMi44OC0uMjVxLTMuMzIsMS43NTQtMy4zMTksNC40MTVhMi4yNDMsMi4yNDMsMCwwLDAsMS4xNTgsMi4wODIsOC40NTksOC40NTksMCwwLDAsMy45NzYuNjczaDYuMDc0cTUuNTc0LDAsOC41NjMsMi4zNDhhOC4xNTgsOC4xNTgsMCwwLDEsMi45OSw2LjgyNSw5Ljc0Myw5Ljc0MywwLDAsMS00LjU3MSw4LjY4OHEtNC41NywyLjk4OS0xMy4zMzcsMi45OS02LjczMiwwLTEwLjM3OS0yLjVhOC4wODgsOC4wODgsMCwwLDEtMy42NDgtNy4wNzYsNy45NDcsNy45NDcsMCwwLDEsMi01LjQxNywxMC4yMDcsMTAuMjA3LDAsMCwxLDUuNjM2LTMuMSw1LjQzMiw1LjQzMiwwLDAsMS0yLjIwOC0xLjg0Nyw0Ljg4OSw0Ljg4OSwwLDAsMS0uODkyLTIuOTEyLDUuNTMsNS41MywwLDAsMSwxLTMuMjg4LDEwLjUyOSwxMC41MjksMCwwLDEsMy4xNjItMi43MjMsOS4yNzEsOS4yNzEsMCwwLDEtNC4zMzYtMy43MjYsMTAuOTQ1LDEwLjk0NSwwLDAsMS0xLjY3NS02LjAxMnEwLTUuNjM0LDMuMzgxLTguNjg4dDkuNTgxLTMuMDUyYTE3LjQ0NCwxNy40NDQsMCwwLDEsNC44NTMuNjI2Wk0yNzEuNzcyLDc2LjA2MmE0LjY1OCw0LjY1OCwwLDAsMCwyLjM0OCw0LjIyNywxMi45NjksMTIuOTY5LDAsMCwwLDYuNzMxLDEuNDRxNi41NDQsMCw5LjY5MS0xLjk1NmE1Ljk5Myw1Ljk5MywwLDAsMCwzLjE0Ni01LjMwN3EwLTIuNzg3LTEuNzIyLTMuODY3dC02LjQ4MS0xLjA4aC02LjIzYTguMjA4LDguMjA4LDAsMCwwLTUuNTExLDEuNjlBNi4wNDIsNi4wNDIsMCwwLDAsMjcxLjc3Miw3Ni4wNjJabTIuODE4LTI5LjA4NmE2Ljk4NCw2Ljk4NCwwLDAsMCwyLjAzNSw1LjQ0OCw4LjEyMSw4LjEyMSwwLDAsMCw1LjY2NywxLjg0N3E3LjYwNywwLDcuNjA4LTcuMzg5LDAtNy43MzMtNy43LTcuNzMzYTcuNjI5LDcuNjI5LDAsMCwwLTUuNjM1LDEuOTcycS0xLjk3NSwxLjk3My0xLjk3NSw1Ljg1NVoiLz4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzI5NDYiIGRhdGEtbmFtZT0iUGF0aCAyOTQ2IiBjbGFzcz0iY2xzLTIiIGQ9Ik0zMTYuNzc4LDcwLjkyOHEtNy42MDgsMC0xMi4wMDctNC42MzR0LTQuNC0xMi44NjhxMC04LjMsNC4wODYtMTMuMTgxYTEzLjU3MywxMy41NzMsMCwwLDEsMTAuOTc0LTQuODg0QTEyLjkzOCwxMi45MzgsMCwwLDEsMzI1LjYzOCwzOS42cTMuNzYyLDQuMjQ3LDMuNzYyLDExLjJ2My4yODdIMzA1Ljc1N3EuMTU2LDYuMDQ0LDMuMDUzLDkuMTc0dDguMTU2LDMuMTMxYTI3LjYzMywyNy42MzMsMCwwLDAsMTAuOTU4LTIuMzE3djQuNjM0YTI3LjUsMjcuNSwwLDAsMS01LjIxMywxLjcwNiwyOS4yNTEsMjkuMjUxLDAsMCwxLTUuOTMzLjUxM1ptLTEuNDA5LTMxLjIxNWE4LjQ4OSw4LjQ4OSwwLDAsMC02LjU5MSwyLjY5MiwxMi40MTYsMTIuNDE2LDAsMCwwLTIuOSw3LjQ1MmgxNy45NHEwLTQuOTE2LTIuMTkxLTcuNTNhNy43MTQsNy43MTQsMCwwLDAtNi4yNTgtMi42MTRaIi8+DQogICAgICA8cGF0aCBpZD0iUGF0aF8yOTQ3IiBkYXRhLW5hbWU9IlBhdGggMjk0NyIgY2xhc3M9ImNscy0yIiBkPSJNMzUwLjksMzUuMzYxYTIwLjM4LDIwLjM4LDAsMCwxLDQuMS4zNzVsLS43MjEsNC44MjJhMTcuNzEyLDE3LjcxMiwwLDAsMC0zLjc1Ny0uNDdBOS4xNDIsOS4xNDIsMCwwLDAsMzQzLjQsNDMuNDdhMTIuMzI3LDEyLjMyNywwLDAsMC0yLjk1OSw4LjQyMlY3MC4zaC01LjJWMzUuOTg3aDQuMjlsLjYsNi4zNTZoLjI1YTE1LjA3MiwxNS4wNzIsMCwwLDEsNC42LTUuMTY2LDEwLjM1NiwxMC4zNTYsMCwwLDEsNS45MTktMS44MTZaIi8+DQogICAgICA8cGF0aCBpZD0iUGF0aF8yOTQ4IiBkYXRhLW5hbWU9IlBhdGggMjk0OCIgY2xhc3M9ImNscy0yIiBkPSJNMjU1Ljg1Nyw5Ni42MzhzLTMuNDMtLjM5MS00Ljg1LS4zOTFjLTIuMDU4LDAtMy4xMTEuNzM1LTMuMTExLDIuMTgsMCwxLjU2OC44ODIsMS45MzUsMy43NDgsMi43MTksMy41MjcuOTgsNC44LDEuOTExLDQuOCw0Ljc3NywwLDMuNjc1LTIuMyw1LjI2Ny01LjYxLDUuMjY3YTM1LjY4NywzNS42ODcsMCwwLDEtNS40ODctLjY2MmwuMjctMi4xOHMzLjMwNi40NDEsNS4wNDYuNDQxYzIuMDgyLDAsMy4wMzctLjkzMSwzLjAzNy0yLjcsMC0xLjQyMS0uNzU5LTEuOTEtMy4zMzEtMi41MjMtMy42MjYtLjkzLTUuMTkzLTIuMDMzLTUuMTkzLTQuOTQ4LDAtMy4zODEsMi4yMjktNC43NzYsNS41ODUtNC43NzZhMzcuMiwzNy4yLDAsMCwxLDUuMzE1LjU4N1oiLz4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzI5NDkiIGRhdGEtbmFtZT0iUGF0aCAyOTQ5IiBjbGFzcz0iY2xzLTIiIGQ9Ik0yNjIuOTY3LDk0LjE0SDI2Ny43bDMuNzQ4LDEzLjEwNkwyNzUuMiw5NC4xNGg0Ljc1MnYxNi43OEgyNzcuMlY5Ni40MmgtLjE0NWwtNC4xOTEsMTMuODE2aC0yLjg0MkwyNjUuODMxLDk2LjQyaC0uMTQ1djE0LjVoLTIuNzE5WiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMjk1MCIgZGF0YS1uYW1lPSJQYXRoIDI5NTAiIGNsYXNzPSJjbHMtMiIgZD0iTTMyMi4wNTcsOTQuMTRIMzM0LjN2Mi40MjVoLTQuNzI4VjExMC45MmgtMi43NDNWOTYuNTY1aC00Ljc3N1oiLz4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzI5NTEiIGRhdGEtbmFtZT0iUGF0aCAyOTUxIiBjbGFzcz0iY2xzLTIiIGQ9Ik0zNDYuMTM3LDk0LjE0YzMuMzMyLDAsNS4xMiwxLjI0OSw1LjEyLDQuMzYxLDAsMi4wMzMtLjYzNywzLjAzNy0xLjk4NCwzLjc3MiwxLjQ0NS41NjMsMi40LDEuNTkyLDIuNCwzLjksMCwzLjQzLTIuMDgxLDQuNzUyLTUuMzM5LDQuNzUyaC02LjU2NlY5NC4xNFptLTMuNjUsMi4zNTJ2NC44aDMuNmMxLjY2NiwwLDIuNC0uODMyLDIuNC0yLjQ3NCwwLTEuNjE3LS44MzMtMi4zMjctMi41LTIuMzI3Wm0wLDcuMXY0Ljk3M2gzLjdjMS42ODksMCwyLjY5NC0uNTM5LDIuNjk0LTIuNTQ4LDAtMS45MTEtMS40MjEtMi40MjUtMi43NDQtMi40MjVaIi8+DQogICAgICA8cGF0aCBpZD0iUGF0aF8yOTUyIiBkYXRhLW5hbWU9IlBhdGggMjk1MiIgY2xhc3M9ImNscy0yIiBkPSJNMzU4LjQxNCw5NC4xNEgzNjl2Mi4zNzdoLTcuODY0djQuNzUxaDYuMzk0VjEwMy42aC02LjM5NHY0LjkyNEgzNjl2Mi40SDM1OC40MTRaIi8+DQogICAgICA8cGF0aCBpZD0iUGF0aF8yOTUzIiBkYXRhLW5hbWU9IlBhdGggMjk1MyIgY2xhc3M9ImNscy0yIiBkPSJNMzc4Ljc0Nyw5NC4xNGg1LjQxNGw0LjE2NCwxNi43OGgtMi43NDRMMzg0LjM0MiwxMDZoLTUuNzc3bC0xLjIzOSw0LjkyM2gtMi43MTlabS4zNjEsOS40NTZoNC43MDhsLTEuNzM3LTcuMTc4aC0xLjIyNVoiLz4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzI5NTQiIGRhdGEtbmFtZT0iUGF0aCAyOTU0IiBjbGFzcz0iY2xzLTIiIGQ9Ik0zOTcuMSwxMDUuOTQ3djQuOTczaC0yLjcxOVY5NC4xNGg2LjM3YzMuNywwLDUuNjgzLDIuMTIsNS42ODMsNS44NDMsMCwyLjM3Ni0uOTU2LDQuNTE5LTIuNzQ0LDUuMzUybDIuNzY5LDUuNTg1SDQwMy40N2wtMi40MjYtNC45NzNabTMuNjUxLTkuNDU1SDM5Ny4xdjcuMWgzLjdjMi4wNTcsMCwyLjg0MS0xLjg1LDIuODQxLTMuNTg5LDAtMS45LS45MzQtMy41MTEtMi44OTQtMy41MTFaIi8+DQogICAgICA8cGF0aCBpZD0iUGF0aF8yOTU1IiBkYXRhLW5hbWU9IlBhdGggMjk1NSIgY2xhc3M9ImNscy0yIiBkPSJNMjkwLjAxMyw5NC4xNGg1LjQxM2w0LjE2NCwxNi43OGgtMi43NDNMMjk1LjYwOCwxMDZoLTUuNzc3bC0xLjIzOSw0LjkyM2gtMi43MTlabS4zNjEsOS40NTZoNC43MDdsLTEuNzM3LTcuMTc4aC0xLjIyNVoiLz4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzI5NTYiIGRhdGEtbmFtZT0iUGF0aCAyOTU2IiBjbGFzcz0iY2xzLTIiIGQ9Ik0zMDguMzYyLDEwNS45NDd2NC45NzNoLTIuNzE5Vjk0LjE0aDYuMzY5YzMuNywwLDUuNjgzLDIuMTIsNS42ODMsNS44NDMsMCwyLjM3Ni0uOTU1LDQuNTE5LTIuNzQzLDUuMzUybDIuNzY4LDUuNTg1aC0yLjk4OWwtMi40MjUtNC45NzNabTMuNjUtOS40NTVoLTMuNjV2Ny4xaDMuN2MyLjA1OCwwLDIuODQxLTEuODUsMi44NDEtMy41ODlDMzE0LjksOTguMSwzMTMuOTcyLDk2LjQ5MiwzMTIuMDEyLDk2LjQ5MloiLz4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzI5NTciIGRhdGEtbmFtZT0iUGF0aCAyOTU3IiBjbGFzcz0iY2xzLTIiIGQ9Ik0xMzAuNjA2LDEwNy42NDNhMy4wMiwzLjAyLDAsMCwxLTEuMTgsMi41MzcsNS4xMTMsNS4xMTMsMCwwLDEtMy4yLjkxLDguMDMsOC4wMywwLDAsMS0zLjM3MS0uNTY0di0xLjM4M2E4Ljc5Myw4Ljc5MywwLDAsMCwxLjY1Mi41MDYsOC42NzIsOC42NzIsMCwwLDAsMS43Ny4xODYsMy41NjUsMy41NjUsMCwwLDAsMi4xNTctLjU0NCwxLjc4MywxLjc4MywwLDAsMCwuNzI1LTEuNTEyLDEuOTQ3LDEuOTQ3LDAsMCwwLS4yNTctMS4wNSwyLjM5MywyLjM5MywwLDAsMC0uODYtLjc1NCwxMi4xNzEsMTIuMTcxLDAsMCwwLTEuODMzLS43ODQsNS44NDIsNS44NDIsMCwwLDEtMi40NTYtMS40NTgsMy4yMTMsMy4yMTMsMCwwLDEtLjczOC0yLjIsMi43MzYsMi43MzYsMCwwLDEsMS4wNzEtMi4yNjcsNC40NDQsNC40NDQsMCwwLDEsMi44MzEtLjg0Myw4LjM0MSw4LjM0MSwwLDAsMSwzLjM4LjY3NWwtLjQ0NywxLjI0N2E3LjYzOSw3LjYzOSwwLDAsMC0yLjk2Ni0uNjQxLDIuODc4LDIuODc4LDAsMCwwLTEuNzc5LjQ4OSwxLjYxMiwxLjYxMiwwLDAsMC0uNjQsMS4zNTcsMi4wODEsMi4wODEsMCwwLDAsLjIzNiwxLjA0OSwyLjIzMSwyLjIzMSwwLDAsMCwuOC43NSw5Ljg3OCw5Ljg3OCwwLDAsMCwxLjcxNS43NTQsNi44LDYuOCwwLDAsMSwyLjY2NywxLjQ4MywyLjkxOSwyLjkxOSwwLDAsMSwuNzIzLDIuMDU3WiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMjk1OCIgZGF0YS1uYW1lPSJQYXRoIDI5NTgiIGNsYXNzPSJjbHMtMiIgZD0iTTEzNC40NDcsMTAxLjY4NnY1Ljk5MWEyLjQxMSwyLjQxMSwwLDAsMCwuNTE1LDEuNjg2LDIuMDksMi4wOSwwLDAsMCwxLjYwOS41NTYsMi42MjksMi42MjksMCwwLDAsMi4xMi0uNzkyLDQsNCwwLDAsMCwuNjctMi41ODd2LTQuODU0aDEuNHY5LjIzNkgxMzkuNmwtLjItMS4yMzloLS4wNzVhMi43OTMsMi43OTMsMCwwLDEtMS4xOTMsMS4wNDUsNCw0LDAsMCwxLTEuNzQuMzYyLDMuNTI5LDMuNTI5LDAsMCwxLTIuNTI0LS44LDMuNDA5LDMuNDA5LDAsMCwxLS44MzktMi41NjJ2LTYuMDQyWiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMjk1OSIgZGF0YS1uYW1lPSJQYXRoIDI5NTkiIGNsYXNzPSJjbHMtMiIgZD0iTTE0OC4yMDYsMTExLjA5YTMuOTkzLDMuOTkzLDAsMCwxLTEuNjQ3LS4zMzMsMy4xLDMuMSwwLDAsMS0xLjI1Mi0xLjAyM2gtLjFhMTIuMjY1LDEyLjI2NSwwLDAsMSwuMSwxLjUzM3YzLjhoLTEuNFYxMDEuNjg2aDEuMTM3bC4xOTQsMS4yNjRoLjA2N2EzLjI1NywzLjI1NywwLDAsMSwxLjI1Ni0xLjEsMy44MzEsMy44MzEsMCwwLDEsMS42NDMtLjMzNywzLjQxMywzLjQxMywwLDAsMSwyLjgzNiwxLjI1Niw2LjY4Myw2LjY4MywwLDAsMS0uMDE3LDcuMDU3LDMuNDIsMy40MiwwLDAsMS0yLjgxNywxLjI2NFptLS4yLTguMzg1YTIuNDgyLDIuNDgyLDAsMCwwLTIuMDQ4Ljc4NCw0LjA0MSw0LjA0MSwwLDAsMC0uNjQ5LDIuNDk0di4zMTJhNC42MjUsNC42MjUsMCwwLDAsLjY0OSwyLjc4NSwyLjQ2NywyLjQ2NywwLDAsMCwyLjA4Mi44MzksMi4xNjQsMi4xNjQsMCwwLDAsMS44NzUtLjk2OSw0LjYsNC42LDAsMCwwLC42NzgtMi42NzEsNC40MjgsNC40MjgsMCwwLDAtLjY3OC0yLjY1MSwyLjIzMiwyLjIzMiwwLDAsMC0xLjkxNS0uOTIzWiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMjk2MCIgZGF0YS1uYW1lPSJQYXRoIDI5NjAiIGNsYXNzPSJjbHMtMiIgZD0iTTE1OS4wMzksMTExLjA5YTMuOTkzLDMuOTkzLDAsMCwxLTEuNjQ3LS4zMzMsMy4xLDMuMSwwLDAsMS0xLjI1Mi0xLjAyM2gtLjFhMTIuMjY1LDEyLjI2NSwwLDAsMSwuMSwxLjUzM3YzLjhoLTEuNFYxMDEuNjg2aDEuMTM3bC4xOTQsMS4yNjRoLjA2N2EzLjI1NywzLjI1NywwLDAsMSwxLjI1Ni0xLjEsMy44MzEsMy44MzEsMCwwLDEsMS42NDMtLjMzNywzLjQxMywzLjQxMywwLDAsMSwyLjgzNiwxLjI1Niw2LjY4Myw2LjY4MywwLDAsMS0uMDE3LDcuMDU3LDMuNDIsMy40MiwwLDAsMS0yLjgxNywxLjI2NFptLS4yLTguMzg1YTIuNDgyLDIuNDgyLDAsMCwwLTIuMDQ4Ljc4NCw0LjA0MSw0LjA0MSwwLDAsMC0uNjQ5LDIuNDk0di4zMTJhNC42MjUsNC42MjUsMCwwLDAsLjY0OSwyLjc4NSwyLjQ2NywyLjQ2NywwLDAsMCwyLjA4Mi44MzksMi4xNjQsMi4xNjQsMCwwLDAsMS44NzUtLjk2OSw0LjYsNC42LDAsMCwwLC42NzgtMi42NzEsNC40MjgsNC40MjgsMCwwLDAtLjY3OC0yLjY1MSwyLjIzMiwyLjIzMiwwLDAsMC0xLjkxMS0uOTIzWiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMjk2MSIgZGF0YS1uYW1lPSJQYXRoIDI5NjEiIGNsYXNzPSJjbHMtMiIgZD0iTTE3My42MTIsMTA2LjNhNS4wOTMsNS4wOTMsMCwwLDEtMS4xMzcsMy41MjcsNC4wMDUsNC4wMDUsMCwwLDEtMy4xNDMsMS4yNjgsNC4xNzIsNC4xNzIsMCwwLDEtMi4yLS41ODEsMy44NCwzLjg0LDAsMCwxLTEuNDgzLTEuNjY5LDUuOCw1LjgsMCwwLDEtLjUyMi0yLjU0NSw1LjA4Nyw1LjA4NywwLDAsMSwxLjEyOS0zLjUxOCwzLjk5MSwzLjk5MSwwLDAsMSwzLjEzNS0xLjI2LDMuOTA3LDMuOTA3LDAsMCwxLDMuMDgsMS4yOSw1LjA3MSw1LjA3MSwwLDAsMSwxLjE0MSwzLjQ4OFptLTcuMDM2LDBhNC4zODQsNC4zODQsMCwwLDAsLjcwOCwyLjcsMi44MDksMi44MDksMCwwLDAsNC4xNjcsMCw0LjM2NSw0LjM2NSwwLDAsMCwuNzEyLTIuNyw0LjI5Myw0LjI5MywwLDAsMC0uNzEyLTIuNjc1LDIuNSwyLjUsMCwwLDAtMi4xLS45MTUsMi40NjEsMi40NjEsMCwwLDAtMi4wNzIuOSw0LjMzNCw0LjMzNCwwLDAsMC0uNywyLjY5WiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMjk2MiIgZGF0YS1uYW1lPSJQYXRoIDI5NjIiIGNsYXNzPSJjbHMtMiIgZD0iTTE4MC41MjUsMTAxLjUxN2E1LjUwNiw1LjUwNiwwLDAsMSwxLjEuMWwtLjE5NCwxLjNhNC43ODYsNC43ODYsMCwwLDAtMS4wMTEtLjEyNywyLjQ2LDIuNDYsMCwwLDAtMS45MTcuOTExLDMuMzE4LDMuMzE4LDAsMCwwLS44LDIuMjY3djQuOTU1aC0xLjR2LTkuMjM2aDEuMTU0bC4xNiwxLjcxaC4wNjhhNC4wNTQsNC4wNTQsMCwwLDEsMS4yMzgtMS4zOSwyLjc4NywyLjc4NywwLDAsMSwxLjYtLjQ5WiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMjk2MyIgZGF0YS1uYW1lPSJQYXRoIDI5NjMiIGNsYXNzPSJjbHMtMiIgZD0iTTE4Ny4zNjMsMTA5LjkzNmE0LjUwNiw0LjUwNiwwLDAsMCwuNzE2LS4wNTUsNC4zODcsNC4zODcsMCwwLDAsLjU0OC0uMTE0djEuMDdhMi41LDIuNSwwLDAsMS0uNjcuMTgxLDUsNSwwLDAsMS0uOC4wNzJxLTIuNjgsMC0yLjY4LTIuODIzdi01LjQ5NGgtMS4zMjNWMTAyLjFsMS4zMjMtLjU4Mi41OS0xLjk3MmguODA5djIuMTQxaDIuNjh2MS4wODdoLTIuNjh2NS40MzVhMS44NjksMS44NjksMCwwLDAsLjQsMS4yODFBMS4zNzcsMS4zNzcsMCwwLDAsMTg3LjM2MywxMDkuOTM2WiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMjk2NCIgZGF0YS1uYW1lPSJQYXRoIDI5NjQiIGNsYXNzPSJjbHMtMiIgZD0iTTE5NC41MzgsMTExLjA5YTQuMjM5LDQuMjM5LDAsMCwxLTMuMjMxLTEuMjQ3LDQuODI0LDQuODI0LDAsMCwxLTEuMTg0LTMuNDYzLDUuMzU1LDUuMzU1LDAsMCwxLDEuMS0zLjU0OCwzLjY1MiwzLjY1MiwwLDAsMSwyLjk1NC0xLjMxNSwzLjQ4NCwzLjQ4NCwwLDAsMSwyLjc0NywxLjE0Miw0LjM3OCw0LjM3OCwwLDAsMSwxLjAxMSwzLjAxM3YuODg1aC02LjM2MmEzLjY2LDMuNjYsMCwwLDAsLjgyMiwyLjQ2OSwyLjg0MywyLjg0MywwLDAsMCwyLjIuODQzLDcuNDMxLDcuNDMxLDAsMCwwLDIuOTQ5LS42MjR2MS4yNDdhNy4zNzcsNy4zNzcsMCwwLDEtMS40LjQ1OSw3Ljg2Myw3Ljg2MywwLDAsMS0xLjYuMTM5Wm0tLjM3OS04LjRhMi4yODYsMi4yODYsMCwwLDAtMS43NzQuNzI1LDMuMzM3LDMuMzM3LDAsMCwwLS43NzksMi4wMDZoNC44MjhhMy4wNzIsMy4wNzIsMCwwLDAtLjU5LTIuMDI3LDIuMDc2LDIuMDc2LDAsMCwwLTEuNjg1LS43MDZaIi8+DQogICAgICA8cGF0aCBpZD0iUGF0aF8yOTY1IiBkYXRhLW5hbWU9IlBhdGggMjk2NSIgY2xhc3M9ImNscy0yIiBkPSJNMjA2Ljk1MSwxMDkuNjgzaC0uMDc2YTMuMjg3LDMuMjg3LDAsMCwxLTIuOSwxLjQwNywzLjQyNywzLjQyNywwLDAsMS0yLjgxOS0xLjIzOSw1LjQ1Miw1LjQ1MiwwLDAsMS0xLjAwNi0zLjUyMiw1LjU0Miw1LjU0MiwwLDAsMSwxLjAxMS0zLjU0OCwzLjQsMy40LDAsMCwxLDIuODE0LTEuMjY0LDMuMzYxLDMuMzYxLDAsMCwxLDIuODgzLDEuMzY1aC4xMDlsLS4wNTktLjY2NS0uMDM0LS42NDlWOTcuODA5aDEuNHYxMy4xMTNoLTEuMTM4Wm0tMi44LjIzNmEyLjU1MSwyLjU1MSwwLDAsMCwyLjA3OC0uNzc5LDMuOTQ3LDMuOTQ3LDAsMCwwLC42NDQtMi41MTZ2LS4zYTQuNjM4LDQuNjM4LDAsMCwwLS42NTMtMi44LDIuNDgxLDIuNDgxLDAsMCwwLTIuMDg2LS44MzksMi4xNCwyLjE0LDAsMCwwLTEuODgzLjk1Nyw0Ljc2LDQuNzYsMCwwLDAtLjY1MywyLjcsNC41NTQsNC41NTQsMCwwLDAsLjY0OSwyLjY3MSwyLjE5NCwyLjE5NCwwLDAsMCwxLjkwNi45MDZaIi8+DQogICAgICA8cGF0aCBpZD0iUGF0aF8yOTY2IiBkYXRhLW5hbWU9IlBhdGggMjk2NiIgY2xhc3M9ImNscy0yIiBkPSJNMjIwLjcxMiwxMDEuNTM0YTMuNDM1LDMuNDM1LDAsMCwxLDIuODI3LDEuMjQzLDYuNjUzLDYuNjUzLDAsMCwxLS4wMDksNy4wNTMsMy40MTcsMy40MTcsMCwwLDEtMi44MTgsMS4yNiw0LDQsMCwwLDEtMS42NDgtLjMzMywzLjA5NCwzLjA5NCwwLDAsMS0xLjI1MS0xLjAyM2gtLjFsLS4yOTUsMS4xODhoLTFWOTcuODA5aDEuNFYxMDFxMCwxLjA2OS0uMDY4LDEuOTIxaC4wNjhhMy4zMjIsMy4zMjIsMCwwLDEsMi44OTQtMS4zODdabS0uMiwxLjE3MWEyLjQ0LDIuNDQsMCwwLDAtMi4wNjQuODIyLDYuMzM4LDYuMzM4LDAsMCwwLC4wMTcsNS41NTMsMi40NjQsMi40NjQsMCwwLDAsMi4wODEuODM5LDIuMTU4LDIuMTU4LDAsMCwwLDEuOTIyLS45NCw0LjgyOCw0LjgyOCwwLDAsMCwuNjMyLTIuNyw0LjY0NSw0LjY0NSwwLDAsMC0uNjMyLTIuNjg5LDIuMjQyLDIuMjQyLDAsMCwwLTEuOTU5LS44ODVaIi8+DQogICAgICA8cGF0aCBpZD0iUGF0aF8yOTY3IiBkYXRhLW5hbWU9IlBhdGggMjk2NyIgY2xhc3M9ImNscy0yIiBkPSJNMjI1Ljc1OCwxMDEuNjg2aDEuNWwyLjAyMyw1LjI2N2EyMC4xODgsMjAuMTg4LDAsMCwxLC44MjYsMi42aC4wNjdxLjEwOS0uNDMxLjQ1OS0xLjQ3MXQyLjI4OC02LjRoMS41TDIzMC40NTIsMTEyLjJhNS4yNTMsNS4yNTMsMCwwLDEtMS4zNzgsMi4yMTIsMi45MzIsMi45MzIsMCwwLDEtMS45MzQuNjUzLDUuNjU5LDUuNjU5LDAsMCwxLTEuMjY0LS4xNDNWMTEzLjhhNC45LDQuOSwwLDAsMCwxLjAzNy4xLDIuMTM2LDIuMTM2LDAsMCwwLDIuMDU2LTEuNjE4bC41MTQtMS4zMTRaIi8+DQogICAgPC9nPg0KICA8L2c+DQo8L3N2Zz4NCg==",alt:"Swagger UI"}),top_bar=()=>({components:{Topbar:l,Logo:components_Logo}});function isNothing(t){return null==t}var p={isNothing,isObject:function js_yaml_isObject(t){return"object"==typeof t&&null!==t},toArray:function toArray(t){return Array.isArray(t)?t:isNothing(t)?[]:[t]},repeat:function repeat(t,e){var r,n="";for(r=0;rs&&(e=n-s+(o=" ... ").length),r-n>s&&(r=n+s-(a=" ...").length),{str:o+t.slice(e,r).replace(/\t/g,"→")+a,pos:n-e+o.length}}function padStart(t,e){return p.repeat(" ",e-t.length)+t}var d=function makeSnippet(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),"number"!=typeof e.indent&&(e.indent=1),"number"!=typeof e.linesBefore&&(e.linesBefore=3),"number"!=typeof e.linesAfter&&(e.linesAfter=2);for(var r,n=/\r?\n|\r|\0/g,i=[0],o=[],a=-1;r=n.exec(t.buffer);)o.push(r.index),i.push(r.index+r[0].length),t.position<=r.index&&a<0&&(a=i.length-2);a<0&&(a=i.length-1);var s,u,c="",f=Math.min(t.line+e.linesAfter,o.length).toString().length,l=e.maxLength-(e.indent+f+3);for(s=1;s<=e.linesBefore&&!(a-s<0);s++)u=getLine(t.buffer,i[a-s],o[a-s],t.position-(i[a]-i[a-s]),l),c=p.repeat(" ",e.indent)+padStart((t.line-s+1).toString(),f)+" | "+u.str+"\n"+c;for(u=getLine(t.buffer,i[a],o[a],t.position,l),c+=p.repeat(" ",e.indent)+padStart((t.line+1).toString(),f)+" | "+u.str+"\n",c+=p.repeat("-",e.indent+f+3+u.pos)+"^\n",s=1;s<=e.linesAfter&&!(a+s>=o.length);s++)u=getLine(t.buffer,i[a+s],o[a+s],t.position-(i[a]-i[a+s]),l),c+=p.repeat(" ",e.indent)+padStart((t.line+s+1).toString(),f)+" | "+u.str+"\n";return c.replace(/\n$/,"")},M=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],w=["scalar","sequence","mapping"];var g=function Type$1(t,e){if(e=e||{},Object.keys(e).forEach((function(e){if(-1===M.indexOf(e))throw new h('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')})),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=function compileStyleAliases(t){var e={};return null!==t&&Object.keys(t).forEach((function(r){t[r].forEach((function(t){e[String(t)]=r}))})),e}(e.styleAliases||null),-1===w.indexOf(this.kind))throw new h('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')};function compileList(t,e){var r=[];return t[e].forEach((function(t){var e=r.length;r.forEach((function(r,n){r.tag===t.tag&&r.kind===t.kind&&r.multi===t.multi&&(e=n)})),r[e]=t})),r}function Schema$1(t){return this.extend(t)}Schema$1.prototype.extend=function extend(t){var e=[],r=[];if(t instanceof g)r.push(t);else if(Array.isArray(t))r=r.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new h("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(e=e.concat(t.implicit)),t.explicit&&(r=r.concat(t.explicit))}e.forEach((function(t){if(!(t instanceof g))throw new h("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new h("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new h("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),r.forEach((function(t){if(!(t instanceof g))throw new h("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var n=Object.create(Schema$1.prototype);return n.implicit=(this.implicit||[]).concat(e),n.explicit=(this.explicit||[]).concat(r),n.compiledImplicit=compileList(n,"implicit"),n.compiledExplicit=compileList(n,"explicit"),n.compiledTypeMap=function compileMap(){var t,e,r={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function collectType(t){t.multi?(r.multi[t.kind].push(t),r.multi.fallback.push(t)):r[t.kind][t.tag]=r.fallback[t.tag]=t}for(t=0,e=arguments.length;t=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),T=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var k=/^[-+]?[0-9]+e/;var B=new g("tag:yaml.org,2002:float",{kind:"scalar",resolve:function resolveYamlFloat(t){return null!==t&&!(!T.test(t)||"_"===t[t.length-1])},construct:function constructYamlFloat(t){var e,r;return r="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===r?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:r*parseFloat(e,10)},predicate:function isFloat(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||p.isNegativeZero(t))},represent:function representYamlFloat(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(p.isNegativeZero(t))return"-0.0";return r=t.toString(10),k.test(r)?r.replace("e",".e"):r},defaultStyle:"lowercase"}),U=j.extend({implicit:[b,x,A,B]}),Y=U,q=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),R=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");var W=new g("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function resolveYamlTimestamp(t){return null!==t&&(null!==q.exec(t)||null!==R.exec(t))},construct:function constructYamlTimestamp(t){var e,r,n,i,o,a,s,u,c=0,f=null;if(null===(e=q.exec(t))&&(e=R.exec(t)),null===e)throw new Error("Date resolve error");if(r=+e[1],n=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(r,n,i));if(o=+e[4],a=+e[5],s=+e[6],e[7]){for(c=e[7].slice(0,3);c.length<3;)c+="0";c=+c}return e[9]&&(f=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(f=-f)),u=new Date(Date.UTC(r,n,i,o,a,s,c)),f&&u.setTime(u.getTime()-f),u},instanceOf:Date,represent:function representYamlTimestamp(t){return t.toISOString()}});var G=new g("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function resolveYamlMerge(t){return"<<"===t||null===t}}),V="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";var H=new g("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function resolveYamlBinary(t){if(null===t)return!1;var e,r,n=0,i=t.length,o=V;for(r=0;r64)){if(e<0)return!1;n+=6}return n%8==0},construct:function constructYamlBinary(t){var e,r,n=t.replace(/[\r\n=]/g,""),i=n.length,o=V,a=0,s=[];for(e=0;e>16&255),s.push(a>>8&255),s.push(255&a)),a=a<<6|o.indexOf(n.charAt(e));return 0===(r=i%4*6)?(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)):18===r?(s.push(a>>10&255),s.push(a>>2&255)):12===r&&s.push(a>>4&255),new Uint8Array(s)},predicate:function isBinary(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function representYamlBinary(t){var e,r,n="",i=0,o=t.length,a=V;for(e=0;e>18&63],n+=a[i>>12&63],n+=a[i>>6&63],n+=a[63&i]),i=(i<<8)+t[e];return 0===(r=o%3)?(n+=a[i>>18&63],n+=a[i>>12&63],n+=a[i>>6&63],n+=a[63&i]):2===r?(n+=a[i>>10&63],n+=a[i>>4&63],n+=a[i<<2&63],n+=a[64]):1===r&&(n+=a[i>>2&63],n+=a[i<<4&63],n+=a[64],n+=a[64]),n}}),Z=Object.prototype.hasOwnProperty,$=Object.prototype.toString;var X=new g("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function resolveYamlOmap(t){if(null===t)return!0;var e,r,n,i,o,a=[],s=t;for(e=0,r=s.length;e>10),56320+(t-65536&1023))}for(var Lt=new Array(256),_t=new Array(256),vt=0;vt<256;vt++)Lt[vt]=simpleEscapeSequence(vt)?1:0,_t[vt]=simpleEscapeSequence(vt);function State$1(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||it,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function generateError(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=d(r),new h(e,r)}function throwError(t,e){throw generateError(t,e)}function throwWarning(t,e){t.onWarning&&t.onWarning.call(null,generateError(t,e))}var St={YAML:function handleYamlDirective(t,e,r){var n,i,o;null!==t.version&&throwError(t,"duplication of %YAML directive"),1!==r.length&&throwError(t,"YAML directive accepts exactly one argument"),null===(n=/^([0-9]+)\.([0-9]+)$/.exec(r[0]))&&throwError(t,"ill-formed argument of the YAML directive"),i=parseInt(n[1],10),o=parseInt(n[2],10),1!==i&&throwError(t,"unacceptable YAML version of the document"),t.version=r[0],t.checkLineBreaks=o<2,1!==o&&2!==o&&throwWarning(t,"unsupported YAML version of the document")},TAG:function handleTagDirective(t,e,r){var n,i;2!==r.length&&throwError(t,"TAG directive accepts exactly two arguments"),n=r[0],i=r[1],wt.test(n)||throwError(t,"ill-formed tag handle (first argument) of the TAG directive"),ot.call(t.tagMap,n)&&throwError(t,'there is a previously declared suffix for "'+n+'" tag handle'),gt.test(i)||throwError(t,"ill-formed tag prefix (second argument) of the TAG directive");try{i=decodeURIComponent(i)}catch(e){throwError(t,"tag prefix is malformed: "+i)}t.tagMap[n]=i}};function captureSegment(t,e,r,n){var i,o,a,s;if(e1&&(t.result+=p.repeat("\n",e-1))}function readBlockSequence(t,e){var r,n,i=t.tag,o=t.anchor,a=[],s=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=a),n=t.input.charCodeAt(t.position);0!==n&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,throwError(t,"tab characters must not be used in indentation")),45===n)&&is_WS_OR_EOL(t.input.charCodeAt(t.position+1));)if(s=!0,t.position++,skipSeparationSpace(t,!0,-1)&&t.lineIndent<=e)a.push(null),n=t.input.charCodeAt(t.position);else if(r=t.line,composeNode(t,e,ut,!1,!0),a.push(t.result),skipSeparationSpace(t,!0,-1),n=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&0!==n)throwError(t,"bad indentation of a sequence entry");else if(t.lineIndente?M=1:t.lineIndent===e?M=0:t.lineIndente?M=1:t.lineIndent===e?M=0:t.lineIndente)&&(g&&(a=t.line,s=t.lineStart,u=t.position),composeNode(t,e,ct,!0,i)&&(g?M=t.result:w=t.result),g||(storeMappingPair(t,p,h,d,M,w,a,s,u),d=M=w=null),skipSeparationSpace(t,!0,-1),c=t.input.charCodeAt(t.position)),(t.line===o||t.lineIndent>e)&&0!==c)throwError(t,"bad indentation of a mapping entry");else if(t.lineIndent=0))break;0===i?throwError(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?throwError(t,"repeat of an indentation width identifier"):(f=e+i-1,c=!0)}if(is_WHITE_SPACE(o)){do{o=t.input.charCodeAt(++t.position)}while(is_WHITE_SPACE(o));if(35===o)do{o=t.input.charCodeAt(++t.position)}while(!is_EOL(o)&&0!==o)}for(;0!==o;){for(readLineBreak(t),t.lineIndent=0,o=t.input.charCodeAt(t.position);(!c||t.lineIndentf&&(f=t.lineIndent),is_EOL(o))l++;else{if(t.lineIndent0){for(i=a,o=0;i>0;i--)(a=fromHexCode(s=t.input.charCodeAt(++t.position)))>=0?o=(o<<4)+a:throwError(t,"expected hexadecimal character");t.result+=charFromCodepoint(o),t.position++}else throwError(t,"unknown escape sequence");r=n=t.position}else is_EOL(s)?(captureSegment(t,r,n,!0),writeFoldedLines(t,skipSeparationSpace(t,!1,e)),r=n=t.position):t.position===t.lineStart&&testDocumentSeparator(t)?throwError(t,"unexpected end of the document within a double quoted scalar"):(t.position++,n=t.position)}throwError(t,"unexpected end of the stream within a double quoted scalar")}(t,h)?g=!0:!function readAlias(t){var e,r,n;if(42!==(n=t.input.charCodeAt(t.position)))return!1;for(n=t.input.charCodeAt(++t.position),e=t.position;0!==n&&!is_WS_OR_EOL(n)&&!is_FLOW_INDICATOR(n);)n=t.input.charCodeAt(++t.position);return t.position===e&&throwError(t,"name of an alias node must contain at least one character"),r=t.input.slice(e,t.position),ot.call(t.anchorMap,r)||throwError(t,'unidentified alias "'+r+'"'),t.result=t.anchorMap[r],skipSeparationSpace(t,!0,-1),!0}(t)?function readPlainScalar(t,e,r){var n,i,o,a,s,u,c,f,l=t.kind,p=t.result;if(is_WS_OR_EOL(f=t.input.charCodeAt(t.position))||is_FLOW_INDICATOR(f)||35===f||38===f||42===f||33===f||124===f||62===f||39===f||34===f||37===f||64===f||96===f)return!1;if((63===f||45===f)&&(is_WS_OR_EOL(n=t.input.charCodeAt(t.position+1))||r&&is_FLOW_INDICATOR(n)))return!1;for(t.kind="scalar",t.result="",i=o=t.position,a=!1;0!==f;){if(58===f){if(is_WS_OR_EOL(n=t.input.charCodeAt(t.position+1))||r&&is_FLOW_INDICATOR(n))break}else if(35===f){if(is_WS_OR_EOL(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&testDocumentSeparator(t)||r&&is_FLOW_INDICATOR(f))break;if(is_EOL(f)){if(s=t.line,u=t.lineStart,c=t.lineIndent,skipSeparationSpace(t,!1,-1),t.lineIndent>=e){a=!0,f=t.input.charCodeAt(t.position);continue}t.position=o,t.line=s,t.lineStart=u,t.lineIndent=c;break}}a&&(captureSegment(t,i,o,!1),writeFoldedLines(t,t.line-s),i=o=t.position,a=!1),is_WHITE_SPACE(f)||(o=t.position+1),f=t.input.charCodeAt(++t.position)}return captureSegment(t,i,o,!1),!!t.result||(t.kind=l,t.result=p,!1)}(t,h,at===r)&&(g=!0,null===t.tag&&(t.tag="?")):(g=!0,null===t.tag&&null===t.anchor||throwError(t,"alias node should not have any properties")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===M&&(g=s&&readBlockSequence(t,d))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&throwError(t,'unacceptable node kind for ! tag; it should be "scalar", not "'+t.kind+'"'),u=0,c=t.implicitTypes.length;u"),null!==t.result&&l.kind!==t.kind&&throwError(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+l.kind+'", not "'+t.kind+'"'),l.resolve(t.result,t.tag)?(t.result=l.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):throwError(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||g}function readDocument(t){var e,r,n,i,o=t.position,a=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(i=t.input.charCodeAt(t.position))&&(skipSeparationSpace(t,!0,-1),i=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==i));){for(a=!0,i=t.input.charCodeAt(++t.position),e=t.position;0!==i&&!is_WS_OR_EOL(i);)i=t.input.charCodeAt(++t.position);for(n=[],(r=t.input.slice(e,t.position)).length<1&&throwError(t,"directive name must not be less than one character in length");0!==i;){for(;is_WHITE_SPACE(i);)i=t.input.charCodeAt(++t.position);if(35===i){do{i=t.input.charCodeAt(++t.position)}while(0!==i&&!is_EOL(i));break}if(is_EOL(i))break;for(e=t.position;0!==i&&!is_WS_OR_EOL(i);)i=t.input.charCodeAt(++t.position);n.push(t.input.slice(e,t.position))}0!==i&&readLineBreak(t),ot.call(St,r)?St[r](t,r,n):throwWarning(t,'unknown document directive "'+r+'"')}skipSeparationSpace(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,skipSeparationSpace(t,!0,-1)):a&&throwError(t,"directives end mark is expected"),composeNode(t,t.lineIndent-1,ct,!1,!0),skipSeparationSpace(t,!0,-1),t.checkLineBreaks&&yt.test(t.input.slice(o,t.position))&&throwWarning(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&testDocumentSeparator(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,skipSeparationSpace(t,!0,-1)):t.position=55296&&n<=56319&&e+1=56320&&r<=57343?1024*(n-55296)+r-56320+65536:n}function needIndentIndicator(t){return/^\n* /.test(t)}var re=1,ne=2,ie=3,oe=4,ae=5;function chooseScalarStyle(t,e,r,n,i,o,a,s){var u,c=0,f=null,l=!1,p=!1,h=-1!==n,d=-1,M=function isPlainSafeFirst(t){return isPrintable(t)&&t!==jt&&!isWhitespace(t)&&t!==Yt&&t!==Qt&&t!==Ft&&t!==Ut&&t!==Wt&&t!==Gt&&t!==Kt&&t!==Jt&&t!==At&&t!==zt&&t!==Bt&&t!==Et&&t!==Ht&&t!==qt&&t!==Rt&&t!==kt&&t!==Ot&&t!==Tt&&t!==Pt&&t!==Vt}(codePointAt(t,0))&&function isPlainSafeLast(t){return!isWhitespace(t)&&t!==Ft}(codePointAt(t,t.length-1));if(e||a)for(u=0;u=65536?u+=2:u++){if(!isPrintable(c=codePointAt(t,u)))return ae;M=M&&isPlainSafe(c,f,s),f=c}else{for(u=0;u=65536?u+=2:u++){if((c=codePointAt(t,u))===xt)l=!0,h&&(p=p||u-d-1>n&&" "!==t[d+1],d=u);else if(!isPrintable(c))return ae;M=M&&isPlainSafe(c,f,s),f=c}p=p||h&&u-d-1>n&&" "!==t[d+1]}return l||p?r>9&&needIndentIndicator(t)?ae:a?o===ee?ae:ne:p?oe:ie:!M||a||i(t)?o===ee?ae:ne:re}function writeScalar(t,e,r,n,i){t.dump=function(){if(0===e.length)return t.quotingType===ee?'""':"''";if(!t.noCompatMode&&(-1!==$t.indexOf(e)||Xt.test(e)))return t.quotingType===ee?'"'+e+'"':"'"+e+"'";var o=t.indent*Math.max(1,r),a=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-o),s=n||t.flowLevel>-1&&r>=t.flowLevel;switch(chooseScalarStyle(e,s,t.indent,a,(function testAmbiguity(e){return function testImplicitResolving(t,e){var r,n;for(r=0,n=t.implicitTypes.length;r"+blockHeader(e,t.indent)+dropEndingNewline(indentString(function foldString(t,e){var r,n,i=/(\n+)([^\n]*)/g,o=(s=t.indexOf("\n"),s=-1!==s?s:t.length,i.lastIndex=s,foldLine(t.slice(0,s),e)),a="\n"===t[0]||" "===t[0];var s;for(;n=i.exec(t);){var u=n[1],c=n[2];r=" "===c[0],o+=u+(a||r||""===c?"":"\n")+foldLine(c,e),a=r}return o}(e,a),o));case ae:return'"'+function escapeString(t){for(var e,r="",n=0,i=0;i=65536?i+=2:i++)n=codePointAt(t,i),!(e=Zt[n])&&isPrintable(n)?(r+=t[i],n>=65536&&(r+=t[i+1])):r+=e||encodeHex(n);return r}(e)+'"';default:throw new h("impossible error: invalid scalar style")}}()}function blockHeader(t,e){var r=needIndentIndicator(t)?String(e):"",n="\n"===t[t.length-1];return r+(n&&("\n"===t[t.length-2]||"\n"===t)?"+":n?"":"-")+"\n"}function dropEndingNewline(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function foldLine(t,e){if(""===t||" "===t[0])return t;for(var r,n,i=/ [^ ]/g,o=0,a=0,s=0,u="";r=i.exec(t);)(s=r.index)-o>e&&(n=a>o?a:s,u+="\n"+t.slice(o,n),o=n+1),a=s;return u+="\n",t.length-o>e&&a>o?u+=t.slice(o,a)+"\n"+t.slice(a+1):u+=t.slice(o),u.slice(1)}function writeBlockSequence(t,e,r,n){var i,o,a,s="",u=t.tag;for(i=0,o=r.length;i tag resolver accepts not "'+u+'" style');n=s.represent[u](e,u)}t.dump=n}return!0}return!1}function writeNode(t,e,r,n,i,o,a){t.tag=null,t.dump=r,detectType(t,r,!1)||detectType(t,r,!0);var s,u=mt.call(t.dump),c=n;n&&(n=t.flowLevel<0||t.flowLevel>e);var f,l,p="[object Object]"===u||"[object Array]"===u;if(p&&(l=-1!==(f=t.duplicates.indexOf(r))),(null!==t.tag&&"?"!==t.tag||l||2!==t.indent&&e>0)&&(i=!1),l&&t.usedDuplicates[f])t.dump="*ref_"+f;else{if(p&&l&&!t.usedDuplicates[f]&&(t.usedDuplicates[f]=!0),"[object Object]"===u)n&&0!==Object.keys(t.dump).length?(!function writeBlockMapping(t,e,r,n){var i,o,a,s,u,c,f="",l=t.tag,p=Object.keys(r);if(!0===t.sortKeys)p.sort();else if("function"==typeof t.sortKeys)p.sort(t.sortKeys);else if(t.sortKeys)throw new h("sortKeys must be a boolean or a function");for(i=0,o=p.length;i1024)&&(t.dump&&xt===t.dump.charCodeAt(0)?c+="?":c+="? "),c+=t.dump,u&&(c+=generateNextLine(t,e)),writeNode(t,e+1,s,!0,u)&&(t.dump&&xt===t.dump.charCodeAt(0)?c+=":":c+=": ",f+=c+=t.dump));t.tag=l,t.dump=f||"{}"}(t,e,t.dump,i),l&&(t.dump="&ref_"+f+t.dump)):(!function writeFlowMapping(t,e,r){var n,i,o,a,s,u="",c=t.tag,f=Object.keys(r);for(n=0,i=f.length;n1024&&(s+="? "),s+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),writeNode(t,e,a,!1,!1)&&(u+=s+=t.dump));t.tag=c,t.dump="{"+u+"}"}(t,e,t.dump),l&&(t.dump="&ref_"+f+" "+t.dump));else if("[object Array]"===u)n&&0!==t.dump.length?(t.noArrayIndent&&!a&&e>0?writeBlockSequence(t,e-1,t.dump,i):writeBlockSequence(t,e,t.dump,i),l&&(t.dump="&ref_"+f+t.dump)):(!function writeFlowSequence(t,e,r){var n,i,o,a="",s=t.tag;for(n=0,i=r.length;n",t.dump=s+" "+t.dump)}return!0}function getDuplicateReferences(t,e){var r,n,i=[],o=[];for(inspectNode(t,i,o),r=0,n=o.length;r{try{return se.load(t)}catch(t){return e&&e.errActions.newThrownErr(new Error(t)),{}}},ue="configs_update",ce="configs_toggle";function update(t,e){return{type:ue,payload:{[t]:e}}}function toggle(t){return{type:ce,payload:t}}const loaded=()=>()=>{},downloadConfig=t=>e=>{const{fn:{fetch:r}}=e;return r(t)},getConfigByUrl=(t,e)=>r=>{let{specActions:n}=r;if(t)return n.downloadConfig(t).then(next,next);function next(r){r instanceof Error||r.status>=400?(n.updateLoadingStatus("failedConfig"),n.updateLoadingStatus("failedConfig"),n.updateUrl(""),console.error(r.statusText+" "+t.url),e(null)):e(parseYamlConfig(r.text))}},get=(t,e)=>t.getIn(Array.isArray(e)?e:[e]),fe={[ue]:(t,e)=>t.merge((0,u.fromJS)(e.payload)),[ce]:(t,e)=>{const r=e.payload,n=t.get(r);return t.set(r,!n)}},le={getLocalConfig:()=>parseYamlConfig('---\nurl: "https://petstore.swagger.io/v2/swagger.json"\ndom_id: "#swagger-ui"\nvalidatorUrl: "https://validator.swagger.io/validator"\n')};var pe=__webpack_require__(7287),he=__webpack_require__.n(pe),de=__webpack_require__(3101),ye=__webpack_require__.n(de);const Me=console.error,withErrorBoundary=t=>e=>{const{getComponent:r,fn:n}=t(),o=r("ErrorBoundary"),a=n.getDisplayName(e);class WithErrorBoundary extends i.Component{render(){return i.createElement(o,{targetName:a,getComponent:r,fn:n},i.createElement(e,ye()({},this.props,this.context)))}}var s;return WithErrorBoundary.displayName=`WithErrorBoundary(${a})`,(s=e).prototype&&s.prototype.isReactComponent&&(WithErrorBoundary.prototype.mapStateToProps=e.prototype.mapStateToProps),WithErrorBoundary},fallback=t=>{let{name:e}=t;return i.createElement("div",{className:"fallback"},"😱 ",i.createElement("i",null,"Could not render ","t"===e?"this component":e,", see the console."))};class ErrorBoundary extends i.Component{static getDerivedStateFromError(t){return{hasError:!0,error:t}}constructor(){super(...arguments),this.state={hasError:!1,error:null}}componentDidCatch(t,e){this.props.fn.componentDidCatch(t,e)}render(){const{getComponent:t,targetName:e,children:r}=this.props;if(this.state.hasError){const r=t("Fallback");return i.createElement(r,{name:e})}return r}}ErrorBoundary.defaultProps={targetName:"this component",getComponent:()=>fallback,fn:{componentDidCatch:Me},children:null};const we=ErrorBoundary,ge=[top_bar,function configsPlugin(){return{statePlugins:{spec:{actions:e,selectors:le},configs:{reducers:fe,actions:t,selectors:n}}}},stadalone_layout,function(){let{componentList:t=[],fullOverride:e=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r=>{let{getSystem:n}=r;const i=e?t:["App","BaseLayout","VersionPragmaFilter","InfoContainer","ServersContainer","SchemesContainer","AuthorizeBtnContainer","FilterContainer","Operations","OperationContainer","parameters","responses","OperationServers","Models","ModelWrapper",...t],o=he()(i,Array(i.length).fill(((t,e)=>{let{fn:r}=e;return r.withErrorBoundary(t)})));return{fn:{componentDidCatch:Me,withErrorBoundary:withErrorBoundary(n)},components:{ErrorBoundary:we,Fallback:fallback},wrapComponents:o}}}({fullOverride:!0,componentList:["Topbar","StandaloneLayout","onlineValidatorBadge"]})]})(),r=r.default})())); +//# sourceMappingURL=swagger-ui-standalone-preset.js.map \ No newline at end of file diff --git a/src/Laravel/public/swagger-ui.css b/src/Laravel/public/swagger-ui.css new file mode 100644 index 00000000000..11dacf53071 --- /dev/null +++ b/src/Laravel/public/swagger-ui.css @@ -0,0 +1,3 @@ +.swagger-ui{color:#3b4151;font-family:sans-serif/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */}.swagger-ui html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.15}.swagger-ui body{margin:0}.swagger-ui article,.swagger-ui aside,.swagger-ui footer,.swagger-ui header,.swagger-ui nav,.swagger-ui section{display:block}.swagger-ui h1{font-size:2em;margin:.67em 0}.swagger-ui figcaption,.swagger-ui figure,.swagger-ui main{display:block}.swagger-ui figure{margin:1em 40px}.swagger-ui hr{box-sizing:content-box;height:0;overflow:visible}.swagger-ui pre{font-family:monospace,monospace;font-size:1em}.swagger-ui a{-webkit-text-decoration-skip:objects;background-color:transparent}.swagger-ui abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.swagger-ui b,.swagger-ui strong{font-weight:inherit;font-weight:bolder}.swagger-ui code,.swagger-ui kbd,.swagger-ui samp{font-family:monospace,monospace;font-size:1em}.swagger-ui dfn{font-style:italic}.swagger-ui mark{background-color:#ff0;color:#000}.swagger-ui small{font-size:80%}.swagger-ui sub,.swagger-ui sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.swagger-ui sub{bottom:-.25em}.swagger-ui sup{top:-.5em}.swagger-ui audio,.swagger-ui video{display:inline-block}.swagger-ui audio:not([controls]){display:none;height:0}.swagger-ui img{border-style:none}.swagger-ui svg:not(:root){overflow:hidden}.swagger-ui button,.swagger-ui input,.swagger-ui optgroup,.swagger-ui select,.swagger-ui textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}.swagger-ui button,.swagger-ui input{overflow:visible}.swagger-ui button,.swagger-ui select{text-transform:none}.swagger-ui [type=reset],.swagger-ui [type=submit],.swagger-ui button,.swagger-ui html [type=button]{-webkit-appearance:button}.swagger-ui [type=button]::-moz-focus-inner,.swagger-ui [type=reset]::-moz-focus-inner,.swagger-ui [type=submit]::-moz-focus-inner,.swagger-ui button::-moz-focus-inner{border-style:none;padding:0}.swagger-ui [type=button]:-moz-focusring,.swagger-ui [type=reset]:-moz-focusring,.swagger-ui [type=submit]:-moz-focusring,.swagger-ui button:-moz-focusring{outline:1px dotted ButtonText}.swagger-ui fieldset{padding:.35em .75em .625em}.swagger-ui legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.swagger-ui progress{display:inline-block;vertical-align:baseline}.swagger-ui textarea{overflow:auto}.swagger-ui [type=checkbox],.swagger-ui [type=radio]{box-sizing:border-box;padding:0}.swagger-ui [type=number]::-webkit-inner-spin-button,.swagger-ui [type=number]::-webkit-outer-spin-button{height:auto}.swagger-ui [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.swagger-ui [type=search]::-webkit-search-cancel-button,.swagger-ui [type=search]::-webkit-search-decoration{-webkit-appearance:none}.swagger-ui ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.swagger-ui details,.swagger-ui menu{display:block}.swagger-ui summary{display:list-item}.swagger-ui canvas{display:inline-block}.swagger-ui [hidden],.swagger-ui template{display:none}.swagger-ui .debug *{outline:1px solid gold}.swagger-ui .debug-white *{outline:1px solid #fff}.swagger-ui .debug-black *{outline:1px solid #000}.swagger-ui .debug-grid{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTRDOTY4N0U2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTRDOTY4N0Q2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3NjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3NzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsBS+GMAAAAjSURBVHjaYvz//z8DLsD4gcGXiYEAGBIKGBne//fFpwAgwAB98AaF2pjlUQAAAABJRU5ErkJggg==) repeat 0 0}.swagger-ui .debug-grid-16{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODYyRjhERDU2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODYyRjhERDQ2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QTY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3QjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvCS01IAAABMSURBVHjaYmR4/5+BFPBfAMFm/MBgx8RAGWCn1AAmSg34Q6kBDKMGMDCwICeMIemF/5QawEipAWwUhwEjMDvbAWlWkvVBwu8vQIABAEwBCph8U6c0AAAAAElFTkSuQmCC) repeat 0 0}.swagger-ui .debug-grid-8-solid{background:#fff url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAAAAD/4QMxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkIxMjI0OTczNjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkIxMjI0OTc0NjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjEyMjQ5NzE2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QjEyMjQ5NzI2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAbGhopHSlBJiZBQi8vL0JHPz4+P0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHAR0pKTQmND8oKD9HPzU/R0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0f/wAARCAAIAAgDASIAAhEBAxEB/8QAWQABAQAAAAAAAAAAAAAAAAAAAAYBAQEAAAAAAAAAAAAAAAAAAAIEEAEBAAMBAAAAAAAAAAAAAAABADECA0ERAAEDBQAAAAAAAAAAAAAAAAARITFBUWESIv/aAAwDAQACEQMRAD8AoOnTV1QTD7JJshP3vSM3P//Z) repeat 0 0}.swagger-ui .debug-grid-16-solid{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzY3MkJEN0U2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzY3MkJEN0Y2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3RDY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pve6J3kAAAAzSURBVHjaYvz//z8D0UDsMwMjSRoYP5Gq4SPNbRjVMEQ1fCRDg+in/6+J1AJUxsgAEGAA31BAJMS0GYEAAAAASUVORK5CYII=) repeat 0 0}.swagger-ui .border-box,.swagger-ui a,.swagger-ui article,.swagger-ui body,.swagger-ui code,.swagger-ui dd,.swagger-ui div,.swagger-ui dl,.swagger-ui dt,.swagger-ui fieldset,.swagger-ui footer,.swagger-ui form,.swagger-ui h1,.swagger-ui h2,.swagger-ui h3,.swagger-ui h4,.swagger-ui h5,.swagger-ui h6,.swagger-ui header,.swagger-ui html,.swagger-ui input[type=email],.swagger-ui input[type=number],.swagger-ui input[type=password],.swagger-ui input[type=tel],.swagger-ui input[type=text],.swagger-ui input[type=url],.swagger-ui legend,.swagger-ui li,.swagger-ui main,.swagger-ui ol,.swagger-ui p,.swagger-ui pre,.swagger-ui section,.swagger-ui table,.swagger-ui td,.swagger-ui textarea,.swagger-ui th,.swagger-ui tr,.swagger-ui ul{box-sizing:border-box}.swagger-ui .aspect-ratio{height:0;position:relative}.swagger-ui .aspect-ratio--16x9{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1{padding-bottom:100%}.swagger-ui .aspect-ratio--object{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}@media screen and (min-width:30em){.swagger-ui .aspect-ratio-ns{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-ns{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-ns{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-ns{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-ns{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-ns{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-ns{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-ns{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-ns{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-ns{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-ns{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-ns{padding-bottom:100%}.swagger-ui .aspect-ratio--object-ns{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .aspect-ratio-m{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-m{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-m{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-m{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-m{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-m{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-m{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-m{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-m{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-m{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-m{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-m{padding-bottom:100%}.swagger-ui .aspect-ratio--object-m{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}@media screen and (min-width:60em){.swagger-ui .aspect-ratio-l{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-l{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-l{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-l{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-l{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-l{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-l{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-l{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-l{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-l{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-l{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-l{padding-bottom:100%}.swagger-ui .aspect-ratio--object-l{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}.swagger-ui img{max-width:100%}.swagger-ui .cover{background-size:cover!important}.swagger-ui .contain{background-size:contain!important}@media screen and (min-width:30em){.swagger-ui .cover-ns{background-size:cover!important}.swagger-ui .contain-ns{background-size:contain!important}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .cover-m{background-size:cover!important}.swagger-ui .contain-m{background-size:contain!important}}@media screen and (min-width:60em){.swagger-ui .cover-l{background-size:cover!important}.swagger-ui .contain-l{background-size:contain!important}}.swagger-ui .bg-center{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left{background-position:0;background-repeat:no-repeat}@media screen and (min-width:30em){.swagger-ui .bg-center-ns{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-ns{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-ns{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-ns{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-ns{background-position:0;background-repeat:no-repeat}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .bg-center-m{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-m{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-m{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-m{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-m{background-position:0;background-repeat:no-repeat}}@media screen and (min-width:60em){.swagger-ui .bg-center-l{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-l{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-l{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-l{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-l{background-position:0;background-repeat:no-repeat}}.swagger-ui .outline{outline:1px solid}.swagger-ui .outline-transparent{outline:1px solid transparent}.swagger-ui .outline-0{outline:0}@media screen and (min-width:30em){.swagger-ui .outline-ns{outline:1px solid}.swagger-ui .outline-transparent-ns{outline:1px solid transparent}.swagger-ui .outline-0-ns{outline:0}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .outline-m{outline:1px solid}.swagger-ui .outline-transparent-m{outline:1px solid transparent}.swagger-ui .outline-0-m{outline:0}}@media screen and (min-width:60em){.swagger-ui .outline-l{outline:1px solid}.swagger-ui .outline-transparent-l{outline:1px solid transparent}.swagger-ui .outline-0-l{outline:0}}.swagger-ui .ba{border-style:solid;border-width:1px}.swagger-ui .bt{border-top-style:solid;border-top-width:1px}.swagger-ui .br{border-right-style:solid;border-right-width:1px}.swagger-ui .bb{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl{border-left-style:solid;border-left-width:1px}.swagger-ui .bn{border-style:none;border-width:0}@media screen and (min-width:30em){.swagger-ui .ba-ns{border-style:solid;border-width:1px}.swagger-ui .bt-ns{border-top-style:solid;border-top-width:1px}.swagger-ui .br-ns{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-ns{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-ns{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-ns{border-style:none;border-width:0}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .ba-m{border-style:solid;border-width:1px}.swagger-ui .bt-m{border-top-style:solid;border-top-width:1px}.swagger-ui .br-m{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-m{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-m{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-m{border-style:none;border-width:0}}@media screen and (min-width:60em){.swagger-ui .ba-l{border-style:solid;border-width:1px}.swagger-ui .bt-l{border-top-style:solid;border-top-width:1px}.swagger-ui .br-l{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-l{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-l{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-l{border-style:none;border-width:0}}.swagger-ui .b--black{border-color:#000}.swagger-ui .b--near-black{border-color:#111}.swagger-ui .b--dark-gray{border-color:#333}.swagger-ui .b--mid-gray{border-color:#555}.swagger-ui .b--gray{border-color:#777}.swagger-ui .b--silver{border-color:#999}.swagger-ui .b--light-silver{border-color:#aaa}.swagger-ui .b--moon-gray{border-color:#ccc}.swagger-ui .b--light-gray{border-color:#eee}.swagger-ui .b--near-white{border-color:#f4f4f4}.swagger-ui .b--white{border-color:#fff}.swagger-ui .b--white-90{border-color:hsla(0,0%,100%,.9)}.swagger-ui .b--white-80{border-color:hsla(0,0%,100%,.8)}.swagger-ui .b--white-70{border-color:hsla(0,0%,100%,.7)}.swagger-ui .b--white-60{border-color:hsla(0,0%,100%,.6)}.swagger-ui .b--white-50{border-color:hsla(0,0%,100%,.5)}.swagger-ui .b--white-40{border-color:hsla(0,0%,100%,.4)}.swagger-ui .b--white-30{border-color:hsla(0,0%,100%,.3)}.swagger-ui .b--white-20{border-color:hsla(0,0%,100%,.2)}.swagger-ui .b--white-10{border-color:hsla(0,0%,100%,.1)}.swagger-ui .b--white-05{border-color:hsla(0,0%,100%,.05)}.swagger-ui .b--white-025{border-color:hsla(0,0%,100%,.025)}.swagger-ui .b--white-0125{border-color:hsla(0,0%,100%,.013)}.swagger-ui .b--black-90{border-color:rgba(0,0,0,.9)}.swagger-ui .b--black-80{border-color:rgba(0,0,0,.8)}.swagger-ui .b--black-70{border-color:rgba(0,0,0,.7)}.swagger-ui .b--black-60{border-color:rgba(0,0,0,.6)}.swagger-ui .b--black-50{border-color:rgba(0,0,0,.5)}.swagger-ui .b--black-40{border-color:rgba(0,0,0,.4)}.swagger-ui .b--black-30{border-color:rgba(0,0,0,.3)}.swagger-ui .b--black-20{border-color:rgba(0,0,0,.2)}.swagger-ui .b--black-10{border-color:rgba(0,0,0,.1)}.swagger-ui .b--black-05{border-color:rgba(0,0,0,.05)}.swagger-ui .b--black-025{border-color:rgba(0,0,0,.025)}.swagger-ui .b--black-0125{border-color:rgba(0,0,0,.013)}.swagger-ui .b--dark-red{border-color:#e7040f}.swagger-ui .b--red{border-color:#ff4136}.swagger-ui .b--light-red{border-color:#ff725c}.swagger-ui .b--orange{border-color:#ff6300}.swagger-ui .b--gold{border-color:#ffb700}.swagger-ui .b--yellow{border-color:gold}.swagger-ui .b--light-yellow{border-color:#fbf1a9}.swagger-ui .b--purple{border-color:#5e2ca5}.swagger-ui .b--light-purple{border-color:#a463f2}.swagger-ui .b--dark-pink{border-color:#d5008f}.swagger-ui .b--hot-pink{border-color:#ff41b4}.swagger-ui .b--pink{border-color:#ff80cc}.swagger-ui .b--light-pink{border-color:#ffa3d7}.swagger-ui .b--dark-green{border-color:#137752}.swagger-ui .b--green{border-color:#19a974}.swagger-ui .b--light-green{border-color:#9eebcf}.swagger-ui .b--navy{border-color:#001b44}.swagger-ui .b--dark-blue{border-color:#00449e}.swagger-ui .b--blue{border-color:#357edd}.swagger-ui .b--light-blue{border-color:#96ccff}.swagger-ui .b--lightest-blue{border-color:#cdecff}.swagger-ui .b--washed-blue{border-color:#f6fffe}.swagger-ui .b--washed-green{border-color:#e8fdf5}.swagger-ui .b--washed-yellow{border-color:#fffceb}.swagger-ui .b--washed-red{border-color:#ffdfdf}.swagger-ui .b--transparent{border-color:transparent}.swagger-ui .b--inherit{border-color:inherit}.swagger-ui .br0{border-radius:0}.swagger-ui .br1{border-radius:.125rem}.swagger-ui .br2{border-radius:.25rem}.swagger-ui .br3{border-radius:.5rem}.swagger-ui .br4{border-radius:1rem}.swagger-ui .br-100{border-radius:100%}.swagger-ui .br-pill{border-radius:9999px}.swagger-ui .br--bottom{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left{border-bottom-right-radius:0;border-top-right-radius:0}@media screen and (min-width:30em){.swagger-ui .br0-ns{border-radius:0}.swagger-ui .br1-ns{border-radius:.125rem}.swagger-ui .br2-ns{border-radius:.25rem}.swagger-ui .br3-ns{border-radius:.5rem}.swagger-ui .br4-ns{border-radius:1rem}.swagger-ui .br-100-ns{border-radius:100%}.swagger-ui .br-pill-ns{border-radius:9999px}.swagger-ui .br--bottom-ns{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-ns{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-ns{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-ns{border-bottom-right-radius:0;border-top-right-radius:0}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .br0-m{border-radius:0}.swagger-ui .br1-m{border-radius:.125rem}.swagger-ui .br2-m{border-radius:.25rem}.swagger-ui .br3-m{border-radius:.5rem}.swagger-ui .br4-m{border-radius:1rem}.swagger-ui .br-100-m{border-radius:100%}.swagger-ui .br-pill-m{border-radius:9999px}.swagger-ui .br--bottom-m{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-m{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-m{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-m{border-bottom-right-radius:0;border-top-right-radius:0}}@media screen and (min-width:60em){.swagger-ui .br0-l{border-radius:0}.swagger-ui .br1-l{border-radius:.125rem}.swagger-ui .br2-l{border-radius:.25rem}.swagger-ui .br3-l{border-radius:.5rem}.swagger-ui .br4-l{border-radius:1rem}.swagger-ui .br-100-l{border-radius:100%}.swagger-ui .br-pill-l{border-radius:9999px}.swagger-ui .br--bottom-l{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-l{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-l{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-l{border-bottom-right-radius:0;border-top-right-radius:0}}.swagger-ui .b--dotted{border-style:dotted}.swagger-ui .b--dashed{border-style:dashed}.swagger-ui .b--solid{border-style:solid}.swagger-ui .b--none{border-style:none}@media screen and (min-width:30em){.swagger-ui .b--dotted-ns{border-style:dotted}.swagger-ui .b--dashed-ns{border-style:dashed}.swagger-ui .b--solid-ns{border-style:solid}.swagger-ui .b--none-ns{border-style:none}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .b--dotted-m{border-style:dotted}.swagger-ui .b--dashed-m{border-style:dashed}.swagger-ui .b--solid-m{border-style:solid}.swagger-ui .b--none-m{border-style:none}}@media screen and (min-width:60em){.swagger-ui .b--dotted-l{border-style:dotted}.swagger-ui .b--dashed-l{border-style:dashed}.swagger-ui .b--solid-l{border-style:solid}.swagger-ui .b--none-l{border-style:none}}.swagger-ui .bw0{border-width:0}.swagger-ui .bw1{border-width:.125rem}.swagger-ui .bw2{border-width:.25rem}.swagger-ui .bw3{border-width:.5rem}.swagger-ui .bw4{border-width:1rem}.swagger-ui .bw5{border-width:2rem}.swagger-ui .bt-0{border-top-width:0}.swagger-ui .br-0{border-right-width:0}.swagger-ui .bb-0{border-bottom-width:0}.swagger-ui .bl-0{border-left-width:0}@media screen and (min-width:30em){.swagger-ui .bw0-ns{border-width:0}.swagger-ui .bw1-ns{border-width:.125rem}.swagger-ui .bw2-ns{border-width:.25rem}.swagger-ui .bw3-ns{border-width:.5rem}.swagger-ui .bw4-ns{border-width:1rem}.swagger-ui .bw5-ns{border-width:2rem}.swagger-ui .bt-0-ns{border-top-width:0}.swagger-ui .br-0-ns{border-right-width:0}.swagger-ui .bb-0-ns{border-bottom-width:0}.swagger-ui .bl-0-ns{border-left-width:0}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .bw0-m{border-width:0}.swagger-ui .bw1-m{border-width:.125rem}.swagger-ui .bw2-m{border-width:.25rem}.swagger-ui .bw3-m{border-width:.5rem}.swagger-ui .bw4-m{border-width:1rem}.swagger-ui .bw5-m{border-width:2rem}.swagger-ui .bt-0-m{border-top-width:0}.swagger-ui .br-0-m{border-right-width:0}.swagger-ui .bb-0-m{border-bottom-width:0}.swagger-ui .bl-0-m{border-left-width:0}}@media screen and (min-width:60em){.swagger-ui .bw0-l{border-width:0}.swagger-ui .bw1-l{border-width:.125rem}.swagger-ui .bw2-l{border-width:.25rem}.swagger-ui .bw3-l{border-width:.5rem}.swagger-ui .bw4-l{border-width:1rem}.swagger-ui .bw5-l{border-width:2rem}.swagger-ui .bt-0-l{border-top-width:0}.swagger-ui .br-0-l{border-right-width:0}.swagger-ui .bb-0-l{border-bottom-width:0}.swagger-ui .bl-0-l{border-left-width:0}}.swagger-ui .shadow-1{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}@media screen and (min-width:30em){.swagger-ui .shadow-1-ns{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2-ns{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3-ns{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4-ns{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5-ns{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .shadow-1-m{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2-m{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3-m{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4-m{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5-m{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:60em){.swagger-ui .shadow-1-l{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2-l{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3-l{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4-l{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5-l{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}.swagger-ui .pre{overflow-x:auto;overflow-y:hidden;overflow:scroll}.swagger-ui .top-0{top:0}.swagger-ui .right-0{right:0}.swagger-ui .bottom-0{bottom:0}.swagger-ui .left-0{left:0}.swagger-ui .top-1{top:1rem}.swagger-ui .right-1{right:1rem}.swagger-ui .bottom-1{bottom:1rem}.swagger-ui .left-1{left:1rem}.swagger-ui .top-2{top:2rem}.swagger-ui .right-2{right:2rem}.swagger-ui .bottom-2{bottom:2rem}.swagger-ui .left-2{left:2rem}.swagger-ui .top--1{top:-1rem}.swagger-ui .right--1{right:-1rem}.swagger-ui .bottom--1{bottom:-1rem}.swagger-ui .left--1{left:-1rem}.swagger-ui .top--2{top:-2rem}.swagger-ui .right--2{right:-2rem}.swagger-ui .bottom--2{bottom:-2rem}.swagger-ui .left--2{left:-2rem}.swagger-ui .absolute--fill{bottom:0;left:0;right:0;top:0}@media screen and (min-width:30em){.swagger-ui .top-0-ns{top:0}.swagger-ui .left-0-ns{left:0}.swagger-ui .right-0-ns{right:0}.swagger-ui .bottom-0-ns{bottom:0}.swagger-ui .top-1-ns{top:1rem}.swagger-ui .left-1-ns{left:1rem}.swagger-ui .right-1-ns{right:1rem}.swagger-ui .bottom-1-ns{bottom:1rem}.swagger-ui .top-2-ns{top:2rem}.swagger-ui .left-2-ns{left:2rem}.swagger-ui .right-2-ns{right:2rem}.swagger-ui .bottom-2-ns{bottom:2rem}.swagger-ui .top--1-ns{top:-1rem}.swagger-ui .right--1-ns{right:-1rem}.swagger-ui .bottom--1-ns{bottom:-1rem}.swagger-ui .left--1-ns{left:-1rem}.swagger-ui .top--2-ns{top:-2rem}.swagger-ui .right--2-ns{right:-2rem}.swagger-ui .bottom--2-ns{bottom:-2rem}.swagger-ui .left--2-ns{left:-2rem}.swagger-ui .absolute--fill-ns{bottom:0;left:0;right:0;top:0}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .top-0-m{top:0}.swagger-ui .left-0-m{left:0}.swagger-ui .right-0-m{right:0}.swagger-ui .bottom-0-m{bottom:0}.swagger-ui .top-1-m{top:1rem}.swagger-ui .left-1-m{left:1rem}.swagger-ui .right-1-m{right:1rem}.swagger-ui .bottom-1-m{bottom:1rem}.swagger-ui .top-2-m{top:2rem}.swagger-ui .left-2-m{left:2rem}.swagger-ui .right-2-m{right:2rem}.swagger-ui .bottom-2-m{bottom:2rem}.swagger-ui .top--1-m{top:-1rem}.swagger-ui .right--1-m{right:-1rem}.swagger-ui .bottom--1-m{bottom:-1rem}.swagger-ui .left--1-m{left:-1rem}.swagger-ui .top--2-m{top:-2rem}.swagger-ui .right--2-m{right:-2rem}.swagger-ui .bottom--2-m{bottom:-2rem}.swagger-ui .left--2-m{left:-2rem}.swagger-ui .absolute--fill-m{bottom:0;left:0;right:0;top:0}}@media screen and (min-width:60em){.swagger-ui .top-0-l{top:0}.swagger-ui .left-0-l{left:0}.swagger-ui .right-0-l{right:0}.swagger-ui .bottom-0-l{bottom:0}.swagger-ui .top-1-l{top:1rem}.swagger-ui .left-1-l{left:1rem}.swagger-ui .right-1-l{right:1rem}.swagger-ui .bottom-1-l{bottom:1rem}.swagger-ui .top-2-l{top:2rem}.swagger-ui .left-2-l{left:2rem}.swagger-ui .right-2-l{right:2rem}.swagger-ui .bottom-2-l{bottom:2rem}.swagger-ui .top--1-l{top:-1rem}.swagger-ui .right--1-l{right:-1rem}.swagger-ui .bottom--1-l{bottom:-1rem}.swagger-ui .left--1-l{left:-1rem}.swagger-ui .top--2-l{top:-2rem}.swagger-ui .right--2-l{right:-2rem}.swagger-ui .bottom--2-l{bottom:-2rem}.swagger-ui .left--2-l{left:-2rem}.swagger-ui .absolute--fill-l{bottom:0;left:0;right:0;top:0}}.swagger-ui .cf:after,.swagger-ui .cf:before{content:" ";display:table}.swagger-ui .cf:after{clear:both}.swagger-ui .cf{zoom:1}.swagger-ui .cl{clear:left}.swagger-ui .cr{clear:right}.swagger-ui .cb{clear:both}.swagger-ui .cn{clear:none}@media screen and (min-width:30em){.swagger-ui .cl-ns{clear:left}.swagger-ui .cr-ns{clear:right}.swagger-ui .cb-ns{clear:both}.swagger-ui .cn-ns{clear:none}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .cl-m{clear:left}.swagger-ui .cr-m{clear:right}.swagger-ui .cb-m{clear:both}.swagger-ui .cn-m{clear:none}}@media screen and (min-width:60em){.swagger-ui .cl-l{clear:left}.swagger-ui .cr-l{clear:right}.swagger-ui .cb-l{clear:both}.swagger-ui .cn-l{clear:none}}.swagger-ui .flex{display:flex}.swagger-ui .inline-flex{display:inline-flex}.swagger-ui .flex-auto{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none{flex:none}.swagger-ui .flex-column{flex-direction:column}.swagger-ui .flex-row{flex-direction:row}.swagger-ui .flex-wrap{flex-wrap:wrap}.swagger-ui .flex-nowrap{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse{flex-direction:column-reverse}.swagger-ui .flex-row-reverse{flex-direction:row-reverse}.swagger-ui .items-start{align-items:flex-start}.swagger-ui .items-end{align-items:flex-end}.swagger-ui .items-center{align-items:center}.swagger-ui .items-baseline{align-items:baseline}.swagger-ui .items-stretch{align-items:stretch}.swagger-ui .self-start{align-self:flex-start}.swagger-ui .self-end{align-self:flex-end}.swagger-ui .self-center{align-self:center}.swagger-ui .self-baseline{align-self:baseline}.swagger-ui .self-stretch{align-self:stretch}.swagger-ui .justify-start{justify-content:flex-start}.swagger-ui .justify-end{justify-content:flex-end}.swagger-ui .justify-center{justify-content:center}.swagger-ui .justify-between{justify-content:space-between}.swagger-ui .justify-around{justify-content:space-around}.swagger-ui .content-start{align-content:flex-start}.swagger-ui .content-end{align-content:flex-end}.swagger-ui .content-center{align-content:center}.swagger-ui .content-between{align-content:space-between}.swagger-ui .content-around{align-content:space-around}.swagger-ui .content-stretch{align-content:stretch}.swagger-ui .order-0{order:0}.swagger-ui .order-1{order:1}.swagger-ui .order-2{order:2}.swagger-ui .order-3{order:3}.swagger-ui .order-4{order:4}.swagger-ui .order-5{order:5}.swagger-ui .order-6{order:6}.swagger-ui .order-7{order:7}.swagger-ui .order-8{order:8}.swagger-ui .order-last{order:99999}.swagger-ui .flex-grow-0{flex-grow:0}.swagger-ui .flex-grow-1{flex-grow:1}.swagger-ui .flex-shrink-0{flex-shrink:0}.swagger-ui .flex-shrink-1{flex-shrink:1}@media screen and (min-width:30em){.swagger-ui .flex-ns{display:flex}.swagger-ui .inline-flex-ns{display:inline-flex}.swagger-ui .flex-auto-ns{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-ns{flex:none}.swagger-ui .flex-column-ns{flex-direction:column}.swagger-ui .flex-row-ns{flex-direction:row}.swagger-ui .flex-wrap-ns{flex-wrap:wrap}.swagger-ui .flex-nowrap-ns{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-ns{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-ns{flex-direction:column-reverse}.swagger-ui .flex-row-reverse-ns{flex-direction:row-reverse}.swagger-ui .items-start-ns{align-items:flex-start}.swagger-ui .items-end-ns{align-items:flex-end}.swagger-ui .items-center-ns{align-items:center}.swagger-ui .items-baseline-ns{align-items:baseline}.swagger-ui .items-stretch-ns{align-items:stretch}.swagger-ui .self-start-ns{align-self:flex-start}.swagger-ui .self-end-ns{align-self:flex-end}.swagger-ui .self-center-ns{align-self:center}.swagger-ui .self-baseline-ns{align-self:baseline}.swagger-ui .self-stretch-ns{align-self:stretch}.swagger-ui .justify-start-ns{justify-content:flex-start}.swagger-ui .justify-end-ns{justify-content:flex-end}.swagger-ui .justify-center-ns{justify-content:center}.swagger-ui .justify-between-ns{justify-content:space-between}.swagger-ui .justify-around-ns{justify-content:space-around}.swagger-ui .content-start-ns{align-content:flex-start}.swagger-ui .content-end-ns{align-content:flex-end}.swagger-ui .content-center-ns{align-content:center}.swagger-ui .content-between-ns{align-content:space-between}.swagger-ui .content-around-ns{align-content:space-around}.swagger-ui .content-stretch-ns{align-content:stretch}.swagger-ui .order-0-ns{order:0}.swagger-ui .order-1-ns{order:1}.swagger-ui .order-2-ns{order:2}.swagger-ui .order-3-ns{order:3}.swagger-ui .order-4-ns{order:4}.swagger-ui .order-5-ns{order:5}.swagger-ui .order-6-ns{order:6}.swagger-ui .order-7-ns{order:7}.swagger-ui .order-8-ns{order:8}.swagger-ui .order-last-ns{order:99999}.swagger-ui .flex-grow-0-ns{flex-grow:0}.swagger-ui .flex-grow-1-ns{flex-grow:1}.swagger-ui .flex-shrink-0-ns{flex-shrink:0}.swagger-ui .flex-shrink-1-ns{flex-shrink:1}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .flex-m{display:flex}.swagger-ui .inline-flex-m{display:inline-flex}.swagger-ui .flex-auto-m{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-m{flex:none}.swagger-ui .flex-column-m{flex-direction:column}.swagger-ui .flex-row-m{flex-direction:row}.swagger-ui .flex-wrap-m{flex-wrap:wrap}.swagger-ui .flex-nowrap-m{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-m{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-m{flex-direction:column-reverse}.swagger-ui .flex-row-reverse-m{flex-direction:row-reverse}.swagger-ui .items-start-m{align-items:flex-start}.swagger-ui .items-end-m{align-items:flex-end}.swagger-ui .items-center-m{align-items:center}.swagger-ui .items-baseline-m{align-items:baseline}.swagger-ui .items-stretch-m{align-items:stretch}.swagger-ui .self-start-m{align-self:flex-start}.swagger-ui .self-end-m{align-self:flex-end}.swagger-ui .self-center-m{align-self:center}.swagger-ui .self-baseline-m{align-self:baseline}.swagger-ui .self-stretch-m{align-self:stretch}.swagger-ui .justify-start-m{justify-content:flex-start}.swagger-ui .justify-end-m{justify-content:flex-end}.swagger-ui .justify-center-m{justify-content:center}.swagger-ui .justify-between-m{justify-content:space-between}.swagger-ui .justify-around-m{justify-content:space-around}.swagger-ui .content-start-m{align-content:flex-start}.swagger-ui .content-end-m{align-content:flex-end}.swagger-ui .content-center-m{align-content:center}.swagger-ui .content-between-m{align-content:space-between}.swagger-ui .content-around-m{align-content:space-around}.swagger-ui .content-stretch-m{align-content:stretch}.swagger-ui .order-0-m{order:0}.swagger-ui .order-1-m{order:1}.swagger-ui .order-2-m{order:2}.swagger-ui .order-3-m{order:3}.swagger-ui .order-4-m{order:4}.swagger-ui .order-5-m{order:5}.swagger-ui .order-6-m{order:6}.swagger-ui .order-7-m{order:7}.swagger-ui .order-8-m{order:8}.swagger-ui .order-last-m{order:99999}.swagger-ui .flex-grow-0-m{flex-grow:0}.swagger-ui .flex-grow-1-m{flex-grow:1}.swagger-ui .flex-shrink-0-m{flex-shrink:0}.swagger-ui .flex-shrink-1-m{flex-shrink:1}}@media screen and (min-width:60em){.swagger-ui .flex-l{display:flex}.swagger-ui .inline-flex-l{display:inline-flex}.swagger-ui .flex-auto-l{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-l{flex:none}.swagger-ui .flex-column-l{flex-direction:column}.swagger-ui .flex-row-l{flex-direction:row}.swagger-ui .flex-wrap-l{flex-wrap:wrap}.swagger-ui .flex-nowrap-l{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-l{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-l{flex-direction:column-reverse}.swagger-ui .flex-row-reverse-l{flex-direction:row-reverse}.swagger-ui .items-start-l{align-items:flex-start}.swagger-ui .items-end-l{align-items:flex-end}.swagger-ui .items-center-l{align-items:center}.swagger-ui .items-baseline-l{align-items:baseline}.swagger-ui .items-stretch-l{align-items:stretch}.swagger-ui .self-start-l{align-self:flex-start}.swagger-ui .self-end-l{align-self:flex-end}.swagger-ui .self-center-l{align-self:center}.swagger-ui .self-baseline-l{align-self:baseline}.swagger-ui .self-stretch-l{align-self:stretch}.swagger-ui .justify-start-l{justify-content:flex-start}.swagger-ui .justify-end-l{justify-content:flex-end}.swagger-ui .justify-center-l{justify-content:center}.swagger-ui .justify-between-l{justify-content:space-between}.swagger-ui .justify-around-l{justify-content:space-around}.swagger-ui .content-start-l{align-content:flex-start}.swagger-ui .content-end-l{align-content:flex-end}.swagger-ui .content-center-l{align-content:center}.swagger-ui .content-between-l{align-content:space-between}.swagger-ui .content-around-l{align-content:space-around}.swagger-ui .content-stretch-l{align-content:stretch}.swagger-ui .order-0-l{order:0}.swagger-ui .order-1-l{order:1}.swagger-ui .order-2-l{order:2}.swagger-ui .order-3-l{order:3}.swagger-ui .order-4-l{order:4}.swagger-ui .order-5-l{order:5}.swagger-ui .order-6-l{order:6}.swagger-ui .order-7-l{order:7}.swagger-ui .order-8-l{order:8}.swagger-ui .order-last-l{order:99999}.swagger-ui .flex-grow-0-l{flex-grow:0}.swagger-ui .flex-grow-1-l{flex-grow:1}.swagger-ui .flex-shrink-0-l{flex-shrink:0}.swagger-ui .flex-shrink-1-l{flex-shrink:1}}.swagger-ui .dn{display:none}.swagger-ui .di{display:inline}.swagger-ui .db{display:block}.swagger-ui .dib{display:inline-block}.swagger-ui .dit{display:inline-table}.swagger-ui .dt{display:table}.swagger-ui .dtc{display:table-cell}.swagger-ui .dt-row{display:table-row}.swagger-ui .dt-row-group{display:table-row-group}.swagger-ui .dt-column{display:table-column}.swagger-ui .dt-column-group{display:table-column-group}.swagger-ui .dt--fixed{table-layout:fixed;width:100%}@media screen and (min-width:30em){.swagger-ui .dn-ns{display:none}.swagger-ui .di-ns{display:inline}.swagger-ui .db-ns{display:block}.swagger-ui .dib-ns{display:inline-block}.swagger-ui .dit-ns{display:inline-table}.swagger-ui .dt-ns{display:table}.swagger-ui .dtc-ns{display:table-cell}.swagger-ui .dt-row-ns{display:table-row}.swagger-ui .dt-row-group-ns{display:table-row-group}.swagger-ui .dt-column-ns{display:table-column}.swagger-ui .dt-column-group-ns{display:table-column-group}.swagger-ui .dt--fixed-ns{table-layout:fixed;width:100%}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .dn-m{display:none}.swagger-ui .di-m{display:inline}.swagger-ui .db-m{display:block}.swagger-ui .dib-m{display:inline-block}.swagger-ui .dit-m{display:inline-table}.swagger-ui .dt-m{display:table}.swagger-ui .dtc-m{display:table-cell}.swagger-ui .dt-row-m{display:table-row}.swagger-ui .dt-row-group-m{display:table-row-group}.swagger-ui .dt-column-m{display:table-column}.swagger-ui .dt-column-group-m{display:table-column-group}.swagger-ui .dt--fixed-m{table-layout:fixed;width:100%}}@media screen and (min-width:60em){.swagger-ui .dn-l{display:none}.swagger-ui .di-l{display:inline}.swagger-ui .db-l{display:block}.swagger-ui .dib-l{display:inline-block}.swagger-ui .dit-l{display:inline-table}.swagger-ui .dt-l{display:table}.swagger-ui .dtc-l{display:table-cell}.swagger-ui .dt-row-l{display:table-row}.swagger-ui .dt-row-group-l{display:table-row-group}.swagger-ui .dt-column-l{display:table-column}.swagger-ui .dt-column-group-l{display:table-column-group}.swagger-ui .dt--fixed-l{table-layout:fixed;width:100%}}.swagger-ui .fl{_display:inline;float:left}.swagger-ui .fr{_display:inline;float:right}.swagger-ui .fn{float:none}@media screen and (min-width:30em){.swagger-ui .fl-ns{_display:inline;float:left}.swagger-ui .fr-ns{_display:inline;float:right}.swagger-ui .fn-ns{float:none}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .fl-m{_display:inline;float:left}.swagger-ui .fr-m{_display:inline;float:right}.swagger-ui .fn-m{float:none}}@media screen and (min-width:60em){.swagger-ui .fl-l{_display:inline;float:left}.swagger-ui .fr-l{_display:inline;float:right}.swagger-ui .fn-l{float:none}}.swagger-ui .sans-serif{font-family:-apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica,helvetica neue,ubuntu,roboto,noto,segoe ui,arial,sans-serif}.swagger-ui .serif{font-family:georgia,serif}.swagger-ui .system-sans-serif{font-family:sans-serif}.swagger-ui .system-serif{font-family:serif}.swagger-ui .code,.swagger-ui code{font-family:Consolas,monaco,monospace}.swagger-ui .courier{font-family:Courier Next,courier,monospace}.swagger-ui .helvetica{font-family:helvetica neue,helvetica,sans-serif}.swagger-ui .avenir{font-family:avenir next,avenir,sans-serif}.swagger-ui .athelas{font-family:athelas,georgia,serif}.swagger-ui .georgia{font-family:georgia,serif}.swagger-ui .times{font-family:times,serif}.swagger-ui .bodoni{font-family:Bodoni MT,serif}.swagger-ui .calisto{font-family:Calisto MT,serif}.swagger-ui .garamond{font-family:garamond,serif}.swagger-ui .baskerville{font-family:baskerville,serif}.swagger-ui .i{font-style:italic}.swagger-ui .fs-normal{font-style:normal}@media screen and (min-width:30em){.swagger-ui .i-ns{font-style:italic}.swagger-ui .fs-normal-ns{font-style:normal}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .i-m{font-style:italic}.swagger-ui .fs-normal-m{font-style:normal}}@media screen and (min-width:60em){.swagger-ui .i-l{font-style:italic}.swagger-ui .fs-normal-l{font-style:normal}}.swagger-ui .normal{font-weight:400}.swagger-ui .b{font-weight:700}.swagger-ui .fw1{font-weight:100}.swagger-ui .fw2{font-weight:200}.swagger-ui .fw3{font-weight:300}.swagger-ui .fw4{font-weight:400}.swagger-ui .fw5{font-weight:500}.swagger-ui .fw6{font-weight:600}.swagger-ui .fw7{font-weight:700}.swagger-ui .fw8{font-weight:800}.swagger-ui .fw9{font-weight:900}@media screen and (min-width:30em){.swagger-ui .normal-ns{font-weight:400}.swagger-ui .b-ns{font-weight:700}.swagger-ui .fw1-ns{font-weight:100}.swagger-ui .fw2-ns{font-weight:200}.swagger-ui .fw3-ns{font-weight:300}.swagger-ui .fw4-ns{font-weight:400}.swagger-ui .fw5-ns{font-weight:500}.swagger-ui .fw6-ns{font-weight:600}.swagger-ui .fw7-ns{font-weight:700}.swagger-ui .fw8-ns{font-weight:800}.swagger-ui .fw9-ns{font-weight:900}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .normal-m{font-weight:400}.swagger-ui .b-m{font-weight:700}.swagger-ui .fw1-m{font-weight:100}.swagger-ui .fw2-m{font-weight:200}.swagger-ui .fw3-m{font-weight:300}.swagger-ui .fw4-m{font-weight:400}.swagger-ui .fw5-m{font-weight:500}.swagger-ui .fw6-m{font-weight:600}.swagger-ui .fw7-m{font-weight:700}.swagger-ui .fw8-m{font-weight:800}.swagger-ui .fw9-m{font-weight:900}}@media screen and (min-width:60em){.swagger-ui .normal-l{font-weight:400}.swagger-ui .b-l{font-weight:700}.swagger-ui .fw1-l{font-weight:100}.swagger-ui .fw2-l{font-weight:200}.swagger-ui .fw3-l{font-weight:300}.swagger-ui .fw4-l{font-weight:400}.swagger-ui .fw5-l{font-weight:500}.swagger-ui .fw6-l{font-weight:600}.swagger-ui .fw7-l{font-weight:700}.swagger-ui .fw8-l{font-weight:800}.swagger-ui .fw9-l{font-weight:900}}.swagger-ui .input-reset{-webkit-appearance:none;-moz-appearance:none}.swagger-ui .button-reset::-moz-focus-inner,.swagger-ui .input-reset::-moz-focus-inner{border:0;padding:0}.swagger-ui .h1{height:1rem}.swagger-ui .h2{height:2rem}.swagger-ui .h3{height:4rem}.swagger-ui .h4{height:8rem}.swagger-ui .h5{height:16rem}.swagger-ui .h-25{height:25%}.swagger-ui .h-50{height:50%}.swagger-ui .h-75{height:75%}.swagger-ui .h-100{height:100%}.swagger-ui .min-h-100{min-height:100%}.swagger-ui .vh-25{height:25vh}.swagger-ui .vh-50{height:50vh}.swagger-ui .vh-75{height:75vh}.swagger-ui .vh-100{height:100vh}.swagger-ui .min-vh-100{min-height:100vh}.swagger-ui .h-auto{height:auto}.swagger-ui .h-inherit{height:inherit}@media screen and (min-width:30em){.swagger-ui .h1-ns{height:1rem}.swagger-ui .h2-ns{height:2rem}.swagger-ui .h3-ns{height:4rem}.swagger-ui .h4-ns{height:8rem}.swagger-ui .h5-ns{height:16rem}.swagger-ui .h-25-ns{height:25%}.swagger-ui .h-50-ns{height:50%}.swagger-ui .h-75-ns{height:75%}.swagger-ui .h-100-ns{height:100%}.swagger-ui .min-h-100-ns{min-height:100%}.swagger-ui .vh-25-ns{height:25vh}.swagger-ui .vh-50-ns{height:50vh}.swagger-ui .vh-75-ns{height:75vh}.swagger-ui .vh-100-ns{height:100vh}.swagger-ui .min-vh-100-ns{min-height:100vh}.swagger-ui .h-auto-ns{height:auto}.swagger-ui .h-inherit-ns{height:inherit}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .h1-m{height:1rem}.swagger-ui .h2-m{height:2rem}.swagger-ui .h3-m{height:4rem}.swagger-ui .h4-m{height:8rem}.swagger-ui .h5-m{height:16rem}.swagger-ui .h-25-m{height:25%}.swagger-ui .h-50-m{height:50%}.swagger-ui .h-75-m{height:75%}.swagger-ui .h-100-m{height:100%}.swagger-ui .min-h-100-m{min-height:100%}.swagger-ui .vh-25-m{height:25vh}.swagger-ui .vh-50-m{height:50vh}.swagger-ui .vh-75-m{height:75vh}.swagger-ui .vh-100-m{height:100vh}.swagger-ui .min-vh-100-m{min-height:100vh}.swagger-ui .h-auto-m{height:auto}.swagger-ui .h-inherit-m{height:inherit}}@media screen and (min-width:60em){.swagger-ui .h1-l{height:1rem}.swagger-ui .h2-l{height:2rem}.swagger-ui .h3-l{height:4rem}.swagger-ui .h4-l{height:8rem}.swagger-ui .h5-l{height:16rem}.swagger-ui .h-25-l{height:25%}.swagger-ui .h-50-l{height:50%}.swagger-ui .h-75-l{height:75%}.swagger-ui .h-100-l{height:100%}.swagger-ui .min-h-100-l{min-height:100%}.swagger-ui .vh-25-l{height:25vh}.swagger-ui .vh-50-l{height:50vh}.swagger-ui .vh-75-l{height:75vh}.swagger-ui .vh-100-l{height:100vh}.swagger-ui .min-vh-100-l{min-height:100vh}.swagger-ui .h-auto-l{height:auto}.swagger-ui .h-inherit-l{height:inherit}}.swagger-ui .tracked{letter-spacing:.1em}.swagger-ui .tracked-tight{letter-spacing:-.05em}.swagger-ui .tracked-mega{letter-spacing:.25em}@media screen and (min-width:30em){.swagger-ui .tracked-ns{letter-spacing:.1em}.swagger-ui .tracked-tight-ns{letter-spacing:-.05em}.swagger-ui .tracked-mega-ns{letter-spacing:.25em}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .tracked-m{letter-spacing:.1em}.swagger-ui .tracked-tight-m{letter-spacing:-.05em}.swagger-ui .tracked-mega-m{letter-spacing:.25em}}@media screen and (min-width:60em){.swagger-ui .tracked-l{letter-spacing:.1em}.swagger-ui .tracked-tight-l{letter-spacing:-.05em}.swagger-ui .tracked-mega-l{letter-spacing:.25em}}.swagger-ui .lh-solid{line-height:1}.swagger-ui .lh-title{line-height:1.25}.swagger-ui .lh-copy{line-height:1.5}@media screen and (min-width:30em){.swagger-ui .lh-solid-ns{line-height:1}.swagger-ui .lh-title-ns{line-height:1.25}.swagger-ui .lh-copy-ns{line-height:1.5}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .lh-solid-m{line-height:1}.swagger-ui .lh-title-m{line-height:1.25}.swagger-ui .lh-copy-m{line-height:1.5}}@media screen and (min-width:60em){.swagger-ui .lh-solid-l{line-height:1}.swagger-ui .lh-title-l{line-height:1.25}.swagger-ui .lh-copy-l{line-height:1.5}}.swagger-ui .link{-webkit-text-decoration:none;text-decoration:none}.swagger-ui .link,.swagger-ui .link:active,.swagger-ui .link:focus,.swagger-ui .link:hover,.swagger-ui .link:link,.swagger-ui .link:visited{transition:color .15s ease-in}.swagger-ui .link:focus{outline:1px dotted currentColor}.swagger-ui .list{list-style-type:none}.swagger-ui .mw-100{max-width:100%}.swagger-ui .mw1{max-width:1rem}.swagger-ui .mw2{max-width:2rem}.swagger-ui .mw3{max-width:4rem}.swagger-ui .mw4{max-width:8rem}.swagger-ui .mw5{max-width:16rem}.swagger-ui .mw6{max-width:32rem}.swagger-ui .mw7{max-width:48rem}.swagger-ui .mw8{max-width:64rem}.swagger-ui .mw9{max-width:96rem}.swagger-ui .mw-none{max-width:none}@media screen and (min-width:30em){.swagger-ui .mw-100-ns{max-width:100%}.swagger-ui .mw1-ns{max-width:1rem}.swagger-ui .mw2-ns{max-width:2rem}.swagger-ui .mw3-ns{max-width:4rem}.swagger-ui .mw4-ns{max-width:8rem}.swagger-ui .mw5-ns{max-width:16rem}.swagger-ui .mw6-ns{max-width:32rem}.swagger-ui .mw7-ns{max-width:48rem}.swagger-ui .mw8-ns{max-width:64rem}.swagger-ui .mw9-ns{max-width:96rem}.swagger-ui .mw-none-ns{max-width:none}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .mw-100-m{max-width:100%}.swagger-ui .mw1-m{max-width:1rem}.swagger-ui .mw2-m{max-width:2rem}.swagger-ui .mw3-m{max-width:4rem}.swagger-ui .mw4-m{max-width:8rem}.swagger-ui .mw5-m{max-width:16rem}.swagger-ui .mw6-m{max-width:32rem}.swagger-ui .mw7-m{max-width:48rem}.swagger-ui .mw8-m{max-width:64rem}.swagger-ui .mw9-m{max-width:96rem}.swagger-ui .mw-none-m{max-width:none}}@media screen and (min-width:60em){.swagger-ui .mw-100-l{max-width:100%}.swagger-ui .mw1-l{max-width:1rem}.swagger-ui .mw2-l{max-width:2rem}.swagger-ui .mw3-l{max-width:4rem}.swagger-ui .mw4-l{max-width:8rem}.swagger-ui .mw5-l{max-width:16rem}.swagger-ui .mw6-l{max-width:32rem}.swagger-ui .mw7-l{max-width:48rem}.swagger-ui .mw8-l{max-width:64rem}.swagger-ui .mw9-l{max-width:96rem}.swagger-ui .mw-none-l{max-width:none}}.swagger-ui .w1{width:1rem}.swagger-ui .w2{width:2rem}.swagger-ui .w3{width:4rem}.swagger-ui .w4{width:8rem}.swagger-ui .w5{width:16rem}.swagger-ui .w-10{width:10%}.swagger-ui .w-20{width:20%}.swagger-ui .w-25{width:25%}.swagger-ui .w-30{width:30%}.swagger-ui .w-33{width:33%}.swagger-ui .w-34{width:34%}.swagger-ui .w-40{width:40%}.swagger-ui .w-50{width:50%}.swagger-ui .w-60{width:60%}.swagger-ui .w-70{width:70%}.swagger-ui .w-75{width:75%}.swagger-ui .w-80{width:80%}.swagger-ui .w-90{width:90%}.swagger-ui .w-100{width:100%}.swagger-ui .w-third{width:33.3333333333%}.swagger-ui .w-two-thirds{width:66.6666666667%}.swagger-ui .w-auto{width:auto}@media screen and (min-width:30em){.swagger-ui .w1-ns{width:1rem}.swagger-ui .w2-ns{width:2rem}.swagger-ui .w3-ns{width:4rem}.swagger-ui .w4-ns{width:8rem}.swagger-ui .w5-ns{width:16rem}.swagger-ui .w-10-ns{width:10%}.swagger-ui .w-20-ns{width:20%}.swagger-ui .w-25-ns{width:25%}.swagger-ui .w-30-ns{width:30%}.swagger-ui .w-33-ns{width:33%}.swagger-ui .w-34-ns{width:34%}.swagger-ui .w-40-ns{width:40%}.swagger-ui .w-50-ns{width:50%}.swagger-ui .w-60-ns{width:60%}.swagger-ui .w-70-ns{width:70%}.swagger-ui .w-75-ns{width:75%}.swagger-ui .w-80-ns{width:80%}.swagger-ui .w-90-ns{width:90%}.swagger-ui .w-100-ns{width:100%}.swagger-ui .w-third-ns{width:33.3333333333%}.swagger-ui .w-two-thirds-ns{width:66.6666666667%}.swagger-ui .w-auto-ns{width:auto}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .w1-m{width:1rem}.swagger-ui .w2-m{width:2rem}.swagger-ui .w3-m{width:4rem}.swagger-ui .w4-m{width:8rem}.swagger-ui .w5-m{width:16rem}.swagger-ui .w-10-m{width:10%}.swagger-ui .w-20-m{width:20%}.swagger-ui .w-25-m{width:25%}.swagger-ui .w-30-m{width:30%}.swagger-ui .w-33-m{width:33%}.swagger-ui .w-34-m{width:34%}.swagger-ui .w-40-m{width:40%}.swagger-ui .w-50-m{width:50%}.swagger-ui .w-60-m{width:60%}.swagger-ui .w-70-m{width:70%}.swagger-ui .w-75-m{width:75%}.swagger-ui .w-80-m{width:80%}.swagger-ui .w-90-m{width:90%}.swagger-ui .w-100-m{width:100%}.swagger-ui .w-third-m{width:33.3333333333%}.swagger-ui .w-two-thirds-m{width:66.6666666667%}.swagger-ui .w-auto-m{width:auto}}@media screen and (min-width:60em){.swagger-ui .w1-l{width:1rem}.swagger-ui .w2-l{width:2rem}.swagger-ui .w3-l{width:4rem}.swagger-ui .w4-l{width:8rem}.swagger-ui .w5-l{width:16rem}.swagger-ui .w-10-l{width:10%}.swagger-ui .w-20-l{width:20%}.swagger-ui .w-25-l{width:25%}.swagger-ui .w-30-l{width:30%}.swagger-ui .w-33-l{width:33%}.swagger-ui .w-34-l{width:34%}.swagger-ui .w-40-l{width:40%}.swagger-ui .w-50-l{width:50%}.swagger-ui .w-60-l{width:60%}.swagger-ui .w-70-l{width:70%}.swagger-ui .w-75-l{width:75%}.swagger-ui .w-80-l{width:80%}.swagger-ui .w-90-l{width:90%}.swagger-ui .w-100-l{width:100%}.swagger-ui .w-third-l{width:33.3333333333%}.swagger-ui .w-two-thirds-l{width:66.6666666667%}.swagger-ui .w-auto-l{width:auto}}.swagger-ui .overflow-visible{overflow:visible}.swagger-ui .overflow-hidden{overflow:hidden}.swagger-ui .overflow-scroll{overflow:scroll}.swagger-ui .overflow-auto{overflow:auto}.swagger-ui .overflow-x-visible{overflow-x:visible}.swagger-ui .overflow-x-hidden{overflow-x:hidden}.swagger-ui .overflow-x-scroll{overflow-x:scroll}.swagger-ui .overflow-x-auto{overflow-x:auto}.swagger-ui .overflow-y-visible{overflow-y:visible}.swagger-ui .overflow-y-hidden{overflow-y:hidden}.swagger-ui .overflow-y-scroll{overflow-y:scroll}.swagger-ui .overflow-y-auto{overflow-y:auto}@media screen and (min-width:30em){.swagger-ui .overflow-visible-ns{overflow:visible}.swagger-ui .overflow-hidden-ns{overflow:hidden}.swagger-ui .overflow-scroll-ns{overflow:scroll}.swagger-ui .overflow-auto-ns{overflow:auto}.swagger-ui .overflow-x-visible-ns{overflow-x:visible}.swagger-ui .overflow-x-hidden-ns{overflow-x:hidden}.swagger-ui .overflow-x-scroll-ns{overflow-x:scroll}.swagger-ui .overflow-x-auto-ns{overflow-x:auto}.swagger-ui .overflow-y-visible-ns{overflow-y:visible}.swagger-ui .overflow-y-hidden-ns{overflow-y:hidden}.swagger-ui .overflow-y-scroll-ns{overflow-y:scroll}.swagger-ui .overflow-y-auto-ns{overflow-y:auto}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .overflow-visible-m{overflow:visible}.swagger-ui .overflow-hidden-m{overflow:hidden}.swagger-ui .overflow-scroll-m{overflow:scroll}.swagger-ui .overflow-auto-m{overflow:auto}.swagger-ui .overflow-x-visible-m{overflow-x:visible}.swagger-ui .overflow-x-hidden-m{overflow-x:hidden}.swagger-ui .overflow-x-scroll-m{overflow-x:scroll}.swagger-ui .overflow-x-auto-m{overflow-x:auto}.swagger-ui .overflow-y-visible-m{overflow-y:visible}.swagger-ui .overflow-y-hidden-m{overflow-y:hidden}.swagger-ui .overflow-y-scroll-m{overflow-y:scroll}.swagger-ui .overflow-y-auto-m{overflow-y:auto}}@media screen and (min-width:60em){.swagger-ui .overflow-visible-l{overflow:visible}.swagger-ui .overflow-hidden-l{overflow:hidden}.swagger-ui .overflow-scroll-l{overflow:scroll}.swagger-ui .overflow-auto-l{overflow:auto}.swagger-ui .overflow-x-visible-l{overflow-x:visible}.swagger-ui .overflow-x-hidden-l{overflow-x:hidden}.swagger-ui .overflow-x-scroll-l{overflow-x:scroll}.swagger-ui .overflow-x-auto-l{overflow-x:auto}.swagger-ui .overflow-y-visible-l{overflow-y:visible}.swagger-ui .overflow-y-hidden-l{overflow-y:hidden}.swagger-ui .overflow-y-scroll-l{overflow-y:scroll}.swagger-ui .overflow-y-auto-l{overflow-y:auto}}.swagger-ui .static{position:static}.swagger-ui .relative{position:relative}.swagger-ui .absolute{position:absolute}.swagger-ui .fixed{position:fixed}@media screen and (min-width:30em){.swagger-ui .static-ns{position:static}.swagger-ui .relative-ns{position:relative}.swagger-ui .absolute-ns{position:absolute}.swagger-ui .fixed-ns{position:fixed}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .static-m{position:static}.swagger-ui .relative-m{position:relative}.swagger-ui .absolute-m{position:absolute}.swagger-ui .fixed-m{position:fixed}}@media screen and (min-width:60em){.swagger-ui .static-l{position:static}.swagger-ui .relative-l{position:relative}.swagger-ui .absolute-l{position:absolute}.swagger-ui .fixed-l{position:fixed}}.swagger-ui .o-100{opacity:1}.swagger-ui .o-90{opacity:.9}.swagger-ui .o-80{opacity:.8}.swagger-ui .o-70{opacity:.7}.swagger-ui .o-60{opacity:.6}.swagger-ui .o-50{opacity:.5}.swagger-ui .o-40{opacity:.4}.swagger-ui .o-30{opacity:.3}.swagger-ui .o-20{opacity:.2}.swagger-ui .o-10{opacity:.1}.swagger-ui .o-05{opacity:.05}.swagger-ui .o-025{opacity:.025}.swagger-ui .o-0{opacity:0}.swagger-ui .rotate-45{transform:rotate(45deg)}.swagger-ui .rotate-90{transform:rotate(90deg)}.swagger-ui .rotate-135{transform:rotate(135deg)}.swagger-ui .rotate-180{transform:rotate(180deg)}.swagger-ui .rotate-225{transform:rotate(225deg)}.swagger-ui .rotate-270{transform:rotate(270deg)}.swagger-ui .rotate-315{transform:rotate(315deg)}@media screen and (min-width:30em){.swagger-ui .rotate-45-ns{transform:rotate(45deg)}.swagger-ui .rotate-90-ns{transform:rotate(90deg)}.swagger-ui .rotate-135-ns{transform:rotate(135deg)}.swagger-ui .rotate-180-ns{transform:rotate(180deg)}.swagger-ui .rotate-225-ns{transform:rotate(225deg)}.swagger-ui .rotate-270-ns{transform:rotate(270deg)}.swagger-ui .rotate-315-ns{transform:rotate(315deg)}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .rotate-45-m{transform:rotate(45deg)}.swagger-ui .rotate-90-m{transform:rotate(90deg)}.swagger-ui .rotate-135-m{transform:rotate(135deg)}.swagger-ui .rotate-180-m{transform:rotate(180deg)}.swagger-ui .rotate-225-m{transform:rotate(225deg)}.swagger-ui .rotate-270-m{transform:rotate(270deg)}.swagger-ui .rotate-315-m{transform:rotate(315deg)}}@media screen and (min-width:60em){.swagger-ui .rotate-45-l{transform:rotate(45deg)}.swagger-ui .rotate-90-l{transform:rotate(90deg)}.swagger-ui .rotate-135-l{transform:rotate(135deg)}.swagger-ui .rotate-180-l{transform:rotate(180deg)}.swagger-ui .rotate-225-l{transform:rotate(225deg)}.swagger-ui .rotate-270-l{transform:rotate(270deg)}.swagger-ui .rotate-315-l{transform:rotate(315deg)}}.swagger-ui .black-90{color:rgba(0,0,0,.9)}.swagger-ui .black-80{color:rgba(0,0,0,.8)}.swagger-ui .black-70{color:rgba(0,0,0,.7)}.swagger-ui .black-60{color:rgba(0,0,0,.6)}.swagger-ui .black-50{color:rgba(0,0,0,.5)}.swagger-ui .black-40{color:rgba(0,0,0,.4)}.swagger-ui .black-30{color:rgba(0,0,0,.3)}.swagger-ui .black-20{color:rgba(0,0,0,.2)}.swagger-ui .black-10{color:rgba(0,0,0,.1)}.swagger-ui .black-05{color:rgba(0,0,0,.05)}.swagger-ui .white-90{color:hsla(0,0%,100%,.9)}.swagger-ui .white-80{color:hsla(0,0%,100%,.8)}.swagger-ui .white-70{color:hsla(0,0%,100%,.7)}.swagger-ui .white-60{color:hsla(0,0%,100%,.6)}.swagger-ui .white-50{color:hsla(0,0%,100%,.5)}.swagger-ui .white-40{color:hsla(0,0%,100%,.4)}.swagger-ui .white-30{color:hsla(0,0%,100%,.3)}.swagger-ui .white-20{color:hsla(0,0%,100%,.2)}.swagger-ui .white-10{color:hsla(0,0%,100%,.1)}.swagger-ui .black{color:#000}.swagger-ui .near-black{color:#111}.swagger-ui .dark-gray{color:#333}.swagger-ui .mid-gray{color:#555}.swagger-ui .gray{color:#777}.swagger-ui .silver{color:#999}.swagger-ui .light-silver{color:#aaa}.swagger-ui .moon-gray{color:#ccc}.swagger-ui .light-gray{color:#eee}.swagger-ui .near-white{color:#f4f4f4}.swagger-ui .white{color:#fff}.swagger-ui .dark-red{color:#e7040f}.swagger-ui .red{color:#ff4136}.swagger-ui .light-red{color:#ff725c}.swagger-ui .orange{color:#ff6300}.swagger-ui .gold{color:#ffb700}.swagger-ui .yellow{color:gold}.swagger-ui .light-yellow{color:#fbf1a9}.swagger-ui .purple{color:#5e2ca5}.swagger-ui .light-purple{color:#a463f2}.swagger-ui .dark-pink{color:#d5008f}.swagger-ui .hot-pink{color:#ff41b4}.swagger-ui .pink{color:#ff80cc}.swagger-ui .light-pink{color:#ffa3d7}.swagger-ui .dark-green{color:#137752}.swagger-ui .green{color:#19a974}.swagger-ui .light-green{color:#9eebcf}.swagger-ui .navy{color:#001b44}.swagger-ui .dark-blue{color:#00449e}.swagger-ui .blue{color:#357edd}.swagger-ui .light-blue{color:#96ccff}.swagger-ui .lightest-blue{color:#cdecff}.swagger-ui .washed-blue{color:#f6fffe}.swagger-ui .washed-green{color:#e8fdf5}.swagger-ui .washed-yellow{color:#fffceb}.swagger-ui .washed-red{color:#ffdfdf}.swagger-ui .color-inherit{color:inherit}.swagger-ui .bg-black-90{background-color:rgba(0,0,0,.9)}.swagger-ui .bg-black-80{background-color:rgba(0,0,0,.8)}.swagger-ui .bg-black-70{background-color:rgba(0,0,0,.7)}.swagger-ui .bg-black-60{background-color:rgba(0,0,0,.6)}.swagger-ui .bg-black-50{background-color:rgba(0,0,0,.5)}.swagger-ui .bg-black-40{background-color:rgba(0,0,0,.4)}.swagger-ui .bg-black-30{background-color:rgba(0,0,0,.3)}.swagger-ui .bg-black-20{background-color:rgba(0,0,0,.2)}.swagger-ui .bg-black-10{background-color:rgba(0,0,0,.1)}.swagger-ui .bg-black-05{background-color:rgba(0,0,0,.05)}.swagger-ui .bg-white-90{background-color:hsla(0,0%,100%,.9)}.swagger-ui .bg-white-80{background-color:hsla(0,0%,100%,.8)}.swagger-ui .bg-white-70{background-color:hsla(0,0%,100%,.7)}.swagger-ui .bg-white-60{background-color:hsla(0,0%,100%,.6)}.swagger-ui .bg-white-50{background-color:hsla(0,0%,100%,.5)}.swagger-ui .bg-white-40{background-color:hsla(0,0%,100%,.4)}.swagger-ui .bg-white-30{background-color:hsla(0,0%,100%,.3)}.swagger-ui .bg-white-20{background-color:hsla(0,0%,100%,.2)}.swagger-ui .bg-white-10{background-color:hsla(0,0%,100%,.1)}.swagger-ui .bg-black{background-color:#000}.swagger-ui .bg-near-black{background-color:#111}.swagger-ui .bg-dark-gray{background-color:#333}.swagger-ui .bg-mid-gray{background-color:#555}.swagger-ui .bg-gray{background-color:#777}.swagger-ui .bg-silver{background-color:#999}.swagger-ui .bg-light-silver{background-color:#aaa}.swagger-ui .bg-moon-gray{background-color:#ccc}.swagger-ui .bg-light-gray{background-color:#eee}.swagger-ui .bg-near-white{background-color:#f4f4f4}.swagger-ui .bg-white{background-color:#fff}.swagger-ui .bg-transparent{background-color:transparent}.swagger-ui .bg-dark-red{background-color:#e7040f}.swagger-ui .bg-red{background-color:#ff4136}.swagger-ui .bg-light-red{background-color:#ff725c}.swagger-ui .bg-orange{background-color:#ff6300}.swagger-ui .bg-gold{background-color:#ffb700}.swagger-ui .bg-yellow{background-color:gold}.swagger-ui .bg-light-yellow{background-color:#fbf1a9}.swagger-ui .bg-purple{background-color:#5e2ca5}.swagger-ui .bg-light-purple{background-color:#a463f2}.swagger-ui .bg-dark-pink{background-color:#d5008f}.swagger-ui .bg-hot-pink{background-color:#ff41b4}.swagger-ui .bg-pink{background-color:#ff80cc}.swagger-ui .bg-light-pink{background-color:#ffa3d7}.swagger-ui .bg-dark-green{background-color:#137752}.swagger-ui .bg-green{background-color:#19a974}.swagger-ui .bg-light-green{background-color:#9eebcf}.swagger-ui .bg-navy{background-color:#001b44}.swagger-ui .bg-dark-blue{background-color:#00449e}.swagger-ui .bg-blue{background-color:#357edd}.swagger-ui .bg-light-blue{background-color:#96ccff}.swagger-ui .bg-lightest-blue{background-color:#cdecff}.swagger-ui .bg-washed-blue{background-color:#f6fffe}.swagger-ui .bg-washed-green{background-color:#e8fdf5}.swagger-ui .bg-washed-yellow{background-color:#fffceb}.swagger-ui .bg-washed-red{background-color:#ffdfdf}.swagger-ui .bg-inherit{background-color:inherit}.swagger-ui .hover-black:focus,.swagger-ui .hover-black:hover{color:#000}.swagger-ui .hover-near-black:focus,.swagger-ui .hover-near-black:hover{color:#111}.swagger-ui .hover-dark-gray:focus,.swagger-ui .hover-dark-gray:hover{color:#333}.swagger-ui .hover-mid-gray:focus,.swagger-ui .hover-mid-gray:hover{color:#555}.swagger-ui .hover-gray:focus,.swagger-ui .hover-gray:hover{color:#777}.swagger-ui .hover-silver:focus,.swagger-ui .hover-silver:hover{color:#999}.swagger-ui .hover-light-silver:focus,.swagger-ui .hover-light-silver:hover{color:#aaa}.swagger-ui .hover-moon-gray:focus,.swagger-ui .hover-moon-gray:hover{color:#ccc}.swagger-ui .hover-light-gray:focus,.swagger-ui .hover-light-gray:hover{color:#eee}.swagger-ui .hover-near-white:focus,.swagger-ui .hover-near-white:hover{color:#f4f4f4}.swagger-ui .hover-white:focus,.swagger-ui .hover-white:hover{color:#fff}.swagger-ui .hover-black-90:focus,.swagger-ui .hover-black-90:hover{color:rgba(0,0,0,.9)}.swagger-ui .hover-black-80:focus,.swagger-ui .hover-black-80:hover{color:rgba(0,0,0,.8)}.swagger-ui .hover-black-70:focus,.swagger-ui .hover-black-70:hover{color:rgba(0,0,0,.7)}.swagger-ui .hover-black-60:focus,.swagger-ui .hover-black-60:hover{color:rgba(0,0,0,.6)}.swagger-ui .hover-black-50:focus,.swagger-ui .hover-black-50:hover{color:rgba(0,0,0,.5)}.swagger-ui .hover-black-40:focus,.swagger-ui .hover-black-40:hover{color:rgba(0,0,0,.4)}.swagger-ui .hover-black-30:focus,.swagger-ui .hover-black-30:hover{color:rgba(0,0,0,.3)}.swagger-ui .hover-black-20:focus,.swagger-ui .hover-black-20:hover{color:rgba(0,0,0,.2)}.swagger-ui .hover-black-10:focus,.swagger-ui .hover-black-10:hover{color:rgba(0,0,0,.1)}.swagger-ui .hover-white-90:focus,.swagger-ui .hover-white-90:hover{color:hsla(0,0%,100%,.9)}.swagger-ui .hover-white-80:focus,.swagger-ui .hover-white-80:hover{color:hsla(0,0%,100%,.8)}.swagger-ui .hover-white-70:focus,.swagger-ui .hover-white-70:hover{color:hsla(0,0%,100%,.7)}.swagger-ui .hover-white-60:focus,.swagger-ui .hover-white-60:hover{color:hsla(0,0%,100%,.6)}.swagger-ui .hover-white-50:focus,.swagger-ui .hover-white-50:hover{color:hsla(0,0%,100%,.5)}.swagger-ui .hover-white-40:focus,.swagger-ui .hover-white-40:hover{color:hsla(0,0%,100%,.4)}.swagger-ui .hover-white-30:focus,.swagger-ui .hover-white-30:hover{color:hsla(0,0%,100%,.3)}.swagger-ui .hover-white-20:focus,.swagger-ui .hover-white-20:hover{color:hsla(0,0%,100%,.2)}.swagger-ui .hover-white-10:focus,.swagger-ui .hover-white-10:hover{color:hsla(0,0%,100%,.1)}.swagger-ui .hover-inherit:focus,.swagger-ui .hover-inherit:hover{color:inherit}.swagger-ui .hover-bg-black:focus,.swagger-ui .hover-bg-black:hover{background-color:#000}.swagger-ui .hover-bg-near-black:focus,.swagger-ui .hover-bg-near-black:hover{background-color:#111}.swagger-ui .hover-bg-dark-gray:focus,.swagger-ui .hover-bg-dark-gray:hover{background-color:#333}.swagger-ui .hover-bg-mid-gray:focus,.swagger-ui .hover-bg-mid-gray:hover{background-color:#555}.swagger-ui .hover-bg-gray:focus,.swagger-ui .hover-bg-gray:hover{background-color:#777}.swagger-ui .hover-bg-silver:focus,.swagger-ui .hover-bg-silver:hover{background-color:#999}.swagger-ui .hover-bg-light-silver:focus,.swagger-ui .hover-bg-light-silver:hover{background-color:#aaa}.swagger-ui .hover-bg-moon-gray:focus,.swagger-ui .hover-bg-moon-gray:hover{background-color:#ccc}.swagger-ui .hover-bg-light-gray:focus,.swagger-ui .hover-bg-light-gray:hover{background-color:#eee}.swagger-ui .hover-bg-near-white:focus,.swagger-ui .hover-bg-near-white:hover{background-color:#f4f4f4}.swagger-ui .hover-bg-white:focus,.swagger-ui .hover-bg-white:hover{background-color:#fff}.swagger-ui .hover-bg-transparent:focus,.swagger-ui .hover-bg-transparent:hover{background-color:transparent}.swagger-ui .hover-bg-black-90:focus,.swagger-ui .hover-bg-black-90:hover{background-color:rgba(0,0,0,.9)}.swagger-ui .hover-bg-black-80:focus,.swagger-ui .hover-bg-black-80:hover{background-color:rgba(0,0,0,.8)}.swagger-ui .hover-bg-black-70:focus,.swagger-ui .hover-bg-black-70:hover{background-color:rgba(0,0,0,.7)}.swagger-ui .hover-bg-black-60:focus,.swagger-ui .hover-bg-black-60:hover{background-color:rgba(0,0,0,.6)}.swagger-ui .hover-bg-black-50:focus,.swagger-ui .hover-bg-black-50:hover{background-color:rgba(0,0,0,.5)}.swagger-ui .hover-bg-black-40:focus,.swagger-ui .hover-bg-black-40:hover{background-color:rgba(0,0,0,.4)}.swagger-ui .hover-bg-black-30:focus,.swagger-ui .hover-bg-black-30:hover{background-color:rgba(0,0,0,.3)}.swagger-ui .hover-bg-black-20:focus,.swagger-ui .hover-bg-black-20:hover{background-color:rgba(0,0,0,.2)}.swagger-ui .hover-bg-black-10:focus,.swagger-ui .hover-bg-black-10:hover{background-color:rgba(0,0,0,.1)}.swagger-ui .hover-bg-white-90:focus,.swagger-ui .hover-bg-white-90:hover{background-color:hsla(0,0%,100%,.9)}.swagger-ui .hover-bg-white-80:focus,.swagger-ui .hover-bg-white-80:hover{background-color:hsla(0,0%,100%,.8)}.swagger-ui .hover-bg-white-70:focus,.swagger-ui .hover-bg-white-70:hover{background-color:hsla(0,0%,100%,.7)}.swagger-ui .hover-bg-white-60:focus,.swagger-ui .hover-bg-white-60:hover{background-color:hsla(0,0%,100%,.6)}.swagger-ui .hover-bg-white-50:focus,.swagger-ui .hover-bg-white-50:hover{background-color:hsla(0,0%,100%,.5)}.swagger-ui .hover-bg-white-40:focus,.swagger-ui .hover-bg-white-40:hover{background-color:hsla(0,0%,100%,.4)}.swagger-ui .hover-bg-white-30:focus,.swagger-ui .hover-bg-white-30:hover{background-color:hsla(0,0%,100%,.3)}.swagger-ui .hover-bg-white-20:focus,.swagger-ui .hover-bg-white-20:hover{background-color:hsla(0,0%,100%,.2)}.swagger-ui .hover-bg-white-10:focus,.swagger-ui .hover-bg-white-10:hover{background-color:hsla(0,0%,100%,.1)}.swagger-ui .hover-dark-red:focus,.swagger-ui .hover-dark-red:hover{color:#e7040f}.swagger-ui .hover-red:focus,.swagger-ui .hover-red:hover{color:#ff4136}.swagger-ui .hover-light-red:focus,.swagger-ui .hover-light-red:hover{color:#ff725c}.swagger-ui .hover-orange:focus,.swagger-ui .hover-orange:hover{color:#ff6300}.swagger-ui .hover-gold:focus,.swagger-ui .hover-gold:hover{color:#ffb700}.swagger-ui .hover-yellow:focus,.swagger-ui .hover-yellow:hover{color:gold}.swagger-ui .hover-light-yellow:focus,.swagger-ui .hover-light-yellow:hover{color:#fbf1a9}.swagger-ui .hover-purple:focus,.swagger-ui .hover-purple:hover{color:#5e2ca5}.swagger-ui .hover-light-purple:focus,.swagger-ui .hover-light-purple:hover{color:#a463f2}.swagger-ui .hover-dark-pink:focus,.swagger-ui .hover-dark-pink:hover{color:#d5008f}.swagger-ui .hover-hot-pink:focus,.swagger-ui .hover-hot-pink:hover{color:#ff41b4}.swagger-ui .hover-pink:focus,.swagger-ui .hover-pink:hover{color:#ff80cc}.swagger-ui .hover-light-pink:focus,.swagger-ui .hover-light-pink:hover{color:#ffa3d7}.swagger-ui .hover-dark-green:focus,.swagger-ui .hover-dark-green:hover{color:#137752}.swagger-ui .hover-green:focus,.swagger-ui .hover-green:hover{color:#19a974}.swagger-ui .hover-light-green:focus,.swagger-ui .hover-light-green:hover{color:#9eebcf}.swagger-ui .hover-navy:focus,.swagger-ui .hover-navy:hover{color:#001b44}.swagger-ui .hover-dark-blue:focus,.swagger-ui .hover-dark-blue:hover{color:#00449e}.swagger-ui .hover-blue:focus,.swagger-ui .hover-blue:hover{color:#357edd}.swagger-ui .hover-light-blue:focus,.swagger-ui .hover-light-blue:hover{color:#96ccff}.swagger-ui .hover-lightest-blue:focus,.swagger-ui .hover-lightest-blue:hover{color:#cdecff}.swagger-ui .hover-washed-blue:focus,.swagger-ui .hover-washed-blue:hover{color:#f6fffe}.swagger-ui .hover-washed-green:focus,.swagger-ui .hover-washed-green:hover{color:#e8fdf5}.swagger-ui .hover-washed-yellow:focus,.swagger-ui .hover-washed-yellow:hover{color:#fffceb}.swagger-ui .hover-washed-red:focus,.swagger-ui .hover-washed-red:hover{color:#ffdfdf}.swagger-ui .hover-bg-dark-red:focus,.swagger-ui .hover-bg-dark-red:hover{background-color:#e7040f}.swagger-ui .hover-bg-red:focus,.swagger-ui .hover-bg-red:hover{background-color:#ff4136}.swagger-ui .hover-bg-light-red:focus,.swagger-ui .hover-bg-light-red:hover{background-color:#ff725c}.swagger-ui .hover-bg-orange:focus,.swagger-ui .hover-bg-orange:hover{background-color:#ff6300}.swagger-ui .hover-bg-gold:focus,.swagger-ui .hover-bg-gold:hover{background-color:#ffb700}.swagger-ui .hover-bg-yellow:focus,.swagger-ui .hover-bg-yellow:hover{background-color:gold}.swagger-ui .hover-bg-light-yellow:focus,.swagger-ui .hover-bg-light-yellow:hover{background-color:#fbf1a9}.swagger-ui .hover-bg-purple:focus,.swagger-ui .hover-bg-purple:hover{background-color:#5e2ca5}.swagger-ui .hover-bg-light-purple:focus,.swagger-ui .hover-bg-light-purple:hover{background-color:#a463f2}.swagger-ui .hover-bg-dark-pink:focus,.swagger-ui .hover-bg-dark-pink:hover{background-color:#d5008f}.swagger-ui .hover-bg-hot-pink:focus,.swagger-ui .hover-bg-hot-pink:hover{background-color:#ff41b4}.swagger-ui .hover-bg-pink:focus,.swagger-ui .hover-bg-pink:hover{background-color:#ff80cc}.swagger-ui .hover-bg-light-pink:focus,.swagger-ui .hover-bg-light-pink:hover{background-color:#ffa3d7}.swagger-ui .hover-bg-dark-green:focus,.swagger-ui .hover-bg-dark-green:hover{background-color:#137752}.swagger-ui .hover-bg-green:focus,.swagger-ui .hover-bg-green:hover{background-color:#19a974}.swagger-ui .hover-bg-light-green:focus,.swagger-ui .hover-bg-light-green:hover{background-color:#9eebcf}.swagger-ui .hover-bg-navy:focus,.swagger-ui .hover-bg-navy:hover{background-color:#001b44}.swagger-ui .hover-bg-dark-blue:focus,.swagger-ui .hover-bg-dark-blue:hover{background-color:#00449e}.swagger-ui .hover-bg-blue:focus,.swagger-ui .hover-bg-blue:hover{background-color:#357edd}.swagger-ui .hover-bg-light-blue:focus,.swagger-ui .hover-bg-light-blue:hover{background-color:#96ccff}.swagger-ui .hover-bg-lightest-blue:focus,.swagger-ui .hover-bg-lightest-blue:hover{background-color:#cdecff}.swagger-ui .hover-bg-washed-blue:focus,.swagger-ui .hover-bg-washed-blue:hover{background-color:#f6fffe}.swagger-ui .hover-bg-washed-green:focus,.swagger-ui .hover-bg-washed-green:hover{background-color:#e8fdf5}.swagger-ui .hover-bg-washed-yellow:focus,.swagger-ui .hover-bg-washed-yellow:hover{background-color:#fffceb}.swagger-ui .hover-bg-washed-red:focus,.swagger-ui .hover-bg-washed-red:hover{background-color:#ffdfdf}.swagger-ui .hover-bg-inherit:focus,.swagger-ui .hover-bg-inherit:hover{background-color:inherit}.swagger-ui .pa0{padding:0}.swagger-ui .pa1{padding:.25rem}.swagger-ui .pa2{padding:.5rem}.swagger-ui .pa3{padding:1rem}.swagger-ui .pa4{padding:2rem}.swagger-ui .pa5{padding:4rem}.swagger-ui .pa6{padding:8rem}.swagger-ui .pa7{padding:16rem}.swagger-ui .pl0{padding-left:0}.swagger-ui .pl1{padding-left:.25rem}.swagger-ui .pl2{padding-left:.5rem}.swagger-ui .pl3{padding-left:1rem}.swagger-ui .pl4{padding-left:2rem}.swagger-ui .pl5{padding-left:4rem}.swagger-ui .pl6{padding-left:8rem}.swagger-ui .pl7{padding-left:16rem}.swagger-ui .pr0{padding-right:0}.swagger-ui .pr1{padding-right:.25rem}.swagger-ui .pr2{padding-right:.5rem}.swagger-ui .pr3{padding-right:1rem}.swagger-ui .pr4{padding-right:2rem}.swagger-ui .pr5{padding-right:4rem}.swagger-ui .pr6{padding-right:8rem}.swagger-ui .pr7{padding-right:16rem}.swagger-ui .pb0{padding-bottom:0}.swagger-ui .pb1{padding-bottom:.25rem}.swagger-ui .pb2{padding-bottom:.5rem}.swagger-ui .pb3{padding-bottom:1rem}.swagger-ui .pb4{padding-bottom:2rem}.swagger-ui .pb5{padding-bottom:4rem}.swagger-ui .pb6{padding-bottom:8rem}.swagger-ui .pb7{padding-bottom:16rem}.swagger-ui .pt0{padding-top:0}.swagger-ui .pt1{padding-top:.25rem}.swagger-ui .pt2{padding-top:.5rem}.swagger-ui .pt3{padding-top:1rem}.swagger-ui .pt4{padding-top:2rem}.swagger-ui .pt5{padding-top:4rem}.swagger-ui .pt6{padding-top:8rem}.swagger-ui .pt7{padding-top:16rem}.swagger-ui .pv0{padding-bottom:0;padding-top:0}.swagger-ui .pv1{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0{padding-left:0;padding-right:0}.swagger-ui .ph1{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0{margin:0}.swagger-ui .ma1{margin:.25rem}.swagger-ui .ma2{margin:.5rem}.swagger-ui .ma3{margin:1rem}.swagger-ui .ma4{margin:2rem}.swagger-ui .ma5{margin:4rem}.swagger-ui .ma6{margin:8rem}.swagger-ui .ma7{margin:16rem}.swagger-ui .ml0{margin-left:0}.swagger-ui .ml1{margin-left:.25rem}.swagger-ui .ml2{margin-left:.5rem}.swagger-ui .ml3{margin-left:1rem}.swagger-ui .ml4{margin-left:2rem}.swagger-ui .ml5{margin-left:4rem}.swagger-ui .ml6{margin-left:8rem}.swagger-ui .ml7{margin-left:16rem}.swagger-ui .mr0{margin-right:0}.swagger-ui .mr1{margin-right:.25rem}.swagger-ui .mr2{margin-right:.5rem}.swagger-ui .mr3{margin-right:1rem}.swagger-ui .mr4{margin-right:2rem}.swagger-ui .mr5{margin-right:4rem}.swagger-ui .mr6{margin-right:8rem}.swagger-ui .mr7{margin-right:16rem}.swagger-ui .mb0{margin-bottom:0}.swagger-ui .mb1{margin-bottom:.25rem}.swagger-ui .mb2{margin-bottom:.5rem}.swagger-ui .mb3{margin-bottom:1rem}.swagger-ui .mb4{margin-bottom:2rem}.swagger-ui .mb5{margin-bottom:4rem}.swagger-ui .mb6{margin-bottom:8rem}.swagger-ui .mb7{margin-bottom:16rem}.swagger-ui .mt0{margin-top:0}.swagger-ui .mt1{margin-top:.25rem}.swagger-ui .mt2{margin-top:.5rem}.swagger-ui .mt3{margin-top:1rem}.swagger-ui .mt4{margin-top:2rem}.swagger-ui .mt5{margin-top:4rem}.swagger-ui .mt6{margin-top:8rem}.swagger-ui .mt7{margin-top:16rem}.swagger-ui .mv0{margin-bottom:0;margin-top:0}.swagger-ui .mv1{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0{margin-left:0;margin-right:0}.swagger-ui .mh1{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7{margin-left:16rem;margin-right:16rem}@media screen and (min-width:30em){.swagger-ui .pa0-ns{padding:0}.swagger-ui .pa1-ns{padding:.25rem}.swagger-ui .pa2-ns{padding:.5rem}.swagger-ui .pa3-ns{padding:1rem}.swagger-ui .pa4-ns{padding:2rem}.swagger-ui .pa5-ns{padding:4rem}.swagger-ui .pa6-ns{padding:8rem}.swagger-ui .pa7-ns{padding:16rem}.swagger-ui .pl0-ns{padding-left:0}.swagger-ui .pl1-ns{padding-left:.25rem}.swagger-ui .pl2-ns{padding-left:.5rem}.swagger-ui .pl3-ns{padding-left:1rem}.swagger-ui .pl4-ns{padding-left:2rem}.swagger-ui .pl5-ns{padding-left:4rem}.swagger-ui .pl6-ns{padding-left:8rem}.swagger-ui .pl7-ns{padding-left:16rem}.swagger-ui .pr0-ns{padding-right:0}.swagger-ui .pr1-ns{padding-right:.25rem}.swagger-ui .pr2-ns{padding-right:.5rem}.swagger-ui .pr3-ns{padding-right:1rem}.swagger-ui .pr4-ns{padding-right:2rem}.swagger-ui .pr5-ns{padding-right:4rem}.swagger-ui .pr6-ns{padding-right:8rem}.swagger-ui .pr7-ns{padding-right:16rem}.swagger-ui .pb0-ns{padding-bottom:0}.swagger-ui .pb1-ns{padding-bottom:.25rem}.swagger-ui .pb2-ns{padding-bottom:.5rem}.swagger-ui .pb3-ns{padding-bottom:1rem}.swagger-ui .pb4-ns{padding-bottom:2rem}.swagger-ui .pb5-ns{padding-bottom:4rem}.swagger-ui .pb6-ns{padding-bottom:8rem}.swagger-ui .pb7-ns{padding-bottom:16rem}.swagger-ui .pt0-ns{padding-top:0}.swagger-ui .pt1-ns{padding-top:.25rem}.swagger-ui .pt2-ns{padding-top:.5rem}.swagger-ui .pt3-ns{padding-top:1rem}.swagger-ui .pt4-ns{padding-top:2rem}.swagger-ui .pt5-ns{padding-top:4rem}.swagger-ui .pt6-ns{padding-top:8rem}.swagger-ui .pt7-ns{padding-top:16rem}.swagger-ui .pv0-ns{padding-bottom:0;padding-top:0}.swagger-ui .pv1-ns{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-ns{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-ns{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-ns{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-ns{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-ns{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-ns{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-ns{padding-left:0;padding-right:0}.swagger-ui .ph1-ns{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-ns{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-ns{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-ns{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-ns{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-ns{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-ns{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-ns{margin:0}.swagger-ui .ma1-ns{margin:.25rem}.swagger-ui .ma2-ns{margin:.5rem}.swagger-ui .ma3-ns{margin:1rem}.swagger-ui .ma4-ns{margin:2rem}.swagger-ui .ma5-ns{margin:4rem}.swagger-ui .ma6-ns{margin:8rem}.swagger-ui .ma7-ns{margin:16rem}.swagger-ui .ml0-ns{margin-left:0}.swagger-ui .ml1-ns{margin-left:.25rem}.swagger-ui .ml2-ns{margin-left:.5rem}.swagger-ui .ml3-ns{margin-left:1rem}.swagger-ui .ml4-ns{margin-left:2rem}.swagger-ui .ml5-ns{margin-left:4rem}.swagger-ui .ml6-ns{margin-left:8rem}.swagger-ui .ml7-ns{margin-left:16rem}.swagger-ui .mr0-ns{margin-right:0}.swagger-ui .mr1-ns{margin-right:.25rem}.swagger-ui .mr2-ns{margin-right:.5rem}.swagger-ui .mr3-ns{margin-right:1rem}.swagger-ui .mr4-ns{margin-right:2rem}.swagger-ui .mr5-ns{margin-right:4rem}.swagger-ui .mr6-ns{margin-right:8rem}.swagger-ui .mr7-ns{margin-right:16rem}.swagger-ui .mb0-ns{margin-bottom:0}.swagger-ui .mb1-ns{margin-bottom:.25rem}.swagger-ui .mb2-ns{margin-bottom:.5rem}.swagger-ui .mb3-ns{margin-bottom:1rem}.swagger-ui .mb4-ns{margin-bottom:2rem}.swagger-ui .mb5-ns{margin-bottom:4rem}.swagger-ui .mb6-ns{margin-bottom:8rem}.swagger-ui .mb7-ns{margin-bottom:16rem}.swagger-ui .mt0-ns{margin-top:0}.swagger-ui .mt1-ns{margin-top:.25rem}.swagger-ui .mt2-ns{margin-top:.5rem}.swagger-ui .mt3-ns{margin-top:1rem}.swagger-ui .mt4-ns{margin-top:2rem}.swagger-ui .mt5-ns{margin-top:4rem}.swagger-ui .mt6-ns{margin-top:8rem}.swagger-ui .mt7-ns{margin-top:16rem}.swagger-ui .mv0-ns{margin-bottom:0;margin-top:0}.swagger-ui .mv1-ns{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-ns{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-ns{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-ns{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-ns{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-ns{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-ns{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-ns{margin-left:0;margin-right:0}.swagger-ui .mh1-ns{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-ns{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-ns{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-ns{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-ns{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-ns{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-ns{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .pa0-m{padding:0}.swagger-ui .pa1-m{padding:.25rem}.swagger-ui .pa2-m{padding:.5rem}.swagger-ui .pa3-m{padding:1rem}.swagger-ui .pa4-m{padding:2rem}.swagger-ui .pa5-m{padding:4rem}.swagger-ui .pa6-m{padding:8rem}.swagger-ui .pa7-m{padding:16rem}.swagger-ui .pl0-m{padding-left:0}.swagger-ui .pl1-m{padding-left:.25rem}.swagger-ui .pl2-m{padding-left:.5rem}.swagger-ui .pl3-m{padding-left:1rem}.swagger-ui .pl4-m{padding-left:2rem}.swagger-ui .pl5-m{padding-left:4rem}.swagger-ui .pl6-m{padding-left:8rem}.swagger-ui .pl7-m{padding-left:16rem}.swagger-ui .pr0-m{padding-right:0}.swagger-ui .pr1-m{padding-right:.25rem}.swagger-ui .pr2-m{padding-right:.5rem}.swagger-ui .pr3-m{padding-right:1rem}.swagger-ui .pr4-m{padding-right:2rem}.swagger-ui .pr5-m{padding-right:4rem}.swagger-ui .pr6-m{padding-right:8rem}.swagger-ui .pr7-m{padding-right:16rem}.swagger-ui .pb0-m{padding-bottom:0}.swagger-ui .pb1-m{padding-bottom:.25rem}.swagger-ui .pb2-m{padding-bottom:.5rem}.swagger-ui .pb3-m{padding-bottom:1rem}.swagger-ui .pb4-m{padding-bottom:2rem}.swagger-ui .pb5-m{padding-bottom:4rem}.swagger-ui .pb6-m{padding-bottom:8rem}.swagger-ui .pb7-m{padding-bottom:16rem}.swagger-ui .pt0-m{padding-top:0}.swagger-ui .pt1-m{padding-top:.25rem}.swagger-ui .pt2-m{padding-top:.5rem}.swagger-ui .pt3-m{padding-top:1rem}.swagger-ui .pt4-m{padding-top:2rem}.swagger-ui .pt5-m{padding-top:4rem}.swagger-ui .pt6-m{padding-top:8rem}.swagger-ui .pt7-m{padding-top:16rem}.swagger-ui .pv0-m{padding-bottom:0;padding-top:0}.swagger-ui .pv1-m{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-m{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-m{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-m{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-m{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-m{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-m{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-m{padding-left:0;padding-right:0}.swagger-ui .ph1-m{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-m{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-m{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-m{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-m{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-m{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-m{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-m{margin:0}.swagger-ui .ma1-m{margin:.25rem}.swagger-ui .ma2-m{margin:.5rem}.swagger-ui .ma3-m{margin:1rem}.swagger-ui .ma4-m{margin:2rem}.swagger-ui .ma5-m{margin:4rem}.swagger-ui .ma6-m{margin:8rem}.swagger-ui .ma7-m{margin:16rem}.swagger-ui .ml0-m{margin-left:0}.swagger-ui .ml1-m{margin-left:.25rem}.swagger-ui .ml2-m{margin-left:.5rem}.swagger-ui .ml3-m{margin-left:1rem}.swagger-ui .ml4-m{margin-left:2rem}.swagger-ui .ml5-m{margin-left:4rem}.swagger-ui .ml6-m{margin-left:8rem}.swagger-ui .ml7-m{margin-left:16rem}.swagger-ui .mr0-m{margin-right:0}.swagger-ui .mr1-m{margin-right:.25rem}.swagger-ui .mr2-m{margin-right:.5rem}.swagger-ui .mr3-m{margin-right:1rem}.swagger-ui .mr4-m{margin-right:2rem}.swagger-ui .mr5-m{margin-right:4rem}.swagger-ui .mr6-m{margin-right:8rem}.swagger-ui .mr7-m{margin-right:16rem}.swagger-ui .mb0-m{margin-bottom:0}.swagger-ui .mb1-m{margin-bottom:.25rem}.swagger-ui .mb2-m{margin-bottom:.5rem}.swagger-ui .mb3-m{margin-bottom:1rem}.swagger-ui .mb4-m{margin-bottom:2rem}.swagger-ui .mb5-m{margin-bottom:4rem}.swagger-ui .mb6-m{margin-bottom:8rem}.swagger-ui .mb7-m{margin-bottom:16rem}.swagger-ui .mt0-m{margin-top:0}.swagger-ui .mt1-m{margin-top:.25rem}.swagger-ui .mt2-m{margin-top:.5rem}.swagger-ui .mt3-m{margin-top:1rem}.swagger-ui .mt4-m{margin-top:2rem}.swagger-ui .mt5-m{margin-top:4rem}.swagger-ui .mt6-m{margin-top:8rem}.swagger-ui .mt7-m{margin-top:16rem}.swagger-ui .mv0-m{margin-bottom:0;margin-top:0}.swagger-ui .mv1-m{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-m{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-m{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-m{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-m{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-m{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-m{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-m{margin-left:0;margin-right:0}.swagger-ui .mh1-m{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-m{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-m{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-m{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-m{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-m{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-m{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:60em){.swagger-ui .pa0-l{padding:0}.swagger-ui .pa1-l{padding:.25rem}.swagger-ui .pa2-l{padding:.5rem}.swagger-ui .pa3-l{padding:1rem}.swagger-ui .pa4-l{padding:2rem}.swagger-ui .pa5-l{padding:4rem}.swagger-ui .pa6-l{padding:8rem}.swagger-ui .pa7-l{padding:16rem}.swagger-ui .pl0-l{padding-left:0}.swagger-ui .pl1-l{padding-left:.25rem}.swagger-ui .pl2-l{padding-left:.5rem}.swagger-ui .pl3-l{padding-left:1rem}.swagger-ui .pl4-l{padding-left:2rem}.swagger-ui .pl5-l{padding-left:4rem}.swagger-ui .pl6-l{padding-left:8rem}.swagger-ui .pl7-l{padding-left:16rem}.swagger-ui .pr0-l{padding-right:0}.swagger-ui .pr1-l{padding-right:.25rem}.swagger-ui .pr2-l{padding-right:.5rem}.swagger-ui .pr3-l{padding-right:1rem}.swagger-ui .pr4-l{padding-right:2rem}.swagger-ui .pr5-l{padding-right:4rem}.swagger-ui .pr6-l{padding-right:8rem}.swagger-ui .pr7-l{padding-right:16rem}.swagger-ui .pb0-l{padding-bottom:0}.swagger-ui .pb1-l{padding-bottom:.25rem}.swagger-ui .pb2-l{padding-bottom:.5rem}.swagger-ui .pb3-l{padding-bottom:1rem}.swagger-ui .pb4-l{padding-bottom:2rem}.swagger-ui .pb5-l{padding-bottom:4rem}.swagger-ui .pb6-l{padding-bottom:8rem}.swagger-ui .pb7-l{padding-bottom:16rem}.swagger-ui .pt0-l{padding-top:0}.swagger-ui .pt1-l{padding-top:.25rem}.swagger-ui .pt2-l{padding-top:.5rem}.swagger-ui .pt3-l{padding-top:1rem}.swagger-ui .pt4-l{padding-top:2rem}.swagger-ui .pt5-l{padding-top:4rem}.swagger-ui .pt6-l{padding-top:8rem}.swagger-ui .pt7-l{padding-top:16rem}.swagger-ui .pv0-l{padding-bottom:0;padding-top:0}.swagger-ui .pv1-l{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-l{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-l{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-l{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-l{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-l{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-l{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-l{padding-left:0;padding-right:0}.swagger-ui .ph1-l{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-l{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-l{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-l{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-l{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-l{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-l{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-l{margin:0}.swagger-ui .ma1-l{margin:.25rem}.swagger-ui .ma2-l{margin:.5rem}.swagger-ui .ma3-l{margin:1rem}.swagger-ui .ma4-l{margin:2rem}.swagger-ui .ma5-l{margin:4rem}.swagger-ui .ma6-l{margin:8rem}.swagger-ui .ma7-l{margin:16rem}.swagger-ui .ml0-l{margin-left:0}.swagger-ui .ml1-l{margin-left:.25rem}.swagger-ui .ml2-l{margin-left:.5rem}.swagger-ui .ml3-l{margin-left:1rem}.swagger-ui .ml4-l{margin-left:2rem}.swagger-ui .ml5-l{margin-left:4rem}.swagger-ui .ml6-l{margin-left:8rem}.swagger-ui .ml7-l{margin-left:16rem}.swagger-ui .mr0-l{margin-right:0}.swagger-ui .mr1-l{margin-right:.25rem}.swagger-ui .mr2-l{margin-right:.5rem}.swagger-ui .mr3-l{margin-right:1rem}.swagger-ui .mr4-l{margin-right:2rem}.swagger-ui .mr5-l{margin-right:4rem}.swagger-ui .mr6-l{margin-right:8rem}.swagger-ui .mr7-l{margin-right:16rem}.swagger-ui .mb0-l{margin-bottom:0}.swagger-ui .mb1-l{margin-bottom:.25rem}.swagger-ui .mb2-l{margin-bottom:.5rem}.swagger-ui .mb3-l{margin-bottom:1rem}.swagger-ui .mb4-l{margin-bottom:2rem}.swagger-ui .mb5-l{margin-bottom:4rem}.swagger-ui .mb6-l{margin-bottom:8rem}.swagger-ui .mb7-l{margin-bottom:16rem}.swagger-ui .mt0-l{margin-top:0}.swagger-ui .mt1-l{margin-top:.25rem}.swagger-ui .mt2-l{margin-top:.5rem}.swagger-ui .mt3-l{margin-top:1rem}.swagger-ui .mt4-l{margin-top:2rem}.swagger-ui .mt5-l{margin-top:4rem}.swagger-ui .mt6-l{margin-top:8rem}.swagger-ui .mt7-l{margin-top:16rem}.swagger-ui .mv0-l{margin-bottom:0;margin-top:0}.swagger-ui .mv1-l{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-l{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-l{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-l{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-l{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-l{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-l{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-l{margin-left:0;margin-right:0}.swagger-ui .mh1-l{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-l{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-l{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-l{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-l{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-l{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-l{margin-left:16rem;margin-right:16rem}}.swagger-ui .na1{margin:-.25rem}.swagger-ui .na2{margin:-.5rem}.swagger-ui .na3{margin:-1rem}.swagger-ui .na4{margin:-2rem}.swagger-ui .na5{margin:-4rem}.swagger-ui .na6{margin:-8rem}.swagger-ui .na7{margin:-16rem}.swagger-ui .nl1{margin-left:-.25rem}.swagger-ui .nl2{margin-left:-.5rem}.swagger-ui .nl3{margin-left:-1rem}.swagger-ui .nl4{margin-left:-2rem}.swagger-ui .nl5{margin-left:-4rem}.swagger-ui .nl6{margin-left:-8rem}.swagger-ui .nl7{margin-left:-16rem}.swagger-ui .nr1{margin-right:-.25rem}.swagger-ui .nr2{margin-right:-.5rem}.swagger-ui .nr3{margin-right:-1rem}.swagger-ui .nr4{margin-right:-2rem}.swagger-ui .nr5{margin-right:-4rem}.swagger-ui .nr6{margin-right:-8rem}.swagger-ui .nr7{margin-right:-16rem}.swagger-ui .nb1{margin-bottom:-.25rem}.swagger-ui .nb2{margin-bottom:-.5rem}.swagger-ui .nb3{margin-bottom:-1rem}.swagger-ui .nb4{margin-bottom:-2rem}.swagger-ui .nb5{margin-bottom:-4rem}.swagger-ui .nb6{margin-bottom:-8rem}.swagger-ui .nb7{margin-bottom:-16rem}.swagger-ui .nt1{margin-top:-.25rem}.swagger-ui .nt2{margin-top:-.5rem}.swagger-ui .nt3{margin-top:-1rem}.swagger-ui .nt4{margin-top:-2rem}.swagger-ui .nt5{margin-top:-4rem}.swagger-ui .nt6{margin-top:-8rem}.swagger-ui .nt7{margin-top:-16rem}@media screen and (min-width:30em){.swagger-ui .na1-ns{margin:-.25rem}.swagger-ui .na2-ns{margin:-.5rem}.swagger-ui .na3-ns{margin:-1rem}.swagger-ui .na4-ns{margin:-2rem}.swagger-ui .na5-ns{margin:-4rem}.swagger-ui .na6-ns{margin:-8rem}.swagger-ui .na7-ns{margin:-16rem}.swagger-ui .nl1-ns{margin-left:-.25rem}.swagger-ui .nl2-ns{margin-left:-.5rem}.swagger-ui .nl3-ns{margin-left:-1rem}.swagger-ui .nl4-ns{margin-left:-2rem}.swagger-ui .nl5-ns{margin-left:-4rem}.swagger-ui .nl6-ns{margin-left:-8rem}.swagger-ui .nl7-ns{margin-left:-16rem}.swagger-ui .nr1-ns{margin-right:-.25rem}.swagger-ui .nr2-ns{margin-right:-.5rem}.swagger-ui .nr3-ns{margin-right:-1rem}.swagger-ui .nr4-ns{margin-right:-2rem}.swagger-ui .nr5-ns{margin-right:-4rem}.swagger-ui .nr6-ns{margin-right:-8rem}.swagger-ui .nr7-ns{margin-right:-16rem}.swagger-ui .nb1-ns{margin-bottom:-.25rem}.swagger-ui .nb2-ns{margin-bottom:-.5rem}.swagger-ui .nb3-ns{margin-bottom:-1rem}.swagger-ui .nb4-ns{margin-bottom:-2rem}.swagger-ui .nb5-ns{margin-bottom:-4rem}.swagger-ui .nb6-ns{margin-bottom:-8rem}.swagger-ui .nb7-ns{margin-bottom:-16rem}.swagger-ui .nt1-ns{margin-top:-.25rem}.swagger-ui .nt2-ns{margin-top:-.5rem}.swagger-ui .nt3-ns{margin-top:-1rem}.swagger-ui .nt4-ns{margin-top:-2rem}.swagger-ui .nt5-ns{margin-top:-4rem}.swagger-ui .nt6-ns{margin-top:-8rem}.swagger-ui .nt7-ns{margin-top:-16rem}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .na1-m{margin:-.25rem}.swagger-ui .na2-m{margin:-.5rem}.swagger-ui .na3-m{margin:-1rem}.swagger-ui .na4-m{margin:-2rem}.swagger-ui .na5-m{margin:-4rem}.swagger-ui .na6-m{margin:-8rem}.swagger-ui .na7-m{margin:-16rem}.swagger-ui .nl1-m{margin-left:-.25rem}.swagger-ui .nl2-m{margin-left:-.5rem}.swagger-ui .nl3-m{margin-left:-1rem}.swagger-ui .nl4-m{margin-left:-2rem}.swagger-ui .nl5-m{margin-left:-4rem}.swagger-ui .nl6-m{margin-left:-8rem}.swagger-ui .nl7-m{margin-left:-16rem}.swagger-ui .nr1-m{margin-right:-.25rem}.swagger-ui .nr2-m{margin-right:-.5rem}.swagger-ui .nr3-m{margin-right:-1rem}.swagger-ui .nr4-m{margin-right:-2rem}.swagger-ui .nr5-m{margin-right:-4rem}.swagger-ui .nr6-m{margin-right:-8rem}.swagger-ui .nr7-m{margin-right:-16rem}.swagger-ui .nb1-m{margin-bottom:-.25rem}.swagger-ui .nb2-m{margin-bottom:-.5rem}.swagger-ui .nb3-m{margin-bottom:-1rem}.swagger-ui .nb4-m{margin-bottom:-2rem}.swagger-ui .nb5-m{margin-bottom:-4rem}.swagger-ui .nb6-m{margin-bottom:-8rem}.swagger-ui .nb7-m{margin-bottom:-16rem}.swagger-ui .nt1-m{margin-top:-.25rem}.swagger-ui .nt2-m{margin-top:-.5rem}.swagger-ui .nt3-m{margin-top:-1rem}.swagger-ui .nt4-m{margin-top:-2rem}.swagger-ui .nt5-m{margin-top:-4rem}.swagger-ui .nt6-m{margin-top:-8rem}.swagger-ui .nt7-m{margin-top:-16rem}}@media screen and (min-width:60em){.swagger-ui .na1-l{margin:-.25rem}.swagger-ui .na2-l{margin:-.5rem}.swagger-ui .na3-l{margin:-1rem}.swagger-ui .na4-l{margin:-2rem}.swagger-ui .na5-l{margin:-4rem}.swagger-ui .na6-l{margin:-8rem}.swagger-ui .na7-l{margin:-16rem}.swagger-ui .nl1-l{margin-left:-.25rem}.swagger-ui .nl2-l{margin-left:-.5rem}.swagger-ui .nl3-l{margin-left:-1rem}.swagger-ui .nl4-l{margin-left:-2rem}.swagger-ui .nl5-l{margin-left:-4rem}.swagger-ui .nl6-l{margin-left:-8rem}.swagger-ui .nl7-l{margin-left:-16rem}.swagger-ui .nr1-l{margin-right:-.25rem}.swagger-ui .nr2-l{margin-right:-.5rem}.swagger-ui .nr3-l{margin-right:-1rem}.swagger-ui .nr4-l{margin-right:-2rem}.swagger-ui .nr5-l{margin-right:-4rem}.swagger-ui .nr6-l{margin-right:-8rem}.swagger-ui .nr7-l{margin-right:-16rem}.swagger-ui .nb1-l{margin-bottom:-.25rem}.swagger-ui .nb2-l{margin-bottom:-.5rem}.swagger-ui .nb3-l{margin-bottom:-1rem}.swagger-ui .nb4-l{margin-bottom:-2rem}.swagger-ui .nb5-l{margin-bottom:-4rem}.swagger-ui .nb6-l{margin-bottom:-8rem}.swagger-ui .nb7-l{margin-bottom:-16rem}.swagger-ui .nt1-l{margin-top:-.25rem}.swagger-ui .nt2-l{margin-top:-.5rem}.swagger-ui .nt3-l{margin-top:-1rem}.swagger-ui .nt4-l{margin-top:-2rem}.swagger-ui .nt5-l{margin-top:-4rem}.swagger-ui .nt6-l{margin-top:-8rem}.swagger-ui .nt7-l{margin-top:-16rem}}.swagger-ui .collapse{border-collapse:collapse;border-spacing:0}.swagger-ui .striped--light-silver:nth-child(odd){background-color:#aaa}.swagger-ui .striped--moon-gray:nth-child(odd){background-color:#ccc}.swagger-ui .striped--light-gray:nth-child(odd){background-color:#eee}.swagger-ui .striped--near-white:nth-child(odd){background-color:#f4f4f4}.swagger-ui .stripe-light:nth-child(odd){background-color:hsla(0,0%,100%,.1)}.swagger-ui .stripe-dark:nth-child(odd){background-color:rgba(0,0,0,.1)}.swagger-ui .strike{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .underline{-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .no-underline{-webkit-text-decoration:none;text-decoration:none}@media screen and (min-width:30em){.swagger-ui .strike-ns{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .underline-ns{-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .no-underline-ns{-webkit-text-decoration:none;text-decoration:none}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .strike-m{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .underline-m{-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .no-underline-m{-webkit-text-decoration:none;text-decoration:none}}@media screen and (min-width:60em){.swagger-ui .strike-l{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .underline-l{-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .no-underline-l{-webkit-text-decoration:none;text-decoration:none}}.swagger-ui .tl{text-align:left}.swagger-ui .tr{text-align:right}.swagger-ui .tc{text-align:center}.swagger-ui .tj{text-align:justify}@media screen and (min-width:30em){.swagger-ui .tl-ns{text-align:left}.swagger-ui .tr-ns{text-align:right}.swagger-ui .tc-ns{text-align:center}.swagger-ui .tj-ns{text-align:justify}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .tl-m{text-align:left}.swagger-ui .tr-m{text-align:right}.swagger-ui .tc-m{text-align:center}.swagger-ui .tj-m{text-align:justify}}@media screen and (min-width:60em){.swagger-ui .tl-l{text-align:left}.swagger-ui .tr-l{text-align:right}.swagger-ui .tc-l{text-align:center}.swagger-ui .tj-l{text-align:justify}}.swagger-ui .ttc{text-transform:capitalize}.swagger-ui .ttl{text-transform:lowercase}.swagger-ui .ttu{text-transform:uppercase}.swagger-ui .ttn{text-transform:none}@media screen and (min-width:30em){.swagger-ui .ttc-ns{text-transform:capitalize}.swagger-ui .ttl-ns{text-transform:lowercase}.swagger-ui .ttu-ns{text-transform:uppercase}.swagger-ui .ttn-ns{text-transform:none}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .ttc-m{text-transform:capitalize}.swagger-ui .ttl-m{text-transform:lowercase}.swagger-ui .ttu-m{text-transform:uppercase}.swagger-ui .ttn-m{text-transform:none}}@media screen and (min-width:60em){.swagger-ui .ttc-l{text-transform:capitalize}.swagger-ui .ttl-l{text-transform:lowercase}.swagger-ui .ttu-l{text-transform:uppercase}.swagger-ui .ttn-l{text-transform:none}}.swagger-ui .f-6,.swagger-ui .f-headline{font-size:6rem}.swagger-ui .f-5,.swagger-ui .f-subheadline{font-size:5rem}.swagger-ui .f1{font-size:3rem}.swagger-ui .f2{font-size:2.25rem}.swagger-ui .f3{font-size:1.5rem}.swagger-ui .f4{font-size:1.25rem}.swagger-ui .f5{font-size:1rem}.swagger-ui .f6{font-size:.875rem}.swagger-ui .f7{font-size:.75rem}@media screen and (min-width:30em){.swagger-ui .f-6-ns,.swagger-ui .f-headline-ns{font-size:6rem}.swagger-ui .f-5-ns,.swagger-ui .f-subheadline-ns{font-size:5rem}.swagger-ui .f1-ns{font-size:3rem}.swagger-ui .f2-ns{font-size:2.25rem}.swagger-ui .f3-ns{font-size:1.5rem}.swagger-ui .f4-ns{font-size:1.25rem}.swagger-ui .f5-ns{font-size:1rem}.swagger-ui .f6-ns{font-size:.875rem}.swagger-ui .f7-ns{font-size:.75rem}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .f-6-m,.swagger-ui .f-headline-m{font-size:6rem}.swagger-ui .f-5-m,.swagger-ui .f-subheadline-m{font-size:5rem}.swagger-ui .f1-m{font-size:3rem}.swagger-ui .f2-m{font-size:2.25rem}.swagger-ui .f3-m{font-size:1.5rem}.swagger-ui .f4-m{font-size:1.25rem}.swagger-ui .f5-m{font-size:1rem}.swagger-ui .f6-m{font-size:.875rem}.swagger-ui .f7-m{font-size:.75rem}}@media screen and (min-width:60em){.swagger-ui .f-6-l,.swagger-ui .f-headline-l{font-size:6rem}.swagger-ui .f-5-l,.swagger-ui .f-subheadline-l{font-size:5rem}.swagger-ui .f1-l{font-size:3rem}.swagger-ui .f2-l{font-size:2.25rem}.swagger-ui .f3-l{font-size:1.5rem}.swagger-ui .f4-l{font-size:1.25rem}.swagger-ui .f5-l{font-size:1rem}.swagger-ui .f6-l{font-size:.875rem}.swagger-ui .f7-l{font-size:.75rem}}.swagger-ui .measure{max-width:30em}.swagger-ui .measure-wide{max-width:34em}.swagger-ui .measure-narrow{max-width:20em}.swagger-ui .indent{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps{font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media screen and (min-width:30em){.swagger-ui .measure-ns{max-width:30em}.swagger-ui .measure-wide-ns{max-width:34em}.swagger-ui .measure-narrow-ns{max-width:20em}.swagger-ui .indent-ns{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-ns{font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-ns{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .measure-m{max-width:30em}.swagger-ui .measure-wide-m{max-width:34em}.swagger-ui .measure-narrow-m{max-width:20em}.swagger-ui .indent-m{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-m{font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-m{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width:60em){.swagger-ui .measure-l{max-width:30em}.swagger-ui .measure-wide-l{max-width:34em}.swagger-ui .measure-narrow-l{max-width:20em}.swagger-ui .indent-l{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-l{font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.swagger-ui .overflow-container{overflow-y:scroll}.swagger-ui .center{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto{margin-right:auto}.swagger-ui .ml-auto{margin-left:auto}@media screen and (min-width:30em){.swagger-ui .center-ns{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-ns{margin-right:auto}.swagger-ui .ml-auto-ns{margin-left:auto}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .center-m{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-m{margin-right:auto}.swagger-ui .ml-auto-m{margin-left:auto}}@media screen and (min-width:60em){.swagger-ui .center-l{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-l{margin-right:auto}.swagger-ui .ml-auto-l{margin-left:auto}}.swagger-ui .clip{position:fixed!important;_position:absolute!important}.swagger-ui .clip{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}@media screen and (min-width:30em){.swagger-ui .clip-ns{position:fixed!important;_position:absolute!important}.swagger-ui .clip-ns{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .clip-m{position:fixed!important;_position:absolute!important}.swagger-ui .clip-m{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}}@media screen and (min-width:60em){.swagger-ui .clip-l{position:fixed!important;_position:absolute!important}.swagger-ui .clip-l{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}}.swagger-ui .ws-normal{white-space:normal}.swagger-ui .nowrap{white-space:nowrap}.swagger-ui .pre{white-space:pre}@media screen and (min-width:30em){.swagger-ui .ws-normal-ns{white-space:normal}.swagger-ui .nowrap-ns{white-space:nowrap}.swagger-ui .pre-ns{white-space:pre}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .ws-normal-m{white-space:normal}.swagger-ui .nowrap-m{white-space:nowrap}.swagger-ui .pre-m{white-space:pre}}@media screen and (min-width:60em){.swagger-ui .ws-normal-l{white-space:normal}.swagger-ui .nowrap-l{white-space:nowrap}.swagger-ui .pre-l{white-space:pre}}.swagger-ui .v-base{vertical-align:baseline}.swagger-ui .v-mid{vertical-align:middle}.swagger-ui .v-top{vertical-align:top}.swagger-ui .v-btm{vertical-align:bottom}@media screen and (min-width:30em){.swagger-ui .v-base-ns{vertical-align:baseline}.swagger-ui .v-mid-ns{vertical-align:middle}.swagger-ui .v-top-ns{vertical-align:top}.swagger-ui .v-btm-ns{vertical-align:bottom}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .v-base-m{vertical-align:baseline}.swagger-ui .v-mid-m{vertical-align:middle}.swagger-ui .v-top-m{vertical-align:top}.swagger-ui .v-btm-m{vertical-align:bottom}}@media screen and (min-width:60em){.swagger-ui .v-base-l{vertical-align:baseline}.swagger-ui .v-mid-l{vertical-align:middle}.swagger-ui .v-top-l{vertical-align:top}.swagger-ui .v-btm-l{vertical-align:bottom}}.swagger-ui .dim{opacity:1;transition:opacity .15s ease-in}.swagger-ui .dim:focus,.swagger-ui .dim:hover{opacity:.5;transition:opacity .15s ease-in}.swagger-ui .dim:active{opacity:.8;transition:opacity .15s ease-out}.swagger-ui .glow{transition:opacity .15s ease-in}.swagger-ui .glow:focus,.swagger-ui .glow:hover{opacity:1;transition:opacity .15s ease-in}.swagger-ui .hide-child .child{opacity:0;transition:opacity .15s ease-in}.swagger-ui .hide-child:active .child,.swagger-ui .hide-child:focus .child,.swagger-ui .hide-child:hover .child{opacity:1;transition:opacity .15s ease-in}.swagger-ui .underline-hover:focus,.swagger-ui .underline-hover:hover{-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .grow{-moz-osx-font-smoothing:grayscale;backface-visibility:hidden;transform:translateZ(0);transition:transform .25s ease-out}.swagger-ui .grow:focus,.swagger-ui .grow:hover{transform:scale(1.05)}.swagger-ui .grow:active{transform:scale(.9)}.swagger-ui .grow-large{-moz-osx-font-smoothing:grayscale;backface-visibility:hidden;transform:translateZ(0);transition:transform .25s ease-in-out}.swagger-ui .grow-large:focus,.swagger-ui .grow-large:hover{transform:scale(1.2)}.swagger-ui .grow-large:active{transform:scale(.95)}.swagger-ui .pointer:hover{cursor:pointer}.swagger-ui .shadow-hover{cursor:pointer;position:relative;transition:all .5s cubic-bezier(.165,.84,.44,1)}.swagger-ui .shadow-hover:after{border-radius:inherit;box-shadow:0 0 16px 2px rgba(0,0,0,.2);content:"";height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .5s cubic-bezier(.165,.84,.44,1);width:100%;z-index:-1}.swagger-ui .shadow-hover:focus:after,.swagger-ui .shadow-hover:hover:after{opacity:1}.swagger-ui .bg-animate,.swagger-ui .bg-animate:focus,.swagger-ui .bg-animate:hover{transition:background-color .15s ease-in-out}.swagger-ui .z-0{z-index:0}.swagger-ui .z-1{z-index:1}.swagger-ui .z-2{z-index:2}.swagger-ui .z-3{z-index:3}.swagger-ui .z-4{z-index:4}.swagger-ui .z-5{z-index:5}.swagger-ui .z-999{z-index:999}.swagger-ui .z-9999{z-index:9999}.swagger-ui .z-max{z-index:2147483647}.swagger-ui .z-inherit{z-index:inherit}.swagger-ui .z-initial,.swagger-ui .z-unset{z-index:auto}.swagger-ui .nested-copy-line-height ol,.swagger-ui .nested-copy-line-height p,.swagger-ui .nested-copy-line-height ul{line-height:1.5}.swagger-ui .nested-headline-line-height h1,.swagger-ui .nested-headline-line-height h2,.swagger-ui .nested-headline-line-height h3,.swagger-ui .nested-headline-line-height h4,.swagger-ui .nested-headline-line-height h5,.swagger-ui .nested-headline-line-height h6{line-height:1.25}.swagger-ui .nested-list-reset ol,.swagger-ui .nested-list-reset ul{list-style-type:none;margin-left:0;padding-left:0}.swagger-ui .nested-copy-indent p+p{margin-bottom:0;margin-top:0;text-indent:.1em}.swagger-ui .nested-copy-seperator p+p{margin-top:1.5em}.swagger-ui .nested-img img{display:block;max-width:100%;width:100%}.swagger-ui .nested-links a{color:#357edd;transition:color .15s ease-in}.swagger-ui .nested-links a:focus,.swagger-ui .nested-links a:hover{color:#96ccff;transition:color .15s ease-in}.swagger-ui .wrapper{box-sizing:border-box;margin:0 auto;max-width:1460px;padding:0 20px;width:100%}.swagger-ui .opblock-tag-section{display:flex;flex-direction:column}.swagger-ui .try-out.btn-group{display:flex;flex:.1 2 auto;padding:0}.swagger-ui .try-out__btn{margin-left:1.25rem}.swagger-ui .opblock-tag{align-items:center;border-bottom:1px solid rgba(59,65,81,.3);cursor:pointer;display:flex;padding:10px 20px 10px 10px;transition:all .2s}.swagger-ui .opblock-tag:hover{background:rgba(0,0,0,.02)}.swagger-ui .opblock-tag{color:#3b4151;font-family:sans-serif;font-size:24px;margin:0 0 5px}.swagger-ui .opblock-tag.no-desc span{flex:1}.swagger-ui .opblock-tag svg{transition:all .4s}.swagger-ui .opblock-tag small{color:#3b4151;flex:2;font-family:sans-serif;font-size:14px;font-weight:400;padding:0 10px}.swagger-ui .opblock-tag>div{flex:1 1 150px;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:640px){.swagger-ui .opblock-tag small,.swagger-ui .opblock-tag>div{flex:1}}.swagger-ui .opblock-tag .info__externaldocs{text-align:right}.swagger-ui .parameter__type{color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;padding:5px 0}.swagger-ui .parameter-controls{margin-top:.75em}.swagger-ui .examples__title{display:block;font-size:1.1em;font-weight:700;margin-bottom:.75em}.swagger-ui .examples__section{margin-top:1.5em}.swagger-ui .examples__section-header{font-size:.9rem;font-weight:700;margin-bottom:.5rem}.swagger-ui .examples-select{display:inline-block;margin-bottom:.75em}.swagger-ui .examples-select .examples-select-element{width:100%}.swagger-ui .examples-select__section-label{font-size:.9rem;font-weight:700;margin-right:.5rem}.swagger-ui .example__section{margin-top:1.5em}.swagger-ui .example__section-header{font-size:.9rem;font-weight:700;margin-bottom:.5rem}.swagger-ui .view-line-link{cursor:pointer;margin:0 5px;position:relative;top:3px;transition:all .5s;width:20px}.swagger-ui .opblock{border:1px solid #000;border-radius:4px;box-shadow:0 0 3px rgba(0,0,0,.19);margin:0 0 15px}.swagger-ui .opblock .tab-header{display:flex;flex:1}.swagger-ui .opblock .tab-header .tab-item{cursor:pointer;padding:0 40px}.swagger-ui .opblock .tab-header .tab-item:first-of-type{padding:0 40px 0 0}.swagger-ui .opblock .tab-header .tab-item.active h4 span{position:relative}.swagger-ui .opblock .tab-header .tab-item.active h4 span:after{background:gray;bottom:-15px;content:"";height:4px;left:50%;position:absolute;transform:translateX(-50%);width:120%}.swagger-ui .opblock.is-open .opblock-summary{border-bottom:1px solid #000}.swagger-ui .opblock .opblock-section-header{align-items:center;background:hsla(0,0%,100%,.8);box-shadow:0 1px 2px rgba(0,0,0,.1);display:flex;min-height:50px;padding:8px 20px}.swagger-ui .opblock .opblock-section-header>label{align-items:center;color:#3b4151;display:flex;font-family:sans-serif;font-size:12px;font-weight:700;margin:0 0 0 auto}.swagger-ui .opblock .opblock-section-header>label>span{padding:0 10px 0 0}.swagger-ui .opblock .opblock-section-header h4{color:#3b4151;flex:1;font-family:sans-serif;font-size:14px;margin:0}.swagger-ui .opblock .opblock-summary-method{background:#000;border-radius:3px;color:#fff;font-family:sans-serif;font-size:14px;font-weight:700;min-width:80px;padding:6px 0;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.1)}.swagger-ui .opblock .opblock-summary-operation-id,.swagger-ui .opblock .opblock-summary-path,.swagger-ui .opblock .opblock-summary-path__deprecated{align-items:center;color:#3b4151;display:flex;font-family:monospace;font-size:16px;font-weight:600;padding:0 10px;word-break:break-word}@media(max-width:768px){.swagger-ui .opblock .opblock-summary-operation-id,.swagger-ui .opblock .opblock-summary-path,.swagger-ui .opblock .opblock-summary-path__deprecated{font-size:12px}}.swagger-ui .opblock .opblock-summary-path{flex-shrink:0;max-width:calc(100% - 110px - 15rem)}@media(max-width:640px){.swagger-ui .opblock .opblock-summary-path{flex-shrink:1;max-width:100%}}.swagger-ui .opblock .opblock-summary-path__deprecated{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .opblock .opblock-summary-operation-id{font-size:14px}.swagger-ui .opblock .opblock-summary-description{color:#3b4151;flex:1 1 auto;font-family:sans-serif;font-size:13px;word-break:break-word}.swagger-ui .opblock .opblock-summary{align-items:center;cursor:pointer;display:flex;padding:5px}.swagger-ui .opblock .opblock-summary .view-line-link{cursor:pointer;margin:0;position:relative;top:2px;transition:all .5s;width:0}.swagger-ui .opblock .opblock-summary:hover .view-line-link{margin:0 5px;width:18px}.swagger-ui .opblock .opblock-summary:hover .view-line-link.copy-to-clipboard{width:24px}.swagger-ui .opblock.opblock-post{background:rgba(73,204,144,.1);border-color:#49cc90}.swagger-ui .opblock.opblock-post .opblock-summary-method{background:#49cc90}.swagger-ui .opblock.opblock-post .opblock-summary{border-color:#49cc90}.swagger-ui .opblock.opblock-post .tab-header .tab-item.active h4 span:after{background:#49cc90}.swagger-ui .opblock.opblock-put{background:rgba(252,161,48,.1);border-color:#fca130}.swagger-ui .opblock.opblock-put .opblock-summary-method{background:#fca130}.swagger-ui .opblock.opblock-put .opblock-summary{border-color:#fca130}.swagger-ui .opblock.opblock-put .tab-header .tab-item.active h4 span:after{background:#fca130}.swagger-ui .opblock.opblock-delete{background:rgba(249,62,62,.1);border-color:#f93e3e}.swagger-ui .opblock.opblock-delete .opblock-summary-method{background:#f93e3e}.swagger-ui .opblock.opblock-delete .opblock-summary{border-color:#f93e3e}.swagger-ui .opblock.opblock-delete .tab-header .tab-item.active h4 span:after{background:#f93e3e}.swagger-ui .opblock.opblock-get{background:rgba(97,175,254,.1);border-color:#61affe}.swagger-ui .opblock.opblock-get .opblock-summary-method{background:#61affe}.swagger-ui .opblock.opblock-get .opblock-summary{border-color:#61affe}.swagger-ui .opblock.opblock-get .tab-header .tab-item.active h4 span:after{background:#61affe}.swagger-ui .opblock.opblock-patch{background:rgba(80,227,194,.1);border-color:#50e3c2}.swagger-ui .opblock.opblock-patch .opblock-summary-method{background:#50e3c2}.swagger-ui .opblock.opblock-patch .opblock-summary{border-color:#50e3c2}.swagger-ui .opblock.opblock-patch .tab-header .tab-item.active h4 span:after{background:#50e3c2}.swagger-ui .opblock.opblock-head{background:rgba(144,18,254,.1);border-color:#9012fe}.swagger-ui .opblock.opblock-head .opblock-summary-method{background:#9012fe}.swagger-ui .opblock.opblock-head .opblock-summary{border-color:#9012fe}.swagger-ui .opblock.opblock-head .tab-header .tab-item.active h4 span:after{background:#9012fe}.swagger-ui .opblock.opblock-options{background:rgba(13,90,167,.1);border-color:#0d5aa7}.swagger-ui .opblock.opblock-options .opblock-summary-method{background:#0d5aa7}.swagger-ui .opblock.opblock-options .opblock-summary{border-color:#0d5aa7}.swagger-ui .opblock.opblock-options .tab-header .tab-item.active h4 span:after{background:#0d5aa7}.swagger-ui .opblock.opblock-deprecated{background:hsla(0,0%,92%,.1);border-color:#ebebeb;opacity:.6}.swagger-ui .opblock.opblock-deprecated .opblock-summary-method{background:#ebebeb}.swagger-ui .opblock.opblock-deprecated .opblock-summary{border-color:#ebebeb}.swagger-ui .opblock.opblock-deprecated .tab-header .tab-item.active h4 span:after{background:#ebebeb}.swagger-ui .opblock .opblock-schemes{padding:8px 20px}.swagger-ui .opblock .opblock-schemes .schemes-title{padding:0 10px 0 0}.swagger-ui .filter .operation-filter-input{border:2px solid #d8dde7;margin:20px 0;padding:10px;width:100%}.swagger-ui .download-url-wrapper .failed,.swagger-ui .filter .failed{color:red}.swagger-ui .download-url-wrapper .loading,.swagger-ui .filter .loading{color:#aaa}.swagger-ui .model-example{margin-top:1em}.swagger-ui .tab{display:flex;list-style:none;padding:0}.swagger-ui .tab li{color:#3b4151;cursor:pointer;font-family:sans-serif;font-size:12px;min-width:60px;padding:0}.swagger-ui .tab li:first-of-type{padding-left:0;padding-right:12px;position:relative}.swagger-ui .tab li:first-of-type:after{background:rgba(0,0,0,.2);content:"";height:100%;position:absolute;right:6px;top:0;width:1px}.swagger-ui .tab li.active{font-weight:700}.swagger-ui .tab li button.tablinks{background:none;border:0;color:inherit;font-family:inherit;font-weight:inherit;padding:0}.swagger-ui .opblock-description-wrapper,.swagger-ui .opblock-external-docs-wrapper,.swagger-ui .opblock-title_normal{color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px;padding:15px 20px}.swagger-ui .opblock-description-wrapper h4,.swagger-ui .opblock-external-docs-wrapper h4,.swagger-ui .opblock-title_normal h4{color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px}.swagger-ui .opblock-description-wrapper p,.swagger-ui .opblock-external-docs-wrapper p,.swagger-ui .opblock-title_normal p{color:#3b4151;font-family:sans-serif;font-size:14px;margin:0}.swagger-ui .opblock-external-docs-wrapper h4{padding-left:0}.swagger-ui .execute-wrapper{padding:20px;text-align:right}.swagger-ui .execute-wrapper .btn{padding:8px 40px;width:100%}.swagger-ui .body-param-options{display:flex;flex-direction:column}.swagger-ui .body-param-options .body-param-edit{padding:10px 0}.swagger-ui .body-param-options label{padding:8px 0}.swagger-ui .body-param-options label select{margin:3px 0 0}.swagger-ui .responses-inner{padding:20px}.swagger-ui .responses-inner h4,.swagger-ui .responses-inner h5{color:#3b4151;font-family:sans-serif;font-size:12px;margin:10px 0 5px}.swagger-ui .responses-inner .curl{white-space:normal}.swagger-ui .response-col_status{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .response-col_status .response-undocumented{color:#909090;font-family:monospace;font-size:11px;font-weight:600}.swagger-ui .response-col_links{color:#3b4151;font-family:sans-serif;font-size:14px;max-width:40em;padding-left:2em}.swagger-ui .response-col_links .response-undocumented{color:#909090;font-family:monospace;font-size:11px;font-weight:600}.swagger-ui .response-col_links .operation-link{margin-bottom:1.5em}.swagger-ui .response-col_links .operation-link .description{margin-bottom:.5em}.swagger-ui .opblock-body .opblock-loading-animation{display:block;margin:3em auto}.swagger-ui .opblock-body pre.microlight{word-wrap:break-word;background:#333;border-radius:4px;color:#fff;font-family:monospace;font-size:12px;font-weight:600;-webkit-hyphens:auto;hyphens:auto;margin:0;padding:10px;white-space:pre-wrap;word-break:break-all;word-break:break-word}.swagger-ui .opblock-body pre.microlight .headerline{display:block}.swagger-ui .highlight-code{position:relative}.swagger-ui .highlight-code>.microlight{max-height:400px;min-height:6em;overflow-y:auto}.swagger-ui .highlight-code>.microlight code{white-space:pre-wrap!important}.swagger-ui .highlight-code>.microlight code{word-break:break-all}.swagger-ui .curl-command{position:relative}.swagger-ui .download-contents{align-items:center;background:#7d8293;border:none;border-radius:4px;bottom:10px;color:#fff;display:flex;font-family:sans-serif;font-size:14px;font-weight:600;height:30px;justify-content:center;padding:5px;position:absolute;right:10px;text-align:center}.swagger-ui .scheme-container{background:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.15);margin:0 0 20px;padding:30px 0}.swagger-ui .scheme-container .schemes{align-items:flex-end;display:flex}.swagger-ui .scheme-container .schemes>label{color:#3b4151;display:flex;flex-direction:column;font-family:sans-serif;font-size:12px;font-weight:700;margin:-20px 15px 0 0}.swagger-ui .scheme-container .schemes>label select{min-width:130px;text-transform:uppercase}.swagger-ui .loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;margin-top:1em;min-height:1px;padding:40px 0 60px}.swagger-ui .loading-container .loading{position:relative}.swagger-ui .loading-container .loading:after{color:#3b4151;content:"loading";font-family:sans-serif;font-size:10px;font-weight:700;left:50%;position:absolute;text-transform:uppercase;top:50%;transform:translate(-50%,-50%)}.swagger-ui .loading-container .loading:before{animation:rotation 1s linear infinite,opacity .5s;backface-visibility:hidden;border:2px solid rgba(85,85,85,.1);border-radius:100%;border-top-color:rgba(0,0,0,.6);content:"";display:block;height:60px;left:50%;margin:-30px;opacity:1;position:absolute;top:50%;width:60px}@keyframes rotation{to{transform:rotate(1turn)}}.swagger-ui .response-controls{display:flex;padding-top:1em}.swagger-ui .response-control-media-type{margin-right:1em}.swagger-ui .response-control-media-type--accept-controller select{border-color:green}.swagger-ui .response-control-media-type__accept-message{color:green;font-size:.7em}.swagger-ui .response-control-examples__title,.swagger-ui .response-control-media-type__title{display:block;font-size:.7em;margin-bottom:.2em}@keyframes blinker{50%{opacity:0}}.swagger-ui .hidden{display:none}.swagger-ui .no-margin{border:none;height:auto;margin:0;padding:0}.swagger-ui .float-right{float:right}.swagger-ui .svg-assets{height:0;position:absolute;width:0}.swagger-ui section h3{color:#3b4151;font-family:sans-serif}.swagger-ui a.nostyle{display:inline}.swagger-ui a.nostyle,.swagger-ui a.nostyle:visited{color:inherit;cursor:pointer;text-decoration:inherit}.swagger-ui .fallback{color:#aaa;padding:1em}.swagger-ui .version-pragma{height:100%;padding:5em 0}.swagger-ui .version-pragma__message{display:flex;font-size:1.2em;height:100%;justify-content:center;line-height:1.5em;padding:0 .6em;text-align:center}.swagger-ui .version-pragma__message>div{flex:1;max-width:55ch}.swagger-ui .version-pragma__message code{background-color:#dedede;padding:4px 4px 2px;white-space:pre}.swagger-ui .opblock-link{font-weight:400}.swagger-ui .opblock-link.shown{font-weight:700}.swagger-ui span.token-string{color:#555}.swagger-ui span.token-not-formatted{color:#555;font-weight:700}.swagger-ui .btn{background:transparent;border:2px solid gray;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.1);color:#3b4151;font-family:sans-serif;font-size:14px;font-weight:700;padding:5px 23px;transition:all .3s}.swagger-ui .btn.btn-sm{font-size:12px;padding:4px 23px}.swagger-ui .btn[disabled]{cursor:not-allowed;opacity:.3}.swagger-ui .btn:hover{box-shadow:0 0 5px rgba(0,0,0,.3)}.swagger-ui .btn.cancel{background-color:transparent;border-color:#ff6060;color:#ff6060;font-family:sans-serif}.swagger-ui .btn.authorize{background-color:transparent;border-color:#49cc90;color:#49cc90;display:inline;line-height:1}.swagger-ui .btn.authorize span{float:left;padding:4px 20px 0 0}.swagger-ui .btn.authorize svg{fill:#49cc90}.swagger-ui .btn.execute{background-color:#4990e2;border-color:#4990e2;color:#fff}.swagger-ui .btn-group{display:flex;padding:30px}.swagger-ui .btn-group .btn{flex:1}.swagger-ui .btn-group .btn:first-child{border-radius:4px 0 0 4px}.swagger-ui .btn-group .btn:last-child{border-radius:0 4px 4px 0}.swagger-ui .authorization__btn{background:none;border:none;padding:0 0 0 10px}.swagger-ui .authorization__btn .locked{opacity:1}.swagger-ui .authorization__btn .unlocked{opacity:.4}.swagger-ui .model-box-control,.swagger-ui .models-control,.swagger-ui .opblock-summary-control{all:inherit;border-bottom:0;cursor:pointer;flex:1;padding:0}.swagger-ui .model-box-control:focus,.swagger-ui .models-control:focus,.swagger-ui .opblock-summary-control:focus{outline:auto}.swagger-ui .expand-methods,.swagger-ui .expand-operation{background:none;border:none}.swagger-ui .expand-methods svg,.swagger-ui .expand-operation svg{height:20px;width:20px}.swagger-ui .expand-methods{padding:0 10px}.swagger-ui .expand-methods:hover svg{fill:#404040}.swagger-ui .expand-methods svg{fill:#707070;transition:all .3s}.swagger-ui button{cursor:pointer}.swagger-ui button.invalid{animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui .copy-to-clipboard{align-items:center;background:#7d8293;border:none;border-radius:4px;bottom:10px;display:flex;height:30px;justify-content:center;position:absolute;right:100px;width:30px}.swagger-ui .copy-to-clipboard button{background:url("data:image/svg+xml;charset=utf-8,") 50% no-repeat;border:none;flex-grow:1;flex-shrink:1;height:25px}.swagger-ui .copy-to-clipboard:active{background:#5e626f}.swagger-ui .opblock-control-arrow{background:none;border:none;text-align:center}.swagger-ui .curl-command .copy-to-clipboard{bottom:5px;height:20px;right:10px;width:20px}.swagger-ui .curl-command .copy-to-clipboard button{height:18px}.swagger-ui .opblock .opblock-summary .view-line-link.copy-to-clipboard{height:26px;position:static}.swagger-ui select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#f7f7f7 url("data:image/svg+xml;charset=utf-8,") right 10px center no-repeat;background-size:20px;border:2px solid #41444e;border-radius:4px;box-shadow:0 1px 2px 0 rgba(0,0,0,.25);color:#3b4151;font-family:sans-serif;font-size:14px;font-weight:700;padding:5px 40px 5px 10px}.swagger-ui select[multiple]{background:#f7f7f7;margin:5px 0;padding:5px}.swagger-ui select.invalid{animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui .opblock-body select{min-width:230px}@media(max-width:768px){.swagger-ui .opblock-body select{min-width:180px}}@media(max-width:640px){.swagger-ui .opblock-body select{min-width:100%;width:100%}}.swagger-ui label{color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;margin:0 0 5px}.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text]{line-height:1}@media(max-width:768px){.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text]{max-width:175px}}.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text],.swagger-ui textarea{background:#fff;border:1px solid #d9d9d9;border-radius:4px;margin:5px 0;min-width:100px;padding:8px 10px}.swagger-ui input[type=email].invalid,.swagger-ui input[type=file].invalid,.swagger-ui input[type=password].invalid,.swagger-ui input[type=search].invalid,.swagger-ui input[type=text].invalid,.swagger-ui textarea.invalid{animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui input[disabled],.swagger-ui select[disabled],.swagger-ui textarea[disabled]{background-color:#fafafa;color:#888;cursor:not-allowed}.swagger-ui select[disabled]{border-color:#888}.swagger-ui textarea[disabled]{background-color:#41444e;color:#fff}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}.swagger-ui textarea{background:hsla(0,0%,100%,.8);border:none;border-radius:4px;color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;min-height:280px;outline:none;padding:10px;width:100%}.swagger-ui textarea:focus{border:2px solid #61affe}.swagger-ui textarea.curl{background:#41444e;border-radius:4px;color:#fff;font-family:monospace;font-size:12px;font-weight:600;margin:0;min-height:100px;padding:10px;resize:none}.swagger-ui .checkbox{color:#303030;padding:5px 0 10px;transition:opacity .5s}.swagger-ui .checkbox label{display:flex}.swagger-ui .checkbox p{font-weight:400!important;margin:0!important}.swagger-ui .checkbox p{color:#3b4151;font-family:monospace;font-style:italic;font-weight:600}.swagger-ui .checkbox input[type=checkbox]{display:none}.swagger-ui .checkbox input[type=checkbox]+label>.item{background:#e8e8e8;border-radius:1px;box-shadow:0 0 0 2px #e8e8e8;cursor:pointer;display:inline-block;flex:none;height:16px;margin:0 8px 0 0;padding:5px;position:relative;top:3px;width:16px}.swagger-ui .checkbox input[type=checkbox]+label>.item:active{transform:scale(.9)}.swagger-ui .checkbox input[type=checkbox]:checked+label>.item{background:#e8e8e8 url("data:image/svg+xml;charset=utf-8,") 50% no-repeat}.swagger-ui .dialog-ux{bottom:0;left:0;position:fixed;right:0;top:0;z-index:9999}.swagger-ui .dialog-ux .backdrop-ux{background:rgba(0,0,0,.8);bottom:0;left:0;position:fixed;right:0;top:0}.swagger-ui .dialog-ux .modal-ux{background:#fff;border:1px solid #ebebeb;border-radius:4px;box-shadow:0 10px 30px 0 rgba(0,0,0,.2);left:50%;max-width:650px;min-width:300px;position:absolute;top:50%;transform:translate(-50%,-50%);width:100%;z-index:9999}.swagger-ui .dialog-ux .modal-ux-content{max-height:540px;overflow-y:auto;padding:20px}.swagger-ui .dialog-ux .modal-ux-content p{color:#41444e;color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px}.swagger-ui .dialog-ux .modal-ux-content h4{color:#3b4151;font-family:sans-serif;font-size:18px;font-weight:600;margin:15px 0 0}.swagger-ui .dialog-ux .modal-ux-header{align-items:center;border-bottom:1px solid #ebebeb;display:flex;padding:12px 0}.swagger-ui .dialog-ux .modal-ux-header .close-modal{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0 10px}.swagger-ui .dialog-ux .modal-ux-header h3{color:#3b4151;flex:1;font-family:sans-serif;font-size:20px;font-weight:600;margin:0;padding:0 20px}.swagger-ui .model{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300;font-weight:600}.swagger-ui .model .deprecated span,.swagger-ui .model .deprecated td{color:#a0a0a0!important}.swagger-ui .model .deprecated>td:first-of-type{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .model-toggle{cursor:pointer;display:inline-block;font-size:10px;margin:auto .3em;position:relative;top:6px;transform:rotate(90deg);transform-origin:50% 50%;transition:transform .15s ease-in}.swagger-ui .model-toggle.collapsed{transform:rotate(0deg)}.swagger-ui .model-toggle:after{background:url("data:image/svg+xml;charset=utf-8,") 50% no-repeat;background-size:100%;content:"";display:block;height:20px;width:20px}.swagger-ui .model-jump-to-path{cursor:pointer;position:relative}.swagger-ui .model-jump-to-path .view-line-link{cursor:pointer;position:absolute;top:-.4em}.swagger-ui .model-title{position:relative}.swagger-ui .model-title:hover .model-hint{visibility:visible}.swagger-ui .model-hint{background:rgba(0,0,0,.7);border-radius:4px;color:#ebebeb;padding:.1em .5em;position:absolute;top:-1.8em;visibility:hidden;white-space:nowrap}.swagger-ui .model p{margin:0 0 1em}.swagger-ui .model .property{color:#999;font-style:italic}.swagger-ui .model .property.primitive{color:#6b6b6b}.swagger-ui .model .external-docs,.swagger-ui table.model tr.description{color:#666;font-weight:400}.swagger-ui table.model tr.description td:first-child,.swagger-ui table.model tr.property-row.required td:first-child{font-weight:700}.swagger-ui table.model tr.property-row td{vertical-align:top}.swagger-ui table.model tr.property-row td:first-child{padding-right:.2em}.swagger-ui table.model tr.property-row .star{color:red}.swagger-ui table.model tr.extension{color:#777}.swagger-ui table.model tr.extension td:last-child{vertical-align:top}.swagger-ui table.model tr.external-docs td:first-child{font-weight:700}.swagger-ui table.model tr .renderedMarkdown p:first-child{margin-top:0}.swagger-ui section.models{border:1px solid rgba(59,65,81,.3);border-radius:4px;margin:30px 0}.swagger-ui section.models .pointer{cursor:pointer}.swagger-ui section.models.is-open{padding:0 0 20px}.swagger-ui section.models.is-open h4{border-bottom:1px solid rgba(59,65,81,.3);margin:0 0 5px}.swagger-ui section.models h4{align-items:center;color:#606060;cursor:pointer;display:flex;font-family:sans-serif;font-size:16px;margin:0;padding:10px 20px 10px 10px;transition:all .2s}.swagger-ui section.models h4 svg{transition:all .4s}.swagger-ui section.models h4 span{flex:1}.swagger-ui section.models h4:hover{background:rgba(0,0,0,.02)}.swagger-ui section.models h5{color:#707070;font-family:sans-serif;font-size:16px;margin:0 0 10px}.swagger-ui section.models .model-jump-to-path{position:relative;top:5px}.swagger-ui section.models .model-container{background:rgba(0,0,0,.05);border-radius:4px;margin:0 20px 15px;position:relative;transition:all .5s}.swagger-ui section.models .model-container:hover{background:rgba(0,0,0,.07)}.swagger-ui section.models .model-container:first-of-type{margin:20px}.swagger-ui section.models .model-container:last-of-type{margin:0 20px}.swagger-ui section.models .model-container .models-jump-to-path{opacity:.65;position:absolute;right:5px;top:8px}.swagger-ui section.models .model-box{background:none}.swagger-ui .model-box{background:rgba(0,0,0,.1);border-radius:4px;display:inline-block;padding:10px}.swagger-ui .model-box .model-jump-to-path{position:relative;top:4px}.swagger-ui .model-box.deprecated{opacity:.5}.swagger-ui .model-title{color:#505050;font-family:sans-serif;font-size:16px}.swagger-ui .model-title img{bottom:0;margin-left:1em;position:relative}.swagger-ui .model-deprecated-warning{color:#f93e3e;font-family:sans-serif;font-size:16px;font-weight:600;margin-right:1em}.swagger-ui span>span.model .brace-close{padding:0 0 0 10px}.swagger-ui .prop-name{display:inline-block;margin-right:1em}.swagger-ui .prop-type{color:#55a}.swagger-ui .prop-enum{display:block}.swagger-ui .prop-format{color:#606060}.swagger-ui .servers>label{color:#3b4151;font-family:sans-serif;font-size:12px;margin:-20px 15px 0 0}.swagger-ui .servers>label select{max-width:100%;min-width:130px;width:100%}.swagger-ui .servers h4.message{padding-bottom:2em}.swagger-ui .servers table tr{width:30em}.swagger-ui .servers table td{display:inline-block;max-width:15em;padding-bottom:10px;padding-top:10px;vertical-align:middle}.swagger-ui .servers table td:first-of-type{padding-right:1em}.swagger-ui .servers table td input{height:100%;width:100%}.swagger-ui .servers .computed-url{margin:2em 0}.swagger-ui .servers .computed-url code{display:inline-block;font-size:16px;margin:0 1em;padding:4px}.swagger-ui .servers-title{font-size:12px;font-weight:700}.swagger-ui .operation-servers h4.message{margin-bottom:2em}.swagger-ui table{border-collapse:collapse;padding:0 10px;width:100%}.swagger-ui table.model tbody tr td{padding:0;vertical-align:top}.swagger-ui table.model tbody tr td:first-of-type{padding:0 0 0 2em;width:174px}.swagger-ui table.headers td{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300;font-weight:600;vertical-align:middle}.swagger-ui table.headers .header-example{color:#999;font-style:italic}.swagger-ui table tbody tr td{padding:10px 0 0;vertical-align:top}.swagger-ui table tbody tr td:first-of-type{min-width:6em;padding:10px 0}.swagger-ui table thead tr td,.swagger-ui table thead tr th{border-bottom:1px solid rgba(59,65,81,.2);color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;padding:12px 0;text-align:left}.swagger-ui .parameters-col_description{margin-bottom:2em;width:99%}.swagger-ui .parameters-col_description input{max-width:340px;width:100%}.swagger-ui .parameters-col_description select{border-width:1px}.swagger-ui .parameters-col_description .markdown p,.swagger-ui .parameters-col_description .renderedMarkdown p{margin:0}.swagger-ui .parameter__name{color:#3b4151;font-family:sans-serif;font-size:16px;font-weight:400;margin-right:.75em}.swagger-ui .parameter__name.required{font-weight:700}.swagger-ui .parameter__name.required span{color:red}.swagger-ui .parameter__name.required:after{color:rgba(255,0,0,.6);content:"required";font-size:10px;padding:5px;position:relative;top:-6px}.swagger-ui .parameter__extension,.swagger-ui .parameter__in{color:gray;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .parameter__deprecated{color:red;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .parameter__empty_value_toggle{display:block;font-size:13px;padding-bottom:12px;padding-top:5px}.swagger-ui .parameter__empty_value_toggle input{margin-right:7px;width:auto}.swagger-ui .parameter__empty_value_toggle.disabled{opacity:.7}.swagger-ui .table-container{padding:20px}.swagger-ui .response-col_description{width:99%}.swagger-ui .response-col_description .markdown p,.swagger-ui .response-col_description .renderedMarkdown p{margin:0}.swagger-ui .response-col_links{min-width:6em}.swagger-ui .response__extension{color:gray;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .topbar{background-color:#1b1b1b;padding:10px 0}.swagger-ui .topbar .topbar-wrapper,.swagger-ui .topbar a{align-items:center;display:flex}.swagger-ui .topbar a{color:#fff;flex:1;font-family:sans-serif;font-size:1.5em;font-weight:700;max-width:300px;-webkit-text-decoration:none;text-decoration:none}.swagger-ui .topbar a span{margin:0;padding:0 10px}.swagger-ui .topbar .download-url-wrapper{display:flex;flex:3;justify-content:flex-end}.swagger-ui .topbar .download-url-wrapper input[type=text]{border:2px solid #62a03f;border-radius:4px 0 0 4px;margin:0;outline:none;width:100%}.swagger-ui .topbar .download-url-wrapper .select-label{align-items:center;color:#f0f0f0;display:flex;margin:0;max-width:600px;width:100%}.swagger-ui .topbar .download-url-wrapper .select-label span{flex:1;font-size:16px;padding:0 10px 0 0;text-align:right}.swagger-ui .topbar .download-url-wrapper .select-label select{border:2px solid #62a03f;box-shadow:none;flex:2;outline:none;width:100%}.swagger-ui .topbar .download-url-wrapper .download-url-button{background:#62a03f;border:none;border-radius:0 4px 4px 0;color:#fff;font-family:sans-serif;font-size:16px;font-weight:700;padding:4px 30px}.swagger-ui .info{margin:50px 0}.swagger-ui .info.failed-config{margin-left:auto;margin-right:auto;max-width:880px;text-align:center}.swagger-ui .info hgroup.main{margin:0 0 20px}.swagger-ui .info hgroup.main a{font-size:12px}.swagger-ui .info pre{font-size:14px}.swagger-ui .info li,.swagger-ui .info p,.swagger-ui .info table{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .info h1,.swagger-ui .info h2,.swagger-ui .info h3,.swagger-ui .info h4,.swagger-ui .info h5{color:#3b4151;font-family:sans-serif}.swagger-ui .info a{color:#4990e2;font-family:sans-serif;font-size:14px;transition:all .4s}.swagger-ui .info a:hover{color:#1f69c0}.swagger-ui .info>div{margin:0 0 5px}.swagger-ui .info .base-url{font-weight:300!important}.swagger-ui .info .base-url{color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;margin:0}.swagger-ui .info .title{color:#3b4151;font-family:sans-serif;font-size:36px;margin:0}.swagger-ui .info .title small{background:#7d8492;border-radius:57px;display:inline-block;font-size:10px;margin:0 0 0 5px;padding:2px 4px;position:relative;top:-5px;vertical-align:super}.swagger-ui .info .title small.version-stamp{background-color:#89bf04}.swagger-ui .info .title small pre{color:#fff;font-family:sans-serif;margin:0;padding:0}.swagger-ui .auth-btn-wrapper{display:flex;justify-content:center;padding:10px 0}.swagger-ui .auth-btn-wrapper .btn-done{margin-right:1em}.swagger-ui .auth-wrapper{display:flex;flex:1;justify-content:flex-end}.swagger-ui .auth-wrapper .authorize{margin-left:10px;margin-right:10px;padding-right:20px}.swagger-ui .auth-container{border-bottom:1px solid #ebebeb;margin:0 0 10px;padding:10px 20px}.swagger-ui .auth-container:last-of-type{border:0;margin:0;padding:10px 20px}.swagger-ui .auth-container h4{margin:5px 0 15px!important}.swagger-ui .auth-container .wrapper{margin:0;padding:0}.swagger-ui .auth-container input[type=password],.swagger-ui .auth-container input[type=text]{min-width:230px}.swagger-ui .auth-container .errors{background-color:#fee;border-radius:4px;color:red;color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;margin:1em;padding:10px}.swagger-ui .auth-container .errors b{margin-right:1em;text-transform:capitalize}.swagger-ui .scopes h2{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .scopes h2 a{color:#4990e2;cursor:pointer;font-size:12px;padding-left:10px;-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .scope-def{padding:0 0 20px}.swagger-ui .errors-wrapper{animation:scaleUp .5s;background:rgba(249,62,62,.1);border:2px solid #f93e3e;border-radius:4px;margin:20px;padding:10px 20px}.swagger-ui .errors-wrapper .error-wrapper{margin:0 0 10px}.swagger-ui .errors-wrapper .errors h4{color:#3b4151;font-family:monospace;font-size:14px;font-weight:600;margin:0}.swagger-ui .errors-wrapper .errors small{color:#606060}.swagger-ui .errors-wrapper .errors .message{white-space:pre-line}.swagger-ui .errors-wrapper .errors .message.thrown{max-width:100%}.swagger-ui .errors-wrapper .errors .error-line{cursor:pointer;-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .errors-wrapper hgroup{align-items:center;display:flex}.swagger-ui .errors-wrapper hgroup h4{color:#3b4151;flex:1;font-family:sans-serif;font-size:20px;margin:0}@keyframes scaleUp{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.swagger-ui .Resizer.vertical.disabled{display:none}.swagger-ui .markdown p,.swagger-ui .markdown pre,.swagger-ui .renderedMarkdown p,.swagger-ui .renderedMarkdown pre{margin:1em auto;word-break:break-all;word-break:break-word}.swagger-ui .markdown pre,.swagger-ui .renderedMarkdown pre{background:none;color:#000;font-weight:400;padding:0;white-space:pre-wrap}.swagger-ui .markdown code,.swagger-ui .renderedMarkdown code{background:rgba(0,0,0,.05);border-radius:4px;color:#9012fe;font-family:monospace;font-size:14px;font-weight:600;padding:5px 7px}.swagger-ui .markdown pre>code,.swagger-ui .renderedMarkdown pre>code{display:block}.swagger-ui .json-schema-2020-12{background-color:rgba(0,0,0,.05);border-radius:4px;margin:0 20px 15px;padding:12px 0 12px 20px}.swagger-ui .json-schema-2020-12:first-of-type{margin:20px}.swagger-ui .json-schema-2020-12:last-of-type{margin:0 20px}.swagger-ui .json-schema-2020-12--embedded{background-color:inherit;padding-bottom:0;padding-left:inherit;padding-right:inherit;padding-top:0}.swagger-ui .json-schema-2020-12-body{border-left:1px dashed rgba(0,0,0,.1);margin:2px 0}.swagger-ui .json-schema-2020-12-body--collapsed{display:none}.swagger-ui .json-schema-2020-12-accordion{border:none;outline:none;padding-left:0}.swagger-ui .json-schema-2020-12-accordion__children{display:inline-block}.swagger-ui .json-schema-2020-12-accordion__icon{display:inline-block;height:18px;vertical-align:bottom;width:18px}.swagger-ui .json-schema-2020-12-accordion__icon--expanded{transform:rotate(-90deg);transform-origin:50% 50%;transition:transform .15s ease-in}.swagger-ui .json-schema-2020-12-accordion__icon--collapsed{transform:rotate(0deg);transform-origin:50% 50%;transition:transform .15s ease-in}.swagger-ui .json-schema-2020-12-accordion__icon svg{height:20px;width:20px}.swagger-ui .json-schema-2020-12-expand-deep-button{border:none;color:#505050;color:#afaeae;font-family:sans-serif;font-size:12px;padding-right:0}.swagger-ui .json-schema-2020-12-keyword{margin:5px 0}.swagger-ui .json-schema-2020-12-keyword__children{border-left:1px dashed rgba(0,0,0,.1);margin:0 0 0 20px;padding:0}.swagger-ui .json-schema-2020-12-keyword__children--collapsed{display:none}.swagger-ui .json-schema-2020-12-keyword__name{font-size:12px;font-weight:700;margin-left:20px}.swagger-ui .json-schema-2020-12-keyword__name--primary{color:#3b4151;font-style:normal}.swagger-ui .json-schema-2020-12-keyword__name--secondary{color:#6b6b6b;font-style:italic}.swagger-ui .json-schema-2020-12-keyword__value{color:#6b6b6b;font-size:12px;font-style:italic;font-weight:400}.swagger-ui .json-schema-2020-12-keyword__value--primary{color:#3b4151;font-style:normal}.swagger-ui .json-schema-2020-12-keyword__value--secondary{color:#6b6b6b;font-style:italic}.swagger-ui .json-schema-2020-12-keyword__value--const,.swagger-ui .json-schema-2020-12-keyword__value--warning{border:1px dashed #6b6b6b;border-radius:4px;color:#3b4151;color:#6b6b6b;display:inline-block;font-family:monospace;font-style:normal;font-weight:600;line-height:1.5;margin-left:10px;padding:1px 4px}.swagger-ui .json-schema-2020-12-keyword__value--warning{border:1px dashed red;color:red}.swagger-ui .json-schema-2020-12-keyword__name--secondary+.json-schema-2020-12-keyword__value--secondary:before{content:"="}.swagger-ui .json-schema-2020-12__attribute{color:#3b4151;font-family:monospace;font-size:12px;padding-left:10px;text-transform:lowercase}.swagger-ui .json-schema-2020-12__attribute--primary{color:#55a}.swagger-ui .json-schema-2020-12__attribute--muted{color:gray}.swagger-ui .json-schema-2020-12__attribute--warning{color:red}.swagger-ui .json-schema-2020-12-keyword--\$vocabulary ul{border-left:1px dashed rgba(0,0,0,.1);margin:0 0 0 20px}.swagger-ui .json-schema-2020-12-\$vocabulary-uri{margin-left:35px}.swagger-ui .json-schema-2020-12-\$vocabulary-uri--disabled{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .json-schema-2020-12-keyword--description{color:#6b6b6b;font-size:12px;margin-left:20px}.swagger-ui .json-schema-2020-12-keyword--description p{margin:0}.swagger-ui .json-schema-2020-12__title{color:#505050;display:inline-block;font-family:sans-serif;font-size:12px;font-weight:700;line-height:normal}.swagger-ui .json-schema-2020-12__title .json-schema-2020-12-keyword__name{margin:0}.swagger-ui .json-schema-2020-12-property{margin:7px 0}.swagger-ui .json-schema-2020-12-property .json-schema-2020-12__title{color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;vertical-align:middle}.swagger-ui .json-schema-2020-12-keyword--properties>ul{border:none;margin:0;padding:0}.swagger-ui .json-schema-2020-12-property{list-style-type:none}.swagger-ui .json-schema-2020-12-property--required>.json-schema-2020-12:first-of-type>.json-schema-2020-12-head .json-schema-2020-12__title:after{color:red;content:"*";font-weight:700}.swagger-ui .json-schema-2020-12-keyword--patternProperties ul{border:none;margin:0;padding:0}.swagger-ui .json-schema-2020-12-keyword--patternProperties .json-schema-2020-12__title:first-of-type:after,.swagger-ui .json-schema-2020-12-keyword--patternProperties .json-schema-2020-12__title:first-of-type:before{color:#55a;content:"/"}.swagger-ui .json-schema-2020-12-keyword--enum>ul{display:inline-block;margin:0;padding:0}.swagger-ui .json-schema-2020-12-keyword--enum>ul li{display:inline;list-style-type:none}.swagger-ui .json-schema-2020-12__constraint{background-color:#805ad5;border-radius:4px;color:#3b4151;color:#fff;font-family:monospace;font-weight:600;line-height:1.5;margin-left:10px;padding:1px 3px}.swagger-ui .json-schema-2020-12__constraint--string{background-color:#d69e2e;color:#fff}.swagger-ui .json-schema-2020-12-keyword--dependentRequired>ul{display:inline-block;margin:0;padding:0}.swagger-ui .json-schema-2020-12-keyword--dependentRequired>ul li{display:inline;list-style-type:none}.swagger-ui .model-box .json-schema-2020-12:not(.json-schema-2020-12--embedded)>.json-schema-2020-12-head .json-schema-2020-12__title:first-of-type{font-size:16px}.swagger-ui .model-box>.json-schema-2020-12{margin:0}.swagger-ui .model-box .json-schema-2020-12{background-color:transparent;padding:0}.swagger-ui .model-box .json-schema-2020-12-accordion,.swagger-ui .model-box .json-schema-2020-12-expand-deep-button{background-color:transparent}.swagger-ui .models .json-schema-2020-12:not(.json-schema-2020-12--embedded)>.json-schema-2020-12-head .json-schema-2020-12__title:first-of-type{font-size:16px} + +/*# sourceMappingURL=swagger-ui.css.map*/ \ No newline at end of file diff --git a/src/Laravel/public/swagger-ui/oauth2-redirect.html b/src/Laravel/public/swagger-ui/oauth2-redirect.html new file mode 100644 index 00000000000..56409171811 --- /dev/null +++ b/src/Laravel/public/swagger-ui/oauth2-redirect.html @@ -0,0 +1,79 @@ + + + + Swagger UI: OAuth2 Redirect + + + + + diff --git a/src/Laravel/public/swagger-ui/swagger-ui-bundle.js b/src/Laravel/public/swagger-ui/swagger-ui-bundle.js new file mode 100644 index 00000000000..c611bf76671 --- /dev/null +++ b/src/Laravel/public/swagger-ui/swagger-ui-bundle.js @@ -0,0 +1,3 @@ +/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */ +!function webpackUniversalModuleDefinition(i,s){"object"==typeof exports&&"object"==typeof module?module.exports=s():"function"==typeof define&&define.amd?define([],s):"object"==typeof exports?exports.SwaggerUIBundle=s():i.SwaggerUIBundle=s()}(this,(()=>(()=>{var i={17967:(i,s)=>{"use strict";s.Nm=s.Rq=void 0;var u=/^([^\w]*)(javascript|data|vbscript)/im,m=/&#(\w+)(^\w|;)?/g,v=/&(newline|tab);/gi,_=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,j=/^.+(:|:)/gim,M=[".","/"];s.Rq="about:blank",s.Nm=function sanitizeUrl(i){if(!i)return s.Rq;var $=function decodeHtmlCharacters(i){return i.replace(_,"").replace(m,(function(i,s){return String.fromCharCode(s)}))}(i).replace(v,"").replace(_,"").trim();if(!$)return s.Rq;if(function isRelativeUrlWithoutProtocol(i){return M.indexOf(i[0])>-1}($))return $;var W=$.match(j);if(!W)return $;var X=W[0];return u.test(X)?s.Rq:$}},79742:(i,s)=>{"use strict";s.byteLength=function byteLength(i){var s=getLens(i),u=s[0],m=s[1];return 3*(u+m)/4-m},s.toByteArray=function toByteArray(i){var s,u,_=getLens(i),j=_[0],M=_[1],$=new v(function _byteLength(i,s,u){return 3*(s+u)/4-u}(0,j,M)),W=0,X=M>0?j-4:j;for(u=0;u>16&255,$[W++]=s>>8&255,$[W++]=255&s;2===M&&(s=m[i.charCodeAt(u)]<<2|m[i.charCodeAt(u+1)]>>4,$[W++]=255&s);1===M&&(s=m[i.charCodeAt(u)]<<10|m[i.charCodeAt(u+1)]<<4|m[i.charCodeAt(u+2)]>>2,$[W++]=s>>8&255,$[W++]=255&s);return $},s.fromByteArray=function fromByteArray(i){for(var s,m=i.length,v=m%3,_=[],j=16383,M=0,$=m-v;M<$;M+=j)_.push(encodeChunk(i,M,M+j>$?$:M+j));1===v?(s=i[m-1],_.push(u[s>>2]+u[s<<4&63]+"==")):2===v&&(s=(i[m-2]<<8)+i[m-1],_.push(u[s>>10]+u[s>>4&63]+u[s<<2&63]+"="));return _.join("")};for(var u=[],m=[],v="undefined"!=typeof Uint8Array?Uint8Array:Array,_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",j=0;j<64;++j)u[j]=_[j],m[_.charCodeAt(j)]=j;function getLens(i){var s=i.length;if(s%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var u=i.indexOf("=");return-1===u&&(u=s),[u,u===s?0:4-u%4]}function encodeChunk(i,s,m){for(var v,_,j=[],M=s;M>18&63]+u[_>>12&63]+u[_>>6&63]+u[63&_]);return j.join("")}m["-".charCodeAt(0)]=62,m["_".charCodeAt(0)]=63},48764:(i,s,u)=>{"use strict";const m=u(79742),v=u(80645),_="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;s.Buffer=Buffer,s.SlowBuffer=function SlowBuffer(i){+i!=i&&(i=0);return Buffer.alloc(+i)},s.INSPECT_MAX_BYTES=50;const j=2147483647;function createBuffer(i){if(i>j)throw new RangeError('The value "'+i+'" is invalid for option "size"');const s=new Uint8Array(i);return Object.setPrototypeOf(s,Buffer.prototype),s}function Buffer(i,s,u){if("number"==typeof i){if("string"==typeof s)throw new TypeError('The "string" argument must be of type string. Received type number');return allocUnsafe(i)}return from(i,s,u)}function from(i,s,u){if("string"==typeof i)return function fromString(i,s){"string"==typeof s&&""!==s||(s="utf8");if(!Buffer.isEncoding(s))throw new TypeError("Unknown encoding: "+s);const u=0|byteLength(i,s);let m=createBuffer(u);const v=m.write(i,s);v!==u&&(m=m.slice(0,v));return m}(i,s);if(ArrayBuffer.isView(i))return function fromArrayView(i){if(isInstance(i,Uint8Array)){const s=new Uint8Array(i);return fromArrayBuffer(s.buffer,s.byteOffset,s.byteLength)}return fromArrayLike(i)}(i);if(null==i)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof i);if(isInstance(i,ArrayBuffer)||i&&isInstance(i.buffer,ArrayBuffer))return fromArrayBuffer(i,s,u);if("undefined"!=typeof SharedArrayBuffer&&(isInstance(i,SharedArrayBuffer)||i&&isInstance(i.buffer,SharedArrayBuffer)))return fromArrayBuffer(i,s,u);if("number"==typeof i)throw new TypeError('The "value" argument must not be of type number. Received type number');const m=i.valueOf&&i.valueOf();if(null!=m&&m!==i)return Buffer.from(m,s,u);const v=function fromObject(i){if(Buffer.isBuffer(i)){const s=0|checked(i.length),u=createBuffer(s);return 0===u.length||i.copy(u,0,0,s),u}if(void 0!==i.length)return"number"!=typeof i.length||numberIsNaN(i.length)?createBuffer(0):fromArrayLike(i);if("Buffer"===i.type&&Array.isArray(i.data))return fromArrayLike(i.data)}(i);if(v)return v;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof i[Symbol.toPrimitive])return Buffer.from(i[Symbol.toPrimitive]("string"),s,u);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof i)}function assertSize(i){if("number"!=typeof i)throw new TypeError('"size" argument must be of type number');if(i<0)throw new RangeError('The value "'+i+'" is invalid for option "size"')}function allocUnsafe(i){return assertSize(i),createBuffer(i<0?0:0|checked(i))}function fromArrayLike(i){const s=i.length<0?0:0|checked(i.length),u=createBuffer(s);for(let m=0;m=j)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+j.toString(16)+" bytes");return 0|i}function byteLength(i,s){if(Buffer.isBuffer(i))return i.length;if(ArrayBuffer.isView(i)||isInstance(i,ArrayBuffer))return i.byteLength;if("string"!=typeof i)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof i);const u=i.length,m=arguments.length>2&&!0===arguments[2];if(!m&&0===u)return 0;let v=!1;for(;;)switch(s){case"ascii":case"latin1":case"binary":return u;case"utf8":case"utf-8":return utf8ToBytes(i).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*u;case"hex":return u>>>1;case"base64":return base64ToBytes(i).length;default:if(v)return m?-1:utf8ToBytes(i).length;s=(""+s).toLowerCase(),v=!0}}function slowToString(i,s,u){let m=!1;if((void 0===s||s<0)&&(s=0),s>this.length)return"";if((void 0===u||u>this.length)&&(u=this.length),u<=0)return"";if((u>>>=0)<=(s>>>=0))return"";for(i||(i="utf8");;)switch(i){case"hex":return hexSlice(this,s,u);case"utf8":case"utf-8":return utf8Slice(this,s,u);case"ascii":return asciiSlice(this,s,u);case"latin1":case"binary":return latin1Slice(this,s,u);case"base64":return base64Slice(this,s,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,s,u);default:if(m)throw new TypeError("Unknown encoding: "+i);i=(i+"").toLowerCase(),m=!0}}function swap(i,s,u){const m=i[s];i[s]=i[u],i[u]=m}function bidirectionalIndexOf(i,s,u,m,v){if(0===i.length)return-1;if("string"==typeof u?(m=u,u=0):u>2147483647?u=2147483647:u<-2147483648&&(u=-2147483648),numberIsNaN(u=+u)&&(u=v?0:i.length-1),u<0&&(u=i.length+u),u>=i.length){if(v)return-1;u=i.length-1}else if(u<0){if(!v)return-1;u=0}if("string"==typeof s&&(s=Buffer.from(s,m)),Buffer.isBuffer(s))return 0===s.length?-1:arrayIndexOf(i,s,u,m,v);if("number"==typeof s)return s&=255,"function"==typeof Uint8Array.prototype.indexOf?v?Uint8Array.prototype.indexOf.call(i,s,u):Uint8Array.prototype.lastIndexOf.call(i,s,u):arrayIndexOf(i,[s],u,m,v);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(i,s,u,m,v){let _,j=1,M=i.length,$=s.length;if(void 0!==m&&("ucs2"===(m=String(m).toLowerCase())||"ucs-2"===m||"utf16le"===m||"utf-16le"===m)){if(i.length<2||s.length<2)return-1;j=2,M/=2,$/=2,u/=2}function read(i,s){return 1===j?i[s]:i.readUInt16BE(s*j)}if(v){let m=-1;for(_=u;_M&&(u=M-$),_=u;_>=0;_--){let u=!0;for(let m=0;m<$;m++)if(read(i,_+m)!==read(s,m)){u=!1;break}if(u)return _}return-1}function hexWrite(i,s,u,m){u=Number(u)||0;const v=i.length-u;m?(m=Number(m))>v&&(m=v):m=v;const _=s.length;let j;for(m>_/2&&(m=_/2),j=0;j>8,v=u%256,_.push(v),_.push(m);return _}(s,i.length-u),i,u,m)}function base64Slice(i,s,u){return 0===s&&u===i.length?m.fromByteArray(i):m.fromByteArray(i.slice(s,u))}function utf8Slice(i,s,u){u=Math.min(i.length,u);const m=[];let v=s;for(;v239?4:s>223?3:s>191?2:1;if(v+j<=u){let u,m,M,$;switch(j){case 1:s<128&&(_=s);break;case 2:u=i[v+1],128==(192&u)&&($=(31&s)<<6|63&u,$>127&&(_=$));break;case 3:u=i[v+1],m=i[v+2],128==(192&u)&&128==(192&m)&&($=(15&s)<<12|(63&u)<<6|63&m,$>2047&&($<55296||$>57343)&&(_=$));break;case 4:u=i[v+1],m=i[v+2],M=i[v+3],128==(192&u)&&128==(192&m)&&128==(192&M)&&($=(15&s)<<18|(63&u)<<12|(63&m)<<6|63&M,$>65535&&$<1114112&&(_=$))}}null===_?(_=65533,j=1):_>65535&&(_-=65536,m.push(_>>>10&1023|55296),_=56320|1023&_),m.push(_),v+=j}return function decodeCodePointsArray(i){const s=i.length;if(s<=M)return String.fromCharCode.apply(String,i);let u="",m=0;for(;mm.length?(Buffer.isBuffer(s)||(s=Buffer.from(s)),s.copy(m,v)):Uint8Array.prototype.set.call(m,s,v);else{if(!Buffer.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(m,v)}v+=s.length}return m},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function swap16(){const i=this.length;if(i%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let s=0;su&&(i+=" ... "),""},_&&(Buffer.prototype[_]=Buffer.prototype.inspect),Buffer.prototype.compare=function compare(i,s,u,m,v){if(isInstance(i,Uint8Array)&&(i=Buffer.from(i,i.offset,i.byteLength)),!Buffer.isBuffer(i))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof i);if(void 0===s&&(s=0),void 0===u&&(u=i?i.length:0),void 0===m&&(m=0),void 0===v&&(v=this.length),s<0||u>i.length||m<0||v>this.length)throw new RangeError("out of range index");if(m>=v&&s>=u)return 0;if(m>=v)return-1;if(s>=u)return 1;if(this===i)return 0;let _=(v>>>=0)-(m>>>=0),j=(u>>>=0)-(s>>>=0);const M=Math.min(_,j),$=this.slice(m,v),W=i.slice(s,u);for(let i=0;i>>=0,isFinite(u)?(u>>>=0,void 0===m&&(m="utf8")):(m=u,u=void 0)}const v=this.length-s;if((void 0===u||u>v)&&(u=v),i.length>0&&(u<0||s<0)||s>this.length)throw new RangeError("Attempt to write outside buffer bounds");m||(m="utf8");let _=!1;for(;;)switch(m){case"hex":return hexWrite(this,i,s,u);case"utf8":case"utf-8":return utf8Write(this,i,s,u);case"ascii":case"latin1":case"binary":return asciiWrite(this,i,s,u);case"base64":return base64Write(this,i,s,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,i,s,u);default:if(_)throw new TypeError("Unknown encoding: "+m);m=(""+m).toLowerCase(),_=!0}},Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const M=4096;function asciiSlice(i,s,u){let m="";u=Math.min(i.length,u);for(let v=s;vm)&&(u=m);let v="";for(let m=s;mu)throw new RangeError("Trying to access beyond buffer length")}function checkInt(i,s,u,m,v,_){if(!Buffer.isBuffer(i))throw new TypeError('"buffer" argument must be a Buffer instance');if(s>v||s<_)throw new RangeError('"value" argument is out of bounds');if(u+m>i.length)throw new RangeError("Index out of range")}function wrtBigUInt64LE(i,s,u,m,v){checkIntBI(s,m,v,i,u,7);let _=Number(s&BigInt(4294967295));i[u++]=_,_>>=8,i[u++]=_,_>>=8,i[u++]=_,_>>=8,i[u++]=_;let j=Number(s>>BigInt(32)&BigInt(4294967295));return i[u++]=j,j>>=8,i[u++]=j,j>>=8,i[u++]=j,j>>=8,i[u++]=j,u}function wrtBigUInt64BE(i,s,u,m,v){checkIntBI(s,m,v,i,u,7);let _=Number(s&BigInt(4294967295));i[u+7]=_,_>>=8,i[u+6]=_,_>>=8,i[u+5]=_,_>>=8,i[u+4]=_;let j=Number(s>>BigInt(32)&BigInt(4294967295));return i[u+3]=j,j>>=8,i[u+2]=j,j>>=8,i[u+1]=j,j>>=8,i[u]=j,u+8}function checkIEEE754(i,s,u,m,v,_){if(u+m>i.length)throw new RangeError("Index out of range");if(u<0)throw new RangeError("Index out of range")}function writeFloat(i,s,u,m,_){return s=+s,u>>>=0,_||checkIEEE754(i,0,u,4),v.write(i,s,u,m,23,4),u+4}function writeDouble(i,s,u,m,_){return s=+s,u>>>=0,_||checkIEEE754(i,0,u,8),v.write(i,s,u,m,52,8),u+8}Buffer.prototype.slice=function slice(i,s){const u=this.length;(i=~~i)<0?(i+=u)<0&&(i=0):i>u&&(i=u),(s=void 0===s?u:~~s)<0?(s+=u)<0&&(s=0):s>u&&(s=u),s>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=this[i],v=1,_=0;for(;++_>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=this[i+--s],v=1;for(;s>0&&(v*=256);)m+=this[i+--s]*v;return m},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(i,s){return i>>>=0,s||checkOffset(i,1,this.length),this[i]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(i,s){return i>>>=0,s||checkOffset(i,2,this.length),this[i]|this[i+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(i,s){return i>>>=0,s||checkOffset(i,2,this.length),this[i]<<8|this[i+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),(this[i]|this[i+1]<<8|this[i+2]<<16)+16777216*this[i+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),16777216*this[i]+(this[i+1]<<16|this[i+2]<<8|this[i+3])},Buffer.prototype.readBigUInt64LE=defineBigIntMethod((function readBigUInt64LE(i){validateNumber(i>>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=s+256*this[++i]+65536*this[++i]+this[++i]*2**24,v=this[++i]+256*this[++i]+65536*this[++i]+u*2**24;return BigInt(m)+(BigInt(v)<>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=s*2**24+65536*this[++i]+256*this[++i]+this[++i],v=this[++i]*2**24+65536*this[++i]+256*this[++i]+u;return(BigInt(m)<>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=this[i],v=1,_=0;for(;++_=v&&(m-=Math.pow(2,8*s)),m},Buffer.prototype.readIntBE=function readIntBE(i,s,u){i>>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=s,v=1,_=this[i+--m];for(;m>0&&(v*=256);)_+=this[i+--m]*v;return v*=128,_>=v&&(_-=Math.pow(2,8*s)),_},Buffer.prototype.readInt8=function readInt8(i,s){return i>>>=0,s||checkOffset(i,1,this.length),128&this[i]?-1*(255-this[i]+1):this[i]},Buffer.prototype.readInt16LE=function readInt16LE(i,s){i>>>=0,s||checkOffset(i,2,this.length);const u=this[i]|this[i+1]<<8;return 32768&u?4294901760|u:u},Buffer.prototype.readInt16BE=function readInt16BE(i,s){i>>>=0,s||checkOffset(i,2,this.length);const u=this[i+1]|this[i]<<8;return 32768&u?4294901760|u:u},Buffer.prototype.readInt32LE=function readInt32LE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),this[i]|this[i+1]<<8|this[i+2]<<16|this[i+3]<<24},Buffer.prototype.readInt32BE=function readInt32BE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),this[i]<<24|this[i+1]<<16|this[i+2]<<8|this[i+3]},Buffer.prototype.readBigInt64LE=defineBigIntMethod((function readBigInt64LE(i){validateNumber(i>>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=this[i+4]+256*this[i+5]+65536*this[i+6]+(u<<24);return(BigInt(m)<>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=(s<<24)+65536*this[++i]+256*this[++i]+this[++i];return(BigInt(m)<>>=0,s||checkOffset(i,4,this.length),v.read(this,i,!0,23,4)},Buffer.prototype.readFloatBE=function readFloatBE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),v.read(this,i,!1,23,4)},Buffer.prototype.readDoubleLE=function readDoubleLE(i,s){return i>>>=0,s||checkOffset(i,8,this.length),v.read(this,i,!0,52,8)},Buffer.prototype.readDoubleBE=function readDoubleBE(i,s){return i>>>=0,s||checkOffset(i,8,this.length),v.read(this,i,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(i,s,u,m){if(i=+i,s>>>=0,u>>>=0,!m){checkInt(this,i,s,u,Math.pow(2,8*u)-1,0)}let v=1,_=0;for(this[s]=255&i;++_>>=0,u>>>=0,!m){checkInt(this,i,s,u,Math.pow(2,8*u)-1,0)}let v=u-1,_=1;for(this[s+v]=255&i;--v>=0&&(_*=256);)this[s+v]=i/_&255;return s+u},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,1,255,0),this[s]=255&i,s+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,65535,0),this[s]=255&i,this[s+1]=i>>>8,s+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,65535,0),this[s]=i>>>8,this[s+1]=255&i,s+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,4294967295,0),this[s+3]=i>>>24,this[s+2]=i>>>16,this[s+1]=i>>>8,this[s]=255&i,s+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,4294967295,0),this[s]=i>>>24,this[s+1]=i>>>16,this[s+2]=i>>>8,this[s+3]=255&i,s+4},Buffer.prototype.writeBigUInt64LE=defineBigIntMethod((function writeBigUInt64LE(i,s=0){return wrtBigUInt64LE(this,i,s,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeBigUInt64BE=defineBigIntMethod((function writeBigUInt64BE(i,s=0){return wrtBigUInt64BE(this,i,s,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeIntLE=function writeIntLE(i,s,u,m){if(i=+i,s>>>=0,!m){const m=Math.pow(2,8*u-1);checkInt(this,i,s,u,m-1,-m)}let v=0,_=1,j=0;for(this[s]=255&i;++v>0)-j&255;return s+u},Buffer.prototype.writeIntBE=function writeIntBE(i,s,u,m){if(i=+i,s>>>=0,!m){const m=Math.pow(2,8*u-1);checkInt(this,i,s,u,m-1,-m)}let v=u-1,_=1,j=0;for(this[s+v]=255&i;--v>=0&&(_*=256);)i<0&&0===j&&0!==this[s+v+1]&&(j=1),this[s+v]=(i/_>>0)-j&255;return s+u},Buffer.prototype.writeInt8=function writeInt8(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,1,127,-128),i<0&&(i=255+i+1),this[s]=255&i,s+1},Buffer.prototype.writeInt16LE=function writeInt16LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,32767,-32768),this[s]=255&i,this[s+1]=i>>>8,s+2},Buffer.prototype.writeInt16BE=function writeInt16BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,32767,-32768),this[s]=i>>>8,this[s+1]=255&i,s+2},Buffer.prototype.writeInt32LE=function writeInt32LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,2147483647,-2147483648),this[s]=255&i,this[s+1]=i>>>8,this[s+2]=i>>>16,this[s+3]=i>>>24,s+4},Buffer.prototype.writeInt32BE=function writeInt32BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,2147483647,-2147483648),i<0&&(i=4294967295+i+1),this[s]=i>>>24,this[s+1]=i>>>16,this[s+2]=i>>>8,this[s+3]=255&i,s+4},Buffer.prototype.writeBigInt64LE=defineBigIntMethod((function writeBigInt64LE(i,s=0){return wrtBigUInt64LE(this,i,s,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeBigInt64BE=defineBigIntMethod((function writeBigInt64BE(i,s=0){return wrtBigUInt64BE(this,i,s,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeFloatLE=function writeFloatLE(i,s,u){return writeFloat(this,i,s,!0,u)},Buffer.prototype.writeFloatBE=function writeFloatBE(i,s,u){return writeFloat(this,i,s,!1,u)},Buffer.prototype.writeDoubleLE=function writeDoubleLE(i,s,u){return writeDouble(this,i,s,!0,u)},Buffer.prototype.writeDoubleBE=function writeDoubleBE(i,s,u){return writeDouble(this,i,s,!1,u)},Buffer.prototype.copy=function copy(i,s,u,m){if(!Buffer.isBuffer(i))throw new TypeError("argument should be a Buffer");if(u||(u=0),m||0===m||(m=this.length),s>=i.length&&(s=i.length),s||(s=0),m>0&&m=this.length)throw new RangeError("Index out of range");if(m<0)throw new RangeError("sourceEnd out of bounds");m>this.length&&(m=this.length),i.length-s>>=0,u=void 0===u?this.length:u>>>0,i||(i=0),"number"==typeof i)for(v=s;v=m+4;u-=3)s=`_${i.slice(u-3,u)}${s}`;return`${i.slice(0,u)}${s}`}function checkIntBI(i,s,u,m,v,_){if(i>u||i3?0===s||s===BigInt(0)?`>= 0${m} and < 2${m} ** ${8*(_+1)}${m}`:`>= -(2${m} ** ${8*(_+1)-1}${m}) and < 2 ** ${8*(_+1)-1}${m}`:`>= ${s}${m} and <= ${u}${m}`,new $.ERR_OUT_OF_RANGE("value",v,i)}!function checkBounds(i,s,u){validateNumber(s,"offset"),void 0!==i[s]&&void 0!==i[s+u]||boundsError(s,i.length-(u+1))}(m,v,_)}function validateNumber(i,s){if("number"!=typeof i)throw new $.ERR_INVALID_ARG_TYPE(s,"number",i)}function boundsError(i,s,u){if(Math.floor(i)!==i)throw validateNumber(i,u),new $.ERR_OUT_OF_RANGE(u||"offset","an integer",i);if(s<0)throw new $.ERR_BUFFER_OUT_OF_BOUNDS;throw new $.ERR_OUT_OF_RANGE(u||"offset",`>= ${u?1:0} and <= ${s}`,i)}E("ERR_BUFFER_OUT_OF_BOUNDS",(function(i){return i?`${i} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),E("ERR_INVALID_ARG_TYPE",(function(i,s){return`The "${i}" argument must be of type number. Received type ${typeof s}`}),TypeError),E("ERR_OUT_OF_RANGE",(function(i,s,u){let m=`The value of "${i}" is out of range.`,v=u;return Number.isInteger(u)&&Math.abs(u)>2**32?v=addNumericalSeparator(String(u)):"bigint"==typeof u&&(v=String(u),(u>BigInt(2)**BigInt(32)||u<-(BigInt(2)**BigInt(32)))&&(v=addNumericalSeparator(v)),v+="n"),m+=` It must be ${s}. Received ${v}`,m}),RangeError);const W=/[^+/0-9A-Za-z-_]/g;function utf8ToBytes(i,s){let u;s=s||1/0;const m=i.length;let v=null;const _=[];for(let j=0;j55295&&u<57344){if(!v){if(u>56319){(s-=3)>-1&&_.push(239,191,189);continue}if(j+1===m){(s-=3)>-1&&_.push(239,191,189);continue}v=u;continue}if(u<56320){(s-=3)>-1&&_.push(239,191,189),v=u;continue}u=65536+(v-55296<<10|u-56320)}else v&&(s-=3)>-1&&_.push(239,191,189);if(v=null,u<128){if((s-=1)<0)break;_.push(u)}else if(u<2048){if((s-=2)<0)break;_.push(u>>6|192,63&u|128)}else if(u<65536){if((s-=3)<0)break;_.push(u>>12|224,u>>6&63|128,63&u|128)}else{if(!(u<1114112))throw new Error("Invalid code point");if((s-=4)<0)break;_.push(u>>18|240,u>>12&63|128,u>>6&63|128,63&u|128)}}return _}function base64ToBytes(i){return m.toByteArray(function base64clean(i){if((i=(i=i.split("=")[0]).trim().replace(W,"")).length<2)return"";for(;i.length%4!=0;)i+="=";return i}(i))}function blitBuffer(i,s,u,m){let v;for(v=0;v=s.length||v>=i.length);++v)s[v+u]=i[v];return v}function isInstance(i,s){return i instanceof s||null!=i&&null!=i.constructor&&null!=i.constructor.name&&i.constructor.name===s.name}function numberIsNaN(i){return i!=i}const X=function(){const i="0123456789abcdef",s=new Array(256);for(let u=0;u<16;++u){const m=16*u;for(let v=0;v<16;++v)s[m+v]=i[u]+i[v]}return s}();function defineBigIntMethod(i){return"undefined"==typeof BigInt?BufferBigIntNotDefined:i}function BufferBigIntNotDefined(){throw new Error("BigInt not supported")}},21924:(i,s,u)=>{"use strict";var m=u(40210),v=u(55559),_=v(m("String.prototype.indexOf"));i.exports=function callBoundIntrinsic(i,s){var u=m(i,!!s);return"function"==typeof u&&_(i,".prototype.")>-1?v(u):u}},55559:(i,s,u)=>{"use strict";var m=u(58612),v=u(40210),_=v("%Function.prototype.apply%"),j=v("%Function.prototype.call%"),M=v("%Reflect.apply%",!0)||m.call(j,_),$=v("%Object.getOwnPropertyDescriptor%",!0),W=v("%Object.defineProperty%",!0),X=v("%Math.max%");if(W)try{W({},"a",{value:1})}catch(i){W=null}i.exports=function callBind(i){var s=M(m,j,arguments);$&&W&&($(s,"length").configurable&&W(s,"length",{value:1+X(0,i.length-(arguments.length-1))}));return s};var Y=function applyBind(){return M(m,_,arguments)};W?W(i.exports,"apply",{value:Y}):i.exports.apply=Y},94184:(i,s)=>{var u;!function(){"use strict";var m={}.hasOwnProperty;function classNames(){for(var i=[],s=0;s{"use strict";s.parse=function parse(i,s){if("string"!=typeof i)throw new TypeError("argument str must be a string");var u={},m=(s||{}).decode||decode,v=0;for(;v{"use strict";var m=u(11742),v={"text/plain":"Text","text/html":"Url",default:"Text"};i.exports=function copy(i,s){var u,_,j,M,$,W,X=!1;s||(s={}),u=s.debug||!1;try{if(j=m(),M=document.createRange(),$=document.getSelection(),(W=document.createElement("span")).textContent=i,W.ariaHidden="true",W.style.all="unset",W.style.position="fixed",W.style.top=0,W.style.clip="rect(0, 0, 0, 0)",W.style.whiteSpace="pre",W.style.webkitUserSelect="text",W.style.MozUserSelect="text",W.style.msUserSelect="text",W.style.userSelect="text",W.addEventListener("copy",(function(m){if(m.stopPropagation(),s.format)if(m.preventDefault(),void 0===m.clipboardData){u&&console.warn("unable to use e.clipboardData"),u&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var _=v[s.format]||v.default;window.clipboardData.setData(_,i)}else m.clipboardData.clearData(),m.clipboardData.setData(s.format,i);s.onCopy&&(m.preventDefault(),s.onCopy(m.clipboardData))})),document.body.appendChild(W),M.selectNodeContents(W),$.addRange(M),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");X=!0}catch(m){u&&console.error("unable to copy using execCommand: ",m),u&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(s.format||"text",i),s.onCopy&&s.onCopy(window.clipboardData),X=!0}catch(m){u&&console.error("unable to copy using clipboardData: ",m),u&&console.error("falling back to prompt"),_=function format(i){var s=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return i.replace(/#{\s*key\s*}/g,s)}("message"in s?s.message:"Copy to clipboard: #{key}, Enter"),window.prompt(_,i)}}finally{$&&("function"==typeof $.removeRange?$.removeRange(M):$.removeAllRanges()),W&&document.body.removeChild(W),j()}return X}},90093:(i,s,u)=>{var m=u(28196);i.exports=m},3688:(i,s,u)=>{var m=u(11955);i.exports=m},83838:(i,s,u)=>{var m=u(46279);i.exports=m},15684:(i,s,u)=>{var m=u(19373);i.exports=m},81331:(i,s,u)=>{var m=u(52759);i.exports=m},65362:(i,s,u)=>{var m=u(63383);i.exports=m},91254:(i,s,u)=>{var m=u(57396);i.exports=m},43536:(i,s,u)=>{var m=u(41910);i.exports=m},37331:(i,s,u)=>{var m=u(79427);i.exports=m},68522:(i,s,u)=>{var m=u(62857);i.exports=m},73151:(i,s,u)=>{var m=u(9534);i.exports=m},45012:(i,s,u)=>{var m=u(23059);i.exports=m},80281:(i,s,u)=>{var m=u(92547);u(97522),u(43975),u(45414),i.exports=m},40031:(i,s,u)=>{var m=u(46509);i.exports=m},17487:(i,s,u)=>{var m=u(35774);i.exports=m},62383:(i,s,u)=>{u(21501);var m=u(35703);i.exports=m("Array").filter},99324:(i,s,u)=>{u(2437);var m=u(35703);i.exports=m("Array").forEach},8700:(i,s,u)=>{u(99076);var m=u(35703);i.exports=m("Array").indexOf},9896:(i,s,u)=>{u(48528);var m=u(35703);i.exports=m("Array").push},27700:(i,s,u)=>{u(73381);var m=u(35703);i.exports=m("Function").bind},16246:(i,s,u)=>{var m=u(7046),v=u(27700),_=Function.prototype;i.exports=function(i){var s=i.bind;return i===_||m(_,i)&&s===_.bind?v:s}},2480:(i,s,u)=>{var m=u(7046),v=u(62383),_=Array.prototype;i.exports=function(i){var s=i.filter;return i===_||m(_,i)&&s===_.filter?v:s}},34570:(i,s,u)=>{var m=u(7046),v=u(8700),_=Array.prototype;i.exports=function(i){var s=i.indexOf;return i===_||m(_,i)&&s===_.indexOf?v:s}},93993:(i,s,u)=>{var m=u(7046),v=u(9896),_=Array.prototype;i.exports=function(i){var s=i.push;return i===_||m(_,i)&&s===_.push?v:s}},45999:(i,s,u)=>{u(49221);var m=u(54058);i.exports=m.Object.assign},7702:(i,s,u)=>{u(74979);var m=u(54058).Object,v=i.exports=function defineProperties(i,s){return m.defineProperties(i,s)};m.defineProperties.sham&&(v.sham=!0)},48171:(i,s,u)=>{u(86450);var m=u(54058).Object,v=i.exports=function defineProperty(i,s,u){return m.defineProperty(i,s,u)};m.defineProperty.sham&&(v.sham=!0)},286:(i,s,u)=>{u(46924);var m=u(54058).Object,v=i.exports=function getOwnPropertyDescriptor(i,s){return m.getOwnPropertyDescriptor(i,s)};m.getOwnPropertyDescriptor.sham&&(v.sham=!0)},92766:(i,s,u)=>{u(88482);var m=u(54058);i.exports=m.Object.getOwnPropertyDescriptors},30498:(i,s,u)=>{u(35824);var m=u(54058);i.exports=m.Object.getOwnPropertySymbols},48494:(i,s,u)=>{u(21724);var m=u(54058);i.exports=m.Object.keys},57473:(i,s,u)=>{u(85906),u(55967),u(35824),u(8555),u(52615),u(21732),u(35903),u(1825),u(28394),u(45915),u(61766),u(62737),u(89911),u(74315),u(63131),u(64714),u(70659),u(69120),u(79413),u(1502);var m=u(54058);i.exports=m.Symbol},24227:(i,s,u)=>{u(66274),u(55967),u(77971),u(1825);var m=u(11477);i.exports=m.f("iterator")},62978:(i,s,u)=>{u(18084),u(63131);var m=u(11477);i.exports=m.f("toPrimitive")},14122:(i,s,u)=>{i.exports=u(89097)},44442:(i,s,u)=>{i.exports=u(51675)},57152:(i,s,u)=>{i.exports=u(82507)},69447:(i,s,u)=>{i.exports=u(628)},1449:(i,s,u)=>{i.exports=u(34501)},60269:(i,s,u)=>{i.exports=u(76936)},70573:(i,s,u)=>{i.exports=u(18180)},73685:(i,s,u)=>{i.exports=u(80621)},27533:(i,s,u)=>{i.exports=u(22948)},39057:(i,s,u)=>{i.exports=u(82108)},84710:(i,s,u)=>{i.exports=u(14058)},93799:(i,s,u)=>{i.exports=u(92093)},86600:(i,s,u)=>{i.exports=u(52201)},9759:(i,s,u)=>{i.exports=u(27398)},71384:(i,s,u)=>{i.exports=u(26189)},89097:(i,s,u)=>{var m=u(90093);i.exports=m},51675:(i,s,u)=>{var m=u(3688);i.exports=m},82507:(i,s,u)=>{var m=u(83838);i.exports=m},628:(i,s,u)=>{var m=u(15684);i.exports=m},34501:(i,s,u)=>{var m=u(81331);i.exports=m},76936:(i,s,u)=>{var m=u(65362);i.exports=m},18180:(i,s,u)=>{var m=u(91254);i.exports=m},80621:(i,s,u)=>{var m=u(43536);i.exports=m},22948:(i,s,u)=>{var m=u(37331);i.exports=m},82108:(i,s,u)=>{var m=u(68522);i.exports=m},14058:(i,s,u)=>{var m=u(73151);i.exports=m},92093:(i,s,u)=>{var m=u(45012);i.exports=m},52201:(i,s,u)=>{var m=u(80281);u(28783),u(97618),u(6989),u(65799),u(46774),u(22731),u(85605),u(31943),u(80620),u(36172),i.exports=m},27398:(i,s,u)=>{var m=u(40031);i.exports=m},26189:(i,s,u)=>{var m=u(17487);i.exports=m},24883:(i,s,u)=>{var m=u(57475),v=u(69826),_=TypeError;i.exports=function(i){if(m(i))return i;throw _(v(i)+" is not a function")}},11851:(i,s,u)=>{var m=u(57475),v=String,_=TypeError;i.exports=function(i){if("object"==typeof i||m(i))return i;throw _("Can't set "+v(i)+" as a prototype")}},18479:i=>{i.exports=function(){}},96059:(i,s,u)=>{var m=u(10941),v=String,_=TypeError;i.exports=function(i){if(m(i))return i;throw _(v(i)+" is not an object")}},56837:(i,s,u)=>{"use strict";var m=u(3610).forEach,v=u(34194)("forEach");i.exports=v?[].forEach:function forEach(i){return m(this,i,arguments.length>1?arguments[1]:void 0)}},31692:(i,s,u)=>{var m=u(74529),v=u(59413),_=u(10623),createMethod=function(i){return function(s,u,j){var M,$=m(s),W=_($),X=v(j,W);if(i&&u!=u){for(;W>X;)if((M=$[X++])!=M)return!0}else for(;W>X;X++)if((i||X in $)&&$[X]===u)return i||X||0;return!i&&-1}};i.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},3610:(i,s,u)=>{var m=u(86843),v=u(95329),_=u(37026),j=u(89678),M=u(10623),$=u(64692),W=v([].push),createMethod=function(i){var s=1==i,u=2==i,v=3==i,X=4==i,Y=6==i,Z=7==i,ee=5==i||Y;return function(ie,ae,ce,le){for(var pe,de,fe=j(ie),ye=_(fe),be=m(ae,ce),_e=M(ye),we=0,Se=le||$,xe=s?Se(ie,_e):u||Z?Se(ie,0):void 0;_e>we;we++)if((ee||we in ye)&&(de=be(pe=ye[we],we,fe),i))if(s)xe[we]=de;else if(de)switch(i){case 3:return!0;case 5:return pe;case 6:return we;case 2:W(xe,pe)}else switch(i){case 4:return!1;case 7:W(xe,pe)}return Y?-1:v||X?X:xe}};i.exports={forEach:createMethod(0),map:createMethod(1),filter:createMethod(2),some:createMethod(3),every:createMethod(4),find:createMethod(5),findIndex:createMethod(6),filterReject:createMethod(7)}},50568:(i,s,u)=>{var m=u(95981),v=u(99813),_=u(53385),j=v("species");i.exports=function(i){return _>=51||!m((function(){var s=[];return(s.constructor={})[j]=function(){return{foo:1}},1!==s[i](Boolean).foo}))}},34194:(i,s,u)=>{"use strict";var m=u(95981);i.exports=function(i,s){var u=[][i];return!!u&&m((function(){u.call(null,s||function(){return 1},1)}))}},89779:(i,s,u)=>{"use strict";var m=u(55746),v=u(1052),_=TypeError,j=Object.getOwnPropertyDescriptor,M=m&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(i){return i instanceof TypeError}}();i.exports=M?function(i,s){if(v(i)&&!j(i,"length").writable)throw _("Cannot set read only .length");return i.length=s}:function(i,s){return i.length=s}},15790:(i,s,u)=>{var m=u(59413),v=u(10623),_=u(55449),j=Array,M=Math.max;i.exports=function(i,s,u){for(var $=v(i),W=m(s,$),X=m(void 0===u?$:u,$),Y=j(M(X-W,0)),Z=0;W{var m=u(95329);i.exports=m([].slice)},5693:(i,s,u)=>{var m=u(1052),v=u(24284),_=u(10941),j=u(99813)("species"),M=Array;i.exports=function(i){var s;return m(i)&&(s=i.constructor,(v(s)&&(s===M||m(s.prototype))||_(s)&&null===(s=s[j]))&&(s=void 0)),void 0===s?M:s}},64692:(i,s,u)=>{var m=u(5693);i.exports=function(i,s){return new(m(i))(0===s?0:s)}},82532:(i,s,u)=>{var m=u(95329),v=m({}.toString),_=m("".slice);i.exports=function(i){return _(v(i),8,-1)}},9697:(i,s,u)=>{var m=u(22885),v=u(57475),_=u(82532),j=u(99813)("toStringTag"),M=Object,$="Arguments"==_(function(){return arguments}());i.exports=m?_:function(i){var s,u,m;return void 0===i?"Undefined":null===i?"Null":"string"==typeof(u=function(i,s){try{return i[s]}catch(i){}}(s=M(i),j))?u:$?_(s):"Object"==(m=_(s))&&v(s.callee)?"Arguments":m}},91310:(i,s,u)=>{var m=u(95981);i.exports=!m((function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype}))},23538:i=>{i.exports=function(i,s){return{value:i,done:s}}},32029:(i,s,u)=>{var m=u(55746),v=u(65988),_=u(31887);i.exports=m?function(i,s,u){return v.f(i,s,_(1,u))}:function(i,s,u){return i[s]=u,i}},31887:i=>{i.exports=function(i,s){return{enumerable:!(1&i),configurable:!(2&i),writable:!(4&i),value:s}}},55449:(i,s,u)=>{"use strict";var m=u(83894),v=u(65988),_=u(31887);i.exports=function(i,s,u){var j=m(s);j in i?v.f(i,j,_(0,u)):i[j]=u}},29202:(i,s,u)=>{var m=u(65988);i.exports=function(i,s,u){return m.f(i,s,u)}},95929:(i,s,u)=>{var m=u(32029);i.exports=function(i,s,u,v){return v&&v.enumerable?i[s]=u:m(i,s,u),i}},75609:(i,s,u)=>{var m=u(21899),v=Object.defineProperty;i.exports=function(i,s){try{v(m,i,{value:s,configurable:!0,writable:!0})}catch(u){m[i]=s}return s}},55746:(i,s,u)=>{var m=u(95981);i.exports=!m((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},76616:i=>{var s="object"==typeof document&&document.all,u=void 0===s&&void 0!==s;i.exports={all:s,IS_HTMLDDA:u}},61333:(i,s,u)=>{var m=u(21899),v=u(10941),_=m.document,j=v(_)&&v(_.createElement);i.exports=function(i){return j?_.createElement(i):{}}},66796:i=>{var s=TypeError;i.exports=function(i){if(i>9007199254740991)throw s("Maximum allowed index exceeded");return i}},63281:i=>{i.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},2861:i=>{i.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},53385:(i,s,u)=>{var m,v,_=u(21899),j=u(2861),M=_.process,$=_.Deno,W=M&&M.versions||$&&$.version,X=W&&W.v8;X&&(v=(m=X.split("."))[0]>0&&m[0]<4?1:+(m[0]+m[1])),!v&&j&&(!(m=j.match(/Edge\/(\d+)/))||m[1]>=74)&&(m=j.match(/Chrome\/(\d+)/))&&(v=+m[1]),i.exports=v},35703:(i,s,u)=>{var m=u(54058);i.exports=function(i){return m[i+"Prototype"]}},56759:i=>{i.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},76887:(i,s,u)=>{"use strict";var m=u(21899),v=u(79730),_=u(97484),j=u(57475),M=u(49677).f,$=u(37252),W=u(54058),X=u(86843),Y=u(32029),Z=u(90953),wrapConstructor=function(i){var Wrapper=function(s,u,m){if(this instanceof Wrapper){switch(arguments.length){case 0:return new i;case 1:return new i(s);case 2:return new i(s,u)}return new i(s,u,m)}return v(i,this,arguments)};return Wrapper.prototype=i.prototype,Wrapper};i.exports=function(i,s){var u,v,ee,ie,ae,ce,le,pe,de,fe=i.target,ye=i.global,be=i.stat,_e=i.proto,we=ye?m:be?m[fe]:(m[fe]||{}).prototype,Se=ye?W:W[fe]||Y(W,fe,{})[fe],xe=Se.prototype;for(ie in s)v=!(u=$(ye?ie:fe+(be?".":"#")+ie,i.forced))&&we&&Z(we,ie),ce=Se[ie],v&&(le=i.dontCallGetSet?(de=M(we,ie))&&de.value:we[ie]),ae=v&&le?le:s[ie],v&&typeof ce==typeof ae||(pe=i.bind&&v?X(ae,m):i.wrap&&v?wrapConstructor(ae):_e&&j(ae)?_(ae):ae,(i.sham||ae&&ae.sham||ce&&ce.sham)&&Y(pe,"sham",!0),Y(Se,ie,pe),_e&&(Z(W,ee=fe+"Prototype")||Y(W,ee,{}),Y(W[ee],ie,ae),i.real&&xe&&(u||!xe[ie])&&Y(xe,ie,ae)))}},95981:i=>{i.exports=function(i){try{return!!i()}catch(i){return!0}}},79730:(i,s,u)=>{var m=u(18285),v=Function.prototype,_=v.apply,j=v.call;i.exports="object"==typeof Reflect&&Reflect.apply||(m?j.bind(_):function(){return j.apply(_,arguments)})},86843:(i,s,u)=>{var m=u(97484),v=u(24883),_=u(18285),j=m(m.bind);i.exports=function(i,s){return v(i),void 0===s?i:_?j(i,s):function(){return i.apply(s,arguments)}}},18285:(i,s,u)=>{var m=u(95981);i.exports=!m((function(){var i=function(){}.bind();return"function"!=typeof i||i.hasOwnProperty("prototype")}))},98308:(i,s,u)=>{"use strict";var m=u(95329),v=u(24883),_=u(10941),j=u(90953),M=u(93765),$=u(18285),W=Function,X=m([].concat),Y=m([].join),Z={};i.exports=$?W.bind:function bind(i){var s=v(this),u=s.prototype,m=M(arguments,1),$=function bound(){var u=X(m,M(arguments));return this instanceof $?function(i,s,u){if(!j(Z,s)){for(var m=[],v=0;v{var m=u(18285),v=Function.prototype.call;i.exports=m?v.bind(v):function(){return v.apply(v,arguments)}},79417:(i,s,u)=>{var m=u(55746),v=u(90953),_=Function.prototype,j=m&&Object.getOwnPropertyDescriptor,M=v(_,"name"),$=M&&"something"===function something(){}.name,W=M&&(!m||m&&j(_,"name").configurable);i.exports={EXISTS:M,PROPER:$,CONFIGURABLE:W}},45526:(i,s,u)=>{var m=u(95329),v=u(24883);i.exports=function(i,s,u){try{return m(v(Object.getOwnPropertyDescriptor(i,s)[u]))}catch(i){}}},97484:(i,s,u)=>{var m=u(82532),v=u(95329);i.exports=function(i){if("Function"===m(i))return v(i)}},95329:(i,s,u)=>{var m=u(18285),v=Function.prototype,_=v.call,j=m&&v.bind.bind(_,_);i.exports=m?j:function(i){return function(){return _.apply(i,arguments)}}},626:(i,s,u)=>{var m=u(54058),v=u(21899),_=u(57475),aFunction=function(i){return _(i)?i:void 0};i.exports=function(i,s){return arguments.length<2?aFunction(m[i])||aFunction(v[i]):m[i]&&m[i][s]||v[i]&&v[i][s]}},33323:(i,s,u)=>{var m=u(95329),v=u(1052),_=u(57475),j=u(82532),M=u(85803),$=m([].push);i.exports=function(i){if(_(i))return i;if(v(i)){for(var s=i.length,u=[],m=0;m{var m=u(24883),v=u(82119);i.exports=function(i,s){var u=i[s];return v(u)?void 0:m(u)}},21899:function(i,s,u){var check=function(i){return i&&i.Math==Math&&i};i.exports=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof u.g&&u.g)||function(){return this}()||this||Function("return this")()},90953:(i,s,u)=>{var m=u(95329),v=u(89678),_=m({}.hasOwnProperty);i.exports=Object.hasOwn||function hasOwn(i,s){return _(v(i),s)}},27748:i=>{i.exports={}},15463:(i,s,u)=>{var m=u(626);i.exports=m("document","documentElement")},2840:(i,s,u)=>{var m=u(55746),v=u(95981),_=u(61333);i.exports=!m&&!v((function(){return 7!=Object.defineProperty(_("div"),"a",{get:function(){return 7}}).a}))},37026:(i,s,u)=>{var m=u(95329),v=u(95981),_=u(82532),j=Object,M=m("".split);i.exports=v((function(){return!j("z").propertyIsEnumerable(0)}))?function(i){return"String"==_(i)?M(i,""):j(i)}:j},81302:(i,s,u)=>{var m=u(95329),v=u(57475),_=u(63030),j=m(Function.toString);v(_.inspectSource)||(_.inspectSource=function(i){return j(i)}),i.exports=_.inspectSource},45402:(i,s,u)=>{var m,v,_,j=u(47093),M=u(21899),$=u(10941),W=u(32029),X=u(90953),Y=u(63030),Z=u(44262),ee=u(27748),ie="Object already initialized",ae=M.TypeError,ce=M.WeakMap;if(j||Y.state){var le=Y.state||(Y.state=new ce);le.get=le.get,le.has=le.has,le.set=le.set,m=function(i,s){if(le.has(i))throw ae(ie);return s.facade=i,le.set(i,s),s},v=function(i){return le.get(i)||{}},_=function(i){return le.has(i)}}else{var pe=Z("state");ee[pe]=!0,m=function(i,s){if(X(i,pe))throw ae(ie);return s.facade=i,W(i,pe,s),s},v=function(i){return X(i,pe)?i[pe]:{}},_=function(i){return X(i,pe)}}i.exports={set:m,get:v,has:_,enforce:function(i){return _(i)?v(i):m(i,{})},getterFor:function(i){return function(s){var u;if(!$(s)||(u=v(s)).type!==i)throw ae("Incompatible receiver, "+i+" required");return u}}}},1052:(i,s,u)=>{var m=u(82532);i.exports=Array.isArray||function isArray(i){return"Array"==m(i)}},57475:(i,s,u)=>{var m=u(76616),v=m.all;i.exports=m.IS_HTMLDDA?function(i){return"function"==typeof i||i===v}:function(i){return"function"==typeof i}},24284:(i,s,u)=>{var m=u(95329),v=u(95981),_=u(57475),j=u(9697),M=u(626),$=u(81302),noop=function(){},W=[],X=M("Reflect","construct"),Y=/^\s*(?:class|function)\b/,Z=m(Y.exec),ee=!Y.exec(noop),ie=function isConstructor(i){if(!_(i))return!1;try{return X(noop,W,i),!0}catch(i){return!1}},ae=function isConstructor(i){if(!_(i))return!1;switch(j(i)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return ee||!!Z(Y,$(i))}catch(i){return!0}};ae.sham=!0,i.exports=!X||v((function(){var i;return ie(ie.call)||!ie(Object)||!ie((function(){i=!0}))||i}))?ae:ie},37252:(i,s,u)=>{var m=u(95981),v=u(57475),_=/#|\.prototype\./,isForced=function(i,s){var u=M[j(i)];return u==W||u!=$&&(v(s)?m(s):!!s)},j=isForced.normalize=function(i){return String(i).replace(_,".").toLowerCase()},M=isForced.data={},$=isForced.NATIVE="N",W=isForced.POLYFILL="P";i.exports=isForced},82119:i=>{i.exports=function(i){return null==i}},10941:(i,s,u)=>{var m=u(57475),v=u(76616),_=v.all;i.exports=v.IS_HTMLDDA?function(i){return"object"==typeof i?null!==i:m(i)||i===_}:function(i){return"object"==typeof i?null!==i:m(i)}},82529:i=>{i.exports=!0},56664:(i,s,u)=>{var m=u(626),v=u(57475),_=u(7046),j=u(32302),M=Object;i.exports=j?function(i){return"symbol"==typeof i}:function(i){var s=m("Symbol");return v(s)&&_(s.prototype,M(i))}},53847:(i,s,u)=>{"use strict";var m=u(35143).IteratorPrototype,v=u(29290),_=u(31887),j=u(90904),M=u(12077),returnThis=function(){return this};i.exports=function(i,s,u,$){var W=s+" Iterator";return i.prototype=v(m,{next:_(+!$,u)}),j(i,W,!1,!0),M[W]=returnThis,i}},75105:(i,s,u)=>{"use strict";var m=u(76887),v=u(78834),_=u(82529),j=u(79417),M=u(57475),$=u(53847),W=u(249),X=u(88929),Y=u(90904),Z=u(32029),ee=u(95929),ie=u(99813),ae=u(12077),ce=u(35143),le=j.PROPER,pe=j.CONFIGURABLE,de=ce.IteratorPrototype,fe=ce.BUGGY_SAFARI_ITERATORS,ye=ie("iterator"),be="keys",_e="values",we="entries",returnThis=function(){return this};i.exports=function(i,s,u,j,ie,ce,Se){$(u,s,j);var xe,Pe,Ie,getIterationMethod=function(i){if(i===ie&&Ve)return Ve;if(!fe&&i in qe)return qe[i];switch(i){case be:return function keys(){return new u(this,i)};case _e:return function values(){return new u(this,i)};case we:return function entries(){return new u(this,i)}}return function(){return new u(this)}},Te=s+" Iterator",Re=!1,qe=i.prototype,ze=qe[ye]||qe["@@iterator"]||ie&&qe[ie],Ve=!fe&&ze||getIterationMethod(ie),We="Array"==s&&qe.entries||ze;if(We&&(xe=W(We.call(new i)))!==Object.prototype&&xe.next&&(_||W(xe)===de||(X?X(xe,de):M(xe[ye])||ee(xe,ye,returnThis)),Y(xe,Te,!0,!0),_&&(ae[Te]=returnThis)),le&&ie==_e&&ze&&ze.name!==_e&&(!_&&pe?Z(qe,"name",_e):(Re=!0,Ve=function values(){return v(ze,this)})),ie)if(Pe={values:getIterationMethod(_e),keys:ce?Ve:getIterationMethod(be),entries:getIterationMethod(we)},Se)for(Ie in Pe)(fe||Re||!(Ie in qe))&&ee(qe,Ie,Pe[Ie]);else m({target:s,proto:!0,forced:fe||Re},Pe);return _&&!Se||qe[ye]===Ve||ee(qe,ye,Ve,{name:ie}),ae[s]=Ve,Pe}},35143:(i,s,u)=>{"use strict";var m,v,_,j=u(95981),M=u(57475),$=u(10941),W=u(29290),X=u(249),Y=u(95929),Z=u(99813),ee=u(82529),ie=Z("iterator"),ae=!1;[].keys&&("next"in(_=[].keys())?(v=X(X(_)))!==Object.prototype&&(m=v):ae=!0),!$(m)||j((function(){var i={};return m[ie].call(i)!==i}))?m={}:ee&&(m=W(m)),M(m[ie])||Y(m,ie,(function(){return this})),i.exports={IteratorPrototype:m,BUGGY_SAFARI_ITERATORS:ae}},12077:i=>{i.exports={}},10623:(i,s,u)=>{var m=u(43057);i.exports=function(i){return m(i.length)}},35331:i=>{var s=Math.ceil,u=Math.floor;i.exports=Math.trunc||function trunc(i){var m=+i;return(m>0?u:s)(m)}},24420:(i,s,u)=>{"use strict";var m=u(55746),v=u(95329),_=u(78834),j=u(95981),M=u(14771),$=u(87857),W=u(36760),X=u(89678),Y=u(37026),Z=Object.assign,ee=Object.defineProperty,ie=v([].concat);i.exports=!Z||j((function(){if(m&&1!==Z({b:1},Z(ee({},"a",{enumerable:!0,get:function(){ee(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var i={},s={},u=Symbol(),v="abcdefghijklmnopqrst";return i[u]=7,v.split("").forEach((function(i){s[i]=i})),7!=Z({},i)[u]||M(Z({},s)).join("")!=v}))?function assign(i,s){for(var u=X(i),v=arguments.length,j=1,Z=$.f,ee=W.f;v>j;)for(var ae,ce=Y(arguments[j++]),le=Z?ie(M(ce),Z(ce)):M(ce),pe=le.length,de=0;pe>de;)ae=le[de++],m&&!_(ee,ce,ae)||(u[ae]=ce[ae]);return u}:Z},29290:(i,s,u)=>{var m,v=u(96059),_=u(59938),j=u(56759),M=u(27748),$=u(15463),W=u(61333),X=u(44262),Y="prototype",Z="script",ee=X("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(i){return"<"+Z+">"+i+""},NullProtoObjectViaActiveX=function(i){i.write(scriptTag("")),i.close();var s=i.parentWindow.Object;return i=null,s},NullProtoObject=function(){try{m=new ActiveXObject("htmlfile")}catch(i){}var i,s,u;NullProtoObject="undefined"!=typeof document?document.domain&&m?NullProtoObjectViaActiveX(m):(s=W("iframe"),u="java"+Z+":",s.style.display="none",$.appendChild(s),s.src=String(u),(i=s.contentWindow.document).open(),i.write(scriptTag("document.F=Object")),i.close(),i.F):NullProtoObjectViaActiveX(m);for(var v=j.length;v--;)delete NullProtoObject[Y][j[v]];return NullProtoObject()};M[ee]=!0,i.exports=Object.create||function create(i,s){var u;return null!==i?(EmptyConstructor[Y]=v(i),u=new EmptyConstructor,EmptyConstructor[Y]=null,u[ee]=i):u=NullProtoObject(),void 0===s?u:_.f(u,s)}},59938:(i,s,u)=>{var m=u(55746),v=u(83937),_=u(65988),j=u(96059),M=u(74529),$=u(14771);s.f=m&&!v?Object.defineProperties:function defineProperties(i,s){j(i);for(var u,m=M(s),v=$(s),W=v.length,X=0;W>X;)_.f(i,u=v[X++],m[u]);return i}},65988:(i,s,u)=>{var m=u(55746),v=u(2840),_=u(83937),j=u(96059),M=u(83894),$=TypeError,W=Object.defineProperty,X=Object.getOwnPropertyDescriptor,Y="enumerable",Z="configurable",ee="writable";s.f=m?_?function defineProperty(i,s,u){if(j(i),s=M(s),j(u),"function"==typeof i&&"prototype"===s&&"value"in u&&ee in u&&!u[ee]){var m=X(i,s);m&&m[ee]&&(i[s]=u.value,u={configurable:Z in u?u[Z]:m[Z],enumerable:Y in u?u[Y]:m[Y],writable:!1})}return W(i,s,u)}:W:function defineProperty(i,s,u){if(j(i),s=M(s),j(u),v)try{return W(i,s,u)}catch(i){}if("get"in u||"set"in u)throw $("Accessors not supported");return"value"in u&&(i[s]=u.value),i}},49677:(i,s,u)=>{var m=u(55746),v=u(78834),_=u(36760),j=u(31887),M=u(74529),$=u(83894),W=u(90953),X=u(2840),Y=Object.getOwnPropertyDescriptor;s.f=m?Y:function getOwnPropertyDescriptor(i,s){if(i=M(i),s=$(s),X)try{return Y(i,s)}catch(i){}if(W(i,s))return j(!v(_.f,i,s),i[s])}},684:(i,s,u)=>{var m=u(82532),v=u(74529),_=u(10946).f,j=u(15790),M="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];i.exports.f=function getOwnPropertyNames(i){return M&&"Window"==m(i)?function(i){try{return _(i)}catch(i){return j(M)}}(i):_(v(i))}},10946:(i,s,u)=>{var m=u(55629),v=u(56759).concat("length","prototype");s.f=Object.getOwnPropertyNames||function getOwnPropertyNames(i){return m(i,v)}},87857:(i,s)=>{s.f=Object.getOwnPropertySymbols},249:(i,s,u)=>{var m=u(90953),v=u(57475),_=u(89678),j=u(44262),M=u(91310),$=j("IE_PROTO"),W=Object,X=W.prototype;i.exports=M?W.getPrototypeOf:function(i){var s=_(i);if(m(s,$))return s[$];var u=s.constructor;return v(u)&&s instanceof u?u.prototype:s instanceof W?X:null}},7046:(i,s,u)=>{var m=u(95329);i.exports=m({}.isPrototypeOf)},55629:(i,s,u)=>{var m=u(95329),v=u(90953),_=u(74529),j=u(31692).indexOf,M=u(27748),$=m([].push);i.exports=function(i,s){var u,m=_(i),W=0,X=[];for(u in m)!v(M,u)&&v(m,u)&&$(X,u);for(;s.length>W;)v(m,u=s[W++])&&(~j(X,u)||$(X,u));return X}},14771:(i,s,u)=>{var m=u(55629),v=u(56759);i.exports=Object.keys||function keys(i){return m(i,v)}},36760:(i,s)=>{"use strict";var u={}.propertyIsEnumerable,m=Object.getOwnPropertyDescriptor,v=m&&!u.call({1:2},1);s.f=v?function propertyIsEnumerable(i){var s=m(this,i);return!!s&&s.enumerable}:u},88929:(i,s,u)=>{var m=u(45526),v=u(96059),_=u(11851);i.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var i,s=!1,u={};try{(i=m(Object.prototype,"__proto__","set"))(u,[]),s=u instanceof Array}catch(i){}return function setPrototypeOf(u,m){return v(u),_(m),s?i(u,m):u.__proto__=m,u}}():void 0)},95623:(i,s,u)=>{"use strict";var m=u(22885),v=u(9697);i.exports=m?{}.toString:function toString(){return"[object "+v(this)+"]"}},39811:(i,s,u)=>{var m=u(78834),v=u(57475),_=u(10941),j=TypeError;i.exports=function(i,s){var u,M;if("string"===s&&v(u=i.toString)&&!_(M=m(u,i)))return M;if(v(u=i.valueOf)&&!_(M=m(u,i)))return M;if("string"!==s&&v(u=i.toString)&&!_(M=m(u,i)))return M;throw j("Can't convert object to primitive value")}},31136:(i,s,u)=>{var m=u(626),v=u(95329),_=u(10946),j=u(87857),M=u(96059),$=v([].concat);i.exports=m("Reflect","ownKeys")||function ownKeys(i){var s=_.f(M(i)),u=j.f;return u?$(s,u(i)):s}},54058:i=>{i.exports={}},48219:(i,s,u)=>{var m=u(82119),v=TypeError;i.exports=function(i){if(m(i))throw v("Can't call method on "+i);return i}},90904:(i,s,u)=>{var m=u(22885),v=u(65988).f,_=u(32029),j=u(90953),M=u(95623),$=u(99813)("toStringTag");i.exports=function(i,s,u,W){if(i){var X=u?i:i.prototype;j(X,$)||v(X,$,{configurable:!0,value:s}),W&&!m&&_(X,"toString",M)}}},44262:(i,s,u)=>{var m=u(68726),v=u(99418),_=m("keys");i.exports=function(i){return _[i]||(_[i]=v(i))}},63030:(i,s,u)=>{var m=u(21899),v=u(75609),_="__core-js_shared__",j=m[_]||v(_,{});i.exports=j},68726:(i,s,u)=>{var m=u(82529),v=u(63030);(i.exports=function(i,s){return v[i]||(v[i]=void 0!==s?s:{})})("versions",[]).push({version:"3.31.1",mode:m?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE",source:"https://github.com/zloirock/core-js"})},64620:(i,s,u)=>{var m=u(95329),v=u(62435),_=u(85803),j=u(48219),M=m("".charAt),$=m("".charCodeAt),W=m("".slice),createMethod=function(i){return function(s,u){var m,X,Y=_(j(s)),Z=v(u),ee=Y.length;return Z<0||Z>=ee?i?"":void 0:(m=$(Y,Z))<55296||m>56319||Z+1===ee||(X=$(Y,Z+1))<56320||X>57343?i?M(Y,Z):m:i?W(Y,Z,Z+2):X-56320+(m-55296<<10)+65536}};i.exports={codeAt:createMethod(!1),charAt:createMethod(!0)}},63405:(i,s,u)=>{var m=u(53385),v=u(95981),_=u(21899).String;i.exports=!!Object.getOwnPropertySymbols&&!v((function(){var i=Symbol();return!_(i)||!(Object(i)instanceof Symbol)||!Symbol.sham&&m&&m<41}))},29630:(i,s,u)=>{var m=u(78834),v=u(626),_=u(99813),j=u(95929);i.exports=function(){var i=v("Symbol"),s=i&&i.prototype,u=s&&s.valueOf,M=_("toPrimitive");s&&!s[M]&&j(s,M,(function(i){return m(u,this)}),{arity:1})}},32087:(i,s,u)=>{var m=u(626),v=u(95329),_=m("Symbol"),j=_.keyFor,M=v(_.prototype.valueOf);i.exports=_.isRegisteredSymbol||function isRegisteredSymbol(i){try{return void 0!==j(M(i))}catch(i){return!1}}},96559:(i,s,u)=>{for(var m=u(68726),v=u(626),_=u(95329),j=u(56664),M=u(99813),$=v("Symbol"),W=$.isWellKnownSymbol,X=v("Object","getOwnPropertyNames"),Y=_($.prototype.valueOf),Z=m("wks"),ee=0,ie=X($),ae=ie.length;ee{var m=u(63405);i.exports=m&&!!Symbol.for&&!!Symbol.keyFor},59413:(i,s,u)=>{var m=u(62435),v=Math.max,_=Math.min;i.exports=function(i,s){var u=m(i);return u<0?v(u+s,0):_(u,s)}},74529:(i,s,u)=>{var m=u(37026),v=u(48219);i.exports=function(i){return m(v(i))}},62435:(i,s,u)=>{var m=u(35331);i.exports=function(i){var s=+i;return s!=s||0===s?0:m(s)}},43057:(i,s,u)=>{var m=u(62435),v=Math.min;i.exports=function(i){return i>0?v(m(i),9007199254740991):0}},89678:(i,s,u)=>{var m=u(48219),v=Object;i.exports=function(i){return v(m(i))}},46935:(i,s,u)=>{var m=u(78834),v=u(10941),_=u(56664),j=u(14229),M=u(39811),$=u(99813),W=TypeError,X=$("toPrimitive");i.exports=function(i,s){if(!v(i)||_(i))return i;var u,$=j(i,X);if($){if(void 0===s&&(s="default"),u=m($,i,s),!v(u)||_(u))return u;throw W("Can't convert object to primitive value")}return void 0===s&&(s="number"),M(i,s)}},83894:(i,s,u)=>{var m=u(46935),v=u(56664);i.exports=function(i){var s=m(i,"string");return v(s)?s:s+""}},22885:(i,s,u)=>{var m={};m[u(99813)("toStringTag")]="z",i.exports="[object z]"===String(m)},85803:(i,s,u)=>{var m=u(9697),v=String;i.exports=function(i){if("Symbol"===m(i))throw TypeError("Cannot convert a Symbol value to a string");return v(i)}},69826:i=>{var s=String;i.exports=function(i){try{return s(i)}catch(i){return"Object"}}},99418:(i,s,u)=>{var m=u(95329),v=0,_=Math.random(),j=m(1..toString);i.exports=function(i){return"Symbol("+(void 0===i?"":i)+")_"+j(++v+_,36)}},32302:(i,s,u)=>{var m=u(63405);i.exports=m&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},83937:(i,s,u)=>{var m=u(55746),v=u(95981);i.exports=m&&v((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},47093:(i,s,u)=>{var m=u(21899),v=u(57475),_=m.WeakMap;i.exports=v(_)&&/native code/.test(String(_))},73464:(i,s,u)=>{var m=u(54058),v=u(90953),_=u(11477),j=u(65988).f;i.exports=function(i){var s=m.Symbol||(m.Symbol={});v(s,i)||j(s,i,{value:_.f(i)})}},11477:(i,s,u)=>{var m=u(99813);s.f=m},99813:(i,s,u)=>{var m=u(21899),v=u(68726),_=u(90953),j=u(99418),M=u(63405),$=u(32302),W=m.Symbol,X=v("wks"),Y=$?W.for||W:W&&W.withoutSetter||j;i.exports=function(i){return _(X,i)||(X[i]=M&&_(W,i)?W[i]:Y("Symbol."+i)),X[i]}},85906:(i,s,u)=>{"use strict";var m=u(76887),v=u(95981),_=u(1052),j=u(10941),M=u(89678),$=u(10623),W=u(66796),X=u(55449),Y=u(64692),Z=u(50568),ee=u(99813),ie=u(53385),ae=ee("isConcatSpreadable"),ce=ie>=51||!v((function(){var i=[];return i[ae]=!1,i.concat()[0]!==i})),isConcatSpreadable=function(i){if(!j(i))return!1;var s=i[ae];return void 0!==s?!!s:_(i)};m({target:"Array",proto:!0,arity:1,forced:!ce||!Z("concat")},{concat:function concat(i){var s,u,m,v,_,j=M(this),Z=Y(j,0),ee=0;for(s=-1,m=arguments.length;s{"use strict";var m=u(76887),v=u(3610).filter;m({target:"Array",proto:!0,forced:!u(50568)("filter")},{filter:function filter(i){return v(this,i,arguments.length>1?arguments[1]:void 0)}})},2437:(i,s,u)=>{"use strict";var m=u(76887),v=u(56837);m({target:"Array",proto:!0,forced:[].forEach!=v},{forEach:v})},99076:(i,s,u)=>{"use strict";var m=u(76887),v=u(97484),_=u(31692).indexOf,j=u(34194),M=v([].indexOf),$=!!M&&1/M([1],1,-0)<0;m({target:"Array",proto:!0,forced:$||!j("indexOf")},{indexOf:function indexOf(i){var s=arguments.length>1?arguments[1]:void 0;return $?M(this,i,s)||0:_(this,i,s)}})},66274:(i,s,u)=>{"use strict";var m=u(74529),v=u(18479),_=u(12077),j=u(45402),M=u(65988).f,$=u(75105),W=u(23538),X=u(82529),Y=u(55746),Z="Array Iterator",ee=j.set,ie=j.getterFor(Z);i.exports=$(Array,"Array",(function(i,s){ee(this,{type:Z,target:m(i),index:0,kind:s})}),(function(){var i=ie(this),s=i.target,u=i.kind,m=i.index++;return!s||m>=s.length?(i.target=void 0,W(void 0,!0)):W("keys"==u?m:"values"==u?s[m]:[m,s[m]],!1)}),"values");var ae=_.Arguments=_.Array;if(v("keys"),v("values"),v("entries"),!X&&Y&&"values"!==ae.name)try{M(ae,"name",{value:"values"})}catch(i){}},48528:(i,s,u)=>{"use strict";var m=u(76887),v=u(89678),_=u(10623),j=u(89779),M=u(66796);m({target:"Array",proto:!0,arity:1,forced:u(95981)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(i){return i instanceof TypeError}}()},{push:function push(i){var s=v(this),u=_(s),m=arguments.length;M(u+m);for(var $=0;${},73381:(i,s,u)=>{var m=u(76887),v=u(98308);m({target:"Function",proto:!0,forced:Function.bind!==v},{bind:v})},32619:(i,s,u)=>{var m=u(76887),v=u(626),_=u(79730),j=u(78834),M=u(95329),$=u(95981),W=u(57475),X=u(56664),Y=u(93765),Z=u(33323),ee=u(63405),ie=String,ae=v("JSON","stringify"),ce=M(/./.exec),le=M("".charAt),pe=M("".charCodeAt),de=M("".replace),fe=M(1..toString),ye=/[\uD800-\uDFFF]/g,be=/^[\uD800-\uDBFF]$/,_e=/^[\uDC00-\uDFFF]$/,we=!ee||$((function(){var i=v("Symbol")();return"[null]"!=ae([i])||"{}"!=ae({a:i})||"{}"!=ae(Object(i))})),Se=$((function(){return'"\\udf06\\ud834"'!==ae("\udf06\ud834")||'"\\udead"'!==ae("\udead")})),stringifyWithSymbolsFix=function(i,s){var u=Y(arguments),m=Z(s);if(W(m)||void 0!==i&&!X(i))return u[1]=function(i,s){if(W(m)&&(s=j(m,this,ie(i),s)),!X(s))return s},_(ae,null,u)},fixIllFormed=function(i,s,u){var m=le(u,s-1),v=le(u,s+1);return ce(be,i)&&!ce(_e,v)||ce(_e,i)&&!ce(be,m)?"\\u"+fe(pe(i,0),16):i};ae&&m({target:"JSON",stat:!0,arity:3,forced:we||Se},{stringify:function stringify(i,s,u){var m=Y(arguments),v=_(we?stringifyWithSymbolsFix:ae,null,m);return Se&&"string"==typeof v?de(v,ye,fixIllFormed):v}})},69120:(i,s,u)=>{var m=u(21899);u(90904)(m.JSON,"JSON",!0)},79413:()=>{},49221:(i,s,u)=>{var m=u(76887),v=u(24420);m({target:"Object",stat:!0,arity:2,forced:Object.assign!==v},{assign:v})},74979:(i,s,u)=>{var m=u(76887),v=u(55746),_=u(59938).f;m({target:"Object",stat:!0,forced:Object.defineProperties!==_,sham:!v},{defineProperties:_})},86450:(i,s,u)=>{var m=u(76887),v=u(55746),_=u(65988).f;m({target:"Object",stat:!0,forced:Object.defineProperty!==_,sham:!v},{defineProperty:_})},46924:(i,s,u)=>{var m=u(76887),v=u(95981),_=u(74529),j=u(49677).f,M=u(55746);m({target:"Object",stat:!0,forced:!M||v((function(){j(1)})),sham:!M},{getOwnPropertyDescriptor:function getOwnPropertyDescriptor(i,s){return j(_(i),s)}})},88482:(i,s,u)=>{var m=u(76887),v=u(55746),_=u(31136),j=u(74529),M=u(49677),$=u(55449);m({target:"Object",stat:!0,sham:!v},{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(i){for(var s,u,m=j(i),v=M.f,W=_(m),X={},Y=0;W.length>Y;)void 0!==(u=v(m,s=W[Y++]))&&$(X,s,u);return X}})},37144:(i,s,u)=>{var m=u(76887),v=u(63405),_=u(95981),j=u(87857),M=u(89678);m({target:"Object",stat:!0,forced:!v||_((function(){j.f(1)}))},{getOwnPropertySymbols:function getOwnPropertySymbols(i){var s=j.f;return s?s(M(i)):[]}})},21724:(i,s,u)=>{var m=u(76887),v=u(89678),_=u(14771);m({target:"Object",stat:!0,forced:u(95981)((function(){_(1)}))},{keys:function keys(i){return _(v(i))}})},55967:()=>{},1502:()=>{},77971:(i,s,u)=>{"use strict";var m=u(64620).charAt,v=u(85803),_=u(45402),j=u(75105),M=u(23538),$="String Iterator",W=_.set,X=_.getterFor($);j(String,"String",(function(i){W(this,{type:$,string:v(i),index:0})}),(function next(){var i,s=X(this),u=s.string,v=s.index;return v>=u.length?M(void 0,!0):(i=m(u,v),s.index+=i.length,M(i,!1))}))},8555:(i,s,u)=>{u(73464)("asyncIterator")},48616:(i,s,u)=>{"use strict";var m=u(76887),v=u(21899),_=u(78834),j=u(95329),M=u(82529),$=u(55746),W=u(63405),X=u(95981),Y=u(90953),Z=u(7046),ee=u(96059),ie=u(74529),ae=u(83894),ce=u(85803),le=u(31887),pe=u(29290),de=u(14771),fe=u(10946),ye=u(684),be=u(87857),_e=u(49677),we=u(65988),Se=u(59938),xe=u(36760),Pe=u(95929),Ie=u(29202),Te=u(68726),Re=u(44262),qe=u(27748),ze=u(99418),Ve=u(99813),We=u(11477),He=u(73464),Xe=u(29630),Ye=u(90904),Qe=u(45402),et=u(3610).forEach,tt=Re("hidden"),rt="Symbol",nt="prototype",ot=Qe.set,it=Qe.getterFor(rt),at=Object[nt],st=v.Symbol,ct=st&&st[nt],lt=v.TypeError,ut=v.QObject,pt=_e.f,ht=we.f,dt=ye.f,mt=xe.f,yt=j([].push),gt=Te("symbols"),vt=Te("op-symbols"),bt=Te("wks"),_t=!ut||!ut[nt]||!ut[nt].findChild,wt=$&&X((function(){return 7!=pe(ht({},"a",{get:function(){return ht(this,"a",{value:7}).a}})).a}))?function(i,s,u){var m=pt(at,s);m&&delete at[s],ht(i,s,u),m&&i!==at&&ht(at,s,m)}:ht,wrap=function(i,s){var u=gt[i]=pe(ct);return ot(u,{type:rt,tag:i,description:s}),$||(u.description=s),u},Et=function defineProperty(i,s,u){i===at&&Et(vt,s,u),ee(i);var m=ae(s);return ee(u),Y(gt,m)?(u.enumerable?(Y(i,tt)&&i[tt][m]&&(i[tt][m]=!1),u=pe(u,{enumerable:le(0,!1)})):(Y(i,tt)||ht(i,tt,le(1,{})),i[tt][m]=!0),wt(i,m,u)):ht(i,m,u)},St=function defineProperties(i,s){ee(i);var u=ie(s),m=de(u).concat($getOwnPropertySymbols(u));return et(m,(function(s){$&&!_(xt,u,s)||Et(i,s,u[s])})),i},xt=function propertyIsEnumerable(i){var s=ae(i),u=_(mt,this,s);return!(this===at&&Y(gt,s)&&!Y(vt,s))&&(!(u||!Y(this,s)||!Y(gt,s)||Y(this,tt)&&this[tt][s])||u)},Ot=function getOwnPropertyDescriptor(i,s){var u=ie(i),m=ae(s);if(u!==at||!Y(gt,m)||Y(vt,m)){var v=pt(u,m);return!v||!Y(gt,m)||Y(u,tt)&&u[tt][m]||(v.enumerable=!0),v}},kt=function getOwnPropertyNames(i){var s=dt(ie(i)),u=[];return et(s,(function(i){Y(gt,i)||Y(qe,i)||yt(u,i)})),u},$getOwnPropertySymbols=function(i){var s=i===at,u=dt(s?vt:ie(i)),m=[];return et(u,(function(i){!Y(gt,i)||s&&!Y(at,i)||yt(m,gt[i])})),m};W||(Pe(ct=(st=function Symbol(){if(Z(ct,this))throw lt("Symbol is not a constructor");var i=arguments.length&&void 0!==arguments[0]?ce(arguments[0]):void 0,s=ze(i),setter=function(i){this===at&&_(setter,vt,i),Y(this,tt)&&Y(this[tt],s)&&(this[tt][s]=!1),wt(this,s,le(1,i))};return $&&_t&&wt(at,s,{configurable:!0,set:setter}),wrap(s,i)})[nt],"toString",(function toString(){return it(this).tag})),Pe(st,"withoutSetter",(function(i){return wrap(ze(i),i)})),xe.f=xt,we.f=Et,Se.f=St,_e.f=Ot,fe.f=ye.f=kt,be.f=$getOwnPropertySymbols,We.f=function(i){return wrap(Ve(i),i)},$&&(Ie(ct,"description",{configurable:!0,get:function description(){return it(this).description}}),M||Pe(at,"propertyIsEnumerable",xt,{unsafe:!0}))),m({global:!0,constructor:!0,wrap:!0,forced:!W,sham:!W},{Symbol:st}),et(de(bt),(function(i){He(i)})),m({target:rt,stat:!0,forced:!W},{useSetter:function(){_t=!0},useSimple:function(){_t=!1}}),m({target:"Object",stat:!0,forced:!W,sham:!$},{create:function create(i,s){return void 0===s?pe(i):St(pe(i),s)},defineProperty:Et,defineProperties:St,getOwnPropertyDescriptor:Ot}),m({target:"Object",stat:!0,forced:!W},{getOwnPropertyNames:kt}),Xe(),Ye(st,rt),qe[tt]=!0},52615:()=>{},64523:(i,s,u)=>{var m=u(76887),v=u(626),_=u(90953),j=u(85803),M=u(68726),$=u(34680),W=M("string-to-symbol-registry"),X=M("symbol-to-string-registry");m({target:"Symbol",stat:!0,forced:!$},{for:function(i){var s=j(i);if(_(W,s))return W[s];var u=v("Symbol")(s);return W[s]=u,X[u]=s,u}})},21732:(i,s,u)=>{u(73464)("hasInstance")},35903:(i,s,u)=>{u(73464)("isConcatSpreadable")},1825:(i,s,u)=>{u(73464)("iterator")},35824:(i,s,u)=>{u(48616),u(64523),u(38608),u(32619),u(37144)},38608:(i,s,u)=>{var m=u(76887),v=u(90953),_=u(56664),j=u(69826),M=u(68726),$=u(34680),W=M("symbol-to-string-registry");m({target:"Symbol",stat:!0,forced:!$},{keyFor:function keyFor(i){if(!_(i))throw TypeError(j(i)+" is not a symbol");if(v(W,i))return W[i]}})},45915:(i,s,u)=>{u(73464)("matchAll")},28394:(i,s,u)=>{u(73464)("match")},61766:(i,s,u)=>{u(73464)("replace")},62737:(i,s,u)=>{u(73464)("search")},89911:(i,s,u)=>{u(73464)("species")},74315:(i,s,u)=>{u(73464)("split")},63131:(i,s,u)=>{var m=u(73464),v=u(29630);m("toPrimitive"),v()},64714:(i,s,u)=>{var m=u(626),v=u(73464),_=u(90904);v("toStringTag"),_(m("Symbol"),"Symbol")},70659:(i,s,u)=>{u(73464)("unscopables")},97522:(i,s,u)=>{var m=u(99813),v=u(65988).f,_=m("metadata"),j=Function.prototype;void 0===j[_]&&v(j,_,{value:null})},28783:(i,s,u)=>{u(73464)("asyncDispose")},43975:(i,s,u)=>{u(73464)("dispose")},97618:(i,s,u)=>{u(76887)({target:"Symbol",stat:!0},{isRegisteredSymbol:u(32087)})},22731:(i,s,u)=>{u(76887)({target:"Symbol",stat:!0,name:"isRegisteredSymbol"},{isRegistered:u(32087)})},6989:(i,s,u)=>{u(76887)({target:"Symbol",stat:!0,forced:!0},{isWellKnownSymbol:u(96559)})},85605:(i,s,u)=>{u(76887)({target:"Symbol",stat:!0,name:"isWellKnownSymbol",forced:!0},{isWellKnown:u(96559)})},65799:(i,s,u)=>{u(73464)("matcher")},31943:(i,s,u)=>{u(73464)("metadataKey")},45414:(i,s,u)=>{u(73464)("metadata")},46774:(i,s,u)=>{u(73464)("observable")},80620:(i,s,u)=>{u(73464)("patternMatch")},36172:(i,s,u)=>{u(73464)("replaceAll")},7634:(i,s,u)=>{u(66274);var m=u(63281),v=u(21899),_=u(9697),j=u(32029),M=u(12077),$=u(99813)("toStringTag");for(var W in m){var X=v[W],Y=X&&X.prototype;Y&&_(Y)!==$&&j(Y,$,W),M[W]=M.Array}},49216:(i,s,u)=>{var m=u(99324);i.exports=m},28196:(i,s,u)=>{var m=u(16246);i.exports=m},11955:(i,s,u)=>{var m=u(2480);i.exports=m},46279:(i,s,u)=>{u(7634);var m=u(9697),v=u(90953),_=u(7046),j=u(49216),M=Array.prototype,$={DOMTokenList:!0,NodeList:!0};i.exports=function(i){var s=i.forEach;return i===M||_(M,i)&&s===M.forEach||v($,m(i))?j:s}},19373:(i,s,u)=>{var m=u(34570);i.exports=m},52759:(i,s,u)=>{var m=u(93993);i.exports=m},63383:(i,s,u)=>{var m=u(45999);i.exports=m},57396:(i,s,u)=>{var m=u(7702);i.exports=m},41910:(i,s,u)=>{var m=u(48171);i.exports=m},79427:(i,s,u)=>{var m=u(286);i.exports=m},62857:(i,s,u)=>{var m=u(92766);i.exports=m},9534:(i,s,u)=>{var m=u(30498);i.exports=m},23059:(i,s,u)=>{var m=u(48494);i.exports=m},92547:(i,s,u)=>{var m=u(57473);u(7634),i.exports=m},46509:(i,s,u)=>{var m=u(24227);u(7634),i.exports=m},35774:(i,s,u)=>{var m=u(62978);i.exports=m},31905:function(){!function(i){!function(s){var u="URLSearchParams"in i,m="Symbol"in i&&"iterator"in Symbol,v="FileReader"in i&&"Blob"in i&&function(){try{return new Blob,!0}catch(i){return!1}}(),_="FormData"in i,j="ArrayBuffer"in i;if(j)var M=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],$=ArrayBuffer.isView||function(i){return i&&M.indexOf(Object.prototype.toString.call(i))>-1};function normalizeName(i){if("string"!=typeof i&&(i=String(i)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(i))throw new TypeError("Invalid character in header field name");return i.toLowerCase()}function normalizeValue(i){return"string"!=typeof i&&(i=String(i)),i}function iteratorFor(i){var s={next:function(){var s=i.shift();return{done:void 0===s,value:s}}};return m&&(s[Symbol.iterator]=function(){return s}),s}function Headers(i){this.map={},i instanceof Headers?i.forEach((function(i,s){this.append(s,i)}),this):Array.isArray(i)?i.forEach((function(i){this.append(i[0],i[1])}),this):i&&Object.getOwnPropertyNames(i).forEach((function(s){this.append(s,i[s])}),this)}function consumed(i){if(i.bodyUsed)return Promise.reject(new TypeError("Already read"));i.bodyUsed=!0}function fileReaderReady(i){return new Promise((function(s,u){i.onload=function(){s(i.result)},i.onerror=function(){u(i.error)}}))}function readBlobAsArrayBuffer(i){var s=new FileReader,u=fileReaderReady(s);return s.readAsArrayBuffer(i),u}function bufferClone(i){if(i.slice)return i.slice(0);var s=new Uint8Array(i.byteLength);return s.set(new Uint8Array(i)),s.buffer}function Body(){return this.bodyUsed=!1,this._initBody=function(i){this._bodyInit=i,i?"string"==typeof i?this._bodyText=i:v&&Blob.prototype.isPrototypeOf(i)?this._bodyBlob=i:_&&FormData.prototype.isPrototypeOf(i)?this._bodyFormData=i:u&&URLSearchParams.prototype.isPrototypeOf(i)?this._bodyText=i.toString():j&&v&&function isDataView(i){return i&&DataView.prototype.isPrototypeOf(i)}(i)?(this._bodyArrayBuffer=bufferClone(i.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):j&&(ArrayBuffer.prototype.isPrototypeOf(i)||$(i))?this._bodyArrayBuffer=bufferClone(i):this._bodyText=i=Object.prototype.toString.call(i):this._bodyText="",this.headers.get("content-type")||("string"==typeof i?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):u&&URLSearchParams.prototype.isPrototypeOf(i)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},v&&(this.blob=function(){var i=consumed(this);if(i)return i;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?consumed(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(readBlobAsArrayBuffer)}),this.text=function(){var i=consumed(this);if(i)return i;if(this._bodyBlob)return function readBlobAsText(i){var s=new FileReader,u=fileReaderReady(s);return s.readAsText(i),u}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function readArrayBufferAsText(i){for(var s=new Uint8Array(i),u=new Array(s.length),m=0;m-1?s:i}(s.method||this.method||"GET"),this.mode=s.mode||this.mode||null,this.signal=s.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&u)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(u)}function decode(i){var s=new FormData;return i.trim().split("&").forEach((function(i){if(i){var u=i.split("="),m=u.shift().replace(/\+/g," "),v=u.join("=").replace(/\+/g," ");s.append(decodeURIComponent(m),decodeURIComponent(v))}})),s}function Response(i,s){s||(s={}),this.type="default",this.status=void 0===s.status?200:s.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in s?s.statusText:"OK",this.headers=new Headers(s.headers),this.url=s.url||"",this._initBody(i)}Request.prototype.clone=function(){return new Request(this,{body:this._bodyInit})},Body.call(Request.prototype),Body.call(Response.prototype),Response.prototype.clone=function(){return new Response(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new Headers(this.headers),url:this.url})},Response.error=function(){var i=new Response(null,{status:0,statusText:""});return i.type="error",i};var X=[301,302,303,307,308];Response.redirect=function(i,s){if(-1===X.indexOf(s))throw new RangeError("Invalid status code");return new Response(null,{status:s,headers:{location:i}})},s.DOMException=i.DOMException;try{new s.DOMException}catch(i){s.DOMException=function(i,s){this.message=i,this.name=s;var u=Error(i);this.stack=u.stack},s.DOMException.prototype=Object.create(Error.prototype),s.DOMException.prototype.constructor=s.DOMException}function fetch(i,u){return new Promise((function(m,_){var j=new Request(i,u);if(j.signal&&j.signal.aborted)return _(new s.DOMException("Aborted","AbortError"));var M=new XMLHttpRequest;function abortXhr(){M.abort()}M.onload=function(){var i,s,u={status:M.status,statusText:M.statusText,headers:(i=M.getAllResponseHeaders()||"",s=new Headers,i.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(i){var u=i.split(":"),m=u.shift().trim();if(m){var v=u.join(":").trim();s.append(m,v)}})),s)};u.url="responseURL"in M?M.responseURL:u.headers.get("X-Request-URL");var v="response"in M?M.response:M.responseText;m(new Response(v,u))},M.onerror=function(){_(new TypeError("Network request failed"))},M.ontimeout=function(){_(new TypeError("Network request failed"))},M.onabort=function(){_(new s.DOMException("Aborted","AbortError"))},M.open(j.method,j.url,!0),"include"===j.credentials?M.withCredentials=!0:"omit"===j.credentials&&(M.withCredentials=!1),"responseType"in M&&v&&(M.responseType="blob"),j.headers.forEach((function(i,s){M.setRequestHeader(s,i)})),j.signal&&(j.signal.addEventListener("abort",abortXhr),M.onreadystatechange=function(){4===M.readyState&&j.signal.removeEventListener("abort",abortXhr)}),M.send(void 0===j._bodyInit?null:j._bodyInit)}))}fetch.polyfill=!0,i.fetch||(i.fetch=fetch,i.Headers=Headers,i.Request=Request,i.Response=Response),s.Headers=Headers,s.Request=Request,s.Response=Response,s.fetch=fetch,Object.defineProperty(s,"__esModule",{value:!0})}({})}("undefined"!=typeof self?self:this)},8269:function(i,s,u){var m;m=void 0!==u.g?u.g:this,i.exports=function(i){if(i.CSS&&i.CSS.escape)return i.CSS.escape;var cssEscape=function(i){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var s,u=String(i),m=u.length,v=-1,_="",j=u.charCodeAt(0);++v=1&&s<=31||127==s||0==v&&s>=48&&s<=57||1==v&&s>=48&&s<=57&&45==j?"\\"+s.toString(16)+" ":0==v&&1==m&&45==s||!(s>=128||45==s||95==s||s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122)?"\\"+u.charAt(v):u.charAt(v):_+="�";return _};return i.CSS||(i.CSS={}),i.CSS.escape=cssEscape,cssEscape}(m)},27698:(i,s,u)=>{"use strict";var m=u(48764).Buffer;function isSpecificValue(i){return i instanceof m||i instanceof Date||i instanceof RegExp}function cloneSpecificValue(i){if(i instanceof m){var s=m.alloc?m.alloc(i.length):new m(i.length);return i.copy(s),s}if(i instanceof Date)return new Date(i.getTime());if(i instanceof RegExp)return new RegExp(i);throw new Error("Unexpected situation")}function deepCloneArray(i){var s=[];return i.forEach((function(i,u){"object"==typeof i&&null!==i?Array.isArray(i)?s[u]=deepCloneArray(i):isSpecificValue(i)?s[u]=cloneSpecificValue(i):s[u]=v({},i):s[u]=i})),s}function safeGetProperty(i,s){return"__proto__"===s?void 0:i[s]}var v=i.exports=function(){if(arguments.length<1||"object"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var i,s,u=arguments[0];return Array.prototype.slice.call(arguments,1).forEach((function(m){"object"!=typeof m||null===m||Array.isArray(m)||Object.keys(m).forEach((function(_){return s=safeGetProperty(u,_),(i=safeGetProperty(m,_))===u?void 0:"object"!=typeof i||null===i?void(u[_]=i):Array.isArray(i)?void(u[_]=deepCloneArray(i)):isSpecificValue(i)?void(u[_]=cloneSpecificValue(i)):"object"!=typeof s||null===s||Array.isArray(s)?void(u[_]=v({},i)):void(u[_]=v(s,i))}))})),u}},9996:i=>{"use strict";var s=function isMergeableObject(i){return function isNonNullObject(i){return!!i&&"object"==typeof i}(i)&&!function isSpecial(i){var s=Object.prototype.toString.call(i);return"[object RegExp]"===s||"[object Date]"===s||function isReactElement(i){return i.$$typeof===u}(i)}(i)};var u="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function cloneUnlessOtherwiseSpecified(i,s){return!1!==s.clone&&s.isMergeableObject(i)?deepmerge(function emptyTarget(i){return Array.isArray(i)?[]:{}}(i),i,s):i}function defaultArrayMerge(i,s,u){return i.concat(s).map((function(i){return cloneUnlessOtherwiseSpecified(i,u)}))}function getKeys(i){return Object.keys(i).concat(function getEnumerableOwnPropertySymbols(i){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(i).filter((function(s){return Object.propertyIsEnumerable.call(i,s)})):[]}(i))}function propertyIsOnObject(i,s){try{return s in i}catch(i){return!1}}function mergeObject(i,s,u){var m={};return u.isMergeableObject(i)&&getKeys(i).forEach((function(s){m[s]=cloneUnlessOtherwiseSpecified(i[s],u)})),getKeys(s).forEach((function(v){(function propertyIsUnsafe(i,s){return propertyIsOnObject(i,s)&&!(Object.hasOwnProperty.call(i,s)&&Object.propertyIsEnumerable.call(i,s))})(i,v)||(propertyIsOnObject(i,v)&&u.isMergeableObject(s[v])?m[v]=function getMergeFunction(i,s){if(!s.customMerge)return deepmerge;var u=s.customMerge(i);return"function"==typeof u?u:deepmerge}(v,u)(i[v],s[v],u):m[v]=cloneUnlessOtherwiseSpecified(s[v],u))})),m}function deepmerge(i,u,m){(m=m||{}).arrayMerge=m.arrayMerge||defaultArrayMerge,m.isMergeableObject=m.isMergeableObject||s,m.cloneUnlessOtherwiseSpecified=cloneUnlessOtherwiseSpecified;var v=Array.isArray(u);return v===Array.isArray(i)?v?m.arrayMerge(i,u,m):mergeObject(i,u,m):cloneUnlessOtherwiseSpecified(u,m)}deepmerge.all=function deepmergeAll(i,s){if(!Array.isArray(i))throw new Error("first argument should be an array");return i.reduce((function(i,u){return deepmerge(i,u,s)}),{})};var m=deepmerge;i.exports=m},27856:function(i){i.exports=function(){"use strict";const{entries:i,setPrototypeOf:s,isFrozen:u,getPrototypeOf:m,getOwnPropertyDescriptor:v}=Object;let{freeze:_,seal:j,create:M}=Object,{apply:$,construct:W}="undefined"!=typeof Reflect&&Reflect;$||($=function apply(i,s,u){return i.apply(s,u)}),_||(_=function freeze(i){return i}),j||(j=function seal(i){return i}),W||(W=function construct(i,s){return new i(...s)});const X=unapply(Array.prototype.forEach),Y=unapply(Array.prototype.pop),Z=unapply(Array.prototype.push),ee=unapply(String.prototype.toLowerCase),ie=unapply(String.prototype.toString),ae=unapply(String.prototype.match),ce=unapply(String.prototype.replace),le=unapply(String.prototype.indexOf),pe=unapply(String.prototype.trim),de=unapply(RegExp.prototype.test),fe=unconstruct(TypeError);function unapply(i){return function(s){for(var u=arguments.length,m=new Array(u>1?u-1:0),v=1;v/gm),We=j(/\${[\w\W]*}/gm),He=j(/^data-[\-\w.\u00B7-\uFFFF]/),Xe=j(/^aria-[\-\w]+$/),Ye=j(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Qe=j(/^(?:\w+script|data):/i),et=j(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),tt=j(/^html$/i);var rt=Object.freeze({__proto__:null,MUSTACHE_EXPR:ze,ERB_EXPR:Ve,TMPLIT_EXPR:We,DATA_ATTR:He,ARIA_ATTR:Xe,IS_ALLOWED_URI:Ye,IS_SCRIPT_OR_DATA:Qe,ATTR_WHITESPACE:et,DOCTYPE_NAME:tt});const getGlobal=()=>"undefined"==typeof window?null:window,nt=function _createTrustedTypesPolicy(i,s){if("object"!=typeof i||"function"!=typeof i.createPolicy)return null;let u=null;const m="data-tt-policy-suffix";s&&s.hasAttribute(m)&&(u=s.getAttribute(m));const v="dompurify"+(u?"#"+u:"");try{return i.createPolicy(v,{createHTML:i=>i,createScriptURL:i=>i})}catch(i){return console.warn("TrustedTypes policy "+v+" could not be created."),null}};function createDOMPurify(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:getGlobal();const DOMPurify=i=>createDOMPurify(i);if(DOMPurify.version="3.0.5",DOMPurify.removed=[],!s||!s.document||9!==s.document.nodeType)return DOMPurify.isSupported=!1,DOMPurify;const u=s.document,m=u.currentScript;let{document:v}=s;const{DocumentFragment:j,HTMLTemplateElement:M,Node:$,Element:W,NodeFilter:ze,NamedNodeMap:Ve=s.NamedNodeMap||s.MozNamedAttrMap,HTMLFormElement:We,DOMParser:He,trustedTypes:Xe}=s,Qe=W.prototype,et=lookupGetter(Qe,"cloneNode"),ot=lookupGetter(Qe,"nextSibling"),it=lookupGetter(Qe,"childNodes"),at=lookupGetter(Qe,"parentNode");if("function"==typeof M){const i=v.createElement("template");i.content&&i.content.ownerDocument&&(v=i.content.ownerDocument)}let st,ct="";const{implementation:lt,createNodeIterator:ut,createDocumentFragment:pt,getElementsByTagName:ht}=v,{importNode:dt}=u;let mt={};DOMPurify.isSupported="function"==typeof i&&"function"==typeof at&<&&void 0!==lt.createHTMLDocument;const{MUSTACHE_EXPR:yt,ERB_EXPR:gt,TMPLIT_EXPR:vt,DATA_ATTR:bt,ARIA_ATTR:_t,IS_SCRIPT_OR_DATA:wt,ATTR_WHITESPACE:Et}=rt;let{IS_ALLOWED_URI:St}=rt,xt=null;const Ot=addToSet({},[...ye,...be,..._e,...Se,...Pe]);let kt=null;const At=addToSet({},[...Ie,...Te,...Re,...qe]);let Ct=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),jt=null,Pt=null,It=!0,Nt=!0,Tt=!1,Mt=!0,Rt=!1,Dt=!1,Bt=!1,Lt=!1,Ft=!1,qt=!1,$t=!1,Ut=!0,zt=!1;const Vt="user-content-";let Wt=!0,Kt=!1,Ht={},Jt=null;const Gt=addToSet({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Xt=null;const Yt=addToSet({},["audio","video","img","source","image","track"]);let Qt=null;const Zt=addToSet({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),er="http://www.w3.org/1998/Math/MathML",tr="http://www.w3.org/2000/svg",rr="http://www.w3.org/1999/xhtml";let nr=rr,ir=!1,ar=null;const sr=addToSet({},[er,tr,rr],ie);let cr;const lr=["application/xhtml+xml","text/html"],ur="text/html";let pr,dr=null;const fr=v.createElement("form"),mr=function isRegexOrFunction(i){return i instanceof RegExp||i instanceof Function},yr=function _parseConfig(i){if(!dr||dr!==i){if(i&&"object"==typeof i||(i={}),i=clone(i),cr=cr=-1===lr.indexOf(i.PARSER_MEDIA_TYPE)?ur:i.PARSER_MEDIA_TYPE,pr="application/xhtml+xml"===cr?ie:ee,xt="ALLOWED_TAGS"in i?addToSet({},i.ALLOWED_TAGS,pr):Ot,kt="ALLOWED_ATTR"in i?addToSet({},i.ALLOWED_ATTR,pr):At,ar="ALLOWED_NAMESPACES"in i?addToSet({},i.ALLOWED_NAMESPACES,ie):sr,Qt="ADD_URI_SAFE_ATTR"in i?addToSet(clone(Zt),i.ADD_URI_SAFE_ATTR,pr):Zt,Xt="ADD_DATA_URI_TAGS"in i?addToSet(clone(Yt),i.ADD_DATA_URI_TAGS,pr):Yt,Jt="FORBID_CONTENTS"in i?addToSet({},i.FORBID_CONTENTS,pr):Gt,jt="FORBID_TAGS"in i?addToSet({},i.FORBID_TAGS,pr):{},Pt="FORBID_ATTR"in i?addToSet({},i.FORBID_ATTR,pr):{},Ht="USE_PROFILES"in i&&i.USE_PROFILES,It=!1!==i.ALLOW_ARIA_ATTR,Nt=!1!==i.ALLOW_DATA_ATTR,Tt=i.ALLOW_UNKNOWN_PROTOCOLS||!1,Mt=!1!==i.ALLOW_SELF_CLOSE_IN_ATTR,Rt=i.SAFE_FOR_TEMPLATES||!1,Dt=i.WHOLE_DOCUMENT||!1,Ft=i.RETURN_DOM||!1,qt=i.RETURN_DOM_FRAGMENT||!1,$t=i.RETURN_TRUSTED_TYPE||!1,Lt=i.FORCE_BODY||!1,Ut=!1!==i.SANITIZE_DOM,zt=i.SANITIZE_NAMED_PROPS||!1,Wt=!1!==i.KEEP_CONTENT,Kt=i.IN_PLACE||!1,St=i.ALLOWED_URI_REGEXP||Ye,nr=i.NAMESPACE||rr,Ct=i.CUSTOM_ELEMENT_HANDLING||{},i.CUSTOM_ELEMENT_HANDLING&&mr(i.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ct.tagNameCheck=i.CUSTOM_ELEMENT_HANDLING.tagNameCheck),i.CUSTOM_ELEMENT_HANDLING&&mr(i.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ct.attributeNameCheck=i.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),i.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof i.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ct.allowCustomizedBuiltInElements=i.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Rt&&(Nt=!1),qt&&(Ft=!0),Ht&&(xt=addToSet({},[...Pe]),kt=[],!0===Ht.html&&(addToSet(xt,ye),addToSet(kt,Ie)),!0===Ht.svg&&(addToSet(xt,be),addToSet(kt,Te),addToSet(kt,qe)),!0===Ht.svgFilters&&(addToSet(xt,_e),addToSet(kt,Te),addToSet(kt,qe)),!0===Ht.mathMl&&(addToSet(xt,Se),addToSet(kt,Re),addToSet(kt,qe))),i.ADD_TAGS&&(xt===Ot&&(xt=clone(xt)),addToSet(xt,i.ADD_TAGS,pr)),i.ADD_ATTR&&(kt===At&&(kt=clone(kt)),addToSet(kt,i.ADD_ATTR,pr)),i.ADD_URI_SAFE_ATTR&&addToSet(Qt,i.ADD_URI_SAFE_ATTR,pr),i.FORBID_CONTENTS&&(Jt===Gt&&(Jt=clone(Jt)),addToSet(Jt,i.FORBID_CONTENTS,pr)),Wt&&(xt["#text"]=!0),Dt&&addToSet(xt,["html","head","body"]),xt.table&&(addToSet(xt,["tbody"]),delete jt.tbody),i.TRUSTED_TYPES_POLICY){if("function"!=typeof i.TRUSTED_TYPES_POLICY.createHTML)throw fe('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof i.TRUSTED_TYPES_POLICY.createScriptURL)throw fe('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');st=i.TRUSTED_TYPES_POLICY,ct=st.createHTML("")}else void 0===st&&(st=nt(Xe,m)),null!==st&&"string"==typeof ct&&(ct=st.createHTML(""));_&&_(i),dr=i}},gr=addToSet({},["mi","mo","mn","ms","mtext"]),vr=addToSet({},["foreignobject","desc","title","annotation-xml"]),br=addToSet({},["title","style","font","a","script"]),_r=addToSet({},be);addToSet(_r,_e),addToSet(_r,we);const wr=addToSet({},Se);addToSet(wr,xe);const Er=function _checkValidNamespace(i){let s=at(i);s&&s.tagName||(s={namespaceURI:nr,tagName:"template"});const u=ee(i.tagName),m=ee(s.tagName);return!!ar[i.namespaceURI]&&(i.namespaceURI===tr?s.namespaceURI===rr?"svg"===u:s.namespaceURI===er?"svg"===u&&("annotation-xml"===m||gr[m]):Boolean(_r[u]):i.namespaceURI===er?s.namespaceURI===rr?"math"===u:s.namespaceURI===tr?"math"===u&&vr[m]:Boolean(wr[u]):i.namespaceURI===rr?!(s.namespaceURI===tr&&!vr[m])&&!(s.namespaceURI===er&&!gr[m])&&!wr[u]&&(br[u]||!_r[u]):!("application/xhtml+xml"!==cr||!ar[i.namespaceURI]))},Sr=function _forceRemove(i){Z(DOMPurify.removed,{element:i});try{i.parentNode.removeChild(i)}catch(s){i.remove()}},xr=function _removeAttribute(i,s){try{Z(DOMPurify.removed,{attribute:s.getAttributeNode(i),from:s})}catch(i){Z(DOMPurify.removed,{attribute:null,from:s})}if(s.removeAttribute(i),"is"===i&&!kt[i])if(Ft||qt)try{Sr(s)}catch(i){}else try{s.setAttribute(i,"")}catch(i){}},Or=function _initDocument(i){let s,u;if(Lt)i=""+i;else{const s=ae(i,/^[\r\n\t ]+/);u=s&&s[0]}"application/xhtml+xml"===cr&&nr===rr&&(i=''+i+"");const m=st?st.createHTML(i):i;if(nr===rr)try{s=(new He).parseFromString(m,cr)}catch(i){}if(!s||!s.documentElement){s=lt.createDocument(nr,"template",null);try{s.documentElement.innerHTML=ir?ct:m}catch(i){}}const _=s.body||s.documentElement;return i&&u&&_.insertBefore(v.createTextNode(u),_.childNodes[0]||null),nr===rr?ht.call(s,Dt?"html":"body")[0]:Dt?s.documentElement:_},kr=function _createIterator(i){return ut.call(i.ownerDocument||i,i,ze.SHOW_ELEMENT|ze.SHOW_COMMENT|ze.SHOW_TEXT,null,!1)},Ar=function _isClobbered(i){return i instanceof We&&("string"!=typeof i.nodeName||"string"!=typeof i.textContent||"function"!=typeof i.removeChild||!(i.attributes instanceof Ve)||"function"!=typeof i.removeAttribute||"function"!=typeof i.setAttribute||"string"!=typeof i.namespaceURI||"function"!=typeof i.insertBefore||"function"!=typeof i.hasChildNodes)},Cr=function _isNode(i){return"object"==typeof $?i instanceof $:i&&"object"==typeof i&&"number"==typeof i.nodeType&&"string"==typeof i.nodeName},jr=function _executeHook(i,s,u){mt[i]&&X(mt[i],(i=>{i.call(DOMPurify,s,u,dr)}))},Pr=function _sanitizeElements(i){let s;if(jr("beforeSanitizeElements",i,null),Ar(i))return Sr(i),!0;const u=pr(i.nodeName);if(jr("uponSanitizeElement",i,{tagName:u,allowedTags:xt}),i.hasChildNodes()&&!Cr(i.firstElementChild)&&(!Cr(i.content)||!Cr(i.content.firstElementChild))&&de(/<[/\w]/g,i.innerHTML)&&de(/<[/\w]/g,i.textContent))return Sr(i),!0;if(!xt[u]||jt[u]){if(!jt[u]&&Nr(u)){if(Ct.tagNameCheck instanceof RegExp&&de(Ct.tagNameCheck,u))return!1;if(Ct.tagNameCheck instanceof Function&&Ct.tagNameCheck(u))return!1}if(Wt&&!Jt[u]){const s=at(i)||i.parentNode,u=it(i)||i.childNodes;if(u&&s)for(let m=u.length-1;m>=0;--m)s.insertBefore(et(u[m],!0),ot(i))}return Sr(i),!0}return i instanceof W&&!Er(i)?(Sr(i),!0):"noscript"!==u&&"noembed"!==u&&"noframes"!==u||!de(/<\/no(script|embed|frames)/i,i.innerHTML)?(Rt&&3===i.nodeType&&(s=i.textContent,s=ce(s,yt," "),s=ce(s,gt," "),s=ce(s,vt," "),i.textContent!==s&&(Z(DOMPurify.removed,{element:i.cloneNode()}),i.textContent=s)),jr("afterSanitizeElements",i,null),!1):(Sr(i),!0)},Ir=function _isValidAttribute(i,s,u){if(Ut&&("id"===s||"name"===s)&&(u in v||u in fr))return!1;if(Nt&&!Pt[s]&&de(bt,s));else if(It&&de(_t,s));else if(!kt[s]||Pt[s]){if(!(Nr(i)&&(Ct.tagNameCheck instanceof RegExp&&de(Ct.tagNameCheck,i)||Ct.tagNameCheck instanceof Function&&Ct.tagNameCheck(i))&&(Ct.attributeNameCheck instanceof RegExp&&de(Ct.attributeNameCheck,s)||Ct.attributeNameCheck instanceof Function&&Ct.attributeNameCheck(s))||"is"===s&&Ct.allowCustomizedBuiltInElements&&(Ct.tagNameCheck instanceof RegExp&&de(Ct.tagNameCheck,u)||Ct.tagNameCheck instanceof Function&&Ct.tagNameCheck(u))))return!1}else if(Qt[s]);else if(de(St,ce(u,Et,"")));else if("src"!==s&&"xlink:href"!==s&&"href"!==s||"script"===i||0!==le(u,"data:")||!Xt[i])if(Tt&&!de(wt,ce(u,Et,"")));else if(u)return!1;return!0},Nr=function _basicCustomElementTest(i){return i.indexOf("-")>0},Tr=function _sanitizeAttributes(i){let s,u,m,v;jr("beforeSanitizeAttributes",i,null);const{attributes:_}=i;if(!_)return;const j={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:kt};for(v=_.length;v--;){s=_[v];const{name:M,namespaceURI:$}=s;if(u="value"===M?s.value:pe(s.value),m=pr(M),j.attrName=m,j.attrValue=u,j.keepAttr=!0,j.forceKeepAttr=void 0,jr("uponSanitizeAttribute",i,j),u=j.attrValue,j.forceKeepAttr)continue;if(xr(M,i),!j.keepAttr)continue;if(!Mt&&de(/\/>/i,u)){xr(M,i);continue}Rt&&(u=ce(u,yt," "),u=ce(u,gt," "),u=ce(u,vt," "));const W=pr(i.nodeName);if(Ir(W,m,u)){if(!zt||"id"!==m&&"name"!==m||(xr(M,i),u=Vt+u),st&&"object"==typeof Xe&&"function"==typeof Xe.getAttributeType)if($);else switch(Xe.getAttributeType(W,m)){case"TrustedHTML":u=st.createHTML(u);break;case"TrustedScriptURL":u=st.createScriptURL(u)}try{$?i.setAttributeNS($,M,u):i.setAttribute(M,u),Y(DOMPurify.removed)}catch(i){}}}jr("afterSanitizeAttributes",i,null)},Mr=function _sanitizeShadowDOM(i){let s;const u=kr(i);for(jr("beforeSanitizeShadowDOM",i,null);s=u.nextNode();)jr("uponSanitizeShadowNode",s,null),Pr(s)||(s.content instanceof j&&_sanitizeShadowDOM(s.content),Tr(s));jr("afterSanitizeShadowDOM",i,null)};return DOMPurify.sanitize=function(i){let s,m,v,_,M=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(ir=!i,ir&&(i="\x3c!--\x3e"),"string"!=typeof i&&!Cr(i)){if("function"!=typeof i.toString)throw fe("toString is not a function");if("string"!=typeof(i=i.toString()))throw fe("dirty is not a string, aborting")}if(!DOMPurify.isSupported)return i;if(Bt||yr(M),DOMPurify.removed=[],"string"==typeof i&&(Kt=!1),Kt){if(i.nodeName){const s=pr(i.nodeName);if(!xt[s]||jt[s])throw fe("root node is forbidden and cannot be sanitized in-place")}}else if(i instanceof $)s=Or("\x3c!----\x3e"),m=s.ownerDocument.importNode(i,!0),1===m.nodeType&&"BODY"===m.nodeName||"HTML"===m.nodeName?s=m:s.appendChild(m);else{if(!Ft&&!Rt&&!Dt&&-1===i.indexOf("<"))return st&&$t?st.createHTML(i):i;if(s=Or(i),!s)return Ft?null:$t?ct:""}s&&Lt&&Sr(s.firstChild);const W=kr(Kt?i:s);for(;v=W.nextNode();)Pr(v)||(v.content instanceof j&&Mr(v.content),Tr(v));if(Kt)return i;if(Ft){if(qt)for(_=pt.call(s.ownerDocument);s.firstChild;)_.appendChild(s.firstChild);else _=s;return(kt.shadowroot||kt.shadowrootmode)&&(_=dt.call(u,_,!0)),_}let X=Dt?s.outerHTML:s.innerHTML;return Dt&&xt["!doctype"]&&s.ownerDocument&&s.ownerDocument.doctype&&s.ownerDocument.doctype.name&&de(tt,s.ownerDocument.doctype.name)&&(X="\n"+X),Rt&&(X=ce(X,yt," "),X=ce(X,gt," "),X=ce(X,vt," ")),st&&$t?st.createHTML(X):X},DOMPurify.setConfig=function(i){yr(i),Bt=!0},DOMPurify.clearConfig=function(){dr=null,Bt=!1},DOMPurify.isValidAttribute=function(i,s,u){dr||yr({});const m=pr(i),v=pr(s);return Ir(m,v,u)},DOMPurify.addHook=function(i,s){"function"==typeof s&&(mt[i]=mt[i]||[],Z(mt[i],s))},DOMPurify.removeHook=function(i){if(mt[i])return Y(mt[i])},DOMPurify.removeHooks=function(i){mt[i]&&(mt[i]=[])},DOMPurify.removeAllHooks=function(){mt={}},DOMPurify}return createDOMPurify()}()},69450:i=>{"use strict";class SubRange{constructor(i,s){this.low=i,this.high=s,this.length=1+s-i}overlaps(i){return!(this.highi.high)}touches(i){return!(this.high+1i.high)}add(i){return new SubRange(Math.min(this.low,i.low),Math.max(this.high,i.high))}subtract(i){return i.low<=this.low&&i.high>=this.high?[]:i.low>this.low&&i.highi+s.length),0)}add(i,s){var _add=i=>{for(var s=0;s{for(var s=0;s{for(var s=0;s{for(var u=s.low;u<=s.high;)i.push(u),u++;return i}),[])}subranges(){return this.ranges.map((i=>({low:i.low,high:i.high,length:1+i.high-i.low})))}}i.exports=DRange},17187:i=>{"use strict";var s,u="object"==typeof Reflect?Reflect:null,m=u&&"function"==typeof u.apply?u.apply:function ReflectApply(i,s,u){return Function.prototype.apply.call(i,s,u)};s=u&&"function"==typeof u.ownKeys?u.ownKeys:Object.getOwnPropertySymbols?function ReflectOwnKeys(i){return Object.getOwnPropertyNames(i).concat(Object.getOwnPropertySymbols(i))}:function ReflectOwnKeys(i){return Object.getOwnPropertyNames(i)};var v=Number.isNaN||function NumberIsNaN(i){return i!=i};function EventEmitter(){EventEmitter.init.call(this)}i.exports=EventEmitter,i.exports.once=function once(i,s){return new Promise((function(u,m){function errorListener(u){i.removeListener(s,resolver),m(u)}function resolver(){"function"==typeof i.removeListener&&i.removeListener("error",errorListener),u([].slice.call(arguments))}eventTargetAgnosticAddListener(i,s,resolver,{once:!0}),"error"!==s&&function addErrorHandlerIfEventEmitter(i,s,u){"function"==typeof i.on&&eventTargetAgnosticAddListener(i,"error",s,u)}(i,errorListener,{once:!0})}))},EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._eventsCount=0,EventEmitter.prototype._maxListeners=void 0;var _=10;function checkListener(i){if("function"!=typeof i)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof i)}function _getMaxListeners(i){return void 0===i._maxListeners?EventEmitter.defaultMaxListeners:i._maxListeners}function _addListener(i,s,u,m){var v,_,j;if(checkListener(u),void 0===(_=i._events)?(_=i._events=Object.create(null),i._eventsCount=0):(void 0!==_.newListener&&(i.emit("newListener",s,u.listener?u.listener:u),_=i._events),j=_[s]),void 0===j)j=_[s]=u,++i._eventsCount;else if("function"==typeof j?j=_[s]=m?[u,j]:[j,u]:m?j.unshift(u):j.push(u),(v=_getMaxListeners(i))>0&&j.length>v&&!j.warned){j.warned=!0;var M=new Error("Possible EventEmitter memory leak detected. "+j.length+" "+String(s)+" listeners added. Use emitter.setMaxListeners() to increase limit");M.name="MaxListenersExceededWarning",M.emitter=i,M.type=s,M.count=j.length,function ProcessEmitWarning(i){console&&console.warn&&console.warn(i)}(M)}return i}function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(i,s,u){var m={fired:!1,wrapFn:void 0,target:i,type:s,listener:u},v=onceWrapper.bind(m);return v.listener=u,m.wrapFn=v,v}function _listeners(i,s,u){var m=i._events;if(void 0===m)return[];var v=m[s];return void 0===v?[]:"function"==typeof v?u?[v.listener||v]:[v]:u?function unwrapListeners(i){for(var s=new Array(i.length),u=0;u0&&(j=s[0]),j instanceof Error)throw j;var M=new Error("Unhandled error."+(j?" ("+j.message+")":""));throw M.context=j,M}var $=_[i];if(void 0===$)return!1;if("function"==typeof $)m($,this,s);else{var W=$.length,X=arrayClone($,W);for(u=0;u=0;_--)if(u[_]===s||u[_].listener===s){j=u[_].listener,v=_;break}if(v<0)return this;0===v?u.shift():function spliceOne(i,s){for(;s+1=0;m--)this.removeListener(i,s[m]);return this},EventEmitter.prototype.listeners=function listeners(i){return _listeners(this,i,!0)},EventEmitter.prototype.rawListeners=function rawListeners(i){return _listeners(this,i,!1)},EventEmitter.listenerCount=function(i,s){return"function"==typeof i.listenerCount?i.listenerCount(s):listenerCount.call(i,s)},EventEmitter.prototype.listenerCount=listenerCount,EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?s(this._events):[]}},21102:(i,s,u)=>{"use strict";var m=u(46291),v=create(Error);function create(i){return FormattedError.displayName=i.displayName||i.name,FormattedError;function FormattedError(s){return s&&(s=m.apply(null,arguments)),new i(s)}}i.exports=v,v.eval=create(EvalError),v.range=create(RangeError),v.reference=create(ReferenceError),v.syntax=create(SyntaxError),v.type=create(TypeError),v.uri=create(URIError),v.create=create},46291:i=>{!function(){var s;function format(i){for(var s,u,m,v,_=1,j=[].slice.call(arguments),M=0,$=i.length,W="",X=!1,Y=!1,nextArg=function(){return j[_++]},slurpNumber=function(){for(var u="";/\d/.test(i[M]);)u+=i[M++],s=i[M];return u.length>0?parseInt(u):null};M<$;++M)if(s=i[M],X)switch(X=!1,"."==s?(Y=!1,s=i[++M]):"0"==s&&"."==i[M+1]?(Y=!0,s=i[M+=2]):Y=!0,v=slurpNumber(),s){case"b":W+=parseInt(nextArg(),10).toString(2);break;case"c":W+="string"==typeof(u=nextArg())||u instanceof String?u:String.fromCharCode(parseInt(u,10));break;case"d":W+=parseInt(nextArg(),10);break;case"f":m=String(parseFloat(nextArg()).toFixed(v||6)),W+=Y?m:m.replace(/^0/,"");break;case"j":W+=JSON.stringify(nextArg());break;case"o":W+="0"+parseInt(nextArg(),10).toString(8);break;case"s":W+=nextArg();break;case"x":W+="0x"+parseInt(nextArg(),10).toString(16);break;case"X":W+="0x"+parseInt(nextArg(),10).toString(16).toUpperCase();break;default:W+=s}else"%"===s?X=!0:W+=s;return W}(s=i.exports=format).format=format,s.vsprintf=function vsprintf(i,s){return format.apply(null,[i].concat(s))},"undefined"!=typeof console&&"function"==typeof console.log&&(s.printf=function printf(){console.log(format.apply(null,arguments))})}()},17648:i=>{"use strict";var s=Array.prototype.slice,u=Object.prototype.toString;i.exports=function bind(i){var m=this;if("function"!=typeof m||"[object Function]"!==u.call(m))throw new TypeError("Function.prototype.bind called on incompatible "+m);for(var v,_=s.call(arguments,1),j=Math.max(0,m.length-_.length),M=[],$=0;${"use strict";var m=u(17648);i.exports=Function.prototype.bind||m},40210:(i,s,u)=>{"use strict";var m,v=SyntaxError,_=Function,j=TypeError,getEvalledConstructor=function(i){try{return _('"use strict"; return ('+i+").constructor;")()}catch(i){}},M=Object.getOwnPropertyDescriptor;if(M)try{M({},"")}catch(i){M=null}var throwTypeError=function(){throw new j},$=M?function(){try{return throwTypeError}catch(i){try{return M(arguments,"callee").get}catch(i){return throwTypeError}}}():throwTypeError,W=u(41405)(),X=u(28185)(),Y=Object.getPrototypeOf||(X?function(i){return i.__proto__}:null),Z={},ee="undefined"!=typeof Uint8Array&&Y?Y(Uint8Array):m,ie={"%AggregateError%":"undefined"==typeof AggregateError?m:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?m:ArrayBuffer,"%ArrayIteratorPrototype%":W&&Y?Y([][Symbol.iterator]()):m,"%AsyncFromSyncIteratorPrototype%":m,"%AsyncFunction%":Z,"%AsyncGenerator%":Z,"%AsyncGeneratorFunction%":Z,"%AsyncIteratorPrototype%":Z,"%Atomics%":"undefined"==typeof Atomics?m:Atomics,"%BigInt%":"undefined"==typeof BigInt?m:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?m:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?m:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?m:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?m:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?m:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?m:FinalizationRegistry,"%Function%":_,"%GeneratorFunction%":Z,"%Int8Array%":"undefined"==typeof Int8Array?m:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?m:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?m:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":W&&Y?Y(Y([][Symbol.iterator]())):m,"%JSON%":"object"==typeof JSON?JSON:m,"%Map%":"undefined"==typeof Map?m:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&W&&Y?Y((new Map)[Symbol.iterator]()):m,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?m:Promise,"%Proxy%":"undefined"==typeof Proxy?m:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?m:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?m:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&W&&Y?Y((new Set)[Symbol.iterator]()):m,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?m:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":W&&Y?Y(""[Symbol.iterator]()):m,"%Symbol%":W?Symbol:m,"%SyntaxError%":v,"%ThrowTypeError%":$,"%TypedArray%":ee,"%TypeError%":j,"%Uint8Array%":"undefined"==typeof Uint8Array?m:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?m:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?m:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?m:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?m:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?m:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?m:WeakSet};if(Y)try{null.error}catch(i){var ae=Y(Y(i));ie["%Error.prototype%"]=ae}var ce=function doEval(i){var s;if("%AsyncFunction%"===i)s=getEvalledConstructor("async function () {}");else if("%GeneratorFunction%"===i)s=getEvalledConstructor("function* () {}");else if("%AsyncGeneratorFunction%"===i)s=getEvalledConstructor("async function* () {}");else if("%AsyncGenerator%"===i){var u=doEval("%AsyncGeneratorFunction%");u&&(s=u.prototype)}else if("%AsyncIteratorPrototype%"===i){var m=doEval("%AsyncGenerator%");m&&Y&&(s=Y(m.prototype))}return ie[i]=s,s},le={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},pe=u(58612),de=u(17642),fe=pe.call(Function.call,Array.prototype.concat),ye=pe.call(Function.apply,Array.prototype.splice),be=pe.call(Function.call,String.prototype.replace),_e=pe.call(Function.call,String.prototype.slice),we=pe.call(Function.call,RegExp.prototype.exec),Se=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,xe=/\\(\\)?/g,Pe=function getBaseIntrinsic(i,s){var u,m=i;if(de(le,m)&&(m="%"+(u=le[m])[0]+"%"),de(ie,m)){var _=ie[m];if(_===Z&&(_=ce(m)),void 0===_&&!s)throw new j("intrinsic "+i+" exists, but is not available. Please file an issue!");return{alias:u,name:m,value:_}}throw new v("intrinsic "+i+" does not exist!")};i.exports=function GetIntrinsic(i,s){if("string"!=typeof i||0===i.length)throw new j("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof s)throw new j('"allowMissing" argument must be a boolean');if(null===we(/^%?[^%]*%?$/,i))throw new v("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var u=function stringToPath(i){var s=_e(i,0,1),u=_e(i,-1);if("%"===s&&"%"!==u)throw new v("invalid intrinsic syntax, expected closing `%`");if("%"===u&&"%"!==s)throw new v("invalid intrinsic syntax, expected opening `%`");var m=[];return be(i,Se,(function(i,s,u,v){m[m.length]=u?be(v,xe,"$1"):s||i})),m}(i),m=u.length>0?u[0]:"",_=Pe("%"+m+"%",s),$=_.name,W=_.value,X=!1,Y=_.alias;Y&&(m=Y[0],ye(u,fe([0,1],Y)));for(var Z=1,ee=!0;Z=u.length){var pe=M(W,ae);W=(ee=!!pe)&&"get"in pe&&!("originalValue"in pe.get)?pe.get:W[ae]}else ee=de(W,ae),W=W[ae];ee&&!X&&(ie[$]=W)}}return W}},28185:i=>{"use strict";var s={foo:{}},u=Object;i.exports=function hasProto(){return{__proto__:s}.foo===s.foo&&!({__proto__:null}instanceof u)}},41405:(i,s,u)=>{"use strict";var m="undefined"!=typeof Symbol&&Symbol,v=u(55419);i.exports=function hasNativeSymbols(){return"function"==typeof m&&("function"==typeof Symbol&&("symbol"==typeof m("foo")&&("symbol"==typeof Symbol("bar")&&v())))}},55419:i=>{"use strict";i.exports=function hasSymbols(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var i={},s=Symbol("test"),u=Object(s);if("string"==typeof s)return!1;if("[object Symbol]"!==Object.prototype.toString.call(s))return!1;if("[object Symbol]"!==Object.prototype.toString.call(u))return!1;for(s in i[s]=42,i)return!1;if("function"==typeof Object.keys&&0!==Object.keys(i).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(i).length)return!1;var m=Object.getOwnPropertySymbols(i);if(1!==m.length||m[0]!==s)return!1;if(!Object.prototype.propertyIsEnumerable.call(i,s))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var v=Object.getOwnPropertyDescriptor(i,s);if(42!==v.value||!0!==v.enumerable)return!1}return!0}},17642:(i,s,u)=>{"use strict";var m=u(58612);i.exports=m.call(Function.call,Object.prototype.hasOwnProperty)},47802:i=>{function deepFreeze(i){return i instanceof Map?i.clear=i.delete=i.set=function(){throw new Error("map is read-only")}:i instanceof Set&&(i.add=i.clear=i.delete=function(){throw new Error("set is read-only")}),Object.freeze(i),Object.getOwnPropertyNames(i).forEach((function(s){var u=i[s];"object"!=typeof u||Object.isFrozen(u)||deepFreeze(u)})),i}var s=deepFreeze,u=deepFreeze;s.default=u;class Response{constructor(i){void 0===i.data&&(i.data={}),this.data=i.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function escapeHTML(i){return i.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function inherit(i,...s){const u=Object.create(null);for(const s in i)u[s]=i[s];return s.forEach((function(i){for(const s in i)u[s]=i[s]})),u}const emitsWrappingTags=i=>!!i.kind;class HTMLRenderer{constructor(i,s){this.buffer="",this.classPrefix=s.classPrefix,i.walk(this)}addText(i){this.buffer+=escapeHTML(i)}openNode(i){if(!emitsWrappingTags(i))return;let s=i.kind;i.sublanguage||(s=`${this.classPrefix}${s}`),this.span(s)}closeNode(i){emitsWrappingTags(i)&&(this.buffer+="")}value(){return this.buffer}span(i){this.buffer+=``}}class TokenTree{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(i){this.top.children.push(i)}openNode(i){const s={kind:i,children:[]};this.add(s),this.stack.push(s)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(i){return this.constructor._walk(i,this.rootNode)}static _walk(i,s){return"string"==typeof s?i.addText(s):s.children&&(i.openNode(s),s.children.forEach((s=>this._walk(i,s))),i.closeNode(s)),i}static _collapse(i){"string"!=typeof i&&i.children&&(i.children.every((i=>"string"==typeof i))?i.children=[i.children.join("")]:i.children.forEach((i=>{TokenTree._collapse(i)})))}}class TokenTreeEmitter extends TokenTree{constructor(i){super(),this.options=i}addKeyword(i,s){""!==i&&(this.openNode(s),this.addText(i),this.closeNode())}addText(i){""!==i&&this.add(i)}addSublanguage(i,s){const u=i.root;u.kind=s,u.sublanguage=!0,this.add(u)}toHTML(){return new HTMLRenderer(this,this.options).value()}finalize(){return!0}}function source(i){return i?"string"==typeof i?i:i.source:null}const m=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;const v="[a-zA-Z]\\w*",_="[a-zA-Z_]\\w*",j="\\b\\d+(\\.\\d+)?",M="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",$="\\b(0b[01]+)",W={begin:"\\\\[\\s\\S]",relevance:0},X={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[W]},Y={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[W]},Z={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},COMMENT=function(i,s,u={}){const m=inherit({className:"comment",begin:i,end:s,contains:[]},u);return m.contains.push(Z),m.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),m},ee=COMMENT("//","$"),ie=COMMENT("/\\*","\\*/"),ae=COMMENT("#","$"),ce={className:"number",begin:j,relevance:0},le={className:"number",begin:M,relevance:0},pe={className:"number",begin:$,relevance:0},de={className:"number",begin:j+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},fe={begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[W,{begin:/\[/,end:/\]/,relevance:0,contains:[W]}]}]},ye={className:"title",begin:v,relevance:0},be={className:"title",begin:_,relevance:0},_e={begin:"\\.\\s*"+_,relevance:0};var we=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:v,UNDERSCORE_IDENT_RE:_,NUMBER_RE:j,C_NUMBER_RE:M,BINARY_NUMBER_RE:$,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(i={})=>{const s=/^#![ ]*\//;return i.binary&&(i.begin=function concat(...i){return i.map((i=>source(i))).join("")}(s,/.*\b/,i.binary,/\b.*/)),inherit({className:"meta",begin:s,end:/$/,relevance:0,"on:begin":(i,s)=>{0!==i.index&&s.ignoreMatch()}},i)},BACKSLASH_ESCAPE:W,APOS_STRING_MODE:X,QUOTE_STRING_MODE:Y,PHRASAL_WORDS_MODE:Z,COMMENT,C_LINE_COMMENT_MODE:ee,C_BLOCK_COMMENT_MODE:ie,HASH_COMMENT_MODE:ae,NUMBER_MODE:ce,C_NUMBER_MODE:le,BINARY_NUMBER_MODE:pe,CSS_NUMBER_MODE:de,REGEXP_MODE:fe,TITLE_MODE:ye,UNDERSCORE_TITLE_MODE:be,METHOD_GUARD:_e,END_SAME_AS_BEGIN:function(i){return Object.assign(i,{"on:begin":(i,s)=>{s.data._beginMatch=i[1]},"on:end":(i,s)=>{s.data._beginMatch!==i[1]&&s.ignoreMatch()}})}});function skipIfhasPrecedingDot(i,s){"."===i.input[i.index-1]&&s.ignoreMatch()}function beginKeywords(i,s){s&&i.beginKeywords&&(i.begin="\\b("+i.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",i.__beforeBegin=skipIfhasPrecedingDot,i.keywords=i.keywords||i.beginKeywords,delete i.beginKeywords,void 0===i.relevance&&(i.relevance=0))}function compileIllegal(i,s){Array.isArray(i.illegal)&&(i.illegal=function either(...i){return"("+i.map((i=>source(i))).join("|")+")"}(...i.illegal))}function compileMatch(i,s){if(i.match){if(i.begin||i.end)throw new Error("begin & end are not supported with match");i.begin=i.match,delete i.match}}function compileRelevance(i,s){void 0===i.relevance&&(i.relevance=1)}const Se=["of","and","for","in","not","or","if","then","parent","list","value"],xe="keyword";function compileKeywords(i,s,u=xe){const m={};return"string"==typeof i?compileList(u,i.split(" ")):Array.isArray(i)?compileList(u,i):Object.keys(i).forEach((function(u){Object.assign(m,compileKeywords(i[u],s,u))})),m;function compileList(i,u){s&&(u=u.map((i=>i.toLowerCase()))),u.forEach((function(s){const u=s.split("|");m[u[0]]=[i,scoreForKeyword(u[0],u[1])]}))}}function scoreForKeyword(i,s){return s?Number(s):function commonKeyword(i){return Se.includes(i.toLowerCase())}(i)?0:1}function compileLanguage(i,{plugins:s}){function langRe(s,u){return new RegExp(source(s),"m"+(i.case_insensitive?"i":"")+(u?"g":""))}class MultiRegex{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(i,s){s.position=this.position++,this.matchIndexes[this.matchAt]=s,this.regexes.push([s,i]),this.matchAt+=function countMatchGroups(i){return new RegExp(i.toString()+"|").exec("").length-1}(i)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const i=this.regexes.map((i=>i[1]));this.matcherRe=langRe(function join(i,s="|"){let u=0;return i.map((i=>{u+=1;const s=u;let v=source(i),_="";for(;v.length>0;){const i=m.exec(v);if(!i){_+=v;break}_+=v.substring(0,i.index),v=v.substring(i.index+i[0].length),"\\"===i[0][0]&&i[1]?_+="\\"+String(Number(i[1])+s):(_+=i[0],"("===i[0]&&u++)}return _})).map((i=>`(${i})`)).join(s)}(i),!0),this.lastIndex=0}exec(i){this.matcherRe.lastIndex=this.lastIndex;const s=this.matcherRe.exec(i);if(!s)return null;const u=s.findIndex(((i,s)=>s>0&&void 0!==i)),m=this.matchIndexes[u];return s.splice(0,u),Object.assign(s,m)}}class ResumableMultiRegex{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(i){if(this.multiRegexes[i])return this.multiRegexes[i];const s=new MultiRegex;return this.rules.slice(i).forEach((([i,u])=>s.addRule(i,u))),s.compile(),this.multiRegexes[i]=s,s}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(i,s){this.rules.push([i,s]),"begin"===s.type&&this.count++}exec(i){const s=this.getMatcher(this.regexIndex);s.lastIndex=this.lastIndex;let u=s.exec(i);if(this.resumingScanAtSamePosition())if(u&&u.index===this.lastIndex);else{const s=this.getMatcher(0);s.lastIndex=this.lastIndex+1,u=s.exec(i)}return u&&(this.regexIndex+=u.position+1,this.regexIndex===this.count&&this.considerAll()),u}}if(i.compilerExtensions||(i.compilerExtensions=[]),i.contains&&i.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return i.classNameAliases=inherit(i.classNameAliases||{}),function compileMode(s,u){const m=s;if(s.isCompiled)return m;[compileMatch].forEach((i=>i(s,u))),i.compilerExtensions.forEach((i=>i(s,u))),s.__beforeBegin=null,[beginKeywords,compileIllegal,compileRelevance].forEach((i=>i(s,u))),s.isCompiled=!0;let v=null;if("object"==typeof s.keywords&&(v=s.keywords.$pattern,delete s.keywords.$pattern),s.keywords&&(s.keywords=compileKeywords(s.keywords,i.case_insensitive)),s.lexemes&&v)throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return v=v||s.lexemes||/\w+/,m.keywordPatternRe=langRe(v,!0),u&&(s.begin||(s.begin=/\B|\b/),m.beginRe=langRe(s.begin),s.endSameAsBegin&&(s.end=s.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),s.end&&(m.endRe=langRe(s.end)),m.terminatorEnd=source(s.end)||"",s.endsWithParent&&u.terminatorEnd&&(m.terminatorEnd+=(s.end?"|":"")+u.terminatorEnd)),s.illegal&&(m.illegalRe=langRe(s.illegal)),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((function(i){return function expandOrCloneMode(i){i.variants&&!i.cachedVariants&&(i.cachedVariants=i.variants.map((function(s){return inherit(i,{variants:null},s)})));if(i.cachedVariants)return i.cachedVariants;if(dependencyOnParent(i))return inherit(i,{starts:i.starts?inherit(i.starts):null});if(Object.isFrozen(i))return inherit(i);return i}("self"===i?s:i)}))),s.contains.forEach((function(i){compileMode(i,m)})),s.starts&&compileMode(s.starts,u),m.matcher=function buildModeRegex(i){const s=new ResumableMultiRegex;return i.contains.forEach((i=>s.addRule(i.begin,{rule:i,type:"begin"}))),i.terminatorEnd&&s.addRule(i.terminatorEnd,{type:"end"}),i.illegal&&s.addRule(i.illegal,{type:"illegal"}),s}(m),m}(i)}function dependencyOnParent(i){return!!i&&(i.endsWithParent||dependencyOnParent(i.starts))}function BuildVuePlugin(i){const s={props:["language","code","autodetect"],data:function(){return{detectedLanguage:"",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!i.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`),this.unknownLanguage=!0,escapeHTML(this.code);let s={};return this.autoDetect?(s=i.highlightAuto(this.code),this.detectedLanguage=s.language):(s=i.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),s.value},autoDetect(){return!this.language||function hasValueOrEmptyAttribute(i){return Boolean(i||""===i)}(this.autodetect)},ignoreIllegals:()=>!0},render(i){return i("pre",{},[i("code",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:s,VuePlugin:{install(i){i.component("highlightjs",s)}}}}const Pe={"after:highlightElement":({el:i,result:s,text:u})=>{const m=nodeStream(i);if(!m.length)return;const v=document.createElement("div");v.innerHTML=s.value,s.value=function mergeStreams(i,s,u){let m=0,v="";const _=[];function selectStream(){return i.length&&s.length?i[0].offset!==s[0].offset?i[0].offset"}function close(i){v+=""}function render(i){("start"===i.event?open:close)(i.node)}for(;i.length||s.length;){let s=selectStream();if(v+=escapeHTML(u.substring(m,s[0].offset)),m=s[0].offset,s===i){_.reverse().forEach(close);do{render(s.splice(0,1)[0]),s=selectStream()}while(s===i&&s.length&&s[0].offset===m);_.reverse().forEach(open)}else"start"===s[0].event?_.push(s[0].node):_.pop(),render(s.splice(0,1)[0])}return v+escapeHTML(u.substr(m))}(m,nodeStream(v),u)}};function tag(i){return i.nodeName.toLowerCase()}function nodeStream(i){const s=[];return function _nodeStream(i,u){for(let m=i.firstChild;m;m=m.nextSibling)3===m.nodeType?u+=m.nodeValue.length:1===m.nodeType&&(s.push({event:"start",offset:u,node:m}),u=_nodeStream(m,u),tag(m).match(/br|hr|img|input/)||s.push({event:"stop",offset:u,node:m}));return u}(i,0),s}const Ie={},error=i=>{console.error(i)},warn=(i,...s)=>{console.log(`WARN: ${i}`,...s)},deprecated=(i,s)=>{Ie[`${i}/${s}`]||(console.log(`Deprecated as of ${i}. ${s}`),Ie[`${i}/${s}`]=!0)},Te=escapeHTML,Re=inherit,qe=Symbol("nomatch");var ze=function(i){const u=Object.create(null),m=Object.create(null),v=[];let _=!0;const j=/(^(<[^>]+>|\t|)+|\n)/gm,M="Could not find the language '{}', did you forget to load/include a language module?",$={disableAutodetect:!0,name:"Plain text",contains:[]};let W={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:TokenTreeEmitter};function shouldNotHighlight(i){return W.noHighlightRe.test(i)}function highlight(i,s,u,m){let v="",_="";"object"==typeof s?(v=i,u=s.ignoreIllegals,_=s.language,m=void 0):(deprecated("10.7.0","highlight(lang, code, ...args) has been deprecated."),deprecated("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),_=i,v=s);const j={code:v,language:_};fire("before:highlight",j);const M=j.result?j.result:_highlight(j.language,j.code,u,m);return M.code=j.code,fire("after:highlight",M),M}function _highlight(i,s,m,j){function keywordData(i,s){const u=X.case_insensitive?s[0].toLowerCase():s[0];return Object.prototype.hasOwnProperty.call(i.keywords,u)&&i.keywords[u]}function processBuffer(){null!=ee.subLanguage?function processSubLanguage(){if(""===ce)return;let i=null;if("string"==typeof ee.subLanguage){if(!u[ee.subLanguage])return void ae.addText(ce);i=_highlight(ee.subLanguage,ce,!0,ie[ee.subLanguage]),ie[ee.subLanguage]=i.top}else i=highlightAuto(ce,ee.subLanguage.length?ee.subLanguage:null);ee.relevance>0&&(le+=i.relevance),ae.addSublanguage(i.emitter,i.language)}():function processKeywords(){if(!ee.keywords)return void ae.addText(ce);let i=0;ee.keywordPatternRe.lastIndex=0;let s=ee.keywordPatternRe.exec(ce),u="";for(;s;){u+=ce.substring(i,s.index);const m=keywordData(ee,s);if(m){const[i,v]=m;if(ae.addText(u),u="",le+=v,i.startsWith("_"))u+=s[0];else{const u=X.classNameAliases[i]||i;ae.addKeyword(s[0],u)}}else u+=s[0];i=ee.keywordPatternRe.lastIndex,s=ee.keywordPatternRe.exec(ce)}u+=ce.substr(i),ae.addText(u)}(),ce=""}function startNewMode(i){return i.className&&ae.openNode(X.classNameAliases[i.className]||i.className),ee=Object.create(i,{parent:{value:ee}}),ee}function endOfMode(i,s,u){let m=function startsWith(i,s){const u=i&&i.exec(s);return u&&0===u.index}(i.endRe,u);if(m){if(i["on:end"]){const u=new Response(i);i["on:end"](s,u),u.isMatchIgnored&&(m=!1)}if(m){for(;i.endsParent&&i.parent;)i=i.parent;return i}}if(i.endsWithParent)return endOfMode(i.parent,s,u)}function doIgnore(i){return 0===ee.matcher.regexIndex?(ce+=i[0],1):(fe=!0,0)}function doBeginMatch(i){const s=i[0],u=i.rule,m=new Response(u),v=[u.__beforeBegin,u["on:begin"]];for(const u of v)if(u&&(u(i,m),m.isMatchIgnored))return doIgnore(s);return u&&u.endSameAsBegin&&(u.endRe=function escape(i){return new RegExp(i.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}(s)),u.skip?ce+=s:(u.excludeBegin&&(ce+=s),processBuffer(),u.returnBegin||u.excludeBegin||(ce=s)),startNewMode(u),u.returnBegin?0:s.length}function doEndMatch(i){const u=i[0],m=s.substr(i.index),v=endOfMode(ee,i,m);if(!v)return qe;const _=ee;_.skip?ce+=u:(_.returnEnd||_.excludeEnd||(ce+=u),processBuffer(),_.excludeEnd&&(ce=u));do{ee.className&&ae.closeNode(),ee.skip||ee.subLanguage||(le+=ee.relevance),ee=ee.parent}while(ee!==v.parent);return v.starts&&(v.endSameAsBegin&&(v.starts.endRe=v.endRe),startNewMode(v.starts)),_.returnEnd?0:u.length}let $={};function processLexeme(u,v){const j=v&&v[0];if(ce+=u,null==j)return processBuffer(),0;if("begin"===$.type&&"end"===v.type&&$.index===v.index&&""===j){if(ce+=s.slice(v.index,v.index+1),!_){const s=new Error("0 width match regex");throw s.languageName=i,s.badRule=$.rule,s}return 1}if($=v,"begin"===v.type)return doBeginMatch(v);if("illegal"===v.type&&!m){const i=new Error('Illegal lexeme "'+j+'" for mode "'+(ee.className||"")+'"');throw i.mode=ee,i}if("end"===v.type){const i=doEndMatch(v);if(i!==qe)return i}if("illegal"===v.type&&""===j)return 1;if(de>1e5&&de>3*v.index){throw new Error("potential infinite loop, way more iterations than matches")}return ce+=j,j.length}const X=getLanguage(i);if(!X)throw error(M.replace("{}",i)),new Error('Unknown language: "'+i+'"');const Y=compileLanguage(X,{plugins:v});let Z="",ee=j||Y;const ie={},ae=new W.__emitter(W);!function processContinuations(){const i=[];for(let s=ee;s!==X;s=s.parent)s.className&&i.unshift(s.className);i.forEach((i=>ae.openNode(i)))}();let ce="",le=0,pe=0,de=0,fe=!1;try{for(ee.matcher.considerAll();;){de++,fe?fe=!1:ee.matcher.considerAll(),ee.matcher.lastIndex=pe;const i=ee.matcher.exec(s);if(!i)break;const u=processLexeme(s.substring(pe,i.index),i);pe=i.index+u}return processLexeme(s.substr(pe)),ae.closeAllNodes(),ae.finalize(),Z=ae.toHTML(),{relevance:Math.floor(le),value:Z,language:i,illegal:!1,emitter:ae,top:ee}}catch(u){if(u.message&&u.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:u.message,context:s.slice(pe-100,pe+100),mode:u.mode},sofar:Z,relevance:0,value:Te(s),emitter:ae};if(_)return{illegal:!1,relevance:0,value:Te(s),emitter:ae,language:i,top:ee,errorRaised:u};throw u}}function highlightAuto(i,s){s=s||W.languages||Object.keys(u);const m=function justTextHighlightResult(i){const s={relevance:0,emitter:new W.__emitter(W),value:Te(i),illegal:!1,top:$};return s.emitter.addText(i),s}(i),v=s.filter(getLanguage).filter(autoDetection).map((s=>_highlight(s,i,!1)));v.unshift(m);const _=v.sort(((i,s)=>{if(i.relevance!==s.relevance)return s.relevance-i.relevance;if(i.language&&s.language){if(getLanguage(i.language).supersetOf===s.language)return 1;if(getLanguage(s.language).supersetOf===i.language)return-1}return 0})),[j,M]=_,X=j;return X.second_best=M,X}const X={"before:highlightElement":({el:i})=>{W.useBR&&(i.innerHTML=i.innerHTML.replace(/\n/g,"").replace(//g,"\n"))},"after:highlightElement":({result:i})=>{W.useBR&&(i.value=i.value.replace(/\n/g,"
"))}},Y=/^(<[^>]+>|\t)+/gm,Z={"after:highlightElement":({result:i})=>{W.tabReplace&&(i.value=i.value.replace(Y,(i=>i.replace(/\t/g,W.tabReplace))))}};function highlightElement(i){let s=null;const u=function blockLanguage(i){let s=i.className+" ";s+=i.parentNode?i.parentNode.className:"";const u=W.languageDetectRe.exec(s);if(u){const s=getLanguage(u[1]);return s||(warn(M.replace("{}",u[1])),warn("Falling back to no-highlight mode for this block.",i)),s?u[1]:"no-highlight"}return s.split(/\s+/).find((i=>shouldNotHighlight(i)||getLanguage(i)))}(i);if(shouldNotHighlight(u))return;fire("before:highlightElement",{el:i,language:u}),s=i;const v=s.textContent,_=u?highlight(v,{language:u,ignoreIllegals:!0}):highlightAuto(v);fire("after:highlightElement",{el:i,result:_,text:v}),i.innerHTML=_.value,function updateClassName(i,s,u){const v=s?m[s]:u;i.classList.add("hljs"),v&&i.classList.add(v)}(i,u,_.language),i.result={language:_.language,re:_.relevance,relavance:_.relevance},_.second_best&&(i.second_best={language:_.second_best.language,re:_.second_best.relevance,relavance:_.second_best.relevance})}const initHighlighting=()=>{if(initHighlighting.called)return;initHighlighting.called=!0,deprecated("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead.");document.querySelectorAll("pre code").forEach(highlightElement)};let ee=!1;function highlightAll(){if("loading"===document.readyState)return void(ee=!0);document.querySelectorAll("pre code").forEach(highlightElement)}function getLanguage(i){return i=(i||"").toLowerCase(),u[i]||u[m[i]]}function registerAliases(i,{languageName:s}){"string"==typeof i&&(i=[i]),i.forEach((i=>{m[i.toLowerCase()]=s}))}function autoDetection(i){const s=getLanguage(i);return s&&!s.disableAutodetect}function fire(i,s){const u=i;v.forEach((function(i){i[u]&&i[u](s)}))}"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(function boot(){ee&&highlightAll()}),!1),Object.assign(i,{highlight,highlightAuto,highlightAll,fixMarkup:function deprecateFixMarkup(i){return deprecated("10.2.0","fixMarkup will be removed entirely in v11.0"),deprecated("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"),function fixMarkup(i){return W.tabReplace||W.useBR?i.replace(j,(i=>"\n"===i?W.useBR?"
":i:W.tabReplace?i.replace(/\t/g,W.tabReplace):i)):i}(i)},highlightElement,highlightBlock:function deprecateHighlightBlock(i){return deprecated("10.7.0","highlightBlock will be removed entirely in v12.0"),deprecated("10.7.0","Please use highlightElement now."),highlightElement(i)},configure:function configure(i){i.useBR&&(deprecated("10.3.0","'useBR' will be removed entirely in v11.0"),deprecated("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")),W=Re(W,i)},initHighlighting,initHighlightingOnLoad:function initHighlightingOnLoad(){deprecated("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."),ee=!0},registerLanguage:function registerLanguage(s,m){let v=null;try{v=m(i)}catch(i){if(error("Language definition for '{}' could not be registered.".replace("{}",s)),!_)throw i;error(i),v=$}v.name||(v.name=s),u[s]=v,v.rawDefinition=m.bind(null,i),v.aliases&®isterAliases(v.aliases,{languageName:s})},unregisterLanguage:function unregisterLanguage(i){delete u[i];for(const s of Object.keys(m))m[s]===i&&delete m[s]},listLanguages:function listLanguages(){return Object.keys(u)},getLanguage,registerAliases,requireLanguage:function requireLanguage(i){deprecated("10.4.0","requireLanguage will be removed entirely in v11."),deprecated("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844");const s=getLanguage(i);if(s)return s;throw new Error("The '{}' language is required, but not loaded.".replace("{}",i))},autoDetection,inherit:Re,addPlugin:function addPlugin(i){!function upgradePluginAPI(i){i["before:highlightBlock"]&&!i["before:highlightElement"]&&(i["before:highlightElement"]=s=>{i["before:highlightBlock"](Object.assign({block:s.el},s))}),i["after:highlightBlock"]&&!i["after:highlightElement"]&&(i["after:highlightElement"]=s=>{i["after:highlightBlock"](Object.assign({block:s.el},s))})}(i),v.push(i)},vuePlugin:BuildVuePlugin(i).VuePlugin}),i.debugMode=function(){_=!1},i.safeMode=function(){_=!0},i.versionString="10.7.3";for(const i in we)"object"==typeof we[i]&&s(we[i]);return Object.assign(i,we),i.addPlugin(X),i.addPlugin(Pe),i.addPlugin(Z),i}({});i.exports=ze},61519:i=>{function concat(...i){return i.map((i=>function source(i){return i?"string"==typeof i?i:i.source:null}(i))).join("")}i.exports=function bash(i){const s={},u={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[s]}]};Object.assign(s,{className:"variable",variants:[{begin:concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},u]});const m={className:"subst",begin:/\$\(/,end:/\)/,contains:[i.BACKSLASH_ESCAPE]},v={begin:/<<-?\s*(?=\w+)/,starts:{contains:[i.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},_={className:"string",begin:/"/,end:/"/,contains:[i.BACKSLASH_ESCAPE,s,m]};m.contains.push(_);const j={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},i.NUMBER_MODE,s]},M=i.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),$={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[i.inherit(i.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp"},contains:[M,i.SHEBANG(),$,j,i.HASH_COMMENT_MODE,v,_,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},s]}}},30786:i=>{function concat(...i){return i.map((i=>function source(i){return i?"string"==typeof i?i:i.source:null}(i))).join("")}i.exports=function http(i){const s="HTTP/(2|1\\.[01])",u={className:"attribute",begin:concat("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},m=[u,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+s+" \\d{3})",end:/$/,contains:[{className:"meta",begin:s},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:m}},{begin:"(?=^[A-Z]+ (.*?) "+s+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:s},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:m}},i.inherit(u,{relevance:0})]}}},96344:i=>{const s="[A-Za-z$_][0-9A-Za-z$_]*",u=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],m=["true","false","null","undefined","NaN","Infinity"],v=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function lookahead(i){return concat("(?=",i,")")}function concat(...i){return i.map((i=>function source(i){return i?"string"==typeof i?i:i.source:null}(i))).join("")}i.exports=function javascript(i){const _=s,j="<>",M="",$={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(i,s)=>{const u=i[0].length+i.index,m=i.input[u];"<"!==m?">"===m&&(((i,{after:s})=>{const u="",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:W,contains:ye}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:j,end:M},{begin:$.begin,"on:begin":$.isTrulyOpeningTag,end:$.end}],subLanguage:"xml",contains:[{begin:$.begin,end:$.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:W,contains:["self",i.inherit(i.TITLE_MODE,{begin:_}),be],illegal:/%/},{beginKeywords:"while if switch catch for"},{className:"function",begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,contains:[be,i.inherit(i.TITLE_MODE,{begin:_})]},{variants:[{begin:"\\."+_},{begin:"\\$"+_}],relevance:0},{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:_}),"self",be]},{begin:"(get|set)\\s+(?="+_+"\\()",end:/\{/,keywords:"get set",contains:[i.inherit(i.TITLE_MODE,{begin:_}),{begin:/\(\)/},be]},{begin:/\$[(.]/}]}}},82026:i=>{i.exports=function json(i){const s={literal:"true false null"},u=[i.C_LINE_COMMENT_MODE,i.C_BLOCK_COMMENT_MODE],m=[i.QUOTE_STRING_MODE,i.C_NUMBER_MODE],v={end:",",endsWithParent:!0,excludeEnd:!0,contains:m,keywords:s},_={begin:/\{/,end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/,contains:[i.BACKSLASH_ESCAPE],illegal:"\\n"},i.inherit(v,{begin:/:/})].concat(u),illegal:"\\S"},j={begin:"\\[",end:"\\]",contains:[i.inherit(v)],illegal:"\\S"};return m.push(_,j),u.forEach((function(i){m.push(i)})),{name:"JSON",contains:m,keywords:s,illegal:"\\S"}}},66336:i=>{i.exports=function powershell(i){const s={$pattern:/-?[A-z\.\-]+\b/,keyword:"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter",built_in:"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write"},u={begin:"`[\\s\\S]",relevance:0},m={className:"variable",variants:[{begin:/\$\B/},{className:"keyword",begin:/\$this/},{begin:/\$[\w\d][\w\d_:]*/}]},v={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[u,m,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},_={className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},j=i.inherit(i.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]}),M={className:"built_in",variants:[{begin:"(".concat("Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where",")+(-)[\\w\\d]+")}]},$={className:"class",beginKeywords:"class enum",end:/\s*[{]/,excludeEnd:!0,relevance:0,contains:[i.TITLE_MODE]},W={className:"function",begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,contains:[{begin:"function",relevance:0,className:"keyword"},{className:"title",begin:/\w[\w\d]*((-)[\w\d]+)*/,relevance:0},{begin:/\(/,end:/\)/,className:"params",relevance:0,contains:[m]}]},X={begin:/using\s/,end:/$/,returnBegin:!0,contains:[v,_,{className:"keyword",begin:/(using|assembly|command|module|namespace|type)/}]},Y={variants:[{className:"operator",begin:"(".concat("-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor",")\\b")},{className:"literal",begin:/(-)[\w\d]+/,relevance:0}]},Z={className:"function",begin:/\[.*\]\s*[\w]+[ ]??\(/,end:/$/,returnBegin:!0,relevance:0,contains:[{className:"keyword",begin:"(".concat(s.keyword.toString().replace(/\s/g,"|"),")\\b"),endsParent:!0,relevance:0},i.inherit(i.TITLE_MODE,{endsParent:!0})]},ee=[Z,j,u,i.NUMBER_MODE,v,_,M,m,{className:"literal",begin:/\$(null|true|false)\b/},{className:"selector-tag",begin:/@\B/,relevance:0}],ie={begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat("self",ee,{begin:"("+["string","char","byte","int","long","bool","decimal","single","double","DateTime","xml","array","hashtable","void"].join("|")+")",className:"built_in",relevance:0},{className:"type",begin:/[\.\w\d]+/,relevance:0})};return Z.contains.unshift(ie),{name:"PowerShell",aliases:["ps","ps1"],case_insensitive:!0,keywords:s,contains:ee.concat($,W,X,Y,ie)}}},42157:i=>{function source(i){return i?"string"==typeof i?i:i.source:null}function lookahead(i){return concat("(?=",i,")")}function concat(...i){return i.map((i=>source(i))).join("")}function either(...i){return"("+i.map((i=>source(i))).join("|")+")"}i.exports=function xml(i){const s=concat(/[A-Z_]/,function optional(i){return concat("(",i,")?")}(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),u={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},m={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},v=i.inherit(m,{begin:/\(/,end:/\)/}),_=i.inherit(i.APOS_STRING_MODE,{className:"meta-string"}),j=i.inherit(i.QUOTE_STRING_MODE,{className:"meta-string"}),M={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[m,j,_,v,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[m,v,j,_]}]}]},i.COMMENT(//,{relevance:10}),{begin://,relevance:10},u,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[M],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[M],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:s,relevance:0,starts:M}]},{className:"tag",begin:concat(/<\//,lookahead(concat(s,/>/))),contains:[{className:"name",begin:s,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},54587:i=>{i.exports=function yaml(i){var s="true false yes no null",u="[\\w#;/?:@&=+$,.~*'()[\\]]+",m={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[i.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},v=i.inherit(m,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),_={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},j={end:",",endsWithParent:!0,excludeEnd:!0,keywords:s,relevance:0},M={begin:/\{/,end:/\}/,contains:[j],illegal:"\\n",relevance:0},$={begin:"\\[",end:"\\]",contains:[j],illegal:"\\n",relevance:0},W=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+u},{className:"type",begin:"!<"+u+">"},{className:"type",begin:"!"+u},{className:"type",begin:"!!"+u},{className:"meta",begin:"&"+i.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+i.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},i.HASH_COMMENT_MODE,{beginKeywords:s,keywords:{literal:s}},_,{className:"number",begin:i.C_NUMBER_RE+"\\b",relevance:0},M,$,m],X=[...W];return X.pop(),X.push(v),j.contains=X,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:W}}},8679:(i,s,u)=>{"use strict";var m=u(59864),v={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},_={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},j={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},M={};function getStatics(i){return m.isMemo(i)?j:M[i.$$typeof]||v}M[m.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},M[m.Memo]=j;var $=Object.defineProperty,W=Object.getOwnPropertyNames,X=Object.getOwnPropertySymbols,Y=Object.getOwnPropertyDescriptor,Z=Object.getPrototypeOf,ee=Object.prototype;i.exports=function hoistNonReactStatics(i,s,u){if("string"!=typeof s){if(ee){var m=Z(s);m&&m!==ee&&hoistNonReactStatics(i,m,u)}var v=W(s);X&&(v=v.concat(X(s)));for(var j=getStatics(i),M=getStatics(s),ie=0;ie{s.read=function(i,s,u,m,v){var _,j,M=8*v-m-1,$=(1<>1,X=-7,Y=u?v-1:0,Z=u?-1:1,ee=i[s+Y];for(Y+=Z,_=ee&(1<<-X)-1,ee>>=-X,X+=M;X>0;_=256*_+i[s+Y],Y+=Z,X-=8);for(j=_&(1<<-X)-1,_>>=-X,X+=m;X>0;j=256*j+i[s+Y],Y+=Z,X-=8);if(0===_)_=1-W;else{if(_===$)return j?NaN:1/0*(ee?-1:1);j+=Math.pow(2,m),_-=W}return(ee?-1:1)*j*Math.pow(2,_-m)},s.write=function(i,s,u,m,v,_){var j,M,$,W=8*_-v-1,X=(1<>1,Z=23===v?Math.pow(2,-24)-Math.pow(2,-77):0,ee=m?0:_-1,ie=m?1:-1,ae=s<0||0===s&&1/s<0?1:0;for(s=Math.abs(s),isNaN(s)||s===1/0?(M=isNaN(s)?1:0,j=X):(j=Math.floor(Math.log(s)/Math.LN2),s*($=Math.pow(2,-j))<1&&(j--,$*=2),(s+=j+Y>=1?Z/$:Z*Math.pow(2,1-Y))*$>=2&&(j++,$/=2),j+Y>=X?(M=0,j=X):j+Y>=1?(M=(s*$-1)*Math.pow(2,v),j+=Y):(M=s*Math.pow(2,Y-1)*Math.pow(2,v),j=0));v>=8;i[u+ee]=255&M,ee+=ie,M/=256,v-=8);for(j=j<0;i[u+ee]=255&j,ee+=ie,j/=256,W-=8);i[u+ee-ie]|=128*ae}},43393:function(i){i.exports=function(){"use strict";var i=Array.prototype.slice;function createClass(i,s){s&&(i.prototype=Object.create(s.prototype)),i.prototype.constructor=i}function Iterable(i){return isIterable(i)?i:Seq(i)}function KeyedIterable(i){return isKeyed(i)?i:KeyedSeq(i)}function IndexedIterable(i){return isIndexed(i)?i:IndexedSeq(i)}function SetIterable(i){return isIterable(i)&&!isAssociative(i)?i:SetSeq(i)}function isIterable(i){return!(!i||!i[s])}function isKeyed(i){return!(!i||!i[u])}function isIndexed(i){return!(!i||!i[m])}function isAssociative(i){return isKeyed(i)||isIndexed(i)}function isOrdered(i){return!(!i||!i[v])}createClass(KeyedIterable,Iterable),createClass(IndexedIterable,Iterable),createClass(SetIterable,Iterable),Iterable.isIterable=isIterable,Iterable.isKeyed=isKeyed,Iterable.isIndexed=isIndexed,Iterable.isAssociative=isAssociative,Iterable.isOrdered=isOrdered,Iterable.Keyed=KeyedIterable,Iterable.Indexed=IndexedIterable,Iterable.Set=SetIterable;var s="@@__IMMUTABLE_ITERABLE__@@",u="@@__IMMUTABLE_KEYED__@@",m="@@__IMMUTABLE_INDEXED__@@",v="@@__IMMUTABLE_ORDERED__@@",_="delete",j=5,M=1<>>0;if(""+u!==s||4294967295===u)return NaN;s=u}return s<0?ensureSize(i)+s:s}function returnTrue(){return!0}function wholeSlice(i,s,u){return(0===i||void 0!==u&&i<=-u)&&(void 0===s||void 0!==u&&s>=u)}function resolveBegin(i,s){return resolveIndex(i,s,0)}function resolveEnd(i,s){return resolveIndex(i,s,s)}function resolveIndex(i,s,u){return void 0===i?u:i<0?Math.max(0,s+i):void 0===s?i:Math.min(s,i)}var Z=0,ee=1,ie=2,ae="function"==typeof Symbol&&Symbol.iterator,ce="@@iterator",le=ae||ce;function Iterator(i){this.next=i}function iteratorValue(i,s,u,m){var v=0===i?s:1===i?u:[s,u];return m?m.value=v:m={value:v,done:!1},m}function iteratorDone(){return{value:void 0,done:!0}}function hasIterator(i){return!!getIteratorFn(i)}function isIterator(i){return i&&"function"==typeof i.next}function getIterator(i){var s=getIteratorFn(i);return s&&s.call(i)}function getIteratorFn(i){var s=i&&(ae&&i[ae]||i[ce]);if("function"==typeof s)return s}function isArrayLike(i){return i&&"number"==typeof i.length}function Seq(i){return null==i?emptySequence():isIterable(i)?i.toSeq():seqFromValue(i)}function KeyedSeq(i){return null==i?emptySequence().toKeyedSeq():isIterable(i)?isKeyed(i)?i.toSeq():i.fromEntrySeq():keyedSeqFromValue(i)}function IndexedSeq(i){return null==i?emptySequence():isIterable(i)?isKeyed(i)?i.entrySeq():i.toIndexedSeq():indexedSeqFromValue(i)}function SetSeq(i){return(null==i?emptySequence():isIterable(i)?isKeyed(i)?i.entrySeq():i:indexedSeqFromValue(i)).toSetSeq()}Iterator.prototype.toString=function(){return"[Iterator]"},Iterator.KEYS=Z,Iterator.VALUES=ee,Iterator.ENTRIES=ie,Iterator.prototype.inspect=Iterator.prototype.toSource=function(){return this.toString()},Iterator.prototype[le]=function(){return this},createClass(Seq,Iterable),Seq.of=function(){return Seq(arguments)},Seq.prototype.toSeq=function(){return this},Seq.prototype.toString=function(){return this.__toString("Seq {","}")},Seq.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},Seq.prototype.__iterate=function(i,s){return seqIterate(this,i,s,!0)},Seq.prototype.__iterator=function(i,s){return seqIterator(this,i,s,!0)},createClass(KeyedSeq,Seq),KeyedSeq.prototype.toKeyedSeq=function(){return this},createClass(IndexedSeq,Seq),IndexedSeq.of=function(){return IndexedSeq(arguments)},IndexedSeq.prototype.toIndexedSeq=function(){return this},IndexedSeq.prototype.toString=function(){return this.__toString("Seq [","]")},IndexedSeq.prototype.__iterate=function(i,s){return seqIterate(this,i,s,!1)},IndexedSeq.prototype.__iterator=function(i,s){return seqIterator(this,i,s,!1)},createClass(SetSeq,Seq),SetSeq.of=function(){return SetSeq(arguments)},SetSeq.prototype.toSetSeq=function(){return this},Seq.isSeq=isSeq,Seq.Keyed=KeyedSeq,Seq.Set=SetSeq,Seq.Indexed=IndexedSeq;var pe,de,fe,ye="@@__IMMUTABLE_SEQ__@@";function ArraySeq(i){this._array=i,this.size=i.length}function ObjectSeq(i){var s=Object.keys(i);this._object=i,this._keys=s,this.size=s.length}function IterableSeq(i){this._iterable=i,this.size=i.length||i.size}function IteratorSeq(i){this._iterator=i,this._iteratorCache=[]}function isSeq(i){return!(!i||!i[ye])}function emptySequence(){return pe||(pe=new ArraySeq([]))}function keyedSeqFromValue(i){var s=Array.isArray(i)?new ArraySeq(i).fromEntrySeq():isIterator(i)?new IteratorSeq(i).fromEntrySeq():hasIterator(i)?new IterableSeq(i).fromEntrySeq():"object"==typeof i?new ObjectSeq(i):void 0;if(!s)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+i);return s}function indexedSeqFromValue(i){var s=maybeIndexedSeqFromValue(i);if(!s)throw new TypeError("Expected Array or iterable object of values: "+i);return s}function seqFromValue(i){var s=maybeIndexedSeqFromValue(i)||"object"==typeof i&&new ObjectSeq(i);if(!s)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+i);return s}function maybeIndexedSeqFromValue(i){return isArrayLike(i)?new ArraySeq(i):isIterator(i)?new IteratorSeq(i):hasIterator(i)?new IterableSeq(i):void 0}function seqIterate(i,s,u,m){var v=i._cache;if(v){for(var _=v.length-1,j=0;j<=_;j++){var M=v[u?_-j:j];if(!1===s(M[1],m?M[0]:j,i))return j+1}return j}return i.__iterateUncached(s,u)}function seqIterator(i,s,u,m){var v=i._cache;if(v){var _=v.length-1,j=0;return new Iterator((function(){var i=v[u?_-j:j];return j++>_?iteratorDone():iteratorValue(s,m?i[0]:j-1,i[1])}))}return i.__iteratorUncached(s,u)}function fromJS(i,s){return s?fromJSWith(s,i,"",{"":i}):fromJSDefault(i)}function fromJSWith(i,s,u,m){return Array.isArray(s)?i.call(m,u,IndexedSeq(s).map((function(u,m){return fromJSWith(i,u,m,s)}))):isPlainObj(s)?i.call(m,u,KeyedSeq(s).map((function(u,m){return fromJSWith(i,u,m,s)}))):s}function fromJSDefault(i){return Array.isArray(i)?IndexedSeq(i).map(fromJSDefault).toList():isPlainObj(i)?KeyedSeq(i).map(fromJSDefault).toMap():i}function isPlainObj(i){return i&&(i.constructor===Object||void 0===i.constructor)}function is(i,s){if(i===s||i!=i&&s!=s)return!0;if(!i||!s)return!1;if("function"==typeof i.valueOf&&"function"==typeof s.valueOf){if((i=i.valueOf())===(s=s.valueOf())||i!=i&&s!=s)return!0;if(!i||!s)return!1}return!("function"!=typeof i.equals||"function"!=typeof s.equals||!i.equals(s))}function deepEqual(i,s){if(i===s)return!0;if(!isIterable(s)||void 0!==i.size&&void 0!==s.size&&i.size!==s.size||void 0!==i.__hash&&void 0!==s.__hash&&i.__hash!==s.__hash||isKeyed(i)!==isKeyed(s)||isIndexed(i)!==isIndexed(s)||isOrdered(i)!==isOrdered(s))return!1;if(0===i.size&&0===s.size)return!0;var u=!isAssociative(i);if(isOrdered(i)){var m=i.entries();return s.every((function(i,s){var v=m.next().value;return v&&is(v[1],i)&&(u||is(v[0],s))}))&&m.next().done}var v=!1;if(void 0===i.size)if(void 0===s.size)"function"==typeof i.cacheResult&&i.cacheResult();else{v=!0;var _=i;i=s,s=_}var j=!0,M=s.__iterate((function(s,m){if(u?!i.has(s):v?!is(s,i.get(m,W)):!is(i.get(m,W),s))return j=!1,!1}));return j&&i.size===M}function Repeat(i,s){if(!(this instanceof Repeat))return new Repeat(i,s);if(this._value=i,this.size=void 0===s?1/0:Math.max(0,s),0===this.size){if(de)return de;de=this}}function invariant(i,s){if(!i)throw new Error(s)}function Range(i,s,u){if(!(this instanceof Range))return new Range(i,s,u);if(invariant(0!==u,"Cannot step a Range by 0"),i=i||0,void 0===s&&(s=1/0),u=void 0===u?1:Math.abs(u),sm?iteratorDone():iteratorValue(i,v,u[s?m-v++:v++])}))},createClass(ObjectSeq,KeyedSeq),ObjectSeq.prototype.get=function(i,s){return void 0===s||this.has(i)?this._object[i]:s},ObjectSeq.prototype.has=function(i){return this._object.hasOwnProperty(i)},ObjectSeq.prototype.__iterate=function(i,s){for(var u=this._object,m=this._keys,v=m.length-1,_=0;_<=v;_++){var j=m[s?v-_:_];if(!1===i(u[j],j,this))return _+1}return _},ObjectSeq.prototype.__iterator=function(i,s){var u=this._object,m=this._keys,v=m.length-1,_=0;return new Iterator((function(){var j=m[s?v-_:_];return _++>v?iteratorDone():iteratorValue(i,j,u[j])}))},ObjectSeq.prototype[v]=!0,createClass(IterableSeq,IndexedSeq),IterableSeq.prototype.__iterateUncached=function(i,s){if(s)return this.cacheResult().__iterate(i,s);var u=getIterator(this._iterable),m=0;if(isIterator(u))for(var v;!(v=u.next()).done&&!1!==i(v.value,m++,this););return m},IterableSeq.prototype.__iteratorUncached=function(i,s){if(s)return this.cacheResult().__iterator(i,s);var u=getIterator(this._iterable);if(!isIterator(u))return new Iterator(iteratorDone);var m=0;return new Iterator((function(){var s=u.next();return s.done?s:iteratorValue(i,m++,s.value)}))},createClass(IteratorSeq,IndexedSeq),IteratorSeq.prototype.__iterateUncached=function(i,s){if(s)return this.cacheResult().__iterate(i,s);for(var u,m=this._iterator,v=this._iteratorCache,_=0;_=m.length){var s=u.next();if(s.done)return s;m[v]=s.value}return iteratorValue(i,v,m[v++])}))},createClass(Repeat,IndexedSeq),Repeat.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Repeat.prototype.get=function(i,s){return this.has(i)?this._value:s},Repeat.prototype.includes=function(i){return is(this._value,i)},Repeat.prototype.slice=function(i,s){var u=this.size;return wholeSlice(i,s,u)?this:new Repeat(this._value,resolveEnd(s,u)-resolveBegin(i,u))},Repeat.prototype.reverse=function(){return this},Repeat.prototype.indexOf=function(i){return is(this._value,i)?0:-1},Repeat.prototype.lastIndexOf=function(i){return is(this._value,i)?this.size:-1},Repeat.prototype.__iterate=function(i,s){for(var u=0;u=0&&s=0&&uu?iteratorDone():iteratorValue(i,_++,j)}))},Range.prototype.equals=function(i){return i instanceof Range?this._start===i._start&&this._end===i._end&&this._step===i._step:deepEqual(this,i)},createClass(Collection,Iterable),createClass(KeyedCollection,Collection),createClass(IndexedCollection,Collection),createClass(SetCollection,Collection),Collection.Keyed=KeyedCollection,Collection.Indexed=IndexedCollection,Collection.Set=SetCollection;var be="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function imul(i,s){var u=65535&(i|=0),m=65535&(s|=0);return u*m+((i>>>16)*m+u*(s>>>16)<<16>>>0)|0};function smi(i){return i>>>1&1073741824|3221225471&i}function hash(i){if(!1===i||null==i)return 0;if("function"==typeof i.valueOf&&(!1===(i=i.valueOf())||null==i))return 0;if(!0===i)return 1;var s=typeof i;if("number"===s){if(i!=i||i===1/0)return 0;var u=0|i;for(u!==i&&(u^=4294967295*i);i>4294967295;)u^=i/=4294967295;return smi(u)}if("string"===s)return i.length>Te?cachedHashString(i):hashString(i);if("function"==typeof i.hashCode)return i.hashCode();if("object"===s)return hashJSObj(i);if("function"==typeof i.toString)return hashString(i.toString());throw new Error("Value type "+s+" cannot be hashed.")}function cachedHashString(i){var s=ze[i];return void 0===s&&(s=hashString(i),qe===Re&&(qe=0,ze={}),qe++,ze[i]=s),s}function hashString(i){for(var s=0,u=0;u0)switch(i.nodeType){case 1:return i.uniqueID;case 9:return i.documentElement&&i.documentElement.uniqueID}}var Se,xe="function"==typeof WeakMap;xe&&(Se=new WeakMap);var Pe=0,Ie="__immutablehash__";"function"==typeof Symbol&&(Ie=Symbol(Ie));var Te=16,Re=255,qe=0,ze={};function assertNotInfinite(i){invariant(i!==1/0,"Cannot perform this action with an infinite size.")}function Map(i){return null==i?emptyMap():isMap(i)&&!isOrdered(i)?i:emptyMap().withMutations((function(s){var u=KeyedIterable(i);assertNotInfinite(u.size),u.forEach((function(i,u){return s.set(u,i)}))}))}function isMap(i){return!(!i||!i[We])}createClass(Map,KeyedCollection),Map.of=function(){var s=i.call(arguments,0);return emptyMap().withMutations((function(i){for(var u=0;u=s.length)throw new Error("Missing value for key: "+s[u]);i.set(s[u],s[u+1])}}))},Map.prototype.toString=function(){return this.__toString("Map {","}")},Map.prototype.get=function(i,s){return this._root?this._root.get(0,void 0,i,s):s},Map.prototype.set=function(i,s){return updateMap(this,i,s)},Map.prototype.setIn=function(i,s){return this.updateIn(i,W,(function(){return s}))},Map.prototype.remove=function(i){return updateMap(this,i,W)},Map.prototype.deleteIn=function(i){return this.updateIn(i,(function(){return W}))},Map.prototype.update=function(i,s,u){return 1===arguments.length?i(this):this.updateIn([i],s,u)},Map.prototype.updateIn=function(i,s,u){u||(u=s,s=void 0);var m=updateInDeepMap(this,forceIterator(i),s,u);return m===W?void 0:m},Map.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):emptyMap()},Map.prototype.merge=function(){return mergeIntoMapWith(this,void 0,arguments)},Map.prototype.mergeWith=function(s){return mergeIntoMapWith(this,s,i.call(arguments,1))},Map.prototype.mergeIn=function(s){var u=i.call(arguments,1);return this.updateIn(s,emptyMap(),(function(i){return"function"==typeof i.merge?i.merge.apply(i,u):u[u.length-1]}))},Map.prototype.mergeDeep=function(){return mergeIntoMapWith(this,deepMerger,arguments)},Map.prototype.mergeDeepWith=function(s){var u=i.call(arguments,1);return mergeIntoMapWith(this,deepMergerWith(s),u)},Map.prototype.mergeDeepIn=function(s){var u=i.call(arguments,1);return this.updateIn(s,emptyMap(),(function(i){return"function"==typeof i.mergeDeep?i.mergeDeep.apply(i,u):u[u.length-1]}))},Map.prototype.sort=function(i){return OrderedMap(sortFactory(this,i))},Map.prototype.sortBy=function(i,s){return OrderedMap(sortFactory(this,s,i))},Map.prototype.withMutations=function(i){var s=this.asMutable();return i(s),s.wasAltered()?s.__ensureOwner(this.__ownerID):this},Map.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new OwnerID)},Map.prototype.asImmutable=function(){return this.__ensureOwner()},Map.prototype.wasAltered=function(){return this.__altered},Map.prototype.__iterator=function(i,s){return new MapIterator(this,i,s)},Map.prototype.__iterate=function(i,s){var u=this,m=0;return this._root&&this._root.iterate((function(s){return m++,i(s[1],s[0],u)}),s),m},Map.prototype.__ensureOwner=function(i){return i===this.__ownerID?this:i?makeMap(this.size,this._root,i,this.__hash):(this.__ownerID=i,this.__altered=!1,this)},Map.isMap=isMap;var Ve,We="@@__IMMUTABLE_MAP__@@",He=Map.prototype;function ArrayMapNode(i,s){this.ownerID=i,this.entries=s}function BitmapIndexedNode(i,s,u){this.ownerID=i,this.bitmap=s,this.nodes=u}function HashArrayMapNode(i,s,u){this.ownerID=i,this.count=s,this.nodes=u}function HashCollisionNode(i,s,u){this.ownerID=i,this.keyHash=s,this.entries=u}function ValueNode(i,s,u){this.ownerID=i,this.keyHash=s,this.entry=u}function MapIterator(i,s,u){this._type=s,this._reverse=u,this._stack=i._root&&mapIteratorFrame(i._root)}function mapIteratorValue(i,s){return iteratorValue(i,s[0],s[1])}function mapIteratorFrame(i,s){return{node:i,index:0,__prev:s}}function makeMap(i,s,u,m){var v=Object.create(He);return v.size=i,v._root=s,v.__ownerID=u,v.__hash=m,v.__altered=!1,v}function emptyMap(){return Ve||(Ve=makeMap(0))}function updateMap(i,s,u){var m,v;if(i._root){var _=MakeRef(X),j=MakeRef(Y);if(m=updateNode(i._root,i.__ownerID,0,void 0,s,u,_,j),!j.value)return i;v=i.size+(_.value?u===W?-1:1:0)}else{if(u===W)return i;v=1,m=new ArrayMapNode(i.__ownerID,[[s,u]])}return i.__ownerID?(i.size=v,i._root=m,i.__hash=void 0,i.__altered=!0,i):m?makeMap(v,m):emptyMap()}function updateNode(i,s,u,m,v,_,j,M){return i?i.update(s,u,m,v,_,j,M):_===W?i:(SetRef(M),SetRef(j),new ValueNode(s,m,[v,_]))}function isLeafNode(i){return i.constructor===ValueNode||i.constructor===HashCollisionNode}function mergeIntoNode(i,s,u,m,v){if(i.keyHash===m)return new HashCollisionNode(s,m,[i.entry,v]);var _,M=(0===u?i.keyHash:i.keyHash>>>u)&$,W=(0===u?m:m>>>u)&$;return new BitmapIndexedNode(s,1<>>=1)j[$]=1&u?s[_++]:void 0;return j[m]=v,new HashArrayMapNode(i,_+1,j)}function mergeIntoMapWith(i,s,u){for(var m=[],v=0;v>1&1431655765))+(i>>2&858993459))+(i>>4)&252645135,i+=i>>8,127&(i+=i>>16)}function setIn(i,s,u,m){var v=m?i:arrCopy(i);return v[s]=u,v}function spliceIn(i,s,u,m){var v=i.length+1;if(m&&s+1===v)return i[s]=u,i;for(var _=new Array(v),j=0,M=0;M=Xe)return createNodes(i,$,m,v);var ee=i&&i===this.ownerID,ie=ee?$:arrCopy($);return Z?M?X===Y-1?ie.pop():ie[X]=ie.pop():ie[X]=[m,v]:ie.push([m,v]),ee?(this.entries=ie,this):new ArrayMapNode(i,ie)}},BitmapIndexedNode.prototype.get=function(i,s,u,m){void 0===s&&(s=hash(u));var v=1<<((0===i?s:s>>>i)&$),_=this.bitmap;return 0==(_&v)?m:this.nodes[popCount(_&v-1)].get(i+j,s,u,m)},BitmapIndexedNode.prototype.update=function(i,s,u,m,v,_,M){void 0===u&&(u=hash(m));var X=(0===s?u:u>>>s)&$,Y=1<=Ye)return expandNodes(i,ae,Z,X,le);if(ee&&!le&&2===ae.length&&isLeafNode(ae[1^ie]))return ae[1^ie];if(ee&&le&&1===ae.length&&isLeafNode(le))return le;var pe=i&&i===this.ownerID,de=ee?le?Z:Z^Y:Z|Y,fe=ee?le?setIn(ae,ie,le,pe):spliceOut(ae,ie,pe):spliceIn(ae,ie,le,pe);return pe?(this.bitmap=de,this.nodes=fe,this):new BitmapIndexedNode(i,de,fe)},HashArrayMapNode.prototype.get=function(i,s,u,m){void 0===s&&(s=hash(u));var v=(0===i?s:s>>>i)&$,_=this.nodes[v];return _?_.get(i+j,s,u,m):m},HashArrayMapNode.prototype.update=function(i,s,u,m,v,_,M){void 0===u&&(u=hash(m));var X=(0===s?u:u>>>s)&$,Y=v===W,Z=this.nodes,ee=Z[X];if(Y&&!ee)return this;var ie=updateNode(ee,i,s+j,u,m,v,_,M);if(ie===ee)return this;var ae=this.count;if(ee){if(!ie&&--ae0&&m=0&&i>>s&$;if(m>=this.array.length)return new VNode([],i);var v,_=0===m;if(s>0){var M=this.array[m];if((v=M&&M.removeBefore(i,s-j,u))===M&&_)return this}if(_&&!v)return this;var W=editableVNode(this,i);if(!_)for(var X=0;X>>s&$;if(v>=this.array.length)return this;if(s>0){var _=this.array[v];if((m=_&&_.removeAfter(i,s-j,u))===_&&v===this.array.length-1)return this}var M=editableVNode(this,i);return M.array.splice(v+1),m&&(M.array[v]=m),M};var rt,nt,ot={};function iterateList(i,s){var u=i._origin,m=i._capacity,v=getTailOffset(m),_=i._tail;return iterateNodeOrLeaf(i._root,i._level,0);function iterateNodeOrLeaf(i,s,u){return 0===s?iterateLeaf(i,u):iterateNode(i,s,u)}function iterateLeaf(i,j){var $=j===v?_&&_.array:i&&i.array,W=j>u?0:u-j,X=m-j;return X>M&&(X=M),function(){if(W===X)return ot;var i=s?--X:W++;return $&&$[i]}}function iterateNode(i,v,_){var $,W=i&&i.array,X=_>u?0:u-_>>v,Y=1+(m-_>>v);return Y>M&&(Y=M),function(){for(;;){if($){var i=$();if(i!==ot)return i;$=null}if(X===Y)return ot;var u=s?--Y:X++;$=iterateNodeOrLeaf(W&&W[u],v-j,_+(u<=i.size||s<0)return i.withMutations((function(i){s<0?setListBounds(i,s).set(0,u):setListBounds(i,0,s+1).set(s,u)}));s+=i._origin;var m=i._tail,v=i._root,_=MakeRef(Y);return s>=getTailOffset(i._capacity)?m=updateVNode(m,i.__ownerID,0,s,u,_):v=updateVNode(v,i.__ownerID,i._level,s,u,_),_.value?i.__ownerID?(i._root=v,i._tail=m,i.__hash=void 0,i.__altered=!0,i):makeList(i._origin,i._capacity,i._level,v,m):i}function updateVNode(i,s,u,m,v,_){var M,W=m>>>u&$,X=i&&W0){var Y=i&&i.array[W],Z=updateVNode(Y,s,u-j,m,v,_);return Z===Y?i:((M=editableVNode(i,s)).array[W]=Z,M)}return X&&i.array[W]===v?i:(SetRef(_),M=editableVNode(i,s),void 0===v&&W===M.array.length-1?M.array.pop():M.array[W]=v,M)}function editableVNode(i,s){return s&&i&&s===i.ownerID?i:new VNode(i?i.array.slice():[],s)}function listNodeFor(i,s){if(s>=getTailOffset(i._capacity))return i._tail;if(s<1<0;)u=u.array[s>>>m&$],m-=j;return u}}function setListBounds(i,s,u){void 0!==s&&(s|=0),void 0!==u&&(u|=0);var m=i.__ownerID||new OwnerID,v=i._origin,_=i._capacity,M=v+s,W=void 0===u?_:u<0?_+u:v+u;if(M===v&&W===_)return i;if(M>=W)return i.clear();for(var X=i._level,Y=i._root,Z=0;M+Z<0;)Y=new VNode(Y&&Y.array.length?[void 0,Y]:[],m),Z+=1<<(X+=j);Z&&(M+=Z,v+=Z,W+=Z,_+=Z);for(var ee=getTailOffset(_),ie=getTailOffset(W);ie>=1<ee?new VNode([],m):ae;if(ae&&ie>ee&&M<_&&ae.array.length){for(var le=Y=editableVNode(Y,m),pe=X;pe>j;pe-=j){var de=ee>>>pe&$;le=le.array[de]=editableVNode(le.array[de],m)}le.array[ee>>>j&$]=ae}if(W<_&&(ce=ce&&ce.removeAfter(m,0,W)),M>=ie)M-=ie,W-=ie,X=j,Y=null,ce=ce&&ce.removeBefore(m,0,M);else if(M>v||ie>>X&$;if(fe!==ie>>>X&$)break;fe&&(Z+=(1<v&&(Y=Y.removeBefore(m,X,M-Z)),Y&&iev&&(v=M.size),isIterable(j)||(M=M.map((function(i){return fromJS(i)}))),m.push(M)}return v>i.size&&(i=i.setSize(v)),mergeIntoCollectionWith(i,s,m)}function getTailOffset(i){return i>>j<=M&&j.size>=2*_.size?(m=(v=j.filter((function(i,s){return void 0!==i&&$!==s}))).toKeyedSeq().map((function(i){return i[0]})).flip().toMap(),i.__ownerID&&(m.__ownerID=v.__ownerID=i.__ownerID)):(m=_.remove(s),v=$===j.size-1?j.pop():j.set($,void 0))}else if(X){if(u===j.get($)[1])return i;m=_,v=j.set($,[s,u])}else m=_.set(s,j.size),v=j.set(j.size,[s,u]);return i.__ownerID?(i.size=m.size,i._map=m,i._list=v,i.__hash=void 0,i):makeOrderedMap(m,v)}function ToKeyedSequence(i,s){this._iter=i,this._useKeys=s,this.size=i.size}function ToIndexedSequence(i){this._iter=i,this.size=i.size}function ToSetSequence(i){this._iter=i,this.size=i.size}function FromEntriesSequence(i){this._iter=i,this.size=i.size}function flipFactory(i){var s=makeSequence(i);return s._iter=i,s.size=i.size,s.flip=function(){return i},s.reverse=function(){var s=i.reverse.apply(this);return s.flip=function(){return i.reverse()},s},s.has=function(s){return i.includes(s)},s.includes=function(s){return i.has(s)},s.cacheResult=cacheResultThrough,s.__iterateUncached=function(s,u){var m=this;return i.__iterate((function(i,u){return!1!==s(u,i,m)}),u)},s.__iteratorUncached=function(s,u){if(s===ie){var m=i.__iterator(s,u);return new Iterator((function(){var i=m.next();if(!i.done){var s=i.value[0];i.value[0]=i.value[1],i.value[1]=s}return i}))}return i.__iterator(s===ee?Z:ee,u)},s}function mapFactory(i,s,u){var m=makeSequence(i);return m.size=i.size,m.has=function(s){return i.has(s)},m.get=function(m,v){var _=i.get(m,W);return _===W?v:s.call(u,_,m,i)},m.__iterateUncached=function(m,v){var _=this;return i.__iterate((function(i,v,j){return!1!==m(s.call(u,i,v,j),v,_)}),v)},m.__iteratorUncached=function(m,v){var _=i.__iterator(ie,v);return new Iterator((function(){var v=_.next();if(v.done)return v;var j=v.value,M=j[0];return iteratorValue(m,M,s.call(u,j[1],M,i),v)}))},m}function reverseFactory(i,s){var u=makeSequence(i);return u._iter=i,u.size=i.size,u.reverse=function(){return i},i.flip&&(u.flip=function(){var s=flipFactory(i);return s.reverse=function(){return i.flip()},s}),u.get=function(u,m){return i.get(s?u:-1-u,m)},u.has=function(u){return i.has(s?u:-1-u)},u.includes=function(s){return i.includes(s)},u.cacheResult=cacheResultThrough,u.__iterate=function(s,u){var m=this;return i.__iterate((function(i,u){return s(i,u,m)}),!u)},u.__iterator=function(s,u){return i.__iterator(s,!u)},u}function filterFactory(i,s,u,m){var v=makeSequence(i);return m&&(v.has=function(m){var v=i.get(m,W);return v!==W&&!!s.call(u,v,m,i)},v.get=function(m,v){var _=i.get(m,W);return _!==W&&s.call(u,_,m,i)?_:v}),v.__iterateUncached=function(v,_){var j=this,M=0;return i.__iterate((function(i,_,$){if(s.call(u,i,_,$))return M++,v(i,m?_:M-1,j)}),_),M},v.__iteratorUncached=function(v,_){var j=i.__iterator(ie,_),M=0;return new Iterator((function(){for(;;){var _=j.next();if(_.done)return _;var $=_.value,W=$[0],X=$[1];if(s.call(u,X,W,i))return iteratorValue(v,m?W:M++,X,_)}}))},v}function countByFactory(i,s,u){var m=Map().asMutable();return i.__iterate((function(v,_){m.update(s.call(u,v,_,i),0,(function(i){return i+1}))})),m.asImmutable()}function groupByFactory(i,s,u){var m=isKeyed(i),v=(isOrdered(i)?OrderedMap():Map()).asMutable();i.__iterate((function(_,j){v.update(s.call(u,_,j,i),(function(i){return(i=i||[]).push(m?[j,_]:_),i}))}));var _=iterableClass(i);return v.map((function(s){return reify(i,_(s))}))}function sliceFactory(i,s,u,m){var v=i.size;if(void 0!==s&&(s|=0),void 0!==u&&(u===1/0?u=v:u|=0),wholeSlice(s,u,v))return i;var _=resolveBegin(s,v),j=resolveEnd(u,v);if(_!=_||j!=j)return sliceFactory(i.toSeq().cacheResult(),s,u,m);var M,$=j-_;$==$&&(M=$<0?0:$);var W=makeSequence(i);return W.size=0===M?M:i.size&&M||void 0,!m&&isSeq(i)&&M>=0&&(W.get=function(s,u){return(s=wrapIndex(this,s))>=0&&sM)return iteratorDone();var i=v.next();return m||s===ee?i:iteratorValue(s,$-1,s===Z?void 0:i.value[1],i)}))},W}function takeWhileFactory(i,s,u){var m=makeSequence(i);return m.__iterateUncached=function(m,v){var _=this;if(v)return this.cacheResult().__iterate(m,v);var j=0;return i.__iterate((function(i,v,M){return s.call(u,i,v,M)&&++j&&m(i,v,_)})),j},m.__iteratorUncached=function(m,v){var _=this;if(v)return this.cacheResult().__iterator(m,v);var j=i.__iterator(ie,v),M=!0;return new Iterator((function(){if(!M)return iteratorDone();var i=j.next();if(i.done)return i;var v=i.value,$=v[0],W=v[1];return s.call(u,W,$,_)?m===ie?i:iteratorValue(m,$,W,i):(M=!1,iteratorDone())}))},m}function skipWhileFactory(i,s,u,m){var v=makeSequence(i);return v.__iterateUncached=function(v,_){var j=this;if(_)return this.cacheResult().__iterate(v,_);var M=!0,$=0;return i.__iterate((function(i,_,W){if(!M||!(M=s.call(u,i,_,W)))return $++,v(i,m?_:$-1,j)})),$},v.__iteratorUncached=function(v,_){var j=this;if(_)return this.cacheResult().__iterator(v,_);var M=i.__iterator(ie,_),$=!0,W=0;return new Iterator((function(){var i,_,X;do{if((i=M.next()).done)return m||v===ee?i:iteratorValue(v,W++,v===Z?void 0:i.value[1],i);var Y=i.value;_=Y[0],X=Y[1],$&&($=s.call(u,X,_,j))}while($);return v===ie?i:iteratorValue(v,_,X,i)}))},v}function concatFactory(i,s){var u=isKeyed(i),m=[i].concat(s).map((function(i){return isIterable(i)?u&&(i=KeyedIterable(i)):i=u?keyedSeqFromValue(i):indexedSeqFromValue(Array.isArray(i)?i:[i]),i})).filter((function(i){return 0!==i.size}));if(0===m.length)return i;if(1===m.length){var v=m[0];if(v===i||u&&isKeyed(v)||isIndexed(i)&&isIndexed(v))return v}var _=new ArraySeq(m);return u?_=_.toKeyedSeq():isIndexed(i)||(_=_.toSetSeq()),(_=_.flatten(!0)).size=m.reduce((function(i,s){if(void 0!==i){var u=s.size;if(void 0!==u)return i+u}}),0),_}function flattenFactory(i,s,u){var m=makeSequence(i);return m.__iterateUncached=function(m,v){var _=0,j=!1;function flatDeep(i,M){var $=this;i.__iterate((function(i,v){return(!s||M0}function zipWithFactory(i,s,u){var m=makeSequence(i);return m.size=new ArraySeq(u).map((function(i){return i.size})).min(),m.__iterate=function(i,s){for(var u,m=this.__iterator(ee,s),v=0;!(u=m.next()).done&&!1!==i(u.value,v++,this););return v},m.__iteratorUncached=function(i,m){var v=u.map((function(i){return i=Iterable(i),getIterator(m?i.reverse():i)})),_=0,j=!1;return new Iterator((function(){var u;return j||(u=v.map((function(i){return i.next()})),j=u.some((function(i){return i.done}))),j?iteratorDone():iteratorValue(i,_++,s.apply(null,u.map((function(i){return i.value}))))}))},m}function reify(i,s){return isSeq(i)?s:i.constructor(s)}function validateEntry(i){if(i!==Object(i))throw new TypeError("Expected [K, V] tuple: "+i)}function resolveSize(i){return assertNotInfinite(i.size),ensureSize(i)}function iterableClass(i){return isKeyed(i)?KeyedIterable:isIndexed(i)?IndexedIterable:SetIterable}function makeSequence(i){return Object.create((isKeyed(i)?KeyedSeq:isIndexed(i)?IndexedSeq:SetSeq).prototype)}function cacheResultThrough(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):Seq.prototype.cacheResult.call(this)}function defaultComparator(i,s){return i>s?1:i=0;u--)s={value:arguments[u],next:s};return this.__ownerID?(this.size=i,this._head=s,this.__hash=void 0,this.__altered=!0,this):makeStack(i,s)},Stack.prototype.pushAll=function(i){if(0===(i=IndexedIterable(i)).size)return this;assertNotInfinite(i.size);var s=this.size,u=this._head;return i.reverse().forEach((function(i){s++,u={value:i,next:u}})),this.__ownerID?(this.size=s,this._head=u,this.__hash=void 0,this.__altered=!0,this):makeStack(s,u)},Stack.prototype.pop=function(){return this.slice(1)},Stack.prototype.unshift=function(){return this.push.apply(this,arguments)},Stack.prototype.unshiftAll=function(i){return this.pushAll(i)},Stack.prototype.shift=function(){return this.pop.apply(this,arguments)},Stack.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):emptyStack()},Stack.prototype.slice=function(i,s){if(wholeSlice(i,s,this.size))return this;var u=resolveBegin(i,this.size);if(resolveEnd(s,this.size)!==this.size)return IndexedCollection.prototype.slice.call(this,i,s);for(var m=this.size-u,v=this._head;u--;)v=v.next;return this.__ownerID?(this.size=m,this._head=v,this.__hash=void 0,this.__altered=!0,this):makeStack(m,v)},Stack.prototype.__ensureOwner=function(i){return i===this.__ownerID?this:i?makeStack(this.size,this._head,i,this.__hash):(this.__ownerID=i,this.__altered=!1,this)},Stack.prototype.__iterate=function(i,s){if(s)return this.reverse().__iterate(i);for(var u=0,m=this._head;m&&!1!==i(m.value,u++,this);)m=m.next;return u},Stack.prototype.__iterator=function(i,s){if(s)return this.reverse().__iterator(i);var u=0,m=this._head;return new Iterator((function(){if(m){var s=m.value;return m=m.next,iteratorValue(i,u++,s)}return iteratorDone()}))},Stack.isStack=isStack;var pt,ht="@@__IMMUTABLE_STACK__@@",dt=Stack.prototype;function makeStack(i,s,u,m){var v=Object.create(dt);return v.size=i,v._head=s,v.__ownerID=u,v.__hash=m,v.__altered=!1,v}function emptyStack(){return pt||(pt=makeStack(0))}function mixin(i,s){var keyCopier=function(u){i.prototype[u]=s[u]};return Object.keys(s).forEach(keyCopier),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(s).forEach(keyCopier),i}dt[ht]=!0,dt.withMutations=He.withMutations,dt.asMutable=He.asMutable,dt.asImmutable=He.asImmutable,dt.wasAltered=He.wasAltered,Iterable.Iterator=Iterator,mixin(Iterable,{toArray:function(){assertNotInfinite(this.size);var i=new Array(this.size||0);return this.valueSeq().__iterate((function(s,u){i[u]=s})),i},toIndexedSeq:function(){return new ToIndexedSequence(this)},toJS:function(){return this.toSeq().map((function(i){return i&&"function"==typeof i.toJS?i.toJS():i})).__toJS()},toJSON:function(){return this.toSeq().map((function(i){return i&&"function"==typeof i.toJSON?i.toJSON():i})).__toJS()},toKeyedSeq:function(){return new ToKeyedSequence(this,!0)},toMap:function(){return Map(this.toKeyedSeq())},toObject:function(){assertNotInfinite(this.size);var i={};return this.__iterate((function(s,u){i[u]=s})),i},toOrderedMap:function(){return OrderedMap(this.toKeyedSeq())},toOrderedSet:function(){return OrderedSet(isKeyed(this)?this.valueSeq():this)},toSet:function(){return Set(isKeyed(this)?this.valueSeq():this)},toSetSeq:function(){return new ToSetSequence(this)},toSeq:function(){return isIndexed(this)?this.toIndexedSeq():isKeyed(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Stack(isKeyed(this)?this.valueSeq():this)},toList:function(){return List(isKeyed(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(i,s){return 0===this.size?i+s:i+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+s},concat:function(){return reify(this,concatFactory(this,i.call(arguments,0)))},includes:function(i){return this.some((function(s){return is(s,i)}))},entries:function(){return this.__iterator(ie)},every:function(i,s){assertNotInfinite(this.size);var u=!0;return this.__iterate((function(m,v,_){if(!i.call(s,m,v,_))return u=!1,!1})),u},filter:function(i,s){return reify(this,filterFactory(this,i,s,!0))},find:function(i,s,u){var m=this.findEntry(i,s);return m?m[1]:u},forEach:function(i,s){return assertNotInfinite(this.size),this.__iterate(s?i.bind(s):i)},join:function(i){assertNotInfinite(this.size),i=void 0!==i?""+i:",";var s="",u=!0;return this.__iterate((function(m){u?u=!1:s+=i,s+=null!=m?m.toString():""})),s},keys:function(){return this.__iterator(Z)},map:function(i,s){return reify(this,mapFactory(this,i,s))},reduce:function(i,s,u){var m,v;return assertNotInfinite(this.size),arguments.length<2?v=!0:m=s,this.__iterate((function(s,_,j){v?(v=!1,m=s):m=i.call(u,m,s,_,j)})),m},reduceRight:function(i,s,u){var m=this.toKeyedSeq().reverse();return m.reduce.apply(m,arguments)},reverse:function(){return reify(this,reverseFactory(this,!0))},slice:function(i,s){return reify(this,sliceFactory(this,i,s,!0))},some:function(i,s){return!this.every(not(i),s)},sort:function(i){return reify(this,sortFactory(this,i))},values:function(){return this.__iterator(ee)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(i,s){return ensureSize(i?this.toSeq().filter(i,s):this)},countBy:function(i,s){return countByFactory(this,i,s)},equals:function(i){return deepEqual(this,i)},entrySeq:function(){var i=this;if(i._cache)return new ArraySeq(i._cache);var s=i.toSeq().map(entryMapper).toIndexedSeq();return s.fromEntrySeq=function(){return i.toSeq()},s},filterNot:function(i,s){return this.filter(not(i),s)},findEntry:function(i,s,u){var m=u;return this.__iterate((function(u,v,_){if(i.call(s,u,v,_))return m=[v,u],!1})),m},findKey:function(i,s){var u=this.findEntry(i,s);return u&&u[0]},findLast:function(i,s,u){return this.toKeyedSeq().reverse().find(i,s,u)},findLastEntry:function(i,s,u){return this.toKeyedSeq().reverse().findEntry(i,s,u)},findLastKey:function(i,s){return this.toKeyedSeq().reverse().findKey(i,s)},first:function(){return this.find(returnTrue)},flatMap:function(i,s){return reify(this,flatMapFactory(this,i,s))},flatten:function(i){return reify(this,flattenFactory(this,i,!0))},fromEntrySeq:function(){return new FromEntriesSequence(this)},get:function(i,s){return this.find((function(s,u){return is(u,i)}),void 0,s)},getIn:function(i,s){for(var u,m=this,v=forceIterator(i);!(u=v.next()).done;){var _=u.value;if((m=m&&m.get?m.get(_,W):W)===W)return s}return m},groupBy:function(i,s){return groupByFactory(this,i,s)},has:function(i){return this.get(i,W)!==W},hasIn:function(i){return this.getIn(i,W)!==W},isSubset:function(i){return i="function"==typeof i.includes?i:Iterable(i),this.every((function(s){return i.includes(s)}))},isSuperset:function(i){return(i="function"==typeof i.isSubset?i:Iterable(i)).isSubset(this)},keyOf:function(i){return this.findKey((function(s){return is(s,i)}))},keySeq:function(){return this.toSeq().map(keyMapper).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(i){return this.toKeyedSeq().reverse().keyOf(i)},max:function(i){return maxFactory(this,i)},maxBy:function(i,s){return maxFactory(this,s,i)},min:function(i){return maxFactory(this,i?neg(i):defaultNegComparator)},minBy:function(i,s){return maxFactory(this,s?neg(s):defaultNegComparator,i)},rest:function(){return this.slice(1)},skip:function(i){return this.slice(Math.max(0,i))},skipLast:function(i){return reify(this,this.toSeq().reverse().skip(i).reverse())},skipWhile:function(i,s){return reify(this,skipWhileFactory(this,i,s,!0))},skipUntil:function(i,s){return this.skipWhile(not(i),s)},sortBy:function(i,s){return reify(this,sortFactory(this,s,i))},take:function(i){return this.slice(0,Math.max(0,i))},takeLast:function(i){return reify(this,this.toSeq().reverse().take(i).reverse())},takeWhile:function(i,s){return reify(this,takeWhileFactory(this,i,s))},takeUntil:function(i,s){return this.takeWhile(not(i),s)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=hashIterable(this))}});var mt=Iterable.prototype;mt[s]=!0,mt[le]=mt.values,mt.__toJS=mt.toArray,mt.__toStringMapper=quoteString,mt.inspect=mt.toSource=function(){return this.toString()},mt.chain=mt.flatMap,mt.contains=mt.includes,mixin(KeyedIterable,{flip:function(){return reify(this,flipFactory(this))},mapEntries:function(i,s){var u=this,m=0;return reify(this,this.toSeq().map((function(v,_){return i.call(s,[_,v],m++,u)})).fromEntrySeq())},mapKeys:function(i,s){var u=this;return reify(this,this.toSeq().flip().map((function(m,v){return i.call(s,m,v,u)})).flip())}});var yt=KeyedIterable.prototype;function keyMapper(i,s){return s}function entryMapper(i,s){return[s,i]}function not(i){return function(){return!i.apply(this,arguments)}}function neg(i){return function(){return-i.apply(this,arguments)}}function quoteString(i){return"string"==typeof i?JSON.stringify(i):String(i)}function defaultZipper(){return arrCopy(arguments)}function defaultNegComparator(i,s){return is?-1:0}function hashIterable(i){if(i.size===1/0)return 0;var s=isOrdered(i),u=isKeyed(i),m=s?1:0;return murmurHashOfSize(i.__iterate(u?s?function(i,s){m=31*m+hashMerge(hash(i),hash(s))|0}:function(i,s){m=m+hashMerge(hash(i),hash(s))|0}:s?function(i){m=31*m+hash(i)|0}:function(i){m=m+hash(i)|0}),m)}function murmurHashOfSize(i,s){return s=be(s,3432918353),s=be(s<<15|s>>>-15,461845907),s=be(s<<13|s>>>-13,5),s=be((s=(s+3864292196|0)^i)^s>>>16,2246822507),s=smi((s=be(s^s>>>13,3266489909))^s>>>16)}function hashMerge(i,s){return i^s+2654435769+(i<<6)+(i>>2)|0}return yt[u]=!0,yt[le]=mt.entries,yt.__toJS=mt.toObject,yt.__toStringMapper=function(i,s){return JSON.stringify(s)+": "+quoteString(i)},mixin(IndexedIterable,{toKeyedSeq:function(){return new ToKeyedSequence(this,!1)},filter:function(i,s){return reify(this,filterFactory(this,i,s,!1))},findIndex:function(i,s){var u=this.findEntry(i,s);return u?u[0]:-1},indexOf:function(i){var s=this.keyOf(i);return void 0===s?-1:s},lastIndexOf:function(i){var s=this.lastKeyOf(i);return void 0===s?-1:s},reverse:function(){return reify(this,reverseFactory(this,!1))},slice:function(i,s){return reify(this,sliceFactory(this,i,s,!1))},splice:function(i,s){var u=arguments.length;if(s=Math.max(0|s,0),0===u||2===u&&!s)return this;i=resolveBegin(i,i<0?this.count():this.size);var m=this.slice(0,i);return reify(this,1===u?m:m.concat(arrCopy(arguments,2),this.slice(i+s)))},findLastIndex:function(i,s){var u=this.findLastEntry(i,s);return u?u[0]:-1},first:function(){return this.get(0)},flatten:function(i){return reify(this,flattenFactory(this,i,!1))},get:function(i,s){return(i=wrapIndex(this,i))<0||this.size===1/0||void 0!==this.size&&i>this.size?s:this.find((function(s,u){return u===i}),void 0,s)},has:function(i){return(i=wrapIndex(this,i))>=0&&(void 0!==this.size?this.size===1/0||i{"function"==typeof Object.create?i.exports=function inherits(i,s){s&&(i.super_=s,i.prototype=Object.create(s.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}))}:i.exports=function inherits(i,s){if(s){i.super_=s;var TempCtor=function(){};TempCtor.prototype=s.prototype,i.prototype=new TempCtor,i.prototype.constructor=i}}},35823:i=>{i.exports=function(i,s,u,m){var v=new Blob(void 0!==m?[m,i]:[i],{type:u||"application/octet-stream"});if(void 0!==window.navigator.msSaveBlob)window.navigator.msSaveBlob(v,s);else{var _=window.URL&&window.URL.createObjectURL?window.URL.createObjectURL(v):window.webkitURL.createObjectURL(v),j=document.createElement("a");j.style.display="none",j.href=_,j.setAttribute("download",s),void 0===j.download&&j.setAttribute("target","_blank"),document.body.appendChild(j),j.click(),setTimeout((function(){document.body.removeChild(j),window.URL.revokeObjectURL(_)}),200)}}},91296:(i,s,u)=>{var m=NaN,v="[object Symbol]",_=/^\s+|\s+$/g,j=/^[-+]0x[0-9a-f]+$/i,M=/^0b[01]+$/i,$=/^0o[0-7]+$/i,W=parseInt,X="object"==typeof u.g&&u.g&&u.g.Object===Object&&u.g,Y="object"==typeof self&&self&&self.Object===Object&&self,Z=X||Y||Function("return this")(),ee=Object.prototype.toString,ie=Math.max,ae=Math.min,now=function(){return Z.Date.now()};function isObject(i){var s=typeof i;return!!i&&("object"==s||"function"==s)}function toNumber(i){if("number"==typeof i)return i;if(function isSymbol(i){return"symbol"==typeof i||function isObjectLike(i){return!!i&&"object"==typeof i}(i)&&ee.call(i)==v}(i))return m;if(isObject(i)){var s="function"==typeof i.valueOf?i.valueOf():i;i=isObject(s)?s+"":s}if("string"!=typeof i)return 0===i?i:+i;i=i.replace(_,"");var u=M.test(i);return u||$.test(i)?W(i.slice(2),u?2:8):j.test(i)?m:+i}i.exports=function debounce(i,s,u){var m,v,_,j,M,$,W=0,X=!1,Y=!1,Z=!0;if("function"!=typeof i)throw new TypeError("Expected a function");function invokeFunc(s){var u=m,_=v;return m=v=void 0,W=s,j=i.apply(_,u)}function shouldInvoke(i){var u=i-$;return void 0===$||u>=s||u<0||Y&&i-W>=_}function timerExpired(){var i=now();if(shouldInvoke(i))return trailingEdge(i);M=setTimeout(timerExpired,function remainingWait(i){var u=s-(i-$);return Y?ae(u,_-(i-W)):u}(i))}function trailingEdge(i){return M=void 0,Z&&m?invokeFunc(i):(m=v=void 0,j)}function debounced(){var i=now(),u=shouldInvoke(i);if(m=arguments,v=this,$=i,u){if(void 0===M)return function leadingEdge(i){return W=i,M=setTimeout(timerExpired,s),X?invokeFunc(i):j}($);if(Y)return M=setTimeout(timerExpired,s),invokeFunc($)}return void 0===M&&(M=setTimeout(timerExpired,s)),j}return s=toNumber(s)||0,isObject(u)&&(X=!!u.leading,_=(Y="maxWait"in u)?ie(toNumber(u.maxWait)||0,s):_,Z="trailing"in u?!!u.trailing:Z),debounced.cancel=function cancel(){void 0!==M&&clearTimeout(M),W=0,m=$=v=M=void 0},debounced.flush=function flush(){return void 0===M?j:trailingEdge(now())},debounced}},18552:(i,s,u)=>{var m=u(10852)(u(55639),"DataView");i.exports=m},1989:(i,s,u)=>{var m=u(51789),v=u(80401),_=u(57667),j=u(21327),M=u(81866);function Hash(i){var s=-1,u=null==i?0:i.length;for(this.clear();++s{var m=u(3118),v=u(9435);function LazyWrapper(i){this.__wrapped__=i,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}LazyWrapper.prototype=m(v.prototype),LazyWrapper.prototype.constructor=LazyWrapper,i.exports=LazyWrapper},38407:(i,s,u)=>{var m=u(27040),v=u(14125),_=u(82117),j=u(67518),M=u(54705);function ListCache(i){var s=-1,u=null==i?0:i.length;for(this.clear();++s{var m=u(3118),v=u(9435);function LodashWrapper(i,s){this.__wrapped__=i,this.__actions__=[],this.__chain__=!!s,this.__index__=0,this.__values__=void 0}LodashWrapper.prototype=m(v.prototype),LodashWrapper.prototype.constructor=LodashWrapper,i.exports=LodashWrapper},57071:(i,s,u)=>{var m=u(10852)(u(55639),"Map");i.exports=m},83369:(i,s,u)=>{var m=u(24785),v=u(11285),_=u(96e3),j=u(49916),M=u(95265);function MapCache(i){var s=-1,u=null==i?0:i.length;for(this.clear();++s{var m=u(10852)(u(55639),"Promise");i.exports=m},58525:(i,s,u)=>{var m=u(10852)(u(55639),"Set");i.exports=m},88668:(i,s,u)=>{var m=u(83369),v=u(90619),_=u(72385);function SetCache(i){var s=-1,u=null==i?0:i.length;for(this.__data__=new m;++s{var m=u(38407),v=u(37465),_=u(63779),j=u(67599),M=u(44758),$=u(34309);function Stack(i){var s=this.__data__=new m(i);this.size=s.size}Stack.prototype.clear=v,Stack.prototype.delete=_,Stack.prototype.get=j,Stack.prototype.has=M,Stack.prototype.set=$,i.exports=Stack},62705:(i,s,u)=>{var m=u(55639).Symbol;i.exports=m},11149:(i,s,u)=>{var m=u(55639).Uint8Array;i.exports=m},70577:(i,s,u)=>{var m=u(10852)(u(55639),"WeakMap");i.exports=m},96874:i=>{i.exports=function apply(i,s,u){switch(u.length){case 0:return i.call(s);case 1:return i.call(s,u[0]);case 2:return i.call(s,u[0],u[1]);case 3:return i.call(s,u[0],u[1],u[2])}return i.apply(s,u)}},77412:i=>{i.exports=function arrayEach(i,s){for(var u=-1,m=null==i?0:i.length;++u{i.exports=function arrayFilter(i,s){for(var u=-1,m=null==i?0:i.length,v=0,_=[];++u{var m=u(42118);i.exports=function arrayIncludes(i,s){return!!(null==i?0:i.length)&&m(i,s,0)>-1}},14636:(i,s,u)=>{var m=u(22545),v=u(35694),_=u(1469),j=u(44144),M=u(65776),$=u(36719),W=Object.prototype.hasOwnProperty;i.exports=function arrayLikeKeys(i,s){var u=_(i),X=!u&&v(i),Y=!u&&!X&&j(i),Z=!u&&!X&&!Y&&$(i),ee=u||X||Y||Z,ie=ee?m(i.length,String):[],ae=ie.length;for(var ce in i)!s&&!W.call(i,ce)||ee&&("length"==ce||Y&&("offset"==ce||"parent"==ce)||Z&&("buffer"==ce||"byteLength"==ce||"byteOffset"==ce)||M(ce,ae))||ie.push(ce);return ie}},29932:i=>{i.exports=function arrayMap(i,s){for(var u=-1,m=null==i?0:i.length,v=Array(m);++u{i.exports=function arrayPush(i,s){for(var u=-1,m=s.length,v=i.length;++u{i.exports=function arrayReduce(i,s,u,m){var v=-1,_=null==i?0:i.length;for(m&&_&&(u=i[++v]);++v<_;)u=s(u,i[v],v,i);return u}},82908:i=>{i.exports=function arraySome(i,s){for(var u=-1,m=null==i?0:i.length;++u{i.exports=function asciiToArray(i){return i.split("")}},49029:i=>{var s=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;i.exports=function asciiWords(i){return i.match(s)||[]}},86556:(i,s,u)=>{var m=u(89465),v=u(77813);i.exports=function assignMergeValue(i,s,u){(void 0!==u&&!v(i[s],u)||void 0===u&&!(s in i))&&m(i,s,u)}},34865:(i,s,u)=>{var m=u(89465),v=u(77813),_=Object.prototype.hasOwnProperty;i.exports=function assignValue(i,s,u){var j=i[s];_.call(i,s)&&v(j,u)&&(void 0!==u||s in i)||m(i,s,u)}},18470:(i,s,u)=>{var m=u(77813);i.exports=function assocIndexOf(i,s){for(var u=i.length;u--;)if(m(i[u][0],s))return u;return-1}},44037:(i,s,u)=>{var m=u(98363),v=u(3674);i.exports=function baseAssign(i,s){return i&&m(s,v(s),i)}},63886:(i,s,u)=>{var m=u(98363),v=u(81704);i.exports=function baseAssignIn(i,s){return i&&m(s,v(s),i)}},89465:(i,s,u)=>{var m=u(38777);i.exports=function baseAssignValue(i,s,u){"__proto__"==s&&m?m(i,s,{configurable:!0,enumerable:!0,value:u,writable:!0}):i[s]=u}},85990:(i,s,u)=>{var m=u(46384),v=u(77412),_=u(34865),j=u(44037),M=u(63886),$=u(64626),W=u(278),X=u(18805),Y=u(1911),Z=u(58234),ee=u(46904),ie=u(64160),ae=u(43824),ce=u(29148),le=u(38517),pe=u(1469),de=u(44144),fe=u(56688),ye=u(13218),be=u(72928),_e=u(3674),we=u(81704),Se="[object Arguments]",xe="[object Function]",Pe="[object Object]",Ie={};Ie[Se]=Ie["[object Array]"]=Ie["[object ArrayBuffer]"]=Ie["[object DataView]"]=Ie["[object Boolean]"]=Ie["[object Date]"]=Ie["[object Float32Array]"]=Ie["[object Float64Array]"]=Ie["[object Int8Array]"]=Ie["[object Int16Array]"]=Ie["[object Int32Array]"]=Ie["[object Map]"]=Ie["[object Number]"]=Ie[Pe]=Ie["[object RegExp]"]=Ie["[object Set]"]=Ie["[object String]"]=Ie["[object Symbol]"]=Ie["[object Uint8Array]"]=Ie["[object Uint8ClampedArray]"]=Ie["[object Uint16Array]"]=Ie["[object Uint32Array]"]=!0,Ie["[object Error]"]=Ie[xe]=Ie["[object WeakMap]"]=!1,i.exports=function baseClone(i,s,u,Te,Re,qe){var ze,Ve=1&s,We=2&s,He=4&s;if(u&&(ze=Re?u(i,Te,Re,qe):u(i)),void 0!==ze)return ze;if(!ye(i))return i;var Xe=pe(i);if(Xe){if(ze=ae(i),!Ve)return W(i,ze)}else{var Ye=ie(i),Qe=Ye==xe||"[object GeneratorFunction]"==Ye;if(de(i))return $(i,Ve);if(Ye==Pe||Ye==Se||Qe&&!Re){if(ze=We||Qe?{}:le(i),!Ve)return We?Y(i,M(ze,i)):X(i,j(ze,i))}else{if(!Ie[Ye])return Re?i:{};ze=ce(i,Ye,Ve)}}qe||(qe=new m);var et=qe.get(i);if(et)return et;qe.set(i,ze),be(i)?i.forEach((function(m){ze.add(baseClone(m,s,u,m,i,qe))})):fe(i)&&i.forEach((function(m,v){ze.set(v,baseClone(m,s,u,v,i,qe))}));var tt=Xe?void 0:(He?We?ee:Z:We?we:_e)(i);return v(tt||i,(function(m,v){tt&&(m=i[v=m]),_(ze,v,baseClone(m,s,u,v,i,qe))})),ze}},3118:(i,s,u)=>{var m=u(13218),v=Object.create,_=function(){function object(){}return function(i){if(!m(i))return{};if(v)return v(i);object.prototype=i;var s=new object;return object.prototype=void 0,s}}();i.exports=_},89881:(i,s,u)=>{var m=u(47816),v=u(99291)(m);i.exports=v},41848:i=>{i.exports=function baseFindIndex(i,s,u,m){for(var v=i.length,_=u+(m?1:-1);m?_--:++_{var m=u(62488),v=u(37285);i.exports=function baseFlatten(i,s,u,_,j){var M=-1,$=i.length;for(u||(u=v),j||(j=[]);++M<$;){var W=i[M];s>0&&u(W)?s>1?baseFlatten(W,s-1,u,_,j):m(j,W):_||(j[j.length]=W)}return j}},28483:(i,s,u)=>{var m=u(25063)();i.exports=m},47816:(i,s,u)=>{var m=u(28483),v=u(3674);i.exports=function baseForOwn(i,s){return i&&m(i,s,v)}},97786:(i,s,u)=>{var m=u(71811),v=u(40327);i.exports=function baseGet(i,s){for(var u=0,_=(s=m(s,i)).length;null!=i&&u<_;)i=i[v(s[u++])];return u&&u==_?i:void 0}},68866:(i,s,u)=>{var m=u(62488),v=u(1469);i.exports=function baseGetAllKeys(i,s,u){var _=s(i);return v(i)?_:m(_,u(i))}},44239:(i,s,u)=>{var m=u(62705),v=u(89607),_=u(2333),j=m?m.toStringTag:void 0;i.exports=function baseGetTag(i){return null==i?void 0===i?"[object Undefined]":"[object Null]":j&&j in Object(i)?v(i):_(i)}},13:i=>{i.exports=function baseHasIn(i,s){return null!=i&&s in Object(i)}},42118:(i,s,u)=>{var m=u(41848),v=u(62722),_=u(42351);i.exports=function baseIndexOf(i,s,u){return s==s?_(i,s,u):m(i,v,u)}},9454:(i,s,u)=>{var m=u(44239),v=u(37005);i.exports=function baseIsArguments(i){return v(i)&&"[object Arguments]"==m(i)}},90939:(i,s,u)=>{var m=u(2492),v=u(37005);i.exports=function baseIsEqual(i,s,u,_,j){return i===s||(null==i||null==s||!v(i)&&!v(s)?i!=i&&s!=s:m(i,s,u,_,baseIsEqual,j))}},2492:(i,s,u)=>{var m=u(46384),v=u(67114),_=u(18351),j=u(16096),M=u(64160),$=u(1469),W=u(44144),X=u(36719),Y="[object Arguments]",Z="[object Array]",ee="[object Object]",ie=Object.prototype.hasOwnProperty;i.exports=function baseIsEqualDeep(i,s,u,ae,ce,le){var pe=$(i),de=$(s),fe=pe?Z:M(i),ye=de?Z:M(s),be=(fe=fe==Y?ee:fe)==ee,_e=(ye=ye==Y?ee:ye)==ee,we=fe==ye;if(we&&W(i)){if(!W(s))return!1;pe=!0,be=!1}if(we&&!be)return le||(le=new m),pe||X(i)?v(i,s,u,ae,ce,le):_(i,s,fe,u,ae,ce,le);if(!(1&u)){var Se=be&&ie.call(i,"__wrapped__"),xe=_e&&ie.call(s,"__wrapped__");if(Se||xe){var Pe=Se?i.value():i,Ie=xe?s.value():s;return le||(le=new m),ce(Pe,Ie,u,ae,le)}}return!!we&&(le||(le=new m),j(i,s,u,ae,ce,le))}},25588:(i,s,u)=>{var m=u(64160),v=u(37005);i.exports=function baseIsMap(i){return v(i)&&"[object Map]"==m(i)}},2958:(i,s,u)=>{var m=u(46384),v=u(90939);i.exports=function baseIsMatch(i,s,u,_){var j=u.length,M=j,$=!_;if(null==i)return!M;for(i=Object(i);j--;){var W=u[j];if($&&W[2]?W[1]!==i[W[0]]:!(W[0]in i))return!1}for(;++j{i.exports=function baseIsNaN(i){return i!=i}},28458:(i,s,u)=>{var m=u(23560),v=u(15346),_=u(13218),j=u(80346),M=/^\[object .+?Constructor\]$/,$=Function.prototype,W=Object.prototype,X=$.toString,Y=W.hasOwnProperty,Z=RegExp("^"+X.call(Y).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");i.exports=function baseIsNative(i){return!(!_(i)||v(i))&&(m(i)?Z:M).test(j(i))}},29221:(i,s,u)=>{var m=u(64160),v=u(37005);i.exports=function baseIsSet(i){return v(i)&&"[object Set]"==m(i)}},38749:(i,s,u)=>{var m=u(44239),v=u(41780),_=u(37005),j={};j["[object Float32Array]"]=j["[object Float64Array]"]=j["[object Int8Array]"]=j["[object Int16Array]"]=j["[object Int32Array]"]=j["[object Uint8Array]"]=j["[object Uint8ClampedArray]"]=j["[object Uint16Array]"]=j["[object Uint32Array]"]=!0,j["[object Arguments]"]=j["[object Array]"]=j["[object ArrayBuffer]"]=j["[object Boolean]"]=j["[object DataView]"]=j["[object Date]"]=j["[object Error]"]=j["[object Function]"]=j["[object Map]"]=j["[object Number]"]=j["[object Object]"]=j["[object RegExp]"]=j["[object Set]"]=j["[object String]"]=j["[object WeakMap]"]=!1,i.exports=function baseIsTypedArray(i){return _(i)&&v(i.length)&&!!j[m(i)]}},67206:(i,s,u)=>{var m=u(91573),v=u(16432),_=u(6557),j=u(1469),M=u(39601);i.exports=function baseIteratee(i){return"function"==typeof i?i:null==i?_:"object"==typeof i?j(i)?v(i[0],i[1]):m(i):M(i)}},280:(i,s,u)=>{var m=u(25726),v=u(86916),_=Object.prototype.hasOwnProperty;i.exports=function baseKeys(i){if(!m(i))return v(i);var s=[];for(var u in Object(i))_.call(i,u)&&"constructor"!=u&&s.push(u);return s}},10313:(i,s,u)=>{var m=u(13218),v=u(25726),_=u(33498),j=Object.prototype.hasOwnProperty;i.exports=function baseKeysIn(i){if(!m(i))return _(i);var s=v(i),u=[];for(var M in i)("constructor"!=M||!s&&j.call(i,M))&&u.push(M);return u}},9435:i=>{i.exports=function baseLodash(){}},91573:(i,s,u)=>{var m=u(2958),v=u(1499),_=u(42634);i.exports=function baseMatches(i){var s=v(i);return 1==s.length&&s[0][2]?_(s[0][0],s[0][1]):function(u){return u===i||m(u,i,s)}}},16432:(i,s,u)=>{var m=u(90939),v=u(27361),_=u(79095),j=u(15403),M=u(89162),$=u(42634),W=u(40327);i.exports=function baseMatchesProperty(i,s){return j(i)&&M(s)?$(W(i),s):function(u){var j=v(u,i);return void 0===j&&j===s?_(u,i):m(s,j,3)}}},42980:(i,s,u)=>{var m=u(46384),v=u(86556),_=u(28483),j=u(59783),M=u(13218),$=u(81704),W=u(36390);i.exports=function baseMerge(i,s,u,X,Y){i!==s&&_(s,(function(_,$){if(Y||(Y=new m),M(_))j(i,s,$,u,baseMerge,X,Y);else{var Z=X?X(W(i,$),_,$+"",i,s,Y):void 0;void 0===Z&&(Z=_),v(i,$,Z)}}),$)}},59783:(i,s,u)=>{var m=u(86556),v=u(64626),_=u(77133),j=u(278),M=u(38517),$=u(35694),W=u(1469),X=u(29246),Y=u(44144),Z=u(23560),ee=u(13218),ie=u(68630),ae=u(36719),ce=u(36390),le=u(59881);i.exports=function baseMergeDeep(i,s,u,pe,de,fe,ye){var be=ce(i,u),_e=ce(s,u),we=ye.get(_e);if(we)m(i,u,we);else{var Se=fe?fe(be,_e,u+"",i,s,ye):void 0,xe=void 0===Se;if(xe){var Pe=W(_e),Ie=!Pe&&Y(_e),Te=!Pe&&!Ie&&ae(_e);Se=_e,Pe||Ie||Te?W(be)?Se=be:X(be)?Se=j(be):Ie?(xe=!1,Se=v(_e,!0)):Te?(xe=!1,Se=_(_e,!0)):Se=[]:ie(_e)||$(_e)?(Se=be,$(be)?Se=le(be):ee(be)&&!Z(be)||(Se=M(_e))):xe=!1}xe&&(ye.set(_e,Se),de(Se,_e,pe,fe,ye),ye.delete(_e)),m(i,u,Se)}}},40371:i=>{i.exports=function baseProperty(i){return function(s){return null==s?void 0:s[i]}}},79152:(i,s,u)=>{var m=u(97786);i.exports=function basePropertyDeep(i){return function(s){return m(s,i)}}},18674:i=>{i.exports=function basePropertyOf(i){return function(s){return null==i?void 0:i[s]}}},10107:i=>{i.exports=function baseReduce(i,s,u,m,v){return v(i,(function(i,v,_){u=m?(m=!1,i):s(u,i,v,_)})),u}},5976:(i,s,u)=>{var m=u(6557),v=u(45357),_=u(30061);i.exports=function baseRest(i,s){return _(v(i,s,m),i+"")}},10611:(i,s,u)=>{var m=u(34865),v=u(71811),_=u(65776),j=u(13218),M=u(40327);i.exports=function baseSet(i,s,u,$){if(!j(i))return i;for(var W=-1,X=(s=v(s,i)).length,Y=X-1,Z=i;null!=Z&&++W{var m=u(6557),v=u(89250),_=v?function(i,s){return v.set(i,s),i}:m;i.exports=_},56560:(i,s,u)=>{var m=u(75703),v=u(38777),_=u(6557),j=v?function(i,s){return v(i,"toString",{configurable:!0,enumerable:!1,value:m(s),writable:!0})}:_;i.exports=j},14259:i=>{i.exports=function baseSlice(i,s,u){var m=-1,v=i.length;s<0&&(s=-s>v?0:v+s),(u=u>v?v:u)<0&&(u+=v),v=s>u?0:u-s>>>0,s>>>=0;for(var _=Array(v);++m{var m=u(89881);i.exports=function baseSome(i,s){var u;return m(i,(function(i,m,v){return!(u=s(i,m,v))})),!!u}},22545:i=>{i.exports=function baseTimes(i,s){for(var u=-1,m=Array(i);++u{var m=u(62705),v=u(29932),_=u(1469),j=u(33448),M=m?m.prototype:void 0,$=M?M.toString:void 0;i.exports=function baseToString(i){if("string"==typeof i)return i;if(_(i))return v(i,baseToString)+"";if(j(i))return $?$.call(i):"";var s=i+"";return"0"==s&&1/i==-Infinity?"-0":s}},27561:(i,s,u)=>{var m=u(67990),v=/^\s+/;i.exports=function baseTrim(i){return i?i.slice(0,m(i)+1).replace(v,""):i}},7518:i=>{i.exports=function baseUnary(i){return function(s){return i(s)}}},57406:(i,s,u)=>{var m=u(71811),v=u(10928),_=u(40292),j=u(40327);i.exports=function baseUnset(i,s){return s=m(s,i),null==(i=_(i,s))||delete i[j(v(s))]}},1757:i=>{i.exports=function baseZipObject(i,s,u){for(var m=-1,v=i.length,_=s.length,j={};++m{i.exports=function cacheHas(i,s){return i.has(s)}},71811:(i,s,u)=>{var m=u(1469),v=u(15403),_=u(55514),j=u(79833);i.exports=function castPath(i,s){return m(i)?i:v(i,s)?[i]:_(j(i))}},40180:(i,s,u)=>{var m=u(14259);i.exports=function castSlice(i,s,u){var v=i.length;return u=void 0===u?v:u,!s&&u>=v?i:m(i,s,u)}},74318:(i,s,u)=>{var m=u(11149);i.exports=function cloneArrayBuffer(i){var s=new i.constructor(i.byteLength);return new m(s).set(new m(i)),s}},64626:(i,s,u)=>{i=u.nmd(i);var m=u(55639),v=s&&!s.nodeType&&s,_=v&&i&&!i.nodeType&&i,j=_&&_.exports===v?m.Buffer:void 0,M=j?j.allocUnsafe:void 0;i.exports=function cloneBuffer(i,s){if(s)return i.slice();var u=i.length,m=M?M(u):new i.constructor(u);return i.copy(m),m}},57157:(i,s,u)=>{var m=u(74318);i.exports=function cloneDataView(i,s){var u=s?m(i.buffer):i.buffer;return new i.constructor(u,i.byteOffset,i.byteLength)}},93147:i=>{var s=/\w*$/;i.exports=function cloneRegExp(i){var u=new i.constructor(i.source,s.exec(i));return u.lastIndex=i.lastIndex,u}},40419:(i,s,u)=>{var m=u(62705),v=m?m.prototype:void 0,_=v?v.valueOf:void 0;i.exports=function cloneSymbol(i){return _?Object(_.call(i)):{}}},77133:(i,s,u)=>{var m=u(74318);i.exports=function cloneTypedArray(i,s){var u=s?m(i.buffer):i.buffer;return new i.constructor(u,i.byteOffset,i.length)}},52157:i=>{var s=Math.max;i.exports=function composeArgs(i,u,m,v){for(var _=-1,j=i.length,M=m.length,$=-1,W=u.length,X=s(j-M,0),Y=Array(W+X),Z=!v;++${var s=Math.max;i.exports=function composeArgsRight(i,u,m,v){for(var _=-1,j=i.length,M=-1,$=m.length,W=-1,X=u.length,Y=s(j-$,0),Z=Array(Y+X),ee=!v;++_{i.exports=function copyArray(i,s){var u=-1,m=i.length;for(s||(s=Array(m));++u{var m=u(34865),v=u(89465);i.exports=function copyObject(i,s,u,_){var j=!u;u||(u={});for(var M=-1,$=s.length;++M<$;){var W=s[M],X=_?_(u[W],i[W],W,u,i):void 0;void 0===X&&(X=i[W]),j?v(u,W,X):m(u,W,X)}return u}},18805:(i,s,u)=>{var m=u(98363),v=u(99551);i.exports=function copySymbols(i,s){return m(i,v(i),s)}},1911:(i,s,u)=>{var m=u(98363),v=u(51442);i.exports=function copySymbolsIn(i,s){return m(i,v(i),s)}},14429:(i,s,u)=>{var m=u(55639)["__core-js_shared__"];i.exports=m},97991:i=>{i.exports=function countHolders(i,s){for(var u=i.length,m=0;u--;)i[u]===s&&++m;return m}},21463:(i,s,u)=>{var m=u(5976),v=u(16612);i.exports=function createAssigner(i){return m((function(s,u){var m=-1,_=u.length,j=_>1?u[_-1]:void 0,M=_>2?u[2]:void 0;for(j=i.length>3&&"function"==typeof j?(_--,j):void 0,M&&v(u[0],u[1],M)&&(j=_<3?void 0:j,_=1),s=Object(s);++m<_;){var $=u[m];$&&i(s,$,m,j)}return s}))}},99291:(i,s,u)=>{var m=u(98612);i.exports=function createBaseEach(i,s){return function(u,v){if(null==u)return u;if(!m(u))return i(u,v);for(var _=u.length,j=s?_:-1,M=Object(u);(s?j--:++j<_)&&!1!==v(M[j],j,M););return u}}},25063:i=>{i.exports=function createBaseFor(i){return function(s,u,m){for(var v=-1,_=Object(s),j=m(s),M=j.length;M--;){var $=j[i?M:++v];if(!1===u(_[$],$,_))break}return s}}},22402:(i,s,u)=>{var m=u(71774),v=u(55639);i.exports=function createBind(i,s,u){var _=1&s,j=m(i);return function wrapper(){return(this&&this!==v&&this instanceof wrapper?j:i).apply(_?u:this,arguments)}}},98805:(i,s,u)=>{var m=u(40180),v=u(62689),_=u(83140),j=u(79833);i.exports=function createCaseFirst(i){return function(s){s=j(s);var u=v(s)?_(s):void 0,M=u?u[0]:s.charAt(0),$=u?m(u,1).join(""):s.slice(1);return M[i]()+$}}},35393:(i,s,u)=>{var m=u(62663),v=u(53816),_=u(58748),j=RegExp("['’]","g");i.exports=function createCompounder(i){return function(s){return m(_(v(s).replace(j,"")),i,"")}}},71774:(i,s,u)=>{var m=u(3118),v=u(13218);i.exports=function createCtor(i){return function(){var s=arguments;switch(s.length){case 0:return new i;case 1:return new i(s[0]);case 2:return new i(s[0],s[1]);case 3:return new i(s[0],s[1],s[2]);case 4:return new i(s[0],s[1],s[2],s[3]);case 5:return new i(s[0],s[1],s[2],s[3],s[4]);case 6:return new i(s[0],s[1],s[2],s[3],s[4],s[5]);case 7:return new i(s[0],s[1],s[2],s[3],s[4],s[5],s[6])}var u=m(i.prototype),_=i.apply(u,s);return v(_)?_:u}}},46347:(i,s,u)=>{var m=u(96874),v=u(71774),_=u(86935),j=u(94487),M=u(20893),$=u(46460),W=u(55639);i.exports=function createCurry(i,s,u){var X=v(i);return function wrapper(){for(var v=arguments.length,Y=Array(v),Z=v,ee=M(wrapper);Z--;)Y[Z]=arguments[Z];var ie=v<3&&Y[0]!==ee&&Y[v-1]!==ee?[]:$(Y,ee);return(v-=ie.length){var m=u(67206),v=u(98612),_=u(3674);i.exports=function createFind(i){return function(s,u,j){var M=Object(s);if(!v(s)){var $=m(u,3);s=_(s),u=function(i){return $(M[i],i,M)}}var W=i(s,u,j);return W>-1?M[$?s[W]:W]:void 0}}},86935:(i,s,u)=>{var m=u(52157),v=u(14054),_=u(97991),j=u(71774),M=u(94487),$=u(20893),W=u(90451),X=u(46460),Y=u(55639);i.exports=function createHybrid(i,s,u,Z,ee,ie,ae,ce,le,pe){var de=128&s,fe=1&s,ye=2&s,be=24&s,_e=512&s,we=ye?void 0:j(i);return function wrapper(){for(var Se=arguments.length,xe=Array(Se),Pe=Se;Pe--;)xe[Pe]=arguments[Pe];if(be)var Ie=$(wrapper),Te=_(xe,Ie);if(Z&&(xe=m(xe,Z,ee,be)),ie&&(xe=v(xe,ie,ae,be)),Se-=Te,be&&Se1&&xe.reverse(),de&&le{var m=u(96874),v=u(71774),_=u(55639);i.exports=function createPartial(i,s,u,j){var M=1&s,$=v(i);return function wrapper(){for(var s=-1,v=arguments.length,W=-1,X=j.length,Y=Array(X+v),Z=this&&this!==_&&this instanceof wrapper?$:i;++W{var m=u(86528),v=u(258),_=u(69255);i.exports=function createRecurry(i,s,u,j,M,$,W,X,Y,Z){var ee=8&s;s|=ee?32:64,4&(s&=~(ee?64:32))||(s&=-4);var ie=[i,s,M,ee?$:void 0,ee?W:void 0,ee?void 0:$,ee?void 0:W,X,Y,Z],ae=u.apply(void 0,ie);return m(i)&&v(ae,ie),ae.placeholder=j,_(ae,i,s)}},97727:(i,s,u)=>{var m=u(28045),v=u(22402),_=u(46347),j=u(86935),M=u(84375),$=u(66833),W=u(63833),X=u(258),Y=u(69255),Z=u(40554),ee=Math.max;i.exports=function createWrap(i,s,u,ie,ae,ce,le,pe){var de=2&s;if(!de&&"function"!=typeof i)throw new TypeError("Expected a function");var fe=ie?ie.length:0;if(fe||(s&=-97,ie=ae=void 0),le=void 0===le?le:ee(Z(le),0),pe=void 0===pe?pe:Z(pe),fe-=ae?ae.length:0,64&s){var ye=ie,be=ae;ie=ae=void 0}var _e=de?void 0:$(i),we=[i,s,u,ie,ae,ye,be,ce,le,pe];if(_e&&W(we,_e),i=we[0],s=we[1],u=we[2],ie=we[3],ae=we[4],!(pe=we[9]=void 0===we[9]?de?0:i.length:ee(we[9]-fe,0))&&24&s&&(s&=-25),s&&1!=s)Se=8==s||16==s?_(i,s,pe):32!=s&&33!=s||ae.length?j.apply(void 0,we):M(i,s,u,ie);else var Se=v(i,s,u);return Y((_e?m:X)(Se,we),i,s)}},60696:(i,s,u)=>{var m=u(68630);i.exports=function customOmitClone(i){return m(i)?void 0:i}},69389:(i,s,u)=>{var m=u(18674)({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"});i.exports=m},38777:(i,s,u)=>{var m=u(10852),v=function(){try{var i=m(Object,"defineProperty");return i({},"",{}),i}catch(i){}}();i.exports=v},67114:(i,s,u)=>{var m=u(88668),v=u(82908),_=u(74757);i.exports=function equalArrays(i,s,u,j,M,$){var W=1&u,X=i.length,Y=s.length;if(X!=Y&&!(W&&Y>X))return!1;var Z=$.get(i),ee=$.get(s);if(Z&&ee)return Z==s&&ee==i;var ie=-1,ae=!0,ce=2&u?new m:void 0;for($.set(i,s),$.set(s,i);++ie{var m=u(62705),v=u(11149),_=u(77813),j=u(67114),M=u(68776),$=u(21814),W=m?m.prototype:void 0,X=W?W.valueOf:void 0;i.exports=function equalByTag(i,s,u,m,W,Y,Z){switch(u){case"[object DataView]":if(i.byteLength!=s.byteLength||i.byteOffset!=s.byteOffset)return!1;i=i.buffer,s=s.buffer;case"[object ArrayBuffer]":return!(i.byteLength!=s.byteLength||!Y(new v(i),new v(s)));case"[object Boolean]":case"[object Date]":case"[object Number]":return _(+i,+s);case"[object Error]":return i.name==s.name&&i.message==s.message;case"[object RegExp]":case"[object String]":return i==s+"";case"[object Map]":var ee=M;case"[object Set]":var ie=1&m;if(ee||(ee=$),i.size!=s.size&&!ie)return!1;var ae=Z.get(i);if(ae)return ae==s;m|=2,Z.set(i,s);var ce=j(ee(i),ee(s),m,W,Y,Z);return Z.delete(i),ce;case"[object Symbol]":if(X)return X.call(i)==X.call(s)}return!1}},16096:(i,s,u)=>{var m=u(58234),v=Object.prototype.hasOwnProperty;i.exports=function equalObjects(i,s,u,_,j,M){var $=1&u,W=m(i),X=W.length;if(X!=m(s).length&&!$)return!1;for(var Y=X;Y--;){var Z=W[Y];if(!($?Z in s:v.call(s,Z)))return!1}var ee=M.get(i),ie=M.get(s);if(ee&&ie)return ee==s&&ie==i;var ae=!0;M.set(i,s),M.set(s,i);for(var ce=$;++Y{var m=u(85564),v=u(45357),_=u(30061);i.exports=function flatRest(i){return _(v(i,void 0,m),i+"")}},31957:(i,s,u)=>{var m="object"==typeof u.g&&u.g&&u.g.Object===Object&&u.g;i.exports=m},58234:(i,s,u)=>{var m=u(68866),v=u(99551),_=u(3674);i.exports=function getAllKeys(i){return m(i,_,v)}},46904:(i,s,u)=>{var m=u(68866),v=u(51442),_=u(81704);i.exports=function getAllKeysIn(i){return m(i,_,v)}},66833:(i,s,u)=>{var m=u(89250),v=u(50308),_=m?function(i){return m.get(i)}:v;i.exports=_},97658:(i,s,u)=>{var m=u(52060),v=Object.prototype.hasOwnProperty;i.exports=function getFuncName(i){for(var s=i.name+"",u=m[s],_=v.call(m,s)?u.length:0;_--;){var j=u[_],M=j.func;if(null==M||M==i)return j.name}return s}},20893:i=>{i.exports=function getHolder(i){return i.placeholder}},45050:(i,s,u)=>{var m=u(37019);i.exports=function getMapData(i,s){var u=i.__data__;return m(s)?u["string"==typeof s?"string":"hash"]:u.map}},1499:(i,s,u)=>{var m=u(89162),v=u(3674);i.exports=function getMatchData(i){for(var s=v(i),u=s.length;u--;){var _=s[u],j=i[_];s[u]=[_,j,m(j)]}return s}},10852:(i,s,u)=>{var m=u(28458),v=u(47801);i.exports=function getNative(i,s){var u=v(i,s);return m(u)?u:void 0}},85924:(i,s,u)=>{var m=u(5569)(Object.getPrototypeOf,Object);i.exports=m},89607:(i,s,u)=>{var m=u(62705),v=Object.prototype,_=v.hasOwnProperty,j=v.toString,M=m?m.toStringTag:void 0;i.exports=function getRawTag(i){var s=_.call(i,M),u=i[M];try{i[M]=void 0;var m=!0}catch(i){}var v=j.call(i);return m&&(s?i[M]=u:delete i[M]),v}},99551:(i,s,u)=>{var m=u(34963),v=u(70479),_=Object.prototype.propertyIsEnumerable,j=Object.getOwnPropertySymbols,M=j?function(i){return null==i?[]:(i=Object(i),m(j(i),(function(s){return _.call(i,s)})))}:v;i.exports=M},51442:(i,s,u)=>{var m=u(62488),v=u(85924),_=u(99551),j=u(70479),M=Object.getOwnPropertySymbols?function(i){for(var s=[];i;)m(s,_(i)),i=v(i);return s}:j;i.exports=M},64160:(i,s,u)=>{var m=u(18552),v=u(57071),_=u(53818),j=u(58525),M=u(70577),$=u(44239),W=u(80346),X="[object Map]",Y="[object Promise]",Z="[object Set]",ee="[object WeakMap]",ie="[object DataView]",ae=W(m),ce=W(v),le=W(_),pe=W(j),de=W(M),fe=$;(m&&fe(new m(new ArrayBuffer(1)))!=ie||v&&fe(new v)!=X||_&&fe(_.resolve())!=Y||j&&fe(new j)!=Z||M&&fe(new M)!=ee)&&(fe=function(i){var s=$(i),u="[object Object]"==s?i.constructor:void 0,m=u?W(u):"";if(m)switch(m){case ae:return ie;case ce:return X;case le:return Y;case pe:return Z;case de:return ee}return s}),i.exports=fe},47801:i=>{i.exports=function getValue(i,s){return null==i?void 0:i[s]}},58775:i=>{var s=/\{\n\/\* \[wrapped with (.+)\] \*/,u=/,? & /;i.exports=function getWrapDetails(i){var m=i.match(s);return m?m[1].split(u):[]}},222:(i,s,u)=>{var m=u(71811),v=u(35694),_=u(1469),j=u(65776),M=u(41780),$=u(40327);i.exports=function hasPath(i,s,u){for(var W=-1,X=(s=m(s,i)).length,Y=!1;++W{var s=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");i.exports=function hasUnicode(i){return s.test(i)}},93157:i=>{var s=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;i.exports=function hasUnicodeWord(i){return s.test(i)}},51789:(i,s,u)=>{var m=u(94536);i.exports=function hashClear(){this.__data__=m?m(null):{},this.size=0}},80401:i=>{i.exports=function hashDelete(i){var s=this.has(i)&&delete this.__data__[i];return this.size-=s?1:0,s}},57667:(i,s,u)=>{var m=u(94536),v=Object.prototype.hasOwnProperty;i.exports=function hashGet(i){var s=this.__data__;if(m){var u=s[i];return"__lodash_hash_undefined__"===u?void 0:u}return v.call(s,i)?s[i]:void 0}},21327:(i,s,u)=>{var m=u(94536),v=Object.prototype.hasOwnProperty;i.exports=function hashHas(i){var s=this.__data__;return m?void 0!==s[i]:v.call(s,i)}},81866:(i,s,u)=>{var m=u(94536);i.exports=function hashSet(i,s){var u=this.__data__;return this.size+=this.has(i)?0:1,u[i]=m&&void 0===s?"__lodash_hash_undefined__":s,this}},43824:i=>{var s=Object.prototype.hasOwnProperty;i.exports=function initCloneArray(i){var u=i.length,m=new i.constructor(u);return u&&"string"==typeof i[0]&&s.call(i,"index")&&(m.index=i.index,m.input=i.input),m}},29148:(i,s,u)=>{var m=u(74318),v=u(57157),_=u(93147),j=u(40419),M=u(77133);i.exports=function initCloneByTag(i,s,u){var $=i.constructor;switch(s){case"[object ArrayBuffer]":return m(i);case"[object Boolean]":case"[object Date]":return new $(+i);case"[object DataView]":return v(i,u);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return M(i,u);case"[object Map]":case"[object Set]":return new $;case"[object Number]":case"[object String]":return new $(i);case"[object RegExp]":return _(i);case"[object Symbol]":return j(i)}}},38517:(i,s,u)=>{var m=u(3118),v=u(85924),_=u(25726);i.exports=function initCloneObject(i){return"function"!=typeof i.constructor||_(i)?{}:m(v(i))}},83112:i=>{var s=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;i.exports=function insertWrapDetails(i,u){var m=u.length;if(!m)return i;var v=m-1;return u[v]=(m>1?"& ":"")+u[v],u=u.join(m>2?", ":" "),i.replace(s,"{\n/* [wrapped with "+u+"] */\n")}},37285:(i,s,u)=>{var m=u(62705),v=u(35694),_=u(1469),j=m?m.isConcatSpreadable:void 0;i.exports=function isFlattenable(i){return _(i)||v(i)||!!(j&&i&&i[j])}},65776:i=>{var s=/^(?:0|[1-9]\d*)$/;i.exports=function isIndex(i,u){var m=typeof i;return!!(u=null==u?9007199254740991:u)&&("number"==m||"symbol"!=m&&s.test(i))&&i>-1&&i%1==0&&i{var m=u(77813),v=u(98612),_=u(65776),j=u(13218);i.exports=function isIterateeCall(i,s,u){if(!j(u))return!1;var M=typeof s;return!!("number"==M?v(u)&&_(s,u.length):"string"==M&&s in u)&&m(u[s],i)}},15403:(i,s,u)=>{var m=u(1469),v=u(33448),_=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,j=/^\w*$/;i.exports=function isKey(i,s){if(m(i))return!1;var u=typeof i;return!("number"!=u&&"symbol"!=u&&"boolean"!=u&&null!=i&&!v(i))||(j.test(i)||!_.test(i)||null!=s&&i in Object(s))}},37019:i=>{i.exports=function isKeyable(i){var s=typeof i;return"string"==s||"number"==s||"symbol"==s||"boolean"==s?"__proto__"!==i:null===i}},86528:(i,s,u)=>{var m=u(96425),v=u(66833),_=u(97658),j=u(8111);i.exports=function isLaziable(i){var s=_(i),u=j[s];if("function"!=typeof u||!(s in m.prototype))return!1;if(i===u)return!0;var M=v(u);return!!M&&i===M[0]}},15346:(i,s,u)=>{var m,v=u(14429),_=(m=/[^.]+$/.exec(v&&v.keys&&v.keys.IE_PROTO||""))?"Symbol(src)_1."+m:"";i.exports=function isMasked(i){return!!_&&_ in i}},25726:i=>{var s=Object.prototype;i.exports=function isPrototype(i){var u=i&&i.constructor;return i===("function"==typeof u&&u.prototype||s)}},89162:(i,s,u)=>{var m=u(13218);i.exports=function isStrictComparable(i){return i==i&&!m(i)}},27040:i=>{i.exports=function listCacheClear(){this.__data__=[],this.size=0}},14125:(i,s,u)=>{var m=u(18470),v=Array.prototype.splice;i.exports=function listCacheDelete(i){var s=this.__data__,u=m(s,i);return!(u<0)&&(u==s.length-1?s.pop():v.call(s,u,1),--this.size,!0)}},82117:(i,s,u)=>{var m=u(18470);i.exports=function listCacheGet(i){var s=this.__data__,u=m(s,i);return u<0?void 0:s[u][1]}},67518:(i,s,u)=>{var m=u(18470);i.exports=function listCacheHas(i){return m(this.__data__,i)>-1}},54705:(i,s,u)=>{var m=u(18470);i.exports=function listCacheSet(i,s){var u=this.__data__,v=m(u,i);return v<0?(++this.size,u.push([i,s])):u[v][1]=s,this}},24785:(i,s,u)=>{var m=u(1989),v=u(38407),_=u(57071);i.exports=function mapCacheClear(){this.size=0,this.__data__={hash:new m,map:new(_||v),string:new m}}},11285:(i,s,u)=>{var m=u(45050);i.exports=function mapCacheDelete(i){var s=m(this,i).delete(i);return this.size-=s?1:0,s}},96e3:(i,s,u)=>{var m=u(45050);i.exports=function mapCacheGet(i){return m(this,i).get(i)}},49916:(i,s,u)=>{var m=u(45050);i.exports=function mapCacheHas(i){return m(this,i).has(i)}},95265:(i,s,u)=>{var m=u(45050);i.exports=function mapCacheSet(i,s){var u=m(this,i),v=u.size;return u.set(i,s),this.size+=u.size==v?0:1,this}},68776:i=>{i.exports=function mapToArray(i){var s=-1,u=Array(i.size);return i.forEach((function(i,m){u[++s]=[m,i]})),u}},42634:i=>{i.exports=function matchesStrictComparable(i,s){return function(u){return null!=u&&(u[i]===s&&(void 0!==s||i in Object(u)))}}},24523:(i,s,u)=>{var m=u(88306);i.exports=function memoizeCapped(i){var s=m(i,(function(i){return 500===u.size&&u.clear(),i})),u=s.cache;return s}},63833:(i,s,u)=>{var m=u(52157),v=u(14054),_=u(46460),j="__lodash_placeholder__",M=128,$=Math.min;i.exports=function mergeData(i,s){var u=i[1],W=s[1],X=u|W,Y=X<131,Z=W==M&&8==u||W==M&&256==u&&i[7].length<=s[8]||384==W&&s[7].length<=s[8]&&8==u;if(!Y&&!Z)return i;1&W&&(i[2]=s[2],X|=1&u?0:4);var ee=s[3];if(ee){var ie=i[3];i[3]=ie?m(ie,ee,s[4]):ee,i[4]=ie?_(i[3],j):s[4]}return(ee=s[5])&&(ie=i[5],i[5]=ie?v(ie,ee,s[6]):ee,i[6]=ie?_(i[5],j):s[6]),(ee=s[7])&&(i[7]=ee),W&M&&(i[8]=null==i[8]?s[8]:$(i[8],s[8])),null==i[9]&&(i[9]=s[9]),i[0]=s[0],i[1]=X,i}},89250:(i,s,u)=>{var m=u(70577),v=m&&new m;i.exports=v},94536:(i,s,u)=>{var m=u(10852)(Object,"create");i.exports=m},86916:(i,s,u)=>{var m=u(5569)(Object.keys,Object);i.exports=m},33498:i=>{i.exports=function nativeKeysIn(i){var s=[];if(null!=i)for(var u in Object(i))s.push(u);return s}},31167:(i,s,u)=>{i=u.nmd(i);var m=u(31957),v=s&&!s.nodeType&&s,_=v&&i&&!i.nodeType&&i,j=_&&_.exports===v&&m.process,M=function(){try{var i=_&&_.require&&_.require("util").types;return i||j&&j.binding&&j.binding("util")}catch(i){}}();i.exports=M},2333:i=>{var s=Object.prototype.toString;i.exports=function objectToString(i){return s.call(i)}},5569:i=>{i.exports=function overArg(i,s){return function(u){return i(s(u))}}},45357:(i,s,u)=>{var m=u(96874),v=Math.max;i.exports=function overRest(i,s,u){return s=v(void 0===s?i.length-1:s,0),function(){for(var _=arguments,j=-1,M=v(_.length-s,0),$=Array(M);++j{var m=u(97786),v=u(14259);i.exports=function parent(i,s){return s.length<2?i:m(i,v(s,0,-1))}},52060:i=>{i.exports={}},90451:(i,s,u)=>{var m=u(278),v=u(65776),_=Math.min;i.exports=function reorder(i,s){for(var u=i.length,j=_(s.length,u),M=m(i);j--;){var $=s[j];i[j]=v($,u)?M[$]:void 0}return i}},46460:i=>{var s="__lodash_placeholder__";i.exports=function replaceHolders(i,u){for(var m=-1,v=i.length,_=0,j=[];++m{var m=u(31957),v="object"==typeof self&&self&&self.Object===Object&&self,_=m||v||Function("return this")();i.exports=_},36390:i=>{i.exports=function safeGet(i,s){if(("constructor"!==s||"function"!=typeof i[s])&&"__proto__"!=s)return i[s]}},90619:i=>{i.exports=function setCacheAdd(i){return this.__data__.set(i,"__lodash_hash_undefined__"),this}},72385:i=>{i.exports=function setCacheHas(i){return this.__data__.has(i)}},258:(i,s,u)=>{var m=u(28045),v=u(21275)(m);i.exports=v},21814:i=>{i.exports=function setToArray(i){var s=-1,u=Array(i.size);return i.forEach((function(i){u[++s]=i})),u}},30061:(i,s,u)=>{var m=u(56560),v=u(21275)(m);i.exports=v},69255:(i,s,u)=>{var m=u(58775),v=u(83112),_=u(30061),j=u(87241);i.exports=function setWrapToString(i,s,u){var M=s+"";return _(i,v(M,j(m(M),u)))}},21275:i=>{var s=Date.now;i.exports=function shortOut(i){var u=0,m=0;return function(){var v=s(),_=16-(v-m);if(m=v,_>0){if(++u>=800)return arguments[0]}else u=0;return i.apply(void 0,arguments)}}},37465:(i,s,u)=>{var m=u(38407);i.exports=function stackClear(){this.__data__=new m,this.size=0}},63779:i=>{i.exports=function stackDelete(i){var s=this.__data__,u=s.delete(i);return this.size=s.size,u}},67599:i=>{i.exports=function stackGet(i){return this.__data__.get(i)}},44758:i=>{i.exports=function stackHas(i){return this.__data__.has(i)}},34309:(i,s,u)=>{var m=u(38407),v=u(57071),_=u(83369);i.exports=function stackSet(i,s){var u=this.__data__;if(u instanceof m){var j=u.__data__;if(!v||j.length<199)return j.push([i,s]),this.size=++u.size,this;u=this.__data__=new _(j)}return u.set(i,s),this.size=u.size,this}},42351:i=>{i.exports=function strictIndexOf(i,s,u){for(var m=u-1,v=i.length;++m{var m=u(44286),v=u(62689),_=u(676);i.exports=function stringToArray(i){return v(i)?_(i):m(i)}},55514:(i,s,u)=>{var m=u(24523),v=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,_=/\\(\\)?/g,j=m((function(i){var s=[];return 46===i.charCodeAt(0)&&s.push(""),i.replace(v,(function(i,u,m,v){s.push(m?v.replace(_,"$1"):u||i)})),s}));i.exports=j},40327:(i,s,u)=>{var m=u(33448);i.exports=function toKey(i){if("string"==typeof i||m(i))return i;var s=i+"";return"0"==s&&1/i==-Infinity?"-0":s}},80346:i=>{var s=Function.prototype.toString;i.exports=function toSource(i){if(null!=i){try{return s.call(i)}catch(i){}try{return i+""}catch(i){}}return""}},67990:i=>{var s=/\s/;i.exports=function trimmedEndIndex(i){for(var u=i.length;u--&&s.test(i.charAt(u)););return u}},676:i=>{var s="\\ud800-\\udfff",u="["+s+"]",m="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",v="\\ud83c[\\udffb-\\udfff]",_="[^"+s+"]",j="(?:\\ud83c[\\udde6-\\uddff]){2}",M="[\\ud800-\\udbff][\\udc00-\\udfff]",$="(?:"+m+"|"+v+")"+"?",W="[\\ufe0e\\ufe0f]?",X=W+$+("(?:\\u200d(?:"+[_,j,M].join("|")+")"+W+$+")*"),Y="(?:"+[_+m+"?",m,j,M,u].join("|")+")",Z=RegExp(v+"(?="+v+")|"+Y+X,"g");i.exports=function unicodeToArray(i){return i.match(Z)||[]}},2757:i=>{var s="\\ud800-\\udfff",u="\\u2700-\\u27bf",m="a-z\\xdf-\\xf6\\xf8-\\xff",v="A-Z\\xc0-\\xd6\\xd8-\\xde",_="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",j="["+_+"]",M="\\d+",$="["+u+"]",W="["+m+"]",X="[^"+s+_+M+u+m+v+"]",Y="(?:\\ud83c[\\udde6-\\uddff]){2}",Z="[\\ud800-\\udbff][\\udc00-\\udfff]",ee="["+v+"]",ie="(?:"+W+"|"+X+")",ae="(?:"+ee+"|"+X+")",ce="(?:['’](?:d|ll|m|re|s|t|ve))?",le="(?:['’](?:D|LL|M|RE|S|T|VE))?",pe="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",de="[\\ufe0e\\ufe0f]?",fe=de+pe+("(?:\\u200d(?:"+["[^"+s+"]",Y,Z].join("|")+")"+de+pe+")*"),ye="(?:"+[$,Y,Z].join("|")+")"+fe,be=RegExp([ee+"?"+W+"+"+ce+"(?="+[j,ee,"$"].join("|")+")",ae+"+"+le+"(?="+[j,ee+ie,"$"].join("|")+")",ee+"?"+ie+"+"+ce,ee+"+"+le,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",M,ye].join("|"),"g");i.exports=function unicodeWords(i){return i.match(be)||[]}},87241:(i,s,u)=>{var m=u(77412),v=u(47443),_=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]];i.exports=function updateWrapDetails(i,s){return m(_,(function(u){var m="_."+u[0];s&u[1]&&!v(i,m)&&i.push(m)})),i.sort()}},21913:(i,s,u)=>{var m=u(96425),v=u(7548),_=u(278);i.exports=function wrapperClone(i){if(i instanceof m)return i.clone();var s=new v(i.__wrapped__,i.__chain__);return s.__actions__=_(i.__actions__),s.__index__=i.__index__,s.__values__=i.__values__,s}},39514:(i,s,u)=>{var m=u(97727);i.exports=function ary(i,s,u){return s=u?void 0:s,s=i&&null==s?i.length:s,m(i,128,void 0,void 0,void 0,void 0,s)}},68929:(i,s,u)=>{var m=u(48403),v=u(35393)((function(i,s,u){return s=s.toLowerCase(),i+(u?m(s):s)}));i.exports=v},48403:(i,s,u)=>{var m=u(79833),v=u(11700);i.exports=function capitalize(i){return v(m(i).toLowerCase())}},66678:(i,s,u)=>{var m=u(85990);i.exports=function clone(i){return m(i,4)}},75703:i=>{i.exports=function constant(i){return function(){return i}}},40087:(i,s,u)=>{var m=u(97727);function curry(i,s,u){var v=m(i,8,void 0,void 0,void 0,void 0,void 0,s=u?void 0:s);return v.placeholder=curry.placeholder,v}curry.placeholder={},i.exports=curry},23279:(i,s,u)=>{var m=u(13218),v=u(7771),_=u(14841),j=Math.max,M=Math.min;i.exports=function debounce(i,s,u){var $,W,X,Y,Z,ee,ie=0,ae=!1,ce=!1,le=!0;if("function"!=typeof i)throw new TypeError("Expected a function");function invokeFunc(s){var u=$,m=W;return $=W=void 0,ie=s,Y=i.apply(m,u)}function shouldInvoke(i){var u=i-ee;return void 0===ee||u>=s||u<0||ce&&i-ie>=X}function timerExpired(){var i=v();if(shouldInvoke(i))return trailingEdge(i);Z=setTimeout(timerExpired,function remainingWait(i){var u=s-(i-ee);return ce?M(u,X-(i-ie)):u}(i))}function trailingEdge(i){return Z=void 0,le&&$?invokeFunc(i):($=W=void 0,Y)}function debounced(){var i=v(),u=shouldInvoke(i);if($=arguments,W=this,ee=i,u){if(void 0===Z)return function leadingEdge(i){return ie=i,Z=setTimeout(timerExpired,s),ae?invokeFunc(i):Y}(ee);if(ce)return clearTimeout(Z),Z=setTimeout(timerExpired,s),invokeFunc(ee)}return void 0===Z&&(Z=setTimeout(timerExpired,s)),Y}return s=_(s)||0,m(u)&&(ae=!!u.leading,X=(ce="maxWait"in u)?j(_(u.maxWait)||0,s):X,le="trailing"in u?!!u.trailing:le),debounced.cancel=function cancel(){void 0!==Z&&clearTimeout(Z),ie=0,$=ee=W=Z=void 0},debounced.flush=function flush(){return void 0===Z?Y:trailingEdge(v())},debounced}},53816:(i,s,u)=>{var m=u(69389),v=u(79833),_=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,j=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");i.exports=function deburr(i){return(i=v(i))&&i.replace(_,m).replace(j,"")}},77813:i=>{i.exports=function eq(i,s){return i===s||i!=i&&s!=s}},13311:(i,s,u)=>{var m=u(67740)(u(30998));i.exports=m},30998:(i,s,u)=>{var m=u(41848),v=u(67206),_=u(40554),j=Math.max;i.exports=function findIndex(i,s,u){var M=null==i?0:i.length;if(!M)return-1;var $=null==u?0:_(u);return $<0&&($=j(M+$,0)),m(i,v(s,3),$)}},85564:(i,s,u)=>{var m=u(21078);i.exports=function flatten(i){return(null==i?0:i.length)?m(i,1):[]}},84599:(i,s,u)=>{var m=u(68836),v=u(69306),_=Array.prototype.push;function baseAry(i,s){return 2==s?function(s,u){return i(s,u)}:function(s){return i(s)}}function cloneArray(i){for(var s=i?i.length:0,u=Array(s);s--;)u[s]=i[s];return u}function wrapImmutable(i,s){return function(){var u=arguments.length;if(u){for(var m=Array(u);u--;)m[u]=arguments[u];var v=m[0]=s.apply(void 0,m);return i.apply(void 0,m),v}}}i.exports=function baseConvert(i,s,u,j){var M="function"==typeof s,$=s===Object(s);if($&&(j=u,u=s,s=void 0),null==u)throw new TypeError;j||(j={});var W={cap:!("cap"in j)||j.cap,curry:!("curry"in j)||j.curry,fixed:!("fixed"in j)||j.fixed,immutable:!("immutable"in j)||j.immutable,rearg:!("rearg"in j)||j.rearg},X=M?u:v,Y="curry"in j&&j.curry,Z="fixed"in j&&j.fixed,ee="rearg"in j&&j.rearg,ie=M?u.runInContext():void 0,ae=M?u:{ary:i.ary,assign:i.assign,clone:i.clone,curry:i.curry,forEach:i.forEach,isArray:i.isArray,isError:i.isError,isFunction:i.isFunction,isWeakMap:i.isWeakMap,iteratee:i.iteratee,keys:i.keys,rearg:i.rearg,toInteger:i.toInteger,toPath:i.toPath},ce=ae.ary,le=ae.assign,pe=ae.clone,de=ae.curry,fe=ae.forEach,ye=ae.isArray,be=ae.isError,_e=ae.isFunction,we=ae.isWeakMap,Se=ae.keys,xe=ae.rearg,Pe=ae.toInteger,Ie=ae.toPath,Te=Se(m.aryMethod),Re={castArray:function(i){return function(){var s=arguments[0];return ye(s)?i(cloneArray(s)):i.apply(void 0,arguments)}},iteratee:function(i){return function(){var s=arguments[1],u=i(arguments[0],s),m=u.length;return W.cap&&"number"==typeof s?(s=s>2?s-2:1,m&&m<=s?u:baseAry(u,s)):u}},mixin:function(i){return function(s){var u=this;if(!_e(u))return i(u,Object(s));var m=[];return fe(Se(s),(function(i){_e(s[i])&&m.push([i,u.prototype[i]])})),i(u,Object(s)),fe(m,(function(i){var s=i[1];_e(s)?u.prototype[i[0]]=s:delete u.prototype[i[0]]})),u}},nthArg:function(i){return function(s){var u=s<0?1:Pe(s)+1;return de(i(s),u)}},rearg:function(i){return function(s,u){var m=u?u.length:0;return de(i(s,u),m)}},runInContext:function(s){return function(u){return baseConvert(i,s(u),j)}}};function castCap(i,s){if(W.cap){var u=m.iterateeRearg[i];if(u)return function iterateeRearg(i,s){return overArg(i,(function(i){var u=s.length;return function baseArity(i,s){return 2==s?function(s,u){return i.apply(void 0,arguments)}:function(s){return i.apply(void 0,arguments)}}(xe(baseAry(i,u),s),u)}))}(s,u);var v=!M&&m.iterateeAry[i];if(v)return function iterateeAry(i,s){return overArg(i,(function(i){return"function"==typeof i?baseAry(i,s):i}))}(s,v)}return s}function castFixed(i,s,u){if(W.fixed&&(Z||!m.skipFixed[i])){var v=m.methodSpread[i],j=v&&v.start;return void 0===j?ce(s,u):function flatSpread(i,s){return function(){for(var u=arguments.length,m=u-1,v=Array(u);u--;)v[u]=arguments[u];var j=v[s],M=v.slice(0,s);return j&&_.apply(M,j),s!=m&&_.apply(M,v.slice(s+1)),i.apply(this,M)}}(s,j)}return s}function castRearg(i,s,u){return W.rearg&&u>1&&(ee||!m.skipRearg[i])?xe(s,m.methodRearg[i]||m.aryRearg[u]):s}function cloneByPath(i,s){for(var u=-1,m=(s=Ie(s)).length,v=m-1,_=pe(Object(i)),j=_;null!=j&&++u1?de(s,u):s}(0,v=castCap(_,v),i),!1}})),!v})),v||(v=j),v==s&&(v=Y?de(v,1):function(){return s.apply(this,arguments)}),v.convert=createConverter(_,s),v.placeholder=s.placeholder=u,v}if(!$)return wrap(s,u,X);var qe=u,ze=[];return fe(Te,(function(i){fe(m.aryMethod[i],(function(i){var s=qe[m.remap[i]||i];s&&ze.push([i,wrap(i,s,qe)])}))})),fe(Se(qe),(function(i){var s=qe[i];if("function"==typeof s){for(var u=ze.length;u--;)if(ze[u][0]==i)return;s.convert=createConverter(i,s),ze.push([i,s])}})),fe(ze,(function(i){qe[i[0]]=i[1]})),qe.convert=function convertLib(i){return qe.runInContext.convert(i)(void 0)},qe.placeholder=qe,fe(Se(qe),(function(i){fe(m.realToAlias[i]||[],(function(s){qe[s]=qe[i]}))})),qe}},68836:(i,s)=>{s.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},s.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},s.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},s.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},s.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},s.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},s.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},s.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},s.realToAlias=function(){var i=Object.prototype.hasOwnProperty,u=s.aliasToReal,m={};for(var v in u){var _=u[v];i.call(m,_)?m[_].push(v):m[_]=[v]}return m}(),s.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},s.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},s.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},4269:(i,s,u)=>{i.exports={ary:u(39514),assign:u(44037),clone:u(66678),curry:u(40087),forEach:u(77412),isArray:u(1469),isError:u(64647),isFunction:u(23560),isWeakMap:u(81018),iteratee:u(72594),keys:u(280),rearg:u(4963),toInteger:u(40554),toPath:u(30084)}},72700:(i,s,u)=>{i.exports=u(28252)},92822:(i,s,u)=>{var m=u(84599),v=u(4269);i.exports=function convert(i,s,u){return m(v,i,s,u)}},69306:i=>{i.exports={}},28252:(i,s,u)=>{var m=u(92822)("set",u(36968));m.placeholder=u(69306),i.exports=m},27361:(i,s,u)=>{var m=u(97786);i.exports=function get(i,s,u){var v=null==i?void 0:m(i,s);return void 0===v?u:v}},79095:(i,s,u)=>{var m=u(13),v=u(222);i.exports=function hasIn(i,s){return null!=i&&v(i,s,m)}},6557:i=>{i.exports=function identity(i){return i}},35694:(i,s,u)=>{var m=u(9454),v=u(37005),_=Object.prototype,j=_.hasOwnProperty,M=_.propertyIsEnumerable,$=m(function(){return arguments}())?m:function(i){return v(i)&&j.call(i,"callee")&&!M.call(i,"callee")};i.exports=$},1469:i=>{var s=Array.isArray;i.exports=s},98612:(i,s,u)=>{var m=u(23560),v=u(41780);i.exports=function isArrayLike(i){return null!=i&&v(i.length)&&!m(i)}},29246:(i,s,u)=>{var m=u(98612),v=u(37005);i.exports=function isArrayLikeObject(i){return v(i)&&m(i)}},51584:(i,s,u)=>{var m=u(44239),v=u(37005);i.exports=function isBoolean(i){return!0===i||!1===i||v(i)&&"[object Boolean]"==m(i)}},44144:(i,s,u)=>{i=u.nmd(i);var m=u(55639),v=u(95062),_=s&&!s.nodeType&&s,j=_&&i&&!i.nodeType&&i,M=j&&j.exports===_?m.Buffer:void 0,$=(M?M.isBuffer:void 0)||v;i.exports=$},41609:(i,s,u)=>{var m=u(280),v=u(64160),_=u(35694),j=u(1469),M=u(98612),$=u(44144),W=u(25726),X=u(36719),Y=Object.prototype.hasOwnProperty;i.exports=function isEmpty(i){if(null==i)return!0;if(M(i)&&(j(i)||"string"==typeof i||"function"==typeof i.splice||$(i)||X(i)||_(i)))return!i.length;var s=v(i);if("[object Map]"==s||"[object Set]"==s)return!i.size;if(W(i))return!m(i).length;for(var u in i)if(Y.call(i,u))return!1;return!0}},18446:(i,s,u)=>{var m=u(90939);i.exports=function isEqual(i,s){return m(i,s)}},64647:(i,s,u)=>{var m=u(44239),v=u(37005),_=u(68630);i.exports=function isError(i){if(!v(i))return!1;var s=m(i);return"[object Error]"==s||"[object DOMException]"==s||"string"==typeof i.message&&"string"==typeof i.name&&!_(i)}},23560:(i,s,u)=>{var m=u(44239),v=u(13218);i.exports=function isFunction(i){if(!v(i))return!1;var s=m(i);return"[object Function]"==s||"[object GeneratorFunction]"==s||"[object AsyncFunction]"==s||"[object Proxy]"==s}},41780:i=>{i.exports=function isLength(i){return"number"==typeof i&&i>-1&&i%1==0&&i<=9007199254740991}},56688:(i,s,u)=>{var m=u(25588),v=u(7518),_=u(31167),j=_&&_.isMap,M=j?v(j):m;i.exports=M},45220:i=>{i.exports=function isNull(i){return null===i}},81763:(i,s,u)=>{var m=u(44239),v=u(37005);i.exports=function isNumber(i){return"number"==typeof i||v(i)&&"[object Number]"==m(i)}},13218:i=>{i.exports=function isObject(i){var s=typeof i;return null!=i&&("object"==s||"function"==s)}},37005:i=>{i.exports=function isObjectLike(i){return null!=i&&"object"==typeof i}},68630:(i,s,u)=>{var m=u(44239),v=u(85924),_=u(37005),j=Function.prototype,M=Object.prototype,$=j.toString,W=M.hasOwnProperty,X=$.call(Object);i.exports=function isPlainObject(i){if(!_(i)||"[object Object]"!=m(i))return!1;var s=v(i);if(null===s)return!0;var u=W.call(s,"constructor")&&s.constructor;return"function"==typeof u&&u instanceof u&&$.call(u)==X}},72928:(i,s,u)=>{var m=u(29221),v=u(7518),_=u(31167),j=_&&_.isSet,M=j?v(j):m;i.exports=M},47037:(i,s,u)=>{var m=u(44239),v=u(1469),_=u(37005);i.exports=function isString(i){return"string"==typeof i||!v(i)&&_(i)&&"[object String]"==m(i)}},33448:(i,s,u)=>{var m=u(44239),v=u(37005);i.exports=function isSymbol(i){return"symbol"==typeof i||v(i)&&"[object Symbol]"==m(i)}},36719:(i,s,u)=>{var m=u(38749),v=u(7518),_=u(31167),j=_&&_.isTypedArray,M=j?v(j):m;i.exports=M},81018:(i,s,u)=>{var m=u(64160),v=u(37005);i.exports=function isWeakMap(i){return v(i)&&"[object WeakMap]"==m(i)}},72594:(i,s,u)=>{var m=u(85990),v=u(67206);i.exports=function iteratee(i){return v("function"==typeof i?i:m(i,1))}},3674:(i,s,u)=>{var m=u(14636),v=u(280),_=u(98612);i.exports=function keys(i){return _(i)?m(i):v(i)}},81704:(i,s,u)=>{var m=u(14636),v=u(10313),_=u(98612);i.exports=function keysIn(i){return _(i)?m(i,!0):v(i)}},10928:i=>{i.exports=function last(i){var s=null==i?0:i.length;return s?i[s-1]:void 0}},88306:(i,s,u)=>{var m=u(83369);function memoize(i,s){if("function"!=typeof i||null!=s&&"function"!=typeof s)throw new TypeError("Expected a function");var memoized=function(){var u=arguments,m=s?s.apply(this,u):u[0],v=memoized.cache;if(v.has(m))return v.get(m);var _=i.apply(this,u);return memoized.cache=v.set(m,_)||v,_};return memoized.cache=new(memoize.Cache||m),memoized}memoize.Cache=m,i.exports=memoize},82492:(i,s,u)=>{var m=u(42980),v=u(21463)((function(i,s,u){m(i,s,u)}));i.exports=v},94885:i=>{i.exports=function negate(i){if("function"!=typeof i)throw new TypeError("Expected a function");return function(){var s=arguments;switch(s.length){case 0:return!i.call(this);case 1:return!i.call(this,s[0]);case 2:return!i.call(this,s[0],s[1]);case 3:return!i.call(this,s[0],s[1],s[2])}return!i.apply(this,s)}}},50308:i=>{i.exports=function noop(){}},7771:(i,s,u)=>{var m=u(55639);i.exports=function(){return m.Date.now()}},57557:(i,s,u)=>{var m=u(29932),v=u(85990),_=u(57406),j=u(71811),M=u(98363),$=u(60696),W=u(99021),X=u(46904),Y=W((function(i,s){var u={};if(null==i)return u;var W=!1;s=m(s,(function(s){return s=j(s,i),W||(W=s.length>1),s})),M(i,X(i),u),W&&(u=v(u,7,$));for(var Y=s.length;Y--;)_(u,s[Y]);return u}));i.exports=Y},39601:(i,s,u)=>{var m=u(40371),v=u(79152),_=u(15403),j=u(40327);i.exports=function property(i){return _(i)?m(j(i)):v(i)}},4963:(i,s,u)=>{var m=u(97727),v=u(99021),_=v((function(i,s){return m(i,256,void 0,void 0,void 0,s)}));i.exports=_},54061:(i,s,u)=>{var m=u(62663),v=u(89881),_=u(67206),j=u(10107),M=u(1469);i.exports=function reduce(i,s,u){var $=M(i)?m:j,W=arguments.length<3;return $(i,_(s,4),u,W,v)}},36968:(i,s,u)=>{var m=u(10611);i.exports=function set(i,s,u){return null==i?i:m(i,s,u)}},59704:(i,s,u)=>{var m=u(82908),v=u(67206),_=u(5076),j=u(1469),M=u(16612);i.exports=function some(i,s,u){var $=j(i)?m:_;return u&&M(i,s,u)&&(s=void 0),$(i,v(s,3))}},70479:i=>{i.exports=function stubArray(){return[]}},95062:i=>{i.exports=function stubFalse(){return!1}},18601:(i,s,u)=>{var m=u(14841),v=1/0;i.exports=function toFinite(i){return i?(i=m(i))===v||i===-1/0?17976931348623157e292*(i<0?-1:1):i==i?i:0:0===i?i:0}},40554:(i,s,u)=>{var m=u(18601);i.exports=function toInteger(i){var s=m(i),u=s%1;return s==s?u?s-u:s:0}},7334:(i,s,u)=>{var m=u(79833);i.exports=function toLower(i){return m(i).toLowerCase()}},14841:(i,s,u)=>{var m=u(27561),v=u(13218),_=u(33448),j=/^[-+]0x[0-9a-f]+$/i,M=/^0b[01]+$/i,$=/^0o[0-7]+$/i,W=parseInt;i.exports=function toNumber(i){if("number"==typeof i)return i;if(_(i))return NaN;if(v(i)){var s="function"==typeof i.valueOf?i.valueOf():i;i=v(s)?s+"":s}if("string"!=typeof i)return 0===i?i:+i;i=m(i);var u=M.test(i);return u||$.test(i)?W(i.slice(2),u?2:8):j.test(i)?NaN:+i}},30084:(i,s,u)=>{var m=u(29932),v=u(278),_=u(1469),j=u(33448),M=u(55514),$=u(40327),W=u(79833);i.exports=function toPath(i){return _(i)?m(i,$):j(i)?[i]:v(M(W(i)))}},59881:(i,s,u)=>{var m=u(98363),v=u(81704);i.exports=function toPlainObject(i){return m(i,v(i))}},79833:(i,s,u)=>{var m=u(80531);i.exports=function toString(i){return null==i?"":m(i)}},11700:(i,s,u)=>{var m=u(98805)("toUpperCase");i.exports=m},58748:(i,s,u)=>{var m=u(49029),v=u(93157),_=u(79833),j=u(2757);i.exports=function words(i,s,u){return i=_(i),void 0===(s=u?void 0:s)?v(i)?j(i):m(i):i.match(s)||[]}},8111:(i,s,u)=>{var m=u(96425),v=u(7548),_=u(9435),j=u(1469),M=u(37005),$=u(21913),W=Object.prototype.hasOwnProperty;function lodash(i){if(M(i)&&!j(i)&&!(i instanceof m)){if(i instanceof v)return i;if(W.call(i,"__wrapped__"))return $(i)}return new v(i)}lodash.prototype=_.prototype,lodash.prototype.constructor=lodash,i.exports=lodash},7287:(i,s,u)=>{var m=u(34865),v=u(1757);i.exports=function zipObject(i,s){return v(i||[],s||[],m)}},96470:(i,s,u)=>{"use strict";var m=u(47802),v=u(21102);s.highlight=highlight,s.highlightAuto=function highlightAuto(i,s){var u,j,M,$,W=s||{},X=W.subset||m.listLanguages(),Y=W.prefix,Z=X.length,ee=-1;null==Y&&(Y=_);if("string"!=typeof i)throw v("Expected `string` for value, got `%s`",i);j={relevance:0,language:null,value:[]},u={relevance:0,language:null,value:[]};for(;++eej.relevance&&(j=M),M.relevance>u.relevance&&(j=u,u=M));j.language&&(u.secondBest=j);return u},s.registerLanguage=function registerLanguage(i,s){m.registerLanguage(i,s)},s.listLanguages=function listLanguages(){return m.listLanguages()},s.registerAlias=function registerAlias(i,s){var u,v=i;s&&((v={})[i]=s);for(u in v)m.registerAliases(v[u],{languageName:u})},Emitter.prototype.addText=function text(i){var s,u,m=this.stack;if(""===i)return;s=m[m.length-1],(u=s.children[s.children.length-1])&&"text"===u.type?u.value+=i:s.children.push({type:"text",value:i})},Emitter.prototype.addKeyword=function addKeyword(i,s){this.openNode(s),this.addText(i),this.closeNode()},Emitter.prototype.addSublanguage=function addSublanguage(i,s){var u=this.stack,m=u[u.length-1],v=i.rootNode.children,_=s?{type:"element",tagName:"span",properties:{className:[s]},children:v}:v;m.children=m.children.concat(_)},Emitter.prototype.openNode=function open(i){var s=this.stack,u=this.options.classPrefix+i,m=s[s.length-1],v={type:"element",tagName:"span",properties:{className:[u]},children:[]};m.children.push(v),s.push(v)},Emitter.prototype.closeNode=function close(){this.stack.pop()},Emitter.prototype.closeAllNodes=noop,Emitter.prototype.finalize=noop,Emitter.prototype.toHTML=function toHtmlNoop(){return""};var _="hljs-";function highlight(i,s,u){var j,M=m.configure({}),$=(u||{}).prefix;if("string"!=typeof i)throw v("Expected `string` for name, got `%s`",i);if(!m.getLanguage(i))throw v("Unknown language: `%s` is not registered",i);if("string"!=typeof s)throw v("Expected `string` for value, got `%s`",s);if(null==$&&($=_),m.configure({__emitter:Emitter,classPrefix:$}),j=m.highlight(s,{language:i,ignoreIllegals:!0}),m.configure(M||{}),j.errorRaised)throw j.errorRaised;return{relevance:j.relevance,language:j.language,value:j.emitter.rootNode.children}}function Emitter(i){this.options=i,this.rootNode={children:[]},this.stack=[this.rootNode]}function noop(){}},42566:(i,s,u)=>{const m=u(94885);function coerceElementMatchingCallback(i){return"string"==typeof i?s=>s.element===i:i.constructor&&i.extend?s=>s instanceof i:i}class ArraySlice{constructor(i){this.elements=i||[]}toValue(){return this.elements.map((i=>i.toValue()))}map(i,s){return this.elements.map(i,s)}flatMap(i,s){return this.map(i,s).reduce(((i,s)=>i.concat(s)),[])}compactMap(i,s){const u=[];return this.forEach((m=>{const v=i.bind(s)(m);v&&u.push(v)})),u}filter(i,s){return i=coerceElementMatchingCallback(i),new ArraySlice(this.elements.filter(i,s))}reject(i,s){return i=coerceElementMatchingCallback(i),new ArraySlice(this.elements.filter(m(i),s))}find(i,s){return i=coerceElementMatchingCallback(i),this.elements.find(i,s)}forEach(i,s){this.elements.forEach(i,s)}reduce(i,s){return this.elements.reduce(i,s)}includes(i){return this.elements.some((s=>s.equals(i)))}shift(){return this.elements.shift()}unshift(i){this.elements.unshift(this.refract(i))}push(i){return this.elements.push(this.refract(i)),this}add(i){this.push(i)}get(i){return this.elements[i]}getValue(i){const s=this.elements[i];if(s)return s.toValue()}get length(){return this.elements.length}get isEmpty(){return 0===this.elements.length}get first(){return this.elements[0]}}"undefined"!=typeof Symbol&&(ArraySlice.prototype[Symbol.iterator]=function symbol(){return this.elements[Symbol.iterator]()}),i.exports=ArraySlice},17645:i=>{class KeyValuePair{constructor(i,s){this.key=i,this.value=s}clone(){const i=new KeyValuePair;return this.key&&(i.key=this.key.clone()),this.value&&(i.value=this.value.clone()),i}}i.exports=KeyValuePair},78520:(i,s,u)=>{const m=u(45220),v=u(47037),_=u(81763),j=u(51584),M=u(13218),$=u(28219),W=u(99829);class Namespace{constructor(i){this.elementMap={},this.elementDetection=[],this.Element=W.Element,this.KeyValuePair=W.KeyValuePair,i&&i.noDefault||this.useDefault(),this._attributeElementKeys=[],this._attributeElementArrayKeys=[]}use(i){return i.namespace&&i.namespace({base:this}),i.load&&i.load({base:this}),this}useDefault(){return this.register("null",W.NullElement).register("string",W.StringElement).register("number",W.NumberElement).register("boolean",W.BooleanElement).register("array",W.ArrayElement).register("object",W.ObjectElement).register("member",W.MemberElement).register("ref",W.RefElement).register("link",W.LinkElement),this.detect(m,W.NullElement,!1).detect(v,W.StringElement,!1).detect(_,W.NumberElement,!1).detect(j,W.BooleanElement,!1).detect(Array.isArray,W.ArrayElement,!1).detect(M,W.ObjectElement,!1),this}register(i,s){return this._elements=void 0,this.elementMap[i]=s,this}unregister(i){return this._elements=void 0,delete this.elementMap[i],this}detect(i,s,u){return void 0===u||u?this.elementDetection.unshift([i,s]):this.elementDetection.push([i,s]),this}toElement(i){if(i instanceof this.Element)return i;let s;for(let u=0;u{const s=i[0].toUpperCase()+i.substr(1);this._elements[s]=this.elementMap[i]}))),this._elements}get serialiser(){return new $(this)}}$.prototype.Namespace=Namespace,i.exports=Namespace},87526:(i,s,u)=>{const m=u(94885),v=u(42566);class ObjectSlice extends v{map(i,s){return this.elements.map((u=>i.bind(s)(u.value,u.key,u)))}filter(i,s){return new ObjectSlice(this.elements.filter((u=>i.bind(s)(u.value,u.key,u))))}reject(i,s){return this.filter(m(i.bind(s)))}forEach(i,s){return this.elements.forEach(((u,m)=>{i.bind(s)(u.value,u.key,u,m)}))}keys(){return this.map(((i,s)=>s.toValue()))}values(){return this.map((i=>i.toValue()))}}i.exports=ObjectSlice},99829:(i,s,u)=>{const m=u(3079),v=u(96295),_=u(16036),j=u(91090),M=u(18866),$=u(35804),W=u(5946),X=u(76735),Y=u(59964),Z=u(38588),ee=u(42566),ie=u(87526),ae=u(17645);function refract(i){if(i instanceof m)return i;if("string"==typeof i)return new _(i);if("number"==typeof i)return new j(i);if("boolean"==typeof i)return new M(i);if(null===i)return new v;if(Array.isArray(i))return new $(i.map(refract));if("object"==typeof i){return new X(i)}return i}m.prototype.ObjectElement=X,m.prototype.RefElement=Z,m.prototype.MemberElement=W,m.prototype.refract=refract,ee.prototype.refract=refract,i.exports={Element:m,NullElement:v,StringElement:_,NumberElement:j,BooleanElement:M,ArrayElement:$,MemberElement:W,ObjectElement:X,LinkElement:Y,RefElement:Z,refract,ArraySlice:ee,ObjectSlice:ie,KeyValuePair:ae}},59964:(i,s,u)=>{const m=u(3079);i.exports=class LinkElement extends m{constructor(i,s,u){super(i||[],s,u),this.element="link"}get relation(){return this.attributes.get("relation")}set relation(i){this.attributes.set("relation",i)}get href(){return this.attributes.get("href")}set href(i){this.attributes.set("href",i)}}},38588:(i,s,u)=>{const m=u(3079);i.exports=class RefElement extends m{constructor(i,s,u){super(i||[],s,u),this.element="ref",this.path||(this.path="element")}get path(){return this.attributes.get("path")}set path(i){this.attributes.set("path",i)}}},43500:(i,s,u)=>{const m=u(78520),v=u(99829);s.lS=m,u(17645),s.O4=v.ArraySlice,v.ObjectSlice,s.W_=v.Element,s.RP=v.StringElement,s.VL=v.NumberElement,s.hh=v.BooleanElement,s.zr=v.NullElement,s.ON=v.ArrayElement,s.Sb=v.ObjectElement,s.c6=v.MemberElement,s.tK=v.RefElement,s.EA=v.LinkElement,s.Qc=v.refract,u(28219),u(3414)},35804:(i,s,u)=>{const m=u(94885),v=u(3079),_=u(42566);class ArrayElement extends v{constructor(i,s,u){super(i||[],s,u),this.element="array"}primitive(){return"array"}get(i){return this.content[i]}getValue(i){const s=this.get(i);if(s)return s.toValue()}getIndex(i){return this.content[i]}set(i,s){return this.content[i]=this.refract(s),this}remove(i){const s=this.content.splice(i,1);return s.length?s[0]:null}map(i,s){return this.content.map(i,s)}flatMap(i,s){return this.map(i,s).reduce(((i,s)=>i.concat(s)),[])}compactMap(i,s){const u=[];return this.forEach((m=>{const v=i.bind(s)(m);v&&u.push(v)})),u}filter(i,s){return new _(this.content.filter(i,s))}reject(i,s){return this.filter(m(i),s)}reduce(i,s){let u,m;void 0!==s?(u=0,m=this.refract(s)):(u=1,m="object"===this.primitive()?this.first.value:this.first);for(let s=u;s{i.bind(s)(u,this.refract(m))}))}shift(){return this.content.shift()}unshift(i){this.content.unshift(this.refract(i))}push(i){return this.content.push(this.refract(i)),this}add(i){this.push(i)}findElements(i,s){const u=s||{},m=!!u.recursive,v=void 0===u.results?[]:u.results;return this.forEach(((s,u,_)=>{m&&void 0!==s.findElements&&s.findElements(i,{results:v,recursive:m}),i(s,u,_)&&v.push(s)})),v}find(i){return new _(this.findElements(i,{recursive:!0}))}findByElement(i){return this.find((s=>s.element===i))}findByClass(i){return this.find((s=>s.classes.includes(i)))}getById(i){return this.find((s=>s.id.toValue()===i)).first}includes(i){return this.content.some((s=>s.equals(i)))}contains(i){return this.includes(i)}empty(){return new this.constructor([])}"fantasy-land/empty"(){return this.empty()}concat(i){return new this.constructor(this.content.concat(i.content))}"fantasy-land/concat"(i){return this.concat(i)}"fantasy-land/map"(i){return new this.constructor(this.map(i))}"fantasy-land/chain"(i){return this.map((s=>i(s)),this).reduce(((i,s)=>i.concat(s)),this.empty())}"fantasy-land/filter"(i){return new this.constructor(this.content.filter(i))}"fantasy-land/reduce"(i,s){return this.content.reduce(i,s)}get length(){return this.content.length}get isEmpty(){return 0===this.content.length}get first(){return this.getIndex(0)}get second(){return this.getIndex(1)}get last(){return this.getIndex(this.length-1)}}ArrayElement.empty=function empty(){return new this},ArrayElement["fantasy-land/empty"]=ArrayElement.empty,"undefined"!=typeof Symbol&&(ArrayElement.prototype[Symbol.iterator]=function symbol(){return this.content[Symbol.iterator]()}),i.exports=ArrayElement},18866:(i,s,u)=>{const m=u(3079);i.exports=class BooleanElement extends m{constructor(i,s,u){super(i,s,u),this.element="boolean"}primitive(){return"boolean"}}},3079:(i,s,u)=>{const m=u(18446),v=u(17645),_=u(42566);class Element{constructor(i,s,u){s&&(this.meta=s),u&&(this.attributes=u),this.content=i}freeze(){Object.isFrozen(this)||(this._meta&&(this.meta.parent=this,this.meta.freeze()),this._attributes&&(this.attributes.parent=this,this.attributes.freeze()),this.children.forEach((i=>{i.parent=this,i.freeze()}),this),this.content&&Array.isArray(this.content)&&Object.freeze(this.content),Object.freeze(this))}primitive(){}clone(){const i=new this.constructor;return i.element=this.element,this.meta.length&&(i._meta=this.meta.clone()),this.attributes.length&&(i._attributes=this.attributes.clone()),this.content?this.content.clone?i.content=this.content.clone():Array.isArray(this.content)?i.content=this.content.map((i=>i.clone())):i.content=this.content:i.content=this.content,i}toValue(){return this.content instanceof Element?this.content.toValue():this.content instanceof v?{key:this.content.key.toValue(),value:this.content.value?this.content.value.toValue():void 0}:this.content&&this.content.map?this.content.map((i=>i.toValue()),this):this.content}toRef(i){if(""===this.id.toValue())throw Error("Cannot create reference to an element that does not contain an ID");const s=new this.RefElement(this.id.toValue());return i&&(s.path=i),s}findRecursive(...i){if(arguments.length>1&&!this.isFrozen)throw new Error("Cannot find recursive with multiple element names without first freezing the element. Call `element.freeze()`");const s=i.pop();let u=new _;const append=(i,s)=>(i.push(s),i),checkElement=(i,u)=>{u.element===s&&i.push(u);const m=u.findRecursive(s);return m&&m.reduce(append,i),u.content instanceof v&&(u.content.key&&checkElement(i,u.content.key),u.content.value&&checkElement(i,u.content.value)),i};return this.content&&(this.content.element&&checkElement(u,this.content),Array.isArray(this.content)&&this.content.reduce(checkElement,u)),i.isEmpty||(u=u.filter((s=>{let u=s.parents.map((i=>i.element));for(const s in i){const m=i[s],v=u.indexOf(m);if(-1===v)return!1;u=u.splice(0,v)}return!0}))),u}set(i){return this.content=i,this}equals(i){return m(this.toValue(),i)}getMetaProperty(i,s){if(!this.meta.hasKey(i)){if(this.isFrozen){const i=this.refract(s);return i.freeze(),i}this.meta.set(i,s)}return this.meta.get(i)}setMetaProperty(i,s){this.meta.set(i,s)}get element(){return this._storedElement||"element"}set element(i){this._storedElement=i}get content(){return this._content}set content(i){if(i instanceof Element)this._content=i;else if(i instanceof _)this.content=i.elements;else if("string"==typeof i||"number"==typeof i||"boolean"==typeof i||"null"===i||null==i)this._content=i;else if(i instanceof v)this._content=i;else if(Array.isArray(i))this._content=i.map(this.refract);else{if("object"!=typeof i)throw new Error("Cannot set content to given value");this._content=Object.keys(i).map((s=>new this.MemberElement(s,i[s])))}}get meta(){if(!this._meta){if(this.isFrozen){const i=new this.ObjectElement;return i.freeze(),i}this._meta=new this.ObjectElement}return this._meta}set meta(i){i instanceof this.ObjectElement?this._meta=i:this.meta.set(i||{})}get attributes(){if(!this._attributes){if(this.isFrozen){const i=new this.ObjectElement;return i.freeze(),i}this._attributes=new this.ObjectElement}return this._attributes}set attributes(i){i instanceof this.ObjectElement?this._attributes=i:this.attributes.set(i||{})}get id(){return this.getMetaProperty("id","")}set id(i){this.setMetaProperty("id",i)}get classes(){return this.getMetaProperty("classes",[])}set classes(i){this.setMetaProperty("classes",i)}get title(){return this.getMetaProperty("title","")}set title(i){this.setMetaProperty("title",i)}get description(){return this.getMetaProperty("description","")}set description(i){this.setMetaProperty("description",i)}get links(){return this.getMetaProperty("links",[])}set links(i){this.setMetaProperty("links",i)}get isFrozen(){return Object.isFrozen(this)}get parents(){let{parent:i}=this;const s=new _;for(;i;)s.push(i),i=i.parent;return s}get children(){if(Array.isArray(this.content))return new _(this.content);if(this.content instanceof v){const i=new _([this.content.key]);return this.content.value&&i.push(this.content.value),i}return this.content instanceof Element?new _([this.content]):new _}get recursiveChildren(){const i=new _;return this.children.forEach((s=>{i.push(s),s.recursiveChildren.forEach((s=>{i.push(s)}))})),i}}i.exports=Element},5946:(i,s,u)=>{const m=u(17645),v=u(3079);i.exports=class MemberElement extends v{constructor(i,s,u,v){super(new m,u,v),this.element="member",this.key=i,this.value=s}get key(){return this.content.key}set key(i){this.content.key=this.refract(i)}get value(){return this.content.value}set value(i){this.content.value=this.refract(i)}}},96295:(i,s,u)=>{const m=u(3079);i.exports=class NullElement extends m{constructor(i,s,u){super(i||null,s,u),this.element="null"}primitive(){return"null"}set(){return new Error("Cannot set the value of null")}}},91090:(i,s,u)=>{const m=u(3079);i.exports=class NumberElement extends m{constructor(i,s,u){super(i,s,u),this.element="number"}primitive(){return"number"}}},76735:(i,s,u)=>{const m=u(94885),v=u(13218),_=u(35804),j=u(5946),M=u(87526);i.exports=class ObjectElement extends _{constructor(i,s,u){super(i||[],s,u),this.element="object"}primitive(){return"object"}toValue(){return this.content.reduce(((i,s)=>(i[s.key.toValue()]=s.value?s.value.toValue():void 0,i)),{})}get(i){const s=this.getMember(i);if(s)return s.value}getMember(i){if(void 0!==i)return this.content.find((s=>s.key.toValue()===i))}remove(i){let s=null;return this.content=this.content.filter((u=>u.key.toValue()!==i||(s=u,!1))),s}getKey(i){const s=this.getMember(i);if(s)return s.key}set(i,s){if(v(i))return Object.keys(i).forEach((s=>{this.set(s,i[s])})),this;const u=i,m=this.getMember(u);return m?m.value=s:this.content.push(new j(u,s)),this}keys(){return this.content.map((i=>i.key.toValue()))}values(){return this.content.map((i=>i.value.toValue()))}hasKey(i){return this.content.some((s=>s.key.equals(i)))}items(){return this.content.map((i=>[i.key.toValue(),i.value.toValue()]))}map(i,s){return this.content.map((u=>i.bind(s)(u.value,u.key,u)))}compactMap(i,s){const u=[];return this.forEach(((m,v,_)=>{const j=i.bind(s)(m,v,_);j&&u.push(j)})),u}filter(i,s){return new M(this.content).filter(i,s)}reject(i,s){return this.filter(m(i),s)}forEach(i,s){return this.content.forEach((u=>i.bind(s)(u.value,u.key,u)))}}},16036:(i,s,u)=>{const m=u(3079);i.exports=class StringElement extends m{constructor(i,s,u){super(i,s,u),this.element="string"}primitive(){return"string"}get length(){return this.content.length}}},3414:(i,s,u)=>{const m=u(28219);i.exports=class JSON06Serialiser extends m{serialise(i){if(!(i instanceof this.namespace.elements.Element))throw new TypeError(`Given element \`${i}\` is not an Element instance`);let s;i._attributes&&i.attributes.get("variable")&&(s=i.attributes.get("variable"));const u={element:i.element};i._meta&&i._meta.length>0&&(u.meta=this.serialiseObject(i.meta));const m="enum"===i.element||-1!==i.attributes.keys().indexOf("enumerations");if(m){const s=this.enumSerialiseAttributes(i);s&&(u.attributes=s)}else if(i._attributes&&i._attributes.length>0){let{attributes:m}=i;m.get("metadata")&&(m=m.clone(),m.set("meta",m.get("metadata")),m.remove("metadata")),"member"===i.element&&s&&(m=m.clone(),m.remove("variable")),m.length>0&&(u.attributes=this.serialiseObject(m))}if(m)u.content=this.enumSerialiseContent(i,u);else if(this[`${i.element}SerialiseContent`])u.content=this[`${i.element}SerialiseContent`](i,u);else if(void 0!==i.content){let m;s&&i.content.key?(m=i.content.clone(),m.key.attributes.set("variable",s),m=this.serialiseContent(m)):m=this.serialiseContent(i.content),this.shouldSerialiseContent(i,m)&&(u.content=m)}else this.shouldSerialiseContent(i,i.content)&&i instanceof this.namespace.elements.Array&&(u.content=[]);return u}shouldSerialiseContent(i,s){return"parseResult"===i.element||"httpRequest"===i.element||"httpResponse"===i.element||"category"===i.element||"link"===i.element||void 0!==s&&(!Array.isArray(s)||0!==s.length)}refSerialiseContent(i,s){return delete s.attributes,{href:i.toValue(),path:i.path.toValue()}}sourceMapSerialiseContent(i){return i.toValue()}dataStructureSerialiseContent(i){return[this.serialiseContent(i.content)]}enumSerialiseAttributes(i){const s=i.attributes.clone(),u=s.remove("enumerations")||new this.namespace.elements.Array([]),m=s.get("default");let v=s.get("samples")||new this.namespace.elements.Array([]);if(m&&m.content&&(m.content.attributes&&m.content.attributes.remove("typeAttributes"),s.set("default",new this.namespace.elements.Array([m.content]))),v.forEach((i=>{i.content&&i.content.element&&i.content.attributes.remove("typeAttributes")})),i.content&&0!==u.length&&v.unshift(i.content),v=v.map((i=>i instanceof this.namespace.elements.Array?[i]:new this.namespace.elements.Array([i.content]))),v.length&&s.set("samples",v),s.length>0)return this.serialiseObject(s)}enumSerialiseContent(i){if(i._attributes){const s=i.attributes.get("enumerations");if(s&&s.length>0)return s.content.map((i=>{const s=i.clone();return s.attributes.remove("typeAttributes"),this.serialise(s)}))}if(i.content){const s=i.content.clone();return s.attributes.remove("typeAttributes"),[this.serialise(s)]}return[]}deserialise(i){if("string"==typeof i)return new this.namespace.elements.String(i);if("number"==typeof i)return new this.namespace.elements.Number(i);if("boolean"==typeof i)return new this.namespace.elements.Boolean(i);if(null===i)return new this.namespace.elements.Null;if(Array.isArray(i))return new this.namespace.elements.Array(i.map(this.deserialise,this));const s=this.namespace.getElementClass(i.element),u=new s;u.element!==i.element&&(u.element=i.element),i.meta&&this.deserialiseObject(i.meta,u.meta),i.attributes&&this.deserialiseObject(i.attributes,u.attributes);const m=this.deserialiseContent(i.content);if(void 0===m&&null!==u.content||(u.content=m),"enum"===u.element){u.content&&u.attributes.set("enumerations",u.content);let i=u.attributes.get("samples");if(u.attributes.remove("samples"),i){const m=i;i=new this.namespace.elements.Array,m.forEach((m=>{m.forEach((m=>{const v=new s(m);v.element=u.element,i.push(v)}))}));const v=i.shift();u.content=v?v.content:void 0,u.attributes.set("samples",i)}else u.content=void 0;let m=u.attributes.get("default");if(m&&m.length>0){m=m.get(0);const i=new s(m);i.element=u.element,u.attributes.set("default",i)}}else if("dataStructure"===u.element&&Array.isArray(u.content))[u.content]=u.content;else if("category"===u.element){const i=u.attributes.get("meta");i&&(u.attributes.set("metadata",i),u.attributes.remove("meta"))}else"member"===u.element&&u.key&&u.key._attributes&&u.key._attributes.getValue("variable")&&(u.attributes.set("variable",u.key.attributes.get("variable")),u.key.attributes.remove("variable"));return u}serialiseContent(i){if(i instanceof this.namespace.elements.Element)return this.serialise(i);if(i instanceof this.namespace.KeyValuePair){const s={key:this.serialise(i.key)};return i.value&&(s.value=this.serialise(i.value)),s}return i&&i.map?i.map(this.serialise,this):i}deserialiseContent(i){if(i){if(i.element)return this.deserialise(i);if(i.key){const s=new this.namespace.KeyValuePair(this.deserialise(i.key));return i.value&&(s.value=this.deserialise(i.value)),s}if(i.map)return i.map(this.deserialise,this)}return i}shouldRefract(i){return!!(i._attributes&&i.attributes.keys().length||i._meta&&i.meta.keys().length)||"enum"!==i.element&&(i.element!==i.primitive()||"member"===i.element)}convertKeyToRefract(i,s){return this.shouldRefract(s)?this.serialise(s):"enum"===s.element?this.serialiseEnum(s):"array"===s.element?s.map((s=>this.shouldRefract(s)||"default"===i?this.serialise(s):"array"===s.element||"object"===s.element||"enum"===s.element?s.children.map((i=>this.serialise(i))):s.toValue())):"object"===s.element?(s.content||[]).map(this.serialise,this):s.toValue()}serialiseEnum(i){return i.children.map((i=>this.serialise(i)))}serialiseObject(i){const s={};return i.forEach(((i,u)=>{if(i){const m=u.toValue();s[m]=this.convertKeyToRefract(m,i)}})),s}deserialiseObject(i,s){Object.keys(i).forEach((u=>{s.set(u,this.deserialise(i[u]))}))}}},28219:i=>{i.exports=class JSONSerialiser{constructor(i){this.namespace=i||new this.Namespace}serialise(i){if(!(i instanceof this.namespace.elements.Element))throw new TypeError(`Given element \`${i}\` is not an Element instance`);const s={element:i.element};i._meta&&i._meta.length>0&&(s.meta=this.serialiseObject(i.meta)),i._attributes&&i._attributes.length>0&&(s.attributes=this.serialiseObject(i.attributes));const u=this.serialiseContent(i.content);return void 0!==u&&(s.content=u),s}deserialise(i){if(!i.element)throw new Error("Given value is not an object containing an element name");const s=new(this.namespace.getElementClass(i.element));s.element!==i.element&&(s.element=i.element),i.meta&&this.deserialiseObject(i.meta,s.meta),i.attributes&&this.deserialiseObject(i.attributes,s.attributes);const u=this.deserialiseContent(i.content);return void 0===u&&null!==s.content||(s.content=u),s}serialiseContent(i){if(i instanceof this.namespace.elements.Element)return this.serialise(i);if(i instanceof this.namespace.KeyValuePair){const s={key:this.serialise(i.key)};return i.value&&(s.value=this.serialise(i.value)),s}if(i&&i.map){if(0===i.length)return;return i.map(this.serialise,this)}return i}deserialiseContent(i){if(i){if(i.element)return this.deserialise(i);if(i.key){const s=new this.namespace.KeyValuePair(this.deserialise(i.key));return i.value&&(s.value=this.deserialise(i.value)),s}if(i.map)return i.map(this.deserialise,this)}return i}serialiseObject(i){const s={};if(i.forEach(((i,u)=>{i&&(s[u.toValue()]=this.serialise(i))})),0!==Object.keys(s).length)return s}deserialiseObject(i,s){Object.keys(i).forEach((u=>{s.set(u,this.deserialise(i[u]))}))}}},27418:i=>{"use strict";var s=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,m=Object.prototype.propertyIsEnumerable;i.exports=function shouldUseNative(){try{if(!Object.assign)return!1;var i=new String("abc");if(i[5]="de","5"===Object.getOwnPropertyNames(i)[0])return!1;for(var s={},u=0;u<10;u++)s["_"+String.fromCharCode(u)]=u;if("0123456789"!==Object.getOwnPropertyNames(s).map((function(i){return s[i]})).join(""))return!1;var m={};return"abcdefghijklmnopqrst".split("").forEach((function(i){m[i]=i})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},m)).join("")}catch(i){return!1}}()?Object.assign:function(i,v){for(var _,j,M=function toObject(i){if(null==i)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(i)}(i),$=1;${var m="function"==typeof Map&&Map.prototype,v=Object.getOwnPropertyDescriptor&&m?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,_=m&&v&&"function"==typeof v.get?v.get:null,j=m&&Map.prototype.forEach,M="function"==typeof Set&&Set.prototype,$=Object.getOwnPropertyDescriptor&&M?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,W=M&&$&&"function"==typeof $.get?$.get:null,X=M&&Set.prototype.forEach,Y="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,Z="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,ee="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,ie=Boolean.prototype.valueOf,ae=Object.prototype.toString,ce=Function.prototype.toString,le=String.prototype.match,pe=String.prototype.slice,de=String.prototype.replace,fe=String.prototype.toUpperCase,ye=String.prototype.toLowerCase,be=RegExp.prototype.test,_e=Array.prototype.concat,we=Array.prototype.join,Se=Array.prototype.slice,xe=Math.floor,Pe="function"==typeof BigInt?BigInt.prototype.valueOf:null,Ie=Object.getOwnPropertySymbols,Te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Re="function"==typeof Symbol&&"object"==typeof Symbol.iterator,qe="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===Re||"symbol")?Symbol.toStringTag:null,ze=Object.prototype.propertyIsEnumerable,Ve=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(i){return i.__proto__}:null);function addNumericSeparator(i,s){if(i===1/0||i===-1/0||i!=i||i&&i>-1e3&&i<1e3||be.call(/e/,s))return s;var u=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof i){var m=i<0?-xe(-i):xe(i);if(m!==i){var v=String(m),_=pe.call(s,v.length+1);return de.call(v,u,"$&_")+"."+de.call(de.call(_,/([0-9]{3})/g,"$&_"),/_$/,"")}}return de.call(s,u,"$&_")}var We=u(24654),He=We.custom,Xe=isSymbol(He)?He:null;function wrapQuotes(i,s,u){var m="double"===(u.quoteStyle||s)?'"':"'";return m+i+m}function quote(i){return de.call(String(i),/"/g,""")}function isArray(i){return!("[object Array]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}function isRegExp(i){return!("[object RegExp]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}function isSymbol(i){if(Re)return i&&"object"==typeof i&&i instanceof Symbol;if("symbol"==typeof i)return!0;if(!i||"object"!=typeof i||!Te)return!1;try{return Te.call(i),!0}catch(i){}return!1}i.exports=function inspect_(i,s,u,m){var v=s||{};if(has(v,"quoteStyle")&&"single"!==v.quoteStyle&&"double"!==v.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(v,"maxStringLength")&&("number"==typeof v.maxStringLength?v.maxStringLength<0&&v.maxStringLength!==1/0:null!==v.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var M=!has(v,"customInspect")||v.customInspect;if("boolean"!=typeof M&&"symbol"!==M)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(v,"indent")&&null!==v.indent&&"\t"!==v.indent&&!(parseInt(v.indent,10)===v.indent&&v.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(v,"numericSeparator")&&"boolean"!=typeof v.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var $=v.numericSeparator;if(void 0===i)return"undefined";if(null===i)return"null";if("boolean"==typeof i)return i?"true":"false";if("string"==typeof i)return inspectString(i,v);if("number"==typeof i){if(0===i)return 1/0/i>0?"0":"-0";var ae=String(i);return $?addNumericSeparator(i,ae):ae}if("bigint"==typeof i){var fe=String(i)+"n";return $?addNumericSeparator(i,fe):fe}var be=void 0===v.depth?5:v.depth;if(void 0===u&&(u=0),u>=be&&be>0&&"object"==typeof i)return isArray(i)?"[Array]":"[Object]";var xe=function getIndent(i,s){var u;if("\t"===i.indent)u="\t";else{if(!("number"==typeof i.indent&&i.indent>0))return null;u=we.call(Array(i.indent+1)," ")}return{base:u,prev:we.call(Array(s+1),u)}}(v,u);if(void 0===m)m=[];else if(indexOf(m,i)>=0)return"[Circular]";function inspect(i,s,_){if(s&&(m=Se.call(m)).push(s),_){var j={depth:v.depth};return has(v,"quoteStyle")&&(j.quoteStyle=v.quoteStyle),inspect_(i,j,u+1,m)}return inspect_(i,v,u+1,m)}if("function"==typeof i&&!isRegExp(i)){var Ie=function nameOf(i){if(i.name)return i.name;var s=le.call(ce.call(i),/^function\s*([\w$]+)/);if(s)return s[1];return null}(i),He=arrObjKeys(i,inspect);return"[Function"+(Ie?": "+Ie:" (anonymous)")+"]"+(He.length>0?" { "+we.call(He,", ")+" }":"")}if(isSymbol(i)){var Ye=Re?de.call(String(i),/^(Symbol\(.*\))_[^)]*$/,"$1"):Te.call(i);return"object"!=typeof i||Re?Ye:markBoxed(Ye)}if(function isElement(i){if(!i||"object"!=typeof i)return!1;if("undefined"!=typeof HTMLElement&&i instanceof HTMLElement)return!0;return"string"==typeof i.nodeName&&"function"==typeof i.getAttribute}(i)){for(var Qe="<"+ye.call(String(i.nodeName)),et=i.attributes||[],tt=0;tt"}if(isArray(i)){if(0===i.length)return"[]";var rt=arrObjKeys(i,inspect);return xe&&!function singleLineValues(i){for(var s=0;s=0)return!1;return!0}(rt)?"["+indentedJoin(rt,xe)+"]":"[ "+we.call(rt,", ")+" ]"}if(function isError(i){return!("[object Error]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}(i)){var nt=arrObjKeys(i,inspect);return"cause"in Error.prototype||!("cause"in i)||ze.call(i,"cause")?0===nt.length?"["+String(i)+"]":"{ ["+String(i)+"] "+we.call(nt,", ")+" }":"{ ["+String(i)+"] "+we.call(_e.call("[cause]: "+inspect(i.cause),nt),", ")+" }"}if("object"==typeof i&&M){if(Xe&&"function"==typeof i[Xe]&&We)return We(i,{depth:be-u});if("symbol"!==M&&"function"==typeof i.inspect)return i.inspect()}if(function isMap(i){if(!_||!i||"object"!=typeof i)return!1;try{_.call(i);try{W.call(i)}catch(i){return!0}return i instanceof Map}catch(i){}return!1}(i)){var ot=[];return j&&j.call(i,(function(s,u){ot.push(inspect(u,i,!0)+" => "+inspect(s,i))})),collectionOf("Map",_.call(i),ot,xe)}if(function isSet(i){if(!W||!i||"object"!=typeof i)return!1;try{W.call(i);try{_.call(i)}catch(i){return!0}return i instanceof Set}catch(i){}return!1}(i)){var it=[];return X&&X.call(i,(function(s){it.push(inspect(s,i))})),collectionOf("Set",W.call(i),it,xe)}if(function isWeakMap(i){if(!Y||!i||"object"!=typeof i)return!1;try{Y.call(i,Y);try{Z.call(i,Z)}catch(i){return!0}return i instanceof WeakMap}catch(i){}return!1}(i))return weakCollectionOf("WeakMap");if(function isWeakSet(i){if(!Z||!i||"object"!=typeof i)return!1;try{Z.call(i,Z);try{Y.call(i,Y)}catch(i){return!0}return i instanceof WeakSet}catch(i){}return!1}(i))return weakCollectionOf("WeakSet");if(function isWeakRef(i){if(!ee||!i||"object"!=typeof i)return!1;try{return ee.call(i),!0}catch(i){}return!1}(i))return weakCollectionOf("WeakRef");if(function isNumber(i){return!("[object Number]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}(i))return markBoxed(inspect(Number(i)));if(function isBigInt(i){if(!i||"object"!=typeof i||!Pe)return!1;try{return Pe.call(i),!0}catch(i){}return!1}(i))return markBoxed(inspect(Pe.call(i)));if(function isBoolean(i){return!("[object Boolean]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}(i))return markBoxed(ie.call(i));if(function isString(i){return!("[object String]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}(i))return markBoxed(inspect(String(i)));if(!function isDate(i){return!("[object Date]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}(i)&&!isRegExp(i)){var at=arrObjKeys(i,inspect),st=Ve?Ve(i)===Object.prototype:i instanceof Object||i.constructor===Object,ct=i instanceof Object?"":"null prototype",lt=!st&&qe&&Object(i)===i&&qe in i?pe.call(toStr(i),8,-1):ct?"Object":"",ut=(st||"function"!=typeof i.constructor?"":i.constructor.name?i.constructor.name+" ":"")+(lt||ct?"["+we.call(_e.call([],lt||[],ct||[]),": ")+"] ":"");return 0===at.length?ut+"{}":xe?ut+"{"+indentedJoin(at,xe)+"}":ut+"{ "+we.call(at,", ")+" }"}return String(i)};var Ye=Object.prototype.hasOwnProperty||function(i){return i in this};function has(i,s){return Ye.call(i,s)}function toStr(i){return ae.call(i)}function indexOf(i,s){if(i.indexOf)return i.indexOf(s);for(var u=0,m=i.length;us.maxStringLength){var u=i.length-s.maxStringLength,m="... "+u+" more character"+(u>1?"s":"");return inspectString(pe.call(i,0,s.maxStringLength),s)+m}return wrapQuotes(de.call(de.call(i,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",s)}function lowbyte(i){var s=i.charCodeAt(0),u={8:"b",9:"t",10:"n",12:"f",13:"r"}[s];return u?"\\"+u:"\\x"+(s<16?"0":"")+fe.call(s.toString(16))}function markBoxed(i){return"Object("+i+")"}function weakCollectionOf(i){return i+" { ? }"}function collectionOf(i,s,u,m){return i+" ("+s+") {"+(m?indentedJoin(u,m):we.call(u,", "))+"}"}function indentedJoin(i,s){if(0===i.length)return"";var u="\n"+s.prev+s.base;return u+we.call(i,","+u)+"\n"+s.prev}function arrObjKeys(i,s){var u=isArray(i),m=[];if(u){m.length=i.length;for(var v=0;v{var s,u,m=i.exports={};function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}function runTimeout(i){if(s===setTimeout)return setTimeout(i,0);if((s===defaultSetTimout||!s)&&setTimeout)return s=setTimeout,setTimeout(i,0);try{return s(i,0)}catch(u){try{return s.call(null,i,0)}catch(u){return s.call(this,i,0)}}}!function(){try{s="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(i){s=defaultSetTimout}try{u="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(i){u=defaultClearTimeout}}();var v,_=[],j=!1,M=-1;function cleanUpNextTick(){j&&v&&(j=!1,v.length?_=v.concat(_):M=-1,_.length&&drainQueue())}function drainQueue(){if(!j){var i=runTimeout(cleanUpNextTick);j=!0;for(var s=_.length;s;){for(v=_,_=[];++M1)for(var u=1;u{"use strict";var m=u(50414);function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,i.exports=function(){function shim(i,s,u,v,_,j){if(j!==m){var M=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw M.name="Invariant Violation",M}}function getShim(){return shim}shim.isRequired=shim;var i={array:shim,bigint:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return i.PropTypes=i,i}},45697:(i,s,u)=>{i.exports=u(92703)()},50414:i=>{"use strict";i.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},55798:i=>{"use strict";var s=String.prototype.replace,u=/%20/g,m="RFC1738",v="RFC3986";i.exports={default:v,formatters:{RFC1738:function(i){return s.call(i,u,"+")},RFC3986:function(i){return String(i)}},RFC1738:m,RFC3986:v}},80129:(i,s,u)=>{"use strict";var m=u(58261),v=u(55235),_=u(55798);i.exports={formats:_,parse:v,stringify:m}},55235:(i,s,u)=>{"use strict";var m=u(12769),v=Object.prototype.hasOwnProperty,_=Array.isArray,j={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:m.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},interpretNumericEntities=function(i){return i.replace(/&#(\d+);/g,(function(i,s){return String.fromCharCode(parseInt(s,10))}))},parseArrayValue=function(i,s){return i&&"string"==typeof i&&s.comma&&i.indexOf(",")>-1?i.split(","):i},M=function parseQueryStringKeys(i,s,u,m){if(i){var _=u.allowDots?i.replace(/\.([^.[]+)/g,"[$1]"):i,j=/(\[[^[\]]*])/g,M=u.depth>0&&/(\[[^[\]]*])/.exec(_),$=M?_.slice(0,M.index):_,W=[];if($){if(!u.plainObjects&&v.call(Object.prototype,$)&&!u.allowPrototypes)return;W.push($)}for(var X=0;u.depth>0&&null!==(M=j.exec(_))&&X=0;--_){var j,M=i[_];if("[]"===M&&u.parseArrays)j=[].concat(v);else{j=u.plainObjects?Object.create(null):{};var $="["===M.charAt(0)&&"]"===M.charAt(M.length-1)?M.slice(1,-1):M,W=parseInt($,10);u.parseArrays||""!==$?!isNaN(W)&&M!==$&&String(W)===$&&W>=0&&u.parseArrays&&W<=u.arrayLimit?(j=[])[W]=v:"__proto__"!==$&&(j[$]=v):j={0:v}}v=j}return v}(W,s,u,m)}};i.exports=function(i,s){var u=function normalizeParseOptions(i){if(!i)return j;if(null!==i.decoder&&void 0!==i.decoder&&"function"!=typeof i.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==i.charset&&"utf-8"!==i.charset&&"iso-8859-1"!==i.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var s=void 0===i.charset?j.charset:i.charset;return{allowDots:void 0===i.allowDots?j.allowDots:!!i.allowDots,allowPrototypes:"boolean"==typeof i.allowPrototypes?i.allowPrototypes:j.allowPrototypes,allowSparse:"boolean"==typeof i.allowSparse?i.allowSparse:j.allowSparse,arrayLimit:"number"==typeof i.arrayLimit?i.arrayLimit:j.arrayLimit,charset:s,charsetSentinel:"boolean"==typeof i.charsetSentinel?i.charsetSentinel:j.charsetSentinel,comma:"boolean"==typeof i.comma?i.comma:j.comma,decoder:"function"==typeof i.decoder?i.decoder:j.decoder,delimiter:"string"==typeof i.delimiter||m.isRegExp(i.delimiter)?i.delimiter:j.delimiter,depth:"number"==typeof i.depth||!1===i.depth?+i.depth:j.depth,ignoreQueryPrefix:!0===i.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof i.interpretNumericEntities?i.interpretNumericEntities:j.interpretNumericEntities,parameterLimit:"number"==typeof i.parameterLimit?i.parameterLimit:j.parameterLimit,parseArrays:!1!==i.parseArrays,plainObjects:"boolean"==typeof i.plainObjects?i.plainObjects:j.plainObjects,strictNullHandling:"boolean"==typeof i.strictNullHandling?i.strictNullHandling:j.strictNullHandling}}(s);if(""===i||null==i)return u.plainObjects?Object.create(null):{};for(var $="string"==typeof i?function parseQueryStringValues(i,s){var u,M={},$=s.ignoreQueryPrefix?i.replace(/^\?/,""):i,W=s.parameterLimit===1/0?void 0:s.parameterLimit,X=$.split(s.delimiter,W),Y=-1,Z=s.charset;if(s.charsetSentinel)for(u=0;u-1&&(ie=_(ie)?[ie]:ie),v.call(M,ee)?M[ee]=m.combine(M[ee],ie):M[ee]=ie}return M}(i,u):i,W=u.plainObjects?Object.create(null):{},X=Object.keys($),Y=0;Y{"use strict";var m=u(37478),v=u(12769),_=u(55798),j=Object.prototype.hasOwnProperty,M={brackets:function brackets(i){return i+"[]"},comma:"comma",indices:function indices(i,s){return i+"["+s+"]"},repeat:function repeat(i){return i}},$=Array.isArray,W=String.prototype.split,X=Array.prototype.push,pushToArray=function(i,s){X.apply(i,$(s)?s:[s])},Y=Date.prototype.toISOString,Z=_.default,ee={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:v.encode,encodeValuesOnly:!1,format:Z,formatter:_.formatters[Z],indices:!1,serializeDate:function serializeDate(i){return Y.call(i)},skipNulls:!1,strictNullHandling:!1},ie={},ae=function stringify(i,s,u,_,j,M,X,Y,Z,ae,ce,le,pe,de,fe,ye){for(var be=i,_e=ye,we=0,Se=!1;void 0!==(_e=_e.get(ie))&&!Se;){var xe=_e.get(i);if(we+=1,void 0!==xe){if(xe===we)throw new RangeError("Cyclic object value");Se=!0}void 0===_e.get(ie)&&(we=0)}if("function"==typeof Y?be=Y(s,be):be instanceof Date?be=ce(be):"comma"===u&&$(be)&&(be=v.maybeMap(be,(function(i){return i instanceof Date?ce(i):i}))),null===be){if(j)return X&&!de?X(s,ee.encoder,fe,"key",le):s;be=""}if(function isNonNullishPrimitive(i){return"string"==typeof i||"number"==typeof i||"boolean"==typeof i||"symbol"==typeof i||"bigint"==typeof i}(be)||v.isBuffer(be)){if(X){var Pe=de?s:X(s,ee.encoder,fe,"key",le);if("comma"===u&&de){for(var Ie=W.call(String(be),","),Te="",Re=0;Re0?be.join(",")||null:void 0}];else if($(Y))qe=Y;else{var Ve=Object.keys(be);qe=Z?Ve.sort(Z):Ve}for(var We=_&&$(be)&&1===be.length?s+"[]":s,He=0;He0?fe+de:""}},12769:(i,s,u)=>{"use strict";var m=u(55798),v=Object.prototype.hasOwnProperty,_=Array.isArray,j=function(){for(var i=[],s=0;s<256;++s)i.push("%"+((s<16?"0":"")+s.toString(16)).toUpperCase());return i}(),M=function arrayToObject(i,s){for(var u=s&&s.plainObjects?Object.create(null):{},m=0;m1;){var s=i.pop(),u=s.obj[s.prop];if(_(u)){for(var m=[],v=0;v=48&&X<=57||X>=65&&X<=90||X>=97&&X<=122||_===m.RFC1738&&(40===X||41===X)?$+=M.charAt(W):X<128?$+=j[X]:X<2048?$+=j[192|X>>6]+j[128|63&X]:X<55296||X>=57344?$+=j[224|X>>12]+j[128|X>>6&63]+j[128|63&X]:(W+=1,X=65536+((1023&X)<<10|1023&M.charCodeAt(W)),$+=j[240|X>>18]+j[128|X>>12&63]+j[128|X>>6&63]+j[128|63&X])}return $},isBuffer:function isBuffer(i){return!(!i||"object"!=typeof i)&&!!(i.constructor&&i.constructor.isBuffer&&i.constructor.isBuffer(i))},isRegExp:function isRegExp(i){return"[object RegExp]"===Object.prototype.toString.call(i)},maybeMap:function maybeMap(i,s){if(_(i)){for(var u=[],m=0;m{"use strict";var u=Object.prototype.hasOwnProperty;function decode(i){try{return decodeURIComponent(i.replace(/\+/g," "))}catch(i){return null}}function encode(i){try{return encodeURIComponent(i)}catch(i){return null}}s.stringify=function querystringify(i,s){s=s||"";var m,v,_=[];for(v in"string"!=typeof s&&(s="?"),i)if(u.call(i,v)){if((m=i[v])||null!=m&&!isNaN(m)||(m=""),v=encode(v),m=encode(m),null===v||null===m)continue;_.push(v+"="+m)}return _.length?s+_.join("&"):""},s.parse=function querystring(i){for(var s,u=/([^=?#&]+)=?([^&]*)/g,m={};s=u.exec(i);){var v=decode(s[1]),_=decode(s[2]);null===v||null===_||v in m||(m[v]=_)}return m}},14419:(i,s,u)=>{const m=u(60697),v=u(69450),_=m.types;i.exports=class RandExp{constructor(i,s){if(this._setDefaults(i),i instanceof RegExp)this.ignoreCase=i.ignoreCase,this.multiline=i.multiline,i=i.source;else{if("string"!=typeof i)throw new Error("Expected a regexp or string");this.ignoreCase=s&&-1!==s.indexOf("i"),this.multiline=s&&-1!==s.indexOf("m")}this.tokens=m(i)}_setDefaults(i){this.max=null!=i.max?i.max:null!=RandExp.prototype.max?RandExp.prototype.max:100,this.defaultRange=i.defaultRange?i.defaultRange:this.defaultRange.clone(),i.randInt&&(this.randInt=i.randInt)}gen(){return this._gen(this.tokens,[])}_gen(i,s){var u,m,v,j,M;switch(i.type){case _.ROOT:case _.GROUP:if(i.followedBy||i.notFollowedBy)return"";for(i.remember&&void 0===i.groupNumber&&(i.groupNumber=s.push(null)-1),m="",j=0,M=(u=i.options?this._randSelect(i.options):i.stack).length;j{"use strict";var m=u(34155),v=65536,_=4294967295;var j=u(89509).Buffer,M=u.g.crypto||u.g.msCrypto;M&&M.getRandomValues?i.exports=function randomBytes(i,s){if(i>_)throw new RangeError("requested too many random bytes");var u=j.allocUnsafe(i);if(i>0)if(i>v)for(var $=0;${"use strict";function _typeof(i){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(i){return typeof i}:function(i){return i&&"function"==typeof Symbol&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},_typeof(i)}Object.defineProperty(s,"__esModule",{value:!0}),s.CopyToClipboard=void 0;var m=_interopRequireDefault(u(67294)),v=_interopRequireDefault(u(20640)),_=["text","onCopy","options","children"];function _interopRequireDefault(i){return i&&i.__esModule?i:{default:i}}function ownKeys(i,s){var u=Object.keys(i);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(i);s&&(m=m.filter((function(s){return Object.getOwnPropertyDescriptor(i,s).enumerable}))),u.push.apply(u,m)}return u}function _objectSpread(i){for(var s=1;s=0||(v[u]=i[u]);return v}(i,s);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(i);for(m=0;m<_.length;m++)u=_[m],s.indexOf(u)>=0||Object.prototype.propertyIsEnumerable.call(i,u)&&(v[u]=i[u])}return v}function _defineProperties(i,s){for(var u=0;u{"use strict";var m=u(74300).CopyToClipboard;m.CopyToClipboard=m,i.exports=m},53441:(i,s,u)=>{"use strict";function _typeof(i){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(i){return typeof i}:function(i){return i&&"function"==typeof Symbol&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},_typeof(i)}Object.defineProperty(s,"__esModule",{value:!0}),s.DebounceInput=void 0;var m=_interopRequireDefault(u(67294)),v=_interopRequireDefault(u(91296)),_=["element","onChange","value","minLength","debounceTimeout","forceNotifyByEnter","forceNotifyOnBlur","onKeyDown","onBlur","inputRef"];function _interopRequireDefault(i){return i&&i.__esModule?i:{default:i}}function _objectWithoutProperties(i,s){if(null==i)return{};var u,m,v=function _objectWithoutPropertiesLoose(i,s){if(null==i)return{};var u,m,v={},_=Object.keys(i);for(m=0;m<_.length;m++)u=_[m],s.indexOf(u)>=0||(v[u]=i[u]);return v}(i,s);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(i);for(m=0;m<_.length;m++)u=_[m],s.indexOf(u)>=0||Object.prototype.propertyIsEnumerable.call(i,u)&&(v[u]=i[u])}return v}function ownKeys(i,s){var u=Object.keys(i);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(i);s&&(m=m.filter((function(s){return Object.getOwnPropertyDescriptor(i,s).enumerable}))),u.push.apply(u,m)}return u}function _objectSpread(i){for(var s=1;s=m?u.notify(i):s.length>v.length&&u.notify(_objectSpread(_objectSpread({},i),{},{target:_objectSpread(_objectSpread({},i.target),{},{value:""})}))}))})),_defineProperty(_assertThisInitialized(u),"onKeyDown",(function(i){"Enter"===i.key&&u.forceNotify(i);var s=u.props.onKeyDown;s&&(i.persist(),s(i))})),_defineProperty(_assertThisInitialized(u),"onBlur",(function(i){u.forceNotify(i);var s=u.props.onBlur;s&&(i.persist(),s(i))})),_defineProperty(_assertThisInitialized(u),"createNotifier",(function(i){if(i<0)u.notify=function(){return null};else if(0===i)u.notify=u.doNotify;else{var s=(0,v.default)((function(i){u.isDebouncing=!1,u.doNotify(i)}),i);u.notify=function(i){u.isDebouncing=!0,s(i)},u.flush=function(){return s.flush()},u.cancel=function(){u.isDebouncing=!1,s.cancel()}}})),_defineProperty(_assertThisInitialized(u),"doNotify",(function(){u.props.onChange.apply(void 0,arguments)})),_defineProperty(_assertThisInitialized(u),"forceNotify",(function(i){var s=u.props.debounceTimeout;if(u.isDebouncing||!(s>0)){u.cancel&&u.cancel();var m=u.state.value,v=u.props.minLength;m.length>=v?u.doNotify(i):u.doNotify(_objectSpread(_objectSpread({},i),{},{target:_objectSpread(_objectSpread({},i.target),{},{value:m})}))}})),u.isDebouncing=!1,u.state={value:void 0===i.value||null===i.value?"":i.value};var m=u.props.debounceTimeout;return u.createNotifier(m),u}return function _createClass(i,s,u){return s&&_defineProperties(i.prototype,s),u&&_defineProperties(i,u),Object.defineProperty(i,"prototype",{writable:!1}),i}(DebounceInput,[{key:"componentDidUpdate",value:function componentDidUpdate(i){if(!this.isDebouncing){var s=this.props,u=s.value,m=s.debounceTimeout,v=i.debounceTimeout,_=i.value,j=this.state.value;void 0!==u&&_!==u&&j!==u&&this.setState({value:u}),m!==v&&this.createNotifier(m)}}},{key:"componentWillUnmount",value:function componentWillUnmount(){this.flush&&this.flush()}},{key:"render",value:function render(){var i,s,u=this.props,v=u.element,j=(u.onChange,u.value,u.minLength,u.debounceTimeout,u.forceNotifyByEnter),M=u.forceNotifyOnBlur,$=u.onKeyDown,W=u.onBlur,X=u.inputRef,Y=_objectWithoutProperties(u,_),Z=this.state.value;i=j?{onKeyDown:this.onKeyDown}:$?{onKeyDown:$}:{},s=M?{onBlur:this.onBlur}:W?{onBlur:W}:{};var ee=X?{ref:X}:{};return m.default.createElement(v,_objectSpread(_objectSpread(_objectSpread(_objectSpread({},Y),{},{onChange:this.onChange,value:Z},i),s),ee))}}]),DebounceInput}(m.default.PureComponent);s.DebounceInput=j,_defineProperty(j,"defaultProps",{element:"input",type:"text",onKeyDown:void 0,onBlur:void 0,value:void 0,minLength:0,debounceTimeout:100,forceNotifyByEnter:!0,forceNotifyOnBlur:!0,inputRef:void 0})},775:(i,s,u)=>{"use strict";var m=u(53441).DebounceInput;m.DebounceInput=m,i.exports=m},64448:(i,s,u)=>{"use strict";var m=u(67294),v=u(27418),_=u(63840);function y(i){for(var s="https://reactjs.org/docs/error-decoder.html?invariant="+i,u=1;u