From dce11b71f1f84a7517919783f8bef934eca8e38e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavs=20G=C5=ABtmanis?= Date: Tue, 12 May 2026 13:26:12 +0300 Subject: [PATCH 01/20] fix(SFT-2766): conditional email queue jobs only added for matching conditions * tightening rule lookup * optimizing event dispatching for registering form types --- .../page-buttons/page-buttons.operations.ts | 26 +++++----- packages/client/vite.config.ts | 6 ++- .../Attributes/FormAttributesTransformer.php | 2 +- .../Providers/NotificationsProvider.php | 10 ++-- .../ConditionalNotifications.php | 4 ++ .../Rules/Types/NotificationRuleProvider.php | 47 ++++++++++++++----- .../plugin/src/Jobs/SendNotificationsJob.php | 4 +- .../NotificationRuleTransformer.php | 2 +- .../plugin/src/Services/Form/TypesService.php | 21 ++++++--- 9 files changed, 82 insertions(+), 40 deletions(-) diff --git a/packages/client/src/app/pages/forms/edit/builder/tabs/layout/field-layout/page/page-buttons/page-buttons.operations.ts b/packages/client/src/app/pages/forms/edit/builder/tabs/layout/field-layout/page/page-buttons/page-buttons.operations.ts index 7b25a0231d..2f12d15b48 100644 --- a/packages/client/src/app/pages/forms/edit/builder/tabs/layout/field-layout/page/page-buttons/page-buttons.operations.ts +++ b/packages/client/src/app/pages/forms/edit/builder/tabs/layout/field-layout/page/page-buttons/page-buttons.operations.ts @@ -19,35 +19,35 @@ export const getButtonGroups = (page: Page): ButtonGroups => { case "submit": buttonGroup.push({ handle: "submit", - label: page.buttons.submitLabel, + label: page.buttons?.submitLabel || "Submit", enabled: true, - assetId: page.buttons.submitIcon?.[0] || undefined, - iconPosition: page.buttons.submitIconPosition || "left", + assetId: page.buttons?.submitIcon?.[0] || undefined, + iconPosition: page.buttons?.submitIconPosition || "left", }); break; case "back": - if (page.buttons.back) { + if (page.buttons?.back) { buttonGroup.push({ handle: "back", - label: page.buttons.backLabel, - enabled: page.buttons.back, - assetId: page.buttons.backIcon?.[0] || undefined, - iconPosition: page.buttons.backIconPosition || "left", + label: page.buttons?.backLabel || "Back", + enabled: page.buttons?.back || false, + assetId: page.buttons?.backIcon?.[0] || undefined, + iconPosition: page.buttons?.backIconPosition || "left", }); } break; case "save": - if (page.buttons.save) { + if (page.buttons?.save) { buttonGroup.push({ handle: "save", - label: page.buttons.saveLabel, - enabled: page.buttons.save, - assetId: page.buttons.saveIcon?.[0] || undefined, - iconPosition: page.buttons.saveIconPosition || "left", + label: page.buttons?.saveLabel || "Save", + enabled: page.buttons?.save || false, + assetId: page.buttons?.saveIcon?.[0] || undefined, + iconPosition: page.buttons?.saveIconPosition || "left", }); } diff --git a/packages/client/vite.config.ts b/packages/client/vite.config.ts index fce5784569..c67c5b4a99 100644 --- a/packages/client/vite.config.ts +++ b/packages/client/vite.config.ts @@ -16,6 +16,7 @@ export default defineConfig(({ mode, command }) => { const env = loadEnv(mode, __dirname, ""); const host = "127.0.0.1"; const port = env.PORT ? parseInt(env.PORT, 10) : 5173; + const shouldGenerateSourceMaps = command === "build" && mode !== "production"; return { appType: "custom", @@ -51,11 +52,14 @@ export default defineConfig(({ mode, command }) => { build: { target: "es2020", emptyOutDir: true, - sourcemap: false, + sourcemap: shouldGenerateSourceMaps, manifest: "manifest.json", outDir: path.resolve(__dirname, "../plugin/src/Resources/js/client"), rollupOptions: { input: path.resolve(__dirname, "./src/index.tsx"), + output: { + sourcemapExcludeSources: false, + }, }, }, }; diff --git a/packages/plugin/src/Attributes/Property/Implementations/Attributes/FormAttributesTransformer.php b/packages/plugin/src/Attributes/Property/Implementations/Attributes/FormAttributesTransformer.php index 85a6aa351a..a6954e4394 100644 --- a/packages/plugin/src/Attributes/Property/Implementations/Attributes/FormAttributesTransformer.php +++ b/packages/plugin/src/Attributes/Property/Implementations/Attributes/FormAttributesTransformer.php @@ -10,7 +10,7 @@ class FormAttributesTransformer implements TransformerInterface { public function transform($value, ?Form $form = null): FormAttributesCollection { - return new FormAttributesCollection($value); + return new FormAttributesCollection($value ?? []); } public function reverseTransform($value): object diff --git a/packages/plugin/src/Bundles/Notifications/Providers/NotificationsProvider.php b/packages/plugin/src/Bundles/Notifications/Providers/NotificationsProvider.php index 0b280394e4..5528954d2e 100644 --- a/packages/plugin/src/Bundles/Notifications/Providers/NotificationsProvider.php +++ b/packages/plugin/src/Bundles/Notifications/Providers/NotificationsProvider.php @@ -55,7 +55,7 @@ public function getByFormAndId(Form $form, int $id): ?NotificationInterface 'id' => $id, ]); - return $record ? $this->createNotificationObjects($record) : null; + return $record ? $this->createNotificationObjects($record, $form) : null; } public function getByForm(?Form $form = null): array @@ -64,7 +64,7 @@ public function getByForm(?Form $form = null): array $notifications = []; foreach ($records as $record) { - $notifications[] = $this->createNotificationObjects($record); + $notifications[] = $this->createNotificationObjects($record, $form); } return array_filter($notifications); @@ -88,13 +88,13 @@ public function getByFormAndClass(Form $form, string $class): array $notifications = []; foreach ($records as $record) { - $notifications[] = $this->createNotificationObjects($record); + $notifications[] = $this->createNotificationObjects($record, $form); } return array_filter($notifications); } - private function createNotificationObjects(FormNotificationRecord $record): ?NotificationInterface + private function createNotificationObjects(FormNotificationRecord $record, ?Form $form = null): ?NotificationInterface { /** @var NotificationInterface $class */ $class = $record->class; @@ -121,7 +121,7 @@ private function createNotificationObjects(FormNotificationRecord $record): ?Not $metadata['enabled'] = $record->enabled; $notification = new $class(); - $this->propertyProvider->setObjectProperties($notification, $metadata); + $this->propertyProvider->setObjectProperties($notification, $metadata, form: $form); return $notification; } diff --git a/packages/plugin/src/Bundles/Notifications/SendListeners/ConditionalNotifications.php b/packages/plugin/src/Bundles/Notifications/SendListeners/ConditionalNotifications.php index 740e50df77..2059679c97 100644 --- a/packages/plugin/src/Bundles/Notifications/SendListeners/ConditionalNotifications.php +++ b/packages/plugin/src/Bundles/Notifications/SendListeners/ConditionalNotifications.php @@ -68,6 +68,10 @@ public function sendToRecipients(SendNotificationsEvent $event): void $postedData = $event->getSubmission()->getFormFieldValues(); foreach ($notifications as $notification) { + if (!$this->ruleValidator->isPassing($notification, $form)) { + continue; + } + $recipients = $notification->getRecipients(); $template = $notification->getTemplate(); diff --git a/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php b/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php index 5964ee1451..f3ba971fcd 100644 --- a/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php +++ b/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php @@ -14,6 +14,7 @@ class NotificationRuleProvider { private ?array $cache = null; + private array $formCache = []; public function __construct( private FieldTransformer $fieldTransformer @@ -21,28 +22,27 @@ public function __construct( public function getByForm(Form $form): array { - $rules = $this->getAllNotifications(); - $rules = array_filter( - $rules, - static fn (NotificationRuleRecord $record) => $record->getNotification()->one()->formId === $form->getId() - ); + $rules = $this->getNotificationsByForm($form); $notificationRules = []; foreach ($rules as $rule) { - $notificationRules[] = $this->createRuleFromRecord($rule); + $notificationRules[] = $this->createRuleFromRecord($rule, $form); } return $notificationRules; } - public function getByUid(string $uid): ?NotificationRule + public function getByUid(string $uid, ?Form $form = null): ?NotificationRule { - $record = $this->getAllNotifications()[$uid] ?? null; + $record = $form + ? ($this->getNotificationsByForm($form)[$uid] ?? null) + : ($this->getAllNotifications()[$uid] ?? null); + if (!$record) { return null; } - return $this->createRuleFromRecord($record); + return $this->createRuleFromRecord($record, $form); } private function getAllNotifications(): array @@ -53,7 +53,7 @@ private function getAllNotifications(): array ->from(NotificationRuleRecord::TABLE.' nr') ->innerJoin(RuleRecord::TABLE.' r', '[[nr.id]] = [[r.id]]') ->innerJoin(FormNotificationRecord::TABLE.' fn', '[[nr.notificationId]] = [[fn.id]]') - ->with('rule', 'conditions', 'notification') + ->with('rule', 'conditions.field', 'notification') ->all() ; @@ -66,11 +66,34 @@ private function getAllNotifications(): array return $this->cache; } - private function createRuleFromRecord(NotificationRuleRecord $record): NotificationRule + private function getNotificationsByForm(Form $form): array + { + $formId = $form->getId(); + if (!isset($this->formCache[$formId])) { + $items = NotificationRuleRecord::find() + ->select(['nr.*']) + ->from(NotificationRuleRecord::TABLE.' nr') + ->innerJoin(RuleRecord::TABLE.' r', '[[nr.id]] = [[r.id]]') + ->innerJoin(FormNotificationRecord::TABLE.' fn', '[[nr.notificationId]] = [[fn.id]]') + ->where(['fn.formId' => $formId]) + ->with('rule', 'conditions.field', 'notification') + ->all() + ; + + $this->formCache[$formId] = []; + foreach ($items as $item) { + $this->formCache[$formId][$item->getRule()->one()->uid] = $item; + } + } + + return $this->formCache[$formId]; + } + + private function createRuleFromRecord(NotificationRuleRecord $record, ?Form $form = null): NotificationRule { $conditions = new ConditionCollection(); foreach ($record->getConditions()->all() as $conditionRecord) { - $field = $this->fieldTransformer->transform($conditionRecord->getField()->one()->uid); + $field = $this->fieldTransformer->transform($conditionRecord->getField()->one()->uid, $form); $condition = new Condition( $conditionRecord->uid, $field, diff --git a/packages/plugin/src/Jobs/SendNotificationsJob.php b/packages/plugin/src/Jobs/SendNotificationsJob.php index 435a6e09ce..6f9325a8d8 100644 --- a/packages/plugin/src/Jobs/SendNotificationsJob.php +++ b/packages/plugin/src/Jobs/SendNotificationsJob.php @@ -67,7 +67,9 @@ public function execute($queue): void return; } - $notification = $notificationProvider->getById($this->notificationId); + $notification = $this->notificationId + ? $notificationProvider->getByFormAndId($form, $this->notificationId) + : null; $logger = $this->getLogger($notification, $form); if (!$this->recipients) { diff --git a/packages/plugin/src/Notifications/Types/Conditional/NotificationRuleTransformer.php b/packages/plugin/src/Notifications/Types/Conditional/NotificationRuleTransformer.php index 54f912b8eb..154dccb91a 100644 --- a/packages/plugin/src/Notifications/Types/Conditional/NotificationRuleTransformer.php +++ b/packages/plugin/src/Notifications/Types/Conditional/NotificationRuleTransformer.php @@ -16,7 +16,7 @@ public function __construct( public function transform($value, ?Form $form = null): ?NotificationRule { if (\is_string($value)) { - return $this->ruleProvider->getByUid($value); + return $this->ruleProvider->getByUid($value, $form); } return null; diff --git a/packages/plugin/src/Services/Form/TypesService.php b/packages/plugin/src/Services/Form/TypesService.php index 38dd28f9a8..7a86091907 100644 --- a/packages/plugin/src/Services/Form/TypesService.php +++ b/packages/plugin/src/Services/Form/TypesService.php @@ -11,18 +11,27 @@ class TypesService extends BaseService { public const EVENT_REGISTER_FORM_TYPES = 'register-form-types'; + private array $typeCache = []; + /** * @return Type[] */ public function getTypes(bool $includeDefault = true): array { - $event = new RegisterFormTypeEvent(); - if ($includeDefault) { - $event->addType(Regular::class); - } + $key = $includeDefault ? 'default' : 'no-default'; + + $isCached = isset($this->typeCache[$key]); + if ($isCached === false) { + $event = new RegisterFormTypeEvent(); + if ($includeDefault) { + $event->addType(Regular::class); + } - $this->trigger(self::EVENT_REGISTER_FORM_TYPES, $event); + $this->trigger(self::EVENT_REGISTER_FORM_TYPES, $event); + + $this->typeCache[$key] = $event->getTypes(); + } - return $event->getTypes(); + return $this->typeCache[$key]; } } From e4451c8006dc155a638e2567f1eefd0ce8a9872d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavs=20G=C5=ABtmanis?= Date: Fri, 15 May 2026 13:34:04 +0300 Subject: [PATCH 02/20] chore: updating active record eager loading --- .../Providers/ABTestVariantPersistence.php | 14 +++---- .../Duplication/FormDuplicator.php | 7 ++-- .../Rules/ButtonRulesPersistence.php | 2 +- .../Rules/FieldRulesPersistence.php | 2 +- .../Rules/IntegrationRulesPersistence.php | 2 +- .../Rules/NotificationRulesPersistence.php | 2 +- .../Rules/PageRulesPersistence.php | 2 +- .../Rules/SubmitFormRulesPersistence.php | 2 +- .../plugin/src/Bundles/Rules/RuleProvider.php | 42 ++++++++----------- .../Rules/Types/IntegrationRuleProvider.php | 13 +++--- .../Rules/Types/NotificationRuleProvider.php | 13 +++--- .../User/UserGroupsOptionsGenerator.php | 16 ++++--- .../AbTests/AbTestAssignmentRecord.php | 9 ++-- .../Records/AbTests/AbTestVariantRecord.php | 9 ++-- .../src/Records/EmailMarketingListRecord.php | 11 ++--- .../src/Records/Rules/ButtonRuleRecord.php | 20 +++++---- .../src/Records/Rules/FieldRuleRecord.php | 20 +++++---- .../Records/Rules/IntegrationRuleRecord.php | 18 ++++---- .../Records/Rules/NotificationRuleRecord.php | 18 ++++---- .../src/Records/Rules/PageRuleRecord.php | 16 +++---- .../src/Records/Rules/RuleConditionRecord.php | 17 ++++---- .../plugin/src/Records/Rules/RuleRecord.php | 11 ++--- .../Records/Rules/SubmitFormRuleRecord.php | 14 ++++--- .../Integrations/EmailMarketingService.php | 27 ++++++++---- 24 files changed, 167 insertions(+), 140 deletions(-) diff --git a/packages/plugin/src/Bundles/ABTesting/Providers/ABTestVariantPersistence.php b/packages/plugin/src/Bundles/ABTesting/Providers/ABTestVariantPersistence.php index 0357aa2387..cd84bcb617 100644 --- a/packages/plugin/src/Bundles/ABTesting/Providers/ABTestVariantPersistence.php +++ b/packages/plugin/src/Bundles/ABTesting/Providers/ABTestVariantPersistence.php @@ -10,8 +10,7 @@ class ABTestVariantPersistence { public function persistVariation(AbTestVariantRecord $record): bool { - /** @var AbTestRecord $test */ - $test = $record->getAbTest()->one(); + $test = $record->abTest; $this->persistCookie($test, $record); $this->persistUserAssignment($test, $record); @@ -29,10 +28,7 @@ public function getPersistedVariant(AbTestRecord $test): ?AbTestVariantRecord ]); if ($assignment) { - /** @var AbTestVariantRecord $variation */ - $variation = $assignment->getAbTestVariant()->one(); - - return $variation; + return $assignment->abTestVariant; } } @@ -62,16 +58,18 @@ private function persistCookie(AbTestRecord $test, AbTestVariantRecord $variant) $name = $this->getCookieName($test); $value = $variant->uid; + $generalConfig = \Craft::$app->getConfig()->getGeneral(); + setcookie( $name, $value, [ 'expires' => (int) strtotime('+1 year'), 'path' => '/', - 'domain' => \Craft::$app->getConfig()->getGeneral()->defaultCookieDomain, + 'domain' => $generalConfig->defaultCookieDomain, 'secure' => true, 'httponly' => true, - 'samesite' => \Craft::$app->getConfig()->getGeneral()->sameSiteCookieValue ?? 'Lax', + 'samesite' => $generalConfig->sameSiteCookieValue ?? 'Lax', ] ); } diff --git a/packages/plugin/src/Bundles/Persistence/Duplication/FormDuplicator.php b/packages/plugin/src/Bundles/Persistence/Duplication/FormDuplicator.php index 73841d1591..7b17ba5463 100644 --- a/packages/plugin/src/Bundles/Persistence/Duplication/FormDuplicator.php +++ b/packages/plugin/src/Bundles/Persistence/Duplication/FormDuplicator.php @@ -286,7 +286,8 @@ private function cloneNotifications(int $originalId, FormRecord $form): void RuleRecord::TABLE.' r', 'r.[[id]] = '.NotificationRuleRecord::TABLE.'.[[id]]' ) - ->where(['r.[[uid]]' => $metadata->rule])->one() + ->where(['r.[[uid]]' => $metadata->rule]) + ->one() ; if ($rule) { @@ -492,13 +493,13 @@ private function fetchRecords(string $recordClass, int $formId, string $indexBy private function buildRuleClone(RuleRecord $original, RuleRecord $clone): void { - $originalBaseRuleRule = $original->getRule()->one(); + $originalBaseRuleRule = $original->rule; if (!$originalBaseRuleRule) { return; } $baseRuleClone = new RuleRecord(); - $baseRuleClone->setAttributes($original->getRule()->one()->getAttributes()); + $baseRuleClone->setAttributes($original->rule->getAttributes()); $baseRuleClone->uid = StringHelper::UUID(); $baseRuleClone->save(); diff --git a/packages/plugin/src/Bundles/Persistence/Rules/ButtonRulesPersistence.php b/packages/plugin/src/Bundles/Persistence/Rules/ButtonRulesPersistence.php index c4627a060a..7eb8905074 100644 --- a/packages/plugin/src/Bundles/Persistence/Rules/ButtonRulesPersistence.php +++ b/packages/plugin/src/Bundles/Persistence/Rules/ButtonRulesPersistence.php @@ -49,7 +49,7 @@ public function handleRuleSave(PersistFormEvent $event): void if (isset($existingRules[$data->uid])) { $record = $existingRules[$data->uid]; - $rule = $record->getRule()->one(); + $rule = $record->rule; } else { $rule = new RuleRecord(); $rule->uid = $data->uid; diff --git a/packages/plugin/src/Bundles/Persistence/Rules/FieldRulesPersistence.php b/packages/plugin/src/Bundles/Persistence/Rules/FieldRulesPersistence.php index 13a424bd95..5eee5552dc 100644 --- a/packages/plugin/src/Bundles/Persistence/Rules/FieldRulesPersistence.php +++ b/packages/plugin/src/Bundles/Persistence/Rules/FieldRulesPersistence.php @@ -49,7 +49,7 @@ public function handleRuleSave(PersistFormEvent $event): void if (isset($existingRules[$data->uid])) { $record = $existingRules[$data->uid]; - $rule = $record->getRule()->one(); + $rule = $record->rule; } else { $rule = new RuleRecord(); $rule->uid = $data->uid; diff --git a/packages/plugin/src/Bundles/Persistence/Rules/IntegrationRulesPersistence.php b/packages/plugin/src/Bundles/Persistence/Rules/IntegrationRulesPersistence.php index 8cfe482ffb..88765ce322 100644 --- a/packages/plugin/src/Bundles/Persistence/Rules/IntegrationRulesPersistence.php +++ b/packages/plugin/src/Bundles/Persistence/Rules/IntegrationRulesPersistence.php @@ -50,7 +50,7 @@ public function handleRuleSave(PersistFormEvent $event): void if (isset($existingRules[$data->uid])) { $record = $existingRules[$data->uid]; - $rule = $record->getRule()->one(); + $rule = $record->rule; } else { $rule = new RuleRecord(); $rule->uid = $data->uid; diff --git a/packages/plugin/src/Bundles/Persistence/Rules/NotificationRulesPersistence.php b/packages/plugin/src/Bundles/Persistence/Rules/NotificationRulesPersistence.php index 84324b533b..65cf938a40 100644 --- a/packages/plugin/src/Bundles/Persistence/Rules/NotificationRulesPersistence.php +++ b/packages/plugin/src/Bundles/Persistence/Rules/NotificationRulesPersistence.php @@ -50,7 +50,7 @@ public function handleRuleSave(PersistFormEvent $event): void if (isset($existingRules[$data->uid])) { $record = $existingRules[$data->uid]; - $rule = $record->getRule()->one(); + $rule = $record->rule; } else { $rule = new RuleRecord(); $rule->uid = $data->uid; diff --git a/packages/plugin/src/Bundles/Persistence/Rules/PageRulesPersistence.php b/packages/plugin/src/Bundles/Persistence/Rules/PageRulesPersistence.php index 7ac965995b..258f884afd 100644 --- a/packages/plugin/src/Bundles/Persistence/Rules/PageRulesPersistence.php +++ b/packages/plugin/src/Bundles/Persistence/Rules/PageRulesPersistence.php @@ -48,7 +48,7 @@ public function handleRuleSave(PersistFormEvent $event): void if (isset($existingRules[$data->uid])) { $record = $existingRules[$data->uid]; - $rule = $record->getRule()->one(); + $rule = $record->rule; } else { $rule = new RuleRecord(); $rule->uid = $data->uid; diff --git a/packages/plugin/src/Bundles/Persistence/Rules/SubmitFormRulesPersistence.php b/packages/plugin/src/Bundles/Persistence/Rules/SubmitFormRulesPersistence.php index 7ef63ba524..e296e19fae 100644 --- a/packages/plugin/src/Bundles/Persistence/Rules/SubmitFormRulesPersistence.php +++ b/packages/plugin/src/Bundles/Persistence/Rules/SubmitFormRulesPersistence.php @@ -55,7 +55,7 @@ public function handleRuleSave(PersistFormEvent $event): void $rule = new RuleRecord(); $rule->uid = $payload->uid; } else { - $rule = $record->getRule()->one(); + $rule = $record->rule; } $rule->combinator = $payload->combinator; diff --git a/packages/plugin/src/Bundles/Rules/RuleProvider.php b/packages/plugin/src/Bundles/Rules/RuleProvider.php index 429ed4cf30..59ffbb35cf 100644 --- a/packages/plugin/src/Bundles/Rules/RuleProvider.php +++ b/packages/plugin/src/Bundles/Rules/RuleProvider.php @@ -17,13 +17,11 @@ use Solspace\Freeform\Library\Rules\Types\PageRule; use Solspace\Freeform\Library\Rules\Types\SubmitFormRule; use Solspace\Freeform\Notifications\Types\Conditional\Conditional; -use Solspace\Freeform\Records\Form\FormFieldRecord; use Solspace\Freeform\Records\Rules\ButtonRuleRecord; use Solspace\Freeform\Records\Rules\FieldRuleRecord; use Solspace\Freeform\Records\Rules\IntegrationRuleRecord; use Solspace\Freeform\Records\Rules\NotificationRuleRecord; use Solspace\Freeform\Records\Rules\PageRuleRecord; -use Solspace\Freeform\Records\Rules\RuleConditionRecord; use Solspace\Freeform\Records\Rules\RuleRecord; use Solspace\Freeform\Records\Rules\SubmitFormRuleRecord; @@ -101,7 +99,7 @@ public function getButtonRules(Form $form, bool $currentPageOnly = false): array } /** @var RuleRecord $rule */ - $ruleRecord = $buttonRule->getRule()->one(); + $ruleRecord = $buttonRule->rule; $rule = new ButtonRule( $buttonRule->id, $uid, @@ -140,7 +138,7 @@ public function getPageRules(Form $form): array $array = []; foreach ($rules as $uid => $pageRule) { - $ruleRecord = $pageRule->getRule()->one(); + $ruleRecord = $pageRule->rule; $rule = new PageRule( $pageRule->id, $uid, @@ -160,7 +158,7 @@ public function getSubmitFormRule(Form $form): ?SubmitFormRule { $submitRule = SubmitFormRuleRecord::getExistingRule($form->getId()); if ($submitRule) { - $ruleRecord = $submitRule->getRule()->one(); + $ruleRecord = $submitRule->rule; return new SubmitFormRule( $submitRule->id, @@ -186,7 +184,7 @@ public function getNotificationRules(Form $form): array $array = []; foreach ($rules as $uid => $notificationRule) { - $ruleRecord = $notificationRule->getRule()->one(); + $ruleRecord = $notificationRule->rule; $rule = new NotificationRule( $notificationRule->id, $uid, @@ -227,7 +225,7 @@ public function getIntegrationRules(Form $form): array $array = []; foreach ($rules as $uid => $integrationRule) { - $ruleRecord = $integrationRule->getRule()->one(); + $ruleRecord = $integrationRule->rule; $rule = new IntegrationRule( $integrationRule->id, $uid, @@ -278,7 +276,7 @@ public function getFormIntegrationRules(?Form $form): array private function createFieldRuleFromRecord(Form $form, FieldRuleRecord $record): FieldRule { - $ruleRecord = $record->getRule()->one(); + $ruleRecord = $record->rule; $rule = new FieldRule( $record->id, @@ -289,7 +287,7 @@ private function createFieldRuleFromRecord(Form $form, FieldRuleRecord $record): $rule->setDisplay($record->display); $rule->setField( - $form->get($record->getField()->one()->uid) + $form->get($record->field->uid) ); return $rule; @@ -301,16 +299,14 @@ private function getNotificationRuleArray(Form $form): array $array = []; foreach ($rules as $uid => $notificationRule) { - /** @var RuleRecord $rule */ - $rule = $notificationRule->getRule()->one(); + $rule = $notificationRule->rule; $conditions = []; - /** @var RuleConditionRecord $condition */ - foreach ($rule->getConditions()->all() as $condition) { + foreach ($rule->conditions as $condition) { $conditions[] = [ 'uid' => $condition->uid, - 'field' => $condition->getField()->one()->uid, + 'field' => $condition->field->uid, 'operator' => $condition->operator, 'value' => $condition->value, ]; @@ -318,7 +314,7 @@ private function getNotificationRuleArray(Form $form): array $array[] = [ 'uid' => $uid, - 'notification' => $notificationRule->getNotification()->one()->uid, + 'notification' => $notificationRule->notification->uid, 'enabled' => true, 'send' => $notificationRule->send, 'combinator' => $rule->combinator, @@ -335,16 +331,14 @@ private function getIntegrationRuleArray(Form $form): array $array = []; foreach ($rules as $uid => $integrationRule) { - /** @var RuleRecord $rule */ - $rule = $integrationRule->getRule()->one(); + $rule = $integrationRule->rule; $conditions = []; - /** @var RuleConditionRecord $condition */ - foreach ($rule->getConditions()->all() as $condition) { + foreach ($rule->conditions as $condition) { $conditions[] = [ 'uid' => $condition->uid, - 'field' => $condition->getField()->one()->uid, + 'field' => $condition->field->uid, 'operator' => $condition->operator, 'value' => $condition->value, ]; @@ -352,7 +346,7 @@ private function getIntegrationRuleArray(Form $form): array $array[] = [ 'uid' => $uid, - 'integration' => $integrationRule->getIntegration()->one()->uid, + 'integration' => $integrationRule->integration->uid, 'enabled' => true, 'push' => $integrationRule->push, 'combinator' => $rule->combinator, @@ -368,10 +362,8 @@ private function compileConditions(Form $form, RuleRecord $ruleRecord): Conditio $conditionCollection = new ConditionCollection(); $conditionRuleLogger = Freeform::getInstance()->logger->getLogger(FreeformLogger::CONDITIONAL_RULE); - /** @var RuleConditionRecord $condition */ - foreach ($ruleRecord->getConditions()->all() as $condition) { - /** @var FormFieldRecord $fieldRecord */ - $fieldRecord = $condition->getField()->one(); + foreach ($ruleRecord->conditions as $condition) { + $fieldRecord = $condition->field; if (!$fieldRecord) { $conditionRuleLogger->error( 'Conditional field was not found', diff --git a/packages/plugin/src/Bundles/Rules/Types/IntegrationRuleProvider.php b/packages/plugin/src/Bundles/Rules/Types/IntegrationRuleProvider.php index 4a36bd5f8d..a0d513398f 100644 --- a/packages/plugin/src/Bundles/Rules/Types/IntegrationRuleProvider.php +++ b/packages/plugin/src/Bundles/Rules/Types/IntegrationRuleProvider.php @@ -24,7 +24,7 @@ public function getByForm(Form $form): array $rules = $this->getAllIntegrations(); $rules = array_filter( $rules, - static fn (IntegrationRuleRecord $record) => $record->getIntegration()->one()->formId === $form->getId() + static fn (IntegrationRuleRecord $record) => $record->integration->formId === $form->getId() ); $integrationRules = []; @@ -48,18 +48,19 @@ public function getByUid(string $uid): ?IntegrationRule private function getAllIntegrations(): array { if (null === $this->cache) { + /** @var IntegrationRuleRecord[] $items */ $items = IntegrationRuleRecord::find() ->select(['ir.*']) ->from(IntegrationRuleRecord::TABLE.' ir') ->innerJoin(RuleRecord::TABLE.' r', '[[ir.id]] = [[r.id]]') ->innerJoin(FormIntegrationRecord::TABLE.' fi', '[[ir.integrationId]] = [[fi.id]]') - ->with('rule', 'conditions', 'integration') + ->with('rule.conditions.integration', 'integration') ->all() ; $this->cache = []; foreach ($items as $item) { - $this->cache[$item->getRule()->one()->uid] = $item; + $this->cache[$item->rule->uid] = $item; } } @@ -69,8 +70,8 @@ private function getAllIntegrations(): array private function createRuleFromRecord(IntegrationRuleRecord $record): IntegrationRule { $conditions = new ConditionCollection(); - foreach ($record->getConditions()->all() as $conditionRecord) { - $field = $this->fieldTransformer->transform($conditionRecord->getField()->one()?->uid); + foreach ($record->conditions as $conditionRecord) { + $field = $this->fieldTransformer->transform($conditionRecord->field?->uid); if (!$field) { continue; } @@ -85,7 +86,7 @@ private function createRuleFromRecord(IntegrationRuleRecord $record): Integratio $conditions->add($condition); } - $ruleRecord = $record->getRule()->one(); + $ruleRecord = $record->rule; $rule = new IntegrationRule( $ruleRecord->id, diff --git a/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php b/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php index f3ba971fcd..e3fb17b42e 100644 --- a/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php +++ b/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php @@ -59,7 +59,7 @@ private function getAllNotifications(): array $this->cache = []; foreach ($items as $item) { - $this->cache[$item->getRule()->one()->uid] = $item; + $this->cache[$item->rule->uid] = $item; } } @@ -70,19 +70,20 @@ private function getNotificationsByForm(Form $form): array { $formId = $form->getId(); if (!isset($this->formCache[$formId])) { + /** @var NotificationRuleRecord[] $items */ $items = NotificationRuleRecord::find() ->select(['nr.*']) ->from(NotificationRuleRecord::TABLE.' nr') ->innerJoin(RuleRecord::TABLE.' r', '[[nr.id]] = [[r.id]]') ->innerJoin(FormNotificationRecord::TABLE.' fn', '[[nr.notificationId]] = [[fn.id]]') ->where(['fn.formId' => $formId]) - ->with('rule', 'conditions.field', 'notification') + ->with('rule.conditions.field', 'notification') ->all() ; $this->formCache[$formId] = []; foreach ($items as $item) { - $this->formCache[$formId][$item->getRule()->one()->uid] = $item; + $this->formCache[$formId][$item->rule->uid] = $item; } } @@ -92,8 +93,8 @@ private function getNotificationsByForm(Form $form): array private function createRuleFromRecord(NotificationRuleRecord $record, ?Form $form = null): NotificationRule { $conditions = new ConditionCollection(); - foreach ($record->getConditions()->all() as $conditionRecord) { - $field = $this->fieldTransformer->transform($conditionRecord->getField()->one()->uid, $form); + foreach ($record->conditions as $conditionRecord) { + $field = $this->fieldTransformer->transform($conditionRecord->field->uid, $form); $condition = new Condition( $conditionRecord->uid, $field, @@ -104,7 +105,7 @@ private function createRuleFromRecord(NotificationRuleRecord $record, ?Form $for $conditions->add($condition); } - $ruleRecord = $record->getRule()->one(); + $ruleRecord = $record->rule; $rule = new NotificationRule( $ruleRecord->id, diff --git a/packages/plugin/src/Integrations/Elements/User/UserGroupsOptionsGenerator.php b/packages/plugin/src/Integrations/Elements/User/UserGroupsOptionsGenerator.php index 03e2087973..47dc04eabc 100644 --- a/packages/plugin/src/Integrations/Elements/User/UserGroupsOptionsGenerator.php +++ b/packages/plugin/src/Integrations/Elements/User/UserGroupsOptionsGenerator.php @@ -8,15 +8,21 @@ class UserGroupsOptionsGenerator implements OptionsGeneratorInterface { + private static ?OptionCollection $cache = null; + public function fetchOptions(?Property $property): OptionCollection { - $options = new OptionCollection(); + if (self::$cache === null) { + $options = new OptionCollection(); + + $groups = \Craft::$app->getUserGroups()->getAllGroups(); + foreach ($groups as $group) { + $options->add($group->id, $group->name); + } - $groups = \Craft::$app->getUserGroups()->getAllGroups(); - foreach ($groups as $group) { - $options->add($group->id, $group->name); + self::$cache = $options; } - return $options; + return self::$cache; } } diff --git a/packages/plugin/src/Records/AbTests/AbTestAssignmentRecord.php b/packages/plugin/src/Records/AbTests/AbTestAssignmentRecord.php index 83197f40fe..35ace65e6b 100644 --- a/packages/plugin/src/Records/AbTests/AbTestAssignmentRecord.php +++ b/packages/plugin/src/Records/AbTests/AbTestAssignmentRecord.php @@ -6,10 +6,11 @@ use yii\db\ActiveQuery; /** - * @property int $id - * @property int $userId - * @property int $abTestId - * @property int $abVariantId + * @property int $id + * @property int $userId + * @property int $abTestId + * @property int $abVariantId + * @property AbTestVariantRecord $abTestVariant */ class AbTestAssignmentRecord extends ActiveRecord { diff --git a/packages/plugin/src/Records/AbTests/AbTestVariantRecord.php b/packages/plugin/src/Records/AbTests/AbTestVariantRecord.php index 376ff39443..070d04f376 100644 --- a/packages/plugin/src/Records/AbTests/AbTestVariantRecord.php +++ b/packages/plugin/src/Records/AbTests/AbTestVariantRecord.php @@ -8,10 +8,11 @@ use yii\db\ActiveQuery; /** - * @property int $id - * @property int $abTestId - * @property int $formId - * @property int $weight + * @property int $id + * @property int $abTestId + * @property int $formId + * @property int $weight + * @property AbTestRecord $abTest */ class AbTestVariantRecord extends ActiveRecord { diff --git a/packages/plugin/src/Records/EmailMarketingListRecord.php b/packages/plugin/src/Records/EmailMarketingListRecord.php index d10a3c959c..5f9638ea98 100644 --- a/packages/plugin/src/Records/EmailMarketingListRecord.php +++ b/packages/plugin/src/Records/EmailMarketingListRecord.php @@ -17,11 +17,12 @@ use yii\db\ActiveQuery; /** - * @property int $id - * @property int $integrationId - * @property string $resourceId - * @property string $name - * @property int $memberCount + * @property int $id + * @property int $integrationId + * @property string $resourceId + * @property string $name + * @property int $memberCount + * @property IntegrationRecord $integration */ class EmailMarketingListRecord extends ActiveRecord { diff --git a/packages/plugin/src/Records/Rules/ButtonRuleRecord.php b/packages/plugin/src/Records/Rules/ButtonRuleRecord.php index 820d70ba74..0df666f34e 100644 --- a/packages/plugin/src/Records/Rules/ButtonRuleRecord.php +++ b/packages/plugin/src/Records/Rules/ButtonRuleRecord.php @@ -6,13 +6,15 @@ use yii\db\ActiveQuery; /** - * @property int $id - * @property int $pageId - * @property string $button - * @property string $display - * @property \DateTime $dateCreated - * @property \DateTime $dateUpdated - * @property string $uid + * @property int $id + * @property int $pageId + * @property string $button + * @property string $display + * @property \DateTime $dateCreated + * @property \DateTime $dateUpdated + * @property string $uid + * @property RuleRecord $rule + * @property FormPageRecord $page */ class ButtonRuleRecord extends RuleRecord { @@ -39,14 +41,14 @@ public static function getExistingRules(?int $formId): array ->innerJoin(RuleRecord::TABLE.' r', '[[br.id]] = [[r.id]]') ->innerJoin(FormPageRecord::TABLE.' fp', '[[br.pageId]] = [[fp.id]]') ->where(['fp.formId' => $formId]) - ->with('rule', 'conditions', 'page') + ->with('rule.conditions.page', 'page') ->indexBy('id') ->all() ; $indexed = []; foreach ($records as $record) { - $indexed[$record->getRule()->one()->uid] = $record; + $indexed[$record->rule->uid] = $record; } return $indexed; diff --git a/packages/plugin/src/Records/Rules/FieldRuleRecord.php b/packages/plugin/src/Records/Rules/FieldRuleRecord.php index c848e07663..ced57c1648 100644 --- a/packages/plugin/src/Records/Rules/FieldRuleRecord.php +++ b/packages/plugin/src/Records/Rules/FieldRuleRecord.php @@ -6,12 +6,14 @@ use yii\db\ActiveQuery; /** - * @property int $id - * @property int $fieldId - * @property string $display - * @property \DateTime $dateCreated - * @property \DateTime $dateUpdated - * @property string $uid + * @property int $id + * @property int $fieldId + * @property string $display + * @property \DateTime $dateCreated + * @property \DateTime $dateUpdated + * @property string $uid + * @property RuleRecord $rule + * @property FormFieldRecord $field */ class FieldRuleRecord extends RuleRecord { @@ -38,14 +40,14 @@ public static function getExistingRules(?int $formId): array ->innerJoin(RuleRecord::TABLE.' r', '[[fr.id]] = [[r.id]]') ->innerJoin(FormFieldRecord::TABLE.' ff', '[[fr.fieldId]] = [[ff.id]]') ->where(['ff.formId' => $formId]) - ->with('rule', 'conditions', 'field') + ->with('rule.conditions.field', 'field') ->indexBy('id') ->all() ; $indexed = []; foreach ($records as $record) { - $indexed[$record->getRule()->one()->uid] = $record; + $indexed[$record->rule->uid] = $record; } return $indexed; @@ -59,7 +61,7 @@ public static function getExistingRule(int $fieldId): ?self ->innerJoin(RuleRecord::TABLE.' r', '[[fr.id]] = [[r.id]]') ->innerJoin(FormFieldRecord::TABLE.' ff', '[[fr.fieldId]] = [[ff.id]]') ->where(['fr.fieldId' => $fieldId]) - ->with('rule', 'conditions', 'field') + ->with('rule.conditions.field', 'field') ->indexBy('id') ->one() ; diff --git a/packages/plugin/src/Records/Rules/IntegrationRuleRecord.php b/packages/plugin/src/Records/Rules/IntegrationRuleRecord.php index 918b3fd4d7..feb10f2de2 100644 --- a/packages/plugin/src/Records/Rules/IntegrationRuleRecord.php +++ b/packages/plugin/src/Records/Rules/IntegrationRuleRecord.php @@ -6,12 +6,14 @@ use yii\db\ActiveQuery; /** - * @property int $id - * @property int $integrationId - * @property bool $push - * @property \DateTime $dateCreated - * @property \DateTime $dateUpdated - * @property string $uid + * @property int $id + * @property int $integrationId + * @property bool $push + * @property \DateTime $dateCreated + * @property \DateTime $dateUpdated + * @property string $uid + * @property RuleRecord $rule + * @property FormIntegrationRecord $integration */ class IntegrationRuleRecord extends RuleRecord { @@ -34,14 +36,14 @@ public static function getExistingRules(int $formId): array ->innerJoin(RuleRecord::TABLE.' r', '[[ir.id]] = [[r.id]]') ->innerJoin(FormIntegrationRecord::TABLE.' fi', '[[ir.integrationId]] = [[fi.id]]') ->where(['fi.formId' => $formId]) - ->with('rule', 'conditions', 'integration') + ->with('rule.conditions.integration', 'integration') ->indexBy('id') ->all() ; $indexed = []; foreach ($records as $record) { - $indexed[$record->getRule()->one()->uid] = $record; + $indexed[$record->rule->uid] = $record; } return $indexed; diff --git a/packages/plugin/src/Records/Rules/NotificationRuleRecord.php b/packages/plugin/src/Records/Rules/NotificationRuleRecord.php index 5c4ef35763..13a12f62f0 100644 --- a/packages/plugin/src/Records/Rules/NotificationRuleRecord.php +++ b/packages/plugin/src/Records/Rules/NotificationRuleRecord.php @@ -6,12 +6,14 @@ use yii\db\ActiveQuery; /** - * @property int $id - * @property int $notificationId - * @property bool $send - * @property \DateTime $dateCreated - * @property \DateTime $dateUpdated - * @property string $uid + * @property int $id + * @property int $notificationId + * @property bool $send + * @property \DateTime $dateCreated + * @property \DateTime $dateUpdated + * @property string $uid + * @property RuleRecord $rule + * @property FormNotificationRecord $notification */ class NotificationRuleRecord extends RuleRecord { @@ -34,14 +36,14 @@ public static function getExistingRules(int $formId): array ->innerJoin(RuleRecord::TABLE.' r', '[[fr.id]] = [[r.id]]') ->innerJoin(FormNotificationRecord::TABLE.' fn', '[[fr.notificationId]] = [[fn.id]]') ->where(['fn.formId' => $formId]) - ->with('rule', 'conditions', 'notification') + ->with('rule.conditions.notification', 'notification') ->indexBy('id') ->all() ; $indexed = []; foreach ($records as $record) { - $indexed[$record->getRule()->one()->uid] = $record; + $indexed[$record->rule->uid] = $record; } return $indexed; diff --git a/packages/plugin/src/Records/Rules/PageRuleRecord.php b/packages/plugin/src/Records/Rules/PageRuleRecord.php index 71a2b79077..5d1df42b1e 100644 --- a/packages/plugin/src/Records/Rules/PageRuleRecord.php +++ b/packages/plugin/src/Records/Rules/PageRuleRecord.php @@ -6,11 +6,13 @@ use yii\db\ActiveQuery; /** - * @property int $id - * @property int $pageId - * @property \DateTime $dateCreated - * @property \DateTime $dateUpdated - * @property string $uid + * @property int $id + * @property int $pageId + * @property \DateTime $dateCreated + * @property \DateTime $dateUpdated + * @property string $uid + * @property RuleRecord $rule + * @property FormPageRecord $page */ class PageRuleRecord extends RuleRecord { @@ -33,14 +35,14 @@ public static function getExistingRules(int $formId): array ->innerJoin(RuleRecord::TABLE.' r', '[[fr.id]] = [[r.id]]') ->innerJoin(FormPageRecord::TABLE.' fp', '[[fr.pageId]] = [[fp.id]]') ->where(['fp.formId' => $formId]) - ->with('rule', 'conditions', 'page') + ->with('rule.conditions.page', 'page') ->indexBy('id') ->all() ; $indexed = []; foreach ($records as $record) { - $indexed[$record->getRule()->one()->uid] = $record; + $indexed[$record->rule->uid] = $record; } return $indexed; diff --git a/packages/plugin/src/Records/Rules/RuleConditionRecord.php b/packages/plugin/src/Records/Rules/RuleConditionRecord.php index 6c495e4d9f..074d1336e9 100644 --- a/packages/plugin/src/Records/Rules/RuleConditionRecord.php +++ b/packages/plugin/src/Records/Rules/RuleConditionRecord.php @@ -9,14 +9,15 @@ use yii\db\Expression; /** - * @property int $id - * @property int $ruleId - * @property int $fieldId - * @property string $operator - * @property string $value - * @property \DateTime $dateCreated - * @property \DateTime $dateUpdated - * @property string $uid + * @property int $id + * @property int $ruleId + * @property int $fieldId + * @property string $operator + * @property string $value + * @property \DateTime $dateCreated + * @property \DateTime $dateUpdated + * @property string $uid + * @property FormFieldRecord $field */ class RuleConditionRecord extends ActiveRecord { diff --git a/packages/plugin/src/Records/Rules/RuleRecord.php b/packages/plugin/src/Records/Rules/RuleRecord.php index 31053d1e41..6b7c117128 100644 --- a/packages/plugin/src/Records/Rules/RuleRecord.php +++ b/packages/plugin/src/Records/Rules/RuleRecord.php @@ -6,11 +6,12 @@ use yii\db\ActiveQuery; /** - * @property int $id - * @property string $combinator - * @property \DateTime $dateCreated - * @property \DateTime $dateUpdated - * @property string $uid + * @property int $id + * @property string $combinator + * @property \DateTime $dateCreated + * @property \DateTime $dateUpdated + * @property string $uid + * @property RuleConditionRecord[] $conditions */ class RuleRecord extends ActiveRecord { diff --git a/packages/plugin/src/Records/Rules/SubmitFormRuleRecord.php b/packages/plugin/src/Records/Rules/SubmitFormRuleRecord.php index 3bed5c7723..14af8ca7ad 100644 --- a/packages/plugin/src/Records/Rules/SubmitFormRuleRecord.php +++ b/packages/plugin/src/Records/Rules/SubmitFormRuleRecord.php @@ -6,11 +6,13 @@ use yii\db\ActiveQuery; /** - * @property int $id - * @property int $formId - * @property \DateTime $dateCreated - * @property \DateTime $dateUpdated - * @property string $uid + * @property int $id + * @property int $formId + * @property \DateTime $dateCreated + * @property \DateTime $dateUpdated + * @property string $uid + * @property RuleRecord $rule + * @property FormRecord $form */ class SubmitFormRuleRecord extends RuleRecord { @@ -29,7 +31,7 @@ public static function getExistingRule(int $formId): ?self ->innerJoin(RuleRecord::TABLE.' r', '[[fr.id]] = [[r.id]]') ->innerJoin(FormRecord::TABLE.' ff', '[[fr.formId]] = [[ff.id]]') ->where(['ff.id' => $formId]) - ->with('rule', 'conditions', 'form') + ->with('rule.conditions.form', 'form') ->indexBy('id') ->one() ; diff --git a/packages/plugin/src/Services/Integrations/EmailMarketingService.php b/packages/plugin/src/Services/Integrations/EmailMarketingService.php index 459040d805..b7decb35be 100644 --- a/packages/plugin/src/Services/Integrations/EmailMarketingService.php +++ b/packages/plugin/src/Services/Integrations/EmailMarketingService.php @@ -22,19 +22,30 @@ class EmailMarketingService extends IntegrationsService { + private array $cache = []; + public function getListObjectById(?int $id): ?ListObject { - $record = EmailMarketingListRecord::findOne(['id' => $id]); - if (!$record) { + if (!$id) { return null; } - return new ListObject( - $record->resourceId, - $record->name, - $record->memberCount, - $record->id, - ); + if (!\array_key_exists($id, $this->cache)) { + $record = EmailMarketingListRecord::findOne(['id' => $id]); + $object = null; + if ($record) { + $object = new ListObject( + $record->resourceId, + $record->name, + $record->memberCount, + $record->id, + ); + } + + $this->cache[$id] = $object; + } + + return $this->cache[$id]; } /** From 5aec6ff31c5b78847acd88d18953088721309d6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavs=20G=C5=ABtmanis?= Date: Fri, 15 May 2026 18:22:51 +0300 Subject: [PATCH 03/20] chore: add memoization --- .../NotificationTemplateProvider.php | 61 ++++++++++++++----- packages/plugin/src/Freeform.php | 19 ++++++ packages/plugin/src/Library/Cache/Memo.php | 36 +++++++++++ .../src/Tests/Library/Cache/MemoTest.php | 58 ++++++++++++++++++ 4 files changed, 160 insertions(+), 14 deletions(-) create mode 100644 packages/plugin/src/Library/Cache/Memo.php create mode 100644 packages/plugin/src/Tests/Library/Cache/MemoTest.php diff --git a/packages/plugin/src/Bundles/Notifications/Providers/NotificationTemplateProvider.php b/packages/plugin/src/Bundles/Notifications/Providers/NotificationTemplateProvider.php index e2df59addc..615c8aae2f 100644 --- a/packages/plugin/src/Bundles/Notifications/Providers/NotificationTemplateProvider.php +++ b/packages/plugin/src/Bundles/Notifications/Providers/NotificationTemplateProvider.php @@ -2,6 +2,7 @@ namespace Solspace\Freeform\Bundles\Notifications\Providers; +use Solspace\Freeform\Library\Cache\Memo; use Solspace\Freeform\Library\DataObjects\NotificationTemplate; use Solspace\Freeform\Records\NotificationTemplateRecord; use Solspace\Freeform\Services\Notifications\NotificationDatabaseService; @@ -9,10 +10,14 @@ class NotificationTemplateProvider { + private Memo $templateCache; + public function __construct( private NotificationsService $service, private NotificationDatabaseService $databaseService, - ) {} + ) { + $this->templateCache = new Memo(); + } public function getFormTemplates(?int $formId = null): array { @@ -64,7 +69,11 @@ public function getFileTemplates(): array public function getNotificationTemplate(int|string $id): ?NotificationTemplate { if (is_numeric($id)) { - return $this->getDatabaseNotificationTemplate((int) $id); + return $this->templateCache->get( + $id, + static fn () => $this->getDatabaseNotificationTemplate((int) $id), + 'db', + ); } if (\is_string($id)) { @@ -76,21 +85,45 @@ public function getNotificationTemplate(int|string $id): ?NotificationTemplate public function getDatabaseNotificationTemplate(int $id): ?NotificationTemplate { - $record = $this->databaseService->getById($id); - if (!$record) { - return null; - } - - return NotificationTemplate::fromRecord($record); + $service = $this->databaseService; + + return $this->templateCache->get( + $id, + static function () use ($id, $service) { + if (!$id) { + return null; + } + + $record = $service->getById($id); + if (!$record) { + return null; + } + + return NotificationTemplate::fromRecord($record); + }, + 'db', + ); } public function getFileNotificationTemplate(string $filePath): ?NotificationTemplate { - $record = $this->service->getTemplateRecordByFilepath($filePath); - if (!$record) { - return null; - } - - return NotificationTemplate::fromRecord($record); + $service = $this->service; + + return $this->templateCache->get( + $filePath, + static function () use ($filePath, $service) { + if (!$filePath) { + return null; + } + + $record = $service->getTemplateRecordByFilepath($filePath); + if (!$record) { + return null; + } + + return NotificationTemplate::fromRecord($record); + }, + 'files', + ); } } diff --git a/packages/plugin/src/Freeform.php b/packages/plugin/src/Freeform.php index 818b8963c7..4be4ee978f 100644 --- a/packages/plugin/src/Freeform.php +++ b/packages/plugin/src/Freeform.php @@ -25,6 +25,9 @@ use craft\services\Search; use craft\services\Sites; use craft\web\twig\variables\CraftVariable; +use Solspace\Freeform\Attributes\Property\Implementations\Notifications\NotificationTemplates\NotificationTemplateTransformer; +use Solspace\Freeform\Bundles\Notifications\Providers\NotificationTemplateProvider; +use Solspace\Freeform\Bundles\Rules\Types\NotificationRuleProvider; use Solspace\Freeform\controllers\SubmissionsController; use Solspace\Freeform\Elements\Db\SubmissionQuery; use Solspace\Freeform\Elements\SpamSubmission; @@ -68,6 +71,7 @@ use Solspace\Freeform\Library\Helpers\SearchHelper; use Solspace\Freeform\Library\Serialization\FreeformSerializer; use Solspace\Freeform\Models\Settings; +use Solspace\Freeform\Notifications\Types\Conditional\NotificationRuleTransformer; use Solspace\Freeform\Records\FieldTypeGroupRecord; use Solspace\Freeform\Records\StatusRecord; use Solspace\Freeform\Resources\Bundles\BetaBundle; @@ -857,6 +861,21 @@ private function initContainerItems(): void return new FreeformSerializer(); }, ], + 'singletons' => [ + Serializer::class => static fn () => new FreeformSerializer(), + + // Providers with caches + NotificationTemplateProvider::class => NotificationTemplateProvider::class, + NotificationRuleProvider::class => NotificationRuleProvider::class, + + // Transformers + NotificationTemplateTransformer::class => NotificationTemplateTransformer::class, + NotificationRuleTransformer::class => NotificationRuleTransformer::class, + + // Existing singleton services + FieldsService::class => FieldsService::class, + IntegrationsService::class => IntegrationsService::class, + ], ]); } diff --git a/packages/plugin/src/Library/Cache/Memo.php b/packages/plugin/src/Library/Cache/Memo.php new file mode 100644 index 0000000000..8945480fe3 --- /dev/null +++ b/packages/plugin/src/Library/Cache/Memo.php @@ -0,0 +1,36 @@ + */ + private array $cache = []; + + /** + * @return T + */ + public function get(string $key, callable $callable, ?string $prefix = null): mixed + { + if ($prefix) { + $key = trim($prefix, '.').'.'.$key; + } + + if (!\array_key_exists($key, $this->cache)) { + $this->cache[$key] = $callable(); + } + + return $this->cache[$key]; + } + + public function clear(): void + { + $this->cache = []; + } +} diff --git a/packages/plugin/src/Tests/Library/Cache/MemoTest.php b/packages/plugin/src/Tests/Library/Cache/MemoTest.php new file mode 100644 index 0000000000..d121c75129 --- /dev/null +++ b/packages/plugin/src/Tests/Library/Cache/MemoTest.php @@ -0,0 +1,58 @@ +assertSame('value', $memo->get('key', $callback)); + $this->assertSame('value', $memo->get('key', $callback)); + $this->assertSame(1, $calls); + } + + public function testPrefixScopesCachedValues(): void + { + $memo = new Memo(); + $calls = 0; + + $callback = static function () use (&$calls): string { + return 'value-'.++$calls; + }; + + $this->assertSame('value-1', $memo->get('key', $callback, 'first')); + $this->assertSame('value-1', $memo->get('key', $callback, '.first.')); + $this->assertSame('value-2', $memo->get('key', $callback, 'second')); + $this->assertSame(2, $calls); + } + + public function testClearRemovesCachedValues(): void + { + $memo = new Memo(); + $calls = 0; + + $callback = static function () use (&$calls): string { + return 'value-'.++$calls; + }; + + $this->assertSame('value-1', $memo->get('key', $callback)); + + $memo->clear(); + + $this->assertSame('value-2', $memo->get('key', $callback)); + } +} From cdee8fa9b960176ccec2982a294dbb04fd3a2896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavs=20G=C5=ABtmanis?= Date: Mon, 18 May 2026 11:12:21 +0300 Subject: [PATCH 04/20] chore: add memoization --- .../src/Bundles/Fields/FieldProvider.php | 4 +- .../Rules/Types/NotificationRuleProvider.php | 4 +- packages/plugin/src/Freeform.php | 1 - packages/plugin/src/Library/Cache/Memo.php | 19 +- .../src/Records/Form/FormFieldRecord.php | 26 ++- .../Records/Rules/NotificationRuleRecord.php | 2 +- .../src/Services/Form/FieldsService.php | 193 ++++++++---------- .../src/Services/Form/LayoutsService.php | 4 +- 8 files changed, 130 insertions(+), 123 deletions(-) diff --git a/packages/plugin/src/Bundles/Fields/FieldProvider.php b/packages/plugin/src/Bundles/Fields/FieldProvider.php index 20352278fb..7920a7669c 100644 --- a/packages/plugin/src/Bundles/Fields/FieldProvider.php +++ b/packages/plugin/src/Bundles/Fields/FieldProvider.php @@ -16,7 +16,7 @@ public function getFieldByFormAndUid(Form $form, ?string $uid): ?FieldInterface return null; } - return $this->service->getFieldByFormAndUid($form, $uid); + return $this->service->getFieldByUid($uid); } public function getFieldByUid(?string $uid = null, ?Form $form = null): ?FieldInterface @@ -25,6 +25,6 @@ public function getFieldByUid(?string $uid = null, ?Form $form = null): ?FieldIn return null; } - return $this->service->getFieldByUid($uid, $form); + return $this->service->getFieldByUid($uid); } } diff --git a/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php b/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php index e3fb17b42e..6c2e017efb 100644 --- a/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php +++ b/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php @@ -53,7 +53,7 @@ private function getAllNotifications(): array ->from(NotificationRuleRecord::TABLE.' nr') ->innerJoin(RuleRecord::TABLE.' r', '[[nr.id]] = [[r.id]]') ->innerJoin(FormNotificationRecord::TABLE.' fn', '[[nr.notificationId]] = [[fn.id]]') - ->with('rule', 'conditions.field', 'notification') + ->with('rule.conditions.field', 'conditions.field', 'notification') ->all() ; @@ -77,7 +77,7 @@ private function getNotificationsByForm(Form $form): array ->innerJoin(RuleRecord::TABLE.' r', '[[nr.id]] = [[r.id]]') ->innerJoin(FormNotificationRecord::TABLE.' fn', '[[nr.notificationId]] = [[fn.id]]') ->where(['fn.formId' => $formId]) - ->with('rule.conditions.field', 'notification') + ->with('rule.conditions.field', 'conditions.field', 'notification') ->all() ; diff --git a/packages/plugin/src/Freeform.php b/packages/plugin/src/Freeform.php index 4be4ee978f..04e04bc388 100644 --- a/packages/plugin/src/Freeform.php +++ b/packages/plugin/src/Freeform.php @@ -663,7 +663,6 @@ private function initServices(): void 'errorNotifications' => ErrorNotificationsService::class, 'exportProfiles' => ExportProfilesService::class, 'feed' => FreeformFeedService::class, - 'field' => FieldsService::class, 'fields' => FieldsService::class, 'files' => FilesService::class, 'formLayouts' => LayoutsService::class, diff --git a/packages/plugin/src/Library/Cache/Memo.php b/packages/plugin/src/Library/Cache/Memo.php index 8945480fe3..11ec75caaf 100644 --- a/packages/plugin/src/Library/Cache/Memo.php +++ b/packages/plugin/src/Library/Cache/Memo.php @@ -18,9 +18,7 @@ class Memo */ public function get(string $key, callable $callable, ?string $prefix = null): mixed { - if ($prefix) { - $key = trim($prefix, '.').'.'.$key; - } + $key = $this->getCacheKey($key, $prefix); if (!\array_key_exists($key, $this->cache)) { $this->cache[$key] = $callable(); @@ -29,8 +27,23 @@ public function get(string $key, callable $callable, ?string $prefix = null): mi return $this->cache[$key]; } + public function set(string $key, mixed $value, ?string $prefix = null): void + { + $key = $this->getCacheKey($key, $prefix); + $this->cache[$key] = $value; + } + public function clear(): void { $this->cache = []; } + + private function getCacheKey(string $key, ?string $prefix = null): string + { + if ($prefix) { + return trim($prefix, '.').'.'.$key; + } + + return $key; + } } diff --git a/packages/plugin/src/Records/Form/FormFieldRecord.php b/packages/plugin/src/Records/Form/FormFieldRecord.php index 84acc290a0..b72e478070 100644 --- a/packages/plugin/src/Records/Form/FormFieldRecord.php +++ b/packages/plugin/src/Records/Form/FormFieldRecord.php @@ -14,18 +14,21 @@ namespace Solspace\Freeform\Records\Form; use craft\db\ActiveRecord; +use Solspace\Freeform\Records\FormRecord; use yii\db\ActiveQuery; /** - * @property int $id - * @property int $formId - * @property int $rowId - * @property int $order - * @property string $type - * @property string $metadata - * @property \DateTime $dateCreated - * @property \DateTime $dateUpdated - * @property string $uid + * @property int $id + * @property int $formId + * @property int $rowId + * @property int $order + * @property string $type + * @property string $metadata + * @property \DateTime $dateCreated + * @property \DateTime $dateUpdated + * @property string $uid + * @property FormRecord $form + * @property FormRowRecord $row */ class FormFieldRecord extends ActiveRecord { @@ -38,6 +41,11 @@ public static function tableName(): string return self::TABLE; } + public function getForm(): ActiveQuery + { + return $this->hasOne(FormRecord::class, ['id' => 'formId']); + } + public function getRow(): ActiveQuery { return $this->hasOne(FormRowRecord::class, ['id' => 'rowId']); diff --git a/packages/plugin/src/Records/Rules/NotificationRuleRecord.php b/packages/plugin/src/Records/Rules/NotificationRuleRecord.php index 13a12f62f0..7e47454a09 100644 --- a/packages/plugin/src/Records/Rules/NotificationRuleRecord.php +++ b/packages/plugin/src/Records/Rules/NotificationRuleRecord.php @@ -36,7 +36,7 @@ public static function getExistingRules(int $formId): array ->innerJoin(RuleRecord::TABLE.' r', '[[fr.id]] = [[r.id]]') ->innerJoin(FormNotificationRecord::TABLE.' fn', '[[fr.notificationId]] = [[fn.id]]') ->where(['fn.formId' => $formId]) - ->with('rule.conditions.notification', 'notification') + ->with('conditions.field', 'rule.conditions.notification', 'notification') ->indexBy('id') ->all() ; diff --git a/packages/plugin/src/Services/Form/FieldsService.php b/packages/plugin/src/Services/Form/FieldsService.php index 2f29f6976f..e9ad57e1ee 100644 --- a/packages/plugin/src/Services/Form/FieldsService.php +++ b/packages/plugin/src/Services/Form/FieldsService.php @@ -6,150 +6,121 @@ use Solspace\Freeform\Events\Fields\FieldPropertiesEvent; use Solspace\Freeform\Fields\FieldInterface; use Solspace\Freeform\Form\Form; +use Solspace\Freeform\Freeform; +use Solspace\Freeform\Library\Cache\Memo; use Solspace\Freeform\Library\Collections\FieldCollection; use Solspace\Freeform\Library\Helpers\JsonHelper; use Solspace\Freeform\Records\FavoriteFieldRecord; use Solspace\Freeform\Records\Form\FormFieldRecord; use Solspace\Freeform\Services\BaseService; -use Solspace\Freeform\Services\FormsService; use yii\base\Event; class FieldsService extends BaseService { - private array $fieldCache = []; - private array $fieldRowUidCache = []; + private const KEY_ALL = 'all'; + private const PREFIX_BY_UID = 'by-uid'; + private const PREFIX_BY_FORM = 'by-form'; + private const PREFIX_FORMS = 'forms'; - /** @var array */ - private array $fieldsByFormCache = []; - - /** @var FieldInterface[] */ - private array $allFieldCache = []; + private Memo $cache; public function __construct( $config, private PropertyProvider $propertyProvider, - private FormsService $formsService, ) { parent::__construct($config); + + $this->cache = new Memo(); + $this->getAllFields(); } - public function getFieldByUid(string $fieldUid, ?Form $form = null): ?FieldInterface + public function getFieldByUid(string $fieldUid): ?FieldInterface { - $record = FormFieldRecord::findOne(['uid' => $fieldUid]); - if ($record) { - $form ??= $this->formsService->getFormById($record->formId); - - return $this->createField($record, $form); - } - - return null; + return $this->cache->get( + $fieldUid, + static fn () => null, // This should be pre-warmed beforehand + self::PREFIX_BY_UID, + ); } - public function getFieldByFormAndUid(Form $form, string $fieldUid): ?FieldInterface + public function getFieldCollection(Form $form): FieldCollection { - $fields = $this->getFields($form); - - foreach ($fields as $field) { - if ($field->getUid() === $fieldUid) { - return $field; - } - } - - return null; + return new FieldCollection($this->getFields($form)); } /** * @return FieldInterface[] */ - public function getAllFields(): array + public function getFields(Form $form): array { - if (empty($this->allFieldCache)) { - $forms = $this->formsService->getAllForms(); - - /** @var FormFieldRecord[] $records */ - $records = FormFieldRecord::find() - ->with('row') - ->orderBy(['order' => \SORT_ASC]) - ->all() - ; - - foreach ($records as $record) { - $form = $forms[$record->formId] ?? null; - if (!$form) { - continue; - } - - $field = $this->createField($record, $form); - - if ($field) { - $this->allFieldCache[] = $field; - - if (!\array_key_exists($record->formId, $this->fieldsByFormCache)) { - $this->fieldsByFormCache[$record->formId] = []; - } - - $this->fieldsByFormCache[$record->formId][] = $field; - } - } - } + return $this->cache->get( + $form->getId(), + static fn () => null, // This should be pre-warmed beforehand + self::PREFIX_BY_FORM + ); + } - return $this->allFieldCache; + public function getAllFieldCount(): int + { + return FormFieldRecord::find()->count(); } - public function getFieldCollection(Form $form): FieldCollection + public function getFavoriteFieldCount(): int { - return new FieldCollection($this->getFields($form)); + return FavoriteFieldRecord::find()->count(); } /** * @return FieldInterface[] */ - public function getFields(Form $form): array + private function getAllFields(): ?FieldInterface { - $records = FormFieldRecord::find() - ->where(['formId' => $form->getId()]) - ->with('row') - ->orderBy(['order' => \SORT_ASC]) - ->all() - ; - - $fields = []; + return $this->cache->get( + self::KEY_ALL, + function () { + /** @var FormFieldRecord $records */ + $rows = FormFieldRecord::find() + ->select(['field.*', 'row.uid as rowUid']) + ->alias('field') + ->innerJoin('freeform_forms_rows row', '[[row.id]] = [[field.rowId]]') + ->orderBy(['[[field.order]]' => \SORT_ASC]) + ->asArray() + ->all() + ; + + $fields = []; + foreach ($rows as $row) { + $field = $this->createField($row); + if (!$field) { + continue; + } - foreach ($records as $record) { - $fields[] = $this->createField($record, $form); - } + $fields[] = $field; + } - return $fields; + return $fields; + } + ); } - public function createField(FormFieldRecord $record, Form $form): ?FieldInterface + private function createField(array $row): ?FieldInterface { - /** - * Make cache key unique per *Form instance* so fields are not shared across base *Form instance*. - * Now every *Form instance* gets its own set of Field objects, each with the correct $this->form and correct siteId. - */ - $fieldCacheKey = $record->id.':'.spl_object_id($form); - if (isset($this->fieldCache[$fieldCacheKey])) { - return $this->fieldCache[$fieldCacheKey]; - } - - // Row UID cache can stay global per row id (it doesn't contain the form) - $rowCacheKey = $record->rowId; - if (empty($this->fieldRowUidCache[$rowCacheKey])) { // Don't cache null values - $this->fieldRowUidCache[$rowCacheKey] = $record->getRow()->one()?->uid; + $form = $this->getForm($row['formId']); + if (!$form) { + return null; } - $fieldRowUid = $this->fieldRowUidCache[$rowCacheKey]; - $type = $record->type; + $rowUid = $row['rowUid']; + $type = $row['type']; - $metadata = JsonHelper::decode($record->metadata, true); + $metadata = JsonHelper::decode($row['metadata'], true); $properties = array_merge( [ - 'id' => $record->id, - 'uid' => $record->uid, - 'rowId' => $record->rowId, - 'rowUid' => $fieldRowUid, - 'order' => $record->order, + 'id' => $row['id'], + 'uid' => $row['uid'], + 'rowId' => $row['rowId'], + 'rowUid' => $rowUid, + 'order' => $row['order'], ], $metadata, ); @@ -158,15 +129,17 @@ public function createField(FormFieldRecord $record, Form $form): ?FieldInterfac if (!class_exists($type)) { return null; } - } catch (\Exception $exception) { + } catch (\Exception) { return null; } /** @var FieldInterface $field */ $field = new $type($form); - $this->propertyProvider->setObjectProperties($field, $properties, null, $form); - $this->fieldCache[$fieldCacheKey] = $field; + $this->cacheFieldInForm($field, $form); + + $this->cache->set($row['uid'], $field, self::PREFIX_BY_UID); + $this->propertyProvider->setObjectProperties($field, $properties, null, $form); Event::trigger( FieldInterface::class, @@ -177,13 +150,27 @@ public function createField(FormFieldRecord $record, Form $form): ?FieldInterfac return $field; } - public function getAllFieldCount(): int + private function getForm(int $id): ?Form { - return FormFieldRecord::find()->count(); + return $this->cache->get( + $id, + function () use ($id) { + $allForms = $this->cache->get( + 'all', + static fn () => Freeform::getInstance()->forms->getAllForms(), + self::PREFIX_FORMS, + ); + + return $allForms[$id] ?? null; + }, + self::PREFIX_FORMS + ); } - public function getFavoriteFieldCount(): int + private function cacheFieldInForm(FieldInterface $field, Form $form): void { - return FavoriteFieldRecord::find()->count(); + $cache = $this->cache->get($form->getId(), static fn () => [], self::PREFIX_BY_FORM); + $cache[$field->getUid()] = $field; + $this->cache->set($form->getId(), $cache, self::PREFIX_BY_FORM); } } diff --git a/packages/plugin/src/Services/Form/LayoutsService.php b/packages/plugin/src/Services/Form/LayoutsService.php index 75cdf762b6..3ef09efd30 100644 --- a/packages/plugin/src/Services/Form/LayoutsService.php +++ b/packages/plugin/src/Services/Form/LayoutsService.php @@ -13,6 +13,7 @@ use Solspace\Freeform\Form\Layout\Layout; use Solspace\Freeform\Form\Layout\Page; use Solspace\Freeform\Form\Layout\Row; +use Solspace\Freeform\Freeform; use Solspace\Freeform\Library\Helpers\JsonHelper; use Solspace\Freeform\Records\Form\FormLayoutRecord; use Solspace\Freeform\Records\Form\FormPageRecord; @@ -29,7 +30,6 @@ class LayoutsService extends BaseService public function __construct( $config = [], - private ?FieldsService $fieldsService = null, private ?PropertyProvider $propertyProvider = null, private ?TranslationProvider $translationProvider = null, ) { @@ -157,7 +157,7 @@ public function getRows(Form $form): array public function getFields(Form $form): array { - return $this->fieldsService->getFields($form); + return Freeform::getInstance()->fields->getFields($form); } private function attachRows( From cacf384437eef93354a5ecff8e3e2f680f6ab2a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavs=20G=C5=ABtmanis?= Date: Mon, 18 May 2026 12:23:15 +0300 Subject: [PATCH 05/20] chore: remove duplicate field builders --- .../Field/FieldTransformer.php | 6 +- .../src/Bundles/Fields/FieldProvider.php | 156 +++++++++++++++- .../NotificationTemplateProvider.php | 6 +- .../Builder/Form/FormTransformer.php | 6 +- packages/plugin/src/Freeform.php | 9 +- packages/plugin/src/Library/Cache/Memo.php | 12 +- .../src/Services/Form/FieldsService.php | 176 ------------------ .../src/Services/Form/LayoutsService.php | 5 +- .../plugin/src/Services/SummaryService.php | 6 +- .../src/Tests/Library/Cache/MemoTest.php | 14 +- 10 files changed, 187 insertions(+), 209 deletions(-) delete mode 100644 packages/plugin/src/Services/Form/FieldsService.php diff --git a/packages/plugin/src/Attributes/Property/Implementations/Field/FieldTransformer.php b/packages/plugin/src/Attributes/Property/Implementations/Field/FieldTransformer.php index fe67a5af54..30d0ecfe19 100644 --- a/packages/plugin/src/Attributes/Property/Implementations/Field/FieldTransformer.php +++ b/packages/plugin/src/Attributes/Property/Implementations/Field/FieldTransformer.php @@ -13,7 +13,11 @@ public function __construct(private FieldProvider $fieldProvider) {} public function transform($value, ?Form $form = null): ?FieldInterface { - return $this->fieldProvider->getFieldByUid($value, $form); + if (null === $value) { + return null; + } + + return $this->fieldProvider->getFieldByUid($value); } public function reverseTransform($value): ?string diff --git a/packages/plugin/src/Bundles/Fields/FieldProvider.php b/packages/plugin/src/Bundles/Fields/FieldProvider.php index 7920a7669c..41a5ac8fa0 100644 --- a/packages/plugin/src/Bundles/Fields/FieldProvider.php +++ b/packages/plugin/src/Bundles/Fields/FieldProvider.php @@ -2,29 +2,167 @@ namespace Solspace\Freeform\Bundles\Fields; +use Solspace\Freeform\Bundles\Attributes\Property\PropertyProvider; +use Solspace\Freeform\Events\Fields\FieldPropertiesEvent; use Solspace\Freeform\Fields\FieldInterface; use Solspace\Freeform\Form\Form; -use Solspace\Freeform\Services\Form\FieldsService; +use Solspace\Freeform\Freeform; +use Solspace\Freeform\Library\Cache\Memo; +use Solspace\Freeform\Library\Helpers\JsonHelper; +use Solspace\Freeform\Records\FavoriteFieldRecord; +use Solspace\Freeform\Records\Form\FormFieldRecord; +use yii\base\Event; class FieldProvider { - public function __construct(private FieldsService $service) {} + private const KEY_ALL = 'all'; + private const PREFIX_BY_UID = 'by-uid'; + private const PREFIX_BY_FORM = 'by-form'; + private const PREFIX_FORMS = 'forms'; - public function getFieldByFormAndUid(Form $form, ?string $uid): ?FieldInterface + private Memo $cache; + private bool $warming; + + public function __construct(private PropertyProvider $propertyProvider) { - if (null === $uid) { - return null; + $this->cache = new Memo(); + $this->warming = false; + } + + public function getFieldByUid(string $fieldUid): ?FieldInterface + { + if (!$this->warming) { + $this->warmCache(); } - return $this->service->getFieldByUid($uid); + return $this->cache->get($fieldUid, self::PREFIX_BY_UID); + } + + /** + * @return FieldInterface[] + */ + public function getFields(Form $form): array + { + if (!$this->warming) { + $this->warmCache(); + } + + return $this->cache->get($form->getId(), self::PREFIX_BY_FORM, []); + } + + public function getAllFieldCount(): int + { + return FormFieldRecord::find()->count(); + } + + public function getFavoriteFieldCount(): int + { + return FavoriteFieldRecord::find()->count(); } - public function getFieldByUid(?string $uid = null, ?Form $form = null): ?FieldInterface + private function warmCache(): void { - if (null === $uid) { + if ($this->cache->get(self::KEY_ALL)) { + return; + } + + if ($this->warming) { + return; + } + + $this->warming = true; + + try { + /** @var FormFieldRecord $records */ + $rows = FormFieldRecord::find() + ->select(['field.*', 'row.uid as rowUid']) + ->alias('field') + ->innerJoin('freeform_forms_rows row', '[[row.id]] = [[field.rowId]]') + ->orderBy(['[[field.order]]' => \SORT_ASC]) + ->asArray() + ->all() + ; + + $fields = []; + foreach ($rows as $row) { + $fields[] = $this->createField($row); + } + + $fields = array_filter($fields); + $this->cache->set(self::KEY_ALL, $fields); + } finally { + $this->warming = false; + } + } + + private function createField(array $row): ?FieldInterface + { + $form = $this->getForm($row['formId']); + if (!$form) { return null; } - return $this->service->getFieldByUid($uid); + $rowUid = $row['rowUid']; + $type = $row['type']; + + $metadata = JsonHelper::decode($row['metadata'], true); + $properties = array_merge( + [ + 'id' => $row['id'], + 'uid' => $row['uid'], + 'rowId' => $row['rowId'], + 'rowUid' => $rowUid, + 'order' => $row['order'], + ], + $metadata, + ); + + try { + if (!class_exists($type)) { + return null; + } + } catch (\Exception) { + return null; + } + + /** @var FieldInterface $field */ + $field = new $type($form); + + $this->cache->set($row['uid'], $field, self::PREFIX_BY_UID); + $this->propertyProvider->setObjectProperties($field, $properties, null, $form); + + $this->cacheFieldInForm($field, $form); + + Event::trigger( + FieldInterface::class, + FieldInterface::EVENT_AFTER_SET_PROPERTIES, + new FieldPropertiesEvent($field) + ); + + return $field; + } + + private function getForm(int $id): ?Form + { + return $this->cache->getOrSet( + $id, + function () use ($id) { + $allForms = $this->cache->getOrSet( + 'all', + static fn () => Freeform::getInstance()->forms->getAllForms(), + self::PREFIX_FORMS, + ); + + return $allForms[$id] ?? null; + }, + self::PREFIX_FORMS + ); + } + + private function cacheFieldInForm(FieldInterface $field, Form $form): void + { + $cache = $this->cache->get($form->getId(), self::PREFIX_BY_FORM, []); + $cache[$field->getUid()] = $field; + $this->cache->set($form->getId(), $cache, self::PREFIX_BY_FORM); } } diff --git a/packages/plugin/src/Bundles/Notifications/Providers/NotificationTemplateProvider.php b/packages/plugin/src/Bundles/Notifications/Providers/NotificationTemplateProvider.php index 615c8aae2f..7f8d5a196c 100644 --- a/packages/plugin/src/Bundles/Notifications/Providers/NotificationTemplateProvider.php +++ b/packages/plugin/src/Bundles/Notifications/Providers/NotificationTemplateProvider.php @@ -69,7 +69,7 @@ public function getFileTemplates(): array public function getNotificationTemplate(int|string $id): ?NotificationTemplate { if (is_numeric($id)) { - return $this->templateCache->get( + return $this->templateCache->getOrSet( $id, static fn () => $this->getDatabaseNotificationTemplate((int) $id), 'db', @@ -87,7 +87,7 @@ public function getDatabaseNotificationTemplate(int $id): ?NotificationTemplate { $service = $this->databaseService; - return $this->templateCache->get( + return $this->templateCache->getOrSet( $id, static function () use ($id, $service) { if (!$id) { @@ -109,7 +109,7 @@ public function getFileNotificationTemplate(string $filePath): ?NotificationTemp { $service = $this->service; - return $this->templateCache->get( + return $this->templateCache->getOrSet( $filePath, static function () use ($filePath, $service) { if (!$filePath) { diff --git a/packages/plugin/src/Bundles/Transformers/Builder/Form/FormTransformer.php b/packages/plugin/src/Bundles/Transformers/Builder/Form/FormTransformer.php index 20b31ed60a..a3862967f1 100644 --- a/packages/plugin/src/Bundles/Transformers/Builder/Form/FormTransformer.php +++ b/packages/plugin/src/Bundles/Transformers/Builder/Form/FormTransformer.php @@ -3,12 +3,12 @@ namespace Solspace\Freeform\Bundles\Transformers\Builder\Form; use Carbon\Carbon; +use Solspace\Freeform\Bundles\Fields\FieldProvider; use Solspace\Freeform\Events\Forms\GenerateLinksEvent; use Solspace\Freeform\Form\Form; use Solspace\Freeform\Freeform; use Solspace\Freeform\Library\Helpers\PermissionHelper; use Solspace\Freeform\Services\ChartsService; -use Solspace\Freeform\Services\Form\FieldsService; use Solspace\Freeform\Services\Form\LayoutsService; use Solspace\Freeform\Services\Form\TranslationsService; use Solspace\Freeform\Services\FormMonitorService; @@ -20,7 +20,7 @@ class FormTransformer public const EVENT_ATTACH_LINKS = 'attach-links'; public function __construct( - private FieldsService $fieldsService, + private FieldProvider $fieldProvider, private LayoutsService $layoutsService, private TranslationsService $translationsService, private FieldTransformer $fieldTransformer, @@ -90,7 +90,7 @@ public function checkPermissions(Form $form): ?Form public function transform(Form $form): object { - $fields = $this->fieldsService->getFields($form); + $fields = $this->fieldProvider->getFields($form); $transformed = $this->transformBasic($form); $transformed->translations = $this->translationsService->getFormTranslations($form); diff --git a/packages/plugin/src/Freeform.php b/packages/plugin/src/Freeform.php index 04e04bc388..f9ed2b0ece 100644 --- a/packages/plugin/src/Freeform.php +++ b/packages/plugin/src/Freeform.php @@ -26,6 +26,8 @@ use craft\services\Sites; use craft\web\twig\variables\CraftVariable; use Solspace\Freeform\Attributes\Property\Implementations\Notifications\NotificationTemplates\NotificationTemplateTransformer; +use Solspace\Freeform\Bundles\Attributes\Property\PropertyProvider; +use Solspace\Freeform\Bundles\Fields\FieldProvider; use Solspace\Freeform\Bundles\Notifications\Providers\NotificationTemplateProvider; use Solspace\Freeform\Bundles\Rules\Types\NotificationRuleProvider; use Solspace\Freeform\controllers\SubmissionsController; @@ -83,7 +85,6 @@ use Solspace\Freeform\Services\ErrorNotificationsService; use Solspace\Freeform\Services\ExportService; use Solspace\Freeform\Services\FilesService; -use Solspace\Freeform\Services\Form\FieldsService; use Solspace\Freeform\Services\Form\LayoutsService; use Solspace\Freeform\Services\Form\SubmitService; use Solspace\Freeform\Services\Form\TranslationsService; @@ -133,7 +134,6 @@ * @property FilesService $files * @property FormsService $forms * @property FormGroupsService $formGroups - * @property FieldsService $fields * @property LayoutsService $formLayouts * @property MailerService $mailer * @property EmailMarketingService $emailMarketing @@ -663,7 +663,6 @@ private function initServices(): void 'errorNotifications' => ErrorNotificationsService::class, 'exportProfiles' => ExportProfilesService::class, 'feed' => FreeformFeedService::class, - 'fields' => FieldsService::class, 'files' => FilesService::class, 'formLayouts' => LayoutsService::class, 'forms' => FormsService::class, @@ -864,6 +863,8 @@ private function initContainerItems(): void Serializer::class => static fn () => new FreeformSerializer(), // Providers with caches + FieldProvider::class => FieldProvider::class, + PropertyProvider::class => PropertyProvider::class, NotificationTemplateProvider::class => NotificationTemplateProvider::class, NotificationRuleProvider::class => NotificationRuleProvider::class, @@ -872,7 +873,6 @@ private function initContainerItems(): void NotificationRuleTransformer::class => NotificationRuleTransformer::class, // Existing singleton services - FieldsService::class => FieldsService::class, IntegrationsService::class => IntegrationsService::class, ], ]); @@ -882,7 +882,6 @@ private function initBundles(): void { BundleLoader::loadBundles(__DIR__.'/Bundles'); \Craft::$container->setSingleton('craft\services\Sites'); - \Craft::$container->setSingleton('Solspace\Freeform\Services\Form\FieldsService'); \Craft::$container->setSingleton('Solspace\Freeform\Services\Integrations\IntegrationsService'); } } diff --git a/packages/plugin/src/Library/Cache/Memo.php b/packages/plugin/src/Library/Cache/Memo.php index 11ec75caaf..06287b819f 100644 --- a/packages/plugin/src/Library/Cache/Memo.php +++ b/packages/plugin/src/Library/Cache/Memo.php @@ -16,7 +16,17 @@ class Memo /** * @return T */ - public function get(string $key, callable $callable, ?string $prefix = null): mixed + public function get(string $key, ?string $prefix = null, mixed $defaultValue = null): mixed + { + $key = $this->getCacheKey($key, $prefix); + + return $this->cache[$key] ?? $defaultValue; + } + + /** + * @return T + */ + public function getOrSet(string $key, callable $callable, ?string $prefix = null): mixed { $key = $this->getCacheKey($key, $prefix); diff --git a/packages/plugin/src/Services/Form/FieldsService.php b/packages/plugin/src/Services/Form/FieldsService.php deleted file mode 100644 index e9ad57e1ee..0000000000 --- a/packages/plugin/src/Services/Form/FieldsService.php +++ /dev/null @@ -1,176 +0,0 @@ -cache = new Memo(); - $this->getAllFields(); - } - - public function getFieldByUid(string $fieldUid): ?FieldInterface - { - return $this->cache->get( - $fieldUid, - static fn () => null, // This should be pre-warmed beforehand - self::PREFIX_BY_UID, - ); - } - - public function getFieldCollection(Form $form): FieldCollection - { - return new FieldCollection($this->getFields($form)); - } - - /** - * @return FieldInterface[] - */ - public function getFields(Form $form): array - { - return $this->cache->get( - $form->getId(), - static fn () => null, // This should be pre-warmed beforehand - self::PREFIX_BY_FORM - ); - } - - public function getAllFieldCount(): int - { - return FormFieldRecord::find()->count(); - } - - public function getFavoriteFieldCount(): int - { - return FavoriteFieldRecord::find()->count(); - } - - /** - * @return FieldInterface[] - */ - private function getAllFields(): ?FieldInterface - { - return $this->cache->get( - self::KEY_ALL, - function () { - /** @var FormFieldRecord $records */ - $rows = FormFieldRecord::find() - ->select(['field.*', 'row.uid as rowUid']) - ->alias('field') - ->innerJoin('freeform_forms_rows row', '[[row.id]] = [[field.rowId]]') - ->orderBy(['[[field.order]]' => \SORT_ASC]) - ->asArray() - ->all() - ; - - $fields = []; - foreach ($rows as $row) { - $field = $this->createField($row); - if (!$field) { - continue; - } - - $fields[] = $field; - } - - return $fields; - } - ); - } - - private function createField(array $row): ?FieldInterface - { - $form = $this->getForm($row['formId']); - if (!$form) { - return null; - } - - $rowUid = $row['rowUid']; - $type = $row['type']; - - $metadata = JsonHelper::decode($row['metadata'], true); - $properties = array_merge( - [ - 'id' => $row['id'], - 'uid' => $row['uid'], - 'rowId' => $row['rowId'], - 'rowUid' => $rowUid, - 'order' => $row['order'], - ], - $metadata, - ); - - try { - if (!class_exists($type)) { - return null; - } - } catch (\Exception) { - return null; - } - - /** @var FieldInterface $field */ - $field = new $type($form); - - $this->cacheFieldInForm($field, $form); - - $this->cache->set($row['uid'], $field, self::PREFIX_BY_UID); - $this->propertyProvider->setObjectProperties($field, $properties, null, $form); - - Event::trigger( - FieldInterface::class, - FieldInterface::EVENT_AFTER_SET_PROPERTIES, - new FieldPropertiesEvent($field) - ); - - return $field; - } - - private function getForm(int $id): ?Form - { - return $this->cache->get( - $id, - function () use ($id) { - $allForms = $this->cache->get( - 'all', - static fn () => Freeform::getInstance()->forms->getAllForms(), - self::PREFIX_FORMS, - ); - - return $allForms[$id] ?? null; - }, - self::PREFIX_FORMS - ); - } - - private function cacheFieldInForm(FieldInterface $field, Form $form): void - { - $cache = $this->cache->get($form->getId(), static fn () => [], self::PREFIX_BY_FORM); - $cache[$field->getUid()] = $field; - $this->cache->set($form->getId(), $cache, self::PREFIX_BY_FORM); - } -} diff --git a/packages/plugin/src/Services/Form/LayoutsService.php b/packages/plugin/src/Services/Form/LayoutsService.php index 3ef09efd30..d6ff2b87fa 100644 --- a/packages/plugin/src/Services/Form/LayoutsService.php +++ b/packages/plugin/src/Services/Form/LayoutsService.php @@ -4,6 +4,7 @@ use craft\db\Query; use Solspace\Freeform\Bundles\Attributes\Property\PropertyProvider; +use Solspace\Freeform\Bundles\Fields\FieldProvider; use Solspace\Freeform\Bundles\Translations\TranslationProvider; use Solspace\Freeform\Fields\FieldInterface; use Solspace\Freeform\Fields\Implementations\Pro\GroupField; @@ -13,7 +14,6 @@ use Solspace\Freeform\Form\Layout\Layout; use Solspace\Freeform\Form\Layout\Page; use Solspace\Freeform\Form\Layout\Row; -use Solspace\Freeform\Freeform; use Solspace\Freeform\Library\Helpers\JsonHelper; use Solspace\Freeform\Records\Form\FormLayoutRecord; use Solspace\Freeform\Records\Form\FormPageRecord; @@ -32,6 +32,7 @@ public function __construct( $config = [], private ?PropertyProvider $propertyProvider = null, private ?TranslationProvider $translationProvider = null, + private ?FieldProvider $fieldProvider = null, ) { parent::__construct($config); } @@ -157,7 +158,7 @@ public function getRows(Form $form): array public function getFields(Form $form): array { - return Freeform::getInstance()->fields->getFields($form); + return $this->fieldProvider->getFields($form); } private function attachRows( diff --git a/packages/plugin/src/Services/SummaryService.php b/packages/plugin/src/Services/SummaryService.php index 516263be77..0843b70a16 100644 --- a/packages/plugin/src/Services/SummaryService.php +++ b/packages/plugin/src/Services/SummaryService.php @@ -6,6 +6,7 @@ use craft\db\Query; use craft\db\Table; use Solspace\Freeform\Attributes\Integration\Type; +use Solspace\Freeform\Bundles\Fields\FieldProvider; use Solspace\Freeform\Fields\Interfaces\GeneratedOptionsInterface; use Solspace\Freeform\Fields\Properties\Options\OptionsConfigurationInterface; use Solspace\Freeform\FieldTypes\FormFieldType; @@ -47,6 +48,7 @@ public function getSummary(): InstallSummary $craft = \Craft::$app; $settingsService = Freeform::getInstance()->settings; $settingsModel = $settingsService->getSettingsModel(); + $fieldProvider = \Craft::$container->get(FieldProvider::class); $craftFields = \Craft::$app->fields->getAllFields(); @@ -69,8 +71,8 @@ public function getSummary(): InstallSummary $totals = new Totals(); $totals->forms = \count($freeform->forms->getAllFormIds()); $totals->regularForm = \count($freeform->forms->getAllFormIds(Regular::class)); - $totals->fields = $freeform->fields->getAllFieldCount(); - $totals->favoriteFields = $freeform->fields->getFavoriteFieldCount(); + $totals->fields = $fieldProvider->getAllFieldCount(); + $totals->favoriteFields = $fieldProvider->getFavoriteFieldCount(); $totals->submissions = $freeform->submissions->getSubmissionCount(); $totals->spam = $freeform->submissions->getSubmissionCount(null, null, true); $totals->errors = $freeform->logger->getLogReader()->count(); diff --git a/packages/plugin/src/Tests/Library/Cache/MemoTest.php b/packages/plugin/src/Tests/Library/Cache/MemoTest.php index d121c75129..d129df1b9d 100644 --- a/packages/plugin/src/Tests/Library/Cache/MemoTest.php +++ b/packages/plugin/src/Tests/Library/Cache/MemoTest.php @@ -20,8 +20,8 @@ public function testGetCachesValue(): void return 'value'; }; - $this->assertSame('value', $memo->get('key', $callback)); - $this->assertSame('value', $memo->get('key', $callback)); + $this->assertSame('value', $memo->getOrSet('key', $callback)); + $this->assertSame('value', $memo->getOrSet('key', $callback)); $this->assertSame(1, $calls); } @@ -34,9 +34,9 @@ public function testPrefixScopesCachedValues(): void return 'value-'.++$calls; }; - $this->assertSame('value-1', $memo->get('key', $callback, 'first')); - $this->assertSame('value-1', $memo->get('key', $callback, '.first.')); - $this->assertSame('value-2', $memo->get('key', $callback, 'second')); + $this->assertSame('value-1', $memo->getOrSet('key', $callback, 'first')); + $this->assertSame('value-1', $memo->getOrSet('key', $callback, '.first.')); + $this->assertSame('value-2', $memo->getOrSet('key', $callback, 'second')); $this->assertSame(2, $calls); } @@ -49,10 +49,10 @@ public function testClearRemovesCachedValues(): void return 'value-'.++$calls; }; - $this->assertSame('value-1', $memo->get('key', $callback)); + $this->assertSame('value-1', $memo->getOrSet('key', $callback)); $memo->clear(); - $this->assertSame('value-2', $memo->get('key', $callback)); + $this->assertSame('value-2', $memo->getOrSet('key', $callback)); } } From 7d30a0b98c85341b37a4749dddba5f2dd8e594aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavs=20G=C5=ABtmanis?= Date: Mon, 18 May 2026 13:51:54 +0300 Subject: [PATCH 06/20] chore: cache rule calls --- .../plugin/src/Bundles/Rules/RuleProvider.php | 331 +++++++++++------- .../Rules/Types/NotificationRuleProvider.php | 88 ++--- packages/plugin/src/Freeform.php | 2 + .../Records/Rules/NotificationRuleRecord.php | 2 +- 4 files changed, 247 insertions(+), 176 deletions(-) diff --git a/packages/plugin/src/Bundles/Rules/RuleProvider.php b/packages/plugin/src/Bundles/Rules/RuleProvider.php index 59ffbb35cf..39851b4dfb 100644 --- a/packages/plugin/src/Bundles/Rules/RuleProvider.php +++ b/packages/plugin/src/Bundles/Rules/RuleProvider.php @@ -7,6 +7,7 @@ use Solspace\Freeform\Fields\FieldInterface; use Solspace\Freeform\Form\Form; use Solspace\Freeform\Freeform; +use Solspace\Freeform\Library\Cache\Memo; use Solspace\Freeform\Library\Logging\FreeformLogger; use Solspace\Freeform\Library\Rules\Condition; use Solspace\Freeform\Library\Rules\ConditionCollection; @@ -27,12 +28,23 @@ class RuleProvider { - private static array $fieldRuleCache = []; + private const PREFIX_FIELDS = 'fields'; + private const PREFIX_BUTTONS = 'buttons'; + private const PREFIX_PAGES = 'pages'; + private const PREFIX_SUBMIT = 'submit'; + private const PREFIX_NOTIFICATIONS = 'notifications'; + private const PREFIX_NOTIFICATIONS_ARRAY = 'notifications:array'; + private const PREFIX_INTEGRATIONS = 'integrations'; + private const PREFIX_INTEGRATIONS_ARRAY = 'integrations:array'; + + private Memo $cache; public function __construct( private NotificationsProvider $notificationsProvider, private FormIntegrationsProvider $integrationsProvider, - ) {} + ) { + $this->cache = new Memo(); + } public function getFormRules(?Form $form): array { @@ -58,18 +70,20 @@ public function getFormRules(?Form $form): array */ public function getFieldRules(Form $form): array { - if (!isset(self::$fieldRuleCache[$form->getId()])) { - $records = FieldRuleRecord::getExistingRules($form->getId()); - - $rules = []; - foreach ($records as $fieldRule) { - $rules[] = $this->createFieldRuleFromRecord($form, $fieldRule); - } - - self::$fieldRuleCache[$form->getId()] = $rules; - } + return $this->cache->getOrSet( + $form->getId(), + function () use ($form) { + $records = FieldRuleRecord::getExistingRules($form->getId()); + + $rules = []; + foreach ($records as $fieldRule) { + $rules[] = $this->createFieldRuleFromRecord($form, $fieldRule); + } - return self::$fieldRuleCache[$form->getId()]; + return $rules; + }, + self::PREFIX_FIELDS, + ); } public function getFieldRule(Form $form, FieldInterface $field): ?FieldRule @@ -89,32 +103,41 @@ public function getFieldRule(Form $form, FieldInterface $field): ?FieldRule */ public function getButtonRules(Form $form, bool $currentPageOnly = false): array { - $rules = ButtonRuleRecord::getExistingRules($form->getId()); - $currentPage = $form->getCurrentPage(); - - $array = []; - foreach ($rules as $uid => $buttonRule) { - if ($currentPageOnly && $currentPage->getId() !== $buttonRule->pageId) { - continue; - } - - /** @var RuleRecord $rule */ - $ruleRecord = $buttonRule->rule; - $rule = new ButtonRule( - $buttonRule->id, - $uid, - $ruleRecord->combinator, - $this->compileConditions($form, $ruleRecord), - ); - - $rule->setPage($form->getLayout()->getPages()->get($buttonRule->pageId)); - $rule->setButton($buttonRule->button); - $rule->setDisplay($buttonRule->display); - - $array[] = $rule; - } + $key = $form->getId().':'; + $key .= $currentPageOnly ? 'current' : 'all'; + + return $this->cache->getOrSet( + $key, + function () use ($form, $currentPageOnly) { + $rules = ButtonRuleRecord::getExistingRules($form->getId()); + $currentPage = $form->getCurrentPage(); + + $array = []; + foreach ($rules as $uid => $buttonRule) { + if ($currentPageOnly && $currentPage->getId() !== $buttonRule->pageId) { + continue; + } + + /** @var RuleRecord $rule */ + $ruleRecord = $buttonRule->rule; + $rule = new ButtonRule( + $buttonRule->id, + $uid, + $ruleRecord->combinator, + $this->compileConditions($form, $ruleRecord), + ); + + $rule->setPage($form->getLayout()->getPages()->get($buttonRule->pageId)); + $rule->setButton($buttonRule->button); + $rule->setDisplay($buttonRule->display); + + $array[] = $rule; + } - return $array; + return $array; + }, + self::PREFIX_BUTTONS, + ); } public function getButtonRule(Form $form, string $button): ?ButtonRule @@ -134,41 +157,53 @@ public function getButtonRule(Form $form, string $button): ?ButtonRule */ public function getPageRules(Form $form): array { - $rules = PageRuleRecord::getExistingRules($form->getId()); - - $array = []; - foreach ($rules as $uid => $pageRule) { - $ruleRecord = $pageRule->rule; - $rule = new PageRule( - $pageRule->id, - $uid, - $ruleRecord->combinator, - $this->compileConditions($form, $ruleRecord), - ); - - $rule->setPage($form->getLayout()->getPages()->get($pageRule->pageId)); - - $array[] = $rule; - } + return $this->cache->getOrSet( + $form->getId(), + function () use ($form) { + $rules = PageRuleRecord::getExistingRules($form->getId()); + + $array = []; + foreach ($rules as $uid => $pageRule) { + $ruleRecord = $pageRule->rule; + $rule = new PageRule( + $pageRule->id, + $uid, + $ruleRecord->combinator, + $this->compileConditions($form, $ruleRecord), + ); + + $rule->setPage($form->getLayout()->getPages()->get($pageRule->pageId)); + + $array[] = $rule; + } - return $array; + return $array; + }, + self::PREFIX_PAGES, + ); } public function getSubmitFormRule(Form $form): ?SubmitFormRule { - $submitRule = SubmitFormRuleRecord::getExistingRule($form->getId()); - if ($submitRule) { - $ruleRecord = $submitRule->rule; - - return new SubmitFormRule( - $submitRule->id, - $ruleRecord->uid, - $ruleRecord->combinator, - $this->compileConditions($form, $ruleRecord), - ); - } + return $this->cache->getOrSet( + $form->getId(), + function () use ($form) { + $submitRule = SubmitFormRuleRecord::getExistingRule($form->getId()); + if ($submitRule) { + $ruleRecord = $submitRule->rule; + + return new SubmitFormRule( + $submitRule->id, + $ruleRecord->uid, + $ruleRecord->combinator, + $this->compileConditions($form, $ruleRecord), + ); + } - return null; + return null; + }, + self::PREFIX_SUBMIT, + ); } /** @@ -176,43 +211,49 @@ public function getSubmitFormRule(Form $form): ?SubmitFormRule */ public function getNotificationRules(Form $form): array { - $rules = NotificationRuleRecord::getExistingRules($form->getId()); - $notifications = $this->notificationsProvider->getByFormAndClass( - $form, - Conditional::class, - ); + return $this->cache->getOrSet( + $form->getId(), + function () use ($form) { + $rules = NotificationRuleRecord::getExistingRules($form->getId()); + $notifications = $this->notificationsProvider->getByFormAndClass( + $form, + Conditional::class, + ); - $array = []; - foreach ($rules as $uid => $notificationRule) { - $ruleRecord = $notificationRule->rule; - $rule = new NotificationRule( - $notificationRule->id, - $uid, - $ruleRecord->combinator, - $this->compileConditions($form, $ruleRecord), - ); + $array = []; + foreach ($rules as $uid => $notificationRule) { + $ruleRecord = $notificationRule->rule; + $rule = new NotificationRule( + $notificationRule->id, + $uid, + $ruleRecord->combinator, + $this->compileConditions($form, $ruleRecord), + ); - $rule->setSend($notificationRule->send); + $rule->setSend($notificationRule->send); - $notificationInstance = null; - foreach ($notifications as $notification) { - if ($notification->getId() === $notificationRule->notificationId) { - $notificationInstance = $notification; + $notificationInstance = null; + foreach ($notifications as $notification) { + if ($notification->getId() === $notificationRule->notificationId) { + $notificationInstance = $notification; - break; - } - } + break; + } + } - if (!$notificationInstance) { - continue; - } + if (!$notificationInstance) { + continue; + } - $rule->setNotification($notificationInstance); + $rule->setNotification($notificationInstance); - $array[] = $rule; - } + $array[] = $rule; + } - return $array; + return $array; + }, + self::PREFIX_NOTIFICATIONS, + ); } /** @@ -220,58 +261,76 @@ public function getNotificationRules(Form $form): array */ public function getIntegrationRules(Form $form): array { - $rules = IntegrationRuleRecord::getExistingRules($form->getId()); - $integrations = $this->integrationsProvider->getForForm($form); - - $array = []; - foreach ($rules as $uid => $integrationRule) { - $ruleRecord = $integrationRule->rule; - $rule = new IntegrationRule( - $integrationRule->id, - $uid, - $ruleRecord->combinator, - $this->compileConditions($form, $ruleRecord), - ); - - $rule->setPush($integrationRule->push); - - $integrationInstance = null; - foreach ($integrations as $integration) { - if ($integration->getInstanceId() === $integrationRule->integrationId) { - $integrationInstance = $integration; - - break; + return $this->cache->getOrSet( + $form->getId(), + function () use ($form) { + $rules = IntegrationRuleRecord::getExistingRules($form->getId()); + $integrations = $this->integrationsProvider->getForForm($form); + + $array = []; + foreach ($rules as $uid => $integrationRule) { + $ruleRecord = $integrationRule->rule; + $rule = new IntegrationRule( + $integrationRule->id, + $uid, + $ruleRecord->combinator, + $this->compileConditions($form, $ruleRecord), + ); + + $rule->setPush($integrationRule->push); + + $integrationInstance = null; + foreach ($integrations as $integration) { + if ($integration->getInstanceId() === $integrationRule->integrationId) { + $integrationInstance = $integration; + + break; + } + } + + if (!$integrationInstance) { + continue; + } + + $rule->setIntegration($integrationInstance); + + $array[] = $rule; } - } - - if (!$integrationInstance) { - continue; - } - $rule->setIntegration($integrationInstance); - - $array[] = $rule; - } - - return $array; + return $array; + }, + self::PREFIX_INTEGRATIONS, + ); } public function getFormNotificationRules(?Form $form): array { - if (!$form) { - return []; - } + return $this->cache->getOrSet( + $form->getId(), + function () use ($form) { + if (!$form) { + return []; + } - return $this->getNotificationRuleArray($form); + return $this->getNotificationRuleArray($form); + }, + self::PREFIX_NOTIFICATIONS_ARRAY, + ); } public function getFormIntegrationRules(?Form $form): array { - if (!$form) { - return []; - } + return $this->cache->getOrSet( + $form->getId(), + function () use ($form) { + if (!$form) { + return []; + } - return $this->getIntegrationRuleArray($form); + return $this->getIntegrationRuleArray($form); + }, + self::PREFIX_INTEGRATIONS_ARRAY, + ); } private function createFieldRuleFromRecord(Form $form, FieldRuleRecord $record): FieldRule diff --git a/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php b/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php index 6c2e017efb..c1fc8924e7 100644 --- a/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php +++ b/packages/plugin/src/Bundles/Rules/Types/NotificationRuleProvider.php @@ -4,6 +4,7 @@ use Solspace\Freeform\Attributes\Property\Implementations\Field\FieldTransformer; use Solspace\Freeform\Form\Form; +use Solspace\Freeform\Library\Cache\Memo; use Solspace\Freeform\Library\Rules\Condition; use Solspace\Freeform\Library\Rules\ConditionCollection; use Solspace\Freeform\Library\Rules\Types\NotificationRule; @@ -13,12 +14,14 @@ class NotificationRuleProvider { - private ?array $cache = null; + private Memo $cache; private array $formCache = []; public function __construct( private FieldTransformer $fieldTransformer - ) {} + ) { + $this->cache = new Memo(); + } public function getByForm(Form $form): array { @@ -47,47 +50,54 @@ public function getByUid(string $uid, ?Form $form = null): ?NotificationRule private function getAllNotifications(): array { - if (null === $this->cache) { - $items = NotificationRuleRecord::find() - ->select(['nr.*']) - ->from(NotificationRuleRecord::TABLE.' nr') - ->innerJoin(RuleRecord::TABLE.' r', '[[nr.id]] = [[r.id]]') - ->innerJoin(FormNotificationRecord::TABLE.' fn', '[[nr.notificationId]] = [[fn.id]]') - ->with('rule.conditions.field', 'conditions.field', 'notification') - ->all() - ; - - $this->cache = []; - foreach ($items as $item) { - $this->cache[$item->rule->uid] = $item; - } - } - - return $this->cache; + return $this->cache->getOrSet( + 'all', + static function () { + $items = NotificationRuleRecord::find() + ->select(['nr.*']) + ->from(NotificationRuleRecord::TABLE.' nr') + ->innerJoin(RuleRecord::TABLE.' r', '[[nr.id]] = [[r.id]]') + ->innerJoin(FormNotificationRecord::TABLE.' fn', '[[nr.notificationId]] = [[fn.id]]') + ->with('conditions.field', 'notification') + ->all() + ; + + $data = []; + foreach ($items as $item) { + $data[$item->rule->uid] = $item; + } + + return $data; + }, + ); } private function getNotificationsByForm(Form $form): array { - $formId = $form->getId(); - if (!isset($this->formCache[$formId])) { - /** @var NotificationRuleRecord[] $items */ - $items = NotificationRuleRecord::find() - ->select(['nr.*']) - ->from(NotificationRuleRecord::TABLE.' nr') - ->innerJoin(RuleRecord::TABLE.' r', '[[nr.id]] = [[r.id]]') - ->innerJoin(FormNotificationRecord::TABLE.' fn', '[[nr.notificationId]] = [[fn.id]]') - ->where(['fn.formId' => $formId]) - ->with('rule.conditions.field', 'conditions.field', 'notification') - ->all() - ; - - $this->formCache[$formId] = []; - foreach ($items as $item) { - $this->formCache[$formId][$item->rule->uid] = $item; - } - } - - return $this->formCache[$formId]; + return $this->cache->getOrSet( + $form->getId(), + static function () use ($form) { + $formId = $form->getId(); + + /** @var NotificationRuleRecord[] $items */ + $items = NotificationRuleRecord::find() + ->select(['nr.*']) + ->from(NotificationRuleRecord::TABLE.' nr') + ->innerJoin(RuleRecord::TABLE.' r', '[[nr.id]] = [[r.id]]') + ->innerJoin(FormNotificationRecord::TABLE.' fn', '[[nr.notificationId]] = [[fn.id]]') + ->where(['fn.formId' => $formId]) + ->with('conditions.field', 'notification') + ->all() + ; + + $data = []; + foreach ($items as $item) { + $data[$item->rule->uid] = $item; + } + + return $data; + }, + ); } private function createRuleFromRecord(NotificationRuleRecord $record, ?Form $form = null): NotificationRule diff --git a/packages/plugin/src/Freeform.php b/packages/plugin/src/Freeform.php index f9ed2b0ece..73f2f034f4 100644 --- a/packages/plugin/src/Freeform.php +++ b/packages/plugin/src/Freeform.php @@ -29,6 +29,7 @@ use Solspace\Freeform\Bundles\Attributes\Property\PropertyProvider; use Solspace\Freeform\Bundles\Fields\FieldProvider; use Solspace\Freeform\Bundles\Notifications\Providers\NotificationTemplateProvider; +use Solspace\Freeform\Bundles\Rules\RuleProvider; use Solspace\Freeform\Bundles\Rules\Types\NotificationRuleProvider; use Solspace\Freeform\controllers\SubmissionsController; use Solspace\Freeform\Elements\Db\SubmissionQuery; @@ -865,6 +866,7 @@ private function initContainerItems(): void // Providers with caches FieldProvider::class => FieldProvider::class, PropertyProvider::class => PropertyProvider::class, + RuleProvider::class => RuleProvider::class, NotificationTemplateProvider::class => NotificationTemplateProvider::class, NotificationRuleProvider::class => NotificationRuleProvider::class, diff --git a/packages/plugin/src/Records/Rules/NotificationRuleRecord.php b/packages/plugin/src/Records/Rules/NotificationRuleRecord.php index 7e47454a09..562e4630cd 100644 --- a/packages/plugin/src/Records/Rules/NotificationRuleRecord.php +++ b/packages/plugin/src/Records/Rules/NotificationRuleRecord.php @@ -36,7 +36,7 @@ public static function getExistingRules(int $formId): array ->innerJoin(RuleRecord::TABLE.' r', '[[fr.id]] = [[r.id]]') ->innerJoin(FormNotificationRecord::TABLE.' fn', '[[fr.notificationId]] = [[fn.id]]') ->where(['fn.formId' => $formId]) - ->with('conditions.field', 'rule.conditions.notification', 'notification') + ->with('rule.conditions.field', 'rule.conditions.notification', 'notification') ->indexBy('id') ->all() ; From 3bc09a5fdf4318f2f1fbd88afb773db20baf5e43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavs=20G=C5=ABtmanis?= Date: Mon, 18 May 2026 18:00:43 +0300 Subject: [PATCH 07/20] feat: Introduce Memo cache for IntegrationsService refactor: Use Memo cache in `getAllIntegrationTypes` refactor: Use Memo cache in `getAllServiceProviders` refactor: Use Memo cache for integration lookup methods --- .../Integrations/IntegrationsService.php | 166 +++++++++++------- 1 file changed, 99 insertions(+), 67 deletions(-) diff --git a/packages/plugin/src/Services/Integrations/IntegrationsService.php b/packages/plugin/src/Services/Integrations/IntegrationsService.php index b291b091a1..7684f2fc5a 100644 --- a/packages/plugin/src/Services/Integrations/IntegrationsService.php +++ b/packages/plugin/src/Services/Integrations/IntegrationsService.php @@ -31,6 +31,7 @@ use Solspace\Freeform\Freeform; use Solspace\Freeform\Integrations\AI\SolspaceAI\BaseSolspaceAIIntegration; use Solspace\Freeform\Jobs\FormJobInterface; +use Solspace\Freeform\Library\Cache\Memo; use Solspace\Freeform\Library\Exceptions\Integrations\IntegrationException; use Solspace\Freeform\Library\Exceptions\Integrations\IntegrationNotFoundException; use Solspace\Freeform\Library\Helpers\HashHelper; @@ -53,9 +54,11 @@ class IntegrationsService extends BaseService public const EVENT_BEFORE_DELETE = 'before-delete'; public const EVENT_AFTER_DELETE = 'after-delete'; - private array $cacheByUid = []; - private array $cacheById = []; - private array $cacheByHandle = []; + private const PREFIX_ID = 'id'; + private const PREFIX_UID = 'uid'; + private const PREFIX_HANDLE = 'handle'; + + private Memo $cache; private ?array $installedIntegrationClassMap = null; private ?array $enabledIntegrationTypeMap = null; @@ -69,6 +72,8 @@ public function __construct( private IntegrationRuleValidator $integrationRuleValidator, ) { parent::__construct($config); + + $this->cache = new Memo(); } public function isIntegrationInstalled(string $integrationClass): bool @@ -106,17 +111,18 @@ public function isIntegrationTypeEnabled(string $type): bool */ public function getAllIntegrationTypes(): array { - static $types; + return $this->cache->getOrSet( + 'types', + static function () { + $event = new RegisterIntegrationTypesEvent(); + Event::trigger(self::class, self::EVENT_REGISTER_INTEGRATION_TYPES, $event); - if (null === $types) { - $event = new RegisterIntegrationTypesEvent(); - Event::trigger(self::class, self::EVENT_REGISTER_INTEGRATION_TYPES, $event); + $types = $event->getTypes(); + usort($types, static fn (Type $a, Type $b) => strcmp($a->name, $b->name)); - $types = $event->getTypes(); - usort($types, static fn (Type $a, Type $b) => strcmp($a->name, $b->name)); - } - - return $types; + return $types; + } + ); } /** @@ -124,20 +130,24 @@ public function getAllIntegrationTypes(): array */ public function getAllServiceProviders(?string $isOfType = null): array { - static $providers; - if (null === $providers) { - $types = $this->getIntegrationsService()->getAllIntegrationTypes(); + $providers = $this->cache->getOrSet( + 'providers', + function () { + $types = $this->getIntegrationsService()->getAllIntegrationTypes(); - $providers = []; - foreach ($types as $type) { - if ($isOfType && $type->type !== $isOfType) { - continue; - } + $providers = []; + foreach ($types as $type) { + $type->properties = $this->propertyProvider->getEditableProperties($type->class); - $type->properties = $this->propertyProvider->getEditableProperties($type->class); + $providers[$type->class] = $type; + } - $providers[$type->class] = $type; + return $providers; } + ); + + if ($isOfType) { + return array_filter($providers, static fn (Type $type) => $type->type === $isOfType); } return $providers; @@ -149,71 +159,95 @@ public function getAllServiceProviders(?string $isOfType = null): array public function getAllIntegrations(?string $type = null): array { $this->getAllIntegrationTypes(); - $results = $this->getQuery($type)->all(); - $models = []; - foreach ($results as $result) { - $model = $this->createIntegrationModel($result); + $integrations = $this->cache->getOrSet( + 'all', + function () { + $results = $this->getQuery()->all(); - try { - $model->getIntegrationObject(); - $models[] = $model; - } catch (IntegrationNotFoundException $e) { + $models = []; + foreach ($results as $result) { + $model = $this->createIntegrationModel($result); + + try { + $model->getIntegrationObject(); + $models[] = $model; + } catch (IntegrationNotFoundException $e) { + } + } + + return $models; } + ); + + if ($type) { + return array_filter($integrations, static fn (IntegrationModel $model) => $model->type === $type); } - return $models; + return $integrations; } public function getById(int $id): ?IntegrationModel { - if (!empty($this->cacheById[$id])) { - return $this->cacheById[$id]; - } + return $this->cache->getOrSet( + $id, + function () use ($id) { + $integrations = $this->getAllIntegrations(); - $result = $this->getQuery()->where(['id' => $id])->one(); - if (!$result) { - return null; - } + foreach ($integrations as $integration) { + if ($integration->id === $id) { + $this->cacheIntegrationModel($integration); - $model = $this->createIntegrationModel($result); - $this->cacheIntegrationModel($model); + return $integration; + } + } - return $model; + return null; + }, + self::PREFIX_ID, + ); } public function getByUid(string $uid): ?IntegrationModel { - if (!empty($this->cacheByUid[$uid])) { - return $this->cacheByUid[$uid]; - } + return $this->cache->getOrSet( + $uid, + function () use ($uid) { + $integrations = $this->getAllIntegrations(); - $result = $this->getQuery()->where(['uid' => $uid])->one(); - if (!$result) { - return null; - } + foreach ($integrations as $integration) { + if ($integration->uid === $uid) { + $this->cacheIntegrationModel($integration); - $model = $this->createIntegrationModel($result); - $this->cacheIntegrationModel($model); + return $integration; + } + } - return $model; + return null; + }, + self::PREFIX_UID, + ); } public function getByHandle(string $handle): ?IntegrationModel { - if (!empty($this->cacheByHandle[$handle])) { - return $this->cacheByHandle[$handle]; - } + return $this->cache->getOrSet( + $handle, + function () use ($handle) { + $integrations = $this->getAllIntegrations(); - $result = $this->getQuery()->where(['handle' => $handle])->one(); - if (!$result) { - return null; - } + foreach ($integrations as $integration) { + if ($integration->handle === $handle) { + $this->cacheIntegrationModel($integration); - $model = $this->createIntegrationModel($result); - $this->cacheIntegrationModel($model); + return $integration; + } + } - return $model; + return null; + }, + self::PREFIX_HANDLE, + ); } public function getIntegrationObjectById(int $id): IntegrationInterface @@ -727,16 +761,14 @@ protected function createIntegrationModel(array $data): IntegrationModel private function cacheIntegrationModel(IntegrationModel $model): void { - $this->cacheById[$model->id] = $model; - $this->cacheByUid[$model->uid] = $model; - $this->cacheByHandle[$model->handle] = $model; + $this->cache->set($model->id, $model, self::PREFIX_ID); + $this->cache->set($model->uid, $model, self::PREFIX_UID); + $this->cache->set($model->handle, $model, self::PREFIX_HANDLE); } private function clearIntegrationModelCache(): void { - $this->cacheById = []; - $this->cacheByUid = []; - $this->cacheByHandle = []; + $this->cache->clear(); } private function getCacheKey(?Form $form, ?string $type, ?bool $enabled, ?callable $filter = null): string From 488f862e7ebf10035371590a034228d5a87a89aa Mon Sep 17 00:00:00 2001 From: kjmartens Date: Mon, 18 May 2026 11:40:23 -0500 Subject: [PATCH 08/20] chore: updating scripts --- .../js/client/assets/{index-bvq09-vM.js => index-RUU7GNFX.js} | 2 +- packages/plugin/src/Resources/js/client/manifest.json | 2 +- .../Resources/js/scripts/front-end/payments/stripe/elements.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename packages/plugin/src/Resources/js/client/assets/{index-bvq09-vM.js => index-RUU7GNFX.js} (99%) diff --git a/packages/plugin/src/Resources/js/client/assets/index-bvq09-vM.js b/packages/plugin/src/Resources/js/client/assets/index-RUU7GNFX.js similarity index 99% rename from packages/plugin/src/Resources/js/client/assets/index-bvq09-vM.js rename to packages/plugin/src/Resources/js/client/assets/index-RUU7GNFX.js index 0bfa8536f5..516bcaca99 100644 --- a/packages/plugin/src/Resources/js/client/assets/index-bvq09-vM.js +++ b/packages/plugin/src/Resources/js/client/assets/index-RUU7GNFX.js @@ -6446,7 +6446,7 @@ function print() { __p += __j.call(arguments, '') } color: ${V.gray300}; font-size: 18px; text-align: left; -`,Tae=({layout:e})=>{let t=Ib(t=>YQ.inLayout(t,e?.uid)),{dropRef:n,placeholderAnimation:r}=vie(e);return(0,K.jsxs)(p6,{ref:e=>{n(e)},className:`field-layout`,children:[!t.length&&(0,K.jsx)(wae,{children:F(`Drag or click fields to add them to the layout`)}),t.map(e=>(0,K.jsx)(f6,{row:e},e.uid)),(0,K.jsx)(Cae,{style:r,children:F(`+ insert row`)})]})},Eae=e=>(0,K.jsx)(rO,{viewBox:`0 0 640 640`,...e,children:(0,K.jsx)(`path`,{d:`M320 180C291.3 180 268 156.7 268 128C268 99.3 291.3 76 320 76C348.7 76 372 99.3 372 128C372 156.7 348.7 180 320 180zM320 480C337.7 480 352 494.3 352 512C352 529.7 337.7 544 320 544C302.3 544 288 529.7 288 512C288 494.3 302.3 480 320 480zM512 352C494.3 352 480 337.7 480 320C480 302.3 494.3 288 512 288C529.7 288 544 302.3 544 320C544 337.7 529.7 352 512 352zM96 320C96 302.3 110.3 288 128 288C145.7 288 160 302.3 160 320C160 337.7 145.7 352 128 352C110.3 352 96 337.7 96 320zM495.4 223.8C473.5 245.7 438.1 245.7 416.2 223.8C394.3 201.9 394.3 166.5 416.2 144.6C438.1 122.7 473.5 122.7 495.4 144.6C517.3 166.5 517.3 201.9 495.4 223.8zM161.6 478.4C149.1 465.9 149.1 445.6 161.6 433.1C174.1 420.6 194.4 420.6 206.9 433.1C219.4 445.6 219.4 465.9 206.9 478.4C194.4 490.9 174.1 490.9 161.6 478.4zM433.1 478.4C420.6 465.9 420.6 445.6 433.1 433.1C445.6 420.6 465.9 420.6 478.4 433.1C490.9 445.6 490.9 465.9 478.4 478.4C465.9 490.9 445.6 490.9 433.1 478.4zM150.3 150.3C169.1 131.5 199.4 131.5 218.2 150.3C237 169.1 237 199.4 218.2 218.2C199.4 237 169.1 237 150.3 218.2C131.5 199.4 131.5 169.1 150.3 150.3z`})}),m6=e=>{let t=(e.buttons?.layout||`save back|submit`).split(` `),n=[];return t.forEach(t=>{let r=t.split(`|`),i=[];r.forEach(t=>{if(!(t===`back`&&e.order===0))switch(t){case`submit`:i.push({handle:`submit`,label:e.buttons.submitLabel,enabled:!0,assetId:e.buttons.submitIcon?.[0]||void 0,iconPosition:e.buttons.submitIconPosition||`left`});break;case`back`:e.buttons.back&&i.push({handle:`back`,label:e.buttons.backLabel,enabled:e.buttons.back,assetId:e.buttons.backIcon?.[0]||void 0,iconPosition:e.buttons.backIconPosition||`left`});break;case`save`:e.buttons.save&&i.push({handle:`save`,label:e.buttons.saveLabel,enabled:e.buttons.save,assetId:e.buttons.saveIcon?.[0]||void 0,iconPosition:e.buttons.saveIconPosition||`left`});break;default:return}}),n.push(i)}),n},h6=U.div` +`,Tae=({layout:e})=>{let t=Ib(t=>YQ.inLayout(t,e?.uid)),{dropRef:n,placeholderAnimation:r}=vie(e);return(0,K.jsxs)(p6,{ref:e=>{n(e)},className:`field-layout`,children:[!t.length&&(0,K.jsx)(wae,{children:F(`Drag or click fields to add them to the layout`)}),t.map(e=>(0,K.jsx)(f6,{row:e},e.uid)),(0,K.jsx)(Cae,{style:r,children:F(`+ insert row`)})]})},Eae=e=>(0,K.jsx)(rO,{viewBox:`0 0 640 640`,...e,children:(0,K.jsx)(`path`,{d:`M320 180C291.3 180 268 156.7 268 128C268 99.3 291.3 76 320 76C348.7 76 372 99.3 372 128C372 156.7 348.7 180 320 180zM320 480C337.7 480 352 494.3 352 512C352 529.7 337.7 544 320 544C302.3 544 288 529.7 288 512C288 494.3 302.3 480 320 480zM512 352C494.3 352 480 337.7 480 320C480 302.3 494.3 288 512 288C529.7 288 544 302.3 544 320C544 337.7 529.7 352 512 352zM96 320C96 302.3 110.3 288 128 288C145.7 288 160 302.3 160 320C160 337.7 145.7 352 128 352C110.3 352 96 337.7 96 320zM495.4 223.8C473.5 245.7 438.1 245.7 416.2 223.8C394.3 201.9 394.3 166.5 416.2 144.6C438.1 122.7 473.5 122.7 495.4 144.6C517.3 166.5 517.3 201.9 495.4 223.8zM161.6 478.4C149.1 465.9 149.1 445.6 161.6 433.1C174.1 420.6 194.4 420.6 206.9 433.1C219.4 445.6 219.4 465.9 206.9 478.4C194.4 490.9 174.1 490.9 161.6 478.4zM433.1 478.4C420.6 465.9 420.6 445.6 433.1 433.1C445.6 420.6 465.9 420.6 478.4 433.1C490.9 445.6 490.9 465.9 478.4 478.4C465.9 490.9 445.6 490.9 433.1 478.4zM150.3 150.3C169.1 131.5 199.4 131.5 218.2 150.3C237 169.1 237 199.4 218.2 218.2C199.4 237 169.1 237 150.3 218.2C131.5 199.4 131.5 169.1 150.3 150.3z`})}),m6=e=>{let t=(e.buttons?.layout||`save back|submit`).split(` `),n=[];return t.forEach(t=>{let r=t.split(`|`),i=[];r.forEach(t=>{if(!(t===`back`&&e.order===0))switch(t){case`submit`:i.push({handle:`submit`,label:e.buttons?.submitLabel||`Submit`,enabled:!0,assetId:e.buttons?.submitIcon?.[0]||void 0,iconPosition:e.buttons?.submitIconPosition||`left`});break;case`back`:e.buttons?.back&&i.push({handle:`back`,label:e.buttons?.backLabel||`Back`,enabled:e.buttons?.back||!1,assetId:e.buttons?.backIcon?.[0]||void 0,iconPosition:e.buttons?.backIconPosition||`left`});break;case`save`:e.buttons?.save&&i.push({handle:`save`,label:e.buttons?.saveLabel||`Save`,enabled:e.buttons?.save||!1,assetId:e.buttons?.saveIcon?.[0]||void 0,iconPosition:e.buttons?.saveIconPosition||`left`});break;default:return}}),n.push(i)}),n},h6=U.div` display: flex; justify-content: space-between; diff --git a/packages/plugin/src/Resources/js/client/manifest.json b/packages/plugin/src/Resources/js/client/manifest.json index 0a72b3bd1e..c84f966913 100644 --- a/packages/plugin/src/Resources/js/client/manifest.json +++ b/packages/plugin/src/Resources/js/client/manifest.json @@ -58,7 +58,7 @@ ] }, "src/index.tsx": { - "file": "assets/index-bvq09-vM.js", + "file": "assets/index-RUU7GNFX.js", "name": "index", "src": "src/index.tsx", "isEntry": true, diff --git a/packages/plugin/src/Resources/js/scripts/front-end/payments/stripe/elements.js b/packages/plugin/src/Resources/js/scripts/front-end/payments/stripe/elements.js index 78a7eeb0c4..e3bb68398e 100644 --- a/packages/plugin/src/Resources/js/scripts/front-end/payments/stripe/elements.js +++ b/packages/plugin/src/Resources/js/scripts/front-end/payments/stripe/elements.js @@ -1,4 +1,4 @@ -(()=>{var Re=Object.create;var Y=Object.defineProperty;var Me=Object.getOwnPropertyDescriptor;var Fe=Object.getOwnPropertyNames;var He=Object.getPrototypeOf,Pe=Object.prototype.hasOwnProperty;var Z=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Ce=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Fe(e))!Pe.call(t,n)&&n!==r&&Y(t,n,{get:()=>e[n],enumerable:!(o=Me(e,n))||o.enumerable});return t};var Ae=(t,e,r)=>(r=t!=null?Re(He(t)):{},Ce(e||!t||!t.__esModule?Y(r,"default",{value:t,enumerable:!0}):r,t));var ce=Z(G=>{"use strict";Object.defineProperty(G,"__esModule",{value:!0});function H(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?H=function(e){return typeof e}:H=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},H(t)}var se="clover",qe=function(e){return e===3?"v3":e},ae="https://js.stripe.com",ke="".concat(ae,"/").concat(se,"/stripe.js"),De=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/,Ne=/^https:\/\/js\.stripe\.com\/(v3|[a-z]+)\/stripe\.js(\?.*)?$/,re="loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used",Ue=function(e){return De.test(e)||Ne.test(e)},_e=function(){for(var e=document.querySelectorAll('script[src^="'.concat(ae,'"]')),r=0;r element.");return n.appendChild(o),o},Xe=function(e,r){!e||!e._registerWrapper||e._registerWrapper({name:"stripe-js",version:"8.11.0",startTime:r})},F=null,C=null,A=null,Ge=function(e){return function(r){e(new Error("Failed to load Stripe.js",{cause:r}))}},We=function(e,r){return function(){window.Stripe?e(window.Stripe):r(new Error("Stripe.js not available"))}},Be=function(e){return F!==null?F:(F=new Promise(function(r,o){if(typeof window>"u"||typeof document>"u"){r(null);return}if(window.Stripe&&e&&console.warn(re),window.Stripe){r(window.Stripe);return}try{var n=_e();if(n&&e)console.warn(re);else if(!n)n=ne(e);else if(n&&A!==null&&C!==null){var a;n.removeEventListener("load",A),n.removeEventListener("error",C),(a=n.parentNode)===null||a===void 0||a.removeChild(n),n=ne(e)}A=We(r,o),C=Ge(o),n.addEventListener("load",A),n.addEventListener("error",C)}catch(s){o(s);return}}),F.catch(function(r){return F=null,Promise.reject(r)}))},Je=function(e,r,o){if(e===null)return null;var n=r[0];if(typeof n!="string")throw new Error("Expected publishable key to be of type string, got type ".concat(H(n)," instead."));var a=n.match(/^pk_test/),s=qe(e.version),l=se;a&&s!==l&&console.warn("Stripe.js@".concat(s," was loaded on the page, but @stripe/stripe-js@").concat("8.11.0"," expected Stripe.js@").concat(l,". This may result in unexpected behavior. For more information, see https://docs.stripe.com/sdks/stripejs-versioning"));var i=e.apply(void 0,r);return Xe(i,o),i},oe=function(e){var r=`invalid load parameters; expected object of shape +(()=>{var Re=Object.create;var Y=Object.defineProperty;var Me=Object.getOwnPropertyDescriptor;var Fe=Object.getOwnPropertyNames;var He=Object.getPrototypeOf,Pe=Object.prototype.hasOwnProperty;var Z=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Ce=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Fe(e))!Pe.call(t,n)&&n!==r&&Y(t,n,{get:()=>e[n],enumerable:!(o=Me(e,n))||o.enumerable});return t};var Ae=(t,e,r)=>(r=t!=null?Re(He(t)):{},Ce(e||!t||!t.__esModule?Y(r,"default",{value:t,enumerable:!0}):r,t));var ce=Z(G=>{"use strict";Object.defineProperty(G,"__esModule",{value:!0});function H(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?H=function(e){return typeof e}:H=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},H(t)}var se="dahlia",qe=function(e){return e===3?"v3":e},ae="https://js.stripe.com",ke="".concat(ae,"/").concat(se,"/stripe.js"),De=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/,Ne=/^https:\/\/js\.stripe\.com\/(v3|[a-z]+)\/stripe\.js(\?.*)?$/,re="loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used",Ue=function(e){return De.test(e)||Ne.test(e)},_e=function(){for(var e=document.querySelectorAll('script[src^="'.concat(ae,'"]')),r=0;r element.");return n.appendChild(o),o},Xe=function(e,r){!e||!e._registerWrapper||e._registerWrapper({name:"stripe-js",version:"9.1.0",startTime:r})},F=null,C=null,A=null,Ge=function(e){return function(r){e(new Error("Failed to load Stripe.js",{cause:r}))}},We=function(e,r){return function(){window.Stripe?e(window.Stripe):r(new Error("Stripe.js not available"))}},Be=function(e){return F!==null?F:(F=new Promise(function(r,o){if(typeof window>"u"||typeof document>"u"){r(null);return}if(window.Stripe&&e&&console.warn(re),window.Stripe){r(window.Stripe);return}try{var n=_e();if(n&&e)console.warn(re);else if(!n)n=ne(e);else if(n&&A!==null&&C!==null){var a;n.removeEventListener("load",A),n.removeEventListener("error",C),(a=n.parentNode)===null||a===void 0||a.removeChild(n),n=ne(e)}A=We(r,o),C=Ge(o),n.addEventListener("load",A),n.addEventListener("error",C)}catch(s){o(s);return}}),F.catch(function(r){return F=null,Promise.reject(r)}))},Je=function(e,r,o){if(e===null)return null;var n=r[0];if(typeof n!="string")throw new Error("Expected publishable key to be of type string, got type ".concat(H(n)," instead."));var a=n.match(/^pk_test/),s=qe(e.version),l=se;a&&s!==l&&console.warn("Stripe.js@".concat(s," was loaded on the page, but @stripe/stripe-js@").concat("9.1.0"," expected Stripe.js@").concat(l,". This may result in unexpected behavior. For more information, see https://docs.stripe.com/sdks/stripejs-versioning"));var i=e.apply(void 0,r);return Xe(i,o),i},oe=function(e){var r=`invalid load parameters; expected object of shape {advancedFraudSignals: boolean} From 7de97779fb977d0c85544dc6bad331c5ec49f62a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavs=20G=C5=ABtmanis?= Date: Thu, 21 May 2026 12:22:42 +0300 Subject: [PATCH 09/20] feat: improving form caching in forms service --- .../Field/FieldTransformer.php | 2 +- .../src/Bundles/Fields/FieldProvider.php | 2 +- packages/plugin/src/Freeform.php | 2 + packages/plugin/src/Services/FormsService.php | 343 ++++++++++-------- 4 files changed, 201 insertions(+), 148 deletions(-) diff --git a/packages/plugin/src/Attributes/Property/Implementations/Field/FieldTransformer.php b/packages/plugin/src/Attributes/Property/Implementations/Field/FieldTransformer.php index 30d0ecfe19..f52ac6799c 100644 --- a/packages/plugin/src/Attributes/Property/Implementations/Field/FieldTransformer.php +++ b/packages/plugin/src/Attributes/Property/Implementations/Field/FieldTransformer.php @@ -17,7 +17,7 @@ public function transform($value, ?Form $form = null): ?FieldInterface return null; } - return $this->fieldProvider->getFieldByUid($value); + return $this->fieldProvider->getFieldByUid($value, $form); } public function reverseTransform($value): ?string diff --git a/packages/plugin/src/Bundles/Fields/FieldProvider.php b/packages/plugin/src/Bundles/Fields/FieldProvider.php index 41a5ac8fa0..4043505b13 100644 --- a/packages/plugin/src/Bundles/Fields/FieldProvider.php +++ b/packages/plugin/src/Bundles/Fields/FieldProvider.php @@ -162,7 +162,7 @@ function () use ($id) { private function cacheFieldInForm(FieldInterface $field, Form $form): void { $cache = $this->cache->get($form->getId(), self::PREFIX_BY_FORM, []); - $cache[$field->getUid()] = $field; + $cache[] = $field; $this->cache->set($form->getId(), $cache, self::PREFIX_BY_FORM); } } diff --git a/packages/plugin/src/Freeform.php b/packages/plugin/src/Freeform.php index 73f2f034f4..0f43812bfc 100644 --- a/packages/plugin/src/Freeform.php +++ b/packages/plugin/src/Freeform.php @@ -875,6 +875,7 @@ private function initContainerItems(): void NotificationRuleTransformer::class => NotificationRuleTransformer::class, // Existing singleton services + FormsService::class => FormsService::class, IntegrationsService::class => IntegrationsService::class, ], ]); @@ -884,6 +885,7 @@ private function initBundles(): void { BundleLoader::loadBundles(__DIR__.'/Bundles'); \Craft::$container->setSingleton('craft\services\Sites'); + \Craft::$container->setSingleton('Solspace\Freeform\Services\FormsService'); \Craft::$container->setSingleton('Solspace\Freeform\Services\Integrations\IntegrationsService'); } } diff --git a/packages/plugin/src/Services/FormsService.php b/packages/plugin/src/Services/FormsService.php index 2937495d35..52810b6e40 100644 --- a/packages/plugin/src/Services/FormsService.php +++ b/packages/plugin/src/Services/FormsService.php @@ -29,6 +29,7 @@ use Solspace\Freeform\Form\Form; use Solspace\Freeform\Form\Settings\Settings as FormSettings; use Solspace\Freeform\Freeform; +use Solspace\Freeform\Library\Cache\Memo; use Solspace\Freeform\Library\Database\FormHandlerInterface; use Solspace\Freeform\Library\Exceptions\FormExceptions\InvalidFormTypeException; use Solspace\Freeform\Library\Exceptions\FreeformException; @@ -47,15 +48,13 @@ class FormsService extends BaseService implements FormHandlerInterface { private const FALLBACK_TEMPLATE = 'flexbox/index.twig'; - /** @var Form[] */ - private static array $formsById = []; + private const CACHE_PREFIX_BY_ID = 'by-id'; + private const CACHE_PREFIX_BY_HANDLE = 'by-handle'; + private const CACHE_PREFIX_ALL_FORMS = 'all-forms'; + private const CACHE_PREFIX_ALL_NON_ARCHIVED = 'all-non-archived-forms'; + private const CACHE_PREFIX_SPAM_COUNTS = 'spam-counts'; - /** @var Form[] */ - private static array $formsByHandle = []; - - private static array $allFormsCache = []; - - private static array $spamCountIncrementedForms = []; + private Memo $cache; public function __construct( ?array $config, @@ -63,6 +62,8 @@ public function __construct( private TranslationProvider $translationProvider, ) { parent::__construct($config); + + $this->cache = new Memo(); } /** @@ -70,74 +71,21 @@ public function __construct( */ public function getAllForms(bool $orderByName = false, array|string|null $sites = null): array { - if ($sites && \is_array($sites)) { - sort($sites); - } - - $key = null !== $sites ? md5(json_encode($sites)) : 'all'; - if (!\array_key_exists($key, self::$allFormsCache)) { - $query = $this->getFormQuery(); - $this->attachSitesToQuery($query, $sites); - - if ($orderByName) { - $query->orderBy(['forms.name' => \SORT_ASC]); - } else { - $query->orderBy(['forms.order' => \SORT_ASC]); - } - - $results = $query->all(); - - self::$allFormsCache[$key] = []; - foreach ($results as $result) { - try { - $form = $this->createForm($result); - - self::$allFormsCache[$key][$form->getId()] = $form; - self::$formsById[$form->getId()] = $form; - self::$formsByHandle[$form->getHandle()] = $form; - } catch (InvalidFormTypeException) { - } - } - } - - return self::$allFormsCache[$key]; + return $this->loadAllForms( + self::CACHE_PREFIX_ALL_FORMS, + $orderByName, + $sites, + ); } public function getAllNonArchivedForms(bool $orderByName = false, array|string|null $sites = null): array { - if ($sites && \is_array($sites)) { - sort($sites); - } - - $key = null !== $sites ? md5(json_encode($sites)) : 'all'; - if (!\array_key_exists($key, self::$allFormsCache)) { - $query = $this->getFormQuery(); - $this->attachSitesToQuery($query, $sites); - - $query->where(['forms.dateArchived' => null]); - - if ($orderByName) { - $query->orderBy(['forms.name' => \SORT_ASC]); - } else { - $query->orderBy(['forms.order' => \SORT_ASC]); - } - - $results = $query->all(); - - self::$allFormsCache[$key] = []; - foreach ($results as $result) { - try { - $form = $this->createForm($result); - - self::$allFormsCache[$key][$form->getId()] = $form; - self::$formsById[$form->getId()] = $form; - self::$formsByHandle[$form->getHandle()] = $form; - } catch (InvalidFormTypeException) { - } - } - } - - return self::$allFormsCache[$key]; + return $this->loadAllForms( + self::CACHE_PREFIX_ALL_NON_ARCHIVED, + $orderByName, + $sites, + static fn (Query $query) => $query->where(['forms.dateArchived' => null]), + ); } public function getResolvedForms(array $arguments = []): array @@ -281,68 +229,50 @@ public function getAllowedReadFormIds(): array return array_unique($ids); } - public function getFormById(int $id, bool $refresh = false, ?string $site = null, ?string $uniqueId = null): ?Form + public function getFormById(int $id, ?string $site = null, ?string $uniqueId = null): ?Form { $key = $id.$uniqueId; - if (!$refresh && (null === self::$formsById || !isset(self::$formsById[$key]))) { - $query = $this->getFormQuery(); - $this->attachSitesToQuery($query, $site); - $query->where(['forms.id' => $id]); - - $result = $query->one(); - if (!$result) { - self::$formsById[$key] = null; - return null; - } - - if ($uniqueId) { - $result['uniqueId'] = $uniqueId; - } - - try { - $form = $this->createForm($result); - } catch (InvalidFormTypeException) { - $form = null; - } + return $this->cache->getOrSet( + $key, + function () use ($id, $site, $uniqueId): ?Form { + $form = $this->loadForm( + static fn (Query $query) => $query->where(['forms.id' => $id]), + $site, + $uniqueId, + ); - self::$formsByHandle[$form->getHandle().$uniqueId] = $form; - self::$formsById[$key] = $form; - } + if ($form) { + $this->cache->set($form->getHandle().$uniqueId, $form, self::CACHE_PREFIX_BY_HANDLE); + } - return self::$formsById[$key]; + return $form; + }, + self::CACHE_PREFIX_BY_ID, + ); } public function getFormByHandle(string $handle, ?string $site = null, ?string $uniqueId = null): ?Form { $key = $handle.$uniqueId; - if (null === self::$formsByHandle || !isset(self::$formsByHandle[$key])) { - $query = $this->getFormQuery(); - $this->attachSitesToQuery($query, $site); - $query->andWhere(['forms.handle' => $handle]); - - $result = $query->one(); - if (!$result) { - self::$formsByHandle[$key] = null; - - return null; - } - - if ($uniqueId) { - $result['uniqueId'] = $uniqueId; - } - try { - $form = $this->createForm($result); - } catch (InvalidFormTypeException) { - $form = null; - } + return $this->cache->getOrSet( + $key, + function () use ($handle, $site, $uniqueId): ?Form { + $form = $this->loadForm( + static fn (Query $query) => $query->andWhere(['forms.handle' => $handle]), + $site, + $uniqueId, + ); - self::$formsById[$form->getId().$uniqueId] = $form; - self::$formsByHandle[$key] = $form; - } + if ($form) { + $this->cache->set($form->getId().$uniqueId, $form, self::CACHE_PREFIX_BY_ID); + } - return self::$formsByHandle[$key]; + return $form; + }, + self::CACHE_PREFIX_BY_HANDLE, + ); } public function getFormByHandleOrId(int|string $handleOrId, ?string $site = null, ?string $uniqueId = null): ?Form @@ -362,31 +292,32 @@ public function getFormByHandleOrId(int|string $handleOrId, ?string $site = null public function incrementSpamBlockCount(Form $form): int { $handle = $form->getHandle(); - if (isset(self::$spamCountIncrementedForms[$handle])) { - return self::$spamCountIncrementedForms[$handle]; - } - - $spamBlockCount = (int) (new Query()) - ->select(['spamBlockCount']) - ->from(FormRecord::TABLE) - ->where(['id' => $form->getId()]) - ->scalar() - ; - \Craft::$app - ->getDb() - ->createCommand() - ->update( - FormRecord::TABLE, - ['spamBlockCount' => ++$spamBlockCount], - ['id' => $form->getId()] - ) - ->execute() - ; + return $this->cache->getOrSet( + $handle, + static function () use ($form): int { + $spamBlockCount = (int) (new Query()) + ->select(['spamBlockCount']) + ->from(FormRecord::TABLE) + ->where(['id' => $form->getId()]) + ->scalar() + ; - self::$spamCountIncrementedForms[$handle] = $spamBlockCount; + \Craft::$app + ->getDb() + ->createCommand() + ->update( + FormRecord::TABLE, + ['spamBlockCount' => ++$spamBlockCount], + ['id' => $form->getId()] + ) + ->execute() + ; - return $spamBlockCount; + return $spamBlockCount; + }, + self::CACHE_PREFIX_SPAM_COUNTS, + ); } public function deleteById(int $formId): bool @@ -687,11 +618,11 @@ public function getFormsFromQuery(Query $query): array $forms = []; foreach ($results as $result) { try { - $form = $this->createForm($result); + $form = $this->reuseOrCreateForm($result); $forms[] = $form; - self::$formsById[$form->getId()] = $form; - self::$formsByHandle[$form->getHandle()] = $form; + $this->cache->set((string) $form->getId(), $form, self::CACHE_PREFIX_BY_ID); + $this->cache->set($form->getHandle(), $form, self::CACHE_PREFIX_BY_HANDLE); } catch (InvalidFormTypeException) { } } @@ -742,6 +673,126 @@ private function attachSitesToQuery(Query $query, array|string|null $sites = nul ; } + /** + * Shared backend for {@see getAllForms()} and {@see getAllNonArchivedForms()}. + * The `$cachePrefix` argument scopes the cache so the two methods do not + * pollute each other (an archived-vs-not-archived result set must not be + * served from the opposite cache slot). + * + * The cached payload is always in DB-`order` order — sorting by name is + * applied to the returned (copied) array on read so that we don't need to + * cache a second variant or include `$orderByName` in the cache key. + */ + private function loadAllForms( + string $cachePrefix, + bool $orderByName, + array|string|null $sites, + ?callable $queryModifier = null, + ): array { + if ($sites && \is_array($sites)) { + sort($sites); + } + + $key = null !== $sites ? md5(json_encode($sites)) : 'all'; + + $forms = $this->cache->getOrSet( + $key, + function () use ($sites, $queryModifier): array { + $query = $this->getFormQuery(); + $this->attachSitesToQuery($query, $sites); + + if ($queryModifier) { + $queryModifier($query); + } + + $query->orderBy(['forms.order' => \SORT_ASC]); + + $forms = []; + foreach ($query->all() as $result) { + try { + $form = $this->reuseOrCreateForm($result); + + $forms[$form->getId()] = $form; + $this->cache->set((string) $form->getId(), $form, self::CACHE_PREFIX_BY_ID); + $this->cache->set($form->getHandle(), $form, self::CACHE_PREFIX_BY_HANDLE); + } catch (InvalidFormTypeException) { + } + } + + return $forms; + }, + $cachePrefix, + ); + + if ($orderByName) { + uasort( + $forms, + static fn (Form $a, Form $b) => strcmp((string) $a->getName(), (string) $b->getName()), + ); + } + + return $forms; + } + + /** + * Executes a single-form lookup query (used by both {@see getFormById()} + * and {@see getFormByHandle()}) and returns a constructed Form, or null + * when no row matches. + * + * When `$uniqueId` is empty the result goes through {@see reuseOrCreateForm()} + * so the canonical Form instance is preserved across cache populations. + * `$uniqueId`-tagged variants (AB tests, multi-instance rendering) must + * always be standalone instances and bypass the reuse step. + */ + private function loadForm(callable $whereModifier, ?string $site, ?string $uniqueId): ?Form + { + $query = $this->getFormQuery(); + $this->attachSitesToQuery($query, $site); + $whereModifier($query); + + $result = $query->one(); + if (!$result) { + return null; + } + + if ($uniqueId) { + $result['uniqueId'] = $uniqueId; + } + + try { + return $uniqueId + ? $this->createForm($result) + : $this->reuseOrCreateForm($result); + } catch (InvalidFormTypeException) { + return null; + } + } + + /** + * Returns the already-cached Form instance for the given row when one + * exists, otherwise creates a new instance via {@see createForm()}. + * + * This prevents `getAllForms()` / `getAllNonArchivedForms()` from silently + * replacing the canonical Form instance that callers obtained earlier via + * `getFormById()` / `getFormByHandle()`. Without this, lazy services that + * load all forms during cache warming (e.g. `FieldProvider`) would bind + * runtime state — fields, layouts, render properties — to a brand new + * Form object that no caller actually holds a reference to, while the + * Form being rendered loses access to that state. + */ + private function reuseOrCreateForm(array $data): Form + { + $id = $data['id'] ?? null; + if (null !== $id) { + $existing = $this->cache->get((string) $id, self::CACHE_PREFIX_BY_ID); + if ($existing instanceof Form) { + return $existing; + } + } + + return $this->createForm($data); + } + private function createForm(array $data): Form { $data['metadata'] = JsonHelper::decode($data['metadata'] ?: '{}', true); From 8c1fc2f31096146cd88eea1b2cc498c00eaecb25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavs=20G=C5=ABtmanis?= Date: Thu, 21 May 2026 12:31:41 +0300 Subject: [PATCH 10/20] fix: unprefixed table join --- packages/plugin/src/Bundles/Fields/FieldProvider.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/plugin/src/Bundles/Fields/FieldProvider.php b/packages/plugin/src/Bundles/Fields/FieldProvider.php index 4043505b13..72d4b78c87 100644 --- a/packages/plugin/src/Bundles/Fields/FieldProvider.php +++ b/packages/plugin/src/Bundles/Fields/FieldProvider.php @@ -11,6 +11,7 @@ use Solspace\Freeform\Library\Helpers\JsonHelper; use Solspace\Freeform\Records\FavoriteFieldRecord; use Solspace\Freeform\Records\Form\FormFieldRecord; +use Solspace\Freeform\Records\Form\FormRowRecord; use yii\base\Event; class FieldProvider @@ -73,11 +74,13 @@ private function warmCache(): void $this->warming = true; try { + $rowsTable = FormRowRecord::TABLE; + /** @var FormFieldRecord $records */ $rows = FormFieldRecord::find() ->select(['field.*', 'row.uid as rowUid']) ->alias('field') - ->innerJoin('freeform_forms_rows row', '[[row.id]] = [[field.rowId]]') + ->innerJoin("{$rowsTable} row", '[[row.id]] = [[field.rowId]]') ->orderBy(['[[field.order]]' => \SORT_ASC]) ->asArray() ->all() From a0065e91c96f030b5b61d628b9801343ded53b84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavs=20G=C5=ABtmanis?= Date: Thu, 21 May 2026 16:18:28 +0300 Subject: [PATCH 11/20] fix: field caching per form instance --- .../src/Bundles/Fields/FieldProvider.php | 115 ++++++++++++++---- 1 file changed, 92 insertions(+), 23 deletions(-) diff --git a/packages/plugin/src/Bundles/Fields/FieldProvider.php b/packages/plugin/src/Bundles/Fields/FieldProvider.php index 72d4b78c87..f4c266350c 100644 --- a/packages/plugin/src/Bundles/Fields/FieldProvider.php +++ b/packages/plugin/src/Bundles/Fields/FieldProvider.php @@ -19,10 +19,12 @@ class FieldProvider private const KEY_ALL = 'all'; private const PREFIX_BY_UID = 'by-uid'; private const PREFIX_BY_FORM = 'by-form'; + private const PREFIX_BY_FORM_UID = 'by-form-uid'; private const PREFIX_FORMS = 'forms'; private Memo $cache; private bool $warming; + private array $warmingForms = []; public function __construct(private PropertyProvider $propertyProvider) { @@ -30,8 +32,21 @@ public function __construct(private PropertyProvider $propertyProvider) $this->warming = false; } - public function getFieldByUid(string $fieldUid): ?FieldInterface + public function getFieldByUid(string $fieldUid, ?Form $form = null): ?FieldInterface { + if ($form) { + $formFieldKey = $this->getFormFieldKey($form, $fieldUid); + + $field = $this->cache->get($formFieldKey, self::PREFIX_BY_FORM_UID); + if ($field instanceof FieldInterface) { + return $field; + } + + $this->getFields($form); + + return $this->cache->get($formFieldKey, self::PREFIX_BY_FORM_UID); + } + if (!$this->warming) { $this->warmCache(); } @@ -44,11 +59,36 @@ public function getFieldByUid(string $fieldUid): ?FieldInterface */ public function getFields(Form $form): array { - if (!$this->warming) { - $this->warmCache(); + $key = $this->getFormKey($form); + + if ($this->warmingForms[$key] ?? false) { + return $this->cache->get($key, self::PREFIX_BY_FORM, []); } - return $this->cache->get($form->getId(), self::PREFIX_BY_FORM, []); + return $this->cache->getOrSet( + $key, + function () use ($form, $key): array { + $this->warmingForms[$key] = true; + $this->cache->set($key, [], self::PREFIX_BY_FORM); + + $fields = []; + + try { + foreach ($this->getRows($form->getId()) as $row) { + $field = $this->createField($row, $form, false); + if ($field) { + $fields[] = $field; + $this->cache->set($key, $fields, self::PREFIX_BY_FORM); + } + } + } finally { + unset($this->warmingForms[$key]); + } + + return $fields; + }, + self::PREFIX_BY_FORM, + ); } public function getAllFieldCount(): int @@ -74,20 +114,8 @@ private function warmCache(): void $this->warming = true; try { - $rowsTable = FormRowRecord::TABLE; - - /** @var FormFieldRecord $records */ - $rows = FormFieldRecord::find() - ->select(['field.*', 'row.uid as rowUid']) - ->alias('field') - ->innerJoin("{$rowsTable} row", '[[row.id]] = [[field.rowId]]') - ->orderBy(['[[field.order]]' => \SORT_ASC]) - ->asArray() - ->all() - ; - $fields = []; - foreach ($rows as $row) { + foreach ($this->getRows() as $row) { $fields[] = $this->createField($row); } @@ -98,9 +126,34 @@ private function warmCache(): void } } - private function createField(array $row): ?FieldInterface + private function getRows(?int $formId = null): array + { + return $this->cache->getOrSet( + null === $formId ? self::KEY_ALL : (string) $formId, + static function () use ($formId): array { + $rowsTable = FormRowRecord::TABLE; + + /** @var FormFieldRecord $records */ + $query = FormFieldRecord::find() + ->select(['field.*', 'row.uid as rowUid']) + ->alias('field') + ->innerJoin("{$rowsTable} row", '[[row.id]] = [[field.rowId]]') + ->orderBy(['[[field.order]]' => \SORT_ASC]) + ; + + if (null !== $formId) { + $query->andWhere(['field.formId' => $formId]); + } + + return $query->asArray()->all(); + }, + 'rows', + ); + } + + private function createField(array $row, ?Form $form = null, bool $cacheGlobally = true): ?FieldInterface { - $form = $this->getForm($row['formId']); + $form ??= $this->getForm($row['formId']); if (!$form) { return null; } @@ -131,10 +184,16 @@ private function createField(array $row): ?FieldInterface /** @var FieldInterface $field */ $field = new $type($form); - $this->cache->set($row['uid'], $field, self::PREFIX_BY_UID); + if ($cacheGlobally) { + $this->cache->set($row['uid'], $field, self::PREFIX_BY_UID); + } + + $this->cache->set($this->getFormFieldKey($form, $row['uid']), $field, self::PREFIX_BY_FORM_UID); $this->propertyProvider->setObjectProperties($field, $properties, null, $form); - $this->cacheFieldInForm($field, $form); + if ($cacheGlobally) { + $this->cacheFieldInForm($field, $form); + } Event::trigger( FieldInterface::class, @@ -164,8 +223,18 @@ function () use ($id) { private function cacheFieldInForm(FieldInterface $field, Form $form): void { - $cache = $this->cache->get($form->getId(), self::PREFIX_BY_FORM, []); + $cache = $this->cache->get($this->getFormKey($form), self::PREFIX_BY_FORM, []); $cache[] = $field; - $this->cache->set($form->getId(), $cache, self::PREFIX_BY_FORM); + $this->cache->set($this->getFormKey($form), $cache, self::PREFIX_BY_FORM); + } + + private function getFormKey(Form $form): string + { + return (string) spl_object_id($form); + } + + private function getFormFieldKey(Form $form, string $fieldUid): string + { + return $this->getFormKey($form).'.'.$fieldUid; } } From f4f2de39367190d107a780e47c3c54a44ef95582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavs=20G=C5=ABtmanis?= Date: Thu, 21 May 2026 16:18:37 +0300 Subject: [PATCH 12/20] fix: translation icon not lighting up --- .../client/src/app/components/form-controls/control.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/client/src/app/components/form-controls/control.tsx b/packages/client/src/app/components/form-controls/control.tsx index e85396d5a9..895898dd75 100644 --- a/packages/client/src/app/components/form-controls/control.tsx +++ b/packages/client/src/app/components/form-controls/control.tsx @@ -40,12 +40,13 @@ export const Control: React.FC> = ({ useTranslations(context as any); const { edition, translatable, messages } = property || {}; + const resolvedHandle = property?.handle || handle; return ( > = ({ errors={errors} messages={messages} translatable={isTranslationsEnabled && translatable} - hasTranslation={hasTranslation(handle)} + hasTranslation={resolvedHandle ? hasTranslation(resolvedHandle) : false} isEncrypted={property?.flags?.includes("encrypted")} - removeTranslation={() => removeTranslation(handle)} + removeTranslation={() => + resolvedHandle && removeTranslation(resolvedHandle) + } preContent={preContent} align={align} justify={justify} From 630885ed8c7974d727c2f5f8c39b309d3d72b806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavs=20G=C5=ABtmanis?= Date: Thu, 21 May 2026 16:18:58 +0300 Subject: [PATCH 13/20] chore: add artifacts --- .../assets/ai.dashboard.styles-CyUKz2xB.js | 155 - .../client/assets/ai.usage-chart-6uT6SHuq.js | 4 - .../client/assets/ai.usage-chart-BG9xQMJm.js | 4 + .../assets/buildMatchPatternFn-CA1-K-2Q.js | 1 - .../Resources/js/client/assets/de--wd8n34i.js | 1 + .../Resources/js/client/assets/de-Bfssb_sQ.js | 1 - .../Resources/js/client/assets/fr-DR7o_gl_.js | 1 - .../Resources/js/client/assets/fr-b7ZEYU0B.js | 1 + ...{index-C4rHuvk6.css => index-LYeogghk.css} | 2 +- .../js/client/assets/index-RUU7GNFX.js | 9867 --------------- .../js/client/assets/index-Rblf8O1T.js | 10022 ++++++++++++++++ .../Resources/js/client/assets/it-Br0QU-GU.js | 1 - .../Resources/js/client/assets/it-uxhctkN5.js | 1 + .../Resources/js/client/assets/nl-D46bxpRO.js | 1 - .../Resources/js/client/assets/nl-DsmusMPV.js | 1 + .../client/assets/normalizeDates-CGlgSdPy.js | 1 - .../src/Resources/js/client/manifest.json | 42 +- 17 files changed, 10043 insertions(+), 10063 deletions(-) delete mode 100644 packages/plugin/src/Resources/js/client/assets/ai.dashboard.styles-CyUKz2xB.js delete mode 100644 packages/plugin/src/Resources/js/client/assets/ai.usage-chart-6uT6SHuq.js create mode 100644 packages/plugin/src/Resources/js/client/assets/ai.usage-chart-BG9xQMJm.js delete mode 100644 packages/plugin/src/Resources/js/client/assets/buildMatchPatternFn-CA1-K-2Q.js create mode 100644 packages/plugin/src/Resources/js/client/assets/de--wd8n34i.js delete mode 100644 packages/plugin/src/Resources/js/client/assets/de-Bfssb_sQ.js delete mode 100644 packages/plugin/src/Resources/js/client/assets/fr-DR7o_gl_.js create mode 100644 packages/plugin/src/Resources/js/client/assets/fr-b7ZEYU0B.js rename packages/plugin/src/Resources/js/client/assets/{index-C4rHuvk6.css => index-LYeogghk.css} (60%) delete mode 100644 packages/plugin/src/Resources/js/client/assets/index-RUU7GNFX.js create mode 100644 packages/plugin/src/Resources/js/client/assets/index-Rblf8O1T.js delete mode 100644 packages/plugin/src/Resources/js/client/assets/it-Br0QU-GU.js create mode 100644 packages/plugin/src/Resources/js/client/assets/it-uxhctkN5.js delete mode 100644 packages/plugin/src/Resources/js/client/assets/nl-D46bxpRO.js create mode 100644 packages/plugin/src/Resources/js/client/assets/nl-DsmusMPV.js delete mode 100644 packages/plugin/src/Resources/js/client/assets/normalizeDates-CGlgSdPy.js diff --git a/packages/plugin/src/Resources/js/client/assets/ai.dashboard.styles-CyUKz2xB.js b/packages/plugin/src/Resources/js/client/assets/ai.dashboard.styles-CyUKz2xB.js deleted file mode 100644 index 0908c66ebd..0000000000 --- a/packages/plugin/src/Resources/js/client/assets/ai.dashboard.styles-CyUKz2xB.js +++ /dev/null @@ -1,155 +0,0 @@ -var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(e&&(t=e(e=0)),t),s=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),c=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},l=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},u=(n,r,a)=>(a=n==null?{}:e(i(n)),l(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),d=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function D(e,t){return E(e.type,t,e.props)}function O(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ee=/\/+/g;function te(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function A(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function j(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,j(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+te(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(ee,`$&/`)+`/`),j(o,r,i,``,function(e){return e})):o!=null&&(O(o)&&(o=D(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ee,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=d()})),p=s((e=>{var t=f();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=p()})),h=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),g=s(((e,t)=>{t.exports=h()})),_=u(f()),v=u(m()),y=function(){return y=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0?N(_e,--ge):0,me--,P===10&&(me=1,pe--),P}function Ce(){return P=ge2||De(P)>3?``:` `}function Me(e,t){for(;--t&&Ce()&&!(P<48||P>102||P>57&&P<65||P>70&&P<97););return Ee(e,Te()+(t<6&&we()==32&&Ce()==32))}function Ne(e){for(;Ce();)switch(P){case e:return ge;case 34:case 39:e!==34&&e!==39&&Ne(P);break;case 40:e===41&&Ne(e);break;case 92:Ce();break}return ge}function Pe(e,t){for(;Ce()&&e+P!==57&&!(e+P===84&&we()===47););return`/*`+Ee(t,ge-1)+`*`+j(e===47?e:Ce())}function Fe(e){for(;!De(we());)Ce();return Ee(e,ge)}function Ie(e){return ke(Le(``,null,null,null,[``],e=Oe(e),0,[0],e))}function Le(e,t,n,r,i,a,o,s,c){for(var l=0,u=0,d=o,f=0,p=0,m=0,h=1,g=1,_=1,v=0,y=``,b=i,x=a,S=r,C=y;g;)switch(m=v,v=Ce()){case 40:if(m!=108&&N(C,d-1)==58){oe(C+=M(Ae(v),`&`,`&\f`),`&\f`,A(l?s[l-1]:0))!=-1&&(_=-1);break}case 34:case 39:case 91:C+=Ae(v);break;case 9:case 10:case 13:case 32:C+=je(m);break;case 92:C+=Me(Te()-1,7);continue;case 47:switch(we()){case 42:case 47:ue(ze(Pe(Ce(),Te()),t,n,c),c),(De(m||1)==5||De(we()||1)==5)&&ce(C)&&se(C,-1,void 0)!==` `&&(C+=` `);break;default:C+=`/`}break;case 123*h:s[l++]=ce(C)*_;case 125*h:case 59:case 0:switch(v){case 0:case 125:g=0;case 59+u:_==-1&&(C=M(C,/\f/g,``)),p>0&&(ce(C)-d||h===0&&m===47)&&ue(p>32?Be(C+`;`,r,n,d-1,c):Be(M(C,` `,``)+`;`,r,n,d-2,c),c);break;case 59:C+=`;`;default:if(ue(S=Re(C,t,n,l,u,i,s,y,b=[],x=[],d,a),a),v===123)if(u===0)Le(C,t,S,S,b,a,d,s,x);else{switch(f){case 99:if(N(C,3)===110)break;case 108:if(N(C,2)===97)break;default:u=0;case 100:case 109:case 115:}u?Le(e,S,S,r&&ue(Re(e,S,S,0,0,i,s,y,i,b=[],d,x),x),i,x,d,s,r?b:x):Le(C,S,S,S,[``],x,0,s,x)}}l=u=p=0,h=_=1,y=C=``,d=o;break;case 58:d=1+ce(C),p=m;default:if(h<1){if(v==123)--h;else if(v==125&&h++==0&&Se()==125)continue}switch(C+=j(v),v*h){case 38:_=u>0?1:(C+=`\f`,-1);break;case 44:s[l++]=(ce(C)-1)*_,_=1;break;case 64:we()===45&&(C+=Ae(Ce())),f=we(),u=d=ce(y=C+=Fe(Te())),v++;break;case 45:m===45&&ce(C)==2&&(h=0)}}return a}function Re(e,t,n,r,i,a,o,s,c,l,u,d){for(var f=i-1,p=i===0?a:[``],m=le(p),h=0,g=0,_=0;h0?p[v]+` `+y:M(y,/&\f/g,p[v])))&&(c[_++]=b);return ve(e,t,n,i===0?E:s,c,l,u,d)}function ze(e,t,n,r){return ve(e,t,n,T,j(xe()),se(e,2,-2),0,r)}function Be(e,t,n,r,i){return ve(e,t,n,D,se(e,0,r),se(e,r+1,-1),r,i)}function Ve(e,t,n){switch(re(e,t)){case 5103:return w+`print-`+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:case 6391:case 5879:case 5623:case 6135:case 4599:return w+e+e;case 4855:return w+e.replace(`add`,`source-over`).replace(`substract`,`source-out`).replace(`intersect`,`source-in`).replace(`exclude`,`xor`)+e;case 4789:return C+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return w+e+C+e+S+e+e;case 5936:switch(N(e,t+11)){case 114:return w+e+S+M(e,/[svh]\w+-[tblr]{2}/,`tb`)+e;case 108:return w+e+S+M(e,/[svh]\w+-[tblr]{2}/,`tb-rl`)+e;case 45:return w+e+S+M(e,/[svh]\w+-[tblr]{2}/,`lr`)+e}case 6828:case 4268:case 2903:return w+e+S+e+e;case 6165:return w+e+S+`flex-`+e+e;case 5187:return w+e+M(e,/(\w+).+(:[^]+)/,w+`box-$1$2`+S+`flex-$1$2`)+e;case 5443:return w+e+S+`flex-item-`+M(e,/flex-|-self/g,``)+(ae(e,/flex-|baseline/)?``:S+`grid-row-`+M(e,/flex-|-self/g,``))+e;case 4675:return w+e+S+`flex-line-pack`+M(e,/align-content|flex-|-self/g,``)+e;case 5548:return w+e+S+M(e,`shrink`,`negative`)+e;case 5292:return w+e+S+M(e,`basis`,`preferred-size`)+e;case 6060:return w+`box-`+M(e,`-grow`,``)+w+e+S+M(e,`grow`,`positive`)+e;case 4554:return w+M(e,/([^-])(transform)/g,`$1`+w+`$2`)+e;case 6187:return M(M(M(e,/(zoom-|grab)/,w+`$1`),/(image-set)/,w+`$1`),e,``)+e;case 5495:case 3959:return M(e,/(image-set\([^]*)/,w+"$1$`$1");case 4968:return M(M(e,/(.+:)(flex-)?(.*)/,w+`box-pack:$3`+S+`flex-pack:$3`),/space-between/,`justify`)+w+e+e;case 4200:if(!ae(e,/flex-|baseline/))return S+`grid-column-align`+se(e,t)+e;break;case 2592:case 3360:return S+M(e,`template-`,``)+e;case 4384:case 3616:return n&&n.some(function(e,n){return t=n,ae(e.props,/grid-\w+-end/)})?~oe(e+(n=n[t].value),`span`,0)?e:S+M(e,`-start`,``)+e+S+`grid-row-span:`+(~oe(n,`span`,0)?ae(n,/\d+/):ae(n,/\d+/)-+ae(e,/\d+/))+`;`:S+M(e,`-start`,``)+e;case 4896:case 4128:return n&&n.some(function(e){return ae(e.props,/grid-\w+-start/)})?e:S+M(M(e,`-end`,`-span`),`span `,``)+e;case 4095:case 3583:case 4068:case 2532:return M(e,/(.+)-inline(.+)/,w+`$1$2`)+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(ce(e)-1-t>6)switch(N(e,t+1)){case 109:if(N(e,t+4)!==45)break;case 102:return M(e,/(.+:)(.+)-([^]+)/,`$1`+w+`$2-$3$1`+C+(N(e,t+3)==108?`$3`:`$2-$3`))+e;case 115:return~oe(e,`stretch`,0)?Ve(M(e,`stretch`,`fill-available`),t,n)+e:e}break;case 5152:case 5920:return M(e,/(.+?):(\d+)(\s*\/\s*(span)?\s*(\d+))?(.*)/,function(t,n,r,i,a,o,s){return S+n+`:`+r+s+(i?S+n+`-span:`+(a?o:o-+r)+s:``)+e});case 4949:if(N(e,t+6)===121)return M(e,`:`,`:`+w)+e;break;case 6444:switch(N(e,N(e,14)===45?18:11)){case 120:return M(e,/(.+:)([^;\s!]+)(;|(\s+)?!.+)?/,`$1`+w+(N(e,14)===45?`inline-`:``)+`box$3$1`+w+`$2$3$1`+S+`$2box$3`)+e;case 100:return M(e,`:`,`:`+S)+e}break;case 5719:case 2647:case 2135:case 3927:case 2391:return M(e,`scroll-`,`scroll-snap-`)+e}return e}function He(e,t){for(var n=``,r=0;r-1&&!e.return)switch(e.type){case D:e.return=Ve(e.value,e.length,n);return;case ee:return He([ye(e,{value:M(e.value,`@`,`@`+w)})],r);case E:if(e.length)return de(n=e.props,function(t){switch(ae(t,r=/(::plac\w+|:read-\w+)/)){case`:read-only`:case`:read-write`:be(ye(e,{props:[M(t,/:(read-\w+)/,`:`+C+`$1`)]})),be(ye(e,{props:[t]})),ne(e,{props:fe(n,r)});break;case`::placeholder`:be(ye(e,{props:[M(t,/:(plac\w+)/,`:`+w+`input-$1`)]})),be(ye(e,{props:[M(t,/:(plac\w+)/,`:`+C+`$1`)]})),be(ye(e,{props:[M(t,/:(plac\w+)/,S+`input-$1`)]})),be(ye(e,{props:[t]})),ne(e,{props:fe(n,r)});break}return``})}}var qe=typeof process<`u`&&({}.REACT_APP_SC_ATTR||{}.SC_ATTR)||`data-styled`,Je=`active`,Ye=`data-styled-version`,Xe=`6.3.12`,Ze=`/*!sc*/ -`,Qe=typeof window<`u`&&typeof document<`u`,$e=!!(typeof SC_DISABLE_SPEEDY==`boolean`?SC_DISABLE_SPEEDY:typeof process<`u`&&{}.REACT_APP_SC_DISABLE_SPEEDY!==void 0&&{}.REACT_APP_SC_DISABLE_SPEEDY!==``?{}.REACT_APP_SC_DISABLE_SPEEDY!==`false`&&{}.REACT_APP_SC_DISABLE_SPEEDY:typeof process<`u`&&{}.SC_DISABLE_SPEEDY!==void 0&&{}.SC_DISABLE_SPEEDY!==``&&{}.SC_DISABLE_SPEEDY!==`false`&&{}.SC_DISABLE_SPEEDY),et={};function tt(e){var t=[...arguments].slice(1);return Error(`An error occurred. See https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#${e} for more information.${t.length>0?` Args: ${t.join(`, `)}`:``}`)}var nt=new Map,rt=new Map,it=1,at=function(e){if(nt.has(e))return nt.get(e);for(;rt.has(it);)it++;var t=it++;return nt.set(e,t),rt.set(t,e),t},ot=function(e,t){it=t+1,nt.set(e,t),rt.set(t,e)},st=Object.freeze([]),ct=Object.freeze({});function lt(e,t,n){return n===void 0&&(n=ct),e.theme!==n.theme&&e.theme||t||n.theme}var ut=new Set(`a.abbr.address.area.article.aside.audio.b.bdi.bdo.blockquote.body.button.br.canvas.caption.cite.code.col.colgroup.data.datalist.dd.del.details.dfn.dialog.div.dl.dt.em.embed.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.header.hgroup.hr.html.i.iframe.img.input.ins.kbd.label.legend.li.main.map.mark.menu.meter.nav.object.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.slot.small.span.strong.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.u.ul.var.video.wbr.circle.clipPath.defs.ellipse.feBlend.feColorMatrix.feComponentTransfer.feComposite.feConvolveMatrix.feDiffuseLighting.feDisplacementMap.feDistantLight.feDropShadow.feFlood.feFuncA.feFuncB.feFuncG.feFuncR.feGaussianBlur.feImage.feMerge.feMergeNode.feMorphology.feOffset.fePointLight.feSpecularLighting.feSpotLight.feTile.feTurbulence.filter.foreignObject.g.image.line.linearGradient.marker.mask.path.pattern.polygon.polyline.radialGradient.rect.stop.svg.switch.symbol.text.textPath.tspan.use`.split(`.`)),dt=/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g,ft=/(^-|-$)/g;function pt(e){return e.replace(dt,`-`).replace(ft,``)}var mt=/(a)(d)/gi,ht=function(e){return String.fromCharCode(e+(e>25?39:97))};function gt(e){var t,n=``;for(t=Math.abs(e);t>52;t=t/52|0)n=ht(t%52)+n;return(ht(t%52)+n).replace(mt,`$1-$2`)}var _t,vt=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},yt=function(e){return vt(5381,e)};function bt(e){return gt(yt(e)>>>0)}function xt(e){return e.displayName||e.name||`Component`}function St(e){return typeof e==`string`&&!0}var Ct=typeof Symbol==`function`&&Symbol.for,wt=Ct?Symbol.for(`react.memo`):60115,Tt=Ct?Symbol.for(`react.forward_ref`):60112,Et={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},Dt={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},Ot={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},kt=((_t={})[Tt]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},_t[wt]=Ot,_t);function At(e){return(`type`in(t=e)&&t.type.$$typeof)===wt?Ot:`$$typeof`in e?kt[e.$$typeof]:Et;var t}var jt=Object.defineProperty,Mt=Object.getOwnPropertyNames,Nt=Object.getOwnPropertySymbols,Pt=Object.getOwnPropertyDescriptor,Ft=Object.getPrototypeOf,It=Object.prototype;function Lt(e,t,n){if(typeof t!=`string`){if(It){var r=Ft(t);r&&r!==It&&Lt(e,r,n)}var i=Mt(t);Nt&&(i=i.concat(Nt(t)));for(var a=At(e),o=At(t),s=0;sthis._cGroup)for(var n=this._cGroup;n=e;n--)t-=this.groupSizes[n];return this._cGroup=e,this._cIndex=t,t},e.prototype.insertRules=function(e,t){if(e>=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,i=r;e>=i;)if((i<<=1)<0)throw tt(16,`${e}`);this.groupSizes=new Uint32Array(i),this.groupSizes.set(n),this.length=i;for(var a=r;a0&&this._cGroup>e&&(this._cIndex+=s)},e.prototype.clearGroup=function(e){if(e0&&this._cGroup>e&&(this._cIndex-=t)}},e.prototype.getGroup=function(e){var t=``;if(e>=this.length||this.groupSizes[e]===0)return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),i=r+n,a=r;a=0){var n=document.createTextNode(t);return this.element.insertBefore(n,this.nodes[e]||null),this.length++,!0}return!1},e.prototype.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},e.prototype.getRule=function(e){return e0&&(c+=e+`,`)}),r+=o+s+`{content:"`+c+`"}`+Ze},a=0;a=`A`&&e<=`Z`};function un(e){for(var t=``,n=0;n>>0);if(!t.hasNameForId(this.componentId,a)){var o=n(i,`.${a}`,void 0,this.componentId);t.insertRules(this.componentId,a,o)}r=Bt(r,a),this.staticRulesId=a}else{for(var s=vt(this.baseHash,n.hash),c=``,l=0;l>>0);if(!t.hasNameForId(this.componentId,f)){var p=n(c,`.${f}`,void 0,this.componentId);t.insertRules(this.componentId,f,p)}r=Bt(r,f)}}return{className:r,css:typeof window>`u`?t.getTag().getGroup(at(this.componentId)):``}},e}(),yn=/&/g,bn=47,xn=42;function Sn(e){if(e.indexOf(`}`)===-1)return!1;for(var t=e.length,n=0,r=0,i=!1,a=0;a0?`.${t}`:e},u=c.slice();u.push(function(e){e.type===`rule`&&e.value.includes(`&`)&&(r||(r=RegExp(`\\${n}\\b`,`g`)),e.props[0]=e.props[0].replace(yn,n).replace(r,l))}),o.prefix&&u.push(Ke),u.push(Ue);var d=[],f=We(u.concat(Ge(function(e){return d.push(e)}))),p=function(e,i,a,s){i===void 0&&(i=``),a===void 0&&(a=``),s===void 0&&(s=`&`),t=s,n=i,r=void 0;var c=function(e){if(!Sn(e))return e;for(var t=e.length,n=``,r=0,i=0,a=0,o=!1,s=0;s=3&&(32|e.charCodeAt(i-1))==108&&(32|e.charCodeAt(i-2))==114&&(32|e.charCodeAt(i-3))==117)o=1,i++;else if(o>0)s===41?o--:s===40&&o++,i++;else if(s===xn&&i+1r&&n.push(e.substring(r,i)),r=i+=2;else if(s===bn&&i+1r&&n.push(e.substring(r,i));i2&&sn.registerId(this.componentId+e);var i=this.componentId+e;this.isStatic?n.hasNameForId(i,i)||this.createStyles(e,t,n,r):(this.removeStyles(e,n),this.createStyles(e,t,n,r))},e}();function Vn(e){var t=[...arguments].slice(1),n=In.apply(void 0,b([e],t,!1)),r=`sc-global-${bt(JSON.stringify(n))}`,i=new Bn(n,r),a=new WeakMap,o=function(e){var t=kn(),n=_.useContext(jn),s=a.get(t.styleSheet);return s===void 0&&(s=t.styleSheet.allocateGSInstance(r),a.set(t.styleSheet,s)),_.useLayoutEffect(function(){return t.styleSheet.server||function(e,t,n,r,a){if(i.isStatic)i.renderStyles(e,et,n,a);else{var s=y(y({},t),{theme:lt(t,r,o.defaultProps)});i.renderStyles(e,s,n,a)}}(s,e,t.styleSheet,n,t.stylis),function(){i.removeStyles(s,t.styleSheet)}},[s,e,t.styleSheet,n,t.stylis]),null};return _.memo(o)}var Hn=function(){function e(e,t){var n=this;this[zn]=!0,this.inject=function(e,t){t===void 0&&(t=En);var r=n.name+t.hash;e.hasNameForId(n.id,r)||e.insertRules(n.id,r,t(n.rules,r,`@keyframes`))},this.name=e,this.id=`sc-keyframes-${e}`,this.rules=t,Wt(this,function(){throw tt(12,String(n.name))})}return e.prototype.getName=function(e){return e===void 0&&(e=En),this.name+e.hash},e}();function Un(e){var t=[...arguments].slice(1),n=Vt(In.apply(void 0,b([e],t,!1)));return new Hn(bt(n),n)}zn=dn,function(){function e(){var e=this;this._emitSheetCSS=function(){var t=e.instance.toString();if(!t)return``;var n=$t();return``},this.getStyleTags=function(){if(e.sealed)throw tt(2);return e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)throw tt(2);var n=e.instance.toString();if(!n)return[];var r=((t={})[qe]=``,t[Ye]=Xe,t.dangerouslySetInnerHTML={__html:n},t),i=$t();return i&&(r.nonce=i),[_.createElement(`style`,y({},r,{key:`sc-0-0`}))]},this.seal=function(){e.sealed=!0},this.instance=new sn({isServer:!0}),this.sealed=!1}return e.prototype.collectStyles=function(e){if(this.sealed)throw tt(2);return _.createElement(An,{sheet:this.instance},e)},e.prototype.interleaveWithNodeStream=function(e){throw tt(3)},e}(),`${qe}`,F.div` - box-shadow: - 0 0 0 1px #cdd8e4, - 0 2px 12px rgb(205 216 228 / 50%); -`;var I={xs:`var(--xs)`,sm:`var(--s)`,md:`var(--m)`,lg:`var(--l)`,xl:`var(--xl)`},Wn={sm:`var(--small-border-radius)`,md:`var(--medium-border-radius)`,lg:`var(--large-border-radius)`},Gn={panel:`0 0 20px 10px rgb(205 216 228 / 50%)`,box:`0 0 0 1px #cdd8e4, 0 2px 12px rgb(205 216 228 / 50%)`,boxSubtle:`0 2px 8px rgba(0, 0, 0, 0.1)`,bottom:`inset 0 -1px 0 0 rgb(154 165 177 / 25%)`,top:`inset 0 1px 0 0 rgb(154 165 177 / 25%)`,left:`inset 1px 0 0 0 rgb(154 165 177 / 25%)`,right:`inset -1px 0 0 0 rgb(154 165 177 / 25%)`,autosuggest:`0 1px 5px -1px rgba(31,41,51,.2)`,container:`0 0 0 1px rgba(31, 41, 51, 0.1), 0 5px 20px rgba(31, 41, 51, 0.25)`},Kn={easeOut:`cubic-bezier(0.25, 0.1, 0.25, 1)`,easeIn:`cubic-bezier(0.42, 0, 1, 1)`,easeInOut:`cubic-bezier(0.42, 0, 0.58, 1)`,bounce:{easeOut:`cubic-bezier(0.175, 0.885, 0.32, 1.275)`}},qn={hairline:`rgba(51,64,77,.1)`,hr:`rgb(from var(--gray-800) r g b/10%)`,inputBorder:`rgba(96,125,159,0.25)`,barelyVisible:`rgb(154 165 177 / 75%)`,link:`#1f5fea`,elements:{dropdown:`#dfe5ec`},error:`#cf1124`,warning:`var(--warning-color)`,success:`var(--success-color)`,notice:`var(--notice-color)`,enabled:`var(--enabled-color)`,pending:`var(--pending-color)`,disabled:`var(--disabled-color)`,white:`var(--white)`,black:`var(--black)`,gray050:`var(--gray-050)`,gray100:`var(--gray-100)`,gray200:`var(--gray-200)`,gray250:`#b4c3d3`,gray300:`var(--gray-300)`,gray350:`var(--gray-350)`,gray400:`var(--gray-400)`,gray500:`var(--gray-500)`,gray550:`var(--gray-550)`,gray600:`var(--gray-600)`,gray700:`var(--gray-700)`,gray800:`var(--gray-800)`,gray900:`var(--gray-900)`,gray1000:`var(--gray-1000)`,blue050:`var(--blue-050)`,blue100:`var(--blue-100)`,blue200:`var(--blue-200)`,blue300:`var(--blue-300)`,blue400:`var(--blue-400)`,blue500:`var(--blue-500)`,blue600:`var(--blue-600)`,blue700:`var(--blue-700)`,blue800:`var(--blue-800)`,blue900:`var(--blue-900)`,cyan050:`var(--cyan-050)`,cyan100:`var(--cyan-100)`,cyan200:`var(--cyan-200)`,cyan300:`var(--cyan-300)`,cyan400:`var(--cyan-400)`,cyan500:`var(--cyan-500)`,cyan600:`var(--cyan-600)`,cyan700:`var(--cyan-700)`,cyan800:`var(--cyan-800)`,cyan900:`var(--cyan-900)`,pink050:`var(--pink-050)`,pink100:`var(--pink-100)`,pink200:`var(--pink-200)`,pink300:`var(--pink-300)`,pink400:`var(--pink-400)`,pink500:`var(--pink-500)`,pink600:`var(--pink-600)`,pink700:`var(--pink-700)`,pink800:`var(--pink-800)`,pink900:`var(--pink-900)`,red050:`var(--red-050)`,red100:`var(--red-100)`,red200:`var(--red-200)`,red300:`var(--red-300)`,red400:`var(--red-400)`,red500:`var(--red-500)`,red600:`var(--red-600)`,red700:`var(--red-700)`,red800:`var(--red-800)`,red900:`var(--red-900)`,yellow050:`var(--yellow-050)`,yellow100:`var(--yellow-100)`,yellow200:`var(--yellow-200)`,yellow300:`var(--yellow-300)`,yellow400:`var(--yellow-400)`,yellow500:`var(--yellow-500)`,yellow600:`var(--yellow-600)`,yellow700:`var(--yellow-700)`,yellow800:`var(--yellow-800)`,yellow900:`var(--yellow-900)`,teal050:`var(--teal-050)`,teal100:`var(--teal-100)`,teal200:`var(--teal-200)`,teal300:`var(--teal-300)`,teal400:`var(--teal-400)`,teal500:`var(--teal-500)`,teal550:`var(--teal-550)`,teal600:`var(--teal-600)`,teal700:`var(--teal-700)`,teal800:`var(--teal-800)`,teal900:`var(--teal-900)`,green600:`var(--green-600)`};function Jn(e){"@babel/helpers - typeof";return Jn=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Jn(e)}var Yn=o((()=>{}));function Xn(e,t){if(Jn(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(Jn(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var Zn=o((()=>{Yn()}));function Qn(e){var t=Xn(e,`string`);return Jn(t)==`symbol`?t:t+``}var $n=o((()=>{Yn(),Zn()}));function er(e,t,n){return(t=Qn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var tr=o((()=>{$n()}));function nr(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var rr=typeof Symbol==`function`&&Symbol.observable||`@@observable`,ir=()=>Math.random().toString(36).substring(7).split(``).join(`.`),ar={INIT:`@@redux/INIT${ir()}`,REPLACE:`@@redux/REPLACE${ir()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${ir()}`};function or(e){if(typeof e!=`object`||!e)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||Object.getPrototypeOf(e)===null}function sr(e,t,n){if(typeof e!=`function`)throw Error(nr(2));if(typeof t==`function`&&typeof n==`function`||typeof n==`function`&&typeof arguments[3]==`function`)throw Error(nr(0));if(typeof t==`function`&&n===void 0&&(n=t,t=void 0),n!==void 0){if(typeof n!=`function`)throw Error(nr(1));return n(sr)(e,t)}let r=e,i=t,a=new Map,o=a,s=0,c=!1;function l(){o===a&&(o=new Map,a.forEach((e,t)=>{o.set(t,e)}))}function u(){if(c)throw Error(nr(3));return i}function d(e){if(typeof e!=`function`)throw Error(nr(4));if(c)throw Error(nr(5));let t=!0;l();let n=s++;return o.set(n,e),function(){if(t){if(c)throw Error(nr(6));t=!1,l(),o.delete(n),a=null}}}function f(e){if(!or(e))throw Error(nr(7));if(e.type===void 0)throw Error(nr(8));if(typeof e.type!=`string`)throw Error(nr(17));if(c)throw Error(nr(9));try{c=!0,i=r(i,e)}finally{c=!1}return(a=o).forEach(e=>{e()}),e}function p(e){if(typeof e!=`function`)throw Error(nr(10));r=e,f({type:ar.REPLACE})}function m(){let e=d;return{subscribe(t){if(typeof t!=`object`||!t)throw Error(nr(11));function n(){let e=t;e.next&&e.next(u())}return n(),{unsubscribe:e(n)}},[rr](){return this}}}return f({type:ar.INIT}),{dispatch:f,subscribe:d,getState:u,replaceReducer:p,[rr]:m}}function cr(e){Object.keys(e).forEach(t=>{let n=e[t];if(n(void 0,{type:ar.INIT})===void 0)throw Error(nr(12));if(n(void 0,{type:ar.PROBE_UNKNOWN_ACTION()})===void 0)throw Error(nr(13))})}function lr(e){let t=Object.keys(e),n={};for(let r=0;re:e.length===1?e[0]:e.reduce((e,t)=>(...n)=>e(t(...n)))}function dr(...e){return t=>(n,r)=>{let i=t(n,r),a=()=>{throw Error(nr(15))},o={getState:i.getState,dispatch:(e,...t)=>a(e,...t)};return a=ur(...e.map(e=>e(o)))(i.dispatch),{...i,dispatch:a}}}function fr(e){return or(e)&&`type`in e&&typeof e.type==`string`}var pr=Symbol.for(`immer-nothing`),mr=Symbol.for(`immer-draftable`),hr=Symbol.for(`immer-state`);function gr(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var _r=Object,vr=_r.getPrototypeOf,yr=`constructor`,br=`prototype`,xr=`configurable`,Sr=`enumerable`,Cr=`writable`,wr=`value`,Tr=e=>!!e&&!!e[hr];function Er(e){return e?kr(e)||Ir(e)||!!e[mr]||!!e[yr]?.[mr]||Lr(e)||Rr(e):!1}var Dr=_r[br][yr].toString(),Or=new WeakMap;function kr(e){if(!e||!zr(e))return!1;let t=vr(e);if(t===null||t===_r[br])return!0;let n=_r.hasOwnProperty.call(t,yr)&&t[yr];if(n===Object)return!0;if(!Br(n))return!1;let r=Or.get(n);return r===void 0&&(r=Function.toString.call(n),Or.set(n,r)),r===Dr}function Ar(e,t,n=!0){jr(e)===0?(n?Reflect.ownKeys(e):_r.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function jr(e){let t=e[hr];return t?t.type_:Ir(e)?1:Lr(e)?2:Rr(e)?3:0}var Mr=(e,t,n=jr(e))=>n===2?e.has(t):_r[br].hasOwnProperty.call(e,t),Nr=(e,t,n=jr(e))=>n===2?e.get(t):e[t],Pr=(e,t,n,r=jr(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function Fr(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Ir=Array.isArray,Lr=e=>e instanceof Map,Rr=e=>e instanceof Set,zr=e=>typeof e==`object`,Br=e=>typeof e==`function`,Vr=e=>typeof e==`boolean`;function Hr(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Ur=e=>e.copy_||e.base_,Wr=e=>e.modified_?e.copy_:e.base_;function Gr(e,t){if(Lr(e))return new Map(e);if(Rr(e))return new Set(e);if(Ir(e))return Array[br].slice.call(e);let n=kr(e);if(t===!0||t===`class_only`&&!n){let t=_r.getOwnPropertyDescriptors(e);delete t[hr];let n=Reflect.ownKeys(t);for(let r=0;r1&&_r.defineProperties(e,{set:Jr,add:Jr,clear:Jr,delete:Jr}),_r.freeze(e),t&&Ar(e,(e,t)=>{Kr(t,!0)},!1),e)}function qr(){gr(2)}var Jr={[wr]:qr};function Yr(e){return e===null||!zr(e)?!0:_r.isFrozen(e)}var Xr=`MapSet`,Zr=`Patches`,Qr=`ArrayMethods`,$r={};function ei(e){let t=$r[e];return t||gr(0,e),t}var ti=e=>!!$r[e],ni,ri=()=>ni,ii=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:ti(Xr)?ei(Xr):void 0,arrayMethodsPlugin_:ti(Qr)?ei(Qr):void 0});function ai(e,t){t&&(e.patchPlugin_=ei(Zr),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function oi(e){si(e),e.drafts_.forEach(li),e.drafts_=null}function si(e){e===ni&&(ni=e.parent_)}var ci=e=>ni=ii(ni,e);function li(e){let t=e[hr];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function ui(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[hr].modified_&&(oi(t),gr(4)),Er(e)&&(e=di(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[hr].base_,e,t)}else e=di(t,n);return fi(t,e,!0),oi(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===pr?void 0:e}function di(e,t){if(Yr(t))return t;let n=t[hr];if(!n)return bi(t,e.handledSet_,e);if(!mi(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);vi(n,e)}return n.copy_}function fi(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Kr(t,n)}function pi(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var mi=(e,t)=>e.scope_===t,hi=[];function gi(e,t,n,r){let i=Ur(e),a=e.type_;if(r!==void 0&&Nr(i,r,a)===t){Pr(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;Ar(i,(e,n)=>{if(Tr(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??hi;for(let e of o)Pr(i,e,n,a)}function _i(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!mi(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=Wr(i);gi(e,i.draft_??i,a,n),vi(i,r)})}function vi(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}pi(e)}}function yi(e,t,n){let{scope_:r}=e;if(Tr(n)){let i=n[hr];mi(i,r)&&i.callbacks_.push(function(){Oi(e),gi(e,n,Wr(i),t)})}else Er(n)&&e.callbacks_.push(function(){let i=Ur(e);e.type_===3?i.has(n)&&bi(n,r.handledSet_,r):Nr(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&bi(Nr(e.copy_,t,e.type_),r.handledSet_,r)})}function bi(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||Tr(e)||t.has(e)||!Er(e)||Yr(e)?e:(t.add(e),Ar(e,(r,i)=>{if(Tr(i)){let t=i[hr];mi(t,n)&&(Pr(e,r,Wr(t),e.type_),pi(t))}else Er(i)&&bi(i,t,n)}),e)}function xi(e,t){let n=Ir(e),r={type_:+!!n,scope_:t?t.scope_:ri(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=Si;n&&(i=[r],a=Ci);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var Si={get(e,t){if(t===hr)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=Ur(e);if(!Mr(i,t,e.type_))return Ti(e,i,t);let a=i[t];if(e.finalized_||!Er(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Hr(t))return a;if(a===wi(e.base_,t)){Oi(e);let n=e.type_===1?+t:t,r=Ai(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in Ur(e)},ownKeys(e){return Reflect.ownKeys(Ur(e))},set(e,t,n){let r=Ei(Ur(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=wi(Ur(e),t),i=r?.[hr];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(Fr(n,r)&&(n!==void 0||Mr(e.base_,t,e.type_)))return!0;Oi(e),Di(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),yi(e,t,n),!0)},deleteProperty(e,t){return Oi(e),wi(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),Di(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=Ur(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[Cr]:!0,[xr]:e.type_!==1||t!==`length`,[Sr]:r[Sr],[wr]:n[t]}},defineProperty(){gr(11)},getPrototypeOf(e){return vr(e.base_)},setPrototypeOf(){gr(12)}},Ci={};for(let e in Si){let t=Si[e];Ci[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}Ci.deleteProperty=function(e,t){return Ci.set.call(this,e,t,void 0)},Ci.set=function(e,t,n){return Si.set.call(this,e[0],t,n,e[0])};function wi(e,t){let n=e[hr];return(n?Ur(n):e)[t]}function Ti(e,t,n){let r=Ei(t,n);return r?wr in r?r[wr]:r.get?.call(e.draft_):void 0}function Ei(e,t){if(!(t in e))return;let n=vr(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=vr(n)}}function Di(e){e.modified_||(e.modified_=!0,e.parent_&&Di(e.parent_))}function Oi(e){e.copy_||(e.assigned_=new Map,e.copy_=Gr(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var ki=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(Br(e)&&!Br(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}Br(t)||gr(6),n!==void 0&&!Br(n)&&gr(7);let r;if(Er(e)){let i=ci(this),a=Ai(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?oi(i):si(i)}return ai(i,n),ui(r,i)}else if(!e||!zr(e)){if(r=t(e),r===void 0&&(r=e),r===pr&&(r=void 0),this.autoFreeze_&&Kr(r,!0),n){let t=[],i=[];ei(Zr).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}else gr(1,e)},this.produceWithPatches=(e,t)=>{if(Br(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},Vr(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Vr(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Vr(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Er(e)||gr(8),Tr(e)&&(e=ji(e));let t=ci(this),n=Ai(t,e,void 0);return n[hr].isManual_=!0,si(t),n}finishDraft(e,t){let n=e&&e[hr];(!n||!n.isManual_)&&gr(9);let{scope_:r}=n;return ai(r,t),ui(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=ei(Zr).applyPatches_;return Tr(e)?r(e,t):this.produce(e,e=>r(e,t))}};function Ai(e,t,n,r){let[i,a]=Lr(t)?ei(Xr).proxyMap_(t,n):Rr(t)?ei(Xr).proxySet_(t,n):xi(t,n);return(n?.scope_??ri()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?_i(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function ji(e){return Tr(e)||gr(10,e),Mi(e)}function Mi(e){if(!Er(e)||Yr(e))return e;let t=e[hr],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Gr(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Gr(e,!0);return Ar(n,(e,t)=>{Pr(n,e,Mi(t))},r),t&&(t.finalized_=!1),n}var Ni=new ki().produce;function Pi(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!=`function`)throw TypeError(t)}function Fi(e,t=`expected an object, instead received ${typeof e}`){if(typeof e!=`object`)throw TypeError(t)}function Ii(e,t=`expected all items to be functions, instead received the following types: `){if(!e.every(e=>typeof e==`function`)){let n=e.map(e=>typeof e==`function`?`function ${e.name||`unnamed`}()`:typeof e).join(`, `);throw TypeError(`${t}[${n}]`)}}var Li=e=>Array.isArray(e)?e:[e];function Ri(e){let t=Array.isArray(e[0])?e[0]:e;return Ii(t,`createSelector expects all input-selectors to be functions, but received the following types: `),t}function zi(e,t){let n=[],{length:r}=e;for(let i=0;i{n=Wi(),o.resetResultsCount()},o.resultsCount=()=>a,o.resetResultsCount=()=>{a=0},o}function Ki(e,...t){let n=typeof e==`function`?{memoize:e,memoizeOptions:t}:e,r=(...e)=>{let t=0,r=0,i,a={},o=e.pop();typeof o==`object`&&(a=o,o=e.pop()),Pi(o,`createSelector expects an output function after the inputs, but received: [${typeof o}]`);let{memoize:s,memoizeOptions:c=[],argsMemoize:l=Gi,argsMemoizeOptions:u=[],devModeChecks:d={}}={...n,...a},f=Li(c),p=Li(u),m=Ri(e),h=s(function(){return t++,o.apply(null,arguments)},...f),g=l(function(){r++;let e=zi(m,arguments);return i=h.apply(null,e),i},...p);return Object.assign(g,{resultFunc:o,memoizedResultFunc:h,dependencies:m,dependencyRecomputations:()=>r,resetDependencyRecomputations:()=>{r=0},lastResult:()=>i,recomputations:()=>t,resetRecomputations:()=>{t=0},memoize:s,argsMemoize:l})};return Object.assign(r,{withTypes:()=>r}),r}var L=Ki(Gi),qi=Object.assign((e,t=L)=>{Fi(e,`createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof e}`);let n=Object.keys(e);return t(n.map(t=>e[t]),(...e)=>e.reduce((e,t,r)=>(e[n[r]]=t,e),{}))},{withTypes:()=>qi});function Ji(e){return({dispatch:t,getState:n})=>r=>i=>typeof i==`function`?i(t,n,e):r(i)}var Yi=Ji(),Xi=Ji;tr();var Zi=typeof window<`u`&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]==`object`?ur:ur.apply(null,arguments)};typeof window<`u`&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__;function Qi(e,t){function n(...n){if(t){let r=t(...n);if(!r)throw Error(ao(0));return{type:e,payload:r.payload,...`meta`in r&&{meta:r.meta},...`error`in r&&{error:r.error}}}return{type:e,payload:n[0]}}return n.toString=()=>`${e}`,n.type=e,n.match=t=>fr(t)&&t.type===e,n}var $i=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function ea(e){return Er(e)?Ni(e,()=>{}):e}function ta(e,t,n){return e.has(t)?e.get(t):e.set(t,n(t)).get(t)}function na(e){return typeof e==`boolean`}var ra=()=>function(e){let{thunk:t=!0,immutableCheck:n=!0,serializableCheck:r=!0,actionCreatorCheck:i=!0}=e??{},a=new $i;return t&&(na(t)?a.push(Yi):a.push(Xi(t.extraArgument))),a},ia=`RTK_autoBatch`,R=()=>e=>({payload:e,meta:{[ia]:!0}}),aa=e=>t=>{setTimeout(t,e)},oa=(e={type:`raf`})=>t=>(...n)=>{let r=t(...n),i=!0,a=!1,o=!1,s=new Set,c=e.type===`tick`?queueMicrotask:e.type===`raf`?typeof window<`u`&&window.requestAnimationFrame?window.requestAnimationFrame:aa(10):e.type===`callback`?e.queueNotification:aa(e.timeout),l=()=>{o=!1,a&&(a=!1,s.forEach(e=>e()))};return Object.assign({},r,{subscribe(e){let t=r.subscribe(()=>i&&e());return s.add(e),()=>{t(),s.delete(e)}},dispatch(e){try{return i=!e?.meta?.[ia],a=!i,a&&(o||(o=!0,c(l))),r.dispatch(e)}finally{i=!0}}})},sa=e=>function(t){let{autoBatch:n=!0}=t??{},r=new $i(e);return n&&r.push(oa(typeof n==`object`?n:void 0)),r};function ca(e){let t=ra(),{reducer:n=void 0,middleware:r,devTools:i=!0,duplicateMiddlewareCheck:a=!0,preloadedState:o=void 0,enhancers:s=void 0}=e||{},c;if(typeof n==`function`)c=n;else if(or(n))c=lr(n);else throw Error(ao(1));let l;l=typeof r==`function`?r(t):t();let u=ur;i&&(u=Zi({trace:!1,...typeof i==`object`&&i}));let d=sa(dr(...l)),f=typeof s==`function`?s(d):d(),p=u(...f);return sr(c,o,p)}function la(e){let t={},n=[],r,i={addCase(e,n){let r=typeof e==`string`?e:e.type;if(!r)throw Error(ao(28));if(r in t)throw Error(ao(29));return t[r]=n,i},addAsyncThunk(e,r){return r.pending&&(t[e.pending.type]=r.pending),r.rejected&&(t[e.rejected.type]=r.rejected),r.fulfilled&&(t[e.fulfilled.type]=r.fulfilled),r.settled&&n.push({matcher:e.settled,reducer:r.settled}),i},addMatcher(e,t){return n.push({matcher:e,reducer:t}),i},addDefaultCase(e){return r=e,i}};return e(i),[t,n,r]}function ua(e){return typeof e==`function`}function da(e,t){let[n,r,i]=la(t),a;if(ua(e))a=()=>ea(e());else{let t=ea(e);a=()=>t}function o(e=a(),t){let o=[n[t.type],...r.filter(({matcher:e})=>e(t)).map(({reducer:e})=>e)];return o.filter(e=>!!e).length===0&&(o=[i]),o.reduce((e,n)=>{if(n)if(Tr(e)){let r=n(e,t);return r===void 0?e:r}else if(Er(e))return Ni(e,e=>n(e,t));else{let r=n(e,t);if(r===void 0){if(e===null)return e;throw Error(`A case reducer on a non-draftable value must not return undefined`)}return r}return e},e)}return o.getInitialState=a,o}var fa=`ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW`,pa=(e=21)=>{let t=``,n=e;for(;n--;)t+=fa[Math.random()*64|0];return t},ma=Symbol.for(`rtk-slice-createasyncthunk`);function ha(e,t){return`${e}/${t}`}function ga({creators:e}={}){let t=e?.asyncThunk?.[ma];return function(e){let{name:n,reducerPath:r=n}=e;if(!n)throw Error(ao(11));let i=(typeof e.reducers==`function`?e.reducers(ya()):e.reducers)||{},a=Object.keys(i),o={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},s={addCase(e,t){let n=typeof e==`string`?e:e.type;if(!n)throw Error(ao(12));if(n in o.sliceCaseReducersByType)throw Error(ao(13));return o.sliceCaseReducersByType[n]=t,s},addMatcher(e,t){return o.sliceMatchers.push({matcher:e,reducer:t}),s},exposeAction(e,t){return o.actionCreators[e]=t,s},exposeCaseReducer(e,t){return o.sliceCaseReducersByName[e]=t,s}};a.forEach(r=>{let a=i[r],o={reducerName:r,type:ha(n,r),createNotation:typeof e.reducers==`function`};xa(a)?Ca(o,a,s,t):ba(o,a,s)});function c(){let[t={},n=[],r=void 0]=typeof e.extraReducers==`function`?la(e.extraReducers):[e.extraReducers],i={...t,...o.sliceCaseReducersByType};return da(e.initialState,e=>{for(let t in i)e.addCase(t,i[t]);for(let t of o.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of n)e.addMatcher(t.matcher,t.reducer);r&&e.addDefaultCase(r)})}let l=e=>e,u=new Map,d=new WeakMap,f;function p(e,t){return f||(f=c()),f(e,t)}function m(){return f||(f=c()),f.getInitialState()}function h(t,n=!1){function r(e){let i=e[t];return i===void 0&&n&&(i=ta(d,r,m)),i}function i(t=l){return ta(ta(u,n,()=>new WeakMap),t,()=>{let r={};for(let[i,a]of Object.entries(e.selectors??{}))r[i]=_a(a,t,()=>ta(d,t,m),n);return r})}return{reducerPath:t,getSelectors:i,get selectors(){return i(r)},selectSlice:r}}let g={name:n,reducer:p,actions:o.actionCreators,caseReducers:o.sliceCaseReducersByName,getInitialState:m,...h(r),injectInto(e,{reducerPath:t,...n}={}){let i=t??r;return e.inject({reducerPath:i,reducer:p},n),{...g,...h(i,!0)}}};return g}}function _a(e,t,n,r){function i(i,...a){let o=t(i);return o===void 0&&r&&(o=n()),e(o,...a)}return i.unwrapped=e,i}var va=ga();function ya(){function e(e,t){return{_reducerDefinitionType:`asyncThunk`,payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer(e){return Object.assign({[e.name](...t){return e(...t)}}[e.name],{_reducerDefinitionType:`reducer`})},preparedReducer(e,t){return{_reducerDefinitionType:`reducerWithPrepare`,prepare:e,reducer:t}},asyncThunk:e}}function ba({type:e,reducerName:t,createNotation:n},r,i){let a,o;if(`reducer`in r){if(n&&!Sa(r))throw Error(ao(17));a=r.reducer,o=r.prepare}else a=r;i.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,o?Qi(e,o):Qi(e))}function xa(e){return e._reducerDefinitionType===`asyncThunk`}function Sa(e){return e._reducerDefinitionType===`reducerWithPrepare`}function Ca({type:e,reducerName:t},n,r,i){if(!i)throw Error(ao(18));let{payloadCreator:a,fulfilled:o,pending:s,rejected:c,settled:l,options:u}=n,d=i(e,a,u);r.exposeAction(t,d),o&&r.addCase(d.fulfilled,o),s&&r.addCase(d.pending,s),c&&r.addCase(d.rejected,c),l&&r.addMatcher(d.settled,l),r.exposeCaseReducer(t,{fulfilled:o||wa,pending:s||wa,rejected:c||wa,settled:l||wa})}function wa(){}var Ta=`task`,Ea=`listener`,Da=`completed`,Oa=`cancelled`,ka=`task-${Oa}`,Aa=`task-${Da}`,ja=`${Ea}-${Oa}`,Ma=`${Ea}-${Da}`,Na=class{constructor(e){er(this,`name`,`TaskAbortError`),er(this,`message`,void 0),this.code=e,this.message=`${Ta} ${Oa} (reason: ${e})`}},Pa=(e,t)=>{if(typeof e!=`function`)throw TypeError(ao(32))},Fa=()=>{},Ia=(e,t=Fa)=>(e.catch(t),e),La=(e,t)=>(e.addEventListener(`abort`,t,{once:!0}),()=>e.removeEventListener(`abort`,t)),Ra=e=>{if(e.aborted)throw new Na(e.reason)};function za(e,t){let n=Fa;return new Promise((r,i)=>{let a=()=>i(new Na(e.reason));if(e.aborted){a();return}n=La(e,a),t.finally(()=>n()).then(r,i)}).finally(()=>{n=Fa})}var Ba=async(e,t)=>{try{return await Promise.resolve(),{status:`ok`,value:await e()}}catch(e){return{status:e instanceof Na?`cancelled`:`rejected`,error:e}}finally{t?.()}},Va=e=>t=>Ia(za(e,t).then(t=>(Ra(e),t))),Ha=e=>{let t=Va(e);return e=>t(new Promise(t=>setTimeout(t,e)))},{assign:Ua}=Object,Wa={},Ga=`listenerMiddleware`,Ka=(e,t)=>{let n=t=>La(e,()=>t.abort(e.reason));return(r,i)=>{Pa(r,`taskExecutor`);let a=new AbortController;n(a);let o=Ba(async()=>{Ra(e),Ra(a.signal);let t=await r({pause:Va(a.signal),delay:Ha(a.signal),signal:a.signal});return Ra(a.signal),t},()=>a.abort(Aa));return i?.autoJoin&&t.push(o.catch(Fa)),{result:Va(e)(o),cancel(){a.abort(ka)}}}},qa=(e,t)=>{let n=async(n,r)=>{Ra(t);let i=()=>{},a=[new Promise((t,r)=>{let a=e({predicate:n,effect:(e,n)=>{n.unsubscribe(),t([e,n.getState(),n.getOriginalState()])}});i=()=>{a(),r()}})];r!=null&&a.push(new Promise(e=>setTimeout(e,r,null)));try{let e=await za(t,Promise.race(a));return Ra(t),e}finally{i()}};return(e,t)=>Ia(n(e,t))},Ja=e=>{let{type:t,actionCreator:n,matcher:r,predicate:i,effect:a}=e;if(t)i=Qi(t).match;else if(n)t=n.type,i=n.match;else if(r)i=r;else if(!i)throw Error(ao(21));return Pa(a,`options.listener`),{predicate:i,type:t,effect:a}},Ya=Ua(e=>{let{type:t,predicate:n,effect:r}=Ja(e);return{id:pa(),effect:r,type:t,predicate:n,pending:new Set,unsubscribe:()=>{throw Error(ao(22))}}},{withTypes:()=>Ya}),Xa=(e,t)=>{let{type:n,effect:r,predicate:i}=Ja(t);return Array.from(e.values()).find(e=>(typeof n==`string`?e.type===n:e.predicate===i)&&e.effect===r)},Za=e=>{e.pending.forEach(e=>{e.abort(ja)})},Qa=(e,t)=>()=>{for(let e of t.keys())Za(e);e.clear()},$a=(e,t,n)=>{try{e(t,n)}catch(e){setTimeout(()=>{throw e},0)}},eo=Ua(Qi(`${Ga}/add`),{withTypes:()=>eo}),to=Qi(`${Ga}/removeAll`),no=Ua(Qi(`${Ga}/remove`),{withTypes:()=>no}),ro=(...e)=>{console.error(`${Ga}/error`,...e)},io=(e={})=>{let t=new Map,n=new Map,r=e=>{let t=n.get(e)??0;n.set(e,t+1)},i=e=>{let t=n.get(e)??1;t===1?n.delete(e):n.set(e,t-1)},{extra:a,onError:o=ro}=e;Pa(o,`onError`);let s=e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&Za(e)}),c=e=>s(Xa(t,e)??Ya(e));Ua(c,{withTypes:()=>c});let l=e=>{let n=Xa(t,e);return n&&(n.unsubscribe(),e.cancelActive&&Za(n)),!!n};Ua(l,{withTypes:()=>l});let u=async(e,n,s,l)=>{let u=new AbortController,d=qa(c,u.signal),f=[];try{e.pending.add(u),r(e),await Promise.resolve(e.effect(n,Ua({},s,{getOriginalState:l,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Ha(u.signal),pause:Va(u.signal),extra:a,signal:u.signal,fork:Ka(u.signal,f),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach((e,t,n)=>{e!==u&&(e.abort(ja),n.delete(e))})},cancel:()=>{u.abort(ja),e.pending.delete(u)},throwIfCancelled:()=>{Ra(u.signal)}})))}catch(e){e instanceof Na||$a(o,e,{raisedBy:`effect`})}finally{await Promise.all(f),u.abort(Ma),i(e),e.pending.delete(u)}},d=Qa(t,n);return{middleware:e=>n=>r=>{if(!fr(r))return n(r);if(eo.match(r))return c(r.payload);if(to.match(r)){d();return}if(no.match(r))return l(r.payload);let i=e.getState(),a=()=>{if(i===Wa)throw Error(ao(23));return i},s;try{if(s=n(r),t.size>0){let n=e.getState(),s=Array.from(t.values());for(let t of s){let s=!1;try{s=t.predicate(r,n,i)}catch(e){s=!1,$a(o,e,{raisedBy:`predicate`})}s&&u(t,r,e,a)}}}finally{i=Wa}return s},startListening:c,stopListening:l,clearListeners:d}};function ao(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var oo=s((e=>{var t=f();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useSyncExternalStore,a=t.useRef,o=t.useEffect,s=t.useMemo,c=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,l,u){var d=a(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=s(function(){function e(e){if(!i){if(i=!0,a=e,e=l(e),u!==void 0&&f.hasValue){var t=f.value;if(u(t,e))return o=t}return o=e}if(t=o,r(a,e))return t;var n=l(e);return u!==void 0&&u(t,n)?(a=e,t):(a=e,o=n)}var i=!1,a,o,s=n===void 0?null:n;return[function(){return e(t())},s===null?void 0:function(){return e(s())}]},[t,n,l,u]);var p=i(e,d[0],d[1]);return o(function(){f.hasValue=!0,f.value=p},[p]),c(p),p}})),so=s(((e,t)=>{t.exports=oo()}))();function co(e){e()}function lo(){let e=null,t=null;return{clear(){e=null,t=null},notify(){co(()=>{let t=e;for(;t;)t.callback(),t=t.next})},get(){let t=[],n=e;for(;n;)t.push(n),n=n.next;return t},subscribe(n){let r=!0,i=t={callback:n,next:null,prev:t};return i.prev?i.prev.next=i:e=i,function(){!r||e===null||(r=!1,i.next?i.next.prev=i.prev:t=i.prev,i.prev?i.prev.next=i.next:e=i.next)}}}}var uo={notify(){},get:()=>[]};function fo(e,t){let n,r=uo,i=0,a=!1;function o(e){u();let t=r.subscribe(e),n=!1;return()=>{n||(n=!0,t(),d())}}function s(){r.notify()}function c(){m.onStateChange&&m.onStateChange()}function l(){return a}function u(){i++,n||(n=t?t.addNestedSub(c):e.subscribe(c),r=lo())}function d(){i--,n&&i===0&&(n(),n=void 0,r.clear(),r=uo)}function f(){a||(a=!0,u())}function p(){a&&(a=!1,d())}let m={addNestedSub:o,notifyNestedSubs:s,handleChangeWrapper:c,isSubscribed:l,trySubscribe:f,tryUnsubscribe:p,getListeners:()=>r};return m}var po=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,mo=typeof navigator<`u`&&navigator.product===`ReactNative`,ho=po||mo?_.useLayoutEffect:_.useEffect;function go(e,t){return e===t?e!==0||t!==0||1/e==1/t:e!==e&&t!==t}function _o(e,t){if(go(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r=0;r({store:i,subscription:fo(i),getServerState:r?()=>r:void 0}),[i,r]),o=_.useMemo(()=>i.getState(),[i]);ho(()=>{let{subscription:e}=a;return e.onStateChange=e.notifyNestedSubs,e.trySubscribe(),o!==i.getState()&&e.notifyNestedSubs(),()=>{e.tryUnsubscribe(),e.onStateChange=void 0}},[a,o]);let s=n||xo;return _.createElement(s.Provider,{value:a},t)}var Co=So;function wo(e=xo){return function(){return _.useContext(e)}}var To=wo();function Eo(e=xo){let t=e===xo?To:wo(e),n=()=>{let{store:e}=t();return e};return Object.assign(n,{withTypes:()=>n}),n}var Do=Eo();function Oo(e=xo){let t=e===xo?Do:Eo(e),n=()=>t().dispatch;return Object.assign(n,{withTypes:()=>n}),n}var ko=Oo(),Ao=(e,t)=>e===t;function jo(e=xo){let t=e===xo?To:wo(e),n=(e,n={})=>{let{equalityFn:r=Ao}=typeof n==`function`?{equalityFn:n}:n,{store:i,subscription:a,getServerState:o}=t();_.useRef(!0);let s=_.useCallback({[e.name](t){return e(t)}}[e.name],[e]),c=(0,so.useSyncExternalStoreWithSelector)(a.addNestedSub,i.getState,o||i.getState,s,r);return _.useDebugValue(c),c};return Object.assign(n,{withTypes:()=>n}),n}var Mo=jo(),No=(e,t={})=>{for(let[n,r]of Object.entries(t)){let t=RegExp(`\\{${n}\\}`,`g`);e=e.replace(t,r.toString())}return e},Po=(e,t={})=>e?typeof Craft<`u`?Craft.t(`freeform`,e,t):No(e,t):``;function Fo(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t{var{children:n,width:r,height:i,viewBox:a,className:o,style:s,title:c,desc:l}=e,u=qo(e,Go),d=a||{width:r,height:i,x:0,y:0},f=z(`recharts-surface`,o);return _.createElement(`svg`,Ko({},Uo(u),{className:f,width:r,height:i,style:s,viewBox:`${d.x} ${d.y} ${d.width} ${d.height}`,ref:t}),_.createElement(`title`,null,c),_.createElement(`desc`,null,l),n)}),Xo=[`children`,`className`];function Zo(){return Zo=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{children:n,className:r}=e,i=Qo(e,Xo),a=z(`recharts-layer`,r);return _.createElement(`g`,Zo({className:a},Uo(i),{ref:t}),n)}),ts=(0,_.createContext)(null),ns=()=>(0,_.useContext)(ts);function B(e){return function(){return e}}var rs=Math.cos,is=Math.sin,as=Math.sqrt,os=Math.PI;os/2;var ss=2*os,cs=Math.PI,ls=2*cs,us=1e-6,ds=ls-us;function fs(e){this._+=e[0];for(let t=1,n=e.length;t=0))throw Error(`invalid digits: ${e}`);if(t>15)return fs;let n=10**t;return function(e){this._+=e[0];for(let t=1,r=e.length;tus)if(!(Math.abs(u*s-c*l)>us)||!i)this._append`L${this._x1=e},${this._y1=t}`;else{let f=n-a,p=r-o,m=s*s+c*c,h=f*f+p*p,g=Math.sqrt(m),_=Math.sqrt(d),v=i*Math.tan((cs-Math.acos((m+d-h)/(2*g*_)))/2),y=v/_,b=v/g;Math.abs(y-1)>us&&this._append`L${e+y*l},${t+y*u}`,this._append`A${i},${i},0,0,${+(u*f>l*p)},${this._x1=e+b*s},${this._y1=t+b*c}`}}arc(e,t,n,r,i,a){if(e=+e,t=+t,n=+n,a=!!a,n<0)throw Error(`negative radius: ${n}`);let o=n*Math.cos(r),s=n*Math.sin(r),c=e+o,l=t+s,u=1^a,d=a?r-i:i-r;this._x1===null?this._append`M${c},${l}`:(Math.abs(this._x1-c)>us||Math.abs(this._y1-l)>us)&&this._append`L${c},${l}`,n&&(d<0&&(d=d%ls+ls),d>ds?this._append`A${n},${n},0,1,${u},${e-o},${t-s}A${n},${n},0,1,${u},${this._x1=c},${this._y1=l}`:d>us&&this._append`A${n},${n},0,${+(d>=cs)},${u},${this._x1=e+n*Math.cos(i)},${this._y1=t+n*Math.sin(i)}`)}rect(e,t,n,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}};function hs(){return new ms}hs.prototype=ms.prototype;function gs(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{let e=Math.floor(n);if(!(e>=0))throw RangeError(`invalid digits: ${n}`);t=e}return e},()=>new ms(t)}Array.prototype.slice;function _s(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function vs(e){this._context=e}vs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function ys(e){return new vs(e)}function bs(e){return e[0]}function xs(e){return e[1]}function Ss(e,t){var n=B(!0),r=null,i=ys,a=null,o=gs(s);e=typeof e==`function`?e:e===void 0?bs:B(e),t=typeof t==`function`?t:t===void 0?xs:B(t);function s(s){var c,l=(s=_s(s)).length,u,d=!1,f;for(r??(a=i(f=o())),c=0;c<=l;++c)!(c=d;--f)s.point(_[f],v[f]);s.lineEnd(),s.areaEnd()}h&&(_[u]=+e(m,u,l),v[u]=+t(m,u,l),s.point(r?+r(m,u,l):_[u],n?+n(m,u,l):v[u]))}if(g)return s=null,g+``||null}function u(){return Ss().defined(i).curve(o).context(a)}return l.x=function(t){return arguments.length?(e=typeof t==`function`?t:B(+t),r=null,l):e},l.x0=function(t){return arguments.length?(e=typeof t==`function`?t:B(+t),l):e},l.x1=function(e){return arguments.length?(r=e==null?null:typeof e==`function`?e:B(+e),l):r},l.y=function(e){return arguments.length?(t=typeof e==`function`?e:B(+e),n=null,l):t},l.y0=function(e){return arguments.length?(t=typeof e==`function`?e:B(+e),l):t},l.y1=function(e){return arguments.length?(n=e==null?null:typeof e==`function`?e:B(+e),l):n},l.lineX0=l.lineY0=function(){return u().x(e).y(t)},l.lineY1=function(){return u().x(e).y(n)},l.lineX1=function(){return u().x(r).y(t)},l.defined=function(e){return arguments.length?(i=typeof e==`function`?e:B(!!e),l):i},l.curve=function(e){return arguments.length?(o=e,a!=null&&(s=o(a)),l):o},l.context=function(e){return arguments.length?(e==null?a=s=null:s=o(a=e),l):a},l}var ws=class{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t);break}this._x0=e,this._y0=t}};function Ts(e){return new ws(e,!0)}function Es(e){return new ws(e,!1)}var Ds={draw(e,t){let n=as(t/os);e.moveTo(n,0),e.arc(0,0,n,0,ss)}},Os={draw(e,t){let n=as(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},ks=as(1/3),As=ks*2,js={draw(e,t){let n=as(t/As),r=n*ks;e.moveTo(0,-n),e.lineTo(r,0),e.lineTo(0,n),e.lineTo(-r,0),e.closePath()}},Ms={draw(e,t){let n=as(t),r=-n/2;e.rect(r,r,n,n)}},Ns=.8908130915292852,Ps=is(os/10)/is(7*os/10),Fs=is(ss/10)*Ps,Is=-rs(ss/10)*Ps,Ls={draw(e,t){let n=as(t*Ns),r=Fs*n,i=Is*n;e.moveTo(0,-n),e.lineTo(r,i);for(let t=1;t<5;++t){let a=ss*t/5,o=rs(a),s=is(a);e.lineTo(s*n,-o*n),e.lineTo(o*r-s*i,s*r+o*i)}e.closePath()}},Rs=as(3),zs={draw(e,t){let n=-as(t/(Rs*3));e.moveTo(0,n*2),e.lineTo(-Rs*n,-n),e.lineTo(Rs*n,-n),e.closePath()}},Bs=-.5,Vs=as(3)/2,Hs=1/as(12),Us=(Hs/2+1)*3,Ws={draw(e,t){let n=as(t/Us),r=n/2,i=n*Hs,a=r,o=n*Hs+n,s=-a,c=o;e.moveTo(r,i),e.lineTo(a,o),e.lineTo(s,c),e.lineTo(Bs*r-Vs*i,Vs*r+Bs*i),e.lineTo(Bs*a-Vs*o,Vs*a+Bs*o),e.lineTo(Bs*s-Vs*c,Vs*s+Bs*c),e.lineTo(Bs*r+Vs*i,Bs*i-Vs*r),e.lineTo(Bs*a+Vs*o,Bs*o-Vs*a),e.lineTo(Bs*s+Vs*c,Bs*c-Vs*s),e.closePath()}};function Gs(e,t){let n=null,r=gs(i);e=typeof e==`function`?e:B(e||Ds),t=typeof t==`function`?t:B(t===void 0?64:+t);function i(){let i;if(n||(n=i=r()),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),i)return n=null,i+``||null}return i.type=function(t){return arguments.length?(e=typeof t==`function`?t:B(t),i):e},i.size=function(e){return arguments.length?(t=typeof e==`function`?e:B(+e),i):t},i.context=function(e){return arguments.length?(n=e??null,i):n},i}function Ks(){}function qs(e,t,n){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+n)/6)}function Js(e){this._context=e}Js.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:qs(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:qs(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Ys(e){return new Js(e)}function Xs(e){this._context=e}Xs.prototype={areaStart:Ks,areaEnd:Ks,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:qs(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Zs(e){return new Xs(e)}function Qs(e){this._context=e}Qs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+e)/6,r=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:qs(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function $s(e){return new Qs(e)}function ec(e){this._context=e}ec.prototype={areaStart:Ks,areaEnd:Ks,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function tc(e){return new ec(e)}function nc(e){return e<0?-1:1}function rc(e,t,n){var r=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(r||i<0&&-0),o=(n-e._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(nc(a)+nc(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function ic(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function ac(e,t,n){var r=e._x0,i=e._y0,a=e._x1,o=e._y1,s=(a-r)/3;e._context.bezierCurveTo(r+s,i+s*t,a-s,o-s*n,a,o)}function oc(e){this._context=e}oc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:ac(this,this._t0,ic(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,ac(this,ic(this,n=rc(this,e,t)),n);break;default:ac(this,this._t0,n=rc(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}};function sc(e){this._context=new cc(e)}(sc.prototype=Object.create(oc.prototype)).point=function(e,t){oc.prototype.point.call(this,t,e)};function cc(e){this._context=e}cc.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,n,r,i,a){this._context.bezierCurveTo(t,e,r,n,a,i)}};function lc(e){return new oc(e)}function uc(e){return new sc(e)}function dc(e){this._context=e}dc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,n=e.length;if(n)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),n===2)this._context.lineTo(e[1],t[1]);else for(var r=fc(e),i=fc(t),a=0,o=1;o=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[n-1]=(e[n]+i[n-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}break}this._x=e,this._y=t}};function hc(e){return new mc(e,.5)}function gc(e){return new mc(e,0)}function _c(e){return new mc(e,1)}function vc(e,t){if((o=e.length)>1)for(var n=1,r,i,a=e[t[0]],o,s=a.length;n=0;)n[t]=t;return n}function bc(e,t){return e[t]}function xc(e){let t=[];return t.key=e,t}function Sc(){var e=B([]),t=yc,n=vc,r=bc;function i(i){var a=Array.from(e.apply(this,arguments),xc),o,s=a.length,c=-1,l;for(let e of i)for(o=0,++c;o0){for(var n,r,i=0,a=e[0].length,o;i0){for(var n=0,r=e[t[0]],i,a=r.length;n0)||!((a=(i=e[t[0]]).length)>0))){for(var n=0,r=1,i,a,o;r{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e===`__proto__`}e.isUnsafeProperty=t})),Dc=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){switch(typeof e){case`number`:case`symbol`:return!1;case`string`:return e.includes(`.`)||e.includes(`[`)||e.includes(`]`)}}e.isDeepKey=t})),Oc=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`string`||typeof e==`symbol`?e:Object.is(e?.valueOf?.(),-0)?`-0`:String(e)}e.toKey=t})),kc=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){if(e==null)return``;if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(t).join(`,`);let n=String(e);return n===`0`&&Object.is(Number(e),-0)?`-0`:n}e.toString=t})),Ac=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=kc(),n=Oc();function r(e){if(Array.isArray(e))return e.map(n.toKey);if(typeof e==`symbol`)return[e];e=t.toString(e);let r=[],i=e.length;if(i===0)return r;let a=0,o=``,s=``,c=!1;for(e.charCodeAt(0)===46&&(r.push(``),a++);a{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Ec(),n=Dc(),r=Oc(),i=Ac();function a(e,s,c){if(e==null)return c;switch(typeof s){case`string`:{if(t.isUnsafeProperty(s))return c;let r=e[s];return r===void 0?n.isDeepKey(s)?a(e,i.toPath(s),c):c:r}case`number`:case`symbol`:{typeof s==`number`&&(s=r.toKey(s));let t=e[s];return t===void 0?c:t}default:{if(Array.isArray(s))return o(e,s,c);if(s=Object.is(s?.valueOf(),-0)?`-0`:String(s),t.isUnsafeProperty(s))return c;let n=e[s];return n===void 0?c:n}}}function o(e,n,r){if(n.length===0)return r;let i=e;for(let e=0;e{t.exports=jc().get})),Nc=u(Mc()),Pc=4;function Fc(e){var t=10**(arguments.length>1&&arguments[1]!==void 0?arguments[1]:Pc),n=Math.round(e*t)/t;return Object.is(n,-0)?0:n}function V(e){var t=[...arguments].slice(1);return e.reduce((e,n,r)=>{var i=t[r-1];return typeof i==`string`?e+i+n:i===void 0?e+n:e+Fc(i)+n},``)}var Ic=e=>e===0?0:e>0?1:-1,Lc=e=>typeof e==`number`&&e!=+e,Rc=e=>typeof e==`string`&&e.indexOf(`%`)===e.length-1,H=e=>(typeof e==`number`||e instanceof Number)&&!Lc(e),zc=e=>H(e)||typeof e==`string`,Bc=0,Vc=e=>{var t=++Bc;return`${e||``}${t}`},Hc=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!H(e)&&typeof e!=`string`)return n;var i;if(Rc(e)){if(t==null)return n;var a=e.indexOf(`%`);i=t*parseFloat(e.slice(0,a))/100}else i=+e;return Lc(i)&&(i=n),r&&t!=null&&i>t&&(i=t),i},Uc=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,n={},r=0;re&&(typeof t==`function`?t(e):(0,Nc.default)(e,t))===n)}var U=e=>e==null,Kc=e=>U(e)?e:`${e.charAt(0).toUpperCase()}${e.slice(1)}`;function qc(e){return e!=null}function Jc(){}var Yc=[`type`,`size`,`sizeType`];function Xc(){return Xc=Object.assign?Object.assign.bind():function(e){for(var t=1;til[`symbol${Kc(e)}`]||Ds,sl=(e,t,n)=>{if(t===`area`)return e;switch(n){case`cross`:return 5*e*e/9;case`diamond`:return .5*e*e/Math.sqrt(3);case`square`:return e*e;case`star`:var r=18*al;return 1.25*e*e*(Math.tan(r)-Math.tan(r*2)*Math.tan(r)**2);case`triangle`:return Math.sqrt(3)*e*e/4;case`wye`:return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}},cl=(e,t)=>{il[`symbol${Kc(e)}`]=t},ll=e=>{var{type:t=`circle`,size:n=64,sizeType:r=`area`}=e,i=Qc(Qc({},nl(e,Yc)),{},{type:t,size:n,sizeType:r}),a=`circle`;typeof t==`string`&&(a=t);var o=()=>{var e=ol(a),t=Gs().type(e).size(sl(n,r,a))();if(t!==null)return t},{className:s,cx:c,cy:l}=i,u=Uo(i);return H(c)&&H(l)&&H(n)?_.createElement(`path`,Xc({},u,{className:z(`recharts-symbols`,s),transform:`translate(${c}, ${l})`,d:o()})):null};ll.registerSymbol=cl;var ul=e=>`radius`in e&&`startAngle`in e&&`endAngle`in e,dl=(e,t)=>{if(!e||typeof e==`function`||typeof e==`boolean`)return null;var n=e;if((0,_.isValidElement)(e)&&(n=e.props),typeof n!=`object`&&typeof n!=`function`)return null;var r={};return Object.keys(n).forEach(e=>{Lo(e)&&typeof n[e]==`function`&&(r[e]=t||(t=>n[e](n,t)))}),r},fl=(e,t,n)=>r=>(e(t,n,r),null),pl=(e,t,n)=>{if(e===null||typeof e!=`object`&&typeof e!=`function`)return null;var r=null;return Object.keys(e).forEach(i=>{var a=e[i];Lo(i)&&typeof a==`function`&&(r||(r={}),r[i]=fl(a,t,n))}),r};function ml(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function hl(e){for(var t=1;t(e[t]===void 0&&r[t]!==void 0&&(e[t]=r[t]),e),n)}var bl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){let n=new Map;for(let r=0;r{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){return function(...n){return e.apply(this,n.slice(0,t))}}e.ary=t})),Sl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e}e.identity=t})),Cl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return Number.isSafeInteger(e)&&e>=0}e.isLength=t})),wl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Cl();function n(e){return e!=null&&typeof e!=`function`&&t.isLength(e.length)}e.isArrayLike=n})),Tl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`object`&&!!e}e.isObjectLike=t})),El=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=wl(),n=Tl();function r(e){return n.isObjectLike(e)&&t.isArrayLike(e)}e.isArrayLikeObject=r})),Dl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=jc();function n(e){return function(n){return t.get(n,e)}}e.property=n})),Ol=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e!==null&&(typeof e==`object`||typeof e==`function`)}e.isObject=t})),kl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e==null||typeof e!=`object`&&typeof e!=`function`}e.isPrimitive=t})),Al=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}e.isEqualsSameValueZero=t})),jl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Ol(),n=kl(),r=Al();function i(e,t,n){return typeof n==`function`?a(e,t,function e(t,r,i,o,s,c){let l=n(t,r,i,o,s,c);return l===void 0?a(t,r,e,c):!!l},new Map):i(e,t,()=>void 0)}function a(e,n,i,s){if(n===e)return!0;switch(typeof n){case`object`:return o(e,n,i,s);case`function`:return Object.keys(n).length>0?a(e,{...n},i,s):r.isEqualsSameValueZero(e,n);default:return t.isObject(e)?typeof n==`string`?n===``:!0:r.isEqualsSameValueZero(e,n)}}function o(e,t,r,i){if(t==null)return!0;if(Array.isArray(t))return c(e,t,r,i);if(t instanceof Map)return s(e,t,r,i);if(t instanceof Set)return l(e,t,r,i);let a=Object.keys(t);if(e==null||n.isPrimitive(e))return a.length===0;if(a.length===0)return!0;if(i?.has(t))return i.get(t)===e;i?.set(t,e);try{for(let o=0;o{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=jl();function n(e,n){return t.isMatchWith(e,n,()=>void 0)}e.isMatch=n})),Nl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}e.getSymbols=t})),Pl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e==null?e===void 0?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}e.getTag=t})),Fl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),e.argumentsTag=`[object Arguments]`,e.arrayBufferTag=`[object ArrayBuffer]`,e.arrayTag=`[object Array]`,e.bigInt64ArrayTag=`[object BigInt64Array]`,e.bigUint64ArrayTag=`[object BigUint64Array]`,e.booleanTag=`[object Boolean]`,e.dataViewTag=`[object DataView]`,e.dateTag=`[object Date]`,e.errorTag=`[object Error]`,e.float32ArrayTag=`[object Float32Array]`,e.float64ArrayTag=`[object Float64Array]`,e.functionTag=`[object Function]`,e.int16ArrayTag=`[object Int16Array]`,e.int32ArrayTag=`[object Int32Array]`,e.int8ArrayTag=`[object Int8Array]`,e.mapTag=`[object Map]`,e.numberTag=`[object Number]`,e.objectTag=`[object Object]`,e.regexpTag=`[object RegExp]`,e.setTag=`[object Set]`,e.stringTag=`[object String]`,e.symbolTag=`[object Symbol]`,e.uint16ArrayTag=`[object Uint16Array]`,e.uint32ArrayTag=`[object Uint32Array]`,e.uint8ArrayTag=`[object Uint8Array]`,e.uint8ClampedArrayTag=`[object Uint8ClampedArray]`})),Il=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}e.isTypedArray=t})),Ll=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Nl(),n=Pl(),r=Fl(),i=kl(),a=Il();function o(e,t){return s(e,void 0,e,new Map,t)}function s(e,t,n,r=new Map,o=void 0){let u=o?.(e,t,n,r);if(u!==void 0)return u;if(i.isPrimitive(e))return e;if(r.has(e))return r.get(e);if(Array.isArray(e)){let t=Array(e.length);r.set(e,t);for(let i=0;i{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Ll();function n(e){return t.cloneDeepWithImpl(e,void 0,e,new Map,void 0)}e.cloneDeep=n})),zl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Ml(),n=Rl();function r(e){return e=n.cloneDeep(e),n=>t.isMatch(n,e)}e.matches=r})),Bl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Ll(),n=Pl(),r=Fl();function i(e,i){return t.cloneDeepWith(e,(a,o,s,c)=>{let l=i?.(a,o,s,c);if(l!==void 0)return l;if(typeof e==`object`){if(n.getTag(e)===r.objectTag&&typeof e.constructor!=`function`){let n={};return c.set(e,n),t.copyProperties(n,e,s,c),n}switch(Object.prototype.toString.call(e)){case r.numberTag:case r.stringTag:case r.booleanTag:{let n=new e.constructor(e?.valueOf());return t.copyProperties(n,e),n}case r.argumentsTag:{let n={};return t.copyProperties(n,e),n.length=e.length,n[Symbol.iterator]=e[Symbol.iterator],n}default:return}}})}e.cloneDeepWith=i})),Vl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Bl();function n(e){return t.cloneDeepWith(e)}e.cloneDeep=n})),Hl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=/^(?:0|[1-9]\d*)$/;function n(e,n=2**53-1){switch(typeof e){case`number`:return Number.isInteger(e)&&e>=0&&e{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Pl();function n(e){return typeof e==`object`&&!!e&&t.getTag(e)===`[object Arguments]`}e.isArguments=n})),Wl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Dc(),n=Hl(),r=Ul(),i=Ac();function a(e,a){let o;if(o=Array.isArray(a)?a:typeof a==`string`&&t.isDeepKey(a)&&e?.[a]==null?i.toPath(a):[a],o.length===0)return!1;let s=e;for(let e=0;e{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Ml(),n=Oc(),r=Vl(),i=jc(),a=Wl();function o(e,o){switch(typeof e){case`object`:Object.is(e?.valueOf(),-0)&&(e=`-0`);break;case`number`:e=n.toKey(e);break}return o=r.cloneDeep(o),function(n){let r=i.get(n,e);return r===void 0?a.has(n,e):o===void 0?r===void 0:t.isMatch(r,o)}}e.matchesProperty=o})),Kl=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Sl(),n=Dl(),r=zl(),i=Gl();function a(e){if(e==null)return t.identity;switch(typeof e){case`function`:return e;case`object`:return Array.isArray(e)&&e.length===2?i.matchesProperty(e[0],e[1]):r.matches(e);case`string`:case`symbol`:case`number`:return n.property(e)}}e.iteratee=a})),ql=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=bl(),n=xl(),r=Sl(),i=El(),a=Kl();function o(e,o=r.identity){return i.isArrayLikeObject(e)?t.uniqBy(Array.from(e),n.ary(a.iteratee(o),1)):[]}e.uniqBy=o})),Jl=u(s(((e,t)=>{t.exports=ql().uniqBy}))());function Yl(e,t,n){return t===!0?(0,Jl.default)(e,n):typeof t==`function`?(0,Jl.default)(e,t):e}var Xl=s((e=>{var t=f();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),Zl=s(((e,t)=>{t.exports=Xl()})),Ql=s((e=>{var t=f(),n=Zl();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useSyncExternalStore,o=t.useRef,s=t.useEffect,c=t.useMemo,l=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,u){var d=o(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=c(function(){function e(e){if(!a){if(a=!0,o=e,e=r(e),u!==void 0&&f.hasValue){var t=f.value;if(u(t,e))return s=t}return s=e}if(t=s,i(o,e))return t;var n=r(e);return u!==void 0&&u(t,n)?(o=e,t):(o=e,s=n)}var a=!1,o,s,c=n===void 0?null:n;return[function(){return e(t())},c===null?void 0:function(){return e(c())}]},[t,n,r,u]);var p=a(e,d[0],d[1]);return s(function(){f.hasValue=!0,f.value=p},[p]),l(p),p}})),$l=s(((e,t)=>{t.exports=Ql()}))(),eu=(0,_.createContext)(null),tu=e=>e,W=()=>{var e=(0,_.useContext)(eu);return e?e.store.dispatch:tu},nu=()=>{},ru=()=>nu,iu=(e,t)=>e===t;function G(e){var t=(0,_.useContext)(eu),n=(0,_.useMemo)(()=>t?t=>{if(t!=null)return e(t)}:nu,[t,e]);return(0,$l.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:ru,t?t.store.getState:nu,t?t.store.getState:nu,n,iu)}var au=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`symbol`?1:e===null?2:e===void 0?3:e===e?0:4}e.compareValues=(e,n,r)=>{if(e!==n){let i=t(e),a=t(n);if(i===a&&i===0){if(en)return r===`desc`?-1:1}return r===`desc`?a-i:i-a}return 0}})),ou=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`symbol`||e instanceof Symbol}e.isSymbol=t})),su=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=ou(),n=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,r=/^\w*$/;function i(e,i){return Array.isArray(e)?!1:typeof e==`number`||typeof e==`boolean`||e==null||t.isSymbol(e)?!0:typeof e==`string`&&(r.test(e)||!n.test(e))||i!=null&&Object.hasOwn(i,e)}e.isKey=i})),cu=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=au(),n=su(),r=Ac();function i(e,i,a,o){if(e==null)return[];a=o?void 0:a,Array.isArray(e)||(e=Object.values(e)),Array.isArray(i)||(i=i==null?[null]:[i]),i.length===0&&(i=[null]),Array.isArray(a)||(a=a==null?[]:[a]),a=a.map(e=>String(e));let s=(e,t)=>{let n=e;for(let e=0;et==null||e==null?t:typeof e==`object`&&`key`in e?Object.hasOwn(t,e.key)?t[e.key]:s(t,e.path):typeof e==`function`?e(t):Array.isArray(e)?s(t,e):typeof t==`object`?t[e]:t,l=i.map(e=>(Array.isArray(e)&&e.length===1&&(e=e[0]),e==null||typeof e==`function`||Array.isArray(e)||n.isKey(e)?e:{key:e,path:r.toPath(e)}));return e.map(e=>({original:e,criteria:l.map(t=>c(t,e))})).slice().sort((e,n)=>{for(let r=0;re.original)}e.orderBy=i})),lu=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t=1){let n=[],r=Math.floor(t),i=(e,t)=>{for(let a=0;a{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Hl(),n=wl(),r=Ol(),i=Al();function a(e,a,o){return r.isObject(o)&&(typeof a==`number`&&n.isArrayLike(o)&&t.isIndex(a)&&a{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=cu(),n=lu(),r=uu();function i(e,...i){let a=i.length;return a>1&&r.isIterateeCall(e,i[0],i[1])?i=[]:a>2&&r.isIterateeCall(i[0],i[1],i[2])&&(i=[i[0]]),t.orderBy(e,n.flatten(i),[`asc`])}e.sortBy=i})),fu=u(s(((e,t)=>{t.exports=du().sortBy}))()),pu=e=>e.legend.settings,mu=e=>e.legend.size,hu=L([e=>e.legend.payload,pu],(e,t)=>{var{itemSorter:n}=t,r=e.flat(1);return n?(0,fu.default)(r,n):r}),gu=1;function _u(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],[t,n]=(0,_.useState)({height:0,left:0,top:0,width:0});return[t,(0,_.useCallback)(e=>{if(e!=null){var r=e.getBoundingClientRect(),i={height:r.height,left:r.left,top:r.top,width:r.width};(Math.abs(i.height-t.height)>gu||Math.abs(i.left-t.left)>gu||Math.abs(i.top-t.top)>gu||Math.abs(i.width-t.width)>gu)&&n({height:i.height,left:i.left,top:i.top,width:i.width})}},[t.width,t.height,t.top,t.left,...e])]}var vu=va({name:`chartLayout`,initialState:{layoutType:`horizontal`,width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},reducers:{setLayout(e,t){e.layoutType=t.payload},setChartSize(e,t){e.width=t.payload.width,e.height=t.payload.height},setMargin(e,t){e.margin.top=t.payload.top??0,e.margin.right=t.payload.right??0,e.margin.bottom=t.payload.bottom??0,e.margin.left=t.payload.left??0},setScale(e,t){e.scale=t.payload}}}),{setMargin:yu,setLayout:bu,setChartSize:xu,setScale:Su}=vu.actions,Cu=vu.reducer;function wu(e,t,n){return Array.isArray(e)&&e&&t+n!==0?e.slice(t,n+1):e}function K(e){return Number.isFinite(e)}function Tu(e){return typeof e==`number`&&e>0&&Number.isFinite(e)}function Eu(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Du(e){for(var t=1;t{if(t&&n){var{width:r,height:i}=n,{align:a,verticalAlign:o,layout:s}=t;if((s===`vertical`||s===`horizontal`&&o===`middle`)&&a!==`center`&&H(e[a]))return Du(Du({},e),{},{[a]:e[a]+(r||0)});if((s===`horizontal`||s===`vertical`&&a===`center`)&&o!==`middle`&&H(e[o]))return Du(Du({},e),{},{[o]:e[o]+(i||0)})}return e},Mu=(e,t)=>e===`horizontal`&&t===`xAxis`||e===`vertical`&&t===`yAxis`||e===`centric`&&t===`angleAxis`||e===`radial`&&t===`radiusAxis`,Nu=(e,t,n,r)=>{if(r)return e.map(e=>e.coordinate);var i,a,o=e.map(e=>(e.coordinate===t&&(i=!0),e.coordinate===n&&(a=!0),e.coordinate));return i||o.push(t),a||o.push(n),o},Pu=(e,t,n)=>{if(!e)return null;var{duplicateDomain:r,type:i,range:a,scale:o,realScaleType:s,isCategorical:c,categoricalDomain:l,tickCount:u,ticks:d,niceTicks:f,axisType:p}=e;if(!o)return null;var m=s===`scaleBand`&&o.bandwidth?o.bandwidth()/2:2,h=(t||n)&&i===`category`&&o.bandwidth?o.bandwidth()/m:0;return h=p===`angleAxis`&&a&&a.length>=2?Ic(a[0]-a[1])*2*h:h,t&&(d||f)?(d||f||[]).map((e,t)=>{var n=r?r.indexOf(e):e,i=o.map(n);return K(i)?{coordinate:i+h,value:e,offset:h,index:t}:null}).filter(qc):c&&l?l.map((e,t)=>{var n=o.map(e);return K(n)?{coordinate:n+h,value:e,index:t,offset:h}:null}).filter(qc):o.ticks&&!n&&u!=null?o.ticks(u).map((e,t)=>{var n=o.map(e);return K(n)?{coordinate:n+h,value:e,index:t,offset:h}:null}).filter(qc):o.domain().map((e,t)=>{var n=o.map(e);return K(n)?{coordinate:n+h,value:r?r[e]:e,index:t,offset:h}:null}).filter(qc)},Fu=(e,t)=>{if(!t||t.length!==2||!H(t[0])||!H(t[1]))return e;var n=Math.min(t[0],t[1]),r=Math.max(t[0],t[1]),i=[e[0],e[1]];return(!H(e[0])||e[0]r)&&(i[1]=r),i[0]>r&&(i[0]=r),i[1]{var t=e.length;if(!(t<=0)){var n=e[0]?.length;if(!(n==null||n<=0))for(var r=0;r=0?(s[0]=i,i+=u,s[1]=i):(s[0]=a,a+=u,s[1]=a)}}}},expand:Cc,none:vc,silhouette:wc,wiggle:Tc,positive:e=>{var t=e.length;if(!(t<=0)){var n=e[0]?.length;if(!(n==null||n<=0))for(var r=0;r=0?(o[0]=i,i+=s,o[1]=i):(o[0]=0,o[1]=0)}}}}},Lu=(e,t,n)=>{var r=Iu[n]??vc,i=Sc().keys(t).value((e,t)=>Number(q(e,t,0))).order(yc).offset(r)(e);return i.forEach((n,r)=>{n.forEach((n,i)=>{var a=q(e[i],t[r],0);Array.isArray(a)&&a.length===2&&H(a[0])&&H(a[1])&&(n[0]=a[0],n[1]=a[1])})}),i};function Ru(e){return e==null?void 0:String(e)}function zu(e){var{axis:t,ticks:n,bandSize:r,entry:i,index:a,dataKey:o}=e;if(t.type===`category`){if(!t.allowDuplicatedCategory&&t.dataKey&&!U(i[t.dataKey])){var s=Gc(n,`value`,i[t.dataKey]);if(s)return s.coordinate+r/2}return n!=null&&n[a]?n[a].coordinate+r/2:null}var c=q(i,U(o)?t.dataKey:o),l=t.scale.map(c);return H(l)?l:null}var Bu=e=>{var{axis:t,ticks:n,offset:r,bandSize:i,entry:a,index:o}=e;if(t.type===`category`)return n[o]?n[o].coordinate+r:null;var s=q(a,t.dataKey,t.scale.domain()[o]);if(U(s))return null;var c=t.scale.map(s);return H(c)?c-i/2+r:null},Vu=e=>{var{numericAxis:t}=e,n=t.scale.domain();if(t.type===`number`){var r=Math.min(n[0],n[1]),i=Math.max(n[0],n[1]);return r<=0&&i>=0?0:i<0?i:r}return n[0]},Hu=e=>{var t=e.flat(2).filter(H);return[Math.min(...t),Math.max(...t)]},Uu=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],Wu=(e,t,n)=>{if(e!=null)return Uu(Object.keys(e).reduce((r,i)=>{var a=e[i];if(!a)return r;var{stackedData:o}=a,s=o.reduce((e,r)=>{var i=Hu(wu(r,t,n));return!K(i[0])||!K(i[1])?e:[Math.min(e[0],i[0]),Math.max(e[1],i[1])]},[1/0,-1/0]);return[Math.min(s[0],r[0]),Math.max(s[1],r[1])]},[1/0,-1/0]))},Gu=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Ku=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,qu=(e,t,n)=>{if(e&&e.scale&&e.scale.bandwidth){var r=e.scale.bandwidth();if(!n||r>0)return r}if(e&&t&&t.length>=2){for(var i=(0,fu.default)(t,e=>e.coordinate),a=1/0,o=1,s=i.length;o{if(t===`horizontal`)return e.relativeX;if(t===`vertical`)return e.relativeY},Zu=(e,t)=>t===`centric`?e.angle:e.radius,Qu=e=>e.layout.width,$u=e=>e.layout.height,ed=e=>e.layout.scale,td=e=>e.layout.margin,nd=L(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),rd=L(e=>e.cartesianAxis.yAxis,e=>Object.values(e)),id=`data-recharts-item-index`,ad=`data-recharts-item-id`;function od(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function sd(e){for(var t=1;te.brush.height;function fd(e){return rd(e).reduce((e,t)=>t.orientation===`left`&&!t.mirror&&!t.hide?e+(typeof t.width==`number`?t.width:60):e,0)}function pd(e){return rd(e).reduce((e,t)=>t.orientation===`right`&&!t.mirror&&!t.hide?e+(typeof t.width==`number`?t.width:60):e,0)}function md(e){return nd(e).reduce((e,t)=>t.orientation===`top`&&!t.mirror&&!t.hide?e+t.height:e,0)}function hd(e){return nd(e).reduce((e,t)=>t.orientation===`bottom`&&!t.mirror&&!t.hide?e+t.height:e,0)}var gd=L([Qu,$u,td,dd,fd,pd,md,hd,pu,mu],(e,t,n,r,i,a,o,s,c,l)=>{var u={left:(n.left||0)+i,right:(n.right||0)+a},d=sd(sd({},{top:(n.top||0)+o,bottom:(n.bottom||0)+s}),u),f=d.bottom;d.bottom+=r,d=ju(d,c,l);var p=e-d.left-d.right,m=t-d.top-d.bottom;return sd(sd({brushBottom:f},d),{},{width:Math.max(p,0),height:Math.max(m,0)})}),_d=L(gd,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),vd=L(Qu,$u,(e,t)=>({x:0,y:0,width:e,height:t})),yd=(0,_.createContext)(null),bd=()=>(0,_.useContext)(yd)!=null,xd=e=>e.brush,Sd=L([xd,gd,td],(e,t,n)=>({height:e.height,x:H(e.x)?e.x:t.left,y:H(e.y)?e.y:t.top+t.height+t.brushBottom-(n?.bottom||0),width:H(e.width)?e.width:t.width})),Cd=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t,{signal:n,edges:r}={}){let i,a=null,o=r!=null&&r.includes(`leading`),s=r==null||r.includes(`trailing`),c=()=>{a!==null&&(e.apply(i,a),i=void 0,a=null)},l=()=>{s&&c(),p()},u=null,d=()=>{u!=null&&clearTimeout(u),u=setTimeout(()=>{u=null,l()},t)},f=()=>{u!==null&&(clearTimeout(u),u=null)},p=()=>{f(),i=void 0,a=null},m=()=>{c()},h=function(...e){if(n?.aborted)return;i=this,a=e;let t=u==null;d(),o&&t&&c()};return h.schedule=d,h.cancel=p,h.flush=m,n?.addEventListener(`abort`,p,{once:!0}),h}e.debounce=t})),wd=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Cd();function n(e,n=0,r={}){typeof r!=`object`&&(r={});let{leading:i=!1,trailing:a=!0,maxWait:o}=r,s=[,,];i&&(s[0]=`leading`),a&&(s[1]=`trailing`);let c,l=null,u=t.debounce(function(...t){c=e.apply(this,t),l=null},n,{edges:s}),d=function(...t){return o!=null&&(l===null&&(l=Date.now()),Date.now()-l>=o)?(c=e.apply(this,t),l=Date.now(),u.cancel(),u.schedule(),c):(u.apply(this,t),c)};return d.cancel=u.cancel,d.flush=()=>(u.flush(),c),d}e.debounce=n})),Td=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=wd();function n(e,n=0,r={}){let{leading:i=!0,trailing:a=!0}=r;return t.debounce(e,n,{leading:i,maxWait:n,trailing:a})}e.throttle=n})),Ed=u(s(((e,t)=>{t.exports=Td().throttle}))()),Dd=!0,Od=function(e,t){var n=[...arguments].slice(2);if(Dd&&typeof console<`u`&&console.warn&&(t===void 0&&console.warn(`LogUtils requires an error message argument`),!e))if(t===void 0)console.warn(`Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.`);else{var r=0;console.warn(t.replace(/%s/g,()=>n[r++]))}},kd={width:`100%`,height:`100%`,debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},Ad=(e,t,n)=>{var{width:r=kd.width,height:i=kd.height,aspect:a,maxHeight:o}=n,s=Rc(r)?e:Number(r),c=Rc(i)?t:Number(i);return a&&a>0&&(s?c=s/a:c&&(s=c*a),o&&c!=null&&c>o&&(c=o)),{calculatedWidth:s,calculatedHeight:c}},jd={width:0,height:0,overflow:`visible`},Md={width:0,overflowX:`visible`},Nd={height:0,overflowY:`visible`},Pd={},Fd=e=>{var{width:t,height:n}=e,r=Rc(t),i=Rc(n);return r&&i?jd:r?Md:i?Nd:Pd};function Id(e){var{width:t,height:n,aspect:r}=e,i=t,a=n;return i===void 0&&a===void 0?(i=kd.width,a=kd.height):i===void 0?i=r&&r>0?void 0:kd.width:a===void 0&&(a=r&&r>0?void 0:kd.height),{width:i,height:a}}function Ld(){return Ld=Object.assign?Object.assign.bind():function(e){for(var t=1;t({width:n,height:r}),[n,r]);return Wd(i)?_.createElement(Ud.Provider,{value:i},t):null}var Kd=()=>(0,_.useContext)(Ud),qd=(0,_.forwardRef)((e,t)=>{var{aspect:n,initialDimension:r=kd.initialDimension,width:i,height:a,minWidth:o=kd.minWidth,minHeight:s,maxHeight:c,children:l,debounce:u=kd.debounce,id:d,className:f,onResize:p,style:m={}}=e,h=(0,_.useRef)(null),g=(0,_.useRef)();g.current=p,(0,_.useImperativeHandle)(t,()=>h.current);var[v,y]=(0,_.useState)({containerWidth:r.width,containerHeight:r.height}),b=(0,_.useCallback)((e,t)=>{y(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]);(0,_.useEffect)(()=>{if(h.current==null||typeof ResizeObserver>`u`)return Jc;var e=e=>{var t,n=e[0];if(n!=null){var{width:r,height:i}=n.contentRect;b(r,i),(t=g.current)==null||t.call(g,r,i)}};u>0&&(e=(0,Ed.default)(e,u,{trailing:!0,leading:!1}));var t=new ResizeObserver(e),{width:n,height:r}=h.current.getBoundingClientRect();return b(n,r),t.observe(h.current),()=>{t.disconnect()}},[b,u]);var{containerWidth:x,containerHeight:S}=v;Od(!n||n>0,`The aspect(%s) must be greater than zero.`,n);var{calculatedWidth:C,calculatedHeight:w}=Ad(x,S,{width:i,height:a,aspect:n,maxHeight:c});return Od(C!=null&&C>0||w!=null&&w>0,`The width(%s) and height(%s) of chart should be greater than 0, - please check the style of container, or the props width(%s) and height(%s), - or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the - height and width.`,C,w,i,a,o,s,n),_.createElement(`div`,{id:d?`${d}`:void 0,className:z(`recharts-responsive-container`,f),style:zd(zd({},m),{},{width:i,height:a,minWidth:o,minHeight:s,maxHeight:c}),ref:h},_.createElement(`div`,{style:Fd({width:i,height:a})},_.createElement(Gd,{width:C,height:w},l)))}),Jd=(0,_.forwardRef)((e,t)=>{var n=Kd();if(Tu(n.width)&&Tu(n.height))return e.children;var{width:r,height:i}=Id({width:e.width,height:e.height,aspect:e.aspect}),{calculatedWidth:a,calculatedHeight:o}=Ad(void 0,void 0,{width:r,height:i,aspect:e.aspect,maxHeight:e.maxHeight});return H(a)&&H(o)?_.createElement(Gd,{width:a,height:o},e.children):_.createElement(qd,Ld({},e,{width:r,height:i,ref:t}))});function Yd(e){if(e)return{x:e.x,y:e.y,upperWidth:`upperWidth`in e?e.upperWidth:e.width,lowerWidth:`lowerWidth`in e?e.lowerWidth:e.width,width:e.width,height:e.height}}var Xd=()=>{var e=bd(),t=G(_d),n=G(Sd),r=G(xd)?.padding;return!e||!n||!r?t:{width:n.width-r.left-r.right,height:n.height-r.top-r.bottom,x:r.left,y:r.top}},Zd={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},Qd=()=>G(gd)??Zd,$d=()=>G(Qu),ef=()=>G($u),tf=()=>G(e=>e.layout.margin),J=e=>e.layout.layoutType,nf=()=>G(J),rf=()=>{var e=nf();if(e===`horizontal`||e===`vertical`)return e},af=e=>{var t=e.layout.layoutType;if(t===`centric`||t===`radial`)return t},of=()=>nf()!==void 0,sf=e=>{var t=W(),n=bd(),{width:r,height:i}=e,a=Kd(),o=r,s=i;return a&&(o=a.width>0?a.width:r,s=a.height>0?a.height:i),(0,_.useEffect)(()=>{!n&&Tu(o)&&Tu(s)&&t(xu({width:o,height:s}))},[t,n,o,s]),null},cf=Symbol.for(`immer-nothing`),lf=Symbol.for(`immer-draftable`),uf=Symbol.for(`immer-state`);function df(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var ff=Object.getPrototypeOf;function pf(e){return!!e&&!!e[uf]}function mf(e){return e?_f(e)||Array.isArray(e)||!!e[lf]||!!e.constructor?.[lf]||Cf(e)||wf(e):!1}var hf=Object.prototype.constructor.toString(),gf=new WeakMap;function _f(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;let n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;if(n===Object)return!0;if(typeof n!=`function`)return!1;let r=gf.get(n);return r===void 0&&(r=Function.toString.call(n),gf.set(n,r)),r===hf}function vf(e,t,n=!0){yf(e)===0?(n?Reflect.ownKeys(e):Object.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function yf(e){let t=e[uf];return t?t.type_:Array.isArray(e)?1:Cf(e)?2:wf(e)?3:0}function bf(e,t){return yf(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function xf(e,t,n){let r=yf(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function Sf(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}function Cf(e){return e instanceof Map}function wf(e){return e instanceof Set}function Tf(e){return e.copy_||e.base_}function Ef(e,t){if(Cf(e))return new Map(e);if(wf(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=_f(e);if(t===!0||t===`class_only`&&!n){let t=Object.getOwnPropertyDescriptors(e);delete t[uf];let n=Reflect.ownKeys(t);for(let r=0;r1&&Object.defineProperties(e,{set:kf,add:kf,clear:kf,delete:kf}),Object.freeze(e),t&&Object.values(e).forEach(e=>Df(e,!0)),e)}function Of(){df(2)}var kf={value:Of};function Af(e){return typeof e!=`object`||!e?!0:Object.isFrozen(e)}var jf={};function Mf(e){let t=jf[e];return t||df(0,e),t}var Nf;function Pf(){return Nf}function Ff(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function If(e,t){t&&(Mf(`Patches`),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Lf(e){Rf(e),e.drafts_.forEach(Bf),e.drafts_=null}function Rf(e){e===Nf&&(Nf=e.parent_)}function zf(e){return Nf=Ff(Nf,e)}function Bf(e){let t=e[uf];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Vf(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];return e!==void 0&&e!==n?(n[uf].modified_&&(Lf(t),df(4)),mf(e)&&(e=Hf(t,e),t.parent_||Wf(t,e)),t.patches_&&Mf(`Patches`).generateReplacementPatches_(n[uf].base_,e,t.patches_,t.inversePatches_)):e=Hf(t,n,[]),Lf(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===cf?void 0:e}function Hf(e,t,n){if(Af(t))return t;let r=e.immer_.shouldUseStrictIteration(),i=t[uf];if(!i)return vf(t,(r,a)=>Uf(e,i,t,r,a,n),r),t;if(i.scope_!==e)return t;if(!i.modified_)return Wf(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;let t=i.copy_,a=t,o=!1;i.type_===3&&(a=new Set(t),t.clear(),o=!0),vf(a,(r,a)=>Uf(e,i,t,r,a,n,o),r),Wf(e,t,!1),n&&e.patches_&&Mf(`Patches`).generatePatches_(i,n,e.patches_,e.inversePatches_)}return i.copy_}function Uf(e,t,n,r,i,a,o){if(i==null||typeof i!=`object`&&!o)return;let s=Af(i);if(!(s&&!o)){if(pf(i)){let o=Hf(e,i,a&&t&&t.type_!==3&&!bf(t.assigned_,r)?a.concat(r):void 0);if(xf(n,r,o),pf(o))e.canAutoFreeze_=!1;else return}else o&&n.add(i);if(mf(i)&&!s){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||t&&t.base_&&t.base_[r]===i&&s)return;Hf(e,i),(!t||!t.scope_.parent_)&&typeof r!=`symbol`&&(Cf(n)?n.has(r):Object.prototype.propertyIsEnumerable.call(n,r))&&Wf(e,i)}}}function Wf(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Df(t,n)}function Gf(e,t){let n=Array.isArray(e),r={type_:+!!n,scope_:t?t.scope_:Pf(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},i=r,a=Kf;n&&(i=[r],a=qf);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,s}var Kf={get(e,t){if(t===uf)return e;let n=Tf(e);if(!bf(n,t))return Yf(e,n,t);let r=n[t];return e.finalized_||!mf(r)?r:r===Jf(e.base_,t)?(Qf(e),e.copy_[t]=ep(r,e)):r},has(e,t){return t in Tf(e)},ownKeys(e){return Reflect.ownKeys(Tf(e))},set(e,t,n){let r=Xf(Tf(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=Jf(Tf(e),t),i=r?.[uf];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(Sf(n,r)&&(n!==void 0||bf(e.base_,t)))return!0;Qf(e),Zf(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_[t]=!0,!0)},deleteProperty(e,t){return Jf(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,Qf(e),Zf(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=Tf(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{writable:!0,configurable:e.type_!==1||t!==`length`,enumerable:r.enumerable,value:n[t]}},defineProperty(){df(11)},getPrototypeOf(e){return ff(e.base_)},setPrototypeOf(){df(12)}},qf={};vf(Kf,(e,t)=>{qf[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),qf.deleteProperty=function(e,t){return qf.set.call(this,e,t,void 0)},qf.set=function(e,t,n){return Kf.set.call(this,e[0],t,n,e[0])};function Jf(e,t){let n=e[uf];return(n?Tf(n):e)[t]}function Yf(e,t,n){let r=Xf(t,n);return r?`value`in r?r.value:r.get?.call(e.draft_):void 0}function Xf(e,t){if(!(t in e))return;let n=ff(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=ff(n)}}function Zf(e){e.modified_||(e.modified_=!0,e.parent_&&Zf(e.parent_))}function Qf(e){e.copy_||(e.copy_=Ef(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var $f=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(e,t,n)=>{if(typeof e==`function`&&typeof t!=`function`){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}typeof t!=`function`&&df(6),n!==void 0&&typeof n!=`function`&&df(7);let r;if(mf(e)){let i=zf(this),a=ep(e,void 0),o=!0;try{r=t(a),o=!1}finally{o?Lf(i):Rf(i)}return If(i,n),Vf(r,i)}else if(!e||typeof e!=`object`){if(r=t(e),r===void 0&&(r=e),r===cf&&(r=void 0),this.autoFreeze_&&Df(r,!0),n){let t=[],i=[];Mf(`Patches`).generateReplacementPatches_(e,r,t,i),n(t,i)}return r}else df(1,e)},this.produceWithPatches=(e,t)=>{if(typeof e==`function`)return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},typeof e?.autoFreeze==`boolean`&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy==`boolean`&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),typeof e?.useStrictIteration==`boolean`&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){mf(e)||df(8),pf(e)&&(e=tp(e));let t=zf(this),n=ep(e,void 0);return n[uf].isManual_=!0,Rf(t),n}finishDraft(e,t){let n=e&&e[uf];(!n||!n.isManual_)&&df(9);let{scope_:r}=n;return If(r,t),Vf(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=Mf(`Patches`).applyPatches_;return pf(e)?r(e,t):this.produce(e,e=>r(e,t))}};function ep(e,t){let n=Cf(e)?Mf(`MapSet`).proxyMap_(e,t):wf(e)?Mf(`MapSet`).proxySet_(e,t):Gf(e,t);return(t?t.scope_:Pf()).drafts_.push(n),n}function tp(e){return pf(e)||df(10,e),np(e)}function np(e){if(!mf(e)||Af(e))return e;let t=e[uf],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Ef(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Ef(e,!0);return vf(n,(e,t)=>{xf(n,e,np(t))},r),t&&(t.finalized_=!1),n}new $f().produce;function Y(e){return e}var rp=va({name:`legend`,initialState:{settings:{layout:`horizontal`,align:`center`,verticalAlign:`middle`,itemSorter:`value`},size:{width:0,height:0},payload:[]},reducers:{setLegendSize(e,t){e.size.width=t.payload.width,e.size.height=t.payload.height},setLegendSettings(e,t){e.settings.align=t.payload.align,e.settings.layout=t.payload.layout,e.settings.verticalAlign=t.payload.verticalAlign,e.settings.itemSorter=t.payload.itemSorter},addLegendPayload:{reducer(e,t){e.payload.push(Y(t.payload))},prepare:R()},replaceLegendPayload:{reducer(e,t){var{prev:n,next:r}=t.payload,i=ji(e).payload.indexOf(Y(n));i>-1&&(e.payload[i]=Y(r))},prepare:R()},removeLegendPayload:{reducer(e,t){var n=ji(e).payload.indexOf(Y(t.payload));n>-1&&e.payload.splice(n,1)},prepare:R()}}}),{setLegendSize:ip,setLegendSettings:ap,addLegendPayload:op,replaceLegendPayload:sp,removeLegendPayload:cp}=rp.actions,lp=rp.reducer,up=new Set([`axisLine`,`tickLine`,`activeBar`,`activeDot`,`activeLabel`,`activeShape`,`allowEscapeViewBox`,`background`,`cursor`,`dot`,`label`,`line`,`margin`,`padding`,`position`,`shape`,`style`,`tick`,`wrapperStyle`,`radius`,`throttledEvents`]);function dp(e,t){return e==null&&t==null?!0:typeof e==`number`&&typeof t==`number`?e===t||e!==e&&t!==t:e===t}function fp(e,t){for(var n of new Set([...Object.keys(e),...Object.keys(t)]))if(up.has(n)){if(e[n]==null&&t[n]==null)continue;if(!_o(e[n],t[n]))return!1}else if(!dp(e[n],t[n]))return!1;return!0}function pp(){return pp=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{separator:t=bp.separator,contentStyle:n,itemStyle:r,labelStyle:i=bp.labelStyle,payload:a,formatter:o,itemSorter:s,wrapperClassName:c,labelClassName:l,label:u,labelFormatter:d,accessibilityLayer:f=bp.accessibilityLayer}=e,p=()=>{if(a&&a.length){var e={padding:0,margin:0},n=xp(a,s).map((e,n)=>{if(!e||e.type===`none`)return null;var i=e.formatter||o||yp,{value:s,name:c}=e,l=s,u=c;if(i){var d=i(s,c,e,n,a);if(Array.isArray(d))[l,u]=d;else if(d!=null)l=d;else return null}var f=hp(hp({},bp.itemStyle),{},{color:e.color||bp.itemStyle.color},r);return _.createElement(`li`,{className:`recharts-tooltip-item`,key:`tooltip-item-${n}`,style:f},zc(u)?_.createElement(`span`,{className:`recharts-tooltip-item-name`},u):null,zc(u)?_.createElement(`span`,{className:`recharts-tooltip-item-separator`},t):null,_.createElement(`span`,{className:`recharts-tooltip-item-value`},l),_.createElement(`span`,{className:`recharts-tooltip-item-unit`},e.unit||``))});return _.createElement(`ul`,{className:`recharts-tooltip-item-list`,style:e},n)}return null},m=hp(hp({},bp.contentStyle),n),h=hp({margin:0},i),g=!U(u),v=g?u:``,y=z(`recharts-default-tooltip`,c),b=z(`recharts-tooltip-label`,l);g&&d&&a!=null&&(v=d(u,a));var x=f?{role:`status`,"aria-live":`assertive`}:{};return _.createElement(`div`,pp({className:y,style:m},x),_.createElement(`p`,{className:b,style:h},_.isValidElement(v)?v:`${v}`),p())},Cp=`recharts-tooltip-wrapper`,wp={visibility:`hidden`};function Tp(e){var{coordinate:t,translateX:n,translateY:r}=e;return z(Cp,{[`${Cp}-right`]:H(n)&&t&&H(t.x)&&n>=t.x,[`${Cp}-left`]:H(n)&&t&&H(t.x)&&n=t.y,[`${Cp}-top`]:H(r)&&t&&H(t.y)&&r0?i:0),d=n[r]+i;if(t[r])return o[r]?u:d;var f=c[r];return f==null?0:o[r]?Math.max(uf+l?Math.max(u,f):Math.max(d,f)}function Dp(e){var{translateX:t,translateY:n,useTranslate3d:r}=e;return{transform:r?`translate3d(${t}px, ${n}px, 0)`:`translate(${t}px, ${n}px)`}}function Op(e){var{allowEscapeViewBox:t,coordinate:n,offsetTop:r,offsetLeft:i,position:a,reverseDirection:o,tooltipBox:s,useTranslate3d:c,viewBox:l}=e,u,d,f;return s.height>0&&s.width>0&&n?(d=Ep({allowEscapeViewBox:t,coordinate:n,key:`x`,offset:i,position:a,reverseDirection:o,tooltipDimension:s.width,viewBox:l,viewBoxDimension:l.width}),f=Ep({allowEscapeViewBox:t,coordinate:n,key:`y`,offset:r,position:a,reverseDirection:o,tooltipDimension:s.height,viewBox:l,viewBoxDimension:l.height}),u=Dp({translateX:d,translateY:f,useTranslate3d:c})):u=wp,{cssProperties:u,cssClasses:Tp({translateX:d,translateY:f,coordinate:n})}}var kp={devToolsEnabled:!0,isSsr:!(typeof window<`u`&&window.document&&window.document.createElement&&window.setTimeout)};function Ap(){var[e,t]=(0,_.useState)(()=>kp.isSsr||!window.matchMedia?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches);return(0,_.useEffect)(()=>{if(window.matchMedia){var e=window.matchMedia(`(prefers-reduced-motion: reduce)`),n=()=>{t(e.matches)};return e.addEventListener(`change`,n),()=>{e.removeEventListener(`change`,n)}}},[]),e}function jp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Mp(e){for(var t=1;t({dismissed:!1,dismissedAtCoordinate:{x:0,y:0}}));_.useEffect(()=>{var t=t=>{t.key===`Escape`&&r({dismissed:!0,dismissedAtCoordinate:{x:e.coordinate?.x??0,y:e.coordinate?.y??0}})};return document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`keydown`,t)}},[e.coordinate?.x,e.coordinate?.y]),n.dismissed&&((e.coordinate?.x??0)!==n.dismissedAtCoordinate.x||(e.coordinate?.y??0)!==n.dismissedAtCoordinate.y)&&r(Mp(Mp({},n),{},{dismissed:!1}));var{cssClasses:i,cssProperties:a}=Op({allowEscapeViewBox:e.allowEscapeViewBox,coordinate:e.coordinate,offsetLeft:typeof e.offset==`number`?e.offset:e.offset.x,offsetTop:typeof e.offset==`number`?e.offset:e.offset.y,position:e.position,reverseDirection:e.reverseDirection,tooltipBox:{height:e.lastBoundingBox.height,width:e.lastBoundingBox.width},useTranslate3d:e.useTranslate3d,viewBox:e.viewBox}),o=Mp(Mp({},e.hasPortalFromProps?{}:Mp(Mp({transition:Ip({prefersReducedMotion:t,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},a),{},{pointerEvents:`none`,position:`absolute`,top:0,left:0})),{},{visibility:!n.dismissed&&e.active&&e.hasPayload?`visible`:`hidden`},e.wrapperStyle);return _.createElement(`div`,{xmlns:`http://www.w3.org/1999/xhtml`,tabIndex:-1,className:i,style:o,ref:e.innerRef},e.children)}var Rp=_.memo(Lp),zp=()=>G(e=>e.rootProps.accessibilityLayer)??!0;function Bp(){return Bp=Object.assign?Object.assign.bind():function(e){for(var t=1;tK(e.x)&&K(e.y),Jp=e=>e.base!=null&&qp(e.base)&&qp(e),Yp=e=>e.x,Xp=e=>e.y,Zp=(e,t)=>{if(typeof e==`function`)return e;var n=`curve${Kc(e)}`;if((n===`curveMonotone`||n===`curveBump`)&&t){var r=Kp[`${n}${t===`vertical`?`Y`:`X`}`];if(r)return r}return Kp[n]||ys},Qp={connectNulls:!1,type:`linear`},$p=e=>{var{type:t=Qp.type,points:n=[],baseLine:r,layout:i,connectNulls:a=Qp.connectNulls}=e,o=Zp(t,i),s=a?n.filter(qp):n;if(Array.isArray(r)){var c,l=n.map((e,t)=>Hp(Hp({},e),{},{base:r[t]}));return c=i===`vertical`?Cs().y(Xp).x1(Yp).x0(e=>e.base.x):Cs().x(Yp).y1(Xp).y0(e=>e.base.y),c.defined(Jp).curve(o)(a?l.filter(Jp):l)}return(i===`vertical`&&H(r)?Cs().y(Xp).x1(Yp).x0(r):H(r)?Cs().x(Yp).y1(Xp).y0(r):Ss().x(Yp).y(Xp)).defined(qp).curve(o)(s)},em=e=>{var{className:t,points:n,path:r,pathRef:i}=e,a=nf();if((!n||!n.length)&&!r)return null;var o={type:e.type,points:e.points,baseLine:e.baseLine,layout:e.layout||a,connectNulls:e.connectNulls},s=n&&n.length?$p(o):r;return _.createElement(`path`,Bp({},Vo(e),dl(e),{className:z(`recharts-curve`,t),d:s===null?void 0:s,ref:i}))},tm=[`x`,`y`,`top`,`left`,`width`,`height`,`className`];function nm(){return nm=Object.assign?Object.assign.bind():function(e){for(var t=1;t`M${e},${i}v${r}M${a},${t}h${n}`,dm=e=>{var{x:t=0,y:n=0,top:r=0,left:i=0,width:a=0,height:o=0,className:s}=e,c=cm(e,tm),l=im({x:t,y:n,top:r,left:i,width:a,height:o},c);return!H(t)||!H(n)||!H(a)||!H(o)||!H(r)||!H(i)?null:_.createElement(`path`,nm({},Uo(l),{className:z(`recharts-cross`,s),d:um(t,n,a,o,r,i)}))};function fm(e,t,n,r){var i=r/2;return{stroke:`none`,fill:`#ccc`,x:e===`horizontal`?t.x-i:n.left+.5,y:e===`horizontal`?n.top+.5:t.y-i,width:e===`horizontal`?r:n.width-1,height:e===`horizontal`?n.height-1:r}}function pm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function mm(e){for(var t=1;te.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`),ym=(e,t,n)=>e.map(e=>`${vm(e)} ${t}ms ${n}`).join(`,`),bm=(e,t)=>[Object.keys(e),Object.keys(t)].reduce((e,t)=>e.filter(e=>t.includes(e))),xm=(e,t)=>Object.keys(t).reduce((n,r)=>mm(mm({},n),{},{[r]:e(r,t[r])}),{});function Sm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function X(e){for(var t=1;te+(t-e)*n,Dm=e=>{var{from:t,to:n}=e;return t!==n},Om=(e,t,n)=>{var r=xm((t,n)=>{if(Dm(n)){var[r,i]=e(n.from,n.to,n.velocity);return X(X({},n),{},{from:r,velocity:i})}return n},t);return n<1?xm((e,t)=>Dm(t)&&r[e]!=null?X(X({},t),{},{velocity:Em(t.velocity,r[e].velocity,n),from:Em(t.from,r[e].from,n)}):t,t):Om(e,r,n-1)};function km(e,t,n,r,i,a){var o,s=r.reduce((n,r)=>X(X({},n),{},{[r]:{from:e[r],velocity:0,to:t[r]}}),{}),c=()=>xm((e,t)=>t.from,s),l=()=>!Object.values(s).filter(Dm).length,u=null,d=r=>{o||(o=r);var f=(r-o)/n.dt;s=Om(n,s,f),i(X(X(X({},e),t),c())),o=r,l()||(u=a.setTimeout(d))};return()=>(u=a.setTimeout(d),()=>{var e;(e=u)==null||e()})}function Am(e,t,n,r,i,a,o){var s=null,c=i.reduce((n,r)=>{var i=e[r],a=t[r];return i==null||a==null?n:X(X({},n),{},{[r]:[i,a]})},{}),l,u=i=>{l||(l=i);var d=(i-l)/r,f=xm((e,t)=>Em(...t,n(d)),c);if(a(X(X(X({},e),t),f)),d<1)s=o.setTimeout(u);else{var p=xm((e,t)=>Em(...t,n(1)),c);a(X(X(X({},e),t),p))}};return()=>(s=o.setTimeout(u),()=>{var e;(e=s)==null||e()})}var jm=(e,t,n,r,i,a)=>{var o=bm(e,t);return n==null?()=>(i(X(X({},e),t)),()=>{}):n.isStepper===!0?km(e,t,n,o,i,a):Am(e,t,n,r,o,i,a)},Mm=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],Nm=(e,t)=>e.map((e,n)=>e*t**n).reduce((e,t)=>e+t),Pm=(e,t)=>n=>Nm(Mm(e,t),n),Fm=(e,t)=>n=>Nm([...Mm(e,t).map((e,t)=>e*t).slice(1),0],n),Im=e=>{var t,n=e.split(`(`);if(n.length!==2||n[0]!==`cubic-bezier`)return null;var r=(t=n[1])==null||(t=t.split(`)`)[0])==null?void 0:t.split(`,`);if(r==null||r.length!==4)return null;var i=r.map(e=>parseFloat(e));return[i[0],i[1],i[2],i[3]]},Lm=function(){var e=[...arguments];if(e.length===1)switch(e[0]){case`linear`:return[0,0,1,1];case`ease`:return[.25,.1,.25,1];case`ease-in`:return[.42,0,1,1];case`ease-out`:return[.42,0,.58,1];case`ease-in-out`:return[0,0,.58,1];default:var t=Im(e[0]);if(t)return t}return e.length===4?e:[0,0,1,1]},Rm=(e,t,n,r)=>{var i=Pm(e,n),a=Pm(t,r),o=Fm(e,n),s=e=>e>1?1:e<0?0:e,c=e=>{for(var t=e>1?1:e,n=t,r=0;r<8;++r){var c=i(n)-t,l=o(n);if(Math.abs(c-t)<1e-4||l<1e-4)return a(n);n=s(n-c/l)}return a(n)};return c.isStepper=!1,c},zm=function(){return Rm(...Lm(...arguments))},Bm=function(){var{stiff:e=100,damping:t=8,dt:n=17}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=(r,i,a)=>{var o=a+(-(r-i)*e-a*t)*n/1e3,s=a*n/1e3+r;return Math.abs(s-i)<1e-4&&Math.abs(o)<1e-4?[i,0]:[s,o]};return r.isStepper=!0,r.dt=n,r},Vm=e=>{if(typeof e==`string`)switch(e){case`ease`:case`ease-in-out`:case`ease-out`:case`ease-in`:case`linear`:return zm(e);case`spring`:return Bm();default:if(e.split(`(`)[0]===`cubic-bezier`)return zm(e)}return typeof e==`function`?e:null};function Hm(e){var t,n=()=>null,r=!1,i=null,a=o=>{if(!r){if(Array.isArray(o)){if(!o.length)return;var[s,...c]=o;if(typeof s==`number`){i=e.setTimeout(a.bind(null,c),s);return}a(s),i=e.setTimeout(a.bind(null,c));return}typeof o==`string`&&(t=o,n(t)),typeof o==`object`&&(t=o,n(t)),typeof o==`function`&&o()}};return{stop:()=>{r=!0},start:e=>{r=!1,i&&(i(),i=null),a(e)},subscribe:e=>(n=e,()=>{n=()=>null}),getTimeoutController:()=>e}}var Um=class{setTimeout(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=performance.now(),r=null,i=a=>{a-n>=t?e(a):typeof requestAnimationFrame==`function`&&(r=requestAnimationFrame(i))};return r=requestAnimationFrame(i),()=>{r!=null&&cancelAnimationFrame(r)}}};function Wm(){return Hm(new Um)}var Gm=(0,_.createContext)(Wm);function Km(e,t){var n=(0,_.useContext)(Gm);return(0,_.useMemo)(()=>t??n(e),[e,t,n])}var qm={begin:0,duration:1e3,easing:`ease`,isActive:!0,canBegin:!0,onAnimationEnd:()=>{},onAnimationStart:()=>{}},Jm={t:0},Ym={t:1};function Xm(e){var t=yl(e,qm),{isActive:n,canBegin:r,duration:i,easing:a,begin:o,onAnimationEnd:s,onAnimationStart:c,children:l}=t,u=Ap(),d=n===`auto`?!kp.isSsr&&!u:n,f=Km(t.animationId,t.animationManager),[p,m]=(0,_.useState)(d?Jm:Ym),h=(0,_.useRef)(null);return(0,_.useEffect)(()=>{d||m(Ym)},[d]),(0,_.useEffect)(()=>{if(!d||!r)return Jc;var e=jm(Jm,Ym,Vm(a),i,m,f.getTimeoutController());return f.start([c,o,()=>{h.current=e()},i,s]),()=>{f.stop(),h.current&&h.current(),s()}},[d,r,i,a,o,c,s,f]),l(p.t)}function Zm(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`animation-`,n=(0,_.useRef)(Vc(t)),r=(0,_.useRef)(e);return r.current!==e&&(n.current=Vc(t),r.current=e),n.current}var Qm=[`radius`],$m=[`radius`],eh,th,nh,rh,ih,ah,oh,sh,ch,lh;function uh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function dh(e){for(var t=1;t{var a=Fc(n),o=Fc(r),s=Math.min(Math.abs(a)/2,Math.abs(o)/2),c=o>=0?1:-1,l=a>=0?1:-1,u=+(o>=0&&a>=0||o<0&&a<0),d;if(s>0&&Array.isArray(i)){for(var f=[0,0,0,0],p=0,m=4;ps?s:h}d=V(eh||(eh=vh([`M`,`,`,``])),e,t+c*f[0]),f[0]>0&&(d+=V(th||(th=vh([`A `,`,`,`,0,0,`,`,`,`,`,``])),f[0],f[0],u,e+l*f[0],t)),d+=V(nh||(nh=vh([`L `,`,`,``])),e+n-l*f[1],t),f[1]>0&&(d+=V(rh||(rh=vh([`A `,`,`,`,0,0,`,`, - `,`,`,``])),f[1],f[1],u,e+n,t+c*f[1])),d+=V(ih||(ih=vh([`L `,`,`,``])),e+n,t+r-c*f[2]),f[2]>0&&(d+=V(ah||(ah=vh([`A `,`,`,`,0,0,`,`, - `,`,`,``])),f[2],f[2],u,e+n-l*f[2],t+r)),d+=V(oh||(oh=vh([`L `,`,`,``])),e+l*f[3],t+r),f[3]>0&&(d+=V(sh||(sh=vh([`A `,`,`,`,0,0,`,`, - `,`,`,``])),f[3],f[3],u,e,t+r-c*f[3])),d+=`Z`}else if(s>0&&i===+i&&i>0){var g=Math.min(s,i);d=V(ch||(ch=vh(`M .,. - A .,.,0,0,.,.,. - L .,. - A .,.,0,0,.,.,. - L .,. - A .,.,0,0,.,.,. - L .,. - A .,.,0,0,.,.,. Z`.split(`.`))),e,t+c*g,g,g,u,e+l*g,t,e+n-l*g,t,g,g,u,e+n,t+c*g,e+n,t+r-c*g,g,g,u,e+n-l*g,t+r,e+l*g,t+r,g,g,u,e,t+r-c*g)}else d=V(lh||(lh=vh([`M `,`,`,` h `,` v `,` h `,` Z`])),e,t,n,r,-n);return d},bh={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:`ease`},xh=e=>{var t=yl(e,bh),n=(0,_.useRef)(null),[r,i]=(0,_.useState)(-1);(0,_.useEffect)(()=>{if(n.current&&n.current.getTotalLength)try{var e=n.current.getTotalLength();e&&i(e)}catch{}},[]);var{x:a,y:o,width:s,height:c,radius:l,className:u}=t,{animationEasing:d,animationDuration:f,animationBegin:p,isAnimationActive:m,isUpdateAnimationActive:h}=t,g=(0,_.useRef)(s),v=(0,_.useRef)(c),y=(0,_.useRef)(a),b=(0,_.useRef)(o),x=Zm((0,_.useMemo)(()=>({x:a,y:o,width:s,height:c,radius:l}),[a,o,s,c,l]),`rectangle-`);if(a!==+a||o!==+o||s!==+s||c!==+c||s===0||c===0)return null;var S=z(`recharts-rectangle`,u);if(!h){var C=Uo(t),{radius:w}=C,T=gh(C,Qm);return _.createElement(`path`,hh({},T,{x:Fc(a),y:Fc(o),width:Fc(s),height:Fc(c),radius:typeof l==`number`?l:void 0,className:S,d:yh(a,o,s,c,l)}))}var E=g.current,D=v.current,O=y.current,k=b.current,ee=`0px ${r===-1?1:r}px`,te=`${r}px ${r}px`,A=ym([`strokeDasharray`],f,typeof d==`string`?d:bh.animationEasing);return _.createElement(Xm,{animationId:x,key:x,canBegin:r>0,duration:f,easing:d,isActive:h,begin:p},e=>{var r=Wc(E,s,e),i=Wc(D,c,e),u=Wc(O,a,e),d=Wc(k,o,e);n.current&&(g.current=r,v.current=i,y.current=u,b.current=d);var f=m?e>0?{transition:A,strokeDasharray:te}:{strokeDasharray:ee}:{strokeDasharray:te},p=Uo(t),{radius:h}=p,x=gh(p,$m);return _.createElement(`path`,hh({},x,{radius:typeof l==`number`?l:void 0,className:S,d:yh(u,d,r,i,l),ref:n,style:dh(dh({},f),t.style)}))})};function Sh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Ch(e){for(var t=1;te*180/Math.PI,kh=(e,t,n,r)=>({x:e+Math.cos(-Dh*r)*n,y:t+Math.sin(-Dh*r)*n}),Ah=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0,width:0,height:0,brushBottom:0};return Math.min(Math.abs(e-(n.left||0)-(n.right||0)),Math.abs(t-(n.top||0)-(n.bottom||0)))/2},jh=(e,t)=>{var{x:n,y:r}=e,{x:i,y:a}=t;return Math.sqrt((n-i)**2+(r-a)**2)},Mh=(e,t)=>{var{x:n,y:r}=e,{cx:i,cy:a}=t,o=jh({x:n,y:r},{x:i,y:a});if(o<=0)return{radius:o,angle:0};var s=(n-i)/o,c=Math.acos(s);return r>a&&(c=2*Math.PI-c),{radius:o,angle:Oh(c),angleInRadian:c}},Nh=e=>{var{startAngle:t,endAngle:n}=e,r=Math.floor(t/360),i=Math.floor(n/360),a=Math.min(r,i);return{startAngle:t-a*360,endAngle:n-a*360}},Ph=(e,t)=>{var{startAngle:n,endAngle:r}=t,i=Math.floor(n/360),a=Math.floor(r/360);return e+Math.min(i,a)*360},Fh=(e,t)=>{var{relativeX:n,relativeY:r}=e,{radius:i,angle:a}=Mh({x:n,y:r},t),{innerRadius:o,outerRadius:s}=t;if(is||i===0)return null;var{startAngle:c,endAngle:l}=Nh(t),u=a,d;if(c<=l){for(;u>l;)u-=360;for(;u=c&&u<=l}else{for(;u>c;)u-=360;for(;u=l&&u<=c}return d?Ch(Ch({},t),{},{radius:i,angle:Ph(u,t)}):null};function Ih(e){var{cx:t,cy:n,radius:r,startAngle:i,endAngle:a}=e;return{points:[kh(t,n,r,i),kh(t,n,r,a)],cx:t,cy:n,radius:r,startAngle:i,endAngle:a}}var Lh,Rh,zh,Bh,Vh,Hh,Uh;function Wh(){return Wh=Object.assign?Object.assign.bind():function(e){for(var t=1;tIc(t-e)*Math.min(Math.abs(t-e),359.999),qh=e=>{var{cx:t,cy:n,radius:r,angle:i,sign:a,isExternal:o,cornerRadius:s,cornerIsExternal:c}=e,l=s*(o?1:-1)+r,u=Math.asin(s/l)/Dh,d=c?i:i+a*u,f=kh(t,n,l,d),p=kh(t,n,r,d),m=c?i-a*u:i;return{center:f,circleTangency:p,lineTangency:kh(t,n,l*Math.cos(u*Dh),m),theta:u}},Jh=e=>{var{cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:a,endAngle:o}=e,s=Kh(a,o),c=a+s,l=kh(t,n,i,a),u=kh(t,n,i,c),d=V(Lh||(Lh=Gh([`M `,`,`,` - A `,`,`,`,0, - `,`,`,`, - `,`,`,` - `])),l.x,l.y,i,i,+(Math.abs(s)>180),+(a>c),u.x,u.y);if(r>0){var f=kh(t,n,r,a),p=kh(t,n,r,c);d+=V(Rh||(Rh=Gh([`L `,`,`,` - A `,`,`,`,0, - `,`,`,`, - `,`,`,` Z`])),p.x,p.y,r,r,+(Math.abs(s)>180),+(a<=c),f.x,f.y)}else d+=V(zh||(zh=Gh([`L `,`,`,` Z`])),t,n);return d},Yh=e=>{var{cx:t,cy:n,innerRadius:r,outerRadius:i,cornerRadius:a,forceCornerRadius:o,cornerIsExternal:s,startAngle:c,endAngle:l}=e,u=Ic(l-c),{circleTangency:d,lineTangency:f,theta:p}=qh({cx:t,cy:n,radius:i,angle:c,sign:u,cornerRadius:a,cornerIsExternal:s}),{circleTangency:m,lineTangency:h,theta:g}=qh({cx:t,cy:n,radius:i,angle:l,sign:-u,cornerRadius:a,cornerIsExternal:s}),_=s?Math.abs(c-l):Math.abs(c-l)-p-g;if(_<0)return o?V(Bh||(Bh=Gh([`M `,`,`,` - a`,`,`,`,0,0,1,`,`,0 - a`,`,`,`,0,0,1,`,`,0 - `])),f.x,f.y,a,a,a*2,a,a,-a*2):Jh({cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:c,endAngle:l});var v=V(Vh||(Vh=Gh([`M `,`,`,` - A`,`,`,`,0,0,`,`,`,`,`,` - A`,`,`,`,0,`,`,`,`,`,`,`,` - A`,`,`,`,0,0,`,`,`,`,`,` - `])),f.x,f.y,a,a,+(u<0),d.x,d.y,i,i,+(_>180),+(u<0),m.x,m.y,a,a,+(u<0),h.x,h.y);if(r>0){var{circleTangency:y,lineTangency:b,theta:x}=qh({cx:t,cy:n,radius:r,angle:c,sign:u,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),{circleTangency:S,lineTangency:C,theta:w}=qh({cx:t,cy:n,radius:r,angle:l,sign:-u,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),T=s?Math.abs(c-l):Math.abs(c-l)-x-w;if(T<0&&a===0)return`${v}L${t},${n}Z`;v+=V(Hh||(Hh=Gh([`L`,`,`,` - A`,`,`,`,0,0,`,`,`,`,`,` - A`,`,`,`,0,`,`,`,`,`,`,`,` - A`,`,`,`,0,0,`,`,`,`,`,`Z`])),C.x,C.y,a,a,+(u<0),S.x,S.y,r,r,+(T>180),+(u>0),y.x,y.y,a,a,+(u<0),b.x,b.y)}else v+=V(Uh||(Uh=Gh([`L`,`,`,`Z`])),t,n);return v},Xh={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},Zh=e=>{var t=yl(e,Xh),{cx:n,cy:r,innerRadius:i,outerRadius:a,cornerRadius:o,forceCornerRadius:s,cornerIsExternal:c,startAngle:l,endAngle:u,className:d}=t;if(a0&&Math.abs(l-u)<360?Yh({cx:n,cy:r,innerRadius:i,outerRadius:a,cornerRadius:Math.min(m,p/2),forceCornerRadius:s,cornerIsExternal:c,startAngle:l,endAngle:u}):Jh({cx:n,cy:r,innerRadius:i,outerRadius:a,startAngle:l,endAngle:u});return _.createElement(`path`,Wh({},Uo(t),{className:f,d:h}))};function Qh(e,t,n){if(e===`horizontal`)return[{x:t.x,y:n.top},{x:t.x,y:n.top+n.height}];if(e===`vertical`)return[{x:n.left,y:t.y},{x:n.left+n.width,y:t.y}];if(ul(t)){if(e===`centric`){var{cx:r,cy:i,innerRadius:a,outerRadius:o,angle:s}=t,c=kh(r,i,a,s),l=kh(r,i,o,s);return[{x:c.x,y:c.y},{x:l.x,y:l.y}]}return Ih(t)}}var $h=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=ou();function n(e){return t.isSymbol(e)?NaN:Number(e)}e.toNumber=n})),eg=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=$h();function n(e){return e?(e=t.toNumber(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}e.toFinite=n})),tg=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=uu(),n=eg();function r(e,r,i){i&&typeof i!=`number`&&t.isIterateeCall(e,r,i)&&(r=i=void 0),e=n.toFinite(e),r===void 0?(r=e,e=0):r=n.toFinite(r),i=i===void 0?e{t.exports=tg().range}))()),rg=e=>e.chartData,ig=L([rg],e=>{var t=e.chartData==null?0:e.chartData.length-1;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),ag=(e,t,n,r)=>r?ig(e):rg(e),og=(e,t,n)=>n?ig(e):rg(e),sg=L([ag],e=>{var{chartData:t,dataStartIndex:n,dataEndIndex:r}=e;return t==null?[]:t.slice(n,r+1)}),cg=L([ig],e=>{var{chartData:t,dataStartIndex:n,dataEndIndex:r}=e;return t==null?[]:t.slice(n,r+1)}),lg=L([rg],e=>{var{chartData:t,dataStartIndex:n,dataEndIndex:r}=e;return t==null?[]:t.slice(n,r+1)});function ug(e){if(Array.isArray(e)&&e.length===2){var[t,n]=e;if(K(t)&&K(n))return!0}return!1}function dg(e,t,n){return n?e:[Math.min(e[0],t[0]),Math.max(e[1],t[1])]}function fg(e,t){if(t&&typeof e!=`function`&&Array.isArray(e)&&e.length===2){var[n,r]=e,i,a;if(K(n))i=n;else if(typeof n==`function`)return;if(K(r))a=r;else if(typeof r==`function`)return;var o=[i,a];if(ug(o))return o}}function pg(e,t,n){if(!(!n&&t==null)){if(typeof e==`function`&&t!=null)try{var r=e(t,n);if(ug(r))return dg(r,t,n)}catch{}if(Array.isArray(e)&&e.length===2){var[i,a]=e,o,s;if(i===`auto`)t!=null&&(o=Math.min(...t));else if(H(i))o=i;else if(typeof i==`function`)try{t!=null&&(o=i(t?.[0]))}catch{}else if(typeof i==`string`&&Gu.test(i)){var c=Gu.exec(i);if(c==null||c[1]==null||t==null)o=void 0;else{var l=+c[1];o=t[0]-l}}else o=t?.[0];if(a===`auto`)t!=null&&(s=Math.max(...t));else if(H(a))s=a;else if(typeof a==`function`)try{t!=null&&(s=a(t?.[1]))}catch{}else if(typeof a==`string`&&Ku.test(a)){var u=Ku.exec(a);if(u==null||u[1]==null||t==null)s=void 0;else{var d=+u[1];s=t[1]+d}}else s=t?.[1];var f=[o,s];if(ug(f))return t==null?f:dg(f,t,n)}}}var Z=u(s(((e,t)=>{(function(e){var n=1e9,r={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:`2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286`},i=!0,a=`[DecimalError] `,o=a+`Invalid argument: `,s=a+`Exponent out of range: `,c=Math.floor,l=Math.pow,u=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,d,f=1e7,p=7,m=9007199254740991,h=c(m/p),g={};g.absoluteValue=g.abs=function(){var e=new this.constructor(this);return e.s&&(e.s=1),e},g.comparedTo=g.cmp=function(e){var t,n,r,i,a=this;if(e=new a.constructor(e),a.s!==e.s)return a.s||-e.s;if(a.e!==e.e)return a.e>e.e^a.s<0?1:-1;for(r=a.d.length,i=e.d.length,t=0,n=re.d[t]^a.s<0?1:-1;return r===i?0:r>i^a.s<0?1:-1},g.decimalPlaces=g.dp=function(){var e=this,t=e.d.length-1,n=(t-e.e)*p;if(t=e.d[t],t)for(;t%10==0;t/=10)n--;return n<0?0:n},g.dividedBy=g.div=function(e){return b(this,new this.constructor(e))},g.dividedToIntegerBy=g.idiv=function(e){var t=this,n=t.constructor;return D(b(t,new n(e),0,1),n.precision)},g.equals=g.eq=function(e){return!this.cmp(e)},g.exponent=function(){return S(this)},g.greaterThan=g.gt=function(e){return this.cmp(e)>0},g.greaterThanOrEqualTo=g.gte=function(e){return this.cmp(e)>=0},g.isInteger=g.isint=function(){return this.e>this.d.length-2},g.isNegative=g.isneg=function(){return this.s<0},g.isPositive=g.ispos=function(){return this.s>0},g.isZero=function(){return this.s===0},g.lessThan=g.lt=function(e){return this.cmp(e)<0},g.lessThanOrEqualTo=g.lte=function(e){return this.cmp(e)<1},g.logarithm=g.log=function(e){var t,n=this,r=n.constructor,o=r.precision,s=o+5;if(e===void 0)e=new r(10);else if(e=new r(e),e.s<1||e.eq(d))throw Error(a+`NaN`);if(n.s<1)throw Error(a+(n.s?`NaN`:`-Infinity`));return n.eq(d)?new r(0):(i=!1,t=b(T(n,s),T(e,s),s),i=!0,D(t,o))},g.minus=g.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?O(t,e):_(t,(e.s=-e.s,e))},g.modulo=g.mod=function(e){var t,n=this,r=n.constructor,o=r.precision;if(e=new r(e),!e.s)throw Error(a+`NaN`);return n.s?(i=!1,t=b(n,e,0,1).times(e),i=!0,n.minus(t)):D(new r(n),o)},g.naturalExponential=g.exp=function(){return x(this)},g.naturalLogarithm=g.ln=function(){return T(this)},g.negated=g.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e},g.plus=g.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?_(t,e):O(t,(e.s=-e.s,e))},g.precision=g.sd=function(e){var t,n,r,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(o+e);if(t=S(i)+1,r=i.d.length-1,n=r*p+1,r=i.d[r],r){for(;r%10==0;r/=10)n--;for(r=i.d[0];r>=10;r/=10)n++}return e&&t>n?t:n},g.squareRoot=g.sqrt=function(){var e,t,n,r,o,s,l,u=this,d=u.constructor;if(u.s<1){if(!u.s)return new d(0);throw Error(a+`NaN`)}for(e=S(u),i=!1,o=Math.sqrt(+u),o==0||o==1/0?(t=y(u.d),(t.length+e)%2==0&&(t+=`0`),o=Math.sqrt(t),e=c((e+1)/2)-(e<0||e%2),o==1/0?t=`5e`+e:(t=o.toExponential(),t=t.slice(0,t.indexOf(`e`)+1)+e),r=new d(t)):r=new d(o.toString()),n=d.precision,o=l=n+3;;)if(s=r,r=s.plus(b(u,s,l+2)).times(.5),y(s.d).slice(0,l)===(t=y(r.d)).slice(0,l)){if(t=t.slice(l-3,l+1),o==l&&t==`4999`){if(D(s,n+1,0),s.times(s).eq(u)){r=s;break}}else if(t!=`9999`)break;l+=4}return i=!0,D(r,n)},g.times=g.mul=function(e){var t,n,r,a,o,s,c,l,u,d=this,p=d.constructor,m=d.d,h=(e=new p(e)).d;if(!d.s||!e.s)return new p(0);for(e.s*=d.s,n=d.e+e.e,l=m.length,u=h.length,l=0;){for(t=0,a=l+r;a>r;)c=o[a]+h[r]*m[a-r-1]+t,o[a--]=c%f|0,t=c/f|0;o[a]=(o[a]+t)%f|0}for(;!o[--s];)o.pop();return t?++n:o.shift(),e.d=o,e.e=n,i?D(e,p.precision):e},g.toDecimalPlaces=g.todp=function(e,t){var r=this,i=r.constructor;return r=new i(r),e===void 0?r:(v(e,0,n),t===void 0?t=i.rounding:v(t,0,8),D(r,e+S(r)+1,t))},g.toExponential=function(e,t){var r,i=this,a=i.constructor;return e===void 0?r=k(i,!0):(v(e,0,n),t===void 0?t=a.rounding:v(t,0,8),i=D(new a(i),e+1,t),r=k(i,!0,e+1)),r},g.toFixed=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?k(a):(v(e,0,n),t===void 0?t=o.rounding:v(t,0,8),i=D(new o(a),e+S(a)+1,t),r=k(i.abs(),!1,e+S(i)+1),a.isneg()&&!a.isZero()?`-`+r:r)},g.toInteger=g.toint=function(){var e=this,t=e.constructor;return D(new t(e),S(e)+1,t.rounding)},g.toNumber=function(){return+this},g.toPower=g.pow=function(e){var t,n,r,o,s,l,u=this,f=u.constructor,h=12,g=+(e=new f(e));if(!e.s)return new f(d);if(u=new f(u),!u.s){if(e.s<1)throw Error(a+`Infinity`);return u}if(u.eq(d))return u;if(r=f.precision,e.eq(d))return D(u,r);if(t=e.e,n=e.d.length-1,l=t>=n,s=u.s,!l){if(s<0)throw Error(a+`NaN`)}else if((n=g<0?-g:g)<=m){for(o=new f(d),t=Math.ceil(r/p+4),i=!1;n%2&&(o=o.times(u),ee(o.d,t)),n=c(n/2),n!==0;)u=u.times(u),ee(u.d,t);return i=!0,e.s<0?new f(d).div(o):D(o,r)}return s=s<0&&e.d[Math.max(t,n)]&1?-1:1,u.s=1,i=!1,o=e.times(T(u,r+h)),i=!0,o=x(o),o.s=s,o},g.toPrecision=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?(r=S(a),i=k(a,r<=o.toExpNeg||r>=o.toExpPos)):(v(e,1,n),t===void 0?t=o.rounding:v(t,0,8),a=D(new o(a),e,t),r=S(a),i=k(a,e<=r||r<=o.toExpNeg,e)),i},g.toSignificantDigits=g.tosd=function(e,t){var r=this,i=r.constructor;return e===void 0?(e=i.precision,t=i.rounding):(v(e,1,n),t===void 0?t=i.rounding:v(t,0,8)),D(new i(r),e,t)},g.toString=g.valueOf=g.val=g.toJSON=function(){var e=this,t=S(e),n=e.constructor;return k(e,t<=n.toExpNeg||t>=n.toExpPos)};function _(e,t){var n,r,a,o,s,c,l,u,d=e.constructor,m=d.precision;if(!e.s||!t.s)return t.s||(t=new d(e)),i?D(t,m):t;if(l=e.d,u=t.d,s=e.e,a=t.e,l=l.slice(),o=s-a,o){for(o<0?(r=l,o=-o,c=u.length):(r=u,a=s,c=l.length),s=Math.ceil(m/p),c=s>c?s+1:c+1,o>c&&(o=c,r.length=1),r.reverse();o--;)r.push(0);r.reverse()}for(c=l.length,o=u.length,c-o<0&&(o=c,r=u,u=l,l=r),n=0;o;)n=(l[--o]=l[o]+u[o]+n)/f|0,l[o]%=f;for(n&&(l.unshift(n),++a),c=l.length;l[--c]==0;)l.pop();return t.d=l,t.e=a,i?D(t,m):t}function v(e,t,n){if(e!==~~e||en)throw Error(o+e)}function y(e){var t,n,r,i=e.length-1,a=``,o=e[0];if(i>0){for(a+=o,t=1;tr?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function n(e,t,n){for(var r=0;n--;)e[n]-=r,r=+(e[n]1;)e.shift()}return function(r,i,o,s){var c,l,u,d,m,h,g,_,v,y,b,x,C,w,T,E,O,k,ee=r.constructor,te=r.s==i.s?1:-1,A=r.d,j=i.d;if(!r.s)return new ee(r);if(!i.s)throw Error(a+`Division by zero`);for(l=r.e-i.e,O=j.length,T=A.length,g=new ee(te),_=g.d=[],u=0;j[u]==(A[u]||0);)++u;if(j[u]>(A[u]||0)&&--l,x=o==null?o=ee.precision:s?o+(S(r)-S(i))+1:o,x<0)return new ee(0);if(x=x/p+2|0,u=0,O==1)for(d=0,j=j[0],x++;(u1&&(j=e(j,d),A=e(A,d),O=j.length,T=A.length),w=O,v=A.slice(0,O),y=v.length;y=f/2&&++E;do d=0,c=t(j,v,O,y),c<0?(b=v[0],O!=y&&(b=b*f+(v[1]||0)),d=b/E|0,d>1?(d>=f&&(d=f-1),m=e(j,d),h=m.length,y=v.length,c=t(m,v,h,y),c==1&&(d--,n(m,O16)throw Error(s+S(e));if(!e.s)return new m(d);for(t==null?(i=!1,u=h):u=t,c=new m(.03125);e.abs().gte(.1);)e=e.times(c),p+=5;for(r=Math.log(l(2,p))/Math.LN10*2+5|0,u+=r,n=a=o=new m(d),m.precision=u;;){if(a=D(a.times(e),u),n=n.times(++f),c=o.plus(b(a,n,u)),y(c.d).slice(0,u)===y(o.d).slice(0,u)){for(;p--;)o=D(o.times(o),u);return m.precision=h,t==null?(i=!0,D(o,h)):o}o=c}}function S(e){for(var t=e.e*p,n=e.d[0];n>=10;n/=10)t++;return t}function C(e,t,n){if(t>e.LN10.sd())throw i=!0,n&&(e.precision=n),Error(a+`LN10 precision limit exceeded`);return D(new e(e.LN10),t)}function w(e){for(var t=``;e--;)t+=`0`;return t}function T(e,t){var n,r,o,s,c,l,u,f,p,m=1,h=10,g=e,_=g.d,v=g.constructor,x=v.precision;if(g.s<1)throw Error(a+(g.s?`NaN`:`-Infinity`));if(g.eq(d))return new v(0);if(t==null?(i=!1,f=x):f=t,g.eq(10))return t??(i=!0),C(v,f);if(f+=h,v.precision=f,n=y(_),r=n.charAt(0),s=S(g),Math.abs(s)<0x5543df729c000){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)g=g.times(e),n=y(g.d),r=n.charAt(0),m++;s=S(g),r>1?(g=new v(`0.`+n),s++):g=new v(r+`.`+n.slice(1))}else return u=C(v,f+2,x).times(s+``),g=T(new v(r+`.`+n.slice(1)),f-h).plus(u),v.precision=x,t==null?(i=!0,D(g,x)):g;for(l=c=g=b(g.minus(d),g.plus(d),f),p=D(g.times(g),f),o=3;;){if(c=D(c.times(p),f),u=l.plus(b(c,new v(o),f)),y(u.d).slice(0,f)===y(l.d).slice(0,f))return l=l.times(2),s!==0&&(l=l.plus(C(v,f+2,x).times(s+``))),l=b(l,new v(m),f),v.precision=x,t==null?(i=!0,D(l,x)):l;l=u,o+=2}}function E(e,t){var n,r,a;for((n=t.indexOf(`.`))>-1&&(t=t.replace(`.`,``)),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;)++r;for(a=t.length;t.charCodeAt(a-1)===48;)--a;if(t=t.slice(r,a),t){if(a-=r,n=n-r-1,e.e=c(n/p),e.d=[],r=(n+1)%p,n<0&&(r+=p),rh||e.e<-h))throw Error(s+n)}else e.s=0,e.e=0,e.d=[0];return e}function D(e,t,n){var r,a,o,u,d,m,g,_,v=e.d;for(u=1,o=v[0];o>=10;o/=10)u++;if(r=t-u,r<0)r+=p,a=t,g=v[_=0];else{if(_=Math.ceil((r+1)/p),o=v.length,_>=o)return e;for(g=o=v[_],u=1;o>=10;o/=10)u++;r%=p,a=r-p+u}if(n!==void 0&&(o=l(10,u-a-1),d=g/o%10|0,m=t<0||v[_+1]!==void 0||g%o,m=n<4?(d||m)&&(n==0||n==(e.s<0?3:2)):d>5||d==5&&(n==4||m||n==6&&(r>0?a>0?g/l(10,u-a):0:v[_-1])%10&1||n==(e.s<0?8:7))),t<1||!v[0])return m?(o=S(e),v.length=1,t=t-o-1,v[0]=l(10,(p-t%p)%p),e.e=c(-t/p)||0):(v.length=1,v[0]=e.e=e.s=0),e;if(r==0?(v.length=_,o=1,_--):(v.length=_+1,o=l(10,p-r),v[_]=a>0?(g/l(10,u-a)%l(10,a)|0)*o:0),m)for(;;)if(_==0){(v[0]+=o)==f&&(v[0]=1,++e.e);break}else{if(v[_]+=o,v[_]!=f)break;v[_--]=0,o=1}for(r=v.length;v[--r]===0;)v.pop();if(i&&(e.e>h||e.e<-h))throw Error(s+S(e));return e}function O(e,t){var n,r,a,o,s,c,l,u,d,m,h=e.constructor,g=h.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new h(e),i?D(t,g):t;if(l=e.d,m=t.d,r=t.e,u=e.e,l=l.slice(),s=u-r,s){for(d=s<0,d?(n=l,s=-s,c=m.length):(n=m,r=u,c=l.length),a=Math.max(Math.ceil(g/p),c)+2,s>a&&(s=a,n.length=1),n.reverse(),a=s;a--;)n.push(0);n.reverse()}else{for(a=l.length,c=m.length,d=a0;--a)l[c++]=0;for(a=m.length;a>s;){if(l[--a]0?a=a.charAt(0)+`.`+a.slice(1)+w(r):o>1&&(a=a.charAt(0)+`.`+a.slice(1)),a=a+(i<0?`e`:`e+`)+i):i<0?(a=`0.`+w(-i-1)+a,n&&(r=n-o)>0&&(a+=w(r))):i>=o?(a+=w(i+1-o),n&&(r=n-i-1)>0&&(a=a+`.`+w(r))):((r=i+1)0&&(i+1===o&&(a+=`.`),a+=w(r))),e.s<0?`-`+a:a}function ee(e,t){if(e.length>t)return e.length=t,!0}function te(e){var t,n,r;function i(e){var t=this;if(!(t instanceof i))return new i(e);if(t.constructor=i,e instanceof i){t.s=e.s,t.e=e.e,t.d=(e=e.d)?e.slice():e;return}if(typeof e==`number`){if(e*0!=0)throw Error(o+e);if(e>0)t.s=1;else if(e<0)e=-e,t.s=-1;else{t.s=0,t.e=0,t.d=[0];return}if(e===~~e&&e<1e7){t.e=0,t.d=[e];return}return E(t,e.toString())}else if(typeof e!=`string`)throw Error(o+e);if(e.charCodeAt(0)===45?(e=e.slice(1),t.s=-1):t.s=1,u.test(e))E(t,e);else throw Error(o+e)}if(i.prototype=g,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=te,i.config=i.set=A,e===void 0&&(e={}),e)for(r=[`precision`,`rounding`,`toExpNeg`,`toExpPos`,`LN10`],t=0;t=s[t+1]&&i<=s[t+2])this[r]=i;else throw Error(o+r+`: `+i);if((i=e[r=`LN10`])!==void 0)if(i==Math.LN10)this[r]=new this(i);else throw Error(o+r+`: `+i);return this}r=te(r),r.default=r.Decimal=r,d=new r(1),typeof define==`function`&&define.amd?define(function(){return r}):t!==void 0&&t.exports?t.exports=r:(e||(e=typeof self<`u`&&self&&self.self==self?self:Function(`return this`)()),e.Decimal=r)})(e)}))());function mg(e){return e===0?1:Math.floor(new Z.default(e).abs().log(10).toNumber())+1}function hg(e,t,n){for(var r=new Z.default(e),i=0,a=[];r.lt(t)&&i<1e5;)a.push(r.toNumber()),r=r.add(n),i++;return a}var gg=e=>{var[t,n]=e,[r,i]=[t,n];return t>n&&([r,i]=[n,t]),[r,i]},_g=(e,t,n)=>{if(e.lte(0))return new Z.default(0);var r=mg(e.toNumber()),i=new Z.default(10).pow(r),a=e.div(i),o=r===1?.1:.05,s=new Z.default(Math.ceil(a.div(o).toNumber())).add(n).mul(o).mul(i);return t?new Z.default(s.toNumber()):new Z.default(Math.ceil(s.toNumber()))},vg=(e,t,n)=>{if(e.lte(0))return new Z.default(0);var r=[1,2,2.5,5],i=e.toNumber(),a=Math.floor(new Z.default(i).abs().log(10).toNumber()),o=new Z.default(10).pow(a),s=e.div(o).toNumber(),c=r.findIndex(e=>e>=s-1e-10);if(c===-1&&(o=o.mul(10),c=0),c+=n,c>=r.length){var l=Math.floor(c/r.length);c%=r.length,o=o.mul(new Z.default(10).pow(l))}var u=new Z.default(r[c]??1).mul(o);return t?u:new Z.default(Math.ceil(u.toNumber()))},yg=(e,t,n)=>{var r=new Z.default(1),i=new Z.default(e);if(!i.isint()&&n){var a=Math.abs(e);a<1?(r=new Z.default(10).pow(mg(e)-1),i=new Z.default(Math.floor(i.div(r).toNumber())).mul(r)):a>1&&(i=new Z.default(Math.floor(e)))}else e===0?i=new Z.default(Math.floor((t-1)/2)):n||(i=new Z.default(Math.floor(e)));for(var o=Math.floor((t-1)/2),s=[],c=0;c4&&arguments[4]!==void 0?arguments[4]:0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:_g;if(!Number.isFinite((t-e)/(n-1)))return{step:new Z.default(0),tickMin:new Z.default(0),tickMax:new Z.default(0)};var o=a(new Z.default(t).sub(e).div(n-1),r,i),s;e<=0&&t>=0?s=new Z.default(0):(s=new Z.default(e).add(t).div(2),s=s.sub(new Z.default(s).mod(o)));var c=Math.ceil(s.sub(e).div(o).toNumber()),l=Math.ceil(new Z.default(t).sub(s).div(o).toNumber()),u=c+l+1;return u>n?bg(e,t,n,r,i+1,a):(u0?l+(n-u):l,c=t>0?c:c+(n-u)),{step:o,tickMin:s.sub(new Z.default(c).mul(o)),tickMax:s.add(new Z.default(l).mul(o))})},xg=function(e){var[t,n]=e,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`auto`,o=Math.max(r,2),[s,c]=gg([t,n]);if(s===-1/0||c===1/0){var l=c===1/0?[s,...Array(r-1).fill(1/0)]:[...Array(r-1).fill(-1/0),c];return t>n?l.reverse():l}if(s===c)return yg(s,r,i);var{step:u,tickMin:d,tickMax:f}=bg(s,c,o,i,0,a===`snap125`?vg:_g),p=hg(d,f.add(new Z.default(.1).mul(u)),u);return t>n?p.reverse():p},Sg=function(e,t){var[n,r]=e,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`auto`,[o,s]=gg([n,r]);if(o===-1/0||s===1/0)return[n,r];if(o===s)return[o];var c=a===`snap125`?vg:_g,l=Math.max(t,2),u=c(new Z.default(s).sub(o).div(l-1),i,0),d=[...hg(new Z.default(o),new Z.default(s),u),s];return i===!1&&(d=d.map(e=>Math.round(e))),n>r?d.reverse():d},Cg=e=>e.rootProps.maxBarSize,wg=e=>e.rootProps.barGap,Tg=e=>e.rootProps.barCategoryGap,Eg=e=>e.rootProps.barSize,Dg=e=>e.rootProps.stackOffset,Og=e=>e.rootProps.reverseStackOrder,kg=e=>e.options.chartName,Ag=e=>e.rootProps.syncId,jg=e=>e.rootProps.syncMethod,Mg=e=>e.options.eventEmitter,Ng=e=>e.rootProps.baseValue,Pg={grid:-100,barBackground:-50,area:100,cursorRectangle:200,bar:300,line:400,axis:500,scatter:600,activeBar:1e3,cursorLine:1100,activeDot:1200,label:2e3},Fg={allowDecimals:!1,allowDuplicatedCategory:!0,allowDataOverflow:!1,angle:0,angleAxisId:0,axisLine:!0,axisLineType:`polygon`,cx:0,cy:0,hide:!1,includeHidden:!1,label:!1,niceTicks:`auto`,orientation:`outer`,reversed:!1,scale:`auto`,tick:!0,tickLine:!0,tickSize:8,type:`auto`,zIndex:Pg.axis},Ig={allowDataOverflow:!1,allowDecimals:!1,allowDuplicatedCategory:!0,angle:0,axisLine:!0,includeHidden:!1,hide:!1,niceTicks:`auto`,label:!1,orientation:`right`,radiusAxisId:0,reversed:!1,scale:`auto`,stroke:`#ccc`,tick:!0,tickCount:5,tickLine:!0,type:`auto`,zIndex:Pg.axis},Lg=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function Rg(e,t,n){if(n!==`auto`)return n;if(e!=null)return Mu(e,t)?`category`:`number`}function zg(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Bg(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},af],(e,t)=>{if(e!=null)return e;var n=Rg(t,`angleAxis`,Wg.type)??`category`;return Bg(Bg({},Wg),{},{type:n})}),qg=L([(e,t)=>e.polarAxis.radiusAxis[t],af],(e,t)=>{if(e!=null)return e;var n=Rg(t,`radiusAxis`,Gg.type)??`category`;return Bg(Bg({},Gg),{},{type:n})}),Jg=e=>e.polarOptions,Yg=L([Qu,$u,gd],Ah),Xg=L([Jg,Yg],(e,t)=>{if(e!=null)return Hc(e.innerRadius,t,0)}),Zg=L([Jg,Yg],(e,t)=>{if(e!=null)return Hc(e.outerRadius,t,t*.8)}),Qg=L([Jg],e=>{if(e==null)return[0,0];var{startAngle:t,endAngle:n}=e;return[t,n]});L([Kg,Qg],Lg);var $g=L([Yg,Xg,Zg],(e,t,n)=>{if(!(e==null||t==null||n==null))return[t,n]});L([qg,$g],Lg);var e_=L([J,Jg,Xg,Zg,Qu,$u],(e,t,n,r,i,a)=>{if(!(e!==`centric`&&e!==`radial`||t==null||n==null||r==null)){var{cx:o,cy:s,startAngle:c,endAngle:l}=t;return{cx:Hc(o,i,i/2),cy:Hc(s,a,a/2),innerRadius:n,outerRadius:r,startAngle:c,endAngle:l,clockWise:!1}}}),t_=(e,t)=>t,n_=(e,t,n)=>n;function r_(e){return e?.id}function i_(e,t,n){var{chartData:r=[]}=t,{allowDuplicatedCategory:i,dataKey:a}=n,o=new Map;return e.forEach(e=>{var t=e.data??r;if(!(t==null||t.length===0)){var n=r_(e);t.forEach((t,r)=>{var s=a==null||i?r:String(q(t,a,null)),c=q(t,e.dataKey,0),l=o.has(s)?o.get(s):{};Object.assign(l,{[n]:c}),o.set(s,l)})}}),Array.from(o.values())}function a_(e){return`stackId`in e&&e.stackId!=null&&e.dataKey!=null}var o_=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function s_(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function c_(e,t){if(e.length===t.length){for(var n=0;n{var t=J(e);return t===`horizontal`?`xAxis`:t===`vertical`?`yAxis`:t===`centric`?`angleAxis`:`radiusAxis`},u_=e=>e.tooltip.settings.axisId;function d_(e){if(e!=null){var t=e.ticks,n=e.bandwidth,r=e.range(),i=[Math.min(...r),Math.max(...r)];return{domain:()=>e.domain(),range:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(()=>i),rangeMin:()=>i[0],rangeMax:()=>i[1],isInRange(e){var t=i[0],n=i[1];return t<=n?e>=t&&e<=n:e>=n&&e<=t},bandwidth:n?()=>n.call(e):void 0,ticks:t?n=>t.call(e,n):void 0,map:(t,n)=>{var r=e(t);if(r!=null){if(e.bandwidth&&n!=null&&n.position){var i=e.bandwidth();switch(n.position){case`middle`:r+=i/2;break;case`end`:r+=i;break;default:break}}return r}}}}}var f_=(e,t)=>{if(t!=null)switch(e){case`linear`:if(!ug(t)){for(var n,r,i=0;ir)&&(r=a))}return n!==void 0&&r!==void 0?[n,r]:void 0}return t;default:return t}};function p_(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function m_(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function h_(e){let t,n,r;e.length===2?(t=e===p_||e===m_?e:g_,n=e,r=e):(t=p_,n=(t,n)=>p_(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i>>1;n(e[t],r)<0?i=t+1:a=t}while(i>>1;n(e[t],r)<=0?i=t+1:a=t}while(in&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function g_(){return 0}function __(e){return e===null?NaN:+e}function*v_(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var y_=h_(p_),b_=y_.right;y_.left,h_(__).center;var x_=class extends Map{constructor(e,t=T_){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(S_(this,e))}has(e){return super.has(S_(this,e))}set(e,t){return super.set(C_(this,e),t)}delete(e){return super.delete(w_(this,e))}};function S_({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function C_({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function w_({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function T_(e){return typeof e==`object`&&e?e.valueOf():e}function E_(e=p_){if(e===p_)return D_;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function D_(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et))}var O_=Math.sqrt(50),k_=Math.sqrt(10),A_=Math.sqrt(2);function j_(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=O_?10:a>=k_?5:a>=A_?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/lt&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*lt&&--c),c0))return[];if(e===t)return[e];let r=t=i))return[];let s=a-i+1,c=Array(s);if(r)if(o<0)for(let e=0;e=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n=i)&&(n=i)}return n}function I_(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function L_(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?D_:E_(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));L_(e,t,u,d,i)}let a=e[t],o=n,s=r;for(R_(e,n,t),i(e[r],a)>0&&R_(e,n,r);o0;)--s}i(e[n],a)===0?R_(e,n,s):(++s,R_(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function R_(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function z_(e,t,n){if(e=Float64Array.from(v_(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return I_(e);if(t>=1)return F_(e);var r,i=(r-1)*t,a=Math.floor(i),o=F_(L_(e,a).subarray(0,a+1));return o+(I_(e.subarray(a+1))-o)*(i-a)}}function B_(e,t,n=__){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function V_(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?_v(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?_v(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=iv.exec(e))?new bv(t[1],t[2],t[3],1):(t=av.exec(e))?new bv(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=ov.exec(e))?_v(t[1],t[2],t[3],t[4]):(t=sv.exec(e))?_v(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=cv.exec(e))?Dv(t[1],t[2]/100,t[3]/100,1):(t=lv.exec(e))?Dv(t[1],t[2]/100,t[3]/100,t[4]):uv.hasOwnProperty(e)?gv(uv[e]):e===`transparent`?new bv(NaN,NaN,NaN,0):null}function gv(e){return new bv(e>>16&255,e>>8&255,e&255,1)}function _v(e,t,n,r){return r<=0&&(e=t=n=NaN),new bv(e,t,n,r)}function vv(e){return e instanceof Z_||(e=hv(e)),e?(e=e.rgb(),new bv(e.r,e.g,e.b,e.opacity)):new bv}function yv(e,t,n,r){return arguments.length===1?vv(e):new bv(e,t,n,r??1)}function bv(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Y_(bv,yv,X_(Z_,{brighter(e){return e=e==null?$_:$_**+e,new bv(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Q_:Q_**+e,new bv(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new bv(Tv(this.r),Tv(this.g),Tv(this.b),wv(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:xv,formatHex:xv,formatHex8:Sv,formatRgb:Cv,toString:Cv}));function xv(){return`#${Ev(this.r)}${Ev(this.g)}${Ev(this.b)}`}function Sv(){return`#${Ev(this.r)}${Ev(this.g)}${Ev(this.b)}${Ev((isNaN(this.opacity)?1:this.opacity)*255)}`}function Cv(){let e=wv(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Tv(this.r)}, ${Tv(this.g)}, ${Tv(this.b)}${e===1?`)`:`, ${e})`}`}function wv(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Tv(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Ev(e){return e=Tv(e),(e<16?`0`:``)+e.toString(16)}function Dv(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Av(e,t,n,r)}function Ov(e){if(e instanceof Av)return new Av(e.h,e.s,e.l,e.opacity);if(e instanceof Z_||(e=hv(e)),!e)return new Av;if(e instanceof Av)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n0&&c<1?0:o,new Av(o,s,c,e.opacity)}function kv(e,t,n,r){return arguments.length===1?Ov(e):new Av(e,t,n,r??1)}function Av(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Y_(Av,kv,X_(Z_,{brighter(e){return e=e==null?$_:$_**+e,new Av(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Q_:Q_**+e,new Av(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new bv(Nv(e>=240?e-240:e+120,i,r),Nv(e,i,r),Nv(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Av(jv(this.h),Mv(this.s),Mv(this.l),wv(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=wv(this.opacity);return`${e===1?`hsl(`:`hsla(`}${jv(this.h)}, ${Mv(this.s)*100}%, ${Mv(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function jv(e){return e=(e||0)%360,e<0?e+360:e}function Mv(e){return Math.max(0,Math.min(1,e||0))}function Nv(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Pv=e=>()=>e;function Fv(e,t){return function(n){return e+n*t}}function Iv(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Lv(e){return(e=+e)==1?Rv:function(t,n){return n-t?Iv(t,n,e):Pv(isNaN(t)?n:t)}}function Rv(e,t){var n=t-e;return n?Fv(e,n):Pv(isNaN(e)?t:e)}var zv=(function e(t){var n=Lv(t);function r(e,t){var r=n((e=yv(e)).r,(t=yv(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Rv(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function Bv(e,t){t||(t=[]);var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;in&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Wv(r,i)})),n=qv.lastIndex;return nt&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function oy(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i2?sy:oy,c=l=null,d}function d(i){return i==null||isNaN(i=+i)?a:(c||(c=s(e.map(r),t,n)))(r(o(i)))}return d.invert=function(n){return o(i((l||(l=s(t,e.map(r),Wv)))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,ty),u()):e.slice()},d.range=function(e){return arguments.length?(t=Array.from(e),u()):t.slice()},d.rangeRound=function(e){return t=Array.from(e),n=Qv,u()},d.clamp=function(e){return arguments.length?(o=e?!0:ry,u()):o!==ry},d.interpolate=function(e){return arguments.length?(n=e,u()):n},d.unknown=function(e){return arguments.length?(a=e,d):a},function(e,t){return r=e,i=t,u()}}function uy(){return ly()(ry,ry)}function dy(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function fy(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function py(e){return e=fy(Math.abs(e)),e?e[1]:NaN}function my(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function hy(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var gy=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function _y(e){if(!(t=gy.exec(e)))throw Error(`invalid format: `+e);var t;return new vy({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}_y.prototype=vy.prototype;function vy(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}vy.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?`0`:``)+(this.width===void 0?``:Math.max(1,this.width|0))+(this.comma?`,`:``)+(this.precision===void 0?``:`.`+Math.max(0,this.precision|0))+(this.trim?`~`:``)+this.type};function yy(e){out:for(var t=e.length,n=1,r=-1,i;n0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var by;function xy(e,t){var n=fy(e,t);if(!n)return by=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(by=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+fy(e,Math.max(0,t+a-1))[0]}function Sy(e,t){var n=fy(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var Cy={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:dy,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Sy(e*100,t),r:Sy,s:xy,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function wy(e){return e}var Ty=Array.prototype.map,Ey=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function Dy(e){var t=e.grouping===void 0||e.thousands===void 0?wy:my(Ty.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?wy:hy(Ty.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=_y(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):Cy[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=Cy[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=yy(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&by!==void 0?Ey[8+by/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++op||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r;break}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(py(t)/3)))*3,r=10**-n,i=l((e=_y(e),e.type=`f`,e),{suffix:Ey[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var Oy,ky,Ay;jy({thousands:`,`,grouping:[3],currency:[`$`,``]});function jy(e){return Oy=Dy(e),ky=Oy.format,Ay=Oy.formatPrefix,Oy}function My(e){return Math.max(0,-py(Math.abs(e)))}function Ny(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(py(t)/3)))*3-py(Math.abs(e)))}function Py(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,py(t)-py(e))+1}function Fy(e,t,n,r){var i=P_(e,t,n),a;switch(r=_y(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=Ny(i,o))&&(r.precision=a),Ay(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=Py(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=My(i))&&(r.precision=a-(r.type===`%`)*2);break}return ky(r)}function Iy(e){var t=e.domain;return e.ticks=function(e){var n=t();return M_(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return Fy(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??(n=10);var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s0;){if(l=N_(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function Ly(){var e=uy();return e.copy=function(){return cy(e,Ly())},H_.apply(e,arguments),Iy(e)}function Ry(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,ty),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return Ry(e).unknown(t)},e=arguments.length?Array.from(e,ty):[0,1],Iy(n)}function zy(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return ae**+t}function Ky(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function qy(e){return(t,n)=>-e(-t,n)}function Jy(e){let t=e(By,Vy),n=t.domain,r=10,i,a;function o(){return i=Ky(r),a=Gy(r),n()[0]<0?(i=qy(i),a=qy(a),e(Hy,Uy)):e(By,Vy),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s0){for(;l<=u;++l)for(d=1;ds)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(fs)break;m.push(f)}m.length*2{if(e??(e=10),n??(n=r===10?`s`:`,`),typeof n!=`function`&&(!(r%1)&&(n=_y(n)).precision==null&&(n.trim=!0),n=ky(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*rn(zy(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function Yy(){let e=Jy(ly()).domain([1,10]);return e.copy=()=>cy(e,Yy()).base(e.base()),H_.apply(e,arguments),e}function Xy(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Zy(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Qy(e){var t=1,n=e(Xy(t),Zy(t));return n.constant=function(n){return arguments.length?e(Xy(t=+n),Zy(t)):t},Iy(n)}function $y(){var e=Qy(ly());return e.copy=function(){return cy(e,$y()).constant(e.constant())},H_.apply(e,arguments)}function eb(e){return function(t){return t<0?-((-t)**+e):t**+e}}function tb(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function nb(e){return e<0?-e*e:e*e}function rb(e){var t=e(ry,ry),n=1;function r(){return n===1?e(ry,ry):n===.5?e(tb,nb):e(eb(n),eb(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},Iy(t)}function ib(){var e=rb(ly());return e.copy=function(){return cy(e,ib()).exponent(e.exponent())},H_.apply(e,arguments),e}function ab(){return ib.apply(null,arguments).exponent(.5)}function ob(e){return Math.sign(e)*e*e}function sb(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function cb(){var e=uy(),t=[0,1],n=!1,r;function i(t){var i=sb(e(t));return isNaN(i)?r:n?Math.round(i):i}return i.invert=function(t){return e.invert(ob(t))},i.domain=function(t){return arguments.length?(e.domain(t),i):e.domain()},i.range=function(n){return arguments.length?(e.range((t=Array.from(n,ty)).map(ob)),i):t.slice()},i.rangeRound=function(e){return i.range(e).round(!0)},i.round=function(e){return arguments.length?(n=!!e,i):n},i.clamp=function(t){return arguments.length?(e.clamp(t),i):e.clamp()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return cb(e.domain(),t).round(n).clamp(e.clamp()).unknown(r)},H_.apply(i,arguments),Iy(i)}function lb(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r0?n[i-1]:e[0],i=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return ub().domain([e,t]).range(i).unknown(a)},H_.apply(Iy(o),arguments)}function db(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[b_(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return db().domain(e).range(t).unknown(n)},H_.apply(i,arguments)}var fb=new Date,pb=new Date;function mb(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(smb(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(fb.setTime(+t),pb.setTime(+r),e(fb),e(pb),Math.floor(n(fb,pb))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var hb=mb(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);hb.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?mb(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):hb),hb.range;var gb=1e3,_b=gb*60,vb=_b*60,yb=vb*24,bb=yb*7,xb=yb*30,Sb=yb*365,Cb=mb(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*gb)},(e,t)=>(t-e)/gb,e=>e.getUTCSeconds());Cb.range;var wb=mb(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*gb)},(e,t)=>{e.setTime(+e+t*_b)},(e,t)=>(t-e)/_b,e=>e.getMinutes());wb.range;var Tb=mb(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*_b)},(e,t)=>(t-e)/_b,e=>e.getUTCMinutes());Tb.range;var Eb=mb(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*gb-e.getMinutes()*_b)},(e,t)=>{e.setTime(+e+t*vb)},(e,t)=>(t-e)/vb,e=>e.getHours());Eb.range;var Db=mb(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*vb)},(e,t)=>(t-e)/vb,e=>e.getUTCHours());Db.range;var Ob=mb(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*_b)/yb,e=>e.getDate()-1);Ob.range;var kb=mb(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/yb,e=>e.getUTCDate()-1);kb.range;var Ab=mb(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/yb,e=>Math.floor(e/yb));Ab.range;function jb(e){return mb(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*_b)/bb)}var Mb=jb(0),Nb=jb(1),Pb=jb(2),Fb=jb(3),Ib=jb(4),Lb=jb(5),Rb=jb(6);Mb.range,Nb.range,Pb.range,Fb.range,Ib.range,Lb.range,Rb.range;function zb(e){return mb(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/bb)}var Bb=zb(0),Vb=zb(1),Hb=zb(2),Ub=zb(3),Wb=zb(4),Gb=zb(5),Kb=zb(6);Bb.range,Vb.range,Hb.range,Ub.range,Wb.range,Gb.range,Kb.range;var qb=mb(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());qb.range;var Jb=mb(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());Jb.range;var Yb=mb(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Yb.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:mb(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),Yb.range;var Xb=mb(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Xb.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:mb(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),Xb.range;function Zb(e,t,n,r,i,a){let o=[[Cb,1,gb],[Cb,5,5*gb],[Cb,15,15*gb],[Cb,30,30*gb],[a,1,_b],[a,5,5*_b],[a,15,15*_b],[a,30,30*_b],[i,1,vb],[i,3,3*vb],[i,6,6*vb],[i,12,12*vb],[r,1,yb],[r,2,2*yb],[n,1,bb],[t,1,xb],[t,3,3*xb],[e,1,Sb]];function s(e,t,n){let r=te).right(o,i);if(a===o.length)return e.every(P_(t/Sb,n/Sb,r));if(a===0)return hb.every(Math.max(P_(t,n,r),1));let[s,c]=o[i/o[a-1][2]53)return null;`w`in r||(r.w=1),`Z`in r?(a=rx(ix(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?Vb.ceil(a):Vb(a),a=kb.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=nx(ix(r.y,0,1)),o=a.getDay(),a=o>4||o===0?Nb.ceil(a):Nb(a),a=Ob.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:+(`W`in r)),o=`Z`in r?rx(ix(r.y,0,1)).getUTCDay():nx(ix(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,rx(r)):nx(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in ox?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function D(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function O(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function k(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function ee(e,n,r){return w(e,t,n,r)}function te(e,t,r){return w(e,n,t,r)}function A(e,t,n){return w(e,r,t,n)}function j(e){return o[e.getDay()]}function ne(e){return a[e.getDay()]}function re(e){return c[e.getMonth()]}function ie(e){return s[e.getMonth()]}function ae(e){return i[+(e.getHours()>=12)]}function M(e){return 1+~~(e.getMonth()/3)}function oe(e){return o[e.getUTCDay()]}function N(e){return a[e.getUTCDay()]}function se(e){return c[e.getUTCMonth()]}function ce(e){return s[e.getUTCMonth()]}function le(e){return i[+(e.getUTCHours()>=12)]}function ue(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var ox={"-":``,_:` `,0:`0`},sx=/^\s*\d+/,cx=/^%/,lx=/[\\^$*+?|[\]().{}]/g;function Q(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a[e.toLowerCase(),t]))}function px(e,t,n){var r=sx.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function mx(e,t,n){var r=sx.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function hx(e,t,n){var r=sx.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function gx(e,t,n){var r=sx.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function _x(e,t,n){var r=sx.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function vx(e,t,n){var r=sx.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function yx(e,t,n){var r=sx.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function bx(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function xx(e,t,n){var r=sx.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Sx(e,t,n){var r=sx.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Cx(e,t,n){var r=sx.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function wx(e,t,n){var r=sx.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Tx(e,t,n){var r=sx.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Ex(e,t,n){var r=sx.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function Dx(e,t,n){var r=sx.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Ox(e,t,n){var r=sx.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function kx(e,t,n){var r=sx.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Ax(e,t,n){var r=cx.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function jx(e,t,n){var r=sx.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Mx(e,t,n){var r=sx.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function Nx(e,t){return Q(e.getDate(),t,2)}function Px(e,t){return Q(e.getHours(),t,2)}function Fx(e,t){return Q(e.getHours()%12||12,t,2)}function Ix(e,t){return Q(1+Ob.count(Yb(e),e),t,3)}function Lx(e,t){return Q(e.getMilliseconds(),t,3)}function Rx(e,t){return Lx(e,t)+`000`}function zx(e,t){return Q(e.getMonth()+1,t,2)}function Bx(e,t){return Q(e.getMinutes(),t,2)}function Vx(e,t){return Q(e.getSeconds(),t,2)}function Hx(e){var t=e.getDay();return t===0?7:t}function Ux(e,t){return Q(Mb.count(Yb(e)-1,e),t,2)}function Wx(e){var t=e.getDay();return t>=4||t===0?Ib(e):Ib.ceil(e)}function Gx(e,t){return e=Wx(e),Q(Ib.count(Yb(e),e)+(Yb(e).getDay()===4),t,2)}function Kx(e){return e.getDay()}function qx(e,t){return Q(Nb.count(Yb(e)-1,e),t,2)}function Jx(e,t){return Q(e.getFullYear()%100,t,2)}function Yx(e,t){return e=Wx(e),Q(e.getFullYear()%100,t,2)}function Xx(e,t){return Q(e.getFullYear()%1e4,t,4)}function Zx(e,t){var n=e.getDay();return e=n>=4||n===0?Ib(e):Ib.ceil(e),Q(e.getFullYear()%1e4,t,4)}function Qx(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+Q(t/60|0,`0`,2)+Q(t%60,`0`,2)}function $x(e,t){return Q(e.getUTCDate(),t,2)}function eS(e,t){return Q(e.getUTCHours(),t,2)}function tS(e,t){return Q(e.getUTCHours()%12||12,t,2)}function nS(e,t){return Q(1+kb.count(Xb(e),e),t,3)}function rS(e,t){return Q(e.getUTCMilliseconds(),t,3)}function iS(e,t){return rS(e,t)+`000`}function aS(e,t){return Q(e.getUTCMonth()+1,t,2)}function oS(e,t){return Q(e.getUTCMinutes(),t,2)}function sS(e,t){return Q(e.getUTCSeconds(),t,2)}function cS(e){var t=e.getUTCDay();return t===0?7:t}function lS(e,t){return Q(Bb.count(Xb(e)-1,e),t,2)}function uS(e){var t=e.getUTCDay();return t>=4||t===0?Wb(e):Wb.ceil(e)}function dS(e,t){return e=uS(e),Q(Wb.count(Xb(e),e)+(Xb(e).getUTCDay()===4),t,2)}function fS(e){return e.getUTCDay()}function pS(e,t){return Q(Vb.count(Xb(e)-1,e),t,2)}function mS(e,t){return Q(e.getUTCFullYear()%100,t,2)}function hS(e,t){return e=uS(e),Q(e.getUTCFullYear()%100,t,2)}function gS(e,t){return Q(e.getUTCFullYear()%1e4,t,4)}function _S(e,t){var n=e.getUTCDay();return e=n>=4||n===0?Wb(e):Wb.ceil(e),Q(e.getUTCFullYear()%1e4,t,4)}function vS(){return`+0000`}function yS(){return`%`}function bS(e){return+e}function xS(e){return Math.floor(e/1e3)}var SS,CS,wS;TS({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function TS(e){return SS=ax(e),CS=SS.format,SS.parse,wS=SS.utcFormat,SS.utcParse,SS}function ES(e){return new Date(e)}function DS(e){return e instanceof Date?+e:+new Date(+e)}function OS(e,t,n,r,i,a,o,s,c,l){var u=uy(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)t(r/(e.length-1)))},n.quantiles=function(t){return Array.from({length:t+1},(n,r)=>z_(e,r/t))},n.copy=function(){return RS(t).domain(e)},U_.apply(n,arguments)}function zS(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=ry,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*eK_,scaleDiverging:()=>BS,scaleDivergingLog:()=>VS,scaleDivergingPow:()=>US,scaleDivergingSqrt:()=>WS,scaleDivergingSymlog:()=>HS,scaleIdentity:()=>Ry,scaleImplicit:()=>W_,scaleLinear:()=>Ly,scaleLog:()=>Yy,scaleOrdinal:()=>G_,scalePoint:()=>J_,scalePow:()=>ib,scaleQuantile:()=>lb,scaleQuantize:()=>ub,scaleRadial:()=>cb,scaleSequential:()=>NS,scaleSequentialLog:()=>PS,scaleSequentialPow:()=>IS,scaleSequentialQuantile:()=>RS,scaleSequentialSqrt:()=>LS,scaleSequentialSymlog:()=>FS,scaleSqrt:()=>ab,scaleSymlog:()=>$y,scaleThreshold:()=>db,scaleTime:()=>kS,scaleUtc:()=>AS,tickFormat:()=>Fy});function KS(e){var t=GS;if(e in t&&typeof t[e]==`function`)return t[e]();var n=`scale${Kc(e)}`;if(n in t&&typeof t[n]==`function`)return t[n]()}function qS(e,t,n){if(typeof e==`function`)return e.copy().domain(t).range(n);if(e!=null){var r=KS(e);if(r!=null)return r.domain(t).range(n),r}}function JS(e,t,n,r){if(!(n==null||r==null))return typeof e.scale==`function`?qS(e.scale,n,r):qS(t,n,r)}function YS(e){return`scale${Kc(e)}`}function XS(e){return YS(e)in GS}var ZS=(e,t,n)=>{if(e!=null){var{scale:r,type:i}=e;if(r===`auto`)return i===`category`&&n&&(n.indexOf(`LineChart`)>=0||n.indexOf(`AreaChart`)>=0||n.indexOf(`ComposedChart`)>=0&&!t)?`point`:i===`category`?`band`:`linear`;if(typeof r==`string`)return XS(r)?r:`point`}};function QS(e,t){for(var n=0,r=e.length,i=e[0]t)?n=a+1:r=a}return n}function $S(e,t){if(e){var n=t??e.domain(),r=n.map(t=>e(t)??0),i=e.range();if(!(n.length===0||i.length<2))return e=>{var t=QS(r,e);if(t<=0)return n[0];if(t>=n.length)return n[n.length-1];var i=r[t-1]??0,a=r[t]??0;return Math.abs(e-i)<=Math.abs(e-a)?n[t-1]:n[t]}}}function eC(e){if(e!=null)return`invert`in e&&typeof e.invert==`function`?e.invert.bind(e):$S(e,void 0)}function tC(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function nC(e){for(var t=1;te.cartesianAxis.xAxis[t],lC=(e,t)=>cC(e,t)??sC,uC={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:oC,hide:!0,id:0,includeHidden:!1,interval:`preserveEnd`,minTickGap:5,mirror:!1,name:void 0,orientation:`left`,padding:{top:0,bottom:0},reversed:!1,scale:`auto`,tick:!0,tickCount:5,tickFormatter:void 0,ticks:void 0,type:`number`,unit:void 0,niceTicks:`auto`,width:60},dC=(e,t)=>e.cartesianAxis.yAxis[t],fC=(e,t)=>dC(e,t)??uC,pC={domain:[0,`auto`],includeHidden:!1,reversed:!1,allowDataOverflow:!1,allowDuplicatedCategory:!1,dataKey:void 0,id:0,name:``,range:[64,64],scale:`auto`,type:`number`,unit:``},mC=(e,t)=>e.cartesianAxis.zAxis[t]??pC,hC=(e,t,n)=>{switch(t){case`xAxis`:return lC(e,n);case`yAxis`:return fC(e,n);case`zAxis`:return mC(e,n);case`angleAxis`:return Kg(e,n);case`radiusAxis`:return qg(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},gC=(e,t,n)=>{switch(t){case`xAxis`:return lC(e,n);case`yAxis`:return fC(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},_C=(e,t,n)=>{switch(t){case`xAxis`:return lC(e,n);case`yAxis`:return fC(e,n);case`angleAxis`:return Kg(e,n);case`radiusAxis`:return qg(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},vC=e=>e.graphicalItems.cartesianItems.some(e=>e.type===`bar`)||e.graphicalItems.polarItems.some(e=>e.type===`radialBar`);function yC(e,t){return n=>{switch(e){case`xAxis`:return`xAxisId`in n&&n.xAxisId===t;case`yAxis`:return`yAxisId`in n&&n.yAxisId===t;case`zAxis`:return`zAxisId`in n&&n.zAxisId===t;case`angleAxis`:return`angleAxisId`in n&&n.angleAxisId===t;case`radiusAxis`:return`radiusAxisId`in n&&n.radiusAxisId===t;default:return!1}}}var bC=e=>e.graphicalItems.cartesianItems,xC=L([t_,n_],yC),SC=(e,t,n)=>e.filter(n).filter(e=>t?.includeHidden===!0?!0:!e.hide),CC=L([bC,hC,xC],SC,{memoizeOptions:{resultEqualityCheck:s_}}),wC=L([CC],e=>e.filter(e=>e.type===`area`||e.type===`bar`).filter(a_)),TC=e=>e.filter(e=>!(`stackId`in e)||e.stackId===void 0),EC=L([CC],TC),DC=e=>e.map(e=>e.data).filter(Boolean).flat(1),OC=L([CC],e=>e.some(e=>!e.data)),kC=L([CC],DC,{memoizeOptions:{resultEqualityCheck:s_}}),AC=(e,t)=>{var{chartData:n=[],dataStartIndex:r,dataEndIndex:i}=t;return e.length>0?e:n.slice(r,i+1)},jC=L([kC,ag],AC),MC=(e,t,n)=>t?.dataKey==null?n.length>0?n.map(e=>e.dataKey).flatMap(t=>e.map(e=>({value:q(e,t)}))):e.map(e=>({value:e})):e.map(e=>({value:q(e,t.dataKey)})),NC=(e,t,n,r,i,a)=>{var{chartData:o=[],dataStartIndex:s,dataEndIndex:c}=r,l=MC(e,t,n);return i&&t?.dataKey!=null&&a.length>0?[...o.slice(s,c+1).map(e=>({value:q(e,t.dataKey)})).filter(e=>e.value!=null),...l]:l},PC=L([jC,hC,CC,ag,OC,kC],NC);function FC(e){if(zc(e)||e instanceof Date){var t=Number(e);if(K(t))return t}}function IC(e){if(Array.isArray(e)){var t=[FC(e[0]),FC(e[1])];return ug(t)?t:void 0}var n=FC(e);if(n!=null)return[n,n]}function LC(e){return e.map(FC).filter(qc)}function RC(e,t){var n=FC(e),r=FC(t);return n==null&&r==null?0:n==null?-1:r==null?1:n-r}var zC=L([PC],e=>e?.map(e=>e.value).sort(RC));function BC(e,t){switch(e){case`xAxis`:return t.direction===`x`;case`yAxis`:return t.direction===`y`;default:return!1}}function VC(e,t,n){if(!n||!n.length)return[];var r;if(typeof t==`number`&&!Lc(t))r=t;else if(Array.isArray(t)){var i=LC(t);i.length>0&&(r=Math.max(...i))}return r==null?[]:LC(n.flatMap(t=>{var n=q(e,t.dataKey),i,a;if(Array.isArray(n)?[i,a]=n:i=a=n,!(!K(i)||!K(a)))return[r-i,r+a]}))}var HC=e=>_C(e,l_(e),u_(e)),UC=L([HC],e=>e?.dataKey),WC=L([wC,ag,HC],i_),GC=(e,t,n,r)=>{var i=t.reduce((e,t)=>{if(t.stackId==null)return e;var n=e[t.stackId];return n??(n=[]),n.push(t),e[t.stackId]=n,e},{});return Object.fromEntries(Object.entries(i).map(t=>{var[i,a]=t,o=r?[...a].reverse():a;return[i,{stackedData:Lu(e,o.map(r_),n),graphicalItems:o}]}))},KC=L([WC,wC,Dg,Og],GC),qC=(e,t,n,r)=>{var{dataStartIndex:i,dataEndIndex:a}=t;if(r==null&&n!==`zAxis`){var o=Wu(e,i,a);if(!(o!=null&&o[0]===0&&o[1]===0))return o}},JC=L([hC],e=>e.allowDataOverflow),YC=e=>{if(e==null||!(`domain`in e))return oC;if(e.domain!=null)return e.domain;if(`ticks`in e&&e.ticks!=null){if(e.type===`number`){var t=LC(e.ticks);return[Math.min(...t),Math.max(...t)]}if(e.type===`category`)return e.ticks.map(String)}return e?.domain??oC},XC=L([hC],YC),ZC=L([XC,JC],fg),QC=L([KC,rg,t_,ZC],qC,{memoizeOptions:{resultEqualityCheck:o_}}),$C=e=>e.errorBars,ew=(e,t,n)=>e.flatMap(e=>t[e.id]).filter(Boolean).filter(e=>BC(n,e)),tw=function(){var e=[...arguments].filter(Boolean);if(e.length!==0){var t=e.flat();return[Math.min(...t),Math.max(...t)]}},nw=function(e,t,n,r,i){var a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:[],o,s;if(n.length>0&&n.forEach(e=>{var n=e.data==null?a:[...e.data],c=r[e.id]?.filter(e=>BC(i,e));n.forEach(n=>{var r=q(n,t.dataKey??e.dataKey),i=VC(n,r,c);if(i.length>=2){var a=Math.min(...i),l=Math.max(...i);(o==null||as)&&(s=l)}var u=IC(r);u!=null&&(o=o==null?u[0]:Math.min(o,u[0]),s=s==null?u[1]:Math.max(s,u[1]))})}),t?.dataKey!=null&&n.length===0&&e.forEach(e=>{var n=IC(q(e,t.dataKey));n!=null&&(o=o==null?n[0]:Math.min(o,n[0]),s=s==null?n[1]:Math.max(s,n[1]))}),K(o)&&K(s))return[o,s]},rw=L([jC,hC,EC,$C,t_,sg],nw,{memoizeOptions:{resultEqualityCheck:o_}});function iw(e){var{value:t}=e;if(zc(t)||t instanceof Date)return t}var aw=(e,t,n)=>{var r=e.map(iw).filter(e=>e!=null);return n&&(t.dataKey==null||t.allowDuplicatedCategory&&Uc(r))?(0,ng.default)(0,e.length):t.allowDuplicatedCategory?r:Array.from(new Set(r))},ow=e=>e.referenceElements.dots,sw=(e,t,n)=>e.filter(e=>e.ifOverflow===`extendDomain`).filter(e=>t===`xAxis`?e.xAxisId===n:e.yAxisId===n),cw=L([ow,t_,n_],sw),lw=e=>e.referenceElements.areas,uw=L([lw,t_,n_],sw),dw=e=>e.referenceElements.lines,fw=L([dw,t_,n_],sw),pw=(e,t)=>{if(e!=null){var n=LC(e.map(e=>t===`xAxis`?e.x:e.y));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},mw=L(cw,t_,pw),hw=(e,t)=>{if(e!=null){var n=LC(e.flatMap(e=>[t===`xAxis`?e.x1:e.y1,t===`xAxis`?e.x2:e.y2]));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},gw=L([uw,t_],hw);function _w(e){if(e.x!=null)return LC([e.x]);var t=e.segment?.map(e=>e.x);return t==null||t.length===0?[]:LC(t)}function vw(e){if(e.y!=null)return LC([e.y]);var t=e.segment?.map(e=>e.y);return t==null||t.length===0?[]:LC(t)}var yw=(e,t)=>{if(e!=null){var n=e.flatMap(e=>t===`xAxis`?_w(e):vw(e));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},bw=L(mw,L([fw,t_],yw),gw,(e,t,n)=>tw(e,n,t)),xw=(e,t,n,r,i,a,o,s)=>n??pg(t,o===`vertical`&&s===`xAxis`||o===`horizontal`&&s===`yAxis`?tw(r,a,i):tw(a,i),e.allowDataOverflow),Sw=L([hC,XC,ZC,QC,rw,bw,J,t_],xw,{memoizeOptions:{resultEqualityCheck:o_}}),Cw=[0,1],ww=(e,t,n,r,i,a,o)=>{if(!((e==null||n==null||n.length===0)&&o===void 0)){var{dataKey:s,type:c}=e,l=Mu(t,a);return l&&s==null?(0,ng.default)(0,n?.length??0):c===`category`?aw(r,e,l):i===`expand`&&!l?Cw:o}},Tw=L([hC,J,jC,PC,Dg,t_,Sw],ww),Ew=L([hC,vC,kg],ZS),Dw=(e,t,n)=>{var{niceTicks:r}=t;if(r!==`none`){var i=YC(t),a=Array.isArray(i)&&(i[0]===`auto`||i[1]===`auto`);if((r===`snap125`||r===`adaptive`)&&t!=null&&t.tickCount&&ug(e)){if(a)return xg(e,t.tickCount,t.allowDecimals,r);if(t.type===`number`)return Sg(e,t.tickCount,t.allowDecimals,r)}if(r===`auto`&&n===`linear`&&t!=null&&t.tickCount){if(a&&ug(e))return xg(e,t.tickCount,t.allowDecimals,`adaptive`);if(t.type===`number`&&ug(e))return Sg(e,t.tickCount,t.allowDecimals,`adaptive`)}}},Ow=L([Tw,_C,Ew],Dw),kw=(e,t,n,r)=>{if(r!==`angleAxis`&&e?.type===`number`&&ug(t)&&Array.isArray(n)&&n.length>0){var i=t[0],a=n[0]??0,o=t[1],s=n[n.length-1]??0;return[Math.min(i,a),Math.max(o,s)]}return t},Aw=L([hC,Tw,Ow,t_],kw),jw=L(L(PC,hC,(e,t)=>{if(!(!t||t.type!==`number`)){var n=1/0,r=Array.from(LC(e.map(e=>e.value))).sort((e,t)=>e-t),i=r[0],a=r[r.length-1];if(i==null||a==null)return 1/0;var o=a-i;if(o===0)return 1/0;for(var s=0;si,(e,t,n,r,i)=>{if(!K(e))return 0;var a=t===`vertical`?r.height:r.width;if(i===`gap`)return e*a/2;if(i===`no-gap`){var o=Hc(n,e*a),s=e*a/2;return s-o-(s-o)/a*o}return 0}),Mw=(e,t,n)=>{var r=lC(e,t);return r==null||typeof r.padding!=`string`?0:jw(e,`xAxis`,t,n,r.padding)},Nw=(e,t,n)=>{var r=fC(e,t);return r==null||typeof r.padding!=`string`?0:jw(e,`yAxis`,t,n,r.padding)},Pw=L(lC,Mw,(e,t)=>{if(e==null)return{left:0,right:0};var{padding:n}=e;return typeof n==`string`?{left:t,right:t}:{left:(n.left??0)+t,right:(n.right??0)+t}}),Fw=L(fC,Nw,(e,t)=>{if(e==null)return{top:0,bottom:0};var{padding:n}=e;return typeof n==`string`?{top:t,bottom:t}:{top:(n.top??0)+t,bottom:(n.bottom??0)+t}}),Iw=L([gd,Pw,Sd,xd,(e,t,n)=>n],(e,t,n,r,i)=>{var{padding:a}=r;return i?[a.left,n.width-a.right]:[e.left+t.left,e.left+e.width-t.right]}),Lw=L([gd,J,Fw,Sd,xd,(e,t,n)=>n],(e,t,n,r,i,a)=>{var{padding:o}=i;return a?[r.height-o.bottom,o.top]:t===`horizontal`?[e.top+e.height-n.bottom,e.top+n.top]:[e.top+n.top,e.top+e.height-n.bottom]}),Rw=(e,t,n,r)=>{switch(t){case`xAxis`:return Iw(e,n,r);case`yAxis`:return Lw(e,n,r);case`zAxis`:return mC(e,n)?.range;case`angleAxis`:return Qg(e);case`radiusAxis`:return $g(e,n);default:return}},zw=L([hC,Rw],Lg),Bw=L([hC,Ew,L([Ew,Aw],f_),zw],JS),Vw=(e,t,n,r)=>{if(!(n==null||n.dataKey==null)){var{type:i,scale:a}=n;if(Mu(e,r)&&(i===`number`||a!==`auto`))return t.map(e=>e.value)}},Hw=L([J,PC,_C,t_],Vw),Uw=L([Bw],d_);L([Bw],eC),L([Bw,zC],$S),L([CC,$C,t_],ew);function Ww(e,t){return e.idt.id)}var Gw=(e,t)=>t,Kw=(e,t,n)=>n,qw=L(nd,Gw,Kw,(e,t,n)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===n).sort(Ww)),Jw=L(rd,Gw,Kw,(e,t,n)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===n).sort(Ww)),Yw=(e,t)=>({width:e.width,height:t.height}),Xw=(e,t)=>({width:typeof t.width==`number`?t.width:60,height:e.height}),Zw=L(gd,lC,Yw),Qw=(e,t,n)=>{switch(t){case`top`:return e.top;case`bottom`:return n-e.bottom;default:return 0}},$w=(e,t,n)=>{switch(t){case`left`:return e.left;case`right`:return n-e.right;default:return 0}},eT=L($u,gd,qw,Gw,Kw,(e,t,n,r,i)=>{var a={},o;return n.forEach(n=>{var s=Yw(t,n);o??(o=Qw(t,r,e));var c=r===`top`&&!i||r===`bottom`&&i;a[n.id]=o-Number(c)*s.height,o+=(c?-1:1)*s.height}),a}),tT=L(Qu,gd,Jw,Gw,Kw,(e,t,n,r,i)=>{var a={},o;return n.forEach(n=>{var s=Xw(t,n);o??(o=$w(t,r,e));var c=r===`left`&&!i||r===`right`&&i;a[n.id]=o-Number(c)*s.width,o+=(c?-1:1)*s.width}),a}),nT=L([gd,lC,(e,t)=>{var n=lC(e,t);if(n!=null)return eT(e,n.orientation,n.mirror)},(e,t)=>t],(e,t,n,r)=>{if(t!=null){var i=n?.[r];return i==null?{x:e.left,y:0}:{x:e.left,y:i}}}),rT=L([gd,fC,(e,t)=>{var n=fC(e,t);if(n!=null)return tT(e,n.orientation,n.mirror)},(e,t)=>t],(e,t,n,r)=>{if(t!=null){var i=n?.[r];return i==null?{x:0,y:e.top}:{x:i,y:e.top}}}),iT=L(gd,fC,(e,t)=>({width:typeof t.width==`number`?t.width:60,height:e.height})),aT=(e,t,n)=>{switch(t){case`xAxis`:return Zw(e,n).width;case`yAxis`:return iT(e,n).height;default:return}},oT=(e,t,n,r)=>{if(n!=null){var{allowDuplicatedCategory:i,type:a,dataKey:o}=n,s=Mu(e,r),c=t.map(e=>e.value),l=c.filter(e=>e!=null);if(o&&s&&a===`category`&&i&&Uc(l))return c}},sT=L([J,PC,hC,t_],oT),cT=L([J,gC,Ew,Uw,sT,Hw,Rw,Ow,t_],(e,t,n,r,i,a,o,s,c)=>{if(t!=null){var l=Mu(e,c);return{angle:t.angle,interval:t.interval,minTickGap:t.minTickGap,orientation:t.orientation,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,axisType:c,categoricalDomain:a,duplicateDomain:i,isCategorical:l,niceTicks:s,range:o,realScaleType:n,scale:r}}}),lT=L([J,_C,Ew,Uw,Ow,Rw,sT,Hw,t_],(e,t,n,r,i,a,o,s,c)=>{if(!(t==null||r==null)){var l=Mu(e,c),{type:u,ticks:d,tickCount:f}=t,p=n===`scaleBand`&&typeof r.bandwidth==`function`?r.bandwidth()/2:2,m=u===`category`&&r.bandwidth?r.bandwidth()/p:0;m=c===`angleAxis`&&a!=null&&a.length>=2?Ic(a[0]-a[1])*2*m:m;var h=d||i;return h?h.map((e,t)=>{var n=o?o.indexOf(e):e,i=r.map(n);return K(i)?{index:t,coordinate:i+m,value:e,offset:m}:null}).filter(qc):l&&s?s.map((e,t)=>{var n=r.map(e);return K(n)?{coordinate:n+m,value:e,index:t,offset:m}:null}).filter(qc):r.ticks?r.ticks(f).map((e,t)=>{var n=r.map(e);return K(n)?{coordinate:n+m,value:e,index:t,offset:m}:null}).filter(qc):r.domain().map((e,t)=>{var n=r.map(e);return K(n)?{coordinate:n+m,value:o?o[e]:e,index:t,offset:m}:null}).filter(qc)}}),uT=L([J,_C,Uw,Rw,sT,Hw,t_],(e,t,n,r,i,a,o)=>{if(!(t==null||n==null||r==null||r[0]===r[1])){var s=Mu(e,o),{tickCount:c}=t,l=0;return l=o===`angleAxis`&&r?.length>=2?Ic(r[0]-r[1])*2*l:l,s&&a?a.map((e,t)=>{var r=n.map(e);return K(r)?{coordinate:r+l,value:e,index:t,offset:l}:null}).filter(qc):n.ticks?n.ticks(c).map((e,t)=>{var r=n.map(e);return K(r)?{coordinate:r+l,value:e,index:t,offset:l}:null}).filter(qc):n.domain().map((e,t)=>{var r=n.map(e);return K(r)?{coordinate:r+l,value:i?i[e]:e,index:t,offset:l}:null}).filter(qc)}}),dT=L(hC,Uw,(e,t)=>{if(!(e==null||t==null))return nC(nC({},e),{},{scale:t})});L((e,t,n)=>mC(e,n),L([L([hC,Ew,Tw,zw],JS)],d_),(e,t)=>{if(!(e==null||t==null))return nC(nC({},e),{},{scale:t})});var fT=L([J,nd,rd],(e,t,n)=>{switch(e){case`horizontal`:return t.some(e=>e.reversed)?`right-to-left`:`left-to-right`;case`vertical`:return n.some(e=>e.reversed)?`bottom-to-top`:`top-to-bottom`;case`centric`:case`radial`:return`left-to-right`;default:return}});L([(e,t,n)=>e.renderedTicks[t]?.[n]],e=>{if(!(!e||e.length===0))return t=>{var n=1/0,r=e[0];for(var i of e){var a=Math.abs(i.coordinate-t);ae.options.defaultTooltipEventType,mT=e=>e.options.validateTooltipEventTypes;function hT(e,t,n){if(e==null)return t;var r=e?`axis`:`item`;return n==null?t:n.includes(r)?r:t}function gT(e,t){return hT(t,pT(e),mT(e))}function _T(e){return G(t=>gT(t,e))}var vT=(e,t)=>{var n,r=Number(t);if(!(Lc(r)||t==null))return r>=0?e==null||(n=e[r])==null?void 0:n.value:void 0},yT=e=>e.tooltip.settings,bT={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},xT=va({name:`tooltip`,initialState:{itemInteraction:{click:bT,hover:bT},axisInteraction:{click:bT,hover:bT},keyboardInteraction:bT,syncInteraction:{active:!1,index:null,dataKey:void 0,label:void 0,coordinate:void 0,sourceViewBox:void 0,graphicalItemId:void 0},tooltipItemPayloads:[],settings:{shared:void 0,trigger:`hover`,axisId:0,active:!1,defaultIndex:void 0}},reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(Y(t.payload))},prepare:R()},replaceTooltipEntrySettings:{reducer(e,t){var{prev:n,next:r}=t.payload,i=ji(e).tooltipItemPayloads.indexOf(Y(n));i>-1&&(e.tooltipItemPayloads[i]=Y(r))},prepare:R()},removeTooltipEntrySettings:{reducer(e,t){var n=ji(e).tooltipItemPayloads.indexOf(Y(t.payload));n>-1&&e.tooltipItemPayloads.splice(n,1)},prepare:R()},setTooltipSettingsState(e,t){e.settings=t.payload},setActiveMouseOverItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.itemInteraction.hover.active=!0,e.itemInteraction.hover.index=t.payload.activeIndex,e.itemInteraction.hover.dataKey=t.payload.activeDataKey,e.itemInteraction.hover.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.hover.coordinate=t.payload.activeCoordinate},mouseLeaveChart(e){e.itemInteraction.hover.active=!1,e.axisInteraction.hover.active=!1},mouseLeaveItem(e){e.itemInteraction.hover.active=!1},setActiveClickItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.itemInteraction.click.active=!0,e.keyboardInteraction.active=!1,e.itemInteraction.click.index=t.payload.activeIndex,e.itemInteraction.click.dataKey=t.payload.activeDataKey,e.itemInteraction.click.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.click.coordinate=t.payload.activeCoordinate},setMouseOverAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.axisInteraction.hover.active=!0,e.keyboardInteraction.active=!1,e.axisInteraction.hover.index=t.payload.activeIndex,e.axisInteraction.hover.dataKey=t.payload.activeDataKey,e.axisInteraction.hover.coordinate=t.payload.activeCoordinate},setMouseClickAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.axisInteraction.click.active=!0,e.axisInteraction.click.index=t.payload.activeIndex,e.axisInteraction.click.dataKey=t.payload.activeDataKey,e.axisInteraction.click.coordinate=t.payload.activeCoordinate},setSyncInteraction(e,t){e.syncInteraction=t.payload},setKeyboardInteraction(e,t){e.keyboardInteraction.active=t.payload.active,e.keyboardInteraction.index=t.payload.activeIndex,e.keyboardInteraction.coordinate=t.payload.activeCoordinate}}}),{addTooltipEntrySettings:ST,replaceTooltipEntrySettings:CT,removeTooltipEntrySettings:wT,setTooltipSettingsState:TT,setActiveMouseOverItemIndex:ET,mouseLeaveItem:DT,mouseLeaveChart:OT,setActiveClickItemIndex:kT,setMouseOverAxisIndex:AT,setMouseClickAxisIndex:jT,setSyncInteraction:MT,setKeyboardInteraction:NT}=xT.actions,PT=xT.reducer;function FT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function IT(e){for(var t=1;t{if(t==null)return bT;var i=BT(e,t,n);if(i==null)return bT;if(i.active)return i;if(e.keyboardInteraction.active)return e.keyboardInteraction;if(e.syncInteraction.active&&e.syncInteraction.index!=null)return e.syncInteraction;var a=e.settings.active===!0;if(VT(i)){if(a)return IT(IT({},i),{},{active:!0})}else if(r!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:r,graphicalItemId:void 0};return IT(IT({},bT),{},{coordinate:i.coordinate})};function UT(e){if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(e instanceof Date){var t=e.valueOf();return Number.isFinite(t)?t:void 0}var n=Number(e);return Number.isFinite(n)?n:void 0}function WT(e,t){var n=UT(e),r=t[0],i=t[1];return n===void 0?!1:n>=Math.min(r,i)&&n<=Math.max(r,i)}function GT(e,t,n){if(n==null||t==null)return!0;var r=q(e,t);return r==null||!ug(n)?!0:WT(r,n)}var KT=(e,t,n,r)=>{var i=e?.index;if(i==null)return null;var a=Number(i);if(!K(a))return i;var o=0,s=1/0;t.length>0&&(s=t.length-1);var c=Math.max(o,Math.min(a,s)),l=t[c];return l==null||GT(l,n,r)?String(c):null},qT=(e,t,n,r,i,a,o)=>{if(a!=null){var s=o[0]?.getPosition(a);if(s!=null)return s;var c=i?.[Number(a)];if(c)switch(n){case`horizontal`:return{x:c.coordinate,y:(r.top+t)/2};default:return{x:(r.left+e)/2,y:c.coordinate}}}},JT=(e,t,n,r)=>{if(t===`axis`)return e.tooltipItemPayloads;if(e.tooltipItemPayloads.length===0)return[];var i=n===`hover`?e.itemInteraction.hover.graphicalItemId:e.itemInteraction.click.graphicalItemId;if(e.syncInteraction.active&&i==null)return e.tooltipItemPayloads;if(i==null&&(r!=null||e.keyboardInteraction.active)){var a=e.tooltipItemPayloads[0];return a==null?[]:[a]}return e.tooltipItemPayloads.filter(e=>e.settings?.graphicalItemId===i)},YT=e=>e.options.tooltipPayloadSearcher,XT=e=>e.tooltip;function ZT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function QT(e){for(var t=1;te(t)}function aE(e){if(typeof e==`string`)return e}function oE(e){if(!(typeof e!=`object`||!e))return{name:`name`in e?nE(e.name):void 0,unit:`unit`in e?rE(e.unit):void 0,dataKey:`dataKey`in e?iE(e.dataKey):void 0,payload:`payload`in e?e.payload:void 0,color:`color`in e?aE(e.color):void 0,fill:`fill`in e?aE(e.fill):void 0}}function sE(e,t){return e??t}var cE=(e,t,n,r,i,a,o)=>{if(!(t==null||a==null)){var{chartData:s,computedData:c,dataStartIndex:l,dataEndIndex:u}=n;return e.reduce((e,n)=>{var{dataDefinedOnItem:d,settings:f}=n,p=sE(d,s),m=Array.isArray(p)?wu(p,l,u):p,h=f?.dataKey??r,g=f?.nameKey,_=r&&Array.isArray(m)&&!Array.isArray(m[0])&&o===`axis`?Gc(m,r,i):a(m,t,c,g);return Array.isArray(_)?_.forEach(t=>{var n=oE(t),r=n?.name,i=n?.dataKey,a=n?.payload,o=QT(QT({},f),{},{name:r,unit:n?.unit,color:n?.color??f?.color,fill:n?.fill??f?.fill});e.push(Ju({tooltipEntrySettings:o,dataKey:i,payload:a,value:q(a,i),name:r==null?void 0:String(r)}))}):e.push(Ju({tooltipEntrySettings:f,dataKey:h,payload:_,value:q(_,h),name:q(_,g)??f?.name})),e},[])}},lE=L([HC,vC,kg],ZS),uE=L([L([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),HC,L([l_,u_],yC)],SC,{memoizeOptions:{resultEqualityCheck:s_}}),dE=L([uE],e=>e.filter(a_)),fE=L([uE],DC,{memoizeOptions:{resultEqualityCheck:s_}}),pE=L([uE],e=>e.some(e=>!e.data)),mE=L([fE,rg],AC),hE=L([dE,rg,HC],i_),gE=L([mE,HC,uE,rg,pE,fE],NC),_E=L([HC],YC),vE=L([_E,L([HC],e=>e.allowDataOverflow)],fg),yE=L([L([hE,L([uE],e=>e.filter(a_)),Dg,Og],GC),rg,l_,vE],qC),bE=L([mE,HC,L([uE],TC),$C,l_,lg],nw,{memoizeOptions:{resultEqualityCheck:o_}}),xE=L([L([ow,l_,u_],sw),l_],pw),SE=L([L([lw,l_,u_],sw),l_],hw),CE=L([HC,J,mE,gE,Dg,l_,L([HC,_E,vE,yE,bE,L([xE,L([L([dw,l_,u_],sw),l_],yw),SE],tw),J,l_],xw)],ww),wE=L([HC,CE,L([CE,HC,lE],Dw),l_],kw),TE=e=>Rw(e,l_(e),u_(e),!1),EE=L([HC,TE],Lg),DE=L([L([HC,lE,wE,EE],JS)],d_),OE=L([J,HC,lE,DE,TE,L([J,gE,HC,l_],oT),L([J,gE,HC,l_],Vw),l_],(e,t,n,r,i,a,o,s)=>{if(t){var{type:c}=t,l=Mu(e,s);if(r){var u=n===`scaleBand`&&r.bandwidth?r.bandwidth()/2:2,d=c===`category`&&r.bandwidth?r.bandwidth()/u:0;return d=s===`angleAxis`&&i!=null&&i?.length>=2?Ic(i[0]-i[1])*2*d:d,l&&o?o.map((e,t)=>{var n=r.map(e);return K(n)?{coordinate:n+d,value:e,index:t,offset:d}:null}).filter(qc):r.domain().map((e,t)=>{var n=r.map(e);return K(n)?{coordinate:n+d,value:a?a[e]:e,index:t,offset:d}:null}).filter(qc)}}}),kE=L([pT,mT,yT],(e,t,n)=>hT(n.shared,e,t)),AE=e=>e.tooltip.settings.trigger,jE=e=>e.tooltip.settings.defaultIndex,ME=L([XT,kE,AE,jE],HT),NE=L([ME,mE,UC,CE],KT),PE=L([OE,NE],vT),FE=L([ME],e=>{if(e)return e.dataKey}),IE=L([ME],e=>{if(e)return e.graphicalItemId}),LE=L([XT,kE,AE,jE],JT),RE=L([ME,L([Qu,$u,J,gd,OE,jE,LE],qT)],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),zE=L([ME],e=>e?.active??!1),BE=L([L([LE,NE,rg,UC,PE,YT,kE],cE)],e=>{if(e!=null){var t=e.map(e=>e.payload).filter(e=>e!=null);return Array.from(new Set(t))}});function VE(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function HE(e){for(var t=1;tG(HC),qE=()=>{var e=KE(),t=G(OE),n=G(DE);return qu(!e||!n?void 0:HE(HE({},e),{},{scale:n}),t)};function JE(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function YE(e){for(var t=1;t{var i=t.find(e=>e&&e.index===n);if(i){if(e===`horizontal`)return{x:i.coordinate,y:r.relativeY};if(e===`vertical`)return{x:r.relativeX,y:i.coordinate}}return{x:0,y:0}},eD=(e,t,n,r)=>{var i=t.find(e=>e&&e.index===n);if(i){if(e===`centric`){var a=i.coordinate,{radius:o}=r;return YE(YE(YE({},r),kh(r.cx,r.cy,o,a)),{},{angle:a,radius:o})}var s=i.coordinate,{angle:c}=r;return YE(YE(YE({},r),kh(r.cx,r.cy,s,c)),{},{angle:c,radius:s})}return{angle:0,clockWise:!1,cx:0,cy:0,endAngle:0,innerRadius:0,outerRadius:0,radius:0,startAngle:0,x:0,y:0}};function tD(e,t){var{relativeX:n,relativeY:r}=e;return n>=t.left&&n<=t.left+t.width&&r>=t.top&&r<=t.top+t.height}var nD=(e,t,n,r,i)=>{var a=t?.length??0;if(a<=1||e==null)return 0;if(r===`angleAxis`&&i!=null&&Math.abs(Math.abs(i[1]-i[0])-360)<=1e-6)for(var o=0;o0?n[o-1]?.coordinate:n[a-1]?.coordinate,c=n[o]?.coordinate,l=o>=a-1?n[0]?.coordinate:n[o+1]?.coordinate,u=void 0;if(!(s==null||c==null||l==null))if(Ic(c-s)!==Ic(l-c)){var d=[];if(Ic(l-c)===Ic(i[1]-i[0])){u=l;var f=c+i[1]-i[0];d[0]=Math.min(f,(f+s)/2),d[1]=Math.max(f,(f+s)/2)}else{u=s;var p=l+i[1]-i[0];d[0]=Math.min(c,(p+c)/2),d[1]=Math.max(c,(p+c)/2)}var m=[Math.min(c,(u+c)/2),Math.max(c,(u+c)/2)];if(e>m[0]&&e<=m[1]||e>=d[0]&&e<=d[1])return n[o]?.index}else{var h=Math.min(s,l),g=Math.max(s,l);if(e>(h+c)/2&&e<=(g+c)/2)return n[o]?.index}}else if(t)for(var _=0;_(v.coordinate+b.coordinate)/2||_>0&&_(v.coordinate+b.coordinate)/2&&e<=(v.coordinate+y.coordinate)/2)return v.index}}return-1},rD=()=>G(kg),iD=(e,t)=>t,aD=(e,t,n)=>n,oD=(e,t,n,r)=>r,sD=L(OE,e=>(0,fu.default)(e,e=>e.coordinate)),cD=L([XT,iD,aD,oD],HT),lD=L([cD,mE,UC,CE],KT),uD=(e,t,n)=>{if(t!=null){var r=XT(e);return t===`axis`?n===`hover`?r.axisInteraction.hover.dataKey:r.axisInteraction.click.dataKey:n===`hover`?r.itemInteraction.hover.dataKey:r.itemInteraction.click.dataKey}},dD=L([XT,iD,aD,oD],JT),fD=L([Qu,$u,J,gd,OE,oD,dD],qT),pD=L([cD,fD],(e,t)=>e.coordinate??t),mD=L([OE,lD],vT),hD=L([dD,lD,rg,UC,mD,YT,iD],cE),gD=L([cD,lD],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),_D=(e,t,n,r,i,a,o)=>{if(!(!e||!n||!r||!i)&&tD(e,o)){var s=nD(Xu(e,t),a,i,n,r),c=$E(t,i,s,e);return{activeIndex:String(s),activeCoordinate:c}}},vD=(e,t,n,r,i,a,o)=>{if(!(!e||!r||!i||!a||!n)){var s=Fh(e,n);if(s){var c=nD(Zu(s,t),o,a,r,i),l=eD(t,a,c,s);return{activeIndex:String(c),activeCoordinate:l}}}},yD=(e,t,n,r,i,a,o,s)=>{if(!(!e||!t||!r||!i||!a))return t===`horizontal`||t===`vertical`?_D(e,t,r,i,a,o,s):vD(e,t,n,r,i,a,o)},bD=L(e=>e.zIndex.zIndexMap,(e,t)=>t,(e,t,n)=>n,(e,t,n)=>{if(t!=null){var r=e[t];if(r!=null)return n?r.panoramaElement:r.element}}),xD=L(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(e=>parseInt(e,10)).concat(Object.values(Pg));return Array.from(new Set(t)).sort((e,t)=>e-t)},{memoizeOptions:{resultEqualityCheck:c_}});function SD(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function CD(e){for(var t=1;tCD(CD({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),{})},OD=new Set(Object.values(Pg));function kD(e){return OD.has(e)}var AD=va({name:`zIndex`,initialState:DD,reducers:{registerZIndexPortal:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]?e.zIndexMap[n].consumers+=1:e.zIndexMap[n]={consumers:1,element:void 0,panoramaElement:void 0}},prepare:R()},unregisterZIndexPortal:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]&&(--e.zIndexMap[n].consumers,e.zIndexMap[n].consumers<=0&&!kD(n)&&delete e.zIndexMap[n])},prepare:R()},registerZIndexPortalElement:{reducer:(e,t)=>{var{zIndex:n,element:r,isPanorama:i}=t.payload;e.zIndexMap[n]?i?e.zIndexMap[n].panoramaElement=Y(r):e.zIndexMap[n].element=Y(r):e.zIndexMap[n]={consumers:0,element:i?void 0:Y(r),panoramaElement:i?Y(r):void 0}},prepare:R()},unregisterZIndexPortalElement:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]&&(t.payload.isPanorama?e.zIndexMap[n].panoramaElement=void 0:e.zIndexMap[n].element=void 0)},prepare:R()}}}),{registerZIndexPortal:jD,unregisterZIndexPortal:MD,registerZIndexPortalElement:ND,unregisterZIndexPortalElement:PD}=AD.actions,FD=AD.reducer;function ID(e){var{zIndex:t,children:n}=e,r=of()&&t!==void 0&&t!==0,i=bd(),a=(0,_.useRef)(void 0),o=(0,_.useRef)(new Set),s=W(),c=G(e=>bD(e,t,i));if((0,_.useLayoutEffect)(()=>{if(!r){var e=o.current;e.forEach(e=>{s(MD({zIndex:e}))}),e.clear(),a.current=void 0;return}if(o.current.has(t)||(s(jD({zIndex:t})),o.current.add(t)),c){a.current=c;var n=o.current;n.forEach(e=>{e!==t&&(s(MD({zIndex:e})),n.delete(e))})}},[s,t,r,c]),(0,_.useLayoutEffect)(()=>{var e=o.current;return()=>{e.forEach(e=>{s(MD({zIndex:e}))}),e.clear()}},[s]),!r)return n;var l=c??a.current;return l?(0,v.createPortal)(n,l):null}function LD(){return LD=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,_.useContext)(KD),JD=u(s(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=`~`;function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(r=!1));function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,n,i,o){if(typeof n!=`function`)throw TypeError(`The listener must be a function`);var s=new a(n,i||e,o),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],s]:e._events[c].push(s):(e._events[c]=s,e._eventsCount++),e}function s(e,t){--e._eventsCount===0?e._events=new i:delete e._events[t]}function c(){this._events=new i,this._eventsCount=0}c.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)n.call(t,i)&&e.push(r?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},c.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=Array(a);i{if(t&&Array.isArray(e)){var n=Number.parseInt(t,10);if(!Lc(n))return e[n]}},$D=va({name:`options`,initialState:{chartName:``,tooltipPayloadSearcher:()=>void 0,eventEmitter:void 0,defaultTooltipEventType:`axis`},reducers:{createEventEmitter:e=>{e.eventEmitter??(e.eventEmitter=Symbol(`rechartsEventEmitter`))}}}),eO=$D.reducer,{createEventEmitter:tO}=$D.actions;function nO(e){return e.tooltip.syncInteraction}var rO=va({name:`chartData`,initialState:{chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},reducers:{setChartData(e,t){if(e.chartData=Y(t.payload),t.payload==null){e.dataStartIndex=0,e.dataEndIndex=0;return}t.payload.length>0&&e.dataEndIndex!==t.payload.length-1&&(e.dataEndIndex=t.payload.length-1)},setComputedData(e,t){e.computedData=t.payload},setDataStartEndIndexes(e,t){var{startIndex:n,endIndex:r}=t.payload;n!=null&&(e.dataStartIndex=n),r!=null&&(e.dataEndIndex=r)}}}),{setChartData:iO,setDataStartEndIndexes:aO,setComputedData:oO}=rO.actions,sO=rO.reducer,cO=[`x`,`y`];function lO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function uO(e){for(var t=1;t{if(e==null)return Jc;var s=(s,c,l)=>{if(t!==l&&e===s){if(c.payload.active===!1){n(MT({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(r===`index`){var u;if(o&&c!=null&&(u=c.payload)!=null&&u.coordinate&&c.payload.sourceViewBox){var d=c.payload.coordinate,{x:f,y:p}=d,m=mO(d,cO),{x:h,y:g,width:_,height:v}=c.payload.sourceViewBox,y=uO(uO({},m),{},{x:o.x+(_?(f-h)/_:0)*o.width,y:o.y+(v?(p-g)/v:0)*o.height});n(uO(uO({},c),{},{payload:uO(uO({},c.payload),{},{coordinate:y})}))}else n(c);return}if(i!=null){var b;typeof r==`function`?b=i[r(i,{activeTooltipIndex:c.payload.index==null?void 0:Number(c.payload.index),isTooltipActive:c.payload.active,activeIndex:c.payload.index==null?void 0:Number(c.payload.index),activeLabel:c.payload.label,activeDataKey:c.payload.dataKey,activeCoordinate:c.payload.coordinate})]:r===`value`&&(b=i.find(e=>String(e.value)===c.payload.label));var{coordinate:x}=c.payload;if(x==null||o==null){n(MT({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(b==null){n(MT({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:void 0}));return}var{x:S,y:C}=x,w=Math.min(S,o.x+o.width),T=Math.min(C,o.y+o.height),E={x:a===`horizontal`?b.coordinate:w,y:a===`horizontal`?T:b.coordinate};n(MT({active:c.payload.active,coordinate:E,dataKey:c.payload.dataKey,index:String(b.index),label:c.payload.label,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:c.payload.graphicalItemId}))}}};return YD.on(XD,s),()=>{YD.off(XD,s)}},[G(e=>e.rootProps.className),n,t,e,r,i,a,o])}function _O(){var e=G(Ag),t=G(Mg),n=W();(0,_.useEffect)(()=>{if(e==null)return Jc;var r=(r,i,a)=>{t!==a&&e===r&&n(aO(i))};return YD.on(ZD,r),()=>{YD.off(ZD,r)}},[n,t,e])}function vO(){var e=W();(0,_.useEffect)(()=>{e(tO())},[e]),gO(),_O()}function yO(e,t,n,r,i,a){var o=G(n=>uD(n,e,t)),s=G(IE),c=G(Mg),l=G(Ag),u=G(jg),d=G(nO)?.sourceViewBox!=null,f=Xd();(0,_.useEffect)(()=>{if(!d&&l!=null&&c!=null){var e=MT({active:a,coordinate:n,dataKey:o,index:i,label:typeof r==`number`?String(r):r,sourceViewBox:f,graphicalItemId:s});YD.emit(XD,l,e,c)}},[d,n,o,s,i,r,c,l,u,a,f])}function bO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function xO(e){for(var t=1;t{C(TT({shared:g,trigger:y,axisId:S,active:n,defaultIndex:w}))},[C,g,y,S,n,w]);var T=Xd(),E=zp(),D=_T(g),{activeIndex:O,isActive:k}=G(e=>gD(e,D,y,w))??{},ee=G(e=>hD(e,D,y,w)),te=G(e=>mD(e,D,y,w)),A=G(e=>pD(e,D,y,w)),j=ee,ne=qD(),re=n??k??!1,[ie,ae]=_u([j,re]),M=D===`axis`?te:void 0;yO(D,y,A,M,O,re);var oe=x??ne;if(oe==null||T==null||D==null)return null;var N=j??DO;re||(N=DO),s&&N.length&&(N=Yl(N.filter(e=>e.value!=null&&(e.hide!==!0||t.includeHidden)),u,TO));var se=N.length>0,ce=xO(xO({},t),{},{payload:N,label:M,active:re,activeIndex:O,coordinate:A,accessibilityLayer:E}),le=_.createElement(Rp,{allowEscapeViewBox:r,animationDuration:i,animationEasing:a,isAnimationActive:c,active:re,coordinate:A,hasPayload:se,offset:l,position:d,reverseDirection:f,useTranslate3d:p,viewBox:T,wrapperStyle:m,lastBoundingBox:ie,innerRef:ae,hasPortalFromProps:!!x},EO(o,ce));return _.createElement(_.Fragment,null,(0,v.createPortal)(le,oe),re&&_.createElement(GD,{cursor:h,tooltipEventType:D,coordinate:A,payload:N,index:O}))}var AO=e=>null;AO.displayName=`Cell`;function jO(e,t,n){return(t=MO(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function MO(e){var t=NO(e,`string`);return typeof t==`symbol`?t:t+``}function NO(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var PO=class{constructor(e){jO(this,`cache`,new Map),this.maxSize=e}get(e){var t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.maxSize){var n=this.cache.keys().next().value;n!=null&&this.cache.delete(n)}this.cache.set(e,t)}clear(){this.cache.clear()}size(){return this.cache.size}};function FO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function IO(e){for(var t=1;t{try{var n=document.getElementById(UO);n||(n=document.createElement(`span`),n.setAttribute(`id`,UO),n.setAttribute(`aria-hidden`,`true`),document.body.appendChild(n)),Object.assign(n.style,HO,t),n.textContent=`${e}`;var r=n.getBoundingClientRect();return{width:r.width,height:r.height}}catch{return{width:0,height:0}}},KO=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e==null||kp.isSsr)return{width:0,height:0};if(!BO.enableCache)return GO(e,t);var n=WO(e,t),r=VO.get(n);if(r)return r;var i=GO(e,t);return VO.set(n,i),i},qO;function JO(e,t,n){return(t=YO(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function YO(e){var t=XO(e,`string`);return typeof t==`symbol`?t:t+``}function XO(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var ZO=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([*/])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,QO=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([+-])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,$O=/^(px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q)$/,ek=/(-?\d+(?:\.\d+)?)([a-zA-Z%]+)?/,tk={cm:96/2.54,mm:96/25.4,pt:96/72,pc:96/6,in:96,Q:96/(2.54*40),px:1},nk=[`cm`,`mm`,`pt`,`pc`,`in`,`Q`,`px`];function rk(e){return nk.includes(e)}var ik=`NaN`;function ak(e,t){return e*tk[t]}var ok=class e{static parse(t){var[,n,r]=ek.exec(t)??[];return n==null?e.NaN:new e(parseFloat(n),r??``)}constructor(e,t){this.num=e,this.unit=t,this.num=e,this.unit=t,Lc(e)&&(this.unit=``),t!==``&&!$O.test(t)&&(this.num=NaN,this.unit=``),rk(t)&&(this.num=ak(e,t),this.unit=`px`)}add(t){return this.unit===t.unit?new e(this.num+t.num,this.unit):new e(NaN,``)}subtract(t){return this.unit===t.unit?new e(this.num-t.num,this.unit):new e(NaN,``)}multiply(t){return this.unit!==``&&t.unit!==``&&this.unit!==t.unit?new e(NaN,``):new e(this.num*t.num,this.unit||t.unit)}divide(t){return this.unit!==``&&t.unit!==``&&this.unit!==t.unit?new e(NaN,``):new e(this.num/t.num,this.unit||t.unit)}toString(){return`${this.num}${this.unit}`}isNaN(){return Lc(this.num)}};qO=ok,JO(ok,`NaN`,new qO(NaN,``));function sk(e){if(e==null||e.includes(ik))return ik;for(var t=e;t.includes(`*`)||t.includes(`/`);){var[,n,r,i]=ZO.exec(t)??[],a=ok.parse(n??``),o=ok.parse(i??``),s=r===`*`?a.multiply(o):a.divide(o);if(s.isNaN())return ik;t=t.replace(ZO,s.toString())}for(;t.includes(`+`)||/.-\d+(?:\.\d+)?/.test(t);){var[,c,l,u]=QO.exec(t)??[],d=ok.parse(c??``),f=ok.parse(u??``),p=l===`+`?d.add(f):d.subtract(f);if(p.isNaN())return ik;t=t.replace(QO,p.toString())}return t}var ck=/\(([^()]*)\)/;function lk(e){for(var t=e,n;(n=ck.exec(t))!=null;){var[,r]=n;t=t.replace(ck,sk(r))}return t}function uk(e){var t=e.replace(/\s+/g,``);return t=lk(t),t=sk(t),t}function dk(e){try{return uk(e)}catch{return ik}}function fk(e){var t=dk(e.slice(5,-1));return t===ik?``:t}var pk=[`x`,`y`,`lineHeight`,`capHeight`,`fill`,`scaleToFit`,`textAnchor`,`verticalAnchor`],mk=[`dx`,`dy`,`angle`,`className`,`breakAll`];function hk(){return hk=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{children:t,breakAll:n,style:r}=e;try{var i=[];return U(t)||(i=n?t.toString().split(``):t.toString().split(vk)),{wordsWithComputedWidth:i.map(e=>({word:e,width:KO(e,r).width})),spaceWidth:n?0:KO(`\xA0`,r).width}}catch{return null}};function bk(e){return e===`start`||e===`middle`||e===`end`||e===`inherit`}function xk(e){return U(e)||typeof e==`string`||typeof e==`number`||typeof e==`boolean`}var Sk=(e,t,n,r)=>e.reduce((e,i)=>{var{word:a,width:o}=i,s=e[e.length-1];if(s&&o!=null&&(t==null||r||s.width+o+ne.reduce((e,t)=>e.width>t.width?e:t),wk=`…`,Tk=(e,t,n,r,i,a,o,s)=>{var c=yk({breakAll:n,style:r,children:e.slice(0,t)+wk});if(!c)return[!1,[]];var l=Sk(c.wordsWithComputedWidth,a,o,s);return[l.length>i||Ck(l).width>Number(a),l]},Ek=(e,t,n,r,i)=>{var{maxLines:a,children:o,style:s,breakAll:c}=e,l=H(a),u=String(o),d=Sk(t,r,n,i);if(!l||i||!(d.length>a||Ck(d).width>Number(r)))return d;for(var f=0,p=u.length-1,m=0,h;f<=p&&m<=u.length-1;){var g=Math.floor((f+p)/2),[_,v]=Tk(u,g-1,c,s,a,r,n,i),[y]=Tk(u,g,c,s,a,r,n,i);if(!_&&!y&&(f=g+1),_&&y&&(p=g-1),!_&&y){h=v;break}m++}return h||d},Dk=e=>[{words:U(e)?[]:e.toString().split(vk),width:void 0}],Ok=e=>{var{width:t,scaleToFit:n,children:r,style:i,breakAll:a,maxLines:o}=e;if((t||n)&&!kp.isSsr){var s,c,l=yk({breakAll:a,children:r,style:i});if(l){var{wordsWithComputedWidth:u,spaceWidth:d}=l;s=u,c=d}else return Dk(r);return Ek({breakAll:a,children:r,maxLines:o,style:i},s,c,t,!!n)}return Dk(r)},kk=`#808080`,Ak={angle:0,breakAll:!1,capHeight:`0.71em`,fill:kk,lineHeight:`1em`,scaleToFit:!1,textAnchor:`start`,verticalAnchor:`end`,x:0,y:0},jk=(0,_.forwardRef)((e,t)=>{var n=yl(e,Ak),{x:r,y:i,lineHeight:a,capHeight:o,fill:s,scaleToFit:c,textAnchor:l,verticalAnchor:u}=n,d=gk(n,pk),f=(0,_.useMemo)(()=>Ok({breakAll:d.breakAll,children:d.children,maxLines:d.maxLines,scaleToFit:c,style:d.style,width:d.width}),[d.breakAll,d.children,d.maxLines,c,d.style,d.width]),{dx:p,dy:m,angle:h,className:g,breakAll:v}=d,y=gk(d,mk);if(!zc(r)||!zc(i)||f.length===0)return null;var b=Number(r)+(H(p)?p:0),x=Number(i)+(H(m)?m:0);if(!K(b)||!K(x))return null;var S;switch(u){case`start`:S=fk(`calc(${o})`);break;case`middle`:S=fk(`calc(${(f.length-1)/2} * -${a} + (${o} / 2))`);break;default:S=fk(`calc(${f.length-1} * -${a})`);break}var C=[],w=f[0];if(c&&w!=null){var T=w.width,{width:E}=d;C.push(`scale(${H(E)&&H(T)?E/T:1})`)}return h&&C.push(`rotate(${h}, ${b}, ${x})`),C.length&&(y.transform=C.join(` `)),_.createElement(`text`,hk({},Uo(y),{ref:t,x:b,y:x,className:z(`recharts-text`,g),textAnchor:l,fill:s.includes(`url`)?kk:s}),f.map((e,t)=>{var n=e.words.join(v?``:` `);return _.createElement(`tspan`,{x:b,dy:t===0?S:a,key:`${n}-${t}`},n)}))});jk.displayName=`Text`;function Mk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Nk(e){for(var t=1;t{var{viewBox:t,position:n,offset:r=0,parentViewBox:i,clamp:a}=e,{x:o,y:s,height:c,upperWidth:l,lowerWidth:u}=Yd(t),d=o,f=o+(l-u)/2,p=(d+f)/2,m=(l+u)/2,h=d+l/2,g=c>=0?1:-1,_=g*r,v=g>0?`end`:`start`,y=g>0?`start`:`end`,b=l>=0?1:-1,x=b*r,S=b>0?`end`:`start`,C=b>0?`start`:`end`,w=i;if(n===`top`){var T={x:d+l/2,y:s-_,horizontalAnchor:`middle`,verticalAnchor:v};return a&&w&&(T.height=Math.max(s-w.y,0),T.width=l),T}if(n===`bottom`){var E={x:f+u/2,y:s+c+_,horizontalAnchor:`middle`,verticalAnchor:y};return a&&w&&(E.height=Math.max(w.y+w.height-(s+c),0),E.width=u),E}if(n===`left`){var D={x:p-x,y:s+c/2,horizontalAnchor:S,verticalAnchor:`middle`};return a&&w&&(D.width=Math.max(D.x-w.x,0),D.height=c),D}if(n===`right`){var O={x:p+m+x,y:s+c/2,horizontalAnchor:C,verticalAnchor:`middle`};return a&&w&&(O.width=Math.max(w.x+w.width-O.x,0),O.height=c),O}var k=a&&w?{width:m,height:c}:{};return n===`insideLeft`?Nk({x:p+x,y:s+c/2,horizontalAnchor:C,verticalAnchor:`middle`},k):n===`insideRight`?Nk({x:p+m-x,y:s+c/2,horizontalAnchor:S,verticalAnchor:`middle`},k):n===`insideTop`?Nk({x:d+l/2,y:s+_,horizontalAnchor:`middle`,verticalAnchor:y},k):n===`insideBottom`?Nk({x:f+u/2,y:s+c-_,horizontalAnchor:`middle`,verticalAnchor:v},k):n===`insideTopLeft`?Nk({x:d+x,y:s+_,horizontalAnchor:C,verticalAnchor:y},k):n===`insideTopRight`?Nk({x:d+l-x,y:s+_,horizontalAnchor:S,verticalAnchor:y},k):n===`insideBottomLeft`?Nk({x:f+x,y:s+c-_,horizontalAnchor:C,verticalAnchor:v},k):n===`insideBottomRight`?Nk({x:f+u-x,y:s+c-_,horizontalAnchor:S,verticalAnchor:v},k):n&&typeof n==`object`&&(H(n.x)||Rc(n.x))&&(H(n.y)||Rc(n.y))?Nk({x:o+Hc(n.x,m),y:s+Hc(n.y,c),horizontalAnchor:`end`,verticalAnchor:`end`},k):Nk({x:h,y:s+c/2,horizontalAnchor:`middle`,verticalAnchor:`middle`},k)},Rk=[`labelRef`],zk=[`content`];function Bk(e,t){if(e==null)return{};var n,r,i=Vk(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var{x:t,y:n,upperWidth:r,lowerWidth:i,width:a,height:o,children:s}=e,c=(0,_.useMemo)(()=>({x:t,y:n,upperWidth:r,lowerWidth:i,width:a,height:o}),[t,n,r,i,a,o]);return _.createElement(Jk.Provider,{value:c},s)},Xk=()=>{var e=(0,_.useContext)(Jk),t=Xd();return e||(t?Yd(t):void 0)},Zk=(0,_.createContext)(null),Qk=()=>{var e=(0,_.useContext)(Zk),t=G(e_);return e||t},$k=e=>{var{value:t,formatter:n}=e,r=U(e.children)?t:e.children;return typeof n==`function`?n(r):r},eA=e=>e!=null&&typeof e==`function`,tA=(e,t)=>Ic(t-e)*Math.min(Math.abs(t-e),360),nA=(e,t,n,r,i)=>{var{offset:a,className:o}=e,{cx:s,cy:c,innerRadius:l,outerRadius:u,startAngle:d,endAngle:f,clockWise:p}=i,m=(l+u)/2,h=tA(d,f),g=h>=0?1:-1,v,y;switch(t){case`insideStart`:v=d+g*a,y=p;break;case`insideEnd`:v=f-g*a,y=!p;break;case`end`:v=f+g*a,y=p;break;default:throw Error(`Unsupported position ${t}`)}y=h<=0?y:!y;var b=kh(s,c,m,v),x=kh(s,c,m,v+(y?1:-1)*359),S=`M${b.x},${b.y} - A${m},${m},0,1,${+!y}, - ${x.x},${x.y}`,C=U(e.id)?Vc(`recharts-radial-line-`):e.id;return _.createElement(`text`,qk({},r,{dominantBaseline:`central`,className:z(`recharts-radial-bar-label`,o)}),_.createElement(`defs`,null,_.createElement(`path`,{id:C,d:S})),_.createElement(`textPath`,{xlinkHref:`#${C}`},n))},rA=(e,t,n)=>{var{cx:r,cy:i,innerRadius:a,outerRadius:o,startAngle:s,endAngle:c}=e,l=(s+c)/2;if(n===`outside`){var{x:u,y:d}=kh(r,i,o+t,l);return{x:u,y:d,textAnchor:u>=r?`start`:`end`,verticalAnchor:`middle`}}if(n===`center`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`middle`};if(n===`centerTop`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`start`};if(n===`centerBottom`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`end`};var{x:f,y:p}=kh(r,i,(a+o)/2,l);return{x:f,y:p,textAnchor:`middle`,verticalAnchor:`middle`}},iA=e=>e!=null&&`cx`in e&&H(e.cx),aA={angle:0,offset:5,zIndex:Pg.label,position:`middle`,textBreakAll:!1};function oA(e){if(!iA(e))return e;var{cx:t,cy:n,outerRadius:r}=e,i=r*2;return{x:t-r,y:n-r,width:i,upperWidth:i,lowerWidth:i,height:i}}function sA(e){var t=yl(e,aA),{viewBox:n,parentViewBox:r,position:i,value:a,children:o,content:s,className:c=``,textBreakAll:l,labelRef:u}=t,d=Qk(),f=Xk(),p=n==null?i===`center`?f:d??f:iA(n)?n:Yd(n),m,h,g=oA(p);if(!p||U(a)&&U(o)&&!(0,_.isValidElement)(s)&&typeof s!=`function`)return null;var v=Uk(Uk({},t),{},{viewBox:p});if((0,_.isValidElement)(s)){var{labelRef:y}=v;return(0,_.cloneElement)(s,Bk(v,Rk))}if(typeof s==`function`){var{content:b}=v;if(m=(0,_.createElement)(s,Bk(v,zk)),(0,_.isValidElement)(m))return m}else m=$k(t);var x=Uo(t);if(iA(p)){if(i===`insideStart`||i===`insideEnd`||i===`end`)return nA(t,i,m,x,p);h=rA(p,t.offset,t.position)}else{if(!g)return null;var S=Lk({viewBox:g,position:i,offset:t.offset,parentViewBox:iA(r)?void 0:r,clamp:!0});h=Uk(Uk({x:S.x,y:S.y,textAnchor:S.horizontalAnchor,verticalAnchor:S.verticalAnchor},S.width===void 0?{}:{width:S.width}),S.height===void 0?{}:{height:S.height})}return _.createElement(ID,{zIndex:t.zIndex},_.createElement(jk,qk({ref:u,className:z(`recharts-label`,c)},x,h,{textAnchor:bk(x.textAnchor)?x.textAnchor:h.textAnchor,breakAll:l}),m))}sA.displayName=`Label`;var cA=(e,t,n)=>{if(!e)return null;var r={viewBox:t,labelRef:n};return e===!0?_.createElement(sA,qk({key:`label-implicit`},r)):zc(e)?_.createElement(sA,qk({key:`label-implicit`,value:e},r)):(0,_.isValidElement)(e)?e.type===sA?(0,_.cloneElement)(e,Uk({key:`label-implicit`},r)):_.createElement(sA,qk({key:`label-implicit`,content:e},r)):eA(e)?_.createElement(sA,qk({key:`label-implicit`,content:e},r)):e&&typeof e==`object`?_.createElement(sA,qk({},e,{key:`label-implicit`},r)):null};function lA(e){var{label:t,labelRef:n}=e;return cA(t,Xk(),n)||null}var uA=[`valueAccessor`],dA=[`dataKey`,`clockWise`,`id`,`textBreakAll`,`zIndex`];function fA(){return fA=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=Array.isArray(e.value)?e.value[e.value.length-1]:e.value;if(xk(t))return t},gA=(0,_.createContext)(void 0),_A=gA.Provider,vA=(0,_.createContext)(void 0),yA=vA.Provider;function bA(){return(0,_.useContext)(gA)}function xA(){return(0,_.useContext)(vA)}function SA(e){var{valueAccessor:t=hA}=e,n=pA(e,uA),{dataKey:r,clockWise:i,id:a,textBreakAll:o,zIndex:s}=n,c=pA(n,dA),l=bA(),u=xA(),d=l||u;return!d||!d.length?null:_.createElement(ID,{zIndex:s??Pg.label},_.createElement(es,{className:`recharts-label-list`},d.map((e,i)=>{var s=U(r)?t(e,i):q(e.payload,r),l=U(a)?{}:{id:`${a}-${i}`};return _.createElement(sA,fA({key:`label-${i}`},Uo(e),c,l,{fill:n.fill??e.fill,parentViewBox:e.parentViewBox,value:s,textBreakAll:o,viewBox:e.viewBox,index:i,zIndex:0}))})))}SA.displayName=`LabelList`;function CA(e){var{label:t}=e;return t?t===!0?_.createElement(SA,{key:`labelList-implicit`}):_.isValidElement(t)||eA(t)?_.createElement(SA,{key:`labelList-implicit`,content:t}):typeof t==`object`?_.createElement(SA,fA({key:`labelList-implicit`},t,{type:String(t.type)})):null:null}function wA(){return wA=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{cx:t,cy:n,r,className:i}=e,a=z(`recharts-dot`,i);return H(t)&&H(n)&&H(r)?_.createElement(`circle`,wA({},Vo(e),dl(e),{className:a,cx:t,cy:n,r})):null},EA=va({name:`polarAxis`,initialState:{radiusAxis:{},angleAxis:{}},reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=Y(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=Y(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),{addRadiusAxis:DA,removeRadiusAxis:OA,addAngleAxis:kA,removeAngleAxis:AA}=EA.actions,jA=EA.reducer;function MA(e){return e&&typeof e==`object`&&`className`in e&&typeof e.className==`string`?e.className:``}var NA=s((e=>{var t=Symbol.for(`react.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.provider`),s=Symbol.for(`react.context`),c=Symbol.for(`react.server_context`),l=Symbol.for(`react.forward_ref`),u=Symbol.for(`react.suspense`),d=Symbol.for(`react.suspense_list`),f=Symbol.for(`react.memo`),p=Symbol.for(`react.lazy`);function m(e){if(typeof e==`object`&&e){var m=e.$$typeof;switch(m){case t:switch(e=e.type,e){case r:case a:case i:case u:case d:return e;default:switch(e=e&&e.$$typeof,e){case c:case s:case l:case p:case f:case o:return e;default:return m}}case n:return m}}}e.isFragment=function(e){return m(e)===r}})),PA=s(((e,t)=>{t.exports=NA()}))(),FA=e=>typeof e==`string`?e:e?e.displayName||e.name||`Component`:``,IA=null,LA=null,RA=e=>{if(e===IA&&Array.isArray(LA))return LA;var t=[];return _.Children.forEach(e,e=>{U(e)||((0,PA.isFragment)(e)?t=t.concat(RA(e.props.children)):t.push(e))}),LA=t,IA=e,t};function zA(e,t){var n=[],r=[];return r=Array.isArray(t)?t.map(e=>FA(e)):[FA(t)],RA(e).forEach(e=>{var t=(0,Nc.default)(e,`type.displayName`)||(0,Nc.default)(e,`type.name`);t&&r.indexOf(t)!==-1&&n.push(e)}),n}var BA=e=>e&&typeof e==`object`&&`clipDot`in e?!!e.clipDot:!0,VA=s((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){if(typeof e!=`object`||!e)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!==`[object Object]`){let t=e[Symbol.toStringTag];return t==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${t}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}e.isPlainObject=t})),HA=s(((e,t)=>{t.exports=VA().isPlainObject})),UA,WA,GA,KA,qA;function JA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function YA(e){for(var t=1;t{var a=n-r,o=V(UA||(UA=ej([`M `,`,`,``])),e,t);return o+=V(WA||(WA=ej([`L `,`,`,``])),e+n,t),o+=V(GA||(GA=ej([`L `,`,`,``])),e+n-a/2,t+i),o+=V(KA||(KA=ej([`L `,`,`,``])),e+n-a/2-r,t+i),o+=V(qA||(qA=ej([`L `,`,`,` Z`])),e,t),o},nj={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:`ease`},rj=e=>{var t=yl(e,nj),{x:n,y:r,upperWidth:i,lowerWidth:a,height:o,className:s}=t,{animationEasing:c,animationDuration:l,animationBegin:u,isUpdateAnimationActive:d}=t,f=(0,_.useRef)(null),[p,m]=(0,_.useState)(-1),h=(0,_.useRef)(i),g=(0,_.useRef)(a),v=(0,_.useRef)(o),y=(0,_.useRef)(n),b=(0,_.useRef)(r),x=Zm(e,`trapezoid-`);if((0,_.useEffect)(()=>{if(f.current&&f.current.getTotalLength)try{var e=f.current.getTotalLength();e&&m(e)}catch{}},[]),n!==+n||r!==+r||i!==+i||a!==+a||o!==+o||i===0&&a===0||o===0)return null;var S=z(`recharts-trapezoid`,s);if(!d)return _.createElement(`g`,null,_.createElement(`path`,$A({},Uo(t),{className:S,d:tj(n,r,i,a,o)})));var C=h.current,w=g.current,T=v.current,E=y.current,D=b.current,O=`0px ${p===-1?1:p}px`,k=`${p}px ${p}px`,ee=ym([`strokeDasharray`],l,c);return _.createElement(Xm,{animationId:x,key:x,canBegin:p>0,duration:l,easing:c,isActive:d,begin:u},e=>{var s=Wc(C,i,e),c=Wc(w,a,e),l=Wc(T,o,e),u=Wc(E,n,e),d=Wc(D,r,e);f.current&&(h.current=s,g.current=c,v.current=l,y.current=u,b.current=d);var p=e>0?{transition:ee,strokeDasharray:k}:{strokeDasharray:O};return _.createElement(`path`,$A({},Uo(t),{className:S,d:tj(u,d,s,c,l),ref:f,style:YA(YA({},p),t.style)}))})},ij=u(HA()),aj=[`option`,`shapeType`,`activeClassName`,`inActiveClassName`];function oj(e,t){if(e==null)return{};var n,r,i=sj(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var r=W();return(i,a)=>o=>{e?.(i,a,o),r(ET({activeIndex:String(a),activeDataKey:t,activeCoordinate:i.tooltipPosition,activeGraphicalItemId:n}))}},yj=e=>{var t=W();return(n,r)=>i=>{e?.(n,r,i),t(DT())}},bj=(e,t,n)=>{var r=W();return(i,a)=>o=>{e?.(i,a,o),r(kT({activeIndex:String(a),activeDataKey:t,activeCoordinate:i.tooltipPosition,activeGraphicalItemId:n}))}};function xj(e){var{tooltipEntrySettings:t}=e,n=W(),r=bd(),i=(0,_.useRef)(null);return(0,_.useLayoutEffect)(()=>{r||(i.current===null?n(ST(t)):i.current!==t&&n(CT({prev:i.current,next:t})),i.current=t)},[t,n,r]),(0,_.useLayoutEffect)(()=>()=>{i.current&&(n(wT(i.current)),i.current=null)},[n]),null}function Sj(e){var{legendPayload:t}=e,n=W(),r=bd(),i=(0,_.useRef)(null);return(0,_.useLayoutEffect)(()=>{r||(i.current===null?n(op(t)):i.current!==t&&n(sp({prev:i.current,next:t})),i.current=t)},[n,r,t]),(0,_.useLayoutEffect)(()=>()=>{i.current&&(n(cp(i.current)),i.current=null)},[n]),null}function Cj(e){var{legendPayload:t}=e,n=W(),r=G(J),i=(0,_.useRef)(null);return(0,_.useLayoutEffect)(()=>{r!==`centric`&&r!==`radial`||(i.current===null?n(op(t)):i.current!==t&&n(sp({prev:i.current,next:t})),i.current=t)},[n,r,t]),(0,_.useLayoutEffect)(()=>()=>{i.current&&(n(cp(i.current)),i.current=null)},[n]),null}var wj=_.useId??(()=>{var[e]=_.useState(()=>Vc(`uid-`));return e});function Tj(e,t){var n=wj();return t||(e?`${e}-${n}`:n)}var Ej=(0,_.createContext)(void 0),Dj=e=>{var{id:t,type:n,children:r}=e,i=Tj(`recharts-${n}`,t);return _.createElement(Ej.Provider,{value:i},r(i))},Oj=va({name:`graphicalItems`,initialState:{cartesianItems:[],polarItems:[]},reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(Y(t.payload))},prepare:R()},replaceCartesianGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,i=ji(e).cartesianItems.indexOf(Y(n));i>-1&&(e.cartesianItems[i]=Y(r))},prepare:R()},removeCartesianGraphicalItem:{reducer(e,t){var n=ji(e).cartesianItems.indexOf(Y(t.payload));n>-1&&e.cartesianItems.splice(n,1)},prepare:R()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(Y(t.payload))},prepare:R()},removePolarGraphicalItem:{reducer(e,t){var n=ji(e).polarItems.indexOf(Y(t.payload));n>-1&&e.polarItems.splice(n,1)},prepare:R()},replacePolarGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,i=ji(e).polarItems.indexOf(Y(n));i>-1&&(e.polarItems[i]=Y(r))},prepare:R()}}}),{addCartesianGraphicalItem:kj,replaceCartesianGraphicalItem:Aj,removeCartesianGraphicalItem:jj,addPolarGraphicalItem:Mj,removePolarGraphicalItem:Nj,replacePolarGraphicalItem:Pj}=Oj.actions,Fj=Oj.reducer,Ij=(0,_.memo)(e=>{var t=W(),n=(0,_.useRef)(null);return(0,_.useLayoutEffect)(()=>{n.current===null?t(kj(e)):n.current!==e&&t(Aj({prev:n.current,next:e})),n.current=e},[t,e]),(0,_.useLayoutEffect)(()=>()=>{n.current&&(t(jj(n.current)),n.current=null)},[t]),null}),Lj=(0,_.memo)(e=>{var t=W(),n=(0,_.useRef)(null);return(0,_.useLayoutEffect)(()=>{n.current===null?t(Mj(e)):n.current!==e&&t(Pj({prev:n.current,next:e})),n.current=e},[t,e]),(0,_.useLayoutEffect)(()=>()=>{n.current&&(t(Nj(n.current)),n.current=null)},[t]),null}),Rj=[`points`];function zj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Bj(e){for(var t=1;t{var s=Bj(Bj(Bj({r:3},o),d),{},{index:r,cx:e.x??void 0,cy:e.y??void 0,dataKey:a,value:e.value,payload:e.payload,points:t});return _.createElement(qj,{key:`dot-${r}`,option:n,dotProps:s,className:i})}),p={};return s&&c!=null&&(p.clipPath=`url(#clipPath-${u?``:`dots-`}${c})`),_.createElement(ID,{zIndex:l},_.createElement(es,Wj({className:r},p),f))}function Xj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Zj(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right})),Qu,$u],(e,t,n)=>{if(!(!e||t==null||n==null))return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,n-e.top-e.bottom)}}),mM=()=>G(pM),hM=()=>G(BE);function gM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _M(e){for(var t=1;t{var{point:t,childIndex:n,mainColor:r,activeDot:i,dataKey:a,clipPath:o}=e;if(i===!1||t.x==null||t.y==null)return null;var s=_M(_M(_M({},{index:n,dataKey:a,cx:t.x,cy:t.y,r:4,fill:r??`none`,strokeWidth:2,stroke:`#fff`,payload:t.payload,value:t.value}),Ho(i)),dl(i)),c=(0,_.isValidElement)(i)?(0,_.cloneElement)(i,s):typeof i==`function`?i(s):_.createElement(TA,s);return _.createElement(es,{className:`recharts-active-dot`,clipPath:o},c)};function SM(e){var{points:t,mainColor:n,activeDot:r,itemDataKey:i,clipPath:a,zIndex:o=Pg.activeDot}=e,s=G(NE),c=hM();if(t==null||c==null)return null;var l=t.find(e=>c.includes(e.payload));return U(l)?null:_.createElement(ID,{zIndex:o},_.createElement(xM,{point:l,childIndex:Number(s),mainColor:n,dataKey:i,activeDot:r,clipPath:a}))}var CM=e=>{var{chartData:t}=e,n=W(),r=bd();return(0,_.useEffect)(()=>r?()=>{}:(n(iO(t)),()=>{n(iO(void 0))}),[t,n,r]),null},wM={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},TM=va({name:`brush`,initialState:wM,reducers:{setBrushSettings(e,t){return t.payload==null?wM:t.payload}}}),{setBrushSettings:EM}=TM.actions,DM=TM.reducer;function OM(e){return(e%180+180)%180}var kM=function(e){var{width:t,height:n}=e,r=OM(arguments.length>1&&arguments[1]!==void 0?arguments[1]:0)*Math.PI/180,i=Math.atan(n/t),a=r>i&&r{e.dots.push(t.payload)},removeDot:(e,t)=>{var n=ji(e).dots.findIndex(e=>e===t.payload);n!==-1&&e.dots.splice(n,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var n=ji(e).areas.findIndex(e=>e===t.payload);n!==-1&&e.areas.splice(n,1)},addLine:(e,t)=>{e.lines.push(Y(t.payload))},removeLine:(e,t)=>{var n=ji(e).lines.findIndex(e=>e===t.payload);n!==-1&&e.lines.splice(n,1)}}}),{addDot:jM,removeDot:MM,addArea:NM,removeArea:PM,addLine:FM,removeLine:IM}=AM.actions,LM=AM.reducer,RM=(0,_.createContext)(void 0),zM=e=>{var{children:t}=e,[n]=(0,_.useState)(`${Vc(`recharts`)}-clip`),r=mM();if(r==null)return null;var{x:i,y:a,width:o,height:s}=r;return _.createElement(RM.Provider,{value:n},_.createElement(`defs`,null,_.createElement(`clipPath`,{id:n},_.createElement(`rect`,{x:i,y:a,height:s,width:o}))),t)};function BM(e,t){if(t<1)return[];if(t===1)return e;for(var n=[],r=0;re*i)return!1;var a=n();return e*(t-e*a/2-r)>=0&&e*(t+e*a/2-i)<=0}function WM(e,t){return BM(e,t+1)}function GM(e,t,n,r,i){for(var a=(r||[]).slice(),{start:o,end:s}=t,c=0,l=1,u=o,d=function(){var t=r?.[c];if(t===void 0)return{v:BM(r,l)};var a=c,d,f=()=>(d===void 0&&(d=n(t,a)),d),p=t.coordinate,m=c===0||UM(e,p,f,u,s);m||(c=0,u=o,l+=1),m&&(u=p+e*(f()/2+i),c+=l)},f;l<=a.length;)if(f=d(),f)return f.v;return[]}function KM(e,t,n,r,i){var a=(r||[]).slice().length;if(a===0)return[];for(var{start:o,end:s}=t,c=1;c<=a;c++){for(var l=(a-1)%c,u=o,d=!0,f=function(){var t=r[m];if(t==null)return 0;var a=m,o,c=()=>(o===void 0&&(o=n(t,a)),o),f=t.coordinate,p=m===l||UM(e,f,c,u,s);if(!p)return d=!1,1;p&&(u=f+e*(c()/2+i))},p,m=l;m(u===void 0&&(u=n(r,t)),u);if(t===o-1){var f=e*(l.coordinate+e*d()/2-c);a[t]=l=JM(JM({},l),{},{tickCoord:f>0?l.coordinate-f*e:l.coordinate})}else a[t]=l=JM(JM({},l),{},{tickCoord:l.coordinate});l.tickCoord!=null&&UM(e,l.tickCoord,d,s,c)&&(c=l.tickCoord-e*(d()/2+i),a[t]=JM(JM({},l),{},{isShow:!0}))},u=o-1;u>=0;u--)if(l(u))continue;return a}function $M(e,t,n,r,i,a){var o=(r||[]).slice(),s=o.length,{start:c,end:l}=t;if(a){var u=r[s-1];if(u!=null){var d=n(u,s-1),f=e*(u.coordinate+e*d/2-l);o[s-1]=u=JM(JM({},u),{},{tickCoord:f>0?u.coordinate-f*e:u.coordinate}),u.tickCoord!=null&&UM(e,u.tickCoord,()=>d,c,l)&&(l=u.tickCoord-e*(d/2+i),o[s-1]=JM(JM({},u),{},{isShow:!0}))}}for(var p=a?s-1:s,m=function(t){var r=o[t];if(r==null)return 1;var a=r,s,u=()=>(s===void 0&&(s=n(r,t)),s);if(t===0){var d=e*(a.coordinate-e*u()/2-c);o[t]=a=JM(JM({},a),{},{tickCoord:d<0?a.coordinate-d*e:a.coordinate})}else o[t]=a=JM(JM({},a),{},{tickCoord:a.coordinate});a.tickCoord!=null&&UM(e,a.tickCoord,u,c,l)&&(c=a.tickCoord+e*(u()/2+i),o[t]=JM(JM({},a),{},{isShow:!0}))},h=0;h{var i=typeof l==`function`?l(e.value,r):e.value;return p===`width`?VM(KO(i,{fontSize:t,letterSpacing:n}),m,d):KO(i,{fontSize:t,letterSpacing:n})[p]},g=i[0],_=i[1],v=i.length>=2&&g!=null&&_!=null?Ic(_.coordinate-g.coordinate):1,y=HM(a,v,p);return c===`equidistantPreserveStart`?GM(v,y,h,i,o):c===`equidistantPreserveEnd`?KM(v,y,h,i,o):(f=c===`preserveStart`||c===`preserveStartEnd`?$M(v,y,h,i,o,c===`preserveStartEnd`):QM(v,y,h,i,o),f.filter(e=>e.isShow))}var tN=e=>{var{ticks:t,label:n,labelGapWithTick:r=5,tickSize:i=0,tickMargin:a=0}=e,o=0;if(t){Array.from(t).forEach(e=>{if(e){var t=e.getBoundingClientRect();t.width>o&&(o=t.width)}});var s=n?n.getBoundingClientRect().width:0,c=i+a,l=o+c+s+(n?r:0);return Math.round(l)}return 0},nN=va({name:`renderedTicks`,initialState:{xAxis:{},yAxis:{}},reducers:{setRenderedTicks:(e,t)=>{var{axisType:n,axisId:r,ticks:i}=t.payload;e[n][r]=Y(i)},removeRenderedTicks:(e,t)=>{var{axisType:n,axisId:r}=t.payload;delete e[n][r]}}}),{setRenderedTicks:rN,removeRenderedTicks:iN}=nN.actions,aN=nN.reducer,oN=[`axisLine`,`width`,`height`,`className`,`hide`,`ticks`,`axisType`,`axisId`];function sN(e,t){if(e==null)return{};var n,r,i=cN(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;rr==null||n==null?Jc:(i(rN({ticks:t.map(e=>({value:e.value,coordinate:e.coordinate,offset:e.offset,index:e.index})),axisId:r,axisType:n})),()=>{i(iN({axisId:r,axisType:n}))}),[i,t,r,n]),null}var xN=(0,_.forwardRef)((e,t)=>{var{ticks:n=[],tick:r,tickLine:i,stroke:a,tickFormatter:o,unit:s,padding:c,tickTextProps:l,orientation:u,mirror:d,x:f,y:p,width:m,height:h,tickSize:g,tickMargin:v,fontSize:y,letterSpacing:b,getTicksConfig:x,events:S,axisType:C,axisId:w}=e,T=eN($($({},x),{},{ticks:n}),y,b),E=Vo(x),D=Ho(r),O=bk(E.textAnchor)?E.textAnchor:_N(u,d),k=vN(u,d),ee={};typeof i==`object`&&(ee=i);var te=$($({},E),{},{fill:`none`},ee),A=T.map(e=>$({entry:e},gN(e,f,p,m,h,u,g,d,v))),j=A.map(e=>{var{entry:t,line:n}=e;return _.createElement(es,{className:`recharts-cartesian-axis-tick`,key:`tick-${t.value}-${t.coordinate}-${t.tickCoord}`},i&&_.createElement(`line`,lN({},te,n,{className:z(`recharts-cartesian-axis-tick-line`,(0,Nc.default)(i,`className`))})))}),ne=A.map((e,t)=>{var{entry:n,tick:i}=e,u=$($({},$($($($({verticalAnchor:k},E),{},{textAnchor:O,stroke:`none`,fill:a},i),{},{index:t,payload:n,visibleTicksCount:T.length,tickFormatter:o,padding:c},l),{},{angle:l?.angle??E.angle??0})),D);return _.createElement(es,lN({className:`recharts-cartesian-axis-tick-label`,key:`tick-label-${n.value}-${n.coordinate}-${n.tickCoord}`},pl(S,n,t)),r&&_.createElement(yN,{option:r,tickProps:u,value:`${typeof o==`function`?o(n.value,t):n.value}${s||``}`}))});return _.createElement(`g`,{className:`recharts-cartesian-axis-ticks recharts-${C}-ticks`},_.createElement(bN,{ticks:T,axisId:w,axisType:C}),ne.length>0&&_.createElement(ID,{zIndex:Pg.label},_.createElement(`g`,{className:`recharts-cartesian-axis-tick-labels recharts-${C}-tick-labels`,ref:t},ne)),j.length>0&&_.createElement(`g`,{className:`recharts-cartesian-axis-tick-lines recharts-${C}-tick-lines`},j))}),SN=(0,_.forwardRef)((e,t)=>{var{axisLine:n,width:r,height:i,className:a,hide:o,ticks:s,axisType:c,axisId:l}=e,u=sN(e,oN),[d,f]=(0,_.useState)(``),[p,m]=(0,_.useState)(``),h=(0,_.useRef)(null);(0,_.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>tN({ticks:h.current,label:e.labelRef?.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}));var g=(0,_.useCallback)(e=>{if(e){var t=e.getElementsByClassName(`recharts-cartesian-axis-tick-value`);h.current=t;var n=t[0];if(n){var r=window.getComputedStyle(n),i=r.fontSize,a=r.letterSpacing;(i!==d||a!==p)&&(f(i),m(a))}}},[d,p]);return o||r!=null&&r<=0||i!=null&&i<=0?null:_.createElement(ID,{zIndex:e.zIndex},_.createElement(es,{className:z(`recharts-cartesian-axis`,a)},_.createElement(hN,{x:e.x,y:e.y,width:r,height:i,orientation:e.orientation,mirror:e.mirror,axisLine:n,otherSvgProps:Vo(e)}),_.createElement(xN,{ref:g,axisType:c,events:u,fontSize:d,getTicksConfig:e,height:e.height,letterSpacing:p,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:s,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:l}),_.createElement(Yk,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},_.createElement(lA,{label:e.label,labelRef:e.labelRef}),e.children)))}),CN=_.forwardRef((e,t)=>{var n=yl(e,mN);return _.createElement(SN,lN({},n,{ref:t}))});CN.displayName=`CartesianAxis`;var wN=[`x1`,`y1`,`x2`,`y2`,`key`],TN=[`offset`],EN=[`xAxisId`,`yAxisId`],DN=[`xAxisId`,`yAxisId`];function ON(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function kN(e){for(var t=1;t{var{fill:t}=e;if(!t||t===`none`)return null;var{fillOpacity:n,x:r,y:i,width:a,height:o,ry:s}=e;return _.createElement(`rect`,{x:r,y:i,ry:s,width:a,height:o,stroke:`none`,fill:t,fillOpacity:n,className:`recharts-cartesian-grid-bg`})};function LN(e){var{option:t,lineItemProps:n}=e,r;if(_.isValidElement(t))r=_.cloneElement(t,n);else if(typeof t==`function`)r=t(n);else{var{x1:i,y1:a,x2:o,y2:s,key:c}=n,l=Vo(PN(n,wN))??{},{offset:u}=l,d=PN(l,TN);r=_.createElement(`line`,NN({},d,{x1:i,y1:a,x2:o,y2:s,fill:`none`,key:c}))}return r}function RN(e){var{x:t,width:n,horizontal:r=!0,horizontalPoints:i}=e;if(!r||!i||!i.length)return null;var{xAxisId:a,yAxisId:o}=e,s=PN(e,EN),c=i.map((e,i)=>{var a=kN(kN({},s),{},{x1:t,y1:e,x2:t+n,y2:e,key:`line-${i}`,index:i});return _.createElement(LN,{key:`line-${i}`,option:r,lineItemProps:a})});return _.createElement(`g`,{className:`recharts-cartesian-grid-horizontal`},c)}function zN(e){var{y:t,height:n,vertical:r=!0,verticalPoints:i}=e;if(!r||!i||!i.length)return null;var{xAxisId:a,yAxisId:o}=e,s=PN(e,DN),c=i.map((e,i)=>{var a=kN(kN({},s),{},{x1:e,y1:t,x2:e,y2:t+n,key:`line-${i}`,index:i});return _.createElement(LN,{option:r,lineItemProps:a,key:`line-${i}`})});return _.createElement(`g`,{className:`recharts-cartesian-grid-vertical`},c)}function BN(e){var{horizontalFill:t,fillOpacity:n,x:r,y:i,width:a,height:o,horizontalPoints:s,horizontal:c=!0}=e;if(!c||!t||!t.length||s==null)return null;var l=s.map(e=>Math.round(e+i-i)).sort((e,t)=>e-t);i!==l[0]&&l.unshift(0);var u=l.map((e,s)=>{var c=l[s+1],u=c==null?i+o-e:c-e;if(u<=0)return null;var d=s%t.length;return _.createElement(`rect`,{key:`react-${s}`,y:e,x:r,height:u,width:a,stroke:`none`,fill:t[d],fillOpacity:n,className:`recharts-cartesian-grid-bg`})});return _.createElement(`g`,{className:`recharts-cartesian-gridstripes-horizontal`},u)}function VN(e){var{vertical:t=!0,verticalFill:n,fillOpacity:r,x:i,y:a,width:o,height:s,verticalPoints:c}=e;if(!t||!n||!n.length)return null;var l=c.map(e=>Math.round(e+i-i)).sort((e,t)=>e-t);i!==l[0]&&l.unshift(0);var u=l.map((e,t)=>{var c=l[t+1],u=c==null?i+o-e:c-e;if(u<=0)return null;var d=t%n.length;return _.createElement(`rect`,{key:`react-${t}`,x:e,y:a,width:u,height:s,stroke:`none`,fill:n[d],fillOpacity:r,className:`recharts-cartesian-grid-bg`})});return _.createElement(`g`,{className:`recharts-cartesian-gridstripes-vertical`},u)}var HN=(e,t)=>{var{xAxis:n,width:r,height:i,offset:a}=e;return Nu(eN(kN(kN(kN({},mN),n),{},{ticks:Pu(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.left,a.left+a.width,t)},UN=(e,t)=>{var{yAxis:n,width:r,height:i,offset:a}=e;return Nu(eN(kN(kN(kN({},mN),n),{},{ticks:Pu(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.top,a.top+a.height,t)},WN={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],stroke:`#ccc`,fill:`none`,verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:Pg.grid};function GN(e){var t=$d(),n=ef(),r=Qd(),i=kN(kN({},yl(e,WN)),{},{x:H(e.x)?e.x:r.left,y:H(e.y)?e.y:r.top,width:H(e.width)?e.width:r.width,height:H(e.height)?e.height:r.height}),{xAxisId:a,yAxisId:o,x:s,y:c,width:l,height:u,syncWithTicks:d,horizontalValues:f,verticalValues:p}=i,m=bd(),h=G(e=>cT(e,`xAxis`,a,m)),g=G(e=>cT(e,`yAxis`,o,m));if(!Tu(l)||!Tu(u)||!H(s)||!H(c))return null;var v=i.verticalCoordinatesGenerator||HN,y=i.horizontalCoordinatesGenerator||UN,{horizontalPoints:b,verticalPoints:x}=i;if((!b||!b.length)&&typeof y==`function`){var S=f&&f.length,C=y({yAxis:g?kN(kN({},g),{},{ticks:S?f:g.ticks}):void 0,width:t??l,height:n??u,offset:r},S?!0:d);Od(Array.isArray(C),`horizontalCoordinatesGenerator should return Array but instead it returned [${typeof C}]`),Array.isArray(C)&&(b=C)}if((!x||!x.length)&&typeof v==`function`){var w=p&&p.length,T=v({xAxis:h?kN(kN({},h),{},{ticks:w?p:h.ticks}):void 0,width:t??l,height:n??u,offset:r},w?!0:d);Od(Array.isArray(T),`verticalCoordinatesGenerator should return Array but instead it returned [${typeof T}]`),Array.isArray(T)&&(x=T)}return _.createElement(ID,{zIndex:i.zIndex},_.createElement(`g`,{className:`recharts-cartesian-grid`},_.createElement(IN,{fill:i.fill,fillOpacity:i.fillOpacity,x:i.x,y:i.y,width:i.width,height:i.height,ry:i.ry}),_.createElement(BN,NN({},i,{horizontalPoints:b})),_.createElement(VN,NN({},i,{verticalPoints:x})),_.createElement(RN,NN({},i,{offset:r,horizontalPoints:b,xAxis:h,yAxis:g})),_.createElement(zN,NN({},i,{offset:r,verticalPoints:x,xAxis:h,yAxis:g}))))}GN.displayName=`CartesianGrid`;var KN=va({name:`errorBars`,initialState:{},reducers:{addErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]||(e[n]=[]),e[n].push(r)},replaceErrorBar:(e,t)=>{var{itemId:n,prev:r,next:i}=t.payload;e[n]&&(e[n]=e[n].map(e=>e.dataKey===r.dataKey&&e.direction===r.direction?i:e))},removeErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]&&(e[n]=e[n].filter(e=>e.dataKey!==r.dataKey||e.direction!==r.direction))}}}),{addErrorBar:qN,replaceErrorBar:JN,removeErrorBar:YN}=KN.actions,XN=KN.reducer,ZN=[`children`];function QN(e,t){if(e==null)return{};var n,r,i=$N(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r({x:0,y:0,value:0}),errorBarOffset:0});function tP(e){var{children:t}=e,n=QN(e,ZN);return _.createElement(eP.Provider,{value:n},t)}function nP(e,t){var n=G(t=>lC(t,e)),r=G(e=>fC(e,t)),i=n?.allowDataOverflow??sC.allowDataOverflow,a=r?.allowDataOverflow??uC.allowDataOverflow;return{needClip:i||a,needClipX:i,needClipY:a}}function rP(e){var{xAxisId:t,yAxisId:n,clipPathId:r}=e,i=mM(),{needClipX:a,needClipY:o,needClip:s}=nP(t,n);if(!s||!i)return null;var{x:c,y:l,width:u,height:d}=i;return _.createElement(`clipPath`,{id:`clipPath-${r}`},_.createElement(`rect`,{x:a?c:c-u/2,y:o?l:l-d/2,width:a?u:u*2,height:o?d:d*2}))}var iP=(e,t,n,r)=>dT(e,`xAxis`,t,r),aP=(e,t,n,r)=>uT(e,`xAxis`,t,r),oP=(e,t,n,r)=>dT(e,`yAxis`,n,r),sP=(e,t,n,r)=>uT(e,`yAxis`,n,r),cP=L([J,iP,oP,aP,sP],(e,t,n,r,i)=>Mu(e,`xAxis`)?qu(t,r,!1):qu(n,i,!1)),lP=(e,t,n,r,i)=>i;function uP(e){return e.type===`line`}var dP=L([J,iP,oP,aP,sP,L([bC,lP],(e,t)=>e.filter(uP).find(e=>e.id===t)),cP,ag],(e,t,n,r,i,a,o,s)=>{var{chartData:c,dataStartIndex:l,dataEndIndex:u}=s;if(!(a==null||t==null||n==null||r==null||i==null||r.length===0||i.length===0||o==null||e!==`horizontal`&&e!==`vertical`)){var{dataKey:d,data:f}=a,p=f!=null&&f.length>0?f:c?.slice(l,u+1);if(p!=null)return zP({layout:e,xAxis:t,yAxis:n,xAxisTicks:r,yAxisTicks:i,dataKey:d,bandSize:o,displayedData:p})}});function fP(e){var t=Ho(e),n=3,r=2;if(t!=null){var{r:i,strokeWidth:a}=t,o=Number(i),s=Number(a);return(Number.isNaN(o)||o<0)&&(o=n),(Number.isNaN(s)||s<0)&&(s=r),{r:o,strokeWidth:s}}return{r:n,strokeWidth:r}}var pP=[`id`],mP=[`type`,`layout`,`connectNulls`,`needClip`,`shape`],hP=[`activeDot`,`animateNewValues`,`animationBegin`,`animationDuration`,`animationEasing`,`connectNulls`,`dot`,`hide`,`isAnimationActive`,`label`,`legendType`,`xAxisId`,`yAxisId`,`id`];function gP(){return gP=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:n,stroke:r,legendType:i,hide:a}=e;return[{inactive:a,dataKey:t,type:i,color:r,value:Yu(n,t),payload:e}]},TP=_.memo(e=>{var{dataKey:t,data:n,stroke:r,strokeWidth:i,fill:a,name:o,hide:s,unit:c,tooltipType:l,id:u}=e,d={dataDefinedOnItem:n,getPosition:Jc,settings:{stroke:r,strokeWidth:i,fill:a,dataKey:t,nameKey:void 0,name:Yu(o,t),hide:s,type:l,color:r,unit:c,graphicalItemId:u}};return _.createElement(xj,{tooltipEntrySettings:d})}),EP=(e,t)=>`${t}px ${e}px`;function DP(e,t){for(var n=e.length%2==0?e:[...e,0],r=[],i=0;i{var r=n.reduce((e,t)=>e+t,0);if(!r)return EP(t,e);for(var i=Math.floor(e/r),a=e%r,o=[],s=0,c=0;sa){o=[...n.slice(0,s),a-c];break}}var d=o.length%2==0?[0,t]:[t];return[...DP(n,i),...o,...d].map(e=>`${e}px`).join(`, `)};function kP(e){var{clipPathId:t,points:n,props:r}=e,{dot:i,dataKey:a,needClip:o}=r,{id:s}=r,c=Vo(SP(r,pP));return _.createElement(Yj,{points:n,dot:i,className:`recharts-line-dots`,dotClassName:`recharts-line-dot`,dataKey:a,baseProps:c,needClip:o,clipPathId:t})}function AP(e){var{showLabels:t,children:n,points:r}=e,i=(0,_.useMemo)(()=>r?.map(e=>{var t={x:e.x??0,y:e.y??0,width:0,lowerWidth:0,upperWidth:0,height:0};return vP(vP({},t),{},{value:e.value,payload:e.payload,viewBox:t,parentViewBox:void 0,fill:void 0})}),[r]);return _.createElement(_A,{value:t?i:void 0},n)}function jP(e){var{clipPathId:t,pathRef:n,points:r,strokeDasharray:i,props:a}=e,{type:o,layout:s,connectNulls:c,needClip:l,shape:u}=a,d=vP(vP({},Uo(SP(a,mP))),{},{fill:`none`,className:`recharts-line-curve`,clipPath:l?`url(#clipPath-${t})`:void 0,points:r,type:o,layout:s,connectNulls:c,strokeDasharray:i??a.strokeDasharray});return _.createElement(_.Fragment,null,r?.length>1&&_.createElement(_j,gP({shapeType:`curve`,option:u},d,{pathRef:n})),_.createElement(kP,{points:r,clipPathId:t,props:a}))}function MP(e){try{return e&&e.getTotalLength&&e.getTotalLength()||0}catch{return 0}}function NP(e){var{clipPathId:t,props:n,pathRef:r,previousPointsRef:i,longestAnimatedLengthRef:a}=e,{points:o,strokeDasharray:s,isAnimationActive:c,animationBegin:l,animationDuration:u,animationEasing:d,animateNewValues:f,width:p,height:m,onAnimationEnd:h,onAnimationStart:g}=n,v=i.current,y=Zm(o,`recharts-line-`),b=(0,_.useRef)(y),[x,S]=(0,_.useState)(!1),C=!x,w=(0,_.useCallback)(()=>{typeof h==`function`&&h(),S(!1)},[h]),T=(0,_.useCallback)(()=>{typeof g==`function`&&g(),S(!0)},[g]),E=MP(r.current),D=(0,_.useRef)(0);b.current!==y&&(D.current=a.current,b.current=y);var O=D.current;return _.createElement(AP,{points:o,showLabels:C},n.children,_.createElement(Xm,{animationId:y,begin:l,duration:u,isActive:c,easing:d,onAnimationEnd:w,onAnimationStart:T,key:y},e=>{var l=Wc(O,E+O,e),u=Math.min(l,E),d=c?s?OP(u,E,`${s}`.split(/[,\s]+/gim).map(e=>parseFloat(e))):EP(E,u):s==null?void 0:String(s);if(e>0&&E>0&&(i.current=o,a.current=Math.max(a.current,u)),v){var h=v.length/o.length,g=e===1?o:o.map((t,n)=>{var r=Math.floor(n*h);if(v[r]){var i=v[r];return vP(vP({},t),{},{x:Wc(i.x,t.x,e),y:Wc(i.y,t.y,e)})}return f?vP(vP({},t),{},{x:Wc(p*2,t.x,e),y:Wc(m/2,t.y,e)}):vP(vP({},t),{},{x:t.x,y:t.y})});return i.current=g,_.createElement(jP,{props:n,points:g,clipPathId:t,pathRef:r,strokeDasharray:d})}return _.createElement(jP,{props:n,points:o,clipPathId:t,pathRef:r,strokeDasharray:d})}),_.createElement(CA,{label:n.label}))}function PP(e){var{clipPathId:t,props:n}=e,r=(0,_.useRef)(null),i=(0,_.useRef)(0),a=(0,_.useRef)(null);return _.createElement(NP,{props:n,clipPathId:t,previousPointsRef:r,longestAnimatedLengthRef:i,pathRef:a})}var FP=(e,t)=>({x:e.x??void 0,y:e.y??void 0,value:e.value,errorVal:q(e.payload,t)}),IP=class extends _.Component{render(){var{hide:e,dot:t,points:n,className:r,xAxisId:i,yAxisId:a,top:o,left:s,width:c,height:l,id:u,needClip:d,zIndex:f}=this.props;if(e)return null;var p=z(`recharts-line`,r),m=u,{r:h,strokeWidth:g}=fP(t),v=BA(t),y=h*2+g,b=d?`url(#clipPath-${v?``:`dots-`}${m})`:void 0;return _.createElement(ID,{zIndex:f},_.createElement(es,{className:p},d&&_.createElement(`defs`,null,_.createElement(rP,{clipPathId:m,xAxisId:i,yAxisId:a}),!v&&_.createElement(`clipPath`,{id:`clipPath-dots-${m}`},_.createElement(`rect`,{x:s-y/2,y:o-y/2,width:c+y,height:l+y}))),_.createElement(tP,{xAxisId:i,yAxisId:a,data:n,dataPointFormatter:FP,errorBarOffset:0},_.createElement(PP,{props:this.props,clipPathId:m}))),_.createElement(SM,{activeDot:this.props.activeDot,points:n,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:b}))}},LP={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:`ease`,connectNulls:!1,dot:!0,fill:`#fff`,hide:!1,isAnimationActive:`auto`,label:!1,legendType:`line`,stroke:`#3182bd`,strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:Pg.line,type:`linear`};function RP(e){var t=yl(e,LP),{activeDot:n,animateNewValues:r,animationBegin:i,animationDuration:a,animationEasing:o,connectNulls:s,dot:c,hide:l,isAnimationActive:u,label:d,legendType:f,xAxisId:p,yAxisId:m,id:h}=t,g=SP(t,hP),{needClip:v}=nP(p,m),y=mM(),b=nf(),x=bd(),S=G(e=>dP(e,p,m,x,h));if(b!==`horizontal`&&b!==`vertical`||S==null||y==null)return null;var{height:C,width:w,x:T,y:E}=y;return _.createElement(IP,gP({},g,{id:h,connectNulls:s,dot:c,activeDot:n,animateNewValues:r,animationBegin:i,animationDuration:a,animationEasing:o,isAnimationActive:u,hide:l,label:d,legendType:f,xAxisId:p,yAxisId:m,points:S,layout:b,height:C,width:w,left:T,top:E,needClip:v}))}function zP(e){var{layout:t,xAxis:n,yAxis:r,xAxisTicks:i,yAxisTicks:a,dataKey:o,bandSize:s,displayedData:c}=e;return c.map((e,c)=>{var l=q(e,o);if(t===`horizontal`)return{x:zu({axis:n,ticks:i,bandSize:s,entry:e,index:c}),y:(U(l)?null:r.scale.map(l))??null,value:l,payload:e};var u=U(l)?null:n.scale.map(l),d=zu({axis:r,ticks:a,bandSize:s,entry:e,index:c});return u==null||d==null?null:{x:u,y:d,value:l,payload:e}}).filter(Boolean)}function BP(e){var t=yl(e,LP),n=bd();return _.createElement(Dj,{id:t.id,type:`line`},e=>_.createElement(_.Fragment,null,_.createElement(Sj,{legendPayload:wP(t)}),_.createElement(TP,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:e}),_.createElement(Ij,{type:`line`,id:e,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:n}),_.createElement(RP,gP({},t,{id:e}))))}var VP=_.memo(BP,fp);VP.displayName=`Line`;function HP(e,t){return e.graphicalItems.cartesianItems.find(e=>e.id===t)?.xAxisId??0}function UP(e,t){return e.graphicalItems.cartesianItems.find(e=>e.id===t)?.yAxisId??0}var WP=[`domain`,`range`],GP=[`domain`,`range`];function KP(e,t){if(e==null)return{};var n,r,i=qP(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{if(o!=null)return tF(tF({},a),{},{type:o})},[a,o]);return(0,_.useLayoutEffect)(()=>{s!=null&&(n.current===null?t(nM(s)):n.current!==s&&t(rM({prev:n.current,next:s})),n.current=s)},[s,t]),(0,_.useLayoutEffect)(()=>()=>{n.current&&(t(iM(n.current)),n.current=null)},[t]),null}var cF=e=>{var{xAxisId:t,className:n}=e,r=G(vd),i=bd(),a=`xAxis`,o=G(e=>lT(e,a,t,i)),s=G(e=>Zw(e,t)),c=G(e=>nT(e,t)),l=G(e=>cC(e,t));if(s==null||c==null||l==null)return null;var{dangerouslySetInnerHTML:u,ticks:d,scale:f}=e,p=aF(e,ZP),{id:m,scale:h}=l,g=aF(l,QP);return _.createElement(CN,$P({},p,g,{x:c.x,y:c.y,width:s.width,height:s.height,className:z(`recharts-${a} ${a}`,n),viewBox:r,ticks:o,axisType:a,axisId:t}))},lF={allowDataOverflow:sC.allowDataOverflow,allowDecimals:sC.allowDecimals,allowDuplicatedCategory:sC.allowDuplicatedCategory,angle:sC.angle,axisLine:mN.axisLine,height:sC.height,hide:!1,includeHidden:sC.includeHidden,interval:sC.interval,label:!1,minTickGap:sC.minTickGap,mirror:sC.mirror,orientation:sC.orientation,padding:sC.padding,reversed:sC.reversed,scale:sC.scale,tick:sC.tick,tickCount:sC.tickCount,tickLine:mN.tickLine,tickSize:mN.tickSize,type:sC.type,niceTicks:sC.niceTicks,xAxisId:0},uF=_.memo(e=>{var t=yl(e,lF);return _.createElement(_.Fragment,null,_.createElement(sF,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),_.createElement(cF,t))},YP);uF.displayName=`XAxis`;var dF=[`type`],fF=[`dangerouslySetInnerHTML`,`ticks`,`scale`],pF=[`id`,`scale`];function mF(){return mF=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(o!=null)return gF(gF({},a),{},{type:o})},[o,a]);return(0,_.useLayoutEffect)(()=>{s!=null&&(n.current===null?t(aM(s)):n.current!==s&&t(oM({prev:n.current,next:s})),n.current=s)},[s,t]),(0,_.useLayoutEffect)(()=>()=>{n.current&&(t(sM(n.current)),n.current=null)},[t]),null}function CF(e){var{yAxisId:t,className:n,width:r,label:i}=e,a=(0,_.useRef)(null),o=(0,_.useRef)(null),s=G(vd),c=bd(),l=W(),u=`yAxis`,d=G(e=>iT(e,t)),f=G(e=>rT(e,t)),p=G(e=>lT(e,u,t,c)),m=G(e=>dC(e,t));if((0,_.useLayoutEffect)(()=>{if(!(r!==`auto`||!d||eA(i)||(0,_.isValidElement)(i)||m==null)){var e=a.current;if(e){var n=e.getCalculatedWidth();Math.round(d.width)!==Math.round(n)&&l(dM({id:t,width:n}))}}},[p,d,l,i,t,r,m]),d==null||f==null||m==null)return null;var{dangerouslySetInnerHTML:h,ticks:g,scale:v}=e,y=bF(e,fF),{id:b,scale:x}=m,S=bF(m,pF);return _.createElement(CN,mF({},y,S,{ref:a,labelRef:o,x:f.x,y:f.y,tickTextProps:r===`auto`?{width:void 0}:{width:r},width:d.width,height:d.height,className:z(`recharts-${u} ${u}`,n),viewBox:s,ticks:p,axisType:u,axisId:t}))}var wF={allowDataOverflow:uC.allowDataOverflow,allowDecimals:uC.allowDecimals,allowDuplicatedCategory:uC.allowDuplicatedCategory,angle:uC.angle,axisLine:mN.axisLine,hide:!1,includeHidden:uC.includeHidden,interval:uC.interval,label:!1,minTickGap:uC.minTickGap,mirror:uC.mirror,orientation:uC.orientation,padding:uC.padding,reversed:uC.reversed,scale:uC.scale,tick:uC.tick,tickCount:uC.tickCount,tickLine:mN.tickLine,tickSize:mN.tickSize,type:uC.type,niceTicks:uC.niceTicks,width:uC.width,yAxisId:0},TF=_.memo(e=>{var t=yl(e,wF);return _.createElement(_.Fragment,null,_.createElement(SF,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),_.createElement(CF,t))},YP);TF.displayName=`YAxis`;var EF=L([(e,t)=>t,J,e_,l_,EE,OE,sD,gd],yD);function DF(e){return`getBBox`in e.currentTarget&&typeof e.currentTarget.getBBox==`function`}function OF(e){var t=e.currentTarget.getBoundingClientRect(),n,r;if(DF(e)){var i=e.currentTarget.getBBox();n=i.width>0?t.width/i.width:1,r=i.height>0?t.height/i.height:1}else{var a=e.currentTarget;n=a.offsetWidth>0?t.width/a.offsetWidth:1,r=a.offsetHeight>0?t.height/a.offsetHeight:1}var o=(e,i)=>({relativeX:Math.round((e-t.left)/n),relativeY:Math.round((i-t.top)/r)});return`touches`in e?Array.from(e.touches).map(e=>o(e.clientX,e.clientY)):o(e.clientX,e.clientY)}var kF=Qi(`mouseClick`),AF=io();AF.startListening({actionCreator:kF,effect:(e,t)=>{var n=e.payload,r=EF(t.getState(),OF(n));r?.activeIndex!=null&&t.dispatch(jT({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}});var jF=Qi(`mouseMove`),MF=io(),NF=null,PF=null,FF=null;MF.startListening({actionCreator:jF,effect:(e,t)=>{var n=e.payload,{throttleDelay:r,throttledEvents:i}=t.getState().eventSettings,a=i===`all`||i?.includes(`mousemove`);NF!==null&&(cancelAnimationFrame(NF),NF=null),PF!==null&&(typeof r!=`number`||!a)&&(clearTimeout(PF),PF=null),FF=OF(n);var o=()=>{var e=t.getState(),n=gT(e,e.tooltip.settings.shared);if(!FF){NF=null,PF=null;return}if(n===`axis`){var r=EF(e,FF);r?.activeIndex==null?t.dispatch(OT()):t.dispatch(AT({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}NF=null,PF=null};if(!a){o();return}r===`raf`?NF=requestAnimationFrame(o):typeof r==`number`&&PF===null&&(PF=setTimeout(o,r))}});function IF(e,t){return t instanceof HTMLElement?`HTMLElement <${t.tagName} class="${t.className}">`:t===window?`global.window`:e===`children`&&typeof t==`object`&&t?`<>`:t}var LF={accessibilityLayer:!0,barCategoryGap:`10%`,barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:`none`,syncId:void 0,syncMethod:`index`,baseValue:void 0,reverseStackOrder:!1},RF=va({name:`rootProps`,initialState:LF,reducers:{updateOptions:(e,t)=>{e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=t.payload.barGap??LF.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),zF=RF.reducer,{updateOptions:BF}=RF.actions,VF=va({name:`polarOptions`,initialState:null,reducers:{updatePolarOptions:(e,t)=>e===null?t.payload:(e.startAngle=t.payload.startAngle,e.endAngle=t.payload.endAngle,e.cx=t.payload.cx,e.cy=t.payload.cy,e.innerRadius=t.payload.innerRadius,e.outerRadius=t.payload.outerRadius,e)}}),{updatePolarOptions:HF}=VF.actions,UF=VF.reducer,WF=Qi(`keyDown`),GF=Qi(`focus`),KF=Qi(`blur`),qF=io(),JF=null,YF=null,XF=null;qF.startListening({actionCreator:WF,effect:(e,t)=>{XF=e.payload,JF!==null&&(cancelAnimationFrame(JF),JF=null);var{throttleDelay:n,throttledEvents:r}=t.getState().eventSettings,i=r===`all`||r.includes(`keydown`);YF!==null&&(typeof n!=`number`||!i)&&(clearTimeout(YF),YF=null);var a=()=>{try{var e=t.getState();if(e.rootProps.accessibilityLayer===!1)return;var{keyboardInteraction:n}=e.tooltip,r=XF;if(r!==`ArrowRight`&&r!==`ArrowLeft`&&r!==`Enter`)return;var i=KT(n,mE(e),UC(e),CE(e)),a=i==null?-1:Number(i),o=!Number.isFinite(a)||a<0,s=OE(e),c=mE(e),l=gT(e,e.tooltip.settings.shared);if(r===`Enter`){if(o)return;var u=fD(e,l,`hover`,String(n.index));t.dispatch(NT({active:!n.active,activeIndex:n.index,activeCoordinate:u}));return}var d=fT(e)===`left-to-right`?1:-1,f=r===`ArrowRight`?1:-1,p;if(o){var m=UC(e),h=CE(e),g=f*d,_=e=>({active:!1,index:String(e),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(p=-1,g>0){for(var v=0;v=0;y--)if(KT(_(y),c,m,h)!=null){p=y;break}if(p<0)return}else{p=a+f*d;var b=s?.length||c.length;if(b===0||p>=b||p<0)return}var x=fD(e,l,`hover`,String(p));t.dispatch(NT({active:!0,activeIndex:p.toString(),activeCoordinate:x}))}finally{JF=null,YF=null}};if(!i){a();return}n===`raf`?JF=requestAnimationFrame(a):typeof n==`number`&&YF===null&&(a(),XF=null,YF=setTimeout(()=>{XF?a():(YF=null,JF=null)},n))}}),qF.startListening({actionCreator:GF,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var{keyboardInteraction:r}=n.tooltip;if(!r.active&&r.index==null){var i=`0`,a=fD(n,gT(n,n.tooltip.settings.shared),`hover`,String(i));t.dispatch(NT({active:!0,activeIndex:i,activeCoordinate:a}))}}}}),qF.startListening({actionCreator:KF,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var{keyboardInteraction:r}=n.tooltip;r.active&&t.dispatch(NT({active:!1,activeIndex:r.index,activeCoordinate:r.coordinate}))}}});function ZF(e){e.persist();var{currentTarget:t}=e;return new Proxy(e,{get:(e,n)=>{if(n===`currentTarget`)return t;var r=Reflect.get(e,n);return typeof r==`function`?r.bind(e):r}})}var QF=Qi(`externalEvent`),$F=io(),eI=new Map,tI=new Map,nI=new Map;$F.startListening({actionCreator:QF,effect:(e,t)=>{var{handler:n,reactEvent:r}=e.payload;if(n!=null){var i=r.type,a=ZF(r);nI.set(i,{handler:n,reactEvent:a});var o=eI.get(i);o!==void 0&&(cancelAnimationFrame(o),eI.delete(i));var{throttleDelay:s,throttledEvents:c}=t.getState().eventSettings,l=c,u=l===`all`||l?.includes(i),d=tI.get(i);d!==void 0&&(typeof s!=`number`||!u)&&(clearTimeout(d),tI.delete(i));var f=()=>{var e=nI.get(i);try{if(!e)return;var{handler:n,reactEvent:r}=e,a=t.getState(),o={activeCoordinate:RE(a),activeDataKey:FE(a),activeIndex:NE(a),activeLabel:PE(a),activeTooltipIndex:NE(a),isTooltipActive:zE(a)};n&&n(o,r)}finally{eI.delete(i),tI.delete(i),nI.delete(i)}};if(!u){f();return}if(s===`raf`){var p=requestAnimationFrame(f);eI.set(i,p)}else if(typeof s==`number`){if(!tI.has(i)){f();var m=setTimeout(f,s);tI.set(i,m)}}else f()}}});var rI=L([L([XT],e=>e.tooltipItemPayloads),(e,t)=>t,(e,t,n)=>n],(e,t,n)=>{if(t!=null){var r=e.find(e=>e.settings.graphicalItemId===n);if(r!=null){var{getPosition:i}=r;if(i!=null)return i(t)}}}),iI=Qi(`touchMove`),aI=io(),oI=null,sI=null,cI=null,lI=null;aI.startListening({actionCreator:iI,effect:(e,t)=>{var n=e.payload;if(!(n.touches==null||n.touches.length===0)){lI=ZF(n);var{throttleDelay:r,throttledEvents:i}=t.getState().eventSettings,a=i===`all`||i.includes(`touchmove`);oI!==null&&(cancelAnimationFrame(oI),oI=null),sI!==null&&(typeof r!=`number`||!a)&&(clearTimeout(sI),sI=null),cI=Array.from(n.touches).map(e=>OF({clientX:e.clientX,clientY:e.clientY,currentTarget:n.currentTarget}));var o=()=>{if(lI!=null){var e=t.getState(),n=gT(e,e.tooltip.settings.shared);if(n===`axis`){var r=cI?.[0];if(r==null){oI=null,sI=null;return}var i=EF(e,r);i?.activeIndex!=null&&t.dispatch(AT({activeIndex:i.activeIndex,activeDataKey:void 0,activeCoordinate:i.activeCoordinate}))}else if(n===`item`){var a=lI.touches[0];if(document.elementFromPoint==null||a==null)return;var o=document.elementFromPoint(a.clientX,a.clientY);if(!o||!o.getAttribute)return;var s=o.getAttribute(id),c=o.getAttribute(`data-recharts-item-id`)??void 0,l=uE(e).find(e=>e.id===c);if(s==null||l==null||c==null)return;var{dataKey:u}=l,d=rI(e,s,c);t.dispatch(ET({activeDataKey:u,activeIndex:s,activeCoordinate:d,activeGraphicalItemId:c}))}oI=null,sI=null}};if(!a){o();return}r===`raf`?oI=requestAnimationFrame(o):typeof r==`number`&&sI===null&&(o(),lI=null,sI=setTimeout(()=>{lI?o():(sI=null,oI=null)},r))}}});var uI={throttleDelay:`raf`,throttledEvents:[`mousemove`,`touchmove`,`pointermove`,`scroll`,`wheel`]},dI=va({name:`eventSettings`,initialState:uI,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=Y(t.payload.throttledEvents))}}}),{setEventSettings:fI}=dI.actions,pI=dI.reducer,mI=lr({brush:DM,cartesianAxis:fM,chartData:sO,errorBars:XN,eventSettings:pI,graphicalItems:Fj,layout:Cu,legend:lp,options:eO,polarAxis:jA,polarOptions:UF,referenceElements:LM,renderedTicks:aN,rootProps:zF,tooltip:PT,zIndex:FD}),hI=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`Chart`;return ca({reducer:mI,preloadedState:e,middleware:e=>e({serializableCheck:!1,immutableCheck:![`commonjs`,`es6`,`production`].includes(`es6`)}).concat([AF.middleware,MF.middleware,qF.middleware,$F.middleware,aI.middleware]),enhancers:e=>{var t=e;return typeof e==`function`&&(t=e()),t.concat(oa({type:`raf`}))},devTools:kp.devToolsEnabled&&{serialize:{replacer:IF},name:`recharts-${t}`}})};function gI(e){var{preloadedState:t,children:n,reduxStoreName:r}=e,i=bd(),a=(0,_.useRef)(null);if(i)return n;a.current??(a.current=hI(t,r));var o=eu;return _.createElement(Co,{context:o,store:a.current},n)}function _I(e){var{layout:t,margin:n}=e,r=W(),i=bd();return(0,_.useEffect)(()=>{i||(r(bu(t)),r(yu(n)))},[r,i,t,n]),null}var vI=(0,_.memo)(_I,fp);function yI(e){var t=W();return(0,_.useEffect)(()=>{t(BF(e))},[t,e]),null}var bI=(0,_.memo)(e=>{var t=W();return(0,_.useEffect)(()=>{t(fI(e))},[t,e]),null},fp);function xI(e){var{zIndex:t,isPanorama:n}=e,r=(0,_.useRef)(null),i=W();return(0,_.useLayoutEffect)(()=>(r.current&&i(ND({zIndex:t,element:r.current,isPanorama:n})),()=>{i(PD({zIndex:t,isPanorama:n}))}),[i,t,n]),_.createElement(`g`,{tabIndex:-1,ref:r,className:`recharts-zIndex-layer_${t}`})}function SI(e){var{children:t,isPanorama:n}=e,r=G(xD);if(!r||r.length===0)return t;var i=r.filter(e=>e<0),a=r.filter(e=>e>0);return _.createElement(_.Fragment,null,i.map(e=>_.createElement(xI,{key:e,zIndex:e,isPanorama:n})),t,a.map(e=>_.createElement(xI,{key:e,zIndex:e,isPanorama:n})))}var CI=[`children`];function wI(e,t){if(e==null)return{};var n,r,i=TI(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var n=$d(),r=ef(),i=zp();if(!Tu(n)||!Tu(r))return null;var{children:a,otherAttributes:o,title:s,desc:c}=e,l,u;return o!=null&&(l=typeof o.tabIndex==`number`?o.tabIndex:i?0:void 0,u=typeof o.role==`string`?o.role:i?`application`:void 0),_.createElement(Yo,EI({},o,{title:s,desc:c,role:u,tabIndex:l,width:n,height:r,style:DI,ref:t}),a)}),kI=e=>{var{children:t}=e,n=G(Sd);if(!n)return null;var{width:r,height:i,y:a,x:o}=n;return _.createElement(Yo,{width:r,height:i,x:o,y:a},t)},AI=(0,_.forwardRef)((e,t)=>{var{children:n}=e,r=wI(e,CI);return bd()?_.createElement(kI,null,_.createElement(SI,{isPanorama:!0},n)):_.createElement(OI,EI({ref:t},r),_.createElement(SI,{isPanorama:!1},n))});function jI(){var e=W(),[t,n]=(0,_.useState)(null),r=G(ed);return(0,_.useEffect)(()=>{if(t!=null){var n=t.getBoundingClientRect().width/t.offsetWidth;K(n)&&n!==r&&e(Su(n))}},[t,e,r]),n}function MI(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function NI(e){for(var t=1;t(vO(),null);function zI(e){if(typeof e==`number`)return e;if(typeof e==`string`){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var BI=(0,_.forwardRef)((e,t)=>{var n=(0,_.useRef)(null),[r,i]=(0,_.useState)({containerWidth:zI(e.style?.width),containerHeight:zI(e.style?.height)}),a=(0,_.useCallback)((e,t)=>{i(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),o=(0,_.useCallback)(e=>{if(typeof t==`function`&&t(e),n.current!=null&&(n.current.disconnect(),n.current=null),e!=null&&typeof ResizeObserver<`u`){var{width:r,height:i}=e.getBoundingClientRect();a(r,i);var o=new ResizeObserver(e=>{var t=e[0];if(t!=null){var{width:n,height:r}=t.contentRect;a(n,r)}});o.observe(e),n.current=o}},[t,a]);return(0,_.useEffect)(()=>()=>{n.current?.disconnect()},[a]),_.createElement(_.Fragment,null,_.createElement(sf,{width:r.containerWidth,height:r.containerHeight}),_.createElement(`div`,LI({ref:o},e)))}),VI=(0,_.forwardRef)((e,t)=>{var{width:n,height:r}=e,[i,a]=(0,_.useState)({containerWidth:zI(n),containerHeight:zI(r)}),o=(0,_.useCallback)((e,t)=>{a(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),s=(0,_.useCallback)(e=>{if(typeof t==`function`&&t(e),e!=null){var{width:n,height:r}=e.getBoundingClientRect();o(n,r)}},[t,o]);return _.createElement(_.Fragment,null,_.createElement(sf,{width:i.containerWidth,height:i.containerHeight}),_.createElement(`div`,LI({ref:s},e)))}),HI=(0,_.forwardRef)((e,t)=>{var{width:n,height:r}=e;return _.createElement(_.Fragment,null,_.createElement(sf,{width:n,height:r}),_.createElement(`div`,LI({ref:t},e)))}),UI=(0,_.forwardRef)((e,t)=>{var{width:n,height:r}=e;return typeof n==`string`||typeof r==`string`?_.createElement(VI,LI({},e,{ref:t})):typeof n==`number`&&typeof r==`number`?_.createElement(HI,LI({},e,{width:n,height:r,ref:t})):_.createElement(_.Fragment,null,_.createElement(sf,{width:n,height:r}),_.createElement(`div`,LI({ref:t},e)))});function WI(e){return e?BI:UI}var GI=(0,_.forwardRef)((e,t)=>{var{children:n,className:r,height:i,onClick:a,onContextMenu:o,onDoubleClick:s,onMouseDown:c,onMouseEnter:l,onMouseLeave:u,onMouseMove:d,onMouseUp:f,onTouchEnd:p,onTouchMove:m,onTouchStart:h,style:g,width:v,responsive:y,dispatchTouchEvents:b=!0}=e,x=(0,_.useRef)(null),S=W(),[C,w]=(0,_.useState)(null),[T,E]=(0,_.useState)(null),D=jI(),O=Kd(),k=O?.width>0?O.width:v,ee=O?.height>0?O.height:i,te=(0,_.useCallback)(e=>{D(e),typeof t==`function`&&t(e),w(e),E(e),e!=null&&(x.current=e)},[D,t,w,E]),A=(0,_.useCallback)(e=>{S(kF(e)),S(QF({handler:a,reactEvent:e}))},[S,a]),j=(0,_.useCallback)(e=>{S(jF(e)),S(QF({handler:l,reactEvent:e}))},[S,l]),ne=(0,_.useCallback)(e=>{S(OT()),S(QF({handler:u,reactEvent:e}))},[S,u]),re=(0,_.useCallback)(e=>{S(jF(e)),S(QF({handler:d,reactEvent:e}))},[S,d]),ie=(0,_.useCallback)(()=>{S(GF())},[S]),ae=(0,_.useCallback)(()=>{S(KF())},[S]),M=(0,_.useCallback)(e=>{S(WF(e.key))},[S]),oe=(0,_.useCallback)(e=>{S(QF({handler:o,reactEvent:e}))},[S,o]),N=(0,_.useCallback)(e=>{S(QF({handler:s,reactEvent:e}))},[S,s]),se=(0,_.useCallback)(e=>{S(QF({handler:c,reactEvent:e}))},[S,c]),ce=(0,_.useCallback)(e=>{S(QF({handler:f,reactEvent:e}))},[S,f]),le=(0,_.useCallback)(e=>{S(QF({handler:h,reactEvent:e}))},[S,h]),ue=(0,_.useCallback)(e=>{b&&S(iI(e)),S(QF({handler:m,reactEvent:e}))},[S,b,m]),de=(0,_.useCallback)(e=>{S(QF({handler:p,reactEvent:e}))},[S,p]),fe=WI(y);return _.createElement(KD.Provider,{value:C},_.createElement(ts.Provider,{value:T},_.createElement(fe,{width:k??g?.width,height:ee??g?.height,className:z(`recharts-wrapper`,r),style:NI({position:`relative`,cursor:`default`,width:k,height:ee},g),onClick:A,onContextMenu:oe,onDoubleClick:N,onFocus:ie,onBlur:ae,onKeyDown:M,onMouseDown:se,onMouseEnter:j,onMouseLeave:ne,onMouseMove:re,onMouseUp:ce,onTouchEnd:de,onTouchMove:ue,onTouchStart:le,ref:te},_.createElement(RI,null),n)))}),KI=[`width`,`height`,`responsive`,`children`,`className`,`style`,`compact`,`title`,`desc`];function qI(e,t){if(e==null)return{};var n,r,i=JI(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var{width:n,height:r,responsive:i,children:a,className:o,style:s,compact:c,title:l,desc:u}=e,d=Vo(qI(e,KI));return c?_.createElement(_.Fragment,null,_.createElement(sf,{width:n,height:r}),_.createElement(AI,{otherAttributes:d,title:l,desc:u},a)):_.createElement(GI,{className:o,style:s,width:n,height:r,responsive:i??!1,onClick:e.onClick,onMouseLeave:e.onMouseLeave,onMouseEnter:e.onMouseEnter,onMouseMove:e.onMouseMove,onMouseDown:e.onMouseDown,onMouseUp:e.onMouseUp,onContextMenu:e.onContextMenu,onDoubleClick:e.onDoubleClick,onTouchStart:e.onTouchStart,onTouchMove:e.onTouchMove,onTouchEnd:e.onTouchEnd},_.createElement(AI,{otherAttributes:d,title:l,desc:u,ref:t},_.createElement(zM,null,a)))});function XI(){return XI=Object.assign?Object.assign.bind():function(e){for(var t=1;t({className:`tablepane`}))``,oL=F.div` - padding: 80px ${I.lg} 100px; - display: flex; - justify-content: center; - align-items: center; -`,sL=F.div` - display: grid; - grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); - gap: ${I.md}; - margin-bottom: ${I.xl}; -`,cL=F.div` - display: flex; - flex-direction: column; - align-items: left; - padding: ${I.xl} ${I.lg}; -`,lL=F.div` - font-size: 14px; - margin-bottom: ${I.xs}; -`,uL=F.div` - font-size: 36px; - font-weight: 700; - line-height: 1.2; -`,dL=F(F(uL)` - font-size: 14px; -`)` - font-size: 15px; - color: ${({$color:e})=>e||`inherit`}; - font-weight: 600; -`,fL=F.div` - display: inline-flex; - align-items: center; - gap: ${I.xs}; -`,pL=F.span` - width: 12px; - height: 12px; - border-radius: 999px; - background: ${({$color:e})=>e||qn.gray400}; - flex: 0 0 12px; -`,mL=F.div` - margin-top: ${I.xs}; - font-size: 14px; - color: ${qn.gray500}; - font-style: italic; -`,hL=F(cL)` - text-align: center; - grid-column: span 2; - padding: ${I.xl}; - border: 1px solid ${qn.gray100}; - border-radius: ${Wn.lg}; - background: ${qn.gray050}; -`,gL=F(uL)` - font-size: 40px; - line-height: 1.05; - margin: 0 0 ${I.xs}; -`,_L=F.div` - margin-top: ${I.sm}; -`,vL=F.section` - margin-bottom: ${I.xl}; - - &:last-child { - margin-bottom: 0; - } -`,yL=F.p` - font-size: 14px; - font-weight: 400; - color: #5c6672; - margin: 0 0 ${I.md}; - padding: 0; -`,bL=F.h2` - font-size: 15px; - font-weight: 600; - margin: 0 0 ${I.xs}; - padding: 0; -`,xL=F.div` - background: ${qn.white}; - border: none; - border-radius: ${Wn.md}; - padding: ${I.md}; - box-shadow: none; - overflow-x: auto; -`,SL=F.table` - width: 100%; - border-collapse: collapse; - background: ${qn.white}; - border-radius: ${Wn.md}; - overflow: hidden; - font-size: 12px; -`,CL=F.thead` - background: #cfd8e3; -`,wL=F.th` - text-align: left; - padding: ${I.sm}; - font-weight: 600; - border-bottom: 0; -`,TL=F.tr` - &:nth-child(even) { - background: #f4f7fc; - } -`,EL=F.td` - padding: ${I.sm}; - border-bottom: 0; - white-space: nowrap; -`;F.div` - text-align: center; - padding: ${I.xl} ${I.lg}; - background: ${qn.white}; - border: 0; - border-radius: ${Wn.md}; - color: rgba(0, 0, 0, 0.6); -`,F.p` - font-weight: 600; - margin: 0 0 ${I.sm}; - color: rgba(0, 0, 0, 0.8); -`,F.p` - margin-top: ${I.md}; -`;export{vj as $,Co as $n,Ah as $t,uI as A,hu as An,aT as At,tP as B,U as Bn,r_ as Bt,xL as C,Ru as Cn,o as Cr,SC as Ct,yI as D,Fu as Dn,$C as Dt,bI as E,Mu as En,yC as Et,UP as F,pl as Fn,KC as Ft,Yj as G,ns as Gn,wg as Gt,CM as H,Ic as Hn,t_ as Ht,VP as I,ll as In,uT as It,Dj as J,Uo as Jn,Cg as Jt,Ij as K,es as Kn,Ng as Kt,fP as L,Hc as Ln,bC as Lt,TF as M,G as Mn,ZC as Mt,uF as N,Yl as Nn,Ew as Nt,vI as O,K as On,dT as Ot,HP as P,yl as Pn,_C as Pt,bj as Q,Po as Qn,og as Qt,rP as R,Wc as Rn,f_ as Rt,dL as S,zu as Sn,s as Sr,DC as St,YI as T,q as Tn,u as Tr,xw as Tt,SM as U,Jc as Un,Pg as Ut,GN as V,H as Vn,n_ as Vt,mM as W,Mc as Wn,Tg as Wt,Cj as X,Ho as Xn,ig as Xt,Sj as Y,Vo as Yn,Dg as Yt,xj as Z,z as Zn,cg as Zt,yL as _,ad as _n,In as _r,MC as _t,lL as a,ap as an,va as ar,_A as at,pL as b,Vu as bn,m as br,AC as bt,hL as c,rf as cn,er as cr,jk as ct,SL as d,$d as dn,Wn as dr,QD as dt,kh as en,ko as er,yj as et,EL as f,tf as fn,qn as fr,ID as ft,vL as g,gd as gn,Vn as gr,NE as gt,TL as h,vd as hn,Un as hr,IE as ht,_L as i,fp as in,Qi as ir,MA as it,HF as j,W as jn,XC as jt,gI as k,_u as kn,hC as kt,gL as l,ef as ln,tr as lr,AO as lt,wL as m,bd as mn,I as mr,FE as mt,oL as n,Xm as nn,Do as nr,zA as nt,uL as o,ip as on,L as or,CA as ot,CL as p,Jd as pn,Gn as pr,rD as pt,Lj as q,Yo as qn,Eg as qt,cL as r,em as rn,ca as rr,BA as rt,sL as s,J as sn,lr as sr,yA as st,aL as t,Zm as tn,Mo as tr,_j as tt,iL as u,nf as un,Kn as ur,kO as ut,bL as v,id as vn,F as vr,ww as vt,rL as w,Yu as wn,c as wr,Dw as wt,mL as x,Bu as xn,f as xr,nw as xt,fL as y,qu as yn,g as yr,kw as yt,nP as z,Lc as zn,a_ as zt}; \ No newline at end of file diff --git a/packages/plugin/src/Resources/js/client/assets/ai.usage-chart-6uT6SHuq.js b/packages/plugin/src/Resources/js/client/assets/ai.usage-chart-6uT6SHuq.js deleted file mode 100644 index bfc22e55ee..0000000000 --- a/packages/plugin/src/Resources/js/client/assets/ai.usage-chart-6uT6SHuq.js +++ /dev/null @@ -1,4 +0,0 @@ -import{$ as e,An as t,At as n,B as r,Bn as i,Bt as a,C as o,Cn as s,Dn as c,F as l,Fn as u,Ft as d,Gn as f,Gt as p,Hn as m,I as h,In as g,It as _,J as v,Jt as y,K as ee,Kn as b,Ln as x,Lt as S,M as C,Mn as w,N as T,Nn as E,On as D,Ot as O,P as k,Pn as A,Q as j,Qn as M,Qt as N,R as P,Rn as F,Tn as te,Tr as ne,Un as re,Ut as ie,V as ae,Vn as oe,Wt as se,Xn as ce,Y as le,Yn as ue,Z as de,Zn as fe,_ as pe,an as me,at as he,bn as ge,br as _e,dn as ve,dt as ye,et as be,fn as xe,fr as I,ft as L,g as Se,gn as Ce,gt as we,hn as Te,in as Ee,jn as De,kn as Oe,ln as ke,lt as Ae,mn as je,mt as Me,nn as Ne,nt as Pe,on as Fe,or as R,ot as Ie,pn as Le,qn as Re,qt as ze,sn as z,tn as Be,tt as Ve,un as He,ut as Ue,v as We,w as Ge,wn as Ke,xn as qe,xr as Je,yn as Ye,yr as Xe,z as Ze,zn as Qe,zt as $e}from"./ai.dashboard.styles-CyUKz2xB.js";var B=ne(Je());function V(){return V=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var f=t.formatter||i,p=fe({"recharts-legend-item":!0,[`legend-item-${r}`]:!0,inactive:t.inactive});if(t.type===`none`)return null;var m=typeof s==`object`?tt({},s):{};m.color=t.inactive?a:m.color||t.color;var h=f?f(t.value,t,r):t.value;return B.createElement(`li`,V({className:p,style:l,key:`legend-item-${r}`},u(e,t,r)),B.createElement(Re,{width:n,height:n,viewBox:c,style:d,"aria-label":`${t.value} legend icon`},B.createElement(st,{data:t,iconType:o,inactiveColor:a})),B.createElement(`span`,{className:`recharts-legend-item-text`,style:m},h))})}var lt=e=>{var t=A(e,at),{payload:n,layout:r,align:i}=t;if(!n||!n.length)return null;var a={padding:0,margin:0,textAlign:r===`horizontal`?i:`left`};return B.createElement(`ul`,{className:`recharts-default-legend`,style:a},B.createElement(ct,V({},t,{payload:n})))};function ut(){return w(t)}var dt=ne(_e()),ft=[`contextPayload`];function U(){return U=Object.assign?Object.assign.bind():function(e){for(var t=1;t{t(me(e))},[t,e]),null}function Ct(e){var t=De();return(0,B.useEffect)(()=>(t(Fe(e)),()=>{t(Fe({width:0,height:0}))}),[t,e]),null}function wt(e,t,n,r){return e===`vertical`&&t!=null?{height:t}:e===`horizontal`?{width:n||r}:null}var Tt={align:`center`,iconSize:14,inactiveColor:`#ccc`,itemSorter:`value`,layout:`horizontal`,verticalAlign:`bottom`};function Et(e){var t=A(e,Tt),n=ut(),r=f(),i=xe(),{width:a,height:o,wrapperStyle:s,portal:c}=t,[l,u]=Oe([n]),d=ve(),p=ke();if(d==null||p==null)return null;var m=d-(i?.left||0)-(i?.right||0),h=wt(t.layout,o,a,m),g=c?s:W(W({position:`absolute`,width:h?.width||a||`auto`,height:h?.height||o||`auto`},xt(s,t,i,d,p,l)),s),_=c??r;return _==null||n==null?null:(0,dt.createPortal)(B.createElement(`div`,{className:`recharts-legend-wrapper`,style:g,ref:u},B.createElement(St,{layout:t.layout,align:t.align,verticalAlign:t.verticalAlign,itemSorter:t.itemSorter}),!c&&B.createElement(Ct,{width:l.width,height:l.height}),B.createElement(bt,U({},t,h,{margin:i,chartWidth:d,chartHeight:p,contextPayload:n}))),_)}var Dt=B.memo(Et,Ee);Dt.displayName=`Legend`;var Ot=(e,t,n)=>{var r=n??e;if(!i(r))return x(r,t,0)},kt=(e,t,n)=>{var r={},i=e.filter($e),a=e.filter(e=>e.stackId==null),o=i.reduce((e,t)=>{var n=e[t.stackId];return n??(n=[]),n.push(t),e[t.stackId]=n,e},r),s=Object.entries(o).map(e=>{var[r,i]=e;return{stackId:r,dataKeys:i.map(e=>e.dataKey),barSize:Ot(t,n,i[0]?.barSize)}}),c=a.map(e=>({stackId:void 0,dataKeys:[e.dataKey].filter(e=>e!=null),barSize:Ot(t,n,e.barSize)}));return[...s,...c]};function At(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function G(e){for(var t=1;te+(t.barSize||0),0);d+=(a-1)*o,d>=n&&(d-=(a-1)*o,o=0),d>=n&&u>0&&(l=!0,u*=.9,d=a*u);var f={offset:((n-d)/2>>0)-o,size:0};s=r.reduce((e,t)=>{var n={stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:f.offset+f.size+o,size:l?u:t.barSize??0}},r=[...e,n];return f=n.position,r},c)}else{var p=x(t,n,0,!0);n-2*p-(a-1)*o<=0&&(o=0);var m=(n-2*p-(a-1)*o)/a;m>1&&(m>>=0);var h=D(i)?Math.min(m,i):m;s=r.reduce((e,t,n)=>[...e,{stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:p+(m+o)*n+(m-h)/2,size:h}}],c)}return s}}var Ft=(e,t,n,r,a,o,s)=>{var c=i(s)?t:s,l=Pt(n,r,a===o?o:a,e,c);return a!==o&&l!=null&&(l=l.map(e=>G(G({},e),{},{position:G(G({},e.position),{},{offset:e.position.offset-a/2})}))),l},It=(e,t)=>{var n=a(t);if(!(!e||n==null||t==null)){var{stackId:r}=t;if(r!=null){var i=e[r];if(i){var{stackedData:o}=i;if(o)return o.find(e=>e.key===n)}}}},Lt=(e,t)=>{if(!(e==null||t==null)){var n=e.find(e=>e.stackId===t.stackId&&t.dataKey!=null&&e.dataKeys.includes(t.dataKey));if(n!=null)return n.position}};function Rt(e,t){return e&&typeof e==`object`&&`zIndex`in e&&typeof e.zIndex==`number`&&D(e.zIndex)?e.zIndex:t}var zt=!0,K=`Invariant failed`;function Bt(e,t){if(!e){if(zt)throw Error(K);var n=typeof t==`function`?t():t,r=n?`${K}: ${n}`:K;throw Error(r)}}function q(){return q=Object.assign?Object.assign.bind():function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:0;return(n,r)=>{if(oe(e))return e;var a=oe(n)||i(n);return a?e(n,r):(!a&&Bt(!1,`minPointSize callback function received a value with type of ${typeof n}. Currently only numbers or null/undefined are supported.`),t)}},Ht=(e,t,n)=>n,Y=R([S,(e,t)=>t],(e,t)=>e.filter(e=>e.type===`bar`).find(e=>e.id===t)),Ut=R([Y],e=>e?.maxBarSize),Wt=(e,t,n,r)=>r,Gt=R([z,S,k,l,Ht],(e,t,n,r,i)=>t.filter(t=>e===`horizontal`?t.xAxisId===n:t.yAxisId===r).filter(e=>e.isPanorama===i).filter(e=>e.hide===!1).filter(e=>e.type===`bar`)),Kt=(e,t,n)=>{var r=z(e),i=k(e,t),a=l(e,t);if(!(i==null||a==null))return r===`horizontal`?d(e,`yAxis`,a,n):d(e,`xAxis`,i,n)},qt=R([Gt,ze,(e,t)=>{var r=z(e),i=k(e,t),a=l(e,t);if(!(i==null||a==null))return r===`horizontal`?n(e,`xAxis`,i):n(e,`yAxis`,a)}],kt),Jt=(e,t,n)=>{var r=Y(e,t);if(r==null)return 0;var a=k(e,t),o=l(e,t);if(a==null||o==null)return 0;var s=z(e),c=y(e),{maxBarSize:u}=r,d=i(u)?c:u,f,p;return s===`horizontal`?(f=O(e,`xAxis`,a,n),p=_(e,`xAxis`,a,n)):(f=O(e,`yAxis`,o,n),p=_(e,`yAxis`,o,n)),Ye(f,p,!0)??d??0},Yt=(e,t,n)=>{var r=z(e),i=k(e,t),a=l(e,t);if(!(i==null||a==null)){var o,s;return r===`horizontal`?(o=O(e,`xAxis`,i,n),s=_(e,`xAxis`,i,n)):(o=O(e,`yAxis`,a,n),s=_(e,`yAxis`,a,n)),Ye(o,s)}},Xt=R([Ce,Te,(e,t,n)=>{var r=k(e,t);if(r!=null)return O(e,`xAxis`,r,n)},(e,t,n)=>{var r=l(e,t);if(r!=null)return O(e,`yAxis`,r,n)},(e,t,n)=>{var r=k(e,t);if(r!=null)return _(e,`xAxis`,r,n)},(e,t,n)=>{var r=l(e,t);if(r!=null)return _(e,`yAxis`,r,n)},R([R([qt,y,p,se,Jt,Yt,Ut],Ft),Y],Lt),z,N,Yt,R([Kt,Y],It),Y,Wt],(e,t,n,r,i,a,o,s,c,l,u,d,f)=>{var{chartData:p,dataStartIndex:m,dataEndIndex:h}=c;if(!(d==null||o==null||t==null||s!==`horizontal`&&s!==`vertical`||n==null||r==null||i==null||a==null||l==null)){var{data:g}=d,_=g!=null&&g.length>0?g:p?.slice(m,h+1);if(_!=null)return An({layout:s,barSettings:d,pos:o,parentViewBox:t,bandSize:l,xAxis:n,yAxis:r,xAxisTicks:i,yAxisTicks:a,stackedData:u,displayedData:_,offset:e,cells:f,dataStartIndex:m})}}),Zt=[`index`];function Qt(){return Qt=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,B.useContext)(tn);if(t!=null)return t.stackId;if(e!=null)return s(e)},rn=(e,t)=>`recharts-bar-stack-clip-path-${e}-${t}`,an=e=>{var t=(0,B.useContext)(tn);if(t!=null){var{stackId:n}=t;return`url(#${rn(n,e)})`}},on=e=>{var{index:t}=e,n=$t(e,Zt),r=an(t);return B.createElement(b,Qt({className:`recharts-bar-stack-layer`,clipPath:r},n))},sn=[`onMouseEnter`,`onMouseLeave`,`onClick`],cn=[`value`,`background`,`tooltipPosition`],ln=[`id`],un=[`onMouseEnter`,`onClick`,`onMouseLeave`];function X(){return X=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:n,fill:r,legendType:i,hide:a}=e;return[{inactive:a,dataKey:t,type:i,color:r,value:Ke(n,t),payload:e}]},_n=B.memo(e=>{var{dataKey:t,stroke:n,strokeWidth:r,fill:i,name:a,hide:o,unit:s,tooltipType:c,id:l}=e,u={dataDefinedOnItem:void 0,getPosition:re,settings:{stroke:n,strokeWidth:r,fill:i,dataKey:t,nameKey:void 0,name:Ke(a,t),hide:o,type:c,color:i,unit:s,graphicalItemId:l}};return B.createElement(de,{tooltipEntrySettings:u})});function vn(t){var n=w(we),{data:r,dataKey:i,background:a,allOtherBarProps:o}=t,{onMouseEnter:s,onMouseLeave:c,onClick:l}=o,d=Q(o,sn),f=e(s,i,o.id),p=be(c),m=j(l,i,o.id);if(!a||r==null)return null;var h=ce(a);return B.createElement(L,{zIndex:Rt(a,ie.barBackground)},r.map((e,t)=>{var{value:r,background:o,tooltipPosition:s}=e,c=Q(e,cn);if(!o)return null;var l=f(e,t),g=p(e,t),_=m(e,t),v=Z(Z(Z(Z(Z({option:a,isActive:String(t)===n},c),{},{fill:`#eee`},o),h),u(d,e,t)),{},{onMouseEnter:l,onMouseLeave:g,onClick:_,dataKey:i,index:t,className:`recharts-bar-background-rectangle`});return B.createElement(J,X({key:`background-bar-${t}`},v))}))}function yn(e){var{showLabels:t,children:n,rects:r}=e,i=r?.map(e=>{var t={x:e.x,y:e.y,width:e.width,lowerWidth:e.width,upperWidth:e.width,height:e.height};return Z(Z({},t),{},{value:e.value,payload:e.payload,parentViewBox:e.parentViewBox,viewBox:t,fill:e.fill})});return B.createElement(he,{value:t?i:void 0},n)}function bn(e){var{shape:t,activeBar:n,baseProps:r,entry:i,index:a,dataKey:o}=e,s=w(we),c=w(Me),l=n&&String(i.originalDataIndex)===s&&(c==null||o===c),[u,d]=(0,B.useState)(!1),[f,p]=(0,B.useState)(!1);(0,B.useEffect)(()=>{var e;return l?(d(!0),e=requestAnimationFrame(()=>{p(!0)})):p(!1),()=>{cancelAnimationFrame(e)}},[l]);var m=(0,B.useCallback)(()=>{l||d(!1)},[l]),h=l&&f,g=l||u,_=l?n===!0?t:n:t,v=B.createElement(J,X({},r,{name:String(r.name)},i,{isActive:h,option:_,index:a,dataKey:o,onTransitionEnd:m}));return g?B.createElement(L,{zIndex:ie.activeBar},B.createElement(on,{index:i.originalDataIndex},v)):v}function xn(e){var{shape:t,baseProps:n,entry:r,index:i,dataKey:a}=e;return B.createElement(J,X({},n,{name:String(n.name)},r,{isActive:!1,option:t,index:i,dataKey:a}))}function Sn(t){var{data:n,props:r}=t,i=ue(r)??{},{id:a}=i,o=Q(i,ln),{shape:s,dataKey:c,activeBar:l}=r,{onMouseEnter:d,onClick:f,onMouseLeave:p}=r,m=Q(r,un),h=e(d,c,a),g=be(p),_=j(f,c,a);return n?B.createElement(B.Fragment,null,n.map((e,t)=>B.createElement(on,X({index:e.originalDataIndex,key:`rectangle-${e?.x}-${e?.y}-${e?.value}-${t}`,className:`recharts-bar-rectangle`},u(m,e,t),{onMouseEnter:h(e,t),onMouseLeave:g(e,t),onClick:_(e,t)}),l?B.createElement(bn,{shape:s,activeBar:l,baseProps:o,entry:e,index:t,dataKey:c}):B.createElement(xn,{shape:s,baseProps:o,entry:e,index:t,dataKey:c})))):null}function Cn(e){var{props:t,previousRectanglesRef:n}=e,{data:r,layout:i,isAnimationActive:a,animationBegin:o,animationDuration:s,animationEasing:c,onAnimationEnd:l,onAnimationStart:u}=t,d=n.current,f=Be(t,`recharts-bar-`),[p,m]=(0,B.useState)(!1),h=!p,g=(0,B.useCallback)(()=>{typeof l==`function`&&l(),m(!1)},[l]),_=(0,B.useCallback)(()=>{typeof u==`function`&&u(),m(!0)},[u]);return B.createElement(yn,{showLabels:h,rects:r},B.createElement(Ne,{animationId:f,begin:o,duration:s,isActive:a,easing:c,onAnimationEnd:g,onAnimationStart:_,key:f},e=>{var a=e===1?r:r?.map((t,n)=>{var r=d&&d[n];if(r)return Z(Z({},t),{},{x:F(r.x,t.x,e),y:F(r.y,t.y,e),width:F(r.width,t.width,e),height:F(r.height,t.height,e)});if(i===`horizontal`){var a=F(0,t.height,e),o=F(t.stackedBarStart,t.y,e);return Z(Z({},t),{},{y:o,height:a})}var s=F(0,t.width,e),c=F(t.stackedBarStart,t.x,e);return Z(Z({},t),{},{width:s,x:c})});return e>0&&(n.current=a??null),a==null?null:B.createElement(b,null,B.createElement(Sn,{props:t,data:a}))}),B.createElement(Ie,{label:t.label}),t.children)}function wn(e){var t=(0,B.useRef)(null);return B.createElement(Cn,{previousRectanglesRef:t,props:e})}var Tn=0,En=(e,t)=>{var n=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:n,errorVal:te(e,t)}},Dn=class extends B.PureComponent{render(){var{hide:e,data:t,dataKey:n,className:r,xAxisId:i,yAxisId:a,needClip:o,background:s,id:c}=this.props;if(e||t==null)return null;var l=fe(`recharts-bar`,r),u=c;return B.createElement(b,{className:l,id:c},o&&B.createElement(`defs`,null,B.createElement(P,{clipPathId:u,xAxisId:i,yAxisId:a})),B.createElement(b,{className:`recharts-bar-rectangles`,clipPath:o?`url(#clipPath-${u})`:void 0},B.createElement(vn,{data:t,dataKey:n,background:s,allOtherBarProps:this.props}),B.createElement(wn,this.props)))}},On={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:`ease`,background:!1,hide:!1,isAnimationActive:`auto`,label:!1,legendType:`rect`,minPointSize:Tn,xAxisId:0,yAxisId:0,zIndex:ie.bar};function kn(e){var{xAxisId:t,yAxisId:n,hide:i,legendType:a,minPointSize:o,activeBar:s,animationBegin:c,animationDuration:l,animationEasing:u,isAnimationActive:d}=e,{needClip:f}=Ze(t,n),p=He(),m=je(),h=Pe(e.children,Ae),g=w(t=>Xt(t,e.id,m,h));if(p!==`vertical`&&p!==`horizontal`)return null;var _,v=g?.[0];return _=v==null||v.height==null||v.width==null?0:p===`vertical`?v.height/2:v.width/2,B.createElement(r,{xAxisId:t,yAxisId:n,data:g,dataPointFormatter:En,errorBarOffset:_},B.createElement(Dn,X({},e,{layout:p,needClip:f,data:g,xAxisId:t,yAxisId:n,hide:i,legendType:a,minPointSize:o,activeBar:s,animationBegin:c,animationDuration:l,animationEasing:u,isAnimationActive:d})))}function An(e){var{layout:t,barSettings:{dataKey:n,minPointSize:r,hasCustomShape:i},pos:a,bandSize:o,xAxis:s,yAxis:l,xAxisTicks:u,yAxisTicks:d,stackedData:f,displayedData:p,offset:h,cells:g,parentViewBox:_,dataStartIndex:v}=e,y=t===`horizontal`?l:s,ee=f?y.scale.domain():null,b=ge({numericAxis:y}),x=y.scale.map(b);return p.map((e,p)=>{var y,S,C,w,T,E;if(f){var D=f[p+v];if(D==null)return null;y=c(D,ee)}else y=te(e,n),Array.isArray(y)||(y=[b,y]);var O=Vt(r,Tn)(y[1],p);if(t===`horizontal`){var k=l.scale.map(y[0]),A=l.scale.map(y[1]);if(k==null||A==null)return null;S=qe({axis:s,ticks:u,bandSize:o,offset:a.offset,entry:e,index:p}),C=A??k??void 0,w=a.size;var j=k-A;if(T=Qe(j)?0:j,E={x:S,y:h.top,width:w,height:h.height},Math.abs(O)>0&&Math.abs(T)0&&Math.abs(w)B.createElement(B.Fragment,null,B.createElement(le,{legendPayload:gn(t)}),B.createElement(_n,{dataKey:t.dataKey,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:e}),B.createElement(ee,{type:`bar`,id:e,data:void 0,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,stackId:n,hide:t.hide,barSize:t.barSize,minPointSize:t.minPointSize,maxBarSize:t.maxBarSize,isPanorama:r,hasCustomShape:t.shape!=null}),B.createElement(L,{zIndex:t.zIndex},B.createElement(kn,X({},t,{id:e})))))}var Mn=B.memo(jn,Ee);Mn.displayName=`Bar`;var Nn=[`axis`],Pn=(0,B.forwardRef)((e,t)=>B.createElement(Ge,{chartName:`ComposedChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:Nn,tooltipPayloadSearcher:ye,categoricalChartProps:e,ref:t})),$=Xe(),Fn=({metrics:e})=>{if(!e.length)return null;let t=e.some(e=>typeof e.duration_seconds==`number`&&e.duration_seconds>0);return(0,$.jsxs)(Se,{children:[(0,$.jsx)(We,{children:M(`Recent AI Usage`)}),(0,$.jsx)(pe,{children:M(`Daily credits and total AI time for the last 30 days.`)}),(0,$.jsx)(o,{children:(0,$.jsx)(Le,{width:`100%`,height:260,children:(0,$.jsxs)(Pn,{data:e,margin:{top:28,right:t?28:12,bottom:0,left:6},children:[(0,$.jsx)(ae,{strokeDasharray:`3 3`,vertical:!1}),(0,$.jsx)(T,{dataKey:`date`,tickMargin:8,axisLine:!1,tickLine:!1,tickFormatter:e=>new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`})}),(0,$.jsx)(C,{yAxisId:`left`,axisLine:{stroke:I.blue400,strokeWidth:2},tickLine:{stroke:I.blue400,strokeWidth:2},tickMargin:8,tickFormatter:e=>e.toLocaleString()}),t&&(0,$.jsx)(C,{yAxisId:`right`,orientation:`right`,axisLine:{stroke:I.pink500,strokeWidth:2},tickLine:{stroke:I.pink500,strokeWidth:2},tickMargin:8,tickFormatter:e=>`${e.toFixed(0)}s`}),(0,$.jsx)(Ue,{cursor:{fill:I.gray050??`rgba(0,0,0,0.04)`},labelFormatter:e=>new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`}),formatter:(e,t)=>t===`credits`?[e.toLocaleString(),M(`Credits`)]:t===`api_requests`?[e.toString(),M(`Requests`)]:t===`duration_seconds`?[`${e.toFixed(1)}s`,M(`Duration`)]:[e.toString(),t]}),(0,$.jsx)(Dt,{verticalAlign:`top`,align:`right`,iconType:`circle`,height:20,wrapperStyle:{top:0},formatter:e=>e===`credits`?M(`Credits`):e===`duration_seconds`?M(`Duration`):e}),(0,$.jsx)(Mn,{dataKey:`credits`,yAxisId:`left`,fill:I.blue400,radius:[4,4,0,0],maxBarSize:40}),t&&(0,$.jsx)(h,{type:`monotone`,dataKey:`duration_seconds`,yAxisId:`right`,stroke:I.pink500,strokeWidth:2,dot:{r:2.5,strokeWidth:0,fill:I.pink500},activeDot:{r:4}})]})})})]})};export{Fn as default}; \ No newline at end of file diff --git a/packages/plugin/src/Resources/js/client/assets/ai.usage-chart-BG9xQMJm.js b/packages/plugin/src/Resources/js/client/assets/ai.usage-chart-BG9xQMJm.js new file mode 100644 index 0000000000..eaa74d0945 --- /dev/null +++ b/packages/plugin/src/Resources/js/client/assets/ai.usage-chart-BG9xQMJm.js @@ -0,0 +1,4 @@ +import{$ as e,A as t,At as n,B as r,Bt as i,C as a,Ct as o,D as s,Dt as c,E as l,Et as u,F as d,G as f,Gt as p,H as m,Ht as h,I as g,J as _,K as v,Kt as y,L as ee,M as b,Mt as te,N as x,Nt as S,O as C,Ot as w,P as T,Q as ne,R as E,S as D,St as O,T as re,Tt as k,U as A,Ut as j,V as ie,Vt as M,W as ae,Wt as oe,X as N,Y as se,Z as ce,_ as le,_t as ue,a as de,at as fe,b as pe,bt as me,c as P,ct as he,d as ge,dt as _e,et as ve,f as ye,ft as F,g as be,gt as I,h as xe,ht as Se,i as Ce,it as we,j as Te,jt as Ee,k as De,kt as L,l as R,lt as Oe,m as ke,mt as Ae,n as je,nt as Me,o as Ne,ot as Pe,p as Fe,pt as Ie,q as Le,r as Re,rt as ze,s as Be,st as Ve,t as He,tt as Ue,u as We,ut as Ge,v as Ke,vt as z,w as qe,wt as B,x as Je,xt as V,y as Ye,yt as H,z as Xe}from"./index-Rblf8O1T.js";var U=y(p());function W(){return W=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var f=t.formatter||a,p=S({"recharts-legend-item":!0,[`legend-item-${i}`]:!0,inactive:t.inactive});if(t.type===`none`)return null;var m=typeof c==`object`?Qe({},c):{};m.color=t.inactive?o:m.color||t.color;var h=f?f(t.value,t,i):t.value;return U.createElement(`li`,W({className:p,style:u,key:`legend-item-${i}`},H(e,t,i)),U.createElement(n,{width:r,height:r,viewBox:l,style:d,"aria-label":`${t.value} legend icon`},U.createElement(it,{data:t,iconType:s,inactiveColor:o})),U.createElement(`span`,{className:`recharts-legend-item-text`,style:m},h))})}var ot=e=>{var t=z(e,nt),{payload:n,layout:r,align:i}=t;if(!n||!n.length)return null;var a={padding:0,margin:0,textAlign:r===`horizontal`?i:`left`};return U.createElement(`ul`,{className:`recharts-default-legend`,style:a},U.createElement(at,W({},t,{payload:n})))};function st(){return I(Ae)}var ct=y(oe()),lt=[`contextPayload`];function ut(){return ut=Object.assign?Object.assign.bind():function(e){for(var t=1;t{t(_(e))},[t,e]),null}function xt(e){var t=Se();return(0,U.useEffect)(()=>(t(se(e)),()=>{t(se({width:0,height:0}))}),[t,e]),null}function St(e,t,n,r){return e===`vertical`&&t!=null?{height:t}:e===`horizontal`?{width:n||r}:null}var Ct={align:`center`,iconSize:14,inactiveColor:`#ccc`,itemSorter:`value`,layout:`horizontal`,verticalAlign:`bottom`};function wt(t){var n=z(t,Ct),r=st(),i=w(),a=ve(),{width:o,height:s,wrapperStyle:c,portal:l}=n,[u,d]=Ie([r]),f=e(),p=ce();if(f==null||p==null)return null;var m=f-(a?.left||0)-(a?.right||0),h=St(n.layout,s,o,m),g=l?c:K(K({position:`absolute`,width:h?.width||o||`auto`,height:h?.height||s||`auto`},yt(c,n,a,f,p,u)),c),_=l??i;return _==null||r==null?null:(0,ct.createPortal)(U.createElement(`div`,{className:`recharts-legend-wrapper`,style:g,ref:d},U.createElement(bt,{layout:n.layout,align:n.align,verticalAlign:n.verticalAlign,itemSorter:n.itemSorter}),!l&&U.createElement(xt,{width:u.width,height:u.height}),U.createElement(vt,ut({},n,h,{margin:a,chartWidth:f,chartHeight:p,contextPayload:r}))),_)}var Tt=U.memo(wt,Le);Tt.displayName=`Legend`;var Et=(e,t,n)=>{var r=n??e;if(!B(r))return V(r,t,0)},Dt=(e,t,n)=>{var r={},i=e.filter(ee),a=e.filter(e=>e.stackId==null),o=i.reduce((e,t)=>{var n=e[t.stackId];return n??(n=[]),n.push(t),e[t.stackId]=n,e},r),s=Object.entries(o).map(e=>{var[r,i]=e;return{stackId:r,dataKeys:i.map(e=>e.dataKey),barSize:Et(t,n,i[0]?.barSize)}}),c=a.map(e=>({stackId:void 0,dataKeys:[e.dataKey].filter(e=>e!=null),barSize:Et(t,n,e.barSize)}));return[...s,...c]};function Ot(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function q(e){for(var t=1;te+(t.barSize||0),0);d+=(a-1)*o,d>=n&&(d-=(a-1)*o,o=0),d>=n&&u>0&&(l=!0,u*=.9,d=a*u);var f={offset:((n-d)/2>>0)-o,size:0};s=r.reduce((e,t)=>{var n={stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:f.offset+f.size+o,size:l?u:t.barSize??0}},r=[...e,n];return f=n.position,r},c)}else{var p=V(t,n,0,!0);n-2*p-(a-1)*o<=0&&(o=0);var m=(n-2*p-(a-1)*o)/a;m>1&&(m>>=0);var h=F(i)?Math.min(m,i):m;s=r.reduce((e,t,n)=>[...e,{stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:p+(m+o)*n+(m-h)/2,size:h}}],c)}return s}}var Nt=(e,t,n,r,i,a,o)=>{var s=B(o)?t:o,c=Mt(n,r,i===a?a:i,e,s);return i!==a&&c!=null&&(c=c.map(e=>q(q({},e),{},{position:q(q({},e.position),{},{offset:e.position.offset-i/2})}))),c},Pt=(e,t)=>{var n=E(t);if(!(!e||n==null||t==null)){var{stackId:r}=t;if(r!=null){var i=e[r];if(i){var{stackedData:a}=i;if(a)return a.find(e=>e.key===n)}}}},Ft=(e,t)=>{if(!(e==null||t==null)){var n=e.find(e=>e.stackId===t.stackId&&t.dataKey!=null&&e.dataKeys.includes(t.dataKey));if(n!=null)return n.position}};function It(e,t){return e&&typeof e==`object`&&`zIndex`in e&&typeof e.zIndex==`number`&&F(e.zIndex)?e.zIndex:t}var Lt=!0,Rt=`Invariant failed`;function zt(e,t){if(!e){if(Lt)throw Error(Rt);var n=typeof t==`function`?t():t,r=n?`${Rt}: ${n}`:Rt;throw Error(r)}}function Bt(){return Bt=Object.assign?Object.assign.bind():function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:0;return(n,r)=>{if(k(e))return e;var i=k(n)||B(n);return i?e(n,r):(!i&&zt(!1,`minPointSize callback function received a value with type of ${typeof n}. Currently only numbers or null/undefined are supported.`),t)}},Ut=(e,t,n)=>n,J=M([g,(e,t)=>t],(e,t)=>e.filter(e=>e.type===`bar`).find(e=>e.id===t)),Wt=M([J],e=>e?.maxBarSize),Gt=(e,t,n,r)=>r,Kt=M([N,g,P,R,Ut],(e,t,n,r,i)=>t.filter(t=>e===`horizontal`?t.xAxisId===n:t.yAxisId===r).filter(e=>e.isPanorama===i).filter(e=>e.hide===!1).filter(e=>e.type===`bar`)),qt=(e,t,n)=>{var r=N(e),i=P(e,t),a=R(e,t);if(!(i==null||a==null))return r===`horizontal`?T(e,`yAxis`,a,n):T(e,`xAxis`,i,n)},Jt=M([Kt,m,(e,t)=>{var n=N(e),r=P(e,t),i=R(e,t);if(!(r==null||i==null))return n===`horizontal`?x(e,`xAxis`,r):x(e,`yAxis`,i)}],Dt),Yt=(e,t,n)=>{var r=J(e,t);if(r==null)return 0;var i=P(e,t),a=R(e,t);if(i==null||a==null)return 0;var o=N(e),s=A(e),{maxBarSize:c}=r,l=B(c)?s:c,u,f;return o===`horizontal`?(u=b(e,`xAxis`,i,n),f=d(e,`xAxis`,i,n)):(u=b(e,`yAxis`,a,n),f=d(e,`yAxis`,a,n)),fe(u,f,!0)??l??0},Xt=(e,t,n)=>{var r=N(e),i=P(e,t),a=R(e,t);if(!(i==null||a==null)){var o,s;return r===`horizontal`?(o=b(e,`xAxis`,i,n),s=d(e,`xAxis`,i,n)):(o=b(e,`yAxis`,a,n),s=d(e,`yAxis`,a,n)),fe(o,s)}},Zt=M([we,ze,(e,t,n)=>{var r=P(e,t);if(r!=null)return b(e,`xAxis`,r,n)},(e,t,n)=>{var r=R(e,t);if(r!=null)return b(e,`yAxis`,r,n)},(e,t,n)=>{var r=P(e,t);if(r!=null)return d(e,`xAxis`,r,n)},(e,t,n)=>{var r=R(e,t);if(r!=null)return d(e,`yAxis`,r,n)},M([M([Jt,A,ie,r,Yt,Xt,Wt],Nt),J],Ft),N,ae,Xt,M([qt,J],Pt),J,Gt],(e,t,n,r,i,a,o,s,c,l,u,d,f)=>{var{chartData:p,dataStartIndex:m,dataEndIndex:h}=c;if(!(d==null||o==null||t==null||s!==`horizontal`&&s!==`vertical`||n==null||r==null||i==null||a==null||l==null)){var{data:g}=d,_=g!=null&&g.length>0?g:p?.slice(m,h+1);if(_!=null)return An({layout:s,barSettings:d,pos:o,parentViewBox:t,bandSize:l,xAxis:n,yAxis:r,xAxisTicks:i,yAxisTicks:a,stackedData:u,displayedData:_,offset:e,cells:f,dataStartIndex:m})}}),Qt=[`index`];function Y(){return Y=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,U.useContext)(tn);if(t!=null)return t.stackId;if(e!=null)return he(e)},rn=(e,t)=>`recharts-bar-stack-clip-path-${e}-${t}`,an=e=>{var t=(0,U.useContext)(tn);if(t!=null){var{stackId:n}=t;return`url(#${rn(n,e)})`}},on=e=>{var{index:t}=e,n=$t(e,Qt),r=an(t);return U.createElement(L,Y({className:`recharts-bar-stack-layer`,clipPath:r},n))},sn=[`onMouseEnter`,`onMouseLeave`,`onClick`],cn=[`value`,`background`,`tooltipPosition`],ln=[`id`],un=[`onMouseEnter`,`onClick`,`onMouseLeave`];function X(){return X=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:n,fill:r,legendType:i,hide:a}=e;return[{inactive:a,dataKey:t,type:i,color:r,value:Oe(n,t),payload:e}]},_n=U.memo(e=>{var{dataKey:t,stroke:n,strokeWidth:r,fill:i,name:a,hide:o,unit:s,tooltipType:l,id:u}=e,d={dataDefinedOnItem:void 0,getPosition:c,settings:{stroke:n,strokeWidth:r,fill:i,dataKey:t,nameKey:void 0,name:Oe(a,t),hide:o,type:l,color:i,unit:s,graphicalItemId:u}};return U.createElement(Ke,{tooltipEntrySettings:d})});function vn(e){var t=I(Te),{data:n,dataKey:r,background:i,allOtherBarProps:a}=e,{onMouseEnter:o,onMouseLeave:s,onClick:c}=a,l=Q(a,sn),u=pe(o,r,a.id),d=Je(s),f=Ye(c,r,a.id);if(!i||n==null)return null;var p=te(i);return U.createElement(De,{zIndex:It(i,Xe.barBackground)},n.map((e,n)=>{var{value:a,background:o,tooltipPosition:s}=e,c=Q(e,cn);if(!o)return null;var m=u(e,n),h=d(e,n),g=f(e,n),_=Z(Z(Z(Z(Z({option:i,isActive:String(n)===t},c),{},{fill:`#eee`},o),p),H(l,e,n)),{},{onMouseEnter:m,onMouseLeave:h,onClick:g,dataKey:r,index:n,className:`recharts-bar-background-rectangle`});return U.createElement(Vt,X({key:`background-bar-${n}`},_))}))}function yn(e){var{showLabels:t,children:n,rects:r}=e,i=r?.map(e=>{var t={x:e.x,y:e.y,width:e.width,lowerWidth:e.width,upperWidth:e.width,height:e.height};return Z(Z({},t),{},{value:e.value,payload:e.payload,parentViewBox:e.parentViewBox,viewBox:t,fill:e.fill})});return U.createElement(qe,{value:t?i:void 0},n)}function bn(e){var{shape:n,activeBar:r,baseProps:i,entry:a,index:o,dataKey:s}=e,c=I(Te),l=I(t),u=r&&String(a.originalDataIndex)===c&&(l==null||s===l),[d,f]=(0,U.useState)(!1),[p,m]=(0,U.useState)(!1);(0,U.useEffect)(()=>{var e;return u?(f(!0),e=requestAnimationFrame(()=>{m(!0)})):m(!1),()=>{cancelAnimationFrame(e)}},[u]);var h=(0,U.useCallback)(()=>{u||f(!1)},[u]),g=u&&p,_=u||d,v=u?r===!0?n:r:n,y=U.createElement(Vt,X({},i,{name:String(i.name)},a,{isActive:g,option:v,index:o,dataKey:s,onTransitionEnd:h}));return _?U.createElement(De,{zIndex:Xe.activeBar},U.createElement(on,{index:a.originalDataIndex},y)):y}function xn(e){var{shape:t,baseProps:n,entry:r,index:i,dataKey:a}=e;return U.createElement(Vt,X({},n,{name:String(n.name)},r,{isActive:!1,option:t,index:i,dataKey:a}))}function Sn(e){var{data:t,props:n}=e,r=Ee(n)??{},{id:i}=r,a=Q(r,ln),{shape:o,dataKey:s,activeBar:c}=n,{onMouseEnter:l,onClick:u,onMouseLeave:d}=n,f=Q(n,un),p=pe(l,s,i),m=Je(d),h=Ye(u,s,i);return t?U.createElement(U.Fragment,null,t.map((e,t)=>U.createElement(on,X({index:e.originalDataIndex,key:`rectangle-${e?.x}-${e?.y}-${e?.value}-${t}`,className:`recharts-bar-rectangle`},H(f,e,t),{onMouseEnter:p(e,t),onMouseLeave:m(e,t),onClick:h(e,t)}),c?U.createElement(bn,{shape:o,activeBar:c,baseProps:a,entry:e,index:t,dataKey:s}):U.createElement(xn,{shape:o,baseProps:a,entry:e,index:t,dataKey:s})))):null}function Cn(e){var{props:t,previousRectanglesRef:n}=e,{data:r,layout:i,isAnimationActive:a,animationBegin:o,animationDuration:s,animationEasing:c,onAnimationEnd:l,onAnimationStart:u}=t,d=n.current,p=f(t,`recharts-bar-`),[m,h]=(0,U.useState)(!1),g=!m,_=(0,U.useCallback)(()=>{typeof l==`function`&&l(),h(!1)},[l]),y=(0,U.useCallback)(()=>{typeof u==`function`&&u(),h(!0)},[u]);return U.createElement(yn,{showLabels:g,rects:r},U.createElement(v,{animationId:p,begin:o,duration:s,isActive:a,easing:c,onAnimationEnd:_,onAnimationStart:y,key:p},e=>{var a=e===1?r:r?.map((t,n)=>{var r=d&&d[n];if(r)return Z(Z({},t),{},{x:O(r.x,t.x,e),y:O(r.y,t.y,e),width:O(r.width,t.width,e),height:O(r.height,t.height,e)});if(i===`horizontal`){var a=O(0,t.height,e),o=O(t.stackedBarStart,t.y,e);return Z(Z({},t),{},{y:o,height:a})}var s=O(0,t.width,e),c=O(t.stackedBarStart,t.x,e);return Z(Z({},t),{},{width:s,x:c})});return e>0&&(n.current=a??null),a==null?null:U.createElement(L,null,U.createElement(Sn,{props:t,data:a}))}),U.createElement(re,{label:t.label}),t.children)}function wn(e){var t=(0,U.useRef)(null);return U.createElement(Cn,{previousRectanglesRef:t,props:e})}var Tn=0,En=(e,t)=>{var n=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:n,errorVal:Ge(e,t)}},Dn=class extends U.PureComponent{render(){var{hide:e,data:t,dataKey:n,className:r,xAxisId:i,yAxisId:a,needClip:o,background:s,id:c}=this.props;if(e||t==null)return null;var l=S(`recharts-bar`,r),u=c;return U.createElement(L,{className:l,id:c},o&&U.createElement(`defs`,null,U.createElement(ge,{clipPathId:u,xAxisId:i,yAxisId:a})),U.createElement(L,{className:`recharts-bar-rectangles`,clipPath:o?`url(#clipPath-${u})`:void 0},U.createElement(vn,{data:t,dataKey:n,background:s,allOtherBarProps:this.props}),U.createElement(wn,this.props)))}},On={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:`ease`,background:!1,hide:!1,isAnimationActive:`auto`,label:!1,legendType:`rect`,minPointSize:Tn,xAxisId:0,yAxisId:0,zIndex:Xe.bar};function kn(e){var{xAxisId:t,yAxisId:n,hide:r,legendType:i,minPointSize:o,activeBar:s,animationBegin:c,animationDuration:u,animationEasing:d,isAnimationActive:f}=e,{needClip:p}=ye(t,n),m=ne(),h=Me(),g=a(e.children,l),_=I(t=>Zt(t,e.id,h,g));if(m!==`vertical`&&m!==`horizontal`)return null;var v,y=_?.[0];return v=y==null||y.height==null||y.width==null?0:m===`vertical`?y.height/2:y.width/2,U.createElement(Fe,{xAxisId:t,yAxisId:n,data:_,dataPointFormatter:En,errorBarOffset:v},U.createElement(Dn,X({},e,{layout:m,needClip:p,data:_,xAxisId:t,yAxisId:n,hide:r,legendType:i,minPointSize:o,activeBar:s,animationBegin:c,animationDuration:u,animationEasing:d,isAnimationActive:f})))}function An(e){var{layout:t,barSettings:{dataKey:n,minPointSize:r,hasCustomShape:i},pos:a,bandSize:s,xAxis:c,yAxis:l,xAxisTicks:d,yAxisTicks:f,stackedData:p,displayedData:m,offset:h,cells:g,parentViewBox:_,dataStartIndex:v}=e,y=t===`horizontal`?l:c,ee=p?y.scale.domain():null,b=Pe({numericAxis:y}),te=y.scale.map(b);return m.map((e,m)=>{var y,x,S,C,w,T;if(p){var ne=p[m+v];if(ne==null)return null;y=_e(ne,ee)}else y=Ge(e,n),Array.isArray(y)||(y=[b,y]);var E=Ht(r,Tn)(y[1],m);if(t===`horizontal`){var D=l.scale.map(y[0]),O=l.scale.map(y[1]);if(D==null||O==null)return null;x=Ve({axis:c,ticks:d,bandSize:s,offset:a.offset,entry:e,index:m}),S=O??D??void 0,C=a.size;var re=D-O;if(w=o(re)?0:re,T={x,y:h.top,width:C,height:h.height},Math.abs(E)>0&&Math.abs(w)0&&Math.abs(C)U.createElement(U.Fragment,null,U.createElement(le,{legendPayload:gn(t)}),U.createElement(_n,{dataKey:t.dataKey,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:e}),U.createElement(xe,{type:`bar`,id:e,data:void 0,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,stackId:n,hide:t.hide,barSize:t.barSize,minPointSize:t.minPointSize,maxBarSize:t.maxBarSize,isPanorama:r,hasCustomShape:t.shape!=null}),U.createElement(De,{zIndex:t.zIndex},U.createElement(kn,X({},t,{id:e})))))}var Mn=U.memo(jn,Le);Mn.displayName=`Bar`;var Nn=[`axis`],Pn=(0,U.forwardRef)((e,t)=>U.createElement(de,{chartName:`ComposedChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:Nn,tooltipPayloadSearcher:C,categoricalChartProps:e,ref:t})),$=j(),Fn=({metrics:e})=>{if(!e.length)return null;let t=e.some(e=>typeof e.duration_seconds==`number`&&e.duration_seconds>0);return(0,$.jsxs)(He,{children:[(0,$.jsx)(Re,{children:i(`Recent AI Usage`)}),(0,$.jsx)(je,{children:i(`Daily credits and total AI time for the last 30 days.`)}),(0,$.jsx)(Ce,{children:(0,$.jsx)(Ue,{width:`100%`,height:260,children:(0,$.jsxs)(Pn,{data:e,margin:{top:28,right:t?28:12,bottom:0,left:6},children:[(0,$.jsx)(ke,{strokeDasharray:`3 3`,vertical:!1}),(0,$.jsx)(Be,{dataKey:`date`,tickMargin:8,axisLine:!1,tickLine:!1,tickFormatter:e=>new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`})}),(0,$.jsx)(Ne,{yAxisId:`left`,axisLine:{stroke:h.blue400,strokeWidth:2},tickLine:{stroke:h.blue400,strokeWidth:2},tickMargin:8,tickFormatter:e=>e.toLocaleString()}),t&&(0,$.jsx)(Ne,{yAxisId:`right`,orientation:`right`,axisLine:{stroke:h.pink500,strokeWidth:2},tickLine:{stroke:h.pink500,strokeWidth:2},tickMargin:8,tickFormatter:e=>`${e.toFixed(0)}s`}),(0,$.jsx)(s,{cursor:{fill:h.gray050??`rgba(0,0,0,0.04)`},labelFormatter:e=>new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`}),formatter:(e,t)=>t===`credits`?[e.toLocaleString(),i(`Credits`)]:t===`api_requests`?[e.toString(),i(`Requests`)]:t===`duration_seconds`?[`${e.toFixed(1)}s`,i(`Duration`)]:[e.toString(),t]}),(0,$.jsx)(Tt,{verticalAlign:`top`,align:`right`,iconType:`circle`,height:20,wrapperStyle:{top:0},formatter:e=>e===`credits`?i(`Credits`):e===`duration_seconds`?i(`Duration`):e}),(0,$.jsx)(Mn,{dataKey:`credits`,yAxisId:`left`,fill:h.blue400,radius:[4,4,0,0],maxBarSize:40}),t&&(0,$.jsx)(We,{type:`monotone`,dataKey:`duration_seconds`,yAxisId:`right`,stroke:h.pink500,strokeWidth:2,dot:{r:2.5,strokeWidth:0,fill:h.pink500},activeDot:{r:4}})]})})})]})};export{Fn as default}; \ No newline at end of file diff --git a/packages/plugin/src/Resources/js/client/assets/buildMatchPatternFn-CA1-K-2Q.js b/packages/plugin/src/Resources/js/client/assets/buildMatchPatternFn-CA1-K-2Q.js deleted file mode 100644 index 87cb640f26..0000000000 --- a/packages/plugin/src/Resources/js/client/assets/buildMatchPatternFn-CA1-K-2Q.js +++ /dev/null @@ -1 +0,0 @@ -function e(e){return(t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}function t(e){return(t,n)=>{let r=n?.context?String(n.context):`standalone`,i;if(r===`formatting`&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;i=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;i=e.values[r]||e.values[t]}let a=e.argumentCallback?e.argumentCallback(t):t;return i[a]}}function n(e){return(t,n={})=>{let a=n.width,o=a&&e.matchPatterns[a]||e.matchPatterns[e.defaultMatchWidth],s=t.match(o);if(!s)return null;let c=s[0],l=a&&e.parsePatterns[a]||e.parsePatterns[e.defaultParseWidth],u=Array.isArray(l)?i(l,e=>e.test(c)):r(l,e=>e.test(c)),d;d=e.valueCallback?e.valueCallback(u):u,d=n.valueCallback?n.valueCallback(d):d;let f=t.slice(c.length);return{value:d,rest:f}}}function r(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function i(e,t){for(let n=0;n{let r=t.match(e.matchPattern);if(!r)return null;let i=r[0],a=t.match(e.parsePattern);if(!a)return null;let o=e.valueCallback?e.valueCallback(a[0]):a[0];o=n.valueCallback?n.valueCallback(o):o;let s=t.slice(i.length);return{value:o,rest:s}}}export{e as i,n,t as r,a as t}; \ No newline at end of file diff --git a/packages/plugin/src/Resources/js/client/assets/de--wd8n34i.js b/packages/plugin/src/Resources/js/client/assets/de--wd8n34i.js new file mode 100644 index 0000000000..415ea9b4d8 --- /dev/null +++ b/packages/plugin/src/Resources/js/client/assets/de--wd8n34i.js @@ -0,0 +1 @@ +import{Ft as e,It as t,Lt as n,Pt as r}from"./index-Rblf8O1T.js";var i={lessThanXSeconds:{standalone:{one:`weniger als 1 Sekunde`,other:`weniger als {{count}} Sekunden`},withPreposition:{one:`weniger als 1 Sekunde`,other:`weniger als {{count}} Sekunden`}},xSeconds:{standalone:{one:`1 Sekunde`,other:`{{count}} Sekunden`},withPreposition:{one:`1 Sekunde`,other:`{{count}} Sekunden`}},halfAMinute:{standalone:`eine halbe Minute`,withPreposition:`einer halben Minute`},lessThanXMinutes:{standalone:{one:`weniger als 1 Minute`,other:`weniger als {{count}} Minuten`},withPreposition:{one:`weniger als 1 Minute`,other:`weniger als {{count}} Minuten`}},xMinutes:{standalone:{one:`1 Minute`,other:`{{count}} Minuten`},withPreposition:{one:`1 Minute`,other:`{{count}} Minuten`}},aboutXHours:{standalone:{one:`etwa 1 Stunde`,other:`etwa {{count}} Stunden`},withPreposition:{one:`etwa 1 Stunde`,other:`etwa {{count}} Stunden`}},xHours:{standalone:{one:`1 Stunde`,other:`{{count}} Stunden`},withPreposition:{one:`1 Stunde`,other:`{{count}} Stunden`}},xDays:{standalone:{one:`1 Tag`,other:`{{count}} Tage`},withPreposition:{one:`1 Tag`,other:`{{count}} Tagen`}},aboutXWeeks:{standalone:{one:`etwa 1 Woche`,other:`etwa {{count}} Wochen`},withPreposition:{one:`etwa 1 Woche`,other:`etwa {{count}} Wochen`}},xWeeks:{standalone:{one:`1 Woche`,other:`{{count}} Wochen`},withPreposition:{one:`1 Woche`,other:`{{count}} Wochen`}},aboutXMonths:{standalone:{one:`etwa 1 Monat`,other:`etwa {{count}} Monate`},withPreposition:{one:`etwa 1 Monat`,other:`etwa {{count}} Monaten`}},xMonths:{standalone:{one:`1 Monat`,other:`{{count}} Monate`},withPreposition:{one:`1 Monat`,other:`{{count}} Monaten`}},aboutXYears:{standalone:{one:`etwa 1 Jahr`,other:`etwa {{count}} Jahre`},withPreposition:{one:`etwa 1 Jahr`,other:`etwa {{count}} Jahren`}},xYears:{standalone:{one:`1 Jahr`,other:`{{count}} Jahre`},withPreposition:{one:`1 Jahr`,other:`{{count}} Jahren`}},overXYears:{standalone:{one:`mehr als 1 Jahr`,other:`mehr als {{count}} Jahre`},withPreposition:{one:`mehr als 1 Jahr`,other:`mehr als {{count}} Jahren`}},almostXYears:{standalone:{one:`fast 1 Jahr`,other:`fast {{count}} Jahre`},withPreposition:{one:`fast 1 Jahr`,other:`fast {{count}} Jahren`}}},a=(e,t,n)=>{let r,a=n?.addSuffix?i[e].withPreposition:i[e].standalone;return r=typeof a==`string`?a:t===1?a.one:a.other.replace(`{{count}}`,String(t)),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:`vor `+r:r},o={date:n({formats:{full:`EEEE, do MMMM y`,long:`do MMMM y`,medium:`do MMM y`,short:`dd.MM.y`},defaultWidth:`full`}),time:n({formats:{full:`HH:mm:ss zzzz`,long:`HH:mm:ss z`,medium:`HH:mm:ss`,short:`HH:mm`},defaultWidth:`full`}),dateTime:n({formats:{full:`{{date}} 'um' {{time}}`,long:`{{date}} 'um' {{time}}`,medium:`{{date}} {{time}}`,short:`{{date}} {{time}}`},defaultWidth:`full`})},s={lastWeek:`'letzten' eeee 'um' p`,yesterday:`'gestern um' p`,today:`'heute um' p`,tomorrow:`'morgen um' p`,nextWeek:`eeee 'um' p`,other:`P`},c=(e,t,n,r)=>s[e],l={narrow:[`v.Chr.`,`n.Chr.`],abbreviated:[`v.Chr.`,`n.Chr.`],wide:[`vor Christus`,`nach Christus`]},u={narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1. Quartal`,`2. Quartal`,`3. Quartal`,`4. Quartal`]},d={narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mär`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dez`],wide:[`Januar`,`Februar`,`März`,`April`,`Mai`,`Juni`,`Juli`,`August`,`September`,`Oktober`,`November`,`Dezember`]},f={narrow:d.narrow,abbreviated:[`Jan.`,`Feb.`,`März`,`Apr.`,`Mai`,`Juni`,`Juli`,`Aug.`,`Sep.`,`Okt.`,`Nov.`,`Dez.`],wide:d.wide},p={code:`de`,formatDistance:a,formatLong:o,formatRelative:c,localize:{ordinalNumber:e=>Number(e)+`.`,era:t({values:l,defaultWidth:`wide`}),quarter:t({values:u,defaultWidth:`wide`,argumentCallback:e=>e-1}),month:t({values:d,formattingValues:f,defaultWidth:`wide`}),day:t({values:{narrow:[`S`,`M`,`D`,`M`,`D`,`F`,`S`],short:[`So`,`Mo`,`Di`,`Mi`,`Do`,`Fr`,`Sa`],abbreviated:[`So.`,`Mo.`,`Di.`,`Mi.`,`Do.`,`Fr.`,`Sa.`],wide:[`Sonntag`,`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`]},defaultWidth:`wide`}),dayPeriod:t({values:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachm.`,evening:`Abend`,night:`Nacht`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachm.`,evening:`abends`,night:`nachts`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`}},defaultFormattingWidth:`wide`})},match:{ordinalNumber:r({matchPattern:/^(\d+)(\.)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e)}),era:e({matchPatterns:{narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^v/i,/^n/i]},defaultParseWidth:`any`}),quarter:e({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:e({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[aä]/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:e({matchPatterns:{narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:e({matchPatterns:{narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},defaultMatchWidth:`wide`,parsePatterns:{any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},defaultParseWidth:`any`})},options:{weekStartsOn:1,firstWeekContainsDate:4}};export{p as de,p as default}; \ No newline at end of file diff --git a/packages/plugin/src/Resources/js/client/assets/de-Bfssb_sQ.js b/packages/plugin/src/Resources/js/client/assets/de-Bfssb_sQ.js deleted file mode 100644 index 9e599d08e6..0000000000 --- a/packages/plugin/src/Resources/js/client/assets/de-Bfssb_sQ.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,n as t,r as n,t as r}from"./buildMatchPatternFn-CA1-K-2Q.js";var i={lessThanXSeconds:{standalone:{one:`weniger als 1 Sekunde`,other:`weniger als {{count}} Sekunden`},withPreposition:{one:`weniger als 1 Sekunde`,other:`weniger als {{count}} Sekunden`}},xSeconds:{standalone:{one:`1 Sekunde`,other:`{{count}} Sekunden`},withPreposition:{one:`1 Sekunde`,other:`{{count}} Sekunden`}},halfAMinute:{standalone:`eine halbe Minute`,withPreposition:`einer halben Minute`},lessThanXMinutes:{standalone:{one:`weniger als 1 Minute`,other:`weniger als {{count}} Minuten`},withPreposition:{one:`weniger als 1 Minute`,other:`weniger als {{count}} Minuten`}},xMinutes:{standalone:{one:`1 Minute`,other:`{{count}} Minuten`},withPreposition:{one:`1 Minute`,other:`{{count}} Minuten`}},aboutXHours:{standalone:{one:`etwa 1 Stunde`,other:`etwa {{count}} Stunden`},withPreposition:{one:`etwa 1 Stunde`,other:`etwa {{count}} Stunden`}},xHours:{standalone:{one:`1 Stunde`,other:`{{count}} Stunden`},withPreposition:{one:`1 Stunde`,other:`{{count}} Stunden`}},xDays:{standalone:{one:`1 Tag`,other:`{{count}} Tage`},withPreposition:{one:`1 Tag`,other:`{{count}} Tagen`}},aboutXWeeks:{standalone:{one:`etwa 1 Woche`,other:`etwa {{count}} Wochen`},withPreposition:{one:`etwa 1 Woche`,other:`etwa {{count}} Wochen`}},xWeeks:{standalone:{one:`1 Woche`,other:`{{count}} Wochen`},withPreposition:{one:`1 Woche`,other:`{{count}} Wochen`}},aboutXMonths:{standalone:{one:`etwa 1 Monat`,other:`etwa {{count}} Monate`},withPreposition:{one:`etwa 1 Monat`,other:`etwa {{count}} Monaten`}},xMonths:{standalone:{one:`1 Monat`,other:`{{count}} Monate`},withPreposition:{one:`1 Monat`,other:`{{count}} Monaten`}},aboutXYears:{standalone:{one:`etwa 1 Jahr`,other:`etwa {{count}} Jahre`},withPreposition:{one:`etwa 1 Jahr`,other:`etwa {{count}} Jahren`}},xYears:{standalone:{one:`1 Jahr`,other:`{{count}} Jahre`},withPreposition:{one:`1 Jahr`,other:`{{count}} Jahren`}},overXYears:{standalone:{one:`mehr als 1 Jahr`,other:`mehr als {{count}} Jahre`},withPreposition:{one:`mehr als 1 Jahr`,other:`mehr als {{count}} Jahren`}},almostXYears:{standalone:{one:`fast 1 Jahr`,other:`fast {{count}} Jahre`},withPreposition:{one:`fast 1 Jahr`,other:`fast {{count}} Jahren`}}},a=(e,t,n)=>{let r,a=n?.addSuffix?i[e].withPreposition:i[e].standalone;return r=typeof a==`string`?a:t===1?a.one:a.other.replace(`{{count}}`,String(t)),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:`vor `+r:r},o={date:e({formats:{full:`EEEE, do MMMM y`,long:`do MMMM y`,medium:`do MMM y`,short:`dd.MM.y`},defaultWidth:`full`}),time:e({formats:{full:`HH:mm:ss zzzz`,long:`HH:mm:ss z`,medium:`HH:mm:ss`,short:`HH:mm`},defaultWidth:`full`}),dateTime:e({formats:{full:`{{date}} 'um' {{time}}`,long:`{{date}} 'um' {{time}}`,medium:`{{date}} {{time}}`,short:`{{date}} {{time}}`},defaultWidth:`full`})},s={lastWeek:`'letzten' eeee 'um' p`,yesterday:`'gestern um' p`,today:`'heute um' p`,tomorrow:`'morgen um' p`,nextWeek:`eeee 'um' p`,other:`P`},c=(e,t,n,r)=>s[e],l={narrow:[`v.Chr.`,`n.Chr.`],abbreviated:[`v.Chr.`,`n.Chr.`],wide:[`vor Christus`,`nach Christus`]},u={narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1. Quartal`,`2. Quartal`,`3. Quartal`,`4. Quartal`]},d={narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mär`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dez`],wide:[`Januar`,`Februar`,`März`,`April`,`Mai`,`Juni`,`Juli`,`August`,`September`,`Oktober`,`November`,`Dezember`]},f={narrow:d.narrow,abbreviated:[`Jan.`,`Feb.`,`März`,`Apr.`,`Mai`,`Juni`,`Juli`,`Aug.`,`Sep.`,`Okt.`,`Nov.`,`Dez.`],wide:d.wide},p={code:`de`,formatDistance:a,formatLong:o,formatRelative:c,localize:{ordinalNumber:e=>Number(e)+`.`,era:n({values:l,defaultWidth:`wide`}),quarter:n({values:u,defaultWidth:`wide`,argumentCallback:e=>e-1}),month:n({values:d,formattingValues:f,defaultWidth:`wide`}),day:n({values:{narrow:[`S`,`M`,`D`,`M`,`D`,`F`,`S`],short:[`So`,`Mo`,`Di`,`Mi`,`Do`,`Fr`,`Sa`],abbreviated:[`So.`,`Mo.`,`Di.`,`Mi.`,`Do.`,`Fr.`,`Sa.`],wide:[`Sonntag`,`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`]},defaultWidth:`wide`}),dayPeriod:n({values:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachm.`,evening:`Abend`,night:`Nacht`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachm.`,evening:`abends`,night:`nachts`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`}},defaultFormattingWidth:`wide`})},match:{ordinalNumber:r({matchPattern:/^(\d+)(\.)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e)}),era:t({matchPatterns:{narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^v/i,/^n/i]},defaultParseWidth:`any`}),quarter:t({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:t({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[aä]/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:t({matchPatterns:{narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:t({matchPatterns:{narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},defaultMatchWidth:`wide`,parsePatterns:{any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},defaultParseWidth:`any`})},options:{weekStartsOn:1,firstWeekContainsDate:4}};export{p as de,p as default}; \ No newline at end of file diff --git a/packages/plugin/src/Resources/js/client/assets/fr-DR7o_gl_.js b/packages/plugin/src/Resources/js/client/assets/fr-DR7o_gl_.js deleted file mode 100644 index d6c28e2497..0000000000 --- a/packages/plugin/src/Resources/js/client/assets/fr-DR7o_gl_.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,n as t,r as n,t as r}from"./buildMatchPatternFn-CA1-K-2Q.js";var i={lessThanXSeconds:{one:`moins d’une seconde`,other:`moins de {{count}} secondes`},xSeconds:{one:`1 seconde`,other:`{{count}} secondes`},halfAMinute:`30 secondes`,lessThanXMinutes:{one:`moins d’une minute`,other:`moins de {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`environ 1 heure`,other:`environ {{count}} heures`},xHours:{one:`1 heure`,other:`{{count}} heures`},xDays:{one:`1 jour`,other:`{{count}} jours`},aboutXWeeks:{one:`environ 1 semaine`,other:`environ {{count}} semaines`},xWeeks:{one:`1 semaine`,other:`{{count}} semaines`},aboutXMonths:{one:`environ 1 mois`,other:`environ {{count}} mois`},xMonths:{one:`1 mois`,other:`{{count}} mois`},aboutXYears:{one:`environ 1 an`,other:`environ {{count}} ans`},xYears:{one:`1 an`,other:`{{count}} ans`},overXYears:{one:`plus d’un an`,other:`plus de {{count}} ans`},almostXYears:{one:`presqu’un an`,other:`presque {{count}} ans`}},a=(e,t,n)=>{let r,a=i[e];return r=typeof a==`string`?a:t===1?a.one:a.other.replace(`{{count}}`,String(t)),n?.addSuffix?n.comparison&&n.comparison>0?`dans `+r:`il y a `+r:r},o={date:e({formats:{full:`EEEE d MMMM y`,long:`d MMMM y`,medium:`d MMM y`,short:`dd/MM/y`},defaultWidth:`full`}),time:e({formats:{full:`HH:mm:ss zzzz`,long:`HH:mm:ss z`,medium:`HH:mm:ss`,short:`HH:mm`},defaultWidth:`full`}),dateTime:e({formats:{full:`{{date}} 'à' {{time}}`,long:`{{date}} 'à' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},s={lastWeek:`eeee 'dernier à' p`,yesterday:`'hier à' p`,today:`'aujourd’hui à' p`,tomorrow:`'demain à' p'`,nextWeek:`eeee 'prochain à' p`,other:`P`},c=(e,t,n,r)=>s[e],l={narrow:[`av. J.-C`,`ap. J.-C`],abbreviated:[`av. J.-C`,`ap. J.-C`],wide:[`avant Jésus-Christ`,`après Jésus-Christ`]},u={narrow:[`T1`,`T2`,`T3`,`T4`],abbreviated:[`1er trim.`,`2ème trim.`,`3ème trim.`,`4ème trim.`],wide:[`1er trimestre`,`2ème trimestre`,`3ème trimestre`,`4ème trimestre`]},d={narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`janv.`,`févr.`,`mars`,`avr.`,`mai`,`juin`,`juil.`,`août`,`sept.`,`oct.`,`nov.`,`déc.`],wide:[`janvier`,`février`,`mars`,`avril`,`mai`,`juin`,`juillet`,`août`,`septembre`,`octobre`,`novembre`,`décembre`]},f={narrow:[`D`,`L`,`M`,`M`,`J`,`V`,`S`],short:[`di`,`lu`,`ma`,`me`,`je`,`ve`,`sa`],abbreviated:[`dim.`,`lun.`,`mar.`,`mer.`,`jeu.`,`ven.`,`sam.`],wide:[`dimanche`,`lundi`,`mardi`,`mercredi`,`jeudi`,`vendredi`,`samedi`]},p={narrow:{am:`AM`,pm:`PM`,midnight:`minuit`,noon:`midi`,morning:`mat.`,afternoon:`ap.m.`,evening:`soir`,night:`mat.`},abbreviated:{am:`AM`,pm:`PM`,midnight:`minuit`,noon:`midi`,morning:`matin`,afternoon:`après-midi`,evening:`soir`,night:`matin`},wide:{am:`AM`,pm:`PM`,midnight:`minuit`,noon:`midi`,morning:`du matin`,afternoon:`de l’après-midi`,evening:`du soir`,night:`du matin`}},m=(e,t)=>{let n=Number(e),r=t?.unit;if(n===0)return`0`;let i=[`year`,`week`,`hour`,`minute`,`second`],a;return a=n===1?r&&i.includes(r)?`ère`:`er`:`ème`,n+a},h=[`MMM`,`MMMM`],g={code:`fr`,formatDistance:a,formatLong:o,formatRelative:c,localize:{preprocessor:(e,t)=>e.getDate()===1||!t.some(e=>e.isToken&&h.includes(e.value))?t:t.map(e=>e.isToken&&e.value===`do`?{isToken:!0,value:`d`}:e),ordinalNumber:m,era:n({values:l,defaultWidth:`wide`}),quarter:n({values:u,defaultWidth:`wide`,argumentCallback:e=>e-1}),month:n({values:d,defaultWidth:`wide`}),day:n({values:f,defaultWidth:`wide`}),dayPeriod:n({values:p,defaultWidth:`wide`})},match:{ordinalNumber:r({matchPattern:/^(\d+)(ième|ère|ème|er|e)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e)}),era:t({matchPatterns:{narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant Jésus-Christ|après Jésus-Christ)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^av/i,/^ap/i]},defaultParseWidth:`any`}),quarter:t({matchPatterns:{narrow:/^T?[1234]/i,abbreviated:/^[1234](er|ème|e)? trim\.?/i,wide:/^[1234](er|ème|e)? trimestre/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:t({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,wide:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:t({matchPatterns:{narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:t({matchPatterns:{narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},defaultParseWidth:`any`})},options:{weekStartsOn:1,firstWeekContainsDate:4}};export{g as default,g as fr}; \ No newline at end of file diff --git a/packages/plugin/src/Resources/js/client/assets/fr-b7ZEYU0B.js b/packages/plugin/src/Resources/js/client/assets/fr-b7ZEYU0B.js new file mode 100644 index 0000000000..6d8a6809f7 --- /dev/null +++ b/packages/plugin/src/Resources/js/client/assets/fr-b7ZEYU0B.js @@ -0,0 +1 @@ +import{Ft as e,It as t,Lt as n,Pt as r}from"./index-Rblf8O1T.js";var i={lessThanXSeconds:{one:`moins d’une seconde`,other:`moins de {{count}} secondes`},xSeconds:{one:`1 seconde`,other:`{{count}} secondes`},halfAMinute:`30 secondes`,lessThanXMinutes:{one:`moins d’une minute`,other:`moins de {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`environ 1 heure`,other:`environ {{count}} heures`},xHours:{one:`1 heure`,other:`{{count}} heures`},xDays:{one:`1 jour`,other:`{{count}} jours`},aboutXWeeks:{one:`environ 1 semaine`,other:`environ {{count}} semaines`},xWeeks:{one:`1 semaine`,other:`{{count}} semaines`},aboutXMonths:{one:`environ 1 mois`,other:`environ {{count}} mois`},xMonths:{one:`1 mois`,other:`{{count}} mois`},aboutXYears:{one:`environ 1 an`,other:`environ {{count}} ans`},xYears:{one:`1 an`,other:`{{count}} ans`},overXYears:{one:`plus d’un an`,other:`plus de {{count}} ans`},almostXYears:{one:`presqu’un an`,other:`presque {{count}} ans`}},a=(e,t,n)=>{let r,a=i[e];return r=typeof a==`string`?a:t===1?a.one:a.other.replace(`{{count}}`,String(t)),n?.addSuffix?n.comparison&&n.comparison>0?`dans `+r:`il y a `+r:r},o={date:n({formats:{full:`EEEE d MMMM y`,long:`d MMMM y`,medium:`d MMM y`,short:`dd/MM/y`},defaultWidth:`full`}),time:n({formats:{full:`HH:mm:ss zzzz`,long:`HH:mm:ss z`,medium:`HH:mm:ss`,short:`HH:mm`},defaultWidth:`full`}),dateTime:n({formats:{full:`{{date}} 'à' {{time}}`,long:`{{date}} 'à' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},s={lastWeek:`eeee 'dernier à' p`,yesterday:`'hier à' p`,today:`'aujourd’hui à' p`,tomorrow:`'demain à' p'`,nextWeek:`eeee 'prochain à' p`,other:`P`},c=(e,t,n,r)=>s[e],l={narrow:[`av. J.-C`,`ap. J.-C`],abbreviated:[`av. J.-C`,`ap. J.-C`],wide:[`avant Jésus-Christ`,`après Jésus-Christ`]},u={narrow:[`T1`,`T2`,`T3`,`T4`],abbreviated:[`1er trim.`,`2ème trim.`,`3ème trim.`,`4ème trim.`],wide:[`1er trimestre`,`2ème trimestre`,`3ème trimestre`,`4ème trimestre`]},d={narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`janv.`,`févr.`,`mars`,`avr.`,`mai`,`juin`,`juil.`,`août`,`sept.`,`oct.`,`nov.`,`déc.`],wide:[`janvier`,`février`,`mars`,`avril`,`mai`,`juin`,`juillet`,`août`,`septembre`,`octobre`,`novembre`,`décembre`]},f={narrow:[`D`,`L`,`M`,`M`,`J`,`V`,`S`],short:[`di`,`lu`,`ma`,`me`,`je`,`ve`,`sa`],abbreviated:[`dim.`,`lun.`,`mar.`,`mer.`,`jeu.`,`ven.`,`sam.`],wide:[`dimanche`,`lundi`,`mardi`,`mercredi`,`jeudi`,`vendredi`,`samedi`]},p={narrow:{am:`AM`,pm:`PM`,midnight:`minuit`,noon:`midi`,morning:`mat.`,afternoon:`ap.m.`,evening:`soir`,night:`mat.`},abbreviated:{am:`AM`,pm:`PM`,midnight:`minuit`,noon:`midi`,morning:`matin`,afternoon:`après-midi`,evening:`soir`,night:`matin`},wide:{am:`AM`,pm:`PM`,midnight:`minuit`,noon:`midi`,morning:`du matin`,afternoon:`de l’après-midi`,evening:`du soir`,night:`du matin`}},m=(e,t)=>{let n=Number(e),r=t?.unit;if(n===0)return`0`;let i=[`year`,`week`,`hour`,`minute`,`second`],a;return a=n===1?r&&i.includes(r)?`ère`:`er`:`ème`,n+a},h=[`MMM`,`MMMM`],g={code:`fr`,formatDistance:a,formatLong:o,formatRelative:c,localize:{preprocessor:(e,t)=>e.getDate()===1||!t.some(e=>e.isToken&&h.includes(e.value))?t:t.map(e=>e.isToken&&e.value===`do`?{isToken:!0,value:`d`}:e),ordinalNumber:m,era:t({values:l,defaultWidth:`wide`}),quarter:t({values:u,defaultWidth:`wide`,argumentCallback:e=>e-1}),month:t({values:d,defaultWidth:`wide`}),day:t({values:f,defaultWidth:`wide`}),dayPeriod:t({values:p,defaultWidth:`wide`})},match:{ordinalNumber:r({matchPattern:/^(\d+)(ième|ère|ème|er|e)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e)}),era:e({matchPatterns:{narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant Jésus-Christ|après Jésus-Christ)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^av/i,/^ap/i]},defaultParseWidth:`any`}),quarter:e({matchPatterns:{narrow:/^T?[1234]/i,abbreviated:/^[1234](er|ème|e)? trim\.?/i,wide:/^[1234](er|ème|e)? trimestre/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:e({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,wide:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:e({matchPatterns:{narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:e({matchPatterns:{narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},defaultParseWidth:`any`})},options:{weekStartsOn:1,firstWeekContainsDate:4}};export{g as default,g as fr}; \ No newline at end of file diff --git a/packages/plugin/src/Resources/js/client/assets/index-C4rHuvk6.css b/packages/plugin/src/Resources/js/client/assets/index-LYeogghk.css similarity index 60% rename from packages/plugin/src/Resources/js/client/assets/index-C4rHuvk6.css rename to packages/plugin/src/Resources/js/client/assets/index-LYeogghk.css index e530b8ab79..bea6aa73b7 100644 --- a/packages/plugin/src/Resources/js/client/assets/index-C4rHuvk6.css +++ b/packages/plugin/src/Resources/js/client/assets/index-LYeogghk.css @@ -1 +1 @@ -@keyframes react-loading-skeleton{to{transform:translate(100%)}}.react-loading-skeleton{--base-color:#ebebeb;--highlight-color:#f5f5f5;--animation-duration:1.5s;--animation-direction:normal;--pseudo-element-display:block;background-color:var(--base-color);-webkit-user-select:none;user-select:none;border-radius:.25rem;width:100%;line-height:1;display:inline-flex;position:relative;overflow:hidden}.react-loading-skeleton:after{content:" ";display:var(--pseudo-element-display);background-repeat:no-repeat;background-image:var(--custom-highlight-background,linear-gradient(90deg, var(--base-color) 0%, var(--highlight-color) 50%, var(--base-color) 100%));height:100%;animation-name:react-loading-skeleton;animation-direction:var(--animation-direction);animation-duration:var(--animation-duration);animation-timing-function:ease-in-out;animation-iteration-count:infinite;position:absolute;top:0;left:0;right:0;transform:translate(-100%)}@media (prefers-reduced-motion){.react-loading-skeleton{--pseudo-element-display:none}}.react-datepicker__navigation-icon:before,.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow{content:"";border:3px solid #ccc;border-width:3px 3px 0 0;width:9px;height:9px;display:block;position:absolute;top:6px}.react-datepicker__sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.react-datepicker-wrapper{border:0;padding:0;display:inline-block}.react-datepicker{color:#000;font-family:Helvetica Neue,helvetica,arial,sans-serif;font-size:.8rem;line-height:initial;background-color:#fff;border:1px solid #aeaeae;border-radius:.3rem;display:inline-block;position:relative}.react-datepicker--time-only .react-datepicker__time-container{border-left:0}.react-datepicker--time-only .react-datepicker__time,.react-datepicker--time-only .react-datepicker__time-box{border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.react-datepicker-popper{z-index:1;line-height:0}.react-datepicker-popper .react-datepicker__triangle{stroke:#aeaeae}.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle{fill:#f0f0f0;color:#f0f0f0}.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle{fill:#fff;color:#fff}.react-datepicker__header{text-align:center;background-color:#f0f0f0;border-bottom:1px solid #aeaeae;border-top-left-radius:.3rem;padding:8px 0;position:relative}.react-datepicker__header--time{padding-bottom:8px;padding-left:5px;padding-right:5px}.react-datepicker__header--time:not(.react-datepicker__header--time--only){border-top-left-radius:0}.react-datepicker__header:not(.react-datepicker__header--has-time-select){border-top-right-radius:.3rem}.react-datepicker__year-dropdown-container--select,.react-datepicker__month-dropdown-container--select,.react-datepicker__month-year-dropdown-container--select,.react-datepicker__year-dropdown-container--scroll,.react-datepicker__month-dropdown-container--scroll,.react-datepicker__month-year-dropdown-container--scroll{margin:0 15px;display:inline-block}.react-datepicker__current-month,.react-datepicker-time__header,.react-datepicker-year-header{color:#000;margin-top:0;font-size:.944rem;font-weight:700}h2.react-datepicker__current-month{margin:0;padding:0}.react-datepicker-time__header{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.react-datepicker__navigation{text-align:center;cursor:pointer;z-index:1;text-indent:-999em;background:0 0;border:none;justify-content:center;align-items:center;width:32px;height:32px;padding:0;display:flex;position:absolute;top:2px;overflow:hidden}.react-datepicker__navigation--previous{left:2px}.react-datepicker__navigation--next{right:2px}.react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button){right:85px}.react-datepicker__navigation--years{margin-left:auto;margin-right:auto;display:block;position:relative;top:0}.react-datepicker__navigation--years-previous{top:4px}.react-datepicker__navigation--years-upcoming{top:-4px}.react-datepicker__navigation:hover :before{border-color:#a6a6a6}.react-datepicker__navigation-icon{width:0;font-size:20px;position:relative;top:-1px}.react-datepicker__navigation-icon--next{left:-2px}.react-datepicker__navigation-icon--next:before{left:-7px;transform:rotate(45deg)}.react-datepicker__navigation-icon--previous{right:-2px}.react-datepicker__navigation-icon--previous:before{right:-7px;transform:rotate(225deg)}.react-datepicker__month-container{float:left}.react-datepicker__year{text-align:center;margin:.4rem}.react-datepicker__year-wrapper{flex-wrap:wrap;max-width:180px;display:flex}.react-datepicker__year .react-datepicker__year-text{width:4rem;margin:2px;display:inline-block}.react-datepicker__month{text-align:center;margin:.4rem}.react-datepicker__month .react-datepicker__month-text,.react-datepicker__month .react-datepicker__quarter-text{width:4rem;margin:2px;display:inline-block}.react-datepicker__input-time-container{clear:both;float:left;text-align:left;width:100%;margin:5px 0 10px 15px}.react-datepicker__input-time-container .react-datepicker-time__caption,.react-datepicker__input-time-container .react-datepicker-time__input-container{display:inline-block}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input{margin-left:10px;display:inline-block}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input{width:auto}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]{-moz-appearance:textfield}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__delimiter{margin-left:5px;display:inline-block}.react-datepicker__time-container{float:right;border-left:1px solid #aeaeae;width:85px}.react-datepicker__time-container--with-today-button{border:1px solid #aeaeae;border-radius:.3rem;display:inline;position:absolute;top:0;right:-87px}.react-datepicker__time-container .react-datepicker__time{background:#fff;border-bottom-right-radius:.3rem;position:relative}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box{text-align:center;border-bottom-right-radius:.3rem;width:85px;margin:0 auto;overflow-x:hidden}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list{box-sizing:content-box;width:100%;height:calc(195px + .85rem);margin:0;padding-left:0;padding-right:0;list-style:none;overflow-y:scroll}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item{white-space:nowrap;height:30px;padding:5px 10px}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover{cursor:pointer;background-color:#f0f0f0}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected{color:#fff;background-color:#216ba5;font-weight:700}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover{background-color:#216ba5}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled{color:#ccc}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover{cursor:default;background-color:#0000}.react-datepicker__week-number{color:#ccc;text-align:center;width:1.7rem;margin:.166rem;line-height:1.7rem;display:inline-block}.react-datepicker__week-number.react-datepicker__week-number--clickable{cursor:pointer}.react-datepicker__week-number.react-datepicker__week-number--clickable:not(.react-datepicker__week-number--selected):hover{background-color:#f0f0f0;border-radius:.3rem}.react-datepicker__week-number--selected{color:#fff;background-color:#216ba5;border-radius:.3rem}.react-datepicker__week-number--selected:hover{background-color:#1d5d90}.react-datepicker__day-names{text-align:center;white-space:nowrap;margin-bottom:-8px}.react-datepicker__week{white-space:nowrap}.react-datepicker__day-name,.react-datepicker__day,.react-datepicker__time-name{color:#000;text-align:center;width:1.7rem;margin:.166rem;line-height:1.7rem;display:inline-block}.react-datepicker__day-name--disabled,.react-datepicker__day--disabled,.react-datepicker__time-name--disabled{cursor:default;color:#ccc}.react-datepicker__day,.react-datepicker__month-text,.react-datepicker__quarter-text,.react-datepicker__year-text{cursor:pointer}.react-datepicker__day:not([aria-disabled=true]):hover,.react-datepicker__month-text:not([aria-disabled=true]):hover,.react-datepicker__quarter-text:not([aria-disabled=true]):hover,.react-datepicker__year-text:not([aria-disabled=true]):hover{background-color:#f0f0f0;border-radius:.3rem}.react-datepicker__day--today,.react-datepicker__month-text--today,.react-datepicker__quarter-text--today,.react-datepicker__year-text--today{font-weight:700}.react-datepicker__day--highlighted,.react-datepicker__month-text--highlighted,.react-datepicker__quarter-text--highlighted,.react-datepicker__year-text--highlighted{color:#fff;background-color:#3dcc4a;border-radius:.3rem}.react-datepicker__day--highlighted:not([aria-disabled=true]):hover,.react-datepicker__month-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__year-text--highlighted:not([aria-disabled=true]):hover{background-color:#32be3f}.react-datepicker__day--highlighted-custom-1,.react-datepicker__month-text--highlighted-custom-1,.react-datepicker__quarter-text--highlighted-custom-1,.react-datepicker__year-text--highlighted-custom-1{color:#f0f}.react-datepicker__day--highlighted-custom-2,.react-datepicker__month-text--highlighted-custom-2,.react-datepicker__quarter-text--highlighted-custom-2,.react-datepicker__year-text--highlighted-custom-2{color:green}.react-datepicker__day--holidays,.react-datepicker__month-text--holidays,.react-datepicker__quarter-text--holidays,.react-datepicker__year-text--holidays{color:#fff;background-color:#ff6803;border-radius:.3rem;position:relative}.react-datepicker__day--holidays .overlay,.react-datepicker__month-text--holidays .overlay,.react-datepicker__quarter-text--holidays .overlay,.react-datepicker__year-text--holidays .overlay{color:#fff;white-space:nowrap;visibility:hidden;opacity:0;background-color:#333;border-radius:4px;padding:4px;transition:visibility,opacity .3s ease-in-out;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.react-datepicker__day--holidays:not([aria-disabled=true]):hover,.react-datepicker__month-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__year-text--holidays:not([aria-disabled=true]):hover{background-color:#cf5300}.react-datepicker__day--holidays:hover .overlay,.react-datepicker__month-text--holidays:hover .overlay,.react-datepicker__quarter-text--holidays:hover .overlay,.react-datepicker__year-text--holidays:hover .overlay{visibility:visible;opacity:1}.react-datepicker__day--selected,.react-datepicker__day--in-selecting-range,.react-datepicker__day--in-range,.react-datepicker__month-text--selected,.react-datepicker__month-text--in-selecting-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--selected,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--selected,.react-datepicker__year-text--in-selecting-range,.react-datepicker__year-text--in-range{color:#fff;background-color:#216ba5;border-radius:.3rem}.react-datepicker__day--selected:not([aria-disabled=true]):hover,.react-datepicker__day--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__day--in-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-range:not([aria-disabled=true]):hover{background-color:#1d5d90}.react-datepicker__day--keyboard-selected,.react-datepicker__month-text--keyboard-selected,.react-datepicker__quarter-text--keyboard-selected,.react-datepicker__year-text--keyboard-selected{color:#000;background-color:#bad9f1;border-radius:.3rem}.react-datepicker__day--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--keyboard-selected:not([aria-disabled=true]):hover{color:#fff;background-color:#1d5d90}.react-datepicker__day--in-selecting-range:not(:-webkit-any(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)),.react-datepicker__month-text--in-selecting-range:not(:-webkit-any(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)),.react-datepicker__quarter-text--in-selecting-range:not(:-webkit-any(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)),.react-datepicker__year-text--in-selecting-range:not(:-webkit-any(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)){background-color:#216ba580}.react-datepicker__day--in-selecting-range:not(:is(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)),.react-datepicker__month-text--in-selecting-range:not(:is(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)),.react-datepicker__quarter-text--in-selecting-range:not(:is(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)),.react-datepicker__year-text--in-selecting-range:not(:is(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)){background-color:#216ba580}.react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)){color:#000;background-color:#f0f0f0}.react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)){color:#000;background-color:#f0f0f0}.react-datepicker__day--disabled,.react-datepicker__month-text--disabled,.react-datepicker__quarter-text--disabled,.react-datepicker__year-text--disabled{cursor:default;color:#ccc}.react-datepicker__day--disabled .overlay,.react-datepicker__month-text--disabled .overlay,.react-datepicker__quarter-text--disabled .overlay,.react-datepicker__year-text--disabled .overlay{color:#fff;white-space:nowrap;visibility:hidden;opacity:0;background-color:#333;border-radius:4px;padding:4px;transition:visibility,opacity .3s ease-in-out;position:absolute;bottom:70%;left:50%;transform:translate(-50%)}.react-datepicker__input-container{width:100%;display:inline-block;position:relative}.react-datepicker__input-container .react-datepicker__calendar-icon{box-sizing:content-box;padding:.5rem;position:absolute}.react-datepicker__view-calendar-icon input{padding:6px 10px 5px 25px}.react-datepicker__year-read-view,.react-datepicker__month-read-view,.react-datepicker__month-year-read-view{border:1px solid #0000;border-radius:.3rem;position:relative}.react-datepicker__year-read-view:hover,.react-datepicker__month-read-view:hover,.react-datepicker__month-year-read-view:hover{cursor:pointer}.react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow{border-top-color:#b3b3b3}.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow{top:0;right:-16px;transform:rotate(135deg)}.react-datepicker__year-dropdown,.react-datepicker__month-dropdown,.react-datepicker__month-year-dropdown{z-index:1;text-align:center;background-color:#f0f0f0;border:1px solid #aeaeae;border-radius:.3rem;width:50%;position:absolute;top:30px;left:25%}.react-datepicker__year-dropdown:hover,.react-datepicker__month-dropdown:hover,.react-datepicker__month-year-dropdown:hover{cursor:pointer}.react-datepicker__year-dropdown--scrollable,.react-datepicker__month-dropdown--scrollable,.react-datepicker__month-year-dropdown--scrollable{height:150px;overflow-y:scroll}.react-datepicker__year-option,.react-datepicker__month-option,.react-datepicker__month-year-option{width:100%;margin-left:auto;margin-right:auto;line-height:20px;display:block}.react-datepicker__year-option:first-of-type,.react-datepicker__month-option:first-of-type,.react-datepicker__month-year-option:first-of-type{border-top-left-radius:.3rem;border-top-right-radius:.3rem}.react-datepicker__year-option:last-of-type,.react-datepicker__month-option:last-of-type,.react-datepicker__month-year-option:last-of-type{-webkit-user-select:none;user-select:none;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.react-datepicker__year-option:hover,.react-datepicker__month-option:hover,.react-datepicker__month-year-option:hover{background-color:#ccc}.react-datepicker__year-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-upcoming{border-bottom-color:#b3b3b3}.react-datepicker__year-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-previous{border-top-color:#b3b3b3}.react-datepicker__year-option--selected,.react-datepicker__month-option--selected,.react-datepicker__month-year-option--selected{position:absolute;left:15px}.react-datepicker__close-icon{cursor:pointer;vertical-align:middle;background-color:#0000;border:0;outline:0;height:100%;padding:0 6px 0 0;display:table-cell;position:absolute;top:0;right:0}.react-datepicker__close-icon:after{cursor:pointer;color:#fff;text-align:center;vertical-align:middle;content:"×";background-color:#216ba5;border-radius:50%;width:16px;height:16px;padding:2px;font-size:12px;line-height:1;display:table-cell}.react-datepicker__close-icon--disabled{cursor:default}.react-datepicker__close-icon--disabled:after{cursor:default;background-color:#ccc}.react-datepicker__today-button{cursor:pointer;text-align:center;clear:left;background:#f0f0f0;border-top:1px solid #aeaeae;padding:5px 0;font-weight:700}.react-datepicker__portal{z-index:2147483647;background-color:#000c;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex;position:fixed;top:0;left:0}.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__time-name{width:3rem;line-height:3rem}@media (max-width:400px),(max-height:550px){.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__time-name{width:2rem;line-height:2rem}}.react-datepicker__portal .react-datepicker__current-month,.react-datepicker__portal .react-datepicker-time__header{font-size:1.44rem}.react-datepicker__children-container{width:13.8rem;height:auto;margin:.4rem;padding-left:.2rem;padding-right:.2rem}.react-datepicker__aria-live{clip-path:circle(0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.react-datepicker__calendar-icon{vertical-align:-.125em;width:1em;height:1em}:root{--tagify-dd-color-primary:#3595f6;--tagify-dd-text-color:black;--tagify-dd-bg-color:white;--tagify-dd-item-pad:.3em .5em;--tagify-dd-max-height:300px}.tagify{--tags-disabled-bg:#f1f1f1;--tags-border-color:#ddd;--tags-hover-border-color:#ccc;--tags-focus-border-color:#3595f6;--tag-border-radius:3px;--tag-bg:#e5e5e5;--tag-hover:#d3e2e2;--tag-text-color:black;--tag-text-color--edit:black;--tag-pad:.3em .5em;--tag-inset-shadow-size:1.2em;--tag-invalid-color:#d39494;--tag-invalid-bg:#d3949480;--tag--min-width:1ch;--tag--max-width:100%;--tag-hide-transition:.3s;--tag-remove-bg:#d394944d;--tag-remove-btn-color:black;--tag-remove-btn-bg:none;--tag-remove-btn-bg--hover:#c77777;--input-color:inherit;--placeholder-color:#0006;--placeholder-color-focus:#00000040;--loader-size:.8em;--readonly-striped:1;border:1px solid var(--tags-border-color);box-sizing:border-box;outline:0;flex-wrap:wrap;align-content:baseline;align-items:flex-start;padding:0;line-height:0;transition:all .1s;display:inline-flex;position:relative}@keyframes tags--bump{30%{transform:scale(1.2)}}@keyframes rotateLoader{to{transform:rotate(1turn)}}.tagify:has([contenteditable=true]){cursor:text}.tagify:hover:not(.tagify--focus):not(.tagify--invalid){--tags-border-color:var(--tags-hover-border-color)}.tagify[disabled]{background:var(--tags-disabled-bg);filter:saturate(0);opacity:.5;pointer-events:none}.tagify[disabled].tagify--empty>.tagify__input:before{position:relative}.tagify[disabled].tagify--select,.tagify[readonly].tagify--select{pointer-events:none}.tagify[disabled]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty),.tagify[readonly]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty){cursor:default}.tagify[disabled]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty)>.tagify__input,.tagify[readonly]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty)>.tagify__input{visibility:hidden;width:0;margin:5px 0}.tagify[disabled]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty) .tagify__tag>div,.tagify[readonly]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty) .tagify__tag>div{padding:var(--tag-pad)}.tagify[disabled]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty) .tagify__tag>div:before,.tagify[readonly]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty) .tagify__tag>div:before{animation:readonlyStyles 1s calc(-1s * (var(--readonly-striped) - 1)) paused}@keyframes readonlyStyles{0%{background:linear-gradient(45deg,var(--tag-bg) 25%,transparent 25%,transparent 50%,var(--tag-bg) 50%,var(--tag-bg) 75%,transparent 75%,transparent) 0/5px 5px;box-shadow:none;filter:brightness(.95)}}.tagify[disabled] .tagify__tag__removeBtn,.tagify[readonly] .tagify__tag__removeBtn,.tagify--loading .tagify__input>br:last-child{display:none}.tagify--loading .tagify__input:before{content:none}.tagify--loading .tagify__input:after{content:"";vertical-align:middle;opacity:1;width:.7em;height:.7em;width:var(--loader-size);height:var(--loader-size);border:3px solid #eee;border-color:#eee #bbb #888 #0000;border-radius:50%;min-width:0;margin:-2px 0 -2px .5em;animation:.4s linear infinite rotateLoader;content:""!important}.tagify--loading .tagify__input:empty:after{margin-left:0}.tagify+input,.tagify+textarea{position:absolute!important;left:-9999em!important;transform:scale(0)!important}.tagify__tag{max-width:var(--tag--max-width);z-index:1;cursor:default;outline:0;align-items:center;margin-block-start:5px;margin-block-end:5px;margin-inline-start:5px;margin-inline-end:0;line-height:normal;transition:all .13s ease-out;display:inline-flex;position:relative}.tagify__tag:last-child{margin-right:5px}.tagify__tag>div{vertical-align:top;box-sizing:border-box;max-width:100%;padding:var(--tag-pad);color:var(--tag-text-color);line-height:inherit;border-radius:var(--tag-border-radius);white-space:nowrap;flex:1;transition:all .13s ease-out;display:flex}.tagify__tag>div>*{white-space:pre-wrap;text-overflow:ellipsis;vertical-align:top;min-width:var(--tag--min-width);max-width:var(--tag--max-width);transition:all .8s,color .1s;display:inline-block;overflow:hidden}.tagify__tag>div>[contenteditable]{-webkit-user-select:text;user-select:text;cursor:text;outline:0;max-width:350px;margin:-2px;padding:2px;display:block}.tagify__tag>div>:only-child{width:100%}.tagify__tag>div:before{content:"";border-radius:inherit;inset:var(--tag-bg-inset,0);z-index:-1;pointer-events:none;box-shadow:0 0 0 var(--tag-inset-shadow-size) var(--tag-bg) inset;transition:all .12s;animation:.3s ease-out tags--bump;position:absolute}.tagify__tag:focus div:before,.tagify__tag:hover:not([readonly]) div:before{--tag-bg-inset:-2.5px;--tag-bg:var(--tag-hover)}.tagify__tag--loading{pointer-events:none}.tagify__tag--loading .tagify__tag__removeBtn{display:none}.tagify__tag--loading:after{--loader-size:.4em;content:"";vertical-align:middle;opacity:1;width:.7em;height:.7em;width:var(--loader-size);height:var(--loader-size);border:3px solid #eee;border-color:#eee #bbb #888 #0000;border-radius:50%;min-width:0;margin:0 .5em 0 -.1em;animation:.4s linear infinite rotateLoader}.tagify__tag--flash div:before{animation:none}.tagify__tag--hide{opacity:0;transition:var(--tag-hide-transition);pointer-events:none;margin-left:0;margin-right:0;padding-left:0;padding-right:0;transform:scale(0);width:0!important}.tagify__tag--hide>div>*{white-space:nowrap}.tagify__tag.tagify--noAnim>div:before{animation:none}.tagify__tag.tagify--notAllowed:not(.tagify__tag--editable) div>span{opacity:.5}.tagify__tag.tagify--notAllowed:not(.tagify__tag--editable) div:before{--tag-bg:var(--tag-invalid-bg);transition:all .2s}.tagify__tag[readonly] .tagify__tag__removeBtn{display:none}.tagify__tag[readonly]>div:before{animation:readonlyStyles 1s calc(-1s * (var(--readonly-striped) - 1)) paused}.tagify__tag--editable>div{color:var(--tag-text-color--edit)}.tagify__tag--editable>div:before{box-shadow:0 0 0 2px var(--tag-hover) inset!important}.tagify__tag--editable>.tagify__tag__removeBtn{pointer-events:none;opacity:0;transform:translate(100%)translate(5px)}.tagify__tag--editable.tagify--invalid>div:before{box-shadow:0 0 0 2px var(--tag-invalid-color) inset!important}.tagify__tag__removeBtn{cursor:pointer;background:var(--tag-remove-btn-bg);color:var(--tag-remove-btn-color);border-radius:50px;order:5;justify-content:center;align-items:center;width:14px;height:14px;margin-inline-start:auto;margin-inline-end:4.66667px;font:14px/1 Arial;transition:all .2s ease-out;display:inline-flex;overflow:hidden}.tagify__tag__removeBtn:after{content:"×";transition:all .3s,color}.tagify__tag__removeBtn:hover{color:#fff;background:var(--tag-remove-btn-bg--hover)}.tagify__tag__removeBtn:hover+div>span{opacity:.5}.tagify__tag__removeBtn:hover+div:before{transition:box-shadow .2s;box-shadow:0 0 0 var(--tag-inset-shadow-size) var(--tag-remove-bg,#d394944d) inset!important}.tagify:not(.tagify--mix) .tagify__input br{display:none}.tagify:not(.tagify--mix) .tagify__input *{white-space:nowrap;display:inline}.tagify__input{padding:var(--tag-pad);white-space:pre-wrap;min-width:-moz-fit-content;min-width:fit-content;min-height:1.5lh;color:var(--input-color);box-sizing:inherit;flex-grow:1;margin:5px;line-height:normal;display:inline-block;position:relative;overflow:hidden}.tagify__input:focus{outline:0}.tagify__input:last-child{min-width:110px}.tagify__input:last-child:focus:before{opacity:0;transition:all .2s ease-out;transform:translate(6px)}@supports (-ms-ime-align:auto){.tagify__input:last-child:focus:before{display:none}}.tagify__input:last-child:focus:empty:before{opacity:1;color:var(--placeholder-color-focus);transition:all .2s ease-out;transform:none}@-moz-document url-prefix(){.tagify__input:last-child:focus:empty:after{display:none}}.tagify__input:before{content:attr(data-placeholder);z-index:1;width:100%;height:100%;color:var(--placeholder-color);white-space:nowrap;text-overflow:ellipsis;pointer-events:none;opacity:0;margin:auto 0;position:absolute;overflow:hidden}.tagify__input:after{content:attr(data-suggest);vertical-align:middle;text-overflow:ellipsis;white-space:pre;min-width:calc(100% - 1.5em);color:var(--tag-text-color);opacity:.3;pointer-events:none;max-width:100px;display:inline-block;position:absolute;overflow:hidden}.tagify__input .tagify__tag{margin:0 1px}.tagify--mix{display:block}.tagify--mix .tagify__input{width:100%;height:100%;margin:0;padding:5px;line-height:1.5;display:block}.tagify--mix .tagify__input:before{height:auto;line-height:inherit;display:none}.tagify--mix .tagify__input:after{content:none}.tagify--select{cursor:default}.tagify--select:after{content:">";opacity:.5;pointer-events:none;height:8px;font:16px/8px monospace;transition:all .2s ease-in-out;position:absolute;top:50%;bottom:0;right:0;transform:translate(-150%,-50%)scaleX(1.2)rotate(90deg)}.tagify--select[aria-expanded=true]:after{transform:translate(-150%,-50%)rotate(270deg)scaleY(1.2)}.tagify--select[aria-expanded=true] .tagify__tag__removeBtn{pointer-events:none;opacity:0;transform:translate(100%)translate(5px)}.tagify--select .tagify__tag{cursor:text;flex:1;max-width:none;margin-block-start:0;margin-block-end:0;margin-inline-end:2em;padding-block-start:5px;padding-block-end:5px}.tagify--select .tagify__tag div:before,.tagify--select .tagify__tag+.tagify__input{display:none}.tagify--empty .tagify__input:before{opacity:1;width:auto;transition:all .2s ease-out;display:inline-block;transform:none}.tagify--mix .tagify--empty .tagify__input:before{display:inline-block}.tagify--focus{--tags-border-color:var(--tags-focus-border-color);transition:all}.tagify--invalid{--tags-border-color:#d39494}.tagify__dropdown{z-index:9999;border-top:1px solid var(--tagify-dd-color-primary);position:absolute;overflow:hidden;transform:translateY(-1px)}.tagify__dropdown[dir=rtl]{transform:translate(-100%,-1px)}.tagify__dropdown[placement=top]{margin-top:0;transform:translateY(-100%)}.tagify__dropdown[placement=top] .tagify__dropdown__wrapper{border-top-width:1.1px;border-bottom-width:0}.tagify__dropdown[position=text]{box-shadow:0 0 0 3px rgba(var(--tagify-dd-color-primary),.1);font-size:.9em}.tagify__dropdown[position=text] .tagify__dropdown__wrapper{border-width:1px}.tagify__dropdown__wrapper{scroll-behavior:auto;max-height:var(--tagify-dd-max-height);color:var(--tagify-dd-text-color);background:var(--tagify-dd-bg-color);border:1px solid;border-color:var(--tagify-dd-color-primary);border-top-width:0;border-bottom-width:1.5px;transition:all .3s cubic-bezier(.5,0,.3,1),transform .15s;animation:0s .3s forwards dd-wrapper-show;overflow:hidden;box-shadow:0 2px 4px -2px #0003}@keyframes dd-wrapper-show{to{overflow-y:auto}}.tagify__dropdown__header:empty{display:none}.tagify__dropdown__footer{padding:var(--tagify-dd-item-pad);opacity:.5;margin-top:.5em;font-size:.7em;font-style:italic;display:inline-block}.tagify__dropdown__footer:empty{display:none}.tagify__dropdown--initial .tagify__dropdown__wrapper{max-height:20px;transform:translateY(-1em)}.tagify__dropdown--initial[placement=top] .tagify__dropdown__wrapper{transform:translateY(2em)}.tagify__dropdown__item{box-sizing:border-box;padding:var(--tagify-dd-item-pad);white-space:pre-wrap;cursor:pointer;border-radius:2px;outline:0;max-width:100%;max-height:60px;margin:1px;line-height:normal;position:relative}.tagify__dropdown__item--active{background:var(--tagify-dd-color-primary);color:#fff}.tagify__dropdown__item:active{filter:brightness(105%)}.tagify__dropdown__item--hidden{pointer-events:none;max-height:0;margin:0 1px;padding-top:0;padding-bottom:0;overflow:hidden;transition:var(--tagify-dd-item--hidden-duration,.3s)!important}.tagify__dropdown__item--hidden>*{opacity:0;transition:inherit;transform:translateY(-100%)}.tagify__dropdown__item--selected:before{content:"✓";text-indent:0;font-family:monospace;line-height:1.1;position:absolute}.tagify__dropdown__item--selected:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):before{left:6px}.tagify__dropdown__item--selected:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):before{left:6px}.tagify__dropdown__item--selected:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):before{right:6px}.tagify__dropdown__item--selected:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):before{right:6px}.tagify__dropdown:has(.tagify__dropdown__item--selected) .tagify__dropdown__item{text-indent:1em}.markdown-body{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;color:#24292f;word-wrap:break-word;background-color:#fff;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:16px;line-height:1.5}.markdown-body .octicon{vertical-align:text-bottom;fill:currentColor;display:inline-block}.markdown-body h1:hover .anchor .octicon-link:before,.markdown-body h2:hover .anchor .octicon-link:before,.markdown-body h3:hover .anchor .octicon-link:before,.markdown-body h4:hover .anchor .octicon-link:before,.markdown-body h5:hover .anchor .octicon-link:before,.markdown-body h6:hover .anchor .octicon-link:before{content:" ";background-color:currentColor;width:16px;height:16px;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.markdown-body details,.markdown-body figcaption,.markdown-body figure{display:block}.markdown-body summary{display:list-item}.markdown-body [hidden]{display:none!important}.markdown-body a{color:#0969da;background-color:#0000;text-decoration:none}.markdown-body abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.markdown-body b,.markdown-body strong{font-weight:600}.markdown-body dfn{font-style:italic}.markdown-body h1{border-bottom:1px solid #d7dde3;margin:.67em 0;padding-bottom:.3em;font-size:2em;font-weight:600}.markdown-body mark{color:#24292f;background-color:#fff8c5}.markdown-body small{font-size:90%}.markdown-body sub,.markdown-body sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}.markdown-body sub{bottom:-.25em}.markdown-body sup{top:-.5em}.markdown-body img{box-sizing:content-box;background-color:#fff;border-style:none;max-width:100%}.markdown-body code,.markdown-body kbd,.markdown-body pre,.markdown-body samp{font-family:monospace;font-size:1em}.markdown-body figure{margin:1em 40px}.markdown-body hr{box-sizing:content-box;background:#d0d7de;border:0;border-bottom:1px solid #d7dde3;height:.25em;margin:24px 0;padding:0;overflow:hidden}.markdown-body input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}.markdown-body [type=button],.markdown-body [type=reset],.markdown-body [type=submit]{-webkit-appearance:button}.markdown-body [type=checkbox],.markdown-body [type=radio]{box-sizing:border-box;padding:0}.markdown-body [type=number]::-webkit-inner-spin-button{height:auto}.markdown-body [type=number]::-webkit-outer-spin-button{height:auto}.markdown-body [type=search]::-webkit-search-cancel-button{-webkit-appearance:none}.markdown-body [type=search]::-webkit-search-decoration{-webkit-appearance:none}.markdown-body ::-webkit-input-placeholder{color:inherit;opacity:.54}.markdown-body ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}.markdown-body a:hover{text-decoration:underline}.markdown-body ::placeholder{color:#6e7781;opacity:1}.markdown-body hr:before{content:"";display:table}.markdown-body hr:after{clear:both;content:"";display:table}.markdown-body table{border-spacing:0;border-collapse:collapse;width:max-content;max-width:100%;display:block;overflow:auto}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body details:not([open])>:not(summary){display:none!important}.markdown-body [role=button]:focus,.markdown-body a:focus,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=radio]:focus{outline-offset:-2px;box-shadow:none;outline:2px solid #0969da}.markdown-body [role=button]:focus:not(:focus-visible){outline:1px solid #0000}.markdown-body a:focus:not(:focus-visible){outline:1px solid #0000}.markdown-body input[type=checkbox]:focus:not(:focus-visible){outline:1px solid #0000}.markdown-body input[type=radio]:focus:not(:focus-visible){outline:1px solid #0000}.markdown-body [role=button]:focus-visible{outline-offset:-2px;box-shadow:none;outline:2px solid #0969da}.markdown-body a:focus-visible{outline-offset:-2px;box-shadow:none;outline:2px solid #0969da}.markdown-body input[type=checkbox]:focus-visible{outline-offset:-2px;box-shadow:none;outline:2px solid #0969da}.markdown-body input[type=radio]:focus-visible{outline-offset:-2px;box-shadow:none;outline:2px solid #0969da}.markdown-body a:not([class]):focus,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=radio]:focus{outline-offset:0}.markdown-body a:not([class]):focus-visible{outline-offset:0}.markdown-body input[type=checkbox]:focus-visible{outline-offset:0}.markdown-body input[type=radio]:focus-visible{outline-offset:0}.markdown-body kbd{vertical-align:middle;color:#24292f;background-color:#f6f8fa;border:1px solid #afb8c133;border-radius:6px;padding:3px 5px;font:11px/10px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;display:inline-block;box-shadow:inset 0 -1px #afb8c133}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h2{border-bottom:1px solid #d7dde3;padding-bottom:.3em;font-size:1.5em;font-weight:600}.markdown-body h3{font-size:1.25em;font-weight:600}.markdown-body h4{font-size:1em;font-weight:600}.markdown-body h5{font-size:.875em;font-weight:600}.markdown-body h6{color:#57606a;font-size:.85em;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{color:#57606a;border-left:.25em solid #d0d7de;margin:0;padding:0 1em}.markdown-body ol,.markdown-body ul{margin-top:0;margin-bottom:0;padding-left:2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body samp,.markdown-body tt{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body pre{word-wrap:normal;margin-top:0;margin-bottom:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body .octicon{vertical-align:text-bottom;fill:currentColor;display:inline-block;overflow:visible!important}.markdown-body input::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}.markdown-body input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.markdown-body:before{content:"";display:table}.markdown-body:after{clear:both;content:"";display:table}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:#cf222e}.markdown-body .anchor{float:left;margin-left:-20px;padding-right:4px;line-height:1}.markdown-body .anchor:focus{outline:0}.markdown-body blockquote,.markdown-body details,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{visibility:hidden;vertical-align:middle;color:#24292f}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 code,.markdown-body h1 tt,.markdown-body h2 code,.markdown-body h2 tt,.markdown-body h3 code,.markdown-body h3 tt,.markdown-body h4 code,.markdown-body h4 tt,.markdown-body h5 code,.markdown-body h5 tt,.markdown-body h6 code,.markdown-body h6 tt{font-size:inherit;padding:0 .2em}.markdown-body summary h1,.markdown-body summary h2,.markdown-body summary h3,.markdown-body summary h4,.markdown-body summary h5,.markdown-body summary h6{display:inline-block}.markdown-body summary h1 .anchor,.markdown-body summary h2 .anchor,.markdown-body summary h3 .anchor,.markdown-body summary h4 .anchor,.markdown-body summary h5 .anchor,.markdown-body summary h6 .anchor{margin-left:-40px}.markdown-body summary h1,.markdown-body summary h2{border-bottom:0;padding-bottom:0}.markdown-body ol.no-list,.markdown-body ul.no-list{padding:0;list-style-type:none}.markdown-body ol[type=a]{list-style-type:lower-alpha}.markdown-body ol[type=A]{list-style-type:upper-alpha}.markdown-body ol[type=i]{list-style-type:lower-roman}.markdown-body ol[type=I]{list-style-type:upper-roman}.markdown-body ol[type="1"],.markdown-body div>ol:not([type]){list-style-type:decimal}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{margin-top:16px;padding:0;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{margin-bottom:16px;padding:0 16px}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{border:1px solid #d0d7de;padding:6px 13px}.markdown-body table tr{background-color:#fff;border-top:1px solid #d7dde3}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body table img{background-color:#0000}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{vertical-align:text-top;background-color:#0000;max-width:none}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{float:left;border:1px solid #d0d7de;width:auto;margin:13px 0 0;padding:7px;display:block;overflow:hidden}.markdown-body span.frame span img{float:left;display:block}.markdown-body span.frame span span{clear:both;color:#24292f;padding:5px 0 0;display:block}.markdown-body span.align-center{clear:both;display:block;overflow:hidden}.markdown-body span.align-center>span{text-align:center;margin:13px auto 0;display:block;overflow:hidden}.markdown-body span.align-center span img{text-align:center;margin:0 auto}.markdown-body span.align-right{clear:both;display:block;overflow:hidden}.markdown-body span.align-right>span{text-align:right;margin:13px 0 0;display:block;overflow:hidden}.markdown-body span.align-right span img{text-align:right;margin:0}.markdown-body span.float-left{float:left;margin-right:13px;display:block;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{float:right;margin-left:13px;display:block;overflow:hidden}.markdown-body span.float-right>span{text-align:right;margin:13px auto 0;display:block;overflow:hidden}.markdown-body code,.markdown-body tt{white-space:break-spaces;background-color:#afb8c133;border-radius:6px;margin:0;padding:.2em .4em;font-size:85%}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{-webkit-text-decoration:inherit;text-decoration:inherit}.markdown-body samp{font-size:85%}.markdown-body pre code{font-size:100%}.markdown-body pre>code{word-break:normal;white-space:pre;background:0 0;border:0;margin:0;padding:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{word-break:normal;margin-bottom:0}.markdown-body .highlight pre,.markdown-body pre{background-color:#f6f8fa;border-radius:6px;padding:16px;font-size:85%;line-height:1.45;overflow:auto}.markdown-body pre code,.markdown-body pre tt{max-width:auto;line-height:inherit;word-wrap:normal;background-color:#0000;border:0;margin:0;padding:0;display:inline;overflow:visible}.markdown-body .csv-data td,.markdown-body .csv-data th{text-align:left;white-space:nowrap;padding:5px;font-size:12px;line-height:1;overflow:hidden}.markdown-body .csv-data .blob-num{text-align:right;background:#fff;border:0;padding:10px 8px 9px}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{background:#f6f8fa;border-top:0;font-weight:600}.markdown-body [data-footnote-ref]:before{content:"["}.markdown-body [data-footnote-ref]:after{content:"]"}.markdown-body .footnotes{color:#57606a;border-top:1px solid #d0d7de;font-size:12px}.markdown-body .footnotes ol{padding-left:16px}.markdown-body .footnotes ol ul{margin-top:16px;padding-left:16px;display:inline-block}.markdown-body .footnotes li{position:relative}.markdown-body .footnotes li:target:before{pointer-events:none;content:"";border:2px solid #0969da;border-radius:6px;position:absolute;top:-8px;bottom:-8px;left:-24px;right:-8px}.markdown-body .footnotes li:target{color:#24292f}.markdown-body .footnotes .data-footnote-backref g-emoji{font-family:monospace}.markdown-body .pl-c{color:#6e7781}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#0550ae}.markdown-body .pl-e,.markdown-body .pl-en{color:#8250df}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292f}.markdown-body .pl-ent{color:#116329}.markdown-body .pl-k{color:#cf222e}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#0a3069}.markdown-body .pl-smw,.markdown-body .pl-v{color:#953800}.markdown-body .pl-bu{color:#82071e}.markdown-body .pl-ii{color:#f6f8fa;background-color:#82071e}.markdown-body .pl-c2{color:#f6f8fa;background-color:#cf222e}.markdown-body .pl-sr .pl-cce{color:#116329;font-weight:700}.markdown-body .pl-ml{color:#3b2300}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:#0550ae;font-weight:700}.markdown-body .pl-mi{color:#24292f;font-style:italic}.markdown-body .pl-mb{color:#24292f;font-weight:700}.markdown-body .pl-md{color:#82071e;background-color:#ffebe9}.markdown-body .pl-mi1{color:#116329;background-color:#dafbe1}.markdown-body .pl-mc{color:#953800;background-color:#ffd8b5}.markdown-body .pl-mi2{color:#eaeef2;background-color:#0550ae}.markdown-body .pl-mdr{color:#8250df;font-weight:700}.markdown-body .pl-ba{color:#57606a}.markdown-body .pl-sg{color:#8c959f}.markdown-body .pl-corl{color:#0a3069;text-decoration:underline}.markdown-body g-emoji{vertical-align:-.075em;min-width:1ch;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1em;font-weight:400;line-height:1;display:inline-block;font-style:normal!important}.markdown-body g-emoji img{width:1em;height:1em}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item label{font-weight:400}.markdown-body .task-list-item.enabled label{cursor:pointer}.markdown-body .task-list-item+.task-list-item{margin-top:4px}.markdown-body .task-list-item .handle{display:none}.markdown-body .task-list-item-checkbox{vertical-align:middle;margin:0 .2em .25em -1.4em}.markdown-body .contains-task-list:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.markdown-body .contains-task-list:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.markdown-body .contains-task-list{position:relative}.markdown-body .contains-task-list:focus-within .task-list-item-convert-container,.markdown-body .contains-task-list:hover .task-list-item-convert-container{clip:auto;width:auto;height:24px;display:block;overflow:visible}.markdown-body ::-webkit-calendar-picker-indicator{filter:invert(50%)}@media print{craft-global-sidebar,#global-header{display:none}}div.elementselectormodal{z-index:2000} +@keyframes react-loading-skeleton{to{transform:translate(100%)}}.react-loading-skeleton{--base-color:#ebebeb;--highlight-color:#f5f5f5;--animation-duration:1.5s;--animation-direction:normal;--pseudo-element-display:block;background-color:var(--base-color);-webkit-user-select:none;user-select:none;border-radius:.25rem;width:100%;line-height:1;display:inline-flex;position:relative;overflow:hidden}.react-loading-skeleton:after{content:" ";display:var(--pseudo-element-display);background-repeat:no-repeat;background-image:var(--custom-highlight-background,linear-gradient(90deg, var(--base-color) 0%, var(--highlight-color) 50%, var(--base-color) 100%));height:100%;animation-name:react-loading-skeleton;animation-direction:var(--animation-direction);animation-duration:var(--animation-duration);animation-timing-function:ease-in-out;animation-iteration-count:infinite;position:absolute;top:0;left:0;right:0;transform:translate(-100%)}@media (prefers-reduced-motion){.react-loading-skeleton{--pseudo-element-display:none}}.react-datepicker__navigation-icon:before,.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow{content:"";border:3px solid #ccc;border-width:3px 3px 0 0;width:9px;height:9px;display:block;position:absolute;top:6px}.react-datepicker__sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.react-datepicker-wrapper{border:0;padding:0;display:inline-block}.react-datepicker{color:#000;font-family:Helvetica Neue,helvetica,arial,sans-serif;font-size:.8rem;line-height:initial;background-color:#fff;border:1px solid #aeaeae;border-radius:.3rem;display:inline-block;position:relative}.react-datepicker--time-only .react-datepicker__time-container{border-left:0}.react-datepicker--time-only .react-datepicker__time,.react-datepicker--time-only .react-datepicker__time-box{border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.react-datepicker-popper{z-index:1;line-height:0}.react-datepicker-popper .react-datepicker__triangle{stroke:#aeaeae}.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle{fill:#f0f0f0;color:#f0f0f0}.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle{fill:#fff;color:#fff}.react-datepicker__header{text-align:center;background-color:#f0f0f0;border-bottom:1px solid #aeaeae;border-top-left-radius:.3rem;padding:8px 0;position:relative}.react-datepicker__header--time{padding-bottom:8px;padding-left:5px;padding-right:5px}.react-datepicker__header--time:not(.react-datepicker__header--time--only){border-top-left-radius:0}.react-datepicker__header:not(.react-datepicker__header--has-time-select){border-top-right-radius:.3rem}.react-datepicker__year-dropdown-container--select,.react-datepicker__month-dropdown-container--select,.react-datepicker__month-year-dropdown-container--select,.react-datepicker__year-dropdown-container--scroll,.react-datepicker__month-dropdown-container--scroll,.react-datepicker__month-year-dropdown-container--scroll{margin:0 15px;display:inline-block}.react-datepicker__current-month,.react-datepicker-time__header,.react-datepicker-year-header{color:#000;margin-top:0;font-size:.944rem;font-weight:700}h2.react-datepicker__current-month{margin:0;padding:0}.react-datepicker-time__header{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.react-datepicker__navigation{text-align:center;cursor:pointer;z-index:1;text-indent:-999em;background:0 0;border:none;justify-content:center;align-items:center;width:32px;height:32px;padding:0;display:flex;position:absolute;top:2px;overflow:hidden}.react-datepicker__navigation--previous{left:2px}.react-datepicker__navigation--next{right:2px}.react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button){right:85px}.react-datepicker__navigation--years{margin-left:auto;margin-right:auto;display:block;position:relative;top:0}.react-datepicker__navigation--years-previous{top:4px}.react-datepicker__navigation--years-upcoming{top:-4px}.react-datepicker__navigation:hover :before{border-color:#a6a6a6}.react-datepicker__navigation-icon{width:0;font-size:20px;position:relative;top:-1px}.react-datepicker__navigation-icon--next{left:-2px}.react-datepicker__navigation-icon--next:before{left:-7px;transform:rotate(45deg)}.react-datepicker__navigation-icon--previous{right:-2px}.react-datepicker__navigation-icon--previous:before{right:-7px;transform:rotate(225deg)}.react-datepicker__month-container{float:left}.react-datepicker__year{text-align:center;margin:.4rem}.react-datepicker__year-wrapper{flex-wrap:wrap;max-width:180px;display:flex}.react-datepicker__year .react-datepicker__year-text{width:4rem;margin:2px;display:inline-block}.react-datepicker__month{text-align:center;margin:.4rem}.react-datepicker__month .react-datepicker__month-text,.react-datepicker__month .react-datepicker__quarter-text{width:4rem;margin:2px;display:inline-block}.react-datepicker__input-time-container{clear:both;float:left;text-align:left;width:100%;margin:5px 0 10px 15px}.react-datepicker__input-time-container .react-datepicker-time__caption,.react-datepicker__input-time-container .react-datepicker-time__input-container{display:inline-block}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input{margin-left:10px;display:inline-block}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input{width:auto}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]{-moz-appearance:textfield}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__delimiter{margin-left:5px;display:inline-block}.react-datepicker__time-container{float:right;border-left:1px solid #aeaeae;width:85px}.react-datepicker__time-container--with-today-button{border:1px solid #aeaeae;border-radius:.3rem;display:inline;position:absolute;top:0;right:-87px}.react-datepicker__time-container .react-datepicker__time{background:#fff;border-bottom-right-radius:.3rem;position:relative}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box{text-align:center;border-bottom-right-radius:.3rem;width:85px;margin:0 auto;overflow-x:hidden}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list{box-sizing:content-box;width:100%;height:calc(195px + .85rem);margin:0;padding-left:0;padding-right:0;list-style:none;overflow-y:scroll}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item{white-space:nowrap;height:30px;padding:5px 10px}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover{cursor:pointer;background-color:#f0f0f0}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected{color:#fff;background-color:#216ba5;font-weight:700}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover{background-color:#216ba5}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled{color:#ccc}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover{cursor:default;background-color:#0000}.react-datepicker__week-number{color:#ccc;text-align:center;width:1.7rem;margin:.166rem;line-height:1.7rem;display:inline-block}.react-datepicker__week-number.react-datepicker__week-number--clickable{cursor:pointer}.react-datepicker__week-number.react-datepicker__week-number--clickable:not(.react-datepicker__week-number--selected):hover{background-color:#f0f0f0;border-radius:.3rem}.react-datepicker__week-number--selected{color:#fff;background-color:#216ba5;border-radius:.3rem}.react-datepicker__week-number--selected:hover{background-color:#1d5d90}.react-datepicker__day-names{text-align:center;white-space:nowrap;margin-bottom:-8px}.react-datepicker__week{white-space:nowrap}.react-datepicker__day-name,.react-datepicker__day,.react-datepicker__time-name{color:#000;text-align:center;width:1.7rem;margin:.166rem;line-height:1.7rem;display:inline-block}.react-datepicker__day-name--disabled,.react-datepicker__day--disabled,.react-datepicker__time-name--disabled{cursor:default;color:#ccc}.react-datepicker__day,.react-datepicker__month-text,.react-datepicker__quarter-text,.react-datepicker__year-text{cursor:pointer}.react-datepicker__day:not([aria-disabled=true]):hover,.react-datepicker__month-text:not([aria-disabled=true]):hover,.react-datepicker__quarter-text:not([aria-disabled=true]):hover,.react-datepicker__year-text:not([aria-disabled=true]):hover{background-color:#f0f0f0;border-radius:.3rem}.react-datepicker__day--today,.react-datepicker__month-text--today,.react-datepicker__quarter-text--today,.react-datepicker__year-text--today{font-weight:700}.react-datepicker__day--highlighted,.react-datepicker__month-text--highlighted,.react-datepicker__quarter-text--highlighted,.react-datepicker__year-text--highlighted{color:#fff;background-color:#3dcc4a;border-radius:.3rem}.react-datepicker__day--highlighted:not([aria-disabled=true]):hover,.react-datepicker__month-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__year-text--highlighted:not([aria-disabled=true]):hover{background-color:#32be3f}.react-datepicker__day--highlighted-custom-1,.react-datepicker__month-text--highlighted-custom-1,.react-datepicker__quarter-text--highlighted-custom-1,.react-datepicker__year-text--highlighted-custom-1{color:#f0f}.react-datepicker__day--highlighted-custom-2,.react-datepicker__month-text--highlighted-custom-2,.react-datepicker__quarter-text--highlighted-custom-2,.react-datepicker__year-text--highlighted-custom-2{color:green}.react-datepicker__day--holidays,.react-datepicker__month-text--holidays,.react-datepicker__quarter-text--holidays,.react-datepicker__year-text--holidays{color:#fff;background-color:#ff6803;border-radius:.3rem;position:relative}.react-datepicker__day--holidays .overlay,.react-datepicker__month-text--holidays .overlay,.react-datepicker__quarter-text--holidays .overlay,.react-datepicker__year-text--holidays .overlay{color:#fff;white-space:nowrap;visibility:hidden;opacity:0;background-color:#333;border-radius:4px;padding:4px;transition:visibility,opacity .3s ease-in-out;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.react-datepicker__day--holidays:not([aria-disabled=true]):hover,.react-datepicker__month-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__year-text--holidays:not([aria-disabled=true]):hover{background-color:#cf5300}.react-datepicker__day--holidays:hover .overlay,.react-datepicker__month-text--holidays:hover .overlay,.react-datepicker__quarter-text--holidays:hover .overlay,.react-datepicker__year-text--holidays:hover .overlay{visibility:visible;opacity:1}.react-datepicker__day--selected,.react-datepicker__day--in-selecting-range,.react-datepicker__day--in-range,.react-datepicker__month-text--selected,.react-datepicker__month-text--in-selecting-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--selected,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--selected,.react-datepicker__year-text--in-selecting-range,.react-datepicker__year-text--in-range{color:#fff;background-color:#216ba5;border-radius:.3rem}.react-datepicker__day--selected:not([aria-disabled=true]):hover,.react-datepicker__day--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__day--in-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-range:not([aria-disabled=true]):hover{background-color:#1d5d90}.react-datepicker__day--keyboard-selected,.react-datepicker__month-text--keyboard-selected,.react-datepicker__quarter-text--keyboard-selected,.react-datepicker__year-text--keyboard-selected{color:#000;background-color:#bad9f1;border-radius:.3rem}.react-datepicker__day--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--keyboard-selected:not([aria-disabled=true]):hover{color:#fff;background-color:#1d5d90}.react-datepicker__day--in-selecting-range:not(:-webkit-any(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)),.react-datepicker__month-text--in-selecting-range:not(:-webkit-any(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)),.react-datepicker__quarter-text--in-selecting-range:not(:-webkit-any(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)),.react-datepicker__year-text--in-selecting-range:not(:-webkit-any(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)){background-color:#216ba580}.react-datepicker__day--in-selecting-range:not(:is(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)),.react-datepicker__month-text--in-selecting-range:not(:is(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)),.react-datepicker__quarter-text--in-selecting-range:not(:is(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)),.react-datepicker__year-text--in-selecting-range:not(:is(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range)){background-color:#216ba580}.react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(:-webkit-any(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)){color:#000;background-color:#f0f0f0}.react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)),.react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(:is(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range)){color:#000;background-color:#f0f0f0}.react-datepicker__day--disabled,.react-datepicker__month-text--disabled,.react-datepicker__quarter-text--disabled,.react-datepicker__year-text--disabled{cursor:default;color:#ccc}.react-datepicker__day--disabled .overlay,.react-datepicker__month-text--disabled .overlay,.react-datepicker__quarter-text--disabled .overlay,.react-datepicker__year-text--disabled .overlay{color:#fff;white-space:nowrap;visibility:hidden;opacity:0;background-color:#333;border-radius:4px;padding:4px;transition:visibility,opacity .3s ease-in-out;position:absolute;bottom:70%;left:50%;transform:translate(-50%)}.react-datepicker__input-container{width:100%;display:inline-block;position:relative}.react-datepicker__input-container .react-datepicker__calendar-icon{box-sizing:content-box;padding:.5rem;position:absolute}.react-datepicker__view-calendar-icon input{padding:6px 10px 5px 25px}.react-datepicker__year-read-view,.react-datepicker__month-read-view,.react-datepicker__month-year-read-view{border:1px solid #0000;border-radius:.3rem;position:relative}.react-datepicker__year-read-view:hover,.react-datepicker__month-read-view:hover,.react-datepicker__month-year-read-view:hover{cursor:pointer}.react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow{border-top-color:#b3b3b3}.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow{top:0;right:-16px;transform:rotate(135deg)}.react-datepicker__year-dropdown,.react-datepicker__month-dropdown,.react-datepicker__month-year-dropdown{z-index:1;text-align:center;background-color:#f0f0f0;border:1px solid #aeaeae;border-radius:.3rem;width:50%;position:absolute;top:30px;left:25%}.react-datepicker__year-dropdown:hover,.react-datepicker__month-dropdown:hover,.react-datepicker__month-year-dropdown:hover{cursor:pointer}.react-datepicker__year-dropdown--scrollable,.react-datepicker__month-dropdown--scrollable,.react-datepicker__month-year-dropdown--scrollable{height:150px;overflow-y:scroll}.react-datepicker__year-option,.react-datepicker__month-option,.react-datepicker__month-year-option{width:100%;margin-left:auto;margin-right:auto;line-height:20px;display:block}.react-datepicker__year-option:first-of-type,.react-datepicker__month-option:first-of-type,.react-datepicker__month-year-option:first-of-type{border-top-left-radius:.3rem;border-top-right-radius:.3rem}.react-datepicker__year-option:last-of-type,.react-datepicker__month-option:last-of-type,.react-datepicker__month-year-option:last-of-type{-webkit-user-select:none;user-select:none;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.react-datepicker__year-option:hover,.react-datepicker__month-option:hover,.react-datepicker__month-year-option:hover{background-color:#ccc}.react-datepicker__year-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-upcoming{border-bottom-color:#b3b3b3}.react-datepicker__year-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-previous{border-top-color:#b3b3b3}.react-datepicker__year-option--selected,.react-datepicker__month-option--selected,.react-datepicker__month-year-option--selected{position:absolute;left:15px}.react-datepicker__close-icon{cursor:pointer;vertical-align:middle;background-color:#0000;border:0;outline:0;height:100%;padding:0 6px 0 0;display:table-cell;position:absolute;top:0;right:0}.react-datepicker__close-icon:after{cursor:pointer;color:#fff;text-align:center;vertical-align:middle;content:"×";background-color:#216ba5;border-radius:50%;width:16px;height:16px;padding:2px;font-size:12px;line-height:1;display:table-cell}.react-datepicker__close-icon--disabled{cursor:default}.react-datepicker__close-icon--disabled:after{cursor:default;background-color:#ccc}.react-datepicker__today-button{cursor:pointer;text-align:center;clear:left;background:#f0f0f0;border-top:1px solid #aeaeae;padding:5px 0;font-weight:700}.react-datepicker__portal{z-index:2147483647;background-color:#000c;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex;position:fixed;top:0;left:0}.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__time-name{width:3rem;line-height:3rem}@media (max-width:400px),(max-height:550px){.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__time-name{width:2rem;line-height:2rem}}.react-datepicker__portal .react-datepicker__current-month,.react-datepicker__portal .react-datepicker-time__header{font-size:1.44rem}.react-datepicker__children-container{width:13.8rem;height:auto;margin:.4rem;padding-left:.2rem;padding-right:.2rem}.react-datepicker__aria-live{clip-path:circle(0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.react-datepicker__calendar-icon{vertical-align:-.125em;width:1em;height:1em}:root{--tagify-dd-color-primary:#3595f6;--tagify-dd-text-color:black;--tagify-dd-bg-color:white;--tagify-dd-item-pad:.3em .5em;--tagify-dd-max-height:300px}.tagify{--tags-disabled-bg:#f1f1f1;--tags-border-color:#ddd;--tags-hover-border-color:#ccc;--tags-focus-border-color:#3595f6;--tag-border-radius:3px;--tag-bg:#e5e5e5;--tag-hover:#d3e2e2;--tag-text-color:black;--tag-text-color--edit:black;--tag-pad:.3em .5em;--tag-inset-shadow-size:1.2em;--tag-invalid-color:#d39494;--tag-invalid-bg:#d3949480;--tag--min-width:1ch;--tag--max-width:100%;--tag-hide-transition:.3s;--tag-remove-bg:#d394944d;--tag-remove-btn-color:black;--tag-remove-btn-bg:none;--tag-remove-btn-bg--hover:#c77777;--input-color:inherit;--placeholder-color:#0006;--placeholder-color-focus:#00000040;--loader-size:.8em;--readonly-striped:1;border:1px solid var(--tags-border-color);box-sizing:border-box;outline:0;flex-wrap:wrap;align-content:baseline;align-items:flex-start;padding:0;line-height:0;transition:all .1s;display:inline-flex;position:relative}@keyframes tags--bump{30%{transform:scale(1.2)}}@keyframes rotateLoader{to{transform:rotate(1turn)}}.tagify:has([contenteditable=true]){cursor:text}.tagify:hover:not(.tagify--focus):not(.tagify--invalid){--tags-border-color:var(--tags-hover-border-color)}.tagify[disabled]{background:var(--tags-disabled-bg);filter:saturate(0);opacity:.5;pointer-events:none}.tagify[disabled].tagify--empty>.tagify__input:before{position:relative}.tagify[disabled].tagify--select,.tagify[readonly].tagify--select{pointer-events:none}.tagify[disabled]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty),.tagify[readonly]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty){cursor:default}.tagify[disabled]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty)>.tagify__input,.tagify[readonly]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty)>.tagify__input{visibility:hidden;width:0;margin:5px 0}.tagify[disabled]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty) .tagify__tag>div,.tagify[readonly]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty) .tagify__tag>div{padding:var(--tag-pad)}.tagify[disabled]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty) .tagify__tag>div:before,.tagify[readonly]:not(.tagify--mix):not(.tagify--select):not(.tagify--empty) .tagify__tag>div:before{animation:readonlyStyles 1s calc(-1s * (var(--readonly-striped) - 1)) paused}@keyframes readonlyStyles{0%{background:linear-gradient(45deg,var(--tag-bg) 25%,transparent 25%,transparent 50%,var(--tag-bg) 50%,var(--tag-bg) 75%,transparent 75%,transparent) 0/5px 5px;box-shadow:none;filter:brightness(.95)}}.tagify[disabled] .tagify__tag__removeBtn,.tagify[readonly] .tagify__tag__removeBtn,.tagify--loading .tagify__input>br:last-child{display:none}.tagify--loading .tagify__input:before{content:none}.tagify--loading .tagify__input:after{content:"";vertical-align:middle;opacity:1;width:.7em;height:.7em;width:var(--loader-size);height:var(--loader-size);border:3px solid #eee;border-color:#eee #bbb #888 #0000;border-radius:50%;min-width:0;margin:-2px 0 -2px .5em;animation:.4s linear infinite rotateLoader;content:""!important}.tagify--loading .tagify__input:empty:after{margin-left:0}.tagify+input,.tagify+textarea{position:absolute!important;left:-9999em!important;transform:scale(0)!important}.tagify__tag{max-width:var(--tag--max-width);z-index:1;cursor:default;outline:0;align-items:center;margin-block-start:5px;margin-block-end:5px;margin-inline-start:5px;margin-inline-end:0;line-height:normal;transition:all .13s ease-out;display:inline-flex;position:relative}.tagify__tag:last-child{margin-right:5px}.tagify__tag>div{vertical-align:top;box-sizing:border-box;max-width:100%;padding:var(--tag-pad);color:var(--tag-text-color);line-height:inherit;border-radius:var(--tag-border-radius);white-space:nowrap;flex:1;transition:all .13s ease-out;display:flex}.tagify__tag>div>*{white-space:pre-wrap;text-overflow:ellipsis;vertical-align:top;min-width:var(--tag--min-width);max-width:var(--tag--max-width);transition:all .8s,color .1s;display:inline-block;overflow:hidden}.tagify__tag>div>[contenteditable]{-webkit-user-select:text;user-select:text;cursor:text;outline:0;max-width:350px;margin:-2px;padding:2px;display:block}.tagify__tag>div>:only-child{width:100%}.tagify__tag>div:before{content:"";border-radius:inherit;inset:var(--tag-bg-inset,0);z-index:-1;pointer-events:none;box-shadow:0 0 0 var(--tag-inset-shadow-size) var(--tag-bg) inset;transition:all .12s;animation:.3s ease-out tags--bump;position:absolute}.tagify__tag:focus div:before,.tagify__tag:hover:not([readonly]) div:before{--tag-bg-inset:-2.5px;--tag-bg:var(--tag-hover)}.tagify__tag--loading{pointer-events:none}.tagify__tag--loading .tagify__tag__removeBtn{display:none}.tagify__tag--loading:after{--loader-size:.4em;content:"";vertical-align:middle;opacity:1;width:.7em;height:.7em;width:var(--loader-size);height:var(--loader-size);border:3px solid #eee;border-color:#eee #bbb #888 #0000;border-radius:50%;min-width:0;margin:0 .5em 0 -.1em;animation:.4s linear infinite rotateLoader}.tagify__tag--flash div:before{animation:none}.tagify__tag--hide{opacity:0;transition:var(--tag-hide-transition);pointer-events:none;margin-left:0;margin-right:0;padding-left:0;padding-right:0;transform:scale(0);width:0!important}.tagify__tag--hide>div>*{white-space:nowrap}.tagify__tag.tagify--noAnim>div:before{animation:none}.tagify__tag.tagify--notAllowed:not(.tagify__tag--editable) div>span{opacity:.5}.tagify__tag.tagify--notAllowed:not(.tagify__tag--editable) div:before{--tag-bg:var(--tag-invalid-bg);transition:all .2s}.tagify__tag[readonly] .tagify__tag__removeBtn{display:none}.tagify__tag[readonly]>div:before{animation:readonlyStyles 1s calc(-1s * (var(--readonly-striped) - 1)) paused}.tagify__tag--editable>div{color:var(--tag-text-color--edit)}.tagify__tag--editable>div:before{box-shadow:0 0 0 2px var(--tag-hover) inset!important}.tagify__tag--editable>.tagify__tag__removeBtn{pointer-events:none;opacity:0;transform:translate(100%)translate(5px)}.tagify__tag--editable.tagify--invalid>div:before{box-shadow:0 0 0 2px var(--tag-invalid-color) inset!important}.tagify__tag__removeBtn{cursor:pointer;background:var(--tag-remove-btn-bg);color:var(--tag-remove-btn-color);border-radius:50px;order:5;justify-content:center;align-items:center;width:14px;height:14px;margin-inline-start:auto;margin-inline-end:4.66667px;font:14px/1 Arial;transition:all .2s ease-out;display:inline-flex;overflow:hidden}.tagify__tag__removeBtn:after{content:"×";transition:all .3s,color}.tagify__tag__removeBtn:hover{color:#fff;background:var(--tag-remove-btn-bg--hover)}.tagify__tag__removeBtn:hover+div>span{opacity:.5}.tagify__tag__removeBtn:hover+div:before{transition:box-shadow .2s;box-shadow:0 0 0 var(--tag-inset-shadow-size) var(--tag-remove-bg,#d394944d) inset!important}.tagify:not(.tagify--mix) .tagify__input br{display:none}.tagify:not(.tagify--mix) .tagify__input *{white-space:nowrap;display:inline}.tagify__input{padding:var(--tag-pad);white-space:pre-wrap;min-width:-moz-fit-content;min-width:fit-content;min-height:1.5lh;color:var(--input-color);box-sizing:inherit;margin:5px;line-height:normal;display:inline-block;position:relative;overflow:hidden}.tagify__input:focus{outline:0}.tagify__input:last-child{flex-grow:1;min-width:110px}.tagify__input:last-child:focus:before{opacity:0;transition:all .2s ease-out;transform:translate(6px)}@supports (-ms-ime-align:auto){.tagify__input:last-child:focus:before{display:none}}.tagify__input:last-child:focus:empty:before{opacity:1;color:var(--placeholder-color-focus);transition:all .2s ease-out;transform:none}@-moz-document url-prefix(){.tagify__input:last-child:focus:empty:after{display:none}}.tagify__input:last-child:before{content:attr(data-placeholder)}.tagify__input:before{z-index:1;width:100%;height:100%;color:var(--placeholder-color);white-space:nowrap;text-overflow:ellipsis;pointer-events:none;opacity:0;margin:auto 0;position:absolute;overflow:hidden}.tagify__input:after{content:attr(data-suggest);vertical-align:middle;text-overflow:ellipsis;white-space:pre;min-width:calc(100% - 1.5em);color:var(--tag-text-color);opacity:.3;pointer-events:none;max-width:100px;display:inline-block;position:absolute;overflow:hidden}.tagify__input .tagify__tag{margin:0 1px}.tagify--mix{display:block}.tagify--mix .tagify__input{width:100%;height:100%;margin:0;padding:5px;line-height:1.5;display:block}.tagify--mix .tagify__input:before{height:auto;line-height:inherit;display:none}.tagify--mix .tagify__input:after{content:none}.tagify--select{cursor:default}.tagify--select:after{content:">";opacity:.5;pointer-events:none;height:8px;font:16px/8px monospace;transition:all .2s ease-in-out;position:absolute;top:50%;bottom:0;right:0;transform:translate(-150%,-50%)scaleX(1.2)rotate(90deg)}.tagify--select[aria-expanded=true]:after{transform:translate(-150%,-50%)rotate(270deg)scaleY(1.2)}.tagify--select[aria-expanded=true] .tagify__tag__removeBtn{pointer-events:none;opacity:0;transform:translate(100%)translate(5px)}.tagify--select .tagify__tag{cursor:text;flex:1;max-width:none;margin-block-start:0;margin-block-end:0;margin-inline-end:2em;padding-block-start:5px;padding-block-end:5px}.tagify--select .tagify__tag div:before,.tagify--select .tagify__tag+.tagify__input{display:none}.tagify--empty .tagify__input:before{opacity:1;width:auto;transition:all .2s ease-out;display:inline-block;transform:none}.tagify--mix .tagify--empty .tagify__input:before{display:inline-block}.tagify--focus{--tags-border-color:var(--tags-focus-border-color);transition:all}.tagify--invalid{--tags-border-color:#d39494}.tagify__dropdown{z-index:9999;border-top:1px solid var(--tagify-dd-color-primary);position:absolute;overflow:hidden;transform:translateY(-1px)}.tagify__dropdown[dir=rtl]{transform:translate(-100%,-1px)}.tagify__dropdown[placement=top]{margin-top:0;transform:translateY(-100%)}.tagify__dropdown[placement=top] .tagify__dropdown__wrapper{border-top-width:1.1px;border-bottom-width:0}.tagify__dropdown[position=text]{box-shadow:0 0 0 3px rgba(var(--tagify-dd-color-primary),.1);font-size:.9em}.tagify__dropdown[position=text] .tagify__dropdown__wrapper{border-width:1px}.tagify__dropdown__wrapper{scroll-behavior:auto;max-height:var(--tagify-dd-max-height);color:var(--tagify-dd-text-color);background:var(--tagify-dd-bg-color);border:1px solid;border-color:var(--tagify-dd-color-primary);border-top-width:0;border-bottom-width:1.5px;transition:all .3s cubic-bezier(.5,0,.3,1),transform .15s;animation:0s .3s forwards dd-wrapper-show;overflow:hidden;box-shadow:0 2px 4px -2px #0003}@keyframes dd-wrapper-show{to{overflow-y:auto}}.tagify__dropdown__header:empty{display:none}.tagify__dropdown__footer{padding:var(--tagify-dd-item-pad);opacity:.5;margin-top:.5em;font-size:.7em;font-style:italic;display:inline-block}.tagify__dropdown__footer:empty{display:none}.tagify__dropdown--initial .tagify__dropdown__wrapper{max-height:20px;transform:translateY(-1em)}.tagify__dropdown--initial[placement=top] .tagify__dropdown__wrapper{transform:translateY(2em)}.tagify__dropdown__item{box-sizing:border-box;padding:var(--tagify-dd-item-pad);white-space:pre-wrap;cursor:pointer;border-radius:2px;outline:0;max-width:100%;max-height:60px;margin:1px;line-height:normal;position:relative}.tagify__dropdown__item--active{background:var(--tagify-dd-color-primary);color:#fff}.tagify__dropdown__item:active{filter:brightness(105%)}.tagify__dropdown__item--hidden{pointer-events:none;max-height:0;margin:0 1px;padding-top:0;padding-bottom:0;overflow:hidden;transition:var(--tagify-dd-item--hidden-duration,.3s)!important}.tagify__dropdown__item--hidden>*{opacity:0;transition:inherit;transform:translateY(-100%)}.tagify__dropdown__item--selected:before{content:"✓";text-indent:0;font-family:monospace;line-height:1.1;position:absolute}.tagify__dropdown__item--selected:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):before{left:6px}.tagify__dropdown__item--selected:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):before{left:6px}.tagify__dropdown__item--selected:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):before{right:6px}.tagify__dropdown__item--selected:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):before{right:6px}.tagify__dropdown:has(.tagify__dropdown__item--selected) .tagify__dropdown__item{text-indent:1em}.markdown-body{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;color:#24292f;word-wrap:break-word;background-color:#fff;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:16px;line-height:1.5}.markdown-body .octicon{vertical-align:text-bottom;fill:currentColor;display:inline-block}.markdown-body h1:hover .anchor .octicon-link:before,.markdown-body h2:hover .anchor .octicon-link:before,.markdown-body h3:hover .anchor .octicon-link:before,.markdown-body h4:hover .anchor .octicon-link:before,.markdown-body h5:hover .anchor .octicon-link:before,.markdown-body h6:hover .anchor .octicon-link:before{content:" ";background-color:currentColor;width:16px;height:16px;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.markdown-body details,.markdown-body figcaption,.markdown-body figure{display:block}.markdown-body summary{display:list-item}.markdown-body [hidden]{display:none!important}.markdown-body a{color:#0969da;background-color:#0000;text-decoration:none}.markdown-body abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.markdown-body b,.markdown-body strong{font-weight:600}.markdown-body dfn{font-style:italic}.markdown-body h1{border-bottom:1px solid #d7dde3;margin:.67em 0;padding-bottom:.3em;font-size:2em;font-weight:600}.markdown-body mark{color:#24292f;background-color:#fff8c5}.markdown-body small{font-size:90%}.markdown-body sub,.markdown-body sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}.markdown-body sub{bottom:-.25em}.markdown-body sup{top:-.5em}.markdown-body img{box-sizing:content-box;background-color:#fff;border-style:none;max-width:100%}.markdown-body code,.markdown-body kbd,.markdown-body pre,.markdown-body samp{font-family:monospace;font-size:1em}.markdown-body figure{margin:1em 40px}.markdown-body hr{box-sizing:content-box;background:#d0d7de;border:0;border-bottom:1px solid #d7dde3;height:.25em;margin:24px 0;padding:0;overflow:hidden}.markdown-body input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}.markdown-body [type=button],.markdown-body [type=reset],.markdown-body [type=submit]{-webkit-appearance:button}.markdown-body [type=checkbox],.markdown-body [type=radio]{box-sizing:border-box;padding:0}.markdown-body [type=number]::-webkit-inner-spin-button{height:auto}.markdown-body [type=number]::-webkit-outer-spin-button{height:auto}.markdown-body [type=search]::-webkit-search-cancel-button{-webkit-appearance:none}.markdown-body [type=search]::-webkit-search-decoration{-webkit-appearance:none}.markdown-body ::-webkit-input-placeholder{color:inherit;opacity:.54}.markdown-body ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}.markdown-body a:hover{text-decoration:underline}.markdown-body ::placeholder{color:#6e7781;opacity:1}.markdown-body hr:before{content:"";display:table}.markdown-body hr:after{clear:both;content:"";display:table}.markdown-body table{border-spacing:0;border-collapse:collapse;width:max-content;max-width:100%;display:block;overflow:auto}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body details:not([open])>:not(summary){display:none!important}.markdown-body [role=button]:focus,.markdown-body a:focus,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=radio]:focus{outline-offset:-2px;box-shadow:none;outline:2px solid #0969da}.markdown-body [role=button]:focus:not(:focus-visible){outline:1px solid #0000}.markdown-body a:focus:not(:focus-visible){outline:1px solid #0000}.markdown-body input[type=checkbox]:focus:not(:focus-visible){outline:1px solid #0000}.markdown-body input[type=radio]:focus:not(:focus-visible){outline:1px solid #0000}.markdown-body [role=button]:focus-visible{outline-offset:-2px;box-shadow:none;outline:2px solid #0969da}.markdown-body a:focus-visible{outline-offset:-2px;box-shadow:none;outline:2px solid #0969da}.markdown-body input[type=checkbox]:focus-visible{outline-offset:-2px;box-shadow:none;outline:2px solid #0969da}.markdown-body input[type=radio]:focus-visible{outline-offset:-2px;box-shadow:none;outline:2px solid #0969da}.markdown-body a:not([class]):focus,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=radio]:focus{outline-offset:0}.markdown-body a:not([class]):focus-visible{outline-offset:0}.markdown-body input[type=checkbox]:focus-visible{outline-offset:0}.markdown-body input[type=radio]:focus-visible{outline-offset:0}.markdown-body kbd{vertical-align:middle;color:#24292f;background-color:#f6f8fa;border:1px solid #afb8c133;border-radius:6px;padding:3px 5px;font:11px/10px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;display:inline-block;box-shadow:inset 0 -1px #afb8c133}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h2{border-bottom:1px solid #d7dde3;padding-bottom:.3em;font-size:1.5em;font-weight:600}.markdown-body h3{font-size:1.25em;font-weight:600}.markdown-body h4{font-size:1em;font-weight:600}.markdown-body h5{font-size:.875em;font-weight:600}.markdown-body h6{color:#57606a;font-size:.85em;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{color:#57606a;border-left:.25em solid #d0d7de;margin:0;padding:0 1em}.markdown-body ol,.markdown-body ul{margin-top:0;margin-bottom:0;padding-left:2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body samp,.markdown-body tt{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body pre{word-wrap:normal;margin-top:0;margin-bottom:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body .octicon{vertical-align:text-bottom;fill:currentColor;display:inline-block;overflow:visible!important}.markdown-body input::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}.markdown-body input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.markdown-body:before{content:"";display:table}.markdown-body:after{clear:both;content:"";display:table}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:#cf222e}.markdown-body .anchor{float:left;margin-left:-20px;padding-right:4px;line-height:1}.markdown-body .anchor:focus{outline:0}.markdown-body blockquote,.markdown-body details,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{visibility:hidden;vertical-align:middle;color:#24292f}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 code,.markdown-body h1 tt,.markdown-body h2 code,.markdown-body h2 tt,.markdown-body h3 code,.markdown-body h3 tt,.markdown-body h4 code,.markdown-body h4 tt,.markdown-body h5 code,.markdown-body h5 tt,.markdown-body h6 code,.markdown-body h6 tt{font-size:inherit;padding:0 .2em}.markdown-body summary h1,.markdown-body summary h2,.markdown-body summary h3,.markdown-body summary h4,.markdown-body summary h5,.markdown-body summary h6{display:inline-block}.markdown-body summary h1 .anchor,.markdown-body summary h2 .anchor,.markdown-body summary h3 .anchor,.markdown-body summary h4 .anchor,.markdown-body summary h5 .anchor,.markdown-body summary h6 .anchor{margin-left:-40px}.markdown-body summary h1,.markdown-body summary h2{border-bottom:0;padding-bottom:0}.markdown-body ol.no-list,.markdown-body ul.no-list{padding:0;list-style-type:none}.markdown-body ol[type=a]{list-style-type:lower-alpha}.markdown-body ol[type=A]{list-style-type:upper-alpha}.markdown-body ol[type=i]{list-style-type:lower-roman}.markdown-body ol[type=I]{list-style-type:upper-roman}.markdown-body ol[type="1"],.markdown-body div>ol:not([type]){list-style-type:decimal}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{margin-top:16px;padding:0;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{margin-bottom:16px;padding:0 16px}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{border:1px solid #d0d7de;padding:6px 13px}.markdown-body table tr{background-color:#fff;border-top:1px solid #d7dde3}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body table img{background-color:#0000}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{vertical-align:text-top;background-color:#0000;max-width:none}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{float:left;border:1px solid #d0d7de;width:auto;margin:13px 0 0;padding:7px;display:block;overflow:hidden}.markdown-body span.frame span img{float:left;display:block}.markdown-body span.frame span span{clear:both;color:#24292f;padding:5px 0 0;display:block}.markdown-body span.align-center{clear:both;display:block;overflow:hidden}.markdown-body span.align-center>span{text-align:center;margin:13px auto 0;display:block;overflow:hidden}.markdown-body span.align-center span img{text-align:center;margin:0 auto}.markdown-body span.align-right{clear:both;display:block;overflow:hidden}.markdown-body span.align-right>span{text-align:right;margin:13px 0 0;display:block;overflow:hidden}.markdown-body span.align-right span img{text-align:right;margin:0}.markdown-body span.float-left{float:left;margin-right:13px;display:block;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{float:right;margin-left:13px;display:block;overflow:hidden}.markdown-body span.float-right>span{text-align:right;margin:13px auto 0;display:block;overflow:hidden}.markdown-body code,.markdown-body tt{white-space:break-spaces;background-color:#afb8c133;border-radius:6px;margin:0;padding:.2em .4em;font-size:85%}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{-webkit-text-decoration:inherit;text-decoration:inherit}.markdown-body samp{font-size:85%}.markdown-body pre code{font-size:100%}.markdown-body pre>code{word-break:normal;white-space:pre;background:0 0;border:0;margin:0;padding:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{word-break:normal;margin-bottom:0}.markdown-body .highlight pre,.markdown-body pre{background-color:#f6f8fa;border-radius:6px;padding:16px;font-size:85%;line-height:1.45;overflow:auto}.markdown-body pre code,.markdown-body pre tt{max-width:auto;line-height:inherit;word-wrap:normal;background-color:#0000;border:0;margin:0;padding:0;display:inline;overflow:visible}.markdown-body .csv-data td,.markdown-body .csv-data th{text-align:left;white-space:nowrap;padding:5px;font-size:12px;line-height:1;overflow:hidden}.markdown-body .csv-data .blob-num{text-align:right;background:#fff;border:0;padding:10px 8px 9px}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{background:#f6f8fa;border-top:0;font-weight:600}.markdown-body [data-footnote-ref]:before{content:"["}.markdown-body [data-footnote-ref]:after{content:"]"}.markdown-body .footnotes{color:#57606a;border-top:1px solid #d0d7de;font-size:12px}.markdown-body .footnotes ol{padding-left:16px}.markdown-body .footnotes ol ul{margin-top:16px;padding-left:16px;display:inline-block}.markdown-body .footnotes li{position:relative}.markdown-body .footnotes li:target:before{pointer-events:none;content:"";border:2px solid #0969da;border-radius:6px;position:absolute;top:-8px;bottom:-8px;left:-24px;right:-8px}.markdown-body .footnotes li:target{color:#24292f}.markdown-body .footnotes .data-footnote-backref g-emoji{font-family:monospace}.markdown-body .pl-c{color:#6e7781}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#0550ae}.markdown-body .pl-e,.markdown-body .pl-en{color:#8250df}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292f}.markdown-body .pl-ent{color:#116329}.markdown-body .pl-k{color:#cf222e}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#0a3069}.markdown-body .pl-smw,.markdown-body .pl-v{color:#953800}.markdown-body .pl-bu{color:#82071e}.markdown-body .pl-ii{color:#f6f8fa;background-color:#82071e}.markdown-body .pl-c2{color:#f6f8fa;background-color:#cf222e}.markdown-body .pl-sr .pl-cce{color:#116329;font-weight:700}.markdown-body .pl-ml{color:#3b2300}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:#0550ae;font-weight:700}.markdown-body .pl-mi{color:#24292f;font-style:italic}.markdown-body .pl-mb{color:#24292f;font-weight:700}.markdown-body .pl-md{color:#82071e;background-color:#ffebe9}.markdown-body .pl-mi1{color:#116329;background-color:#dafbe1}.markdown-body .pl-mc{color:#953800;background-color:#ffd8b5}.markdown-body .pl-mi2{color:#eaeef2;background-color:#0550ae}.markdown-body .pl-mdr{color:#8250df;font-weight:700}.markdown-body .pl-ba{color:#57606a}.markdown-body .pl-sg{color:#8c959f}.markdown-body .pl-corl{color:#0a3069;text-decoration:underline}.markdown-body g-emoji{vertical-align:-.075em;min-width:1ch;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1em;font-weight:400;line-height:1;display:inline-block;font-style:normal!important}.markdown-body g-emoji img{width:1em;height:1em}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item label{font-weight:400}.markdown-body .task-list-item.enabled label{cursor:pointer}.markdown-body .task-list-item+.task-list-item{margin-top:4px}.markdown-body .task-list-item .handle{display:none}.markdown-body .task-list-item-checkbox{vertical-align:middle;margin:0 .2em .25em -1.4em}.markdown-body .contains-task-list:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.markdown-body .contains-task-list:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.markdown-body .contains-task-list{position:relative}.markdown-body .contains-task-list:focus-within .task-list-item-convert-container,.markdown-body .contains-task-list:hover .task-list-item-convert-container{clip:auto;width:auto;height:24px;display:block;overflow:visible}.markdown-body ::-webkit-calendar-picker-indicator{filter:invert(50%)}@media print{craft-global-sidebar,#global-header{display:none}}div.elementselectormodal{z-index:2000} diff --git a/packages/plugin/src/Resources/js/client/assets/index-RUU7GNFX.js b/packages/plugin/src/Resources/js/client/assets/index-RUU7GNFX.js deleted file mode 100644 index 516bcaca99..0000000000 --- a/packages/plugin/src/Resources/js/client/assets/index-RUU7GNFX.js +++ /dev/null @@ -1,9867 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./nl-D46bxpRO.js","./buildMatchPatternFn-CA1-K-2Q.js","./de-Bfssb_sQ.js","./fr-DR7o_gl_.js","./it-Br0QU-GU.js","./normalizeDates-CGlgSdPy.js","./ai.usage-chart-6uT6SHuq.js","./ai.dashboard.styles-CyUKz2xB.js"])))=>i.map(i=>d[i]); -import{$ as e,$n as t,$t as n,A as r,Bn as i,Bt as a,C as o,Cn as s,Cr as c,Ct as l,D as u,Dt as d,E as f,En as p,Et as m,F as h,Fn as g,Ft as _,G as v,H as y,Hn as b,Ht as x,I as S,It as C,J as w,Jn as T,K as E,Kn as D,Kt as O,L as k,Ln as ee,Lt as te,M as ne,Mn as A,Mt as re,N as ie,Nt as j,O as M,On as ae,Ot as N,P as oe,Pn as se,Pt as ce,Q as P,Qn as F,Qt as le,R as I,Rn as ue,Rt as de,S as fe,Sn as pe,Sr as L,St as me,T as he,Tn as ge,Tr as R,Tt as _e,U as ve,Un as ye,Ut as be,V as xe,Vn as Se,Vt as Ce,W as we,Wn as Te,X as Ee,Xn as De,Xt as Oe,Y as ke,Yn as Ae,Yt as je,Z as Me,Zn as Ne,Zt as Pe,_ as Fe,_n as Ie,_r as Le,_t as Re,a as ze,ar as Be,at as Ve,b as He,br as Ue,bt as We,c as Ge,cn as Ke,cr as z,ct as qe,d as Je,dr as B,dt as Ye,en as Xe,er as Ze,et as Qe,f as $e,fr as V,ft as et,g as tt,gn as nt,gr as rt,gt as it,h as at,hr as ot,ht as st,i as ct,in as lt,ir as ut,it as dt,j as ft,jn as pt,jt as mt,k as ht,kt as gt,l as _t,lr as vt,lt as yt,m as bt,mn as xt,mr as H,mt as St,n as Ct,nn as wt,nr as Tt,nt as Et,o as Dt,or as Ot,ot as kt,p as At,pn as jt,pr as Mt,pt as Nt,q as Pt,r as Ft,rn as It,rr as Lt,rt as Rt,s as zt,sn as Bt,sr as Vt,st as Ht,t as Ut,tn as Wt,tr as Gt,tt as Kt,u as qt,un as Jt,ur as Yt,ut as Xt,v as Zt,vn as Qt,vr as U,vt as $t,w as en,wn as tn,wr as nn,wt as rn,x as an,xr as on,xt as sn,y as cn,yn as ln,yr as un,yt as dn,z as fn,zn as pn}from"./ai.dashboard.styles-CyUKz2xB.js";import{a as mn,c as hn,i as gn,l as _n,n as vn,o as yn,r as bn,s as xn,t as Sn,u as Cn}from"./normalizeDates-CGlgSdPy.js";import{i as wn,n as Tn,r as En,t as Dn}from"./buildMatchPatternFn-CA1-K-2Q.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var W=R(on(),1),On=R(Ue()),kn=`modulepreload`,An=function(e,t){return new URL(e,t).href},jn={},Mn=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=An(t,n),t in jn)return;jn[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:kn,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Nn=`popstate`;function Pn(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function Fn(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return Bn(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:Vn(t)}return Un(t,n,null,e)}function In(e,t){if(e===!1||e==null)throw Error(t)}function Ln(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function Rn(){return Math.random().toString(36).substring(2,10)}function zn(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.unstable_mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function Bn(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?Hn(t):t,state:n,key:t&&t.key||r||Rn(),unstable_mask:i}}function Vn({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function Hn(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function Un(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=Pn(e)?e:Bn(h.location,e,t);n&&n(r,e),l=u()+1;let d=zn(r,l),f=h.createHref(r.unstable_mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=Pn(e)?e:Bn(h.location,e,t);n&&n(r,e),l=u();let i=zn(r,l),d=h.createHref(r.unstable_mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return Wn(e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(Nn,d),c=e,()=>{i.removeEventListener(Nn,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function Wn(e,t=!1){let n=`http://localhost`;typeof window<`u`&&(n=window.location.origin===`null`?window.location.href:window.location.origin),In(n,`No window.location.(origin|href) available to create URL`);let r=typeof e==`string`?e:Vn(e);return r=r.replace(/ $/,`%20`),!t&&r.startsWith(`//`)&&(r=n+r),new URL(r,n)}function Gn(e,t,n=`/`){return Kn(e,t,n,!1)}function Kn(e,t,n,r){let i=ur((typeof t==`string`?Hn(t):t).pathname||`/`,n);if(i==null)return null;let a=Jn(e);Xn(a);let o=null;for(let e=0;o==null&&e{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;In(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=_r([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(In(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),Jn(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:ir(l,e.index),routesMeta:u})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of Yn(e.path))a(e,t,!0,n)}),t}function Yn(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=Yn(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function Xn(e){e.sort((e,t)=>e.score===t.score?ar(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var Zn=/^:[\w-]+$/,Qn=3,$n=2,er=1,tr=10,nr=-2,rr=e=>e===`*`;function ir(e,t){let n=e.split(`/`),r=n.length;return n.some(rr)&&(r+=nr),t&&(r+=$n),n.filter(e=>!rr(e)).reduce((e,t)=>e+(Zn.test(t)?Qn:t===``?er:tr),r)}function ar(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function or(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function cr(e,t=!1,n=!0){Ln(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function lr(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return Ln(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function ur(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}var dr=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function G(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?Hn(e):e,a;return n?(n=n.replace(/\/\/+/g,`/`),a=n.startsWith(`/`)?fr(n.substring(1),`/`):fr(n,t)):a=t,{pathname:a,search:yr(r),hash:br(i)}}function fr(e,t){let n=t.replace(/\/+$/,``).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function pr(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function mr(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function hr(e){let t=mr(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function gr(e,t,n,r=!1){let i;typeof e==`string`?i=Hn(e):(i={...e},In(!i.pathname||!i.pathname.includes(`?`),pr(`?`,`pathname`,`search`,i)),In(!i.pathname||!i.pathname.includes(`#`),pr(`#`,`pathname`,`hash`,i)),In(!i.search||!i.search.includes(`#`),pr(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=G(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var _r=e=>e.join(`/`).replace(/\/\/+/g,`/`),vr=e=>e.replace(/\/+$/,``).replace(/^\/*/,`/`),yr=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,br=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,xr=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function Sr(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function Cr(e){return e.map(e=>e.route.path).filter(Boolean).join(`/`).replace(/\/\/*/g,`/`)||`/`}var wr=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function Tr(e,t){let n=e;if(typeof n!=`string`||!dr.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(wr)try{let e=new URL(window.location.href),r=n.startsWith(`//`)?new URL(e.protocol+n):new URL(n),a=ur(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{Ln(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var Er=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(Er);var Dr=[`GET`,...Er];new Set(Dr);var Or=W.createContext(null);Or.displayName=`DataRouter`;var kr=W.createContext(null);kr.displayName=`DataRouterState`;var Ar=W.createContext(!1);function jr(){return W.useContext(Ar)}var Mr=W.createContext({isTransitioning:!1});Mr.displayName=`ViewTransition`;var Nr=W.createContext(new Map);Nr.displayName=`Fetchers`;var Pr=W.createContext(null);Pr.displayName=`Await`;var Fr=W.createContext(null);Fr.displayName=`Navigation`;var Ir=W.createContext(null);Ir.displayName=`Location`;var Lr=W.createContext({outlet:null,matches:[],isDataRoute:!1});Lr.displayName=`Route`;var Rr=W.createContext(null);Rr.displayName=`RouteError`;var zr=`REACT_ROUTER_ERROR`,Br=`REDIRECT`,Vr=`ROUTE_ERROR_RESPONSE`;function Hr(e){if(e.startsWith(`${zr}:${Br}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function Ur(e){if(e.startsWith(`${zr}:${Vr}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new xr(t.status,t.statusText,t.data)}catch{}}function Wr(e,{relative:t}={}){In(Gr(),`useHref() may be used only in the context of a component.`);let{basename:n,navigator:r}=W.useContext(Fr),{hash:i,pathname:a,search:o}=ti(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:_r([n,a])),r.createHref({pathname:s,search:o,hash:i})}function Gr(){return W.useContext(Ir)!=null}function Kr(){return In(Gr(),`useLocation() may be used only in the context of a component.`),W.useContext(Ir).location}var qr=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function Jr(e){W.useContext(Fr).static||W.useLayoutEffect(e)}function Yr(){let{isDataRoute:e}=W.useContext(Lr);return e?bi():Xr()}function Xr(){In(Gr(),`useNavigate() may be used only in the context of a component.`);let e=W.useContext(Or),{basename:t,navigator:n}=W.useContext(Fr),{matches:r}=W.useContext(Lr),{pathname:i}=Kr(),a=JSON.stringify(hr(r)),o=W.useRef(!1);return Jr(()=>{o.current=!0}),W.useCallback((r,s={})=>{if(Ln(o.current,qr),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=gr(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:_r([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}var Zr=W.createContext(null);function Qr(){return W.useContext(Zr)}function $r(e){let t=W.useContext(Lr).outlet;return W.useMemo(()=>t&&W.createElement(Zr.Provider,{value:e},t),[t,e])}function ei(){let{matches:e}=W.useContext(Lr),t=e[e.length-1];return t?t.params:{}}function ti(e,{relative:t}={}){let{matches:n}=W.useContext(Lr),{pathname:r}=Kr(),i=JSON.stringify(hr(n));return W.useMemo(()=>gr(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function ni(e,t){return ri(e,t)}function ri(e,t,n){In(Gr(),`useRoutes() may be used only in the context of a component.`);let{navigator:r}=W.useContext(Fr),{matches:i}=W.useContext(Lr),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;Si(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant (or called \`useRoutes()\`) at "${s}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. - -Please change the parent to .`)}let u=Kr(),d;if(t){let e=typeof t==`string`?Hn(t):t;In(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=Gn(e,{pathname:p});Ln(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),Ln(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let h=ui(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:_r([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:_r([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?W.createElement(Ir.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,unstable_mask:void 0,...d},navigationType:`POP`}},h):h}function ii(){let e=yi(),t=Sr(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=W.createElement(W.Fragment,null,W.createElement(`p`,null,`💿 Hey developer 👋`),W.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,W.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,W.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),W.createElement(W.Fragment,null,W.createElement(`h2`,null,`Unexpected Application Error!`),W.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?W.createElement(`pre`,{style:i},n):null,o)}var ai=W.createElement(ii,null),oi=class extends W.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Ur(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:W.createElement(Lr.Provider,{value:this.props.routeContext},W.createElement(Rr.Provider,{value:e,children:this.props.component}));return this.context?W.createElement(ci,{error:e},t):t}};oi.contextType=Ar;var si=new WeakMap;function ci({children:e,error:t}){let{basename:n}=W.useContext(Fr);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Hr(t.digest);if(e){let r=si.get(t);if(r)throw r;let i=Tr(e.location,n);if(wr&&!si.get(t))if(i.isExternal||e.reloadDocument)window.location.href=i.absoluteURL||i.to;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw si.set(t,n),n}return W.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${i.absoluteURL||i.to}`})}}return e}function li({routeContext:e,match:t,children:n}){let r=W.useContext(Or);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),W.createElement(Lr.Provider,{value:e},n)}function ui(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);In(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},unstable_pattern:Cr(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||ai,o&&(s<0&&c===0?(Si(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?W.createElement(n.route.Component,null):n.route.element?n.route.element:e,W.createElement(li,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?W.createElement(oi,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function di(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function fi(e){let t=W.useContext(Or);return In(t,di(e)),t}function pi(e){let t=W.useContext(kr);return In(t,di(e)),t}function mi(e){let t=W.useContext(Lr);return In(t,di(e)),t}function hi(e){let t=mi(e),n=t.matches[t.matches.length-1];return In(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function gi(){return hi(`useRouteId`)}function _i(){return pi(`useNavigation`).navigation}function vi(){let{matches:e,loaderData:t}=pi(`useMatches`);return W.useMemo(()=>e.map(e=>qn(e,t)),[e,t])}function yi(){let e=W.useContext(Rr),t=pi(`useRouteError`),n=hi(`useRouteError`);return e===void 0?t.errors?.[n]:e}function bi(){let{router:e}=fi(`useNavigate`),t=hi(`useNavigate`),n=W.useRef(!1);return Jr(()=>{n.current=!0}),W.useCallback(async(r,i={})=>{Ln(n.current,qr),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var xi={};function Si(e,t,n){!t&&!xi[e]&&(xi[e]=!0,Ln(!1,n))}W.useOptimistic,W.memo(Ci);function Ci({routes:e,future:t,state:n,isStatic:r,onError:i}){return ri(e,void 0,{state:n,isStatic:r,onError:i,future:t})}function wi(e){return $r(e.context)}function Ti(e){In(!1,`A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .`)}function Ei({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,unstable_useTransitions:o}){In(!Gr(),`You cannot render a inside another . You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=W.useMemo(()=>({basename:s,navigator:i,static:a,unstable_useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=Hn(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,unstable_mask:m}=n,h=W.useMemo(()=>{let e=ur(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,unstable_mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return Ln(h!=null,` is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the won't render anything.`),h==null?null:W.createElement(Fr.Provider,{value:c},W.createElement(Ir.Provider,{children:t,value:h}))}function Di({children:e,location:t}){return ni(Oi(e),t)}W.Component;function Oi(e,t=[]){let n=[];return W.Children.forEach(e,(e,r)=>{if(!W.isValidElement(e))return;let i=[...t,r];if(e.type===W.Fragment){n.push.apply(n,Oi(e.props.children,i));return}In(e.type===Ti,`[${typeof e.type==`string`?e.type:e.type.name}] is not a component. All component children of must be a or `),In(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let a={id:e.props.id||i.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(a.children=Oi(e.props.children,i)),n.push(a)}),n}var ki=`get`,Ai=`application/x-www-form-urlencoded`;function ji(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function Mi(e){return ji(e)&&e.tagName.toLowerCase()===`button`}function Ni(e){return ji(e)&&e.tagName.toLowerCase()===`form`}function Pi(e){return ji(e)&&e.tagName.toLowerCase()===`input`}function Fi(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Ii(e,t){return e.button===0&&(!t||t===`_self`)&&!Fi(e)}function Li(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function Ri(e,t){let n=Li(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var zi=null;function Bi(){if(zi===null)try{new FormData(document.createElement(`form`),0),zi=!1}catch{zi=!0}return zi}var Vi=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Hi(e){return e!=null&&!Vi.has(e)?(Ln(!1,`"${e}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Ai}"`),null):e}function Ui(e,t){let n,r,i,a,o;if(Ni(e)){let o=e.getAttribute(`action`);r=o?ur(o,t):null,n=e.getAttribute(`method`)||ki,i=Hi(e.getAttribute(`enctype`))||Ai,a=new FormData(e)}else if(Mi(e)||Pi(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a + + )} + {!!template.formId && (