From 21267319fd607dbdc199896091ca57c712f4f360 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Mon, 25 Aug 2025 15:41:18 -0400 Subject: [PATCH 01/15] first commit improve performance of permissions and groups --- .../Contracts/PermissionCacheInterface.php | 41 + .../PermissionRepositoryInterface.php | 36 + .../Contracts/PermissionStrategyInterface.php | 21 + .../Managers/TaskSchedulerManager.php | 2 +- .../Providers/PermissionServiceProvider.php | 42 + .../Providers/ProcessMakerServiceProvider.php | 4 + .../Repositories/CaseApiRepository.php | 2 +- .../Repositories/PermissionRepository.php | 178 + .../Services/PermissionCacheService.php | 163 + .../Services/PermissionServiceManager.php | 186 + .../CachedPermissionStrategy.php | 75 + ProcessMaker/Traits/HasAuthorization.php | 59 +- ProcessMaker/Traits/HasComments.php | 2 +- public/builds/login/js/app-login.js | 44575 ++++++++++++++++ public/builds/login/js/manifest.js | 189 + public/builds/login/js/vendor.js | 11966 +++++ .../Traits/HasAuthorizationMiddlewareTest.php | 485 + .../Traits/HasAuthorizationOptimizedTest.php | 280 + 18 files changed, 58297 insertions(+), 9 deletions(-) create mode 100644 ProcessMaker/Contracts/PermissionCacheInterface.php create mode 100644 ProcessMaker/Contracts/PermissionRepositoryInterface.php create mode 100644 ProcessMaker/Contracts/PermissionStrategyInterface.php create mode 100644 ProcessMaker/Providers/PermissionServiceProvider.php create mode 100644 ProcessMaker/Repositories/PermissionRepository.php create mode 100644 ProcessMaker/Services/PermissionCacheService.php create mode 100644 ProcessMaker/Services/PermissionServiceManager.php create mode 100644 ProcessMaker/Services/PermissionStrategies/CachedPermissionStrategy.php create mode 100644 public/builds/login/js/app-login.js create mode 100644 public/builds/login/js/manifest.js create mode 100644 public/builds/login/js/vendor.js create mode 100644 tests/unit/ProcessMaker/Traits/HasAuthorizationMiddlewareTest.php create mode 100644 tests/unit/ProcessMaker/Traits/HasAuthorizationOptimizedTest.php diff --git a/ProcessMaker/Contracts/PermissionCacheInterface.php b/ProcessMaker/Contracts/PermissionCacheInterface.php new file mode 100644 index 0000000000..e76dc9286e --- /dev/null +++ b/ProcessMaker/Contracts/PermissionCacheInterface.php @@ -0,0 +1,41 @@ +save(); } break; - case 'SCHEDULED_JOB': + case 'SCHEDULED_JOB': $this->executeScheduledJob($config); $task->last_execution = $today->format('Y-m-d H:i:s'); $task->save(); diff --git a/ProcessMaker/Providers/PermissionServiceProvider.php b/ProcessMaker/Providers/PermissionServiceProvider.php new file mode 100644 index 0000000000..021c19a0d4 --- /dev/null +++ b/ProcessMaker/Providers/PermissionServiceProvider.php @@ -0,0 +1,42 @@ +app->bind(PermissionRepositoryInterface::class, PermissionRepository::class); + $this->app->bind(PermissionCacheInterface::class, PermissionCacheService::class); + + // Bind the service manager as a singleton + $this->app->singleton(PermissionServiceManager::class, function ($app) { + return new PermissionServiceManager( + $app->make(PermissionRepositoryInterface::class), + $app->make(PermissionCacheInterface::class) + ); + }); + } + + /** + * Bootstrap services. + */ + public function boot(): void + { + // Publish configuration if needed + // $this->publishes([ + // __DIR__.'/../config/permissions.php' => config_path('permissions.php'), + // ], 'permissions'); + } +} diff --git a/ProcessMaker/Providers/ProcessMakerServiceProvider.php b/ProcessMaker/Providers/ProcessMakerServiceProvider.php index 1c18838a0d..08037acbd2 100644 --- a/ProcessMaker/Providers/ProcessMakerServiceProvider.php +++ b/ProcessMaker/Providers/ProcessMakerServiceProvider.php @@ -40,6 +40,7 @@ use ProcessMaker\Multitenancy\Tenant; use ProcessMaker\Observers; use ProcessMaker\PolicyExtension; +use ProcessMaker\Providers\PermissionServiceProvider; use ProcessMaker\Repositories\SettingsConfigRepository; use RuntimeException; use Spatie\Multitenancy\Events\MadeTenantCurrentEvent; @@ -172,6 +173,9 @@ public function register(): void $this->app->register(DuskServiceProvider::class); } + // Register our permission services + $this->app->register(PermissionServiceProvider::class); + $this->app->singleton(Managers\PackageManager::class, function () { return new Managers\PackageManager(); }); diff --git a/ProcessMaker/Repositories/CaseApiRepository.php b/ProcessMaker/Repositories/CaseApiRepository.php index 4d4918217f..0f18942375 100644 --- a/ProcessMaker/Repositories/CaseApiRepository.php +++ b/ProcessMaker/Repositories/CaseApiRepository.php @@ -34,7 +34,7 @@ class CaseApiRepository implements CaseApiRepositoryInterface 'completed_at', 'last_stage_id', 'last_stage_name', - 'progress' + 'progress', ]; protected $sortableFields = [ diff --git a/ProcessMaker/Repositories/PermissionRepository.php b/ProcessMaker/Repositories/PermissionRepository.php new file mode 100644 index 0000000000..54d8d8a4ed --- /dev/null +++ b/ProcessMaker/Repositories/PermissionRepository.php @@ -0,0 +1,178 @@ +permissions()->pluck('name')->toArray(); + + // Get group permissions + $groupPermissions = $this->getGroupPermissions($userId); + + // Merge and deduplicate + $allPermissions = array_merge($userPermissions, $groupPermissions); + $allPermissions = array_unique($allPermissions); + + return $this->addCategoryViewPermissions($allPermissions); + } + + /** + * Get direct user permissions + */ + public function getDirectUserPermissions(int $userId): array + { + $user = User::find($userId); + if (!$user) { + return []; + } + + return $user->permissions()->pluck('name')->toArray(); + } + + /** + * Get group permissions for a user (optimized) + */ + public function getGroupPermissions(int $userId): array + { + // Use Eloquent relationships with eager loading to avoid N+1 queries + $user = User::with([ + 'groupMembersFromMemberable.group.permissions', + ])->find($userId); + + if (!$user) { + return []; + } + + $permissions = []; + + // Get permissions from all groups the user belongs to (already loaded) + foreach ($user->groupMembersFromMemberable as $groupMember) { + $group = $groupMember->group; + if ($group && $group->permissions) { + $groupPermissions = $group->permissions->pluck('name')->toArray(); + $permissions = array_merge($permissions, $groupPermissions); + } + } + + return array_unique($permissions); + } + + /** + * Check if user has a specific permission (optimized) + */ + public function userHasPermission(int $userId, string $permission): bool + { + // Use Eloquent relationships with eager loading to avoid N+1 queries + $user = User::with([ + 'permissions', + 'groupMembersFromMemberable.group.permissions', + ])->find($userId); + + if (!$user) { + return false; + } + + // Check direct user permissions (already loaded) + $hasDirectPermission = $user->permissions->contains('name', $permission); + if ($hasDirectPermission) { + return true; + } + + // Check group permissions (already loaded) + foreach ($user->groupMembersFromMemberable as $groupMember) { + $group = $groupMember->group; + if ($group && $group->permissions) { + $hasGroupPermission = $group->permissions->contains('name', $permission); + if ($hasGroupPermission) { + return true; + } + } + } + + return false; + } + + /** + * Get permissions for a specific group + */ + public function getGroupPermissionsById(int $groupId): array + { + $group = Group::find($groupId); + if (!$group) { + return []; + } + + return $group->permissions()->pluck('name')->toArray(); + } + + /** + * Get nested group permissions (optimized recursive) + */ + public function getNestedGroupPermissions(int $groupId): array + { + $group = Group::find($groupId); + if (!$group) { + return []; + } + + $permissions = []; + + // Get direct group permissions + $groupPermissions = $group->permissions()->pluck('name')->toArray(); + $permissions = array_merge($permissions, $groupPermissions); + + // Get nested group permissions recursively + foreach ($group->groupMembersFromMemberable as $member) { + if ($member->member_type === Group::class) { + $nestedPermissions = $this->getNestedGroupPermissions($member->member_id); + $permissions = array_merge($permissions, $nestedPermissions); + } + } + + return array_unique($permissions); + } + + /** + * Add category view permissions based on create/edit permissions + */ + private function addCategoryViewPermissions(array $permissions): array + { + $addFor = [ + 'processes' => 'view-process-categories', + 'scripts' => 'view-script-categories', + 'screens' => 'view-screen-categories', + ]; + + foreach ($addFor as $resource => $categoryPermission) { + if ( + in_array('create-' . $resource, $permissions) || + in_array('edit-' . $resource, $permissions) + ) { + if (!in_array($categoryPermission, $permissions)) { + $permissions[] = $categoryPermission; + } + } + } + + return $permissions; + } +} diff --git a/ProcessMaker/Services/PermissionCacheService.php b/ProcessMaker/Services/PermissionCacheService.php new file mode 100644 index 0000000000..167f7be0e8 --- /dev/null +++ b/ProcessMaker/Services/PermissionCacheService.php @@ -0,0 +1,163 @@ +getUserPermissionsKey($userId); + + try { + return Cache::get($key); + } catch (\Exception $e) { + Log::warning("Failed to get cached user permissions for user {$userId}: " . $e->getMessage()); + + return null; + } + } + + /** + * Cache user permissions + */ + public function cacheUserPermissions(int $userId, array $permissions): void + { + $key = $this->getUserPermissionsKey($userId); + + try { + Cache::put($key, $permissions, self::USER_PERMISSIONS_TTL); + } catch (\Exception $e) { + Log::warning("Failed to cache user permissions for user {$userId}: " . $e->getMessage()); + } + } + + /** + * Get cached permissions for a group + */ + public function getGroupPermissions(int $groupId): ?array + { + $key = $this->getGroupPermissionsKey($groupId); + + try { + return Cache::get($key); + } catch (\Exception $e) { + Log::warning("Failed to get cached group permissions for group {$groupId}: " . $e->getMessage()); + + return null; + } + } + + /** + * Cache group permissions + */ + public function cacheGroupPermissions(int $groupId, array $permissions): void + { + $key = $this->getGroupPermissionsKey($groupId); + + try { + Cache::put($key, $permissions, self::GROUP_PERMISSIONS_TTL); + } catch (\Exception $e) { + Log::warning("Failed to cache group permissions for group {$groupId}: " . $e->getMessage()); + } + } + + /** + * Invalidate user permissions cache + */ + public function invalidateUserPermissions(int $userId): void + { + $key = $this->getUserPermissionsKey($userId); + + try { + Cache::forget($key); + } catch (\Exception $e) { + Log::warning("Failed to invalidate user permissions cache for user {$userId}: " . $e->getMessage()); + } + } + + /** + * Invalidate group permissions cache + */ + public function invalidateGroupPermissions(int $groupId): void + { + $key = $this->getGroupPermissionsKey($groupId); + + try { + Cache::forget($key); + } catch (\Exception $e) { + Log::warning("Failed to invalidate group permissions cache for group {$groupId}: " . $e->getMessage()); + } + } + + /** + * Clear all permission caches + */ + public function clearAll(): void + { + try { + // Clear all permission-related caches + Cache::flush(); + } catch (\Exception $e) { + Log::warning('Failed to clear all permission caches: ' . $e->getMessage()); + } + } + + /** + * Get cache key for user permissions + */ + private function getUserPermissionsKey(int $userId): string + { + return self::USER_PERMISSIONS_KEY . ":{$userId}"; + } + + /** + * Get cache key for group permissions + */ + private function getGroupPermissionsKey(int $groupId): string + { + return self::GROUP_PERMISSIONS_KEY . ":{$groupId}"; + } + + /** + * Warm up cache for a user + */ + public function warmUpUserCache(int $userId, array $permissions): void + { + $this->cacheUserPermissions($userId, $permissions); + } + + /** + * Warm up cache for a group + */ + public function warmUpGroupCache(int $groupId, array $permissions): void + { + $this->cacheGroupPermissions($groupId, $permissions); + } + + /** + * Get cache statistics + */ + public function getCacheStats(): array + { + return [ + 'user_permissions_ttl' => self::USER_PERMISSIONS_TTL, + 'group_permissions_ttl' => self::GROUP_PERMISSIONS_TTL, + 'cache_driver' => config('cache.default'), + ]; + } +} diff --git a/ProcessMaker/Services/PermissionServiceManager.php b/ProcessMaker/Services/PermissionServiceManager.php new file mode 100644 index 0000000000..1c5ee02580 --- /dev/null +++ b/ProcessMaker/Services/PermissionServiceManager.php @@ -0,0 +1,186 @@ +repository = $repository; + $this->cacheService = $cacheService; + + // Register default strategy + $this->registerStrategy(new CachedPermissionStrategy($cacheService, $repository)); + $this->defaultStrategy = $this->strategies['cached'] ?? null; + } + + /** + * Register a permission strategy + */ + public function registerStrategy(PermissionStrategyInterface $strategy): void + { + $this->strategies[$strategy->getStrategyName()] = $strategy; + + if ($this->defaultStrategy === null) { + $this->defaultStrategy = $strategy; + } + } + + /** + * Get all permissions for a user + */ + public function getUserPermissions(int $userId): array + { + // Try cache first + $cachedPermissions = $this->cacheService->getUserPermissions($userId); + + if ($cachedPermissions !== null) { + return $cachedPermissions; + } + + // Get from repository and cache + $permissions = $this->repository->getUserPermissions($userId); + $this->cacheService->cacheUserPermissions($userId, $permissions); + + return $permissions; + } + + /** + * Check if user has permission + */ + public function userHasPermission(int $userId, string $permission): bool + { + if ($this->defaultStrategy === null) { + // Fallback to repository if no strategy available + return $this->repository->userHasPermission($userId, $permission); + } + + return $this->defaultStrategy->hasPermission($userId, $permission); + } + + /** + * Check if user has any of the given permissions + */ + public function userHasAnyPermission(int $userId, array $permissions): bool + { + foreach ($permissions as $permission) { + if ($this->userHasPermission($userId, $permission)) { + return true; + } + } + + return false; + } + + /** + * Check if user has all of the given permissions + */ + public function userHasAllPermissions(int $userId, array $permissions): bool + { + foreach ($permissions as $permission) { + if (!$this->userHasPermission($userId, $permission)) { + return false; + } + } + + return true; + } + + /** + * Warm up cache for a user + */ + public function warmUpUserCache(int $userId): void + { + try { + $permissions = $this->repository->getUserPermissions($userId); + $this->cacheService->cacheUserPermissions($userId, $permissions); + + Log::info("Warmed up permission cache for user {$userId}"); + } catch (\Exception $e) { + Log::error("Failed to warm up permission cache for user {$userId}: " . $e->getMessage()); + } + } + + /** + * Warm up cache for a group + */ + public function warmUpGroupCache(int $groupId): void + { + try { + $permissions = $this->repository->getGroupPermissionsById($groupId); + $this->cacheService->cacheGroupPermissions($groupId, $permissions); + + Log::info("Warmed up permission cache for group {$groupId}"); + } catch (\Exception $e) { + Log::error("Failed to warm up permission cache for group {$groupId}: " . $e->getMessage()); + } + } + + /** + * Invalidate cache for a user + */ + public function invalidateUserCache(int $userId): void + { + $this->cacheService->invalidateUserPermissions($userId); + Log::info("Invalidated permission cache for user {$userId}"); + } + + /** + * Invalidate cache for a group + */ + public function invalidateGroupCache(int $groupId): void + { + $this->cacheService->invalidateGroupPermissions($groupId); + Log::info("Invalidated permission cache for group {$groupId}"); + } + + /** + * Get cache statistics + */ + public function getCacheStats(): array + { + return $this->cacheService->getCacheStats(); + } + + /** + * Get registered strategies + */ + public function getRegisteredStrategies(): array + { + return array_keys($this->strategies); + } + + /** + * Get default strategy + */ + public function getDefaultStrategy(): ?PermissionStrategyInterface + { + return $this->defaultStrategy; + } + + /** + * Set default strategy + */ + public function setDefaultStrategy(string $strategyName): void + { + if (isset($this->strategies[$strategyName])) { + $this->defaultStrategy = $this->strategies[$strategyName]; + } + } +} diff --git a/ProcessMaker/Services/PermissionStrategies/CachedPermissionStrategy.php b/ProcessMaker/Services/PermissionStrategies/CachedPermissionStrategy.php new file mode 100644 index 0000000000..9d4860c9ee --- /dev/null +++ b/ProcessMaker/Services/PermissionStrategies/CachedPermissionStrategy.php @@ -0,0 +1,75 @@ +cacheService = $cacheService; + $this->repository = $repository; + } + + /** + * Check if user has permission using cached strategy + */ + public function hasPermission(int $userId, string $permission): bool + { + // First, try to get from cache + $cachedPermissions = $this->cacheService->getUserPermissions($userId); + + if ($cachedPermissions !== null) { + return in_array($permission, $cachedPermissions); + } + + // If not in cache, get from repository and cache + $permissions = $this->repository->getUserPermissions($userId); + $this->cacheService->cacheUserPermissions($userId, $permissions); + + return in_array($permission, $permissions); + } + + /** + * Get strategy name for identification + */ + public function getStrategyName(): string + { + return 'cached'; + } + + /** + * Check if this strategy can handle the permission check + */ + public function canHandle(string $permission): bool + { + // This strategy can handle all permission types + return true; + } + + /** + * Warm up cache for a user + */ + public function warmUpCache(int $userId): void + { + $permissions = $this->repository->getUserPermissions($userId); + $this->cacheService->cacheUserPermissions($userId, $permissions); + } + + /** + * Invalidate cache for a user + */ + public function invalidateCache(int $userId): void + { + $this->cacheService->invalidateUserPermissions($userId); + } +} diff --git a/ProcessMaker/Traits/HasAuthorization.php b/ProcessMaker/Traits/HasAuthorization.php index d699b403ae..96f27783a1 100644 --- a/ProcessMaker/Traits/HasAuthorization.php +++ b/ProcessMaker/Traits/HasAuthorization.php @@ -6,15 +6,28 @@ use Illuminate\Support\Facades\Log; use ProcessMaker\Models\Group; use ProcessMaker\Models\Permission; +use ProcessMaker\Services\PermissionServiceManager; trait HasAuthorization { + private ?PermissionServiceManager $permissionService = null; + + /** + * Get or create permission service manager + */ + private function getPermissionService(): PermissionServiceManager + { + if ($this->permissionService === null) { + $this->permissionService = app(PermissionServiceManager::class); + } + + return $this->permissionService; + } + public function loadPermissions() { - return array_merge( - $this->loadUserPermissions(), - $this->loadGroupPermissions() - ); + // Use the new optimized service + return $this->getPermissionService()->getUserPermissions($this->id); } public function loadUserPermissions() @@ -74,9 +87,40 @@ public function loadPermissionOfGroups(Group $group, array $permissions = [], ar public function hasPermission($permissionString) { - $permissionStrings = $this->loadPermissions(); + // Use the new optimized service for permission checking + return $this->getPermissionService()->userHasPermission($this->id, $permissionString); + } + + /** + * Check if user has any of the given permissions + */ + public function hasAnyPermission(array $permissions): bool + { + return $this->getPermissionService()->userHasAnyPermission($this->id, $permissions); + } + + /** + * Check if user has all of the given permissions + */ + public function hasAllPermissions(array $permissions): bool + { + return $this->getPermissionService()->userHasAllPermissions($this->id, $permissions); + } + + /** + * Warm up permission cache for this user + */ + public function warmUpPermissionCache(): void + { + $this->getPermissionService()->warmUpUserCache($this->id); + } - return in_array($permissionString, $permissionStrings); + /** + * Invalidate permission cache for this user + */ + public function invalidatePermissionCache(): void + { + $this->getPermissionService()->invalidateUserCache($this->id); } /** @@ -113,5 +157,8 @@ public function giveDirectPermission($permissionNames) $permissionId = Permission::byName($permissionName)->id; $this->permissions()->attach($permissionId); } + + // Invalidate cache after giving new permissions + $this->invalidatePermissionCache(); } } diff --git a/ProcessMaker/Traits/HasComments.php b/ProcessMaker/Traits/HasComments.php index 833e4207f7..e0a0969f76 100644 --- a/ProcessMaker/Traits/HasComments.php +++ b/ProcessMaker/Traits/HasComments.php @@ -25,7 +25,7 @@ public function comments() * @param string|null $subject * @param string $type * @param string|null $caseNumber - * @return \ProcessMaker\Models\Comment + * @return Comment */ public function addComment(string $body, ?User $user = null, ?string $subject = null, string $type = 'LOG', ?string $caseNumber = null) { diff --git a/public/builds/login/js/app-login.js b/public/builds/login/js/app-login.js new file mode 100644 index 0000000000..b6156abd6a --- /dev/null +++ b/public/builds/login/js/app-login.js @@ -0,0 +1,44575 @@ +(self["webpackChunk_processmaker_processmaker"] = self["webpackChunk_processmaker_processmaker"] || []).push([["/builds/login/js/app-login"],{ + +/***/ "./node_modules/@panter/vue-i18next/dist/vue-i18next.esm.js": +/*!******************************************************************!*\ + !*** ./node_modules/@panter/vue-i18next/dist/vue-i18next.esm.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var deepmerge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! deepmerge */ "./node_modules/deepmerge/dist/es.js"); + + +var component = { + name: 'i18next', + functional: true, + props: { + tag: { + type: String, + default: 'span' + }, + path: { + type: String, + required: true + }, + options: { + type: Object + } + }, + render: function render(h, ref) { + var props = ref.props; + var data = ref.data; + var children = ref.children; + var parent = ref.parent; + + var i18next = parent.$i18n; + var $t = parent.$t.bind(parent); + if (!i18next || !$t) { + return h(props.tag, data, children); + } + + var path = props.path; + var options = props.options || {}; + + var REGEXP = i18next.i18next.services.interpolator.regexp; + var i18nextOptions = Object.assign({}, options, + {interpolation: { prefix: '#$?', suffix: '?$#' }}); + var format = $t(path, i18nextOptions); + var tchildren = []; + + format.split(REGEXP).reduce(function (memo, match, index) { + var child; + if (index % 2 === 0) { + if (match.length === 0) { return memo; } + + child = match; + } else { + var place = match.trim(); + // eslint-disable-next-line no-restricted-globals + if (isNaN(parseFloat(place)) || !isFinite(place)) { + children.forEach(function (e) { + if ( + !child && + e.data.attrs && + e.data.attrs.place && + e.data.attrs.place === place + ) { + child = e; + } + }); + } else { + child = children[parseInt(match, 10)]; + } + } + + memo.push(child); + return memo; + }, tchildren); + + return h(props.tag, data, tchildren); + } +}; + +/* eslint-disable import/prefer-default-export */ + +function log(message) { + if (typeof console !== 'undefined') { + console.warn(message); // eslint-disable-line no-console + } +} + +function warn(message) { + log(("[vue-i18next warn]: " + message)); +} + +function deprecate(message) { + log(("[vue-i18next deprecated]: " + message)); +} + +/* eslint-disable no-param-reassign, no-unused-vars */ + +function equalLanguage(el, vnode) { + var vm = vnode.context; + return el._i18nLanguage === vm.$i18n.i18next.language; +} + +function equalValue(value, oldValue) { + if (value === oldValue) { + return true; + } + if (value && oldValue) { + return ( + value.path === oldValue.path && + value.language === oldValue.language && + value.args === oldValue.args + ); + } +} + +function assert(vnode) { + var vm = vnode.context; + + if (!vm.$i18n) { + warn('No VueI18Next instance found in the Vue instance'); + return false; + } + + return true; +} + +function parseValue(value) { + var assign; + + var path; + var language; + var args; + + if (typeof value === 'string') { + path = value; + } else if (toString.call(value) === '[object Object]') { + ((assign = value, path = assign.path, language = assign.language, args = assign.args)); + } + + return { path: path, language: language, args: args }; +} + +function t(el, binding, vnode) { + var value = binding.value; + + var ref = parseValue(value); + var path = ref.path; + var language = ref.language; + var args = ref.args; + if (!path && !language && !args) { + warn('v-t: invalid value'); + return; + } + + if (!path) { + warn('v-t: "path" is required'); + return; + } + + if (language) { + deprecate("v-t: \"language\" is deprecated.Use the \"lng\" property in args.\n https://www.i18next.com/overview/configuration-options#configuration-options"); + } + + var vm = vnode.context; + el.textContent = vm.$i18n.i18next.t(path, Object.assign({}, (language ? { lng: language } : {}), + args)); + + el._i18nLanguage = vm.$i18n.i18next.language; +} + +function bind(el, binding, vnode) { + if (!assert(vnode)) { + return; + } + + t(el, binding, vnode); +} + +function update(el, binding, vnode, oldVNode) { + if (equalLanguage(el, vnode) && equalValue(binding.value, binding.oldValue)) { + return; + } + + t(el, binding, vnode); +} + +var directive = { + bind: bind, + update: update +}; + +/* eslint-disable no-param-reassign, no-unused-vars */ + +function assert$1(vnode) { + var vm = vnode.context; + + if (!vm.$i18n) { + warn('No VueI18Next instance found in the Vue instance'); + return false; + } + + return true; +} + +function waitForIt(el, vnode) { + if (vnode.context.$i18n.i18next.isInitialized) { + el.hidden = false; + } else { + el.hidden = true; + var initialized = function () { + vnode.context.$forceUpdate(); + // due to emitter removing issue in i18next we need to delay remove + setTimeout(function () { + if (vnode.context && vnode.context.$i18n) { + vnode.context.$i18n.i18next.off('initialized', initialized); + } + }, 1000); + }; + vnode.context.$i18n.i18next.on('initialized', initialized); + } +} + +function bind$1(el, binding, vnode) { + if (!assert$1(vnode)) { + return; + } + + waitForIt(el, vnode); +} + +function update$1(el, binding, vnode, oldVNode) { + if (vnode.context.$i18n.i18next.isInitialized) { + el.hidden = false; + } +} + +var waitDirective = { + bind: bind$1, + update: update$1 +}; + +/* eslint-disable import/no-mutable-exports */ + +var Vue; + +function install(_Vue) { + if (install.installed) { + return; + } + install.installed = true; + + Vue = _Vue; + + var getByKey = function (i18nOptions, i18nextOptions) { return function (key) { + if ( + i18nOptions && + i18nOptions.keyPrefix && + !key.includes(i18nextOptions.nsSeparator) + ) { + return ((i18nOptions.keyPrefix) + "." + key); + } + return key; + }; }; + + var getComponentNamespace = function (vm) { + var namespace = vm.$options.name || vm.$options._componentTag; + if (namespace) { + return { + namespace: namespace, + loadNamespace: true + }; + } + + return { + namespace: ("" + (Math.random())) + }; + }; + + Vue.mixin({ + beforeCreate: function beforeCreate() { + var this$1 = this; + + var options = this.$options; + if (options.i18n) { + this._i18n = options.i18n; + } else if (options.parent && options.parent.$i18n) { + this._i18n = options.parent.$i18n; + } + var inlineTranslations = {}; + + if (this._i18n) { + var getNamespace = + this._i18n.options.getComponentNamespace || getComponentNamespace; + var ref = getNamespace(this); + var namespace = ref.namespace; + var loadNamespace = ref.loadNamespace; + + if (options.__i18n) { + options.__i18n.forEach(function (resource) { + inlineTranslations = (0,deepmerge__WEBPACK_IMPORTED_MODULE_0__["default"])( + inlineTranslations, + JSON.parse(resource) + ); + }); + } + + if (options.i18nOptions) { + var ref$1 = this.$options.i18nOptions; + var lng = ref$1.lng; if ( lng === void 0 ) lng = null; + var keyPrefix = ref$1.keyPrefix; if ( keyPrefix === void 0 ) keyPrefix = null; + var messages = ref$1.messages; + var ref$2 = this.$options.i18nOptions; + var namespaces = ref$2.namespaces; + namespaces = namespaces || this._i18n.i18next.options.defaultNS; + + if (typeof namespaces === 'string') { namespaces = [namespaces]; } + var namespacesToLoad = namespaces.concat([namespace]); + + if (messages) { + inlineTranslations = (0,deepmerge__WEBPACK_IMPORTED_MODULE_0__["default"])(inlineTranslations, messages); + } + + this._i18nOptions = { lng: lng, namespaces: namespacesToLoad, keyPrefix: keyPrefix }; + this._i18n.i18next.loadNamespaces(namespaces); + } else if (options.parent && options.parent._i18nOptions) { + this._i18nOptions = Object.assign({}, options.parent._i18nOptions); + this._i18nOptions.namespaces = [ + namespace ].concat( this._i18nOptions.namespaces + ); + } else if (options.__i18n) { + this._i18nOptions = { namespaces: [namespace] }; + } + + if (loadNamespace && this._i18n.options.loadComponentNamespace) { + this._i18n.i18next.loadNamespaces([namespace]); + } + + var languages = Object.keys(inlineTranslations); + languages.forEach(function (lang) { + this$1._i18n.i18next.addResourceBundle( + lang, + namespace, + Object.assign({}, inlineTranslations[lang]), + true, + false + ); + }); + } + + var getKey = getByKey( + this._i18nOptions, + this._i18n ? this._i18n.i18next.options : {} + ); + + if (this._i18nOptions && this._i18nOptions.namespaces) { + var ref$3 = this._i18nOptions; + var lng$1 = ref$3.lng; + var namespaces$1 = ref$3.namespaces; + + var fixedT = this._i18n.i18next.getFixedT(lng$1, namespaces$1); + this._getI18nKey = function (key, i18nextOptions) { return fixedT(getKey(key), i18nextOptions, this$1._i18n.i18nLoadedAt); }; + } else { + this._getI18nKey = function (key, i18nextOptions) { return this$1._i18n.t(getKey(key), i18nextOptions, this$1._i18n.i18nLoadedAt); }; + } + } + }); + + // extend Vue.js + if (!Object.prototype.hasOwnProperty.call(Vue.prototype, '$i18n')) { + Object.defineProperty(Vue.prototype, '$i18n', { + get: function get() { + return this._i18n; + } + }); + } + + Vue.prototype.$t = function t(key, options) { + return this._getI18nKey(key, options); + }; + + Vue.component(component.name, component); + Vue.directive('t', directive); + Vue.directive('waitForT', waitDirective); +} + +var VueI18n = function VueI18n(i18next, opts) { + if ( opts === void 0 ) opts = {}; + + var options = Object.assign({}, {bindI18n: 'languageChanged loaded', + bindStore: 'added removed', + loadComponentNamespace: false}, + opts); + + this._vm = null; + this.i18next = i18next; + this.options = options; + + this.onI18nChanged = this.onI18nChanged.bind(this); + + if (options.bindI18n) { + this.i18next.on(options.bindI18n, this.onI18nChanged); + } + if (options.bindStore && this.i18next.store) { + this.i18next.store.on(options.bindStore, this.onI18nChanged); + } + + this.resetVM({ i18nLoadedAt: new Date() }); +}; + +var prototypeAccessors = { i18nLoadedAt: { configurable: true } }; + +VueI18n.prototype.resetVM = function resetVM (data) { + var oldVM = this._vm; + var ref = Vue.config; + var silent = ref.silent; + Vue.config.silent = true; + this._vm = new Vue({ data: data }); + Vue.config.silent = silent; + if (oldVM) { + Vue.nextTick(function () { return oldVM.$destroy(); }); + } +}; + +prototypeAccessors.i18nLoadedAt.get = function () { + return this._vm.$data.i18nLoadedAt; +}; + +prototypeAccessors.i18nLoadedAt.set = function (date) { + this._vm.$set(this._vm, 'i18nLoadedAt', date); +}; + +VueI18n.prototype.t = function t (key, options) { + return this.i18next.t(key, options); +}; + +VueI18n.prototype.onI18nChanged = function onI18nChanged () { + this.i18nLoadedAt = new Date(); +}; + +Object.defineProperties( VueI18n.prototype, prototypeAccessors ); + +VueI18n.install = install; +VueI18n.version = "0.15.2"; + +/* istanbul ignore if */ +if (typeof window !== 'undefined' && window.Vue) { + window.Vue.use(VueI18n); +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VueI18n); + + +/***/ }), + +/***/ "./node_modules/axios/index.js": +/*!*************************************!*\ + !*** ./node_modules/axios/index.js ***! + \*************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! ./lib/axios */ "./node_modules/axios/lib/axios.js"); + +/***/ }), + +/***/ "./node_modules/axios/lib/adapters/xhr.js": +/*!************************************************!*\ + !*** ./node_modules/axios/lib/adapters/xhr.js ***! + \************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); +var settle = __webpack_require__(/*! ./../core/settle */ "./node_modules/axios/lib/core/settle.js"); +var cookies = __webpack_require__(/*! ./../helpers/cookies */ "./node_modules/axios/lib/helpers/cookies.js"); +var buildURL = __webpack_require__(/*! ./../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js"); +var buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ "./node_modules/axios/lib/core/buildFullPath.js"); +var parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ "./node_modules/axios/lib/helpers/parseHeaders.js"); +var isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ "./node_modules/axios/lib/helpers/isURLSameOrigin.js"); +var transitionalDefaults = __webpack_require__(/*! ../defaults/transitional */ "./node_modules/axios/lib/defaults/transitional.js"); +var AxiosError = __webpack_require__(/*! ../core/AxiosError */ "./node_modules/axios/lib/core/AxiosError.js"); +var CanceledError = __webpack_require__(/*! ../cancel/CanceledError */ "./node_modules/axios/lib/cancel/CanceledError.js"); +var parseProtocol = __webpack_require__(/*! ../helpers/parseProtocol */ "./node_modules/axios/lib/helpers/parseProtocol.js"); + +module.exports = function xhrAdapter(config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + var requestData = config.data; + var requestHeaders = config.headers; + var responseType = config.responseType; + var onCanceled; + function done() { + if (config.cancelToken) { + config.cancelToken.unsubscribe(onCanceled); + } + + if (config.signal) { + config.signal.removeEventListener('abort', onCanceled); + } + } + + if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + var request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + var username = config.auth.username || ''; + var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; + requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); + } + + var fullPath = buildFullPath(config.baseURL, config.url); + + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + function onloadend() { + if (!request) { + return; + } + // Prepare the response + var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; + var responseData = !responseType || responseType === 'text' || responseType === 'json' ? + request.responseText : request.response; + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request + }; + + settle(function _resolve(value) { + resolve(value); + done(); + }, function _reject(err) { + reject(err); + done(); + }, response); + + // Clean up request + request = null; + } + + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; + var transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(new AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + config, + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if (utils.isStandardBrowserEnv()) { + // Add xsrf header + var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? + cookies.read(config.xsrfCookieName) : + undefined; + + if (xsrfValue) { + requestHeaders[config.xsrfHeaderName] = xsrfValue; + } + } + + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders, function setRequestHeader(val, key) { + if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { + // Remove Content-Type if data is undefined + delete requestHeaders[key]; + } else { + // Otherwise add header to the request + request.setRequestHeader(key, val); + } + }); + } + + // Add withCredentials to request if needed + if (!utils.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = config.responseType; + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', config.onDownloadProgress); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', config.onUploadProgress); + } + + if (config.cancelToken || config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = function(cancel) { + if (!request) { + return; + } + reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel); + request.abort(); + request = null; + }; + + config.cancelToken && config.cancelToken.subscribe(onCanceled); + if (config.signal) { + config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); + } + } + + if (!requestData) { + requestData = null; + } + + var protocol = parseProtocol(fullPath); + + if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) { + reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); + return; + } + + + // Send the request + request.send(requestData); + }); +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/axios.js": +/*!*****************************************!*\ + !*** ./node_modules/axios/lib/axios.js ***! + \*****************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js"); +var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js"); +var Axios = __webpack_require__(/*! ./core/Axios */ "./node_modules/axios/lib/core/Axios.js"); +var mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js"); +var defaults = __webpack_require__(/*! ./defaults */ "./node_modules/axios/lib/defaults/index.js"); + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * @return {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + var context = new Axios(defaultConfig); + var instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context); + + // Copy context to instance + utils.extend(instance, context); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + + return instance; +} + +// Create the default instance to be exported +var axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Expose Cancel & CancelToken +axios.CanceledError = __webpack_require__(/*! ./cancel/CanceledError */ "./node_modules/axios/lib/cancel/CanceledError.js"); +axios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ "./node_modules/axios/lib/cancel/CancelToken.js"); +axios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js"); +axios.VERSION = (__webpack_require__(/*! ./env/data */ "./node_modules/axios/lib/env/data.js").version); +axios.toFormData = __webpack_require__(/*! ./helpers/toFormData */ "./node_modules/axios/lib/helpers/toFormData.js"); + +// Expose AxiosError class +axios.AxiosError = __webpack_require__(/*! ../lib/core/AxiosError */ "./node_modules/axios/lib/core/AxiosError.js"); + +// alias for CanceledError for backward compatibility +axios.Cancel = axios.CanceledError; + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; +axios.spread = __webpack_require__(/*! ./helpers/spread */ "./node_modules/axios/lib/helpers/spread.js"); + +// Expose isAxiosError +axios.isAxiosError = __webpack_require__(/*! ./helpers/isAxiosError */ "./node_modules/axios/lib/helpers/isAxiosError.js"); + +module.exports = axios; + +// Allow use of default import syntax in TypeScript +module.exports["default"] = axios; + + +/***/ }), + +/***/ "./node_modules/axios/lib/cancel/CancelToken.js": +/*!******************************************************!*\ + !*** ./node_modules/axios/lib/cancel/CancelToken.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var CanceledError = __webpack_require__(/*! ./CanceledError */ "./node_modules/axios/lib/cancel/CanceledError.js"); + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @class + * @param {Function} executor The executor function. + */ +function CancelToken(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + var resolvePromise; + + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + var token = this; + + // eslint-disable-next-line func-names + this.promise.then(function(cancel) { + if (!token._listeners) return; + + var i; + var l = token._listeners.length; + + for (i = 0; i < l; i++) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = function(onfulfilled) { + var _resolve; + // eslint-disable-next-line func-names + var promise = new Promise(function(resolve) { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + + return promise; + }; + + executor(function cancel(message) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new CanceledError(message); + resolvePromise(token.reason); + }); +} + +/** + * Throws a `CanceledError` if cancellation has been requested. + */ +CancelToken.prototype.throwIfRequested = function throwIfRequested() { + if (this.reason) { + throw this.reason; + } +}; + +/** + * Subscribe to the cancel signal + */ + +CancelToken.prototype.subscribe = function subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } +}; + +/** + * Unsubscribe from the cancel signal + */ + +CancelToken.prototype.unsubscribe = function unsubscribe(listener) { + if (!this._listeners) { + return; + } + var index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } +}; + +/** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ +CancelToken.source = function source() { + var cancel; + var token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token: token, + cancel: cancel + }; +}; + +module.exports = CancelToken; + + +/***/ }), + +/***/ "./node_modules/axios/lib/cancel/CanceledError.js": +/*!********************************************************!*\ + !*** ./node_modules/axios/lib/cancel/CanceledError.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var AxiosError = __webpack_require__(/*! ../core/AxiosError */ "./node_modules/axios/lib/core/AxiosError.js"); +var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); + +/** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @class + * @param {string=} message The message. + */ +function CanceledError(message) { + // eslint-disable-next-line no-eq-null,eqeqeq + AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED); + this.name = 'CanceledError'; +} + +utils.inherits(CanceledError, AxiosError, { + __CANCEL__: true +}); + +module.exports = CanceledError; + + +/***/ }), + +/***/ "./node_modules/axios/lib/cancel/isCancel.js": +/*!***************************************************!*\ + !*** ./node_modules/axios/lib/cancel/isCancel.js ***! + \***************************************************/ +/***/ ((module) => { + +"use strict"; + + +module.exports = function isCancel(value) { + return !!(value && value.__CANCEL__); +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/Axios.js": +/*!**********************************************!*\ + !*** ./node_modules/axios/lib/core/Axios.js ***! + \**********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); +var buildURL = __webpack_require__(/*! ../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js"); +var InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ "./node_modules/axios/lib/core/InterceptorManager.js"); +var dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ "./node_modules/axios/lib/core/dispatchRequest.js"); +var mergeConfig = __webpack_require__(/*! ./mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js"); +var buildFullPath = __webpack_require__(/*! ./buildFullPath */ "./node_modules/axios/lib/core/buildFullPath.js"); +var validator = __webpack_require__(/*! ../helpers/validator */ "./node_modules/axios/lib/helpers/validator.js"); + +var validators = validator.validators; +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + */ +function Axios(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; +} + +/** + * Dispatch a request + * + * @param {Object} config The config specific for this request (merged with this.defaults) + */ +Axios.prototype.request = function request(configOrUrl, config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof configOrUrl === 'string') { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + + config = mergeConfig(this.defaults, config); + + // Set config.method + if (config.method) { + config.method = config.method.toLowerCase(); + } else if (this.defaults.method) { + config.method = this.defaults.method.toLowerCase(); + } else { + config.method = 'get'; + } + + var transitional = config.transitional; + + if (transitional !== undefined) { + validator.assertOptions(transitional, { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean) + }, false); + } + + // filter out skipped interceptors + var requestInterceptorChain = []; + var synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + var responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + + var promise; + + if (!synchronousRequestInterceptors) { + var chain = [dispatchRequest, undefined]; + + Array.prototype.unshift.apply(chain, requestInterceptorChain); + chain = chain.concat(responseInterceptorChain); + + promise = Promise.resolve(config); + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()); + } + + return promise; + } + + + var newConfig = config; + while (requestInterceptorChain.length) { + var onFulfilled = requestInterceptorChain.shift(); + var onRejected = requestInterceptorChain.shift(); + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected(error); + break; + } + } + + try { + promise = dispatchRequest(newConfig); + } catch (error) { + return Promise.reject(error); + } + + while (responseInterceptorChain.length) { + promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift()); + } + + return promise; +}; + +Axios.prototype.getUri = function getUri(config) { + config = mergeConfig(this.defaults, config); + var fullPath = buildFullPath(config.baseURL, config.url); + return buildURL(fullPath, config.params, config.paramsSerializer); +}; + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url, + data: (config || {}).data + })); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request(mergeConfig(config || {}, { + method: method, + headers: isForm ? { + 'Content-Type': 'multipart/form-data' + } : {}, + url: url, + data: data + })); + }; + } + + Axios.prototype[method] = generateHTTPMethod(); + + Axios.prototype[method + 'Form'] = generateHTTPMethod(true); +}); + +module.exports = Axios; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/AxiosError.js": +/*!***************************************************!*\ + !*** ./node_modules/axios/lib/core/AxiosError.js ***! + \***************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The created error. + */ +function AxiosError(message, code, config, request, response) { + Error.call(this); + this.message = message; + this.name = 'AxiosError'; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + response && (this.response = response); +} + +utils.inherits(AxiosError, Error, { + toJSON: function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: this.config, + code: this.code, + status: this.response && this.response.status ? this.response.status : null + }; + } +}); + +var prototype = AxiosError.prototype; +var descriptors = {}; + +[ + 'ERR_BAD_OPTION_VALUE', + 'ERR_BAD_OPTION', + 'ECONNABORTED', + 'ETIMEDOUT', + 'ERR_NETWORK', + 'ERR_FR_TOO_MANY_REDIRECTS', + 'ERR_DEPRECATED', + 'ERR_BAD_RESPONSE', + 'ERR_BAD_REQUEST', + 'ERR_CANCELED' +// eslint-disable-next-line func-names +].forEach(function(code) { + descriptors[code] = {value: code}; +}); + +Object.defineProperties(AxiosError, descriptors); +Object.defineProperty(prototype, 'isAxiosError', {value: true}); + +// eslint-disable-next-line func-names +AxiosError.from = function(error, code, config, request, response, customProps) { + var axiosError = Object.create(prototype); + + utils.toFlatObject(error, axiosError, function filter(obj) { + return obj !== Error.prototype; + }); + + AxiosError.call(axiosError, error.message, code, config, request, response); + + axiosError.name = error.name; + + customProps && Object.assign(axiosError, customProps); + + return axiosError; +}; + +module.exports = AxiosError; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/InterceptorManager.js": +/*!***********************************************************!*\ + !*** ./node_modules/axios/lib/core/InterceptorManager.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); + +function InterceptorManager() { + this.handlers = []; +} + +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null + }); + return this.handlers.length - 1; +}; + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } +}; + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); +}; + +module.exports = InterceptorManager; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/buildFullPath.js": +/*!******************************************************!*\ + !*** ./node_modules/axios/lib/core/buildFullPath.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js"); +var combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ "./node_modules/axios/lib/helpers/combineURLs.js"); + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * @returns {string} The combined full path + */ +module.exports = function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/dispatchRequest.js": +/*!********************************************************!*\ + !*** ./node_modules/axios/lib/core/dispatchRequest.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); +var transformData = __webpack_require__(/*! ./transformData */ "./node_modules/axios/lib/core/transformData.js"); +var isCancel = __webpack_require__(/*! ../cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js"); +var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults/index.js"); +var CanceledError = __webpack_require__(/*! ../cancel/CanceledError */ "./node_modules/axios/lib/cancel/CanceledError.js"); + +/** + * Throws a `CanceledError` if cancellation has been requested. + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + + if (config.signal && config.signal.aborted) { + throw new CanceledError(); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * @returns {Promise} The Promise to be fulfilled + */ +module.exports = function dispatchRequest(config) { + throwIfCancellationRequested(config); + + // Ensure headers exist + config.headers = config.headers || {}; + + // Transform request data + config.data = transformData.call( + config, + config.data, + config.headers, + config.transformRequest + ); + + // Flatten headers + config.headers = utils.merge( + config.headers.common || {}, + config.headers[config.method] || {}, + config.headers + ); + + utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + function cleanHeaderConfig(method) { + delete config.headers[method]; + } + ); + + var adapter = config.adapter || defaults.adapter; + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call( + config, + response.data, + response.headers, + config.transformResponse + ); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + reason.response.data, + reason.response.headers, + config.transformResponse + ); + } + } + + return Promise.reject(reason); + }); +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/mergeConfig.js": +/*!****************************************************!*\ + !*** ./node_modules/axios/lib/core/mergeConfig.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * @returns {Object} New object resulting from merging config2 to config1 + */ +module.exports = function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + var config = {}; + + function getMergedValue(target, source) { + if (utils.isPlainObject(target) && utils.isPlainObject(source)) { + return utils.merge(target, source); + } else if (utils.isPlainObject(source)) { + return utils.merge({}, source); + } else if (utils.isArray(source)) { + return source.slice(); + } + return source; + } + + // eslint-disable-next-line consistent-return + function mergeDeepProperties(prop) { + if (!utils.isUndefined(config2[prop])) { + return getMergedValue(config1[prop], config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + return getMergedValue(undefined, config1[prop]); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + return getMergedValue(undefined, config2[prop]); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + return getMergedValue(undefined, config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + return getMergedValue(undefined, config1[prop]); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(prop) { + if (prop in config2) { + return getMergedValue(config1[prop], config2[prop]); + } else if (prop in config1) { + return getMergedValue(undefined, config1[prop]); + } + } + + var mergeMap = { + 'url': valueFromConfig2, + 'method': valueFromConfig2, + 'data': valueFromConfig2, + 'baseURL': defaultToConfig2, + 'transformRequest': defaultToConfig2, + 'transformResponse': defaultToConfig2, + 'paramsSerializer': defaultToConfig2, + 'timeout': defaultToConfig2, + 'timeoutMessage': defaultToConfig2, + 'withCredentials': defaultToConfig2, + 'adapter': defaultToConfig2, + 'responseType': defaultToConfig2, + 'xsrfCookieName': defaultToConfig2, + 'xsrfHeaderName': defaultToConfig2, + 'onUploadProgress': defaultToConfig2, + 'onDownloadProgress': defaultToConfig2, + 'decompress': defaultToConfig2, + 'maxContentLength': defaultToConfig2, + 'maxBodyLength': defaultToConfig2, + 'beforeRedirect': defaultToConfig2, + 'transport': defaultToConfig2, + 'httpAgent': defaultToConfig2, + 'httpsAgent': defaultToConfig2, + 'cancelToken': defaultToConfig2, + 'socketPath': defaultToConfig2, + 'responseEncoding': defaultToConfig2, + 'validateStatus': mergeDirectKeys + }; + + utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) { + var merge = mergeMap[prop] || mergeDeepProperties; + var configValue = merge(prop); + (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); + }); + + return config; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/settle.js": +/*!***********************************************!*\ + !*** ./node_modules/axios/lib/core/settle.js ***! + \***********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var AxiosError = __webpack_require__(/*! ./AxiosError */ "./node_modules/axios/lib/core/AxiosError.js"); + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + */ +module.exports = function settle(resolve, reject, response) { + var validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(new AxiosError( + 'Request failed with status code ' + response.status, + [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], + response.config, + response.request, + response + )); + } +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/core/transformData.js": +/*!******************************************************!*\ + !*** ./node_modules/axios/lib/core/transformData.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); +var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults/index.js"); + +/** + * Transform the data for a request or a response + * + * @param {Object|String} data The data to be transformed + * @param {Array} headers The headers for the request or response + * @param {Array|Function} fns A single function or Array of functions + * @returns {*} The resulting transformed data + */ +module.exports = function transformData(data, headers, fns) { + var context = this || defaults; + /*eslint no-param-reassign:0*/ + utils.forEach(fns, function transform(fn) { + data = fn.call(context, data, headers); + }); + + return data; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/defaults/index.js": +/*!**************************************************!*\ + !*** ./node_modules/axios/lib/defaults/index.js ***! + \**************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); +var normalizeHeaderName = __webpack_require__(/*! ../helpers/normalizeHeaderName */ "./node_modules/axios/lib/helpers/normalizeHeaderName.js"); +var AxiosError = __webpack_require__(/*! ../core/AxiosError */ "./node_modules/axios/lib/core/AxiosError.js"); +var transitionalDefaults = __webpack_require__(/*! ./transitional */ "./node_modules/axios/lib/defaults/transitional.js"); +var toFormData = __webpack_require__(/*! ../helpers/toFormData */ "./node_modules/axios/lib/helpers/toFormData.js"); + +var DEFAULT_CONTENT_TYPE = { + 'Content-Type': 'application/x-www-form-urlencoded' +}; + +function setContentTypeIfUnset(headers, value) { + if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { + headers['Content-Type'] = value; + } +} + +function getDefaultAdapter() { + var adapter; + if (typeof XMLHttpRequest !== 'undefined') { + // For browsers use XHR adapter + adapter = __webpack_require__(/*! ../adapters/xhr */ "./node_modules/axios/lib/adapters/xhr.js"); + } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { + // For node use HTTP adapter + adapter = __webpack_require__(/*! ../adapters/http */ "./node_modules/axios/lib/adapters/xhr.js"); + } + return adapter; +} + +function stringifySafely(rawValue, parser, encoder) { + if (utils.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + + return (encoder || JSON.stringify)(rawValue); +} + +var defaults = { + + transitional: transitionalDefaults, + + adapter: getDefaultAdapter(), + + transformRequest: [function transformRequest(data, headers) { + normalizeHeaderName(headers, 'Accept'); + normalizeHeaderName(headers, 'Content-Type'); + + if (utils.isFormData(data) || + utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); + return data.toString(); + } + + var isObjectPayload = utils.isObject(data); + var contentType = headers && headers['Content-Type']; + + var isFileList; + + if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) { + var _FormData = this.env && this.env.FormData; + return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData()); + } else if (isObjectPayload || contentType === 'application/json') { + setContentTypeIfUnset(headers, 'application/json'); + return stringifySafely(data); + } + + return data; + }], + + transformResponse: [function transformResponse(data) { + var transitional = this.transitional || defaults.transitional; + var silentJSONParsing = transitional && transitional.silentJSONParsing; + var forcedJSONParsing = transitional && transitional.forcedJSONParsing; + var strictJSONParsing = !silentJSONParsing && this.responseType === 'json'; + + if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) { + try { + return JSON.parse(data); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + + return data; + }], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + env: { + FormData: __webpack_require__(/*! ./env/FormData */ "./node_modules/axios/lib/helpers/null.js") + }, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + + headers: { + common: { + 'Accept': 'application/json, text/plain, */*' + } + } +}; + +utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { + defaults.headers[method] = {}; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); +}); + +module.exports = defaults; + + +/***/ }), + +/***/ "./node_modules/axios/lib/defaults/transitional.js": +/*!*********************************************************!*\ + !*** ./node_modules/axios/lib/defaults/transitional.js ***! + \*********************************************************/ +/***/ ((module) => { + +"use strict"; + + +module.exports = { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/env/data.js": +/*!********************************************!*\ + !*** ./node_modules/axios/lib/env/data.js ***! + \********************************************/ +/***/ ((module) => { + +module.exports = { + "version": "0.27.2" +}; + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/bind.js": +/*!************************************************!*\ + !*** ./node_modules/axios/lib/helpers/bind.js ***! + \************************************************/ +/***/ ((module) => { + +"use strict"; + + +module.exports = function bind(fn, thisArg) { + return function wrap() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + return fn.apply(thisArg, args); + }; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/buildURL.js": +/*!****************************************************!*\ + !*** ./node_modules/axios/lib/helpers/buildURL.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); + +function encode(val) { + return encodeURIComponent(val). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ +module.exports = function buildURL(url, params, paramsSerializer) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + var serializedParams; + if (paramsSerializer) { + serializedParams = paramsSerializer(params); + } else if (utils.isURLSearchParams(params)) { + serializedParams = params.toString(); + } else { + var parts = []; + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + + if (utils.isArray(val)) { + key = key + '[]'; + } else { + val = [val]; + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString(); + } else if (utils.isObject(v)) { + v = JSON.stringify(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + serializedParams = parts.join('&'); + } + + if (serializedParams) { + var hashmarkIndex = url.indexOf('#'); + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/combineURLs.js": +/*!*******************************************************!*\ + !*** ./node_modules/axios/lib/helpers/combineURLs.js ***! + \*******************************************************/ +/***/ ((module) => { + +"use strict"; + + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +module.exports = function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/cookies.js": +/*!***************************************************!*\ + !*** ./node_modules/axios/lib/helpers/cookies.js ***! + \***************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs support document.cookie + (function standardBrowserEnv() { + return { + write: function write(name, value, expires, path, domain, secure) { + var cookie = []; + cookie.push(name + '=' + encodeURIComponent(value)); + + if (utils.isNumber(expires)) { + cookie.push('expires=' + new Date(expires).toGMTString()); + } + + if (utils.isString(path)) { + cookie.push('path=' + path); + } + + if (utils.isString(domain)) { + cookie.push('domain=' + domain); + } + + if (secure === true) { + cookie.push('secure'); + } + + document.cookie = cookie.join('; '); + }, + + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + }; + })() : + + // Non standard browser env (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return { + write: function write() {}, + read: function read() { return null; }, + remove: function remove() {} + }; + })() +); + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js": +/*!*********************************************************!*\ + !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***! + \*********************************************************/ +/***/ ((module) => { + +"use strict"; + + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +module.exports = function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/isAxiosError.js": +/*!********************************************************!*\ + !*** ./node_modules/axios/lib/helpers/isAxiosError.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); + +/** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ +module.exports = function isAxiosError(payload) { + return utils.isObject(payload) && (payload.isAxiosError === true); +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js": +/*!***********************************************************!*\ + !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; + + /** + * Parse a URL to discover it's components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + var href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })() +); + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/normalizeHeaderName.js": +/*!***************************************************************!*\ + !*** ./node_modules/axios/lib/helpers/normalizeHeaderName.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); + +module.exports = function normalizeHeaderName(headers, normalizedName) { + utils.forEach(headers, function processHeader(value, name) { + if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { + headers[normalizedName] = value; + delete headers[name]; + } + }); +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/null.js": +/*!************************************************!*\ + !*** ./node_modules/axios/lib/helpers/null.js ***! + \************************************************/ +/***/ ((module) => { + +// eslint-disable-next-line strict +module.exports = null; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/parseHeaders.js": +/*!********************************************************!*\ + !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); + +// Headers whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +var ignoreDuplicateOf = [ + 'age', 'authorization', 'content-length', 'content-type', 'etag', + 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', + 'last-modified', 'location', 'max-forwards', 'proxy-authorization', + 'referer', 'retry-after', 'user-agent' +]; + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} headers Headers needing to be parsed + * @returns {Object} Headers parsed into an object + */ +module.exports = function parseHeaders(headers) { + var parsed = {}; + var key; + var val; + var i; + + if (!headers) { return parsed; } + + utils.forEach(headers.split('\n'), function parser(line) { + i = line.indexOf(':'); + key = utils.trim(line.substr(0, i)).toLowerCase(); + val = utils.trim(line.substr(i + 1)); + + if (key) { + if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { + return; + } + if (key === 'set-cookie') { + parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + } + }); + + return parsed; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/parseProtocol.js": +/*!*********************************************************!*\ + !*** ./node_modules/axios/lib/helpers/parseProtocol.js ***! + \*********************************************************/ +/***/ ((module) => { + +"use strict"; + + +module.exports = function parseProtocol(url) { + var match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return match && match[1] || ''; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/spread.js": +/*!**************************************************!*\ + !*** ./node_modules/axios/lib/helpers/spread.js ***! + \**************************************************/ +/***/ ((module) => { + +"use strict"; + + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * @returns {Function} + */ +module.exports = function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/toFormData.js": +/*!******************************************************!*\ + !*** ./node_modules/axios/lib/helpers/toFormData.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); + +/** + * Convert a data object to FormData + * @param {Object} obj + * @param {?Object} [formData] + * @returns {Object} + **/ + +function toFormData(obj, formData) { + // eslint-disable-next-line no-param-reassign + formData = formData || new FormData(); + + var stack = []; + + function convertValue(value) { + if (value === null) return ''; + + if (utils.isDate(value)) { + return value.toISOString(); + } + + if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) { + return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); + } + + return value; + } + + function build(data, parentKey) { + if (utils.isPlainObject(data) || utils.isArray(data)) { + if (stack.indexOf(data) !== -1) { + throw Error('Circular reference detected in ' + parentKey); + } + + stack.push(data); + + utils.forEach(data, function each(value, key) { + if (utils.isUndefined(value)) return; + var fullKey = parentKey ? parentKey + '.' + key : key; + var arr; + + if (value && !parentKey && typeof value === 'object') { + if (utils.endsWith(key, '{}')) { + // eslint-disable-next-line no-param-reassign + value = JSON.stringify(value); + } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) { + // eslint-disable-next-line func-names + arr.forEach(function(el) { + !utils.isUndefined(el) && formData.append(fullKey, convertValue(el)); + }); + return; + } + } + + build(value, fullKey); + }); + + stack.pop(); + } else { + formData.append(parentKey, convertValue(data)); + } + } + + build(obj); + + return formData; +} + +module.exports = toFormData; + + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/validator.js": +/*!*****************************************************!*\ + !*** ./node_modules/axios/lib/helpers/validator.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var VERSION = (__webpack_require__(/*! ../env/data */ "./node_modules/axios/lib/env/data.js").version); +var AxiosError = __webpack_require__(/*! ../core/AxiosError */ "./node_modules/axios/lib/core/AxiosError.js"); + +var validators = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) { + validators[type] = function validator(thing) { + return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; +}); + +var deprecatedWarnings = {}; + +/** + * Transitional option validator + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * @returns {function} + */ +validators.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); + } + + // eslint-disable-next-line func-names + return function(value, opt, opts) { + if (validator === false) { + throw new AxiosError( + formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), + AxiosError.ERR_DEPRECATED + ); + } + + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn( + formatMessage( + opt, + ' has been deprecated since v' + version + ' and will be removed in the near future' + ) + ); + } + + return validator ? validator(value, opt, opts) : true; + }; +}; + +/** + * Assert object's properties type + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + */ + +function assertOptions(options, schema, allowUnknown) { + if (typeof options !== 'object') { + throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); + } + var keys = Object.keys(options); + var i = keys.length; + while (i-- > 0) { + var opt = keys[i]; + var validator = schema[opt]; + if (validator) { + var value = options[opt]; + var result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); + } + } +} + +module.exports = { + assertOptions: assertOptions, + validators: validators +}; + + +/***/ }), + +/***/ "./node_modules/axios/lib/utils.js": +/*!*****************************************!*\ + !*** ./node_modules/axios/lib/utils.js ***! + \*****************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js"); + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString; + +// eslint-disable-next-line func-names +var kindOf = (function(cache) { + // eslint-disable-next-line func-names + return function(thing) { + var str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); + }; +})(Object.create(null)); + +function kindOfTest(type) { + type = type.toLowerCase(); + return function isKindOf(thing) { + return kindOf(thing) === type; + }; +} + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +function isArray(val) { + return Array.isArray(val); +} + +/** + * Determine if a value is undefined + * + * @param {Object} val The value to test + * @returns {boolean} True if the value is undefined, otherwise false + */ +function isUndefined(val) { + return typeof val === 'undefined'; +} + +/** + * Determine if a value is a Buffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) + && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @function + * @param {Object} val The value to test + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +var isArrayBuffer = kindOfTest('ArrayBuffer'); + + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + var result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a String, otherwise false + */ +function isString(val) { + return typeof val === 'string'; +} + +/** + * Determine if a value is a Number + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Number, otherwise false + */ +function isNumber(val) { + return typeof val === 'number'; +} + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +function isObject(val) { + return val !== null && typeof val === 'object'; +} + +/** + * Determine if a value is a plain Object + * + * @param {Object} val The value to test + * @return {boolean} True if value is a plain Object, otherwise false + */ +function isPlainObject(val) { + if (kindOf(val) !== 'object') { + return false; + } + + var prototype = Object.getPrototypeOf(val); + return prototype === null || prototype === Object.prototype; +} + +/** + * Determine if a value is a Date + * + * @function + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +var isDate = kindOfTest('Date'); + +/** + * Determine if a value is a File + * + * @function + * @param {Object} val The value to test + * @returns {boolean} True if value is a File, otherwise false + */ +var isFile = kindOfTest('File'); + +/** + * Determine if a value is a Blob + * + * @function + * @param {Object} val The value to test + * @returns {boolean} True if value is a Blob, otherwise false + */ +var isBlob = kindOfTest('Blob'); + +/** + * Determine if a value is a FileList + * + * @function + * @param {Object} val The value to test + * @returns {boolean} True if value is a File, otherwise false + */ +var isFileList = kindOfTest('FileList'); + +/** + * Determine if a value is a Function + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +function isFunction(val) { + return toString.call(val) === '[object Function]'; +} + +/** + * Determine if a value is a Stream + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Stream, otherwise false + */ +function isStream(val) { + return isObject(val) && isFunction(val.pipe); +} + +/** + * Determine if a value is a FormData + * + * @param {Object} thing The value to test + * @returns {boolean} True if value is an FormData, otherwise false + */ +function isFormData(thing) { + var pattern = '[object FormData]'; + return thing && ( + (typeof FormData === 'function' && thing instanceof FormData) || + toString.call(thing) === pattern || + (isFunction(thing.toString) && thing.toString() === pattern) + ); +} + +/** + * Determine if a value is a URLSearchParams object + * @function + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +var isURLSearchParams = kindOfTest('URLSearchParams'); + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * @returns {String} The String freed of excess whitespace + */ +function trim(str) { + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); +} + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + */ +function isStandardBrowserEnv() { + if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || + navigator.product === 'NativeScript' || + navigator.product === 'NS')) { + return false; + } + return ( + typeof window !== 'undefined' && + typeof document !== 'undefined' + ); +} + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +function forEach(obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj); + } + } + } +} + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + var result = {}; + function assignValue(val, key) { + if (isPlainObject(result[key]) && isPlainObject(val)) { + result[key] = merge(result[key], val); + } else if (isPlainObject(val)) { + result[key] = merge({}, val); + } else if (isArray(val)) { + result[key] = val.slice(); + } else { + result[key] = val; + } + } + + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * @return {Object} The resulting value of object a + */ +function extend(a, b, thisArg) { + forEach(b, function assignValue(val, key) { + if (thisArg && typeof val === 'function') { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }); + return a; +} + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * @return {string} content value without BOM + */ +function stripBOM(content) { + if (content.charCodeAt(0) === 0xFEFF) { + content = content.slice(1); + } + return content; +} + +/** + * Inherit the prototype methods from one constructor into another + * @param {function} constructor + * @param {function} superConstructor + * @param {object} [props] + * @param {object} [descriptors] + */ + +function inherits(constructor, superConstructor, props, descriptors) { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + constructor.prototype.constructor = constructor; + props && Object.assign(constructor.prototype, props); +} + +/** + * Resolve object with deep prototype chain to a flat object + * @param {Object} sourceObj source object + * @param {Object} [destObj] + * @param {Function} [filter] + * @returns {Object} + */ + +function toFlatObject(sourceObj, destObj, filter) { + var props; + var i; + var prop; + var merged = {}; + + destObj = destObj || {}; + + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if (!merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = Object.getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + + return destObj; +} + +/* + * determines whether a string ends with the characters of a specified string + * @param {String} str + * @param {String} searchString + * @param {Number} [position= 0] + * @returns {boolean} + */ +function endsWith(str, searchString, position) { + str = String(str); + if (position === undefined || position > str.length) { + position = str.length; + } + position -= searchString.length; + var lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; +} + + +/** + * Returns new array from array like object + * @param {*} [thing] + * @returns {Array} + */ +function toArray(thing) { + if (!thing) return null; + var i = thing.length; + if (isUndefined(i)) return null; + var arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; +} + +// eslint-disable-next-line func-names +var isTypedArray = (function(TypedArray) { + // eslint-disable-next-line func-names + return function(thing) { + return TypedArray && thing instanceof TypedArray; + }; +})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array)); + +module.exports = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isObject: isObject, + isPlainObject: isPlainObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isFunction: isFunction, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isStandardBrowserEnv: isStandardBrowserEnv, + forEach: forEach, + merge: merge, + extend: extend, + trim: trim, + stripBOM: stripBOM, + inherits: inherits, + toFlatObject: toFlatObject, + kindOf: kindOf, + kindOfTest: kindOfTest, + endsWith: endsWith, + toArray: toArray, + isTypedArray: isTypedArray, + isFileList: isFileList +}; + + +/***/ }), + +/***/ "./resources/js/app-login.js": +/*!***********************************!*\ + !*** ./resources/js/app-login.js ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! bootstrap */ "./node_modules/bootstrap/dist/js/bootstrap.js"); +/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(bootstrap__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm.js"); +/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! i18next */ "./node_modules/i18next/dist/es/index.js"); +/* harmony import */ var i18next_chained_backend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! i18next-chained-backend */ "./node_modules/i18next-chained-backend/index.js"); +/* harmony import */ var i18next_chained_backend__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(i18next_chained_backend__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var i18next_localstorage_backend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! i18next-localstorage-backend */ "./node_modules/i18next-localstorage-backend/index.js"); +/* harmony import */ var i18next_localstorage_backend__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(i18next_localstorage_backend__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var i18next_xhr_backend__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! i18next-xhr-backend */ "./node_modules/i18next-xhr-backend/index.js"); +/* harmony import */ var i18next_xhr_backend__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(i18next_xhr_backend__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _panter_vue_i18next__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @panter/vue-i18next */ "./node_modules/@panter/vue-i18next/dist/vue-i18next.esm.js"); +/* harmony import */ var vue_cookies__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-cookies */ "./node_modules/vue-cookies/vue-cookies.js"); +/* harmony import */ var vue_cookies__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(vue_cookies__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var _modules_lang_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/lang.js */ "./resources/js/modules/lang.js"); +/* harmony import */ var _components_common_mixins_accessibility__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/common/mixins/accessibility */ "./resources/js/components/common/mixins/accessibility.js"); +var _document$head$queryS; +function cov_uea4ftz59() { + var path = "/Users/rodrigoquelca/Herd/processmaker/resources/js/app-login.js"; + var hash = "a1fb3675012b262c56bd713cf2e624ea3fc864f6"; + var global = new Function("return this")(); + var gcv = "__coverage__"; + var coverageData = { + path: "/Users/rodrigoquelca/Herd/processmaker/resources/js/app-login.js", + statementMap: { + "0": { + start: { + line: 18, + column: 0 + }, + end: { + line: 18, + column: 23 + } + }, + "1": { + start: { + line: 19, + column: 0 + }, + end: { + line: 19, + column: 29 + } + }, + "2": { + start: { + line: 20, + column: 0 + }, + end: { + line: 20, + column: 45 + } + }, + "3": { + start: { + line: 22, + column: 0 + }, + end: { + line: 22, + column: 45 + } + }, + "4": { + start: { + line: 24, + column: 0 + }, + end: { + line: 24, + column: 17 + } + }, + "5": { + start: { + line: 25, + column: 0 + }, + end: { + line: 25, + column: 17 + } + }, + "6": { + start: { + line: 26, + column: 0 + }, + end: { + line: 26, + column: 29 + } + }, + "7": { + start: { + line: 27, + column: 0 + }, + end: { + line: 27, + column: 27 + } + }, + "8": { + start: { + line: 28, + column: 0 + }, + end: { + line: 28, + column: 27 + } + }, + "9": { + start: { + line: 30, + column: 25 + }, + end: { + line: 30, + column: 30 + } + }, + "10": { + start: { + line: 31, + column: 15 + }, + end: { + line: 33, + column: 1 + } + }, + "11": { + start: { + line: 36, + column: 0 + }, + end: { + line: 36, + column: 45 + } + }, + "12": { + start: { + line: 37, + column: 0 + }, + end: { + line: 37, + column: 30 + } + }, + "13": { + start: { + line: 39, + column: 0 + }, + end: { + line: 56, + column: 2 + } + }, + "14": { + start: { + line: 48, + column: 4 + }, + end: { + line: 48, + column: 56 + } + }, + "15": { + start: { + line: 48, + column: 47 + }, + end: { + line: 48, + column: 54 + } + }, + "16": { + start: { + line: 49, + column: 4 + }, + end: { + line: 49, + column: 40 + } + }, + "17": { + start: { + line: 50, + column: 4 + }, + end: { + line: 50, + column: 48 + } + }, + "18": { + start: { + line: 58, + column: 0 + }, + end: { + line: 81, + column: 3 + } + }, + "19": { + start: { + line: 65, + column: 4 + }, + end: { + line: 65, + column: 46 + } + }, + "20": { + start: { + line: 65, + column: 31 + }, + end: { + line: 65, + column: 44 + } + }, + "21": { + start: { + line: 67, + column: 4 + }, + end: { + line: 67, + column: 50 + } + }, + "22": { + start: { + line: 69, + column: 4 + }, + end: { + line: 69, + column: 17 + } + }, + "23": { + start: { + line: 83, + column: 0 + }, + end: { + line: 83, + column: 75 + } + }, + "24": { + start: { + line: 83, + column: 45 + }, + end: { + line: 83, + column: 71 + } + }, + "25": { + start: { + line: 90, + column: 0 + }, + end: { + line: 90, + column: 49 + } + }, + "26": { + start: { + line: 92, + column: 0 + }, + end: { + line: 92, + column: 93 + } + }, + "27": { + start: { + line: 95, + column: 25 + }, + end: { + line: 98, + column: 1 + } + }, + "28": { + start: { + line: 100, + column: 0 + }, + end: { + line: 100, + column: 77 + } + }, + "29": { + start: { + line: 101, + column: 0 + }, + end: { + line: 117, + column: 3 + } + }, + "30": { + start: { + line: 102, + column: 2 + }, + end: { + line: 104, + column: 3 + } + }, + "31": { + start: { + line: 103, + column: 4 + }, + end: { + line: 103, + column: 64 + } + }, + "32": { + start: { + line: 106, + column: 2 + }, + end: { + line: 114, + column: 5 + } + }, + "33": { + start: { + line: 107, + column: 26 + }, + end: { + line: 107, + column: 44 + } + }, + "34": { + start: { + line: 108, + column: 4 + }, + end: { + line: 113, + column: 5 + } + }, + "35": { + start: { + line: 110, + column: 6 + }, + end: { + line: 110, + column: 31 + } + }, + "36": { + start: { + line: 112, + column: 6 + }, + end: { + line: 112, + column: 57 + } + }, + "37": { + start: { + line: 116, + column: 2 + }, + end: { + line: 116, + column: 16 + } + }, + "38": { + start: { + line: 120, + column: 17 + }, + end: { + line: 120, + column: 21 + } + }, + "39": { + start: { + line: 121, + column: 0 + }, + end: { + line: 123, + column: 1 + } + }, + "40": { + start: { + line: 122, + column: 2 + }, + end: { + line: 122, + column: 46 + } + }, + "41": { + start: { + line: 124, + column: 0 + }, + end: { + line: 124, + column: 60 + } + }, + "42": { + start: { + line: 128, + column: 0 + }, + end: { + line: 139, + column: 3 + } + }, + "43": { + start: { + line: 130, + column: 4 + }, + end: { + line: 137, + column: 7 + } + }, + "44": { + start: { + line: 132, + column: 8 + }, + end: { + line: 135, + column: 9 + } + }, + "45": { + start: { + line: 134, + column: 10 + }, + end: { + line: 134, + column: 17 + } + }, + "46": { + start: { + line: 142, + column: 0 + }, + end: { + line: 142, + column: 52 + } + } + }, + fnMap: { + "0": { + name: "(anonymous_0)", + decl: { + start: { + line: 47, + column: 2 + }, + end: { + line: 47, + column: 3 + } + }, + loc: { + start: { + line: 47, + column: 28 + }, + end: { + line: 51, + column: 3 + } + }, + line: 47 + }, + "1": { + name: "(anonymous_1)", + decl: { + start: { + line: 64, + column: 2 + }, + end: { + line: 64, + column: 3 + } + }, + loc: { + start: { + line: 64, + column: 32 + }, + end: { + line: 70, + column: 3 + } + }, + line: 64 + }, + "2": { + name: "(anonymous_2)", + decl: { + start: { + line: 83, + column: 37 + }, + end: { + line: 83, + column: 38 + } + }, + loc: { + start: { + line: 83, + column: 43 + }, + end: { + line: 83, + column: 73 + } + }, + line: 83 + }, + "3": { + name: "(anonymous_3)", + decl: { + start: { + line: 101, + column: 55 + }, + end: { + line: 101, + column: 56 + } + }, + loc: { + start: { + line: 101, + column: 67 + }, + end: { + line: 117, + column: 1 + } + }, + line: 101 + }, + "4": { + name: "(anonymous_4)", + decl: { + start: { + line: 106, + column: 27 + }, + end: { + line: 106, + column: 28 + } + }, + loc: { + start: { + line: 106, + column: 53 + }, + end: { + line: 114, + column: 3 + } + }, + line: 106 + }, + "5": { + name: "(anonymous_5)", + decl: { + start: { + line: 129, + column: 2 + }, + end: { + line: 129, + column: 3 + } + }, + loc: { + start: { + line: 129, + column: 15 + }, + end: { + line: 138, + column: 3 + } + }, + line: 129 + }, + "6": { + name: "(anonymous_6)", + decl: { + start: { + line: 131, + column: 6 + }, + end: { + line: 131, + column: 7 + } + }, + loc: { + start: { + line: 131, + column: 16 + }, + end: { + line: 136, + column: 7 + } + }, + line: 131 + } + }, + branchMap: { + "0": { + loc: { + start: { + line: 48, + column: 4 + }, + end: { + line: 48, + column: 56 + } + }, + type: "if", + locations: [{ + start: { + line: 48, + column: 4 + }, + end: { + line: 48, + column: 56 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 48 + }, + "1": { + loc: { + start: { + line: 65, + column: 4 + }, + end: { + line: 65, + column: 46 + } + }, + type: "if", + locations: [{ + start: { + line: 65, + column: 4 + }, + end: { + line: 65, + column: 46 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 65 + }, + "2": { + loc: { + start: { + line: 102, + column: 2 + }, + end: { + line: 104, + column: 3 + } + }, + type: "if", + locations: [{ + start: { + line: 102, + column: 2 + }, + end: { + line: 104, + column: 3 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 102 + }, + "3": { + loc: { + start: { + line: 102, + column: 6 + }, + end: { + line: 102, + column: 51 + } + }, + type: "binary-expr", + locations: [{ + start: { + line: 102, + column: 6 + }, + end: { + line: 102, + column: 36 + } + }, { + start: { + line: 102, + column: 40 + }, + end: { + line: 102, + column: 51 + } + }], + line: 102 + }, + "4": { + loc: { + start: { + line: 108, + column: 4 + }, + end: { + line: 113, + column: 5 + } + }, + type: "if", + locations: [{ + start: { + line: 108, + column: 4 + }, + end: { + line: 113, + column: 5 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 108 + }, + "5": { + loc: { + start: { + line: 121, + column: 0 + }, + end: { + line: 123, + column: 1 + } + }, + type: "if", + locations: [{ + start: { + line: 121, + column: 0 + }, + end: { + line: 123, + column: 1 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 121 + }, + "6": { + loc: { + start: { + line: 121, + column: 4 + }, + end: { + line: 121, + column: 71 + } + }, + type: "binary-expr", + locations: [{ + start: { + line: 121, + column: 4 + }, + end: { + line: 121, + column: 23 + } + }, { + start: { + line: 121, + column: 27 + }, + end: { + line: 121, + column: 71 + } + }], + line: 121 + }, + "7": { + loc: { + start: { + line: 132, + column: 8 + }, + end: { + line: 135, + column: 9 + } + }, + type: "if", + locations: [{ + start: { + line: 132, + column: 8 + }, + end: { + line: 135, + column: 9 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 132 + } + }, + s: { + "0": 0, + "1": 0, + "2": 0, + "3": 0, + "4": 0, + "5": 0, + "6": 0, + "7": 0, + "8": 0, + "9": 0, + "10": 0, + "11": 0, + "12": 0, + "13": 0, + "14": 0, + "15": 0, + "16": 0, + "17": 0, + "18": 0, + "19": 0, + "20": 0, + "21": 0, + "22": 0, + "23": 0, + "24": 0, + "25": 0, + "26": 0, + "27": 0, + "28": 0, + "29": 0, + "30": 0, + "31": 0, + "32": 0, + "33": 0, + "34": 0, + "35": 0, + "36": 0, + "37": 0, + "38": 0, + "39": 0, + "40": 0, + "41": 0, + "42": 0, + "43": 0, + "44": 0, + "45": 0, + "46": 0 + }, + f: { + "0": 0, + "1": 0, + "2": 0, + "3": 0, + "4": 0, + "5": 0, + "6": 0 + }, + b: { + "0": [0, 0], + "1": [0, 0], + "2": [0, 0], + "3": [0, 0], + "4": [0, 0], + "5": [0, 0], + "6": [0, 0], + "7": [0, 0] + }, + _coverageSchema: "1a1c01bbd47fc00a2c39e90264f33305004495a9", + hash: "a1fb3675012b262c56bd713cf2e624ea3fc864f6" + }; + var coverage = global[gcv] || (global[gcv] = {}); + if (!coverage[path] || coverage[path].hash !== hash) { + coverage[path] = coverageData; + } + var actualCoverage = coverage[path]; + { + // @ts-ignore + cov_uea4ftz59 = function () { + return actualCoverage; + }; + } + return actualCoverage; +} +cov_uea4ftz59(); + + + +/** + * Setup Translations + */ + + + + + + + + + +cov_uea4ftz59().s[0]++; +window.__ = _modules_lang_js__WEBPACK_IMPORTED_MODULE_7__["default"]; +cov_uea4ftz59().s[1]++; +window._ = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js"); +cov_uea4ftz59().s[2]++; +window.Popper = (__webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js")["default"]); +cov_uea4ftz59().s[3]++; +window.$ = window.jQuery = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); +cov_uea4ftz59().s[4]++; +window.Vue = vue__WEBPACK_IMPORTED_MODULE_9__["default"]; +cov_uea4ftz59().s[5]++; +window.vue = vue__WEBPACK_IMPORTED_MODULE_9__; +cov_uea4ftz59().s[6]++; +window.bootstrap = bootstrap__WEBPACK_IMPORTED_MODULE_0__; +cov_uea4ftz59().s[7]++; +window.Vue.use((vue_cookies__WEBPACK_IMPORTED_MODULE_6___default())); +cov_uea4ftz59().s[8]++; +window.Vue.use(_panter_vue_i18next__WEBPACK_IMPORTED_MODULE_5__["default"]); +var translationsLoaded = (cov_uea4ftz59().s[9]++, false); +var mdates = (cov_uea4ftz59().s[10]++, JSON.parse((_document$head$queryS = document.head.querySelector("meta[name=\"i18n-mdate\"]")) === null || _document$head$queryS === void 0 ? void 0 : _document$head$queryS.content)); + +// Make $t available to all vue instances +cov_uea4ftz59().s[11]++; +vue__WEBPACK_IMPORTED_MODULE_9__["default"].mixin({ + i18n: new _panter_vue_i18next__WEBPACK_IMPORTED_MODULE_5__["default"](i18next__WEBPACK_IMPORTED_MODULE_1__["default"]) +}); +cov_uea4ftz59().s[12]++; +vue__WEBPACK_IMPORTED_MODULE_9__["default"].mixin(_components_common_mixins_accessibility__WEBPACK_IMPORTED_MODULE_8__["default"]); +cov_uea4ftz59().s[13]++; +window.ProcessMaker = { + i18n: i18next__WEBPACK_IMPORTED_MODULE_1__["default"], + /** + * A general use global event bus that can be used + */ + EventBus: new vue__WEBPACK_IMPORTED_MODULE_9__["default"](), + packages: [], + missingTranslations: new Set(), + missingTranslation: function missingTranslation(value) { + cov_uea4ftz59().f[0]++; + cov_uea4ftz59().s[14]++; + if (this.missingTranslations.has(value)) { + cov_uea4ftz59().b[0][0]++; + cov_uea4ftz59().s[15]++; + return; + } else { + cov_uea4ftz59().b[0][1]++; + } + cov_uea4ftz59().s[16]++; + this.missingTranslations.add(value); + cov_uea4ftz59().s[17]++; + console.warn("Missing Translation:", value); + }, + $notifications: { + icons: {} + } +}; +cov_uea4ftz59().s[18]++; +window.ProcessMaker.i18nPromise = i18next__WEBPACK_IMPORTED_MODULE_1__["default"].use((i18next_chained_backend__WEBPACK_IMPORTED_MODULE_2___default())).init({ + lng: document.documentElement.lang, + fallbackLng: "en", + // default language when no translations + returnEmptyString: false, + // When a translation is an empty string, return the default language, not empty + nsSeparator: false, + keySeparator: false, + parseMissingKeyHandler: function parseMissingKeyHandler(value) { + cov_uea4ftz59().f[1]++; + cov_uea4ftz59().s[19]++; + if (!translationsLoaded) { + cov_uea4ftz59().b[1][0]++; + cov_uea4ftz59().s[20]++; + return value; + } else { + cov_uea4ftz59().b[1][1]++; + } + // Report that a translation is missing + cov_uea4ftz59().s[21]++; + window.ProcessMaker.missingTranslation(value); + // Fallback to showing the english version + cov_uea4ftz59().s[22]++; + return value; + }, + backend: { + backends: [(i18next_localstorage_backend__WEBPACK_IMPORTED_MODULE_3___default()), + // Try cache first + (i18next_xhr_backend__WEBPACK_IMPORTED_MODULE_4___default())], + backendOptions: [{ + versions: mdates + }, { + loadPath: "/i18next/fetch/{{lng}}/_default" + }] + } +}); +cov_uea4ftz59().s[23]++; +window.ProcessMaker.i18nPromise.then(function () { + cov_uea4ftz59().f[2]++; + cov_uea4ftz59().s[24]++; + translationsLoaded = true; +}); + +/** + * Create a axios instance which any vue component can bring in to call + * REST api endpoints through oauth authentication + * + */ +cov_uea4ftz59().s[25]++; +window.ProcessMaker.apiClient = __webpack_require__(/*! axios */ "./node_modules/axios/index.js"); +cov_uea4ftz59().s[26]++; +window.ProcessMaker.apiClient.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"; + +// Setup api versions +var apiVersionConfig = (cov_uea4ftz59().s[27]++, [{ + version: "1.0", + baseURL: "/api/1.0/" +}, { + version: "1.1", + baseURL: "/api/1.1/" +}]); +cov_uea4ftz59().s[28]++; +window.ProcessMaker.apiClient.defaults.baseURL = apiVersionConfig[0].baseURL; +cov_uea4ftz59().s[29]++; +window.ProcessMaker.apiClient.interceptors.request.use(function (config) { + cov_uea4ftz59().f[3]++; + cov_uea4ftz59().s[30]++; + if ((cov_uea4ftz59().b[3][0]++, typeof config.url !== "string") || (cov_uea4ftz59().b[3][1]++, !config.url)) { + cov_uea4ftz59().b[2][0]++; + cov_uea4ftz59().s[31]++; + throw new Error("Invalid URL in the request configuration"); + } else { + cov_uea4ftz59().b[2][1]++; + } + cov_uea4ftz59().s[32]++; + apiVersionConfig.forEach(function (_ref) { + var version = _ref.version, + baseURL = _ref.baseURL; + cov_uea4ftz59().f[4]++; + var versionPrefix = (cov_uea4ftz59().s[33]++, "/api/".concat(version, "/")); + cov_uea4ftz59().s[34]++; + if (config.url.startsWith(versionPrefix)) { + cov_uea4ftz59().b[4][0]++; + cov_uea4ftz59().s[35]++; + // eslint-disable-next-line no-param-reassign + config.baseURL = baseURL; + // eslint-disable-next-line no-param-reassign + cov_uea4ftz59().s[36]++; + config.url = config.url.replace(versionPrefix, ""); + } else { + cov_uea4ftz59().b[4][1]++; + } + }); + cov_uea4ftz59().s[37]++; + return config; +}); + +// Set the default API timeout +var apiTimeout = (cov_uea4ftz59().s[38]++, 5000); +cov_uea4ftz59().s[39]++; +if ((cov_uea4ftz59().b[6][0]++, window.Processmaker) && (cov_uea4ftz59().b[6][1]++, window.Processmaker.apiTimeout !== undefined)) { + cov_uea4ftz59().b[5][0]++; + cov_uea4ftz59().s[40]++; + apiTimeout = window.Processmaker.apiTimeout; +} else { + cov_uea4ftz59().b[5][1]++; +} +cov_uea4ftz59().s[41]++; +window.ProcessMaker.apiClient.defaults.timeout = apiTimeout; + +// click an active tab after all components have mounted +cov_uea4ftz59().s[42]++; +vue__WEBPACK_IMPORTED_MODULE_9__["default"].use({ + install: function install(vue) { + cov_uea4ftz59().f[5]++; + cov_uea4ftz59().s[43]++; + vue.mixin({ + mounted: function mounted() { + cov_uea4ftz59().f[6]++; + cov_uea4ftz59().s[44]++; + if (this.$parent) { + cov_uea4ftz59().b[7][0]++; + cov_uea4ftz59().s[45]++; + // only run on root + return; + } else { + cov_uea4ftz59().b[7][1]++; + } + } + }); + } +}); + +// Send an event when the global Vue and ProcessMaker instance is available +cov_uea4ftz59().s[46]++; +window.dispatchEvent(new Event("app-bootstrapped")); + +/***/ }), + +/***/ "./resources/js/components/common/mixins/accessibility.js": +/*!****************************************************************!*\ + !*** ./resources/js/components/common/mixins/accessibility.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"); + +function cov_1m92uxlif6() { + var path = "/Users/rodrigoquelca/Herd/processmaker/resources/js/components/common/mixins/accessibility.js"; + var hash = "0e9d2f7988eca41f690710783b46356cf01e01f4"; + var global = new Function("return this")(); + var gcv = "__coverage__"; + var coverageData = { + path: "/Users/rodrigoquelca/Herd/processmaker/resources/js/components/common/mixins/accessibility.js", + statementMap: { + "0": { + start: { + line: 3, + column: 4 + }, + end: { + line: 5, + column: 6 + } + }, + "1": { + start: { + line: 9, + column: 4 + }, + end: { + line: 13, + column: 5 + } + }, + "2": { + start: { + line: 11, + column: 6 + }, + end: { + line: 11, + column: 62 + } + }, + "3": { + start: { + line: 12, + column: 6 + }, + end: { + line: 12, + column: 64 + } + }, + "4": { + start: { + line: 15, + column: 4 + }, + end: { + line: 22, + column: 5 + } + }, + "5": { + start: { + line: 17, + column: 6 + }, + end: { + line: 17, + column: 77 + } + }, + "6": { + start: { + line: 18, + column: 6 + }, + end: { + line: 18, + column: 41 + } + }, + "7": { + start: { + line: 21, + column: 6 + }, + end: { + line: 21, + column: 37 + } + }, + "8": { + start: { + line: 32, + column: 6 + }, + end: { + line: 35, + column: 7 + } + }, + "9": { + start: { + line: 34, + column: 8 + }, + end: { + line: 34, + column: 15 + } + }, + "10": { + start: { + line: 40, + column: 21 + }, + end: { + line: 42, + column: 27 + } + }, + "11": { + start: { + line: 46, + column: 31 + }, + end: { + line: 46, + column: 101 + } + }, + "12": { + start: { + line: 49, + column: 6 + }, + end: { + line: 56, + column: 7 + } + }, + "13": { + start: { + line: 51, + column: 28 + }, + end: { + line: 51, + column: 84 + } + }, + "14": { + start: { + line: 52, + column: 10 + }, + end: { + line: 54, + column: 11 + } + }, + "15": { + start: { + line: 53, + column: 14 + }, + end: { + line: 53, + column: 21 + } + }, + "16": { + start: { + line: 55, + column: 8 + }, + end: { + line: 55, + column: 32 + } + }, + "17": { + start: { + line: 59, + column: 8 + }, + end: { + line: 61, + column: 9 + } + }, + "18": { + start: { + line: 60, + column: 12 + }, + end: { + line: 60, + column: 24 + } + }, + "19": { + start: { + line: 62, + column: 8 + }, + end: { + line: 67, + column: 9 + } + }, + "20": { + start: { + line: 63, + column: 12 + }, + end: { + line: 63, + column: 35 + } + }, + "21": { + start: { + line: 66, + column: 12 + }, + end: { + line: 66, + column: 78 + } + }, + "22": { + start: { + line: 70, + column: 6 + }, + end: { + line: 72, + column: 7 + } + }, + "23": { + start: { + line: 71, + column: 8 + }, + end: { + line: 71, + column: 18 + } + }, + "24": { + start: { + line: 75, + column: 6 + }, + end: { + line: 78, + column: 7 + } + }, + "25": { + start: { + line: 76, + column: 8 + }, + end: { + line: 76, + column: 84 + } + }, + "26": { + start: { + line: 77, + column: 8 + }, + end: { + line: 77, + column: 59 + } + }, + "27": { + start: { + line: 81, + column: 6 + }, + end: { + line: 81, + column: 83 + } + }, + "28": { + start: { + line: 82, + column: 6 + }, + end: { + line: 82, + column: 57 + } + }, + "29": { + start: { + line: 85, + column: 21 + }, + end: { + line: 85, + column: 64 + } + }, + "30": { + start: { + line: 86, + column: 6 + }, + end: { + line: 88, + column: 7 + } + }, + "31": { + start: { + line: 87, + column: 8 + }, + end: { + line: 87, + column: 40 + } + }, + "32": { + start: { + line: 91, + column: 23 + }, + end: { + line: 94, + column: 19 + } + }, + "33": { + start: { + line: 92, + column: 32 + }, + end: { + line: 92, + column: 46 + } + }, + "34": { + start: { + line: 93, + column: 29 + }, + end: { + line: 93, + column: 48 + } + }, + "35": { + start: { + line: 96, + column: 6 + }, + end: { + line: 98, + column: 7 + } + }, + "36": { + start: { + line: 97, + column: 8 + }, + end: { + line: 97, + column: 15 + } + }, + "37": { + start: { + line: 100, + column: 25 + }, + end: { + line: 100, + column: 57 + } + }, + "38": { + start: { + line: 101, + column: 6 + }, + end: { + line: 103, + column: 7 + } + }, + "39": { + start: { + line: 102, + column: 8 + }, + end: { + line: 102, + column: 27 + } + } + }, + fnMap: { + "0": { + name: "(anonymous_0)", + decl: { + start: { + line: 2, + column: 2 + }, + end: { + line: 2, + column: 3 + } + }, + loc: { + start: { + line: 2, + column: 9 + }, + end: { + line: 6, + column: 3 + } + }, + line: 2 + }, + "1": { + name: "(anonymous_1)", + decl: { + start: { + line: 7, + column: 2 + }, + end: { + line: 7, + column: 3 + } + }, + loc: { + start: { + line: 7, + column: 12 + }, + end: { + line: 23, + column: 3 + } + }, + line: 7 + }, + "2": { + name: "(anonymous_2)", + decl: { + start: { + line: 31, + column: 4 + }, + end: { + line: 31, + column: 5 + } + }, + loc: { + start: { + line: 31, + column: 40 + }, + end: { + line: 57, + column: 5 + } + }, + line: 31 + }, + "3": { + name: "(anonymous_3)", + decl: { + start: { + line: 58, + column: 4 + }, + end: { + line: 58, + column: 5 + } + }, + loc: { + start: { + line: 58, + column: 47 + }, + end: { + line: 68, + column: 5 + } + }, + line: 58 + }, + "4": { + name: "(anonymous_4)", + decl: { + start: { + line: 69, + column: 4 + }, + end: { + line: 69, + column: 5 + } + }, + loc: { + start: { + line: 69, + column: 27 + }, + end: { + line: 73, + column: 5 + } + }, + line: 69 + }, + "5": { + name: "(anonymous_5)", + decl: { + start: { + line: 74, + column: 4 + }, + end: { + line: 74, + column: 5 + } + }, + loc: { + start: { + line: 74, + column: 30 + }, + end: { + line: 79, + column: 5 + } + }, + line: 74 + }, + "6": { + name: "(anonymous_6)", + decl: { + start: { + line: 80, + column: 4 + }, + end: { + line: 80, + column: 5 + } + }, + loc: { + start: { + line: 80, + column: 34 + }, + end: { + line: 83, + column: 5 + } + }, + line: 80 + }, + "7": { + name: "(anonymous_7)", + decl: { + start: { + line: 84, + column: 4 + }, + end: { + line: 84, + column: 5 + } + }, + loc: { + start: { + line: 84, + column: 28 + }, + end: { + line: 89, + column: 5 + } + }, + line: 84 + }, + "8": { + name: "(anonymous_8)", + decl: { + start: { + line: 90, + column: 4 + }, + end: { + line: 90, + column: 5 + } + }, + loc: { + start: { + line: 90, + column: 33 + }, + end: { + line: 104, + column: 5 + } + }, + line: 90 + }, + "9": { + name: "(anonymous_9)", + decl: { + start: { + line: 92, + column: 16 + }, + end: { + line: 92, + column: 17 + } + }, + loc: { + start: { + line: 92, + column: 32 + }, + end: { + line: 92, + column: 46 + } + }, + line: 92 + }, + "10": { + name: "(anonymous_10)", + decl: { + start: { + line: 93, + column: 13 + }, + end: { + line: 93, + column: 14 + } + }, + loc: { + start: { + line: 93, + column: 29 + }, + end: { + line: 93, + column: 48 + } + }, + line: 93 + } + }, + branchMap: { + "0": { + loc: { + start: { + line: 9, + column: 4 + }, + end: { + line: 13, + column: 5 + } + }, + type: "if", + locations: [{ + start: { + line: 9, + column: 4 + }, + end: { + line: 13, + column: 5 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 9 + }, + "1": { + loc: { + start: { + line: 15, + column: 4 + }, + end: { + line: 22, + column: 5 + } + }, + type: "if", + locations: [{ + start: { + line: 15, + column: 4 + }, + end: { + line: 22, + column: 5 + } + }, { + start: { + line: 19, + column: 11 + }, + end: { + line: 22, + column: 5 + } + }], + line: 15 + }, + "2": { + loc: { + start: { + line: 32, + column: 6 + }, + end: { + line: 35, + column: 7 + } + }, + type: "if", + locations: [{ + start: { + line: 32, + column: 6 + }, + end: { + line: 35, + column: 7 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 32 + }, + "3": { + loc: { + start: { + line: 32, + column: 10 + }, + end: { + line: 33, + column: 63 + } + }, + type: "binary-expr", + locations: [{ + start: { + line: 32, + column: 10 + }, + end: { + line: 32, + column: 53 + } + }, { + start: { + line: 33, + column: 13 + }, + end: { + line: 33, + column: 63 + } + }], + line: 32 + }, + "4": { + loc: { + start: { + line: 40, + column: 21 + }, + end: { + line: 42, + column: 27 + } + }, + type: "cond-expr", + locations: [{ + start: { + line: 41, + column: 10 + }, + end: { + line: 41, + column: 34 + } + }, { + start: { + line: 42, + column: 10 + }, + end: { + line: 42, + column: 27 + } + }], + line: 40 + }, + "5": { + loc: { + start: { + line: 49, + column: 6 + }, + end: { + line: 56, + column: 7 + } + }, + type: "if", + locations: [{ + start: { + line: 49, + column: 6 + }, + end: { + line: 56, + column: 7 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 49 + }, + "6": { + loc: { + start: { + line: 52, + column: 10 + }, + end: { + line: 54, + column: 11 + } + }, + type: "if", + locations: [{ + start: { + line: 52, + column: 10 + }, + end: { + line: 54, + column: 11 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 52 + }, + "7": { + loc: { + start: { + line: 52, + column: 14 + }, + end: { + line: 52, + column: 80 + } + }, + type: "binary-expr", + locations: [{ + start: { + line: 52, + column: 14 + }, + end: { + line: 52, + column: 32 + } + }, { + start: { + line: 52, + column: 36 + }, + end: { + line: 52, + column: 80 + } + }], + line: 52 + }, + "8": { + loc: { + start: { + line: 59, + column: 8 + }, + end: { + line: 61, + column: 9 + } + }, + type: "if", + locations: [{ + start: { + line: 59, + column: 8 + }, + end: { + line: 61, + column: 9 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 59 + }, + "9": { + loc: { + start: { + line: 62, + column: 8 + }, + end: { + line: 67, + column: 9 + } + }, + type: "if", + locations: [{ + start: { + line: 62, + column: 8 + }, + end: { + line: 67, + column: 9 + } + }, { + start: { + line: 65, + column: 13 + }, + end: { + line: 67, + column: 9 + } + }], + line: 62 + }, + "10": { + loc: { + start: { + line: 70, + column: 6 + }, + end: { + line: 72, + column: 7 + } + }, + type: "if", + locations: [{ + start: { + line: 70, + column: 6 + }, + end: { + line: 72, + column: 7 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 70 + }, + "11": { + loc: { + start: { + line: 75, + column: 6 + }, + end: { + line: 78, + column: 7 + } + }, + type: "if", + locations: [{ + start: { + line: 75, + column: 6 + }, + end: { + line: 78, + column: 7 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 75 + }, + "12": { + loc: { + start: { + line: 86, + column: 6 + }, + end: { + line: 88, + column: 7 + } + }, + type: "if", + locations: [{ + start: { + line: 86, + column: 6 + }, + end: { + line: 88, + column: 7 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 86 + }, + "13": { + loc: { + start: { + line: 96, + column: 6 + }, + end: { + line: 98, + column: 7 + } + }, + type: "if", + locations: [{ + start: { + line: 96, + column: 6 + }, + end: { + line: 98, + column: 7 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 96 + }, + "14": { + loc: { + start: { + line: 101, + column: 6 + }, + end: { + line: 103, + column: 7 + } + }, + type: "if", + locations: [{ + start: { + line: 101, + column: 6 + }, + end: { + line: 103, + column: 7 + } + }, { + start: { + line: undefined, + column: undefined + }, + end: { + line: undefined, + column: undefined + } + }], + line: 101 + } + }, + s: { + "0": 0, + "1": 0, + "2": 0, + "3": 0, + "4": 0, + "5": 0, + "6": 0, + "7": 0, + "8": 0, + "9": 0, + "10": 0, + "11": 0, + "12": 0, + "13": 0, + "14": 0, + "15": 0, + "16": 0, + "17": 0, + "18": 0, + "19": 0, + "20": 0, + "21": 0, + "22": 0, + "23": 0, + "24": 0, + "25": 0, + "26": 0, + "27": 0, + "28": 0, + "29": 0, + "30": 0, + "31": 0, + "32": 0, + "33": 0, + "34": 0, + "35": 0, + "36": 0, + "37": 0, + "38": 0, + "39": 0 + }, + f: { + "0": 0, + "1": 0, + "2": 0, + "3": 0, + "4": 0, + "5": 0, + "6": 0, + "7": 0, + "8": 0, + "9": 0, + "10": 0 + }, + b: { + "0": [0, 0], + "1": [0, 0], + "2": [0, 0], + "3": [0, 0], + "4": [0, 0], + "5": [0, 0], + "6": [0, 0], + "7": [0, 0], + "8": [0, 0], + "9": [0, 0], + "10": [0, 0], + "11": [0, 0], + "12": [0, 0], + "13": [0, 0], + "14": [0, 0] + }, + _coverageSchema: "1a1c01bbd47fc00a2c39e90264f33305004495a9", + hash: "0e9d2f7988eca41f690710783b46356cf01e01f4" + }; + var coverage = global[gcv] || (global[gcv] = {}); + if (!coverage[path] || coverage[path].hash !== hash) { + coverage[path] = coverageData; + } + var actualCoverage = coverage[path]; + { + // @ts-ignore + cov_1m92uxlif6 = function () { + return actualCoverage; + }; + } + return actualCoverage; +} +cov_1m92uxlif6(); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + data: function data() { + cov_1m92uxlif6().f[0]++; + cov_1m92uxlif6().s[0]++; + return { + focusErrors: null + }; + }, + mounted: function mounted() { + cov_1m92uxlif6().f[1]++; + cov_1m92uxlif6().s[1]++; + // Listen only on the root Vue instance + if (!this.$parent) { + cov_1m92uxlif6().b[0][0]++; + cov_1m92uxlif6().s[2]++; + // Set the focus within any modal or popover that is instantiated + this.$root.$on("bv::modal::shown", this.setFocusWithin); + cov_1m92uxlif6().s[3]++; + this.$root.$on("bv::popover::shown", this.setFocusWithin); + } else { + cov_1m92uxlif6().b[0][1]++; + } + cov_1m92uxlif6().s[4]++; + if (this.focusErrors) { + cov_1m92uxlif6().b[1][0]++; + cov_1m92uxlif6().s[5]++; + // watch an object for form errors + this.$watch(this.focusErrors, this.focusErrorsChanged, { + deep: true + }); + cov_1m92uxlif6().s[6]++; + this.dontListenForApiClientError(); + } else { + cov_1m92uxlif6().b[1][1]++; + cov_1m92uxlif6().s[7]++; + // default api error focusing + this.listenForApiClientError(); + } + }, + methods: { + /** + * Sets the focused element within the most recently + * opened modal or popover component. + * @param shownEvent + * @param modalId + */ + setFocusWithin: function setFocusWithin(shownEvent, modalId) { + cov_1m92uxlif6().f[2]++; + cov_1m92uxlif6().s[8]++; + if ((cov_1m92uxlif6().b[3][0]++, !(shownEvent.target instanceof HTMLElement)) && (cov_1m92uxlif6().b[3][1]++, !(shownEvent.relatedTarget instanceof HTMLElement))) { + cov_1m92uxlif6().b[2][0]++; + cov_1m92uxlif6().s[9]++; + return; + } else { + cov_1m92uxlif6().b[2][1]++; + } + + // If relatedTarget is present and an HTMLElement, + // then we know we're working with a popover, + // otherwise it's a modal + var target = (cov_1m92uxlif6().s[10]++, shownEvent.relatedTarget instanceof HTMLElement ? (cov_1m92uxlif6().b[4][0]++, shownEvent.relatedTarget) : (cov_1m92uxlif6().b[4][1]++, shownEvent.target)); + + // Find the first focusable element that isn't the + // modal/popover close button + var focusableElement = (cov_1m92uxlif6().s[11]++, target.querySelector("input, select, textarea, button:not(.close), a")); + + // If there is an element to focus on, then do so + cov_1m92uxlif6().s[12]++; + if (focusableElement instanceof HTMLElement) { + cov_1m92uxlif6().b[5][0]++; + //do not set focus() if it is a vue-multiselect + var parentVue = (cov_1m92uxlif6().s[13]++, this.findHtmlElementParentVueComponent(focusableElement)); + cov_1m92uxlif6().s[14]++; + if ((cov_1m92uxlif6().b[7][0]++, parentVue !== null) && (cov_1m92uxlif6().b[7][1]++, parentVue.$options.name == 'vue-multiselect')) { + cov_1m92uxlif6().b[6][0]++; + cov_1m92uxlif6().s[15]++; + return; + } else { + cov_1m92uxlif6().b[6][1]++; + } + cov_1m92uxlif6().s[16]++; + focusableElement.focus(); + } else { + cov_1m92uxlif6().b[5][1]++; + } + }, + findHtmlElementParentVueComponent: function findHtmlElementParentVueComponent(element) { + cov_1m92uxlif6().f[3]++; + cov_1m92uxlif6().s[17]++; + if (element === undefined) { + cov_1m92uxlif6().b[8][0]++; + cov_1m92uxlif6().s[18]++; + return null; + } else { + cov_1m92uxlif6().b[8][1]++; + } + cov_1m92uxlif6().s[19]++; + if ('__vue__' in element) { + cov_1m92uxlif6().b[9][0]++; + cov_1m92uxlif6().s[20]++; + return element.__vue__; + } else { + cov_1m92uxlif6().b[9][1]++; + cov_1m92uxlif6().s[21]++; + return this.findHtmlElementParentVueComponent(element.parentNode); + } + }, + hasCustomFocusErrors: function hasCustomFocusErrors() { + cov_1m92uxlif6().f[4]++; + cov_1m92uxlif6().s[22]++; + if (this.$root._hasCustomFocusErrors) { + cov_1m92uxlif6().b[10][0]++; + cov_1m92uxlif6().s[23]++; + this.$off; + } else { + cov_1m92uxlif6().b[10][1]++; + } + }, + listenForApiClientError: function listenForApiClientError() { + cov_1m92uxlif6().f[5]++; + cov_1m92uxlif6().s[24]++; + if (typeof window.ProcessMaker._focusErrorsIntitalized === "undefined") { + cov_1m92uxlif6().b[11][0]++; + cov_1m92uxlif6().s[25]++; + window.ProcessMaker.EventBus.$on("api-client-error", this.onApiClientError); + cov_1m92uxlif6().s[26]++; + window.ProcessMaker._focusErrorsIntitalized = true; + } else { + cov_1m92uxlif6().b[11][1]++; + } + }, + dontListenForApiClientError: function dontListenForApiClientError() { + cov_1m92uxlif6().f[6]++; + cov_1m92uxlif6().s[27]++; + window.ProcessMaker.EventBus.$off("api-client-error", this.onApiClientError); + cov_1m92uxlif6().s[28]++; + window.ProcessMaker._focusErrorsIntitalized = true; + }, + onApiClientError: function onApiClientError(error) { + cov_1m92uxlif6().f[7]++; + var errors = (cov_1m92uxlif6().s[29]++, _.get(error, "response.data.errors", false)); + cov_1m92uxlif6().s[30]++; + if (errors) { + cov_1m92uxlif6().b[12][0]++; + cov_1m92uxlif6().s[31]++; + this.focusErrorsChanged(errors); + } else { + cov_1m92uxlif6().b[12][1]++; + } + }, + focusErrorsChanged: function focusErrorsChanged(newValue) { + cov_1m92uxlif6().f[8]++; + var selector = (cov_1m92uxlif6().s[32]++, Object.entries(newValue).filter(function (_ref) { + var _ref2 = (0,_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__["default"])(_ref, 2), + _ = _ref2[0], + value = _ref2[1]; + cov_1m92uxlif6().f[9]++; + cov_1m92uxlif6().s[33]++; + return value !== null; + }) // Filter out null values + .map(function (_ref3) { + var _ref4 = (0,_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__["default"])(_ref3, 2), + field = _ref4[0], + _ = _ref4[1]; + cov_1m92uxlif6().f[10]++; + cov_1m92uxlif6().s[34]++; + return "[name='".concat(field, "']"); + }) // Select elements matching the name attribute + .join(", ")); + cov_1m92uxlif6().s[35]++; + if (!selector) { + cov_1m92uxlif6().b[13][0]++; + cov_1m92uxlif6().s[36]++; + return; + } else { + cov_1m92uxlif6().b[13][1]++; + } + var firstInput = (cov_1m92uxlif6().s[37]++, document.querySelector(selector)); // Find the first match + cov_1m92uxlif6().s[38]++; + if (firstInput) { + cov_1m92uxlif6().b[14][0]++; + cov_1m92uxlif6().s[39]++; + firstInput.focus(); + } else { + cov_1m92uxlif6().b[14][1]++; + } + } + } +}); + +/***/ }), + +/***/ "./resources/js/modules/lang.js": +/*!**************************************!*\ + !*** ./resources/js/modules/lang.js ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ translate) +/* harmony export */ }); +function cov_2rmq8yqjks() { + var path = "/Users/rodrigoquelca/Herd/processmaker/resources/js/modules/lang.js"; + var hash = "60dd3571884a36549a21e4082aea36122067deab"; + var global = new Function("return this")(); + var gcv = "__coverage__"; + var coverageData = { + path: "/Users/rodrigoquelca/Herd/processmaker/resources/js/modules/lang.js", + statementMap: { + "0": { + start: { + line: 2, + column: 2 + }, + end: { + line: 2, + column: 15 + } + } + }, + fnMap: { + "0": { + name: "translate", + decl: { + start: { + line: 1, + column: 24 + }, + end: { + line: 1, + column: 33 + } + }, + loc: { + start: { + line: 1, + column: 41 + }, + end: { + line: 3, + column: 1 + } + }, + line: 1 + } + }, + branchMap: {}, + s: { + "0": 0 + }, + f: { + "0": 0 + }, + b: {}, + _coverageSchema: "1a1c01bbd47fc00a2c39e90264f33305004495a9", + hash: "60dd3571884a36549a21e4082aea36122067deab" + }; + var coverage = global[gcv] || (global[gcv] = {}); + if (!coverage[path] || coverage[path].hash !== hash) { + coverage[path] = coverageData; + } + var actualCoverage = coverage[path]; + { + // @ts-ignore + cov_2rmq8yqjks = function () { + return actualCoverage; + }; + } + return actualCoverage; +} +cov_2rmq8yqjks(); +function translate(value) { + cov_2rmq8yqjks().f[0]++; + cov_2rmq8yqjks().s[0]++; + return value; +} + +/***/ }), + +/***/ "./node_modules/bootstrap/dist/js/bootstrap.js": +/*!*****************************************************!*\ + !*** ./node_modules/bootstrap/dist/js/bootstrap.js ***! + \*****************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +/*! + * Bootstrap v4.6.2 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +(function (global, factory) { + true ? factory(exports, __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"), __webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js")) : + 0; +})(this, (function (exports, $, Popper) { 'use strict'; + + function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + + var $__default = /*#__PURE__*/_interopDefaultLegacy($); + var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper); + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; + } + + function _extends() { + _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + return _extends.apply(this, arguments); + } + + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + + _setPrototypeOf(subClass, superClass); + } + + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.6.2): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Private TransitionEnd Helpers + */ + + var TRANSITION_END = 'transitionend'; + var MAX_UID = 1000000; + var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) + + function toType(obj) { + if (obj === null || typeof obj === 'undefined') { + return "" + obj; + } + + return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); + } + + function getSpecialTransitionEndEvent() { + return { + bindType: TRANSITION_END, + delegateType: TRANSITION_END, + handle: function handle(event) { + if ($__default["default"](event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params + } + + return undefined; + } + }; + } + + function transitionEndEmulator(duration) { + var _this = this; + + var called = false; + $__default["default"](this).one(Util.TRANSITION_END, function () { + called = true; + }); + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); + return this; + } + + function setTransitionEndSupport() { + $__default["default"].fn.emulateTransitionEnd = transitionEndEmulator; + $__default["default"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } + /** + * Public Util API + */ + + + var Util = { + TRANSITION_END: 'bsTransitionEnd', + getUID: function getUID(prefix) { + do { + // eslint-disable-next-line no-bitwise + prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here + } while (document.getElementById(prefix)); + + return prefix; + }, + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); + + if (!selector || selector === '#') { + var hrefAttr = element.getAttribute('href'); + selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''; + } + + try { + return document.querySelector(selector) ? selector : null; + } catch (_) { + return null; + } + }, + getTransitionDurationFromElement: function getTransitionDurationFromElement(element) { + if (!element) { + return 0; + } // Get transition-duration of the element + + + var transitionDuration = $__default["default"](element).css('transition-duration'); + var transitionDelay = $__default["default"](element).css('transition-delay'); + var floatTransitionDuration = parseFloat(transitionDuration); + var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found + + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } // If multiple durations are defined, take the first + + + transitionDuration = transitionDuration.split(',')[0]; + transitionDelay = transitionDelay.split(',')[0]; + return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + }, + reflow: function reflow(element) { + return element.offsetHeight; + }, + triggerTransitionEnd: function triggerTransitionEnd(element) { + $__default["default"](element).trigger(TRANSITION_END); + }, + supportsTransitionEnd: function supportsTransitionEnd() { + return Boolean(TRANSITION_END); + }, + isElement: function isElement(obj) { + return (obj[0] || obj).nodeType; + }, + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { + for (var property in configTypes) { + if (Object.prototype.hasOwnProperty.call(configTypes, property)) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = value && Util.isElement(value) ? 'element' : toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); + } + } + } + }, + findShadowRoot: function findShadowRoot(element) { + if (!document.documentElement.attachShadow) { + return null; + } // Can find the shadow root otherwise it'll return the document + + + if (typeof element.getRootNode === 'function') { + var root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + + if (element instanceof ShadowRoot) { + return element; + } // when we don't find a shadow root + + + if (!element.parentNode) { + return null; + } + + return Util.findShadowRoot(element.parentNode); + }, + jQueryDetection: function jQueryDetection() { + if (typeof $__default["default"] === 'undefined') { + throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.'); + } + + var version = $__default["default"].fn.jquery.split(' ')[0].split('.'); + var minMajor = 1; + var ltMajor = 2; + var minMinor = 9; + var minPatch = 1; + var maxMajor = 4; + + if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) { + throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0'); + } + } + }; + Util.jQueryDetection(); + setTransitionEndSupport(); + + /** + * Constants + */ + + var NAME$a = 'alert'; + var VERSION$a = '4.6.2'; + var DATA_KEY$a = 'bs.alert'; + var EVENT_KEY$a = "." + DATA_KEY$a; + var DATA_API_KEY$7 = '.data-api'; + var JQUERY_NO_CONFLICT$a = $__default["default"].fn[NAME$a]; + var CLASS_NAME_ALERT = 'alert'; + var CLASS_NAME_FADE$5 = 'fade'; + var CLASS_NAME_SHOW$7 = 'show'; + var EVENT_CLOSE = "close" + EVENT_KEY$a; + var EVENT_CLOSED = "closed" + EVENT_KEY$a; + var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$a + DATA_API_KEY$7; + var SELECTOR_DISMISS = '[data-dismiss="alert"]'; + /** + * Class definition + */ + + var Alert = /*#__PURE__*/function () { + function Alert(element) { + this._element = element; + } // Getters + + + var _proto = Alert.prototype; + + // Public + _proto.close = function close(element) { + var rootElement = this._element; + + if (element) { + rootElement = this._getRootElement(element); + } + + var customEvent = this._triggerCloseEvent(rootElement); + + if (customEvent.isDefaultPrevented()) { + return; + } + + this._removeElement(rootElement); + }; + + _proto.dispose = function dispose() { + $__default["default"].removeData(this._element, DATA_KEY$a); + this._element = null; + } // Private + ; + + _proto._getRootElement = function _getRootElement(element) { + var selector = Util.getSelectorFromElement(element); + var parent = false; + + if (selector) { + parent = document.querySelector(selector); + } + + if (!parent) { + parent = $__default["default"](element).closest("." + CLASS_NAME_ALERT)[0]; + } + + return parent; + }; + + _proto._triggerCloseEvent = function _triggerCloseEvent(element) { + var closeEvent = $__default["default"].Event(EVENT_CLOSE); + $__default["default"](element).trigger(closeEvent); + return closeEvent; + }; + + _proto._removeElement = function _removeElement(element) { + var _this = this; + + $__default["default"](element).removeClass(CLASS_NAME_SHOW$7); + + if (!$__default["default"](element).hasClass(CLASS_NAME_FADE$5)) { + this._destroyElement(element); + + return; + } + + var transitionDuration = Util.getTransitionDurationFromElement(element); + $__default["default"](element).one(Util.TRANSITION_END, function (event) { + return _this._destroyElement(element, event); + }).emulateTransitionEnd(transitionDuration); + }; + + _proto._destroyElement = function _destroyElement(element) { + $__default["default"](element).detach().trigger(EVENT_CLOSED).remove(); + } // Static + ; + + Alert._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $element = $__default["default"](this); + var data = $element.data(DATA_KEY$a); + + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY$a, data); + } + + if (config === 'close') { + data[config](this); + } + }); + }; + + Alert._handleDismiss = function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } + + alertInstance.close(this); + }; + }; + + _createClass(Alert, null, [{ + key: "VERSION", + get: function get() { + return VERSION$a; + } + }]); + + return Alert; + }(); + /** + * Data API implementation + */ + + + $__default["default"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert())); + /** + * jQuery + */ + + $__default["default"].fn[NAME$a] = Alert._jQueryInterface; + $__default["default"].fn[NAME$a].Constructor = Alert; + + $__default["default"].fn[NAME$a].noConflict = function () { + $__default["default"].fn[NAME$a] = JQUERY_NO_CONFLICT$a; + return Alert._jQueryInterface; + }; + + /** + * Constants + */ + + var NAME$9 = 'button'; + var VERSION$9 = '4.6.2'; + var DATA_KEY$9 = 'bs.button'; + var EVENT_KEY$9 = "." + DATA_KEY$9; + var DATA_API_KEY$6 = '.data-api'; + var JQUERY_NO_CONFLICT$9 = $__default["default"].fn[NAME$9]; + var CLASS_NAME_ACTIVE$3 = 'active'; + var CLASS_NAME_BUTTON = 'btn'; + var CLASS_NAME_FOCUS = 'focus'; + var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$9 + DATA_API_KEY$6; + var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY$9 + DATA_API_KEY$6 + " " + ("blur" + EVENT_KEY$9 + DATA_API_KEY$6); + var EVENT_LOAD_DATA_API$2 = "load" + EVENT_KEY$9 + DATA_API_KEY$6; + var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]'; + var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]'; + var SELECTOR_DATA_TOGGLE$4 = '[data-toggle="button"]'; + var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn'; + var SELECTOR_INPUT = 'input:not([type="hidden"])'; + var SELECTOR_ACTIVE$2 = '.active'; + var SELECTOR_BUTTON = '.btn'; + /** + * Class definition + */ + + var Button = /*#__PURE__*/function () { + function Button(element) { + this._element = element; + this.shouldAvoidTriggerChange = false; + } // Getters + + + var _proto = Button.prototype; + + // Public + _proto.toggle = function toggle() { + var triggerChangeEvent = true; + var addAriaPressed = true; + var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0]; + + if (rootElement) { + var input = this._element.querySelector(SELECTOR_INPUT); + + if (input) { + if (input.type === 'radio') { + if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) { + triggerChangeEvent = false; + } else { + var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2); + + if (activeElement) { + $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$3); + } + } + } + + if (triggerChangeEvent) { + // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input + if (input.type === 'checkbox' || input.type === 'radio') { + input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3); + } + + if (!this.shouldAvoidTriggerChange) { + $__default["default"](input).trigger('change'); + } + } + + input.focus(); + addAriaPressed = false; + } + } + + if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) { + if (addAriaPressed) { + this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3)); + } + + if (triggerChangeEvent) { + $__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE$3); + } + } + }; + + _proto.dispose = function dispose() { + $__default["default"].removeData(this._element, DATA_KEY$9); + this._element = null; + } // Static + ; + + Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) { + return this.each(function () { + var $element = $__default["default"](this); + var data = $element.data(DATA_KEY$9); + + if (!data) { + data = new Button(this); + $element.data(DATA_KEY$9, data); + } + + data.shouldAvoidTriggerChange = avoidTriggerChange; + + if (config === 'toggle') { + data[config](); + } + }); + }; + + _createClass(Button, null, [{ + key: "VERSION", + get: function get() { + return VERSION$9; + } + }]); + + return Button; + }(); + /** + * Data API implementation + */ + + + $__default["default"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) { + var button = event.target; + var initialButton = button; + + if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) { + button = $__default["default"](button).closest(SELECTOR_BUTTON)[0]; + } + + if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) { + event.preventDefault(); // work around Firefox bug #1540995 + } else { + var inputBtn = button.querySelector(SELECTOR_INPUT); + + if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) { + event.preventDefault(); // work around Firefox bug #1540995 + + return; + } + + if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') { + Button._jQueryInterface.call($__default["default"](button), 'toggle', initialButton.tagName === 'INPUT'); + } + } + }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) { + var button = $__default["default"](event.target).closest(SELECTOR_BUTTON)[0]; + $__default["default"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type)); + }); + $__default["default"](window).on(EVENT_LOAD_DATA_API$2, function () { + // ensure correct active class is set to match the controls' actual values/states + // find all checkboxes/readio buttons inside data-toggle groups + var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS)); + + for (var i = 0, len = buttons.length; i < len; i++) { + var button = buttons[i]; + var input = button.querySelector(SELECTOR_INPUT); + + if (input.checked || input.hasAttribute('checked')) { + button.classList.add(CLASS_NAME_ACTIVE$3); + } else { + button.classList.remove(CLASS_NAME_ACTIVE$3); + } + } // find all button toggles + + + buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4)); + + for (var _i = 0, _len = buttons.length; _i < _len; _i++) { + var _button = buttons[_i]; + + if (_button.getAttribute('aria-pressed') === 'true') { + _button.classList.add(CLASS_NAME_ACTIVE$3); + } else { + _button.classList.remove(CLASS_NAME_ACTIVE$3); + } + } + }); + /** + * jQuery + */ + + $__default["default"].fn[NAME$9] = Button._jQueryInterface; + $__default["default"].fn[NAME$9].Constructor = Button; + + $__default["default"].fn[NAME$9].noConflict = function () { + $__default["default"].fn[NAME$9] = JQUERY_NO_CONFLICT$9; + return Button._jQueryInterface; + }; + + /** + * Constants + */ + + var NAME$8 = 'carousel'; + var VERSION$8 = '4.6.2'; + var DATA_KEY$8 = 'bs.carousel'; + var EVENT_KEY$8 = "." + DATA_KEY$8; + var DATA_API_KEY$5 = '.data-api'; + var JQUERY_NO_CONFLICT$8 = $__default["default"].fn[NAME$8]; + var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key + + var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key + + var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch + + var SWIPE_THRESHOLD = 40; + var CLASS_NAME_CAROUSEL = 'carousel'; + var CLASS_NAME_ACTIVE$2 = 'active'; + var CLASS_NAME_SLIDE = 'slide'; + var CLASS_NAME_RIGHT = 'carousel-item-right'; + var CLASS_NAME_LEFT = 'carousel-item-left'; + var CLASS_NAME_NEXT = 'carousel-item-next'; + var CLASS_NAME_PREV = 'carousel-item-prev'; + var CLASS_NAME_POINTER_EVENT = 'pointer-event'; + var DIRECTION_NEXT = 'next'; + var DIRECTION_PREV = 'prev'; + var DIRECTION_LEFT = 'left'; + var DIRECTION_RIGHT = 'right'; + var EVENT_SLIDE = "slide" + EVENT_KEY$8; + var EVENT_SLID = "slid" + EVENT_KEY$8; + var EVENT_KEYDOWN = "keydown" + EVENT_KEY$8; + var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$8; + var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$8; + var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$8; + var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$8; + var EVENT_TOUCHEND = "touchend" + EVENT_KEY$8; + var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$8; + var EVENT_POINTERUP = "pointerup" + EVENT_KEY$8; + var EVENT_DRAG_START = "dragstart" + EVENT_KEY$8; + var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$8 + DATA_API_KEY$5; + var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$8 + DATA_API_KEY$5; + var SELECTOR_ACTIVE$1 = '.active'; + var SELECTOR_ACTIVE_ITEM = '.active.carousel-item'; + var SELECTOR_ITEM = '.carousel-item'; + var SELECTOR_ITEM_IMG = '.carousel-item img'; + var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'; + var SELECTOR_INDICATORS = '.carousel-indicators'; + var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'; + var SELECTOR_DATA_RIDE = '[data-ride="carousel"]'; + var Default$7 = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true, + touch: true + }; + var DefaultType$7 = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean', + touch: 'boolean' + }; + var PointerType = { + TOUCH: 'touch', + PEN: 'pen' + }; + /** + * Class definition + */ + + var Carousel = /*#__PURE__*/function () { + function Carousel(element, config) { + this._items = null; + this._interval = null; + this._activeElement = null; + this._isPaused = false; + this._isSliding = false; + this.touchTimeout = null; + this.touchStartX = 0; + this.touchDeltaX = 0; + this._config = this._getConfig(config); + this._element = element; + this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS); + this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; + this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent); + + this._addEventListeners(); + } // Getters + + + var _proto = Carousel.prototype; + + // Public + _proto.next = function next() { + if (!this._isSliding) { + this._slide(DIRECTION_NEXT); + } + }; + + _proto.nextWhenVisible = function nextWhenVisible() { + var $element = $__default["default"](this._element); // Don't call next when the page isn't visible + // or the carousel or its parent isn't visible + + if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') { + this.next(); + } + }; + + _proto.prev = function prev() { + if (!this._isSliding) { + this._slide(DIRECTION_PREV); + } + }; + + _proto.pause = function pause(event) { + if (!event) { + this._isPaused = true; + } + + if (this._element.querySelector(SELECTOR_NEXT_PREV)) { + Util.triggerTransitionEnd(this._element); + this.cycle(true); + } + + clearInterval(this._interval); + this._interval = null; + }; + + _proto.cycle = function cycle(event) { + if (!event) { + this._isPaused = false; + } + + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + + if (this._config.interval && !this._isPaused) { + this._updateInterval(); + + this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); + } + }; + + _proto.to = function to(index) { + var _this = this; + + this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); + + var activeIndex = this._getItemIndex(this._activeElement); + + if (index > this._items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + $__default["default"](this._element).one(EVENT_SLID, function () { + return _this.to(index); + }); + return; + } + + if (activeIndex === index) { + this.pause(); + this.cycle(); + return; + } + + var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV; + + this._slide(direction, this._items[index]); + }; + + _proto.dispose = function dispose() { + $__default["default"](this._element).off(EVENT_KEY$8); + $__default["default"].removeData(this._element, DATA_KEY$8); + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + } // Private + ; + + _proto._getConfig = function _getConfig(config) { + config = _extends({}, Default$7, config); + Util.typeCheckConfig(NAME$8, config, DefaultType$7); + return config; + }; + + _proto._handleSwipe = function _handleSwipe() { + var absDeltax = Math.abs(this.touchDeltaX); + + if (absDeltax <= SWIPE_THRESHOLD) { + return; + } + + var direction = absDeltax / this.touchDeltaX; + this.touchDeltaX = 0; // swipe left + + if (direction > 0) { + this.prev(); + } // swipe right + + + if (direction < 0) { + this.next(); + } + }; + + _proto._addEventListeners = function _addEventListeners() { + var _this2 = this; + + if (this._config.keyboard) { + $__default["default"](this._element).on(EVENT_KEYDOWN, function (event) { + return _this2._keydown(event); + }); + } + + if (this._config.pause === 'hover') { + $__default["default"](this._element).on(EVENT_MOUSEENTER, function (event) { + return _this2.pause(event); + }).on(EVENT_MOUSELEAVE, function (event) { + return _this2.cycle(event); + }); + } + + if (this._config.touch) { + this._addTouchEventListeners(); + } + }; + + _proto._addTouchEventListeners = function _addTouchEventListeners() { + var _this3 = this; + + if (!this._touchSupported) { + return; + } + + var start = function start(event) { + if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { + _this3.touchStartX = event.originalEvent.clientX; + } else if (!_this3._pointerEvent) { + _this3.touchStartX = event.originalEvent.touches[0].clientX; + } + }; + + var move = function move(event) { + // ensure swiping with one touch and not pinching + _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX; + }; + + var end = function end(event) { + if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { + _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX; + } + + _this3._handleSwipe(); + + if (_this3._config.pause === 'hover') { + // If it's a touch-enabled device, mouseenter/leave are fired as + // part of the mouse compatibility events on first tap - the carousel + // would stop cycling until user tapped out of it; + // here, we listen for touchend, explicitly pause the carousel + // (as if it's the second time we tap on it, mouseenter compat event + // is NOT fired) and after a timeout (to allow for mouse compatibility + // events to fire) we explicitly restart cycling + _this3.pause(); + + if (_this3.touchTimeout) { + clearTimeout(_this3.touchTimeout); + } + + _this3.touchTimeout = setTimeout(function (event) { + return _this3.cycle(event); + }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval); + } + }; + + $__default["default"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) { + return e.preventDefault(); + }); + + if (this._pointerEvent) { + $__default["default"](this._element).on(EVENT_POINTERDOWN, function (event) { + return start(event); + }); + $__default["default"](this._element).on(EVENT_POINTERUP, function (event) { + return end(event); + }); + + this._element.classList.add(CLASS_NAME_POINTER_EVENT); + } else { + $__default["default"](this._element).on(EVENT_TOUCHSTART, function (event) { + return start(event); + }); + $__default["default"](this._element).on(EVENT_TOUCHMOVE, function (event) { + return move(event); + }); + $__default["default"](this._element).on(EVENT_TOUCHEND, function (event) { + return end(event); + }); + } + }; + + _proto._keydown = function _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + + switch (event.which) { + case ARROW_LEFT_KEYCODE: + event.preventDefault(); + this.prev(); + break; + + case ARROW_RIGHT_KEYCODE: + event.preventDefault(); + this.next(); + break; + } + }; + + _proto._getItemIndex = function _getItemIndex(element) { + this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : []; + return this._items.indexOf(element); + }; + + _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === DIRECTION_NEXT; + var isPrevDirection = direction === DIRECTION_PREV; + + var activeIndex = this._getItemIndex(activeElement); + + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + + var delta = direction === DIRECTION_PREV ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + }; + + _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { + var targetIndex = this._getItemIndex(relatedTarget); + + var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM)); + + var slideEvent = $__default["default"].Event(EVENT_SLIDE, { + relatedTarget: relatedTarget, + direction: eventDirectionName, + from: fromIndex, + to: targetIndex + }); + $__default["default"](this._element).trigger(slideEvent); + return slideEvent; + }; + + _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1)); + $__default["default"](indicators).removeClass(CLASS_NAME_ACTIVE$2); + + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + + if (nextIndicator) { + $__default["default"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2); + } + } + }; + + _proto._updateInterval = function _updateInterval() { + var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM); + + if (!element) { + return; + } + + var elementInterval = parseInt(element.getAttribute('data-interval'), 10); + + if (elementInterval) { + this._config.defaultInterval = this._config.defaultInterval || this._config.interval; + this._config.interval = elementInterval; + } else { + this._config.interval = this._config.defaultInterval || this._config.interval; + } + }; + + _proto._slide = function _slide(direction, element) { + var _this4 = this; + + var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); + + var activeElementIndex = this._getItemIndex(activeElement); + + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + + var nextElementIndex = this._getItemIndex(nextElement); + + var isCycling = Boolean(this._interval); + var directionalClassName; + var orderClassName; + var eventDirectionName; + + if (direction === DIRECTION_NEXT) { + directionalClassName = CLASS_NAME_LEFT; + orderClassName = CLASS_NAME_NEXT; + eventDirectionName = DIRECTION_LEFT; + } else { + directionalClassName = CLASS_NAME_RIGHT; + orderClassName = CLASS_NAME_PREV; + eventDirectionName = DIRECTION_RIGHT; + } + + if (nextElement && $__default["default"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) { + this._isSliding = false; + return; + } + + var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); + + if (slideEvent.isDefaultPrevented()) { + return; + } + + if (!activeElement || !nextElement) { + // Some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + this._activeElement = nextElement; + var slidEvent = $__default["default"].Event(EVENT_SLID, { + relatedTarget: nextElement, + direction: eventDirectionName, + from: activeElementIndex, + to: nextElementIndex + }); + + if ($__default["default"](this._element).hasClass(CLASS_NAME_SLIDE)) { + $__default["default"](nextElement).addClass(orderClassName); + Util.reflow(nextElement); + $__default["default"](activeElement).addClass(directionalClassName); + $__default["default"](nextElement).addClass(directionalClassName); + var transitionDuration = Util.getTransitionDurationFromElement(activeElement); + $__default["default"](activeElement).one(Util.TRANSITION_END, function () { + $__default["default"](nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE$2); + $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + " " + orderClassName + " " + directionalClassName); + _this4._isSliding = false; + setTimeout(function () { + return $__default["default"](_this4._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(transitionDuration); + } else { + $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$2); + $__default["default"](nextElement).addClass(CLASS_NAME_ACTIVE$2); + this._isSliding = false; + $__default["default"](this._element).trigger(slidEvent); + } + + if (isCycling) { + this.cycle(); + } + } // Static + ; + + Carousel._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $__default["default"](this).data(DATA_KEY$8); + + var _config = _extends({}, Default$7, $__default["default"](this).data()); + + if (typeof config === 'object') { + _config = _extends({}, _config, config); + } + + var action = typeof config === 'string' ? config : _config.slide; + + if (!data) { + data = new Carousel(this, _config); + $__default["default"](this).data(DATA_KEY$8, data); + } + + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (typeof data[action] === 'undefined') { + throw new TypeError("No method named \"" + action + "\""); + } + + data[action](); + } else if (_config.interval && _config.ride) { + data.pause(); + data.cycle(); + } + }); + }; + + Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { + var selector = Util.getSelectorFromElement(this); + + if (!selector) { + return; + } + + var target = $__default["default"](selector)[0]; + + if (!target || !$__default["default"](target).hasClass(CLASS_NAME_CAROUSEL)) { + return; + } + + var config = _extends({}, $__default["default"](target).data(), $__default["default"](this).data()); + + var slideIndex = this.getAttribute('data-slide-to'); + + if (slideIndex) { + config.interval = false; + } + + Carousel._jQueryInterface.call($__default["default"](target), config); + + if (slideIndex) { + $__default["default"](target).data(DATA_KEY$8).to(slideIndex); + } + + event.preventDefault(); + }; + + _createClass(Carousel, null, [{ + key: "VERSION", + get: function get() { + return VERSION$8; + } + }, { + key: "Default", + get: function get() { + return Default$7; + } + }]); + + return Carousel; + }(); + /** + * Data API implementation + */ + + + $__default["default"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler); + $__default["default"](window).on(EVENT_LOAD_DATA_API$1, function () { + var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE)); + + for (var i = 0, len = carousels.length; i < len; i++) { + var $carousel = $__default["default"](carousels[i]); + + Carousel._jQueryInterface.call($carousel, $carousel.data()); + } + }); + /** + * jQuery + */ + + $__default["default"].fn[NAME$8] = Carousel._jQueryInterface; + $__default["default"].fn[NAME$8].Constructor = Carousel; + + $__default["default"].fn[NAME$8].noConflict = function () { + $__default["default"].fn[NAME$8] = JQUERY_NO_CONFLICT$8; + return Carousel._jQueryInterface; + }; + + /** + * Constants + */ + + var NAME$7 = 'collapse'; + var VERSION$7 = '4.6.2'; + var DATA_KEY$7 = 'bs.collapse'; + var EVENT_KEY$7 = "." + DATA_KEY$7; + var DATA_API_KEY$4 = '.data-api'; + var JQUERY_NO_CONFLICT$7 = $__default["default"].fn[NAME$7]; + var CLASS_NAME_SHOW$6 = 'show'; + var CLASS_NAME_COLLAPSE = 'collapse'; + var CLASS_NAME_COLLAPSING = 'collapsing'; + var CLASS_NAME_COLLAPSED = 'collapsed'; + var DIMENSION_WIDTH = 'width'; + var DIMENSION_HEIGHT = 'height'; + var EVENT_SHOW$4 = "show" + EVENT_KEY$7; + var EVENT_SHOWN$4 = "shown" + EVENT_KEY$7; + var EVENT_HIDE$4 = "hide" + EVENT_KEY$7; + var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$7; + var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$7 + DATA_API_KEY$4; + var SELECTOR_ACTIVES = '.show, .collapsing'; + var SELECTOR_DATA_TOGGLE$3 = '[data-toggle="collapse"]'; + var Default$6 = { + toggle: true, + parent: '' + }; + var DefaultType$6 = { + toggle: 'boolean', + parent: '(string|element)' + }; + /** + * Class definition + */ + + var Collapse = /*#__PURE__*/function () { + function Collapse(element, config) { + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); + var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3)); + + for (var i = 0, len = toggleList.length; i < len; i++) { + var elem = toggleList[i]; + var selector = Util.getSelectorFromElement(elem); + var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) { + return foundElem === element; + }); + + if (selector !== null && filterElement.length > 0) { + this._selector = selector; + + this._triggerArray.push(elem); + } + } + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } + + if (this._config.toggle) { + this.toggle(); + } + } // Getters + + + var _proto = Collapse.prototype; + + // Public + _proto.toggle = function toggle() { + if ($__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) { + this.hide(); + } else { + this.show(); + } + }; + + _proto.show = function show() { + var _this = this; + + if (this._isTransitioning || $__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) { + return; + } + + var actives; + var activesData; + + if (this._parent) { + actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) { + if (typeof _this._config.parent === 'string') { + return elem.getAttribute('data-parent') === _this._config.parent; + } + + return elem.classList.contains(CLASS_NAME_COLLAPSE); + }); + + if (actives.length === 0) { + actives = null; + } + } + + if (actives) { + activesData = $__default["default"](actives).not(this._selector).data(DATA_KEY$7); + + if (activesData && activesData._isTransitioning) { + return; + } + } + + var startEvent = $__default["default"].Event(EVENT_SHOW$4); + $__default["default"](this._element).trigger(startEvent); + + if (startEvent.isDefaultPrevented()) { + return; + } + + if (actives) { + Collapse._jQueryInterface.call($__default["default"](actives).not(this._selector), 'hide'); + + if (!activesData) { + $__default["default"](actives).data(DATA_KEY$7, null); + } + } + + var dimension = this._getDimension(); + + $__default["default"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING); + this._element.style[dimension] = 0; + + if (this._triggerArray.length) { + $__default["default"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true); + } + + this.setTransitioning(true); + + var complete = function complete() { + $__default["default"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$6); + _this._element.style[dimension] = ''; + + _this.setTransitioning(false); + + $__default["default"](_this._element).trigger(EVENT_SHOWN$4); + }; + + var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + var scrollSize = "scroll" + capitalizedDimension; + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + this._element.style[dimension] = this._element[scrollSize] + "px"; + }; + + _proto.hide = function hide() { + var _this2 = this; + + if (this._isTransitioning || !$__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) { + return; + } + + var startEvent = $__default["default"].Event(EVENT_HIDE$4); + $__default["default"](this._element).trigger(startEvent); + + if (startEvent.isDefaultPrevented()) { + return; + } + + var dimension = this._getDimension(); + + this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; + Util.reflow(this._element); + $__default["default"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$6); + var triggerArrayLength = this._triggerArray.length; + + if (triggerArrayLength > 0) { + for (var i = 0; i < triggerArrayLength; i++) { + var trigger = this._triggerArray[i]; + var selector = Util.getSelectorFromElement(trigger); + + if (selector !== null) { + var $elem = $__default["default"]([].slice.call(document.querySelectorAll(selector))); + + if (!$elem.hasClass(CLASS_NAME_SHOW$6)) { + $__default["default"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false); + } + } + } + } + + this.setTransitioning(true); + + var complete = function complete() { + _this2.setTransitioning(false); + + $__default["default"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4); + }; + + this._element.style[dimension] = ''; + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + }; + + _proto.setTransitioning = function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + }; + + _proto.dispose = function dispose() { + $__default["default"].removeData(this._element, DATA_KEY$7); + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + } // Private + ; + + _proto._getConfig = function _getConfig(config) { + config = _extends({}, Default$6, config); + config.toggle = Boolean(config.toggle); // Coerce string values + + Util.typeCheckConfig(NAME$7, config, DefaultType$6); + return config; + }; + + _proto._getDimension = function _getDimension() { + var hasWidth = $__default["default"](this._element).hasClass(DIMENSION_WIDTH); + return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT; + }; + + _proto._getParent = function _getParent() { + var _this3 = this; + + var parent; + + if (Util.isElement(this._config.parent)) { + parent = this._config.parent; // It's a jQuery object + + if (typeof this._config.parent.jquery !== 'undefined') { + parent = this._config.parent[0]; + } + } else { + parent = document.querySelector(this._config.parent); + } + + var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; + var children = [].slice.call(parent.querySelectorAll(selector)); + $__default["default"](children).each(function (i, element) { + _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + return parent; + }; + + _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { + var isOpen = $__default["default"](element).hasClass(CLASS_NAME_SHOW$6); + + if (triggerArray.length) { + $__default["default"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } // Static + ; + + Collapse._getTargetFromElement = function _getTargetFromElement(element) { + var selector = Util.getSelectorFromElement(element); + return selector ? document.querySelector(selector) : null; + }; + + Collapse._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $element = $__default["default"](this); + var data = $element.data(DATA_KEY$7); + + var _config = _extends({}, Default$6, $element.data(), typeof config === 'object' && config ? config : {}); + + if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) { + _config.toggle = false; + } + + if (!data) { + data = new Collapse(this, _config); + $element.data(DATA_KEY$7, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + _createClass(Collapse, null, [{ + key: "VERSION", + get: function get() { + return VERSION$7; + } + }, { + key: "Default", + get: function get() { + return Default$6; + } + }]); + + return Collapse; + }(); + /** + * Data API implementation + */ + + + $__default["default"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { + // preventDefault only for elements (which change the URL) not inside the collapsible element + if (event.currentTarget.tagName === 'A') { + event.preventDefault(); + } + + var $trigger = $__default["default"](this); + var selector = Util.getSelectorFromElement(this); + var selectors = [].slice.call(document.querySelectorAll(selector)); + $__default["default"](selectors).each(function () { + var $target = $__default["default"](this); + var data = $target.data(DATA_KEY$7); + var config = data ? 'toggle' : $trigger.data(); + + Collapse._jQueryInterface.call($target, config); + }); + }); + /** + * jQuery + */ + + $__default["default"].fn[NAME$7] = Collapse._jQueryInterface; + $__default["default"].fn[NAME$7].Constructor = Collapse; + + $__default["default"].fn[NAME$7].noConflict = function () { + $__default["default"].fn[NAME$7] = JQUERY_NO_CONFLICT$7; + return Collapse._jQueryInterface; + }; + + /** + * Constants + */ + + var NAME$6 = 'dropdown'; + var VERSION$6 = '4.6.2'; + var DATA_KEY$6 = 'bs.dropdown'; + var EVENT_KEY$6 = "." + DATA_KEY$6; + var DATA_API_KEY$3 = '.data-api'; + var JQUERY_NO_CONFLICT$6 = $__default["default"].fn[NAME$6]; + var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key + + var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key + + var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key + + var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key + + var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key + + var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) + + var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE$1); + var CLASS_NAME_DISABLED$1 = 'disabled'; + var CLASS_NAME_SHOW$5 = 'show'; + var CLASS_NAME_DROPUP = 'dropup'; + var CLASS_NAME_DROPRIGHT = 'dropright'; + var CLASS_NAME_DROPLEFT = 'dropleft'; + var CLASS_NAME_MENURIGHT = 'dropdown-menu-right'; + var CLASS_NAME_POSITION_STATIC = 'position-static'; + var EVENT_HIDE$3 = "hide" + EVENT_KEY$6; + var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$6; + var EVENT_SHOW$3 = "show" + EVENT_KEY$6; + var EVENT_SHOWN$3 = "shown" + EVENT_KEY$6; + var EVENT_CLICK = "click" + EVENT_KEY$6; + var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$6 + DATA_API_KEY$3; + var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$6 + DATA_API_KEY$3; + var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$6 + DATA_API_KEY$3; + var SELECTOR_DATA_TOGGLE$2 = '[data-toggle="dropdown"]'; + var SELECTOR_FORM_CHILD = '.dropdown form'; + var SELECTOR_MENU = '.dropdown-menu'; + var SELECTOR_NAVBAR_NAV = '.navbar-nav'; + var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; + var PLACEMENT_TOP = 'top-start'; + var PLACEMENT_TOPEND = 'top-end'; + var PLACEMENT_BOTTOM = 'bottom-start'; + var PLACEMENT_BOTTOMEND = 'bottom-end'; + var PLACEMENT_RIGHT = 'right-start'; + var PLACEMENT_LEFT = 'left-start'; + var Default$5 = { + offset: 0, + flip: true, + boundary: 'scrollParent', + reference: 'toggle', + display: 'dynamic', + popperConfig: null + }; + var DefaultType$5 = { + offset: '(number|string|function)', + flip: 'boolean', + boundary: '(string|element)', + reference: '(string|element)', + display: 'string', + popperConfig: '(null|object)' + }; + /** + * Class definition + */ + + var Dropdown = /*#__PURE__*/function () { + function Dropdown(element, config) { + this._element = element; + this._popper = null; + this._config = this._getConfig(config); + this._menu = this._getMenuElement(); + this._inNavbar = this._detectNavbar(); + + this._addEventListeners(); + } // Getters + + + var _proto = Dropdown.prototype; + + // Public + _proto.toggle = function toggle() { + if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1)) { + return; + } + + var isActive = $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5); + + Dropdown._clearMenus(); + + if (isActive) { + return; + } + + this.show(true); + }; + + _proto.show = function show(usePopper) { + if (usePopper === void 0) { + usePopper = false; + } + + if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5)) { + return; + } + + var relatedTarget = { + relatedTarget: this._element + }; + var showEvent = $__default["default"].Event(EVENT_SHOW$3, relatedTarget); + + var parent = Dropdown._getParentFromElement(this._element); + + $__default["default"](parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return; + } // Totally disable Popper for Dropdowns in Navbar + + + if (!this._inNavbar && usePopper) { + // Check for Popper dependency + if (typeof Popper__default["default"] === 'undefined') { + throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); + } + + var referenceElement = this._element; + + if (this._config.reference === 'parent') { + referenceElement = parent; + } else if (Util.isElement(this._config.reference)) { + referenceElement = this._config.reference; // Check if it's jQuery element + + if (typeof this._config.reference.jquery !== 'undefined') { + referenceElement = this._config.reference[0]; + } + } // If boundary is not `scrollParent`, then set position to `static` + // to allow the menu to "escape" the scroll parent's boundaries + // https://github.com/twbs/bootstrap/issues/24251 + + + if (this._config.boundary !== 'scrollParent') { + $__default["default"](parent).addClass(CLASS_NAME_POSITION_STATIC); + } + + this._popper = new Popper__default["default"](referenceElement, this._menu, this._getPopperConfig()); + } // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + + if ('ontouchstart' in document.documentElement && $__default["default"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) { + $__default["default"](document.body).children().on('mouseover', null, $__default["default"].noop); + } + + this._element.focus(); + + this._element.setAttribute('aria-expanded', true); + + $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$5); + $__default["default"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_SHOWN$3, relatedTarget)); + }; + + _proto.hide = function hide() { + if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5)) { + return; + } + + var relatedTarget = { + relatedTarget: this._element + }; + var hideEvent = $__default["default"].Event(EVENT_HIDE$3, relatedTarget); + + var parent = Dropdown._getParentFromElement(this._element); + + $__default["default"](parent).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + if (this._popper) { + this._popper.destroy(); + } + + $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$5); + $__default["default"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_HIDDEN$3, relatedTarget)); + }; + + _proto.dispose = function dispose() { + $__default["default"].removeData(this._element, DATA_KEY$6); + $__default["default"](this._element).off(EVENT_KEY$6); + this._element = null; + this._menu = null; + + if (this._popper !== null) { + this._popper.destroy(); + + this._popper = null; + } + }; + + _proto.update = function update() { + this._inNavbar = this._detectNavbar(); + + if (this._popper !== null) { + this._popper.scheduleUpdate(); + } + } // Private + ; + + _proto._addEventListeners = function _addEventListeners() { + var _this = this; + + $__default["default"](this._element).on(EVENT_CLICK, function (event) { + event.preventDefault(); + event.stopPropagation(); + + _this.toggle(); + }); + }; + + _proto._getConfig = function _getConfig(config) { + config = _extends({}, this.constructor.Default, $__default["default"](this._element).data(), config); + Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType); + return config; + }; + + _proto._getMenuElement = function _getMenuElement() { + if (!this._menu) { + var parent = Dropdown._getParentFromElement(this._element); + + if (parent) { + this._menu = parent.querySelector(SELECTOR_MENU); + } + } + + return this._menu; + }; + + _proto._getPlacement = function _getPlacement() { + var $parentDropdown = $__default["default"](this._element.parentNode); + var placement = PLACEMENT_BOTTOM; // Handle dropup + + if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) { + placement = $__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP; + } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) { + placement = PLACEMENT_RIGHT; + } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) { + placement = PLACEMENT_LEFT; + } else if ($__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) { + placement = PLACEMENT_BOTTOMEND; + } + + return placement; + }; + + _proto._detectNavbar = function _detectNavbar() { + return $__default["default"](this._element).closest('.navbar').length > 0; + }; + + _proto._getOffset = function _getOffset() { + var _this2 = this; + + var offset = {}; + + if (typeof this._config.offset === 'function') { + offset.fn = function (data) { + data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element)); + return data; + }; + } else { + offset.offset = this._config.offset; + } + + return offset; + }; + + _proto._getPopperConfig = function _getPopperConfig() { + var popperConfig = { + placement: this._getPlacement(), + modifiers: { + offset: this._getOffset(), + flip: { + enabled: this._config.flip + }, + preventOverflow: { + boundariesElement: this._config.boundary + } + } + }; // Disable Popper if we have a static display + + if (this._config.display === 'static') { + popperConfig.modifiers.applyStyle = { + enabled: false + }; + } + + return _extends({}, popperConfig, this._config.popperConfig); + } // Static + ; + + Dropdown._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $__default["default"](this).data(DATA_KEY$6); + + var _config = typeof config === 'object' ? config : null; + + if (!data) { + data = new Dropdown(this, _config); + $__default["default"](this).data(DATA_KEY$6, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + Dropdown._clearMenus = function _clearMenus(event) { + if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { + return; + } + + var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2)); + + for (var i = 0, len = toggles.length; i < len; i++) { + var parent = Dropdown._getParentFromElement(toggles[i]); + + var context = $__default["default"](toggles[i]).data(DATA_KEY$6); + var relatedTarget = { + relatedTarget: toggles[i] + }; + + if (event && event.type === 'click') { + relatedTarget.clickEvent = event; + } + + if (!context) { + continue; + } + + var dropdownMenu = context._menu; + + if (!$__default["default"](parent).hasClass(CLASS_NAME_SHOW$5)) { + continue; + } + + if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default["default"].contains(parent, event.target)) { + continue; + } + + var hideEvent = $__default["default"].Event(EVENT_HIDE$3, relatedTarget); + $__default["default"](parent).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + continue; + } // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + + if ('ontouchstart' in document.documentElement) { + $__default["default"](document.body).children().off('mouseover', null, $__default["default"].noop); + } + + toggles[i].setAttribute('aria-expanded', 'false'); + + if (context._popper) { + context._popper.destroy(); + } + + $__default["default"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5); + $__default["default"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_HIDDEN$3, relatedTarget)); + } + }; + + Dropdown._getParentFromElement = function _getParentFromElement(element) { + var parent; + var selector = Util.getSelectorFromElement(element); + + if (selector) { + parent = document.querySelector(selector); + } + + return parent || element.parentNode; + } // eslint-disable-next-line complexity + ; + + Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { + // If not input/textarea: + // - And not a key in REGEXP_KEYDOWN => not a dropdown command + // If input/textarea: + // - If space key => not a dropdown command + // - If key is other than escape + // - If key is not up or down => not a dropdown command + // - If trigger inside the menu => not a dropdown command + if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default["default"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { + return; + } + + if (this.disabled || $__default["default"](this).hasClass(CLASS_NAME_DISABLED$1)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + + var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW$5); + + if (!isActive && event.which === ESCAPE_KEYCODE$1) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) { + if (event.which === ESCAPE_KEYCODE$1) { + $__default["default"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus'); + } + + $__default["default"](this).trigger('click'); + return; + } + + var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) { + return $__default["default"](item).is(':visible'); + }); + + if (items.length === 0) { + return; + } + + var index = items.indexOf(event.target); + + if (event.which === ARROW_UP_KEYCODE && index > 0) { + // Up + index--; + } + + if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { + // Down + index++; + } + + if (index < 0) { + index = 0; + } + + items[index].focus(); + }; + + _createClass(Dropdown, null, [{ + key: "VERSION", + get: function get() { + return VERSION$6; + } + }, { + key: "Default", + get: function get() { + return Default$5; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType$5; + } + }]); + + return Dropdown; + }(); + /** + * Data API implementation + */ + + + $__default["default"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$2 + " " + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { + event.preventDefault(); + event.stopPropagation(); + + Dropdown._jQueryInterface.call($__default["default"](this), 'toggle'); + }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) { + e.stopPropagation(); + }); + /** + * jQuery + */ + + $__default["default"].fn[NAME$6] = Dropdown._jQueryInterface; + $__default["default"].fn[NAME$6].Constructor = Dropdown; + + $__default["default"].fn[NAME$6].noConflict = function () { + $__default["default"].fn[NAME$6] = JQUERY_NO_CONFLICT$6; + return Dropdown._jQueryInterface; + }; + + /** + * Constants + */ + + var NAME$5 = 'modal'; + var VERSION$5 = '4.6.2'; + var DATA_KEY$5 = 'bs.modal'; + var EVENT_KEY$5 = "." + DATA_KEY$5; + var DATA_API_KEY$2 = '.data-api'; + var JQUERY_NO_CONFLICT$5 = $__default["default"].fn[NAME$5]; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'; + var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'; + var CLASS_NAME_BACKDROP = 'modal-backdrop'; + var CLASS_NAME_OPEN = 'modal-open'; + var CLASS_NAME_FADE$4 = 'fade'; + var CLASS_NAME_SHOW$4 = 'show'; + var CLASS_NAME_STATIC = 'modal-static'; + var EVENT_HIDE$2 = "hide" + EVENT_KEY$5; + var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5; + var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5; + var EVENT_SHOW$2 = "show" + EVENT_KEY$5; + var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5; + var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5; + var EVENT_RESIZE = "resize" + EVENT_KEY$5; + var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$5; + var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5; + var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5; + var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5; + var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$5 + DATA_API_KEY$2; + var SELECTOR_DIALOG = '.modal-dialog'; + var SELECTOR_MODAL_BODY = '.modal-body'; + var SELECTOR_DATA_TOGGLE$1 = '[data-toggle="modal"]'; + var SELECTOR_DATA_DISMISS$1 = '[data-dismiss="modal"]'; + var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; + var SELECTOR_STICKY_CONTENT = '.sticky-top'; + var Default$4 = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + var DefaultType$4 = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + /** + * Class definition + */ + + var Modal = /*#__PURE__*/function () { + function Modal(element, config) { + this._config = this._getConfig(config); + this._element = element; + this._dialog = element.querySelector(SELECTOR_DIALOG); + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._isTransitioning = false; + this._scrollbarWidth = 0; + } // Getters + + + var _proto = Modal.prototype; + + // Public + _proto.toggle = function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + }; + + _proto.show = function show(relatedTarget) { + var _this = this; + + if (this._isShown || this._isTransitioning) { + return; + } + + var showEvent = $__default["default"].Event(EVENT_SHOW$2, { + relatedTarget: relatedTarget + }); + $__default["default"](this._element).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return; + } + + this._isShown = true; + + if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$4)) { + this._isTransitioning = true; + } + + this._checkScrollbar(); + + this._setScrollbar(); + + this._adjustDialog(); + + this._setEscapeEvent(); + + this._setResizeEvent(); + + $__default["default"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) { + return _this.hide(event); + }); + $__default["default"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () { + $__default["default"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) { + if ($__default["default"](event.target).is(_this._element)) { + _this._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop(function () { + return _this._showElement(relatedTarget); + }); + }; + + _proto.hide = function hide(event) { + var _this2 = this; + + if (event) { + event.preventDefault(); + } + + if (!this._isShown || this._isTransitioning) { + return; + } + + var hideEvent = $__default["default"].Event(EVENT_HIDE$2); + $__default["default"](this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } + + this._isShown = false; + var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4); + + if (transition) { + this._isTransitioning = true; + } + + this._setEscapeEvent(); + + this._setResizeEvent(); + + $__default["default"](document).off(EVENT_FOCUSIN); + $__default["default"](this._element).removeClass(CLASS_NAME_SHOW$4); + $__default["default"](this._element).off(EVENT_CLICK_DISMISS$1); + $__default["default"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS); + + if (transition) { + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $__default["default"](this._element).one(Util.TRANSITION_END, function (event) { + return _this2._hideModal(event); + }).emulateTransitionEnd(transitionDuration); + } else { + this._hideModal(); + } + }; + + _proto.dispose = function dispose() { + [window, this._element, this._dialog].forEach(function (htmlElement) { + return $__default["default"](htmlElement).off(EVENT_KEY$5); + }); + /** + * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API` + * Do not move `document` in `htmlElements` array + * It will remove `EVENT_CLICK_DATA_API` event that should remain + */ + + $__default["default"](document).off(EVENT_FOCUSIN); + $__default["default"].removeData(this._element, DATA_KEY$5); + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._isTransitioning = null; + this._scrollbarWidth = null; + }; + + _proto.handleUpdate = function handleUpdate() { + this._adjustDialog(); + } // Private + ; + + _proto._getConfig = function _getConfig(config) { + config = _extends({}, Default$4, config); + Util.typeCheckConfig(NAME$5, config, DefaultType$4); + return config; + }; + + _proto._triggerBackdropTransition = function _triggerBackdropTransition() { + var _this3 = this; + + var hideEventPrevented = $__default["default"].Event(EVENT_HIDE_PREVENTED); + $__default["default"](this._element).trigger(hideEventPrevented); + + if (hideEventPrevented.isDefaultPrevented()) { + return; + } + + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!isModalOverflowing) { + this._element.style.overflowY = 'hidden'; + } + + this._element.classList.add(CLASS_NAME_STATIC); + + var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog); + $__default["default"](this._element).off(Util.TRANSITION_END); + $__default["default"](this._element).one(Util.TRANSITION_END, function () { + _this3._element.classList.remove(CLASS_NAME_STATIC); + + if (!isModalOverflowing) { + $__default["default"](_this3._element).one(Util.TRANSITION_END, function () { + _this3._element.style.overflowY = ''; + }).emulateTransitionEnd(_this3._element, modalTransitionDuration); + } + }).emulateTransitionEnd(modalTransitionDuration); + + this._element.focus(); + }; + + _proto._showElement = function _showElement(relatedTarget) { + var _this4 = this; + + var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4); + var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null; + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // Don't move modal's DOM position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + + this._element.removeAttribute('aria-hidden'); + + this._element.setAttribute('aria-modal', true); + + this._element.setAttribute('role', 'dialog'); + + if ($__default["default"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) { + modalBody.scrollTop = 0; + } else { + this._element.scrollTop = 0; + } + + if (transition) { + Util.reflow(this._element); + } + + $__default["default"](this._element).addClass(CLASS_NAME_SHOW$4); + + if (this._config.focus) { + this._enforceFocus(); + } + + var shownEvent = $__default["default"].Event(EVENT_SHOWN$2, { + relatedTarget: relatedTarget + }); + + var transitionComplete = function transitionComplete() { + if (_this4._config.focus) { + _this4._element.focus(); + } + + _this4._isTransitioning = false; + $__default["default"](_this4._element).trigger(shownEvent); + }; + + if (transition) { + var transitionDuration = Util.getTransitionDurationFromElement(this._dialog); + $__default["default"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration); + } else { + transitionComplete(); + } + }; + + _proto._enforceFocus = function _enforceFocus() { + var _this5 = this; + + $__default["default"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop + .on(EVENT_FOCUSIN, function (event) { + if (document !== event.target && _this5._element !== event.target && $__default["default"](_this5._element).has(event.target).length === 0) { + _this5._element.focus(); + } + }); + }; + + _proto._setEscapeEvent = function _setEscapeEvent() { + var _this6 = this; + + if (this._isShown) { + $__default["default"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) { + if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) { + event.preventDefault(); + + _this6.hide(); + } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) { + _this6._triggerBackdropTransition(); + } + }); + } else if (!this._isShown) { + $__default["default"](this._element).off(EVENT_KEYDOWN_DISMISS); + } + }; + + _proto._setResizeEvent = function _setResizeEvent() { + var _this7 = this; + + if (this._isShown) { + $__default["default"](window).on(EVENT_RESIZE, function (event) { + return _this7.handleUpdate(event); + }); + } else { + $__default["default"](window).off(EVENT_RESIZE); + } + }; + + _proto._hideModal = function _hideModal() { + var _this8 = this; + + this._element.style.display = 'none'; + + this._element.setAttribute('aria-hidden', true); + + this._element.removeAttribute('aria-modal'); + + this._element.removeAttribute('role'); + + this._isTransitioning = false; + + this._showBackdrop(function () { + $__default["default"](document.body).removeClass(CLASS_NAME_OPEN); + + _this8._resetAdjustments(); + + _this8._resetScrollbar(); + + $__default["default"](_this8._element).trigger(EVENT_HIDDEN$2); + }); + }; + + _proto._removeBackdrop = function _removeBackdrop() { + if (this._backdrop) { + $__default["default"](this._backdrop).remove(); + this._backdrop = null; + } + }; + + _proto._showBackdrop = function _showBackdrop(callback) { + var _this9 = this; + + var animate = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : ''; + + if (this._isShown && this._config.backdrop) { + this._backdrop = document.createElement('div'); + this._backdrop.className = CLASS_NAME_BACKDROP; + + if (animate) { + this._backdrop.classList.add(animate); + } + + $__default["default"](this._backdrop).appendTo(document.body); + $__default["default"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) { + if (_this9._ignoreBackdropClick) { + _this9._ignoreBackdropClick = false; + return; + } + + if (event.target !== event.currentTarget) { + return; + } + + if (_this9._config.backdrop === 'static') { + _this9._triggerBackdropTransition(); + } else { + _this9.hide(); + } + }); + + if (animate) { + Util.reflow(this._backdrop); + } + + $__default["default"](this._backdrop).addClass(CLASS_NAME_SHOW$4); + + if (!callback) { + return; + } + + if (!animate) { + callback(); + return; + } + + var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + $__default["default"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration); + } else if (!this._isShown && this._backdrop) { + $__default["default"](this._backdrop).removeClass(CLASS_NAME_SHOW$4); + + var callbackRemove = function callbackRemove() { + _this9._removeBackdrop(); + + if (callback) { + callback(); + } + }; + + if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$4)) { + var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + + $__default["default"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + } // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- + ; + + _proto._adjustDialog = function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + "px"; + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + "px"; + } + }; + + _proto._resetAdjustments = function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + }; + + _proto._checkScrollbar = function _checkScrollbar() { + var rect = document.body.getBoundingClientRect(); + this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + }; + + _proto._setScrollbar = function _setScrollbar() { + var _this10 = this; + + if (this._isBodyOverflowing) { + // Note: DOMNode.style.paddingRight returns the actual value or '' if not set + // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set + var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT)); + var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding + + $__default["default"](fixedContent).each(function (index, element) { + var actualPadding = element.style.paddingRight; + var calculatedPadding = $__default["default"](element).css('padding-right'); + $__default["default"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px"); + }); // Adjust sticky content margin + + $__default["default"](stickyContent).each(function (index, element) { + var actualMargin = element.style.marginRight; + var calculatedMargin = $__default["default"](element).css('margin-right'); + $__default["default"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px"); + }); // Adjust body padding + + var actualPadding = document.body.style.paddingRight; + var calculatedPadding = $__default["default"](document.body).css('padding-right'); + $__default["default"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); + } + + $__default["default"](document.body).addClass(CLASS_NAME_OPEN); + }; + + _proto._resetScrollbar = function _resetScrollbar() { + // Restore fixed content padding + var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT)); + $__default["default"](fixedContent).each(function (index, element) { + var padding = $__default["default"](element).data('padding-right'); + $__default["default"](element).removeData('padding-right'); + element.style.paddingRight = padding ? padding : ''; + }); // Restore sticky content + + var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT)); + $__default["default"](elements).each(function (index, element) { + var margin = $__default["default"](element).data('margin-right'); + + if (typeof margin !== 'undefined') { + $__default["default"](element).css('margin-right', margin).removeData('margin-right'); + } + }); // Restore body padding + + var padding = $__default["default"](document.body).data('padding-right'); + $__default["default"](document.body).removeData('padding-right'); + document.body.style.paddingRight = padding ? padding : ''; + }; + + _proto._getScrollbarWidth = function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + } // Static + ; + + Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $__default["default"](this).data(DATA_KEY$5); + + var _config = _extends({}, Default$4, $__default["default"](this).data(), typeof config === 'object' && config ? config : {}); + + if (!data) { + data = new Modal(this, _config); + $__default["default"](this).data(DATA_KEY$5, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + }; + + _createClass(Modal, null, [{ + key: "VERSION", + get: function get() { + return VERSION$5; + } + }, { + key: "Default", + get: function get() { + return Default$4; + } + }]); + + return Modal; + }(); + /** + * Data API implementation + */ + + + $__default["default"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { + var _this11 = this; + + var target; + var selector = Util.getSelectorFromElement(this); + + if (selector) { + target = document.querySelector(selector); + } + + var config = $__default["default"](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default["default"](target).data(), $__default["default"](this).data()); + + if (this.tagName === 'A' || this.tagName === 'AREA') { + event.preventDefault(); + } + + var $target = $__default["default"](target).one(EVENT_SHOW$2, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // Only register focus restorer if modal will actually get shown + return; + } + + $target.one(EVENT_HIDDEN$2, function () { + if ($__default["default"](_this11).is(':visible')) { + _this11.focus(); + } + }); + }); + + Modal._jQueryInterface.call($__default["default"](target), config, this); + }); + /** + * jQuery + */ + + $__default["default"].fn[NAME$5] = Modal._jQueryInterface; + $__default["default"].fn[NAME$5].Constructor = Modal; + + $__default["default"].fn[NAME$5].noConflict = function () { + $__default["default"].fn[NAME$5] = JQUERY_NO_CONFLICT$5; + return Modal._jQueryInterface; + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.6.2): tools/sanitizer.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']; + var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + var DefaultWhitelist = { + // Global attributes allowed on any supplied element below. + '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], + a: ['target', 'href', 'title', 'rel'], + area: [], + b: [], + br: [], + col: [], + code: [], + div: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }; + /** + * A pattern that recognizes a commonly useful subset of URLs that are safe. + * + * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts + */ + + var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i; + /** + * A pattern that matches safe data URLs. Only matches image, video and audio types. + * + * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts + */ + + var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; + + function allowedAttribute(attr, allowedAttributeList) { + var attrName = attr.nodeName.toLowerCase(); + + if (allowedAttributeList.indexOf(attrName) !== -1) { + if (uriAttrs.indexOf(attrName) !== -1) { + return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue)); + } + + return true; + } + + var regExp = allowedAttributeList.filter(function (attrRegex) { + return attrRegex instanceof RegExp; + }); // Check if a regular expression validates the attribute. + + for (var i = 0, len = regExp.length; i < len; i++) { + if (regExp[i].test(attrName)) { + return true; + } + } + + return false; + } + + function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) { + if (unsafeHtml.length === 0) { + return unsafeHtml; + } + + if (sanitizeFn && typeof sanitizeFn === 'function') { + return sanitizeFn(unsafeHtml); + } + + var domParser = new window.DOMParser(); + var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); + var whitelistKeys = Object.keys(whiteList); + var elements = [].slice.call(createdDocument.body.querySelectorAll('*')); + + var _loop = function _loop(i, len) { + var el = elements[i]; + var elName = el.nodeName.toLowerCase(); + + if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) { + el.parentNode.removeChild(el); + return "continue"; + } + + var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread + + var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []); + attributeList.forEach(function (attr) { + if (!allowedAttribute(attr, whitelistedAttributes)) { + el.removeAttribute(attr.nodeName); + } + }); + }; + + for (var i = 0, len = elements.length; i < len; i++) { + var _ret = _loop(i); + + if (_ret === "continue") continue; + } + + return createdDocument.body.innerHTML; + } + + /** + * Constants + */ + + var NAME$4 = 'tooltip'; + var VERSION$4 = '4.6.2'; + var DATA_KEY$4 = 'bs.tooltip'; + var EVENT_KEY$4 = "." + DATA_KEY$4; + var JQUERY_NO_CONFLICT$4 = $__default["default"].fn[NAME$4]; + var CLASS_PREFIX$1 = 'bs-tooltip'; + var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g'); + var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']; + var CLASS_NAME_FADE$3 = 'fade'; + var CLASS_NAME_SHOW$3 = 'show'; + var HOVER_STATE_SHOW = 'show'; + var HOVER_STATE_OUT = 'out'; + var SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; + var SELECTOR_ARROW = '.arrow'; + var TRIGGER_HOVER = 'hover'; + var TRIGGER_FOCUS = 'focus'; + var TRIGGER_CLICK = 'click'; + var TRIGGER_MANUAL = 'manual'; + var AttachmentMap = { + AUTO: 'auto', + TOP: 'top', + RIGHT: 'right', + BOTTOM: 'bottom', + LEFT: 'left' + }; + var Default$3 = { + animation: true, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: 0, + container: false, + fallbackPlacement: 'flip', + boundary: 'scrollParent', + customClass: '', + sanitize: true, + sanitizeFn: null, + whiteList: DefaultWhitelist, + popperConfig: null + }; + var DefaultType$3 = { + animation: 'boolean', + template: 'string', + title: '(string|element|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: '(number|string|function)', + container: '(string|element|boolean)', + fallbackPlacement: '(string|array)', + boundary: '(string|element)', + customClass: '(string|function)', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + whiteList: 'object', + popperConfig: '(null|object)' + }; + var Event$1 = { + HIDE: "hide" + EVENT_KEY$4, + HIDDEN: "hidden" + EVENT_KEY$4, + SHOW: "show" + EVENT_KEY$4, + SHOWN: "shown" + EVENT_KEY$4, + INSERTED: "inserted" + EVENT_KEY$4, + CLICK: "click" + EVENT_KEY$4, + FOCUSIN: "focusin" + EVENT_KEY$4, + FOCUSOUT: "focusout" + EVENT_KEY$4, + MOUSEENTER: "mouseenter" + EVENT_KEY$4, + MOUSELEAVE: "mouseleave" + EVENT_KEY$4 + }; + /** + * Class definition + */ + + var Tooltip = /*#__PURE__*/function () { + function Tooltip(element, config) { + if (typeof Popper__default["default"] === 'undefined') { + throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); + } // Private + + + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._popper = null; // Protected + + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } // Getters + + + var _proto = Tooltip.prototype; + + // Public + _proto.enable = function enable() { + this._isEnabled = true; + }; + + _proto.disable = function disable() { + this._isEnabled = false; + }; + + _proto.toggleEnabled = function toggleEnabled() { + this._isEnabled = !this._isEnabled; + }; + + _proto.toggle = function toggle(event) { + if (!this._isEnabled) { + return; + } + + if (event) { + var dataKey = this.constructor.DATA_KEY; + var context = $__default["default"](event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $__default["default"](event.currentTarget).data(dataKey, context); + } + + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + if ($__default["default"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) { + this._leave(null, this); + + return; + } + + this._enter(null, this); + } + }; + + _proto.dispose = function dispose() { + clearTimeout(this._timeout); + $__default["default"].removeData(this.element, this.constructor.DATA_KEY); + $__default["default"](this.element).off(this.constructor.EVENT_KEY); + $__default["default"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler); + + if (this.tip) { + $__default["default"](this.tip).remove(); + } + + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + + if (this._popper) { + this._popper.destroy(); + } + + this._popper = null; + this.element = null; + this.config = null; + this.tip = null; + }; + + _proto.show = function show() { + var _this = this; + + if ($__default["default"](this.element).css('display') === 'none') { + throw new Error('Please use show on visible elements'); + } + + var showEvent = $__default["default"].Event(this.constructor.Event.SHOW); + + if (this.isWithContent() && this._isEnabled) { + $__default["default"](this.element).trigger(showEvent); + var shadowRoot = Util.findShadowRoot(this.element); + var isInTheDom = $__default["default"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element); + + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } + + var tip = this.getTipElement(); + var tipId = Util.getUID(this.constructor.NAME); + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + this.setContent(); + + if (this.config.animation) { + $__default["default"](tip).addClass(CLASS_NAME_FADE$3); + } + + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + + var attachment = this._getAttachment(placement); + + this.addAttachmentClass(attachment); + + var container = this._getContainer(); + + $__default["default"](tip).data(this.constructor.DATA_KEY, this); + + if (!$__default["default"].contains(this.element.ownerDocument.documentElement, this.tip)) { + $__default["default"](tip).appendTo(container); + } + + $__default["default"](this.element).trigger(this.constructor.Event.INSERTED); + this._popper = new Popper__default["default"](this.element, tip, this._getPopperConfig(attachment)); + $__default["default"](tip).addClass(CLASS_NAME_SHOW$3); + $__default["default"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + if ('ontouchstart' in document.documentElement) { + $__default["default"](document.body).children().on('mouseover', null, $__default["default"].noop); + } + + var complete = function complete() { + if (_this.config.animation) { + _this._fixTransition(); + } + + var prevHoverState = _this._hoverState; + _this._hoverState = null; + $__default["default"](_this.element).trigger(_this.constructor.Event.SHOWN); + + if (prevHoverState === HOVER_STATE_OUT) { + _this._leave(null, _this); + } + }; + + if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$3)) { + var transitionDuration = Util.getTransitionDurationFromElement(this.tip); + $__default["default"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + } else { + complete(); + } + } + }; + + _proto.hide = function hide(callback) { + var _this2 = this; + + var tip = this.getTipElement(); + var hideEvent = $__default["default"].Event(this.constructor.Event.HIDE); + + var complete = function complete() { + if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { + tip.parentNode.removeChild(tip); + } + + _this2._cleanTipClass(); + + _this2.element.removeAttribute('aria-describedby'); + + $__default["default"](_this2.element).trigger(_this2.constructor.Event.HIDDEN); + + if (_this2._popper !== null) { + _this2._popper.destroy(); + } + + if (callback) { + callback(); + } + }; + + $__default["default"](this.element).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + $__default["default"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + if ('ontouchstart' in document.documentElement) { + $__default["default"](document.body).children().off('mouseover', null, $__default["default"].noop); + } + + this._activeTrigger[TRIGGER_CLICK] = false; + this._activeTrigger[TRIGGER_FOCUS] = false; + this._activeTrigger[TRIGGER_HOVER] = false; + + if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$3)) { + var transitionDuration = Util.getTransitionDurationFromElement(tip); + $__default["default"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + } else { + complete(); + } + + this._hoverState = ''; + }; + + _proto.update = function update() { + if (this._popper !== null) { + this._popper.scheduleUpdate(); + } + } // Protected + ; + + _proto.isWithContent = function isWithContent() { + return Boolean(this.getTitle()); + }; + + _proto.addAttachmentClass = function addAttachmentClass(attachment) { + $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment); + }; + + _proto.getTipElement = function getTipElement() { + this.tip = this.tip || $__default["default"](this.config.template)[0]; + return this.tip; + }; + + _proto.setContent = function setContent() { + var tip = this.getTipElement(); + this.setElementContent($__default["default"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle()); + $__default["default"](tip).removeClass(CLASS_NAME_FADE$3 + " " + CLASS_NAME_SHOW$3); + }; + + _proto.setElementContent = function setElementContent($element, content) { + if (typeof content === 'object' && (content.nodeType || content.jquery)) { + // Content is a DOM node or a jQuery + if (this.config.html) { + if (!$__default["default"](content).parent().is($element)) { + $element.empty().append(content); + } + } else { + $element.text($__default["default"](content).text()); + } + + return; + } + + if (this.config.html) { + if (this.config.sanitize) { + content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn); + } + + $element.html(content); + } else { + $element.text(content); + } + }; + + _proto.getTitle = function getTitle() { + var title = this.element.getAttribute('data-original-title'); + + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } + + return title; + } // Private + ; + + _proto._getPopperConfig = function _getPopperConfig(attachment) { + var _this3 = this; + + var defaultBsConfig = { + placement: attachment, + modifiers: { + offset: this._getOffset(), + flip: { + behavior: this.config.fallbackPlacement + }, + arrow: { + element: SELECTOR_ARROW + }, + preventOverflow: { + boundariesElement: this.config.boundary + } + }, + onCreate: function onCreate(data) { + if (data.originalPlacement !== data.placement) { + _this3._handlePopperPlacementChange(data); + } + }, + onUpdate: function onUpdate(data) { + return _this3._handlePopperPlacementChange(data); + } + }; + return _extends({}, defaultBsConfig, this.config.popperConfig); + }; + + _proto._getOffset = function _getOffset() { + var _this4 = this; + + var offset = {}; + + if (typeof this.config.offset === 'function') { + offset.fn = function (data) { + data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element)); + return data; + }; + } else { + offset.offset = this.config.offset; + } + + return offset; + }; + + _proto._getContainer = function _getContainer() { + if (this.config.container === false) { + return document.body; + } + + if (Util.isElement(this.config.container)) { + return $__default["default"](this.config.container); + } + + return $__default["default"](document).find(this.config.container); + }; + + _proto._getAttachment = function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + }; + + _proto._setListeners = function _setListeners() { + var _this5 = this; + + var triggers = this.config.trigger.split(' '); + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $__default["default"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) { + return _this5.toggle(event); + }); + } else if (trigger !== TRIGGER_MANUAL) { + var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN; + var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT; + $__default["default"](_this5.element).on(eventIn, _this5.config.selector, function (event) { + return _this5._enter(event); + }).on(eventOut, _this5.config.selector, function (event) { + return _this5._leave(event); + }); + } + }); + + this._hideModalHandler = function () { + if (_this5.element) { + _this5.hide(); + } + }; + + $__default["default"](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler); + + if (this.config.selector) { + this.config = _extends({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + }; + + _proto._fixTitle = function _fixTitle() { + var titleType = typeof this.element.getAttribute('data-original-title'); + + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + }; + + _proto._enter = function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $__default["default"](event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $__default["default"](event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; + } + + if ($__default["default"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) { + context._hoverState = HOVER_STATE_SHOW; + return; + } + + clearTimeout(context._timeout); + context._hoverState = HOVER_STATE_SHOW; + + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HOVER_STATE_SHOW) { + context.show(); + } + }, context.config.delay.show); + }; + + _proto._leave = function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $__default["default"](event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $__default["default"](event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false; + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + context._hoverState = HOVER_STATE_OUT; + + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HOVER_STATE_OUT) { + context.hide(); + } + }, context.config.delay.hide); + }; + + _proto._isWithActiveTrigger = function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + }; + + _proto._getConfig = function _getConfig(config) { + var dataAttributes = $__default["default"](this.element).data(); + Object.keys(dataAttributes).forEach(function (dataAttr) { + if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) { + delete dataAttributes[dataAttr]; + } + }); + config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {}); + + if (typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + if (typeof config.title === 'number') { + config.title = config.title.toString(); + } + + if (typeof config.content === 'number') { + config.content = config.content.toString(); + } + + Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType); + + if (config.sanitize) { + config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn); + } + + return config; + }; + + _proto._getDelegateConfig = function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + if (this.constructor.Default[key] !== this.config[key]) { + config[key] = this.config[key]; + } + } + } + + return config; + }; + + _proto._cleanTipClass = function _cleanTipClass() { + var $tip = $__default["default"](this.getTipElement()); + var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1); + + if (tabClass !== null && tabClass.length) { + $tip.removeClass(tabClass.join('')); + } + }; + + _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) { + this.tip = popperData.instance.popper; + + this._cleanTipClass(); + + this.addAttachmentClass(this._getAttachment(popperData.placement)); + }; + + _proto._fixTransition = function _fixTransition() { + var tip = this.getTipElement(); + var initConfigAnimation = this.config.animation; + + if (tip.getAttribute('x-placement') !== null) { + return; + } + + $__default["default"](tip).removeClass(CLASS_NAME_FADE$3); + this.config.animation = false; + this.hide(); + this.show(); + this.config.animation = initConfigAnimation; + } // Static + ; + + Tooltip._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $element = $__default["default"](this); + var data = $element.data(DATA_KEY$4); + + var _config = typeof config === 'object' && config; + + if (!data && /dispose|hide/.test(config)) { + return; + } + + if (!data) { + data = new Tooltip(this, _config); + $element.data(DATA_KEY$4, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + _createClass(Tooltip, null, [{ + key: "VERSION", + get: function get() { + return VERSION$4; + } + }, { + key: "Default", + get: function get() { + return Default$3; + } + }, { + key: "NAME", + get: function get() { + return NAME$4; + } + }, { + key: "DATA_KEY", + get: function get() { + return DATA_KEY$4; + } + }, { + key: "Event", + get: function get() { + return Event$1; + } + }, { + key: "EVENT_KEY", + get: function get() { + return EVENT_KEY$4; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType$3; + } + }]); + + return Tooltip; + }(); + /** + * jQuery + */ + + + $__default["default"].fn[NAME$4] = Tooltip._jQueryInterface; + $__default["default"].fn[NAME$4].Constructor = Tooltip; + + $__default["default"].fn[NAME$4].noConflict = function () { + $__default["default"].fn[NAME$4] = JQUERY_NO_CONFLICT$4; + return Tooltip._jQueryInterface; + }; + + /** + * Constants + */ + + var NAME$3 = 'popover'; + var VERSION$3 = '4.6.2'; + var DATA_KEY$3 = 'bs.popover'; + var EVENT_KEY$3 = "." + DATA_KEY$3; + var JQUERY_NO_CONFLICT$3 = $__default["default"].fn[NAME$3]; + var CLASS_PREFIX = 'bs-popover'; + var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); + var CLASS_NAME_FADE$2 = 'fade'; + var CLASS_NAME_SHOW$2 = 'show'; + var SELECTOR_TITLE = '.popover-header'; + var SELECTOR_CONTENT = '.popover-body'; + + var Default$2 = _extends({}, Tooltip.Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }); + + var DefaultType$2 = _extends({}, Tooltip.DefaultType, { + content: '(string|element|function)' + }); + + var Event = { + HIDE: "hide" + EVENT_KEY$3, + HIDDEN: "hidden" + EVENT_KEY$3, + SHOW: "show" + EVENT_KEY$3, + SHOWN: "shown" + EVENT_KEY$3, + INSERTED: "inserted" + EVENT_KEY$3, + CLICK: "click" + EVENT_KEY$3, + FOCUSIN: "focusin" + EVENT_KEY$3, + FOCUSOUT: "focusout" + EVENT_KEY$3, + MOUSEENTER: "mouseenter" + EVENT_KEY$3, + MOUSELEAVE: "mouseleave" + EVENT_KEY$3 + }; + /** + * Class definition + */ + + var Popover = /*#__PURE__*/function (_Tooltip) { + _inheritsLoose(Popover, _Tooltip); + + function Popover() { + return _Tooltip.apply(this, arguments) || this; + } + + var _proto = Popover.prototype; + + // Overrides + _proto.isWithContent = function isWithContent() { + return this.getTitle() || this._getContent(); + }; + + _proto.addAttachmentClass = function addAttachmentClass(attachment) { + $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); + }; + + _proto.getTipElement = function getTipElement() { + this.tip = this.tip || $__default["default"](this.config.template)[0]; + return this.tip; + }; + + _proto.setContent = function setContent() { + var $tip = $__default["default"](this.getTipElement()); // We use append for html objects to maintain js events + + this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle()); + + var content = this._getContent(); + + if (typeof content === 'function') { + content = content.call(this.element); + } + + this.setElementContent($tip.find(SELECTOR_CONTENT), content); + $tip.removeClass(CLASS_NAME_FADE$2 + " " + CLASS_NAME_SHOW$2); + } // Private + ; + + _proto._getContent = function _getContent() { + return this.element.getAttribute('data-content') || this.config.content; + }; + + _proto._cleanTipClass = function _cleanTipClass() { + var $tip = $__default["default"](this.getTipElement()); + var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); + + if (tabClass !== null && tabClass.length > 0) { + $tip.removeClass(tabClass.join('')); + } + } // Static + ; + + Popover._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $__default["default"](this).data(DATA_KEY$3); + + var _config = typeof config === 'object' ? config : null; + + if (!data && /dispose|hide/.test(config)) { + return; + } + + if (!data) { + data = new Popover(this, _config); + $__default["default"](this).data(DATA_KEY$3, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + _createClass(Popover, null, [{ + key: "VERSION", + get: // Getters + function get() { + return VERSION$3; + } + }, { + key: "Default", + get: function get() { + return Default$2; + } + }, { + key: "NAME", + get: function get() { + return NAME$3; + } + }, { + key: "DATA_KEY", + get: function get() { + return DATA_KEY$3; + } + }, { + key: "Event", + get: function get() { + return Event; + } + }, { + key: "EVENT_KEY", + get: function get() { + return EVENT_KEY$3; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType$2; + } + }]); + + return Popover; + }(Tooltip); + /** + * jQuery + */ + + + $__default["default"].fn[NAME$3] = Popover._jQueryInterface; + $__default["default"].fn[NAME$3].Constructor = Popover; + + $__default["default"].fn[NAME$3].noConflict = function () { + $__default["default"].fn[NAME$3] = JQUERY_NO_CONFLICT$3; + return Popover._jQueryInterface; + }; + + /** + * Constants + */ + + var NAME$2 = 'scrollspy'; + var VERSION$2 = '4.6.2'; + var DATA_KEY$2 = 'bs.scrollspy'; + var EVENT_KEY$2 = "." + DATA_KEY$2; + var DATA_API_KEY$1 = '.data-api'; + var JQUERY_NO_CONFLICT$2 = $__default["default"].fn[NAME$2]; + var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; + var CLASS_NAME_ACTIVE$1 = 'active'; + var EVENT_ACTIVATE = "activate" + EVENT_KEY$2; + var EVENT_SCROLL = "scroll" + EVENT_KEY$2; + var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$1; + var METHOD_OFFSET = 'offset'; + var METHOD_POSITION = 'position'; + var SELECTOR_DATA_SPY = '[data-spy="scroll"]'; + var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group'; + var SELECTOR_NAV_LINKS = '.nav-link'; + var SELECTOR_NAV_ITEMS = '.nav-item'; + var SELECTOR_LIST_ITEMS = '.list-group-item'; + var SELECTOR_DROPDOWN$1 = '.dropdown'; + var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item'; + var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; + var Default$1 = { + offset: 10, + method: 'auto', + target: '' + }; + var DefaultType$1 = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + /** + * Class definition + */ + + var ScrollSpy = /*#__PURE__*/function () { + function ScrollSpy(element, config) { + var _this = this; + + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS); + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + $__default["default"](this._scrollElement).on(EVENT_SCROLL, function (event) { + return _this._process(event); + }); + this.refresh(); + + this._process(); + } // Getters + + + var _proto = ScrollSpy.prototype; + + // Public + _proto.refresh = function refresh() { + var _this2 = this; + + var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION; + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0; + this._offsets = []; + this._targets = []; + this._scrollHeight = this._getScrollHeight(); + var targets = [].slice.call(document.querySelectorAll(this._selector)); + targets.map(function (element) { + var target; + var targetSelector = Util.getSelectorFromElement(element); + + if (targetSelector) { + target = document.querySelector(targetSelector); + } + + if (target) { + var targetBCR = target.getBoundingClientRect(); + + if (targetBCR.width || targetBCR.height) { + // TODO (fat): remove sketch reliance on jQuery position/offset + return [$__default["default"](target)[offsetMethod]().top + offsetBase, targetSelector]; + } + } + + return null; + }).filter(Boolean).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this2._offsets.push(item[0]); + + _this2._targets.push(item[1]); + }); + }; + + _proto.dispose = function dispose() { + $__default["default"].removeData(this._element, DATA_KEY$2); + $__default["default"](this._scrollElement).off(EVENT_KEY$2); + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + } // Private + ; + + _proto._getConfig = function _getConfig(config) { + config = _extends({}, Default$1, typeof config === 'object' && config ? config : {}); + + if (typeof config.target !== 'string' && Util.isElement(config.target)) { + var id = $__default["default"](config.target).attr('id'); + + if (!id) { + id = Util.getUID(NAME$2); + $__default["default"](config.target).attr('id', id); + } + + config.target = "#" + id; + } + + Util.typeCheckConfig(NAME$2, config, DefaultType$1); + return config; + }; + + _proto._getScrollTop = function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + }; + + _proto._getScrollHeight = function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + }; + + _proto._getOffsetHeight = function _getOffsetHeight() { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; + }; + + _proto._process = function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + + var scrollHeight = this._getScrollHeight(); + + var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + + return; + } + + if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { + this._activeTarget = null; + + this._clear(); + + return; + } + + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + }; + + _proto._activate = function _activate(target) { + this._activeTarget = target; + + this._clear(); + + var queries = this._selector.split(',').map(function (selector) { + return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]"; + }); + + var $link = $__default["default"]([].slice.call(document.querySelectorAll(queries.join(',')))); + + if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) { + $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1); + $link.addClass(CLASS_NAME_ACTIVE$1); + } else { + // Set triggered link as active + $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active + // With both
    and