From 87b04c4f7123e100ec05477a8c055116b01949f5 Mon Sep 17 00:00:00 2001 From: "Ian M. Jones" Date: Thu, 29 Sep 2022 18:23:30 +0100 Subject: [PATCH] Deploying version 3.0.0 --- README.md | 33 +- assets/css/attachment.css | 74 +- assets/css/attachment.min.css | 1 + assets/css/delivery-provider.css | 1 - assets/css/flexboxgrid.css | 894 + assets/css/flexboxgrid.min.css | 1 + assets/css/media.css | 152 +- assets/css/media.min.css | 1 + assets/css/modal.css | 81 +- assets/css/modal.min.css | 1 + assets/css/normalize.css | 379 + assets/css/normalize.min.css | 1 + assets/css/notice.css | 15 +- assets/css/notice.min.css | 1 + assets/css/settings.css | 139 + assets/css/settings.min.css | 1 + assets/css/storage-provider.css | 1 - assets/css/style.css | 3027 ++ assets/css/style.min.css | 1 + assets/css/styles.css | 1 - assets/img/as3cf-banner-bw.jpg | Bin 28115 -> 0 bytes assets/img/as3cf-banner-bw@2x.jpg | Bin 62653 -> 0 bytes assets/img/as3cf-banner.jpg | Bin 36421 -> 0 bytes assets/img/as3cf-banner@2x.jpg | Bin 96997 -> 0 bytes assets/img/aws-logo.svg | 17 - assets/img/brand/default.svg | 17 + assets/img/brand/ome-branding-transparent.svg | 18 + assets/img/brand/ome-medallion.svg | 39 + assets/img/brand/upsell-bunny.svg | 19 + assets/img/do-logo.svg | 6 - assets/img/gcp-logo.svg | 16 - assets/img/icon-assets-pull.svg | 10 - assets/img/icon/arrow.svg | 3 + assets/img/icon/assets-wizard.svg | 8 + assets/img/icon/bucket-round.svg | 6 + assets/img/icon/bucket.svg | 3 + assets/img/icon/check.svg | 3 + assets/img/icon/close.svg | 3 + assets/img/icon/css.svg | 19 + assets/img/icon/dot.svg | 3 + assets/img/icon/download.svg | 19 + assets/img/icon/error.svg | 12 + assets/img/icon/fonts.svg | 19 + assets/img/icon/help.svg | 3 + assets/img/icon/info.svg | 7 + assets/img/icon/js.svg | 19 + assets/img/icon/licence-checked.svg | 9 + assets/img/icon/notification-error.svg | 10 + assets/img/icon/notification-info.svg | 10 + assets/img/icon/notification-locked.svg | 3 + assets/img/icon/notification-success.svg | 10 + assets/img/icon/notification-warning.svg | 10 + assets/img/icon/offload-complete.svg | 12 + assets/img/icon/offload-remaining.svg | 19 + .../img/icon/provider/delivery/aws-round.svg | 25 + assets/img/icon/provider/delivery/aws.svg | 22 + .../img/icon/provider/delivery/cdn-round.svg | 6 + assets/img/icon/provider/delivery/cdn.svg | 3 + .../provider/delivery/cloudflare-round.svg | 10 + .../img/icon/provider/delivery/cloudflare.svg | 7 + .../img/icon/provider/delivery/do-round.svg | 7 + assets/img/icon/provider/delivery/do.svg | 8 + .../img/icon/provider/delivery/gcp-round.svg | 11 + assets/img/icon/provider/delivery/gcp.svg | 8 + assets/img/icon/provider/delivery/keycdn.svg | 11 + .../icon/provider/delivery/other-round.svg | 6 + assets/img/icon/provider/delivery/other.svg | 3 + .../provider/delivery/stackpath-round.svg | 11 + .../img/icon/provider/delivery/stackpath.svg | 8 + assets/img/icon/provider/storage/aws-link.svg | 3 + .../img/icon/provider/storage/aws-round.svg | 7 + assets/img/icon/provider/storage/aws.svg | 3 + assets/img/icon/provider/storage/do-link.svg | 8 + assets/img/icon/provider/storage/do-round.svg | 7 + assets/img/icon/provider/storage/do.svg | 8 + assets/img/icon/provider/storage/gcp-link.svg | 7 + .../img/icon/provider/storage/gcp-round.svg | 11 + assets/img/icon/provider/storage/gcp.svg | 8 + assets/img/icon/region-round.svg | 6 + assets/img/icon/region.svg | 6 + assets/img/icon/remove-from-bucket.svg | 19 + assets/img/icon/remove-from-server.svg | 25 + assets/img/icon/stars.svg | 10 + assets/img/icon/subnav-arrow.svg | 3 + assets/img/icon/tool-analyzerepair-active.svg | 16 + .../img/icon/tool-analyzerepair-default.svg | 16 + assets/img/icon/tool-analyzerepair-paused.svg | 18 + .../tool-analyzerepair-running-animated.svg | 1 + assets/img/icon/tool-clean-active.svg | 17 + assets/img/icon/tool-clean-default.svg | 12 + assets/img/icon/tool-clean-paused.svg | 14 + .../img/icon/tool-clean-running-animated.svg | 1 + assets/img/icon/tool-download-active.svg | 11 + assets/img/icon/tool-download-default.svg | 8 + assets/img/icon/tool-download-paused.svg | 10 + .../icon/tool-download-running-animated.svg | 1 + assets/img/icon/tool-generic-active.svg | 11 + assets/img/icon/tool-generic-default.svg | 11 + assets/img/icon/tool-generic-paused.svg | 13 + .../icon/tool-generic-running-animated.svg | 1 + assets/img/icon/tool-move-active.svg | 8 + assets/img/icon/tool-move-default.svg | 8 + assets/img/icon/tool-move-paused.svg | 10 + .../img/icon/tool-move-running-animated.svg | 1 + assets/img/icon/tool-offload-active.svg | 11 + assets/img/icon/tool-offload-default.svg | 11 + assets/img/icon/tool-offload-paused.svg | 13 + .../icon/tool-offload-running-animated.svg | 1 + assets/img/icon/tool-remove-active.svg | 9 + assets/img/icon/tool-remove-default.svg | 9 + assets/img/icon/tool-remove-paused.svg | 11 + .../img/icon/tool-remove-running-animated.svg | 1 + .../img/icon/tool-status-error-animated.svg | 1 + .../img/icon/tool-status-success-animated.svg | 8 + assets/img/icon/x.svg | 3 + assets/img/icon16.png | Bin 1502 -> 0 bytes .../item-checked.svg} | 0 assets/img/{ => sidebar}/logo-dbi.svg | 0 assets/img/{ => sidebar}/os3-banner.svg | 0 assets/js/delivery-provider.js | 89 - assets/js/delivery-provider.min.js | 1 - assets/js/media.min.js | 2 +- assets/js/modal.min.js | 2 +- assets/js/notice.min.js | 2 +- assets/js/script.js | 835 - assets/js/script.min.js | 1 - assets/js/settings.js | 28551 ++++++++++++++++ assets/js/settings.js.map | 1 + assets/js/settings.min.js | 1 + assets/js/storage-provider.js | 87 - assets/js/storage-provider.min.js | 1 - assets/sass/_buttons.scss | 222 + assets/sass/_icons.scss | 70 + assets/sass/_input.scss | 319 + assets/sass/_navigation.scss | 283 + assets/sass/_notifications.scss | 323 + assets/sass/_providers.scss | 72 + assets/sass/_sidebar.scss | 200 + assets/sass/_typography.scss | 131 + assets/sass/_ui.scss | 1109 + assets/sass/_variables.scss | 84 + assets/sass/delivery-provider.scss | 28 - assets/sass/media.scss | 25 + assets/sass/notice.scss | 4 - assets/sass/storage-provider.scss | 131 - assets/sass/style.scss | 55 + assets/sass/styles.scss | 1183 - classes/amazon-s3-and-cloudfront.php | 2332 +- classes/api/api-manager.php | 87 + classes/api/api.php | 160 + classes/api/v1/buckets.php | 464 + classes/api/v1/diagnostics.php | 42 + classes/api/v1/notifications.php | 84 + classes/api/v1/settings.php | 381 + classes/api/v1/state.php | 51 + classes/api/v1/url-preview.php | 74 + classes/as3cf-compatibility-check.php | 36 +- classes/as3cf-error.php | 4 +- classes/as3cf-filter.php | 8 +- classes/as3cf-notices.php | 198 +- classes/as3cf-plugin-base.php | 439 +- classes/as3cf-plugin-compatibility.php | 31 +- classes/as3cf-utils.php | 290 +- classes/filters/as3cf-local-to-s3.php | 2 + classes/filters/as3cf-s3-to-local.php | 6 +- .../integrations/advanced-custom-fields.php | 183 + classes/integrations/core.php | 4 +- classes/integrations/integration.php | 18 +- classes/integrations/media-library.php | 52 +- classes/items/download-handler.php | 6 +- classes/items/item.php | 58 +- classes/items/media-library-item.php | 38 +- classes/items/remove-local-handler.php | 5 +- classes/items/remove-provider-handler.php | 16 +- classes/items/upload-handler.php | 24 +- classes/providers/delivery/another-cdn.php | 49 - classes/providers/delivery/aws-cloudfront.php | 119 +- classes/providers/delivery/cloudflare.php | 16 +- .../providers/delivery/delivery-provider.php | 173 +- .../delivery/digitalocean-spaces-cdn.php | 23 +- classes/providers/delivery/gcp-cdn.php | 13 +- classes/providers/delivery/keycdn.php | 16 +- classes/providers/delivery/other.php | 4 +- classes/providers/delivery/stackpath.php | 16 +- classes/providers/delivery/storage.php | 72 +- classes/providers/provider.php | 205 +- classes/providers/storage/aws-provider.php | 349 +- .../storage/digitalocean-provider.php | 73 +- classes/providers/storage/gcp-provider.php | 46 +- classes/providers/storage/null-provider.php | 17 +- .../providers/storage/storage-provider.php | 615 +- .../batch-limits-exceeded-exception.php | 3 +- .../exceptions/no-more-blogs-exception.php | 3 +- .../exceptions/too-many-errors-exception.php | 3 +- classes/upgrades/upgrade-filter-post.php | 5 +- classes/upgrades/upgrade-region-meta.php | 4 +- classes/upgrades/upgrade-tools-errors.php | 14 +- classes/upgrades/upgrade-wpos3-to-as3cf.php | 4 +- classes/upgrades/upgrade.php | 127 +- interfaces/settings-interface.php | 150 + languages/amazon-s3-and-cloudfront-en.pot | 1967 +- readme.txt | 39 +- traits/settings-trait.php | 431 + ui/components/AccessKeysDefine.svelte | 7 + ui/components/AccessKeysEntry.svelte | 41 + ui/components/AssetsPage.svelte | 12 + ui/components/AssetsUpgrade.svelte | 33 + ui/components/BackNextButtonsRow.svelte | 57 + ui/components/BlockPublicAccessWarning.svelte | 10 + ui/components/BucketSettingsSubPage.svelte | 418 + ui/components/Button.svelte | 35 + ui/components/Checkbox.svelte | 12 + ui/components/DefinedInWPConfig.svelte | 9 + ui/components/DeliveryPage.svelte | 193 + .../DeliverySettingsHeadingRow.svelte | 72 + ui/components/DeliverySettingsPanel.svelte | 97 + ui/components/DeliverySettingsSubPage.svelte | 8 + ui/components/Footer.svelte | 68 + ui/components/Header.svelte | 15 + ui/components/HelpButton.svelte | 17 + ui/components/KeyFileDefine.svelte | 7 + ui/components/KeyFileEntry.svelte | 15 + ui/components/Loading.svelte | 5 + ui/components/MediaPage.svelte | 59 + ui/components/MediaSettings.svelte | 10 + ui/components/Nav.svelte | 17 + ui/components/NavItem.svelte | 23 + ui/components/Notification.svelte | 130 + ui/components/Notifications.svelte | 22 + .../ObjectOwnershipEnforcedWarning.svelte | 10 + ui/components/Page.svelte | 33 + ui/components/Pages.svelte | 38 + ui/components/Panel.svelte | 97 + ui/components/PanelContainer.svelte | 7 + ui/components/PanelRow.svelte | 30 + ui/components/RadioButton.svelte | 20 + ui/components/SecuritySubPage.svelte | 275 + ui/components/SettingNotifications.svelte | 54 + ui/components/Settings.svelte | 37 + ui/components/SettingsPanelOption.svelte | 141 + ui/components/StoragePage.svelte | 54 + ui/components/StorageProviderSubPage.svelte | 286 + .../StorageSettingsHeadingRow.svelte | 76 + ui/components/StorageSettingsPanel.svelte | 45 + ui/components/StorageSettingsSubPage.svelte | 8 + ui/components/SubNav.svelte | 25 + ui/components/SubNavItem.svelte | 22 + ui/components/SubPage.svelte | 10 + ui/components/SubPages.svelte | 16 + ui/components/SupportPage.svelte | 50 + ui/components/TabButton.svelte | 37 + ui/components/ToggleSwitch.svelte | 17 + ui/components/ToolsPage.svelte | 14 + ui/components/ToolsUpgrade.svelte | 38 + ui/components/Upsell.svelte | 78 + ui/components/UrlPreview.svelte | 59 + ui/components/UseServerRolesDefine.svelte | 7 + ui/js/autofocus.js | 8 + ui/js/defaultPages.js | 136 + ui/js/needsRefresh.js | 26 + ui/js/objectsDiffer.js | 41 + ui/js/routes.js | 117 + ui/js/scrollIntoView.js | 11 + ui/js/scrollNotificationsIntoView.js | 10 + ui/js/settingsNotifications.js | 51 + ui/js/stores.js | 574 + ui/lite/Header.svelte | 8 + ui/lite/Settings.svelte | 118 + ui/lite/Sidebar.svelte | 36 + ui/lite/pages.js | 42 + .../Aws/AbstractConfigurationProvider.php | 22 +- vendor/Aws3/Aws/Api/AbstractModel.php | 20 +- vendor/Aws3/Aws/Api/ApiProvider.php | 18 +- vendor/Aws3/Aws/Api/DateTimeResult.php | 39 +- vendor/Aws3/Aws/Api/DocModel.php | 4 +- .../Api/ErrorParser/AbstractErrorParser.php | 8 +- .../Aws/Api/ErrorParser/JsonParserTrait.php | 4 +- .../Api/ErrorParser/JsonRpcErrorParser.php | 12 +- .../Api/ErrorParser/RestJsonErrorParser.php | 16 +- .../Aws/Api/ErrorParser/XmlErrorParser.php | 14 +- vendor/Aws3/Aws/Api/ListShape.php | 6 +- vendor/Aws3/Aws/Api/MapShape.php | 8 +- vendor/Aws3/Aws/Api/Operation.php | 8 +- vendor/Aws3/Aws/Api/Parser/AbstractParser.php | 6 +- .../Aws/Api/Parser/AbstractRestParser.php | 38 +- .../Aws/Api/Parser/Crc32ValidatingParser.php | 10 +- .../Parser/DecodingEventStreamIterator.php | 67 +- .../Aws/Api/Parser/EventParsingIterator.php | 17 +- .../Api/Parser/Exception/ParserException.php | 2 +- vendor/Aws3/Aws/Api/Parser/JsonParser.php | 14 +- vendor/Aws3/Aws/Api/Parser/JsonRpcParser.php | 12 +- .../Aws/Api/Parser/MetadataParserTrait.php | 24 +- .../Aws/Api/Parser/PayloadParserTrait.php | 16 +- vendor/Aws3/Aws/Api/Parser/QueryParser.php | 12 +- vendor/Aws3/Aws/Api/Parser/RestJsonParser.php | 10 +- vendor/Aws3/Aws/Api/Parser/RestXmlParser.php | 10 +- vendor/Aws3/Aws/Api/Parser/XmlParser.php | 40 +- .../Aws/Api/Serializer/Ec2ParamBuilder.php | 14 +- vendor/Aws3/Aws/Api/Serializer/JsonBody.php | 20 +- .../Aws/Api/Serializer/JsonRpcSerializer.php | 10 +- .../Aws/Api/Serializer/QueryParamBuilder.php | 38 +- .../Aws/Api/Serializer/QuerySerializer.php | 12 +- .../Aws/Api/Serializer/RestJsonSerializer.php | 11 +- .../Aws/Api/Serializer/RestSerializer.php | 84 +- .../Aws/Api/Serializer/RestXmlSerializer.php | 23 +- vendor/Aws3/Aws/Api/Serializer/XmlBody.php | 34 +- vendor/Aws3/Aws/Api/Service.php | 22 +- vendor/Aws3/Aws/Api/Shape.php | 6 +- vendor/Aws3/Aws/Api/ShapeMap.php | 6 +- vendor/Aws3/Aws/Api/StructureShape.php | 4 +- vendor/Aws3/Aws/Api/TimestampShape.php | 16 +- vendor/Aws3/Aws/Api/Validator.php | 154 +- vendor/Aws3/Aws/Arn/AccessPointArn.php | 12 +- vendor/Aws3/Aws/Arn/Arn.php | 44 +- vendor/Aws3/Aws/Arn/ArnParser.php | 24 +- .../Aws/Arn/ObjectLambdaAccessPointArn.php | 35 + .../Aws3/Aws/Arn/ResourceTypeAndIdTrait.php | 4 +- vendor/Aws3/Aws/Arn/S3/AccessPointArn.php | 6 +- .../Aws/Arn/S3/MultiRegionAccessPointArn.php | 35 + .../Aws/Arn/S3/OutpostsAccessPointArn.php | 22 +- vendor/Aws3/Aws/Arn/S3/OutpostsBucketArn.php | 18 +- vendor/Aws3/Aws/AwsClient.php | 54 +- vendor/Aws3/Aws/AwsClientInterface.php | 4 +- vendor/Aws3/Aws/AwsClientTrait.php | 22 +- vendor/Aws3/Aws/ClientResolver.php | 286 +- .../AbstractMonitoringMiddleware.php | 42 +- .../ApiCallAttemptMonitoringMiddleware.php | 48 +- .../ApiCallMonitoringMiddleware.php | 16 +- .../ClientSideMonitoring/Configuration.php | 10 +- .../ConfigurationProvider.php | 36 +- .../Exception/ConfigurationException.php | 2 +- .../MonitoringMiddlewareInterface.php | 4 +- .../Aws3/Aws/CloudFront/CloudFrontClient.php | 40 +- vendor/Aws3/Aws/CloudFront/CookieSigner.php | 8 +- .../Exception/CloudFrontException.php | 2 +- vendor/Aws3/Aws/CloudFront/Signer.php | 22 +- vendor/Aws3/Aws/CloudFront/UrlSigner.php | 24 +- vendor/Aws3/Aws/Command.php | 8 +- vendor/Aws3/Aws/CommandPool.php | 12 +- .../AssumeRoleCredentialProvider.php | 4 +- ...eRoleWithWebIdentityCredentialProvider.php | 55 +- .../Aws/Credentials/CredentialProvider.php | 204 +- vendor/Aws3/Aws/Credentials/Credentials.php | 32 +- .../Aws/Credentials/EcsCredentialProvider.php | 52 +- .../Credentials/InstanceProfileProvider.php | 79 +- .../Aws3/Aws/Crypto/AbstractCryptoClient.php | 8 +- .../Aws/Crypto/AbstractCryptoClientV2.php | 8 +- .../Aws3/Aws/Crypto/AesDecryptingStream.php | 34 +- .../Aws3/Aws/Crypto/AesEncryptingStream.php | 34 +- .../Aws/Crypto/AesGcmDecryptingStream.php | 18 +- .../Aws/Crypto/AesGcmEncryptingStream.php | 12 +- vendor/Aws3/Aws/Crypto/Cipher/Cbc.php | 16 +- .../Aws/Crypto/Cipher/CipherBuilderTrait.php | 4 +- .../Aws3/Aws/Crypto/Cipher/CipherMethod.php | 2 +- vendor/Aws3/Aws/Crypto/DecryptionTrait.php | 26 +- vendor/Aws3/Aws/Crypto/DecryptionTraitV2.php | 50 +- vendor/Aws3/Aws/Crypto/EncryptionTrait.php | 36 +- vendor/Aws3/Aws/Crypto/EncryptionTraitV2.php | 38 +- .../Aws3/Aws/Crypto/KmsMaterialsProvider.php | 12 +- .../Aws/Crypto/KmsMaterialsProviderV2.php | 20 +- vendor/Aws3/Aws/Crypto/MaterialsProvider.php | 10 +- .../Aws/Crypto/MaterialsProviderInterface.php | 2 +- .../Aws3/Aws/Crypto/MaterialsProviderV2.php | 6 +- vendor/Aws3/Aws/Crypto/MetadataEnvelope.php | 17 +- .../Aws/Crypto/MetadataStrategyInterface.php | 2 +- vendor/Aws3/Aws/Crypto/Polyfill/AesGcm.php | 32 +- vendor/Aws3/Aws/Crypto/Polyfill/ByteArray.php | 22 +- vendor/Aws3/Aws/Crypto/Polyfill/Gmac.php | 36 +- vendor/Aws3/Aws/Crypto/Polyfill/Key.php | 2 +- .../Aws3/Aws/Crypto/Polyfill/NeedsTrait.php | 2 +- .../Aws3/Aws/DefaultsMode/Configuration.php | 102 + .../DefaultsMode/ConfigurationInterface.php | 47 + .../DefaultsMode/ConfigurationProvider.php | 166 + .../Exception/ConfigurationException.php | 13 + vendor/Aws3/Aws/DoctrineCacheAdapter.php | 4 +- vendor/Aws3/Aws/Endpoint/EndpointProvider.php | 8 +- vendor/Aws3/Aws/Endpoint/Partition.php | 89 +- .../Endpoint/PartitionEndpointProvider.php | 10 +- .../Aws3/Aws/Endpoint/PartitionInterface.php | 2 +- .../Aws/Endpoint/PatternEndpointProvider.php | 2 +- .../UseDualstackEndpoint/Configuration.php | 34 + .../ConfigurationInterface.php | 19 + .../ConfigurationProvider.php | 145 + .../Exception/ConfigurationException.php | 13 + .../UseFipsEndpoint/Configuration.php | 32 + .../ConfigurationInterface.php | 19 + .../UseFipsEndpoint/ConfigurationProvider.php | 150 + .../Exception/ConfigurationException.php | 13 + .../Aws/EndpointDiscovery/Configuration.php | 8 +- .../ConfigurationProvider.php | 44 +- .../EndpointDiscoveryMiddleware.php | 53 +- .../Aws/EndpointDiscovery/EndpointList.php | 22 +- .../Exception/ConfigurationException.php | 2 +- .../Aws3/Aws/EndpointParameterMiddleware.php | 10 +- vendor/Aws3/Aws/Exception/AwsException.php | 12 +- .../Aws/Exception/CommonRuntimeException.php | 7 + .../CouldNotCreateChecksumException.php | 2 +- .../Aws/Exception/CredentialsException.php | 2 +- .../IncalculablePayloadException.php | 2 +- .../Aws/Exception/InvalidJsonException.php | 2 +- .../Aws/Exception/InvalidRegionException.php | 2 +- .../Exception/MultipartUploadException.php | 10 +- .../Aws/Exception/UnresolvedApiException.php | 2 +- .../Exception/UnresolvedEndpointException.php | 2 +- .../UnresolvedSignatureException.php | 2 +- .../Aws/Handler/GuzzleV5/GuzzleHandler.php | 44 +- .../Aws/Handler/GuzzleV5/GuzzleStream.php | 4 +- .../Aws3/Aws/Handler/GuzzleV5/PsrStream.php | 4 +- .../Aws/Handler/GuzzleV6/GuzzleHandler.php | 14 +- vendor/Aws3/Aws/HandlerList.php | 44 +- vendor/Aws3/Aws/HasDataTrait.php | 23 +- vendor/Aws3/Aws/HasMonitoringEventsTrait.php | 2 +- vendor/Aws3/Aws/HashingStream.php | 10 +- vendor/Aws3/Aws/History.php | 25 +- .../Aws3/Aws/IdempotencyTokenMiddleware.php | 20 +- vendor/Aws3/Aws/InputValidationMiddleware.php | 12 +- vendor/Aws3/Aws/LruArrayCache.php | 20 +- vendor/Aws3/Aws/Middleware.php | 86 +- vendor/Aws3/Aws/MockHandler.php | 21 +- vendor/Aws3/Aws/MultiRegionClient.php | 43 +- .../Aws/Multipart/AbstractUploadManager.php | 32 +- .../Aws3/Aws/Multipart/AbstractUploader.php | 24 +- vendor/Aws3/Aws/Multipart/UploadState.php | 2 +- vendor/Aws3/Aws/PhpHash.php | 12 +- vendor/Aws3/Aws/PresignUrlMiddleware.php | 26 +- vendor/Aws3/Aws/Psr16CacheAdapter.php | 4 +- vendor/Aws3/Aws/PsrCacheAdapter.php | 4 +- vendor/Aws3/Aws/Result.php | 8 +- vendor/Aws3/Aws/ResultPaginator.php | 29 +- vendor/Aws3/Aws/Retry/Configuration.php | 14 +- .../Aws3/Aws/Retry/ConfigurationProvider.php | 38 +- .../Exception/ConfigurationException.php | 2 +- vendor/Aws3/Aws/Retry/QuotaManager.php | 6 +- vendor/Aws3/Aws/Retry/RateLimiter.php | 36 +- vendor/Aws3/Aws/RetryMiddleware.php | 78 +- vendor/Aws3/Aws/RetryMiddlewareV2.php | 92 +- vendor/Aws3/Aws/S3/AmbiguousSuccessParser.php | 12 +- .../Aws3/Aws/S3/ApplyChecksumMiddleware.php | 43 +- vendor/Aws3/Aws/S3/BatchDelete.php | 42 +- .../Aws/S3/BucketEndpointArnMiddleware.php | 128 +- .../Aws3/Aws/S3/BucketEndpointMiddleware.php | 14 +- .../Aws3/Aws/S3/CalculatesChecksumTrait.php | 43 + .../Aws3/Aws/S3/Crypto/CryptoParamsTrait.php | 18 +- .../Aws/S3/Crypto/HeadersMetadataStrategy.php | 8 +- .../InstructionFileMetadataStrategy.php | 14 +- .../Aws3/Aws/S3/Crypto/S3EncryptionClient.php | 20 +- .../Aws/S3/Crypto/S3EncryptionClientV2.php | 28 +- .../Crypto/S3EncryptionMultipartUploader.php | 14 +- .../S3EncryptionMultipartUploaderV2.php | 14 +- vendor/Aws3/Aws/S3/Crypto/UserAgentTrait.php | 6 +- .../Aws3/Aws/S3/EndpointRegionHelperTrait.php | 35 +- .../DeleteMultipleObjectsException.php | 10 +- .../Exception/PermanentRedirectException.php | 2 +- vendor/Aws3/Aws/S3/Exception/S3Exception.php | 2 +- .../Exception/S3MultipartUploadException.php | 6 +- .../Aws3/Aws/S3/GetBucketLocationParser.php | 8 +- vendor/Aws3/Aws/S3/MultipartCopy.php | 85 +- vendor/Aws3/Aws/S3/MultipartUploader.php | 26 +- .../Aws3/Aws/S3/MultipartUploadingTrait.php | 16 +- vendor/Aws3/Aws/S3/ObjectCopier.php | 20 +- vendor/Aws3/Aws/S3/ObjectUploader.php | 24 +- .../Aws/S3/PermanentRedirectMiddleware.php | 6 +- vendor/Aws3/Aws/S3/PostObject.php | 16 +- vendor/Aws3/Aws/S3/PostObjectV4.php | 24 +- vendor/Aws3/Aws/S3/PutObjectUrlMiddleware.php | 4 +- .../Aws/S3/RegionalEndpoint/Configuration.php | 6 +- .../ConfigurationProvider.php | 36 +- .../Exception/ConfigurationException.php | 2 +- .../S3/RetryableMalformedResponseParser.php | 10 +- vendor/Aws3/Aws/S3/S3Client.php | 108 +- vendor/Aws3/Aws/S3/S3ClientInterface.php | 53 +- vendor/Aws3/Aws/S3/S3ClientTrait.php | 82 +- vendor/Aws3/Aws/S3/S3EndpointMiddleware.php | 131 +- vendor/Aws3/Aws/S3/S3MultiRegionClient.php | 22 +- vendor/Aws3/Aws/S3/S3UriParser.php | 50 +- vendor/Aws3/Aws/S3/SSECMiddleware.php | 10 +- vendor/Aws3/Aws/S3/StreamWrapper.php | 153 +- vendor/Aws3/Aws/S3/Transfer.php | 82 +- .../Aws/S3/UseArnRegion/Configuration.php | 10 +- .../S3/UseArnRegion/ConfigurationProvider.php | 30 +- .../Exception/ConfigurationException.php | 2 +- .../Aws/S3/ValidateResponseChecksumParser.php | 105 + vendor/Aws3/Aws/Sdk.php | 124 +- .../Aws3/Aws/Signature/AnonymousSignature.php | 12 +- vendor/Aws3/Aws/Signature/S3SignatureV4.php | 34 +- .../Aws3/Aws/Signature/SignatureInterface.php | 10 +- .../Aws3/Aws/Signature/SignatureProvider.php | 12 +- vendor/Aws3/Aws/Signature/SignatureTrait.php | 8 +- vendor/Aws3/Aws/Signature/SignatureV4.php | 160 +- .../Aws/StreamRequestPayloadMiddleware.php | 18 +- .../Aws3/Aws/Sts/Exception/StsException.php | 2 +- .../Sts/RegionalEndpoints/Configuration.php | 6 +- .../ConfigurationProvider.php | 36 +- .../Exception/ConfigurationException.php | 2 +- vendor/Aws3/Aws/Sts/StsClient.php | 8 +- vendor/Aws3/Aws/TraceMiddleware.php | 80 +- vendor/Aws3/Aws/Waiter.php | 32 +- vendor/Aws3/Aws/WrappedHttpHandler.php | 22 +- .../accessanalyzer/2019-11-01/api-2.json.php | 4 +- .../2019-11-01/paginators-1.json.php | 4 +- .../data/account/2021-02-01/api-2.json.php | 6 + .../account/2021-02-01/paginators-1.json.php | 6 + .../data/acm-pca/2017-08-22/api-2.json.php | 4 +- .../acm-pca/2017-08-22/paginators-1.json.php | 2 + .../acm-pca/2017-08-22/waiters-2.json.php | 2 + .../Aws/data/acm/2015-12-08/api-2.json.php | 4 +- .../data/acm/2015-12-08/paginators-1.json.php | 2 + .../Aws/data/acm/2015-12-08/smoke.json.php | 2 + .../data/acm/2015-12-08/waiters-2.json.php | 2 + .../2017-11-09/api-2.json.php | 4 +- .../2017-11-09/paginators-1.json.php | 2 + vendor/Aws3/Aws/data/aliases.json.php | 2 + .../Aws/data/amp/2020-08-01/api-2.json.php | 6 + .../data/amp/2020-08-01/paginators-1.json.php | 6 + .../data/amp/2020-08-01/waiters-2.json.php | 6 + .../data/amplify/2017-07-25/api-2.json.php | 4 +- .../amplify/2017-07-25/paginators-1.json.php | 2 + .../amplifybackend/2020-08-11/api-2.json.php | 4 +- .../2020-08-11/paginators-1.json.php | 2 + .../2021-08-11/api-2.json.php | 6 + .../2021-08-11/paginators-1.json.php | 6 + .../data/apigateway/2015-07-09/api-2.json.php | 4 +- .../2015-07-09/paginators-1.json.php | 4 +- .../data/apigateway/2015-07-09/smoke.json.php | 2 + .../2018-11-29/api-2.json.php | 2 + .../2018-11-29/paginators-1.json.php | 2 + .../apigatewayv2/2018-11-29/api-2.json.php | 4 +- .../2018-11-29/paginators-1.json.php | 2 + .../data/appconfig/2019-10-09/api-2.json.php | 4 +- .../2019-10-09/paginators-1.json.php | 2 + .../appconfigdata/2021-11-11/api-2.json.php | 6 + .../2021-11-11/paginators-1.json.php | 6 + .../data/appflow/2020-08-23/api-2.json.php | 4 +- .../appflow/2020-08-23/paginators-1.json.php | 4 +- .../appintegrations/2020-07-29/api-2.json.php | 4 +- .../2020-07-29/paginators-1.json.php | 2 + .../2016-02-06/api-2.json.php | 4 +- .../2016-02-06/paginators-1.json.php | 2 + .../2016-02-06/smoke.json.php | 2 + .../2018-11-25/api-2.json.php | 4 +- .../2018-11-25/paginators-1.json.php | 2 + .../2020-09-10/api-2.json.php | 6 + .../2020-09-10/paginators-1.json.php | 6 + .../data/appmesh/2018-10-01/api-2.json.php | 2 + .../appmesh/2018-10-01/paginators-1.json.php | 2 + .../data/appmesh/2019-01-25/api-2.json.php | 4 +- .../appmesh/2019-01-25/paginators-1.json.php | 2 + .../data/apprunner/2020-05-15/api-2.json.php | 6 + .../2020-05-15/paginators-1.json.php | 6 + .../data/appstream/2016-12-01/api-2.json.php | 4 +- .../2016-12-01/paginators-1.json.php | 2 + .../data/appstream/2016-12-01/smoke.json.php | 2 + .../appstream/2016-12-01/waiters-2.json.php | 2 + .../data/appsync/2017-07-25/api-2.json.php | 4 +- .../appsync/2017-07-25/paginators-1.json.php | 2 + .../Aws/data/athena/2017-05-18/api-2.json.php | 4 +- .../athena/2017-05-18/paginators-1.json.php | 4 +- .../Aws/data/athena/2017-05-18/smoke.json.php | 2 + .../auditmanager/2017-07-25/api-2.json.php | 4 +- .../2017-07-25/paginators-1.json.php | 4 +- .../2018-01-06/api-2.json.php | 2 + .../2018-01-06/paginators-1.json.php | 2 + .../autoscaling/2011-01-01/api-2.json.php | 4 +- .../2011-01-01/paginators-1.json.php | 2 + .../autoscaling/2011-01-01/smoke.json.php | 2 + .../autoscaling/2011-01-01/waiters-2.json.php | 2 + .../backup-gateway/2021-01-01/api-2.json.php | 6 + .../2021-01-01/paginators-1.json.php | 6 + .../Aws/data/backup/2018-11-15/api-2.json.php | 4 +- .../backup/2018-11-15/paginators-1.json.php | 4 +- .../Aws/data/batch/2016-08-10/api-2.json.php | 4 +- .../batch/2016-08-10/paginators-1.json.php | 4 +- .../Aws/data/batch/2016-08-10/smoke.json.php | 2 + .../2021-07-30/api-2.json.php | 6 + .../2021-07-30/paginators-1.json.php | 6 + .../2021-07-30/smoke.json.php | 6 + .../2021-07-30/waiters-2.json.php | 6 + .../Aws/data/braket/2019-09-01/api-2.json.php | 4 +- .../braket/2019-09-01/paginators-1.json.php | 4 +- .../data/budgets/2016-10-20/api-2.json.php | 4 +- .../budgets/2016-10-20/paginators-1.json.php | 4 +- .../Aws/data/ce/2017-10-25/api-2.json.php | 4 +- .../data/ce/2017-10-25/paginators-1.json.php | 2 + .../2021-04-20/api-2.json.php | 6 + .../2021-04-20/paginators-1.json.php | 6 + .../2021-07-15/api-2.json.php | 6 + .../2021-07-15/paginators-1.json.php | 6 + .../2021-07-15/api-2.json.php | 6 + .../2021-07-15/paginators-1.json.php | 6 + .../2021-05-15/api-2.json.php | 6 + .../2021-05-15/paginators-1.json.php | 6 + .../Aws/data/chime/2018-05-01/api-2.json.php | 4 +- .../chime/2018-05-01/paginators-1.json.php | 4 +- .../Aws/data/cloud9/2017-09-23/api-2.json.php | 4 +- .../cloud9/2017-09-23/paginators-1.json.php | 2 + .../cloudcontrol/2021-09-30/api-2.json.php | 6 + .../2021-09-30/paginators-1.json.php | 6 + .../2021-09-30/waiters-2.json.php | 6 + .../clouddirectory/2016-05-10/api-2.json.php | 2 + .../2016-05-10/paginators-1.json.php | 2 + .../clouddirectory/2017-01-11/api-2.json.php | 2 + .../2017-01-11/paginators-1.json.php | 2 + .../cloudformation/2010-05-15/api-2.json.php | 4 +- .../2010-05-15/paginators-1.json.php | 4 +- .../cloudformation/2010-05-15/smoke.json.php | 2 + .../2010-05-15/waiters-2.json.php | 2 + .../data/cloudfront/2015-07-27/api-2.json.php | 2 + .../2015-07-27/paginators-1.json.php | 2 + .../cloudfront/2015-07-27/waiters-2.json.php | 2 + .../data/cloudfront/2016-01-28/api-2.json.php | 2 + .../2016-01-28/paginators-1.json.php | 2 + .../cloudfront/2016-01-28/waiters-2.json.php | 2 + .../data/cloudfront/2016-08-01/api-2.json.php | 2 + .../2016-08-01/paginators-1.json.php | 2 + .../cloudfront/2016-08-01/waiters-2.json.php | 2 + .../data/cloudfront/2016-08-20/api-2.json.php | 2 + .../2016-08-20/paginators-1.json.php | 2 + .../cloudfront/2016-08-20/waiters-2.json.php | 2 + .../data/cloudfront/2016-09-07/api-2.json.php | 2 + .../2016-09-07/paginators-1.json.php | 2 + .../cloudfront/2016-09-07/waiters-1.json.php | 2 + .../cloudfront/2016-09-07/waiters-2.json.php | 2 + .../data/cloudfront/2016-09-29/api-2.json.php | 2 + .../2016-09-29/paginators-1.json.php | 2 + .../cloudfront/2016-09-29/waiters-1.json.php | 2 + .../cloudfront/2016-09-29/waiters-2.json.php | 2 + .../data/cloudfront/2016-11-25/api-2.json.php | 2 + .../2016-11-25/paginators-1.json.php | 2 + .../cloudfront/2016-11-25/waiters-1.json.php | 2 + .../cloudfront/2016-11-25/waiters-2.json.php | 2 + .../data/cloudfront/2017-03-25/api-2.json.php | 2 + .../2017-03-25/paginators-1.json.php | 2 + .../cloudfront/2017-03-25/waiters-1.json.php | 2 + .../cloudfront/2017-03-25/waiters-2.json.php | 2 + .../data/cloudfront/2017-10-30/api-2.json.php | 2 + .../2017-10-30/paginators-1.json.php | 2 + .../data/cloudfront/2017-10-30/smoke.json.php | 2 + .../cloudfront/2017-10-30/waiters-1.json.php | 2 + .../cloudfront/2017-10-30/waiters-2.json.php | 2 + .../data/cloudfront/2018-06-18/api-2.json.php | 2 + .../2018-06-18/paginators-1.json.php | 2 + .../data/cloudfront/2018-06-18/smoke.json.php | 2 + .../cloudfront/2018-06-18/waiters-1.json.php | 2 + .../cloudfront/2018-06-18/waiters-2.json.php | 2 + .../data/cloudfront/2018-11-05/api-2.json.php | 2 + .../2018-11-05/paginators-1.json.php | 2 + .../data/cloudfront/2018-11-05/smoke.json.php | 2 + .../cloudfront/2018-11-05/waiters-1.json.php | 2 + .../cloudfront/2018-11-05/waiters-2.json.php | 2 + .../data/cloudfront/2019-03-26/api-2.json.php | 2 + .../2019-03-26/paginators-1.json.php | 2 + .../data/cloudfront/2019-03-26/smoke.json.php | 2 + .../cloudfront/2019-03-26/waiters-1.json.php | 2 + .../cloudfront/2019-03-26/waiters-2.json.php | 2 + .../data/cloudfront/2020-05-31/api-2.json.php | 4 +- .../2020-05-31/paginators-1.json.php | 2 + .../data/cloudfront/2020-05-31/smoke.json.php | 2 + .../cloudfront/2020-05-31/waiters-1.json.php | 2 + .../cloudfront/2020-05-31/waiters-2.json.php | 2 + .../data/cloudhsm/2014-05-30/api-2.json.php | 4 +- .../cloudhsm/2014-05-30/paginators-1.json.php | 2 + .../data/cloudhsmv2/2017-04-28/api-2.json.php | 2 + .../2017-04-28/paginators-1.json.php | 2 + .../data/cloudhsmv2/2017-04-28/smoke.json.php | 2 + .../cloudsearch/2013-01-01/api-2.json.php | 4 +- .../2013-01-01/paginators-1.json.php | 2 + .../cloudsearch/2013-01-01/smoke.json.php | 2 + .../2013-01-01/api-2.json.php | 2 + .../data/cloudtrail/2013-11-01/api-2.json.php | 4 +- .../2013-11-01/paginators-1.json.php | 4 +- .../data/cloudtrail/2013-11-01/smoke.json.php | 2 + .../codeartifact/2018-09-22/api-2.json.php | 2 + .../2018-09-22/paginators-1.json.php | 2 + .../data/codebuild/2016-10-06/api-2.json.php | 4 +- .../2016-10-06/paginators-1.json.php | 2 + .../data/codebuild/2016-10-06/smoke.json.php | 2 + .../data/codecommit/2015-04-13/api-2.json.php | 2 + .../2015-04-13/paginators-1.json.php | 2 + .../data/codecommit/2015-04-13/smoke.json.php | 2 + .../data/codedeploy/2014-10-06/api-2.json.php | 4 +- .../2014-10-06/paginators-1.json.php | 2 + .../data/codedeploy/2014-10-06/smoke.json.php | 2 + .../codedeploy/2014-10-06/waiters-1.json.php | 2 + .../codedeploy/2014-10-06/waiters-2.json.php | 2 + .../2019-09-19/api-2.json.php | 4 +- .../2019-09-19/paginators-1.json.php | 2 + .../2019-09-19/waiters-2.json.php | 6 + .../2019-07-18/api-2.json.php | 4 +- .../2019-07-18/paginators-1.json.php | 2 + .../codepipeline/2015-07-09/api-2.json.php | 4 +- .../2015-07-09/paginators-1.json.php | 4 +- .../codepipeline/2015-07-09/smoke.json.php | 2 + .../2019-12-01/api-2.json.php | 4 +- .../2019-12-01/paginators-1.json.php | 2 + .../2019-10-15/api-2.json.php | 2 + .../2019-10-15/paginators-1.json.php | 2 + .../data/codestar/2017-04-19/api-2.json.php | 2 + .../codestar/2017-04-19/paginators-1.json.php | 2 + .../data/codestar/2017-04-19/smoke.json.php | 2 + .../2014-06-30/api-2.json.php | 4 +- .../2014-06-30/paginators-1.json.php | 2 + .../2014-06-30/smoke.json.php | 2 + .../cognito-idp/2016-04-18/api-2.json.php | 4 +- .../2016-04-18/paginators-1.json.php | 2 + .../cognito-idp/2016-04-18/smoke.json.php | 2 + .../cognito-sync/2014-06-30/api-2.json.php | 4 +- .../2014-06-30/paginators-1.json.php | 6 + .../cognito-sync/2014-06-30/smoke.json.php | 6 + .../data/comprehend/2017-11-27/api-2.json.php | 4 +- .../2017-11-27/paginators-1.json.php | 4 +- .../2018-10-30/api-2.json.php | 4 +- .../2018-10-30/paginators-1.json.php | 2 + .../2019-11-01/api-2.json.php | 4 +- .../2019-11-01/paginators-1.json.php | 2 + .../Aws/data/config/2014-11-12/api-2.json.php | 4 +- .../config/2014-11-12/paginators-1.json.php | 4 +- .../Aws/data/config/2014-11-12/smoke.json.php | 2 + .../2020-08-21/api-2.json.php | 2 + .../2020-08-21/paginators-1.json.php | 2 + .../data/connect/2017-08-08/api-2.json.php | 4 +- .../connect/2017-08-08/paginators-1.json.php | 4 +- .../2018-09-07/api-2.json.php | 4 +- .../2018-09-07/paginators-1.json.php | 2 + .../Aws/data/cur/2017-01-06/api-2.json.php | 4 +- .../data/cur/2017-01-06/paginators-1.json.php | 2 + .../Aws/data/cur/2017-01-06/smoke.json.php | 2 + .../2020-08-15/api-2.json.php | 4 +- .../2020-08-15/paginators-1.json.php | 2 + .../data/data.iot/2015-05-28/api-2.json.php | 4 +- .../data.iot/2015-05-28/paginators-1.json.php | 4 +- .../data/data.iot/2015-05-28/smoke.json.php | 4 +- .../data/databrew/2017-07-25/api-2.json.php | 4 +- .../databrew/2017-07-25/paginators-1.json.php | 4 +- .../dataexchange/2017-07-25/api-2.json.php | 4 +- .../2017-07-25/paginators-1.json.php | 4 +- .../datapipeline/2012-10-29/api-2.json.php | 4 +- .../2012-10-29/paginators-1.json.php | 4 +- .../data/datasync/2018-11-09/api-2.json.php | 4 +- .../datasync/2018-11-09/paginators-1.json.php | 2 + .../Aws/data/dax/2017-04-19/api-2.json.php | 4 +- .../data/dax/2017-04-19/paginators-1.json.php | 2 + .../data/detective/2018-10-26/api-2.json.php | 4 +- .../2018-10-26/paginators-1.json.php | 4 +- .../data/devicefarm/2015-06-23/api-2.json.php | 4 +- .../2015-06-23/paginators-1.json.php | 2 + .../data/devicefarm/2015-06-23/smoke.json.php | 2 + .../devops-guru/2020-12-01/api-2.json.php | 4 +- .../2020-12-01/paginators-1.json.php | 4 +- .../directconnect/2012-10-25/api-2.json.php | 4 +- .../2012-10-25/paginators-1.json.php | 2 + .../directconnect/2012-10-25/smoke.json.php | 2 + .../data/discovery/2015-11-01/api-2.json.php | 2 + .../2015-11-01/paginators-1.json.php | 2 + .../data/discovery/2015-11-01/smoke.json.php | 2 + .../Aws/data/dlm/2018-01-12/api-2.json.php | 4 +- .../data/dlm/2018-01-12/paginators-1.json.php | 2 + .../Aws/data/dms/2016-01-01/api-2.json.php | 4 +- .../data/dms/2016-01-01/paginators-1.json.php | 4 +- .../Aws/data/dms/2016-01-01/smoke.json.php | 2 + .../data/dms/2016-01-01/waiters-2.json.php | 4 +- .../Aws/data/docdb/2014-10-31/api-2.json.php | 4 +- .../docdb/2014-10-31/paginators-1.json.php | 4 +- .../Aws/data/docdb/2014-10-31/smoke.json.php | 2 + .../data/docdb/2014-10-31/waiters-2.json.php | 2 + .../Aws/data/drs/2020-02-26/api-2.json.php | 6 + .../data/drs/2020-02-26/paginators-1.json.php | 6 + .../Aws/data/ds/2015-04-16/api-2.json.php | 4 +- .../data/ds/2015-04-16/paginators-1.json.php | 2 + .../Aws/data/ds/2015-04-16/smoke.json.php | 2 + .../data/dynamodb/2011-12-05/api-2.json.php | 2 + .../dynamodb/2011-12-05/paginators-1.json.php | 2 + .../data/dynamodb/2011-12-05/smoke.json.php | 2 + .../dynamodb/2011-12-05/waiters-1.json.php | 2 + .../dynamodb/2011-12-05/waiters-2.json.php | 2 + .../data/dynamodb/2012-08-10/api-2.json.php | 4 +- .../dynamodb/2012-08-10/paginators-1.json.php | 2 + .../data/dynamodb/2012-08-10/smoke.json.php | 2 + .../dynamodb/2012-08-10/waiters-1.json.php | 2 + .../dynamodb/2012-08-10/waiters-2.json.php | 2 + .../Aws/data/ebs/2019-11-02/api-2.json.php | 4 +- .../data/ebs/2019-11-02/paginators-1.json.php | 2 + .../2018-04-02/api-2.json.php | 4 +- .../2018-04-02/paginators-1.json.php | 2 + .../Aws/data/ec2/2015-10-01/api-2.json.php | 2 + .../data/ec2/2015-10-01/paginators-1.json.php | 2 + .../data/ec2/2015-10-01/waiters-1.json.php | 2 + .../data/ec2/2015-10-01/waiters-2.json.php | 2 + .../Aws/data/ec2/2016-04-01/api-2.json.php | 2 + .../data/ec2/2016-04-01/paginators-1.json.php | 2 + .../data/ec2/2016-04-01/waiters-2.json.php | 2 + .../Aws/data/ec2/2016-09-15/api-2.json.php | 2 + .../data/ec2/2016-09-15/paginators-1.json.php | 2 + .../data/ec2/2016-09-15/waiters-1.json.php | 2 + .../data/ec2/2016-09-15/waiters-2.json.php | 2 + .../Aws/data/ec2/2016-11-15/api-2.json.php | 4 +- .../data/ec2/2016-11-15/paginators-1.json.php | 4 +- .../Aws/data/ec2/2016-11-15/smoke.json.php | 2 + .../data/ec2/2016-11-15/waiters-1.json.php | 2 + .../data/ec2/2016-11-15/waiters-2.json.php | 4 +- .../data/ecr-public/2020-10-30/api-2.json.php | 4 +- .../2020-10-30/paginators-1.json.php | 2 + .../Aws/data/ecr/2015-09-21/api-2.json.php | 4 +- .../data/ecr/2015-09-21/paginators-1.json.php | 4 +- .../Aws/data/ecr/2015-09-21/smoke.json.php | 2 + .../data/ecr/2015-09-21/waiters-2.json.php | 2 + .../Aws/data/ecs/2014-11-13/api-2.json.php | 4 +- .../data/ecs/2014-11-13/paginators-1.json.php | 2 + .../Aws/data/ecs/2014-11-13/smoke.json.php | 2 + .../data/ecs/2014-11-13/waiters-2.json.php | 2 + .../Aws/data/eks/2017-11-01/api-2.json.php | 4 +- .../data/eks/2017-11-01/paginators-1.json.php | 4 +- .../data/eks/2017-11-01/waiters-2.json.php | 4 +- .../2017-07-25/api-2.json.php | 2 + .../2017-07-25/paginators-1.json.php | 2 + .../elasticache/2015-02-02/api-2.json.php | 4 +- .../2015-02-02/paginators-1.json.php | 2 + .../elasticache/2015-02-02/smoke.json.php | 2 + .../elasticache/2015-02-02/waiters-2.json.php | 2 + .../2010-12-01/api-2.json.php | 2 + .../2010-12-01/paginators-1.json.php | 2 + .../2010-12-01/smoke.json.php | 2 + .../2010-12-01/waiters-2.json.php | 2 + .../2015-02-01/api-2.json.php | 4 +- .../2015-02-01/paginators-1.json.php | 2 + .../2015-02-01/smoke.json.php | 2 + .../2012-06-01/api-2.json.php | 2 + .../2012-06-01/paginators-1.json.php | 2 + .../2012-06-01/smoke.json.php | 2 + .../2012-06-01/waiters-2.json.php | 2 + .../2015-12-01/api-2.json.php | 4 +- .../2015-12-01/paginators-1.json.php | 2 + .../2015-12-01/smoke.json.php | 2 + .../2015-12-01/waiters-2.json.php | 2 + .../2009-03-31/api-2.json.php | 4 +- .../2009-03-31/paginators-1.json.php | 4 +- .../2009-03-31/smoke.json.php | 2 + .../2009-03-31/waiters-2.json.php | 2 + .../2012-09-25/api-2.json.php | 2 + .../2012-09-25/paginators-1.json.php | 2 + .../2012-09-25/smoke.json.php | 2 + .../2012-09-25/waiters-1.json.php | 2 + .../2012-09-25/waiters-2.json.php | 2 + .../Aws/data/email/2010-12-01/api-2.json.php | 2 + .../email/2010-12-01/paginators-1.json.php | 2 + .../Aws/data/email/2010-12-01/smoke.json.php | 2 + .../data/email/2010-12-01/waiters-1.json.php | 2 + .../data/email/2010-12-01/waiters-2.json.php | 2 + .../emr-containers/2020-10-01/api-2.json.php | 4 +- .../2020-10-01/paginators-1.json.php | 2 + vendor/Aws3/Aws/data/endpoints.json.php | 4 +- .../data/endpoints_prefix_history.json.php | 2 + .../2017-01-11/api-2.json.php | 2 + .../2017-01-11/paginators-1.json.php | 2 + .../Aws/data/es/2015-01-01/api-2.json.php | 4 +- .../data/es/2015-01-01/paginators-1.json.php | 4 +- .../Aws/data/es/2015-01-01/smoke.json.php | 2 + .../eventbridge/2015-10-07/api-2.json.php | 4 +- .../2015-10-07/paginators-1.json.php | 2 + .../eventbridge/2015-10-07/smoke.json.php | 2 + .../Aws/data/events/2015-10-07/api-2.json.php | 4 +- .../events/2015-10-07/paginators-1.json.php | 2 + .../Aws/data/events/2015-10-07/smoke.json.php | 2 + .../data/evidently/2021-02-01/api-2.json.php | 6 + .../2021-02-01/paginators-1.json.php | 6 + .../finspace-data/2020-07-13/api-2.json.php | 6 + .../2020-07-13/paginators-1.json.php | 6 + .../data/finspace/2021-03-12/api-2.json.php | 6 + .../finspace/2021-03-12/paginators-1.json.php | 6 + .../data/firehose/2015-08-04/api-2.json.php | 4 +- .../firehose/2015-08-04/paginators-1.json.php | 2 + .../data/firehose/2015-08-04/smoke.json.php | 2 + .../Aws/data/fis/2020-12-01/api-2.json.php | 6 + .../data/fis/2020-12-01/paginators-1.json.php | 6 + .../Aws/data/fms/2018-01-01/api-2.json.php | 4 +- .../data/fms/2018-01-01/paginators-1.json.php | 4 +- .../data/forecast/2018-06-26/api-2.json.php | 4 +- .../forecast/2018-06-26/paginators-1.json.php | 2 + .../forecastquery/2018-06-26/api-2.json.php | 2 + .../2018-06-26/paginators-1.json.php | 2 + .../frauddetector/2019-11-15/api-2.json.php | 4 +- .../2019-11-15/paginators-1.json.php | 4 +- .../Aws/data/fsx/2018-03-01/api-2.json.php | 4 +- .../data/fsx/2018-03-01/paginators-1.json.php | 4 +- .../data/gamelift/2015-10-01/api-2.json.php | 4 +- .../gamelift/2015-10-01/paginators-1.json.php | 4 +- .../data/gamelift/2015-10-01/smoke.json.php | 2 + .../data/gamesparks/2021-08-17/api-2.json.php | 6 + .../2021-08-17/paginators-1.json.php | 6 + .../data/glacier/2012-06-01/api-2.json.php | 2 + .../glacier/2012-06-01/paginators-1.json.php | 2 + .../data/glacier/2012-06-01/smoke.json.php | 2 + .../glacier/2012-06-01/waiters-1.json.php | 2 + .../glacier/2012-06-01/waiters-2.json.php | 2 + .../2018-08-08/api-2.json.php | 4 +- .../2018-08-08/paginators-1.json.php | 4 +- .../Aws/data/glue/2017-03-31/api-2.json.php | 4 +- .../glue/2017-03-31/paginators-1.json.php | 4 +- .../Aws/data/glue/2017-03-31/smoke.json.php | 2 + .../data/grafana/2020-08-18/api-2.json.php | 6 + .../grafana/2020-08-18/paginators-1.json.php | 6 + .../data/greengrass/2017-06-07/api-2.json.php | 4 +- .../greengrassv2/2020-11-30/api-2.json.php | 6 + .../2020-11-30/paginators-1.json.php | 6 + .../groundstation/2019-05-23/api-2.json.php | 4 +- .../2019-05-23/paginators-1.json.php | 2 + .../data/guardduty/2017-11-28/api-2.json.php | 4 +- .../2017-11-28/paginators-1.json.php | 2 + .../Aws/data/health/2016-08-04/api-2.json.php | 4 +- .../health/2016-08-04/paginators-1.json.php | 2 + .../data/healthlake/2017-07-01/api-2.json.php | 4 +- .../2017-07-01/paginators-1.json.php | 4 +- .../data/honeycode/2020-03-01/api-2.json.php | 4 +- .../2020-03-01/paginators-1.json.php | 2 + .../Aws/data/iam/2010-05-08/api-2.json.php | 4 +- .../data/iam/2010-05-08/paginators-1.json.php | 4 +- .../Aws/data/iam/2010-05-08/smoke.json.php | 2 + .../data/iam/2010-05-08/waiters-2.json.php | 2 + .../identitystore/2020-06-15/api-2.json.php | 2 + .../2020-06-15/paginators-1.json.php | 2 + .../imagebuilder/2019-12-02/api-2.json.php | 4 +- .../2019-12-02/paginators-1.json.php | 4 +- .../importexport/2010-06-01/api-2.json.php | 2 + .../2010-06-01/paginators-1.json.php | 2 + .../data/inspector/2016-02-16/api-2.json.php | 2 + .../2016-02-16/paginators-1.json.php | 2 + .../data/inspector/2016-02-16/smoke.json.php | 2 + .../data/inspector2/2020-06-08/api-2.json.php | 6 + .../2020-06-08/paginators-1.json.php | 6 + .../iot-jobs-data/2017-09-29/api-2.json.php | 2 + .../2017-09-29/paginators-1.json.php | 2 + .../Aws/data/iot/2015-05-28/api-2.json.php | 4 +- .../data/iot/2015-05-28/paginators-1.json.php | 4 +- .../Aws/data/iot/2015-05-28/smoke.json.php | 2 + .../2018-05-14/api-2.json.php | 2 + .../2018-05-14/api-2.json.php | 2 + .../2018-05-14/paginators-1.json.php | 2 + .../iotanalytics/2017-11-27/api-2.json.php | 4 +- .../2017-11-27/paginators-1.json.php | 2 + .../2020-09-18/api-2.json.php | 6 + .../2020-09-18/paginators-1.json.php | 6 + .../iotevents-data/2018-10-23/api-2.json.php | 4 +- .../2018-10-23/paginators-1.json.php | 2 + .../data/iotevents/2018-07-27/api-2.json.php | 4 +- .../2018-07-27/paginators-1.json.php | 2 + .../iotfleethub/2020-11-03/api-2.json.php | 6 + .../2020-11-03/paginators-1.json.php | 6 + .../2018-10-05/api-2.json.php | 2 + .../2018-10-05/paginators-1.json.php | 2 + .../iotsitewise/2019-12-02/api-2.json.php | 4 +- .../2019-12-02/paginators-1.json.php | 4 +- .../iotsitewise/2019-12-02/waiters-2.json.php | 2 + .../iotthingsgraph/2018-09-06/api-2.json.php | 2 + .../2018-09-06/paginators-1.json.php | 2 + .../iottwinmaker/2021-11-29/api-2.json.php | 6 + .../2021-11-29/paginators-1.json.php | 6 + .../iottwinmaker/2021-11-29/smoke.json.php | 6 + .../2021-11-29/waiters-2.json.php | 6 + .../iotwireless/2020-11-22/api-2.json.php | 6 + .../2020-11-22/paginators-1.json.php | 6 + .../Aws/data/ivs/2020-07-14/api-2.json.php | 4 +- .../data/ivs/2020-07-14/paginators-1.json.php | 4 +- .../data/ivschat/2020-07-14/api-2.json.php | 6 + .../ivschat/2020-07-14/paginators-1.json.php | 6 + .../Aws/data/kafka/2018-11-14/api-2.json.php | 4 +- .../kafka/2018-11-14/paginators-1.json.php | 4 +- .../kafkaconnect/2021-09-14/api-2.json.php | 6 + .../2021-09-14/paginators-1.json.php | 6 + .../Aws/data/kendra/2019-02-03/api-2.json.php | 4 +- .../kendra/2019-02-03/paginators-1.json.php | 4 +- .../data/keyspaces/2022-02-10/api-2.json.php | 6 + .../2022-02-10/paginators-1.json.php | 6 + .../data/keyspaces/2022-02-10/smoke.json.php | 6 + .../keyspaces/2022-02-10/waiters-2.json.php | 6 + .../2017-09-30/api-2.json.php | 4 +- .../2017-09-30/paginators-1.json.php | 2 + .../2017-09-30/api-2.json.php | 2 + .../2017-09-30/paginators-1.json.php | 2 + .../2019-12-04/api-2.json.php | 2 + .../2019-12-04/paginators-1.json.php | 2 + .../data/kinesis/2013-12-02/api-2.json.php | 4 +- .../kinesis/2013-12-02/paginators-1.json.php | 2 + .../data/kinesis/2013-12-02/smoke.json.php | 2 + .../kinesis/2013-12-02/waiters-2.json.php | 2 + .../2015-08-14/api-2.json.php | 2 + .../2015-08-14/paginators-1.json.php | 2 + .../2018-05-23/api-2.json.php | 4 +- .../2018-05-23/paginators-1.json.php | 2 + .../kinesisvideo/2017-09-30/api-2.json.php | 2 + .../2017-09-30/paginators-1.json.php | 2 + .../Aws/data/kms/2014-11-01/api-2.json.php | 4 +- .../data/kms/2014-11-01/paginators-1.json.php | 2 + .../Aws/data/kms/2014-11-01/smoke.json.php | 2 + .../lakeformation/2017-03-31/api-2.json.php | 4 +- .../2017-03-31/paginators-1.json.php | 4 +- .../Aws/data/lambda/2015-03-31/api-2.json.php | 4 +- .../lambda/2015-03-31/paginators-1.json.php | 4 +- .../Aws/data/lambda/2015-03-31/smoke.json.php | 2 + .../data/lambda/2015-03-31/waiters-2.json.php | 4 +- .../data/lex-models/2017-04-19/api-2.json.php | 4 +- .../2017-04-19/paginators-1.json.php | 4 +- .../license-manager/2018-08-01/api-2.json.php | 4 +- .../2018-08-01/paginators-1.json.php | 2 + .../data/lightsail/2016-11-28/api-2.json.php | 4 +- .../2016-11-28/paginators-1.json.php | 2 + .../data/lightsail/2016-11-28/smoke.json.php | 2 + .../data/location/2020-11-19/api-2.json.php | 6 + .../location/2020-11-19/paginators-1.json.php | 6 + .../Aws/data/logs/2014-03-28/api-2.json.php | 4 +- .../logs/2014-03-28/paginators-1.json.php | 2 + .../Aws/data/logs/2014-03-28/smoke.json.php | 2 + .../2020-12-15/api-2.json.php | 6 + .../2020-12-15/paginators-1.json.php | 6 + .../lookoutmetrics/2017-07-25/api-2.json.php | 6 + .../2017-07-25/paginators-1.json.php | 6 + .../lookoutvision/2020-11-20/api-2.json.php | 4 +- .../2020-11-20/paginators-1.json.php | 4 +- .../machinelearning/2014-12-12/api-2.json.php | 4 +- .../2014-12-12/paginators-1.json.php | 4 +- .../2014-12-12/waiters-2.json.php | 2 + .../Aws/data/macie/2017-12-19/api-2.json.php | 2 + .../macie/2017-12-19/paginators-1.json.php | 2 + .../Aws/data/macie2/2020-01-01/api-2.json.php | 4 +- .../macie2/2020-01-01/paginators-1.json.php | 4 +- .../2018-09-24/api-2.json.php | 4 +- .../2018-09-24/paginators-1.json.php | 2 + vendor/Aws3/Aws/data/manifest.json.php | 4 +- .../2018-09-17/api-2.json.php | 4 +- .../2018-09-17/paginators-1.json.php | 2 + .../2015-07-01/api-2.json.php | 2 + .../2015-07-01/paginators-1.json.php | 2 + .../2015-07-01/smoke.json.php | 2 + .../mediaconnect/2018-11-14/api-2.json.php | 4 +- .../2018-11-14/paginators-1.json.php | 2 + .../2018-11-14/waiters-2.json.php | 6 + .../mediaconvert/2017-08-29/api-2.json.php | 4 +- .../2017-08-29/paginators-1.json.php | 2 + .../data/medialive/2017-10-14/api-2.json.php | 4 +- .../2017-10-14/paginators-1.json.php | 2 + .../medialive/2017-10-14/waiters-2.json.php | 2 + .../2018-11-07/api-2.json.php | 4 +- .../2018-11-07/paginators-1.json.php | 2 + .../mediapackage/2017-10-12/api-2.json.php | 4 +- .../2017-10-12/paginators-1.json.php | 2 + .../mediastore-data/2017-09-01/api-2.json.php | 2 + .../2017-09-01/paginators-1.json.php | 2 + .../data/mediastore/2017-09-01/api-2.json.php | 2 + .../2017-09-01/paginators-1.json.php | 2 + .../mediatailor/2018-04-23/api-2.json.php | 4 +- .../2018-04-23/paginators-1.json.php | 4 +- .../data/memorydb/2021-01-01/api-2.json.php | 6 + .../memorydb/2021-01-01/paginators-1.json.php | 6 + .../2016-01-14/api-2.json.php | 4 +- .../2016-01-14/paginators-1.json.php | 2 + .../Aws/data/mgh/2017-05-31/api-2.json.php | 2 + .../data/mgh/2017-05-31/paginators-1.json.php | 2 + .../Aws/data/mgn/2020-02-26/api-2.json.php | 6 + .../data/mgn/2020-02-26/paginators-1.json.php | 6 + .../2021-10-26/api-2.json.php | 6 + .../2021-10-26/paginators-1.json.php | 6 + .../2019-06-30/api-2.json.php | 2 + .../2019-06-30/paginators-1.json.php | 2 + .../2020-02-19/api-2.json.php | 6 + .../2020-02-19/paginators-1.json.php | 6 + .../Aws/data/mobile/2017-07-01/api-2.json.php | 2 + .../mobile/2017-07-01/paginators-1.json.php | 2 + .../models.lex.v2/2020-08-07/api-2.json.php | 6 + .../2020-08-07/paginators-1.json.php | 6 + .../2020-08-07/waiters-2.json.php | 6 + .../data/monitoring/2010-08-01/api-2.json.php | 4 +- .../2010-08-01/paginators-1.json.php | 4 +- .../data/monitoring/2010-08-01/smoke.json.php | 2 + .../monitoring/2010-08-01/waiters-2.json.php | 2 + .../Aws/data/mq/2017-11-27/api-2.json.php | 4 +- .../data/mq/2017-11-27/paginators-1.json.php | 2 + .../mturk-requester/2017-01-17/api-2.json.php | 2 + .../2017-01-17/paginators-1.json.php | 2 + .../mturk-requester/2017-01-17/smoke.json.php | 2 + .../Aws/data/mwaa/2020-07-01/api-2.json.php | 4 +- .../mwaa/2020-07-01/paginators-1.json.php | 2 + .../data/neptune/2014-10-31/api-2.json.php | 4 +- .../neptune/2014-10-31/paginators-1.json.php | 4 +- .../data/neptune/2014-10-31/smoke.json.php | 2 + .../neptune/2014-10-31/waiters-2.json.php | 2 + .../2020-11-12/api-2.json.php | 4 +- .../2020-11-12/paginators-1.json.php | 2 + .../networkmanager/2019-07-05/api-2.json.php | 4 +- .../2019-07-05/paginators-1.json.php | 4 +- .../Aws/data/nimble/2020-08-01/api-2.json.php | 6 + .../nimble/2020-08-01/paginators-1.json.php | 6 + .../data/nimble/2020-08-01/waiters-2.json.php | 6 + .../data/opensearch/2021-01-01/api-2.json.php | 6 + .../2021-01-01/paginators-1.json.php | 6 + .../data/opensearch/2021-01-01/smoke.json.php | 6 + .../data/opsworks/2013-02-18/api-2.json.php | 2 + .../opsworks/2013-02-18/paginators-1.json.php | 2 + .../data/opsworks/2013-02-18/smoke.json.php | 2 + .../opsworks/2013-02-18/waiters-2.json.php | 2 + .../data/opsworkscm/2016-11-01/api-2.json.php | 4 +- .../2016-11-01/paginators-1.json.php | 2 + .../opsworkscm/2016-11-01/waiters-2.json.php | 2 + .../organizations/2016-11-28/api-2.json.php | 4 +- .../2016-11-28/paginators-1.json.php | 2 + .../data/outposts/2019-12-03/api-2.json.php | 4 +- .../outposts/2019-12-03/paginators-1.json.php | 4 +- .../data/panorama/2019-07-24/api-2.json.php | 6 + .../panorama/2019-07-24/paginators-1.json.php | 6 + .../2018-03-22/api-2.json.php | 4 +- .../2018-03-22/paginators-1.json.php | 2 + .../2018-05-22/api-2.json.php | 4 +- .../2018-05-22/paginators-1.json.php | 2 + .../personalize/2018-05-22/api-2.json.php | 4 +- .../2018-05-22/paginators-1.json.php | 4 +- .../Aws/data/pi/2018-02-27/api-2.json.php | 4 +- .../data/pi/2018-02-27/paginators-1.json.php | 4 +- .../pinpoint-email/2018-07-26/api-2.json.php | 2 + .../2018-07-26/paginators-1.json.php | 2 + .../2022-03-31/api-2.json.php | 6 + .../2022-03-31/paginators-1.json.php | 6 + .../2022-03-31/smoke.json.php | 6 + .../2022-03-31/waiters-2.json.php | 6 + .../data/pinpoint/2016-12-01/api-2.json.php | 4 +- .../Aws/data/polly/2016-06-10/api-2.json.php | 4 +- .../polly/2016-06-10/paginators-1.json.php | 2 + .../Aws/data/polly/2016-06-10/smoke.json.php | 2 + .../data/pricing/2017-10-15/api-2.json.php | 4 +- .../pricing/2017-10-15/paginators-1.json.php | 2 + .../Aws/data/proton/2020-07-20/api-2.json.php | 6 + .../proton/2020-07-20/paginators-1.json.php | 6 + .../data/proton/2020-07-20/waiters-2.json.php | 6 + .../qldb-session/2019-07-11/api-2.json.php | 4 +- .../2019-07-11/paginators-1.json.php | 2 + .../Aws/data/qldb/2019-01-02/api-2.json.php | 4 +- .../qldb/2019-01-02/paginators-1.json.php | 2 + .../data/quicksight/2018-04-01/api-2.json.php | 4 +- .../2018-04-01/paginators-1.json.php | 4 +- .../Aws/data/ram/2018-01-04/api-2.json.php | 4 +- .../data/ram/2018-01-04/paginators-1.json.php | 4 +- .../Aws/data/rbin/2021-06-15/api-2.json.php | 6 + .../rbin/2021-06-15/paginators-1.json.php | 6 + .../data/rds-data/2018-08-01/api-2.json.php | 4 +- .../rds-data/2018-08-01/paginators-1.json.php | 2 + .../Aws/data/rds/2014-09-01/api-2.json.php | 2 + .../data/rds/2014-09-01/paginators-1.json.php | 2 + .../Aws/data/rds/2014-09-01/smoke.json.php | 2 + .../Aws/data/rds/2014-10-31/api-2.json.php | 4 +- .../data/rds/2014-10-31/paginators-1.json.php | 4 +- .../Aws/data/rds/2014-10-31/smoke.json.php | 2 + .../data/rds/2014-10-31/waiters-1.json.php | 2 + .../data/rds/2014-10-31/waiters-2.json.php | 2 + .../redshift-data/2019-12-20/api-2.json.php | 4 +- .../2019-12-20/paginators-1.json.php | 2 + .../data/redshift/2012-12-01/api-2.json.php | 4 +- .../redshift/2012-12-01/paginators-1.json.php | 4 +- .../data/redshift/2012-12-01/smoke.json.php | 2 + .../redshift/2012-12-01/waiters-1.json.php | 2 + .../redshift/2012-12-01/waiters-2.json.php | 2 + .../rekognition/2016-06-27/api-2.json.php | 4 +- .../2016-06-27/paginators-1.json.php | 4 +- .../rekognition/2016-06-27/smoke.json.php | 2 + .../rekognition/2016-06-27/waiters-2.json.php | 2 + .../resiliencehub/2020-04-30/api-2.json.php | 6 + .../2020-04-30/paginators-1.json.php | 6 + .../resource-groups/2017-11-27/api-2.json.php | 4 +- .../2017-11-27/paginators-1.json.php | 4 +- .../2017-01-26/api-2.json.php | 4 +- .../2017-01-26/paginators-1.json.php | 2 + .../data/robomaker/2018-06-29/api-2.json.php | 4 +- .../2018-06-29/paginators-1.json.php | 2 + .../2019-12-02/api-2.json.php | 6 + .../2019-12-02/paginators-1.json.php | 6 + .../2020-11-02/api-2.json.php | 6 + .../2020-11-02/paginators-1.json.php | 6 + .../2020-11-02/waiters-2.json.php | 6 + .../2019-12-02/api-2.json.php | 6 + .../2019-12-02/paginators-1.json.php | 6 + .../data/route53/2013-04-01/api-2.json.php | 4 +- .../route53/2013-04-01/paginators-1.json.php | 2 + .../data/route53/2013-04-01/smoke.json.php | 2 + .../route53/2013-04-01/waiters-2.json.php | 2 + .../route53domains/2014-05-15/api-2.json.php | 4 +- .../2014-05-15/paginators-1.json.php | 4 +- .../route53domains/2014-05-15/smoke.json.php | 2 + .../route53resolver/2018-04-01/api-2.json.php | 4 +- .../2018-04-01/paginators-1.json.php | 4 +- .../route53resolver/2018-04-01/smoke.json.php | 2 + .../Aws/data/rum/2018-05-10/api-2.json.php | 6 + .../data/rum/2018-05-10/paginators-1.json.php | 6 + .../runtime.lex.v2/2020-08-07/api-2.json.php | 6 + .../2020-08-07/paginators-1.json.php | 6 + .../runtime.lex/2016-11-28/api-2.json.php | 4 +- .../2016-11-28/paginators-1.json.php | 2 + .../2017-05-13/api-2.json.php | 4 +- .../2017-05-13/paginators-1.json.php | 2 + .../Aws/data/s3/2006-03-01/api-2.json.php | 4 +- .../data/s3/2006-03-01/paginators-1.json.php | 2 + .../Aws/data/s3/2006-03-01/smoke.json.php | 2 + .../Aws/data/s3/2006-03-01/waiters-1.json.php | 2 + .../Aws/data/s3/2006-03-01/waiters-2.json.php | 2 + .../data/s3control/2018-08-20/api-2.json.php | 4 +- .../2018-08-20/paginators-1.json.php | 4 +- .../data/s3outposts/2017-07-25/api-2.json.php | 4 +- .../2017-07-25/paginators-1.json.php | 4 +- .../2019-11-07/api-2.json.php | 2 + .../2019-11-07/paginators-1.json.php | 2 + .../sagemaker-edge/2020-09-23/api-2.json.php | 2 + .../2020-09-23/paginators-1.json.php | 2 + .../2020-07-01/api-2.json.php | 4 +- .../2020-07-01/paginators-1.json.php | 2 + .../data/sagemaker/2017-07-24/api-2.json.php | 4 +- .../2017-07-24/paginators-1.json.php | 4 +- .../sagemaker/2017-07-24/waiters-2.json.php | 4 +- .../savingsplans/2019-06-28/api-2.json.php | 4 +- .../2019-06-28/paginators-1.json.php | 2 + .../data/schemas/2019-12-02/api-2.json.php | 4 +- .../schemas/2019-12-02/paginators-1.json.php | 2 + .../schemas/2019-12-02/waiters-2.json.php | 2 + .../data/sdk-default-configuration.json.php | 6 + .../secretsmanager/2017-10-17/api-2.json.php | 4 +- .../2017-10-17/paginators-1.json.php | 2 + .../secretsmanager/2017-10-17/smoke.json.php | 2 + .../securityhub/2018-10-26/api-2.json.php | 4 +- .../2018-10-26/paginators-1.json.php | 4 +- .../serverlessrepo/2017-09-08/api-2.json.php | 2 + .../2017-09-08/paginators-1.json.php | 2 + .../service-quotas/2019-06-24/api-2.json.php | 4 +- .../2019-06-24/paginators-1.json.php | 2 + .../2020-06-24/api-2.json.php | 4 +- .../2020-06-24/paginators-1.json.php | 2 + .../servicecatalog/2015-12-10/api-2.json.php | 4 +- .../2015-12-10/paginators-1.json.php | 4 +- .../servicecatalog/2015-12-10/smoke.json.php | 2 + .../2017-03-14/api-2.json.php | 4 +- .../2017-03-14/paginators-1.json.php | 2 + .../Aws/data/sesv2/2019-09-27/api-2.json.php | 4 +- .../sesv2/2019-09-27/paginators-1.json.php | 2 + .../Aws/data/shield/2016-06-02/api-2.json.php | 4 +- .../shield/2016-06-02/paginators-1.json.php | 2 + .../Aws/data/shield/2016-06-02/smoke.json.php | 2 + .../Aws/data/signer/2017-08-25/api-2.json.php | 2 + .../signer/2017-08-25/paginators-1.json.php | 2 + .../data/signer/2017-08-25/waiters-2.json.php | 2 + .../data/sms-voice/2018-09-05/api-2.json.php | 2 + .../Aws/data/sms/2016-10-24/api-2.json.php | 2 + .../data/sms/2016-10-24/paginators-1.json.php | 2 + .../Aws/data/sms/2016-10-24/smoke.json.php | 2 + .../2021-08-04/api-2.json.php | 6 + .../2021-08-04/paginators-1.json.php | 6 + .../data/snowball/2016-06-30/api-2.json.php | 4 +- .../snowball/2016-06-30/paginators-1.json.php | 2 + .../data/snowball/2016-06-30/smoke.json.php | 2 + .../Aws/data/sns/2010-03-31/api-2.json.php | 4 +- .../data/sns/2010-03-31/paginators-1.json.php | 4 +- .../Aws/data/sns/2010-03-31/smoke.json.php | 2 + .../Aws/data/sqs/2012-11-05/api-2.json.php | 4 +- .../data/sqs/2012-11-05/paginators-1.json.php | 2 + .../Aws/data/sqs/2012-11-05/smoke.json.php | 2 + .../data/sqs/2012-11-05/waiters-2.json.php | 2 + .../ssm-contacts/2021-05-03/api-2.json.php | 6 + .../2021-05-03/paginators-1.json.php | 6 + .../ssm-incidents/2018-05-10/api-2.json.php | 6 + .../2018-05-10/paginators-1.json.php | 6 + .../2018-05-10/waiters-2.json.php | 6 + .../Aws/data/ssm/2014-11-06/api-2.json.php | 4 +- .../data/ssm/2014-11-06/paginators-1.json.php | 4 +- .../Aws/data/ssm/2014-11-06/smoke.json.php | 2 + .../data/ssm/2014-11-06/waiters-2.json.php | 4 +- .../data/sso-admin/2020-07-20/api-2.json.php | 4 +- .../2020-07-20/paginators-1.json.php | 2 + .../data/sso-oidc/2019-06-10/api-2.json.php | 2 + .../sso-oidc/2019-06-10/paginators-1.json.php | 2 + .../Aws/data/sso/2019-06-10/api-2.json.php | 2 + .../data/sso/2019-06-10/paginators-1.json.php | 2 + .../Aws/data/states/2016-11-23/api-2.json.php | 2 + .../states/2016-11-23/paginators-1.json.php | 2 + .../Aws/data/states/2016-11-23/smoke.json.php | 2 + .../storagegateway/2013-06-30/api-2.json.php | 4 +- .../2013-06-30/paginators-1.json.php | 4 +- .../2012-08-10/api-2.json.php | 2 + .../2012-08-10/paginators-1.json.php | 2 + .../Aws/data/sts/2011-06-15/api-2.json.php | 4 +- .../data/sts/2011-06-15/paginators-1.json.php | 2 + .../Aws/data/sts/2011-06-15/smoke.json.php | 2 + .../data/support/2013-04-15/api-2.json.php | 2 + .../support/2013-04-15/paginators-1.json.php | 2 + .../data/support/2013-04-15/smoke.json.php | 2 + .../Aws/data/swf/2012-01-25/api-2.json.php | 2 + .../data/swf/2012-01-25/paginators-1.json.php | 2 + .../data/synthetics/2017-10-11/api-2.json.php | 4 +- .../2017-10-11/paginators-1.json.php | 2 + .../data/textract/2018-06-27/api-2.json.php | 4 +- .../textract/2018-06-27/paginators-1.json.php | 2 + .../2018-11-01/api-2.json.php | 4 +- .../2018-11-01/paginators-1.json.php | 4 +- .../2018-11-01/api-2.json.php | 4 +- .../2018-11-01/paginators-1.json.php | 2 + .../data/transcribe/2017-10-26/api-2.json.php | 4 +- .../2017-10-26/paginators-1.json.php | 4 +- .../data/transfer/2018-11-05/api-2.json.php | 4 +- .../transfer/2018-11-05/paginators-1.json.php | 4 +- .../transfer/2018-11-05/waiters-2.json.php | 6 + .../data/translate/2017-07-01/api-2.json.php | 4 +- .../2017-07-01/paginators-1.json.php | 2 + .../data/voice-id/2021-09-27/api-2.json.php | 6 + .../voice-id/2021-09-27/paginators-1.json.php | 6 + .../waf-regional/2016-11-28/api-2.json.php | 2 + .../2016-11-28/paginators-1.json.php | 2 + .../waf-regional/2016-11-28/smoke.json.php | 2 + .../Aws/data/waf/2015-08-24/api-2.json.php | 2 + .../data/waf/2015-08-24/paginators-1.json.php | 2 + .../Aws/data/waf/2015-08-24/smoke.json.php | 2 + .../Aws/data/wafv2/2019-07-29/api-2.json.php | 4 +- .../wafv2/2019-07-29/paginators-1.json.php | 2 + .../Aws/data/wafv2/2019-07-29/smoke.json.php | 2 + .../wellarchitected/2020-03-31/api-2.json.php | 6 + .../2020-03-31/paginators-1.json.php | 6 + .../Aws/data/wisdom/2020-10-19/api-2.json.php | 6 + .../wisdom/2020-10-19/paginators-1.json.php | 6 + .../data/workdocs/2016-05-01/api-2.json.php | 2 + .../workdocs/2016-05-01/paginators-1.json.php | 2 + .../data/worklink/2018-09-25/api-2.json.php | 4 +- .../worklink/2018-09-25/paginators-1.json.php | 2 + .../data/workmail/2017-10-01/api-2.json.php | 4 +- .../workmail/2017-10-01/paginators-1.json.php | 4 +- .../2019-05-01/api-2.json.php | 4 +- .../2019-05-01/paginators-1.json.php | 2 + .../workspaces-web/2020-07-08/api-2.json.php | 6 + .../2020-07-08/paginators-1.json.php | 6 + .../data/workspaces/2015-04-08/api-2.json.php | 4 +- .../2015-04-08/paginators-1.json.php | 2 + .../data/workspaces/2015-04-08/smoke.json.php | 2 + .../Aws/data/xray/2016-04-12/api-2.json.php | 2 + .../xray/2016-04-12/paginators-1.json.php | 2 + vendor/Aws3/Aws/functions.php | 118 +- vendor/Aws3/CHANGELOG.md | 2605 ++ vendor/Aws3/GuzzleHttp/Client.php | 114 +- vendor/Aws3/GuzzleHttp/ClientInterface.php | 4 +- vendor/Aws3/GuzzleHttp/Cookie/CookieJar.php | 64 +- .../GuzzleHttp/Cookie/CookieJarInterface.php | 6 +- .../Aws3/GuzzleHttp/Cookie/FileCookieJar.php | 24 +- .../GuzzleHttp/Cookie/SessionCookieJar.php | 16 +- vendor/Aws3/GuzzleHttp/Cookie/SetCookie.php | 68 +- .../Exception/BadResponseException.php | 6 +- .../GuzzleHttp/Exception/ClientException.php | 2 +- .../GuzzleHttp/Exception/ConnectException.php | 6 +- .../GuzzleHttp/Exception/GuzzleException.php | 2 +- .../Exception/InvalidArgumentException.php | 2 +- .../GuzzleHttp/Exception/RequestException.php | 26 +- .../GuzzleHttp/Exception/SeekException.php | 4 +- .../GuzzleHttp/Exception/ServerException.php | 2 +- .../Exception/TooManyRedirectsException.php | 2 +- .../Exception/TransferException.php | 2 +- .../Aws3/GuzzleHttp/Handler/CurlFactory.php | 226 +- .../Handler/CurlFactoryInterface.php | 4 +- .../Aws3/GuzzleHttp/Handler/CurlHandler.php | 12 +- .../GuzzleHttp/Handler/CurlMultiHandler.php | 54 +- vendor/Aws3/GuzzleHttp/Handler/EasyHandle.php | 4 +- .../Aws3/GuzzleHttp/Handler/MockHandler.php | 46 +- vendor/Aws3/GuzzleHttp/Handler/Proxy.php | 6 +- .../Aws3/GuzzleHttp/Handler/StreamHandler.php | 154 +- vendor/Aws3/GuzzleHttp/HandlerStack.php | 42 +- vendor/Aws3/GuzzleHttp/MessageFormatter.php | 32 +- vendor/Aws3/GuzzleHttp/Middleware.php | 16 +- vendor/Aws3/GuzzleHttp/Pool.php | 12 +- .../Aws3/GuzzleHttp/PrepareBodyMiddleware.php | 12 +- .../GuzzleHttp/Promise/AggregateException.php | 4 +- .../Promise/CancellationException.php | 2 +- vendor/Aws3/GuzzleHttp/Promise/Coroutine.php | 10 +- vendor/Aws3/GuzzleHttp/Promise/Create.php | 16 +- vendor/Aws3/GuzzleHttp/Promise/Each.php | 6 +- .../Aws3/GuzzleHttp/Promise/EachPromise.php | 69 +- .../GuzzleHttp/Promise/FulfilledPromise.php | 12 +- vendor/Aws3/GuzzleHttp/Promise/Is.php | 16 +- vendor/Aws3/GuzzleHttp/Promise/Promise.php | 30 +- .../GuzzleHttp/Promise/PromiseInterface.php | 2 +- .../GuzzleHttp/Promise/RejectedPromise.php | 14 +- .../GuzzleHttp/Promise/RejectionException.php | 4 +- vendor/Aws3/GuzzleHttp/Promise/TaskQueue.php | 16 +- vendor/Aws3/GuzzleHttp/Promise/Utils.php | 54 +- vendor/Aws3/GuzzleHttp/Promise/functions.php | 52 +- .../GuzzleHttp/Promise/functions_include.php | 2 + vendor/Aws3/GuzzleHttp/Psr7/AppendStream.php | 40 +- vendor/Aws3/GuzzleHttp/Psr7/BufferStream.php | 28 +- vendor/Aws3/GuzzleHttp/Psr7/CachingStream.php | 38 +- .../Aws3/GuzzleHttp/Psr7/DroppingStream.php | 10 +- vendor/Aws3/GuzzleHttp/Psr7/FnStream.php | 45 +- vendor/Aws3/GuzzleHttp/Psr7/Header.php | 18 +- vendor/Aws3/GuzzleHttp/Psr7/InflateStream.php | 21 +- .../Aws3/GuzzleHttp/Psr7/LazyOpenStream.php | 8 +- vendor/Aws3/GuzzleHttp/Psr7/LimitStream.php | 22 +- vendor/Aws3/GuzzleHttp/Psr7/Message.php | 58 +- vendor/Aws3/GuzzleHttp/Psr7/MessageTrait.php | 98 +- vendor/Aws3/GuzzleHttp/Psr7/MimeType.php | 4 +- .../Aws3/GuzzleHttp/Psr7/MultipartStream.php | 36 +- vendor/Aws3/GuzzleHttp/Psr7/NoSeekStream.php | 10 +- vendor/Aws3/GuzzleHttp/Psr7/PumpStream.php | 44 +- vendor/Aws3/GuzzleHttp/Psr7/Query.php | 29 +- vendor/Aws3/GuzzleHttp/Psr7/Request.php | 22 +- vendor/Aws3/GuzzleHttp/Psr7/Response.php | 8 +- vendor/Aws3/GuzzleHttp/Psr7/Rfc7230.php | 3 +- vendor/Aws3/GuzzleHttp/Psr7/ServerRequest.php | 50 +- vendor/Aws3/GuzzleHttp/Psr7/Stream.php | 48 +- .../GuzzleHttp/Psr7/StreamDecoratorTrait.php | 11 +- vendor/Aws3/GuzzleHttp/Psr7/StreamWrapper.php | 22 +- vendor/Aws3/GuzzleHttp/Psr7/UploadedFile.php | 91 +- vendor/Aws3/GuzzleHttp/Psr7/Uri.php | 126 +- vendor/Aws3/GuzzleHttp/Psr7/UriNormalizer.php | 32 +- vendor/Aws3/GuzzleHttp/Psr7/UriResolver.php | 40 +- vendor/Aws3/GuzzleHttp/Psr7/Utils.php | 97 +- vendor/Aws3/GuzzleHttp/Psr7/functions.php | 71 +- .../GuzzleHttp/Psr7/functions_include.php | 2 + vendor/Aws3/GuzzleHttp/RedirectMiddleware.php | 48 +- vendor/Aws3/GuzzleHttp/RetryMiddleware.php | 16 +- vendor/Aws3/GuzzleHttp/TransferStats.php | 2 +- vendor/Aws3/GuzzleHttp/UriTemplate.php | 52 +- vendor/Aws3/GuzzleHttp/Utils.php | 24 +- vendor/Aws3/GuzzleHttp/functions.php | 90 +- vendor/Aws3/GuzzleHttp/functions_include.php | 2 + vendor/Aws3/JmesPath/AstRuntime.php | 8 +- vendor/Aws3/JmesPath/CompilerRuntime.php | 24 +- vendor/Aws3/JmesPath/DebugRuntime.php | 44 +- vendor/Aws3/JmesPath/Env.php | 24 +- vendor/Aws3/JmesPath/FnDispatcher.php | 102 +- vendor/Aws3/JmesPath/JmesPath.php | 4 +- vendor/Aws3/JmesPath/Lexer.php | 72 +- vendor/Aws3/JmesPath/Parser.php | 118 +- vendor/Aws3/JmesPath/SyntaxErrorException.php | 6 +- vendor/Aws3/JmesPath/TreeCompiler.php | 24 +- vendor/Aws3/JmesPath/TreeInterpreter.php | 38 +- vendor/Aws3/JmesPath/Utils.php | 54 +- vendor/Aws3/{LICENSE.md => LICENSE} | 0 vendor/Aws3/NOTICE | 17 + vendor/Aws3/NOTICE.md | 64 - .../Psr/Http/Message/MessageInterface.php | 2 +- .../Psr/Http/Message/RequestInterface.php | 2 +- .../Aws3/Psr/Http/Message/StreamInterface.php | 2 +- vendor/Aws3/README.md | 8 + vendor/Aws3/Symfony/Polyfill/Intl/Idn/Idn.php | 716 + .../Aws3/Symfony/Polyfill/Intl/Idn/Info.php | 22 + vendor/Aws3/Symfony/Polyfill/Intl/Idn/LICENSE | 19 + .../Resources/unidata/DisallowedRanges.php | 286 + .../Intl/Idn/Resources/unidata/Regex.php | 21 + .../Intl/Idn/Resources/unidata/deviation.php | 5 + .../Intl/Idn/Resources/unidata/disallowed.php | 5 + .../unidata/disallowed_STD3_mapped.php | 5 + .../unidata/disallowed_STD3_valid.php | 5 + .../Intl/Idn/Resources/unidata/ignored.php | 5 + .../Intl/Idn/Resources/unidata/mapped.php | 5 + .../Intl/Idn/Resources/unidata/virama.php | 5 + .../Symfony/Polyfill/Intl/Idn/bootstrap.php | 151 + vendor/Aws3/aws-autoloader.php | 5 +- vendor/Gcp/autoload.php | 8 +- vendor/Gcp/bin/google-cloud-batch | 95 + vendor/Gcp/composer/ClassLoader.php | 225 +- vendor/Gcp/composer/InstalledVersions.php | 307 + vendor/Gcp/composer/autoload_classmap.php | 6 +- vendor/Gcp/composer/autoload_files.php | 6 +- vendor/Gcp/composer/autoload_namespaces.php | 6 +- vendor/Gcp/composer/autoload_psr4.php | 6 +- vendor/Gcp/composer/autoload_real.php | 42 +- vendor/Gcp/composer/autoload_static.php | 22 +- vendor/Gcp/composer/installed.json | 2061 +- vendor/Gcp/composer/installed.php | 5 + vendor/Gcp/composer/platform_check.php | 22 + vendor/Gcp/firebase/php-jwt/LICENSE | 2 +- vendor/Gcp/firebase/php-jwt/README.md | 142 +- vendor/Gcp/firebase/php-jwt/composer.json | 7 +- vendor/Gcp/firebase/php-jwt/phpstan.neon.dist | 5 + vendor/Gcp/firebase/php-jwt/src/JWK.php | 59 +- vendor/Gcp/firebase/php-jwt/src/JWT.php | 367 +- vendor/Gcp/firebase/php-jwt/src/Key.php | 50 + vendor/Gcp/google/auth/CHANGELOG.md | 183 - vendor/Gcp/google/auth/README.md | 91 +- vendor/Gcp/google/auth/SECURITY.md | 7 + vendor/Gcp/google/auth/autoload.php | 2 + vendor/Gcp/google/auth/composer.json | 19 +- vendor/Gcp/google/auth/phpstan.neon.dist | 10 + vendor/Gcp/google/auth/src/AccessToken.php | 168 +- .../src/ApplicationDefaultCredentials.php | 148 +- .../src/Cache/InvalidArgumentException.php | 2 +- vendor/Gcp/google/auth/src/Cache/Item.php | 59 +- .../auth/src/Cache/MemoryCacheItemPool.php | 73 +- .../auth/src/Cache/SysVCacheItemPool.php | 96 +- .../Gcp/google/auth/src/Cache/TypedItem.php | 138 + vendor/Gcp/google/auth/src/CacheTrait.php | 50 +- .../Credentials/AppIdentityCredentials.php | 57 +- .../auth/src/Credentials/GCECredentials.php | 84 +- .../auth/src/Credentials/IAMCredentials.php | 14 +- .../src/Credentials/InsecureCredentials.php | 10 +- .../Credentials/ServiceAccountCredentials.php | 115 +- .../ServiceAccountJwtAccessCredentials.php | 51 +- .../Credentials/UserRefreshCredentials.php | 44 +- .../Gcp/google/auth/src/CredentialsLoader.php | 136 +- .../google/auth/src/FetchAuthTokenCache.php | 50 +- .../auth/src/FetchAuthTokenInterface.php | 10 +- vendor/Gcp/google/auth/src/GCECache.php | 22 +- .../src/HttpHandler/Guzzle5HttpHandler.php | 31 +- .../src/HttpHandler/Guzzle6HttpHandler.php | 10 +- .../src/HttpHandler/Guzzle7HttpHandler.php | 2 +- .../auth/src/HttpHandler/HttpClientCache.php | 2 +- .../src/HttpHandler/HttpHandlerFactory.php | 19 +- vendor/Gcp/google/auth/src/Iam.php | 17 +- .../src/Middleware/AuthTokenMiddleware.php | 23 +- .../Middleware/ProxyAuthTokenMiddleware.php | 130 + .../ScopedAccessTokenMiddleware.php | 32 +- .../auth/src/Middleware/SimpleMiddleware.php | 16 +- vendor/Gcp/google/auth/src/OAuth2.php | 396 +- .../auth/src/ServiceAccountSignerTrait.php | 14 +- .../Gcp/google/auth/src/SignBlobInterface.php | 2 +- .../src/Subscriber/AuthTokenSubscriber.php | 120 - .../ScopedAccessTokenSubscriber.php | 154 - .../auth/src/Subscriber/SimpleSubscriber.php | 88 - .../auth/src/UpdateMetadataInterface.php | 4 +- .../{auth => cloud-core}/CODE_OF_CONDUCT.md | 2 +- vendor/Gcp/google/cloud-core/CONTRIBUTING.md | 2 +- vendor/Gcp/google/cloud-core/SECURITY.md | 7 + vendor/Gcp/google/cloud-core/VERSION | 2 +- .../google/cloud-core/bin/google-cloud-batch | 14 +- vendor/Gcp/google/cloud-core/composer.json | 8 +- .../Gcp/google/cloud-core/perf-bootstrap.php | 4 +- .../google/cloud-core/snippet-bootstrap.php | 4 +- .../cloud-core/src/AnonymousCredentials.php | 25 +- .../Gcp/google/cloud-core/src/ArrayTrait.php | 27 +- .../cloud-core/src/Batch/BatchDaemon.php | 65 +- .../cloud-core/src/Batch/BatchDaemonTrait.php | 4 +- .../google/cloud-core/src/Batch/BatchJob.php | 36 +- .../cloud-core/src/Batch/BatchRunner.php | 18 +- .../cloud-core/src/Batch/BatchTrait.php | 22 +- .../src/Batch/ConfigStorageInterface.php | 2 +- .../src/Batch/HandleFailureTrait.php | 28 +- .../src/Batch/InMemoryConfigStorage.php | 51 +- .../cloud-core/src/Batch/InterruptTrait.php | 16 +- .../google/cloud-core/src/Batch/JobConfig.php | 10 +- .../google/cloud-core/src/Batch/JobTrait.php | 2 +- .../src/Batch/OpisClosureSerializer.php | 14 +- .../Gcp/google/cloud-core/src/Batch/Retry.php | 24 +- .../src/Batch/SerializableClientTrait.php | 4 +- .../google/cloud-core/src/Batch/SimpleJob.php | 4 +- .../cloud-core/src/Batch/SimpleJobTrait.php | 10 +- .../src/Batch/SysvConfigStorage.php | 57 +- .../cloud-core/src/Batch/SysvProcessor.php | 26 +- vendor/Gcp/google/cloud-core/src/Blob.php | 4 +- .../Gcp/google/cloud-core/src/CallTrait.php | 2 +- .../Gcp/google/cloud-core/src/ClientTrait.php | 40 +- .../cloud-core/src/Compute/Metadata.php | 6 +- .../Metadata/Readers/HttpHandlerReader.php | 8 +- .../Compute/Metadata/Readers/StreamReader.php | 10 +- .../google/cloud-core/src/DebugInfoTrait.php | 4 +- vendor/Gcp/google/cloud-core/src/Duration.php | 2 +- .../google/cloud-core/src/EmulatorTrait.php | 10 +- .../src/Exception/AbortedException.php | 8 +- .../src/Exception/BadRequestException.php | 2 +- .../src/Exception/ConflictException.php | 2 +- .../Exception/DeadlineExceededException.php | 2 +- .../Exception/FailedPreconditionException.php | 2 +- .../src/Exception/GoogleException.php | 2 +- .../src/Exception/NotFoundException.php | 2 +- .../src/Exception/ServerException.php | 2 +- .../src/Exception/ServiceException.php | 4 +- .../cloud-core/src/ExponentialBackoff.php | 10 +- vendor/Gcp/google/cloud-core/src/GeoPoint.php | 18 +- .../cloud-core/src/GrpcRequestWrapper.php | 52 +- .../Gcp/google/cloud-core/src/GrpcTrait.php | 28 +- vendor/Gcp/google/cloud-core/src/Iam/Iam.php | 4 +- .../cloud-core/src/Iam/PolicyBuilder.php | 20 +- .../src/Iterator/ItemIteratorTrait.php | 15 +- .../src/Iterator/PageIteratorTrait.php | 25 +- .../Gcp/google/cloud-core/src/JsonTrait.php | 14 +- .../google/cloud-core/src/Lock/FlockLock.php | 28 +- .../cloud-core/src/Lock/SemaphoreLock.php | 16 +- .../src/Lock/SymfonyLockAdapter.php | 10 +- .../src/Logger/AppEngineFlexFormatter.php | 6 +- .../src/Logger/AppEngineFlexFormatterV2.php | 6 +- .../src/Logger/AppEngineFlexHandler.php | 8 +- .../Logger/AppEngineFlexHandlerFactory.php | 10 +- .../src/Logger/AppEngineFlexHandlerV2.php | 8 +- .../cloud-core/src/Logger/FormatterTrait.php | 8 +- .../cloud-core/src/LongRunning/LROTrait.php | 12 +- .../src/LongRunning/LongRunningOperation.php | 22 +- .../LongRunning/OperationResponseTrait.php | 24 +- vendor/Gcp/google/cloud-core/src/PhpArray.php | 34 +- .../src/Report/EmptyMetadataProvider.php | 2 +- .../src/Report/GAEFlexMetadataProvider.php | 4 +- .../src/Report/GAEMetadataProvider.php | 2 +- .../Report/GAEStandardMetadataProvider.php | 6 +- .../src/Report/MetadataProviderUtils.php | 6 +- .../src/Report/SimpleMetadataProvider.php | 2 +- .../google/cloud-core/src/RequestBuilder.php | 25 +- .../google/cloud-core/src/RequestWrapper.php | 48 +- .../cloud-core/src/RequestWrapperTrait.php | 16 +- .../Gcp/google/cloud-core/src/RestTrait.php | 14 +- vendor/Gcp/google/cloud-core/src/Retry.php | 12 +- .../cloud-core/src/RetryDeciderTrait.php | 20 +- .../google/cloud-core/src/ServiceBuilder.php | 36 +- .../Gcp/google/cloud-core/src/SysvTrait.php | 8 +- .../Gcp/google/cloud-core/src/TimeTrait.php | 22 +- .../Gcp/google/cloud-core/src/Timestamp.php | 6 +- .../src/Upload/AbstractUploader.php | 8 +- .../src/Upload/MultipartUploader.php | 12 +- .../src/Upload/ResumableUploader.php | 31 +- .../src/Upload/SignedUrlUploader.php | 8 +- .../src/Upload/StreamableUploader.php | 12 +- vendor/Gcp/google/cloud-core/src/UriTrait.php | 11 +- .../google/cloud-core/src/ValidateTrait.php | 6 +- .../cloud-core/src/ValueMapperTrait.php | 4 +- .../google/cloud-core/src/WhitelistTrait.php | 2 +- .../google/cloud-core/system-bootstrap.php | 4 +- .../Gcp/google/cloud-core/unit-bootstrap.php | 9 +- .../google/cloud-storage/CODE_OF_CONDUCT.md | 43 + .../Gcp/google/cloud-storage/CONTRIBUTING.md | 2 +- vendor/Gcp/google/cloud-storage/README.md | 2 +- vendor/Gcp/google/cloud-storage/SECURITY.md | 7 + vendor/Gcp/google/cloud-storage/VERSION | 2 +- vendor/Gcp/google/cloud-storage/composer.json | 2 +- vendor/Gcp/google/cloud-storage/src/Acl.php | 6 +- .../Gcp/google/cloud-storage/src/Bucket.php | 94 +- .../src/Connection/IamBucket.php | 4 +- .../cloud-storage/src/Connection/Rest.php | 59 +- .../ServiceDefinition/storage-v1.json | 8737 ++--- .../cloud-storage/src/CreatedHmacKey.php | 2 +- .../cloud-storage/src/EncryptionTrait.php | 20 +- .../Gcp/google/cloud-storage/src/HmacKey.php | 2 +- .../google/cloud-storage/src/Lifecycle.php | 13 +- .../google/cloud-storage/src/Notification.php | 12 +- .../cloud-storage/src/ObjectIterator.php | 2 +- .../cloud-storage/src/ObjectPageIterator.php | 3 +- .../google/cloud-storage/src/ReadStream.php | 10 +- .../cloud-storage/src/SigningHelper.php | 160 +- .../cloud-storage/src/StorageClient.php | 58 +- .../cloud-storage/src/StorageObject.php | 50 +- .../cloud-storage/src/StreamWrapper.php | 140 +- .../google/cloud-storage/src/WriteStream.php | 16 +- vendor/Gcp/google/crc32/crc32_benchmark.php | 20 +- vendor/Gcp/google/crc32/src/Builtin.php | 18 +- vendor/Gcp/google/crc32/src/CRC32.php | 10 +- vendor/Gcp/google/crc32/src/CRCTrait.php | 4 +- vendor/Gcp/google/crc32/src/Google.php | 12 +- vendor/Gcp/google/crc32/src/PHP.php | 12 +- vendor/Gcp/google/crc32/src/PHPSlicedBy4.php | 24 +- vendor/Gcp/google/crc32/src/Table.php | 4 +- vendor/Gcp/guzzlehttp/guzzle/CHANGELOG.md | 48 + vendor/Gcp/guzzlehttp/guzzle/LICENSE | 10 +- vendor/Gcp/guzzlehttp/guzzle/README.md | 15 + vendor/Gcp/guzzlehttp/guzzle/composer.json | 45 +- .../guzzlehttp/guzzle/src/BodySummarizer.php | 4 +- .../guzzle/src/BodySummarizerInterface.php | 2 +- vendor/Gcp/guzzlehttp/guzzle/src/Client.php | 101 +- .../guzzlehttp/guzzle/src/ClientInterface.php | 6 +- .../guzzle/src/Cookie/CookieJar.php | 48 +- .../guzzle/src/Cookie/CookieJarInterface.php | 6 +- .../guzzle/src/Cookie/FileCookieJar.php | 16 +- .../guzzle/src/Cookie/SessionCookieJar.php | 10 +- .../guzzle/src/Cookie/SetCookie.php | 81 +- .../src/Exception/BadResponseException.php | 6 +- .../guzzle/src/Exception/ClientException.php | 2 +- .../guzzle/src/Exception/ConnectException.php | 4 +- .../Exception/InvalidArgumentException.php | 2 +- .../guzzle/src/Exception/RequestException.php | 22 +- .../guzzle/src/Exception/ServerException.php | 2 +- .../Exception/TooManyRedirectsException.php | 2 +- .../src/Exception/TransferException.php | 2 +- .../guzzle/src/Handler/CurlFactory.php | 95 +- .../src/Handler/CurlFactoryInterface.php | 4 +- .../guzzle/src/Handler/CurlHandler.php | 10 +- .../guzzle/src/Handler/CurlMultiHandler.php | 41 +- .../guzzle/src/Handler/EasyHandle.php | 15 +- .../guzzle/src/Handler/HeaderProcessor.php | 36 + .../guzzle/src/Handler/MockHandler.php | 18 +- .../guzzlehttp/guzzle/src/Handler/Proxy.php | 6 +- .../guzzle/src/Handler/StreamHandler.php | 164 +- .../guzzlehttp/guzzle/src/HandlerStack.php | 33 +- .../guzzle/src/MessageFormatter.php | 12 +- .../guzzle/src/MessageFormatterInterface.php | 2 +- .../Gcp/guzzlehttp/guzzle/src/Middleware.php | 38 +- vendor/Gcp/guzzlehttp/guzzle/src/Pool.php | 10 +- .../guzzle/src/PrepareBodyMiddleware.php | 12 +- .../guzzle/src/RedirectMiddleware.php | 42 +- .../guzzlehttp/guzzle/src/RetryMiddleware.php | 12 +- .../guzzlehttp/guzzle/src/TransferStats.php | 4 +- vendor/Gcp/guzzlehttp/guzzle/src/Utils.php | 62 +- .../Gcp/guzzlehttp/guzzle/src/functions.php | 22 +- .../guzzle/src/functions_include.php | 2 + vendor/Gcp/guzzlehttp/promises/CHANGELOG.md | 22 + vendor/Gcp/guzzlehttp/promises/LICENSE | 7 +- vendor/Gcp/guzzlehttp/promises/README.md | 15 + vendor/Gcp/guzzlehttp/promises/composer.json | 21 +- .../guzzlehttp/promises/phpstan-baseline.neon | 7 - .../Gcp/guzzlehttp/promises/phpstan.neon.dist | 10 - vendor/Gcp/guzzlehttp/promises/psalm.xml | 15 - .../promises/src/AggregateException.php | 4 +- .../promises/src/CancellationException.php | 2 +- .../Gcp/guzzlehttp/promises/src/Coroutine.php | 10 +- vendor/Gcp/guzzlehttp/promises/src/Create.php | 16 +- vendor/Gcp/guzzlehttp/promises/src/Each.php | 6 +- .../guzzlehttp/promises/src/EachPromise.php | 69 +- .../promises/src/FulfilledPromise.php | 12 +- vendor/Gcp/guzzlehttp/promises/src/Is.php | 16 +- .../Gcp/guzzlehttp/promises/src/Promise.php | 30 +- .../promises/src/PromiseInterface.php | 2 +- .../promises/src/RejectedPromise.php | 14 +- .../promises/src/RejectionException.php | 4 +- .../Gcp/guzzlehttp/promises/src/TaskQueue.php | 16 +- vendor/Gcp/guzzlehttp/promises/src/Utils.php | 54 +- .../Gcp/guzzlehttp/promises/src/functions.php | 52 +- .../promises/src/functions_include.php | 2 + vendor/Gcp/guzzlehttp/psr7/CHANGELOG.md | 96 +- vendor/Gcp/guzzlehttp/psr7/LICENSE | 9 +- vendor/Gcp/guzzlehttp/psr7/README.md | 26 +- vendor/Gcp/guzzlehttp/psr7/composer.json | 58 +- .../Gcp/guzzlehttp/psr7/src/AppendStream.php | 90 +- .../Gcp/guzzlehttp/psr7/src/BufferStream.php | 65 +- .../Gcp/guzzlehttp/psr7/src/CachingStream.php | 54 +- .../guzzlehttp/psr7/src/DroppingStream.php | 12 +- .../src/Exception/MalformedUriException.php | 12 + vendor/Gcp/guzzlehttp/psr7/src/FnStream.php | 100 +- vendor/Gcp/guzzlehttp/psr7/src/Header.php | 36 +- .../Gcp/guzzlehttp/psr7/src/HttpFactory.php | 76 + .../Gcp/guzzlehttp/psr7/src/InflateStream.php | 43 +- .../guzzlehttp/psr7/src/LazyOpenStream.php | 15 +- .../Gcp/guzzlehttp/psr7/src/LimitStream.php | 42 +- vendor/Gcp/guzzlehttp/psr7/src/Message.php | 83 +- .../Gcp/guzzlehttp/psr7/src/MessageTrait.php | 128 +- vendor/Gcp/guzzlehttp/psr7/src/MimeType.php | 22 +- .../guzzlehttp/psr7/src/MultipartStream.php | 60 +- .../Gcp/guzzlehttp/psr7/src/NoSeekStream.php | 11 +- vendor/Gcp/guzzlehttp/psr7/src/PumpStream.php | 92 +- vendor/Gcp/guzzlehttp/psr7/src/Query.php | 44 +- vendor/Gcp/guzzlehttp/psr7/src/Request.php | 48 +- vendor/Gcp/guzzlehttp/psr7/src/Response.php | 44 +- vendor/Gcp/guzzlehttp/psr7/src/Rfc7230.php | 12 +- .../Gcp/guzzlehttp/psr7/src/ServerRequest.php | 142 +- vendor/Gcp/guzzlehttp/psr7/src/Stream.php | 113 +- .../psr7/src/StreamDecoratorTrait.php | 66 +- .../Gcp/guzzlehttp/psr7/src/StreamWrapper.php | 61 +- .../Gcp/guzzlehttp/psr7/src/UploadedFile.php | 192 +- vendor/Gcp/guzzlehttp/psr7/src/Uri.php | 339 +- .../Gcp/guzzlehttp/psr7/src/UriNormalizer.php | 54 +- .../Gcp/guzzlehttp/psr7/src/UriResolver.php | 54 +- vendor/Gcp/guzzlehttp/psr7/src/Utils.php | 133 +- vendor/Gcp/guzzlehttp/psr7/src/functions.php | 395 - .../guzzlehttp/psr7/src/functions_include.php | 6 - vendor/Gcp/monolog/monolog/CHANGELOG.md | 74 + vendor/Gcp/monolog/monolog/README.md | 13 +- vendor/Gcp/monolog/monolog/composer.json | 40 +- .../Monolog/Attribute/AsMonologProcessor.php | 42 + .../monolog/src/Monolog/ErrorHandler.php | 172 +- .../Monolog/Formatter/ChromePHPFormatter.php | 14 +- .../Monolog/Formatter/ElasticaFormatter.php | 29 +- .../Formatter/ElasticsearchFormatter.php | 12 +- .../Monolog/Formatter/FlowdockFormatter.php | 24 +- .../Monolog/Formatter/FluentdFormatter.php | 12 +- .../Monolog/Formatter/FormatterInterface.php | 6 + .../Formatter/GelfMessageFormatter.php | 69 +- .../src/Monolog/Formatter/HtmlFormatter.php | 27 +- .../src/Monolog/Formatter/JsonFormatter.php | 55 +- .../src/Monolog/Formatter/LineFormatter.php | 77 +- .../src/Monolog/Formatter/LogglyFormatter.php | 4 +- .../Monolog/Formatter/LogmaticFormatter.php | 2 +- .../Monolog/Formatter/LogstashFormatter.php | 8 +- .../Monolog/Formatter/MongoDBFormatter.php | 83 +- .../Monolog/Formatter/NormalizerFormatter.php | 92 +- .../src/Monolog/Formatter/ScalarFormatter.php | 19 +- .../Monolog/Formatter/WildfireFormatter.php | 45 +- .../src/Monolog/Handler/AbstractHandler.php | 30 +- .../Handler/AbstractProcessingHandler.php | 19 +- .../Monolog/Handler/AbstractSyslogHandler.php | 44 +- .../src/Monolog/Handler/AmqpHandler.php | 22 +- .../Monolog/Handler/BrowserConsoleHandler.php | 108 +- .../src/Monolog/Handler/BufferHandler.php | 49 +- .../src/Monolog/Handler/ChromePHPHandler.php | 59 +- .../src/Monolog/Handler/CouchDBHandler.php | 20 +- .../src/Monolog/Handler/CubeHandler.php | 65 +- .../monolog/src/Monolog/Handler/Curl/Util.php | 32 +- .../Monolog/Handler/DeduplicationHandler.php | 81 +- .../Handler/DoctrineCouchDBHandler.php | 7 +- .../src/Monolog/Handler/DynamoDbHandler.php | 27 +- .../src/Monolog/Handler/ElasticaHandler.php | 33 +- .../Monolog/Handler/ElasticsearchHandler.php | 42 +- .../src/Monolog/Handler/ErrorLogHandler.php | 33 +- .../Monolog/Handler/FallbackGroupHandler.php | 19 +- .../src/Monolog/Handler/FilterHandler.php | 84 +- .../ActivationStrategyInterface.php | 4 + .../ChannelLevelActivationStrategy.php | 25 +- .../ErrorLevelActivationStrategy.php | 12 +- .../Monolog/Handler/FingersCrossedHandler.php | 91 +- .../src/Monolog/Handler/FirePHPHandler.php | 48 +- .../src/Monolog/Handler/FleepHookHandler.php | 24 +- .../src/Monolog/Handler/FlowdockHandler.php | 31 +- .../Handler/FormattableHandlerInterface.php | 2 +- .../Handler/FormattableHandlerTrait.php | 11 +- .../src/Monolog/Handler/GelfHandler.php | 14 +- .../src/Monolog/Handler/GroupHandler.php | 30 +- .../monolog/src/Monolog/Handler/Handler.php | 8 +- .../src/Monolog/Handler/HandlerInterface.php | 9 + .../src/Monolog/Handler/HandlerWrapper.php | 33 +- .../src/Monolog/Handler/IFTTTHandler.php | 33 +- .../src/Monolog/Handler/InsightOpsHandler.php | 14 +- .../src/Monolog/Handler/LogEntriesHandler.php | 14 +- .../src/Monolog/Handler/LogglyHandler.php | 57 +- .../src/Monolog/Handler/LogmaticHandler.php | 18 +- .../src/Monolog/Handler/MailHandler.php | 22 +- .../src/Monolog/Handler/MandrillHandler.php | 41 +- .../src/Monolog/Handler/MongoDBHandler.php | 17 +- .../Monolog/Handler/NativeMailerHandler.php | 48 +- .../src/Monolog/Handler/NewRelicHandler.php | 42 +- .../src/Monolog/Handler/NoopHandler.php | 10 +- .../src/Monolog/Handler/NullHandler.php | 16 +- .../src/Monolog/Handler/OverflowHandler.php | 37 +- .../src/Monolog/Handler/PHPConsoleHandler.php | 83 +- .../src/Monolog/Handler/ProcessHandler.php | 40 +- .../Handler/ProcessableHandlerInterface.php | 10 +- .../Handler/ProcessableHandlerTrait.php | 16 +- .../src/Monolog/Handler/PsrHandler.php | 16 +- .../src/Monolog/Handler/PushoverHandler.php | 75 +- .../src/Monolog/Handler/RedisHandler.php | 19 +- .../Monolog/Handler/RedisPubSubHandler.php | 61 + .../src/Monolog/Handler/RollbarHandler.php | 31 +- .../Monolog/Handler/RotatingFileHandler.php | 74 +- .../src/Monolog/Handler/SamplingHandler.php | 41 +- .../src/Monolog/Handler/SendGridHandler.php | 37 +- .../src/Monolog/Handler/Slack/SlackRecord.php | 82 +- .../src/Monolog/Handler/SlackHandler.php | 45 +- .../Monolog/Handler/SlackWebhookHandler.php | 33 +- .../src/Monolog/Handler/SocketHandler.php | 146 +- .../src/Monolog/Handler/SqsHandler.php | 16 +- .../src/Monolog/Handler/StreamHandler.php | 131 +- .../Monolog/Handler/SwiftMailerHandler.php | 34 +- .../src/Monolog/Handler/SyslogHandler.php | 21 +- .../Monolog/Handler/SyslogUdp/UdpSocket.php | 29 +- .../src/Monolog/Handler/SyslogUdpHandler.php | 60 +- .../Monolog/Handler/TelegramBotHandler.php | 133 +- .../src/Monolog/Handler/TestHandler.php | 82 +- .../Handler/WhatFailureGroupHandler.php | 12 +- .../Monolog/Handler/ZendMonitorHandler.php | 31 +- .../monolog/monolog/src/Monolog/LogRecord.php | 33 + .../monolog/monolog/src/Monolog/Logger.php | 193 +- .../src/Monolog/Processor/GitProcessor.php | 24 +- .../Monolog/Processor/HostnameProcessor.php | 8 +- .../Processor/IntrospectionProcessor.php | 45 +- .../Processor/MemoryPeakUsageProcessor.php | 7 +- .../src/Monolog/Processor/MemoryProcessor.php | 8 +- .../Processor/MemoryUsageProcessor.php | 7 +- .../Monolog/Processor/MercurialProcessor.php | 28 +- .../Monolog/Processor/ProcessIdProcessor.php | 7 +- .../Monolog/Processor/ProcessorInterface.php | 5 + .../Processor/PsrLogMessageProcessor.php | 27 +- .../src/Monolog/Processor/TagProcessor.php | 17 +- .../src/Monolog/Processor/UidProcessor.php | 10 +- .../src/Monolog/Processor/WebProcessor.php | 40 +- .../monolog/monolog/src/Monolog/Registry.php | 15 +- .../monolog/src/Monolog/SignalHandler.php | 69 +- .../Gcp/monolog/monolog/src/Monolog/Utils.php | 154 +- .../psr/cache/src/CacheItemPoolInterface.php | 4 +- .../psr/http-client/src/ClientInterface.php | 2 +- vendor/Gcp/psr/http-factory/LICENSE | 21 + vendor/Gcp/psr/http-factory/README.md | 10 + vendor/Gcp/psr/http-factory/composer.json | 35 + .../src/RequestFactoryInterface.php | 18 + .../src/ResponseFactoryInterface.php | 18 + .../src/ServerRequestFactoryInterface.php | 24 + .../src/StreamFactoryInterface.php | 43 + .../src/UploadedFileFactoryInterface.php | 28 + .../http-factory/src/UriFactoryInterface.php | 17 + .../psr/http-message/src/MessageInterface.php | 2 +- .../psr/http-message/src/RequestInterface.php | 2 +- .../psr/http-message/src/StreamInterface.php | 2 +- vendor/Gcp/psr/log/Psr/Log/AbstractLogger.php | 50 +- .../psr/log/Psr/Log/LoggerAwareInterface.php | 2 +- .../Gcp/psr/log/Psr/Log/LoggerAwareTrait.php | 4 +- vendor/Gcp/psr/log/Psr/Log/LoggerTrait.php | 16 +- vendor/Gcp/psr/log/Psr/Log/NullLogger.php | 2 +- vendor/Gcp/psr/log/composer.json | 2 +- .../getallheaders/src/getallheaders.php | 2 + vendor/Gcp/rize/uri-template/README.md | 33 +- vendor/Gcp/rize/uri-template/composer.json | 9 +- .../uri-template/src/Rize/UriTemplate.php | 16 +- .../src/Rize/UriTemplate/Node/Abstraction.php | 10 +- .../src/Rize/UriTemplate/Node/Expression.php | 26 +- .../src/Rize/UriTemplate/Node/Literal.php | 2 +- .../src/Rize/UriTemplate/Node/Variable.php | 4 +- .../Rize/UriTemplate/Operator/Abstraction.php | 50 +- .../src/Rize/UriTemplate/Operator/Named.php | 42 +- .../src/Rize/UriTemplate/Operator/UnNamed.php | 4 +- .../src/Rize/UriTemplate/Parser.php | 38 +- .../src/Rize/UriTemplate/UriTemplate.php | 2 +- .../deprecation-contracts/CHANGELOG.md | 5 + .../Gcp/symfony/deprecation-contracts/LICENSE | 19 + .../symfony/deprecation-contracts/README.md | 26 + .../deprecation-contracts/composer.json | 35 + .../deprecation-contracts/function.php | 28 + view/addon.php | 61 - view/attachment-metabox.php | 3 +- view/bucket-access-select.php | 130 - view/bucket-select.php | 219 - view/bucket-setting.php | 123 - view/checkbox.php | 13 - view/debug-info.php | 14 - view/delivery-domain-setting.php | 12 - view/delivery-provider-select.php | 191 - view/delivery-provider-setting.php | 19 - view/enable-delivery-domain-setting.php | 35 - view/enable-signed-urls-setting.php | 31 - view/error-access.php | 8 - view/error-fatal.php | 5 - view/failure-notice.php | 5 - view/footer.php | 1 - view/header.php | 3 - view/notice.php | 6 +- view/provider-select.php | 375 - view/provider-setting.php | 19 - view/settings-tabs.php | 10 - view/settings.php | 20 +- view/settings/addons.php | 21 - view/settings/media.php | 334 - view/settings/support.php | 14 - view/sidebar.php | 52 - view/signed-urls-setting.php | 107 - view/wordpress-org-support.php | 14 - wordpress-s3.php | 9 +- wp-offload-media-autoloader.php | 45 +- 1919 files changed, 75176 insertions(+), 23064 deletions(-) create mode 100644 assets/css/attachment.min.css delete mode 100644 assets/css/delivery-provider.css create mode 100644 assets/css/flexboxgrid.css create mode 100644 assets/css/flexboxgrid.min.css create mode 100644 assets/css/media.min.css create mode 100644 assets/css/modal.min.css create mode 100644 assets/css/normalize.css create mode 100644 assets/css/normalize.min.css create mode 100644 assets/css/notice.min.css create mode 100644 assets/css/settings.css create mode 100644 assets/css/settings.min.css delete mode 100644 assets/css/storage-provider.css create mode 100644 assets/css/style.css create mode 100644 assets/css/style.min.css delete mode 100644 assets/css/styles.css delete mode 100644 assets/img/as3cf-banner-bw.jpg delete mode 100644 assets/img/as3cf-banner-bw@2x.jpg delete mode 100644 assets/img/as3cf-banner.jpg delete mode 100644 assets/img/as3cf-banner@2x.jpg delete mode 100644 assets/img/aws-logo.svg create mode 100644 assets/img/brand/default.svg create mode 100644 assets/img/brand/ome-branding-transparent.svg create mode 100644 assets/img/brand/ome-medallion.svg create mode 100644 assets/img/brand/upsell-bunny.svg delete mode 100644 assets/img/do-logo.svg delete mode 100644 assets/img/gcp-logo.svg delete mode 100644 assets/img/icon-assets-pull.svg create mode 100644 assets/img/icon/arrow.svg create mode 100644 assets/img/icon/assets-wizard.svg create mode 100644 assets/img/icon/bucket-round.svg create mode 100644 assets/img/icon/bucket.svg create mode 100644 assets/img/icon/check.svg create mode 100644 assets/img/icon/close.svg create mode 100644 assets/img/icon/css.svg create mode 100644 assets/img/icon/dot.svg create mode 100644 assets/img/icon/download.svg create mode 100644 assets/img/icon/error.svg create mode 100644 assets/img/icon/fonts.svg create mode 100644 assets/img/icon/help.svg create mode 100644 assets/img/icon/info.svg create mode 100644 assets/img/icon/js.svg create mode 100644 assets/img/icon/licence-checked.svg create mode 100644 assets/img/icon/notification-error.svg create mode 100644 assets/img/icon/notification-info.svg create mode 100644 assets/img/icon/notification-locked.svg create mode 100644 assets/img/icon/notification-success.svg create mode 100644 assets/img/icon/notification-warning.svg create mode 100644 assets/img/icon/offload-complete.svg create mode 100644 assets/img/icon/offload-remaining.svg create mode 100644 assets/img/icon/provider/delivery/aws-round.svg create mode 100644 assets/img/icon/provider/delivery/aws.svg create mode 100644 assets/img/icon/provider/delivery/cdn-round.svg create mode 100644 assets/img/icon/provider/delivery/cdn.svg create mode 100644 assets/img/icon/provider/delivery/cloudflare-round.svg create mode 100644 assets/img/icon/provider/delivery/cloudflare.svg create mode 100644 assets/img/icon/provider/delivery/do-round.svg create mode 100644 assets/img/icon/provider/delivery/do.svg create mode 100644 assets/img/icon/provider/delivery/gcp-round.svg create mode 100644 assets/img/icon/provider/delivery/gcp.svg create mode 100644 assets/img/icon/provider/delivery/keycdn.svg create mode 100644 assets/img/icon/provider/delivery/other-round.svg create mode 100644 assets/img/icon/provider/delivery/other.svg create mode 100644 assets/img/icon/provider/delivery/stackpath-round.svg create mode 100644 assets/img/icon/provider/delivery/stackpath.svg create mode 100644 assets/img/icon/provider/storage/aws-link.svg create mode 100644 assets/img/icon/provider/storage/aws-round.svg create mode 100644 assets/img/icon/provider/storage/aws.svg create mode 100644 assets/img/icon/provider/storage/do-link.svg create mode 100644 assets/img/icon/provider/storage/do-round.svg create mode 100644 assets/img/icon/provider/storage/do.svg create mode 100644 assets/img/icon/provider/storage/gcp-link.svg create mode 100644 assets/img/icon/provider/storage/gcp-round.svg create mode 100644 assets/img/icon/provider/storage/gcp.svg create mode 100644 assets/img/icon/region-round.svg create mode 100644 assets/img/icon/region.svg create mode 100644 assets/img/icon/remove-from-bucket.svg create mode 100644 assets/img/icon/remove-from-server.svg create mode 100644 assets/img/icon/stars.svg create mode 100644 assets/img/icon/subnav-arrow.svg create mode 100644 assets/img/icon/tool-analyzerepair-active.svg create mode 100644 assets/img/icon/tool-analyzerepair-default.svg create mode 100644 assets/img/icon/tool-analyzerepair-paused.svg create mode 100644 assets/img/icon/tool-analyzerepair-running-animated.svg create mode 100644 assets/img/icon/tool-clean-active.svg create mode 100644 assets/img/icon/tool-clean-default.svg create mode 100644 assets/img/icon/tool-clean-paused.svg create mode 100644 assets/img/icon/tool-clean-running-animated.svg create mode 100644 assets/img/icon/tool-download-active.svg create mode 100644 assets/img/icon/tool-download-default.svg create mode 100644 assets/img/icon/tool-download-paused.svg create mode 100644 assets/img/icon/tool-download-running-animated.svg create mode 100644 assets/img/icon/tool-generic-active.svg create mode 100644 assets/img/icon/tool-generic-default.svg create mode 100644 assets/img/icon/tool-generic-paused.svg create mode 100644 assets/img/icon/tool-generic-running-animated.svg create mode 100644 assets/img/icon/tool-move-active.svg create mode 100644 assets/img/icon/tool-move-default.svg create mode 100644 assets/img/icon/tool-move-paused.svg create mode 100644 assets/img/icon/tool-move-running-animated.svg create mode 100644 assets/img/icon/tool-offload-active.svg create mode 100644 assets/img/icon/tool-offload-default.svg create mode 100644 assets/img/icon/tool-offload-paused.svg create mode 100644 assets/img/icon/tool-offload-running-animated.svg create mode 100644 assets/img/icon/tool-remove-active.svg create mode 100644 assets/img/icon/tool-remove-default.svg create mode 100644 assets/img/icon/tool-remove-paused.svg create mode 100644 assets/img/icon/tool-remove-running-animated.svg create mode 100644 assets/img/icon/tool-status-error-animated.svg create mode 100644 assets/img/icon/tool-status-success-animated.svg create mode 100644 assets/img/icon/x.svg delete mode 100644 assets/img/icon16.png rename assets/img/{icon-checked.svg => sidebar/item-checked.svg} (100%) rename assets/img/{ => sidebar}/logo-dbi.svg (100%) rename assets/img/{ => sidebar}/os3-banner.svg (100%) delete mode 100644 assets/js/delivery-provider.js delete mode 100644 assets/js/delivery-provider.min.js delete mode 100644 assets/js/script.js delete mode 100644 assets/js/script.min.js create mode 100644 assets/js/settings.js create mode 100644 assets/js/settings.js.map create mode 100644 assets/js/settings.min.js delete mode 100644 assets/js/storage-provider.js delete mode 100644 assets/js/storage-provider.min.js create mode 100644 assets/sass/_buttons.scss create mode 100644 assets/sass/_icons.scss create mode 100644 assets/sass/_input.scss create mode 100644 assets/sass/_navigation.scss create mode 100644 assets/sass/_notifications.scss create mode 100644 assets/sass/_providers.scss create mode 100644 assets/sass/_sidebar.scss create mode 100644 assets/sass/_typography.scss create mode 100644 assets/sass/_ui.scss create mode 100644 assets/sass/_variables.scss delete mode 100644 assets/sass/delivery-provider.scss delete mode 100644 assets/sass/storage-provider.scss create mode 100644 assets/sass/style.scss delete mode 100644 assets/sass/styles.scss create mode 100644 classes/api/api-manager.php create mode 100644 classes/api/api.php create mode 100644 classes/api/v1/buckets.php create mode 100644 classes/api/v1/diagnostics.php create mode 100644 classes/api/v1/notifications.php create mode 100644 classes/api/v1/settings.php create mode 100644 classes/api/v1/state.php create mode 100644 classes/api/v1/url-preview.php create mode 100644 classes/integrations/advanced-custom-fields.php delete mode 100644 classes/providers/delivery/another-cdn.php create mode 100644 interfaces/settings-interface.php create mode 100644 traits/settings-trait.php create mode 100644 ui/components/AccessKeysDefine.svelte create mode 100644 ui/components/AccessKeysEntry.svelte create mode 100644 ui/components/AssetsPage.svelte create mode 100644 ui/components/AssetsUpgrade.svelte create mode 100644 ui/components/BackNextButtonsRow.svelte create mode 100644 ui/components/BlockPublicAccessWarning.svelte create mode 100644 ui/components/BucketSettingsSubPage.svelte create mode 100644 ui/components/Button.svelte create mode 100644 ui/components/Checkbox.svelte create mode 100644 ui/components/DefinedInWPConfig.svelte create mode 100644 ui/components/DeliveryPage.svelte create mode 100644 ui/components/DeliverySettingsHeadingRow.svelte create mode 100644 ui/components/DeliverySettingsPanel.svelte create mode 100644 ui/components/DeliverySettingsSubPage.svelte create mode 100644 ui/components/Footer.svelte create mode 100644 ui/components/Header.svelte create mode 100644 ui/components/HelpButton.svelte create mode 100644 ui/components/KeyFileDefine.svelte create mode 100644 ui/components/KeyFileEntry.svelte create mode 100644 ui/components/Loading.svelte create mode 100644 ui/components/MediaPage.svelte create mode 100644 ui/components/MediaSettings.svelte create mode 100644 ui/components/Nav.svelte create mode 100644 ui/components/NavItem.svelte create mode 100644 ui/components/Notification.svelte create mode 100644 ui/components/Notifications.svelte create mode 100644 ui/components/ObjectOwnershipEnforcedWarning.svelte create mode 100644 ui/components/Page.svelte create mode 100644 ui/components/Pages.svelte create mode 100644 ui/components/Panel.svelte create mode 100644 ui/components/PanelContainer.svelte create mode 100644 ui/components/PanelRow.svelte create mode 100644 ui/components/RadioButton.svelte create mode 100644 ui/components/SecuritySubPage.svelte create mode 100644 ui/components/SettingNotifications.svelte create mode 100644 ui/components/Settings.svelte create mode 100644 ui/components/SettingsPanelOption.svelte create mode 100644 ui/components/StoragePage.svelte create mode 100644 ui/components/StorageProviderSubPage.svelte create mode 100644 ui/components/StorageSettingsHeadingRow.svelte create mode 100644 ui/components/StorageSettingsPanel.svelte create mode 100644 ui/components/StorageSettingsSubPage.svelte create mode 100644 ui/components/SubNav.svelte create mode 100644 ui/components/SubNavItem.svelte create mode 100644 ui/components/SubPage.svelte create mode 100644 ui/components/SubPages.svelte create mode 100644 ui/components/SupportPage.svelte create mode 100644 ui/components/TabButton.svelte create mode 100644 ui/components/ToggleSwitch.svelte create mode 100644 ui/components/ToolsPage.svelte create mode 100644 ui/components/ToolsUpgrade.svelte create mode 100644 ui/components/Upsell.svelte create mode 100644 ui/components/UrlPreview.svelte create mode 100644 ui/components/UseServerRolesDefine.svelte create mode 100644 ui/js/autofocus.js create mode 100644 ui/js/defaultPages.js create mode 100644 ui/js/needsRefresh.js create mode 100644 ui/js/objectsDiffer.js create mode 100644 ui/js/routes.js create mode 100644 ui/js/scrollIntoView.js create mode 100644 ui/js/scrollNotificationsIntoView.js create mode 100644 ui/js/settingsNotifications.js create mode 100644 ui/js/stores.js create mode 100644 ui/lite/Header.svelte create mode 100644 ui/lite/Settings.svelte create mode 100644 ui/lite/Sidebar.svelte create mode 100644 ui/lite/pages.js create mode 100644 vendor/Aws3/Aws/Arn/ObjectLambdaAccessPointArn.php create mode 100644 vendor/Aws3/Aws/Arn/S3/MultiRegionAccessPointArn.php create mode 100644 vendor/Aws3/Aws/DefaultsMode/Configuration.php create mode 100644 vendor/Aws3/Aws/DefaultsMode/ConfigurationInterface.php create mode 100644 vendor/Aws3/Aws/DefaultsMode/ConfigurationProvider.php create mode 100644 vendor/Aws3/Aws/DefaultsMode/Exception/ConfigurationException.php create mode 100644 vendor/Aws3/Aws/Endpoint/UseDualstackEndpoint/Configuration.php create mode 100644 vendor/Aws3/Aws/Endpoint/UseDualstackEndpoint/ConfigurationInterface.php create mode 100644 vendor/Aws3/Aws/Endpoint/UseDualstackEndpoint/ConfigurationProvider.php create mode 100644 vendor/Aws3/Aws/Endpoint/UseDualstackEndpoint/Exception/ConfigurationException.php create mode 100644 vendor/Aws3/Aws/Endpoint/UseFipsEndpoint/Configuration.php create mode 100644 vendor/Aws3/Aws/Endpoint/UseFipsEndpoint/ConfigurationInterface.php create mode 100644 vendor/Aws3/Aws/Endpoint/UseFipsEndpoint/ConfigurationProvider.php create mode 100644 vendor/Aws3/Aws/Endpoint/UseFipsEndpoint/Exception/ConfigurationException.php create mode 100644 vendor/Aws3/Aws/Exception/CommonRuntimeException.php create mode 100644 vendor/Aws3/Aws/S3/CalculatesChecksumTrait.php create mode 100644 vendor/Aws3/Aws/S3/ValidateResponseChecksumParser.php create mode 100644 vendor/Aws3/Aws/data/account/2021-02-01/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/account/2021-02-01/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/amp/2020-08-01/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/amp/2020-08-01/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/amp/2020-08-01/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/amplifyuibuilder/2021-08-11/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/amplifyuibuilder/2021-08-11/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/appconfigdata/2021-11-11/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/appconfigdata/2021-11-11/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/applicationcostprofiler/2020-09-10/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/applicationcostprofiler/2020-09-10/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/apprunner/2020-05-15/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/apprunner/2020-05-15/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/backup-gateway/2021-01-01/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/backup-gateway/2021-01-01/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/billingconductor/2021-07-30/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/billingconductor/2021-07-30/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/billingconductor/2021-07-30/smoke.json.php create mode 100644 vendor/Aws3/Aws/data/billingconductor/2021-07-30/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/chime-sdk-identity/2021-04-20/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/chime-sdk-identity/2021-04-20/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/chime-sdk-media-pipelines/2021-07-15/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/chime-sdk-media-pipelines/2021-07-15/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/chime-sdk-meetings/2021-07-15/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/chime-sdk-meetings/2021-07-15/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/chime-sdk-messaging/2021-05-15/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/chime-sdk-messaging/2021-05-15/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/cloudcontrol/2021-09-30/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/cloudcontrol/2021-09-30/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/cloudcontrol/2021-09-30/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/codeguru-reviewer/2019-09-19/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/cognito-sync/2014-06-30/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/cognito-sync/2014-06-30/smoke.json.php create mode 100644 vendor/Aws3/Aws/data/drs/2020-02-26/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/drs/2020-02-26/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/evidently/2021-02-01/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/evidently/2021-02-01/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/finspace-data/2020-07-13/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/finspace-data/2020-07-13/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/finspace/2021-03-12/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/finspace/2021-03-12/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/fis/2020-12-01/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/fis/2020-12-01/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/gamesparks/2021-08-17/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/gamesparks/2021-08-17/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/grafana/2020-08-18/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/grafana/2020-08-18/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/greengrassv2/2020-11-30/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/greengrassv2/2020-11-30/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/inspector2/2020-06-08/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/inspector2/2020-06-08/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/iotdeviceadvisor/2020-09-18/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/iotdeviceadvisor/2020-09-18/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/iotfleethub/2020-11-03/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/iotfleethub/2020-11-03/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/iottwinmaker/2021-11-29/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/iottwinmaker/2021-11-29/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/iottwinmaker/2021-11-29/smoke.json.php create mode 100644 vendor/Aws3/Aws/data/iottwinmaker/2021-11-29/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/iotwireless/2020-11-22/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/iotwireless/2020-11-22/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/ivschat/2020-07-14/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/ivschat/2020-07-14/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/kafkaconnect/2021-09-14/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/kafkaconnect/2021-09-14/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/keyspaces/2022-02-10/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/keyspaces/2022-02-10/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/keyspaces/2022-02-10/smoke.json.php create mode 100644 vendor/Aws3/Aws/data/keyspaces/2022-02-10/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/location/2020-11-19/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/location/2020-11-19/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/lookoutequipment/2020-12-15/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/lookoutequipment/2020-12-15/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/lookoutmetrics/2017-07-25/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/lookoutmetrics/2017-07-25/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/mediaconnect/2018-11-14/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/memorydb/2021-01-01/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/memorydb/2021-01-01/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/mgn/2020-02-26/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/mgn/2020-02-26/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/migration-hub-refactor-spaces/2021-10-26/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/migration-hub-refactor-spaces/2021-10-26/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/migrationhubstrategy/2020-02-19/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/migrationhubstrategy/2020-02-19/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/models.lex.v2/2020-08-07/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/models.lex.v2/2020-08-07/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/models.lex.v2/2020-08-07/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/nimble/2020-08-01/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/nimble/2020-08-01/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/nimble/2020-08-01/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/opensearch/2021-01-01/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/opensearch/2021-01-01/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/opensearch/2021-01-01/smoke.json.php create mode 100644 vendor/Aws3/Aws/data/panorama/2019-07-24/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/panorama/2019-07-24/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/pinpoint-sms-voice-v2/2022-03-31/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/pinpoint-sms-voice-v2/2022-03-31/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/pinpoint-sms-voice-v2/2022-03-31/smoke.json.php create mode 100644 vendor/Aws3/Aws/data/pinpoint-sms-voice-v2/2022-03-31/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/proton/2020-07-20/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/proton/2020-07-20/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/proton/2020-07-20/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/rbin/2021-06-15/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/rbin/2021-06-15/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/resiliencehub/2020-04-30/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/resiliencehub/2020-04-30/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/route53-recovery-cluster/2019-12-02/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/route53-recovery-cluster/2019-12-02/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/route53-recovery-control-config/2020-11-02/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/route53-recovery-control-config/2020-11-02/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/route53-recovery-control-config/2020-11-02/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/route53-recovery-readiness/2019-12-02/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/route53-recovery-readiness/2019-12-02/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/rum/2018-05-10/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/rum/2018-05-10/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/runtime.lex.v2/2020-08-07/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/runtime.lex.v2/2020-08-07/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/sdk-default-configuration.json.php create mode 100644 vendor/Aws3/Aws/data/snow-device-management/2021-08-04/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/snow-device-management/2021-08-04/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/ssm-contacts/2021-05-03/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/ssm-contacts/2021-05-03/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/ssm-incidents/2018-05-10/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/ssm-incidents/2018-05-10/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/ssm-incidents/2018-05-10/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/transfer/2018-11-05/waiters-2.json.php create mode 100644 vendor/Aws3/Aws/data/voice-id/2021-09-27/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/voice-id/2021-09-27/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/wellarchitected/2020-03-31/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/wellarchitected/2020-03-31/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/wisdom/2020-10-19/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/wisdom/2020-10-19/paginators-1.json.php create mode 100644 vendor/Aws3/Aws/data/workspaces-web/2020-07-08/api-2.json.php create mode 100644 vendor/Aws3/Aws/data/workspaces-web/2020-07-08/paginators-1.json.php rename vendor/Aws3/{LICENSE.md => LICENSE} (100%) create mode 100644 vendor/Aws3/NOTICE delete mode 100644 vendor/Aws3/NOTICE.md create mode 100644 vendor/Aws3/Symfony/Polyfill/Intl/Idn/Idn.php create mode 100644 vendor/Aws3/Symfony/Polyfill/Intl/Idn/Info.php create mode 100644 vendor/Aws3/Symfony/Polyfill/Intl/Idn/LICENSE create mode 100644 vendor/Aws3/Symfony/Polyfill/Intl/Idn/Resources/unidata/DisallowedRanges.php create mode 100644 vendor/Aws3/Symfony/Polyfill/Intl/Idn/Resources/unidata/Regex.php create mode 100644 vendor/Aws3/Symfony/Polyfill/Intl/Idn/Resources/unidata/deviation.php create mode 100644 vendor/Aws3/Symfony/Polyfill/Intl/Idn/Resources/unidata/disallowed.php create mode 100644 vendor/Aws3/Symfony/Polyfill/Intl/Idn/Resources/unidata/disallowed_STD3_mapped.php create mode 100644 vendor/Aws3/Symfony/Polyfill/Intl/Idn/Resources/unidata/disallowed_STD3_valid.php create mode 100644 vendor/Aws3/Symfony/Polyfill/Intl/Idn/Resources/unidata/ignored.php create mode 100644 vendor/Aws3/Symfony/Polyfill/Intl/Idn/Resources/unidata/mapped.php create mode 100644 vendor/Aws3/Symfony/Polyfill/Intl/Idn/Resources/unidata/virama.php create mode 100644 vendor/Aws3/Symfony/Polyfill/Intl/Idn/bootstrap.php create mode 100644 vendor/Gcp/bin/google-cloud-batch create mode 100644 vendor/Gcp/composer/InstalledVersions.php create mode 100644 vendor/Gcp/composer/installed.php create mode 100644 vendor/Gcp/composer/platform_check.php create mode 100644 vendor/Gcp/firebase/php-jwt/phpstan.neon.dist create mode 100644 vendor/Gcp/firebase/php-jwt/src/Key.php delete mode 100644 vendor/Gcp/google/auth/CHANGELOG.md create mode 100644 vendor/Gcp/google/auth/SECURITY.md create mode 100644 vendor/Gcp/google/auth/phpstan.neon.dist create mode 100644 vendor/Gcp/google/auth/src/Cache/TypedItem.php create mode 100644 vendor/Gcp/google/auth/src/Middleware/ProxyAuthTokenMiddleware.php delete mode 100644 vendor/Gcp/google/auth/src/Subscriber/AuthTokenSubscriber.php delete mode 100644 vendor/Gcp/google/auth/src/Subscriber/ScopedAccessTokenSubscriber.php delete mode 100644 vendor/Gcp/google/auth/src/Subscriber/SimpleSubscriber.php rename vendor/Gcp/google/{auth => cloud-core}/CODE_OF_CONDUCT.md (97%) create mode 100644 vendor/Gcp/google/cloud-core/SECURITY.md create mode 100644 vendor/Gcp/google/cloud-storage/CODE_OF_CONDUCT.md create mode 100644 vendor/Gcp/google/cloud-storage/SECURITY.md create mode 100644 vendor/Gcp/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php delete mode 100644 vendor/Gcp/guzzlehttp/promises/phpstan-baseline.neon delete mode 100644 vendor/Gcp/guzzlehttp/promises/phpstan.neon.dist delete mode 100644 vendor/Gcp/guzzlehttp/promises/psalm.xml create mode 100644 vendor/Gcp/guzzlehttp/psr7/src/Exception/MalformedUriException.php create mode 100644 vendor/Gcp/guzzlehttp/psr7/src/HttpFactory.php delete mode 100644 vendor/Gcp/guzzlehttp/psr7/src/functions.php delete mode 100644 vendor/Gcp/guzzlehttp/psr7/src/functions_include.php create mode 100644 vendor/Gcp/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php create mode 100644 vendor/Gcp/monolog/monolog/src/Monolog/Handler/RedisPubSubHandler.php create mode 100644 vendor/Gcp/monolog/monolog/src/Monolog/LogRecord.php create mode 100644 vendor/Gcp/psr/http-factory/LICENSE create mode 100644 vendor/Gcp/psr/http-factory/README.md create mode 100644 vendor/Gcp/psr/http-factory/composer.json create mode 100644 vendor/Gcp/psr/http-factory/src/RequestFactoryInterface.php create mode 100644 vendor/Gcp/psr/http-factory/src/ResponseFactoryInterface.php create mode 100644 vendor/Gcp/psr/http-factory/src/ServerRequestFactoryInterface.php create mode 100644 vendor/Gcp/psr/http-factory/src/StreamFactoryInterface.php create mode 100644 vendor/Gcp/psr/http-factory/src/UploadedFileFactoryInterface.php create mode 100644 vendor/Gcp/psr/http-factory/src/UriFactoryInterface.php create mode 100644 vendor/Gcp/symfony/deprecation-contracts/CHANGELOG.md create mode 100644 vendor/Gcp/symfony/deprecation-contracts/LICENSE create mode 100644 vendor/Gcp/symfony/deprecation-contracts/README.md create mode 100644 vendor/Gcp/symfony/deprecation-contracts/composer.json create mode 100644 vendor/Gcp/symfony/deprecation-contracts/function.php delete mode 100644 view/addon.php delete mode 100644 view/bucket-access-select.php delete mode 100644 view/bucket-select.php delete mode 100644 view/bucket-setting.php delete mode 100644 view/checkbox.php delete mode 100644 view/debug-info.php delete mode 100644 view/delivery-domain-setting.php delete mode 100644 view/delivery-provider-select.php delete mode 100644 view/delivery-provider-setting.php delete mode 100644 view/enable-delivery-domain-setting.php delete mode 100644 view/enable-signed-urls-setting.php delete mode 100644 view/error-access.php delete mode 100644 view/error-fatal.php delete mode 100644 view/failure-notice.php delete mode 100644 view/footer.php delete mode 100644 view/header.php delete mode 100644 view/provider-select.php delete mode 100644 view/provider-setting.php delete mode 100644 view/settings-tabs.php delete mode 100644 view/settings/addons.php delete mode 100644 view/settings/media.php delete mode 100644 view/settings/support.php delete mode 100644 view/sidebar.php delete mode 100644 view/signed-urls-setting.php delete mode 100644 view/wordpress-org-support.php diff --git a/README.md b/README.md index 86d3b778..55e0bb6b 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ **Contributors:** bradt, deliciousbrains, ianmjones **Tags:** uploads, amazon, s3, amazon s3, digitalocean, digitalocean spaces, google cloud storage, gcs, mirror, admin, media, cdn, cloudfront **Requires at least:** 4.9 -**Tested up to:** 5.9 -**Requires PHP:** 5.6 -**Stable tag:** 2.6.2 +**Tested up to:** 5.7 +**Requires PHP:** 5.5 +**Stable tag:** 2.5.4 **License:** GPLv3 Copies files to Amazon S3, DigitalOcean Spaces or Google Cloud Storage as they are uploaded to the Media Library. Optionally configure Amazon CloudFront or another CDN for faster delivery. @@ -13,7 +13,7 @@ Copies files to Amazon S3, DigitalOcean Spaces or Google Cloud Storage as they a FORMERLY WP OFFLOAD S3 LITE -https://www.youtube.com/watch?v=I-wTMXMeFu4 +https://www.youtube.com/watch?v=_PVybEGaRXc This plugin automatically copies images, videos, documents, and any other media added through WordPress' media uploader to [Amazon S3](http://aws.amazon.com/s3/), [DigitalOcean Spaces](https://www.digitalocean.com/products/spaces/) or [Google Cloud Storage](https://cloud.google.com/storage/). It then automatically replaces the URL to each media file with their respective Amazon S3, DigitalOcean Spaces or Google Cloud Storage URL or, if you have configured [Amazon CloudFront](http://aws.amazon.com/cloudfront/) or another CDN with or without a custom domain, that URL instead. Image thumbnails are also copied to the bucket and delivered through the correct remote URL. @@ -75,10 +75,6 @@ If you upgrade to the pro version of [WP Offload Media](https://deliciousbrains. ## Upgrade Notice ## -### 2.6 ### -This is a major upgrade that updates the format of information stored about offloaded Media Library items. Once upgraded you will not be able to downgrade without restoring data from a backup. -This version requires PHP 5.6+ - ### 2.3 ### This is a major upgrade that switches to using a custom table for storing data about offloaded Media Library items. Once upgraded you will not be able to downgrade without restoring data from a backup. @@ -93,27 +89,6 @@ This version requires PHP 5.3.3+ and the Amazon Web Services plugin ## Changelog ## -### WP Offload Media Lite 2.6.2 - 2022-04-04 ### -* Bug fix: Upgrade routine no longer risks breaking items when external object cache is in use - -### WP Offload Media Lite 2.6.1 - 2022-03-21 ### -* Bug fix: Local files are no longer removed if as3cf_pre_upload_attachment filter is used to abort upload - -### WP Offload Media Lite 2.6 - 2022-03-09 ### -* [Release Summary Blog Post](https://deliciousbrains.com/wp-offload-media-2-6-released/?utm_campaign=changelogs&utm_source=wordpress.org&utm_medium=free%2Bplugin%2Blisting) -* New: WP Offload Media is now compatible with WordPress 5.9 and Full Site Editing -* Improvement: Offloaded thumbnail sizes are now tracked for better handling of changes to registered sizes -* Improvement: Offloads and other storage provider actions are faster -* Bug fix: URL rewriting now works in the Full Site Editor -* Bug fix: Offloaded images are now shown when re-editing a Block Template or Template Part -* Bug fix: URL rewriting now works for Widgets migrated to a Widget Sidebar Block -* Bug fix: Objects are no longer left in the bucket when deleting a Media Library item with many changes to its thumbnail sizes - -### WP Offload Media Lite 2.5.5 - 2021-07-19 ### -* Bug fix: Signed GCS URLs broken when updating a post -* Bug fix: Incorrect mime type set on scaled image's bucket object when thumbnail format differs from original file's format -* Tested: WordPress 5.8 - ### WP Offload Media Lite 2.5.3 - 2021-03-03 ### * New: Added DigitalOcean region San Francisco 3 * Bug fix: Domain mapping not handled correctly when the local URL includes a port number diff --git a/assets/css/attachment.css b/assets/css/attachment.css index e2fe7253..5fca3eb7 100644 --- a/assets/css/attachment.css +++ b/assets/css/attachment.css @@ -1 +1,73 @@ -#s3-actions.postbox .inside{margin:0;padding:0}#s3-actions.postbox a,#s3-actions.postbox a:hover{text-decoration:none}#s3-actions.postbox .s3-details{padding:6px 0}#s3-actions.postbox .s3-details .misc-pub-section{clear:both;float:left;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}#s3-actions.postbox .s3-details .misc-pub-section .s3-key{float:left;width:20%;white-space:nowrap}#s3-actions.postbox .s3-details .misc-pub-section .s3-value{font-weight:bold;float:left;width:80%}#s3-actions.postbox .s3-details .misc-pub-section .s3-value .more-info{font-weight:lighter}#s3-actions.postbox .s3-details .misc-pub-section input.error{color:#a00}#s3-actions.postbox .s3-details .not-copied{color:#666}#s3-actions.postbox .s3-actions{padding:10px;clear:both;border-top:1px solid #ddd;border-bottom:1px solid #ddd;background:#f5f5f5}#s3-actions.postbox .s3-actions .copy-action{text-align:right;float:right;line-height:23px}#s3-actions.postbox .s3-actions .remove-action{line-height:28px;vertical-align:middle;text-align:left;float:left}#s3-actions.postbox .s3-actions .remove-action a.local-warning{color:#a00}#s3-actions.postbox .s3-actions .remove-action a.local-warning:hover{color:#f00} +#s3-actions.postbox .inside { + margin: 0; + padding: 0; +} + +#s3-actions.postbox a, #s3-actions.postbox a:hover { + text-decoration: none; +} + +#s3-actions.postbox .s3-details { + padding: 6px 0; +} + +#s3-actions.postbox .s3-details .misc-pub-section { + clear: both; + float: left; + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +#s3-actions.postbox .s3-details .misc-pub-section .s3-key { + float: left; + width: 20%; + white-space: nowrap; +} + +#s3-actions.postbox .s3-details .misc-pub-section .s3-value { + font-weight: bold; + float: left; + width: 80%; +} + +#s3-actions.postbox .s3-details .misc-pub-section .s3-value .more-info { + font-weight: lighter; +} + +#s3-actions.postbox .s3-details .misc-pub-section input.error { + color: #a00; +} + +#s3-actions.postbox .s3-details .not-copied { + color: #666; +} + +#s3-actions.postbox .s3-actions { + padding: 10px; + clear: both; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + background: #f5f5f5; +} + +#s3-actions.postbox .s3-actions .copy-action { + text-align: right; + float: right; + line-height: 23px; +} + +#s3-actions.postbox .s3-actions .remove-action { + line-height: 28px; + vertical-align: middle; + text-align: left; + float: left; +} + +#s3-actions.postbox .s3-actions .remove-action a.local-warning { + color: #a00; +} + +#s3-actions.postbox .s3-actions .remove-action a.local-warning:hover { + color: #f00; +} \ No newline at end of file diff --git a/assets/css/attachment.min.css b/assets/css/attachment.min.css new file mode 100644 index 00000000..f935b5d2 --- /dev/null +++ b/assets/css/attachment.min.css @@ -0,0 +1 @@ +#s3-actions.postbox .inside{margin:0;padding:0}#s3-actions.postbox a,#s3-actions.postbox a:hover{text-decoration:none}#s3-actions.postbox .s3-details{padding:6px 0}#s3-actions.postbox .s3-details .misc-pub-section{clear:both;float:left;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}#s3-actions.postbox .s3-details .misc-pub-section .s3-key{float:left;width:20%;white-space:nowrap}#s3-actions.postbox .s3-details .misc-pub-section .s3-value{font-weight:700;float:left;width:80%}#s3-actions.postbox .s3-details .misc-pub-section .s3-value .more-info{font-weight:lighter}#s3-actions.postbox .s3-details .misc-pub-section input.error{color:#a00}#s3-actions.postbox .s3-details .not-copied{color:#666}#s3-actions.postbox .s3-actions{padding:10px;clear:both;border-top:1px solid #ddd;border-bottom:1px solid #ddd;background:#f5f5f5}#s3-actions.postbox .s3-actions .copy-action{text-align:right;float:right;line-height:23px}#s3-actions.postbox .s3-actions .remove-action{line-height:28px;vertical-align:middle;text-align:left;float:left}#s3-actions.postbox .s3-actions .remove-action a.local-warning{color:#a00}#s3-actions.postbox .s3-actions .remove-action a.local-warning:hover{color:red} \ No newline at end of file diff --git a/assets/css/delivery-provider.css b/assets/css/delivery-provider.css deleted file mode 100644 index 7fe9b9b1..00000000 --- a/assets/css/delivery-provider.css +++ /dev/null @@ -1 +0,0 @@ -.as3cf-delivery-provider-select .as3cf-delivery-provider-select-options{margin-bottom:30px}.as3cf-delivery-provider-select .as3cf-delivery-provider-select-options .as3cf-delivery-provider-sub-option{margin-left:25px}.as3cf-delivery-provider-select .as3cf-delivery-provider-select-options .as3cf-delivery-provider-sub-option .as3cf-setting{display:none;margin-left:25px}.as3cf-delivery-provider-select .as3cf-delivery-provider-select-options .as3cf-delivery-provider-sub-option.selected .as3cf-setting{display:block}.as3cf-delivery-provider-select .as3cf-delivery-provider-select-options .as3cf-delivery-provider-sub-option-container>.as3cf-delivery-provider-sub-option{display:none}.as3cf-delivery-provider-select .as3cf-delivery-provider-select-options .as3cf-delivery-provider-sub-option-container.selected>.as3cf-delivery-provider-sub-option{display:block} diff --git a/assets/css/flexboxgrid.css b/assets/css/flexboxgrid.css new file mode 100644 index 00000000..9bb6e1c9 --- /dev/null +++ b/assets/css/flexboxgrid.css @@ -0,0 +1,894 @@ +/* Uncomment and set these variables to customize the grid. */ + +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-right: 2rem; + padding-left: 2rem; +} + +.row { + box-sizing: border-box; + display: -ms-flexbox; + display: -webkit-box; + display: flex; + -ms-flex: 0 1 auto; + -webkit-box-flex: 0; + flex: 0 1 auto; + -ms-flex-direction: row; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + flex-direction: row; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -1rem; + margin-left: -1rem; +} + +.row.reverse { + -ms-flex-direction: row-reverse; + -webkit-box-orient: horizontal; + -webkit-box-direction: reverse; + flex-direction: row-reverse; +} + +.col.reverse { + -ms-flex-direction: column-reverse; + -webkit-box-orient: vertical; + -webkit-box-direction: reverse; + flex-direction: column-reverse; +} + +.col-xs, +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12 { + box-sizing: border-box; + -ms-flex: 0 0 auto; + -webkit-box-flex: 0; + flex: 0 0 auto; + padding-right: 1rem; + padding-left: 1rem; +} + +.col-xs { + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + -webkit-box-flex: 1; + flex-grow: 1; + -ms-flex-preferred-size: 0; + flex-basis: 0; + max-width: 100%; +} + +.col-xs-1 { + -ms-flex-preferred-size: 8.333%; + flex-basis: 8.333%; + max-width: 8.333%; +} + +.col-xs-2 { + -ms-flex-preferred-size: 16.667%; + flex-basis: 16.667%; + max-width: 16.667%; +} + +.col-xs-3 { + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; +} + +.col-xs-4 { + -ms-flex-preferred-size: 33.333%; + flex-basis: 33.333%; + max-width: 33.333%; +} + +.col-xs-5 { + -ms-flex-preferred-size: 41.667%; + flex-basis: 41.667%; + max-width: 41.667%; +} + +.col-xs-6 { + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + max-width: 50%; +} + +.col-xs-7 { + -ms-flex-preferred-size: 58.333%; + flex-basis: 58.333%; + max-width: 58.333%; +} + +.col-xs-8 { + -ms-flex-preferred-size: 66.667%; + flex-basis: 66.667%; + max-width: 66.667%; +} + +.col-xs-9 { + -ms-flex-preferred-size: 75%; + flex-basis: 75%; + max-width: 75%; +} + +.col-xs-10 { + -ms-flex-preferred-size: 83.333%; + flex-basis: 83.333%; + max-width: 83.333%; +} + +.col-xs-11 { + -ms-flex-preferred-size: 91.667%; + flex-basis: 91.667%; + max-width: 91.667%; +} + +.col-xs-12 { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; +} + +.col-xs-offset-1 { + margin-left: 8.333%; +} + +.col-xs-offset-2 { + margin-left: 16.667%; +} + +.col-xs-offset-3 { + margin-left: 25%; +} + +.col-xs-offset-4 { + margin-left: 33.333%; +} + +.col-xs-offset-5 { + margin-left: 41.667%; +} + +.col-xs-offset-6 { + margin-left: 50%; +} + +.col-xs-offset-7 { + margin-left: 58.333%; +} + +.col-xs-offset-8 { + margin-left: 66.667%; +} + +.col-xs-offset-9 { + margin-left: 75%; +} + +.col-xs-offset-10 { + margin-left: 83.333%; +} + +.col-xs-offset-11 { + margin-left: 91.667%; +} + +.start-xs { + -ms-flex-pack: start; + -webkit-box-pack: start; + justify-content: flex-start; + text-align: start; +} + +.center-xs { + -ms-flex-pack: center; + -webkit-box-pack: center; + justify-content: center; + text-align: center; +} + +.end-xs { + -ms-flex-pack: end; + -webkit-box-pack: end; + justify-content: flex-end; + text-align: end; +} + +.top-xs { + -ms-flex-align: start; + -webkit-box-align: start; + align-items: flex-start; +} + +.middle-xs { + -ms-flex-align: center; + -webkit-box-align: center; + align-items: center; +} + +.bottom-xs { + -ms-flex-align: end; + -webkit-box-align: end; + align-items: flex-end; +} + +.around-xs { + -ms-flex-pack: distribute; + justify-content: space-around; +} + +.between-xs { + -ms-flex-pack: justify; + -webkit-box-pack: justify; + justify-content: space-between; +} + +.first-xs { + -ms-flex-order: -1; + -webkit-box-ordinal-group: 0; + order: -1; +} + +.last-xs { + -ms-flex-order: 1; + -webkit-box-ordinal-group: 2; + order: 1; +} + +@media only screen and (min-width: 48em) { + .container { + width: 46rem; + } + + .col-sm, + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12 { + box-sizing: border-box; + -ms-flex: 0 0 auto; + -webkit-box-flex: 0; + flex: 0 0 auto; + padding-right: 1rem; + padding-left: 1rem; + } + + .col-sm { + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + -webkit-box-flex: 1; + flex-grow: 1; + -ms-flex-preferred-size: 0; + flex-basis: 0; + max-width: 100%; + } + + .col-sm-1 { + -ms-flex-preferred-size: 8.333%; + flex-basis: 8.333%; + max-width: 8.333%; + } + + .col-sm-2 { + -ms-flex-preferred-size: 16.667%; + flex-basis: 16.667%; + max-width: 16.667%; + } + + .col-sm-3 { + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + } + + .col-sm-4 { + -ms-flex-preferred-size: 33.333%; + flex-basis: 33.333%; + max-width: 33.333%; + } + + .col-sm-5 { + -ms-flex-preferred-size: 41.667%; + flex-basis: 41.667%; + max-width: 41.667%; + } + + .col-sm-6 { + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + max-width: 50%; + } + + .col-sm-7 { + -ms-flex-preferred-size: 58.333%; + flex-basis: 58.333%; + max-width: 58.333%; + } + + .col-sm-8 { + -ms-flex-preferred-size: 66.667%; + flex-basis: 66.667%; + max-width: 66.667%; + } + + .col-sm-9 { + -ms-flex-preferred-size: 75%; + flex-basis: 75%; + max-width: 75%; + } + + .col-sm-10 { + -ms-flex-preferred-size: 83.333%; + flex-basis: 83.333%; + max-width: 83.333%; + } + + .col-sm-11 { + -ms-flex-preferred-size: 91.667%; + flex-basis: 91.667%; + max-width: 91.667%; + } + + .col-sm-12 { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + } + + .col-sm-offset-1 { + margin-left: 8.333%; + } + + .col-sm-offset-2 { + margin-left: 16.667%; + } + + .col-sm-offset-3 { + margin-left: 25%; + } + + .col-sm-offset-4 { + margin-left: 33.333%; + } + + .col-sm-offset-5 { + margin-left: 41.667%; + } + + .col-sm-offset-6 { + margin-left: 50%; + } + + .col-sm-offset-7 { + margin-left: 58.333%; + } + + .col-sm-offset-8 { + margin-left: 66.667%; + } + + .col-sm-offset-9 { + margin-left: 75%; + } + + .col-sm-offset-10 { + margin-left: 83.333%; + } + + .col-sm-offset-11 { + margin-left: 91.667%; + } + + .start-sm { + -ms-flex-pack: start; + -webkit-box-pack: start; + justify-content: flex-start; + text-align: start; + } + + .center-sm { + -ms-flex-pack: center; + -webkit-box-pack: center; + justify-content: center; + text-align: center; + } + + .end-sm { + -ms-flex-pack: end; + -webkit-box-pack: end; + justify-content: flex-end; + text-align: end; + } + + .top-sm { + -ms-flex-align: start; + -webkit-box-align: start; + align-items: flex-start; + } + + .middle-sm { + -ms-flex-align: center; + -webkit-box-align: center; + align-items: center; + } + + .bottom-sm { + -ms-flex-align: end; + -webkit-box-align: end; + align-items: flex-end; + } + + .around-sm { + -ms-flex-pack: distribute; + justify-content: space-around; + } + + .between-sm { + -ms-flex-pack: justify; + -webkit-box-pack: justify; + justify-content: space-between; + } + + .first-sm { + -ms-flex-order: -1; + -webkit-box-ordinal-group: 0; + order: -1; + } + + .last-sm { + -ms-flex-order: 1; + -webkit-box-ordinal-group: 2; + order: 1; + } +} + +@media only screen and (min-width: 62em) { + .container { + width: 61rem; + } + + .col-md, + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11, + .col-md-12 { + box-sizing: border-box; + -ms-flex: 0 0 auto; + -webkit-box-flex: 0; + flex: 0 0 auto; + padding-right: 1rem; + padding-left: 1rem; + } + + .col-md { + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + -webkit-box-flex: 1; + flex-grow: 1; + -ms-flex-preferred-size: 0; + flex-basis: 0; + max-width: 100%; + } + + .col-md-1 { + -ms-flex-preferred-size: 8.333%; + flex-basis: 8.333%; + max-width: 8.333%; + } + + .col-md-2 { + -ms-flex-preferred-size: 16.667%; + flex-basis: 16.667%; + max-width: 16.667%; + } + + .col-md-3 { + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + } + + .col-md-4 { + -ms-flex-preferred-size: 33.333%; + flex-basis: 33.333%; + max-width: 33.333%; + } + + .col-md-5 { + -ms-flex-preferred-size: 41.667%; + flex-basis: 41.667%; + max-width: 41.667%; + } + + .col-md-6 { + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + max-width: 50%; + } + + .col-md-7 { + -ms-flex-preferred-size: 58.333%; + flex-basis: 58.333%; + max-width: 58.333%; + } + + .col-md-8 { + -ms-flex-preferred-size: 66.667%; + flex-basis: 66.667%; + max-width: 66.667%; + } + + .col-md-9 { + -ms-flex-preferred-size: 75%; + flex-basis: 75%; + max-width: 75%; + } + + .col-md-10 { + -ms-flex-preferred-size: 83.333%; + flex-basis: 83.333%; + max-width: 83.333%; + } + + .col-md-11 { + -ms-flex-preferred-size: 91.667%; + flex-basis: 91.667%; + max-width: 91.667%; + } + + .col-md-12 { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + } + + .col-md-offset-1 { + margin-left: 8.333%; + } + + .col-md-offset-2 { + margin-left: 16.667%; + } + + .col-md-offset-3 { + margin-left: 25%; + } + + .col-md-offset-4 { + margin-left: 33.333%; + } + + .col-md-offset-5 { + margin-left: 41.667%; + } + + .col-md-offset-6 { + margin-left: 50%; + } + + .col-md-offset-7 { + margin-left: 58.333%; + } + + .col-md-offset-8 { + margin-left: 66.667%; + } + + .col-md-offset-9 { + margin-left: 75%; + } + + .col-md-offset-10 { + margin-left: 83.333%; + } + + .col-md-offset-11 { + margin-left: 91.667%; + } + + .start-md { + -ms-flex-pack: start; + -webkit-box-pack: start; + justify-content: flex-start; + text-align: start; + } + + .center-md { + -ms-flex-pack: center; + -webkit-box-pack: center; + justify-content: center; + text-align: center; + } + + .end-md { + -ms-flex-pack: end; + -webkit-box-pack: end; + justify-content: flex-end; + text-align: end; + } + + .top-md { + -ms-flex-align: start; + -webkit-box-align: start; + align-items: flex-start; + } + + .middle-md { + -ms-flex-align: center; + -webkit-box-align: center; + align-items: center; + } + + .bottom-md { + -ms-flex-align: end; + -webkit-box-align: end; + align-items: flex-end; + } + + .around-md { + -ms-flex-pack: distribute; + justify-content: space-around; + } + + .between-md { + -ms-flex-pack: justify; + -webkit-box-pack: justify; + justify-content: space-between; + } + + .first-md { + -ms-flex-order: -1; + -webkit-box-ordinal-group: 0; + order: -1; + } + + .last-md { + -ms-flex-order: 1; + -webkit-box-ordinal-group: 2; + order: 1; + } +} + +@media only screen and (min-width: 75em) { + .container { + width: 71rem; + } + + .col-lg, + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11, + .col-lg-12 { + box-sizing: border-box; + -ms-flex: 0 0 auto; + -webkit-box-flex: 0; + flex: 0 0 auto; + padding-right: 1rem; + padding-left: 1rem; + } + + .col-lg { + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + -webkit-box-flex: 1; + flex-grow: 1; + -ms-flex-preferred-size: 0; + flex-basis: 0; + max-width: 100%; + } + + .col-lg-1 { + -ms-flex-preferred-size: 8.333%; + flex-basis: 8.333%; + max-width: 8.333%; + } + + .col-lg-2 { + -ms-flex-preferred-size: 16.667%; + flex-basis: 16.667%; + max-width: 16.667%; + } + + .col-lg-3 { + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + } + + .col-lg-4 { + -ms-flex-preferred-size: 33.333%; + flex-basis: 33.333%; + max-width: 33.333%; + } + + .col-lg-5 { + -ms-flex-preferred-size: 41.667%; + flex-basis: 41.667%; + max-width: 41.667%; + } + + .col-lg-6 { + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + max-width: 50%; + } + + .col-lg-7 { + -ms-flex-preferred-size: 58.333%; + flex-basis: 58.333%; + max-width: 58.333%; + } + + .col-lg-8 { + -ms-flex-preferred-size: 66.667%; + flex-basis: 66.667%; + max-width: 66.667%; + } + + .col-lg-9 { + -ms-flex-preferred-size: 75%; + flex-basis: 75%; + max-width: 75%; + } + + .col-lg-10 { + -ms-flex-preferred-size: 83.333%; + flex-basis: 83.333%; + max-width: 83.333%; + } + + .col-lg-11 { + -ms-flex-preferred-size: 91.667%; + flex-basis: 91.667%; + max-width: 91.667%; + } + + .col-lg-12 { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + } + + .col-lg-offset-1 { + margin-left: 8.333%; + } + + .col-lg-offset-2 { + margin-left: 16.667%; + } + + .col-lg-offset-3 { + margin-left: 25%; + } + + .col-lg-offset-4 { + margin-left: 33.333%; + } + + .col-lg-offset-5 { + margin-left: 41.667%; + } + + .col-lg-offset-6 { + margin-left: 50%; + } + + .col-lg-offset-7 { + margin-left: 58.333%; + } + + .col-lg-offset-8 { + margin-left: 66.667%; + } + + .col-lg-offset-9 { + margin-left: 75%; + } + + .col-lg-offset-10 { + margin-left: 83.333%; + } + + .col-lg-offset-11 { + margin-left: 91.667%; + } + + .start-lg { + -ms-flex-pack: start; + -webkit-box-pack: start; + justify-content: flex-start; + text-align: start; + } + + .center-lg { + -ms-flex-pack: center; + -webkit-box-pack: center; + justify-content: center; + text-align: center; + } + + .end-lg { + -ms-flex-pack: end; + -webkit-box-pack: end; + justify-content: flex-end; + text-align: end; + } + + .top-lg { + -ms-flex-align: start; + -webkit-box-align: start; + align-items: flex-start; + } + + .middle-lg { + -ms-flex-align: center; + -webkit-box-align: center; + align-items: center; + } + + .bottom-lg { + -ms-flex-align: end; + -webkit-box-align: end; + align-items: flex-end; + } + + .around-lg { + -ms-flex-pack: distribute; + justify-content: space-around; + } + + .between-lg { + -ms-flex-pack: justify; + -webkit-box-pack: justify; + justify-content: space-between; + } + + .first-lg { + -ms-flex-order: -1; + -webkit-box-ordinal-group: 0; + order: -1; + } + + .last-lg { + -ms-flex-order: 1; + -webkit-box-ordinal-group: 2; + order: 1; + } +} \ No newline at end of file diff --git a/assets/css/flexboxgrid.min.css b/assets/css/flexboxgrid.min.css new file mode 100644 index 00000000..bfeb9bf9 --- /dev/null +++ b/assets/css/flexboxgrid.min.css @@ -0,0 +1 @@ +.container-fluid{margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}.row{box-sizing:border-box;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex:0 1 auto;-webkit-box-flex:0;flex:0 1 auto;-ms-flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-1rem;margin-left:-1rem}.row.reverse{-ms-flex-direction:row-reverse;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;flex-direction:row-reverse}.col.reverse{-ms-flex-direction:column-reverse;-webkit-box-orient:vertical;-webkit-box-direction:reverse;flex-direction:column-reverse}.col-xs,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{box-sizing:border-box;-ms-flex:0 0 auto;-webkit-box-flex:0;flex:0 0 auto;padding-right:1rem;padding-left:1rem}.col-xs{-webkit-flex-grow:1;-ms-flex-positive:1;-webkit-box-flex:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col-xs-1{-ms-flex-preferred-size:8.333%;flex-basis:8.333%;max-width:8.333%}.col-xs-2{-ms-flex-preferred-size:16.667%;flex-basis:16.667%;max-width:16.667%}.col-xs-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col-xs-4{-ms-flex-preferred-size:33.333%;flex-basis:33.333%;max-width:33.333%}.col-xs-5{-ms-flex-preferred-size:41.667%;flex-basis:41.667%;max-width:41.667%}.col-xs-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col-xs-7{-ms-flex-preferred-size:58.333%;flex-basis:58.333%;max-width:58.333%}.col-xs-8{-ms-flex-preferred-size:66.667%;flex-basis:66.667%;max-width:66.667%}.col-xs-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col-xs-10{-ms-flex-preferred-size:83.333%;flex-basis:83.333%;max-width:83.333%}.col-xs-11{-ms-flex-preferred-size:91.667%;flex-basis:91.667%;max-width:91.667%}.col-xs-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col-xs-offset-1{margin-left:8.333%}.col-xs-offset-2{margin-left:16.667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.333%}.col-xs-offset-5{margin-left:41.667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.333%}.col-xs-offset-8{margin-left:66.667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.333%}.col-xs-offset-11{margin-left:91.667%}.start-xs{-ms-flex-pack:start;-webkit-box-pack:start;justify-content:flex-start;text-align:start}.center-xs{-ms-flex-pack:center;-webkit-box-pack:center;justify-content:center;text-align:center}.end-xs{-ms-flex-pack:end;-webkit-box-pack:end;justify-content:flex-end;text-align:end}.top-xs{-ms-flex-align:start;-webkit-box-align:start;align-items:flex-start}.middle-xs{-ms-flex-align:center;-webkit-box-align:center;align-items:center}.bottom-xs{-ms-flex-align:end;-webkit-box-align:end;align-items:flex-end}.around-xs{-ms-flex-pack:distribute;justify-content:space-around}.between-xs{-ms-flex-pack:justify;-webkit-box-pack:justify;justify-content:space-between}.first-xs{-ms-flex-order:-1;-webkit-box-ordinal-group:0;order:-1}.last-xs{-ms-flex-order:1;-webkit-box-ordinal-group:2;order:1}@media only screen and (min-width:48em){.container{width:46rem}.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{box-sizing:border-box;-ms-flex:0 0 auto;-webkit-box-flex:0;flex:0 0 auto;padding-right:1rem;padding-left:1rem}.col-sm{-webkit-flex-grow:1;-ms-flex-positive:1;-webkit-box-flex:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col-sm-1{-ms-flex-preferred-size:8.333%;flex-basis:8.333%;max-width:8.333%}.col-sm-2{-ms-flex-preferred-size:16.667%;flex-basis:16.667%;max-width:16.667%}.col-sm-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col-sm-4{-ms-flex-preferred-size:33.333%;flex-basis:33.333%;max-width:33.333%}.col-sm-5{-ms-flex-preferred-size:41.667%;flex-basis:41.667%;max-width:41.667%}.col-sm-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col-sm-7{-ms-flex-preferred-size:58.333%;flex-basis:58.333%;max-width:58.333%}.col-sm-8{-ms-flex-preferred-size:66.667%;flex-basis:66.667%;max-width:66.667%}.col-sm-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col-sm-10{-ms-flex-preferred-size:83.333%;flex-basis:83.333%;max-width:83.333%}.col-sm-11{-ms-flex-preferred-size:91.667%;flex-basis:91.667%;max-width:91.667%}.col-sm-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col-sm-offset-1{margin-left:8.333%}.col-sm-offset-2{margin-left:16.667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.333%}.col-sm-offset-5{margin-left:41.667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333%}.col-sm-offset-8{margin-left:66.667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.333%}.col-sm-offset-11{margin-left:91.667%}.start-sm{-ms-flex-pack:start;-webkit-box-pack:start;justify-content:flex-start;text-align:start}.center-sm{-ms-flex-pack:center;-webkit-box-pack:center;justify-content:center;text-align:center}.end-sm{-ms-flex-pack:end;-webkit-box-pack:end;justify-content:flex-end;text-align:end}.top-sm{-ms-flex-align:start;-webkit-box-align:start;align-items:flex-start}.middle-sm{-ms-flex-align:center;-webkit-box-align:center;align-items:center}.bottom-sm{-ms-flex-align:end;-webkit-box-align:end;align-items:flex-end}.around-sm{-ms-flex-pack:distribute;justify-content:space-around}.between-sm{-ms-flex-pack:justify;-webkit-box-pack:justify;justify-content:space-between}.first-sm{-ms-flex-order:-1;-webkit-box-ordinal-group:0;order:-1}.last-sm{-ms-flex-order:1;-webkit-box-ordinal-group:2;order:1}}@media only screen and (min-width:62em){.container{width:61rem}.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{box-sizing:border-box;-ms-flex:0 0 auto;-webkit-box-flex:0;flex:0 0 auto;padding-right:1rem;padding-left:1rem}.col-md{-webkit-flex-grow:1;-ms-flex-positive:1;-webkit-box-flex:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col-md-1{-ms-flex-preferred-size:8.333%;flex-basis:8.333%;max-width:8.333%}.col-md-2{-ms-flex-preferred-size:16.667%;flex-basis:16.667%;max-width:16.667%}.col-md-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col-md-4{-ms-flex-preferred-size:33.333%;flex-basis:33.333%;max-width:33.333%}.col-md-5{-ms-flex-preferred-size:41.667%;flex-basis:41.667%;max-width:41.667%}.col-md-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col-md-7{-ms-flex-preferred-size:58.333%;flex-basis:58.333%;max-width:58.333%}.col-md-8{-ms-flex-preferred-size:66.667%;flex-basis:66.667%;max-width:66.667%}.col-md-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col-md-10{-ms-flex-preferred-size:83.333%;flex-basis:83.333%;max-width:83.333%}.col-md-11{-ms-flex-preferred-size:91.667%;flex-basis:91.667%;max-width:91.667%}.col-md-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col-md-offset-1{margin-left:8.333%}.col-md-offset-2{margin-left:16.667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.333%}.col-md-offset-5{margin-left:41.667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333%}.col-md-offset-8{margin-left:66.667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.333%}.col-md-offset-11{margin-left:91.667%}.start-md{-ms-flex-pack:start;-webkit-box-pack:start;justify-content:flex-start;text-align:start}.center-md{-ms-flex-pack:center;-webkit-box-pack:center;justify-content:center;text-align:center}.end-md{-ms-flex-pack:end;-webkit-box-pack:end;justify-content:flex-end;text-align:end}.top-md{-ms-flex-align:start;-webkit-box-align:start;align-items:flex-start}.middle-md{-ms-flex-align:center;-webkit-box-align:center;align-items:center}.bottom-md{-ms-flex-align:end;-webkit-box-align:end;align-items:flex-end}.around-md{-ms-flex-pack:distribute;justify-content:space-around}.between-md{-ms-flex-pack:justify;-webkit-box-pack:justify;justify-content:space-between}.first-md{-ms-flex-order:-1;-webkit-box-ordinal-group:0;order:-1}.last-md{-ms-flex-order:1;-webkit-box-ordinal-group:2;order:1}}@media only screen and (min-width:75em){.container{width:71rem}.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{box-sizing:border-box;-ms-flex:0 0 auto;-webkit-box-flex:0;flex:0 0 auto;padding-right:1rem;padding-left:1rem}.col-lg{-webkit-flex-grow:1;-ms-flex-positive:1;-webkit-box-flex:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col-lg-1{-ms-flex-preferred-size:8.333%;flex-basis:8.333%;max-width:8.333%}.col-lg-2{-ms-flex-preferred-size:16.667%;flex-basis:16.667%;max-width:16.667%}.col-lg-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col-lg-4{-ms-flex-preferred-size:33.333%;flex-basis:33.333%;max-width:33.333%}.col-lg-5{-ms-flex-preferred-size:41.667%;flex-basis:41.667%;max-width:41.667%}.col-lg-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col-lg-7{-ms-flex-preferred-size:58.333%;flex-basis:58.333%;max-width:58.333%}.col-lg-8{-ms-flex-preferred-size:66.667%;flex-basis:66.667%;max-width:66.667%}.col-lg-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col-lg-10{-ms-flex-preferred-size:83.333%;flex-basis:83.333%;max-width:83.333%}.col-lg-11{-ms-flex-preferred-size:91.667%;flex-basis:91.667%;max-width:91.667%}.col-lg-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col-lg-offset-1{margin-left:8.333%}.col-lg-offset-2{margin-left:16.667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.333%}.col-lg-offset-5{margin-left:41.667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333%}.col-lg-offset-8{margin-left:66.667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.333%}.col-lg-offset-11{margin-left:91.667%}.start-lg{-ms-flex-pack:start;-webkit-box-pack:start;justify-content:flex-start;text-align:start}.center-lg{-ms-flex-pack:center;-webkit-box-pack:center;justify-content:center;text-align:center}.end-lg{-ms-flex-pack:end;-webkit-box-pack:end;justify-content:flex-end;text-align:end}.top-lg{-ms-flex-align:start;-webkit-box-align:start;align-items:flex-start}.middle-lg{-ms-flex-align:center;-webkit-box-align:center;align-items:center}.bottom-lg{-ms-flex-align:end;-webkit-box-align:end;align-items:flex-end}.around-lg{-ms-flex-pack:distribute;justify-content:space-around}.between-lg{-ms-flex-pack:justify;-webkit-box-pack:justify;justify-content:space-between}.first-lg{-ms-flex-order:-1;-webkit-box-ordinal-group:0;order:-1}.last-lg{-ms-flex-order:1;-webkit-box-ordinal-group:2;order:1}} \ No newline at end of file diff --git a/assets/css/media.css b/assets/css/media.css index 981ea0e6..09dffdb7 100644 --- a/assets/css/media.css +++ b/assets/css/media.css @@ -1 +1,151 @@ -body.as3cf-pro .media-toolbar-mode-select{overflow:visible}body.as3cf-pro .attachments-browser .media-toolbar-secondary{max-width:100%}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons{margin-right:10px;position:relative;display:none !important}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons.visible{display:inline-block !important}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons .button{margin:0;text-align:left}@media screen and (max-width: 782px){body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons .button{min-height:40px}}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__action-default{width:-webkit-calc(100% - 32px);width:calc(100% - 32px);position:relative;z-index:2}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__toggle{width:32px;position:relative;border-left:1px solid rgba(255,255,255,0.2);z-index:2}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__toggle:focus{-webkit-box-shadow:none;box-shadow:none}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__toggle::after{content:'';display:inline-block;width:0;height:0;vertical-align:0.255em;border-top:0.3em solid;border-right:0.3em solid transparent;border-bottom:0;border-left:0.3em solid transparent;-webkit-transition:0.2s all ease;transition:0.2s all ease}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__toggle.opened::after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__submenu{position:absolute;left:0;top:0;z-index:1;-webkit-transform:translateY(33px);-ms-transform:translateY(33px);transform:translateY(33px);border-radius:3px;overflow:hidden;-webkit-box-shadow:0 2px 5px 2px rgba(0,0,0,0.3);box-shadow:0 2px 5px 2px rgba(0,0,0,0.3)}@media screen and (max-width: 782px){body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__submenu{-webkit-transform:translateY(41px);-ms-transform:translateY(41px);transform:translateY(41px)}}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__action{display:block;width:100%;margin:0;border-radius:0;-moz-text-align-last:left;text-align-last:left;border:none;border-bottom:1px solid rgba(255,255,255,0.2)}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__action:last-child{border:none}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__action:focus{-webkit-box-shadow:none;box-shadow:none}.as3cfpro_remove a.local-warning{color:#a00}.as3cfpro_remove a.local-warning:hover{color:#f00;text-decoration:none;border:none}.media-modal a.local-warning{color:#bc0b0b}.media-modal a.local-warning:hover{color:red}.attachment-info .attachment-s3-details{font-weight:bold;margin-bottom:5px} +body.as3cf-pro .media-toolbar-mode-select { + overflow: visible; +} + +body.as3cf-pro .attachments-browser .media-toolbar-secondary { + max-width: 100%; +} + +body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons { + margin-right: 10px; + position: relative; + display: none !important; +} + +body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons.visible { + display: inline-block !important; +} + +body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons .button { + margin: 0; + text-align: left; +} + +@media screen and (max-width: 782px) { + body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons .button { + min-height: 40px; + } +} + +body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__action-default { + width: calc(100% - 32px); + position: relative; + z-index: 2; +} + +body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__toggle { + width: 32px; + position: relative; + border-left: 1px solid rgba(255, 255, 255, 0.2); + z-index: 2; +} + +body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__toggle:focus { + -webkit-box-shadow: none; + box-shadow: none; +} + +body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__toggle::after { + content: ""; + display: inline-block; + width: 0; + height: 0; + vertical-align: 0.255em; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; + -webkit-transition: 0.2s all ease; + transition: 0.2s all ease; +} + +body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__toggle.opened::after { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} + +body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__submenu { + position: absolute; + left: 0; + top: 0; + z-index: 1; + -webkit-transform: translateY(33px); + transform: translateY(33px); + border-radius: 3px; + overflow: hidden; + -webkit-box-shadow: 0 2px 5px 2px rgba(0, 0, 0, 0.3); + box-shadow: 0 2px 5px 2px rgba(0, 0, 0, 0.3); +} + +@media screen and (max-width: 782px) { + body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__submenu { + -webkit-transform: translateY(41px); + transform: translateY(41px); + } +} + +body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__action { + display: block; + width: 100%; + margin: 0; + border-radius: 0; + -moz-text-align-last: left; + text-align-last: left; + border: none; + border-bottom: 1px solid rgba(255, 255, 255, 0.2); +} + +body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__action:last-child { + border: none; +} + +body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__action:focus { + -webkit-box-shadow: none; + box-shadow: none; +} + +.as3cfpro_remove a.local-warning { + color: #a00; +} + +.as3cfpro_remove a.local-warning:hover { + color: #f00; + text-decoration: none; + border: none; +} + +.media-modal a.local-warning { + color: #bc0b0b; +} + +.media-modal a.local-warning:hover { + color: red; +} + +.attachment-info .attachment-s3-details { + font-weight: bold; + margin-bottom: 5px; +} + +.table-view-list.media th.column-as3cf_bucket { + width: 11%; +} + +.table-view-list.media th.column-as3cf_access { + width: 8%; +} + +.table-view-list.media .row-actions span.as3cf-warning:before { + background: url(../img/icon/error.svg) no-repeat; + background-size: 18px; + content: ""; + display: block; + width: 18px; + height: 18px; + margin: 1px 1px 0 -3px; + float: left; +} + +.table-view-list.media .row-actions span.as3cf-warning { + color: #50575e; +} \ No newline at end of file diff --git a/assets/css/media.min.css b/assets/css/media.min.css new file mode 100644 index 00000000..2213ef49 --- /dev/null +++ b/assets/css/media.min.css @@ -0,0 +1 @@ +body.as3cf-pro .media-toolbar-mode-select{overflow:visible}body.as3cf-pro .attachments-browser .media-toolbar-secondary{max-width:100%}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons{margin-right:10px;position:relative;display:none!important}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons.visible{display:inline-block!important}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons .button{margin:0;text-align:left}@media screen and (max-width:782px){body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons .button{min-height:40px}}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__action-default{width:calc(100% - 32px);position:relative;z-index:2}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__toggle{width:32px;position:relative;border-left:1px solid rgba(255,255,255,.2);z-index:2}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__toggle:focus{-webkit-box-shadow:none;box-shadow:none}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__toggle::after{content:"";display:inline-block;width:0;height:0;vertical-align:.255em;border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent;-webkit-transition:.2s all ease;transition:.2s all ease}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__toggle.opened::after{-webkit-transform:rotate(180deg);transform:rotate(180deg)}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__submenu{position:absolute;left:0;top:0;z-index:1;-webkit-transform:translateY(33px);transform:translateY(33px);border-radius:3px;overflow:hidden;-webkit-box-shadow:0 2px 5px 2px rgba(0,0,0,.3);box-shadow:0 2px 5px 2px rgba(0,0,0,.3)}@media screen and (max-width:782px){body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__submenu{-webkit-transform:translateY(41px);transform:translateY(41px)}}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__action{display:block;width:100%;margin:0;border-radius:0;-moz-text-align-last:left;text-align-last:left;border:none;border-bottom:1px solid rgba(255,255,255,.2)}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__action:last-child{border:none}body.as3cf-pro .attachments-browser .media-toolbar-secondary .offload-buttons__action:focus{-webkit-box-shadow:none;box-shadow:none}.as3cfpro_remove a.local-warning{color:#a00}.as3cfpro_remove a.local-warning:hover{color:red;text-decoration:none;border:none}.media-modal a.local-warning{color:#bc0b0b}.media-modal a.local-warning:hover{color:red}.attachment-info .attachment-s3-details{font-weight:700;margin-bottom:5px}.table-view-list.media th.column-as3cf_bucket{width:11%}.table-view-list.media th.column-as3cf_access{width:8%}.table-view-list.media .row-actions span.as3cf-warning:before{background:url(../img/icon/error.svg) no-repeat;background-size:18px;content:"";display:block;width:18px;height:18px;margin:1px 1px 0 -3px;float:left}.table-view-list.media .row-actions span.as3cf-warning{color:#50575e} \ No newline at end of file diff --git a/assets/css/modal.css b/assets/css/modal.css index 68f18a87..0a3977a4 100644 --- a/assets/css/modal.css +++ b/assets/css/modal.css @@ -1 +1,80 @@ -#as3cf-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background-color:rgba(0,0,0,0.5);overflow:hidden;overflow-y:auto;z-index:999999}#as3cf-modal{display:none;position:relative;width:600px;margin:100px auto;padding:30px;background-color:#eee;-webkit-box-shadow:0 0 10px rgba(0,0,0,0.5);box-shadow:0 0 10px rgba(0,0,0,0.5);font-size:14px;overflow:hidden;z-index:100000}#as3cf-modal .close-as3cf-modal{color:#999;cursor:pointer;font-family:"Times New Roman", serif;font-size:26px;font-weight:200;position:absolute;right:18px;top:18px}#as3cf-modal .close-as3cf-modal:hover{color:#666}#as3cf-modal h3{margin:0 0 20px;font-weight:normal;line-height:1}#as3cf-modal .error,#as3cf-modal .notice,#as3cf-modal .updated{margin:0 0 20px}#as3cf-modal .actions{margin:20px -30px -30px;padding:20px 30px;border-top:none;background-color:#e3e3e3;overflow:hidden}#as3cf-modal .actions .right{margin-left:15px}#as3cf-modal .actions .right:last-of-type{margin-left:0}#as3cf-modal .actions button{min-width:90px}body.as3cf-modal-open{overflow:hidden} +/** + * Modals + */ +#as3cf-overlay { + display: none; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.5); + overflow: hidden; + overflow-y: auto; + z-index: 999999; +} + +#as3cf-modal { + display: none; + position: relative; + width: 600px; + margin: 100px auto; + padding: 30px; + background-color: #eee; + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); + box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); + font-size: 14px; + overflow: hidden; + z-index: 100000; +} + +#as3cf-modal .close-as3cf-modal { + color: #999; + cursor: pointer; + font-family: "Times New Roman", serif; + font-size: 26px; + font-weight: 200; + position: absolute; + right: 18px; + top: 18px; +} + +#as3cf-modal .close-as3cf-modal:hover { + color: #666; +} + +#as3cf-modal h3 { + margin: 0 0 20px; + font-weight: normal; + line-height: 1; +} + +#as3cf-modal .error, +#as3cf-modal .notice, +#as3cf-modal .updated { + margin: 0 0 20px; +} + +#as3cf-modal .actions { + margin: 20px -30px -30px; + padding: 20px 30px; + border-top: none; + background-color: #e3e3e3; + overflow: hidden; +} + +#as3cf-modal .actions .right { + margin-left: 15px; +} + +#as3cf-modal .actions .right:last-of-type { + margin-left: 0; +} + +#as3cf-modal .actions button { + min-width: 90px; +} + +body.as3cf-modal-open { + overflow: hidden; +} \ No newline at end of file diff --git a/assets/css/modal.min.css b/assets/css/modal.min.css new file mode 100644 index 00000000..4b7a62b8 --- /dev/null +++ b/assets/css/modal.min.css @@ -0,0 +1 @@ +#as3cf-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background-color:rgba(0,0,0,.5);overflow:hidden;overflow-y:auto;z-index:999999}#as3cf-modal{display:none;position:relative;width:600px;margin:100px auto;padding:30px;background-color:#eee;-webkit-box-shadow:0 0 10px rgba(0,0,0,.5);box-shadow:0 0 10px rgba(0,0,0,.5);font-size:14px;overflow:hidden;z-index:100000}#as3cf-modal .close-as3cf-modal{color:#999;cursor:pointer;font-family:"Times New Roman",serif;font-size:26px;font-weight:200;position:absolute;right:18px;top:18px}#as3cf-modal .close-as3cf-modal:hover{color:#666}#as3cf-modal h3{margin:0 0 20px;font-weight:400;line-height:1}#as3cf-modal .error,#as3cf-modal .notice,#as3cf-modal .updated{margin:0 0 20px}#as3cf-modal .actions{margin:20px -30px -30px;padding:20px 30px;border-top:none;background-color:#e3e3e3;overflow:hidden}#as3cf-modal .actions .right{margin-left:15px}#as3cf-modal .actions .right:last-of-type{margin-left:0}#as3cf-modal .actions button{min-width:90px}body.as3cf-modal-open{overflow:hidden} \ No newline at end of file diff --git a/assets/css/normalize.css b/assets/css/normalize.css new file mode 100644 index 00000000..375c95d8 --- /dev/null +++ b/assets/css/normalize.css @@ -0,0 +1,379 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/assets/css/normalize.min.css b/assets/css/normalize.min.css new file mode 100644 index 00000000..1854c297 --- /dev/null +++ b/assets/css/normalize.min.css @@ -0,0 +1 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none} \ No newline at end of file diff --git a/assets/css/notice.css b/assets/css/notice.css index 20937cea..c8053d99 100644 --- a/assets/css/notice.css +++ b/assets/css/notice.css @@ -1 +1,14 @@ -.as3cf-notice p,.as3cf-compatibility-notice p{max-width:800px}.as3cf-licence-notice p:not(.as3cf-before):before{display:none}.as3cf-notice-warning{border-left-color:#ffba00} +/** + * Common as3cf-notice styles. + */ +.as3cf-notice p, +.as3cf-compatibility-notice p { + max-width: 800px; +} + +/** + * Prevent WP from adding the circular arrow icon to all P tags inside the notice html. + */ +.as3cf-licence-notice p:not(.as3cf-before):before { + display: none; +} \ No newline at end of file diff --git a/assets/css/notice.min.css b/assets/css/notice.min.css new file mode 100644 index 00000000..360ab7c3 --- /dev/null +++ b/assets/css/notice.min.css @@ -0,0 +1 @@ +.as3cf-compatibility-notice p,.as3cf-notice p{max-width:800px}.as3cf-licence-notice p:not(.as3cf-before):before{display:none} \ No newline at end of file diff --git a/assets/css/settings.css b/assets/css/settings.css new file mode 100644 index 00000000..4cc04573 --- /dev/null +++ b/assets/css/settings.css @@ -0,0 +1,139 @@ +.toggler.svelte-k1tgof:not(.toggleDisabled) { + cursor: pointer +} + +.panel-row.svelte-41r5oq.svelte-41r5oq { + position: relative +} + +.header.svelte-41r5oq .gradient.svelte-41r5oq { + position: absolute; + width: 144px; + left: 0; + top: 0; + bottom: 0; + transform: matrix(-1, 0, 0, 1, 0, 0); + border-top-right-radius: 5px +} + +.content.svelte-5j10or.svelte-5j10or { + padding: 1.875rem 2.25rem 1.5rem 2.25rem; + display: flex; + flex-direction: column +} + +.heading.svelte-5j10or.svelte-5j10or { + margin-top: 1rem; + font-weight: 700; + font-size: 1.125rem; + line-height: 140% +} + +.description.svelte-5j10or.svelte-5j10or { + margin-top: 1rem; + color: rgba(56, 54, 55, 0.7) +} + +.benefits.svelte-5j10or.svelte-5j10or { + margin-top: 1.7rem; + color: rgba(56, 54, 55, 0.7) +} + +.benefits.svelte-5j10or li.svelte-5j10or { + display: flex; + align-items: center +} + +.benefits.svelte-5j10or img.svelte-5j10or { + height: 40px; + margin-left: -5px; + margin-right: 10px +} + +.call-to-action.svelte-5j10or.svelte-5j10or { + margin-top: 0.7rem +} + +.call-to-action.svelte-5j10or .note.svelte-5j10or { + text-align: center +} + +#as3cf-settings.wpome div.panel.settings .header img.svelte-yact8k.svelte-yact8k { + width: var(--as3cf-settings-ctrl-width); + height: var(--as3cf-settings-ctrl-width) +} + +.provider-details.svelte-yact8k.svelte-yact8k { + display: flex; + flex-direction: column; + flex: auto; + margin-left: var(--as3cf-settings-option-indent); + z-index: 1 +} + +#as3cf-settings.wpome div.panel .provider-details.svelte-yact8k h4.svelte-yact8k { + margin-left: 0; + margin-bottom: 0.5rem +} + +#as3cf-settings.wpome div.panel .console-details.svelte-yact8k.svelte-yact8k { + display: flex; + align-items: center; + font-size: 0.75rem +} + +.console-details.svelte-yact8k .console.svelte-yact8k { + flex: 0 1 min-content; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis +} + +#as3cf-settings.wpome div.panel .console-details.svelte-yact8k a[target="_blank"].console.svelte-yact8k:after { + margin-right: 0 +} + +#as3cf-settings.wpome div.panel .console-details.svelte-yact8k .region.svelte-yact8k { + flex: 1 0 auto; + color: var(--as3cf-color-gray-500); + margin: 0 0.5rem +} + +.toggler.svelte-k1tgof:not(.toggleDisabled) { + cursor: pointer +} + +#as3cf-settings.wpome div.panel.settings .header img.svelte-54jmjg.svelte-54jmjg { + width: var(--as3cf-settings-ctrl-width); + height: var(--as3cf-settings-ctrl-width) +} + +.provider-details.svelte-54jmjg.svelte-54jmjg { + display: flex; + flex-direction: column; + flex: auto; + margin-left: var(--as3cf-settings-option-indent); + z-index: 1 +} + +#as3cf-settings.wpome div.panel .provider-details.svelte-54jmjg h4.svelte-54jmjg { + margin-left: 0; + margin-bottom: 0.5rem +} + +#as3cf-settings.wpome div.panel .console-details.svelte-54jmjg.svelte-54jmjg { + display: flex; + align-items: center; + font-size: 0.75rem +} + +.console-details.svelte-54jmjg .console.svelte-54jmjg { + flex: 0 1 min-content; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis +} + +#as3cf-settings.wpome div.panel .console-details.svelte-54jmjg a[target="_blank"].console.svelte-54jmjg:after { + margin-right: 0 +} \ No newline at end of file diff --git a/assets/css/settings.min.css b/assets/css/settings.min.css new file mode 100644 index 00000000..85a367fd --- /dev/null +++ b/assets/css/settings.min.css @@ -0,0 +1 @@ +.toggler.svelte-k1tgof:not(.toggleDisabled){cursor:pointer}.panel-row.svelte-41r5oq.svelte-41r5oq{position:relative}.header.svelte-41r5oq .gradient.svelte-41r5oq{position:absolute;width:144px;left:0;top:0;bottom:0;transform:matrix(-1,0,0,1,0,0);border-top-right-radius:5px}.content.svelte-5j10or.svelte-5j10or{padding:1.875rem 2.25rem 1.5rem 2.25rem;display:flex;flex-direction:column}.heading.svelte-5j10or.svelte-5j10or{margin-top:1rem;font-weight:700;font-size:1.125rem;line-height:140%}.description.svelte-5j10or.svelte-5j10or{margin-top:1rem;color:rgba(56,54,55,.7)}.benefits.svelte-5j10or.svelte-5j10or{margin-top:1.7rem;color:rgba(56,54,55,.7)}.benefits.svelte-5j10or li.svelte-5j10or{display:flex;align-items:center}.benefits.svelte-5j10or img.svelte-5j10or{height:40px;margin-left:-5px;margin-right:10px}.call-to-action.svelte-5j10or.svelte-5j10or{margin-top:.7rem}.call-to-action.svelte-5j10or .note.svelte-5j10or{text-align:center}#as3cf-settings.wpome div.panel.settings .header img.svelte-yact8k.svelte-yact8k{width:var(--as3cf-settings-ctrl-width);height:var(--as3cf-settings-ctrl-width)}.provider-details.svelte-yact8k.svelte-yact8k{display:flex;flex-direction:column;flex:auto;margin-left:var(--as3cf-settings-option-indent);z-index:1}#as3cf-settings.wpome div.panel .provider-details.svelte-yact8k h4.svelte-yact8k{margin-left:0;margin-bottom:.5rem}#as3cf-settings.wpome div.panel .console-details.svelte-yact8k.svelte-yact8k{display:flex;align-items:center;font-size:.75rem}.console-details.svelte-yact8k .console.svelte-yact8k{flex:0 1 min-content;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#as3cf-settings.wpome div.panel .console-details.svelte-yact8k a[target="_blank"].console.svelte-yact8k:after{margin-right:0}#as3cf-settings.wpome div.panel .console-details.svelte-yact8k .region.svelte-yact8k{flex:1 0 auto;color:var(--as3cf-color-gray-500);margin:0 .5rem}.toggler.svelte-k1tgof:not(.toggleDisabled){cursor:pointer}#as3cf-settings.wpome div.panel.settings .header img.svelte-54jmjg.svelte-54jmjg{width:var(--as3cf-settings-ctrl-width);height:var(--as3cf-settings-ctrl-width)}.provider-details.svelte-54jmjg.svelte-54jmjg{display:flex;flex-direction:column;flex:auto;margin-left:var(--as3cf-settings-option-indent);z-index:1}#as3cf-settings.wpome div.panel .provider-details.svelte-54jmjg h4.svelte-54jmjg{margin-left:0;margin-bottom:.5rem}#as3cf-settings.wpome div.panel .console-details.svelte-54jmjg.svelte-54jmjg{display:flex;align-items:center;font-size:.75rem}.console-details.svelte-54jmjg .console.svelte-54jmjg{flex:0 1 min-content;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#as3cf-settings.wpome div.panel .console-details.svelte-54jmjg a[target="_blank"].console.svelte-54jmjg:after{margin-right:0} \ No newline at end of file diff --git a/assets/css/storage-provider.css b/assets/css/storage-provider.css deleted file mode 100644 index 4d03cb5c..00000000 --- a/assets/css/storage-provider.css +++ /dev/null @@ -1 +0,0 @@ -.as3cf-provider-select h3{font-size:20px}.as3cf-provider-select table{border-collapse:collapse}.as3cf-provider-select .as3cf-provider-title{margin:0;padding:0;background:#f1f1f1}.as3cf-provider-select .as3cf-provider-title label{position:relative;display:inline-block}.as3cf-provider-select .as3cf-provider-title label:hover{cursor:pointer}.as3cf-provider-select .as3cf-provider-title .as3cf-provider-logo{color:white;padding:1em}.as3cf-provider-select .as3cf-provider-title h3{display:inline-block;position:absolute;top:50%;left:76px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-weight:bold;text-transform:none;padding:0;margin:0 15px;white-space:nowrap}.as3cf-provider-select .as3cf-provider-title.as3cf-provider-selected{cursor:default}.as3cf-provider-select .as3cf-provider-title.as3cf-provider-aws .as3cf-provider-logo{background-color:#f7a80d;border:1px solid #f7a80d}.as3cf-provider-select .as3cf-provider-title.as3cf-provider-do .as3cf-provider-logo{background-color:#0080ff;border:1px solid #0080ff}.as3cf-provider-select .as3cf-provider-title.as3cf-provider-gcp .as3cf-provider-logo{background-color:#fff;border-top:1px solid #ea4335;border-right:1px solid #4285f4;border-bottom:1px solid #34a853;border-left:1px solid #fbbc05}.as3cf-provider-select .as3cf-provider-content td{padding-bottom:10px}.as3cf-provider-select .as3cf-provider-content table{background:#e5e5e5}.as3cf-provider-select .as3cf-provider-content table th{padding:10px 0 10px 10px}.as3cf-provider-select .as3cf-provider-content table td{padding:10px}.as3cf-provider-select .as3cf-provider-content .asc3f-provider-authmethod-title label{font-weight:bold}.as3cf-provider-select .as3cf-provider-content .asc3f-provider-authmethod-content td{padding-top:0}.as3cf-provider-select .as3cf-provider-content .asc3f-provider-authmethod-content textarea{margin-top:10px}.as3cf-provider-select .as3cf-provider-content .asc3f-provider-authmethod-content textarea.clear{width:100%}.as3cf-provider-select .as3cf-provider-content .asc3f-provider-authmethod-content textarea.as3cf-define-snippet.code{white-space:pre;overflow:hidden;font-size:11px;padding:10px}.as3cf-provider-select .as3cf-provider-content .asc3f-provider-authmethod-content table.as3cf-access-keys{margin-top:10px}.as3cf-provider-select .as3cf-provider-content .asc3f-provider-authmethod-content table.as3cf-access-keys th{padding-left:0}.as3cf-provider-select .as3cf-provider-content .asc3f-provider-authmethod-content table.as3cf-access-keys input{width:100%} diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 00000000..cc7868a5 --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,3027 @@ +#as3cf-settings.wpome button, #as3cf-settings.wpome a, #as3cf-settings.wpome input { + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +#as3cf-settings.wpome button, #as3cf-settings.wpome a.button { + font-weight: 500; + border-radius: 6px; + white-space: nowrap; + min-width: 4rem; +} + +#as3cf-settings.wpome button.btn-lg, #as3cf-settings.wpome a.button.btn-lg { + font-size: 0.875rem; + padding: 0.95rem 1.2rem; + min-width: 6rem; +} + +#as3cf-settings.wpome button.btn-md, #as3cf-settings.wpome a.button.btn-md { + font-size: 0.875rem; + padding: 0.75rem 1.05rem; +} + +#as3cf-settings.wpome button.btn-sm, #as3cf-settings.wpome a.button.btn-sm { + font-size: 0.875rem; + padding: 0.55rem 0.9rem; +} + +#as3cf-settings.wpome button.btn-xs, #as3cf-settings.wpome a.button.btn-xs { + font-size: 0.7rem; + padding: 0.4rem 0.6rem; + min-width: 3rem; +} + +#as3cf-settings.wpome button.btn-primary, #as3cf-settings.wpome .btn-row button.btn-primary, #as3cf-settings.wpome a.button.btn-primary { + color: var(--as3cf-color-white); + background: var(--as3cf-color-primary-500); + border: 1px solid rgba(0, 0, 0, 0.12); +} + +#as3cf-settings.wpome button.btn-primary:hover, #as3cf-settings.wpome a.button.btn-primary:hover { + background-color: var(--as3cf-color-primary-600); +} + +#as3cf-settings.wpome button.btn-outline, #as3cf-settings.wpome .btn-row button.btn-outline, #as3cf-settings.wpome a.button.btn-outline { + color: var(--as3cf-color-primary-500); + background: none; + border: 1px solid var(--as3cf-color-primary-500); +} + +#as3cf-settings.wpome button.btn-outline:hover, #as3cf-settings.wpome a.button.btn-outline:hover { + color: var(--as3cf-color-primary-600); + background-color: var(--as3cf-color-primary-50); + border: 1px solid var(--as3cf-color-primary-600); +} + +#as3cf-settings.wpome button.btn-outline:focus, #as3cf-settings.wpome button.btn-outline:active, #as3cf-settings.wpome a.button.btn-outline:focus, #as3cf-settings.wpome a.button.btn-outline:active { + border: 1px solid var(--as3cf-color-primary-200); +} + +#as3cf-settings.wpome button.btn-primary:focus, #as3cf-settings.wpome button.btn-primary:active, #as3cf-settings.wpome button.btn-outline:focus, #as3cf-settings.wpome button.btn-outline:active, #as3cf-settings.wpome a.button.btn-primary:focus, #as3cf-settings.wpome a.button.btn-primary:active, #as3cf-settings.wpome a.button.btn-outline:focus, #as3cf-settings.wpome a.button.btn-outline:active { + -webkit-box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-primary-400); + box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-primary-400); + outline: 0; +} + +#as3cf-settings.wpome button.btn-disabled, #as3cf-settings.wpome .btn-row button.btn-disabled, #as3cf-settings.wpome a.button.btn-disabled { + color: var(--as3cf-text-disabled); + border: 1px solid var(--as3cf-color-gray-400); + opacity: 0.5; + cursor: default; +} + +#as3cf-settings.wpome button.btn-disabled.btn-primary, #as3cf-settings.wpome a.button.btn-disabled.btn-primary { + background: var(--as3cf-color-gray-300); +} + +#as3cf-settings.wpome button.btn-disabled:hover, #as3cf-settings.wpome a.button.btn-disabled:hover { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +#as3cf-settings.wpome button.btn-disabled.btn-outline:hover, #as3cf-settings.wpome a.button.btn-disabled.btn-outline:hover { + color: var(--as3cf-text-disabled); + border: 1px solid var(--as3cf-color-gray-400); +} + +#as3cf-settings.wpome a, +#as3cf-settings.wpome button { + cursor: pointer; +} + +#as3cf-settings.wpome .btn-row { + width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + margin: 2.5rem 0 2.5rem 0; +} + +#as3cf-settings.wpome .btn-row .buttons-left .btn-primary { + margin-left: 0.85rem; +} + +#as3cf-settings.wpome .btn-row .btn-outline { + margin-left: auto; +} + +#as3cf-settings.wpome .btn-row .btn-primary { + margin-left: auto; +} + +#as3cf-settings.wpome .btn-row .btn-outline + .btn-primary { + margin-left: 0.85rem; +} + +#as3cf-settings.wpome .buttons-right { + margin-left: auto; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} + +#as3cf-settings.wpome .buttons-right .pause { + margin-right: 0.7rem; +} + +#as3cf-settings.wpome .fixed-cta-block { + width: calc(100% - 160px); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + background: var(--as3cf-color-white); + -webkit-box-shadow: 0 -11px 24px 0 rgba(151, 146, 175, 0.2); + box-shadow: 0 -11px 24px 0 rgba(151, 146, 175, 0.2); + -webkit-box-sizing: border-box; + box-sizing: border-box; + z-index: 9999; + position: fixed; + bottom: 0; + left: 160px; +} + +@media screen and (max-width: 960px) { + #as3cf-settings.wpome .fixed-cta-block { + width: calc(100% - 36px); + left: 36px; + } +} + +@media screen and (max-width: 782px) { + #as3cf-settings.wpome .fixed-cta-block { + width: 100%; + left: 0; + } +} + +#as3cf-settings.wpome .fixed-cta-block .buttons { + margin: 0; + padding: 1rem 2rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; + width: calc(1220px + 4rem); + max-width: calc(1220px + 4rem); + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +@media screen and (max-width: 1100px) { + #as3cf-settings.wpome .fixed-cta-block .buttons { + max-width: calc(780px + 4rem); + } +} + +@media screen and (max-width: 872px) { + #as3cf-settings.wpome .fixed-cta-block .buttons { + max-width: 100%; + } +} + +#as3cf-settings.wpome .fixed-cta-block .buttons .btn-outline { + margin-right: 1rem; +} + +#as3cf-settings.wpome .button-tab { + background: var(--as3cf-color-white); + border: 1px solid var(--as3cf-color-gray-400); + border-radius: 6px; + height: 3rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 0 1.3rem; + text-decoration: none; + margin-right: 1.5rem; + position: relative; + -webkit-transition-duration: 0.15s; + transition-duration: 0.15s; + -webkit-transition-timing-function: linear; + transition-timing-function: linear; +} + +#as3cf-settings.wpome .button-tab.active { + border: 1px solid var(--as3cf-color-primary-500); + -webkit-box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.05), 0 2px 1px 0 rgba(0, 0, 0, 0.05); + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.05), 0 2px 1px 0 rgba(0, 0, 0, 0.05); +} + +#as3cf-settings.wpome .button-tab:hover { + -webkit-box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.05), 0 2px 1px 0 rgba(0, 0, 0, 0.05); + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.05), 0 2px 1px 0 rgba(0, 0, 0, 0.05); +} + +#as3cf-settings.wpome .button-tab:focus, #as3cf-settings.wpome .button-tab:active { + -webkit-box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + outline: 0; +} + +#as3cf-settings.wpome .button-tab.btn-disabled { + cursor: default; +} + +#as3cf-settings.wpome .button-tab.btn-disabled:hover { + -webkit-box-shadow: none; + box-shadow: none; +} + +#as3cf-settings.wpome a.help { + width: 18px; + height: 18px; + min-width: 18px; + min-height: 18px; + border: none; + border-radius: 100%; +} + +#as3cf-settings.wpome a.help:hover, #as3cf-settings.wpome a.help:focus, #as3cf-settings.wpome a.help:active { + -webkit-filter: brightness(90%); + filter: brightness(90%); + -webkit-box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + outline: 0; +} + +#as3cf-settings.wpome a.help .icon.help { + width: 18px; + height: 18px; + min-width: 18px; + min-height: 18px; + border: none; + border-radius: 100%; +} + +#as3cf-settings.wpome .icon.status { + width: 16px; + height: 16px; +} + +#as3cf-settings.wpome .icon.status:hover { + -webkit-filter: brightness(90%); + filter: brightness(90%); +} + +#as3cf-settings.wpome .icon.close:hover { + -webkit-filter: brightness(90%); + filter: brightness(90%); +} + +#as3cf-settings.wpome .icon.bucket { + width: 18px; + height: 18px; + margin-right: 1.4rem; +} + +#as3cf-settings.wpome .icon.region { + width: 18px; + height: 18px; +} + +#as3cf-settings.wpome .icon.notice-icon { + width: 24px; + height: 24px; + margin-right: 0.8rem; +} + +#as3cf-settings.wpome .icon.notice-icon.assets-wizard { + margin-top: -2px; +} + +#as3cf-settings.wpome label { + font-size: 0.875rem; + color: var(--as3cf-color-gray-900); + cursor: pointer; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +#as3cf-settings.wpome .disabled > label { + cursor: default; +} + +#as3cf-settings.wpome input[type=checkbox], #as3cf-settings.wpome input[type=radio] { + all: unset; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background: var(--as3cf-color-white); + border: 1px solid var(--as3cf-color-gray-400); + width: 18px; + height: 18px; + min-width: 18px; + min-height: 18px; + margin: 0 0.85rem 0 0; + padding: 0; +} + +#as3cf-settings.wpome input[type=checkbox]:disabled, #as3cf-settings.wpome input[type=checkbox]:disabled:hover, #as3cf-settings.wpome input[type=radio]:disabled, #as3cf-settings.wpome input[type=radio]:disabled:hover { + -webkit-box-shadow: none; + box-shadow: none; +} + +#as3cf-settings.wpome input[type=checkbox]:disabled:checked, #as3cf-settings.wpome input[type=checkbox]:disabled:hover:checked, #as3cf-settings.wpome input[type=radio]:disabled:checked, #as3cf-settings.wpome input[type=radio]:disabled:hover:checked { + color: var(--as3cf-color-gray-400); + background-color: var(--as3cf-color-gray-200); + border: 1px solid var(--as3cf-color-gray-400); +} + +#as3cf-settings.wpome input[type=checkbox]:disabled:not(:checked), #as3cf-settings.wpome input[type=checkbox]:disabled:hover:not(:checked), #as3cf-settings.wpome input[type=radio]:disabled:not(:checked), #as3cf-settings.wpome input[type=radio]:disabled:hover:not(:checked) { + background-color: var(--as3cf-color-gray-100); + border: 1px solid var(--as3cf-color-gray-300); +} + +#as3cf-settings.wpome input[type=radio] { + border-radius: 100%; +} + +#as3cf-settings.wpome input[type=radio]:checked { + border: 1px solid var(--as3cf-color-secondary-700); + background: var(--as3cf-color-secondary-500) url('data:image/svg+xml;utf8,') no-repeat center; +} + +#as3cf-settings.wpome input[type=radio]:checked:disabled { + background-image: url('data:image/svg+xml;utf8,'); +} + +#as3cf-settings.wpome input[type=radio]:checked::before { + content: none; +} + +#as3cf-settings.wpome input[type=radio]:hover { + -webkit-box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + outline: 0; +} + +#as3cf-settings.wpome input[type=radio]:hover:not(:checked) { + background-color: var(--as3cf-color-secondary-50); +} + +#as3cf-settings.wpome input[type=checkbox] { + border-radius: 3px; + margin-top: -2px; +} + +#as3cf-settings.wpome input[type=checkbox]:checked { + background: var(--as3cf-color-secondary-500) url('data:image/svg+xml;utf8,') no-repeat center/75%; + border: 1px solid var(--as3cf-color-secondary-600); +} + +#as3cf-settings.wpome input[type=checkbox]:checked:disabled { + background-image: url('data:image/svg+xml;utf8,'); +} + +#as3cf-settings.wpome input[type=checkbox]:checked::before { + content: none; +} + +#as3cf-settings.wpome input[type=checkbox]:hover { + -webkit-box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + outline: 0; +} + +#as3cf-settings.wpome input[type=checkbox]:hover:not(:checked) { + background-color: var(--as3cf-color-secondary-50); +} + +#as3cf-settings.wpome .checkbox, +#as3cf-settings.wpome .radio-btn { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0.75rem; +} + +#as3cf-settings.wpome .checkbox:last-of-type, +#as3cf-settings.wpome .radio-btn:last-of-type { + margin-bottom: 0; +} + +#as3cf-settings.wpome .checkbox label { + line-height: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +#as3cf-settings.wpome input[type=text], +#as3cf-settings.wpome textarea { + background: var(--as3cf-color-white); + border: 1px solid var(--as3cf-color-gray-400); + -webkit-box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.05); + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.05); + border-radius: 8px; + padding: 0.95rem 1rem; + font-size: 0.875rem; + color: var(--as3cf-color-gray-900); + line-height: 1.2; + margin: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +#as3cf-settings.wpome input[type=text].licence-field, +#as3cf-settings.wpome textarea.licence-field { + width: 510px; + margin-right: 0.75rem !important; + letter-spacing: 0.75px; +} + +#as3cf-settings.wpome input[type=text].licence-field::-webkit-input-placeholder, #as3cf-settings.wpome textarea.licence-field::-webkit-input-placeholder { + letter-spacing: 0.25px; +} + +#as3cf-settings.wpome input[type=text].licence-field::-moz-placeholder, #as3cf-settings.wpome textarea.licence-field::-moz-placeholder { + letter-spacing: 0.25px; +} + +#as3cf-settings.wpome input[type=text].licence-field:-ms-input-placeholder, #as3cf-settings.wpome textarea.licence-field:-ms-input-placeholder { + letter-spacing: 0.25px; +} + +#as3cf-settings.wpome input[type=text].licence-field::-ms-input-placeholder, #as3cf-settings.wpome textarea.licence-field::-ms-input-placeholder { + letter-spacing: 0.25px; +} + +#as3cf-settings.wpome input[type=text].licence-field::placeholder, +#as3cf-settings.wpome textarea.licence-field::placeholder { + letter-spacing: 0.25px; +} + +#as3cf-settings.wpome textarea { + line-height: 1.3 !important; + /* Standards compliant scrollbar (future) */ + /* + scrollbar-color: var(--as3cf-secondary-color) var(--as3cf-color-white); + scrollbar-width: 12px; + */ + /* Ye olde webkit scrollbar */ +} + +#as3cf-settings.wpome textarea::-webkit-scrollbar { + width: 12px; +} + +#as3cf-settings.wpome textarea::-webkit-scrollbar-track { + background: var(--as3cf-color-white); + border-radius: 6px; +} + +#as3cf-settings.wpome textarea::-webkit-scrollbar-corner { + background-color: var(--as3cf-color-white); + border-radius: 6px; +} + +#as3cf-settings.wpome textarea::-webkit-resizer { + background-color: var(--as3cf-color-white); + border-radius: 6px; +} + +#as3cf-settings.wpome textarea::-webkit-scrollbar-thumb { + background-color: var(--as3cf-secondary-color); + border: 1px solid var(--as3cf-color-white); + border-radius: 5px; +} + +#as3cf-settings.wpome select { + all: unset; + background: var(--as3cf-color-white) url(../img/icon/arrow.svg) no-repeat calc(100% - 18px) 50%; + border: 1px solid var(--as3cf-color-gray-400); + -webkit-box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.05); + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.05); + border-radius: 8px; + padding: 0 1rem !important; + font-size: 0.875rem !important; + color: var(--as3cf-color-gray-900); + line-height: 1.2 !important; + margin: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 46px !important; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +#as3cf-settings.wpome input::-webkit-input-placeholder, #as3cf-settings.wpome textarea::-webkit-input-placeholder, #as3cf-settings.wpome select::-webkit-input-placeholder { + color: var(--as3cf-color-gray-500); +} + +#as3cf-settings.wpome input::-moz-placeholder, #as3cf-settings.wpome textarea::-moz-placeholder, #as3cf-settings.wpome select::-moz-placeholder { + color: var(--as3cf-color-gray-500); +} + +#as3cf-settings.wpome input:-ms-input-placeholder, #as3cf-settings.wpome textarea:-ms-input-placeholder, #as3cf-settings.wpome select:-ms-input-placeholder { + color: var(--as3cf-color-gray-500); +} + +#as3cf-settings.wpome input::-ms-input-placeholder, #as3cf-settings.wpome textarea::-ms-input-placeholder, #as3cf-settings.wpome select::-ms-input-placeholder { + color: var(--as3cf-color-gray-500); +} + +#as3cf-settings.wpome input::placeholder, #as3cf-settings.wpome textarea::placeholder, #as3cf-settings.wpome select::placeholder { + color: var(--as3cf-color-gray-500); +} + +#as3cf-settings.wpome input:hover, #as3cf-settings.wpome textarea:hover, #as3cf-settings.wpome select:hover { + border: 1px solid var(--as3cf-color-gray-500); +} + +#as3cf-settings.wpome input:focus, #as3cf-settings.wpome input:active, #as3cf-settings.wpome textarea:focus, #as3cf-settings.wpome textarea:active, #as3cf-settings.wpome select:focus, #as3cf-settings.wpome select:active { + -webkit-box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + outline: 0; +} + +#as3cf-settings.wpome input:disabled, #as3cf-settings.wpome textarea:disabled, #as3cf-settings.wpome select:disabled { + cursor: default; +} + +#as3cf-settings.wpome input.disabled, #as3cf-settings.wpome textarea.disabled, #as3cf-settings.wpome select.disabled { + color: var(--as3cf-color-gray-500); + background-color: var(--as3cf-color-gray-100); + border: 1px solid var(--as3cf-color-gray-300); + cursor: default; +} + +#as3cf-settings.wpome .input-label { + font-size: 0.78125rem; + color: var(--as3cf-color-gray-500); + margin-bottom: 0.5rem; + font-weight: 400; + text-transform: uppercase; + letter-spacing: 0.3px; +} + +#as3cf-settings.wpome .input-error { + color: var(--as3cf-wordpress-notice-error-color); + font-weight: 400; +} + +#as3cf-settings.wpome .panel div.setting .input-error { + margin-left: 5rem; + margin-right: 1.5rem; + margin-bottom: 1rem; +} + +#as3cf-settings.wpome .toggle-switch { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +#as3cf-settings.wpome .toggle-switch input[type=checkbox] { + all: unset; + height: 0; + width: 0; + border: none !important; +} + +#as3cf-settings.wpome .toggle-switch label { + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + text-indent: -9999px; + width: 36px; + height: 20px; + background: var(--as3cf-color-gray-400); + border: none; + border-radius: 100px; + display: block; + position: relative; +} + +#as3cf-settings.wpome .toggle-switch label:after { + content: ""; + position: absolute; + top: 2px; + left: 2px; + width: 16px; + height: 16px; + background: var(--as3cf-color-white); + border-radius: 100%; + -webkit-transition: 0.3s; + transition: 0.3s; + -webkit-box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.06), 0 1px 2px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.06), 0 1px 2px 0 rgba(0, 0, 0, 0.1); +} + +#as3cf-settings.wpome .toggle-switch input:checked + label { + background: var(--as3cf-complete-color); + -webkit-transition: 0.3s; + transition: 0.3s; +} + +#as3cf-settings.wpome .toggle-switch input:checked + label:after { + left: calc(100% - 2px); + -webkit-transform: translateX(-100%); + transform: translateX(-100%); +} + +#as3cf-settings.wpome .toggle-switch label:active:after { + width: 26px; +} + +#as3cf-settings.wpome .toggle-switch input:focus + label, #as3cf-settings.wpome .toggle-switch input:active + label { + border: none; + -webkit-box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + outline: 0; +} + +#as3cf-settings.wpome .toggle-switch input:disabled + label { + cursor: default; + background: var(--as3cf-color-gray-300); +} + +#as3cf-settings.wpome .toggle-switch input:disabled + label:after { + background: var(--as3cf-color-gray-100); +} + +#as3cf-settings.wpome > .header { + padding: 0 2rem; + background-color: #FFE4CD; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + height: 96px; +} + +#as3cf-settings.wpome > .header .header-wrapper { + width: 1110px; + max-width: 1110px; + height: 100%; + background-image: url("../img/brand/ome-branding-transparent.svg"); + background-repeat: no-repeat; + background-size: contain; + background-position: center top; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +#as3cf-settings.wpome > .header .header-wrapper h1 { + font-size: 1.3125rem; + font-weight: 500; + color: #490D32; +} + +#as3cf-settings.wpome > .header .header-wrapper .medallion { + -webkit-filter: drop-shadow(0px 1px 4px rgba(0, 0, 0, 0.15)); + filter: drop-shadow(0px 1px 4px rgba(0, 0, 0, 0.15)); + margin-right: 1rem; + width: 52px; + height: 52px; +} + +#as3cf-settings.wpome > .header .header-wrapper .licence { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin-left: auto; +} + +#as3cf-settings.wpome > .header .header-wrapper .licence .licence-type { + color: #EB422D; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; +} + +#as3cf-settings.wpome > .header .header-wrapper .licence .licence-type a { + font-size: 0.825rem; + font-weight: 500; + margin-left: 0.6rem; + text-decoration: underline; + color: var(--as3cf-color-primary-500) !important; +} + +#as3cf-settings.wpome > .header .header-wrapper .licence .licence-type a:hover { + -webkit-filter: brightness(105%); + filter: brightness(105%); +} + +#as3cf-settings.wpome > .header .header-wrapper .licence p { + font-size: 0.8125rem; + color: #4D443D; + margin: 0.5rem 0 0; +} + +#as3cf-settings.wpome > .header .header-wrapper button, #as3cf-settings.wpome > .header .header-wrapper a.button { + text-transform: uppercase; +} + +#as3cf-settings.wpome div.nav { + width: 100%; + margin: 0 auto 2.5rem 0; + background: var(--as3cf-color-white); + border-bottom: 1px solid var(--as3cf-wordpress-border-color); +} + +#as3cf-settings.wpome div.nav div.items { + max-width: 1220px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: baseline; + -ms-flex-align: baseline; + align-items: baseline; + padding: 0 2rem; +} + +#as3cf-settings.wpome div.nav div.items ul.nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: baseline; + -ms-flex-align: baseline; + align-items: baseline; + margin: 0; + padding: 1.5rem 2rem 0 0; + font-size: 0.75rem; + font-weight: 500; + text-transform: uppercase; +} + +#as3cf-settings.wpome div.nav div.items ul.nav li { + margin-right: 1.75rem; + padding: 0.6rem 0.2rem 0.65rem; + border-bottom: 3px solid #fff; +} + +#as3cf-settings.wpome div.nav div.items ul.nav li a { + color: var(--as3cf-color-gray-600); + text-decoration: none; +} + +#as3cf-settings.wpome div.nav div.items ul.nav li a:hover { + color: var(--as3cf-color-primary-600); +} + +#as3cf-settings.wpome div.nav div.items ul.nav li a:focus { + color: var(--as3cf-color-primary-600); + -webkit-box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-primary-400); + box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-primary-400); + border-radius: 3px; + outline: none; +} + +#as3cf-settings.wpome div.nav div.items ul.nav li.focus, #as3cf-settings.wpome div.nav div.items ul.nav li.hover { + border-bottom: 3px solid var(--as3cf-color-gray-600); +} + +#as3cf-settings.wpome div.nav div.items ul.nav li.active { + border-bottom: 3px solid var(--as3cf-color-primary-500); +} + +#as3cf-settings.wpome div.nav div.items ul.nav li.active a { + color: var(--as3cf-active-nav-color); +} + +#as3cf-settings.wpome .subnav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + border-bottom: 1px solid var(--as3cf-wordpress-border-color); + padding: 0; + -webkit-box-align: baseline; + -ms-flex-align: baseline; + align-items: baseline; + margin: 0 0 3rem; +} + +#as3cf-settings.wpome .subnav.subpage { + display: none; +} + +@media (max-width: 1100px) { + #as3cf-settings.wpome .subnav.subpage { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + } +} + +#as3cf-settings.wpome .subnav li { + font-size: 0.875rem; + font-weight: 500; + padding-bottom: 1rem; + margin: 0 2rem 0 0; +} + +#as3cf-settings.wpome .subnav li.step-arrow { + all: unset; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-item-align: start; + align-self: flex-start; + margin: 0 2rem 0 0; +} + +#as3cf-settings.wpome .subnav li a { + color: var(--as3cf-color-gray-600); + text-decoration: none; +} + +#as3cf-settings.wpome .subnav li a:hover { + color: var(--as3cf-color-primary-600); +} + +#as3cf-settings.wpome .subnav li a:focus { + color: var(--as3cf-color-primary-600); + -webkit-box-shadow: 0 0 0 1.5px var(--as3cf-wordpress-background-color), 0 0 0 3.5px var(--as3cf-color-primary-400); + box-shadow: 0 0 0 1.5px var(--as3cf-wordpress-background-color), 0 0 0 3.5px var(--as3cf-color-primary-400); + border-radius: 3px; + outline: none; +} + +#as3cf-settings.wpome .subnav li.focus, #as3cf-settings.wpome .subnav li.hover { + border-bottom: 3px solid var(--as3cf-color-gray-600); +} + +#as3cf-settings.wpome .subnav li.active { + border-bottom: 3px solid var(--as3cf-color-primary-500); +} + +#as3cf-settings.wpome .subnav li.active a { + color: var(--as3cf-active-nav-color); +} + +#as3cf-settings.wpome .lite-wrapper .subnav { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; +} + +#as3cf-settings.wpomepro > .header .header-wrapper { + width: 1220px; + max-width: 1220px; +} + +#as3cf-settings #global-animation-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-left: auto; + cursor: pointer; + text-decoration: none; +} + +#as3cf-settings #global-animation-wrapper:focus { + -webkit-box-shadow: none; + box-shadow: none; + outline: none; +} + +#as3cf-settings #global-animation-wrapper #animation-running { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: baseline; + -ms-flex-align: baseline; + align-items: baseline; +} + +#as3cf-settings #global-animation-wrapper #animation-running .percentage { + margin-right: 58px; + margin-top: -0.7rem; + text-transform: none; + font-size: 1.2rem; + color: var(--as3cf-color-gray-900); + font-weight: 500; + text-align: right; +} + +#as3cf-settings #global-animation-wrapper #animation-running span { + font-size: 0.85rem; +} + +#as3cf-settings #global-animation-wrapper #animation-running img { + position: absolute; + right: 0; + top: -30px; + height: 42px; +} + +#as3cf-settings #global-animation-wrapper #animation-complete { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-top: -1.4rem; +} + +#as3cf-settings #global-animation-wrapper #animation-complete p { + margin-right: 15px; + font-size: 0.8rem; + text-transform: none; + line-height: 1; +} + +#as3cf-settings #global-animation-wrapper #animation-complete p.success { + font-weight: 400; + text-decoration: none; + color: var(--as3cf-color-gray-500); +} + +#as3cf-settings #global-animation-wrapper #animation-complete p.error { + font-weight: 500; + color: var(--as3cf-notice-error-color); + text-decoration: underline; +} + +#as3cf-settings #global-animation-wrapper #animation-complete img { + width: 19px; +} + +#as3cf-settings.wpome .notifications.wrapper { + margin: 0 0 2rem 0; +} + +#as3cf-settings.wpome .notification { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + margin: 0 0 0.5rem 0; + -webkit-box-shadow: 0 2px 8px -5px rgba(50, 50, 93, 0.25), 0px 8px 5px -12px rgba(0, 0, 0, 0.3); + box-shadow: 0 2px 8px -5px rgba(50, 50, 93, 0.25), 0px 8px 5px -12px rgba(0, 0, 0, 0.3); + border-radius: 8px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + /* Probably redundant now, but keeping until verified post 3.0 release. */ +} + +#as3cf-settings.wpome .notification .content { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 10px 14px 10px 12px; + margin: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + gap: 14px; +} + +#as3cf-settings.wpome .notification .content div.icon.type { + margin: 0; + padding: 0; + width: 28px; + height: 28px; + border-radius: 6px; + -webkit-box-flex: 0; + -ms-flex: 0 0 28px; + flex: 0 0 28px; + -ms-flex-item-align: start; + align-self: flex-start; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} + +#as3cf-settings.wpome .notification .content div.icon.type img.icon.type { + width: 16px; + height: 16px; +} + +#as3cf-settings.wpome .notification .content h3 { + margin: 0 0.5rem 0.5rem 0; + font-size: 0.8125rem; + line-height: 1.3rem; + font-weight: 600; + color: var(--as3cf-color-gray-900); +} + +#as3cf-settings.wpome .notification .content p { + margin: 0 0.5rem 0.5rem 0; + font-size: 0.8125rem; + line-height: 1.3rem; + color: var(--as3cf-color-gray-900); +} + +#as3cf-settings.wpome .notification .content p li { + list-style: disc; +} + +#as3cf-settings.wpome .notification .content p:last-of-type { + margin-bottom: 0; +} + +#as3cf-settings.wpome .notification .content code { + padding: 0.05rem 0.4rem; + margin: 0 0.1rem; + border-radius: 5px; + line-height: 1; +} + +#as3cf-settings.wpome .notification .content .body { + margin: 0; + padding: 0; + width: 100%; + overflow-wrap: anywhere; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +#as3cf-settings.wpome .notification .content .body .heading { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +#as3cf-settings.wpome .notification .content .body .heading p { + width: 100%; +} + +#as3cf-settings.wpome .notification .content .body .heading .close { + -webkit-box-flex: 0; + -ms-flex: 0 0 16px; + flex: 0 0 16px; + width: 16px; + height: 16px; + min-width: 16px; + min-height: 16px; + background: url(../img/icon/close.svg) no-repeat; + border: none; + border-radius: 100%; + cursor: pointer; +} + +#as3cf-settings.wpome .notification .content .body .links a { + margin-right: 0.75rem; +} + +#as3cf-settings.wpome .notification.multiline .content { + padding: 14px 14px 14px 12px; +} + +#as3cf-settings.wpome .notification.multiline .content .body .heading .close { + -ms-flex-item-align: first baseline; + align-self: first baseline; +} + +#as3cf-settings.wpome .notification.inline.multiline .content { + padding: 16px; + gap: 16px; +} + +#as3cf-settings.wpome .notification.inline.multiline .content div.icon.type { + margin-top: 4px; +} + +#as3cf-settings.wpome .notification.expandable button { + color: var(--as3cf-link-color); + background-color: rgba(17, 17, 17, 0.04); + border: 1px solid rgba(17, 17, 17, 0.08); +} + +#as3cf-settings.wpome .notification.expandable .heading { + gap: 8px; +} + +#as3cf-settings.wpome .notification.expandable .heading button.expandable { + all: unset; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 22px; + height: 22px; + min-width: 22px; + min-height: 22px; + background: rgba(17, 17, 17, 0.04) url(../img/icon/arrow.svg) no-repeat center/11px; + border: 1px solid rgba(17, 17, 17, 0.08); + border-radius: 11px; + -webkit-filter: invert(27%) sepia(84%) saturate(1886%) hue-rotate(177deg) brightness(90%) contrast(103%); + filter: invert(27%) sepia(84%) saturate(1886%) hue-rotate(177deg) brightness(90%) contrast(103%); +} + +#as3cf-settings.wpome .notification.expandable .heading button.expandable.expanded { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} + +#as3cf-settings.wpome .notification.expandable .heading button.expandable:hover, #as3cf-settings.wpome .notification.expandable .heading button.expandable:focus, #as3cf-settings.wpome .notification.expandable .heading button.expandable:active { + -webkit-filter: brightness(90%); + filter: brightness(90%); + -webkit-box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + outline: 0; +} + +#as3cf-settings.wpome .notification.expandable.expanded .details { + max-height: 14.5rem; + overflow-y: auto; + margin: 0; + padding: 0; +} + +#as3cf-settings.wpome .notification.expandable.expanded .details .item { + margin: 0; + padding: 1.5rem; + line-height: 1.4; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +#as3cf-settings.wpome .notification.expandable.expanded .details .item .summary { + margin-bottom: 0.75rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; +} + +#as3cf-settings.wpome .notification.expandable.expanded .details .item .summary .title { + width: 100%; + font-weight: 600; +} + +#as3cf-settings.wpome .notification.expandable.expanded .details .item ul.detail { + margin: 0; + padding: 0; +} + +#as3cf-settings.wpome .notification.expandable.expanded .details .item ul.detail > li { + padding: 0.3rem 0 0; + line-height: 1.4; +} + +#as3cf-settings.wpome .notification.expandable button.dismiss { + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 5px 10px; + gap: 4px; + border-radius: 6px; +} + +#as3cf-settings.wpome .notification.expandable button.dismiss:before { + content: url(../img/icon/x.svg); + width: 7.5px; +} + +#as3cf-settings.wpome .notification button:hover, #as3cf-settings.wpome .notification button:focus, #as3cf-settings.wpome .notification button:active { + -webkit-filter: brightness(90%); + filter: brightness(90%); + -webkit-box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + box-shadow: 0 0 0 1.5px var(--as3cf-color-white), 0 0 0 3.5px var(--as3cf-color-secondary-500); + outline: 0; +} + +#as3cf-settings.wpome .notification.info { + background: var(--as3cf-notice-info-background-color); + border: 1px solid var(--as3cf-notice-info-border-color); +} + +#as3cf-settings.wpome .notification.info div.icon.type { + background: var(--as3cf-notice-info-color); +} + +#as3cf-settings.wpome .notification.info.expandable.expanded .details .item { + border-top: 1px solid rgba(46, 107, 222, 0.16); +} + +#as3cf-settings.wpome .notification.success { + background: var(--as3cf-notice-success-background-color); + border: 1px solid var(--as3cf-notice-success-border-color); +} + +#as3cf-settings.wpome .notification.success div.icon.type { + background: var(--as3cf-notice-success-color); +} + +#as3cf-settings.wpome .notification.success.expandable.expanded .details .item { + border-top: 1px solid rgba(232, 99, 94, 0.16); +} + +#as3cf-settings.wpome .notification.warning { + background: var(--as3cf-notice-warning-background-color); + border: 1px solid var(--as3cf-notice-warning-border-color); +} + +#as3cf-settings.wpome .notification.warning div.icon.type { + background: var(--as3cf-notice-warning-color); +} + +#as3cf-settings.wpome .notification.warning code { + background: var(--as3cf-notice-warning-code-background-color); +} + +#as3cf-settings.wpome .notification.warning.expandable.expanded .details .item { + border-top: 1px solid rgba(99, 185, 105, 0.16); +} + +#as3cf-settings.wpome .notification.error { + background: var(--as3cf-notice-error-background-color); + border: 1px solid var(--as3cf-notice-error-border-color); +} + +#as3cf-settings.wpome .notification.error div.icon.type { + background: var(--as3cf-notice-error-color); +} + +#as3cf-settings.wpome .notification.error.expandable.expanded .details .item { + border-top: 1px solid rgba(232, 99, 94, 0.16); +} + +#as3cf-settings.wpome .notification.wordpress { + background: var(--as3cf-color-white); + border: 1px solid var(--as3cf-wordpress-border-color); +} + +#as3cf-settings.wpome .notification.wordpress.info { + border-left: 5px solid var(--as3cf-wordpress-notice-info-color); +} + +#as3cf-settings.wpome .notification.wordpress.success { + border-left: 5px solid var(--as3cf-wordpress-notice-success-color); +} + +#as3cf-settings.wpome .notification.wordpress.warning { + border-left: 5px solid var(--as3cf-wordpress-notice-warning-color); +} + +#as3cf-settings.wpome .notification.wordpress.error { + border-left: 5px solid var(--as3cf-wordpress-notice-error-color); +} + +/* + * Storage and Delivery Provider specific styles. + */ +#as3cf-settings.wpome .delivery.aws .gradient { + background: linear-gradient(225deg, rgba(255, 213, 213, 0.5) 0%, rgba(255, 213, 213, 0) 50%); +} + +#as3cf-settings.wpome .delivery.cloudflare .gradient { + background: linear-gradient(225deg, rgba(255, 221, 192, 0.5) 0%, rgba(255, 221, 192, 0) 50%); +} + +#as3cf-settings.wpome .delivery.do .gradient { + background: linear-gradient(225deg, rgba(205, 230, 255, 0.5) 0%, rgba(205, 230, 255, 0) 50%); +} + +#as3cf-settings.wpome .delivery.gcp .gradient { + background: linear-gradient(225deg, rgba(226, 226, 226, 0.5) 0%, rgba(226, 226, 226, 0) 50%); +} + +#as3cf-settings.wpome .delivery.keycdn .gradient { + background: linear-gradient(225deg, rgba(4, 122, 237, 0.16) 0%, rgba(4, 122, 237, 0) 50%); +} + +#as3cf-settings.wpome .delivery.other .gradient { + background: linear-gradient(225deg, rgba(228, 234, 241, 0.5) 0%, rgba(228, 234, 241, 0) 50%); +} + +#as3cf-settings.wpome .delivery.stackpath .gradient { + background: linear-gradient(225deg, rgba(226, 226, 226, 0.5) 0%, rgba(226, 226, 226, 0) 50%); +} + +#as3cf-settings.wpome .storage.aws .gradient { + background: linear-gradient(225deg, rgba(255, 214, 197, 0.5) 0%, rgba(255, 214, 197, 0) 50%); +} + +#as3cf-settings.wpome .storage.do .gradient { + background: linear-gradient(225deg, rgba(205, 230, 255, 0.5) 0%, rgba(205, 230, 255, 0) 50%); +} + +#as3cf-settings.wpome .storage.gcp .gradient { + background: linear-gradient(225deg, rgba(226, 226, 226, 0.5) 0%, rgba(226, 226, 226, 0) 50%); +} + +#as3cf-settings.wpome { + /** + * Misc + */ +} + +#as3cf-settings.wpome .as3cf-sidebar { + width: 292px; + min-width: 292px; + height: -webkit-max-content; + height: -moz-max-content; + height: max-content; + margin-left: 2.75rem; + margin-top: -0.5rem; +} + +#as3cf-settings.wpome .as3cf-sidebar.lite { + background: white; + border-radius: 7px; + border: 1px solid #D9E1EB; + overflow: hidden; + -webkit-box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1); +} + +#as3cf-settings.wpome .as3cf-sidebar .block { + padding: 20px; + border: 1px solid #ccc; +} + +#as3cf-settings.wpome .as3cf-sidebar .subscribe { + border-top: none; + text-align: center; + padding: 40px 20px; +} + +#as3cf-settings.wpome .as3cf-sidebar .subscribe h2 { + padding: 0; + margin: 0; + margin-bottom: 0.5em; + color: #666; + font-size: 17px; + line-height: 1.2em; + float: none; + text-transform: none; + font-weight: 500; +} + +#as3cf-settings.wpome .as3cf-sidebar .subscribe .button { + width: 100% !important; + margin: 1rem auto; + text-transform: uppercase; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + text-align: center !important; +} + +#as3cf-settings.wpome .as3cf-sidebar .subscribe p { + margin: 0; +} + +#as3cf-settings.wpome .as3cf-sidebar .subscribe .discount-applied { + color: rgba(0, 0, 0, 0.4); + font-size: 12px; + line-height: 1.4em; + margin-top: 10px; +} + +#as3cf-settings.wpome .as3cf-sidebar .credits { + border-top: 0; + background: #2E2E31; + text-align: center; + padding: 10px; +} + +#as3cf-settings.wpome .as3cf-sidebar .credits h4 { + font-size: 11px; + font-weight: normal; + color: rgba(255, 255, 255, 0.7); + margin-top: 0; + margin-bottom: 10px; +} + +#as3cf-settings.wpome .as3cf-sidebar .credits ul { + display: inline-block; + margin: 0; + padding: 0; +} + +#as3cf-settings.wpome .as3cf-sidebar .credits li { + overflow: hidden; +} + +#as3cf-settings.wpome .as3cf-sidebar .credits li:last-child { + margin-bottom: 0; +} + +#as3cf-settings.wpome .as3cf-sidebar .credits img { + display: inline-block; + vertical-align: middle; + margin-right: 8px; +} + +#as3cf-settings.wpome .as3cf-sidebar .credits span { + display: inline-block; + vertical-align: middle; + font-size: 12px; + line-height: 24px; +} + +#as3cf-settings.wpome .as3cf-sidebar .credits a { + display: block; + text-decoration: none; + color: white; + font-size: 12px; + text-align: center; +} + +#as3cf-settings.wpome .as3cf-sidebar .credits a:hover { + color: rgba(255, 255, 255, 0.7); +} + +@media screen and (max-width: 1052px) { + #as3cf-settings.wpome .as3cf-sidebar { + position: relative; + top: auto; + right: auto; + } +} + +#as3cf-settings.wpome .as3cf-active-provider, #as3cf-settings.wpome .as3cf-active-bucket { + font-weight: bold; + margin-right: 10px; +} + +#as3cf-settings.wpome .as3cf-banner { + width: 292px; + height: 156px; + display: block; + background: #f8cfae url(../img/sidebar/os3-banner.svg) left bottom/100% no-repeat; +} + +#as3cf-settings.wpome .as3cf-banner:focus { + -webkit-box-shadow: none; + box-shadow: none; +} + +#as3cf-settings.wpome .as3cf-upgrade-details { + background-color: #4e0d33; + padding: 10px 20px 20px 20px; + color: #eee; + font-size: 12.5px; + display: block; + text-decoration: none; +} + +#as3cf-settings.wpome .as3cf-upgrade-details h1 { + font-size: 27px; + color: #f8cfae; + margin: 0 0 15px 0; + padding: 0; + font-weight: 300; + line-height: 1; +} + +#as3cf-settings.wpome .as3cf-upgrade-details h2 { + font-size: 15px; + color: #F8CFAE; + margin: 0 0 30px 0; + font-weight: 600; + line-height: 20px; +} + +#as3cf-settings.wpome .as3cf-upgrade-details p { + margin: 0; +} + +#as3cf-settings.wpome .as3cf-upgrade-details a { + color: #eee; + font-weight: bold; + text-decoration: none; + font-size: 16px; + -webkit-box-shadow: none; + box-shadow: none; +} + +#as3cf-settings.wpome .as3cf-upgrade-details a:hover { + color: #fff; +} + +#as3cf-settings.wpome .as3cf-upgrade-details ul { + margin: 0 !important; + padding: 0; + list-style: none; +} + +#as3cf-settings.wpome .as3cf-upgrade-details ul li { + margin-bottom: 15px; + line-height: 18px; + padding-left: 25px; + background: url(../img/sidebar/item-checked.svg) left center no-repeat; +} + +#as3cf-settings.wpome { + /* + * Add an external link icon after any link that uses "_blank" target. + * There's a couple of classes where we don't want the icon too. + */ +} + +#as3cf-settings.wpome a, +#as3cf-settings.wpome button, +#as3cf-settings.wpome h1, +#as3cf-settings.wpome h2, +#as3cf-settings.wpome h3, +#as3cf-settings.wpome h4, +#as3cf-settings.wpome h5, +#as3cf-settings.wpome input, +#as3cf-settings.wpome li, +#as3cf-settings.wpome p, +#as3cf-settings.wpome pre, +#as3cf-settings.wpome select, +#as3cf-settings.wpome span, +#as3cf-settings.wpome textarea { + letter-spacing: 0.25px; + line-height: 1; + margin: 0; +} + +#as3cf-settings.wpome li { + list-style: none; +} + +#as3cf-settings.wpome .semibold { + font-weight: 600; +} + +#as3cf-settings.wpome .bold { + font-weight: 700; +} + +#as3cf-settings.wpome p { + font-size: 0.875rem; + color: var(--as3cf-color-gray-900); + font-weight: 400; +} + +#as3cf-settings.wpome h2 { + font-size: 1.0625rem; + color: #617385; + text-transform: uppercase; + font-weight: 400; +} + +#as3cf-settings.wpome .page-title { + margin-bottom: 3rem; +} + +#as3cf-settings.wpome a[target=_blank]:not(.help):not(.licence):not(.email):after { + -webkit-box-sizing: border-box; + box-sizing: border-box; + content: "\f504"; + display: inline-block; + font-family: "dashicons", emoji; + font-size: larger; + text-decoration: none; + vertical-align: sub; + margin-left: 0.2rem; + margin-right: -1rem; +} + +#as3cf-settings.wpome .link { + font-size: 0.8125rem; + color: #0073AA; +} + +#as3cf-settings.wpome .link:hover { + -webkit-filter: brightness(115%); + filter: brightness(115%); +} + +#as3cf-settings.wpome pre, #as3cf-settings.wpome textarea.pre { + background: var(--as3cf-code-background); + border: 1px solid #D2CFCF; + border-radius: 6px; + padding: 1rem 1.2rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + font-size: 0.8125rem; + line-height: 1.6; + color: var(--as3cf-color-white); + font-weight: 400; + margin: 0 0 1.5rem; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + overflow-y: scroll; + /* Standards compliant scrollbar (future) */ + /* + scrollbar-color: var(--as3cf-secondary-color) var(--as3cf-code-background); + scrollbar-width: 12px; + */ + /* Ye olde webkit scrollbar */ +} + +#as3cf-settings.wpome pre::-webkit-scrollbar, #as3cf-settings.wpome textarea.pre::-webkit-scrollbar { + width: 12px; +} + +#as3cf-settings.wpome pre::-webkit-scrollbar-track, #as3cf-settings.wpome textarea.pre::-webkit-scrollbar-track { + background: var(--as3cf-code-background); + border-radius: 6px; +} + +#as3cf-settings.wpome pre::-webkit-scrollbar-corner, #as3cf-settings.wpome textarea.pre::-webkit-scrollbar-corner { + background-color: var(--as3cf-code-background); + border-radius: 6px; +} + +#as3cf-settings.wpome pre::-webkit-resizer, #as3cf-settings.wpome textarea.pre::-webkit-resizer { + background-color: var(--as3cf-code-background); + border-radius: 6px; +} + +#as3cf-settings.wpome pre::-webkit-scrollbar-thumb, #as3cf-settings.wpome textarea.pre::-webkit-scrollbar-thumb { + background-color: var(--as3cf-secondary-color); + border: 1px solid var(--as3cf-code-background); + border-radius: 5px; +} + +#as3cf-settings.wpome .page-wrapper .page-title { + margin-bottom: 2.6rem; +} + +#as3cf-settings.wpome .lite-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + max-width: 1110px; +} + +@media (max-width: 1024px) { + #as3cf-settings.wpome .lite-wrapper .as3cf-sidebar { + display: none; + } +} + +#as3cf-settings.wpome .lite-wrapper .page-wrapper { + width: 840px; +} + +#as3cf-settings.wpome .lite-wrapper .page-wrapper.media { + width: 780px; + max-width: 780px; +} + +#as3cf-settings.wpome .lite-wrapper .media-page.wrapper { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; +} + +#as3cf-settings.wpome .lite-wrapper .media-page.wrapper .panel { + width: 100%; + max-width: 780px; +} + +#as3cf-settings.wpome .lite-wrapper .media-page.wrapper .delivery-settings { + margin: 0; + display: none; +} + +#as3cf-settings.wpome .lite-wrapper .media-page.wrapper .delivery-settings.active { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +#as3cf-settings.wpome .lite-wrapper .media-page.wrapper .storage-settings { + margin: 0; + display: none; +} + +#as3cf-settings.wpome .lite-wrapper .media-page.wrapper .storage-settings.active { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +#as3cf-settings.wpome .lite-wrapper .panel.url-preview { + width: 100%; + max-width: 780px; +} + +#as3cf-settings.wpome .lite-wrapper .fixed-cta-block .buttons { + width: calc(1110px + 4rem); + max-width: calc(1110px + 4rem); +} + +@media screen and (max-width: 1024px) { + #as3cf-settings.wpome .lite-wrapper .fixed-cta-block .buttons { + max-width: calc(780px + 4rem); + } +} + +#as3cf-settings.wpome .media-page.wrapper { + margin: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} + +@media (max-width: 1100px) { + #as3cf-settings.wpome .media-page.wrapper { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + } +} + +@media (max-width: 1100px) { + #as3cf-settings.wpome .media-page.wrapper .panel { + max-width: 100%; + } +} + +#as3cf-settings.wpome .media-page.wrapper .delivery-settings, +#as3cf-settings.wpome .media-page.wrapper .storage-settings { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +#as3cf-settings.wpome .media-page.wrapper .storage-settings { + margin: 0 2rem 0 0; +} + +@media (max-width: 1100px) { + #as3cf-settings.wpome .media-page.wrapper .storage-settings { + margin: 0; + display: none; + } + + #as3cf-settings.wpome .media-page.wrapper .storage-settings.active { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + } +} + +#as3cf-settings.wpome .media-page.wrapper .delivery-settings { + margin: 0 0 0 2rem; +} + +@media (max-width: 1100px) { + #as3cf-settings.wpome .media-page.wrapper .delivery-settings { + margin: 0; + display: none; + } + + #as3cf-settings.wpome .media-page.wrapper .delivery-settings.active { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + } +} + +#as3cf-settings.wpome .subpage.wrapper, #as3cf-settings.wpome .subpage.page-wrapper { + margin: 0; + max-width: 840px; +} + +#as3cf-settings.wpome .storage-page.wrapper .panel.multi .panel-container .panel-row.tab-buttons { + gap: 1.5rem; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +#as3cf-settings.wpome .storage-page.wrapper .panel.multi .panel-container .panel-row.tab-buttons .button-tab { + margin: 0; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} + +#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row { + margin-bottom: 1.25rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; +} + +#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row:last-of-type { + margin-bottom: 0; +} + +#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row .button-tab { + width: 12rem; +} + +#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row .button-tab:not(.btn-disabled):hover ~ p, #as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row .button-tab.active ~ p { + font-weight: 600; + opacity: 1; +} + +#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row p { + margin: 0; +} + +#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row .speed, +#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row .private-media { + margin-left: 1.5rem; + opacity: 0.7; + font-size: 0.8125rem; +} + +#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row .help { + margin-left: auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +#as3cf-settings.wpome .licence-page.wrapper { + margin: 0 0 2rem; + max-width: 700px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; +} + +#as3cf-settings.wpome .licence-page.wrapper.defined { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + gap: 0.5rem; +} + +#as3cf-settings.wpome .licence-page.wrapper.defined .wp-config { + margin-left: 0; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} + +#as3cf-settings.wpome .support-page.wrapper { + margin: 0; + max-width: 960px; +} + +#as3cf-settings.wpome .support-page.wrapper .columns { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} + +#as3cf-settings.wpome .support-page.wrapper .licence-type { + margin-bottom: 3rem; +} + +#as3cf-settings.wpome .support-page.wrapper .licence-type span { + font-weight: 700; + color: var(--as3cf-color-primary-500); +} + +#as3cf-settings.wpome .support-page.wrapper .lite-support { + margin-bottom: 2rem; +} + +#as3cf-settings.wpome .support-page.wrapper .lite-support p { + line-height: 1.8; + font-weight: 400; +} + +#as3cf-settings.wpome .assets-page.wrapper { + margin: 0; + max-width: 840px; +} + +#as3cf-settings.wpome .assets-page.wrapper .assets-panel { + padding: 0.45rem 0; + max-width: 640px; +} + +#as3cf-settings.wpome .assets-page.wrapper .notice { + margin-right: auto; +} + +#as3cf-settings.wpome .assets-page.wrapper .notice-qsg { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; +} + +#as3cf-settings.wpome .assets-page.wrapper .settings { + margin-bottom: 2rem; + max-width: 100%; +} + +#as3cf-settings.wpome .assets-page.wrapper .panel-row.status { + padding: 1.75rem 0 0 4rem !important; + height: -webkit-max-content; + height: -moz-max-content; + height: max-content; +} + +#as3cf-settings.wpome .assets-page.wrapper .panel-row.status img { + width: 18px; + height: 18px; +} + +#as3cf-settings.wpome .assets-page.wrapper .panel-row.status h4 { + margin-left: 0.8rem; +} + +#as3cf-settings.wpome .assets-page.wrapper .panel-row.status p { + margin: 0 !important; +} + +#as3cf-settings.wpome .assets-page.wrapper .panel-row.last-checked { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: 0.7rem 0 0 4.7rem !important; + height: -webkit-max-content; + height: -moz-max-content; + height: max-content; +} + +#as3cf-settings.wpome .assets-page.wrapper .panel-row.last-checked p { + font-size: 0.75rem; + margin: 0 !important; +} + +#as3cf-settings.wpome .assets-page.wrapper .panel-row.last-checked a { + margin-left: 1rem; + text-decoration: underline; +} + +#as3cf-settings.wpome .tools-page.wrapper { + margin: 0; + max-width: 760px; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel { + padding: 0 0 0.45rem; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.header { + height: 4.5rem !important; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.header img { + margin-right: 2rem; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.header button { + margin-left: auto; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.header .emoji-party { + font-size: 28px; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body { + padding: 1.6rem 2.6rem 1.6rem 6.1rem; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar { + margin: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .status { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + width: 100%; + -webkit-box-align: baseline; + -ms-flex-align: baseline; + align-items: baseline; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .status h4 { + font-size: 0.8125rem; + color: var(--as3cf-color-gray-900); + font-weight: 400; + margin: 0; + opacity: 80%; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .status h4 strong { + font-size: 1.0625rem; + font-weight: 600; + opacity: 100%; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .indicator, +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress { + height: 8px; + border-radius: 8px; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress { + width: 100%; + background: #E9E9EF; + margin-top: 1rem; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress.stripe.animate, +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress.stripe > .indicator.animate { + background-size: 30px 30px; + background-image: linear-gradient(135deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0.15) 25%, rgba(255, 255, 255, 0) 25%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, rgba(255, 255, 255, 0) 75%, rgba(255, 255, 255, 0) 100%); + -webkit-animation: progress 5s linear infinite; + animation: progress 5s linear infinite; +} + +@-webkit-keyframes progress { + from { + background-position: 0 0; + } + + to { + background-position: -60px -60px; + } +} + +@keyframes progress { + from { + background-position: 0 0; + } + + to { + background-position: -60px -60px; + } +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress.stripe.animate { + background-color: var(--as3cf-secondary-color); +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress .indicator { + display: block; + background-color: var(--as3cf-color-primary-500); + width: 40%; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress .indicator.running { + background-color: var(--as3cf-color-secondary-500); +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress .indicator.complete { + background-color: var(--as3cf-complete-color); + width: 100%; +} + +#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.desc { + font-size: 0.8125rem; + color: var(--as3cf-color-gray-500); + line-height: 1.65; +} + +#as3cf-settings.wpome .panel.url-preview { + max-width: 100%; +} + +#as3cf-settings.wpome .panel.url-preview .panel-row { + /* Good for Firefox & Safari, but Chrome isn't ready for this yet, experimental in v105. + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/contain#inline-size + */ + /* Required until Chrome gets contain: inline-size */ +} +#as3cf-settings.wpome .panel.url-preview .panel-row.desc p { + font-size: 0.8125rem; + color: var(--as3cf-color-gray-600); + line-height: 1.625; + margin: 1.5rem 0 0; +} +@supports (contain: inline-size) { + #as3cf-settings.wpome .panel.url-preview .panel-row.body { + contain: inline-size; + } +} +#as3cf-settings.wpome .panel.url-preview .panel-row dl { + margin: 1rem -1.5rem; + padding: 0 1.5rem 1rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + gap: 0.5rem; + overflow-x: auto; +} +#as3cf-settings.wpome .panel.url-preview .panel-row dl div { + margin: 0; + padding: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + gap: 2px; + background: #E1E5E9; + border-radius: 6px; +} +#as3cf-settings.wpome .panel.url-preview .panel-row dl div dt { + margin: 0; + padding: 0.5rem 1rem 0.375rem; + white-space: nowrap; + font-weight: 510; +} +#as3cf-settings.wpome .panel.url-preview .panel-row dl div dd { + margin: 0; + padding: 0.407rem 1rem; + white-space: nowrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-item-align: stretch; + align-self: stretch; + background: #FAFAFA; + border: 1px solid #CBD5E0; + border-radius: 6px; + font-weight: 400; + font-size: 0.75rem; +} +@supports not (contain: inline-size) { + #as3cf-settings.wpome .panel.url-preview .panel-row dl { + contain: size; + width: 100%; + height: 68px; + } +} +#as3cf-settings.wpome .panel { + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + max-width: 575px; + margin-bottom: 3rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +#as3cf-settings.wpome .panel .heading { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + gap: 0.5rem; +} +#as3cf-settings.wpome .panel h3 { + font-size: 0.9375rem; + color: var(--as3cf-color-gray-900); + font-weight: 500; + margin: 0 0 1.25rem; +} +#as3cf-settings.wpome .panel .notification.inline { + margin-left: 5rem; + margin-right: 1.5rem; +} +#as3cf-settings.wpome .panel .panel-container { + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + background: var(--as3cf-color-white); + border: 1px solid var(--as3cf-wordpress-border-color); + -webkit-box-shadow: 0 1px 8px 0 rgba(0, 0, 0, 0.05), 0 2px 1px 0 rgba(0, 0, 0, 0.03); + box-shadow: 0 1px 8px 0 rgba(0, 0, 0, 0.05), 0 2px 1px 0 rgba(0, 0, 0, 0.03); + border-radius: 6px; +} +#as3cf-settings.wpome .panel .panel-container .panel-row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 0 1.5rem; +} +#as3cf-settings.wpome .panel .panel-container .panel-row.header { + height: 6rem; + border-bottom: 1px solid var(--as3cf-separator-color); +} +#as3cf-settings.wpome .panel .panel-container .panel-row.footer { + border-top: 1px solid var(--as3cf-separator-color); +} +#as3cf-settings.wpome .panel .panel-container .panel-row h4 { + font-size: 0.875rem; + font-weight: 500; + color: var(--as3cf-color-gray-800); + margin-left: 1rem; + margin-right: auto; +} +#as3cf-settings.wpome .panel .panel-container .panel-row .link { + font-size: 0.8125rem; + text-align: right; + line-height: 1.5; + margin-left: auto; + font-weight: 500; +} +#as3cf-settings.wpome .panel .panel-container .panel-row .link + .help { + margin-left: 1rem; +} +#as3cf-settings.wpome .panel .panel-container .setting .panel-row.option { + margin-top: 1.5rem; +} +#as3cf-settings.wpome .panel .panel-container .setting .panel-row.option h4 { + margin: 0 0 0 var(--as3cf-settings-option-indent); +} +#as3cf-settings.wpome .panel .panel-container .setting .panel-row.option a { + margin-left: auto; +} +#as3cf-settings.wpome .panel .panel-container .setting .panel-row.desc { + padding-right: var(--as3cf-settings-option-indent-right); +} +#as3cf-settings.wpome .panel .panel-container .setting .panel-row.desc p { + font-size: 0.8125rem; + color: var(--as3cf-color-gray-600); + line-height: 1.625; + margin-left: calc(var(--as3cf-settings-ctrl-width) + var(--as3cf-settings-option-indent)); + margin-top: 0.57rem; + margin-bottom: 0.75rem; +} +#as3cf-settings.wpome .panel .panel-container .setting .panel-row.input { + padding-right: var(--as3cf-settings-option-indent-right); +} +#as3cf-settings.wpome .panel .panel-container .setting .panel-row.input input[type=text] { + margin-left: calc(var(--as3cf-settings-ctrl-width) + var(--as3cf-settings-option-indent)); + margin-bottom: 1.2rem; + width: 100%; +} +#as3cf-settings.wpome .panel .panel-container .setting .panel-row.input input[type=text] + label { + visibility: collapse; +} +#as3cf-settings.wpome .panel .panel-container .setting.nested { + margin: 0 0 0.125rem 5.25rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + border-left: 2px dotted #C2CBD3; +} +#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row { + height: -webkit-max-content; + height: -moz-max-content; + height: max-content; + margin-bottom: 0; +} +#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row img { + margin-left: auto; +} +#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row h4 { + margin: 0; +} +#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row.option { + margin-top: 1rem; +} +#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row.desc { + height: -webkit-max-content; + height: -moz-max-content; + height: max-content; + padding: 0.4rem 2.25rem 0.85rem 1.65rem; +} +#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row.desc p { + font-size: 0.8125rem; + color: var(--as3cf-color-gray-600); + line-height: 1.625; + margin: 0; +} +#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row.input input[type=text] { + margin-left: var(--as3cf-settings-input-indent); +} +#as3cf-settings.wpome .panel .panel-container .setting:last-of-type { + margin-bottom: 0.75rem; +} +#as3cf-settings.wpome .panel .panel-container hr { + height: 1px; + width: 100%; + border: 0; + margin: 0; + background: var(--as3cf-separator-color); +} +#as3cf-settings.wpome .panel.multi { + max-width: 840px; + margin-bottom: 2rem; +} +#as3cf-settings.wpome .panel.multi .panel-container.toggle-header .toggle-switch { + margin-right: 1.25rem; +} +#as3cf-settings.wpome .panel.multi .panel-container.toggle-header .toggle-reveal label { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; +} +#as3cf-settings.wpome .panel.multi .panel-container.toggle-header .toggle-reveal a { + margin-left: 0.3rem; + display: contents; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row { + height: auto; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row h3 { + margin: 0; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row p:last-of-type { + margin-bottom: 0; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.header { + height: 4rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.header a { + margin-left: auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.header .provider { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-left: auto; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.header .provider a { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-left: auto; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.header .provider img { + width: 24px; + height: 24px; + margin-right: 0.5rem; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.header .wp-config + .provider { + margin-left: 1rem; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body { + padding: 2.5rem; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .row { + margin: 0; + width: 100%; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .row.radio-btns { + margin-bottom: 2.2rem; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .radio-desc { + margin: -0.35rem 0 1.25rem 2rem; + font-size: 12px; + font-weight: 500; + line-height: 1.4; + opacity: 0.75; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body.access-keys > p { + margin-bottom: 1.5rem !important; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body input[type=text], +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body textarea { + width: 100%; + margin-bottom: 1.5rem; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-name, #as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .cdn-name { + width: 100%; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body p { + margin: 0 0 1.5rem; + line-height: 1.5; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body p:last-of-type { + margin-bottom: 0; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .link { + text-decoration: underline; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .button-tab img { + width: 24px; + height: 24px; + margin-right: 0.9rem; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .button-tab .checkmark { + width: 16px; + height: 16px; + position: absolute; + right: -19px; + top: -5px; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .button-tab p { + font-weight: 500; + margin-bottom: 0; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .radio-btn { + margin-bottom: 0.8rem; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .radio-btn:last-of-type { + margin-bottom: 0; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .radio-btn.list { + margin: 0 1.5rem 0 0; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list { + background: var(--as3cf-color-white); + border: 1px solid var(--as3cf-wordpress-border-color); + -webkit-box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.05); + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.05); + border-radius: 6px; + width: 100%; + max-width: 580px; + padding: 0 0.4rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + height: 260px; + overflow-y: scroll; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 0.78rem 1.4rem; + background: #F6F7F8; + border-radius: 4px; + margin: 0 0 0.3rem; + cursor: pointer; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-box-flex: 0; + -ms-flex: none; + flex: none; + /* TODO: Better styling for no buckets in browse list? */ +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row.active { + background: rgba(236, 112, 94, 0.1); + border: 1px solid var(--as3cf-color-primary-500); + border-radius: 4px; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row:first-of-type { + margin-top: 0.4rem; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row:last-of-type { + margin-bottom: 0.4rem; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row:nth-child(even) { + background: var(--as3cf-color-white); +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row p { + margin: 0; + font-size: 0.84375rem; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row .status { + margin-left: auto; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row.nothing-found { + cursor: default; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .new-bucket-details { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin-right: 1.8rem; + -webkit-box-flex: 5; + -ms-flex: 5; + flex: 5; +} +#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .region { + width: 30%; + -webkit-box-flex: 3; + -ms-flex: 3; + flex: 3; + margin-left: auto; + margin-bottom: 1.5rem; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +#as3cf-settings.wpome p.wp-config { + margin-left: auto; + padding: 0.4rem 0.75rem; + color: var(--as3cf-color-gray-500) !important; + background: rgba(113, 135, 154, 0.15) !important; + border: 1px solid rgba(113, 135, 154, 0.15) !important; + border-radius: 5px; + font-size: 0.84375rem; + font-weight: 500; + white-space: nowrap; +} +#as3cf-settings.wpome .panel .panel-container .setting .panel-row.option p.wp-config + a { + margin-left: 1rem; +} +#as3cf-settings.wpome .panel .panel-container .setting .panel-row.desc p.wp-config { + margin-right: 0; +} +#as3cf-settings.wpome .panel .panel-container .setting .panel-row label.input-label p.wp-config { + text-transform: none; + padding: 0.2rem 0.5rem; +} +#as3cf-settings.wpome .notice { + all: unset; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + background: rgba(56, 125, 189, 0.1); + border: 1px solid #AFC8ED; + border-radius: 5px; + padding: 0.8rem 1.25rem; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +#as3cf-settings.wpome .notice a, +#as3cf-settings.wpome .notice p { + margin: 0 !important; +} +#as3cf-settings.wpome .notice a { + display: inline-block; + text-decoration: underline; + font-size: 0.875rem !important; +} +#as3cf-settings.wpome .notice-qsg p a { + padding-right: 1rem; +} +#as3cf-settings.wpome .support-form { + width: 600px; +} +#as3cf-settings.wpome .support-form input[type=text], +#as3cf-settings.wpome .support-form select, +#as3cf-settings.wpome .support-form textarea { + width: 100%; + margin-bottom: 1rem; +} +#as3cf-settings.wpome .support-form textarea { + margin-bottom: 1.5rem; +} +#as3cf-settings.wpome .support-form .note { + font-size: 0.78125rem; + color: var(--as3cf-color-gray-500); + margin-bottom: 2.5rem; + line-height: 1.5; +} +#as3cf-settings.wpome .support-form .note.first { + margin-bottom: 0.5rem; +} +#as3cf-settings.wpome .support-form .actions { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 100%; + margin-bottom: 2rem; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +#as3cf-settings.wpome .support-form .actions .btn-primary { + margin-left: auto; +} +#as3cf-settings.wpome .diagnostic-info { + max-width: 600px; + padding: 0.25rem 0; +} +#as3cf-settings.wpome .diagnostic-info pre { + height: 14.375rem; + white-space: pre-wrap; + word-break: keep-all; +} +#as3cf-settings.wpome .diagnostic-info hr { + background: #D3D7DB; + height: 3px; + width: 100%; + border: 0; + margin-bottom: 3rem; +} +#as3cf-settings.wpome .diagnostic-info .btn-outline { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + margin-left: auto; + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; +} +#as3cf-settings.wpome .documentation { + background: #E4E5E7; + border: 1px solid var(--as3cf-wordpress-border-color); + -webkit-box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.05); + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.05); + border-radius: 6px; + padding: 2.5rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin: 1.4rem 0 0 3rem; + height: -webkit-max-content; + height: -moz-max-content; + height: max-content; + width: 240px; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +#as3cf-settings.wpome .documentation h3 { + font-size: 1.03125rem; + color: var(--as3cf-color-gray-900); + letter-spacing: 0.15px; + font-weight: 500; + margin: 0 0 2.25rem; +} +#as3cf-settings.wpome .documentation a { + font-size: 0.875rem; + margin-bottom: 1.25rem; +} +#as3cf-settings.wpome .documentation a:last-of-type { + margin-bottom: 0; +} +#as3cf-settings.wpome .upsell.panel { + max-width: 840px; +} +#as3cf-settings.wpome .upsell .panel-container { + padding: 0; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + background: linear-gradient(136.01deg, rgba(255, 228, 205, 0.7) 0.94%, rgb(255, 255, 255) 33.33%); +} +#as3cf-settings.wpome .upsell .branding { + background: url(../../assets/img/brand/upsell-bunny.svg) no-repeat left bottom; + min-width: 280px; + border-radius: 5px; + margin-right: -1.25rem; +} +@media (max-width: 840px) { + #as3cf-settings.wpome .upsell .branding { + display: none; + } +} +#as3cf-settings.wpome .upsell .button { + margin: 1rem auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + text-align: center !important; +} + +/* + * Our CSS variables, namespaced so they can be used anywhere. + */ +:root { + --as3cf-code-type: consolas, monospace; + --as3cf-color-white: #FFF; + --as3cf-color-black: #000; + --as3cf-color-gray-50: #FCFDFD; + --as3cf-color-gray-100: #F9FAFB; + --as3cf-color-gray-200: #F2F4F7; + --as3cf-color-gray-300: #EAECF0; + --as3cf-color-gray-400: #D0D5DD; + --as3cf-color-gray-500: #98A2B3; + --as3cf-color-gray-600: #667085; + --as3cf-color-gray-700: #344054; + --as3cf-color-gray-800: #1D2939; + --as3cf-color-gray-900: #101828; + --as3cf-color-primary-50: #FDF1EF; + --as3cf-color-primary-100: #FBE2DF; + --as3cf-color-primary-200: #F7C6BF; + --as3cf-color-primary-300: #F4A99E; + --as3cf-color-primary-400: #F08D7E; + --as3cf-color-primary-500: #EC705E; + --as3cf-color-primary-600: #C15B4C; + --as3cf-color-primary-700: #96453A; + --as3cf-color-primary-800: #6B3027; + --as3cf-color-primary-900: #401A15; + --as3cf-color-secondary-50: #EFF8FF; + --as3cf-color-secondary-100: #D1E9FF; + --as3cf-color-secondary-200: #B2DDFF; + --as3cf-color-secondary-300: #84CAFF; + --as3cf-color-secondary-400: #52B1FD; + --as3cf-color-secondary-500: #2C90FA; + --as3cf-color-secondary-600: #1270EF; + --as3cf-color-secondary-700: #155CD3; + --as3cf-color-secondary-800: #1749A9; + --as3cf-color-secondary-900: #184185; + --as3cf-secondary-color: #D8DDE2; + --as3cf-text-disabled: #98A2B3; + --as3cf-code-background: #102B44; + --as3cf-separator-color: #EBEFF3; + --as3cf-complete-color: #5BCB86; + --as3cf-active-nav-color: #4E0D34; + --as3cf-link-color: #0073AA; + --as3cf-wordpress-background-color: #F1F1F1; + --as3cf-wordpress-border-color: #D6D6D6; + --as3cf-wordpress-notice-info-color: #02A0D2; + --as3cf-notice-info-color: #2D69DA; + --as3cf-notice-info-border-color: #2E6BDE; + --as3cf-notice-info-background-color: #E7EFF9; + --as3cf-wordpress-notice-success-color: #45B450; + --as3cf-notice-success-color: #52AA59; + --as3cf-notice-success-border-color: #63B969; + --as3cf-notice-success-background-color: #EDF7EF; + --as3cf-wordpress-notice-warning-color: #FFBA00; + --as3cf-notice-warning-color: #F49C53; + --as3cf-notice-warning-border-color: #E29936; + --as3cf-notice-warning-background-color: #FDF8EB; + --as3cf-notice-warning-code-background-color: #FCECC6; + --as3cf-wordpress-notice-error-color: #DD3232; + --as3cf-notice-error-color: #DA5A39; + --as3cf-notice-error-border-color: #E8635E; + --as3cf-notice-error-background-color: #F7EEEB; + --as3cf-settings-ctrl-width: 36px; + --as3cf-settings-option-indent: 1.2rem; + --as3cf-settings-input-indent: 0; + --as3cf-settings-option-indent-right: 2.25rem; +} + +body.settings_page_amazon-s3-and-cloudfront { + background: var(--as3cf-wordpress-background-color); +} +body.settings_page_amazon-s3-and-cloudfront #wpcontent { + padding-left: 0 !important; +} +body.settings_page_amazon-s3-and-cloudfront #wpcontent #wpbody #wpbody-content > .notice { + display: none; +} +body.settings_page_amazon-s3-and-cloudfront #wpcontent #wpbody #wpbody-content .wpome .wpome-wrapper { + max-width: 1220px; + margin: 0 2rem 3rem 2rem; +} +body.settings_page_amazon-s3-and-cloudfront #wpfooter { + z-index: -2; +} + +.locked { + opacity: 0.55; +} + +.flex-row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; +} + +.flex-column { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +.align-center { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.align-center { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.align-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; +} \ No newline at end of file diff --git a/assets/css/style.min.css b/assets/css/style.min.css new file mode 100644 index 00000000..1bc65dcc --- /dev/null +++ b/assets/css/style.min.css @@ -0,0 +1 @@ +#as3cf-settings.wpome a,#as3cf-settings.wpome button,#as3cf-settings.wpome input{-webkit-transition:all .3s ease;transition:all .3s ease}#as3cf-settings.wpome a.button,#as3cf-settings.wpome button{font-weight:500;border-radius:6px;white-space:nowrap;min-width:4rem}#as3cf-settings.wpome a.button.btn-lg,#as3cf-settings.wpome button.btn-lg{font-size:.875rem;padding:.95rem 1.2rem;min-width:6rem}#as3cf-settings.wpome a.button.btn-md,#as3cf-settings.wpome button.btn-md{font-size:.875rem;padding:.75rem 1.05rem}#as3cf-settings.wpome a.button.btn-sm,#as3cf-settings.wpome button.btn-sm{font-size:.875rem;padding:.55rem .9rem}#as3cf-settings.wpome a.button.btn-xs,#as3cf-settings.wpome button.btn-xs{font-size:.7rem;padding:.4rem .6rem;min-width:3rem}#as3cf-settings.wpome .btn-row button.btn-primary,#as3cf-settings.wpome a.button.btn-primary,#as3cf-settings.wpome button.btn-primary{color:var(--as3cf-color-white);background:var(--as3cf-color-primary-500);border:1px solid rgba(0,0,0,.12)}#as3cf-settings.wpome a.button.btn-primary:hover,#as3cf-settings.wpome button.btn-primary:hover{background-color:var(--as3cf-color-primary-600)}#as3cf-settings.wpome .btn-row button.btn-outline,#as3cf-settings.wpome a.button.btn-outline,#as3cf-settings.wpome button.btn-outline{color:var(--as3cf-color-primary-500);background:0 0;border:1px solid var(--as3cf-color-primary-500)}#as3cf-settings.wpome a.button.btn-outline:hover,#as3cf-settings.wpome button.btn-outline:hover{color:var(--as3cf-color-primary-600);background-color:var(--as3cf-color-primary-50);border:1px solid var(--as3cf-color-primary-600)}#as3cf-settings.wpome a.button.btn-outline:active,#as3cf-settings.wpome a.button.btn-outline:focus,#as3cf-settings.wpome button.btn-outline:active,#as3cf-settings.wpome button.btn-outline:focus{border:1px solid var(--as3cf-color-primary-200)}#as3cf-settings.wpome a.button.btn-outline:active,#as3cf-settings.wpome a.button.btn-outline:focus,#as3cf-settings.wpome a.button.btn-primary:active,#as3cf-settings.wpome a.button.btn-primary:focus,#as3cf-settings.wpome button.btn-outline:active,#as3cf-settings.wpome button.btn-outline:focus,#as3cf-settings.wpome button.btn-primary:active,#as3cf-settings.wpome button.btn-primary:focus{-webkit-box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-primary-400);box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-primary-400);outline:0}#as3cf-settings.wpome .btn-row button.btn-disabled,#as3cf-settings.wpome a.button.btn-disabled,#as3cf-settings.wpome button.btn-disabled{color:var(--as3cf-text-disabled);border:1px solid var(--as3cf-color-gray-400);opacity:.5;cursor:default}#as3cf-settings.wpome a.button.btn-disabled.btn-primary,#as3cf-settings.wpome button.btn-disabled.btn-primary{background:var(--as3cf-color-gray-300)}#as3cf-settings.wpome a.button.btn-disabled:hover,#as3cf-settings.wpome button.btn-disabled:hover{-webkit-box-shadow:none!important;box-shadow:none!important}#as3cf-settings.wpome a.button.btn-disabled.btn-outline:hover,#as3cf-settings.wpome button.btn-disabled.btn-outline:hover{color:var(--as3cf-text-disabled);border:1px solid var(--as3cf-color-gray-400)}#as3cf-settings.wpome a,#as3cf-settings.wpome button{cursor:pointer}#as3cf-settings.wpome .btn-row{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin:2.5rem 0 2.5rem 0}#as3cf-settings.wpome .btn-row .buttons-left .btn-primary{margin-left:.85rem}#as3cf-settings.wpome .btn-row .btn-outline{margin-left:auto}#as3cf-settings.wpome .btn-row .btn-primary{margin-left:auto}#as3cf-settings.wpome .btn-row .btn-outline+.btn-primary{margin-left:.85rem}#as3cf-settings.wpome .buttons-right{margin-left:auto;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}#as3cf-settings.wpome .buttons-right .pause{margin-right:.7rem}#as3cf-settings.wpome .fixed-cta-block{width:calc(100% - 160px);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;background:var(--as3cf-color-white);-webkit-box-shadow:0 -11px 24px 0 rgba(151,146,175,.2);box-shadow:0 -11px 24px 0 rgba(151,146,175,.2);-webkit-box-sizing:border-box;box-sizing:border-box;z-index:9999;position:fixed;bottom:0;left:160px}@media screen and (max-width:960px){#as3cf-settings.wpome .fixed-cta-block{width:calc(100% - 36px);left:36px}}@media screen and (max-width:782px){#as3cf-settings.wpome .fixed-cta-block{width:100%;left:0}}#as3cf-settings.wpome .fixed-cta-block .buttons{margin:0;padding:1rem 2rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;width:calc(1220px + 4rem);max-width:calc(1220px + 4rem);-webkit-box-sizing:border-box;box-sizing:border-box}@media screen and (max-width:1100px){#as3cf-settings.wpome .fixed-cta-block .buttons{max-width:calc(780px + 4rem)}}@media screen and (max-width:872px){#as3cf-settings.wpome .fixed-cta-block .buttons{max-width:100%}}#as3cf-settings.wpome .fixed-cta-block .buttons .btn-outline{margin-right:1rem}#as3cf-settings.wpome .button-tab{background:var(--as3cf-color-white);border:1px solid var(--as3cf-color-gray-400);border-radius:6px;height:3rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 1.3rem;text-decoration:none;margin-right:1.5rem;position:relative;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:linear;transition-timing-function:linear}#as3cf-settings.wpome .button-tab.active{border:1px solid var(--as3cf-color-primary-500);-webkit-box-shadow:0 2px 8px 0 rgba(0,0,0,.05),0 2px 1px 0 rgba(0,0,0,.05);box-shadow:0 2px 8px 0 rgba(0,0,0,.05),0 2px 1px 0 rgba(0,0,0,.05)}#as3cf-settings.wpome .button-tab:hover{-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.05),0 2px 1px 0 rgba(0,0,0,.05);box-shadow:0 4px 8px 0 rgba(0,0,0,.05),0 2px 1px 0 rgba(0,0,0,.05)}#as3cf-settings.wpome .button-tab:active,#as3cf-settings.wpome .button-tab:focus{-webkit-box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);outline:0}#as3cf-settings.wpome .button-tab.btn-disabled{cursor:default}#as3cf-settings.wpome .button-tab.btn-disabled:hover{-webkit-box-shadow:none;box-shadow:none}#as3cf-settings.wpome a.help{width:18px;height:18px;min-width:18px;min-height:18px;border:none;border-radius:100%}#as3cf-settings.wpome a.help:active,#as3cf-settings.wpome a.help:focus,#as3cf-settings.wpome a.help:hover{-webkit-filter:brightness(90%);filter:brightness(90%);-webkit-box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);outline:0}#as3cf-settings.wpome a.help .icon.help{width:18px;height:18px;min-width:18px;min-height:18px;border:none;border-radius:100%}#as3cf-settings.wpome .icon.status{width:16px;height:16px}#as3cf-settings.wpome .icon.status:hover{-webkit-filter:brightness(90%);filter:brightness(90%)}#as3cf-settings.wpome .icon.close:hover{-webkit-filter:brightness(90%);filter:brightness(90%)}#as3cf-settings.wpome .icon.bucket{width:18px;height:18px;margin-right:1.4rem}#as3cf-settings.wpome .icon.region{width:18px;height:18px}#as3cf-settings.wpome .icon.notice-icon{width:24px;height:24px;margin-right:.8rem}#as3cf-settings.wpome .icon.notice-icon.assets-wizard{margin-top:-2px}#as3cf-settings.wpome label{font-size:.875rem;color:var(--as3cf-color-gray-900);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#as3cf-settings.wpome .disabled>label{cursor:default}#as3cf-settings.wpome input[type=checkbox],#as3cf-settings.wpome input[type=radio]{all:unset;-webkit-box-sizing:border-box;box-sizing:border-box;background:var(--as3cf-color-white);border:1px solid var(--as3cf-color-gray-400);width:18px;height:18px;min-width:18px;min-height:18px;margin:0 .85rem 0 0;padding:0}#as3cf-settings.wpome input[type=checkbox]:disabled,#as3cf-settings.wpome input[type=checkbox]:disabled:hover,#as3cf-settings.wpome input[type=radio]:disabled,#as3cf-settings.wpome input[type=radio]:disabled:hover{-webkit-box-shadow:none;box-shadow:none}#as3cf-settings.wpome input[type=checkbox]:disabled:checked,#as3cf-settings.wpome input[type=checkbox]:disabled:hover:checked,#as3cf-settings.wpome input[type=radio]:disabled:checked,#as3cf-settings.wpome input[type=radio]:disabled:hover:checked{color:var(--as3cf-color-gray-400);background-color:var(--as3cf-color-gray-200);border:1px solid var(--as3cf-color-gray-400)}#as3cf-settings.wpome input[type=checkbox]:disabled:hover:not(:checked),#as3cf-settings.wpome input[type=checkbox]:disabled:not(:checked),#as3cf-settings.wpome input[type=radio]:disabled:hover:not(:checked),#as3cf-settings.wpome input[type=radio]:disabled:not(:checked){background-color:var(--as3cf-color-gray-100);border:1px solid var(--as3cf-color-gray-300)}#as3cf-settings.wpome input[type=radio]{border-radius:100%}#as3cf-settings.wpome input[type=radio]:checked{border:1px solid var(--as3cf-color-secondary-700);background:var(--as3cf-color-secondary-500) url('data:image/svg+xml;utf8,') no-repeat center}#as3cf-settings.wpome input[type=radio]:checked:disabled{background-image:url('data:image/svg+xml;utf8,')}#as3cf-settings.wpome input[type=radio]:checked::before{content:none}#as3cf-settings.wpome input[type=radio]:hover{-webkit-box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);outline:0}#as3cf-settings.wpome input[type=radio]:hover:not(:checked){background-color:var(--as3cf-color-secondary-50)}#as3cf-settings.wpome input[type=checkbox]{border-radius:3px;margin-top:-2px}#as3cf-settings.wpome input[type=checkbox]:checked{background:var(--as3cf-color-secondary-500) url('data:image/svg+xml;utf8,') no-repeat center/75%;border:1px solid var(--as3cf-color-secondary-600)}#as3cf-settings.wpome input[type=checkbox]:checked:disabled{background-image:url('data:image/svg+xml;utf8,')}#as3cf-settings.wpome input[type=checkbox]:checked::before{content:none}#as3cf-settings.wpome input[type=checkbox]:hover{-webkit-box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);outline:0}#as3cf-settings.wpome input[type=checkbox]:hover:not(:checked){background-color:var(--as3cf-color-secondary-50)}#as3cf-settings.wpome .checkbox,#as3cf-settings.wpome .radio-btn{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:.75rem}#as3cf-settings.wpome .checkbox:last-of-type,#as3cf-settings.wpome .radio-btn:last-of-type{margin-bottom:0}#as3cf-settings.wpome .checkbox label{line-height:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#as3cf-settings.wpome input[type=text],#as3cf-settings.wpome textarea{background:var(--as3cf-color-white);border:1px solid var(--as3cf-color-gray-400);-webkit-box-shadow:0 2px 8px 0 rgba(0,0,0,.05);box-shadow:0 2px 8px 0 rgba(0,0,0,.05);border-radius:8px;padding:.95rem 1rem;font-size:.875rem;color:var(--as3cf-color-gray-900);line-height:1.2;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}#as3cf-settings.wpome input[type=text].licence-field,#as3cf-settings.wpome textarea.licence-field{width:510px;margin-right:.75rem!important;letter-spacing:.75px}#as3cf-settings.wpome input[type=text].licence-field::-webkit-input-placeholder,#as3cf-settings.wpome textarea.licence-field::-webkit-input-placeholder{letter-spacing:.25px}#as3cf-settings.wpome input[type=text].licence-field::-moz-placeholder,#as3cf-settings.wpome textarea.licence-field::-moz-placeholder{letter-spacing:.25px}#as3cf-settings.wpome input[type=text].licence-field:-ms-input-placeholder,#as3cf-settings.wpome textarea.licence-field:-ms-input-placeholder{letter-spacing:.25px}#as3cf-settings.wpome input[type=text].licence-field::-ms-input-placeholder,#as3cf-settings.wpome textarea.licence-field::-ms-input-placeholder{letter-spacing:.25px}#as3cf-settings.wpome input[type=text].licence-field::placeholder,#as3cf-settings.wpome textarea.licence-field::placeholder{letter-spacing:.25px}#as3cf-settings.wpome textarea{line-height:1.3!important}#as3cf-settings.wpome textarea::-webkit-scrollbar{width:12px}#as3cf-settings.wpome textarea::-webkit-scrollbar-track{background:var(--as3cf-color-white);border-radius:6px}#as3cf-settings.wpome textarea::-webkit-scrollbar-corner{background-color:var(--as3cf-color-white);border-radius:6px}#as3cf-settings.wpome textarea::-webkit-resizer{background-color:var(--as3cf-color-white);border-radius:6px}#as3cf-settings.wpome textarea::-webkit-scrollbar-thumb{background-color:var(--as3cf-secondary-color);border:1px solid var(--as3cf-color-white);border-radius:5px}#as3cf-settings.wpome select{all:unset;background:var(--as3cf-color-white) url(../img/icon/arrow.svg) no-repeat calc(100% - 18px) 50%;border:1px solid var(--as3cf-color-gray-400);-webkit-box-shadow:0 2px 8px 0 rgba(0,0,0,.05);box-shadow:0 2px 8px 0 rgba(0,0,0,.05);border-radius:8px;padding:0 1rem!important;font-size:.875rem!important;color:var(--as3cf-color-gray-900);line-height:1.2!important;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:46px!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#as3cf-settings.wpome input::-webkit-input-placeholder,#as3cf-settings.wpome select::-webkit-input-placeholder,#as3cf-settings.wpome textarea::-webkit-input-placeholder{color:var(--as3cf-color-gray-500)}#as3cf-settings.wpome input::-moz-placeholder,#as3cf-settings.wpome select::-moz-placeholder,#as3cf-settings.wpome textarea::-moz-placeholder{color:var(--as3cf-color-gray-500)}#as3cf-settings.wpome input:-ms-input-placeholder,#as3cf-settings.wpome select:-ms-input-placeholder,#as3cf-settings.wpome textarea:-ms-input-placeholder{color:var(--as3cf-color-gray-500)}#as3cf-settings.wpome input::-ms-input-placeholder,#as3cf-settings.wpome select::-ms-input-placeholder,#as3cf-settings.wpome textarea::-ms-input-placeholder{color:var(--as3cf-color-gray-500)}#as3cf-settings.wpome input::placeholder,#as3cf-settings.wpome select::placeholder,#as3cf-settings.wpome textarea::placeholder{color:var(--as3cf-color-gray-500)}#as3cf-settings.wpome input:hover,#as3cf-settings.wpome select:hover,#as3cf-settings.wpome textarea:hover{border:1px solid var(--as3cf-color-gray-500)}#as3cf-settings.wpome input:active,#as3cf-settings.wpome input:focus,#as3cf-settings.wpome select:active,#as3cf-settings.wpome select:focus,#as3cf-settings.wpome textarea:active,#as3cf-settings.wpome textarea:focus{-webkit-box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);outline:0}#as3cf-settings.wpome input:disabled,#as3cf-settings.wpome select:disabled,#as3cf-settings.wpome textarea:disabled{cursor:default}#as3cf-settings.wpome input.disabled,#as3cf-settings.wpome select.disabled,#as3cf-settings.wpome textarea.disabled{color:var(--as3cf-color-gray-500);background-color:var(--as3cf-color-gray-100);border:1px solid var(--as3cf-color-gray-300);cursor:default}#as3cf-settings.wpome .input-label{font-size:.78125rem;color:var(--as3cf-color-gray-500);margin-bottom:.5rem;font-weight:400;text-transform:uppercase;letter-spacing:.3px}#as3cf-settings.wpome .input-error{color:var(--as3cf-wordpress-notice-error-color);font-weight:400}#as3cf-settings.wpome .panel div.setting .input-error{margin-left:5rem;margin-right:1.5rem;margin-bottom:1rem}#as3cf-settings.wpome .toggle-switch{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#as3cf-settings.wpome .toggle-switch input[type=checkbox]{all:unset;height:0;width:0;border:none!important}#as3cf-settings.wpome .toggle-switch label{-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;text-indent:-9999px;width:36px;height:20px;background:var(--as3cf-color-gray-400);border:none;border-radius:100px;display:block;position:relative}#as3cf-settings.wpome .toggle-switch label:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--as3cf-color-white);border-radius:100%;-webkit-transition:.3s;transition:.3s;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.06),0 1px 2px 0 rgba(0,0,0,.1);box-shadow:0 1px 2px 0 rgba(0,0,0,.06),0 1px 2px 0 rgba(0,0,0,.1)}#as3cf-settings.wpome .toggle-switch input:checked+label{background:var(--as3cf-complete-color);-webkit-transition:.3s;transition:.3s}#as3cf-settings.wpome .toggle-switch input:checked+label:after{left:calc(100% - 2px);-webkit-transform:translateX(-100%);transform:translateX(-100%)}#as3cf-settings.wpome .toggle-switch label:active:after{width:26px}#as3cf-settings.wpome .toggle-switch input:active+label,#as3cf-settings.wpome .toggle-switch input:focus+label{border:none;-webkit-box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);outline:0}#as3cf-settings.wpome .toggle-switch input:disabled+label{cursor:default;background:var(--as3cf-color-gray-300)}#as3cf-settings.wpome .toggle-switch input:disabled+label:after{background:var(--as3cf-color-gray-100)}#as3cf-settings.wpome>.header{padding:0 2rem;background-color:#ffe4cd;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:96px}#as3cf-settings.wpome>.header .header-wrapper{width:1110px;max-width:1110px;height:100%;background-image:url(../img/brand/ome-branding-transparent.svg);background-repeat:no-repeat;background-size:contain;background-position:center top;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#as3cf-settings.wpome>.header .header-wrapper h1{font-size:1.3125rem;font-weight:500;color:#490d32}#as3cf-settings.wpome>.header .header-wrapper .medallion{-webkit-filter:drop-shadow(0 1px 4px rgba(0, 0, 0, .15));filter:drop-shadow(0 1px 4px rgba(0, 0, 0, .15));margin-right:1rem;width:52px;height:52px}#as3cf-settings.wpome>.header .header-wrapper .licence{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-left:auto}#as3cf-settings.wpome>.header .header-wrapper .licence .licence-type{color:#eb422d;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}#as3cf-settings.wpome>.header .header-wrapper .licence .licence-type a{font-size:.825rem;font-weight:500;margin-left:.6rem;text-decoration:underline;color:var(--as3cf-color-primary-500)!important}#as3cf-settings.wpome>.header .header-wrapper .licence .licence-type a:hover{-webkit-filter:brightness(105%);filter:brightness(105%)}#as3cf-settings.wpome>.header .header-wrapper .licence p{font-size:.8125rem;color:#4d443d;margin:.5rem 0 0}#as3cf-settings.wpome>.header .header-wrapper a.button,#as3cf-settings.wpome>.header .header-wrapper button{text-transform:uppercase}#as3cf-settings.wpome div.nav{width:100%;margin:0 auto 2.5rem 0;background:var(--as3cf-color-white);border-bottom:1px solid var(--as3cf-wordpress-border-color)}#as3cf-settings.wpome div.nav div.items{max-width:1220px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;padding:0 2rem}#as3cf-settings.wpome div.nav div.items ul.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;margin:0;padding:1.5rem 2rem 0 0;font-size:.75rem;font-weight:500;text-transform:uppercase}#as3cf-settings.wpome div.nav div.items ul.nav li{margin-right:1.75rem;padding:.6rem .2rem .65rem;border-bottom:3px solid #fff}#as3cf-settings.wpome div.nav div.items ul.nav li a{color:var(--as3cf-color-gray-600);text-decoration:none}#as3cf-settings.wpome div.nav div.items ul.nav li a:hover{color:var(--as3cf-color-primary-600)}#as3cf-settings.wpome div.nav div.items ul.nav li a:focus{color:var(--as3cf-color-primary-600);-webkit-box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-primary-400);box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-primary-400);border-radius:3px;outline:0}#as3cf-settings.wpome div.nav div.items ul.nav li.focus,#as3cf-settings.wpome div.nav div.items ul.nav li.hover{border-bottom:3px solid var(--as3cf-color-gray-600)}#as3cf-settings.wpome div.nav div.items ul.nav li.active{border-bottom:3px solid var(--as3cf-color-primary-500)}#as3cf-settings.wpome div.nav div.items ul.nav li.active a{color:var(--as3cf-active-nav-color)}#as3cf-settings.wpome .subnav{display:-webkit-box;display:-ms-flexbox;display:flex;border-bottom:1px solid var(--as3cf-wordpress-border-color);padding:0;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;margin:0 0 3rem}#as3cf-settings.wpome .subnav.subpage{display:none}@media (max-width:1100px){#as3cf-settings.wpome .subnav.subpage{display:-webkit-box;display:-ms-flexbox;display:flex}}#as3cf-settings.wpome .subnav li{font-size:.875rem;font-weight:500;padding-bottom:1rem;margin:0 2rem 0 0}#as3cf-settings.wpome .subnav li.step-arrow{all:unset;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:start;align-self:flex-start;margin:0 2rem 0 0}#as3cf-settings.wpome .subnav li a{color:var(--as3cf-color-gray-600);text-decoration:none}#as3cf-settings.wpome .subnav li a:hover{color:var(--as3cf-color-primary-600)}#as3cf-settings.wpome .subnav li a:focus{color:var(--as3cf-color-primary-600);-webkit-box-shadow:0 0 0 1.5px var(--as3cf-wordpress-background-color),0 0 0 3.5px var(--as3cf-color-primary-400);box-shadow:0 0 0 1.5px var(--as3cf-wordpress-background-color),0 0 0 3.5px var(--as3cf-color-primary-400);border-radius:3px;outline:0}#as3cf-settings.wpome .subnav li.focus,#as3cf-settings.wpome .subnav li.hover{border-bottom:3px solid var(--as3cf-color-gray-600)}#as3cf-settings.wpome .subnav li.active{border-bottom:3px solid var(--as3cf-color-primary-500)}#as3cf-settings.wpome .subnav li.active a{color:var(--as3cf-active-nav-color)}#as3cf-settings.wpome .lite-wrapper .subnav{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}#as3cf-settings.wpomepro>.header .header-wrapper{width:1220px;max-width:1220px}#as3cf-settings #global-animation-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:auto;cursor:pointer;text-decoration:none}#as3cf-settings #global-animation-wrapper:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}#as3cf-settings #global-animation-wrapper #animation-running{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}#as3cf-settings #global-animation-wrapper #animation-running .percentage{margin-right:58px;margin-top:-.7rem;text-transform:none;font-size:1.2rem;color:var(--as3cf-color-gray-900);font-weight:500;text-align:right}#as3cf-settings #global-animation-wrapper #animation-running span{font-size:.85rem}#as3cf-settings #global-animation-wrapper #animation-running img{position:absolute;right:0;top:-30px;height:42px}#as3cf-settings #global-animation-wrapper #animation-complete{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:-1.4rem}#as3cf-settings #global-animation-wrapper #animation-complete p{margin-right:15px;font-size:.8rem;text-transform:none;line-height:1}#as3cf-settings #global-animation-wrapper #animation-complete p.success{font-weight:400;text-decoration:none;color:var(--as3cf-color-gray-500)}#as3cf-settings #global-animation-wrapper #animation-complete p.error{font-weight:500;color:var(--as3cf-notice-error-color);text-decoration:underline}#as3cf-settings #global-animation-wrapper #animation-complete img{width:19px}#as3cf-settings.wpome .notifications.wrapper{margin:0 0 2rem 0}#as3cf-settings.wpome .notification{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0 0 .5rem 0;-webkit-box-shadow:0 2px 8px -5px rgba(50,50,93,.25),0 8px 5px -12px rgba(0,0,0,.3);box-shadow:0 2px 8px -5px rgba(50,50,93,.25),0 8px 5px -12px rgba(0,0,0,.3);border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#as3cf-settings.wpome .notification .content{-webkit-box-sizing:border-box;box-sizing:border-box;padding:10px 14px 10px 12px;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:14px}#as3cf-settings.wpome .notification .content div.icon.type{margin:0;padding:0;width:28px;height:28px;border-radius:6px;-webkit-box-flex:0;-ms-flex:0 0 28px;flex:0 0 28px;-ms-flex-item-align:start;align-self:flex-start;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#as3cf-settings.wpome .notification .content div.icon.type img.icon.type{width:16px;height:16px}#as3cf-settings.wpome .notification .content h3{margin:0 .5rem .5rem 0;font-size:.8125rem;line-height:1.3rem;font-weight:600;color:var(--as3cf-color-gray-900)}#as3cf-settings.wpome .notification .content p{margin:0 .5rem .5rem 0;font-size:.8125rem;line-height:1.3rem;color:var(--as3cf-color-gray-900)}#as3cf-settings.wpome .notification .content p li{list-style:disc}#as3cf-settings.wpome .notification .content p:last-of-type{margin-bottom:0}#as3cf-settings.wpome .notification .content code{padding:.05rem .4rem;margin:0 .1rem;border-radius:5px;line-height:1}#as3cf-settings.wpome .notification .content .body{margin:0;padding:0;width:100%;overflow-wrap:anywhere;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#as3cf-settings.wpome .notification .content .body .heading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#as3cf-settings.wpome .notification .content .body .heading p{width:100%}#as3cf-settings.wpome .notification .content .body .heading .close{-webkit-box-flex:0;-ms-flex:0 0 16px;flex:0 0 16px;width:16px;height:16px;min-width:16px;min-height:16px;background:url(../img/icon/close.svg) no-repeat;border:none;border-radius:100%;cursor:pointer}#as3cf-settings.wpome .notification .content .body .links a{margin-right:.75rem}#as3cf-settings.wpome .notification.multiline .content{padding:14px 14px 14px 12px}#as3cf-settings.wpome .notification.multiline .content .body .heading .close{-ms-flex-item-align:first baseline;align-self:first baseline}#as3cf-settings.wpome .notification.inline.multiline .content{padding:16px;gap:16px}#as3cf-settings.wpome .notification.inline.multiline .content div.icon.type{margin-top:4px}#as3cf-settings.wpome .notification.expandable button{color:var(--as3cf-link-color);background-color:rgba(17,17,17,.04);border:1px solid rgba(17,17,17,.08)}#as3cf-settings.wpome .notification.expandable .heading{gap:8px}#as3cf-settings.wpome .notification.expandable .heading button.expandable{all:unset;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:22px;height:22px;min-width:22px;min-height:22px;background:rgba(17,17,17,.04) url(../img/icon/arrow.svg) no-repeat center/11px;border:1px solid rgba(17,17,17,.08);border-radius:11px;-webkit-filter:invert(27%) sepia(84%) saturate(1886%) hue-rotate(177deg) brightness(90%) contrast(103%);filter:invert(27%) sepia(84%) saturate(1886%) hue-rotate(177deg) brightness(90%) contrast(103%)}#as3cf-settings.wpome .notification.expandable .heading button.expandable.expanded{-webkit-transform:rotate(180deg);transform:rotate(180deg)}#as3cf-settings.wpome .notification.expandable .heading button.expandable:active,#as3cf-settings.wpome .notification.expandable .heading button.expandable:focus,#as3cf-settings.wpome .notification.expandable .heading button.expandable:hover{-webkit-filter:brightness(90%);filter:brightness(90%);-webkit-box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);outline:0}#as3cf-settings.wpome .notification.expandable.expanded .details{max-height:14.5rem;overflow-y:auto;margin:0;padding:0}#as3cf-settings.wpome .notification.expandable.expanded .details .item{margin:0;padding:1.5rem;line-height:1.4;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#as3cf-settings.wpome .notification.expandable.expanded .details .item .summary{margin-bottom:.75rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%}#as3cf-settings.wpome .notification.expandable.expanded .details .item .summary .title{width:100%;font-weight:600}#as3cf-settings.wpome .notification.expandable.expanded .details .item ul.detail{margin:0;padding:0}#as3cf-settings.wpome .notification.expandable.expanded .details .item ul.detail>li{padding:.3rem 0 0;line-height:1.4}#as3cf-settings.wpome .notification.expandable button.dismiss{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:5px 10px;gap:4px;border-radius:6px}#as3cf-settings.wpome .notification.expandable button.dismiss:before{content:url(../img/icon/x.svg);width:7.5px}#as3cf-settings.wpome .notification button:active,#as3cf-settings.wpome .notification button:focus,#as3cf-settings.wpome .notification button:hover{-webkit-filter:brightness(90%);filter:brightness(90%);-webkit-box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);box-shadow:0 0 0 1.5px var(--as3cf-color-white),0 0 0 3.5px var(--as3cf-color-secondary-500);outline:0}#as3cf-settings.wpome .notification.info{background:var(--as3cf-notice-info-background-color);border:1px solid var(--as3cf-notice-info-border-color)}#as3cf-settings.wpome .notification.info div.icon.type{background:var(--as3cf-notice-info-color)}#as3cf-settings.wpome .notification.info.expandable.expanded .details .item{border-top:1px solid rgba(46,107,222,.16)}#as3cf-settings.wpome .notification.success{background:var(--as3cf-notice-success-background-color);border:1px solid var(--as3cf-notice-success-border-color)}#as3cf-settings.wpome .notification.success div.icon.type{background:var(--as3cf-notice-success-color)}#as3cf-settings.wpome .notification.success.expandable.expanded .details .item{border-top:1px solid rgba(232,99,94,.16)}#as3cf-settings.wpome .notification.warning{background:var(--as3cf-notice-warning-background-color);border:1px solid var(--as3cf-notice-warning-border-color)}#as3cf-settings.wpome .notification.warning div.icon.type{background:var(--as3cf-notice-warning-color)}#as3cf-settings.wpome .notification.warning code{background:var(--as3cf-notice-warning-code-background-color)}#as3cf-settings.wpome .notification.warning.expandable.expanded .details .item{border-top:1px solid rgba(99,185,105,.16)}#as3cf-settings.wpome .notification.error{background:var(--as3cf-notice-error-background-color);border:1px solid var(--as3cf-notice-error-border-color)}#as3cf-settings.wpome .notification.error div.icon.type{background:var(--as3cf-notice-error-color)}#as3cf-settings.wpome .notification.error.expandable.expanded .details .item{border-top:1px solid rgba(232,99,94,.16)}#as3cf-settings.wpome .notification.wordpress{background:var(--as3cf-color-white);border:1px solid var(--as3cf-wordpress-border-color)}#as3cf-settings.wpome .notification.wordpress.info{border-left:5px solid var(--as3cf-wordpress-notice-info-color)}#as3cf-settings.wpome .notification.wordpress.success{border-left:5px solid var(--as3cf-wordpress-notice-success-color)}#as3cf-settings.wpome .notification.wordpress.warning{border-left:5px solid var(--as3cf-wordpress-notice-warning-color)}#as3cf-settings.wpome .notification.wordpress.error{border-left:5px solid var(--as3cf-wordpress-notice-error-color)}#as3cf-settings.wpome .delivery.aws .gradient{background:linear-gradient(225deg,rgba(255,213,213,.5) 0,rgba(255,213,213,0) 50%)}#as3cf-settings.wpome .delivery.cloudflare .gradient{background:linear-gradient(225deg,rgba(255,221,192,.5) 0,rgba(255,221,192,0) 50%)}#as3cf-settings.wpome .delivery.do .gradient{background:linear-gradient(225deg,rgba(205,230,255,.5) 0,rgba(205,230,255,0) 50%)}#as3cf-settings.wpome .delivery.gcp .gradient{background:linear-gradient(225deg,rgba(226,226,226,.5) 0,rgba(226,226,226,0) 50%)}#as3cf-settings.wpome .delivery.keycdn .gradient{background:linear-gradient(225deg,rgba(4,122,237,.16) 0,rgba(4,122,237,0) 50%)}#as3cf-settings.wpome .delivery.other .gradient{background:linear-gradient(225deg,rgba(228,234,241,.5) 0,rgba(228,234,241,0) 50%)}#as3cf-settings.wpome .delivery.stackpath .gradient{background:linear-gradient(225deg,rgba(226,226,226,.5) 0,rgba(226,226,226,0) 50%)}#as3cf-settings.wpome .storage.aws .gradient{background:linear-gradient(225deg,rgba(255,214,197,.5) 0,rgba(255,214,197,0) 50%)}#as3cf-settings.wpome .storage.do .gradient{background:linear-gradient(225deg,rgba(205,230,255,.5) 0,rgba(205,230,255,0) 50%)}#as3cf-settings.wpome .storage.gcp .gradient{background:linear-gradient(225deg,rgba(226,226,226,.5) 0,rgba(226,226,226,0) 50%)}#as3cf-settings.wpome .as3cf-sidebar{width:292px;min-width:292px;height:-webkit-max-content;height:-moz-max-content;height:max-content;margin-left:2.75rem;margin-top:-.5rem}#as3cf-settings.wpome .as3cf-sidebar.lite{background:#fff;border-radius:7px;border:1px solid #d9e1eb;overflow:hidden;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.1);box-shadow:0 1px 2px 0 rgba(0,0,0,.1)}#as3cf-settings.wpome .as3cf-sidebar .block{padding:20px;border:1px solid #ccc}#as3cf-settings.wpome .as3cf-sidebar .subscribe{border-top:none;text-align:center;padding:40px 20px}#as3cf-settings.wpome .as3cf-sidebar .subscribe h2{padding:0;margin:0;margin-bottom:.5em;color:#666;font-size:17px;line-height:1.2em;float:none;text-transform:none;font-weight:500}#as3cf-settings.wpome .as3cf-sidebar .subscribe .button{width:100%!important;margin:1rem auto;text-transform:uppercase;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center!important}#as3cf-settings.wpome .as3cf-sidebar .subscribe p{margin:0}#as3cf-settings.wpome .as3cf-sidebar .subscribe .discount-applied{color:rgba(0,0,0,.4);font-size:12px;line-height:1.4em;margin-top:10px}#as3cf-settings.wpome .as3cf-sidebar .credits{border-top:0;background:#2e2e31;text-align:center;padding:10px}#as3cf-settings.wpome .as3cf-sidebar .credits h4{font-size:11px;font-weight:400;color:rgba(255,255,255,.7);margin-top:0;margin-bottom:10px}#as3cf-settings.wpome .as3cf-sidebar .credits ul{display:inline-block;margin:0;padding:0}#as3cf-settings.wpome .as3cf-sidebar .credits li{overflow:hidden}#as3cf-settings.wpome .as3cf-sidebar .credits li:last-child{margin-bottom:0}#as3cf-settings.wpome .as3cf-sidebar .credits img{display:inline-block;vertical-align:middle;margin-right:8px}#as3cf-settings.wpome .as3cf-sidebar .credits span{display:inline-block;vertical-align:middle;font-size:12px;line-height:24px}#as3cf-settings.wpome .as3cf-sidebar .credits a{display:block;text-decoration:none;color:#fff;font-size:12px;text-align:center}#as3cf-settings.wpome .as3cf-sidebar .credits a:hover{color:rgba(255,255,255,.7)}@media screen and (max-width:1052px){#as3cf-settings.wpome .as3cf-sidebar{position:relative;top:auto;right:auto}}#as3cf-settings.wpome .as3cf-active-bucket,#as3cf-settings.wpome .as3cf-active-provider{font-weight:700;margin-right:10px}#as3cf-settings.wpome .as3cf-banner{width:292px;height:156px;display:block;background:#f8cfae url(../img/sidebar/os3-banner.svg) left bottom/100% no-repeat}#as3cf-settings.wpome .as3cf-banner:focus{-webkit-box-shadow:none;box-shadow:none}#as3cf-settings.wpome .as3cf-upgrade-details{background-color:#4e0d33;padding:10px 20px 20px 20px;color:#eee;font-size:12.5px;display:block;text-decoration:none}#as3cf-settings.wpome .as3cf-upgrade-details h1{font-size:27px;color:#f8cfae;margin:0 0 15px 0;padding:0;font-weight:300;line-height:1}#as3cf-settings.wpome .as3cf-upgrade-details h2{font-size:15px;color:#f8cfae;margin:0 0 30px 0;font-weight:600;line-height:20px}#as3cf-settings.wpome .as3cf-upgrade-details p{margin:0}#as3cf-settings.wpome .as3cf-upgrade-details a{color:#eee;font-weight:700;text-decoration:none;font-size:16px;-webkit-box-shadow:none;box-shadow:none}#as3cf-settings.wpome .as3cf-upgrade-details a:hover{color:#fff}#as3cf-settings.wpome .as3cf-upgrade-details ul{margin:0!important;padding:0;list-style:none}#as3cf-settings.wpome .as3cf-upgrade-details ul li{margin-bottom:15px;line-height:18px;padding-left:25px;background:url(../img/sidebar/item-checked.svg) left center no-repeat}#as3cf-settings.wpome a,#as3cf-settings.wpome button,#as3cf-settings.wpome h1,#as3cf-settings.wpome h2,#as3cf-settings.wpome h3,#as3cf-settings.wpome h4,#as3cf-settings.wpome h5,#as3cf-settings.wpome input,#as3cf-settings.wpome li,#as3cf-settings.wpome p,#as3cf-settings.wpome pre,#as3cf-settings.wpome select,#as3cf-settings.wpome span,#as3cf-settings.wpome textarea{letter-spacing:.25px;line-height:1;margin:0}#as3cf-settings.wpome li{list-style:none}#as3cf-settings.wpome .semibold{font-weight:600}#as3cf-settings.wpome .bold{font-weight:700}#as3cf-settings.wpome p{font-size:.875rem;color:var(--as3cf-color-gray-900);font-weight:400}#as3cf-settings.wpome h2{font-size:1.0625rem;color:#617385;text-transform:uppercase;font-weight:400}#as3cf-settings.wpome .page-title{margin-bottom:3rem}#as3cf-settings.wpome a[target=_blank]:not(.help):not(.licence):not(.email):after{-webkit-box-sizing:border-box;box-sizing:border-box;content:"\f504";display:inline-block;font-family:dashicons,emoji;font-size:larger;text-decoration:none;vertical-align:sub;margin-left:.2rem;margin-right:-1rem}#as3cf-settings.wpome .link{font-size:.8125rem;color:#0073aa}#as3cf-settings.wpome .link:hover{-webkit-filter:brightness(115%);filter:brightness(115%)}#as3cf-settings.wpome pre,#as3cf-settings.wpome textarea.pre{background:var(--as3cf-code-background);border:1px solid #d2cfcf;border-radius:6px;padding:1rem 1.2rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:.8125rem;line-height:1.6;color:var(--as3cf-color-white);font-weight:400;margin:0 0 1.5rem;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;overflow-y:scroll}#as3cf-settings.wpome pre::-webkit-scrollbar,#as3cf-settings.wpome textarea.pre::-webkit-scrollbar{width:12px}#as3cf-settings.wpome pre::-webkit-scrollbar-track,#as3cf-settings.wpome textarea.pre::-webkit-scrollbar-track{background:var(--as3cf-code-background);border-radius:6px}#as3cf-settings.wpome pre::-webkit-scrollbar-corner,#as3cf-settings.wpome textarea.pre::-webkit-scrollbar-corner{background-color:var(--as3cf-code-background);border-radius:6px}#as3cf-settings.wpome pre::-webkit-resizer,#as3cf-settings.wpome textarea.pre::-webkit-resizer{background-color:var(--as3cf-code-background);border-radius:6px}#as3cf-settings.wpome pre::-webkit-scrollbar-thumb,#as3cf-settings.wpome textarea.pre::-webkit-scrollbar-thumb{background-color:var(--as3cf-secondary-color);border:1px solid var(--as3cf-code-background);border-radius:5px}#as3cf-settings.wpome .page-wrapper .page-title{margin-bottom:2.6rem}#as3cf-settings.wpome .lite-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;max-width:1110px}@media (max-width:1024px){#as3cf-settings.wpome .lite-wrapper .as3cf-sidebar{display:none}}#as3cf-settings.wpome .lite-wrapper .page-wrapper{width:840px}#as3cf-settings.wpome .lite-wrapper .page-wrapper.media{width:780px;max-width:780px}#as3cf-settings.wpome .lite-wrapper .media-page.wrapper{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}#as3cf-settings.wpome .lite-wrapper .media-page.wrapper .panel{width:100%;max-width:780px}#as3cf-settings.wpome .lite-wrapper .media-page.wrapper .delivery-settings{margin:0;display:none}#as3cf-settings.wpome .lite-wrapper .media-page.wrapper .delivery-settings.active{display:-webkit-box;display:-ms-flexbox;display:flex}#as3cf-settings.wpome .lite-wrapper .media-page.wrapper .storage-settings{margin:0;display:none}#as3cf-settings.wpome .lite-wrapper .media-page.wrapper .storage-settings.active{display:-webkit-box;display:-ms-flexbox;display:flex}#as3cf-settings.wpome .lite-wrapper .panel.url-preview{width:100%;max-width:780px}#as3cf-settings.wpome .lite-wrapper .fixed-cta-block .buttons{width:calc(1110px + 4rem);max-width:calc(1110px + 4rem)}@media screen and (max-width:1024px){#as3cf-settings.wpome .lite-wrapper .fixed-cta-block .buttons{max-width:calc(780px + 4rem)}}#as3cf-settings.wpome .media-page.wrapper{margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media (max-width:1100px){#as3cf-settings.wpome .media-page.wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media (max-width:1100px){#as3cf-settings.wpome .media-page.wrapper .panel{max-width:100%}}#as3cf-settings.wpome .media-page.wrapper .delivery-settings,#as3cf-settings.wpome .media-page.wrapper .storage-settings{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#as3cf-settings.wpome .media-page.wrapper .storage-settings{margin:0 2rem 0 0}@media (max-width:1100px){#as3cf-settings.wpome .media-page.wrapper .storage-settings{margin:0;display:none}#as3cf-settings.wpome .media-page.wrapper .storage-settings.active{display:-webkit-box;display:-ms-flexbox;display:flex}}#as3cf-settings.wpome .media-page.wrapper .delivery-settings{margin:0 0 0 2rem}@media (max-width:1100px){#as3cf-settings.wpome .media-page.wrapper .delivery-settings{margin:0;display:none}#as3cf-settings.wpome .media-page.wrapper .delivery-settings.active{display:-webkit-box;display:-ms-flexbox;display:flex}}#as3cf-settings.wpome .subpage.page-wrapper,#as3cf-settings.wpome .subpage.wrapper{margin:0;max-width:840px}#as3cf-settings.wpome .storage-page.wrapper .panel.multi .panel-container .panel-row.tab-buttons{gap:1.5rem;-ms-flex-wrap:wrap;flex-wrap:wrap}#as3cf-settings.wpome .storage-page.wrapper .panel.multi .panel-container .panel-row.tab-buttons .button-tab{margin:0;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row{margin-bottom:1.25rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%}#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row:last-of-type{margin-bottom:0}#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row .button-tab{width:12rem}#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row .button-tab.active~p,#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row .button-tab:not(.btn-disabled):hover~p{font-weight:600;opacity:1}#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row p{margin:0}#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row .private-media,#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row .speed{margin-left:1.5rem;opacity:.7;font-size:.8125rem}#as3cf-settings.wpome .delivery-provider-settings-page.wrapper .panel.multi .panel-container .panel-row.delivery-provider-buttons .row .help{margin-left:auto;display:-webkit-box;display:-ms-flexbox;display:flex}#as3cf-settings.wpome .licence-page.wrapper{margin:0 0 2rem;max-width:700px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}#as3cf-settings.wpome .licence-page.wrapper.defined{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:.5rem}#as3cf-settings.wpome .licence-page.wrapper.defined .wp-config{margin-left:0;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}#as3cf-settings.wpome .support-page.wrapper{margin:0;max-width:960px}#as3cf-settings.wpome .support-page.wrapper .columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#as3cf-settings.wpome .support-page.wrapper .licence-type{margin-bottom:3rem}#as3cf-settings.wpome .support-page.wrapper .licence-type span{font-weight:700;color:var(--as3cf-color-primary-500)}#as3cf-settings.wpome .support-page.wrapper .lite-support{margin-bottom:2rem}#as3cf-settings.wpome .support-page.wrapper .lite-support p{line-height:1.8;font-weight:400}#as3cf-settings.wpome .assets-page.wrapper{margin:0;max-width:840px}#as3cf-settings.wpome .assets-page.wrapper .assets-panel{padding:.45rem 0;max-width:640px}#as3cf-settings.wpome .assets-page.wrapper .notice{margin-right:auto}#as3cf-settings.wpome .assets-page.wrapper .notice-qsg{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}#as3cf-settings.wpome .assets-page.wrapper .settings{margin-bottom:2rem;max-width:100%}#as3cf-settings.wpome .assets-page.wrapper .panel-row.status{padding:1.75rem 0 0 4rem!important;height:-webkit-max-content;height:-moz-max-content;height:max-content}#as3cf-settings.wpome .assets-page.wrapper .panel-row.status img{width:18px;height:18px}#as3cf-settings.wpome .assets-page.wrapper .panel-row.status h4{margin-left:.8rem}#as3cf-settings.wpome .assets-page.wrapper .panel-row.status p{margin:0!important}#as3cf-settings.wpome .assets-page.wrapper .panel-row.last-checked{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:.7rem 0 0 4.7rem!important;height:-webkit-max-content;height:-moz-max-content;height:max-content}#as3cf-settings.wpome .assets-page.wrapper .panel-row.last-checked p{font-size:.75rem;margin:0!important}#as3cf-settings.wpome .assets-page.wrapper .panel-row.last-checked a{margin-left:1rem;text-decoration:underline}#as3cf-settings.wpome .tools-page.wrapper{margin:0;max-width:760px}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel{padding:0 0 .45rem}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.header{height:4.5rem!important}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.header img{margin-right:2rem}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.header button{margin-left:auto}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.header .emoji-party{font-size:28px}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body{padding:1.6rem 2.6rem 1.6rem 6.1rem}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar{margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .status{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;width:100%;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .status h4{font-size:.8125rem;color:var(--as3cf-color-gray-900);font-weight:400;margin:0;opacity:80%}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .status h4 strong{font-size:1.0625rem;font-weight:600;opacity:100%}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .indicator,#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress{height:8px;border-radius:8px}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress{width:100%;background:#e9e9ef;margin-top:1rem}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress.stripe.animate,#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress.stripe>.indicator.animate{background-size:30px 30px;background-image:linear-gradient(135deg,rgba(255,255,255,.15) 0,rgba(255,255,255,.15) 25%,rgba(255,255,255,0) 25%,rgba(255,255,255,0) 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,rgba(255,255,255,0) 75%,rgba(255,255,255,0) 100%);-webkit-animation:progress 5s linear infinite;animation:progress 5s linear infinite}@-webkit-keyframes progress{from{background-position:0 0}to{background-position:-60px -60px}}@keyframes progress{from{background-position:0 0}to{background-position:-60px -60px}}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress.stripe.animate{background-color:var(--as3cf-secondary-color)}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress .indicator{display:block;background-color:var(--as3cf-color-primary-500);width:40%}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress .indicator.running{background-color:var(--as3cf-color-secondary-500)}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.body.progress-bar .progress .indicator.complete{background-color:var(--as3cf-complete-color);width:100%}#as3cf-settings.wpome .tools-page.wrapper .panel.multi .panel-container.tools-panel .panel-row.desc{font-size:.8125rem;color:var(--as3cf-color-gray-500);line-height:1.65}#as3cf-settings.wpome .panel.url-preview{max-width:100%}#as3cf-settings.wpome .panel.url-preview .panel-row.desc p{font-size:.8125rem;color:var(--as3cf-color-gray-600);line-height:1.625;margin:1.5rem 0 0}@supports (contain:inline-size){#as3cf-settings.wpome .panel.url-preview .panel-row.body{contain:inline-size}}#as3cf-settings.wpome .panel.url-preview .panel-row dl{margin:1rem -1.5rem;padding:0 1.5rem 1rem;display:-webkit-box;display:-ms-flexbox;display:flex;gap:.5rem;overflow-x:auto}#as3cf-settings.wpome .panel.url-preview .panel-row dl div{margin:0;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;background:#e1e5e9;border-radius:6px}#as3cf-settings.wpome .panel.url-preview .panel-row dl div dt{margin:0;padding:.5rem 1rem .375rem;white-space:nowrap;font-weight:510}#as3cf-settings.wpome .panel.url-preview .panel-row dl div dd{margin:0;padding:.407rem 1rem;white-space:nowrap;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-item-align:stretch;align-self:stretch;background:#fafafa;border:1px solid #cbd5e0;border-radius:6px;font-weight:400;font-size:.75rem}@supports not (contain:inline-size){#as3cf-settings.wpome .panel.url-preview .panel-row dl{contain:size;width:100%;height:68px}}#as3cf-settings.wpome .panel{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;max-width:575px;margin-bottom:3rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#as3cf-settings.wpome .panel .heading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:.5rem}#as3cf-settings.wpome .panel h3{font-size:.9375rem;color:var(--as3cf-color-gray-900);font-weight:500;margin:0 0 1.25rem}#as3cf-settings.wpome .panel .notification.inline{margin-left:5rem;margin-right:1.5rem}#as3cf-settings.wpome .panel .panel-container{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:var(--as3cf-color-white);border:1px solid var(--as3cf-wordpress-border-color);-webkit-box-shadow:0 1px 8px 0 rgba(0,0,0,.05),0 2px 1px 0 rgba(0,0,0,.03);box-shadow:0 1px 8px 0 rgba(0,0,0,.05),0 2px 1px 0 rgba(0,0,0,.03);border-radius:6px}#as3cf-settings.wpome .panel .panel-container .panel-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 1.5rem}#as3cf-settings.wpome .panel .panel-container .panel-row.header{height:6rem;border-bottom:1px solid var(--as3cf-separator-color)}#as3cf-settings.wpome .panel .panel-container .panel-row.footer{border-top:1px solid var(--as3cf-separator-color)}#as3cf-settings.wpome .panel .panel-container .panel-row h4{font-size:.875rem;font-weight:500;color:var(--as3cf-color-gray-800);margin-left:1rem;margin-right:auto}#as3cf-settings.wpome .panel .panel-container .panel-row .link{font-size:.8125rem;text-align:right;line-height:1.5;margin-left:auto;font-weight:500}#as3cf-settings.wpome .panel .panel-container .panel-row .link+.help{margin-left:1rem}#as3cf-settings.wpome .panel .panel-container .setting .panel-row.option{margin-top:1.5rem}#as3cf-settings.wpome .panel .panel-container .setting .panel-row.option h4{margin:0 0 0 var(--as3cf-settings-option-indent)}#as3cf-settings.wpome .panel .panel-container .setting .panel-row.option a{margin-left:auto}#as3cf-settings.wpome .panel .panel-container .setting .panel-row.desc{padding-right:var(--as3cf-settings-option-indent-right)}#as3cf-settings.wpome .panel .panel-container .setting .panel-row.desc p{font-size:.8125rem;color:var(--as3cf-color-gray-600);line-height:1.625;margin-left:calc(var(--as3cf-settings-ctrl-width) + var(--as3cf-settings-option-indent));margin-top:.57rem;margin-bottom:.75rem}#as3cf-settings.wpome .panel .panel-container .setting .panel-row.input{padding-right:var(--as3cf-settings-option-indent-right)}#as3cf-settings.wpome .panel .panel-container .setting .panel-row.input input[type=text]{margin-left:calc(var(--as3cf-settings-ctrl-width) + var(--as3cf-settings-option-indent));margin-bottom:1.2rem;width:100%}#as3cf-settings.wpome .panel .panel-container .setting .panel-row.input input[type=text]+label{visibility:collapse}#as3cf-settings.wpome .panel .panel-container .setting.nested{margin:0 0 .125rem 5.25rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-left:2px dotted #c2cbd3}#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row{height:-webkit-max-content;height:-moz-max-content;height:max-content;margin-bottom:0}#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row img{margin-left:auto}#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row h4{margin:0}#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row.option{margin-top:1rem}#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row.desc{height:-webkit-max-content;height:-moz-max-content;height:max-content;padding:.4rem 2.25rem .85rem 1.65rem}#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row.desc p{font-size:.8125rem;color:var(--as3cf-color-gray-600);line-height:1.625;margin:0}#as3cf-settings.wpome .panel .panel-container .setting.nested .panel-row.input input[type=text]{margin-left:var(--as3cf-settings-input-indent)}#as3cf-settings.wpome .panel .panel-container .setting:last-of-type{margin-bottom:.75rem}#as3cf-settings.wpome .panel .panel-container hr{height:1px;width:100%;border:0;margin:0;background:var(--as3cf-separator-color)}#as3cf-settings.wpome .panel.multi{max-width:840px;margin-bottom:2rem}#as3cf-settings.wpome .panel.multi .panel-container.toggle-header .toggle-switch{margin-right:1.25rem}#as3cf-settings.wpome .panel.multi .panel-container.toggle-header .toggle-reveal label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}#as3cf-settings.wpome .panel.multi .panel-container.toggle-header .toggle-reveal a{margin-left:.3rem;display:contents}#as3cf-settings.wpome .panel.multi .panel-container .panel-row{height:auto}#as3cf-settings.wpome .panel.multi .panel-container .panel-row h3{margin:0}#as3cf-settings.wpome .panel.multi .panel-container .panel-row p:last-of-type{margin-bottom:0}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.header{height:4rem;display:-webkit-box;display:-ms-flexbox;display:flex}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.header a{margin-left:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.header .provider{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.header .provider a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:auto}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.header .provider img{width:24px;height:24px;margin-right:.5rem}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.header .wp-config+.provider{margin-left:1rem}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body{padding:2.5rem;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .row{margin:0;width:100%}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .row.radio-btns{margin-bottom:2.2rem}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .radio-desc{margin:-.35rem 0 1.25rem 2rem;font-size:12px;font-weight:500;line-height:1.4;opacity:.75}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body.access-keys>p{margin-bottom:1.5rem!important}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body input[type=text],#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body textarea{width:100%;margin-bottom:1.5rem}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-name,#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .cdn-name{width:100%}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body p{margin:0 0 1.5rem;line-height:1.5}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body p:last-of-type{margin-bottom:0}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .link{text-decoration:underline}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .button-tab img{width:24px;height:24px;margin-right:.9rem}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .button-tab .checkmark{width:16px;height:16px;position:absolute;right:-19px;top:-5px}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .button-tab p{font-weight:500;margin-bottom:0}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .radio-btn{margin-bottom:.8rem}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .radio-btn:last-of-type{margin-bottom:0}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .radio-btn.list{margin:0 1.5rem 0 0}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list{background:var(--as3cf-color-white);border:1px solid var(--as3cf-wordpress-border-color);-webkit-box-shadow:0 2px 8px 0 rgba(0,0,0,.05);box-shadow:0 2px 8px 0 rgba(0,0,0,.05);border-radius:6px;width:100%;max-width:580px;padding:0 .4rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:260px;overflow-y:scroll;-webkit-box-sizing:border-box;box-sizing:border-box}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.78rem 1.4rem;background:#f6f7f8;border-radius:4px;margin:0 0 .3rem;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:0;-ms-flex:none;flex:none}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row.active{background:rgba(236,112,94,.1);border:1px solid var(--as3cf-color-primary-500);border-radius:4px}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row:first-of-type{margin-top:.4rem}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row:last-of-type{margin-bottom:.4rem}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row:nth-child(even){background:var(--as3cf-color-white)}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row p{margin:0;font-size:.84375rem}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row .status{margin-left:auto}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .bucket-list .row.nothing-found{cursor:default;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .new-bucket-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box;margin-right:1.8rem;-webkit-box-flex:5;-ms-flex:5;flex:5}#as3cf-settings.wpome .panel.multi .panel-container .panel-row.body .region{width:30%;-webkit-box-flex:3;-ms-flex:3;flex:3;margin-left:auto;margin-bottom:1.5rem;-webkit-box-sizing:border-box;box-sizing:border-box}#as3cf-settings.wpome p.wp-config{margin-left:auto;padding:.4rem .75rem;color:var(--as3cf-color-gray-500)!important;background:rgba(113,135,154,.15)!important;border:1px solid rgba(113,135,154,.15)!important;border-radius:5px;font-size:.84375rem;font-weight:500;white-space:nowrap}#as3cf-settings.wpome .panel .panel-container .setting .panel-row.option p.wp-config+a{margin-left:1rem}#as3cf-settings.wpome .panel .panel-container .setting .panel-row.desc p.wp-config{margin-right:0}#as3cf-settings.wpome .panel .panel-container .setting .panel-row label.input-label p.wp-config{text-transform:none;padding:.2rem .5rem}#as3cf-settings.wpome .notice{all:unset;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;background:rgba(56,125,189,.1);border:1px solid #afc8ed;border-radius:5px;padding:.8rem 1.25rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#as3cf-settings.wpome .notice a,#as3cf-settings.wpome .notice p{margin:0!important}#as3cf-settings.wpome .notice a{display:inline-block;text-decoration:underline;font-size:.875rem!important}#as3cf-settings.wpome .notice-qsg p a{padding-right:1rem}#as3cf-settings.wpome .support-form{width:600px}#as3cf-settings.wpome .support-form input[type=text],#as3cf-settings.wpome .support-form select,#as3cf-settings.wpome .support-form textarea{width:100%;margin-bottom:1rem}#as3cf-settings.wpome .support-form textarea{margin-bottom:1.5rem}#as3cf-settings.wpome .support-form .note{font-size:.78125rem;color:var(--as3cf-color-gray-500);margin-bottom:2.5rem;line-height:1.5}#as3cf-settings.wpome .support-form .note.first{margin-bottom:.5rem}#as3cf-settings.wpome .support-form .actions{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;margin-bottom:2rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#as3cf-settings.wpome .support-form .actions .btn-primary{margin-left:auto}#as3cf-settings.wpome .diagnostic-info{max-width:600px;padding:.25rem 0}#as3cf-settings.wpome .diagnostic-info pre{height:14.375rem;white-space:pre-wrap;word-break:keep-all}#as3cf-settings.wpome .diagnostic-info hr{background:#d3d7db;height:3px;width:100%;border:0;margin-bottom:3rem}#as3cf-settings.wpome .diagnostic-info .btn-outline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-left:auto;width:-webkit-max-content;width:-moz-max-content;width:max-content}#as3cf-settings.wpome .documentation{background:#e4e5e7;border:1px solid var(--as3cf-wordpress-border-color);-webkit-box-shadow:0 2px 8px 0 rgba(0,0,0,.05);box-shadow:0 2px 8px 0 rgba(0,0,0,.05);border-radius:6px;padding:2.5rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:1.4rem 0 0 3rem;height:-webkit-max-content;height:-moz-max-content;height:max-content;width:240px;-webkit-box-sizing:border-box;box-sizing:border-box}#as3cf-settings.wpome .documentation h3{font-size:1.03125rem;color:var(--as3cf-color-gray-900);letter-spacing:.15px;font-weight:500;margin:0 0 2.25rem}#as3cf-settings.wpome .documentation a{font-size:.875rem;margin-bottom:1.25rem}#as3cf-settings.wpome .documentation a:last-of-type{margin-bottom:0}#as3cf-settings.wpome .upsell.panel{max-width:840px}#as3cf-settings.wpome .upsell .panel-container{padding:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;background:linear-gradient(136.01deg,rgba(255,228,205,.7) .94%,#fff 33.33%)}#as3cf-settings.wpome .upsell .branding{background:url(../img/brand/upsell-bunny.svg) no-repeat left bottom;min-width:280px;border-radius:5px;margin-right:-1.25rem}@media (max-width:840px){#as3cf-settings.wpome .upsell .branding{display:none}}#as3cf-settings.wpome .upsell .button{margin:1rem auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center!important}:root{--as3cf-code-type:consolas,monospace;--as3cf-color-white:#FFF;--as3cf-color-black:#000;--as3cf-color-gray-50:#FCFDFD;--as3cf-color-gray-100:#F9FAFB;--as3cf-color-gray-200:#F2F4F7;--as3cf-color-gray-300:#EAECF0;--as3cf-color-gray-400:#D0D5DD;--as3cf-color-gray-500:#98A2B3;--as3cf-color-gray-600:#667085;--as3cf-color-gray-700:#344054;--as3cf-color-gray-800:#1D2939;--as3cf-color-gray-900:#101828;--as3cf-color-primary-50:#FDF1EF;--as3cf-color-primary-100:#FBE2DF;--as3cf-color-primary-200:#F7C6BF;--as3cf-color-primary-300:#F4A99E;--as3cf-color-primary-400:#F08D7E;--as3cf-color-primary-500:#EC705E;--as3cf-color-primary-600:#C15B4C;--as3cf-color-primary-700:#96453A;--as3cf-color-primary-800:#6B3027;--as3cf-color-primary-900:#401A15;--as3cf-color-secondary-50:#EFF8FF;--as3cf-color-secondary-100:#D1E9FF;--as3cf-color-secondary-200:#B2DDFF;--as3cf-color-secondary-300:#84CAFF;--as3cf-color-secondary-400:#52B1FD;--as3cf-color-secondary-500:#2C90FA;--as3cf-color-secondary-600:#1270EF;--as3cf-color-secondary-700:#155CD3;--as3cf-color-secondary-800:#1749A9;--as3cf-color-secondary-900:#184185;--as3cf-secondary-color:#D8DDE2;--as3cf-text-disabled:#98A2B3;--as3cf-code-background:#102B44;--as3cf-separator-color:#EBEFF3;--as3cf-complete-color:#5BCB86;--as3cf-active-nav-color:#4E0D34;--as3cf-link-color:#0073AA;--as3cf-wordpress-background-color:#F1F1F1;--as3cf-wordpress-border-color:#D6D6D6;--as3cf-wordpress-notice-info-color:#02A0D2;--as3cf-notice-info-color:#2D69DA;--as3cf-notice-info-border-color:#2E6BDE;--as3cf-notice-info-background-color:#E7EFF9;--as3cf-wordpress-notice-success-color:#45B450;--as3cf-notice-success-color:#52AA59;--as3cf-notice-success-border-color:#63B969;--as3cf-notice-success-background-color:#EDF7EF;--as3cf-wordpress-notice-warning-color:#FFBA00;--as3cf-notice-warning-color:#F49C53;--as3cf-notice-warning-border-color:#E29936;--as3cf-notice-warning-background-color:#FDF8EB;--as3cf-notice-warning-code-background-color:#FCECC6;--as3cf-wordpress-notice-error-color:#DD3232;--as3cf-notice-error-color:#DA5A39;--as3cf-notice-error-border-color:#E8635E;--as3cf-notice-error-background-color:#F7EEEB;--as3cf-settings-ctrl-width:36px;--as3cf-settings-option-indent:1.2rem;--as3cf-settings-input-indent:0;--as3cf-settings-option-indent-right:2.25rem}body.settings_page_amazon-s3-and-cloudfront{background:var(--as3cf-wordpress-background-color)}body.settings_page_amazon-s3-and-cloudfront #wpcontent{padding-left:0!important}body.settings_page_amazon-s3-and-cloudfront #wpcontent #wpbody #wpbody-content>.notice{display:none}body.settings_page_amazon-s3-and-cloudfront #wpcontent #wpbody #wpbody-content .wpome .wpome-wrapper{max-width:1220px;margin:0 2rem 3rem 2rem}body.settings_page_amazon-s3-and-cloudfront #wpfooter{z-index:-2}.locked{opacity:.55}.flex-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.flex-column{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.align-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.align-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.align-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important} \ No newline at end of file diff --git a/assets/css/styles.css b/assets/css/styles.css deleted file mode 100644 index 28c91ebb..00000000 --- a/assets/css/styles.css +++ /dev/null @@ -1 +0,0 @@ -.as3cf-content,.as3cf-updated,.as3cf-compatibility-notice{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:650px}.settings_page_amazon-s3-and-cloudfront .error,.settings_page_amazon-s3-and-cloudfront .notice,.settings_page_amazon-s3-and-cloudfront .updated{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:650px}.as3cf-main.wrap{position:relative}.as3cf-main.wrap>h1{float:left}.as3cf-main.wrap .as3cf-notice,.as3cf-main.wrap .as3cf-updated,.as3cf-main.wrap .as3cf-error{-webkit-box-sizing:border-box;box-sizing:border-box}.as3cf-main.wrap .as3cf-error.fatal{clear:both}.as3cf-main.wrap h2.nav-tab-wrapper{float:none;margin-bottom:15px;width:650px;margin-top:10px;padding:9px 0 0 5px}.as3cf-main.wrap h2.nav-tab-wrapper .nav-tab-container{float:right}.as3cf-main.wrap h2.nav-tab-wrapper .nav-tab-container :last-child{margin-right:5px}.as3cf-main.wrap h2.nav-tab-wrapper a.nav-tab-active{color:#464646;cursor:default}.as3cf-main.wrap h2.nav-tab-wrapper a:focus{-webkit-box-shadow:none;box-shadow:none}.as3cf-main.wrap .more-info{white-space:nowrap}.as3cf-main.wrap .error pre{background:#eaeaea;background:rgba(0,0,0,0.07);display:block;padding:10px 15px}.as3cf-main.wrap .error pre code{padding:0;background:none}.as3cf-main.wrap[data-tab="support"] .as3cf-notice,.as3cf-main.wrap[data-tab="support"] .error,.as3cf-main.wrap[data-tab="support"] .updated,.as3cf-main.wrap[data-tab="support"] .updated.show{display:none}.as3cf-main.wrap[data-tab="support"] .fatal .error,.as3cf-main.wrap[data-tab="support"] .as3cf-notice.important,.as3cf-main.wrap[data-tab="support"] .dbrains-api-down{display:block}.as3cf-main.wrap .as3cf-notice,.as3cf-main.wrap .error,.as3cf-main.wrap .updated{max-width:650px;margin-top:15px;-webkit-box-sizing:border-box;box-sizing:border-box}.as3cf-main.wrap .as3cf-updated{display:none}.as3cf-main.wrap .as3cf-updated.as3cf-notice,.as3cf-main.wrap .as3cf-updated.show{display:block}.as3cf-main.wrap .alignleft{margin-right:20px;margin-bottom:20px}.as3cf-main.wrap .spinner{min-width:20px}.as3cf-tab .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab .as3cf-main-settings .as3cf-bucket-container,.as3cf-tab .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab .as3cf-main-settings .as3cf-bucket-container h3,.as3cf-tab .as3cf-main-settings .as3cf-change-bucket-access-prompt h3{margin-bottom:-0.5em}.as3cf-tab .as3cf-main-settings a.as3cf-change-provider{display:none}.as3cf-tab .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-can-write-error,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-can-write-error{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-provider-select,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-provider-select{display:block}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-bucket-container,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-bucket-container{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-change-bucket-access-prompt,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-delivery-provider-select,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-media-settings,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-can-write-error,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-can-write-error{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-provider-select,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-bucket-container,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-bucket-container{display:block}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-change-bucket-access-prompt,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-delivery-provider-select,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-media-settings,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-can-write-error{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-bucket-container{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:block}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-can-write-error{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-bucket-container{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-delivery-provider-select{display:block}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-bucket-container{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-media-settings{display:block}.as3cf-content>section{margin-bottom:20px}.as3cf-content>section+section.as3cf-access-keys{padding-top:20px;border-top:1px solid #d3d3d3}.as3cf-content>section+section.as3cf-access-keys .as3cf-section-heading{margin-top:0}.as3cf-tab{display:none;position:relative;width:650px}.as3cf-tab .as3cf-main-settings p{font-size:13px}.as3cf-tab .as3cf-main-settings p a{color:#444}.as3cf-tab .object-prefix-desc em{white-space:nowrap}.as3cf-tab .as3cf-url-preview-wrap{background:#fff;text-align:center;padding:20px 0 0;max-width:650px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.as3cf-tab .as3cf-url-preview-wrap .as3cf-url-preview{margin-top:10px;padding:0 20px 10px;overflow-x:scroll}.as3cf-tab .as3cf-url-preview-wrap span{color:#aaa;text-transform:uppercase;font-weight:bold}.as3cf-tab .as3cf-radio-group label{display:block;margin-bottom:10px}.as3cf-tab .as3cf-radio-group label.disabled,.as3cf-tab .as3cf-radio-group label.disabled p{color:#bbb;cursor:default}.as3cf-tab .as3cf-radio-group p{padding-left:25px;color:#6b6b6b;margin:0;font-size:12px}.as3cf-tab .as3cf-radio-group p.as3cf-setting{margin-top:5px}.as3cf-tab .as3cf-switch{position:relative;display:inline-block;padding:2px;overflow:hidden;border-radius:2px;background-color:#d4d3d3;cursor:pointer}.as3cf-tab .as3cf-switch.on{background-color:#ade7b5}.as3cf-tab .as3cf-switch span{visibility:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;float:left;display:inline-block;height:100%;font-size:12px;line-height:20px;border-radius:2px;font-weight:bold;padding:4px 8px;background:#fff;color:#8d8d8d;z-index:1}.as3cf-tab .as3cf-switch span.on{color:#82d78b}.as3cf-tab .as3cf-switch span.checked{visibility:visible}.as3cf-tab .as3cf-switch.disabled{cursor:default;background:#e6e6e6}.as3cf-tab .as3cf-switch.disabled span{background:#f1f1f1;color:#d6d6d6}.as3cf-tab .as3cf-switch input[type="checkbox"]{position:absolute !important;top:0;left:0;opacity:0;filter:alpha(opacity=0);z-index:-1}.as3cf-tab .as3cf-setting.hide{display:none}.as3cf-tab .as3cf-setting .as3cf-sub-setting .as3cf-sub-setting-heading{padding-top:15px}.as3cf-tab .as3cf-setting .as3cf-sub-setting .as3cf-defined-in-config{margin-top:15px}.as3cf-tab div.as3cf-setting{margin-top:4px}.as3cf-tab h3{font-weight:normal;text-transform:uppercase}.as3cf-tab .form-table{margin:0}.as3cf-tab .form-table tr.as3cf-border-bottom td{border-bottom:1px solid #ddd;padding:20px 0px}.as3cf-tab .form-table tr.as3cf-setting-title td{padding-bottom:0}.as3cf-tab .form-table tr.as3cf-setting-title:first-child td{padding-top:20px}.as3cf-tab .form-table tr.configure-url:first-child td{padding-top:5px;padding-bottom:0}.as3cf-tab .form-table tr.hide{display:none}.as3cf-tab .form-table tr td{padding:15px 0}.as3cf-tab .form-table tr td:first-child{vertical-align:top;min-width:120px;padding-top:20px}.as3cf-tab .form-table tr td .as3cf-notice:last-child{margin-bottom:0}.as3cf-tab .form-table tr td>p:first-child{margin-top:0}.as3cf-tab .form-table h3{padding:0;margin:0}.as3cf-tab .form-table h4{margin:0}.as3cf-tab .as3cf-active-region{font-style:italic}.as3cf-tab .as3cf-view-bucket{color:#444;text-decoration:none;margin-right:10px}.as3cf-tab .as3cf-view-bucket:hover,.as3cf-tab .as3cf-view-bucket:active{color:#00a0d2}.as3cf-tab .as3cf-view-bucket:focus{-webkit-box-shadow:none;box-shadow:none}.as3cf-tab .as3cf-view-bucket .dashicons-external{margin-top:-2px}.as3cf-tab .tooltip{position:relative;z-index:2;cursor:pointer}.as3cf-tab .tooltip:before,.as3cf-tab .tooltip:after{visibility:hidden;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0;pointer-events:none}.as3cf-tab .tooltip:before{position:absolute;bottom:150%;left:50%;margin-bottom:5px;margin-left:-250px;padding:10px;width:500px;border-radius:3px;background-color:#000;background-color:rgba(51,51,51,0.9);color:#fff;content:attr(data-tooltip);text-align:center;font-size:14px;line-height:1.3}.as3cf-tab .tooltip:after{position:absolute;bottom:150%;left:50%;margin-left:-5px;width:0;border-top:5px solid #000;border-top:5px solid rgba(51,51,51,0.9);border-right:5px solid transparent;border-left:5px solid transparent;content:" ";font-size:0;line-height:0}.as3cf-tab .tooltip:hover:before,.as3cf-tab .tooltip:hover:after{visibility:visible;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.as3cf-tab .as3cf-defined-in-config{background:#ccc;color:#fff;padding:2px 5px;margin:0 0 3px 5px;float:right;white-space:nowrap;clear:right}.as3cf-tab .as3cf-defined-setting,.as3cf-tab .as3cf-locked-setting{color:#bbb}.as3cf-tab .as3cf-defined-setting label,.as3cf-tab .as3cf-locked-setting label{cursor:default}.as3cf-tab .as3cf-defined-setting p .more-info a,.as3cf-tab .as3cf-locked-setting p .more-info a{color:#bbb}.as3cf-tab .as3cf-defined-setting .as3cf-radio-group p,.as3cf-tab .as3cf-locked-setting .as3cf-radio-group p{color:#bbb}.as3cf-tab .as3cf-defined-setting .as3cf-notice,.as3cf-tab .as3cf-locked-setting .as3cf-notice{display:none !important}.as3cf-tab p.actions{margin:30px 0;border-top:1px solid #ccc;padding-top:15px}.as3cf-tab p.actions button,.as3cf-tab p.actions .right{float:right;margin-left:15px;margin-right:0;min-width:90px}.as3cf-tab p.actions button:last-of-type,.as3cf-tab p.actions .right:last-of-type{margin-left:0}.as3cf-tab p.actions span{display:inline-block;margin-right:20px;line-height:28px}.as3cf-tab .locked .as3cf-radio-group label,.as3cf-tab .locked .as3cf-radio-group label p{color:#bbb;cursor:default}.as3cf-tab .locked .as3cf-switch{cursor:default;background:#e6e6e6}.as3cf-tab .locked .as3cf-switch span{background:#f1f1f1;color:#d6d6d6}#tab-media{display:block}#tab-media .as3cf-provider-setting td{padding-top:20px;padding-bottom:5px}#tab-media .as3cf-bucket-setting td{padding:5px 0}.as3cf-bucket-container h3{line-height:1.3;text-transform:none}.as3cf-bucket-container a:focus{-webkit-box-shadow:none;box-shadow:none;outline:none}.as3cf-bucket-container input[type=text]{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.as3cf-bucket-container select{-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.as3cf-bucket-container .form-table .as3cf-provider-setting h4{font-weight:inherit;margin:0}.as3cf-bucket-container .form-table .as3cf-bucket-list{margin:5px 0 0 0}.as3cf-bucket-container .form-table td{padding:5px 0}.as3cf-bucket-container .form-table td:first-child{width:100px;line-height:30px;vertical-align:top}.as3cf-bucket-container .form-table td .as3cf-defined-in-config{margin-top:-1.75em}.as3cf-bucket-container .as3cf-bucket-list{padding:15px;max-height:200px;overflow-x:hidden;overflow-y:auto;background-color:#fff;font-size:14px}.as3cf-bucket-container .as3cf-bucket-list li:last-of-type{margin-bottom:0}.as3cf-bucket-container .as3cf-bucket-list a{color:#444;text-decoration:none}.as3cf-bucket-container .as3cf-bucket-list a:hover{color:#0074a2}.as3cf-bucket-container .as3cf-bucket-list a.selected{font-weight:bold;color:#0074a2}.as3cf-bucket-container .as3cf-bucket-list a .dashicons{margin-right:5px}.as3cf-change-bucket-access-prompt h3{line-height:1.3;text-transform:none}.as3cf-change-bucket-access-prompt .as3cf-radio-group{margin-bottom:25px}.as3cf-change-bucket-access-prompt .note{color:#999}.as3cf-delivery-provider-select h3{line-height:1.3;text-transform:none}.as3cf-delivery-provider-select .note{color:#999}#tab-media{display:block}#tab-support{min-height:900px}#tab-support .as3cf-sidebar{top:11px}#tab-support .support-section{border-bottom:1px solid #ccc;padding-bottom:20px;margin-bottom:20px}#tab-support .support-section h3{font-size:20px}#tab-support .debug textarea{width:100%;min-height:200px;font-family:Consolas, Monaco, monospace;margin-bottom:5px}.as3cf-sidebar{position:absolute;top:9px;left:670px;width:292px}.as3cf-sidebar.lite{margin-top:35px;background:white;border-radius:7px;border:1px solid #D9E1EB;overflow:hidden;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,0.1);box-shadow:0 1px 2px 0 rgba(0,0,0,0.1)}.as3cf-sidebar .block{padding:20px;border:1px solid #ccc}.as3cf-sidebar .subscribe{border-top:none;text-align:center;padding:40px 20px}.as3cf-sidebar .subscribe h2{padding:0;margin:0;margin-bottom:0.5em;color:#666;font-size:17px;line-height:1.2em;float:none}.as3cf-sidebar .subscribe h3{font-size:16px;margin:20px 0 0}.as3cf-sidebar .subscribe h3 a{background-color:#E9715E;color:white;display:inline-block;font-size:13px;font-weight:bold;letter-spacing:1px;text-transform:uppercase;padding:15px 50px;border-radius:4px;margin-bottom:6px;text-decoration:none;-webkit-box-shadow:0 2px 0 #C6442F;box-shadow:0 2px 0 #C6442F}.as3cf-sidebar .subscribe h3 a:hover{color:rgba(78,13,51,0.65)}.as3cf-sidebar .subscribe p{margin:0}.as3cf-sidebar .subscribe .discount-applied{color:rgba(0,0,0,0.4);font-size:12px;line-height:1.4em;margin-top:10px}.as3cf-sidebar .credits{border-top:0;background:#2E2E31;text-align:center;padding:10px}.as3cf-sidebar .credits h4{font-size:11px;font-weight:normal;color:rgba(255,255,255,0.7);margin-top:0;margin-bottom:10px}.as3cf-sidebar .credits ul{display:inline-block;margin:0}.as3cf-sidebar .credits li{overflow:hidden}.as3cf-sidebar .credits li:last-child{margin-bottom:0}.as3cf-sidebar .credits img{display:inline-block;vertical-align:middle;margin-right:8px}.as3cf-sidebar .credits span{display:inline-block;vertical-align:middle;font-size:12px;line-height:24px}.as3cf-sidebar .credits a{display:block;text-decoration:none;color:white;font-size:12px;text-align:center}.as3cf-sidebar .credits a:hover{color:rgba(255,255,255,0.7)}@media screen and (max-width: 1052px){.as3cf-sidebar{position:relative;top:auto;right:auto}}.as3cf-active-provider,.as3cf-active-bucket{font-weight:bold;margin-right:10px}.as3cf-banner{width:292px;height:156px;display:block;background:#f8cfae url(../img/os3-banner.svg) left bottom/100% no-repeat}.as3cf-banner:focus{-webkit-box-shadow:none;box-shadow:none}.wrap .as3cf-upgrade-details{background-color:#4e0d33;padding:10px 20px 20px 20px;color:#eee;font-size:13px;margin:0;display:block;text-decoration:none}.wrap .as3cf-upgrade-details h1{font-size:27px;color:#f8cfae;margin:0 0 15px 0;padding:0;font-weight:300;line-height:1}.wrap .as3cf-upgrade-details h2{font-size:15px;color:#F8CFAE;margin:0 0 30px 0;font-weight:500;line-height:20px}.wrap .as3cf-upgrade-details p{margin:0}.wrap .as3cf-upgrade-details a{color:#eee;font-weight:bold;text-decoration:none;font-size:16px;-webkit-box-shadow:none;box-shadow:none}.wrap .as3cf-upgrade-details a:hover{color:#fff}.wrap .as3cf-upgrade-details ul{margin:0;list-style:none}.wrap .as3cf-upgrade-details ul li{margin-bottom:15px;line-height:18px;padding-left:25px;background:url(../img/icon-checked.svg) left center no-repeat}.as3cf-compatibility-notice.error{clear:both;margin:5px 20px 5px 0}.as3cf-bucket-error span.title{font-weight:bold}.as3cf-invalid-bucket-name,.as3cf-validation-error{display:block;margin-top:2px;font-size:12px;color:#a00}.as3cf-notice-toggle-content{max-height:100px;overflow-y:scroll}.as3cf-notice-toggle-content .as3cf-notice-toggle-list{margin-top:0;margin-left:0;padding-left:40px;color:#dc3232}.as3cf-need-help{background-color:white;font-size:16px;font-weight:bold;padding:1em}.as3cf-need-help a{text-decoration:none}.as3cf-settings h3{font-size:20px}.as3cf-settings p{font-size:14px}.as3cf-addons,.as3cf-tab .as3cf-compatibility-notice{max-width:cover}textarea.as3cf-access-key-constants-snippet.code{width:100%;white-space:pre;overflow:hidden;font-size:12px;padding:10px;height:53px}.as3cf-addons .as3cf-addons-list{margin:20px 0 200px;padding-top:5px}.as3cf-addons .as3cf-addon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:20px;font-size:14px}.as3cf-addons .as3cf-addon-info{min-height:100px}.as3cf-addons .as3cf-addon-links{float:right}.as3cf-addons .as3cf-addon-links span{padding:4px 6px}.as3cf-addons .as3cf-addon-icon{float:left;margin-right:20px}.as3cf-addons .as3cf-addon-details{white-space:nowrap}.as3cf-addons .as3cf-addon-title,.as3cf-addons .as3cf-addon-description{font-weight:100}.as3cf-addons .as3cf-addon+.as3cf-addon{margin-top:20px}.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull{background-color:#0769ad;color:white}.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull .as3cf-addon-title,.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull .as3cf-addon-description,.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull a{color:white}.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull .extra{background:white}.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull .extra a{color:#0769ad;text-decoration:none} diff --git a/assets/img/as3cf-banner-bw.jpg b/assets/img/as3cf-banner-bw.jpg deleted file mode 100644 index 8ee652bfc3528cd5693cdf64db8e17371fa9a772..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28115 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 o0M5^guGHQEoEy5y|4Wm_3L5)DB!=# z`8I%2$J^S`A3y;BU36mrfb#_)pS_otn~Ic_i>IU&*7b>vq_wNFl%JKGl#Hab6hKYW z&&|r((Z&n$#Kz9SMP1-~?NS8+0EI;%L?J=?BwF9;-@a~ufbI=>i=|02_XIj;^n9=fc}Rn;-LWsq3!BngOHb0 zkg%3kP(&yyOUlSAD#|H}BaqTE@>0^WQnJz#NLdv*X%#sn;@?H!f|>``R^^V4-oI&G zwA2OuJt<#bUrAqCNmma$DH&yDWhrT-6cQ`2V_E&d&eL>tE2GUUzK%n~nb~w5PGZn~l^R z8&6kn4{MtXaKZl|U##8#o6tXi7u=}mxLSKV+qigL*HIU^=#j)aU{$1bq!nb)a!B;W zn#suM%A;izw6xLM%F6P(dRlVYa{s}-?&9fX+ITql*kJWMT%8gBS|1gM|G|Tn z9$M#uVLfdHT}7mVma?*rp0u(8Qcq4x39Y0pEhF%69PIy?^Zyq|>Vmk`Kb!eKHupbW z7ZUSN^}j^*qVZqCZsT$x;T{*Fe7*~y|CfLQu#Fdw48{2rAQV9PUj=wk1A;ETfgmc- zKZOcR^{)a3Lm*HH1WZj$LqknX_kR`&AP`6eqM`$aCB?v+Z0D_pPCYdPwY!9~x@0}J~H1f5HX@;S!3!XjlYSOs_4;1@XJdWsW9PADY31XUsginl=tA5h@1^=%O?Dao@|YeUP}X;RhCZswC8-s z+=$K@#GQU*fkpmOA&UnPd0{C^t7x%~bHF0rIjk*=dGm%C?fCovx4*eeB@--6&R;@kC_^z)lE;Ho;c37lOI(8p8P_C4`;mqBBMUVu z`;dh8Mqs0o=;CeByNF@J2o!;40^K|Ig^Sf;#Lc9FDI*6^SJWO4v7sMvLLg6I|)Xca%^M5?v^U?wJ=4e6hY zLG#QGNT8A<5_=?MRv5}D?#`zLUE}V-;XIL$Z#^A!PDCSZ&n|ppcQgK8xC)V1(gr=R zk;}`i_aOi-mBXL~el3{`FXNs<8@yVCYDtNK-8lErrPDbBRf`nLdwpK75L2%zWpG@f z9HJz6@C&6PStSD}S5i01VA6SHn+GbbKAtr^7GSgsAgkxQj{ae_^&V28qX569`h3`@ zemA|Wr1WG&twTk=tMC4!AGu1c?jdxd)5jP)4@P^Bu*TbX3NyaPX+RfN0RrDs9!zgR zYJpmlDLwXZsufgHt?q!|e<6~&G=74)>-D$nOLt}I&cM84&sEJ&cp&D{6Z43

SnE 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 diff --git a/assets/img/as3cf-banner@2x.jpg b/assets/img/as3cf-banner@2x.jpg deleted file mode 100644 index f45a6d35e3fef9e9ac96936400dc6c60ec6de20e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96997 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 diff --git a/assets/img/aws-logo.svg b/assets/img/aws-logo.svg deleted file mode 100644 index f7cba68a..00000000 --- a/assets/img/aws-logo.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/assets/img/brand/default.svg b/assets/img/brand/default.svg new file mode 100644 index 00000000..c31f3218 --- /dev/null +++ b/assets/img/brand/default.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/assets/img/brand/ome-branding-transparent.svg b/assets/img/brand/ome-branding-transparent.svg new file mode 100644 index 00000000..dd2f7131 --- /dev/null +++ b/assets/img/brand/ome-branding-transparent.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/assets/img/brand/ome-medallion.svg b/assets/img/brand/ome-medallion.svg new file mode 100644 index 00000000..f61c82b4 --- /dev/null +++ b/assets/img/brand/ome-medallion.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/brand/upsell-bunny.svg b/assets/img/brand/upsell-bunny.svg new file mode 100644 index 00000000..21fa58dd --- /dev/null +++ b/assets/img/brand/upsell-bunny.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/do-logo.svg b/assets/img/do-logo.svg deleted file mode 100644 index 42b3f3f7..00000000 --- a/assets/img/do-logo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/assets/img/gcp-logo.svg b/assets/img/gcp-logo.svg deleted file mode 100644 index 9ff0c310..00000000 --- a/assets/img/gcp-logo.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/assets/img/icon-assets-pull.svg b/assets/img/icon-assets-pull.svg deleted file mode 100644 index 4b66e973..00000000 --- a/assets/img/icon-assets-pull.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - Untitled - Created with Sketch. - - - - - \ No newline at end of file diff --git a/assets/img/icon/arrow.svg b/assets/img/icon/arrow.svg new file mode 100644 index 00000000..cc9c0e2c --- /dev/null +++ b/assets/img/icon/arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/icon/assets-wizard.svg b/assets/img/icon/assets-wizard.svg new file mode 100644 index 00000000..69b85577 --- /dev/null +++ b/assets/img/icon/assets-wizard.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/img/icon/bucket-round.svg b/assets/img/icon/bucket-round.svg new file mode 100644 index 00000000..a698e78b --- /dev/null +++ b/assets/img/icon/bucket-round.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/img/icon/bucket.svg b/assets/img/icon/bucket.svg new file mode 100644 index 00000000..bb025102 --- /dev/null +++ b/assets/img/icon/bucket.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/icon/check.svg b/assets/img/icon/check.svg new file mode 100644 index 00000000..22a50109 --- /dev/null +++ b/assets/img/icon/check.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/icon/close.svg b/assets/img/icon/close.svg new file mode 100644 index 00000000..1cea6fdc --- /dev/null +++ b/assets/img/icon/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/icon/css.svg b/assets/img/icon/css.svg new file mode 100644 index 00000000..da932b19 --- /dev/null +++ b/assets/img/icon/css.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icon/dot.svg b/assets/img/icon/dot.svg new file mode 100644 index 00000000..8885aa46 --- /dev/null +++ b/assets/img/icon/dot.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/icon/download.svg b/assets/img/icon/download.svg new file mode 100644 index 00000000..930b12fc --- /dev/null +++ b/assets/img/icon/download.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icon/error.svg b/assets/img/icon/error.svg new file mode 100644 index 00000000..5f746176 --- /dev/null +++ b/assets/img/icon/error.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/img/icon/fonts.svg b/assets/img/icon/fonts.svg new file mode 100644 index 00000000..2e4fa80d --- /dev/null +++ b/assets/img/icon/fonts.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icon/help.svg b/assets/img/icon/help.svg new file mode 100644 index 00000000..0c36dea7 --- /dev/null +++ b/assets/img/icon/help.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/icon/info.svg b/assets/img/icon/info.svg new file mode 100644 index 00000000..38085f43 --- /dev/null +++ b/assets/img/icon/info.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/img/icon/js.svg b/assets/img/icon/js.svg new file mode 100644 index 00000000..8b6e32cd --- /dev/null +++ b/assets/img/icon/js.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icon/licence-checked.svg b/assets/img/icon/licence-checked.svg new file mode 100644 index 00000000..4fc3bbcd --- /dev/null +++ b/assets/img/icon/licence-checked.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/img/icon/notification-error.svg b/assets/img/icon/notification-error.svg new file mode 100644 index 00000000..7e725188 --- /dev/null +++ b/assets/img/icon/notification-error.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/img/icon/notification-info.svg b/assets/img/icon/notification-info.svg new file mode 100644 index 00000000..08d386ba --- /dev/null +++ b/assets/img/icon/notification-info.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/img/icon/notification-locked.svg b/assets/img/icon/notification-locked.svg new file mode 100644 index 00000000..c8d10688 --- /dev/null +++ b/assets/img/icon/notification-locked.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/icon/notification-success.svg b/assets/img/icon/notification-success.svg new file mode 100644 index 00000000..dac41e88 --- /dev/null +++ b/assets/img/icon/notification-success.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/img/icon/notification-warning.svg b/assets/img/icon/notification-warning.svg new file mode 100644 index 00000000..320f7636 --- /dev/null +++ b/assets/img/icon/notification-warning.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/img/icon/offload-complete.svg b/assets/img/icon/offload-complete.svg new file mode 100644 index 00000000..89dfebbd --- /dev/null +++ b/assets/img/icon/offload-complete.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/img/icon/offload-remaining.svg b/assets/img/icon/offload-remaining.svg new file mode 100644 index 00000000..bb400542 --- /dev/null +++ b/assets/img/icon/offload-remaining.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icon/provider/delivery/aws-round.svg b/assets/img/icon/provider/delivery/aws-round.svg new file mode 100644 index 00000000..ff2a4e83 --- /dev/null +++ b/assets/img/icon/provider/delivery/aws-round.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icon/provider/delivery/aws.svg b/assets/img/icon/provider/delivery/aws.svg new file mode 100644 index 00000000..f3bdd5e5 --- /dev/null +++ b/assets/img/icon/provider/delivery/aws.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icon/provider/delivery/cdn-round.svg b/assets/img/icon/provider/delivery/cdn-round.svg new file mode 100644 index 00000000..2060de19 --- /dev/null +++ b/assets/img/icon/provider/delivery/cdn-round.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/img/icon/provider/delivery/cdn.svg b/assets/img/icon/provider/delivery/cdn.svg new file mode 100644 index 00000000..c054f051 --- /dev/null +++ b/assets/img/icon/provider/delivery/cdn.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/icon/provider/delivery/cloudflare-round.svg b/assets/img/icon/provider/delivery/cloudflare-round.svg new file mode 100644 index 00000000..6eac1786 --- /dev/null +++ b/assets/img/icon/provider/delivery/cloudflare-round.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/img/icon/provider/delivery/cloudflare.svg b/assets/img/icon/provider/delivery/cloudflare.svg new file mode 100644 index 00000000..e19d3418 --- /dev/null +++ b/assets/img/icon/provider/delivery/cloudflare.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/img/icon/provider/delivery/do-round.svg b/assets/img/icon/provider/delivery/do-round.svg new file mode 100644 index 00000000..e29eda7c --- /dev/null +++ b/assets/img/icon/provider/delivery/do-round.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/img/icon/provider/delivery/do.svg b/assets/img/icon/provider/delivery/do.svg new file mode 100644 index 00000000..606105e6 --- /dev/null +++ b/assets/img/icon/provider/delivery/do.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/img/icon/provider/delivery/gcp-round.svg b/assets/img/icon/provider/delivery/gcp-round.svg new file mode 100644 index 00000000..ec582348 --- /dev/null +++ b/assets/img/icon/provider/delivery/gcp-round.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/img/icon/provider/delivery/gcp.svg b/assets/img/icon/provider/delivery/gcp.svg new file mode 100644 index 00000000..92e63a13 --- /dev/null +++ b/assets/img/icon/provider/delivery/gcp.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/img/icon/provider/delivery/keycdn.svg b/assets/img/icon/provider/delivery/keycdn.svg new file mode 100644 index 00000000..b4ce9937 --- /dev/null +++ b/assets/img/icon/provider/delivery/keycdn.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/img/icon/provider/delivery/other-round.svg b/assets/img/icon/provider/delivery/other-round.svg new file mode 100644 index 00000000..2060de19 --- /dev/null +++ b/assets/img/icon/provider/delivery/other-round.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/img/icon/provider/delivery/other.svg b/assets/img/icon/provider/delivery/other.svg new file mode 100644 index 00000000..c054f051 --- /dev/null +++ b/assets/img/icon/provider/delivery/other.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/icon/provider/delivery/stackpath-round.svg b/assets/img/icon/provider/delivery/stackpath-round.svg new file mode 100644 index 00000000..0752d3c3 --- /dev/null +++ b/assets/img/icon/provider/delivery/stackpath-round.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/img/icon/provider/delivery/stackpath.svg b/assets/img/icon/provider/delivery/stackpath.svg new file mode 100644 index 00000000..6a6239b7 --- /dev/null +++ b/assets/img/icon/provider/delivery/stackpath.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/img/icon/provider/storage/aws-link.svg b/assets/img/icon/provider/storage/aws-link.svg new file mode 100644 index 00000000..4dd39dfa --- /dev/null +++ b/assets/img/icon/provider/storage/aws-link.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/icon/provider/storage/aws-round.svg b/assets/img/icon/provider/storage/aws-round.svg new file mode 100644 index 00000000..63a8d951 --- /dev/null +++ b/assets/img/icon/provider/storage/aws-round.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/img/icon/provider/storage/aws.svg b/assets/img/icon/provider/storage/aws.svg new file mode 100644 index 00000000..f782be3d --- /dev/null +++ b/assets/img/icon/provider/storage/aws.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/icon/provider/storage/do-link.svg b/assets/img/icon/provider/storage/do-link.svg new file mode 100644 index 00000000..ceff8ae7 --- /dev/null +++ b/assets/img/icon/provider/storage/do-link.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/img/icon/provider/storage/do-round.svg b/assets/img/icon/provider/storage/do-round.svg new file mode 100644 index 00000000..e29eda7c --- /dev/null +++ b/assets/img/icon/provider/storage/do-round.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/img/icon/provider/storage/do.svg b/assets/img/icon/provider/storage/do.svg new file mode 100644 index 00000000..606105e6 --- /dev/null +++ b/assets/img/icon/provider/storage/do.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/img/icon/provider/storage/gcp-link.svg b/assets/img/icon/provider/storage/gcp-link.svg new file mode 100644 index 00000000..9652d676 --- /dev/null +++ b/assets/img/icon/provider/storage/gcp-link.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/img/icon/provider/storage/gcp-round.svg b/assets/img/icon/provider/storage/gcp-round.svg new file mode 100644 index 00000000..ec582348 --- /dev/null +++ b/assets/img/icon/provider/storage/gcp-round.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/img/icon/provider/storage/gcp.svg b/assets/img/icon/provider/storage/gcp.svg new file mode 100644 index 00000000..92e63a13 --- /dev/null +++ b/assets/img/icon/provider/storage/gcp.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/img/icon/region-round.svg b/assets/img/icon/region-round.svg new file mode 100644 index 00000000..095f75a2 --- /dev/null +++ b/assets/img/icon/region-round.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/img/icon/region.svg b/assets/img/icon/region.svg new file mode 100644 index 00000000..ffb05f88 --- /dev/null +++ b/assets/img/icon/region.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/img/icon/remove-from-bucket.svg b/assets/img/icon/remove-from-bucket.svg new file mode 100644 index 00000000..50808b35 --- /dev/null +++ b/assets/img/icon/remove-from-bucket.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icon/remove-from-server.svg b/assets/img/icon/remove-from-server.svg new file mode 100644 index 00000000..9747a052 --- /dev/null +++ b/assets/img/icon/remove-from-server.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icon/stars.svg b/assets/img/icon/stars.svg new file mode 100644 index 00000000..c883e072 --- /dev/null +++ b/assets/img/icon/stars.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/img/icon/subnav-arrow.svg b/assets/img/icon/subnav-arrow.svg new file mode 100644 index 00000000..a3385005 --- /dev/null +++ b/assets/img/icon/subnav-arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/icon/tool-analyzerepair-active.svg b/assets/img/icon/tool-analyzerepair-active.svg new file mode 100644 index 00000000..de3e4f02 --- /dev/null +++ b/assets/img/icon/tool-analyzerepair-active.svg @@ -0,0 +1,16 @@ + + + icon/tools/tool-analyzerepeair-active + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-analyzerepair-default.svg b/assets/img/icon/tool-analyzerepair-default.svg new file mode 100644 index 00000000..24b51a71 --- /dev/null +++ b/assets/img/icon/tool-analyzerepair-default.svg @@ -0,0 +1,16 @@ + + + icon/tools/tool-analyzerepeair-default + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-analyzerepair-paused.svg b/assets/img/icon/tool-analyzerepair-paused.svg new file mode 100644 index 00000000..49d37d24 --- /dev/null +++ b/assets/img/icon/tool-analyzerepair-paused.svg @@ -0,0 +1,18 @@ + + + icon/tools/tool-analyzerepeair-paused + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-analyzerepair-running-animated.svg b/assets/img/icon/tool-analyzerepair-running-animated.svg new file mode 100644 index 00000000..5813d9c0 --- /dev/null +++ b/assets/img/icon/tool-analyzerepair-running-animated.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/icon/tool-clean-active.svg b/assets/img/icon/tool-clean-active.svg new file mode 100644 index 00000000..7f21874d --- /dev/null +++ b/assets/img/icon/tool-clean-active.svg @@ -0,0 +1,17 @@ + + + icon/tools/tool-clean-active + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-clean-default.svg b/assets/img/icon/tool-clean-default.svg new file mode 100644 index 00000000..39e57901 --- /dev/null +++ b/assets/img/icon/tool-clean-default.svg @@ -0,0 +1,12 @@ + + + icon/tools/tool-clean-default + + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-clean-paused.svg b/assets/img/icon/tool-clean-paused.svg new file mode 100644 index 00000000..db58d0aa --- /dev/null +++ b/assets/img/icon/tool-clean-paused.svg @@ -0,0 +1,14 @@ + + + icon/tools/tool-clean-paused + + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-clean-running-animated.svg b/assets/img/icon/tool-clean-running-animated.svg new file mode 100644 index 00000000..b8987f11 --- /dev/null +++ b/assets/img/icon/tool-clean-running-animated.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/icon/tool-download-active.svg b/assets/img/icon/tool-download-active.svg new file mode 100644 index 00000000..c98677cb --- /dev/null +++ b/assets/img/icon/tool-download-active.svg @@ -0,0 +1,11 @@ + + + icon/tools/tool-download-active + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-download-default.svg b/assets/img/icon/tool-download-default.svg new file mode 100644 index 00000000..b6df6be3 --- /dev/null +++ b/assets/img/icon/tool-download-default.svg @@ -0,0 +1,8 @@ + + + icon/tools/tool-download-default + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-download-paused.svg b/assets/img/icon/tool-download-paused.svg new file mode 100644 index 00000000..6b4d036b --- /dev/null +++ b/assets/img/icon/tool-download-paused.svg @@ -0,0 +1,10 @@ + + + icon/tools/tool-download-paused + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-download-running-animated.svg b/assets/img/icon/tool-download-running-animated.svg new file mode 100644 index 00000000..01f9104a --- /dev/null +++ b/assets/img/icon/tool-download-running-animated.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/icon/tool-generic-active.svg b/assets/img/icon/tool-generic-active.svg new file mode 100644 index 00000000..af1b0adc --- /dev/null +++ b/assets/img/icon/tool-generic-active.svg @@ -0,0 +1,11 @@ + + + icon/tools/tool-generic-active + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-generic-default.svg b/assets/img/icon/tool-generic-default.svg new file mode 100644 index 00000000..34238bd6 --- /dev/null +++ b/assets/img/icon/tool-generic-default.svg @@ -0,0 +1,11 @@ + + + icon/tools/tool-generic-default + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-generic-paused.svg b/assets/img/icon/tool-generic-paused.svg new file mode 100644 index 00000000..61348e36 --- /dev/null +++ b/assets/img/icon/tool-generic-paused.svg @@ -0,0 +1,13 @@ + + + icon/tools/tool-generic-paused + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-generic-running-animated.svg b/assets/img/icon/tool-generic-running-animated.svg new file mode 100644 index 00000000..50d3bf98 --- /dev/null +++ b/assets/img/icon/tool-generic-running-animated.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/icon/tool-move-active.svg b/assets/img/icon/tool-move-active.svg new file mode 100644 index 00000000..6e93b76d --- /dev/null +++ b/assets/img/icon/tool-move-active.svg @@ -0,0 +1,8 @@ + + + icon/tools/tool-move-active + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-move-default.svg b/assets/img/icon/tool-move-default.svg new file mode 100644 index 00000000..480be1da --- /dev/null +++ b/assets/img/icon/tool-move-default.svg @@ -0,0 +1,8 @@ + + + icon/tools/tool-move-default + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-move-paused.svg b/assets/img/icon/tool-move-paused.svg new file mode 100644 index 00000000..b30d094d --- /dev/null +++ b/assets/img/icon/tool-move-paused.svg @@ -0,0 +1,10 @@ + + + icon/tools/tool-move-paused + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-move-running-animated.svg b/assets/img/icon/tool-move-running-animated.svg new file mode 100644 index 00000000..98bffba8 --- /dev/null +++ b/assets/img/icon/tool-move-running-animated.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/icon/tool-offload-active.svg b/assets/img/icon/tool-offload-active.svg new file mode 100644 index 00000000..1bf8d9a0 --- /dev/null +++ b/assets/img/icon/tool-offload-active.svg @@ -0,0 +1,11 @@ + + + icon/tools/tool-offload-active + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-offload-default.svg b/assets/img/icon/tool-offload-default.svg new file mode 100644 index 00000000..3d86e162 --- /dev/null +++ b/assets/img/icon/tool-offload-default.svg @@ -0,0 +1,11 @@ + + + icon/tools/tool-offload-default + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-offload-paused.svg b/assets/img/icon/tool-offload-paused.svg new file mode 100644 index 00000000..500d328b --- /dev/null +++ b/assets/img/icon/tool-offload-paused.svg @@ -0,0 +1,13 @@ + + + icon/tools/tool-offload-paused + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-offload-running-animated.svg b/assets/img/icon/tool-offload-running-animated.svg new file mode 100644 index 00000000..dd6a2c1e --- /dev/null +++ b/assets/img/icon/tool-offload-running-animated.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/icon/tool-remove-active.svg b/assets/img/icon/tool-remove-active.svg new file mode 100644 index 00000000..f21fd98b --- /dev/null +++ b/assets/img/icon/tool-remove-active.svg @@ -0,0 +1,9 @@ + + + icon/tools/tool-remove-active + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-remove-default.svg b/assets/img/icon/tool-remove-default.svg new file mode 100644 index 00000000..435bde50 --- /dev/null +++ b/assets/img/icon/tool-remove-default.svg @@ -0,0 +1,9 @@ + + + icon/tools/tool-remove-default + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-remove-paused.svg b/assets/img/icon/tool-remove-paused.svg new file mode 100644 index 00000000..e2b04acb --- /dev/null +++ b/assets/img/icon/tool-remove-paused.svg @@ -0,0 +1,11 @@ + + + icon/tools/tool-remove-paused + + + + + + + + \ No newline at end of file diff --git a/assets/img/icon/tool-remove-running-animated.svg b/assets/img/icon/tool-remove-running-animated.svg new file mode 100644 index 00000000..9153e113 --- /dev/null +++ b/assets/img/icon/tool-remove-running-animated.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/icon/tool-status-error-animated.svg b/assets/img/icon/tool-status-error-animated.svg new file mode 100644 index 00000000..61e56911 --- /dev/null +++ b/assets/img/icon/tool-status-error-animated.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/icon/tool-status-success-animated.svg b/assets/img/icon/tool-status-success-animated.svg new file mode 100644 index 00000000..9a55c4ed --- /dev/null +++ b/assets/img/icon/tool-status-success-animated.svg @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/assets/img/icon/x.svg b/assets/img/icon/x.svg new file mode 100644 index 00000000..61b3c6c2 --- /dev/null +++ b/assets/img/icon/x.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/icon16.png b/assets/img/icon16.png deleted file mode 100644 index a609c11940ec254b9692c49ba35dc1def1672ba1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1502 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvO-#Mv>2~2MaLa!@My`aR9TL84#CABECEH%ZgC_h&L>}jh^+-`BgX&zK> z3U0SJZ(;|c19_R?eNQ6?`*ekUR%U_dIkHtz3s*KKJWQnJMX({+>^}s738(v+`d)l$LNlqX- z^r8Yi4^4Wzh7v^#@xiYOYeZH&D>S@@C0);#UG5`67Tqn9XLJjRjAMJbB zaINTD)tlH?Z~iUa^Vv^2+FA47`TC>cy~+1f78~qunC8_Z;Hi|LGxhn|$Kg@w1tI%Q zEtdM{>7-9Pz5L4KBQFelJDpco9Gl0JY0EtMPg+7meQfy2Rj0x)Pp;%DYFl2p`+uvL zj`8HF)#j(Gv(|ozxTy7trM*+9M3hI>+kaVr=tm(*`?jB-(;x5o>lT0KdG)HZF*b98 z-*59i8=aFgy~9A=rPAvEx<-W=BJtkKCUl!lE^JTFtIb~gD1Sw8*>NSC=wgnSEh&*6 zn_eIC6Fu=%CZuEM1d&qBj+he%-!Dv-)NyavuNd%ey2Ib=r#-K$gsM7jyvLHKVQ=-` z|Hn%K*A?|H`;~L|3#`q(qjmkt%^RIr+SVGg7Mom7U$|FMZ{?w&6(SQeu2fvOCjI_R z#ge<+JsA(<+g?s!cJ;O1ct20k_nBzQ>_ro9@}`$`FK5(MJ=(G5>!RKDOp6!Z>`5%z z8MCtWgEaTYFBO(+c;vRnK diff --git a/assets/img/icon-checked.svg b/assets/img/sidebar/item-checked.svg similarity index 100% rename from assets/img/icon-checked.svg rename to assets/img/sidebar/item-checked.svg diff --git a/assets/img/logo-dbi.svg b/assets/img/sidebar/logo-dbi.svg similarity index 100% rename from assets/img/logo-dbi.svg rename to assets/img/sidebar/logo-dbi.svg diff --git a/assets/img/os3-banner.svg b/assets/img/sidebar/os3-banner.svg similarity index 100% rename from assets/img/os3-banner.svg rename to assets/img/sidebar/os3-banner.svg diff --git a/assets/js/delivery-provider.js b/assets/js/delivery-provider.js deleted file mode 100644 index 71bf1e63..00000000 --- a/assets/js/delivery-provider.js +++ /dev/null @@ -1,89 +0,0 @@ -(function( $ ) { - var $body = $( 'body' ); - - var as3cf = as3cf || {}; - - /** - * Handle changes to the selected Delivery Provider. - */ - as3cf.deliveryProvider = { - changed: function() { - var provider = $( 'input[name="delivery-provider"]:checked' ).val(); - var parent = $( 'input[name="delivery-provider"]:checked' ).attr( 'data-delivery-provider-parent' ); - - // De-select all providers. - $( '.as3cf-delivery-provider' ).each( function() { - $( this ).removeClass( 'selected' ); - } ); - - // De-select all sub option containers. - $( '.as3cf-delivery-provider-sub-option-container' ).each( function() { - $( this ).removeClass( 'selected' ); - } ); - - // Select chosen provider. - $( '.as3cf-delivery-provider[data-delivery-provider="' + provider + '"]' ).each( function() { - $( this ).addClass( 'selected' ); - } ); - - if ( 0 < parent.length ) { - // If switching sub options, re-select container and parent too. - $( '.as3cf-delivery-provider-sub-option-container[data-delivery-provider="' + parent + '"]' ).each( function() { - $( this ).addClass( 'selected' ); - } ); - $( '.as3cf-delivery-provider[data-delivery-provider="' + parent + '"]' ).each( function() { - $( this ).addClass( 'selected' ); - } ); - } else { - // Switching top level provider, de-select any sub option container... - $( '.as3cf-delivery-provider-sub-option-container' ).each( function() { - $( this ).removeClass( 'selected' ); - } ); - - // ... and select the dummy hidden radio button. - $( 'input#as3cf-delivery-provider-dummy-parent[name="delivery-provider-sub-option-parent"]' ).each( function() { - $( this ).prop( 'checked', true ); - $( this ).trigger( 'change' ); - } ); - } - }, - - subOptionParentChanged: function() { - var parent = $( 'input[name="delivery-provider-sub-option-parent"]:checked' ).val(); - - // De-select all other top level options. - $( '.as3cf-delivery-provider-option' ).each( function() { - $( this ).removeClass( 'selected' ); - } ); - - // Select chosen sub option container. - $( '.as3cf-delivery-provider-sub-option-container[data-delivery-provider="' + parent + '"]' ).each( function() { - $( this ).addClass( 'selected' ); - } ); - - // Select chosen sub option parent. - $( '.as3cf-delivery-provider-option[data-delivery-provider="' + parent + '"]' ).each( function() { - $( this ).addClass( 'selected' ); - } ); - - // Find default sub option to select. - $( 'input[data-delivery-provider-parent="' + parent + '"]' ).first().each( function() { - $( this ).prop( 'checked', true ); - $( this ).trigger( 'change' ); - } ); - } - }; - - $( document ).ready( function() { - // Switch displayed delivery provider content. - $body.on( 'change', 'input[name="delivery-provider"]', function( e ) { - e.preventDefault(); - as3cf.deliveryProvider.changed(); - } ); - $body.on( 'change', 'input[name="delivery-provider-sub-option-parent"]', function( e ) { - e.preventDefault(); - as3cf.deliveryProvider.subOptionParentChanged(); - } ); - } ); - -})( jQuery ); diff --git a/assets/js/delivery-provider.min.js b/assets/js/delivery-provider.min.js deleted file mode 100644 index ecdc07be..00000000 --- a/assets/js/delivery-provider.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a){var b=a("body"),c=c||{};c.deliveryProvider={changed:function(){var b=a('input[name="delivery-provider"]:checked').val(),c=a('input[name="delivery-provider"]:checked').attr("data-delivery-provider-parent");a(".as3cf-delivery-provider").each(function(){a(this).removeClass("selected")}),a(".as3cf-delivery-provider-sub-option-container").each(function(){a(this).removeClass("selected")}),a('.as3cf-delivery-provider[data-delivery-provider="'+b+'"]').each(function(){a(this).addClass("selected")}),0",{"class":"s3-actions"}),g=[];b(d).each(function(a){g.push(a)}),f.append(g.join(" | ")),e.append(f)},renderS3Details:function(a){if(a&&a.provider_object){var b=this.$el.find(".attachment-info .details"),c=this.generateDetails(a,["provider_name","region","bucket","key","acl","is_verified"]);b.append(c)}},generateDetails:function(a,c){var d="",e=b.template('

');return b(c).each(function(c){if(a.provider_object[c]){var f=a.provider_object[c];if("acl"===c&&(f=a.provider_object[c].name,a.acl_toggle)){var g=b.template('<%= value %>');f=g({title:a.provider_object[c].title,acl:a.provider_object[c].acl,value:f})}if("is_verified"===c){if(f=Boolean(parseInt(f)))return;f=as3cf_media.strings.not_verified}d+=e({key:c,label:as3cf_media.strings[c],value:f})}}),d},confirmS3Removal:function(a){if(!confirm(as3cfpro_media.strings.local_warning))return a.preventDefault(),a.stopImmediatePropagation(),!1},toggleACL:function(c){c.preventDefault();var d=a("#as3cfpro-toggle-acl"),e=d.data("currentacl"),f=as3cfpro_media.settings.private_acl;d.hide(),d.after(''+as3cfpro_media.strings.updating_acl+""),e===as3cfpro_media.settings.private_acl&&(f=as3cfpro_media.settings.default_acl),wp.ajax.send("as3cfpro_update_acl",{data:{_ajax_nonce:as3cfpro_media.nonces.singular_update_acl,id:this.model.get("id"),acl:f}}).done(b.bind(this.updateACL,this)).fail(b.bind(this.renderACLError,this))},renderACLError:function(){a("#as3cfpro-updating").remove(),a("#as3cfpro-toggle-acl").show(),alert(as3cfpro_media.strings.change_acl_error)},updateACL:function(b){if(null==b.acl_display||null==b.title||null==b.acl||null==b.url)return void this.renderACLError();this.model.set("url",b.url),this.render();var c=a("#as3cfpro-toggle-acl");a("#as3cfpro-updating").remove(),c.text(b.acl_display),c.attr("title",b.title),c.data("currentacl",b.acl),c.show()}})}(jQuery,_); \ No newline at end of file +var test={};!function(e,t){var a=wp.media,i=a.view.Attachment.Details.TwoColumn;a.view.Attachment.Details.TwoColumn=i.extend({events:function(){return t.extend({},i.prototype.events,{"click .local-warning":"confirmS3Removal","click #as3cfpro-toggle-acl":"toggleACL"})},render:function(){this.fetchS3Details(this.model.get("id"))},fetchS3Details:function(e){wp.ajax.send("as3cf_get_attachment_provider_details",{data:{_nonce:as3cf_media.nonces.get_attachment_provider_details,id:e}}).done(t.bind(this.renderView,this))},renderView:function(e){i.prototype.render.apply(this),this.renderActionLinks(e),this.renderS3Details(e)},renderActionLinks:function(a){var i=a&&a.links||[],r=this.$el.find(".actions"),n=e("
",{class:"s3-actions"}),l=[];t(i).each(function(e){l.push(e)}),n.append(l.join(" | ")),r.append(n)},renderS3Details:function(e){if(e&&e.provider_object){var t=this.$el.find(".attachment-info .details"),a=this.generateDetails(e,["provider_name","region","bucket","key","acl","is_verified"]);t.append(a)}},generateDetails:function(e,a){var i="",r=t.template('
<%= label %>: <%= value %>
');return t(a).each(function(a){if(e.provider_object[a]){var n=e.provider_object[a];if("acl"===a)if(n=e.provider_object[a].name,e.acl_toggle)n=t.template('<%= value %>')({title:e.provider_object[a].title,acl:e.provider_object[a].acl,value:n});if("is_verified"===a){if(n=Boolean(parseInt(n)))return;n=as3cf_media.strings.not_verified}i+=r({key:a,label:as3cf_media.strings[a],value:n})}}),i},confirmS3Removal:function(e){if(!confirm(as3cfpro_media.strings.local_warning))return e.preventDefault(),e.stopImmediatePropagation(),!1},toggleACL:function(a){a.preventDefault();var i=e("#as3cfpro-toggle-acl"),r=i.data("currentacl"),n=as3cfpro_media.settings.private_acl;i.hide(),i.after(''+as3cfpro_media.strings.updating_acl+""),r===as3cfpro_media.settings.private_acl&&(n=as3cfpro_media.settings.default_acl),wp.ajax.send("as3cfpro_update_acl",{data:{_ajax_nonce:as3cfpro_media.nonces.singular_update_acl,id:this.model.get("id"),acl:n}}).done(t.bind(this.updateACL,this)).fail(t.bind(this.renderACLError,this))},renderACLError:function(){e("#as3cfpro-updating").remove(),e("#as3cfpro-toggle-acl").show(),alert(as3cfpro_media.strings.change_acl_error)},updateACL:function(t){if(null!=t.acl_display&&null!=t.title&&null!=t.acl&&null!=t.url){this.model.set("url",t.url),this.render();var a=e("#as3cfpro-toggle-acl");e("#as3cfpro-updating").remove(),a.text(t.acl_display),a.attr("title",t.title),a.data("currentacl",t.acl),a.show()}else this.renderACLError()}})}(jQuery,_); \ No newline at end of file diff --git a/assets/js/modal.min.js b/assets/js/modal.min.js index 0acf736e..cca86777 100644 --- a/assets/js/modal.min.js +++ b/assets/js/modal.min.js @@ -1 +1 @@ -var as3cfModal=function(a){function b(a){return a.replace(/[^a-z]/g,"")}var c={prefix:"as3cf",loading:!1,dismissible:!0},d={};return c.exists=function(c){var e=b(c);return void 0!==d[e]||!!a(c).length},c.open=function(e,f,g){var h=b(e);a("body").append('
');var i=a("#as3cf-overlay");c.dismissible?i.append('
×
'):i.append('
');var j=a("#as3cf-modal");if(void 0===d[h]){var k=a(e);d[h]=k.clone(!0).css("display","block"),k.remove()}j.data("as3cf-modal-target",e).append(d[h]),void 0!==g&&j.addClass(g),"function"==typeof f&&f(e),a("body").addClass("as3cf-modal-open"),i.fadeIn(150),j.fadeIn(150),a("body").trigger("as3cf-modal-open",[e])},c.close=function(b){if(!c.loading&&c.dismissible){var d=a("#as3cf-modal").data("as3cf-modal-target");a("#as3cf-overlay").fadeOut(150,function(){a("body").removeClass("as3cf-modal-open"),a(this).remove(),"function"==typeof b&&b(d)}),a("body").trigger("as3cf-modal-close",[d])}},c.setLoadingState=function(a){c.loading=a},c.setDismissibleState=function(a){c.dismissible=a},a(document).ready(function(){a("body").on("click","[data-as3cf-modal]",function(b){b.preventDefault(),c.open(a(this).data("as3cf-modal")+"."+c.prefix)}),a("body").on("click","#as3cf-overlay, .close-as3cf-modal",function(a){if("A"!==a.target.tagName)return a.preventDefault(),a.target===this&&void c.close()})}),c}(jQuery); \ No newline at end of file +var as3cfModal=function(a){var o={prefix:"as3cf",loading:!1,dismissible:!0},e={};function d(a){return a.replace(/[^a-z]/g,"")}return o.exists=function(o){var s=d(o);return void 0!==e[s]||!!a(o).length},o.open=function(s,i,n){var t=d(s);a("body").append('
');var c=a("#as3cf-overlay");o.dismissible?c.append('
×
'):c.append('
');var f=a("#as3cf-modal");if(void 0===e[t]){var l=a(s);e[t]=l.clone(!0).css("display","block"),l.remove()}f.data("as3cf-modal-target",s).append(e[t]),void 0!==n&&f.addClass(n),"function"==typeof i&&i(s),a("body").addClass("as3cf-modal-open"),c.fadeIn(150),f.fadeIn(150),a("body").trigger("as3cf-modal-open",[s])},o.close=function(e){if(!o.loading&&o.dismissible){var d=a("#as3cf-modal").data("as3cf-modal-target");a("#as3cf-overlay").fadeOut(150,function(){a("body").removeClass("as3cf-modal-open"),a(this).remove(),"function"==typeof e&&e(d)}),a("body").trigger("as3cf-modal-close",[d])}},o.setLoadingState=function(a){o.loading=a},o.setDismissibleState=function(a){o.dismissible=a},a(document).ready(function(){a("body").on("click","[data-as3cf-modal]",function(e){e.preventDefault(),o.open(a(this).data("as3cf-modal")+"."+o.prefix)}),a("body").on("click","#as3cf-overlay, .close-as3cf-modal",function(a){if("A"!==a.target.tagName){if(a.preventDefault(),a.target!==this)return!1;o.close()}})}),o}(jQuery); \ No newline at end of file diff --git a/assets/js/notice.min.js b/assets/js/notice.min.js index 00dc4609..c5a319af 100644 --- a/assets/js/notice.min.js +++ b/assets/js/notice.min.js @@ -1 +1 @@ -!function(a){var b=a("body");b.on("click",".as3cf-notice .notice-dismiss",function(b){var c=a(this).parents(".as3cf-notice").attr("id");if(c){var d={action:"as3cf-dismiss-notice",notice_id:c,_nonce:as3cf_notice.nonces.dismiss_notice};a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:d,error:function(a,b,c){alert(as3cf_notice.strings.dismiss_notice_error+c)}})}}),b.on("click",".as3cf-notice-toggle",function(b){b.preventDefault();var c=a(this),d=c.data("hide");c.data("hide",c.html()),c.html(d),c.closest(".as3cf-notice").find(".as3cf-notice-toggle-content").toggle()})}(jQuery); \ No newline at end of file +!function(t){var i=t("body");i.on("click",".as3cf-notice .notice-dismiss",function(i){var c=t(this).parents(".as3cf-notice").attr("id");if(c){var n={action:"as3cf-dismiss-notice",notice_id:c,_nonce:as3cf_notice.nonces.dismiss_notice};t.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:n,error:function(t,i,c){alert(as3cf_notice.strings.dismiss_notice_error+c)}})}}),i.on("click",".as3cf-notice-toggle",function(i){i.preventDefault();var c=t(this),n=c.data("hide");c.data("hide",c.html()),c.html(n),c.closest(".as3cf-notice").find(".as3cf-notice-toggle-content").toggle()})}(jQuery); \ No newline at end of file diff --git a/assets/js/script.js b/assets/js/script.js deleted file mode 100644 index 5dd1958b..00000000 --- a/assets/js/script.js +++ /dev/null @@ -1,835 +0,0 @@ -( function( $, as3cfModal ) { - - var savedSettings = {}; - var bucketNamePattern = /[^a-z0-9.-]/; - - var $body = $( 'body' ); - var $tabs = $( '.as3cf-tab' ); - var $settings = $( '.as3cf-settings' ); - var $activeTab; - - /** - * Return the serialized string of the settings form - * excluding the bucket and region inputs as they get saved via AJAX - * - * @param string tab - * - * @returns {string} - */ - function serializedForm( tab ) { - return $( '#' + tab + ' .as3cf-main-settings form' ).find( 'input:not(.no-compare)' ).serialize(); - } - - /** - * Set checkbox - * - * @param string checkbox_wrap - */ - function setCheckbox( checkbox_wrap ) { - var $switch = $activeTab.find( '#' + checkbox_wrap ); - var $checkbox = $switch.find( 'input[type=checkbox]' ); - - $switch.toggleClass( 'on' ).find( 'span' ).toggleClass( 'checked' ); - var switchOn = $switch.find( 'span.on' ).hasClass( 'checked' ); - $checkbox.prop( 'checked', switchOn ).trigger( 'change' ); - } - - /** - * Validate custom domain - * - * @param {object} $input - */ - function validateCustomDomain( $input ) { - var $error = $input.next( '.as3cf-validation-error' ); - var $submit = $( '#' + $activeTab.attr( 'id' ) + ' form button[type="submit"]' ); - var pattern = /[^a-zA-Z0-9\.\-]/; - - if ( pattern.test( $input.val() ) ) { - $error.show(); - $submit.prop( 'disabled', true ); - } else { - $error.hide(); - $submit.prop( 'disabled', false ); - } - } - - /** - * Validate Signed URLs Key ID. - * - * @param {object} $input - */ - function validateSignedUrlsKeyID( $input ) { - var $error = $input.next( '.as3cf-validation-error' ); - var $submit = $( '#' + $activeTab.attr( 'id' ) + ' form button[type="submit"]' ); - var pattern = /[^a-zA-Z0-9]/; // Letters & Numbers only at present (CloudFront). - - if ( pattern.test( $input.val() ) ) { - $error.show(); - $submit.prop( 'disabled', true ); - } else { - $error.hide(); - $submit.prop( 'disabled', false ); - } - } - - /** - * Validate Signed URLs Key File Path. - * - * @param {object} $input - */ - function validateSignedUrlsKeyFilePath( $input ) { - var $error = $input.next( '.as3cf-validation-error' ); - var $submit = $( '#' + $activeTab.attr( 'id' ) + ' form button[type="submit"]' ); - var pattern = /[^a-zA-Z0-9\.\-\\:\/ _]/; - - if ( pattern.test( $input.val() ) ) { - $error.show(); - $submit.prop( 'disabled', true ); - } else { - $error.hide(); - $submit.prop( 'disabled', false ); - } - } - - /** - * Validate Signed URLs Object Prefix. - * - * @param {object} $input - */ - function validateSignedUrlsObjectPrefix( $input ) { - var $error = $input.next( '.as3cf-validation-error' ); - var $submit = $( '#' + $activeTab.attr( 'id' ) + ' form button[type="submit"]' ); - var pattern = /[^a-zA-Z0-9\-\/ ]/; - - if ( pattern.test( $input.val() ) ) { - $error.show(); - $submit.prop( 'disabled', true ); - } else { - $error.hide(); - $submit.prop( 'disabled', false ); - } - } - - as3cf.tabs = { - defaultTab: 'media', - /** - * Toggle settings tab - * - * @param string hash - * @param boolean persist_updated_notice - */ - toggle: function( hash, persist_updated_notice ) { - hash = as3cf.tabs.sanitizeHash( hash ); - - $tabs.hide(); - $activeTab = $( '#tab-' + hash ); - $activeTab.show(); - $( '.nav-tab' ).removeClass( 'nav-tab-active' ); - $( 'a.nav-tab[data-tab="' + hash + '"]' ).addClass( 'nav-tab-active' ); - $( '.as3cf-main' ).data( 'tab', hash ); - if ( $activeTab.data( 'prefix' ) ) { - as3cfModal.prefix = $activeTab.data( 'prefix' ); - } - if ( ! persist_updated_notice ) { - $( '.as3cf-updated' ).removeClass( 'show' ); - } - - if ( 'support' === hash ) { - as3cf.tabs.getDiagnosticInfo(); - } - }, - - /** - * Update display of diagnostic info. - */ - getDiagnosticInfo: function() { - var $debugLog = $( '.debug-log-textarea' ); - - $debugLog.html( as3cf.strings.get_diagnostic_info ); - - var data = { - action: 'as3cf-get-diagnostic-info', - _nonce: as3cf.nonces.get_diagnostic_info - }; - - $.ajax( { - url: ajaxurl, - type: 'POST', - dataType: 'JSON', - data: data, - error: function( jqXHR, textStatus, errorThrown ) { - $debugLog.html( errorThrown ); - }, - success: function( data, textStatus, jqXHR ) { - if ( 'undefined' !== typeof data[ 'success' ] ) { - $debugLog.html( data[ 'diagnostic_info' ] ); - } else { - $debugLog.html( as3cf.strings.get_diagnostic_info_error ); - $debugLog.append( data[ 'error' ] ); - } - } - } ); - }, - - /** - * Sanitize hash to ensure it references a real tab. - * - * @param string hash - * - * @return string - */ - sanitizeHash: function( hash ) { - var $newTab = $( '#tab-' + hash ); - - if ( 0 === $newTab.length ) { - hash = as3cf.tabs.defaultTab; - } - - return hash; - } - }; - - /** - * Handle the bucket selection, either inline or in a modal - */ - as3cf.buckets = { - - /** - * Buckets must be at least this many characters - */ - validLength: 3, - - /** - * Process lock for setting a bucket - */ - bucketSelectLock: false, - - /** - * Load bucket list - * - * @param {boolean} [forceUpdate] - */ - loadList: function( forceUpdate ) { - if ( 'undefined' === typeof forceUpdate ) { - forceUpdate = false; - } - - var $selectBucketForm = $( '.as3cf-bucket-container.' + as3cfModal.prefix + ' .as3cf-bucket-select' ); - var $selectBucketRegion = $selectBucketForm.find( '.bucket-select-region' ); - var $bucketList = $selectBucketForm.find( '.as3cf-bucket-list' ); - var selectedBucket = $( '#' + as3cfModal.prefix + '-bucket' ).val(); - - if ( false === forceUpdate && $bucketList.find( 'li' ).length > 1 ) { - $( '.as3cf-bucket-list a' ).removeClass( 'selected' ); - $( '.as3cf-bucket-list a[data-bucket="' + selectedBucket + '"]' ).addClass( 'selected' ); - - this.scrollToSelected(); - return; - } - - $bucketList.html( '
  • ' + $bucketList.data( 'working' ) + '
  • ' ); - - // Stop accidental submit while reloading list. - this.disabledButtons(); - - var data = { - action: as3cfModal.prefix + '-get-buckets', - _nonce: window[ as3cfModal.prefix.replace( /-/g, '_' ) ].nonces.get_buckets - }; - - if ( $selectBucketRegion.val() ) { - data[ 'region' ] = $selectBucketRegion.val(); - } - - var that = this; - - $.ajax( { - url: ajaxurl, - type: 'POST', - dataType: 'JSON', - data: data, - error: function( jqXHR, textStatus, errorThrown ) { - $bucketList.html( '' ); - that.showError( as3cf.strings.get_buckets_error, errorThrown, 'as3cf-bucket-select' ); - }, - success: function( data, textStatus, jqXHR ) { - $bucketList.html( '' ); - - if ( 'undefined' !== typeof data[ 'success' ] ) { - $( '.as3cf-bucket-error' ).hide(); - - if ( 0 === data[ 'buckets' ].length ) { - $bucketList.html( '
  • ' + $bucketList.data( 'nothing-found' ) + '
  • ' ); - } else { - $( data[ 'buckets' ] ).each( function( idx, bucket ) { - var bucketClass = bucket.Name === selectedBucket ? 'selected' : ''; - $bucketList.append( '
  • ' + bucket.Name + '
  • ' ); - } ); - - that.scrollToSelected(); - that.disabledButtons(); - } - } else { - that.showError( as3cf.strings.get_buckets_error, data[ 'error' ], 'as3cf-bucket-select' ); - } - } - } ); - }, - - /** - * Scroll to selected bucket - */ - scrollToSelected: function() { - if ( ! $( '.as3cf-bucket-list a.selected' ).length ) { - return; - } - - var offset = $( 'ul.as3cf-bucket-list li' ).first().position().top + 150; - - $( '.as3cf-bucket-list' ).animate( { - scrollTop: $( 'ul.as3cf-bucket-list li a.selected' ).position().top - offset - } ); - }, - - /** - * Set the selected bucket in list. - * - * @param {object} $link - */ - setSelected: function( $link ) { - $( '.as3cf-bucket-list a' ).removeClass( 'selected' ); - $link.addClass( 'selected' ); - $( '#' + as3cfModal.prefix + '-bucket-select-name' ).val( $link.data( 'bucket' ) ); - }, - - /** - * Disable bucket buttons - */ - disabledButtons: function() { - var $createBucketForm = $( '.as3cf-bucket-container.' + as3cfModal.prefix + ' .as3cf-bucket-create' ); - var $manualBucketForm = $( '.as3cf-bucket-container.' + as3cfModal.prefix + ' .as3cf-bucket-manual' ); - var $selectBucketForm = $( '.as3cf-bucket-container.' + as3cfModal.prefix + ' .as3cf-bucket-select' ); - - if ( 0 === $createBucketForm.length && 0 === $manualBucketForm.length && 0 === $selectBucketForm.length ) { - return; - } - - if ( 0 < $createBucketForm.length && this.isValidName( $createBucketForm.find( '.as3cf-bucket-name' ).val() ) ) { - $createBucketForm.find( 'button[type=submit]' ).prop( 'disabled', false ); - } else { - $createBucketForm.find( 'button[type=submit]' ).prop( 'disabled', true ); - } - - if ( 0 < $manualBucketForm.length && this.isValidName( $manualBucketForm.find( '.as3cf-bucket-name' ).val() ) ) { - $manualBucketForm.find( 'button[type=submit]' ).prop( 'disabled', false ); - } else { - $manualBucketForm.find( 'button[type=submit]' ).prop( 'disabled', true ); - } - - if ( 0 < $selectBucketForm.length && 1 === $selectBucketForm.find( '.as3cf-bucket-list a.selected' ).length ) { - $selectBucketForm.find( 'button[type=submit]' ).prop( 'disabled', false ); - } else { - $selectBucketForm.find( 'button[type=submit]' ).prop( 'disabled', true ); - } - }, - - /** - * Show bucket error - * - * @param {string} title - * @param {string} error - * @param {string} [context] - */ - showError: function( title, error, context ) { - var $activeView = $( '.as3cf-bucket-container' ).children( ':visible' ); - var $bucketError = $activeView.find( '.as3cf-bucket-error' ); - - context = ( 'undefined' === typeof context ) ? null : context; - - if ( context && ! $activeView.hasClass( context ) ) { - return; - } - - $bucketError.find( 'span.title' ).html( title + ' —' ); - $bucketError.find( 'span.message' ).html( error ); - $bucketError.show(); - - // Unlock setting the bucket - this.bucketSelectLock = false; - }, - - /** - * Check for a valid bucket name - * - * Bucket names must be at least 3 and no more than 63 characters long. - * They can contain lowercase letters, numbers, periods and hyphens. - * - * @param {string} bucketName - * - * @return boolean - */ - isValidName: function( bucketName ) { - if ( bucketName.length < 3 || bucketName.length > 63 ) { - return false; - } - if ( true === bucketNamePattern.test( bucketName ) ) { - return false; - } - - return true; - }, - - /** - * Update invalid bucket name notice - * - * @param {string} bucketName - */ - updateNameNotice: function( bucketName ) { - var message = null; - - if ( true === bucketNamePattern.test( bucketName ) ) { - message = as3cf.strings.create_bucket_invalid_chars; - } else if ( bucketName.length < 3 ) { - message = as3cf.strings.create_bucket_name_short; - } else if ( bucketName.length > 63 ) { - message = as3cf.strings.create_bucket_name_long; - } - - if ( message && bucketName.length > 0 ) { - $( '.as3cf-invalid-bucket-name' ).html( message ); - } else { - $( '.as3cf-invalid-bucket-name' ).html( '' ); - } - } - - }; - - /** - * Reload the page, and show the persistent updated notice. - * - * Intended for use on plugin settings page. - */ - as3cf.reloadUpdated = function() { - var url = location.pathname + location.search; - - if ( ! location.search.match( /[?&]updated=/ ) ) { - url += '&updated=1'; - } - - url += location.hash; - - location.assign( url ); - }; - - /** - * Show the standard "Settings saved." notice if not already visible. - */ - as3cf.showSettingsSavedNotice = function() { - if ( 0 < $( '#setting-error-settings_updated:visible' ).length || 0 < $( '#as3cf-settings_updated:visible' ).length ) { - return; - } - var settingsUpdatedNotice = '

    ' + as3cf.strings.settings_saved + '

    '; - $( 'h2.nav-tab-wrapper' ).after( settingsUpdatedNotice ); - $( document ).trigger( 'wp-updates-notice-added' ); // Hack to run WP Core's makeNoticesDismissible() function. - }; - - as3cf.Settings = as3cf.Settings ? as3cf.Settings : {}; - - /** - * The object that handles locking and unlocking the Media settings. - */ - as3cf.Settings.Media = { - /** - * Lock settings. - */ - lock: function( key ) { - $( '#as3cf-media-settings-locked-' + key ).show(); - $( '.as3cf-media-settings' ).addClass( 'locked locked-' + key ); - $( '.as3cf-media-settings.locked-' + key ).each( function() { - $( this ).find( 'input,button' ).prop( 'disabled', true ); - $( this ).find( '.as3cf-settings-container' ).addClass( 'as3cf-locked-setting' ); - $( this ).find( 'a.as3cf-change-settings' ).hide(); - } ); - }, - - /** - * Unlock settings. - */ - unlock: function( key ) { - $( '.as3cf-media-settings.locked-' + key ).each( function() { - $( this ).find( 'input,button' ).filter( ':not(.disabled)' ).prop( 'disabled', false ); - $( this ).find( '.as3cf-settings-container' ).removeClass( 'as3cf-locked-setting' ); - $( this ).find( 'a.as3cf-change-settings' ).show(); - $( this ).removeClass( 'locked locked-' + key ); - } ); - $( '#as3cf-media-settings-locked-' + key ).hide(); - }, - - /** - * Settings locked? - */ - locked: function() { - return $( '.as3cf-media-settings' ).hasClass( 'locked' ); - } - - }; - - /** - * Get the link to the bucket on the AWS Console and update the DOM - * - * @returns {string} - */ - function setBucketLink() { - var bucket = $( '#' + as3cfModal.prefix + '-bucket' ).val(); - var $objectPrefix = $activeTab.find( 'input[name="object-prefix"]' ); - var prefix = $objectPrefix.val(); - - if ( '' !== prefix ) { - prefix = as3cf.provider_console_url_prefix_param + encodeURIComponent( prefix ); - } - - var url = as3cf.provider_console_url + bucket + prefix; - - $( '#' + as3cfModal.prefix + '-view-bucket' ).attr( 'href', url ); - } - - /* - * Toggle the lost files notice - */ - function toggleLostFilesNotice() { - if ( $( '#as3cf-remove-local-file' ).is( ':checked' ) && $( '#as3cf-serve-from-s3' ).is( ':not(:checked)' ) ) { - $( '#as3cf-lost-files-notice' ).show(); - } else { - $( '#as3cf-lost-files-notice' ).hide(); - } - } - - /* - * Toggle the remove local files notice - */ - function toggleRemoveLocalNotice() { - if ( $( '#as3cf-remove-local-file' ).is( ':checked' ) ) { - $( '#as3cf-remove-local-notice' ).show(); - } else { - $( '#as3cf-remove-local-notice' ).hide(); - } - } - - /* - * Toggle the seo friendly url notice. - */ - function toggleSEOFriendlyURLNotice( seo_friendly ) { - if ( true !== seo_friendly ) { - $( '#as3cf-seo-friendly-url-notice' ).show(); - } else { - $( '#as3cf-seo-friendly-url-notice' ).hide(); - } - } - - /** - * Generate URL preview - */ - function generateUrlPreview() { - $( '.as3cf-url-preview' ).html( 'Generating...' ); - - var data = { - _nonce: as3cf.nonces.get_url_preview - }; - - $.each( $( '#tab-' + as3cf.tabs.defaultTab + ' .as3cf-main-settings form' ).serializeArray(), function( i, o ) { - var n = o.name, - v = o.value; - n = n.replace( '[]', '' ); - data[ n ] = undefined === data[ n ] ? v : Array.isArray( data[ n ] ) ? data[ n ].concat( v ) : [ data[ n ], v ]; - } ); - - // Overwrite the save action stored in the form - data[ 'action' ] = 'as3cf-get-url-preview'; - - $.ajax( { - url: ajaxurl, - type: 'POST', - dataType: 'JSON', - data: data, - error: function( jqXHR, textStatus, errorThrown ) { - alert( as3cf.strings.get_url_preview_error + errorThrown ); - }, - success: function( data, textStatus, jqXHR ) { - if ( 'undefined' !== typeof data[ 'success' ] ) { - $( '.as3cf-url-preview' ).html( data[ 'url' ] ); - toggleSEOFriendlyURLNotice( data[ 'seo_friendly' ] ); - } else { - alert( as3cf.strings.get_url_preview_error + data[ 'error' ] ); - } - } - } ); - } - - /** - * Update the UI with the current active tab set in the URL hash. - */ - function renderCurrentTab() { - - // If rendering the default tab, or a bare hash clean the hash. - if ( '#' + as3cf.tabs.defaultTab === location.hash ) { - location.hash = ''; - - return; - } - - as3cf.tabs.toggle( location.hash.replace( '#', '' ), true ); - - $( document ).trigger( 'as3cf.tabRendered', [ location.hash.replace( '#', '' ) ] ); - } - - $( document ).ready( function() { - - // Tabs - // -------------------- - renderCurrentTab(); - - /** - * Set the hashchange callback to update the rendered active tab. - */ - window.onhashchange = function( event ) { - - // Strip the # if still on the end of the URL - if ( 'function' === typeof history.replaceState && '#' === location.href.slice( -1 ) ) { - history.replaceState( {}, '', location.href.slice( 0, -1 ) ); - } - - renderCurrentTab(); - }; - - // Move any compatibility errors below the nav tabs - var $navTabs = $( '.as3cf-main .nav-tab-wrapper' ); - $( '.as3cf-compatibility-notice, div.updated, div.error, div.notice' ).not( '.below-h2, .inline' ).insertAfter( $navTabs ); - - // Settings - // -------------------- - - // Save the original state of the forms for comparison later - if ( $tabs.length ) { - $tabs.each( function( i, tab ) { - savedSettings[ tab.id ] = serializedForm( tab.id ); - } ); - } - - // Prompt user with dialog if leaving the settings page with unsaved changes - $( window ).on( 'beforeunload.as3cf-settings', function() { - if ( $.isEmptyObject( savedSettings ) || as3cf.Settings.Media.locked() ) { - return; - } - - var tab = $activeTab.attr( 'id' ); - - if ( serializedForm( tab ) !== savedSettings[ tab ] ) { - return as3cf.strings.save_alert; - } - } ); - - // Let the save settings submit happen as normal - $( document ).on( 'submit', '.as3cf-main-settings form', function( e ) { - - // Disable unload warning - $( window ).off( 'beforeunload.as3cf-settings' ); - } ); - - $( '.as3cf-switch' ).on( 'click', function( e ) { - if ( ! $( this ).hasClass( 'disabled' ) && ! $( this ).parents().hasClass( 'locked' ) ) { - setCheckbox( $( this ).attr( 'id' ) ); - } - } ); - - $tabs.on( 'change', '.sub-toggle', function( e ) { - var setting = $( this ).attr( 'id' ); - $( '.as3cf-setting.' + setting ).toggleClass( 'hide' ); - } ); - - $( '.url-preview' ).on( 'change', 'input', function( e ) { - generateUrlPreview(); - } ); - - toggleLostFilesNotice(); - $( '#as3cf-serve-from-s3,#as3cf-remove-local-file' ).on( 'change', function( e ) { - toggleLostFilesNotice(); - } ); - - toggleRemoveLocalNotice(); - $( '#as3cf-remove-local-file' ).on( 'change', function( e ) { - toggleRemoveLocalNotice(); - } ); - - // Don't allow 'enter' key to submit form on text input settings - $( '.as3cf-setting input[type="text"]' ).on( 'keypress', function( event ) { - if ( 13 === event.which ) { - event.preventDefault(); - - return false; - } - } ); - - // Show or hide Custom Domain input and Enable Signed URLs section based on custom domain toggle switch. - $( '.as3cf-enable-delivery-domain-container' ).on( 'change', 'input[type="checkbox"]', function( e ) { - var deliveryDomainEnabled = $( this ).is( ':checked' ); - var $deliveryDomain = $( this ).parents( '.as3cf-enable-delivery-domain-container' ).find( '.as3cf-setting.as3cf-delivery-domain' ); - $deliveryDomain.toggleClass( 'hide', ! deliveryDomainEnabled ); - var $signedUrlsEnabled = $( this ).parents( '.as3cf-enable-delivery-domain-container' ).siblings( '.as3cf-enable-signed-urls-container' ); - $signedUrlsEnabled.toggleClass( 'hide', ! deliveryDomainEnabled ); - } ); - - // Re-enable submit button on domain change - $( 'input[name="enable-delivery-domain"]' ).on( 'change', function( e ) { - var $input = $( this ); - var $submit = $( '#' + $activeTab.attr( 'id' ) + ' form button[type="submit"]' ); - - if ( '1' !== $input.val() ) { - $submit.prop( 'disabled', false ); - } else { - validateCustomDomain( $input.next( '.as3cf-setting' ).find( 'input[name="delivery-domain"]' ) ); - } - } ); - - // Validate custom domain - $( 'input[name="delivery-domain"]' ).on( 'keyup', function( e ) { - validateCustomDomain( $( this ) ); - } ); - - // Show or hide Signed URLs fields based on Enable Signed URLs toggle switch. - $( '.as3cf-enable-signed-urls-container' ).on( 'change', 'input[type="checkbox"]', function( e ) { - var signedUrlsEnabled = $( this ).is( ':checked' ); - var $signedUrls = $( this ).parents( '.as3cf-enable-signed-urls-container' ).find( '.as3cf-setting.as3cf-signed-urls' ); - $signedUrls.toggleClass( 'hide', ! signedUrlsEnabled ); - } ); - - // Validate Signed URLs Key ID. - $( 'input[name="signed-urls-key-id"]' ).on( 'keyup', function( e ) { - validateSignedUrlsKeyID( $( this ) ); - } ); - - // Re-enable submit button on Signed URLs Key ID change - $( 'input[name="enable-signed-urls-key-id"]' ).on( 'change', function( e ) { - var $input = $( this ); - var $submit = $( '#' + $activeTab.attr( 'id' ) + ' form button[type="submit"]' ); - - if ( '1' !== $input.val() ) { - $submit.prop( 'disabled', false ); - } else { - validateSignedUrlsKeyID( $input.next( '.as3cf-setting' ).find( 'input[name="signed-urls-key-id"]' ) ); - } - } ); - - // Validate Signed URLs Key File Path. - $( 'input[name="signed-urls-key-file-path"]' ).on( 'keyup', function( e ) { - validateSignedUrlsKeyFilePath( $( this ) ); - } ); - - // Re-enable submit button on Signed URLs Key File Path change - $( 'input[name="enable-signed-urls-key-file-path"]' ).on( 'change', function( e ) { - var $input = $( this ); - var $submit = $( '#' + $activeTab.attr( 'id' ) + ' form button[type="submit"]' ); - - if ( '1' !== $input.val() ) { - $submit.prop( 'disabled', false ); - } else { - validateSignedUrlsKeyFilePath( $input.next( '.as3cf-setting' ).find( 'input[name="signed-urls-key-file-path"]' ) ); - } - } ); - - // Validate Signed URLs Object Prefix. - $( 'input[name="signed-urls-object-prefix"]' ).on( 'keyup', function( e ) { - validateSignedUrlsObjectPrefix( $( this ) ); - } ); - - // Re-enable submit button on Signed URLs Object Prefix change - $( 'input[name="enable-signed-urls-object-prefix"]' ).on( 'change', function( e ) { - var $input = $( this ); - var $submit = $( '#' + $activeTab.attr( 'id' ) + ' form button[type="submit"]' ); - - if ( '1' !== $input.val() ) { - $submit.prop( 'disabled', false ); - } else { - validateSignedUrlsObjectPrefix( $input.next( '.as3cf-setting' ).find( 'input[name="signed-urls-object-prefix"]' ) ); - } - } ); - - // Change bucket link when custom path changes - $( 'input[name="object-prefix"]' ).on( 'change', function( e ) { - setBucketLink(); - } ); - - // Bucket select - // -------------------- - - // Move bucket errors - $( '#tab-media > .as3cf-bucket-error' ).detach().insertAfter( '.as3cf-bucket-container h3' ); - - // Enable/disable change bucket's save buttons. - as3cf.buckets.disabledButtons(); - - // Bucket list refresh handler - $body.on( 'click', '.bucket-action-refresh', function( e ) { - e.preventDefault(); - as3cf.buckets.loadList( true ); - } ); - - // Bucket list refresh on region change handler - $body.on( 'change', '.bucket-select-region', function( e ) { - e.preventDefault(); - as3cf.buckets.loadList( true ); - } ); - - // If select bucket form is available on load, populate its list. - if ( 0 < $( '.as3cf-bucket-container.' + as3cfModal.prefix + ' .as3cf-bucket-select' ).length ) { - as3cf.buckets.loadList( true ); - } - - // Bucket list click handler - $body.on( 'click', '.as3cf-bucket-list a', function( e ) { - e.preventDefault(); - as3cf.buckets.setSelected( $( this ) ); - as3cf.buckets.disabledButtons(); - } ); - - // External links click handler - $( '.as3cf-bucket-container' ).on( 'click', 'a.js-link', function( e ) { - e.preventDefault(); - window.open( $( this ).attr( 'href' ) ); - - return false; - } ); - - // Validate bucket name on create - $body.on( 'input keyup', '.as3cf-bucket-create .as3cf-bucket-name', function( e ) { - var bucketName = $( this ).val(); - as3cf.buckets.updateNameNotice( bucketName ); - as3cf.buckets.disabledButtons(); - } ); - - $body.on( 'input keyup', '.as3cf-bucket-manual .as3cf-bucket-name', function( e ) { - var bucketName = $( this ).val(); - as3cf.buckets.updateNameNotice( bucketName ); - as3cf.buckets.disabledButtons(); - } ); - - // Don't allow 'enter' key to submit form on text input settings - $( '.as3cf-bucket-container input[type="text"]' ).on( 'keypress', function( event ) { - if ( 13 === event.which ) { - event.preventDefault(); - - return false; - } - } ); - - // Enable/Disable Block All Public Access button during setup depending on checkbox. - $( '.as3cf-change-bucket-access-prompt' ).on( 'change', '#origin-access-identity-confirmation', function( e ) { - $( '#block-public-access-confirmed' ).prop( 'disabled', ! $( this ).prop( 'checked' ) ); - } ); - - // If there's an upgrade in progress when the page loads, ensure settings are locked. - $( '.as3cf-media-settings.locked.locked-upgrade' ).each( function() { - as3cf.Settings.Media.lock( 'upgrade' ); - } ); - } ); - -} )( jQuery, as3cfModal ); diff --git a/assets/js/script.min.js b/assets/js/script.min.js deleted file mode 100644 index 036dea8d..00000000 --- a/assets/js/script.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a,b){function c(b){return a("#"+b+" .as3cf-main-settings form").find("input:not(.no-compare)").serialize()}function d(a){var b=o.find("#"+a),c=b.find("input[type=checkbox]");b.toggleClass("on").find("span").toggleClass("checked");var d=b.find("span.on").hasClass("checked");c.prop("checked",d).trigger("change")}function e(b){var c=b.next(".as3cf-validation-error"),d=a("#"+o.attr("id")+' form button[type="submit"]'),e=/[^a-zA-Z0-9\.\-]/;e.test(b.val())?(c.show(),d.prop("disabled",!0)):(c.hide(),d.prop("disabled",!1))}function f(b){var c=b.next(".as3cf-validation-error"),d=a("#"+o.attr("id")+' form button[type="submit"]'),e=/[^a-zA-Z0-9]/;e.test(b.val())?(c.show(),d.prop("disabled",!0)):(c.hide(),d.prop("disabled",!1))}function g(b){var c=b.next(".as3cf-validation-error"),d=a("#"+o.attr("id")+' form button[type="submit"]'),e=/[^a-zA-Z0-9\.\-\\:\/ _]/;e.test(b.val())?(c.show(),d.prop("disabled",!0)):(c.hide(),d.prop("disabled",!1))}function h(b){var c=b.next(".as3cf-validation-error"),d=a("#"+o.attr("id")+' form button[type="submit"]'),e=/[^a-zA-Z0-9\-\/ ]/;e.test(b.val())?(c.show(),d.prop("disabled",!0)):(c.hide(),d.prop("disabled",!1))}function i(){var c=a("#"+b.prefix+"-bucket").val(),d=o.find('input[name="object-prefix"]'),e=d.val();""!==e&&(e=as3cf.provider_console_url_prefix_param+encodeURIComponent(e));var f=as3cf.provider_console_url+c+e;a("#"+b.prefix+"-view-bucket").attr("href",f)}function j(){a("#as3cf-remove-local-file").is(":checked")&&a("#as3cf-serve-from-s3").is(":not(:checked)")?a("#as3cf-lost-files-notice").show():a("#as3cf-lost-files-notice").hide()}function k(){a("#as3cf-remove-local-file").is(":checked")?a("#as3cf-remove-local-notice").show():a("#as3cf-remove-local-notice").hide()}function l(b){!0!==b?a("#as3cf-seo-friendly-url-notice").show():a("#as3cf-seo-friendly-url-notice").hide()}function m(){a(".as3cf-url-preview").html("Generating...");var b={_nonce:as3cf.nonces.get_url_preview};a.each(a("#tab-"+as3cf.tabs.defaultTab+" .as3cf-main-settings form").serializeArray(),function(a,c){var d=c.name,e=c.value;d=d.replace("[]",""),b[d]=void 0===b[d]?e:Array.isArray(b[d])?b[d].concat(e):[b[d],e]}),b.action="as3cf-get-url-preview",a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:b,error:function(a,b,c){alert(as3cf.strings.get_url_preview_error+c)},success:function(b,c,d){"undefined"!=typeof b.success?(a(".as3cf-url-preview").html(b.url),l(b.seo_friendly)):alert(as3cf.strings.get_url_preview_error+b.error)}})}function n(){return"#"+as3cf.tabs.defaultTab===location.hash?void(location.hash=""):(as3cf.tabs.toggle(location.hash.replace("#",""),!0),void a(document).trigger("as3cf.tabRendered",[location.hash.replace("#","")]))}var o,p={},q=/[^a-z0-9.-]/,r=a("body"),s=a(".as3cf-tab");a(".as3cf-settings");as3cf.tabs={defaultTab:"media",toggle:function(c,d){c=as3cf.tabs.sanitizeHash(c),s.hide(),o=a("#tab-"+c),o.show(),a(".nav-tab").removeClass("nav-tab-active"),a('a.nav-tab[data-tab="'+c+'"]').addClass("nav-tab-active"),a(".as3cf-main").data("tab",c),o.data("prefix")&&(b.prefix=o.data("prefix")),d||a(".as3cf-updated").removeClass("show"),"support"===c&&as3cf.tabs.getDiagnosticInfo()},getDiagnosticInfo:function(){var b=a(".debug-log-textarea");b.html(as3cf.strings.get_diagnostic_info);var c={action:"as3cf-get-diagnostic-info",_nonce:as3cf.nonces.get_diagnostic_info};a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:c,error:function(a,c,d){b.html(d)},success:function(a,c,d){"undefined"!=typeof a.success?b.html(a.diagnostic_info):(b.html(as3cf.strings.get_diagnostic_info_error),b.append(a.error))}})},sanitizeHash:function(b){var c=a("#tab-"+b);return 0===c.length&&(b=as3cf.tabs.defaultTab),b}},as3cf.buckets={validLength:3,bucketSelectLock:!1,loadList:function(c){"undefined"==typeof c&&(c=!1);var d=a(".as3cf-bucket-container."+b.prefix+" .as3cf-bucket-select"),e=d.find(".bucket-select-region"),f=d.find(".as3cf-bucket-list"),g=a("#"+b.prefix+"-bucket").val();if(!1===c&&f.find("li").length>1)return a(".as3cf-bucket-list a").removeClass("selected"),a('.as3cf-bucket-list a[data-bucket="'+g+'"]').addClass("selected"),void this.scrollToSelected();f.html('
  • '+f.data("working")+"
  • "),this.disabledButtons();var h={action:b.prefix+"-get-buckets",_nonce:window[b.prefix.replace(/-/g,"_")].nonces.get_buckets};e.val()&&(h.region=e.val());var i=this;a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:h,error:function(a,b,c){f.html(""),i.showError(as3cf.strings.get_buckets_error,c,"as3cf-bucket-select")},success:function(b,c,d){f.html(""),"undefined"!=typeof b.success?(a(".as3cf-bucket-error").hide(),0===b.buckets.length?f.html('
  • '+f.data("nothing-found")+"
  • "):(a(b.buckets).each(function(a,b){var c=b.Name===g?"selected":"";f.append('
  • '+b.Name+'
  • ')}),i.scrollToSelected(),i.disabledButtons())):i.showError(as3cf.strings.get_buckets_error,b.error,"as3cf-bucket-select")}})},scrollToSelected:function(){if(a(".as3cf-bucket-list a.selected").length){var b=a("ul.as3cf-bucket-list li").first().position().top+150;a(".as3cf-bucket-list").animate({scrollTop:a("ul.as3cf-bucket-list li a.selected").position().top-b})}},setSelected:function(c){a(".as3cf-bucket-list a").removeClass("selected"),c.addClass("selected"),a("#"+b.prefix+"-bucket-select-name").val(c.data("bucket"))},disabledButtons:function(){var c=a(".as3cf-bucket-container."+b.prefix+" .as3cf-bucket-create"),d=a(".as3cf-bucket-container."+b.prefix+" .as3cf-bucket-manual"),e=a(".as3cf-bucket-container."+b.prefix+" .as3cf-bucket-select");0===c.length&&0===d.length&&0===e.length||(063)&&!0!==q.test(a)},updateNameNotice:function(b){var c=null;!0===q.test(b)?c=as3cf.strings.create_bucket_invalid_chars:b.length<3?c=as3cf.strings.create_bucket_name_short:b.length>63&&(c=as3cf.strings.create_bucket_name_long),c&&b.length>0?a(".as3cf-invalid-bucket-name").html(c):a(".as3cf-invalid-bucket-name").html("")}},as3cf.reloadUpdated=function(){var a=location.pathname+location.search;location.search.match(/[?&]updated=/)||(a+="&updated=1"),a+=location.hash,location.assign(a)},as3cf.showSettingsSavedNotice=function(){if(!(0

    ";a("h2.nav-tab-wrapper").after(b),a(document).trigger("wp-updates-notice-added")}},as3cf.Settings=as3cf.Settings?as3cf.Settings:{},as3cf.Settings.Media={lock:function(b){a("#as3cf-media-settings-locked-"+b).show(),a(".as3cf-media-settings").addClass("locked locked-"+b),a(".as3cf-media-settings.locked-"+b).each(function(){a(this).find("input,button").prop("disabled",!0),a(this).find(".as3cf-settings-container").addClass("as3cf-locked-setting"),a(this).find("a.as3cf-change-settings").hide()})},unlock:function(b){a(".as3cf-media-settings.locked-"+b).each(function(){a(this).find("input,button").filter(":not(.disabled)").prop("disabled",!1),a(this).find(".as3cf-settings-container").removeClass("as3cf-locked-setting"),a(this).find("a.as3cf-change-settings").show(),a(this).removeClass("locked locked-"+b)}),a("#as3cf-media-settings-locked-"+b).hide()},locked:function(){return a(".as3cf-media-settings").hasClass("locked")}},a(document).ready(function(){n(),window.onhashchange=function(a){"function"==typeof history.replaceState&&"#"===location.href.slice(-1)&&history.replaceState({},"",location.href.slice(0,-1)),n()};var l=a(".as3cf-main .nav-tab-wrapper");a(".as3cf-compatibility-notice, div.updated, div.error, div.notice").not(".below-h2, .inline").insertAfter(l),s.length&&s.each(function(a,b){p[b.id]=c(b.id)}),a(window).on("beforeunload.as3cf-settings",function(){if(!a.isEmptyObject(p)&&!as3cf.Settings.Media.locked()){var b=o.attr("id");return c(b)!==p[b]?as3cf.strings.save_alert:void 0}}),a(document).on("submit",".as3cf-main-settings form",function(b){a(window).off("beforeunload.as3cf-settings")}),a(".as3cf-switch").on("click",function(b){a(this).hasClass("disabled")||a(this).parents().hasClass("locked")||d(a(this).attr("id"))}),s.on("change",".sub-toggle",function(b){var c=a(this).attr("id");a(".as3cf-setting."+c).toggleClass("hide")}),a(".url-preview").on("change","input",function(a){m()}),j(),a("#as3cf-serve-from-s3,#as3cf-remove-local-file").on("change",function(a){j()}),k(),a("#as3cf-remove-local-file").on("change",function(a){k()}),a('.as3cf-setting input[type="text"]').on("keypress",function(a){if(13===a.which)return a.preventDefault(),!1}),a(".as3cf-enable-delivery-domain-container").on("change",'input[type="checkbox"]',function(b){var c=a(this).is(":checked"),d=a(this).parents(".as3cf-enable-delivery-domain-container").find(".as3cf-setting.as3cf-delivery-domain");d.toggleClass("hide",!c);var e=a(this).parents(".as3cf-enable-delivery-domain-container").siblings(".as3cf-enable-signed-urls-container");e.toggleClass("hide",!c)}),a('input[name="enable-delivery-domain"]').on("change",function(b){var c=a(this),d=a("#"+o.attr("id")+' form button[type="submit"]');"1"!==c.val()?d.prop("disabled",!1):e(c.next(".as3cf-setting").find('input[name="delivery-domain"]'))}),a('input[name="delivery-domain"]').on("keyup",function(b){e(a(this))}),a(".as3cf-enable-signed-urls-container").on("change",'input[type="checkbox"]',function(b){var c=a(this).is(":checked"),d=a(this).parents(".as3cf-enable-signed-urls-container").find(".as3cf-setting.as3cf-signed-urls");d.toggleClass("hide",!c)}),a('input[name="signed-urls-key-id"]').on("keyup",function(b){f(a(this))}),a('input[name="enable-signed-urls-key-id"]').on("change",function(b){var c=a(this),d=a("#"+o.attr("id")+' form button[type="submit"]');"1"!==c.val()?d.prop("disabled",!1):f(c.next(".as3cf-setting").find('input[name="signed-urls-key-id"]'))}),a('input[name="signed-urls-key-file-path"]').on("keyup",function(b){g(a(this))}),a('input[name="enable-signed-urls-key-file-path"]').on("change",function(b){var c=a(this),d=a("#"+o.attr("id")+' form button[type="submit"]');"1"!==c.val()?d.prop("disabled",!1):g(c.next(".as3cf-setting").find('input[name="signed-urls-key-file-path"]'))}),a('input[name="signed-urls-object-prefix"]').on("keyup",function(b){h(a(this))}),a('input[name="enable-signed-urls-object-prefix"]').on("change",function(b){var c=a(this),d=a("#"+o.attr("id")+' form button[type="submit"]');"1"!==c.val()?d.prop("disabled",!1):h(c.next(".as3cf-setting").find('input[name="signed-urls-object-prefix"]'))}),a('input[name="object-prefix"]').on("change",function(a){i()}),a("#tab-media > .as3cf-bucket-error").detach().insertAfter(".as3cf-bucket-container h3"),as3cf.buckets.disabledButtons(),r.on("click",".bucket-action-refresh",function(a){a.preventDefault(),as3cf.buckets.loadList(!0)}),r.on("change",".bucket-select-region",function(a){a.preventDefault(),as3cf.buckets.loadList(!0)}),0 x; + function assign(tar, src) { + // @ts-ignore + for (const k in src) + tar[k] = src[k]; + return tar; + } + function is_promise(value) { + return value && typeof value === 'object' && typeof value.then === 'function'; + } + function add_location(element, file, line, column, char) { + element.__svelte_meta = { + loc: { file, line, column, char } + }; + } + function run(fn) { + return fn(); + } + function blank_object() { + return Object.create(null); + } + function run_all(fns) { + fns.forEach(run); + } + function is_function(thing) { + return typeof thing === 'function'; + } + function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); + } + let src_url_equal_anchor; + function src_url_equal(element_src, url) { + if (!src_url_equal_anchor) { + src_url_equal_anchor = document.createElement('a'); + } + src_url_equal_anchor.href = url; + return element_src === src_url_equal_anchor.href; + } + function is_empty(obj) { + return Object.keys(obj).length === 0; + } + function validate_store(store, name) { + if (store != null && typeof store.subscribe !== 'function') { + throw new Error(`'${name}' is not a store with a 'subscribe' method`); + } + } + function subscribe(store, ...callbacks) { + if (store == null) { + return noop; + } + const unsub = store.subscribe(...callbacks); + return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; + } + function get_store_value(store) { + let value; + subscribe(store, _ => value = _)(); + return value; + } + function component_subscribe(component, store, callback) { + component.$$.on_destroy.push(subscribe(store, callback)); + } + function create_slot(definition, ctx, $$scope, fn) { + if (definition) { + const slot_ctx = get_slot_context(definition, ctx, $$scope, fn); + return definition[0](slot_ctx); + } + } + function get_slot_context(definition, ctx, $$scope, fn) { + return definition[1] && fn + ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) + : $$scope.ctx; + } + function get_slot_changes(definition, $$scope, dirty, fn) { + if (definition[2] && fn) { + const lets = definition[2](fn(dirty)); + if ($$scope.dirty === undefined) { + return lets; + } + if (typeof lets === 'object') { + const merged = []; + const len = Math.max($$scope.dirty.length, lets.length); + for (let i = 0; i < len; i += 1) { + merged[i] = $$scope.dirty[i] | lets[i]; + } + return merged; + } + return $$scope.dirty | lets; + } + return $$scope.dirty; + } + function update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) { + if (slot_changes) { + const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn); + slot.p(slot_context, slot_changes); + } + } + function get_all_dirty_from_scope($$scope) { + if ($$scope.ctx.length > 32) { + const dirty = []; + const length = $$scope.ctx.length / 32; + for (let i = 0; i < length; i++) { + dirty[i] = -1; + } + return dirty; + } + return -1; + } + function exclude_internal_props(props) { + const result = {}; + for (const k in props) + if (k[0] !== '$') + result[k] = props[k]; + return result; + } + function set_store_value(store, ret, value) { + store.set(value); + return ret; + } + function action_destroyer(action_result) { + return action_result && is_function(action_result.destroy) ? action_result.destroy : noop; + } + + const is_client = typeof window !== 'undefined'; + let now = is_client + ? () => window.performance.now() + : () => Date.now(); + let raf = is_client ? cb => requestAnimationFrame(cb) : noop; + + const tasks = new Set(); + function run_tasks(now) { + tasks.forEach(task => { + if (!task.c(now)) { + tasks.delete(task); + task.f(); + } + }); + if (tasks.size !== 0) + raf(run_tasks); + } + /** + * Creates a new task that runs on each raf frame + * until it returns a falsy value or is aborted + */ + function loop(callback) { + let task; + if (tasks.size === 0) + raf(run_tasks); + return { + promise: new Promise(fulfill => { + tasks.add(task = { c: callback, f: fulfill }); + }), + abort() { + tasks.delete(task); + } + }; + } + function append(target, node) { + target.appendChild(node); + } + function get_root_for_style(node) { + if (!node) + return document; + const root = node.getRootNode ? node.getRootNode() : node.ownerDocument; + if (root && root.host) { + return root; + } + return node.ownerDocument; + } + function append_empty_stylesheet(node) { + const style_element = element('style'); + append_stylesheet(get_root_for_style(node), style_element); + return style_element.sheet; + } + function append_stylesheet(node, style) { + append(node.head || node, style); + } + function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); + } + function detach(node) { + node.parentNode.removeChild(node); + } + function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } + } + function element(name) { + return document.createElement(name); + } + function svg_element(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); + } + function text(data) { + return document.createTextNode(data); + } + function space() { + return text(' '); + } + function empty() { + return text(''); + } + function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); + } + function prevent_default(fn) { + return function (event) { + event.preventDefault(); + // @ts-ignore + return fn.call(this, event); + }; + } + function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); + } + function children(element) { + return Array.from(element.childNodes); + } + function set_input_value(input, value) { + input.value = value == null ? '' : value; + } + function set_style(node, key, value, important) { + if (value === null) { + node.style.removeProperty(key); + } + else { + node.style.setProperty(key, value, important ? 'important' : ''); + } + } + function select_option(select, value) { + for (let i = 0; i < select.options.length; i += 1) { + const option = select.options[i]; + if (option.__value === value) { + option.selected = true; + return; + } + } + select.selectedIndex = -1; // no option should be selected + } + function select_value(select) { + const selected_option = select.querySelector(':checked') || select.options[0]; + return selected_option && selected_option.__value; + } + // unfortunately this can't be a constant as that wouldn't be tree-shakeable + // so we cache the result instead + let crossorigin; + function is_crossorigin() { + if (crossorigin === undefined) { + crossorigin = false; + try { + if (typeof window !== 'undefined' && window.parent) { + void window.parent.document; + } + } + catch (error) { + crossorigin = true; + } + } + return crossorigin; + } + function add_resize_listener(node, fn) { + const computed_style = getComputedStyle(node); + if (computed_style.position === 'static') { + node.style.position = 'relative'; + } + const iframe = element('iframe'); + iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' + + 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;'); + iframe.setAttribute('aria-hidden', 'true'); + iframe.tabIndex = -1; + const crossorigin = is_crossorigin(); + let unsubscribe; + if (crossorigin) { + iframe.src = "data:text/html,"; + unsubscribe = listen(window, 'message', (event) => { + if (event.source === iframe.contentWindow) + fn(); + }); + } + else { + iframe.src = 'about:blank'; + iframe.onload = () => { + unsubscribe = listen(iframe.contentWindow, 'resize', fn); + }; + } + append(node, iframe); + return () => { + if (crossorigin) { + unsubscribe(); + } + else if (unsubscribe && iframe.contentWindow) { + unsubscribe(); + } + detach(iframe); + }; + } + function toggle_class(element, name, toggle) { + element.classList[toggle ? 'add' : 'remove'](name); + } + function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { + const e = document.createEvent('CustomEvent'); + e.initCustomEvent(type, bubbles, cancelable, detail); + return e; + } + class HtmlTag { + constructor(is_svg = false) { + this.is_svg = false; + this.is_svg = is_svg; + this.e = this.n = null; + } + c(html) { + this.h(html); + } + m(html, target, anchor = null) { + if (!this.e) { + if (this.is_svg) + this.e = svg_element(target.nodeName); + else + this.e = element(target.nodeName); + this.t = target; + this.c(html); + } + this.i(anchor); + } + h(html) { + this.e.innerHTML = html; + this.n = Array.from(this.e.childNodes); + } + i(anchor) { + for (let i = 0; i < this.n.length; i += 1) { + insert(this.t, this.n[i], anchor); + } + } + p(html) { + this.d(); + this.h(html); + this.i(this.a); + } + d() { + this.n.forEach(detach); + } + } + + // we need to store the information for multiple documents because a Svelte application could also contain iframes + // https://github.com/sveltejs/svelte/issues/3624 + const managed_styles = new Map(); + let active$1 = 0; + // https://github.com/darkskyapp/string-hash/blob/master/index.js + function hash(str) { + let hash = 5381; + let i = str.length; + while (i--) + hash = ((hash << 5) - hash) ^ str.charCodeAt(i); + return hash >>> 0; + } + function create_style_information(doc, node) { + const info = { stylesheet: append_empty_stylesheet(node), rules: {} }; + managed_styles.set(doc, info); + return info; + } + function create_rule(node, a, b, duration, delay, ease, fn, uid = 0) { + const step = 16.666 / duration; + let keyframes = '{\n'; + for (let p = 0; p <= 1; p += step) { + const t = a + (b - a) * ease(p); + keyframes += p * 100 + `%{${fn(t, 1 - t)}}\n`; + } + const rule = keyframes + `100% {${fn(b, 1 - b)}}\n}`; + const name = `__svelte_${hash(rule)}_${uid}`; + const doc = get_root_for_style(node); + const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node); + if (!rules[name]) { + rules[name] = true; + stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length); + } + const animation = node.style.animation || ''; + node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`; + active$1 += 1; + return name; + } + function delete_rule(node, name) { + const previous = (node.style.animation || '').split(', '); + const next = previous.filter(name + ? anim => anim.indexOf(name) < 0 // remove specific animation + : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations + ); + const deleted = previous.length - next.length; + if (deleted) { + node.style.animation = next.join(', '); + active$1 -= deleted; + if (!active$1) + clear_rules(); + } + } + function clear_rules() { + raf(() => { + if (active$1) + return; + managed_styles.forEach(info => { + const { stylesheet } = info; + let i = stylesheet.cssRules.length; + while (i--) + stylesheet.deleteRule(i); + info.rules = {}; + }); + managed_styles.clear(); + }); + } + + let current_component; + function set_current_component(component) { + current_component = component; + } + function get_current_component() { + if (!current_component) + throw new Error('Function called outside component initialization'); + return current_component; + } + function onMount(fn) { + get_current_component().$$.on_mount.push(fn); + } + function afterUpdate(fn) { + get_current_component().$$.after_update.push(fn); + } + function onDestroy(fn) { + get_current_component().$$.on_destroy.push(fn); + } + function createEventDispatcher() { + const component = get_current_component(); + return (type, detail, { cancelable = false } = {}) => { + const callbacks = component.$$.callbacks[type]; + if (callbacks) { + // TODO are there situations where events could be dispatched + // in a server (non-DOM) environment? + const event = custom_event(type, detail, { cancelable }); + callbacks.slice().forEach(fn => { + fn.call(component, event); + }); + return !event.defaultPrevented; + } + return true; + }; + } + function setContext(key, context) { + get_current_component().$$.context.set(key, context); + return context; + } + function getContext(key) { + return get_current_component().$$.context.get(key); + } + function hasContext(key) { + return get_current_component().$$.context.has(key); + } + // TODO figure out if we still want to support + // shorthand events, or if we want to implement + // a real bubbling mechanism + function bubble(component, event) { + const callbacks = component.$$.callbacks[event.type]; + if (callbacks) { + // @ts-ignore + callbacks.slice().forEach(fn => fn.call(this, event)); + } + } + + const dirty_components = []; + const binding_callbacks = []; + const render_callbacks = []; + const flush_callbacks = []; + const resolved_promise = Promise.resolve(); + let update_scheduled = false; + function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } + } + function tick() { + schedule_update(); + return resolved_promise; + } + function add_render_callback(fn) { + render_callbacks.push(fn); + } + function add_flush_callback(fn) { + flush_callbacks.push(fn); + } + // flush() calls callbacks in this order: + // 1. All beforeUpdate callbacks, in order: parents before children + // 2. All bind:this callbacks, in reverse order: children before parents. + // 3. All afterUpdate callbacks, in order: parents before children. EXCEPT + // for afterUpdates called during the initial onMount, which are called in + // reverse order: children before parents. + // Since callbacks might update component values, which could trigger another + // call to flush(), the following steps guard against this: + // 1. During beforeUpdate, any updated components will be added to the + // dirty_components array and will cause a reentrant call to flush(). Because + // the flush index is kept outside the function, the reentrant call will pick + // up where the earlier call left off and go through all dirty components. The + // current_component value is saved and restored so that the reentrant call will + // not interfere with the "parent" flush() call. + // 2. bind:this callbacks cannot trigger new flush() calls. + // 3. During afterUpdate, any updated components will NOT have their afterUpdate + // callback called a second time; the seen_callbacks set, outside the flush() + // function, guarantees this behavior. + const seen_callbacks = new Set(); + let flushidx = 0; // Do *not* move this inside the flush() function + function flush() { + const saved_component = current_component; + do { + // first, call beforeUpdate functions + // and update components + while (flushidx < dirty_components.length) { + const component = dirty_components[flushidx]; + flushidx++; + set_current_component(component); + update(component.$$); + } + set_current_component(null); + dirty_components.length = 0; + flushidx = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + // ...so guard against infinite loops + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + seen_callbacks.clear(); + set_current_component(saved_component); + } + function update($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } + } + + let promise; + function wait() { + if (!promise) { + promise = Promise.resolve(); + promise.then(() => { + promise = null; + }); + } + return promise; + } + function dispatch(node, direction, kind) { + node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`)); + } + const outroing = new Set(); + let outros; + function group_outros() { + outros = { + r: 0, + c: [], + p: outros // parent group + }; + } + function check_outros() { + if (!outros.r) { + run_all(outros.c); + } + outros = outros.p; + } + function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } + } + function transition_out(block, local, detach, callback) { + if (block && block.o) { + if (outroing.has(block)) + return; + outroing.add(block); + outros.c.push(() => { + outroing.delete(block); + if (callback) { + if (detach) + block.d(1); + callback(); + } + }); + block.o(local); + } + else if (callback) { + callback(); + } + } + const null_transition = { duration: 0 }; + function create_bidirectional_transition(node, fn, params, intro) { + let config = fn(node, params); + let t = intro ? 0 : 1; + let running_program = null; + let pending_program = null; + let animation_name = null; + function clear_animation() { + if (animation_name) + delete_rule(node, animation_name); + } + function init(program, duration) { + const d = (program.b - t); + duration *= Math.abs(d); + return { + a: t, + b: program.b, + d, + duration, + start: program.start, + end: program.start + duration, + group: program.group + }; + } + function go(b) { + const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition; + const program = { + start: now() + delay, + b + }; + if (!b) { + // @ts-ignore todo: improve typings + program.group = outros; + outros.r += 1; + } + if (running_program || pending_program) { + pending_program = program; + } + else { + // if this is an intro, and there's a delay, we need to do + // an initial tick and/or apply CSS animation immediately + if (css) { + clear_animation(); + animation_name = create_rule(node, t, b, duration, delay, easing, css); + } + if (b) + tick(0, 1); + running_program = init(program, duration); + add_render_callback(() => dispatch(node, b, 'start')); + loop(now => { + if (pending_program && now > pending_program.start) { + running_program = init(pending_program, duration); + pending_program = null; + dispatch(node, running_program.b, 'start'); + if (css) { + clear_animation(); + animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css); + } + } + if (running_program) { + if (now >= running_program.end) { + tick(t = running_program.b, 1 - t); + dispatch(node, running_program.b, 'end'); + if (!pending_program) { + // we're done + if (running_program.b) { + // intro — we can tidy up immediately + clear_animation(); + } + else { + // outro — needs to be coordinated + if (!--running_program.group.r) + run_all(running_program.group.c); + } + } + running_program = null; + } + else if (now >= running_program.start) { + const p = now - running_program.start; + t = running_program.a + running_program.d * easing(p / running_program.duration); + tick(t, 1 - t); + } + } + return !!(running_program || pending_program); + }); + } + } + return { + run(b) { + if (is_function(config)) { + wait().then(() => { + // @ts-ignore + config = config(); + go(b); + }); + } + else { + go(b); + } + }, + end() { + clear_animation(); + running_program = pending_program = null; + } + }; + } + + function handle_promise(promise, info) { + const token = info.token = {}; + function update(type, index, key, value) { + if (info.token !== token) + return; + info.resolved = value; + let child_ctx = info.ctx; + if (key !== undefined) { + child_ctx = child_ctx.slice(); + child_ctx[key] = value; + } + const block = type && (info.current = type)(child_ctx); + let needs_flush = false; + if (info.block) { + if (info.blocks) { + info.blocks.forEach((block, i) => { + if (i !== index && block) { + group_outros(); + transition_out(block, 1, 1, () => { + if (info.blocks[i] === block) { + info.blocks[i] = null; + } + }); + check_outros(); + } + }); + } + else { + info.block.d(1); + } + block.c(); + transition_in(block, 1); + block.m(info.mount(), info.anchor); + needs_flush = true; + } + info.block = block; + if (info.blocks) + info.blocks[index] = block; + if (needs_flush) { + flush(); + } + } + if (is_promise(promise)) { + const current_component = get_current_component(); + promise.then(value => { + set_current_component(current_component); + update(info.then, 1, info.value, value); + set_current_component(null); + }, error => { + set_current_component(current_component); + update(info.catch, 2, info.error, error); + set_current_component(null); + if (!info.hasCatch) { + throw error; + } + }); + // if we previously had a then/catch block, destroy it + if (info.current !== info.pending) { + update(info.pending, 0); + return true; + } + } + else { + if (info.current !== info.then) { + update(info.then, 1, info.value, promise); + return true; + } + info.resolved = promise; + } + } + function update_await_block_branch(info, ctx, dirty) { + const child_ctx = ctx.slice(); + const { resolved } = info; + if (info.current === info.then) { + child_ctx[info.value] = resolved; + } + if (info.current === info.catch) { + child_ctx[info.error] = resolved; + } + info.block.p(child_ctx, dirty); + } + + const globals = (typeof window !== 'undefined' + ? window + : typeof globalThis !== 'undefined' + ? globalThis + : global); + function outro_and_destroy_block(block, lookup) { + transition_out(block, 1, 1, () => { + lookup.delete(block.key); + }); + } + function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) { + let o = old_blocks.length; + let n = list.length; + let i = o; + const old_indexes = {}; + while (i--) + old_indexes[old_blocks[i].key] = i; + const new_blocks = []; + const new_lookup = new Map(); + const deltas = new Map(); + i = n; + while (i--) { + const child_ctx = get_context(ctx, list, i); + const key = get_key(child_ctx); + let block = lookup.get(key); + if (!block) { + block = create_each_block(key, child_ctx); + block.c(); + } + else if (dynamic) { + block.p(child_ctx, dirty); + } + new_lookup.set(key, new_blocks[i] = block); + if (key in old_indexes) + deltas.set(key, Math.abs(i - old_indexes[key])); + } + const will_move = new Set(); + const did_move = new Set(); + function insert(block) { + transition_in(block, 1); + block.m(node, next); + lookup.set(block.key, block); + next = block.first; + n--; + } + while (o && n) { + const new_block = new_blocks[n - 1]; + const old_block = old_blocks[o - 1]; + const new_key = new_block.key; + const old_key = old_block.key; + if (new_block === old_block) { + // do nothing + next = new_block.first; + o--; + n--; + } + else if (!new_lookup.has(old_key)) { + // remove old block + destroy(old_block, lookup); + o--; + } + else if (!lookup.has(new_key) || will_move.has(new_key)) { + insert(new_block); + } + else if (did_move.has(old_key)) { + o--; + } + else if (deltas.get(new_key) > deltas.get(old_key)) { + did_move.add(new_key); + insert(new_block); + } + else { + will_move.add(old_key); + o--; + } + } + while (o--) { + const old_block = old_blocks[o]; + if (!new_lookup.has(old_block.key)) + destroy(old_block, lookup); + } + while (n) + insert(new_blocks[n - 1]); + return new_blocks; + } + function validate_each_keys(ctx, list, get_context, get_key) { + const keys = new Set(); + for (let i = 0; i < list.length; i++) { + const key = get_key(get_context(ctx, list, i)); + if (keys.has(key)) { + throw new Error('Cannot have duplicate keys in a keyed each'); + } + keys.add(key); + } + } + + function get_spread_update(levels, updates) { + const update = {}; + const to_null_out = {}; + const accounted_for = { $$scope: 1 }; + let i = levels.length; + while (i--) { + const o = levels[i]; + const n = updates[i]; + if (n) { + for (const key in o) { + if (!(key in n)) + to_null_out[key] = 1; + } + for (const key in n) { + if (!accounted_for[key]) { + update[key] = n[key]; + accounted_for[key] = 1; + } + } + levels[i] = n; + } + else { + for (const key in o) { + accounted_for[key] = 1; + } + } + } + for (const key in to_null_out) { + if (!(key in update)) + update[key] = undefined; + } + return update; + } + function get_spread_object(spread_props) { + return typeof spread_props === 'object' && spread_props !== null ? spread_props : {}; + } + + function bind(component, name, callback) { + const index = component.$$.props[name]; + if (index !== undefined) { + component.$$.bound[index] = callback; + callback(component.$$.ctx[index]); + } + } + function create_component(block) { + block && block.c(); + } + function mount_component(component, target, anchor, customElement) { + const { fragment, on_mount, on_destroy, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = on_mount.map(run).filter(is_function); + if (on_destroy) { + on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); + } + function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } + } + function make_dirty(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); + } + function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: null, + // state + props, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false, + root: options.target || parent_component.$$.root + }; + append_styles && append_styles($$.root); + let ready = false; + $$.ctx = instance + ? instance(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); + } + return ret; + }) + : []; + $$.update(); + ready = true; + run_all($$.before_update); + // `false` as a special case of no DOM component + $$.fragment = create_fragment ? create_fragment($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + const nodes = children(options.target); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + flush(); + } + set_current_component(parent_component); + } + /** + * Base class for Svelte components. Used when dev=false. + */ + class SvelteComponent { + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } + } + + function dispatch_dev(type, detail) { + document.dispatchEvent(custom_event(type, Object.assign({ version: '3.49.0' }, detail), { bubbles: true })); + } + function append_dev(target, node) { + dispatch_dev('SvelteDOMInsert', { target, node }); + append(target, node); + } + function insert_dev(target, node, anchor) { + dispatch_dev('SvelteDOMInsert', { target, node, anchor }); + insert(target, node, anchor); + } + function detach_dev(node) { + dispatch_dev('SvelteDOMRemove', { node }); + detach(node); + } + function listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) { + const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : []; + if (has_prevent_default) + modifiers.push('preventDefault'); + if (has_stop_propagation) + modifiers.push('stopPropagation'); + dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers }); + const dispose = listen(node, event, handler, options); + return () => { + dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers }); + dispose(); + }; + } + function attr_dev(node, attribute, value) { + attr(node, attribute, value); + if (value == null) + dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute }); + else + dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value }); + } + function prop_dev(node, property, value) { + node[property] = value; + dispatch_dev('SvelteDOMSetProperty', { node, property, value }); + } + function set_data_dev(text, data) { + data = '' + data; + if (text.wholeText === data) + return; + dispatch_dev('SvelteDOMSetData', { node: text, data }); + text.data = data; + } + function validate_each_argument(arg) { + if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) { + let msg = '{#each} only iterates over array-like objects.'; + if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) { + msg += ' You can use a spread to convert this iterable into an array.'; + } + throw new Error(msg); + } + } + function validate_slots(name, slot, keys) { + for (const slot_key of Object.keys(slot)) { + if (!~keys.indexOf(slot_key)) { + console.warn(`<${name}> received an unexpected slot "${slot_key}".`); + } + } + } + /** + * Base class for Svelte components with some minor dev-enhancements. Used when dev=true. + */ + class SvelteComponentDev extends SvelteComponent { + constructor(options) { + if (!options || (!options.target && !options.$$inline)) { + throw new Error("'target' is a required option"); + } + super(); + } + $destroy() { + super.$destroy(); + this.$destroy = () => { + console.warn('Component was already destroyed'); // eslint-disable-line no-console + }; + } + $capture_state() { } + $inject_state() { } + } + + const subscriber_queue = []; + /** + * Creates a `Readable` store that allows reading by subscription. + * @param value initial value + * @param {StartStopNotifier}start start and stop notifications for subscriptions + */ + function readable(value, start) { + return { + subscribe: writable(value, start).subscribe + }; + } + /** + * Create a `Writable` store that allows both updating and reading by subscription. + * @param {*=}value initial value + * @param {StartStopNotifier=}start start and stop notifications for subscriptions + */ + function writable(value, start = noop) { + let stop; + const subscribers = new Set(); + function set(new_value) { + if (safe_not_equal(value, new_value)) { + value = new_value; + if (stop) { // store is ready + const run_queue = !subscriber_queue.length; + for (const subscriber of subscribers) { + subscriber[1](); + subscriber_queue.push(subscriber, value); + } + if (run_queue) { + for (let i = 0; i < subscriber_queue.length; i += 2) { + subscriber_queue[i][0](subscriber_queue[i + 1]); + } + subscriber_queue.length = 0; + } + } + } + } + function update(fn) { + set(fn(value)); + } + function subscribe(run, invalidate = noop) { + const subscriber = [run, invalidate]; + subscribers.add(subscriber); + if (subscribers.size === 1) { + stop = start(set) || noop; + } + run(value); + return () => { + subscribers.delete(subscriber); + if (subscribers.size === 0) { + stop(); + stop = null; + } + }; + } + return { set, update, subscribe }; + } + function derived(stores, fn, initial_value) { + const single = !Array.isArray(stores); + const stores_array = single + ? [stores] + : stores; + const auto = fn.length < 2; + return readable(initial_value, (set) => { + let inited = false; + const values = []; + let pending = 0; + let cleanup = noop; + const sync = () => { + if (pending) { + return; + } + cleanup(); + const result = fn(single ? values[0] : values, set); + if (auto) { + set(result); + } + else { + cleanup = is_function(result) ? result : noop; + } + }; + const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => { + values[i] = value; + pending &= ~(1 << i); + if (inited) { + sync(); + } + }, () => { + pending |= (1 << i); + })); + inited = true; + sync(); + return function stop() { + run_all(unsubscribers); + cleanup(); + }; + }); + } + + /** + * Does the current object have different keys or values compared to the previous version? + * + * @param {object} previous + * @param {object} current + * + * @returns {boolean} + */ + function objectsDiffer( [previous, current] ) { + if ( !previous || !current ) { + return false; + } + + // Any difference in keys? + const prevKeys = Object.keys( previous ); + const currKeys = Object.keys( current ); + + if ( prevKeys.length !== currKeys.length ) { + return true; + } + + // Symmetrical diff to find extra keys in either object. + if ( + prevKeys.filter( x => !currKeys.includes( x ) ) + .concat( + currKeys.filter( x => !prevKeys.includes( x ) ) + ) + .length > 0 + ) { + return true; + } + + // Any difference in values? + for ( const key in previous ) { + if ( JSON.stringify( current[ key ] ) !== JSON.stringify( previous[ key ] ) ) { + return true; + } + } + + return false; + } + + // Initial config store. + const config = writable( {} ); + + // Whether settings are locked due to background activity such as upgrade. + const settingsLocked = writable( false ); + + // Convenience readable store of server's settings, derived from config. + const current_settings = derived( config, $config => $config.settings ); + + // Convenience readable store of defined settings keys, derived from config. + const defined_settings = derived( config, $config => $config.defined_settings ); + + // Convenience readable store of translated strings, derived from config. + const strings = derived( config, $config => $config.strings ); + + // Convenience readable store for nonce, derived from config. + const nonce = derived( config, $config => $config.nonce ); + + // Convenience readable store of urls, derived from config. + const urls = derived( config, $config => $config.urls ); + + // Convenience readable store of docs, derived from config. + const docs = derived( config, $config => $config.docs ); + + // Convenience readable store of api endpoints, derived from config. + const endpoints = derived( config, $config => $config.endpoints ); + + // Convenience readable store of diagnostics, derived from config. + const diagnostics = derived( config, $config => $config.diagnostics ); + + // Convenience readable store of counts, derived from config. + const counts = derived( config, $config => $config.counts ); + + // Convenience readable store of upgrades, derived from config. + derived( config, $config => $config.upgrades ); + + // Convenience readable store of whether plugin is set up, derived from config. + const is_plugin_setup = derived( config, $config => $config.is_plugin_setup ); + + // Convenience readable store of whether plugin is set up, including with credentials, derived from config. + const is_plugin_setup_with_credentials = derived( config, $config => $config.is_plugin_setup_with_credentials ); + + // Convenience readable store of whether storage provider needs access credentials, derived from config. + const needs_access_keys = derived( config, $config => $config.needs_access_keys ); + + // Convenience readable store of whether bucket is writable, derived from config. + derived( config, $config => $config.bucket_writable ); + + // Store of inline errors and warnings to be shown next to settings. + // Format is a map using settings key for keys, values are an array of objects that can be used to instantiate a notification. + const settings_notifications = writable( new Map() ); + + // Store of validation errors for settings. + // Format is a map using settings key for keys, values are strings containing validation error. + const validationErrors = writable( new Map() ); + + // Does the app need a page refresh to resolve conflicts? + const needs_refresh = writable( false ); + + // Various stores may call the API, and the api object uses some stores. + // To avoid cyclic dependencies, we therefore co-locate the api object with the stores. + // We also need to add its functions much later so that JSHint does not complain about using the stores too early. + const api = {}; + + /** + * Creates store of settings. + * + * @return {Object} + */ + function createSettings() { + const { subscribe, set, update } = writable( [] ); + + return { + subscribe, + set, + async save() { + const json = await api.put( "settings", get_store_value( this ) ); + + if ( json.hasOwnProperty( "saved" ) && true === json.saved ) { + // Sync settings with what the server has. + this.updateSettings( json ); + + return json; + } + + return {}; + }, + reset() { + set( { ...get_store_value( current_settings ) } ); + }, + async fetch() { + const json = await api.get( "settings", {} ); + this.updateSettings( json ); + }, + updateSettings( json ) { + if ( + json.hasOwnProperty( "defined_settings" ) && + json.hasOwnProperty( "settings" ) && + json.hasOwnProperty( "storage_providers" ) && + json.hasOwnProperty( "delivery_providers" ) && + json.hasOwnProperty( "is_plugin_setup" ) && + json.hasOwnProperty( "is_plugin_setup_with_credentials" ) && + json.hasOwnProperty( "needs_access_keys" ) && + json.hasOwnProperty( "bucket_writable" ) && + json.hasOwnProperty( "urls" ) + ) { + // Update our understanding of what the server's settings are. + config.update( $config => { + return { + ...$config, + defined_settings: json.defined_settings, + settings: json.settings, + storage_providers: json.storage_providers, + delivery_providers: json.delivery_providers, + is_plugin_setup: json.is_plugin_setup, + is_plugin_setup_with_credentials: json.is_plugin_setup_with_credentials, + needs_access_keys: json.needs_access_keys, + bucket_writable: json.bucket_writable, + urls: json.urls + }; + } ); + // Update our local working copy of the settings. + update( $settings => { + return { ...json.settings }; + } ); + } + } + }; + } + + const settings = createSettings(); + + // Have the settings been changed from current server side settings? + const settings_changed = derived( [settings, current_settings], objectsDiffer ); + + // Convenience readable store of available storage providers. + const storage_providers = derived( [config, urls], ( [$config, $urls] ) => { + for ( const key in $config.storage_providers ) { + $config.storage_providers[ key ].icon = $urls.assets + "img/icon/provider/storage/" + $config.storage_providers[ key ].provider_key_name + ".svg"; + $config.storage_providers[ key ].link_icon = $urls.assets + "img/icon/provider/storage/" + $config.storage_providers[ key ].provider_key_name + "-link.svg"; + $config.storage_providers[ key ].round_icon = $urls.assets + "img/icon/provider/storage/" + $config.storage_providers[ key ].provider_key_name + "-round.svg"; + } + + return $config.storage_providers; + } ); + + // Convenience readable store of storage provider's details. + const storage_provider = derived( [settings, storage_providers], ( [$settings, $storage_providers] ) => { + if ( $settings.hasOwnProperty( "provider" ) && $storage_providers.hasOwnProperty( $settings.provider ) ) { + return $storage_providers[ $settings.provider ]; + } else { + return []; + } + } ); + + // Convenience readable store of available delivery providers. + const delivery_providers = derived( [config, urls, storage_provider], ( [$config, $urls, $storage_provider] ) => { + for ( const key in $config.delivery_providers ) { + if ( "storage" === key ) { + $config.delivery_providers[ key ].icon = $storage_provider.icon; + $config.delivery_providers[ key ].round_icon = $storage_provider.round_icon; + $config.delivery_providers[ key ].provider_service_quick_start_url = $storage_provider.provider_service_quick_start_url; + } else { + $config.delivery_providers[ key ].icon = $urls.assets + "img/icon/provider/delivery/" + $config.delivery_providers[ key ].provider_key_name + ".svg"; + $config.delivery_providers[ key ].round_icon = $urls.assets + "img/icon/provider/delivery/" + $config.delivery_providers[ key ].provider_key_name + "-round.svg"; + } + } + + return $config.delivery_providers; + } ); + + // Convenience readable store of delivery provider's details. + const delivery_provider = derived( [settings, delivery_providers, urls], ( [$settings, $delivery_providers, $urls] ) => { + if ( $settings.hasOwnProperty( "delivery-provider" ) && $delivery_providers.hasOwnProperty( $settings[ "delivery-provider" ] ) ) { + return $delivery_providers[ $settings[ "delivery-provider" ] ]; + } else { + return []; + } + } ); + + // Full name for current region. + const region_name = derived( [settings, storage_provider, strings], ( [$settings, $storage_provider, $strings] ) => { + if ( $settings.region && $storage_provider.regions && $storage_provider.regions.hasOwnProperty( $settings.region ) ) { + return $storage_provider.regions[ $settings.region ]; + } else if ( $settings.region && $storage_provider.regions ) { + // Region set but not available in list of regions. + return $strings.unknown; + } else if ( $storage_provider.default_region && $storage_provider.regions && $storage_provider.regions.hasOwnProperty( $storage_provider.default_region ) ) { + // Region not set but default available. + return $storage_provider.regions[ $storage_provider.default_region ]; + } else { + // Possibly no default region or regions available. + return $strings.unknown; + } + } ); + + // Convenience readable store of whether Block All Public Access is enabled. + const bapa = derived( [settings, storage_provider], ( [$settings, $storage_provider] ) => { + return $storage_provider.block_public_access_supported && $settings.hasOwnProperty( "block-public-access" ) && $settings[ "block-public-access" ]; + } ); + + // Convenience readable store of whether Object Ownership is enforced. + const ooe = derived( [settings, storage_provider], ( [$settings, $storage_provider] ) => { + return $storage_provider.object_ownership_supported && $settings.hasOwnProperty( "object-ownership-enforced" ) && $settings[ "object-ownership-enforced" ]; + } ); + + /** + * Creates a store of notifications. + * + * Example object in the array: + * { + * id: "error-message", + * type: "error", // error | warning | success | primary (default) + * dismissible: true, + * flash: true, // Optional, means notification is context specific and will not persist on server, defaults to true. + * inline: false, // Optional, unlikely to be true, included here for completeness. + * only_show_on_tab: "media-library", // Optional, blank/missing means on all tabs. + * heading: "Global Error: Something has gone terribly pear shaped.", // Optional. + * message: "We're so sorry, but unfortunately we're going to have to delete the year 2020.", // Optional. + * icon: "notification-error.svg", // Optional icon file name to be shown in front of heading. + * plainHeading: false, // Optional boolean as to whether a

    tag should be used instead of

    for heading content. + * extra: "", // Optional extra content to be shown in paragraph below message. + * links: [], // Optional list of links to be shown at bottom of notice. + * }, + * + * @return {Object} + */ + function createNotifications() { + const { subscribe, set, update } = writable( [] ); + + return { + set, + subscribe, + add( notification ) { + // There's a slight difference between our notification's formatting and what WP uses. + if ( notification.hasOwnProperty( "type" ) && notification.type === "updated" ) { + notification.type = "success"; + } + if ( notification.hasOwnProperty( "type" ) && notification.type === "notice-warning" ) { + notification.type = "warning"; + } + if ( notification.hasOwnProperty( "type" ) && notification.type === "notice-info" ) { + notification.type = "info"; + } + if ( + notification.hasOwnProperty( "message" ) && + (!notification.hasOwnProperty( "heading" ) || notification.heading.trim().length === 0) + ) { + notification.heading = notification.message; + notification.plainHeading = true; + delete notification.message; + } + if ( !notification.hasOwnProperty( "flash" ) ) { + notification.flash = true; + } + + // We need some sort of id for indexing and to ensure rendering is efficient. + if ( !notification.hasOwnProperty( "id" ) ) { + // Notifications are useless without at least a heading or message, so we can be sure at least one exists. + const idHeading = notification.hasOwnProperty( "heading" ) ? notification.heading.trim() : "dynamic-heading"; + const idMessage = notification.hasOwnProperty( "message" ) ? notification.message.trim() : "dynamic-message"; + + notification.id = btoa( idHeading + idMessage ); + } + + // So that rendering is efficient, but updates displayed notifications that re-use keys, + // we create a render_key based on id and created_at as created_at is churned on re-use. + const createdAt = notification.hasOwnProperty( "created_at" ) ? notification.created_at : 0; + notification.render_key = notification.id + "-" + createdAt; + + update( $notifications => { + // Maybe update a notification if id already exists. + let index = -1; + if ( notification.hasOwnProperty( "id" ) ) { + index = $notifications.findIndex( _notification => _notification.id === notification.id ); + } + + if ( index >= 0 ) { + // If the id exists but has been dismissed, add the replacement notification to the end of the array + // if given notification is newer, otherwise skip it entirely. + if ( $notifications[ index ].hasOwnProperty( "dismissed" ) ) { + if ( $notifications[ index ].dismissed < notification.created_at ) { + $notifications.push( notification ); + $notifications.splice( index, 1 ); + } + } else { + // Update existing. + $notifications.splice( index, 1, notification ); + } + } else { + // Add new. + $notifications.push( notification ); + } + + return $notifications.sort( this.sortCompare ); + } ); + }, + sortCompare( a, b ) { + // Sort by created_at in case an existing notification was updated. + if ( a.created_at < b.created_at ) { + return -1; + } + + if ( a.created_at > b.created_at ) { + return 1; + } + + return 0; + }, + async dismiss( id ) { + update( $notifications => { + const index = $notifications.findIndex( notification => notification.id === id ); + + // If the notification still exists, set a "dismissed" tombstone with the created_at value. + // The cleanup will delete any notifications that have been dismissed and no longer exist + // in the list of notifications retrieved from the server. + // The created_at value ensures that if a notification is retrieved from the server that + // has the same id but later created_at, then it can be added, otherwise it is skipped. + if ( index >= 0 ) { + if ( $notifications[ index ].hasOwnProperty( "created_at" ) ) { + $notifications[ index ].dismissed = $notifications[ index ].created_at; + } else { + // Notification likely did not come from server, maybe a local "flash" notification. + $notifications.splice( index, 1 ); + } + } + + return $notifications; + } ); + + // Tell server to dismiss notification, still ok to try if flash notification, makes sure it is definitely removed. + await api.delete( "notifications", { id: id, all_tabs: true } ); + }, + /** + * Delete removes a notification from the UI without telling the server. + */ + delete( id ) { + update( $notifications => { + const index = $notifications.findIndex( notification => notification.id === id ); + + if ( index >= 0 ) { + $notifications.splice( index, 1 ); + } + + return $notifications; + } ); + }, + cleanup( latest ) { + update( $notifications => { + for ( const [index, notification] of $notifications.entries() ) { + // Only clean up dismissed or server created notices that no longer exist. + if ( notification.hasOwnProperty( "dismissed" ) || notification.hasOwnProperty( "created_at" ) ) { + const latestIndex = latest.findIndex( _notification => _notification.id === notification.id ); + + // If server doesn't know about the notification anymore, remove it. + if ( latestIndex < 0 ) { + $notifications.splice( index, 1 ); + } + } + } + + return $notifications; + } ); + } + }; + } + + const notifications = createNotifications(); + + // Controller for periodic fetch of state info. + let stateFetchInterval; + let stateFetchIntervalStarted = false; + let stateFetchIntervalPaused = false; + + // Store of functions to call before an update of state processes the result into config. + const preStateUpdateCallbacks = writable( [] ); + + // Store of functions to call after an update of state processes the result into config. + const postStateUpdateCallbacks = writable( [] ); + + /** + * Store of functions to call when state info is updated, and actual API access methods. + * + * Functions are called after the returned state info has been used to update the config store. + * Therefore, functions should only be added to the store if extra processing is required. + * The functions should be asynchronous as they are part of the reactive chain and called with await. + * + * @return {Object} + */ + function createState() { + const { subscribe, set, update } = writable( [] ); + + return { + subscribe, + set, + update, + async fetch() { + const json = await api.get( "state", {} ); + + // Abort controller is still a bit hit or miss, so we'll go old skool. + if ( stateFetchIntervalStarted && !stateFetchIntervalPaused ) { + this.updateState( json ); + } + }, + updateState( json ) { + for ( const callable of get_store_value( preStateUpdateCallbacks ) ) { + callable( json ); + } + + const dirty = get_store_value( settings_changed ); + const previous_settings = { ...get_store_value( current_settings ) }; // cloned + + config.update( $config => { + return { ...$config, ...json }; + } ); + + // If the settings weren't changed before, they shouldn't be now. + if ( !dirty && get_store_value( settings_changed ) ) { + settings.reset(); + } + + // If settings are in middle of being changed when changes come in + // from server, reset to server version. + if ( dirty && objectsDiffer( [previous_settings, get_store_value( current_settings )] ) ) { + needs_refresh.update( $needs_refresh => true ); + settings.reset(); + } + + for ( const callable of get_store_value( postStateUpdateCallbacks ) ) { + callable( json ); + } + }, + startPeriodicFetch() { + stateFetchIntervalStarted = true; + stateFetchIntervalPaused = false; + + stateFetchInterval = setInterval( async () => { + await this.fetch(); + }, 5000 ); + }, + stopPeriodicFetch() { + stateFetchIntervalStarted = false; + stateFetchIntervalPaused = false; + + clearInterval( stateFetchInterval ); + }, + pausePeriodicFetch() { + if ( stateFetchIntervalStarted ) { + stateFetchIntervalPaused = true; + clearInterval( stateFetchInterval ); + } + }, + resumePeriodicFetch() { + stateFetchIntervalPaused = false; + + if ( stateFetchIntervalStarted ) { + this.startPeriodicFetch(); + } + } + }; + } + + const state = createState(); + + // API functions added here to avoid JSHint errors. + api.headers = () => { + return { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'X-WP-Nonce': get_store_value( nonce ) + }; + }; + + api.url = ( endpoint ) => { + return get_store_value( urls ).api + get_store_value( endpoints )[ endpoint ]; + }; + + api.get = async ( endpoint, params ) => { + let url = new URL( api.url( endpoint ) ); + + const searchParams = new URLSearchParams( params ); + + searchParams.forEach( function( value, name ) { + url.searchParams.set( name, value ); + } ); + + const response = await fetch( url.toString(), { + method: 'GET', + headers: api.headers() + } ); + return response.json().then( json => { + json = api.check_response( json ); + return json; + } ); + }; + + api.post = async ( endpoint, body ) => { + const response = await fetch( api.url( endpoint ), { + method: 'POST', + headers: api.headers(), + body: JSON.stringify( body ) + } ); + return response.json().then( json => { + json = api.check_response( json ); + return json; + } ); + }; + + api.put = async ( endpoint, body ) => { + const response = await fetch( api.url( endpoint ), { + method: 'PUT', + headers: api.headers(), + body: JSON.stringify( body ) + } ); + return response.json().then( json => { + json = api.check_response( json ); + return json; + } ); + }; + + api.delete = async ( endpoint, body ) => { + const response = await fetch( api.url( endpoint ), { + method: 'DELETE', + headers: api.headers(), + body: JSON.stringify( body ) + } ); + return response.json().then( json => { + json = api.check_response( json ); + return json; + } ); + }; + + api.check_errors = ( json ) => { + if ( json.code && json.message ) { + notifications.add( { + id: json.code, + type: 'error', + dismissible: true, + heading: get_store_value( strings ).api_error_notice_heading, + message: json.message + } ); + + // Just in case resultant json is expanded into a store. + delete json.code; + delete json.message; + } + + return json; + }; + + api.check_notifications = ( json ) => { + const _notifications = json.hasOwnProperty( "notifications" ) ? json.notifications : []; + if ( _notifications ) { + for ( const notification of _notifications ) { + notifications.add( notification ); + } + } + notifications.cleanup( _notifications ); + + // Just in case resultant json is expanded into a store. + delete json.notifications; + + return json; + }; + + api.check_response = ( json ) => { + json = api.check_notifications( json ); + json = api.check_errors( json ); + + return json; + }; + + /** + * @typedef {Object} WrappedComponent Object returned by the `wrap` method + * @property {SvelteComponent} component - Component to load (this is always asynchronous) + * @property {RoutePrecondition[]} [conditions] - Route pre-conditions to validate + * @property {Object} [props] - Optional dictionary of static props + * @property {Object} [userData] - Optional user data dictionary + * @property {bool} _sveltesparouter - Internal flag; always set to true + */ + + /** + * @callback AsyncSvelteComponent + * @returns {Promise} Returns a Promise that resolves with a Svelte component + */ + + /** + * @callback RoutePrecondition + * @param {RouteDetail} detail - Route detail object + * @returns {boolean|Promise} If the callback returns a false-y value, it's interpreted as the precondition failed, so it aborts loading the component (and won't process other pre-condition callbacks) + */ + + /** + * @typedef {Object} WrapOptions Options object for the call to `wrap` + * @property {SvelteComponent} [component] - Svelte component to load (this is incompatible with `asyncComponent`) + * @property {AsyncSvelteComponent} [asyncComponent] - Function that returns a Promise that fulfills with a Svelte component (e.g. `{asyncComponent: () => import('Foo.svelte')}`) + * @property {SvelteComponent} [loadingComponent] - Svelte component to be displayed while the async route is loading (as a placeholder); when unset or false-y, no component is shown while component + * @property {object} [loadingParams] - Optional dictionary passed to the `loadingComponent` component as params (for an exported prop called `params`) + * @property {object} [userData] - Optional object that will be passed to events such as `routeLoading`, `routeLoaded`, `conditionsFailed` + * @property {object} [props] - Optional key-value dictionary of static props that will be passed to the component. The props are expanded with {...props}, so the key in the dictionary becomes the name of the prop. + * @property {RoutePrecondition[]|RoutePrecondition} [conditions] - Route pre-conditions to add, which will be executed in order + */ + + /** + * Wraps a component to enable multiple capabilities: + * 1. Using dynamically-imported component, with (e.g. `{asyncComponent: () => import('Foo.svelte')}`), which also allows bundlers to do code-splitting. + * 2. Adding route pre-conditions (e.g. `{conditions: [...]}`) + * 3. Adding static props that are passed to the component + * 4. Adding custom userData, which is passed to route events (e.g. route loaded events) or to route pre-conditions (e.g. `{userData: {foo: 'bar}}`) + * + * @param {WrapOptions} args - Arguments object + * @returns {WrappedComponent} Wrapped component + */ + function wrap$1(args) { + if (!args) { + throw Error('Parameter args is required') + } + + // We need to have one and only one of component and asyncComponent + // This does a "XNOR" + if (!args.component == !args.asyncComponent) { + throw Error('One and only one of component and asyncComponent is required') + } + + // If the component is not async, wrap it into a function returning a Promise + if (args.component) { + args.asyncComponent = () => Promise.resolve(args.component); + } + + // Parameter asyncComponent and each item of conditions must be functions + if (typeof args.asyncComponent != 'function') { + throw Error('Parameter asyncComponent must be a function') + } + if (args.conditions) { + // Ensure it's an array + if (!Array.isArray(args.conditions)) { + args.conditions = [args.conditions]; + } + for (let i = 0; i < args.conditions.length; i++) { + if (!args.conditions[i] || typeof args.conditions[i] != 'function') { + throw Error('Invalid parameter conditions[' + i + ']') + } + } + } + + // Check if we have a placeholder component + if (args.loadingComponent) { + args.asyncComponent.loading = args.loadingComponent; + args.asyncComponent.loadingParams = args.loadingParams || undefined; + } + + // Returns an object that contains all the functions to execute too + // The _sveltesparouter flag is to confirm the object was created by this router + const obj = { + component: args.asyncComponent, + userData: args.userData, + conditions: (args.conditions && args.conditions.length) ? args.conditions : undefined, + props: (args.props && Object.keys(args.props).length) ? args.props : {}, + _sveltesparouter: true + }; + + return obj + } + + /** + * Creates store of default pages. + * + * Having a title means inclusion in main tabs. + * + * @return {Object} + */ + function createPages() { + // NOTE: get() only resolves after initialization, hence arrow functions for getting titles. + const { subscribe, set, update } = writable( [] ); + + return { + subscribe, + set, + add( page ) { + update( $pages => { + return [...$pages, page] + .sort( ( a, b ) => { + return a.position - b.position; + } ); + } ); + }, + withPrefix( prefix = null ) { + return get_store_value( this ).filter( ( page ) => { + return (prefix && page.route.startsWith( prefix )) || !prefix; + } ); + }, + routes( prefix = null ) { + let defaultComponent = null; + let defaultUserData = null; + const routes = new Map(); + + // If a page can be enabled/disabled, check whether it is enabled before displaying. + const conditions = [ + ( detail ) => { + if ( + detail.hasOwnProperty( "userData" ) && + detail.userData.hasOwnProperty( "page" ) && + detail.userData.page.hasOwnProperty( "enabled" ) + ) { + return detail.userData.page.enabled(); + } + + return true; + } + ]; + + for ( const page of this.withPrefix( prefix ) ) { + const userData = { page: page }; + + let route = page.route; + + if ( prefix && route !== prefix + "/*" ) { + route = route.replace( prefix, "" ); + } + + routes.set( route, wrap$1( { + component: page.component, + userData: userData, + conditions: conditions + } ) ); + + if ( !defaultComponent && page.default ) { + defaultComponent = page.component; + defaultUserData = userData; + } + } + + if ( defaultComponent ) { + routes.set( "*", wrap$1( { + component: defaultComponent, + userData: defaultUserData, + conditions: conditions + } ) ); + } + + return routes; + }, + handleRouteEvent( detail ) { + if ( detail.hasOwnProperty( "event" ) ) { + if ( !detail.hasOwnProperty( "data" ) ) { + detail.data = {}; + } + + // Find the first page that wants to handle the event + // , but also let other pages see the event + // so they can set any initial state etc. + let route = false; + for ( const page of get_store_value( this ).values() ) { + if ( page.events && page.events[ detail.event ] && page.events[ detail.event ]( detail.data ) && !route ) { + route = page.route; + } + } + + if ( route ) { + return route; + } + } + + if ( detail.hasOwnProperty( "default" ) ) { + return detail.default; + } + + return false; + } + }; + } + + const pages = createPages(); + + // Convenience readable store of all routes. + const routes = derived( pages, () => { + return pages.routes(); + } ); + + function parse(str, loose) { + if (str instanceof RegExp) return { keys:false, pattern:str }; + var c, o, tmp, ext, keys=[], pattern='', arr = str.split('/'); + arr[0] || arr.shift(); + + while (tmp = arr.shift()) { + c = tmp[0]; + if (c === '*') { + keys.push('wild'); + pattern += '/(.*)'; + } else if (c === ':') { + o = tmp.indexOf('?', 1); + ext = tmp.indexOf('.', 1); + keys.push( tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length) ); + pattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)'; + if (!!~ext) pattern += (!!~o ? '?' : '') + '\\' + tmp.substring(ext); + } else { + pattern += '/' + tmp; + } + } + + return { + keys: keys, + pattern: new RegExp('^' + pattern + (loose ? '(?=$|\/)' : '\/?$'), 'i') + }; + } + + /* node_modules/svelte-spa-router/Router.svelte generated by Svelte v3.49.0 */ + + const { Error: Error_1, Object: Object_1$3, console: console_1 } = globals; + + // (267:0) {:else} + function create_else_block$5(ctx) { + let switch_instance; + let switch_instance_anchor; + let current; + const switch_instance_spread_levels = [/*props*/ ctx[2]]; + var switch_value = /*component*/ ctx[0]; + + function switch_props(ctx) { + let switch_instance_props = {}; + + for (let i = 0; i < switch_instance_spread_levels.length; i += 1) { + switch_instance_props = assign(switch_instance_props, switch_instance_spread_levels[i]); + } + + return { + props: switch_instance_props, + $$inline: true + }; + } + + if (switch_value) { + switch_instance = new switch_value(switch_props()); + switch_instance.$on("routeEvent", /*routeEvent_handler_1*/ ctx[7]); + } + + const block = { + c: function create() { + if (switch_instance) create_component(switch_instance.$$.fragment); + switch_instance_anchor = empty(); + }, + m: function mount(target, anchor) { + if (switch_instance) { + mount_component(switch_instance, target, anchor); + } + + insert_dev(target, switch_instance_anchor, anchor); + current = true; + }, + p: function update(ctx, dirty) { + const switch_instance_changes = (dirty & /*props*/ 4) + ? get_spread_update(switch_instance_spread_levels, [get_spread_object(/*props*/ ctx[2])]) + : {}; + + if (switch_value !== (switch_value = /*component*/ ctx[0])) { + if (switch_instance) { + group_outros(); + const old_component = switch_instance; + + transition_out(old_component.$$.fragment, 1, 0, () => { + destroy_component(old_component, 1); + }); + + check_outros(); + } + + if (switch_value) { + switch_instance = new switch_value(switch_props()); + switch_instance.$on("routeEvent", /*routeEvent_handler_1*/ ctx[7]); + create_component(switch_instance.$$.fragment); + transition_in(switch_instance.$$.fragment, 1); + mount_component(switch_instance, switch_instance_anchor.parentNode, switch_instance_anchor); + } else { + switch_instance = null; + } + } else if (switch_value) { + switch_instance.$set(switch_instance_changes); + } + }, + i: function intro(local) { + if (current) return; + if (switch_instance) transition_in(switch_instance.$$.fragment, local); + current = true; + }, + o: function outro(local) { + if (switch_instance) transition_out(switch_instance.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(switch_instance_anchor); + if (switch_instance) destroy_component(switch_instance, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_else_block$5.name, + type: "else", + source: "(267:0) {:else}", + ctx + }); + + return block; + } + + // (260:0) {#if componentParams} + function create_if_block$q(ctx) { + let switch_instance; + let switch_instance_anchor; + let current; + const switch_instance_spread_levels = [{ params: /*componentParams*/ ctx[1] }, /*props*/ ctx[2]]; + var switch_value = /*component*/ ctx[0]; + + function switch_props(ctx) { + let switch_instance_props = {}; + + for (let i = 0; i < switch_instance_spread_levels.length; i += 1) { + switch_instance_props = assign(switch_instance_props, switch_instance_spread_levels[i]); + } + + return { + props: switch_instance_props, + $$inline: true + }; + } + + if (switch_value) { + switch_instance = new switch_value(switch_props()); + switch_instance.$on("routeEvent", /*routeEvent_handler*/ ctx[6]); + } + + const block = { + c: function create() { + if (switch_instance) create_component(switch_instance.$$.fragment); + switch_instance_anchor = empty(); + }, + m: function mount(target, anchor) { + if (switch_instance) { + mount_component(switch_instance, target, anchor); + } + + insert_dev(target, switch_instance_anchor, anchor); + current = true; + }, + p: function update(ctx, dirty) { + const switch_instance_changes = (dirty & /*componentParams, props*/ 6) + ? get_spread_update(switch_instance_spread_levels, [ + dirty & /*componentParams*/ 2 && { params: /*componentParams*/ ctx[1] }, + dirty & /*props*/ 4 && get_spread_object(/*props*/ ctx[2]) + ]) + : {}; + + if (switch_value !== (switch_value = /*component*/ ctx[0])) { + if (switch_instance) { + group_outros(); + const old_component = switch_instance; + + transition_out(old_component.$$.fragment, 1, 0, () => { + destroy_component(old_component, 1); + }); + + check_outros(); + } + + if (switch_value) { + switch_instance = new switch_value(switch_props()); + switch_instance.$on("routeEvent", /*routeEvent_handler*/ ctx[6]); + create_component(switch_instance.$$.fragment); + transition_in(switch_instance.$$.fragment, 1); + mount_component(switch_instance, switch_instance_anchor.parentNode, switch_instance_anchor); + } else { + switch_instance = null; + } + } else if (switch_value) { + switch_instance.$set(switch_instance_changes); + } + }, + i: function intro(local) { + if (current) return; + if (switch_instance) transition_in(switch_instance.$$.fragment, local); + current = true; + }, + o: function outro(local) { + if (switch_instance) transition_out(switch_instance.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(switch_instance_anchor); + if (switch_instance) destroy_component(switch_instance, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block$q.name, + type: "if", + source: "(260:0) {#if componentParams}", + ctx + }); + + return block; + } + + function create_fragment$V(ctx) { + let current_block_type_index; + let if_block; + let if_block_anchor; + let current; + const if_block_creators = [create_if_block$q, create_else_block$5]; + const if_blocks = []; + + function select_block_type(ctx, dirty) { + if (/*componentParams*/ ctx[1]) return 0; + return 1; + } + + current_block_type_index = select_block_type(ctx); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + + const block = { + c: function create() { + if_block.c(); + if_block_anchor = empty(); + }, + l: function claim(nodes) { + throw new Error_1("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + if_blocks[current_block_type_index].m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + current = true; + }, + p: function update(ctx, [dirty]) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx); + + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx, dirty); + } else { + group_outros(); + + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + + check_outros(); + if_block = if_blocks[current_block_type_index]; + + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + if_block.c(); + } else { + if_block.p(ctx, dirty); + } + + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + }, + i: function intro(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + o: function outro(local) { + transition_out(if_block); + current = false; + }, + d: function destroy(detaching) { + if_blocks[current_block_type_index].d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$V.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function wrap(component, userData, ...conditions) { + // Use the new wrap method and show a deprecation warning + // eslint-disable-next-line no-console + console.warn('Method `wrap` from `svelte-spa-router` is deprecated and will be removed in a future version. Please use `svelte-spa-router/wrap` instead. See http://bit.ly/svelte-spa-router-upgrading'); + + return wrap$1({ component, userData, conditions }); + } + + /** + * @typedef {Object} Location + * @property {string} location - Location (page/view), for example `/book` + * @property {string} [querystring] - Querystring from the hash, as a string not parsed + */ + /** + * Returns the current location from the hash. + * + * @returns {Location} Location object + * @private + */ + function getLocation() { + const hashPosition = window.location.href.indexOf('#/'); + + let location = hashPosition > -1 + ? window.location.href.substr(hashPosition + 1) + : '/'; + + // Check if there's a querystring + const qsPosition = location.indexOf('?'); + + let querystring = ''; + + if (qsPosition > -1) { + querystring = location.substr(qsPosition + 1); + location = location.substr(0, qsPosition); + } + + return { location, querystring }; + } + + const loc = readable(null, // eslint-disable-next-line prefer-arrow-callback + function start(set) { + set(getLocation()); + + const update = () => { + set(getLocation()); + }; + + window.addEventListener('hashchange', update, false); + + return function stop() { + window.removeEventListener('hashchange', update, false); + }; + }); + + const location$1 = derived(loc, $loc => $loc.location); + const querystring = derived(loc, $loc => $loc.querystring); + const params = writable(undefined); + + async function push(location) { + if (!location || location.length < 1 || location.charAt(0) != '/' && location.indexOf('#/') !== 0) { + throw Error('Invalid parameter location'); + } + + // Execute this code when the current call stack is complete + await tick(); + + // Note: this will include scroll state in history even when restoreScrollState is false + history.replaceState( + { + ...history.state, + __svelte_spa_router_scrollX: window.scrollX, + __svelte_spa_router_scrollY: window.scrollY + }, + undefined + ); + + window.location.hash = (location.charAt(0) == '#' ? '' : '#') + location; + } + + async function pop() { + // Execute this code when the current call stack is complete + await tick(); + + window.history.back(); + } + + async function replace(location) { + if (!location || location.length < 1 || location.charAt(0) != '/' && location.indexOf('#/') !== 0) { + throw Error('Invalid parameter location'); + } + + // Execute this code when the current call stack is complete + await tick(); + + const dest = (location.charAt(0) == '#' ? '' : '#') + location; + + try { + const newState = { ...history.state }; + delete newState['__svelte_spa_router_scrollX']; + delete newState['__svelte_spa_router_scrollY']; + window.history.replaceState(newState, undefined, dest); + } catch(e) { + // eslint-disable-next-line no-console + console.warn('Caught exception while replacing the current page. If you\'re running this in the Svelte REPL, please note that the `replace` method might not work in this environment.'); + } + + // The method above doesn't trigger the hashchange event, so let's do that manually + window.dispatchEvent(new Event('hashchange')); + } + + function link(node, opts) { + opts = linkOpts(opts); + + // Only apply to tags + if (!node || !node.tagName || node.tagName.toLowerCase() != 'a') { + throw Error('Action "link" can only be used with tags'); + } + + updateLink(node, opts); + + return { + update(updated) { + updated = linkOpts(updated); + updateLink(node, updated); + } + }; + } + + function restoreScroll(state) { + // If this exists, then this is a back navigation: restore the scroll position + if (state) { + window.scrollTo(state.__svelte_spa_router_scrollX, state.__svelte_spa_router_scrollY); + } else { + // Otherwise this is a forward navigation: scroll to top + window.scrollTo(0, 0); + } + } + + // Internal function used by the link function + function updateLink(node, opts) { + let href = opts.href || node.getAttribute('href'); + + // Destination must start with '/' or '#/' + if (href && href.charAt(0) == '/') { + // Add # to the href attribute + href = '#' + href; + } else if (!href || href.length < 2 || href.slice(0, 2) != '#/') { + throw Error('Invalid value for "href" attribute: ' + href); + } + + node.setAttribute('href', href); + + node.addEventListener('click', event => { + // Prevent default anchor onclick behaviour + event.preventDefault(); + + if (!opts.disabled) { + scrollstateHistoryHandler(event.currentTarget.getAttribute('href')); + } + }); + } + + // Internal function that ensures the argument of the link action is always an object + function linkOpts(val) { + if (val && typeof val == 'string') { + return { href: val }; + } else { + return val || {}; + } + } + + /** + * The handler attached to an anchor tag responsible for updating the + * current history state with the current scroll state + * + * @param {string} href - Destination + */ + function scrollstateHistoryHandler(href) { + // Setting the url (3rd arg) to href will break clicking for reasons, so don't try to do that + history.replaceState( + { + ...history.state, + __svelte_spa_router_scrollX: window.scrollX, + __svelte_spa_router_scrollY: window.scrollY + }, + undefined + ); + + // This will force an update as desired, but this time our scroll state will be attached + window.location.hash = href; + } + + function instance$V($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('Router', slots, []); + let { routes = {} } = $$props; + let { prefix = '' } = $$props; + let { restoreScrollState = false } = $$props; + + /** + * Container for a route: path, component + */ + class RouteItem { + /** + * Initializes the object and creates a regular expression from the path, using regexparam. + * + * @param {string} path - Path to the route (must start with '/' or '*') + * @param {SvelteComponent|WrappedComponent} component - Svelte component for the route, optionally wrapped + */ + constructor(path, component) { + if (!component || typeof component != 'function' && (typeof component != 'object' || component._sveltesparouter !== true)) { + throw Error('Invalid component object'); + } + + // Path must be a regular or expression, or a string starting with '/' or '*' + if (!path || typeof path == 'string' && (path.length < 1 || path.charAt(0) != '/' && path.charAt(0) != '*') || typeof path == 'object' && !(path instanceof RegExp)) { + throw Error('Invalid value for "path" argument - strings must start with / or *'); + } + + const { pattern, keys } = parse(path); + this.path = path; + + // Check if the component is wrapped and we have conditions + if (typeof component == 'object' && component._sveltesparouter === true) { + this.component = component.component; + this.conditions = component.conditions || []; + this.userData = component.userData; + this.props = component.props || {}; + } else { + // Convert the component to a function that returns a Promise, to normalize it + this.component = () => Promise.resolve(component); + + this.conditions = []; + this.props = {}; + } + + this._pattern = pattern; + this._keys = keys; + } + + /** + * Checks if `path` matches the current route. + * If there's a match, will return the list of parameters from the URL (if any). + * In case of no match, the method will return `null`. + * + * @param {string} path - Path to test + * @returns {null|Object.} List of paramters from the URL if there's a match, or `null` otherwise. + */ + match(path) { + // If there's a prefix, check if it matches the start of the path. + // If not, bail early, else remove it before we run the matching. + if (prefix) { + if (typeof prefix == 'string') { + if (path.startsWith(prefix)) { + path = path.substr(prefix.length) || '/'; + } else { + return null; + } + } else if (prefix instanceof RegExp) { + const match = path.match(prefix); + + if (match && match[0]) { + path = path.substr(match[0].length) || '/'; + } else { + return null; + } + } + } + + // Check if the pattern matches + const matches = this._pattern.exec(path); + + if (matches === null) { + return null; + } + + // If the input was a regular expression, this._keys would be false, so return matches as is + if (this._keys === false) { + return matches; + } + + const out = {}; + let i = 0; + + while (i < this._keys.length) { + // In the match parameters, URL-decode all values + try { + out[this._keys[i]] = decodeURIComponent(matches[i + 1] || '') || null; + } catch(e) { + out[this._keys[i]] = null; + } + + i++; + } + + return out; + } + + /** + * Dictionary with route details passed to the pre-conditions functions, as well as the `routeLoading`, `routeLoaded` and `conditionsFailed` events + * @typedef {Object} RouteDetail + * @property {string|RegExp} route - Route matched as defined in the route definition (could be a string or a reguar expression object) + * @property {string} location - Location path + * @property {string} querystring - Querystring from the hash + * @property {object} [userData] - Custom data passed by the user + * @property {SvelteComponent} [component] - Svelte component (only in `routeLoaded` events) + * @property {string} [name] - Name of the Svelte component (only in `routeLoaded` events) + */ + /** + * Executes all conditions (if any) to control whether the route can be shown. Conditions are executed in the order they are defined, and if a condition fails, the following ones aren't executed. + * + * @param {RouteDetail} detail - Route detail + * @returns {boolean} Returns true if all the conditions succeeded + */ + async checkConditions(detail) { + for (let i = 0; i < this.conditions.length; i++) { + if (!await this.conditions[i](detail)) { + return false; + } + } + + return true; + } + } + + // Set up all routes + const routesList = []; + + if (routes instanceof Map) { + // If it's a map, iterate on it right away + routes.forEach((route, path) => { + routesList.push(new RouteItem(path, route)); + }); + } else { + // We have an object, so iterate on its own properties + Object.keys(routes).forEach(path => { + routesList.push(new RouteItem(path, routes[path])); + }); + } + + // Props for the component to render + let component = null; + + let componentParams = null; + let props = {}; + + // Event dispatcher from Svelte + const dispatch = createEventDispatcher(); + + // Just like dispatch, but executes on the next iteration of the event loop + async function dispatchNextTick(name, detail) { + // Execute this code when the current call stack is complete + await tick(); + + dispatch(name, detail); + } + + // If this is set, then that means we have popped into this var the state of our last scroll position + let previousScrollState = null; + + let popStateChanged = null; + + if (restoreScrollState) { + popStateChanged = event => { + // If this event was from our history.replaceState, event.state will contain + // our scroll history. Otherwise, event.state will be null (like on forward + // navigation) + if (event.state && (event.state.__svelte_spa_router_scrollY || event.state.__svelte_spa_router_scrollX)) { + previousScrollState = event.state; + } else { + previousScrollState = null; + } + }; + + // This is removed in the destroy() invocation below + window.addEventListener('popstate', popStateChanged); + + afterUpdate(() => { + restoreScroll(previousScrollState); + }); + } + + // Always have the latest value of loc + let lastLoc = null; + + // Current object of the component loaded + let componentObj = null; + + // Handle hash change events + // Listen to changes in the $loc store and update the page + // Do not use the $: syntax because it gets triggered by too many things + const unsubscribeLoc = loc.subscribe(async newLoc => { + lastLoc = newLoc; + + // Find a route matching the location + let i = 0; + + while (i < routesList.length) { + const match = routesList[i].match(newLoc.location); + + if (!match) { + i++; + continue; + } + + const detail = { + route: routesList[i].path, + location: newLoc.location, + querystring: newLoc.querystring, + userData: routesList[i].userData, + params: match && typeof match == 'object' && Object.keys(match).length + ? match + : null + }; + + // Check if the route can be loaded - if all conditions succeed + if (!await routesList[i].checkConditions(detail)) { + // Don't display anything + $$invalidate(0, component = null); + + componentObj = null; + + // Trigger an event to notify the user, then exit + dispatchNextTick('conditionsFailed', detail); + + return; + } + + // Trigger an event to alert that we're loading the route + // We need to clone the object on every event invocation so we don't risk the object to be modified in the next tick + dispatchNextTick('routeLoading', Object.assign({}, detail)); + + // If there's a component to show while we're loading the route, display it + const obj = routesList[i].component; + + // Do not replace the component if we're loading the same one as before, to avoid the route being unmounted and re-mounted + if (componentObj != obj) { + if (obj.loading) { + $$invalidate(0, component = obj.loading); + componentObj = obj; + $$invalidate(1, componentParams = obj.loadingParams); + $$invalidate(2, props = {}); + + // Trigger the routeLoaded event for the loading component + // Create a copy of detail so we don't modify the object for the dynamic route (and the dynamic route doesn't modify our object too) + dispatchNextTick('routeLoaded', Object.assign({}, detail, { + component, + name: component.name, + params: componentParams + })); + } else { + $$invalidate(0, component = null); + componentObj = null; + } + + // Invoke the Promise + const loaded = await obj(); + + // Now that we're here, after the promise resolved, check if we still want this component, as the user might have navigated to another page in the meanwhile + if (newLoc != lastLoc) { + // Don't update the component, just exit + return; + } + + // If there is a "default" property, which is used by async routes, then pick that + $$invalidate(0, component = loaded && loaded.default || loaded); + + componentObj = obj; + } + + // Set componentParams only if we have a match, to avoid a warning similar to ` was created with unknown prop 'params'` + // Of course, this assumes that developers always add a "params" prop when they are expecting parameters + if (match && typeof match == 'object' && Object.keys(match).length) { + $$invalidate(1, componentParams = match); + } else { + $$invalidate(1, componentParams = null); + } + + // Set static props, if any + $$invalidate(2, props = routesList[i].props); + + // Dispatch the routeLoaded event then exit + // We need to clone the object on every event invocation so we don't risk the object to be modified in the next tick + dispatchNextTick('routeLoaded', Object.assign({}, detail, { + component, + name: component.name, + params: componentParams + })).then(() => { + params.set(componentParams); + }); + + return; + } + + // If we're still here, there was no match, so show the empty component + $$invalidate(0, component = null); + + componentObj = null; + params.set(undefined); + }); + + onDestroy(() => { + unsubscribeLoc(); + popStateChanged && window.removeEventListener('popstate', popStateChanged); + }); + + const writable_props = ['routes', 'prefix', 'restoreScrollState']; + + Object_1$3.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1.warn(` was created with unknown prop '${key}'`); + }); + + function routeEvent_handler(event) { + bubble.call(this, $$self, event); + } + + function routeEvent_handler_1(event) { + bubble.call(this, $$self, event); + } + + $$self.$$set = $$props => { + if ('routes' in $$props) $$invalidate(3, routes = $$props.routes); + if ('prefix' in $$props) $$invalidate(4, prefix = $$props.prefix); + if ('restoreScrollState' in $$props) $$invalidate(5, restoreScrollState = $$props.restoreScrollState); + }; + + $$self.$capture_state = () => ({ + readable, + writable, + derived, + tick, + _wrap: wrap$1, + wrap, + getLocation, + loc, + location: location$1, + querystring, + params, + push, + pop, + replace, + link, + restoreScroll, + updateLink, + linkOpts, + scrollstateHistoryHandler, + onDestroy, + createEventDispatcher, + afterUpdate, + parse, + routes, + prefix, + restoreScrollState, + RouteItem, + routesList, + component, + componentParams, + props, + dispatch, + dispatchNextTick, + previousScrollState, + popStateChanged, + lastLoc, + componentObj, + unsubscribeLoc + }); + + $$self.$inject_state = $$props => { + if ('routes' in $$props) $$invalidate(3, routes = $$props.routes); + if ('prefix' in $$props) $$invalidate(4, prefix = $$props.prefix); + if ('restoreScrollState' in $$props) $$invalidate(5, restoreScrollState = $$props.restoreScrollState); + if ('component' in $$props) $$invalidate(0, component = $$props.component); + if ('componentParams' in $$props) $$invalidate(1, componentParams = $$props.componentParams); + if ('props' in $$props) $$invalidate(2, props = $$props.props); + if ('previousScrollState' in $$props) previousScrollState = $$props.previousScrollState; + if ('popStateChanged' in $$props) popStateChanged = $$props.popStateChanged; + if ('lastLoc' in $$props) lastLoc = $$props.lastLoc; + if ('componentObj' in $$props) componentObj = $$props.componentObj; + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + $$self.$$.update = () => { + if ($$self.$$.dirty & /*restoreScrollState*/ 32) { + // Update history.scrollRestoration depending on restoreScrollState + history.scrollRestoration = restoreScrollState ? 'manual' : 'auto'; + } + }; + + return [ + component, + componentParams, + props, + routes, + prefix, + restoreScrollState, + routeEvent_handler, + routeEvent_handler_1 + ]; + } + + class Router extends SvelteComponentDev { + constructor(options) { + super(options); + + init(this, options, instance$V, create_fragment$V, safe_not_equal, { + routes: 3, + prefix: 4, + restoreScrollState: 5 + }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "Router", + options, + id: create_fragment$V.name + }); + } + + get routes() { + throw new Error_1(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set routes(value) { + throw new Error_1(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get prefix() { + throw new Error_1(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set prefix(value) { + throw new Error_1(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get restoreScrollState() { + throw new Error_1(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set restoreScrollState(value) { + throw new Error_1(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/Page.svelte generated by Svelte v3.49.0 */ + const file$N = "src/amazon-s3-and-cloudfront/ui/components/Page.svelte"; + + function create_fragment$U(ctx) { + let div; + let div_class_value; + let current; + const default_slot_template = /*#slots*/ ctx[4].default; + const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[3], null); + + const block = { + c: function create() { + div = element("div"); + if (default_slot) default_slot.c(); + attr_dev(div, "class", div_class_value = "page-wrapper " + /*name*/ ctx[0]); + toggle_class(div, "subpage", /*subpage*/ ctx[1]); + add_location(div, file$N, 30, 0, 796); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + + if (default_slot) { + default_slot.m(div, null); + } + + current = true; + }, + p: function update(ctx, [dirty]) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx, + /*$$scope*/ ctx[3], + !current + ? get_all_dirty_from_scope(/*$$scope*/ ctx[3]) + : get_slot_changes(default_slot_template, /*$$scope*/ ctx[3], dirty, null), + null + ); + } + } + + if (!current || dirty & /*name*/ 1 && div_class_value !== (div_class_value = "page-wrapper " + /*name*/ ctx[0])) { + attr_dev(div, "class", div_class_value); + } + + if (dirty & /*name, subpage*/ 3) { + toggle_class(div, "subpage", /*subpage*/ ctx[1]); + } + }, + i: function intro(local) { + if (current) return; + transition_in(default_slot, local); + current = true; + }, + o: function outro(local) { + transition_out(default_slot, local); + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + if (default_slot) default_slot.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$U.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$U($$self, $$props, $$invalidate) { + let $location; + let $current_settings; + validate_store(location$1, 'location'); + component_subscribe($$self, location$1, $$value => $$invalidate(5, $location = $$value)); + validate_store(current_settings, 'current_settings'); + component_subscribe($$self, current_settings, $$value => $$invalidate(6, $current_settings = $$value)); + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('Page', slots, ['default']); + let { name = "" } = $$props; + let { subpage = false } = $$props; + let { initialSettings = $current_settings } = $$props; + const dispatch = createEventDispatcher(); + + // When a page is created, store a copy of the initial settings + // so they can be compared with any changes later. + setContext("initialSettings", initialSettings); + + // Tell the route event handlers about the initial settings too. + onMount(() => { + dispatch("routeEvent", { + event: "page.initial.settings", + data: { + settings: initialSettings, + location: $location + } + }); + }); + + const writable_props = ['name', 'subpage', 'initialSettings']; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$$set = $$props => { + if ('name' in $$props) $$invalidate(0, name = $$props.name); + if ('subpage' in $$props) $$invalidate(1, subpage = $$props.subpage); + if ('initialSettings' in $$props) $$invalidate(2, initialSettings = $$props.initialSettings); + if ('$$scope' in $$props) $$invalidate(3, $$scope = $$props.$$scope); + }; + + $$self.$capture_state = () => ({ + onMount, + createEventDispatcher, + setContext, + location: location$1, + current_settings, + name, + subpage, + initialSettings, + dispatch, + $location, + $current_settings + }); + + $$self.$inject_state = $$props => { + if ('name' in $$props) $$invalidate(0, name = $$props.name); + if ('subpage' in $$props) $$invalidate(1, subpage = $$props.subpage); + if ('initialSettings' in $$props) $$invalidate(2, initialSettings = $$props.initialSettings); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [name, subpage, initialSettings, $$scope, slots]; + } + + class Page extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$U, create_fragment$U, safe_not_equal, { name: 0, subpage: 1, initialSettings: 2 }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "Page", + options, + id: create_fragment$U.name + }); + } + + get name() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set name(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get subpage() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set subpage(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get initialSettings() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set initialSettings(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + function cubicOut(t) { + const f = t - 1.0; + return f * f * f + 1.0; + } + + function slide(node, { delay = 0, duration = 400, easing = cubicOut } = {}) { + const style = getComputedStyle(node); + const opacity = +style.opacity; + const height = parseFloat(style.height); + const padding_top = parseFloat(style.paddingTop); + const padding_bottom = parseFloat(style.paddingBottom); + const margin_top = parseFloat(style.marginTop); + const margin_bottom = parseFloat(style.marginBottom); + const border_top_width = parseFloat(style.borderTopWidth); + const border_bottom_width = parseFloat(style.borderBottomWidth); + return { + delay, + duration, + easing, + css: t => 'overflow: hidden;' + + `opacity: ${Math.min(t * 20, 1) * opacity};` + + `height: ${t * height}px;` + + `padding-top: ${t * padding_top}px;` + + `padding-bottom: ${t * padding_bottom}px;` + + `margin-top: ${t * margin_top}px;` + + `margin-bottom: ${t * margin_bottom}px;` + + `border-top-width: ${t * border_top_width}px;` + + `border-bottom-width: ${t * border_bottom_width}px;` + }; + } + function scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}) { + const style = getComputedStyle(node); + const target_opacity = +style.opacity; + const transform = style.transform === 'none' ? '' : style.transform; + const sd = 1 - start; + const od = target_opacity * (1 - opacity); + return { + delay, + duration, + easing, + css: (_t, u) => ` + transform: ${transform} scale(${1 - (sd * u)}); + opacity: ${target_opacity - (od * u)} + ` + }; + } + + /* src/amazon-s3-and-cloudfront/ui/components/Notification.svelte generated by Svelte v3.49.0 */ + const file$M = "src/amazon-s3-and-cloudfront/ui/components/Notification.svelte"; + const get_details_slot_changes = dirty => ({}); + const get_details_slot_context = ctx => ({}); + + // (95:2) {#if iconURL} + function create_if_block_8$3(ctx) { + let div; + let img; + let img_src_value; + let img_alt_value; + let div_resize_listener; + + const block = { + c: function create() { + div = element("div"); + img = element("img"); + attr_dev(img, "class", "icon type"); + if (!src_url_equal(img.src, img_src_value = /*iconURL*/ ctx[18])) attr_dev(img, "src", img_src_value); + attr_dev(img, "alt", img_alt_value = "" + (/*notification*/ ctx[0].type + " icon")); + add_location(img, file$M, 96, 4, 2620); + attr_dev(div, "class", "icon type"); + add_render_callback(() => /*div_elementresize_handler*/ ctx[24].call(div)); + add_location(div, file$M, 95, 3, 2561); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + append_dev(div, img); + div_resize_listener = add_resize_listener(div, /*div_elementresize_handler*/ ctx[24].bind(div)); + }, + p: function update(ctx, dirty) { + if (dirty & /*iconURL*/ 262144 && !src_url_equal(img.src, img_src_value = /*iconURL*/ ctx[18])) { + attr_dev(img, "src", img_src_value); + } + + if (dirty & /*notification*/ 1 && img_alt_value !== (img_alt_value = "" + (/*notification*/ ctx[0].type + " icon"))) { + attr_dev(img, "alt", img_alt_value); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + div_resize_listener(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_8$3.name, + type: "if", + source: "(95:2) {#if iconURL}", + ctx + }); + + return block; + } + + // (101:3) {#if heading || dismissible || expandable} + function create_if_block_2$8(ctx) { + let div; + let t; + let if_block0 = /*heading*/ ctx[8] && create_if_block_6$4(ctx); + + function select_block_type_1(ctx, dirty) { + if (/*dismissible*/ ctx[9] && /*expandable*/ ctx[12]) return create_if_block_3$5; + if (/*expandable*/ ctx[12]) return create_if_block_4$5; + if (/*dismissible*/ ctx[9]) return create_if_block_5$4; + } + + let current_block_type = select_block_type_1(ctx); + let if_block1 = current_block_type && current_block_type(ctx); + + const block = { + c: function create() { + div = element("div"); + if (if_block0) if_block0.c(); + t = space(); + if (if_block1) if_block1.c(); + attr_dev(div, "class", "heading"); + add_location(div, file$M, 101, 4, 2810); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + if (if_block0) if_block0.m(div, null); + append_dev(div, t); + if (if_block1) if_block1.m(div, null); + }, + p: function update(ctx, dirty) { + if (/*heading*/ ctx[8]) { + if (if_block0) { + if_block0.p(ctx, dirty); + } else { + if_block0 = create_if_block_6$4(ctx); + if_block0.c(); + if_block0.m(div, t); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + + if (current_block_type === (current_block_type = select_block_type_1(ctx)) && if_block1) { + if_block1.p(ctx, dirty); + } else { + if (if_block1) if_block1.d(1); + if_block1 = current_block_type && current_block_type(ctx); + + if (if_block1) { + if_block1.c(); + if_block1.m(div, null); + } + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + if (if_block0) if_block0.d(); + + if (if_block1) { + if_block1.d(); + } + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_2$8.name, + type: "if", + source: "(101:3) {#if heading || dismissible || expandable}", + ctx + }); + + return block; + } + + // (103:5) {#if heading} + function create_if_block_6$4(ctx) { + let if_block_anchor; + + function select_block_type(ctx, dirty) { + if (/*plainHeading*/ ctx[10]) return create_if_block_7$4; + return create_else_block$4; + } + + let current_block_type = select_block_type(ctx); + let if_block = current_block_type(ctx); + + const block = { + c: function create() { + if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) { + if_block.p(ctx, dirty); + } else { + if_block.d(1); + if_block = current_block_type(ctx); + + if (if_block) { + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } + }, + d: function destroy(detaching) { + if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_6$4.name, + type: "if", + source: "(103:5) {#if heading}", + ctx + }); + + return block; + } + + // (106:6) {:else} + function create_else_block$4(ctx) { + let h3; + + const block = { + c: function create() { + h3 = element("h3"); + add_location(h3, file$M, 106, 7, 2927); + }, + m: function mount(target, anchor) { + insert_dev(target, h3, anchor); + h3.innerHTML = /*heading*/ ctx[8]; + }, + p: function update(ctx, dirty) { + if (dirty & /*heading*/ 256) h3.innerHTML = /*heading*/ ctx[8]; }, + d: function destroy(detaching) { + if (detaching) detach_dev(h3); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_else_block$4.name, + type: "else", + source: "(106:6) {:else}", + ctx + }); + + return block; + } + + // (104:6) {#if plainHeading} + function create_if_block_7$4(ctx) { + let p; + + const block = { + c: function create() { + p = element("p"); + add_location(p, file$M, 104, 7, 2883); + }, + m: function mount(target, anchor) { + insert_dev(target, p, anchor); + p.innerHTML = /*heading*/ ctx[8]; + }, + p: function update(ctx, dirty) { + if (dirty & /*heading*/ 256) p.innerHTML = /*heading*/ ctx[8]; }, + d: function destroy(detaching) { + if (detaching) detach_dev(p); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_7$4.name, + type: "if", + source: "(104:6) {#if plainHeading}", + ctx + }); + + return block; + } + + // (115:27) + function create_if_block_5$4(ctx) { + let button; + let button_title_value; + let mounted; + let dispose; + + const block = { + c: function create() { + button = element("button"); + attr_dev(button, "class", "icon close"); + attr_dev(button, "title", button_title_value = /*$strings*/ ctx[19]["dismiss_notice"]); + add_location(button, file$M, 115, 6, 3546); + }, + m: function mount(target, anchor) { + insert_dev(target, button, anchor); + + if (!mounted) { + dispose = listen_dev(button, "click", prevent_default(/*click_handler_2*/ ctx[27]), false, true, false); + mounted = true; + } + }, + p: function update(ctx, dirty) { + if (dirty & /*$strings*/ 524288 && button_title_value !== (button_title_value = /*$strings*/ ctx[19]["dismiss_notice"])) { + attr_dev(button, "title", button_title_value); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(button); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_5$4.name, + type: "if", + source: "(115:27) ", + ctx + }); + + return block; + } + + // (113:26) + function create_if_block_4$5(ctx) { + let button; + let button_title_value; + let mounted; + let dispose; + + const block = { + c: function create() { + button = element("button"); + attr_dev(button, "class", "expandable"); + + attr_dev(button, "title", button_title_value = /*expanded*/ ctx[1] + ? /*$strings*/ ctx[19].hide_details + : /*$strings*/ ctx[19].show_details); + + toggle_class(button, "expanded", /*expanded*/ ctx[1]); + add_location(button, file$M, 113, 6, 3342); + }, + m: function mount(target, anchor) { + insert_dev(target, button, anchor); + + if (!mounted) { + dispose = listen_dev(button, "click", prevent_default(/*click_handler_1*/ ctx[26]), false, true, false); + mounted = true; + } + }, + p: function update(ctx, dirty) { + if (dirty & /*expanded, $strings*/ 524290 && button_title_value !== (button_title_value = /*expanded*/ ctx[1] + ? /*$strings*/ ctx[19].hide_details + : /*$strings*/ ctx[19].show_details)) { + attr_dev(button, "title", button_title_value); + } + + if (dirty & /*expanded*/ 2) { + toggle_class(button, "expanded", /*expanded*/ ctx[1]); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(button); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_4$5.name, + type: "if", + source: "(113:26) ", + ctx + }); + + return block; + } + + // (110:5) {#if dismissible && expandable} + function create_if_block_3$5(ctx) { + let button0; + let t0_value = /*$strings*/ ctx[19].dismiss_all + ""; + let t0; + let t1; + let button1; + let button1_title_value; + let mounted; + let dispose; + + const block = { + c: function create() { + button0 = element("button"); + t0 = text(t0_value); + t1 = space(); + button1 = element("button"); + attr_dev(button0, "class", "dismiss"); + add_location(button0, file$M, 110, 6, 3018); + attr_dev(button1, "class", "expandable"); + + attr_dev(button1, "title", button1_title_value = /*expanded*/ ctx[1] + ? /*$strings*/ ctx[19].hide_details + : /*$strings*/ ctx[19].show_details); + + toggle_class(button1, "expanded", /*expanded*/ ctx[1]); + add_location(button1, file$M, 111, 6, 3139); + }, + m: function mount(target, anchor) { + insert_dev(target, button0, anchor); + append_dev(button0, t0); + insert_dev(target, t1, anchor); + insert_dev(target, button1, anchor); + + if (!mounted) { + dispose = [ + listen_dev( + button0, + "click", + prevent_default(function () { + if (is_function(notifications.dismiss(/*unique_id*/ ctx[2]))) notifications.dismiss(/*unique_id*/ ctx[2]).apply(this, arguments); + }), + false, + true, + false + ), + listen_dev(button1, "click", prevent_default(/*click_handler*/ ctx[25]), false, true, false) + ]; + + mounted = true; + } + }, + p: function update(new_ctx, dirty) { + ctx = new_ctx; + if (dirty & /*$strings*/ 524288 && t0_value !== (t0_value = /*$strings*/ ctx[19].dismiss_all + "")) set_data_dev(t0, t0_value); + + if (dirty & /*expanded, $strings*/ 524290 && button1_title_value !== (button1_title_value = /*expanded*/ ctx[1] + ? /*$strings*/ ctx[19].hide_details + : /*$strings*/ ctx[19].show_details)) { + attr_dev(button1, "title", button1_title_value); + } + + if (dirty & /*expanded*/ 2) { + toggle_class(button1, "expanded", /*expanded*/ ctx[1]); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(button0); + if (detaching) detach_dev(t1); + if (detaching) detach_dev(button1); + mounted = false; + run_all(dispose); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_3$5.name, + type: "if", + source: "(110:5) {#if dismissible && expandable}", + ctx + }); + + return block; + } + + // (121:3) {#if extra} + function create_if_block_1$b(ctx) { + let p; + + const block = { + c: function create() { + p = element("p"); + add_location(p, file$M, 121, 4, 3744); + }, + m: function mount(target, anchor) { + insert_dev(target, p, anchor); + p.innerHTML = /*extra*/ ctx[11]; + }, + p: function update(ctx, dirty) { + if (dirty & /*extra*/ 2048) p.innerHTML = /*extra*/ ctx[11]; }, + d: function destroy(detaching) { + if (detaching) detach_dev(p); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_1$b.name, + type: "if", + source: "(121:3) {#if extra}", + ctx + }); + + return block; + } + + // (124:3) {#if linksHTML} + function create_if_block$p(ctx) { + let p; + + const block = { + c: function create() { + p = element("p"); + attr_dev(p, "class", "links"); + add_location(p, file$M, 124, 4, 3797); + }, + m: function mount(target, anchor) { + insert_dev(target, p, anchor); + p.innerHTML = /*linksHTML*/ ctx[16]; + }, + p: function update(ctx, dirty) { + if (dirty & /*linksHTML*/ 65536) p.innerHTML = /*linksHTML*/ ctx[16]; }, + d: function destroy(detaching) { + if (detaching) detach_dev(p); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block$p.name, + type: "if", + source: "(124:3) {#if linksHTML}", + ctx + }); + + return block; + } + + function create_fragment$T(ctx) { + let div2; + let div1; + let t0; + let div0; + let t1; + let t2; + let t3; + let div0_resize_listener; + let t4; + let div2_transition; + let current; + let if_block0 = /*iconURL*/ ctx[18] && create_if_block_8$3(ctx); + let if_block1 = (/*heading*/ ctx[8] || /*dismissible*/ ctx[9] || /*expandable*/ ctx[12]) && create_if_block_2$8(ctx); + const default_slot_template = /*#slots*/ ctx[23].default; + const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[22], null); + let if_block2 = /*extra*/ ctx[11] && create_if_block_1$b(ctx); + let if_block3 = /*linksHTML*/ ctx[16] && create_if_block$p(ctx); + const details_slot_template = /*#slots*/ ctx[23].details; + const details_slot = create_slot(details_slot_template, ctx, /*$$scope*/ ctx[22], get_details_slot_context); + + const block = { + c: function create() { + div2 = element("div"); + div1 = element("div"); + if (if_block0) if_block0.c(); + t0 = space(); + div0 = element("div"); + if (if_block1) if_block1.c(); + t1 = space(); + if (default_slot) default_slot.c(); + t2 = space(); + if (if_block2) if_block2.c(); + t3 = space(); + if (if_block3) if_block3.c(); + t4 = space(); + if (details_slot) details_slot.c(); + attr_dev(div0, "class", "body"); + add_render_callback(() => /*div0_elementresize_handler*/ ctx[28].call(div0)); + add_location(div0, file$M, 99, 2, 2710); + attr_dev(div1, "class", "content"); + add_location(div1, file$M, 93, 1, 2520); + attr_dev(div2, "class", "notification"); + toggle_class(div2, "inline", /*inline*/ ctx[3]); + toggle_class(div2, "wordpress", /*wordpress*/ ctx[4]); + toggle_class(div2, "success", /*success*/ ctx[5]); + toggle_class(div2, "warning", /*warning*/ ctx[6]); + toggle_class(div2, "error", /*error*/ ctx[7]); + toggle_class(div2, "info", /*info*/ ctx[15]); + toggle_class(div2, "multiline", /*multiline*/ ctx[17]); + toggle_class(div2, "expandable", /*expandable*/ ctx[12]); + toggle_class(div2, "expanded", /*expanded*/ ctx[1]); + add_location(div2, file$M, 80, 0, 2329); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, div2, anchor); + append_dev(div2, div1); + if (if_block0) if_block0.m(div1, null); + append_dev(div1, t0); + append_dev(div1, div0); + if (if_block1) if_block1.m(div0, null); + append_dev(div0, t1); + + if (default_slot) { + default_slot.m(div0, null); + } + + append_dev(div0, t2); + if (if_block2) if_block2.m(div0, null); + append_dev(div0, t3); + if (if_block3) if_block3.m(div0, null); + div0_resize_listener = add_resize_listener(div0, /*div0_elementresize_handler*/ ctx[28].bind(div0)); + append_dev(div2, t4); + + if (details_slot) { + details_slot.m(div2, null); + } + + current = true; + }, + p: function update(ctx, [dirty]) { + if (/*iconURL*/ ctx[18]) { + if (if_block0) { + if_block0.p(ctx, dirty); + } else { + if_block0 = create_if_block_8$3(ctx); + if_block0.c(); + if_block0.m(div1, t0); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + + if (/*heading*/ ctx[8] || /*dismissible*/ ctx[9] || /*expandable*/ ctx[12]) { + if (if_block1) { + if_block1.p(ctx, dirty); + } else { + if_block1 = create_if_block_2$8(ctx); + if_block1.c(); + if_block1.m(div0, t1); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; + } + + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ 4194304)) { + update_slot_base( + default_slot, + default_slot_template, + ctx, + /*$$scope*/ ctx[22], + !current + ? get_all_dirty_from_scope(/*$$scope*/ ctx[22]) + : get_slot_changes(default_slot_template, /*$$scope*/ ctx[22], dirty, null), + null + ); + } + } + + if (/*extra*/ ctx[11]) { + if (if_block2) { + if_block2.p(ctx, dirty); + } else { + if_block2 = create_if_block_1$b(ctx); + if_block2.c(); + if_block2.m(div0, t3); + } + } else if (if_block2) { + if_block2.d(1); + if_block2 = null; + } + + if (/*linksHTML*/ ctx[16]) { + if (if_block3) { + if_block3.p(ctx, dirty); + } else { + if_block3 = create_if_block$p(ctx); + if_block3.c(); + if_block3.m(div0, null); + } + } else if (if_block3) { + if_block3.d(1); + if_block3 = null; + } + + if (details_slot) { + if (details_slot.p && (!current || dirty & /*$$scope*/ 4194304)) { + update_slot_base( + details_slot, + details_slot_template, + ctx, + /*$$scope*/ ctx[22], + !current + ? get_all_dirty_from_scope(/*$$scope*/ ctx[22]) + : get_slot_changes(details_slot_template, /*$$scope*/ ctx[22], dirty, get_details_slot_changes), + get_details_slot_context + ); + } + } + + if (dirty & /*inline*/ 8) { + toggle_class(div2, "inline", /*inline*/ ctx[3]); + } + + if (dirty & /*wordpress*/ 16) { + toggle_class(div2, "wordpress", /*wordpress*/ ctx[4]); + } + + if (dirty & /*success*/ 32) { + toggle_class(div2, "success", /*success*/ ctx[5]); + } + + if (dirty & /*warning*/ 64) { + toggle_class(div2, "warning", /*warning*/ ctx[6]); + } + + if (dirty & /*error*/ 128) { + toggle_class(div2, "error", /*error*/ ctx[7]); + } + + if (dirty & /*info*/ 32768) { + toggle_class(div2, "info", /*info*/ ctx[15]); + } + + if (dirty & /*multiline*/ 131072) { + toggle_class(div2, "multiline", /*multiline*/ ctx[17]); + } + + if (dirty & /*expandable*/ 4096) { + toggle_class(div2, "expandable", /*expandable*/ ctx[12]); + } + + if (dirty & /*expanded*/ 2) { + toggle_class(div2, "expanded", /*expanded*/ ctx[1]); + } + }, + i: function intro(local) { + if (current) return; + transition_in(default_slot, local); + transition_in(details_slot, local); + + if (local) { + add_render_callback(() => { + if (!div2_transition) div2_transition = create_bidirectional_transition(div2, slide, {}, true); + div2_transition.run(1); + }); + } + + current = true; + }, + o: function outro(local) { + transition_out(default_slot, local); + transition_out(details_slot, local); + + if (local) { + if (!div2_transition) div2_transition = create_bidirectional_transition(div2, slide, {}, false); + div2_transition.run(0); + } + + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div2); + if (if_block0) if_block0.d(); + if (if_block1) if_block1.d(); + if (default_slot) default_slot.d(detaching); + if (if_block2) if_block2.d(); + if (if_block3) if_block3.d(); + div0_resize_listener(); + if (details_slot) details_slot.d(detaching); + if (detaching && div2_transition) div2_transition.end(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$T.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function getLinksHTML(links) { + if (links.length) { + return links.join(" "); + } + + return ""; + } + + function instance$T($$self, $$props, $$invalidate) { + let iconURL; + let multiline; + let linksHTML; + let $urls; + let $strings; + validate_store(urls, 'urls'); + component_subscribe($$self, urls, $$value => $$invalidate(29, $urls = $$value)); + validate_store(strings, 'strings'); + component_subscribe($$self, strings, $$value => $$invalidate(19, $strings = $$value)); + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('Notification', slots, ['default','details']); + let { notification = {} } = $$props; + let { unique_id = notification.id ? notification.id : "" } = $$props; + let { inline = notification.inline ? notification.inline : false } = $$props; + let { wordpress = notification.wordpress ? notification.wordpress : false } = $$props; + let { success = notification.type === "success" } = $$props; + let { warning = notification.type === "warning" } = $$props; + let { error = notification.type === "error" } = $$props; + let info = false; + + // It's possible to set type purely by component property, + // but we need notification.type to be correct too. + if (success) { + notification.type = "success"; + } else if (warning) { + notification.type = "warning"; + } else if (error) { + notification.type = "error"; + } else { + info = true; + notification.type = "info"; + } + + let { heading = notification.hasOwnProperty("heading") && notification.heading.trim().length + ? notification.heading.trim() + : "" } = $$props; + + let { dismissible = notification.dismissible + ? notification.dismissible + : false } = $$props; + + let { icon = notification.icon ? notification.icon : false } = $$props; + + let { plainHeading = notification.plainHeading + ? notification.plainHeading + : false } = $$props; + + let { extra = notification.extra ? notification.extra : "" } = $$props; + let { links = notification.links ? notification.links : [] } = $$props; + let { expandable = false } = $$props; + let { expanded = false } = $$props; + + /** + * Returns the icon URL for the notification. + * + * @param {string|boolean} icon + * @param {string} notificationType + * + * @return {string} + */ + function getIconURL(icon, notificationType) { + if (icon) { + return $urls.assets + "img/icon/" + icon; + } + + return $urls.assets + "img/icon/notification-" + notificationType + ".svg"; + } + + // We need to change various properties and alignments if text is multiline. + let iconHeight = 0; + + let bodyHeight = 0; + + const writable_props = [ + 'notification', + 'unique_id', + 'inline', + 'wordpress', + 'success', + 'warning', + 'error', + 'heading', + 'dismissible', + 'icon', + 'plainHeading', + 'extra', + 'links', + 'expandable', + 'expanded' + ]; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + function div_elementresize_handler() { + iconHeight = this.clientHeight; + $$invalidate(13, iconHeight); + } + + const click_handler = () => $$invalidate(1, expanded = !expanded); + const click_handler_1 = () => $$invalidate(1, expanded = !expanded); + const click_handler_2 = () => notifications.dismiss(unique_id); + + function div0_elementresize_handler() { + bodyHeight = this.clientHeight; + $$invalidate(14, bodyHeight); + } + + $$self.$$set = $$props => { + if ('notification' in $$props) $$invalidate(0, notification = $$props.notification); + if ('unique_id' in $$props) $$invalidate(2, unique_id = $$props.unique_id); + if ('inline' in $$props) $$invalidate(3, inline = $$props.inline); + if ('wordpress' in $$props) $$invalidate(4, wordpress = $$props.wordpress); + if ('success' in $$props) $$invalidate(5, success = $$props.success); + if ('warning' in $$props) $$invalidate(6, warning = $$props.warning); + if ('error' in $$props) $$invalidate(7, error = $$props.error); + if ('heading' in $$props) $$invalidate(8, heading = $$props.heading); + if ('dismissible' in $$props) $$invalidate(9, dismissible = $$props.dismissible); + if ('icon' in $$props) $$invalidate(20, icon = $$props.icon); + if ('plainHeading' in $$props) $$invalidate(10, plainHeading = $$props.plainHeading); + if ('extra' in $$props) $$invalidate(11, extra = $$props.extra); + if ('links' in $$props) $$invalidate(21, links = $$props.links); + if ('expandable' in $$props) $$invalidate(12, expandable = $$props.expandable); + if ('expanded' in $$props) $$invalidate(1, expanded = $$props.expanded); + if ('$$scope' in $$props) $$invalidate(22, $$scope = $$props.$$scope); + }; + + $$self.$capture_state = () => ({ + slide, + notifications, + strings, + urls, + notification, + unique_id, + inline, + wordpress, + success, + warning, + error, + info, + heading, + dismissible, + icon, + plainHeading, + extra, + links, + expandable, + expanded, + getIconURL, + iconHeight, + bodyHeight, + getLinksHTML, + linksHTML, + multiline, + iconURL, + $urls, + $strings + }); + + $$self.$inject_state = $$props => { + if ('notification' in $$props) $$invalidate(0, notification = $$props.notification); + if ('unique_id' in $$props) $$invalidate(2, unique_id = $$props.unique_id); + if ('inline' in $$props) $$invalidate(3, inline = $$props.inline); + if ('wordpress' in $$props) $$invalidate(4, wordpress = $$props.wordpress); + if ('success' in $$props) $$invalidate(5, success = $$props.success); + if ('warning' in $$props) $$invalidate(6, warning = $$props.warning); + if ('error' in $$props) $$invalidate(7, error = $$props.error); + if ('info' in $$props) $$invalidate(15, info = $$props.info); + if ('heading' in $$props) $$invalidate(8, heading = $$props.heading); + if ('dismissible' in $$props) $$invalidate(9, dismissible = $$props.dismissible); + if ('icon' in $$props) $$invalidate(20, icon = $$props.icon); + if ('plainHeading' in $$props) $$invalidate(10, plainHeading = $$props.plainHeading); + if ('extra' in $$props) $$invalidate(11, extra = $$props.extra); + if ('links' in $$props) $$invalidate(21, links = $$props.links); + if ('expandable' in $$props) $$invalidate(12, expandable = $$props.expandable); + if ('expanded' in $$props) $$invalidate(1, expanded = $$props.expanded); + if ('iconHeight' in $$props) $$invalidate(13, iconHeight = $$props.iconHeight); + if ('bodyHeight' in $$props) $$invalidate(14, bodyHeight = $$props.bodyHeight); + if ('linksHTML' in $$props) $$invalidate(16, linksHTML = $$props.linksHTML); + if ('multiline' in $$props) $$invalidate(17, multiline = $$props.multiline); + if ('iconURL' in $$props) $$invalidate(18, iconURL = $$props.iconURL); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + $$self.$$.update = () => { + if ($$self.$$.dirty & /*icon, notification*/ 1048577) { + $$invalidate(18, iconURL = getIconURL(icon, notification.type)); + } + + if ($$self.$$.dirty & /*iconHeight, bodyHeight*/ 24576) { + $$invalidate(17, multiline = iconHeight && bodyHeight && bodyHeight > iconHeight); + } + + if ($$self.$$.dirty & /*links*/ 2097152) { + $$invalidate(16, linksHTML = getLinksHTML(links)); + } + }; + + return [ + notification, + expanded, + unique_id, + inline, + wordpress, + success, + warning, + error, + heading, + dismissible, + plainHeading, + extra, + expandable, + iconHeight, + bodyHeight, + info, + linksHTML, + multiline, + iconURL, + $strings, + icon, + links, + $$scope, + slots, + div_elementresize_handler, + click_handler, + click_handler_1, + click_handler_2, + div0_elementresize_handler + ]; + } + + class Notification extends SvelteComponentDev { + constructor(options) { + super(options); + + init(this, options, instance$T, create_fragment$T, safe_not_equal, { + notification: 0, + unique_id: 2, + inline: 3, + wordpress: 4, + success: 5, + warning: 6, + error: 7, + heading: 8, + dismissible: 9, + icon: 20, + plainHeading: 10, + extra: 11, + links: 21, + expandable: 12, + expanded: 1 + }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "Notification", + options, + id: create_fragment$T.name + }); + } + + get notification() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set notification(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get unique_id() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set unique_id(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get inline() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set inline(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get wordpress() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set wordpress(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get success() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set success(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get warning() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set warning(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get error() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set error(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get heading() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set heading(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get dismissible() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set dismissible(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get icon() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set icon(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get plainHeading() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set plainHeading(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get extra() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set extra(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get links() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set links(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get expandable() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set expandable(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get expanded() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set expanded(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/Notifications.svelte generated by Svelte v3.49.0 */ + const file$L = "src/amazon-s3-and-cloudfront/ui/components/Notifications.svelte"; + + function get_each_context$8(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[4] = list[i]; + return child_ctx; + } + + // (10:0) {#if $notifications.length} + function create_if_block$o(ctx) { + let div; + let each_blocks = []; + let each_1_lookup = new Map(); + let current; + let each_value = /*$notifications*/ ctx[3]; + validate_each_argument(each_value); + const get_key = ctx => /*notification*/ ctx[4].render_key; + validate_each_keys(ctx, each_value, get_each_context$8, get_key); + + for (let i = 0; i < each_value.length; i += 1) { + let child_ctx = get_each_context$8(ctx, each_value, i); + let key = get_key(child_ctx); + each_1_lookup.set(key, each_blocks[i] = create_each_block$8(key, child_ctx)); + } + + const block = { + c: function create() { + div = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + attr_dev(div, "id", "notifications"); + attr_dev(div, "class", "notifications wrapper"); + add_location(div, file$L, 10, 1, 234); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div, null); + } + + current = true; + }, + p: function update(ctx, dirty) { + if (dirty & /*component, $notifications, tab, tabParent*/ 15) { + each_value = /*$notifications*/ ctx[3]; + validate_each_argument(each_value); + group_outros(); + validate_each_keys(ctx, each_value, get_each_context$8, get_key); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each_1_lookup, div, outro_and_destroy_block, create_each_block$8, null, get_each_context$8); + check_outros(); + } + }, + i: function intro(local) { + if (current) return; + + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + + current = true; + }, + o: function outro(local) { + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].d(); + } + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block$o.name, + type: "if", + source: "(10:0) {#if $notifications.length}", + ctx + }); + + return block; + } + + // (13:3) {#if !notification.dismissed && (notification.only_show_on_tab === tab || notification.only_show_on_tab === tabParent || !notification.only_show_on_tab)} + function create_if_block_1$a(ctx) { + let switch_instance; + let switch_instance_anchor; + let current; + var switch_value = /*component*/ ctx[0]; + + function switch_props(ctx) { + return { + props: { + notification: /*notification*/ ctx[4], + $$slots: { default: [create_default_slot$q] }, + $$scope: { ctx } + }, + $$inline: true + }; + } + + if (switch_value) { + switch_instance = new switch_value(switch_props(ctx)); + } + + const block = { + c: function create() { + if (switch_instance) create_component(switch_instance.$$.fragment); + switch_instance_anchor = empty(); + }, + m: function mount(target, anchor) { + if (switch_instance) { + mount_component(switch_instance, target, anchor); + } + + insert_dev(target, switch_instance_anchor, anchor); + current = true; + }, + p: function update(ctx, dirty) { + const switch_instance_changes = {}; + if (dirty & /*$notifications*/ 8) switch_instance_changes.notification = /*notification*/ ctx[4]; + + if (dirty & /*$$scope, $notifications*/ 136) { + switch_instance_changes.$$scope = { dirty, ctx }; + } + + if (switch_value !== (switch_value = /*component*/ ctx[0])) { + if (switch_instance) { + group_outros(); + const old_component = switch_instance; + + transition_out(old_component.$$.fragment, 1, 0, () => { + destroy_component(old_component, 1); + }); + + check_outros(); + } + + if (switch_value) { + switch_instance = new switch_value(switch_props(ctx)); + create_component(switch_instance.$$.fragment); + transition_in(switch_instance.$$.fragment, 1); + mount_component(switch_instance, switch_instance_anchor.parentNode, switch_instance_anchor); + } else { + switch_instance = null; + } + } else if (switch_value) { + switch_instance.$set(switch_instance_changes); + } + }, + i: function intro(local) { + if (current) return; + if (switch_instance) transition_in(switch_instance.$$.fragment, local); + current = true; + }, + o: function outro(local) { + if (switch_instance) transition_out(switch_instance.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(switch_instance_anchor); + if (switch_instance) destroy_component(switch_instance, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_1$a.name, + type: "if", + source: "(13:3) {#if !notification.dismissed && (notification.only_show_on_tab === tab || notification.only_show_on_tab === tabParent || !notification.only_show_on_tab)}", + ctx + }); + + return block; + } + + // (15:5) {#if notification.message} + function create_if_block_2$7(ctx) { + let p; + let raw_value = /*notification*/ ctx[4].message + ""; + + const block = { + c: function create() { + p = element("p"); + add_location(p, file$L, 15, 6, 619); + }, + m: function mount(target, anchor) { + insert_dev(target, p, anchor); + p.innerHTML = raw_value; + }, + p: function update(ctx, dirty) { + if (dirty & /*$notifications*/ 8 && raw_value !== (raw_value = /*notification*/ ctx[4].message + "")) p.innerHTML = raw_value; }, + d: function destroy(detaching) { + if (detaching) detach_dev(p); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_2$7.name, + type: "if", + source: "(15:5) {#if notification.message}", + ctx + }); + + return block; + } + + // (14:4) + function create_default_slot$q(ctx) { + let t; + let if_block = /*notification*/ ctx[4].message && create_if_block_2$7(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + t = space(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, t, anchor); + }, + p: function update(ctx, dirty) { + if (/*notification*/ ctx[4].message) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block_2$7(ctx); + if_block.c(); + if_block.m(t.parentNode, t); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(t); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_default_slot$q.name, + type: "slot", + source: "(14:4) ", + ctx + }); + + return block; + } + + // (12:2) {#each $notifications as notification (notification.render_key)} + function create_each_block$8(key_1, ctx) { + let first; + let if_block_anchor; + let current; + let if_block = !/*notification*/ ctx[4].dismissed && (/*notification*/ ctx[4].only_show_on_tab === /*tab*/ ctx[1] || /*notification*/ ctx[4].only_show_on_tab === /*tabParent*/ ctx[2] || !/*notification*/ ctx[4].only_show_on_tab) && create_if_block_1$a(ctx); + + const block = { + key: key_1, + first: null, + c: function create() { + first = empty(); + if (if_block) if_block.c(); + if_block_anchor = empty(); + this.first = first; + }, + m: function mount(target, anchor) { + insert_dev(target, first, anchor); + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + current = true; + }, + p: function update(new_ctx, dirty) { + ctx = new_ctx; + + if (!/*notification*/ ctx[4].dismissed && (/*notification*/ ctx[4].only_show_on_tab === /*tab*/ ctx[1] || /*notification*/ ctx[4].only_show_on_tab === /*tabParent*/ ctx[2] || !/*notification*/ ctx[4].only_show_on_tab)) { + if (if_block) { + if_block.p(ctx, dirty); + + if (dirty & /*$notifications, tab, tabParent*/ 14) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block_1$a(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); + + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + + check_outros(); + } + }, + i: function intro(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + o: function outro(local) { + transition_out(if_block); + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(first); + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block$8.name, + type: "each", + source: "(12:2) {#each $notifications as notification (notification.render_key)}", + ctx + }); + + return block; + } + + function create_fragment$S(ctx) { + let if_block_anchor; + let current; + let if_block = /*$notifications*/ ctx[3].length && create_if_block$o(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + current = true; + }, + p: function update(ctx, [dirty]) { + if (/*$notifications*/ ctx[3].length) { + if (if_block) { + if_block.p(ctx, dirty); + + if (dirty & /*$notifications*/ 8) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block$o(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); + + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + + check_outros(); + } + }, + i: function intro(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + o: function outro(local) { + transition_out(if_block); + current = false; + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$S.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$S($$self, $$props, $$invalidate) { + let $notifications; + validate_store(notifications, 'notifications'); + component_subscribe($$self, notifications, $$value => $$invalidate(3, $notifications = $$value)); + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('Notifications', slots, []); + let { component = Notification } = $$props; + let { tab = "" } = $$props; + let { tabParent = "" } = $$props; + const writable_props = ['component', 'tab', 'tabParent']; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$$set = $$props => { + if ('component' in $$props) $$invalidate(0, component = $$props.component); + if ('tab' in $$props) $$invalidate(1, tab = $$props.tab); + if ('tabParent' in $$props) $$invalidate(2, tabParent = $$props.tabParent); + }; + + $$self.$capture_state = () => ({ + notifications, + Notification, + component, + tab, + tabParent, + $notifications + }); + + $$self.$inject_state = $$props => { + if ('component' in $$props) $$invalidate(0, component = $$props.component); + if ('tab' in $$props) $$invalidate(1, tab = $$props.tab); + if ('tabParent' in $$props) $$invalidate(2, tabParent = $$props.tabParent); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [component, tab, tabParent, $notifications]; + } + + class Notifications extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$S, create_fragment$S, safe_not_equal, { component: 0, tab: 1, tabParent: 2 }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "Notifications", + options, + id: create_fragment$S.name + }); + } + + get component() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set component(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get tab() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set tab(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get tabParent() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set tabParent(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/BlockPublicAccessWarning.svelte generated by Svelte v3.49.0 */ + const file$K = "src/amazon-s3-and-cloudfront/ui/components/BlockPublicAccessWarning.svelte"; + + // (6:0) {#if $bapa && !$delivery_provider.block_public_access_supported} + function create_if_block$n(ctx) { + let notification; + let current; + + notification = new Notification({ + props: { + warning: true, + heading: /*$storage_provider*/ ctx[2].block_public_access_warning.heading, + $$slots: { default: [create_default_slot$p] }, + $$scope: { ctx } + }, + $$inline: true + }); + + const block = { + c: function create() { + create_component(notification.$$.fragment); + }, + m: function mount(target, anchor) { + mount_component(notification, target, anchor); + current = true; + }, + p: function update(ctx, dirty) { + const notification_changes = {}; + if (dirty & /*$storage_provider*/ 4) notification_changes.heading = /*$storage_provider*/ ctx[2].block_public_access_warning.heading; + + if (dirty & /*$$scope, $storage_provider*/ 12) { + notification_changes.$$scope = { dirty, ctx }; + } + + notification.$set(notification_changes); + }, + i: function intro(local) { + if (current) return; + transition_in(notification.$$.fragment, local); + current = true; + }, + o: function outro(local) { + transition_out(notification.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + destroy_component(notification, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block$n.name, + type: "if", + source: "(6:0) {#if $bapa && !$delivery_provider.block_public_access_supported}", + ctx + }); + + return block; + } + + // (7:1) + function create_default_slot$p(ctx) { + let p; + let raw_value = /*$storage_provider*/ ctx[2].block_public_access_warning.message + ""; + + const block = { + c: function create() { + p = element("p"); + add_location(p, file$K, 7, 2, 299); + }, + m: function mount(target, anchor) { + insert_dev(target, p, anchor); + p.innerHTML = raw_value; + }, + p: function update(ctx, dirty) { + if (dirty & /*$storage_provider*/ 4 && raw_value !== (raw_value = /*$storage_provider*/ ctx[2].block_public_access_warning.message + "")) p.innerHTML = raw_value; }, + d: function destroy(detaching) { + if (detaching) detach_dev(p); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_default_slot$p.name, + type: "slot", + source: "(7:1) ", + ctx + }); + + return block; + } + + function create_fragment$R(ctx) { + let if_block_anchor; + let current; + let if_block = /*$bapa*/ ctx[0] && !/*$delivery_provider*/ ctx[1].block_public_access_supported && create_if_block$n(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + current = true; + }, + p: function update(ctx, [dirty]) { + if (/*$bapa*/ ctx[0] && !/*$delivery_provider*/ ctx[1].block_public_access_supported) { + if (if_block) { + if_block.p(ctx, dirty); + + if (dirty & /*$bapa, $delivery_provider*/ 3) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block$n(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); + + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + + check_outros(); + } + }, + i: function intro(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + o: function outro(local) { + transition_out(if_block); + current = false; + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$R.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$R($$self, $$props, $$invalidate) { + let $bapa; + let $delivery_provider; + let $storage_provider; + validate_store(bapa, 'bapa'); + component_subscribe($$self, bapa, $$value => $$invalidate(0, $bapa = $$value)); + validate_store(delivery_provider, 'delivery_provider'); + component_subscribe($$self, delivery_provider, $$value => $$invalidate(1, $delivery_provider = $$value)); + validate_store(storage_provider, 'storage_provider'); + component_subscribe($$self, storage_provider, $$value => $$invalidate(2, $storage_provider = $$value)); + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('BlockPublicAccessWarning', slots, []); + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$capture_state = () => ({ + bapa, + storage_provider, + delivery_provider, + Notification, + $bapa, + $delivery_provider, + $storage_provider + }); + + return [$bapa, $delivery_provider, $storage_provider]; + } + + class BlockPublicAccessWarning extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$R, create_fragment$R, safe_not_equal, {}); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "BlockPublicAccessWarning", + options, + id: create_fragment$R.name + }); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/ObjectOwnershipEnforcedWarning.svelte generated by Svelte v3.49.0 */ + const file$J = "src/amazon-s3-and-cloudfront/ui/components/ObjectOwnershipEnforcedWarning.svelte"; + + // (6:0) {#if $ooe && !$delivery_provider.object_ownership_supported} + function create_if_block$m(ctx) { + let notification; + let current; + + notification = new Notification({ + props: { + warning: true, + heading: /*$storage_provider*/ ctx[2].object_ownership_enforced_warning.heading, + $$slots: { default: [create_default_slot$o] }, + $$scope: { ctx } + }, + $$inline: true + }); + + const block = { + c: function create() { + create_component(notification.$$.fragment); + }, + m: function mount(target, anchor) { + mount_component(notification, target, anchor); + current = true; + }, + p: function update(ctx, dirty) { + const notification_changes = {}; + if (dirty & /*$storage_provider*/ 4) notification_changes.heading = /*$storage_provider*/ ctx[2].object_ownership_enforced_warning.heading; + + if (dirty & /*$$scope, $storage_provider*/ 12) { + notification_changes.$$scope = { dirty, ctx }; + } + + notification.$set(notification_changes); + }, + i: function intro(local) { + if (current) return; + transition_in(notification.$$.fragment, local); + current = true; + }, + o: function outro(local) { + transition_out(notification.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + destroy_component(notification, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block$m.name, + type: "if", + source: "(6:0) {#if $ooe && !$delivery_provider.object_ownership_supported}", + ctx + }); + + return block; + } + + // (7:1) + function create_default_slot$o(ctx) { + let p; + let raw_value = /*$storage_provider*/ ctx[2].object_ownership_enforced_warning.message + ""; + + const block = { + c: function create() { + p = element("p"); + add_location(p, file$J, 7, 2, 300); + }, + m: function mount(target, anchor) { + insert_dev(target, p, anchor); + p.innerHTML = raw_value; + }, + p: function update(ctx, dirty) { + if (dirty & /*$storage_provider*/ 4 && raw_value !== (raw_value = /*$storage_provider*/ ctx[2].object_ownership_enforced_warning.message + "")) p.innerHTML = raw_value; }, + d: function destroy(detaching) { + if (detaching) detach_dev(p); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_default_slot$o.name, + type: "slot", + source: "(7:1) ", + ctx + }); + + return block; + } + + function create_fragment$Q(ctx) { + let if_block_anchor; + let current; + let if_block = /*$ooe*/ ctx[0] && !/*$delivery_provider*/ ctx[1].object_ownership_supported && create_if_block$m(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + current = true; + }, + p: function update(ctx, [dirty]) { + if (/*$ooe*/ ctx[0] && !/*$delivery_provider*/ ctx[1].object_ownership_supported) { + if (if_block) { + if_block.p(ctx, dirty); + + if (dirty & /*$ooe, $delivery_provider*/ 3) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block$m(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); + + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + + check_outros(); + } + }, + i: function intro(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + o: function outro(local) { + transition_out(if_block); + current = false; + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$Q.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$Q($$self, $$props, $$invalidate) { + let $ooe; + let $delivery_provider; + let $storage_provider; + validate_store(ooe, 'ooe'); + component_subscribe($$self, ooe, $$value => $$invalidate(0, $ooe = $$value)); + validate_store(delivery_provider, 'delivery_provider'); + component_subscribe($$self, delivery_provider, $$value => $$invalidate(1, $delivery_provider = $$value)); + validate_store(storage_provider, 'storage_provider'); + component_subscribe($$self, storage_provider, $$value => $$invalidate(2, $storage_provider = $$value)); + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('ObjectOwnershipEnforcedWarning', slots, []); + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$capture_state = () => ({ + ooe, + storage_provider, + delivery_provider, + Notification, + $ooe, + $delivery_provider, + $storage_provider + }); + + return [$ooe, $delivery_provider, $storage_provider]; + } + + class ObjectOwnershipEnforcedWarning extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$Q, create_fragment$Q, safe_not_equal, {}); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "ObjectOwnershipEnforcedWarning", + options, + id: create_fragment$Q.name + }); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/SubNavItem.svelte generated by Svelte v3.49.0 */ + const file$I = "src/amazon-s3-and-cloudfront/ui/components/SubNavItem.svelte"; + + function create_fragment$P(ctx) { + let li; + let a; + let t_value = /*page*/ ctx[0].title() + ""; + let t; + let a_href_value; + let a_title_value; + let mounted; + let dispose; + + const block = { + c: function create() { + li = element("li"); + a = element("a"); + t = text(t_value); + attr_dev(a, "href", a_href_value = /*page*/ ctx[0].route); + attr_dev(a, "title", a_title_value = /*page*/ ctx[0].title()); + add_location(a, file$I, 10, 1, 221); + attr_dev(li, "class", "subnav-item"); + toggle_class(li, "active", /*$location*/ ctx[3] === /*page*/ ctx[0].route); + toggle_class(li, "focus", /*focus*/ ctx[1]); + toggle_class(li, "hover", /*hover*/ ctx[2]); + add_location(li, file$I, 9, 0, 131); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, li, anchor); + append_dev(li, a); + append_dev(a, t); + + if (!mounted) { + dispose = [ + action_destroyer(link.call(null, a)), + listen_dev(a, "focusin", /*focusin_handler*/ ctx[4], false, false, false), + listen_dev(a, "focusout", /*focusout_handler*/ ctx[5], false, false, false), + listen_dev(a, "mouseenter", /*mouseenter_handler*/ ctx[6], false, false, false), + listen_dev(a, "mouseleave", /*mouseleave_handler*/ ctx[7], false, false, false) + ]; + + mounted = true; + } + }, + p: function update(ctx, [dirty]) { + if (dirty & /*page*/ 1 && t_value !== (t_value = /*page*/ ctx[0].title() + "")) set_data_dev(t, t_value); + + if (dirty & /*page*/ 1 && a_href_value !== (a_href_value = /*page*/ ctx[0].route)) { + attr_dev(a, "href", a_href_value); + } + + if (dirty & /*page*/ 1 && a_title_value !== (a_title_value = /*page*/ ctx[0].title())) { + attr_dev(a, "title", a_title_value); + } + + if (dirty & /*$location, page*/ 9) { + toggle_class(li, "active", /*$location*/ ctx[3] === /*page*/ ctx[0].route); + } + + if (dirty & /*focus*/ 2) { + toggle_class(li, "focus", /*focus*/ ctx[1]); + } + + if (dirty & /*hover*/ 4) { + toggle_class(li, "hover", /*hover*/ ctx[2]); + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(li); + mounted = false; + run_all(dispose); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$P.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$P($$self, $$props, $$invalidate) { + let $location; + validate_store(location$1, 'location'); + component_subscribe($$self, location$1, $$value => $$invalidate(3, $location = $$value)); + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('SubNavItem', slots, []); + let { page } = $$props; + let focus = false; + let hover = false; + const writable_props = ['page']; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + const focusin_handler = () => $$invalidate(1, focus = true); + const focusout_handler = () => $$invalidate(1, focus = false); + const mouseenter_handler = () => $$invalidate(2, hover = true); + const mouseleave_handler = () => $$invalidate(2, hover = false); + + $$self.$$set = $$props => { + if ('page' in $$props) $$invalidate(0, page = $$props.page); + }; + + $$self.$capture_state = () => ({ + link, + location: location$1, + page, + focus, + hover, + $location + }); + + $$self.$inject_state = $$props => { + if ('page' in $$props) $$invalidate(0, page = $$props.page); + if ('focus' in $$props) $$invalidate(1, focus = $$props.focus); + if ('hover' in $$props) $$invalidate(2, hover = $$props.hover); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + page, + focus, + hover, + $location, + focusin_handler, + focusout_handler, + mouseenter_handler, + mouseleave_handler + ]; + } + + class SubNavItem extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$P, create_fragment$P, safe_not_equal, { page: 0 }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "SubNavItem", + options, + id: create_fragment$P.name + }); + + const { ctx } = this.$$; + const props = options.props || {}; + + if (/*page*/ ctx[0] === undefined && !('page' in props)) { + console.warn(" was created without expected prop 'page'"); + } + } + + get page() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set page(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/SubNav.svelte generated by Svelte v3.49.0 */ + const file$H = "src/amazon-s3-and-cloudfront/ui/components/SubNav.svelte"; + + function get_each_context$7(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[6] = list[i]; + child_ctx[8] = i; + return child_ctx; + } + + // (13:0) {#if displayItems} + function create_if_block$l(ctx) { + let ul; + let ul_class_value; + let current; + let each_value = /*displayItems*/ ctx[3]; + validate_each_argument(each_value); + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block$7(get_each_context$7(ctx, each_value, i)); + } + + const out = i => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + + const block = { + c: function create() { + ul = element("ul"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + attr_dev(ul, "class", ul_class_value = "subnav " + /*name*/ ctx[0]); + toggle_class(ul, "subpage", /*subpage*/ ctx[1]); + toggle_class(ul, "progress", /*progress*/ ctx[2]); + add_location(ul, file$H, 13, 1, 361); + }, + m: function mount(target, anchor) { + insert_dev(target, ul, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(ul, null); + } + + current = true; + }, + p: function update(ctx, dirty) { + if (dirty & /*$urls, progress, displayItems*/ 28) { + each_value = /*displayItems*/ ctx[3]; + validate_each_argument(each_value); + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context$7(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block$7(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(ul, null); + } + } + + group_outros(); + + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } + + check_outros(); + } + + if (!current || dirty & /*name*/ 1 && ul_class_value !== (ul_class_value = "subnav " + /*name*/ ctx[0])) { + attr_dev(ul, "class", ul_class_value); + } + + if (dirty & /*name, subpage*/ 3) { + toggle_class(ul, "subpage", /*subpage*/ ctx[1]); + } + + if (dirty & /*name, progress*/ 5) { + toggle_class(ul, "progress", /*progress*/ ctx[2]); + } + }, + i: function intro(local) { + if (current) return; + + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + + current = true; + }, + o: function outro(local) { + each_blocks = each_blocks.filter(Boolean); + + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(ul); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block$l.name, + type: "if", + source: "(13:0) {#if displayItems}", + ctx + }); + + return block; + } + + // (18:3) {#if progress && index < (displayItems.length - 1)} + function create_if_block_1$9(ctx) { + let li; + let img; + let img_src_value; + let t; + + const block = { + c: function create() { + li = element("li"); + img = element("img"); + t = space(); + if (!src_url_equal(img.src, img_src_value = /*$urls*/ ctx[4].assets + 'img/icon/subnav-arrow.svg')) attr_dev(img, "src", img_src_value); + attr_dev(img, "alt", ""); + add_location(img, file$H, 19, 5, 634); + attr_dev(li, "class", "step-arrow"); + add_location(li, file$H, 18, 4, 605); + }, + m: function mount(target, anchor) { + insert_dev(target, li, anchor); + append_dev(li, img); + append_dev(li, t); + }, + p: function update(ctx, dirty) { + if (dirty & /*$urls*/ 16 && !src_url_equal(img.src, img_src_value = /*$urls*/ ctx[4].assets + 'img/icon/subnav-arrow.svg')) { + attr_dev(img, "src", img_src_value); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(li); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_1$9.name, + type: "if", + source: "(18:3) {#if progress && index < (displayItems.length - 1)}", + ctx + }); + + return block; + } + + // (15:2) {#each displayItems as page, index} + function create_each_block$7(ctx) { + let subnavitem; + let t; + let if_block_anchor; + let current; + + subnavitem = new SubNavItem({ + props: { page: /*page*/ ctx[6] }, + $$inline: true + }); + + let if_block = /*progress*/ ctx[2] && /*index*/ ctx[8] < /*displayItems*/ ctx[3].length - 1 && create_if_block_1$9(ctx); + + const block = { + c: function create() { + create_component(subnavitem.$$.fragment); + t = space(); + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + mount_component(subnavitem, target, anchor); + insert_dev(target, t, anchor); + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + current = true; + }, + p: function update(ctx, dirty) { + const subnavitem_changes = {}; + if (dirty & /*displayItems*/ 8) subnavitem_changes.page = /*page*/ ctx[6]; + subnavitem.$set(subnavitem_changes); + + if (/*progress*/ ctx[2] && /*index*/ ctx[8] < /*displayItems*/ ctx[3].length - 1) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block_1$9(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + i: function intro(local) { + if (current) return; + transition_in(subnavitem.$$.fragment, local); + current = true; + }, + o: function outro(local) { + transition_out(subnavitem.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + destroy_component(subnavitem, detaching); + if (detaching) detach_dev(t); + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block$7.name, + type: "each", + source: "(15:2) {#each displayItems as page, index}", + ctx + }); + + return block; + } + + function create_fragment$O(ctx) { + let if_block_anchor; + let current; + let if_block = /*displayItems*/ ctx[3] && create_if_block$l(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + current = true; + }, + p: function update(ctx, [dirty]) { + if (/*displayItems*/ ctx[3]) { + if (if_block) { + if_block.p(ctx, dirty); + + if (dirty & /*displayItems*/ 8) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block$l(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); + + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + + check_outros(); + } + }, + i: function intro(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + o: function outro(local) { + transition_out(if_block); + current = false; + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$O.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$O($$self, $$props, $$invalidate) { + let displayItems; + let $urls; + validate_store(urls, 'urls'); + component_subscribe($$self, urls, $$value => $$invalidate(4, $urls = $$value)); + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('SubNav', slots, []); + let { name = "media" } = $$props; + let { items = [] } = $$props; + let { subpage = false } = $$props; + let { progress = false } = $$props; + const writable_props = ['name', 'items', 'subpage', 'progress']; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$$set = $$props => { + if ('name' in $$props) $$invalidate(0, name = $$props.name); + if ('items' in $$props) $$invalidate(5, items = $$props.items); + if ('subpage' in $$props) $$invalidate(1, subpage = $$props.subpage); + if ('progress' in $$props) $$invalidate(2, progress = $$props.progress); + }; + + $$self.$capture_state = () => ({ + urls, + SubNavItem, + name, + items, + subpage, + progress, + displayItems, + $urls + }); + + $$self.$inject_state = $$props => { + if ('name' in $$props) $$invalidate(0, name = $$props.name); + if ('items' in $$props) $$invalidate(5, items = $$props.items); + if ('subpage' in $$props) $$invalidate(1, subpage = $$props.subpage); + if ('progress' in $$props) $$invalidate(2, progress = $$props.progress); + if ('displayItems' in $$props) $$invalidate(3, displayItems = $$props.displayItems); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + $$self.$$.update = () => { + if ($$self.$$.dirty & /*items*/ 32) { + $$invalidate(3, displayItems = items.filter(page => page.title && (!page.hasOwnProperty("enabled") || page.enabled() === true))); + } + }; + + return [name, subpage, progress, displayItems, $urls, items]; + } + + class SubNav extends SvelteComponentDev { + constructor(options) { + super(options); + + init(this, options, instance$O, create_fragment$O, safe_not_equal, { + name: 0, + items: 5, + subpage: 1, + progress: 2 + }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "SubNav", + options, + id: create_fragment$O.name + }); + } + + get name() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set name(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get items() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set items(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get subpage() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set subpage(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get progress() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set progress(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/SubPages.svelte generated by Svelte v3.49.0 */ + const file$G = "src/amazon-s3-and-cloudfront/ui/components/SubPages.svelte"; + + // (9:0) {#if routes} + function create_if_block$k(ctx) { + let div; + let router; + let t; + let div_class_value; + let current; + + router = new Router({ + props: { + routes: /*routes*/ ctx[2], + prefix: /*prefix*/ ctx[1] + }, + $$inline: true + }); + + router.$on("routeEvent", /*routeEvent_handler*/ ctx[5]); + const default_slot_template = /*#slots*/ ctx[4].default; + const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[3], null); + + const block = { + c: function create() { + div = element("div"); + create_component(router.$$.fragment); + t = space(); + if (default_slot) default_slot.c(); + attr_dev(div, "class", div_class_value = "" + (/*name*/ ctx[0] + "-page wrapper")); + add_location(div, file$G, 9, 1, 152); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + mount_component(router, div, null); + append_dev(div, t); + + if (default_slot) { + default_slot.m(div, null); + } + + current = true; + }, + p: function update(ctx, dirty) { + const router_changes = {}; + if (dirty & /*routes*/ 4) router_changes.routes = /*routes*/ ctx[2]; + if (dirty & /*prefix*/ 2) router_changes.prefix = /*prefix*/ ctx[1]; + router.$set(router_changes); + + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx, + /*$$scope*/ ctx[3], + !current + ? get_all_dirty_from_scope(/*$$scope*/ ctx[3]) + : get_slot_changes(default_slot_template, /*$$scope*/ ctx[3], dirty, null), + null + ); + } + } + + if (!current || dirty & /*name*/ 1 && div_class_value !== (div_class_value = "" + (/*name*/ ctx[0] + "-page wrapper"))) { + attr_dev(div, "class", div_class_value); + } + }, + i: function intro(local) { + if (current) return; + transition_in(router.$$.fragment, local); + transition_in(default_slot, local); + current = true; + }, + o: function outro(local) { + transition_out(router.$$.fragment, local); + transition_out(default_slot, local); + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + destroy_component(router); + if (default_slot) default_slot.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block$k.name, + type: "if", + source: "(9:0) {#if routes}", + ctx + }); + + return block; + } + + function create_fragment$N(ctx) { + let if_block_anchor; + let current; + let if_block = /*routes*/ ctx[2] && create_if_block$k(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + current = true; + }, + p: function update(ctx, [dirty]) { + if (/*routes*/ ctx[2]) { + if (if_block) { + if_block.p(ctx, dirty); + + if (dirty & /*routes*/ 4) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block$k(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); + + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + + check_outros(); + } + }, + i: function intro(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + o: function outro(local) { + transition_out(if_block); + current = false; + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$N.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$N($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('SubPages', slots, ['default']); + let { name = "sub" } = $$props; + let { prefix = "" } = $$props; + let { routes = {} } = $$props; + const writable_props = ['name', 'prefix', 'routes']; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + function routeEvent_handler(event) { + bubble.call(this, $$self, event); + } + + $$self.$$set = $$props => { + if ('name' in $$props) $$invalidate(0, name = $$props.name); + if ('prefix' in $$props) $$invalidate(1, prefix = $$props.prefix); + if ('routes' in $$props) $$invalidate(2, routes = $$props.routes); + if ('$$scope' in $$props) $$invalidate(3, $$scope = $$props.$$scope); + }; + + $$self.$capture_state = () => ({ Router, name, prefix, routes }); + + $$self.$inject_state = $$props => { + if ('name' in $$props) $$invalidate(0, name = $$props.name); + if ('prefix' in $$props) $$invalidate(1, prefix = $$props.prefix); + if ('routes' in $$props) $$invalidate(2, routes = $$props.routes); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [name, prefix, routes, $$scope, slots, routeEvent_handler]; + } + + class SubPages extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$N, create_fragment$N, safe_not_equal, { name: 0, prefix: 1, routes: 2 }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "SubPages", + options, + id: create_fragment$N.name + }); + } + + get name() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set name(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get prefix() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set prefix(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get routes() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set routes(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + // List of nodes to update + const nodes = []; + + // Current location + let location; + + // Function that updates all nodes marking the active ones + function checkActive(el) { + const matchesLocation = el.pattern.test(location); + toggleClasses(el, el.className, matchesLocation); + toggleClasses(el, el.inactiveClassName, !matchesLocation); + } + + function toggleClasses(el, className, shouldAdd) { + (className || '').split(' ').forEach((cls) => { + if (!cls) { + return + } + // Remove the class firsts + el.node.classList.remove(cls); + + // If the pattern doesn't match, then set the class + if (shouldAdd) { + el.node.classList.add(cls); + } + }); + } + + // Listen to changes in the location + loc.subscribe((value) => { + // Update the location + location = value.location + (value.querystring ? '?' + value.querystring : ''); + + // Update all nodes + nodes.map(checkActive); + }); + + /** + * @typedef {Object} ActiveOptions + * @property {string|RegExp} [path] - Path expression that makes the link active when matched (must start with '/' or '*'); default is the link's href + * @property {string} [className] - CSS class to apply to the element when active; default value is "active" + */ + + /** + * Svelte Action for automatically adding the "active" class to elements (links, or any other DOM element) when the current location matches a certain path. + * + * @param {HTMLElement} node - The target node (automatically set by Svelte) + * @param {ActiveOptions|string|RegExp} [opts] - Can be an object of type ActiveOptions, or a string (or regular expressions) representing ActiveOptions.path. + * @returns {{destroy: function(): void}} Destroy function + */ + function active(node, opts) { + // Check options + if (opts && (typeof opts == 'string' || (typeof opts == 'object' && opts instanceof RegExp))) { + // Interpret strings and regular expressions as opts.path + opts = { + path: opts + }; + } + else { + // Ensure opts is a dictionary + opts = opts || {}; + } + + // Path defaults to link target + if (!opts.path && node.hasAttribute('href')) { + opts.path = node.getAttribute('href'); + if (opts.path && opts.path.length > 1 && opts.path.charAt(0) == '#') { + opts.path = opts.path.substring(1); + } + } + + // Default class name + if (!opts.className) { + opts.className = 'active'; + } + + // If path is a string, it must start with '/' or '*' + if (!opts.path || + typeof opts.path == 'string' && (opts.path.length < 1 || (opts.path.charAt(0) != '/' && opts.path.charAt(0) != '*')) + ) { + throw Error('Invalid value for "path" argument') + } + + // If path is not a regular expression already, make it + const {pattern} = typeof opts.path == 'string' ? + parse(opts.path) : + {pattern: opts.path}; + + // Add the node to the list + const el = { + node, + className: opts.className, + inactiveClassName: opts.inactiveClassName, + pattern + }; + nodes.push(el); + + // Trigger the action right away + checkActive(el); + + return { + // When the element is destroyed, remove it from the list + destroy() { + nodes.splice(nodes.indexOf(el), 1); + } + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/SubPage.svelte generated by Svelte v3.49.0 */ + const file$F = "src/amazon-s3-and-cloudfront/ui/components/SubPage.svelte"; + + function create_fragment$M(ctx) { + let div; + let active_action; + let current; + let mounted; + let dispose; + const default_slot_template = /*#slots*/ ctx[3].default; + const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null); + + const block = { + c: function create() { + div = element("div"); + if (default_slot) default_slot.c(); + attr_dev(div, "class", /*name*/ ctx[0]); + add_location(div, file$F, 7, 0, 117); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + + if (default_slot) { + default_slot.m(div, null); + } + + current = true; + + if (!mounted) { + dispose = action_destroyer(active_action = active.call(null, div, /*route*/ ctx[1])); + mounted = true; + } + }, + p: function update(ctx, [dirty]) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) { + update_slot_base( + default_slot, + default_slot_template, + ctx, + /*$$scope*/ ctx[2], + !current + ? get_all_dirty_from_scope(/*$$scope*/ ctx[2]) + : get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null), + null + ); + } + } + + if (!current || dirty & /*name*/ 1) { + attr_dev(div, "class", /*name*/ ctx[0]); + } + + if (active_action && is_function(active_action.update) && dirty & /*route*/ 2) active_action.update.call(null, /*route*/ ctx[1]); + }, + i: function intro(local) { + if (current) return; + transition_in(default_slot, local); + current = true; + }, + o: function outro(local) { + transition_out(default_slot, local); + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + if (default_slot) default_slot.d(detaching); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$M.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$M($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('SubPage', slots, ['default']); + let { name = "" } = $$props; + let { route = "/" } = $$props; + const writable_props = ['name', 'route']; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$$set = $$props => { + if ('name' in $$props) $$invalidate(0, name = $$props.name); + if ('route' in $$props) $$invalidate(1, route = $$props.route); + if ('$$scope' in $$props) $$invalidate(2, $$scope = $$props.$$scope); + }; + + $$self.$capture_state = () => ({ active, name, route }); + + $$self.$inject_state = $$props => { + if ('name' in $$props) $$invalidate(0, name = $$props.name); + if ('route' in $$props) $$invalidate(1, route = $$props.route); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [name, route, $$scope, slots]; + } + + class SubPage extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$M, create_fragment$M, safe_not_equal, { name: 0, route: 1 }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "SubPage", + options, + id: create_fragment$M.name + }); + } + + get name() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set name(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get route() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set route(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/PanelContainer.svelte generated by Svelte v3.49.0 */ + + const file$E = "src/amazon-s3-and-cloudfront/ui/components/PanelContainer.svelte"; + + function create_fragment$L(ctx) { + let div; + let current; + const default_slot_template = /*#slots*/ ctx[2].default; + const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[1], null); + + const block = { + c: function create() { + div = element("div"); + if (default_slot) default_slot.c(); + attr_dev(div, "class", "panel-container " + /*classes*/ ctx[0]); + add_location(div, file$E, 4, 0, 73); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + + if (default_slot) { + default_slot.m(div, null); + } + + current = true; + }, + p: function update(ctx, [dirty]) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ 2)) { + update_slot_base( + default_slot, + default_slot_template, + ctx, + /*$$scope*/ ctx[1], + !current + ? get_all_dirty_from_scope(/*$$scope*/ ctx[1]) + : get_slot_changes(default_slot_template, /*$$scope*/ ctx[1], dirty, null), + null + ); + } + } + }, + i: function intro(local) { + if (current) return; + transition_in(default_slot, local); + current = true; + }, + o: function outro(local) { + transition_out(default_slot, local); + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + if (default_slot) default_slot.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$L.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$L($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('PanelContainer', slots, ['default']); + const classes = $$props.class ? $$props.class : ""; + + $$self.$$set = $$new_props => { + $$invalidate(3, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ('$$scope' in $$new_props) $$invalidate(1, $$scope = $$new_props.$$scope); + }; + + $$self.$capture_state = () => ({ classes }); + + $$self.$inject_state = $$new_props => { + $$invalidate(3, $$props = assign(assign({}, $$props), $$new_props)); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + $$props = exclude_internal_props($$props); + return [classes, $$scope, slots]; + } + + class PanelContainer extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$L, create_fragment$L, safe_not_equal, {}); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "PanelContainer", + options, + id: create_fragment$L.name + }); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/PanelRow.svelte generated by Svelte v3.49.0 */ + + const file$D = "src/amazon-s3-and-cloudfront/ui/components/PanelRow.svelte"; + + // (10:1) {#if gradient} + function create_if_block$j(ctx) { + let div; + + const block = { + c: function create() { + div = element("div"); + attr_dev(div, "class", "gradient svelte-41r5oq"); + add_location(div, file$D, 10, 2, 238); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block$j.name, + type: "if", + source: "(10:1) {#if gradient}", + ctx + }); + + return block; + } + + function create_fragment$K(ctx) { + let div; + let t; + let current; + let if_block = /*gradient*/ ctx[2] && create_if_block$j(ctx); + const default_slot_template = /*#slots*/ ctx[5].default; + const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[4], null); + + const block = { + c: function create() { + div = element("div"); + if (if_block) if_block.c(); + t = space(); + if (default_slot) default_slot.c(); + attr_dev(div, "class", "panel-row " + /*classes*/ ctx[3] + " svelte-41r5oq"); + toggle_class(div, "header", /*header*/ ctx[0]); + toggle_class(div, "footer", /*footer*/ ctx[1]); + add_location(div, file$D, 8, 0, 160); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + if (if_block) if_block.m(div, null); + append_dev(div, t); + + if (default_slot) { + default_slot.m(div, null); + } + + current = true; + }, + p: function update(ctx, [dirty]) { + if (/*gradient*/ ctx[2]) { + if (if_block) ; else { + if_block = create_if_block$j(ctx); + if_block.c(); + if_block.m(div, t); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ 16)) { + update_slot_base( + default_slot, + default_slot_template, + ctx, + /*$$scope*/ ctx[4], + !current + ? get_all_dirty_from_scope(/*$$scope*/ ctx[4]) + : get_slot_changes(default_slot_template, /*$$scope*/ ctx[4], dirty, null), + null + ); + } + } + + if (dirty & /*header*/ 1) { + toggle_class(div, "header", /*header*/ ctx[0]); + } + + if (dirty & /*footer*/ 2) { + toggle_class(div, "footer", /*footer*/ ctx[1]); + } + }, + i: function intro(local) { + if (current) return; + transition_in(default_slot, local); + current = true; + }, + o: function outro(local) { + transition_out(default_slot, local); + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + if (if_block) if_block.d(); + if (default_slot) default_slot.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$K.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$K($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('PanelRow', slots, ['default']); + const classes = $$props.class ? $$props.class : ""; + let { header = false } = $$props; + let { footer = false } = $$props; + let { gradient = false } = $$props; + + $$self.$$set = $$new_props => { + $$invalidate(6, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ('header' in $$new_props) $$invalidate(0, header = $$new_props.header); + if ('footer' in $$new_props) $$invalidate(1, footer = $$new_props.footer); + if ('gradient' in $$new_props) $$invalidate(2, gradient = $$new_props.gradient); + if ('$$scope' in $$new_props) $$invalidate(4, $$scope = $$new_props.$$scope); + }; + + $$self.$capture_state = () => ({ classes, header, footer, gradient }); + + $$self.$inject_state = $$new_props => { + $$invalidate(6, $$props = assign(assign({}, $$props), $$new_props)); + if ('header' in $$props) $$invalidate(0, header = $$new_props.header); + if ('footer' in $$props) $$invalidate(1, footer = $$new_props.footer); + if ('gradient' in $$props) $$invalidate(2, gradient = $$new_props.gradient); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + $$props = exclude_internal_props($$props); + return [header, footer, gradient, classes, $$scope, slots]; + } + + class PanelRow extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$K, create_fragment$K, safe_not_equal, { header: 0, footer: 1, gradient: 2 }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "PanelRow", + options, + id: create_fragment$K.name + }); + } + + get header() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set header(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get footer() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set footer(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get gradient() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set gradient(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/DefinedInWPConfig.svelte generated by Svelte v3.49.0 */ + const file$C = "src/amazon-s3-and-cloudfront/ui/components/DefinedInWPConfig.svelte"; + + // (7:0) {#if defined} + function create_if_block$i(ctx) { + let p; + let t_value = /*$strings*/ ctx[1].defined_in_wp_config + ""; + let t; + + const block = { + c: function create() { + p = element("p"); + t = text(t_value); + attr_dev(p, "class", "wp-config"); + add_location(p, file$C, 7, 1, 104); + }, + m: function mount(target, anchor) { + insert_dev(target, p, anchor); + append_dev(p, t); + }, + p: function update(ctx, dirty) { + if (dirty & /*$strings*/ 2 && t_value !== (t_value = /*$strings*/ ctx[1].defined_in_wp_config + "")) set_data_dev(t, t_value); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(p); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block$i.name, + type: "if", + source: "(7:0) {#if defined}", + ctx + }); + + return block; + } + + function create_fragment$J(ctx) { + let if_block_anchor; + let if_block = /*defined*/ ctx[0] && create_if_block$i(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, [dirty]) { + if (/*defined*/ ctx[0]) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block$i(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$J.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$J($$self, $$props, $$invalidate) { + let $strings; + validate_store(strings, 'strings'); + component_subscribe($$self, strings, $$value => $$invalidate(1, $strings = $$value)); + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('DefinedInWPConfig', slots, []); + let { defined = false } = $$props; + const writable_props = ['defined']; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$$set = $$props => { + if ('defined' in $$props) $$invalidate(0, defined = $$props.defined); + }; + + $$self.$capture_state = () => ({ strings, defined, $strings }); + + $$self.$inject_state = $$props => { + if ('defined' in $$props) $$invalidate(0, defined = $$props.defined); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [defined, $strings]; + } + + class DefinedInWPConfig extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$J, create_fragment$J, safe_not_equal, { defined: 0 }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "DefinedInWPConfig", + options, + id: create_fragment$J.name + }); + } + + get defined() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set defined(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/ToggleSwitch.svelte generated by Svelte v3.49.0 */ + + const file$B = "src/amazon-s3-and-cloudfront/ui/components/ToggleSwitch.svelte"; + + function create_fragment$I(ctx) { + let div; + let input; + let t; + let label; + let current; + let mounted; + let dispose; + const default_slot_template = /*#slots*/ ctx[4].default; + const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[3], null); + + const block = { + c: function create() { + div = element("div"); + input = element("input"); + t = space(); + label = element("label"); + if (default_slot) default_slot.c(); + attr_dev(input, "type", "checkbox"); + attr_dev(input, "id", /*name*/ ctx[1]); + input.disabled = /*disabled*/ ctx[2]; + add_location(input, file$B, 7, 1, 155); + attr_dev(label, "class", "toggle-label"); + attr_dev(label, "for", /*name*/ ctx[1]); + add_location(label, file$B, 13, 1, 235); + attr_dev(div, "class", "toggle-switch"); + toggle_class(div, "locked", /*disabled*/ ctx[2]); + add_location(div, file$B, 6, 0, 102); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + append_dev(div, input); + input.checked = /*checked*/ ctx[0]; + append_dev(div, t); + append_dev(div, label); + + if (default_slot) { + default_slot.m(label, null); + } + + current = true; + + if (!mounted) { + dispose = listen_dev(input, "change", /*input_change_handler*/ ctx[5]); + mounted = true; + } + }, + p: function update(ctx, [dirty]) { + if (!current || dirty & /*name*/ 2) { + attr_dev(input, "id", /*name*/ ctx[1]); + } + + if (!current || dirty & /*disabled*/ 4) { + prop_dev(input, "disabled", /*disabled*/ ctx[2]); + } + + if (dirty & /*checked*/ 1) { + input.checked = /*checked*/ ctx[0]; + } + + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx, + /*$$scope*/ ctx[3], + !current + ? get_all_dirty_from_scope(/*$$scope*/ ctx[3]) + : get_slot_changes(default_slot_template, /*$$scope*/ ctx[3], dirty, null), + null + ); + } + } + + if (!current || dirty & /*name*/ 2) { + attr_dev(label, "for", /*name*/ ctx[1]); + } + + if (dirty & /*disabled*/ 4) { + toggle_class(div, "locked", /*disabled*/ ctx[2]); + } + }, + i: function intro(local) { + if (current) return; + transition_in(default_slot, local); + current = true; + }, + o: function outro(local) { + transition_out(default_slot, local); + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + if (default_slot) default_slot.d(detaching); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$I.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$I($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('ToggleSwitch', slots, ['default']); + let { name = "" } = $$props; + let { checked = false } = $$props; + let { disabled = false } = $$props; + const writable_props = ['name', 'checked', 'disabled']; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + function input_change_handler() { + checked = this.checked; + $$invalidate(0, checked); + } + + $$self.$$set = $$props => { + if ('name' in $$props) $$invalidate(1, name = $$props.name); + if ('checked' in $$props) $$invalidate(0, checked = $$props.checked); + if ('disabled' in $$props) $$invalidate(2, disabled = $$props.disabled); + if ('$$scope' in $$props) $$invalidate(3, $$scope = $$props.$$scope); + }; + + $$self.$capture_state = () => ({ name, checked, disabled }); + + $$self.$inject_state = $$props => { + if ('name' in $$props) $$invalidate(1, name = $$props.name); + if ('checked' in $$props) $$invalidate(0, checked = $$props.checked); + if ('disabled' in $$props) $$invalidate(2, disabled = $$props.disabled); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [checked, name, disabled, $$scope, slots, input_change_handler]; + } + + class ToggleSwitch extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$I, create_fragment$I, safe_not_equal, { name: 1, checked: 0, disabled: 2 }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "ToggleSwitch", + options, + id: create_fragment$I.name + }); + } + + get name() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set name(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get checked() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set checked(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get disabled() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set disabled(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/HelpButton.svelte generated by Svelte v3.49.0 */ + const file$A = "src/amazon-s3-and-cloudfront/ui/components/HelpButton.svelte"; + + // (13:0) {#if url} + function create_if_block$h(ctx) { + let a; + let img; + let img_src_value; + + const block = { + c: function create() { + a = element("a"); + img = element("img"); + attr_dev(img, "class", "icon help"); + if (!src_url_equal(img.src, img_src_value = /*$urls*/ ctx[2].assets + 'img/icon/help.svg')) attr_dev(img, "src", img_src_value); + attr_dev(img, "alt", /*alt*/ ctx[3]); + add_location(img, file$A, 14, 2, 603); + attr_dev(a, "href", /*url*/ ctx[1]); + attr_dev(a, "title", /*title*/ ctx[4]); + attr_dev(a, "class", "help"); + attr_dev(a, "target", "_blank"); + attr_dev(a, "data-setting-key", /*key*/ ctx[0]); + add_location(a, file$A, 13, 1, 526); + }, + m: function mount(target, anchor) { + insert_dev(target, a, anchor); + append_dev(a, img); + }, + p: function update(ctx, dirty) { + if (dirty & /*$urls*/ 4 && !src_url_equal(img.src, img_src_value = /*$urls*/ ctx[2].assets + 'img/icon/help.svg')) { + attr_dev(img, "src", img_src_value); + } + + if (dirty & /*url*/ 2) { + attr_dev(a, "href", /*url*/ ctx[1]); + } + + if (dirty & /*key*/ 1) { + attr_dev(a, "data-setting-key", /*key*/ ctx[0]); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(a); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block$h.name, + type: "if", + source: "(13:0) {#if url}", + ctx + }); + + return block; + } + + function create_fragment$H(ctx) { + let if_block_anchor; + let if_block = /*url*/ ctx[1] && create_if_block$h(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, [dirty]) { + if (/*url*/ ctx[1]) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block$h(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$H.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$H($$self, $$props, $$invalidate) { + let $strings; + let $docs; + let $urls; + validate_store(strings, 'strings'); + component_subscribe($$self, strings, $$value => $$invalidate(6, $strings = $$value)); + validate_store(docs, 'docs'); + component_subscribe($$self, docs, $$value => $$invalidate(7, $docs = $$value)); + validate_store(urls, 'urls'); + component_subscribe($$self, urls, $$value => $$invalidate(2, $urls = $$value)); + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('HelpButton', slots, []); + let { key = "" } = $$props; + + let { url = key && $docs.hasOwnProperty(key) && $docs[key].hasOwnProperty("url") + ? $docs[key].url + : "" } = $$props; + + let { desc = "" } = $$props; + + // If desc supplied, use it, otherwise try and get via docs store or fall back to default help description. + let alt = desc.length + ? desc + : key && $docs.hasOwnProperty(key) && $docs[key].hasOwnProperty("desc") + ? $docs[key].desc + : $strings.help_desc; + + let title = alt; + const writable_props = ['key', 'url', 'desc']; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$$set = $$props => { + if ('key' in $$props) $$invalidate(0, key = $$props.key); + if ('url' in $$props) $$invalidate(1, url = $$props.url); + if ('desc' in $$props) $$invalidate(5, desc = $$props.desc); + }; + + $$self.$capture_state = () => ({ + strings, + urls, + docs, + key, + url, + desc, + alt, + title, + $strings, + $docs, + $urls + }); + + $$self.$inject_state = $$props => { + if ('key' in $$props) $$invalidate(0, key = $$props.key); + if ('url' in $$props) $$invalidate(1, url = $$props.url); + if ('desc' in $$props) $$invalidate(5, desc = $$props.desc); + if ('alt' in $$props) $$invalidate(3, alt = $$props.alt); + if ('title' in $$props) $$invalidate(4, title = $$props.title); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [key, url, $urls, alt, title, desc]; + } + + class HelpButton extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$H, create_fragment$H, safe_not_equal, { key: 0, url: 1, desc: 5 }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "HelpButton", + options, + id: create_fragment$H.name + }); + } + + get key() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set key(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get url() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set url(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get desc() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set desc(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/Panel.svelte generated by Svelte v3.49.0 */ + const file$z = "src/amazon-s3-and-cloudfront/ui/components/Panel.svelte"; + + // (50:1) {#if !multi && heading} + function create_if_block_5$3(ctx) { + let div; + let h3; + let t0; + let t1; + let current_block_type_index; + let if_block; + let t2; + let definedinwpconfig; + let current; + const if_block_creators = [create_if_block_6$3, create_if_block_7$3]; + const if_blocks = []; + + function select_block_type(ctx, dirty) { + if (/*helpURL*/ ctx[7]) return 0; + if (/*helpKey*/ ctx[6]) return 1; + return -1; + } + + if (~(current_block_type_index = select_block_type(ctx))) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + } + + definedinwpconfig = new DefinedInWPConfig({ + props: { defined: /*defined*/ ctx[3] }, + $$inline: true + }); + + const block = { + c: function create() { + div = element("div"); + h3 = element("h3"); + t0 = text(/*heading*/ ctx[2]); + t1 = space(); + if (if_block) if_block.c(); + t2 = space(); + create_component(definedinwpconfig.$$.fragment); + add_location(h3, file$z, 51, 3, 1633); + attr_dev(div, "class", "heading"); + add_location(div, file$z, 50, 2, 1608); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + append_dev(div, h3); + append_dev(h3, t0); + append_dev(div, t1); + + if (~current_block_type_index) { + if_blocks[current_block_type_index].m(div, null); + } + + append_dev(div, t2); + mount_component(definedinwpconfig, div, null); + current = true; + }, + p: function update(ctx, dirty) { + if (!current || dirty & /*heading*/ 4) set_data_dev(t0, /*heading*/ ctx[2]); + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx); + + if (current_block_type_index === previous_block_index) { + if (~current_block_type_index) { + if_blocks[current_block_type_index].p(ctx, dirty); + } + } else { + if (if_block) { + group_outros(); + + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + + check_outros(); + } + + if (~current_block_type_index) { + if_block = if_blocks[current_block_type_index]; + + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + if_block.c(); + } else { + if_block.p(ctx, dirty); + } + + transition_in(if_block, 1); + if_block.m(div, t2); + } else { + if_block = null; + } + } + + const definedinwpconfig_changes = {}; + if (dirty & /*defined*/ 8) definedinwpconfig_changes.defined = /*defined*/ ctx[3]; + definedinwpconfig.$set(definedinwpconfig_changes); + }, + i: function intro(local) { + if (current) return; + transition_in(if_block); + transition_in(definedinwpconfig.$$.fragment, local); + current = true; + }, + o: function outro(local) { + transition_out(if_block); + transition_out(definedinwpconfig.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + + if (~current_block_type_index) { + if_blocks[current_block_type_index].d(); + } + + destroy_component(definedinwpconfig); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_5$3.name, + type: "if", + source: "(50:1) {#if !multi && heading}", + ctx + }); + + return block; + } + + // (55:21) + function create_if_block_7$3(ctx) { + let helpbutton; + let current; + + helpbutton = new HelpButton({ + props: { + key: /*helpKey*/ ctx[6], + desc: /*helpDesc*/ ctx[8] + }, + $$inline: true + }); + + const block = { + c: function create() { + create_component(helpbutton.$$.fragment); + }, + m: function mount(target, anchor) { + mount_component(helpbutton, target, anchor); + current = true; + }, + p: function update(ctx, dirty) { + const helpbutton_changes = {}; + if (dirty & /*helpKey*/ 64) helpbutton_changes.key = /*helpKey*/ ctx[6]; + if (dirty & /*helpDesc*/ 256) helpbutton_changes.desc = /*helpDesc*/ ctx[8]; + helpbutton.$set(helpbutton_changes); + }, + i: function intro(local) { + if (current) return; + transition_in(helpbutton.$$.fragment, local); + current = true; + }, + o: function outro(local) { + transition_out(helpbutton.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + destroy_component(helpbutton, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_7$3.name, + type: "if", + source: "(55:21) ", + ctx + }); + + return block; + } + + // (53:3) {#if helpURL} + function create_if_block_6$3(ctx) { + let helpbutton; + let current; + + helpbutton = new HelpButton({ + props: { + url: /*helpURL*/ ctx[7], + desc: /*helpDesc*/ ctx[8] + }, + $$inline: true + }); + + const block = { + c: function create() { + create_component(helpbutton.$$.fragment); + }, + m: function mount(target, anchor) { + mount_component(helpbutton, target, anchor); + current = true; + }, + p: function update(ctx, dirty) { + const helpbutton_changes = {}; + if (dirty & /*helpURL*/ 128) helpbutton_changes.url = /*helpURL*/ ctx[7]; + if (dirty & /*helpDesc*/ 256) helpbutton_changes.desc = /*helpDesc*/ ctx[8]; + helpbutton.$set(helpbutton_changes); + }, + i: function intro(local) { + if (current) return; + transition_in(helpbutton.$$.fragment, local); + current = true; + }, + o: function outro(local) { + transition_out(helpbutton.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + destroy_component(helpbutton, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_6$3.name, + type: "if", + source: "(53:3) {#if helpURL}", + ctx + }); + + return block; + } + + // (62:2) {#if multi && heading} + function create_if_block$g(ctx) { + let panelrow; + let current; + + panelrow = new PanelRow({ + props: { + header: true, + $$slots: { default: [create_default_slot_1$b] }, + $$scope: { ctx } + }, + $$inline: true + }); + + const block = { + c: function create() { + create_component(panelrow.$$.fragment); + }, + m: function mount(target, anchor) { + mount_component(panelrow, target, anchor); + current = true; + }, + p: function update(ctx, dirty) { + const panelrow_changes = {}; + + if (dirty & /*$$scope, helpURL, helpDesc, helpKey, storageProvider, defined, toggleDisabled, heading, toggleName, toggle*/ 529389) { + panelrow_changes.$$scope = { dirty, ctx }; + } + + panelrow.$set(panelrow_changes); + }, + i: function intro(local) { + if (current) return; + transition_in(panelrow.$$.fragment, local); + current = true; + }, + o: function outro(local) { + transition_out(panelrow.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + destroy_component(panelrow, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block$g.name, + type: "if", + source: "(62:2) {#if multi && heading}", + ctx + }); + + return block; + } + + // (69:4) {:else} + function create_else_block$3(ctx) { + let h3; + let t; + + const block = { + c: function create() { + h3 = element("h3"); + t = text(/*heading*/ ctx[2]); + add_location(h3, file$z, 69, 5, 2179); + }, + m: function mount(target, anchor) { + insert_dev(target, h3, anchor); + append_dev(h3, t); + }, + p: function update(ctx, dirty) { + if (dirty & /*heading*/ 4) set_data_dev(t, /*heading*/ ctx[2]); + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(h3); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_else_block$3.name, + type: "else", + source: "(69:4) {:else}", + ctx + }); + + return block; + } + + // (64:4) {#if toggleName} + function create_if_block_4$4(ctx) { + let toggleswitch; + let updating_checked; + let t0; + let h3; + let t1; + let current; + let mounted; + let dispose; + + function toggleswitch_checked_binding(value) { + /*toggleswitch_checked_binding*/ ctx[18](value); + } + + let toggleswitch_props = { + name: /*toggleName*/ ctx[5], + disabled: /*toggleDisabled*/ ctx[12], + $$slots: { default: [create_default_slot_2$7] }, + $$scope: { ctx } + }; + + if (/*toggle*/ ctx[0] !== void 0) { + toggleswitch_props.checked = /*toggle*/ ctx[0]; + } + + toggleswitch = new ToggleSwitch({ + props: toggleswitch_props, + $$inline: true + }); + + binding_callbacks.push(() => bind(toggleswitch, 'checked', toggleswitch_checked_binding)); + + const block = { + c: function create() { + create_component(toggleswitch.$$.fragment); + t0 = space(); + h3 = element("h3"); + t1 = text(/*heading*/ ctx[2]); + attr_dev(h3, "class", "toggler svelte-k1tgof"); + toggle_class(h3, "toggleDisabled", /*toggleDisabled*/ ctx[12]); + add_location(h3, file$z, 67, 5, 2075); + }, + m: function mount(target, anchor) { + mount_component(toggleswitch, target, anchor); + insert_dev(target, t0, anchor); + insert_dev(target, h3, anchor); + append_dev(h3, t1); + current = true; + + if (!mounted) { + dispose = listen_dev(h3, "click", /*headingClickHandler*/ ctx[14], false, false, false); + mounted = true; + } + }, + p: function update(ctx, dirty) { + const toggleswitch_changes = {}; + if (dirty & /*toggleName*/ 32) toggleswitch_changes.name = /*toggleName*/ ctx[5]; + if (dirty & /*toggleDisabled*/ 4096) toggleswitch_changes.disabled = /*toggleDisabled*/ ctx[12]; + + if (dirty & /*$$scope, heading*/ 524292) { + toggleswitch_changes.$$scope = { dirty, ctx }; + } + + if (!updating_checked && dirty & /*toggle*/ 1) { + updating_checked = true; + toggleswitch_changes.checked = /*toggle*/ ctx[0]; + add_flush_callback(() => updating_checked = false); + } + + toggleswitch.$set(toggleswitch_changes); + if (!current || dirty & /*heading*/ 4) set_data_dev(t1, /*heading*/ ctx[2]); + + if (dirty & /*toggleDisabled*/ 4096) { + toggle_class(h3, "toggleDisabled", /*toggleDisabled*/ ctx[12]); + } + }, + i: function intro(local) { + if (current) return; + transition_in(toggleswitch.$$.fragment, local); + current = true; + }, + o: function outro(local) { + transition_out(toggleswitch.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + destroy_component(toggleswitch, detaching); + if (detaching) detach_dev(t0); + if (detaching) detach_dev(h3); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_4$4.name, + type: "if", + source: "(64:4) {#if toggleName}", + ctx + }); + + return block; + } + + // (65:5) + function create_default_slot_2$7(ctx) { + let t; + + const block = { + c: function create() { + t = text(/*heading*/ ctx[2]); + }, + m: function mount(target, anchor) { + insert_dev(target, t, anchor); + }, + p: function update(ctx, dirty) { + if (dirty & /*heading*/ 4) set_data_dev(t, /*heading*/ ctx[2]); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(t); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_default_slot_2$7.name, + type: "slot", + source: "(65:5) ", + ctx + }); + + return block; + } + + // (73:4) {#if storageProvider} + function create_if_block_3$4(ctx) { + let div; + let a; + let img; + let img_src_value; + let img_alt_value; + let t0; + let t1_value = /*storageProvider*/ ctx[9].provider_service_name + ""; + let t1; + let mounted; + let dispose; + + const block = { + c: function create() { + div = element("div"); + a = element("a"); + img = element("img"); + t0 = space(); + t1 = text(t1_value); + if (!src_url_equal(img.src, img_src_value = /*storageProvider*/ ctx[9].link_icon)) attr_dev(img, "src", img_src_value); + attr_dev(img, "alt", img_alt_value = /*storageProvider*/ ctx[9].icon_desc); + add_location(img, file$z, 75, 7, 2361); + attr_dev(a, "href", "/storage/provider"); + attr_dev(a, "class", "link"); + add_location(a, file$z, 74, 6, 2303); + attr_dev(div, "class", "provider"); + add_location(div, file$z, 73, 5, 2274); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + append_dev(div, a); + append_dev(a, img); + append_dev(a, t0); + append_dev(a, t1); + + if (!mounted) { + dispose = action_destroyer(link.call(null, a)); + mounted = true; + } + }, + p: function update(ctx, dirty) { + if (dirty & /*storageProvider*/ 512 && !src_url_equal(img.src, img_src_value = /*storageProvider*/ ctx[9].link_icon)) { + attr_dev(img, "src", img_src_value); + } + + if (dirty & /*storageProvider*/ 512 && img_alt_value !== (img_alt_value = /*storageProvider*/ ctx[9].icon_desc)) { + attr_dev(img, "alt", img_alt_value); + } + + if (dirty & /*storageProvider*/ 512 && t1_value !== (t1_value = /*storageProvider*/ ctx[9].provider_service_name + "")) set_data_dev(t1, t1_value); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_3$4.name, + type: "if", + source: "(73:4) {#if storageProvider}", + ctx + }); + + return block; + } + + // (83:22) + function create_if_block_2$6(ctx) { + let helpbutton; + let current; + + helpbutton = new HelpButton({ + props: { + key: /*helpKey*/ ctx[6], + desc: /*helpDesc*/ ctx[8] + }, + $$inline: true + }); + + const block = { + c: function create() { + create_component(helpbutton.$$.fragment); + }, + m: function mount(target, anchor) { + mount_component(helpbutton, target, anchor); + current = true; + }, + p: function update(ctx, dirty) { + const helpbutton_changes = {}; + if (dirty & /*helpKey*/ 64) helpbutton_changes.key = /*helpKey*/ ctx[6]; + if (dirty & /*helpDesc*/ 256) helpbutton_changes.desc = /*helpDesc*/ ctx[8]; + helpbutton.$set(helpbutton_changes); + }, + i: function intro(local) { + if (current) return; + transition_in(helpbutton.$$.fragment, local); + current = true; + }, + o: function outro(local) { + transition_out(helpbutton.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + destroy_component(helpbutton, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_2$6.name, + type: "if", + source: "(83:22) ", + ctx + }); + + return block; + } + + // (81:4) {#if helpURL} + function create_if_block_1$8(ctx) { + let helpbutton; + let current; + + helpbutton = new HelpButton({ + props: { + url: /*helpURL*/ ctx[7], + desc: /*helpDesc*/ ctx[8] + }, + $$inline: true + }); + + const block = { + c: function create() { + create_component(helpbutton.$$.fragment); + }, + m: function mount(target, anchor) { + mount_component(helpbutton, target, anchor); + current = true; + }, + p: function update(ctx, dirty) { + const helpbutton_changes = {}; + if (dirty & /*helpURL*/ 128) helpbutton_changes.url = /*helpURL*/ ctx[7]; + if (dirty & /*helpDesc*/ 256) helpbutton_changes.desc = /*helpDesc*/ ctx[8]; + helpbutton.$set(helpbutton_changes); + }, + i: function intro(local) { + if (current) return; + transition_in(helpbutton.$$.fragment, local); + current = true; + }, + o: function outro(local) { + transition_out(helpbutton.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + destroy_component(helpbutton, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_1$8.name, + type: "if", + source: "(81:4) {#if helpURL}", + ctx + }); + + return block; + } + + // (63:3) + function create_default_slot_1$b(ctx) { + let current_block_type_index; + let if_block0; + let t0; + let definedinwpconfig; + let t1; + let t2; + let current_block_type_index_1; + let if_block2; + let if_block2_anchor; + let current; + const if_block_creators = [create_if_block_4$4, create_else_block$3]; + const if_blocks = []; + + function select_block_type_1(ctx, dirty) { + if (/*toggleName*/ ctx[5]) return 0; + return 1; + } + + current_block_type_index = select_block_type_1(ctx); + if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + + definedinwpconfig = new DefinedInWPConfig({ + props: { defined: /*defined*/ ctx[3] }, + $$inline: true + }); + + let if_block1 = /*storageProvider*/ ctx[9] && create_if_block_3$4(ctx); + const if_block_creators_1 = [create_if_block_1$8, create_if_block_2$6]; + const if_blocks_1 = []; + + function select_block_type_2(ctx, dirty) { + if (/*helpURL*/ ctx[7]) return 0; + if (/*helpKey*/ ctx[6]) return 1; + return -1; + } + + if (~(current_block_type_index_1 = select_block_type_2(ctx))) { + if_block2 = if_blocks_1[current_block_type_index_1] = if_block_creators_1[current_block_type_index_1](ctx); + } + + const block = { + c: function create() { + if_block0.c(); + t0 = space(); + create_component(definedinwpconfig.$$.fragment); + t1 = space(); + if (if_block1) if_block1.c(); + t2 = space(); + if (if_block2) if_block2.c(); + if_block2_anchor = empty(); + }, + m: function mount(target, anchor) { + if_blocks[current_block_type_index].m(target, anchor); + insert_dev(target, t0, anchor); + mount_component(definedinwpconfig, target, anchor); + insert_dev(target, t1, anchor); + if (if_block1) if_block1.m(target, anchor); + insert_dev(target, t2, anchor); + + if (~current_block_type_index_1) { + if_blocks_1[current_block_type_index_1].m(target, anchor); + } + + insert_dev(target, if_block2_anchor, anchor); + current = true; + }, + p: function update(ctx, dirty) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type_1(ctx); + + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx, dirty); + } else { + group_outros(); + + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + + check_outros(); + if_block0 = if_blocks[current_block_type_index]; + + if (!if_block0) { + if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + if_block0.c(); + } else { + if_block0.p(ctx, dirty); + } + + transition_in(if_block0, 1); + if_block0.m(t0.parentNode, t0); + } + + const definedinwpconfig_changes = {}; + if (dirty & /*defined*/ 8) definedinwpconfig_changes.defined = /*defined*/ ctx[3]; + definedinwpconfig.$set(definedinwpconfig_changes); + + if (/*storageProvider*/ ctx[9]) { + if (if_block1) { + if_block1.p(ctx, dirty); + } else { + if_block1 = create_if_block_3$4(ctx); + if_block1.c(); + if_block1.m(t2.parentNode, t2); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; + } + + let previous_block_index_1 = current_block_type_index_1; + current_block_type_index_1 = select_block_type_2(ctx); + + if (current_block_type_index_1 === previous_block_index_1) { + if (~current_block_type_index_1) { + if_blocks_1[current_block_type_index_1].p(ctx, dirty); + } + } else { + if (if_block2) { + group_outros(); + + transition_out(if_blocks_1[previous_block_index_1], 1, 1, () => { + if_blocks_1[previous_block_index_1] = null; + }); + + check_outros(); + } + + if (~current_block_type_index_1) { + if_block2 = if_blocks_1[current_block_type_index_1]; + + if (!if_block2) { + if_block2 = if_blocks_1[current_block_type_index_1] = if_block_creators_1[current_block_type_index_1](ctx); + if_block2.c(); + } else { + if_block2.p(ctx, dirty); + } + + transition_in(if_block2, 1); + if_block2.m(if_block2_anchor.parentNode, if_block2_anchor); + } else { + if_block2 = null; + } + } + }, + i: function intro(local) { + if (current) return; + transition_in(if_block0); + transition_in(definedinwpconfig.$$.fragment, local); + transition_in(if_block2); + current = true; + }, + o: function outro(local) { + transition_out(if_block0); + transition_out(definedinwpconfig.$$.fragment, local); + transition_out(if_block2); + current = false; + }, + d: function destroy(detaching) { + if_blocks[current_block_type_index].d(detaching); + if (detaching) detach_dev(t0); + destroy_component(definedinwpconfig, detaching); + if (detaching) detach_dev(t1); + if (if_block1) if_block1.d(detaching); + if (detaching) detach_dev(t2); + + if (~current_block_type_index_1) { + if_blocks_1[current_block_type_index_1].d(detaching); + } + + if (detaching) detach_dev(if_block2_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_default_slot_1$b.name, + type: "slot", + source: "(63:3) ", + ctx + }); + + return block; + } + + // (61:1) + function create_default_slot$n(ctx) { + let t; + let current; + let if_block = /*multi*/ ctx[4] && /*heading*/ ctx[2] && create_if_block$g(ctx); + const default_slot_template = /*#slots*/ ctx[17].default; + const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[19], null); + + const block = { + c: function create() { + if (if_block) if_block.c(); + t = space(); + if (default_slot) default_slot.c(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, t, anchor); + + if (default_slot) { + default_slot.m(target, anchor); + } + + current = true; + }, + p: function update(ctx, dirty) { + if (/*multi*/ ctx[4] && /*heading*/ ctx[2]) { + if (if_block) { + if_block.p(ctx, dirty); + + if (dirty & /*multi, heading*/ 20) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block$g(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(t.parentNode, t); + } + } else if (if_block) { + group_outros(); + + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + + check_outros(); + } + + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ 524288)) { + update_slot_base( + default_slot, + default_slot_template, + ctx, + /*$$scope*/ ctx[19], + !current + ? get_all_dirty_from_scope(/*$$scope*/ ctx[19]) + : get_slot_changes(default_slot_template, /*$$scope*/ ctx[19], dirty, null), + null + ); + } + } + }, + i: function intro(local) { + if (current) return; + transition_in(if_block); + transition_in(default_slot, local); + current = true; + }, + o: function outro(local) { + transition_out(if_block); + transition_out(default_slot, local); + current = false; + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(t); + if (default_slot) default_slot.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_default_slot$n.name, + type: "slot", + source: "(61:1) ", + ctx + }); + + return block; + } + + function create_fragment$G(ctx) { + let div; + let t; + let panelcontainer; + let div_class_value; + let current; + let if_block = !/*multi*/ ctx[4] && /*heading*/ ctx[2] && create_if_block_5$3(ctx); + + panelcontainer = new PanelContainer({ + props: { + class: /*classes*/ ctx[13], + $$slots: { default: [create_default_slot$n] }, + $$scope: { ctx } + }, + $$inline: true + }); + + const block = { + c: function create() { + div = element("div"); + if (if_block) if_block.c(); + t = space(); + create_component(panelcontainer.$$.fragment); + attr_dev(div, "class", div_class_value = "panel " + /*name*/ ctx[1] + " svelte-k1tgof"); + toggle_class(div, "multi", /*multi*/ ctx[4]); + toggle_class(div, "locked", /*locked*/ ctx[10]); + add_location(div, file$z, 48, 0, 1529); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + if (if_block) if_block.m(div, null); + append_dev(div, t); + mount_component(panelcontainer, div, null); + current = true; + }, + p: function update(ctx, [dirty]) { + if (!/*multi*/ ctx[4] && /*heading*/ ctx[2]) { + if (if_block) { + if_block.p(ctx, dirty); + + if (dirty & /*multi, heading*/ 20) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block_5$3(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(div, t); + } + } else if (if_block) { + group_outros(); + + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + + check_outros(); + } + + const panelcontainer_changes = {}; + + if (dirty & /*$$scope, helpURL, helpDesc, helpKey, storageProvider, defined, toggleDisabled, heading, toggleName, toggle, multi*/ 529405) { + panelcontainer_changes.$$scope = { dirty, ctx }; + } + + panelcontainer.$set(panelcontainer_changes); + + if (!current || dirty & /*name*/ 2 && div_class_value !== (div_class_value = "panel " + /*name*/ ctx[1] + " svelte-k1tgof")) { + attr_dev(div, "class", div_class_value); + } + + if (dirty & /*name, multi*/ 18) { + toggle_class(div, "multi", /*multi*/ ctx[4]); + } + + if (dirty & /*name, locked*/ 1026) { + toggle_class(div, "locked", /*locked*/ ctx[10]); + } + }, + i: function intro(local) { + if (current) return; + transition_in(if_block); + transition_in(panelcontainer.$$.fragment, local); + current = true; + }, + o: function outro(local) { + transition_out(if_block); + transition_out(panelcontainer.$$.fragment, local); + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + if (if_block) if_block.d(); + destroy_component(panelcontainer); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$G.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$G($$self, $$props, $$invalidate) { + let locked; + let toggleDisabled; + let $defined_settings; + + let $settingsLocked, + $$unsubscribe_settingsLocked = noop, + $$subscribe_settingsLocked = () => ($$unsubscribe_settingsLocked(), $$unsubscribe_settingsLocked = subscribe(settingsLocked, $$value => $$invalidate(16, $settingsLocked = $$value)), settingsLocked); + + let $strings; + validate_store(defined_settings, 'defined_settings'); + component_subscribe($$self, defined_settings, $$value => $$invalidate(15, $defined_settings = $$value)); + validate_store(strings, 'strings'); + component_subscribe($$self, strings, $$value => $$invalidate(20, $strings = $$value)); + $$self.$$.on_destroy.push(() => $$unsubscribe_settingsLocked()); + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('Panel', slots, ['default']); + const classes = $$props.class ? $$props.class : ""; + let { name = "" } = $$props; + let { heading = "" } = $$props; + let { defined = false } = $$props; + let { multi = false } = $$props; + let { toggleName = "" } = $$props; + let { toggle = false } = $$props; + let { helpKey = "" } = $$props; + let { helpURL = "" } = $$props; + let { helpDesc = $strings.help_desc } = $$props; + let { storageProvider = null } = $$props; + + // Parent page may want to be locked. + let settingsLocked = writable(false); + + validate_store(settingsLocked, 'settingsLocked'); + $$subscribe_settingsLocked(); + + if (hasContext("settingsLocked")) { + $$subscribe_settingsLocked(settingsLocked = getContext("settingsLocked")); + } + + /** + * If appropriate, clicking the header toggles to toggle switch. + */ + function headingClickHandler() { + if (toggleName && !toggleDisabled) { + $$invalidate(0, toggle = !toggle); + } + } + + function toggleswitch_checked_binding(value) { + toggle = value; + $$invalidate(0, toggle); + } + + $$self.$$set = $$new_props => { + $$invalidate(21, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ('name' in $$new_props) $$invalidate(1, name = $$new_props.name); + if ('heading' in $$new_props) $$invalidate(2, heading = $$new_props.heading); + if ('defined' in $$new_props) $$invalidate(3, defined = $$new_props.defined); + if ('multi' in $$new_props) $$invalidate(4, multi = $$new_props.multi); + if ('toggleName' in $$new_props) $$invalidate(5, toggleName = $$new_props.toggleName); + if ('toggle' in $$new_props) $$invalidate(0, toggle = $$new_props.toggle); + if ('helpKey' in $$new_props) $$invalidate(6, helpKey = $$new_props.helpKey); + if ('helpURL' in $$new_props) $$invalidate(7, helpURL = $$new_props.helpURL); + if ('helpDesc' in $$new_props) $$invalidate(8, helpDesc = $$new_props.helpDesc); + if ('storageProvider' in $$new_props) $$invalidate(9, storageProvider = $$new_props.storageProvider); + if ('$$scope' in $$new_props) $$invalidate(19, $$scope = $$new_props.$$scope); + }; + + $$self.$capture_state = () => ({ + getContext, + hasContext, + writable, + link, + defined_settings, + strings, + PanelContainer, + PanelRow, + DefinedInWPConfig, + ToggleSwitch, + HelpButton, + classes, + name, + heading, + defined, + multi, + toggleName, + toggle, + helpKey, + helpURL, + helpDesc, + storageProvider, + settingsLocked, + headingClickHandler, + toggleDisabled, + locked, + $defined_settings, + $settingsLocked, + $strings + }); + + $$self.$inject_state = $$new_props => { + $$invalidate(21, $$props = assign(assign({}, $$props), $$new_props)); + if ('name' in $$props) $$invalidate(1, name = $$new_props.name); + if ('heading' in $$props) $$invalidate(2, heading = $$new_props.heading); + if ('defined' in $$props) $$invalidate(3, defined = $$new_props.defined); + if ('multi' in $$props) $$invalidate(4, multi = $$new_props.multi); + if ('toggleName' in $$props) $$invalidate(5, toggleName = $$new_props.toggleName); + if ('toggle' in $$props) $$invalidate(0, toggle = $$new_props.toggle); + if ('helpKey' in $$props) $$invalidate(6, helpKey = $$new_props.helpKey); + if ('helpURL' in $$props) $$invalidate(7, helpURL = $$new_props.helpURL); + if ('helpDesc' in $$props) $$invalidate(8, helpDesc = $$new_props.helpDesc); + if ('storageProvider' in $$props) $$invalidate(9, storageProvider = $$new_props.storageProvider); + if ('settingsLocked' in $$props) $$subscribe_settingsLocked($$invalidate(11, settingsLocked = $$new_props.settingsLocked)); + if ('toggleDisabled' in $$props) $$invalidate(12, toggleDisabled = $$new_props.toggleDisabled); + if ('locked' in $$props) $$invalidate(10, locked = $$new_props.locked); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + $$self.$$.update = () => { + if ($$self.$$.dirty & /*$settingsLocked*/ 65536) { + $$invalidate(10, locked = $settingsLocked); + } + + if ($$self.$$.dirty & /*$defined_settings, toggleName, locked*/ 33824) { + $$invalidate(12, toggleDisabled = $defined_settings.includes(toggleName) || locked); + } + }; + + $$props = exclude_internal_props($$props); + + return [ + toggle, + name, + heading, + defined, + multi, + toggleName, + helpKey, + helpURL, + helpDesc, + storageProvider, + locked, + settingsLocked, + toggleDisabled, + classes, + headingClickHandler, + $defined_settings, + $settingsLocked, + slots, + toggleswitch_checked_binding, + $$scope + ]; + } + + class Panel extends SvelteComponentDev { + constructor(options) { + super(options); + + init(this, options, instance$G, create_fragment$G, safe_not_equal, { + name: 1, + heading: 2, + defined: 3, + multi: 4, + toggleName: 5, + toggle: 0, + helpKey: 6, + helpURL: 7, + helpDesc: 8, + storageProvider: 9 + }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "Panel", + options, + id: create_fragment$G.name + }); + } + + get name() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set name(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get heading() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set heading(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get defined() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set defined(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get multi() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set multi(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get toggleName() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set toggleName(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get toggle() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set toggle(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get helpKey() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set helpKey(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get helpURL() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set helpURL(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get helpDesc() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set helpDesc(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get storageProvider() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set storageProvider(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src/amazon-s3-and-cloudfront/ui/components/Button.svelte generated by Svelte v3.49.0 */ + + const file$y = "src/amazon-s3-and-cloudfront/ui/components/Button.svelte"; + + function create_fragment$F(ctx) { + let button; + let current; + let mounted; + let dispose; + const default_slot_template = /*#slots*/ ctx[10].default; + const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[9], null); + + const block = { + c: function create() { + button = element("button"); + if (default_slot) default_slot.c(); + attr_dev(button, "class", /*classes*/ ctx[8]); + attr_dev(button, "title", /*title*/ ctx[7]); + button.disabled = /*disabled*/ ctx[6]; + toggle_class(button, "btn-xs", /*extraSmall*/ ctx[0]); + toggle_class(button, "btn-sm", /*small*/ ctx[1]); + toggle_class(button, "btn-md", /*medium*/ ctx[3]); + toggle_class(button, "btn-lg", /*large*/ ctx[2]); + toggle_class(button, "btn-primary", /*primary*/ ctx[4]); + toggle_class(button, "btn-outline", /*outline*/ ctx[5]); + toggle_class(button, "btn-disabled", /*disabled*/ ctx[6]); + add_location(button, file$y, 20, 0, 538); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, button, anchor); + + if (default_slot) { + default_slot.m(button, null); + } + + current = true; + + if (!mounted) { + dispose = listen_dev(button, "click", /*click_handler*/ ctx[11], false, false, false); + mounted = true; + } + }, + p: function update(ctx, [dirty]) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ 512)) { + update_slot_base( + default_slot, + default_slot_template, + ctx, + /*$$scope*/ ctx[9], + !current + ? get_all_dirty_from_scope(/*$$scope*/ ctx[9]) + : get_slot_changes(default_slot_template, /*$$scope*/ ctx[9], dirty, null), + null + ); + } + } + + if (!current || dirty & /*title*/ 128) { + attr_dev(button, "title", /*title*/ ctx[7]); + } + + if (!current || dirty & /*disabled*/ 64) { + prop_dev(button, "disabled", /*disabled*/ ctx[6]); + } + + if (dirty & /*extraSmall*/ 1) { + toggle_class(button, "btn-xs", /*extraSmall*/ ctx[0]); + } + + if (dirty & /*small*/ 2) { + toggle_class(button, "btn-sm", /*small*/ ctx[1]); + } + + if (dirty & /*medium*/ 8) { + toggle_class(button, "btn-md", /*medium*/ ctx[3]); + } + + if (dirty & /*large*/ 4) { + toggle_class(button, "btn-lg", /*large*/ ctx[2]); + } + + if (dirty & /*primary*/ 16) { + toggle_class(button, "btn-primary", /*primary*/ ctx[4]); + } + + if (dirty & /*outline*/ 32) { + toggle_class(button, "btn-outline", /*outline*/ ctx[5]); + } + + if (dirty & /*disabled*/ 64) { + toggle_class(button, "btn-disabled", /*disabled*/ ctx[6]); + } + }, + i: function intro(local) { + if (current) return; + transition_in(default_slot, local); + current = true; + }, + o: function outro(local) { + transition_out(default_slot, local); + current = false; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(button); + if (default_slot) default_slot.d(detaching); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$F.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$F($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('Button', slots, ['default']); + const classes = $$props.class ? $$props.class : ""; + let { extraSmall = false } = $$props; + let { small = false } = $$props; + let { large = false } = $$props; + let { medium = !extraSmall && !small && !large } = $$props; + let { primary = false } = $$props; + let { outline = !primary } = $$props; + let { disabled = false } = $$props; + let { title = "" } = $$props; + + function click_handler(event) { + bubble.call(this, $$self, event); + } + + $$self.$$set = $$new_props => { + $$invalidate(12, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ('extraSmall' in $$new_props) $$invalidate(0, extraSmall = $$new_props.extraSmall); + if ('small' in $$new_props) $$invalidate(1, small = $$new_props.small); + if ('large' in $$new_props) $$invalidate(2, large = $$new_props.large); + if ('medium' in $$new_props) $$invalidate(3, medium = $$new_props.medium); + if ('primary' in $$new_props) $$invalidate(4, primary = $$new_props.primary); + if ('outline' in $$new_props) $$invalidate(5, outline = $$new_props.outline); + if ('disabled' in $$new_props) $$invalidate(6, disabled = $$new_props.disabled); + if ('title' in $$new_props) $$invalidate(7, title = $$new_props.title); + if ('$$scope' in $$new_props) $$invalidate(9, $$scope = $$new_props.$$scope); + }; + + $$self.$capture_state = () => ({ + classes, + extraSmall, + small, + large, + medium, + primary, + outline, + disabled, + title + }); + + $$self.$inject_state = $$new_props => { + $$invalidate(12, $$props = assign(assign({}, $$props), $$new_props)); + if ('extraSmall' in $$props) $$invalidate(0, extraSmall = $$new_props.extraSmall); + if ('small' in $$props) $$invalidate(1, small = $$new_props.small); + if ('large' in $$props) $$invalidate(2, large = $$new_props.large); + if ('medium' in $$props) $$invalidate(3, medium = $$new_props.medium); + if ('primary' in $$props) $$invalidate(4, primary = $$new_props.primary); + if ('outline' in $$props) $$invalidate(5, outline = $$new_props.outline); + if ('disabled' in $$props) $$invalidate(6, disabled = $$new_props.disabled); + if ('title' in $$props) $$invalidate(7, title = $$new_props.title); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + $$props = exclude_internal_props($$props); + + return [ + extraSmall, + small, + large, + medium, + primary, + outline, + disabled, + title, + classes, + $$scope, + slots, + click_handler + ]; + } + + class Button extends SvelteComponentDev { + constructor(options) { + super(options); + + init(this, options, instance$F, create_fragment$F, safe_not_equal, { + extraSmall: 0, + small: 1, + large: 2, + medium: 3, + primary: 4, + outline: 5, + disabled: 6, + title: 7 + }); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "Button", + options, + id: create_fragment$F.name + }); + } + + get extraSmall() { + throw new Error("\n\t\t\t\t\t\t\n\t\t\t\t\t{:else if expandable}\n\t\t\t\t\t\t\n\t\t\t\t\t{:else if dismissible}\n\t\t\t\t\t\t\n\t\t\t\t\t{/if}\n\t\t\t\t\n\t\t\t{/if}\n\t\t\t\n\t\t\t{#if extra}\n\t\t\t\t

    {@html extra}

    \n\t\t\t{/if}\n\t\t\t{#if linksHTML}\n\t\t\t\t

    {@html linksHTML}

    \n\t\t\t{/if}\n\t\t\n\t\n\t\n\n","\n\n{#if $notifications.length}\n\t
    \n\t\t{#each $notifications as notification (notification.render_key)}\n\t\t\t{#if !notification.dismissed && (notification.only_show_on_tab === tab || notification.only_show_on_tab === tabParent || !notification.only_show_on_tab)}\n\t\t\t\t\n\t\t\t\t\t{#if notification.message}\n\t\t\t\t\t\t

    {@html notification.message}

    \n\t\t\t\t\t{/if}\n\t\t\t\t
    \n\t\t\t{/if}\n\t\t{/each}\n\t
    \n{/if}\n","\n\n{#if $bapa && !$delivery_provider.block_public_access_supported}\n\t\n\t\t

    {@html $storage_provider.block_public_access_warning.message}

    \n\t
    \n{/if}\n","\n\n{#if $ooe && !$delivery_provider.object_ownership_supported}\n\t\n\t\t

    {@html $storage_provider.object_ownership_enforced_warning.message}

    \n\t
    \n{/if}\n","\n\n
  • \n\t focus = true}\n\t\ton:focusout={() => focus = false}\n\t\ton:mouseenter={() => hover = true}\n\t\ton:mouseleave={() => hover = false}\n\t>\n\t\t{page.title()}\n\t\n
  • \n","\n\n{#if displayItems}\n\t
      \n\t\t{#each displayItems as page, index}\n\t\t\t\n\t\t\t\n\t\t\t{#if progress && index < (displayItems.length - 1)}\n\t\t\t\t
    • \n\t\t\t\t\t\"\"\n\t\t\t\t
    • \n\t\t\t{/if}\n\t\t{/each}\n\t
    \n{/if}\n","\n\n{#if routes}\n\t
    \n\t\t\n\t\t\n\t\t\t\n\t\t\n\t
    \n{/if}","import {parse} from 'regexparam'\nimport {loc} from './Router.svelte'\n\n// List of nodes to update\nconst nodes = []\n\n// Current location\nlet location\n\n// Function that updates all nodes marking the active ones\nfunction checkActive(el) {\n const matchesLocation = el.pattern.test(location)\n toggleClasses(el, el.className, matchesLocation)\n toggleClasses(el, el.inactiveClassName, !matchesLocation)\n}\n\nfunction toggleClasses(el, className, shouldAdd) {\n (className || '').split(' ').forEach((cls) => {\n if (!cls) {\n return\n }\n // Remove the class firsts\n el.node.classList.remove(cls)\n\n // If the pattern doesn't match, then set the class\n if (shouldAdd) {\n el.node.classList.add(cls)\n }\n })\n}\n\n// Listen to changes in the location\nloc.subscribe((value) => {\n // Update the location\n location = value.location + (value.querystring ? '?' + value.querystring : '')\n\n // Update all nodes\n nodes.map(checkActive)\n})\n\n/**\n * @typedef {Object} ActiveOptions\n * @property {string|RegExp} [path] - Path expression that makes the link active when matched (must start with '/' or '*'); default is the link's href\n * @property {string} [className] - CSS class to apply to the element when active; default value is \"active\"\n */\n\n/**\n * Svelte Action for automatically adding the \"active\" class to elements (links, or any other DOM element) when the current location matches a certain path.\n * \n * @param {HTMLElement} node - The target node (automatically set by Svelte)\n * @param {ActiveOptions|string|RegExp} [opts] - Can be an object of type ActiveOptions, or a string (or regular expressions) representing ActiveOptions.path.\n * @returns {{destroy: function(): void}} Destroy function\n */\nexport default function active(node, opts) {\n // Check options\n if (opts && (typeof opts == 'string' || (typeof opts == 'object' && opts instanceof RegExp))) {\n // Interpret strings and regular expressions as opts.path\n opts = {\n path: opts\n }\n }\n else {\n // Ensure opts is a dictionary\n opts = opts || {}\n }\n\n // Path defaults to link target\n if (!opts.path && node.hasAttribute('href')) {\n opts.path = node.getAttribute('href')\n if (opts.path && opts.path.length > 1 && opts.path.charAt(0) == '#') {\n opts.path = opts.path.substring(1)\n }\n }\n\n // Default class name\n if (!opts.className) {\n opts.className = 'active'\n }\n\n // If path is a string, it must start with '/' or '*'\n if (!opts.path || \n typeof opts.path == 'string' && (opts.path.length < 1 || (opts.path.charAt(0) != '/' && opts.path.charAt(0) != '*'))\n ) {\n throw Error('Invalid value for \"path\" argument')\n }\n\n // If path is not a regular expression already, make it\n const {pattern} = typeof opts.path == 'string' ?\n parse(opts.path) :\n {pattern: opts.path}\n\n // Add the node to the list\n const el = {\n node,\n className: opts.className,\n inactiveClassName: opts.inactiveClassName,\n pattern\n }\n nodes.push(el)\n\n // Trigger the action right away\n checkActive(el)\n\n return {\n // When the element is destroyed, remove it from the list\n destroy() {\n nodes.splice(nodes.indexOf(el), 1)\n }\n }\n}\n","\n\n
    \n\t\n
    \n","\n\n
    \n\t\n
    \n","\n\n
    \n\t{#if gradient}\n\t\t
    \n\t{/if}\n\t\n
    \n\n\n","\n\n{#if defined}\n\t

    {$strings.defined_in_wp_config}

    \n{/if}","\n\n
    \n\t\n\t\n
    ","\n\n{#if url}\n\t\n\t\t\n\t\n{/if}\n","\n\n
    \n\t{#if !multi && heading}\n\t\t
    \n\t\t\t

    {heading}

    \n\t\t\t{#if helpURL}\n\t\t\t\t\n\t\t\t{:else if helpKey}\n\t\t\t\t\n\t\t\t{/if}\n\t\t\t\n\t\t
    \n\t{/if}\n\t\n\t\t{#if multi && heading}\n\t\t\t\n\t\t\t\t{#if toggleName}\n\t\t\t\t\t\n\t\t\t\t\t\t{heading}\n\t\t\t\t\t\n\t\t\t\t\t

    {heading}

    \n\t\t\t\t{:else}\n\t\t\t\t\t

    {heading}

    \n\t\t\t\t{/if}\n\t\t\t\t\n\t\t\t\t{#if storageProvider}\n\t\t\t\t\t\n\t\t\t\t{/if}\n\t\t\t\t{#if helpURL}\n\t\t\t\t\t\n\t\t\t\t{:else if helpKey}\n\t\t\t\t\t\n\t\t\t\t{/if}\n\t\t\t
    \n\t\t{/if}\n\n\t\t\n\t
    \n
    \n\n\n","\n\n\n\t\n\n","\n\n\n\t{$storage_provider.provider_service_name}/\n\t
    \n\t\t

    {$storage_provider.provider_service_name}

    \n\t\t

    \n\t\t\t{$settings.bucket}\n\t\t\t{$region_name}\n\t\t

    \n\t
    \n\t\n
    \n\n\n","\n\n{#if $settings_notifications.has( settingKey )}\n\t{#each [...$settings_notifications.get( settingKey ).values()].sort( compareNotificationTypes ) as notification (notification)}\n\t\t\n\t\t\t

    {@html notification.message}

    \n\t\t
    \n\t{/each}\n{/if}\n","\n\n
    \n\t\n\t\t{#if toggleName}\n\t\t\t\n\t\t\t\t{heading}\n\t\t\t\n\t\t\t

    {heading}

    \n\t\t{:else}\n\t\t\t

    {heading}

    \n\t\t{/if}\n\t\t\n\t
    \n\t\n\t\t

    {@html description}

    \n\t
    \n\t{#if input}\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t{#if validationError}\n\t\t\t

    {validationError}

    \n\t\t{/if}\n\t{/if}\n\n\t{#if toggleName}\n\t\t\n\t{/if}\n\n\t{#if textName}\n\t\t\n\t{/if}\n\n\t\n
    \n\n\n","\n\n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\n","\n\n\n\t{$delivery_provider.provider_service_name}/\n\t
    \n\t\t

    {$delivery_provider.provider_service_name}

    \n\t\t

    \n\t\t\t{$delivery_provider.console_title}\n\t\t

    \n\t
    \n\t\n
    \n\n\n","\n\n\n\t\n\t\n\n\t{#if $delivery_provider.delivery_domain_allowed}\n\t\t\n\t\t{#if $delivery_provider.use_signed_urls_key_file_allowed && $settings[ \"enable-delivery-domain\" ]}\n\t\t\t\n\t\t\t\t\n\t\t\t\t{#if $settings[ \"enable-signed-urls\" ]}\n\t\t\t\t\t\n\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t{/if}\n\t\t\t\n\t\t{/if}\n\t{/if}\n\n\t\n\n","\n\n\n","\n\n{#if parts.length > 0}\n\t\n\t\t\n\t\t\t

    {$strings.url_preview_desc}

    \n\t\t
    \n\t\t\n\t\t\t
    \n\t\t\t\t{#each parts as part (part.title)}\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    {part.title}
    \n\t\t\t\t\t\t
    {part.example}
    \n\t\t\t\t\t
    \n\t\t\t\t{/each}\n\t\t\t
    \n\t\t
    \n\t
    \n{/if}\n","/**\n * Scrolls the notifications into view.\n */\nexport function scrollNotificationsIntoView() {\n\tconst element = document.getElementById( \"notifications\" );\n\n\tif ( element ) {\n\t\telement.scrollIntoView( { behavior: \"smooth\", block: \"start\" } );\n\t}\n}\n","\n\n{#if $settingsChangedStore}\n\t
    \n\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    \n\t
    \n{/if}\n","\n\n\n\t\n\t
    \n\t\t\n\t\t\n\t
    \n\t\n\t\n\t\n
    \n\n{#if sidebar}\n\t\n{/if}\n\n