@opexa/portal-components 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/lodash.debounce@4.0.8/node_modules/lodash.debounce/index.js","../src/lib/components/Disclaimer/Disclaimer.tsx","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_freeGlobal.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_root.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Symbol.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getRawTag.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_objectToString.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGetTag.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObjectLike.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isSymbol.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayMap.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseToString.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_trimmedEndIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseTrim.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObject.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toNumber.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/identity.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isFunction.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_coreJsData.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isMasked.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_toSource.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsNative.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getValue.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getNative.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_WeakMap.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/noop.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseFindIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsNaN.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_strictIndexOf.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIndexOf.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayIncludes.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/eq.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isLength.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArrayLike.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isPrototype.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseTimes.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsArguments.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArguments.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/stubFalse.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isBuffer.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsTypedArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseUnary.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nodeUtil.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isTypedArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayLikeKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_overArg.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isKey.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeCreate.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashClear.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Hash.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheClear.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_assocIndexOf.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_ListCache.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Map.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheClear.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isKeyable.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getMapData.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_MapCache.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/memoize.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_memoizeCapped.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stringToPath.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toString.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_castPath.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_toKey.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/get.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayPush.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseClamp.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/clamp.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackClear.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Stack.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayFilter.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/stubArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getSymbols.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGetAllKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getAllKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_DataView.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Promise.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Set.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getTag.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Uint8Array.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setCacheAdd.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setCacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_SetCache.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arraySome.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalArrays.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapToArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setToArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalByTag.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalObjects.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqualDeep.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqual.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsMatch.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isStrictComparable.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getMatchData.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_matchesStrictComparable.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseMatches.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseHasIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hasPath.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/hasIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseMatchesProperty.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseProperty.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_basePropertyDeep.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/property.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIteratee.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayIncludesWith.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseUniq.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/uniqBy.js","../../../node_modules/.pnpm/usehooks-ts@3.1.1_react@19.1.0/node_modules/usehooks-ts/dist/index.js","../../../node_modules/.pnpm/zustand@5.0.4_@types+react@19.0.8_react@19.1.0_use-sync-external-store@1.4.0_react@19.1.0_/node_modules/zustand/esm/vanilla.mjs","../../../node_modules/.pnpm/zustand@5.0.4_@types+react@19.0.8_react@19.1.0_use-sync-external-store@1.4.0_react@19.1.0_/node_modules/zustand/esm/react.mjs","../src/lib/hooks/useGlobalStore.tsx","../src/lib/hooks/useSessionQuery/useSessionQuery.ts","../src/lib/services/client/getSession.ts","../src/lib/hooks/useSessionQuery/getSessionQueryKey.ts","../src/lib/components/Disclaimer/useDisclaimer.tsx","../src/lib/components/Games/Games.tsx","../src/lib/components/PortalProvider/PortalProvider.tsx","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/class-group-utils.ts","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/lru-cache.ts","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/parse-class-name.ts","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/sort-modifiers.ts","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/config-utils.ts","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/merge-classlist.ts","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/tw-join.ts","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/from-theme.ts","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/validators.ts","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/default-config.ts","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/merge-configs.ts","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts","../../../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/src/lib/tw-merge.ts","../src/lib/icons/AlertCircleIcon.tsx","../src/lib/icons/XIcon.tsx","../src/lib/utils/getQueryClient.ts","../src/lib/utils/toaster.ts","../src/lib/components/SignIn/SignIn.tsx","../src/lib/components/SignIn/SignInForm.tsx","../src/lib/utils/getLocaleInfo.tsx","../src/lib/hooks/usePlatformQuery/usePlatformQuery.ts","../src/lib/hooks/usePlatformQuery/getPlatformQueryKey.ts","../src/lib/hooks/useLocaleInfo.ts","../src/lib/hooks/useMobileNumberParser.ts","../src/lib/hooks/useSendVerificationCodeMutation/useSendVerificationCodeMutation.ts","../src/lib/hooks/useSendVerificationCodeMutation/getSendVerificationCodeMutationKey.ts","../src/lib/hooks/useSigninMutation/useSignInMutation.ts","../src/lib/services/client/signIn.ts","../src/lib/hooks/useSigninMutation/getSignInMutationKey.ts","../src/lib/icons/ArrowLeftIcon.tsx","../src/lib/icons/CheckIcon.tsx","../src/lib/icons/FacebookIcon.tsx","../src/lib/icons/GoogleIcon.tsx","../src/lib/components/SignUp/SignUp.tsx","../src/lib/components/SignUp/SignUpForm.tsx","../src/lib/hooks/useSignUpMutation/useSignUpMutation.ts","../src/lib/hooks/useSignUpMutation/getSignUpMutationKey.ts","../../../node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/src/components/utils.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/utils.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/Alignment.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/EventStore.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/Animations.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/Axis.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/Limit.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/Counter.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/DragHandler.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/DragTracker.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/NodeRects.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/PercentOfView.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/ResizeHandler.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/ScrollBody.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/ScrollBounds.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/ScrollContain.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/ScrollLimit.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/ScrollLooper.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/ScrollProgress.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/ScrollSnaps.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/SlideRegistry.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/ScrollTarget.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/ScrollTo.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/SlideFocus.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/Vector1d.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/Translate.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/SlideLooper.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/SlidesHandler.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/SlidesInView.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/SlideSizes.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/SlidesToScroll.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/Engine.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/EventHandler.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/Options.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/OptionsHandler.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/PluginsHandler.ts","../../../node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/src/components/EmblaCarousel.ts","../src/lib/components/TopWins/TopWins.tsx","../src/lib/hooks/useGamesQuery/useGamesQuery.ts","../src/lib/hooks/useGamesQuery/getGamesQueryKey.ts","../src/lib/hooks/useTopWinsQuery/useTopWinsQuery.ts","../src/lib/hooks/useTopWinsQuery/getTopWinsQueryKey.ts","../src/lib/utils/parseDecimal.ts","../src/lib/utils/formatNumber.ts","../src/lib/utils/getGameImageUrl.ts"],"sourcesContent":["/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","'use client';\r\n\r\nimport { Dialog, Portal } from '@ark-ui/react';\r\nimport type { ImageProps } from 'next/image';\r\nimport Image from 'next/image';\r\nimport { useRef } from 'react';\r\nimport pagcorLogo from '../../images/pagcor.png';\r\nimport responsibleGamingLogo from '../../images/responsible-gaming.png';\r\nimport { useDisclaimer } from './useDisclaimer';\r\n\r\nexport interface DisclaimerProps {\r\n logo: ImageProps['src'];\r\n}\r\n\r\nexport function Disclaimer(props: DisclaimerProps) {\r\n const disclaimer = useDisclaimer();\r\n const acceptTriggerRef = useRef<HTMLButtonElement>(null);\r\n\r\n return (\r\n <Dialog.Root\r\n open={disclaimer.open}\r\n lazyMount\r\n unmountOnExit\r\n closeOnEscape={false}\r\n closeOnInteractOutside={false}\r\n initialFocusEl={() => acceptTriggerRef.current}\r\n >\r\n <Portal>\r\n <Dialog.Backdrop className=\"z-backdrop ui-open:animate-backdrop-in ui-closed:animate-backdrop-out fixed inset-0 hidden bg-black/60 lg:block\" />\r\n <Dialog.Positioner className=\"z-dialog fixed inset-0 mx-auto w-full lg:w-fit lg:py-16\">\r\n <Dialog.Content className=\"ui-open:animate-dialog-in ui-closed:animate-dialog-out flex h-full w-full flex-col items-start bg-white p-3xl lg:h-auto lg:w-[400px] lg:rounded-xl\">\r\n <Image\r\n src={props.logo}\r\n alt=\"\"\r\n width={200}\r\n height={100}\r\n className=\"mx-auto h-auto w-[120px]\"\r\n draggable={false}\r\n />\r\n\r\n <div className=\"w-full grow\">\r\n <Dialog.Title className=\"mt-3xl text-center text-lg font-semibold\">\r\n Age Verification\r\n </Dialog.Title>\r\n <Dialog.Description className=\"text-gray-600 mt-xs text-center text-sm\">\r\n By entering this website I acknowledge and confirmI am 21 years of age and I agree\r\n with the{' '}\r\n <button type=\"button\" className=\"text-accent-700 underline underline-offset-2\">\r\n Terms and Conditions.\r\n </button>\r\n </Dialog.Description>\r\n\r\n <div className=\"mt-5 flex items-center justify-center gap-3xl\">\r\n <Image\r\n src={pagcorLogo}\r\n alt=\"\"\r\n className=\"h-[88px] w-auto shrink-0\"\r\n draggable={false}\r\n />\r\n\r\n <Image\r\n src={responsibleGamingLogo}\r\n alt=\"\"\r\n className=\"h-[62px] w-auto shrink-0\"\r\n draggable={false}\r\n />\r\n </div>\r\n </div>\r\n\r\n <button\r\n ref={acceptTriggerRef}\r\n type=\"button\"\r\n className=\"shadow-xs bg-accent-400 mt-4xl flex h-11 w-full items-center justify-center rounded-md font-semibold text-white\"\r\n onClick={disclaimer.close}\r\n >\r\n Accept\r\n </button>\r\n </Dialog.Content>\r\n </Dialog.Positioner>\r\n </Portal>\r\n </Dialog.Root>\r\n );\r\n}\r\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nexport default baseClamp;\n","import baseClamp from './_baseClamp.js';\nimport toNumber from './toNumber.js';\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n}\n\nexport default clamp;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nexport default arrayIncludesWith;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n","import baseIteratee from './_baseIteratee.js';\nimport baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nexport default uniqBy;\n","import { useState, useCallback, useLayoutEffect, useEffect, useRef, useMemo } from 'react';\nimport debounce from 'lodash.debounce';\n\n// src/useBoolean/useBoolean.ts\nfunction useBoolean(defaultValue = false) {\n if (typeof defaultValue !== \"boolean\") {\n throw new Error(\"defaultValue must be `true` or `false`\");\n }\n const [value, setValue] = useState(defaultValue);\n const setTrue = useCallback(() => {\n setValue(true);\n }, []);\n const setFalse = useCallback(() => {\n setValue(false);\n }, []);\n const toggle = useCallback(() => {\n setValue((x) => !x);\n }, []);\n return { value, setValue, setTrue, setFalse, toggle };\n}\nvar useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\n// src/useEventListener/useEventListener.ts\nfunction useEventListener(eventName, handler, element, options) {\n const savedHandler = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n useEffect(() => {\n const targetElement = (element == null ? void 0 : element.current) ?? window;\n if (!(targetElement && targetElement.addEventListener))\n return;\n const listener = (event) => {\n savedHandler.current(event);\n };\n targetElement.addEventListener(eventName, listener, options);\n return () => {\n targetElement.removeEventListener(eventName, listener, options);\n };\n }, [eventName, element, options]);\n}\n\n// src/useClickAnyWhere/useClickAnyWhere.ts\nfunction useClickAnyWhere(handler) {\n useEventListener(\"click\", (event) => {\n handler(event);\n });\n}\nfunction useCopyToClipboard() {\n const [copiedText, setCopiedText] = useState(null);\n const copy = useCallback(async (text) => {\n if (!(navigator == null ? void 0 : navigator.clipboard)) {\n console.warn(\"Clipboard not supported\");\n return false;\n }\n try {\n await navigator.clipboard.writeText(text);\n setCopiedText(text);\n return true;\n } catch (error) {\n console.warn(\"Copy failed\", error);\n setCopiedText(null);\n return false;\n }\n }, []);\n return [copiedText, copy];\n}\nfunction useCounter(initialValue) {\n const [count, setCount] = useState(initialValue ?? 0);\n const increment = useCallback(() => {\n setCount((x) => x + 1);\n }, []);\n const decrement = useCallback(() => {\n setCount((x) => x - 1);\n }, []);\n const reset = useCallback(() => {\n setCount(initialValue ?? 0);\n }, [initialValue]);\n return {\n count,\n increment,\n decrement,\n reset,\n setCount\n };\n}\nfunction useInterval(callback, delay) {\n const savedCallback = useRef(callback);\n useIsomorphicLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n useEffect(() => {\n if (delay === null) {\n return;\n }\n const id = setInterval(() => {\n savedCallback.current();\n }, delay);\n return () => {\n clearInterval(id);\n };\n }, [delay]);\n}\n\n// src/useCountdown/useCountdown.ts\nfunction useCountdown({\n countStart,\n countStop = 0,\n intervalMs = 1e3,\n isIncrement = false\n}) {\n const {\n count,\n increment,\n decrement,\n reset: resetCounter\n } = useCounter(countStart);\n const {\n value: isCountdownRunning,\n setTrue: startCountdown,\n setFalse: stopCountdown\n } = useBoolean(false);\n const resetCountdown = useCallback(() => {\n stopCountdown();\n resetCounter();\n }, [stopCountdown, resetCounter]);\n const countdownCallback = useCallback(() => {\n if (count === countStop) {\n stopCountdown();\n return;\n }\n if (isIncrement) {\n increment();\n } else {\n decrement();\n }\n }, [count, countStop, decrement, increment, isIncrement, stopCountdown]);\n useInterval(countdownCallback, isCountdownRunning ? intervalMs : null);\n return [count, { startCountdown, stopCountdown, resetCountdown }];\n}\nfunction useEventCallback(fn) {\n const ref = useRef(() => {\n throw new Error(\"Cannot call an event handler while rendering.\");\n });\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n }, [fn]);\n return useCallback((...args) => {\n var _a;\n return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args);\n }, [ref]);\n}\n\n// src/useLocalStorage/useLocalStorage.ts\nvar IS_SERVER = typeof window === \"undefined\";\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { initializeWithValue = true } = options;\n const serializer = useCallback(\n (value) => {\n if (options.serializer) {\n return options.serializer(value);\n }\n return JSON.stringify(value);\n },\n [options]\n );\n const deserializer = useCallback(\n (value) => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return defaultValue;\n }\n return parsed;\n },\n [options, initialValue]\n );\n const readValue = useCallback(() => {\n const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;\n if (IS_SERVER) {\n return initialValueToUse;\n }\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? deserializer(raw) : initialValueToUse;\n } catch (error) {\n console.warn(`Error reading localStorage key \\u201C${key}\\u201D:`, error);\n return initialValueToUse;\n }\n }, [initialValue, key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return initialValue instanceof Function ? initialValue() : initialValue;\n });\n const setValue = useEventCallback((value) => {\n if (IS_SERVER) {\n console.warn(\n `Tried setting localStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n try {\n const newValue = value instanceof Function ? value(readValue()) : value;\n window.localStorage.setItem(key, serializer(newValue));\n setStoredValue(newValue);\n window.dispatchEvent(new StorageEvent(\"local-storage\", { key }));\n } catch (error) {\n console.warn(`Error setting localStorage key \\u201C${key}\\u201D:`, error);\n }\n });\n const removeValue = useEventCallback(() => {\n if (IS_SERVER) {\n console.warn(\n `Tried removing localStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n window.localStorage.removeItem(key);\n setStoredValue(defaultValue);\n window.dispatchEvent(new StorageEvent(\"local-storage\", { key }));\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(\n (event) => {\n if (event.key && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"local-storage\", handleStorageChange);\n return [storedValue, setValue, removeValue];\n}\nvar IS_SERVER2 = typeof window === \"undefined\";\nfunction useMediaQuery(query, {\n defaultValue = false,\n initializeWithValue = true\n} = {}) {\n const getMatches = (query2) => {\n if (IS_SERVER2) {\n return defaultValue;\n }\n return window.matchMedia(query2).matches;\n };\n const [matches, setMatches] = useState(() => {\n if (initializeWithValue) {\n return getMatches(query);\n }\n return defaultValue;\n });\n function handleChange() {\n setMatches(getMatches(query));\n }\n useIsomorphicLayoutEffect(() => {\n const matchMedia = window.matchMedia(query);\n handleChange();\n if (matchMedia.addListener) {\n matchMedia.addListener(handleChange);\n } else {\n matchMedia.addEventListener(\"change\", handleChange);\n }\n return () => {\n if (matchMedia.removeListener) {\n matchMedia.removeListener(handleChange);\n } else {\n matchMedia.removeEventListener(\"change\", handleChange);\n }\n };\n }, [query]);\n return matches;\n}\n\n// src/useDarkMode/useDarkMode.ts\nvar COLOR_SCHEME_QUERY = \"(prefers-color-scheme: dark)\";\nvar LOCAL_STORAGE_KEY = \"usehooks-ts-dark-mode\";\nfunction useDarkMode(options = {}) {\n const {\n defaultValue,\n localStorageKey = LOCAL_STORAGE_KEY,\n initializeWithValue = true\n } = options;\n const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY, {\n initializeWithValue,\n defaultValue\n });\n const [isDarkMode, setDarkMode] = useLocalStorage(\n localStorageKey,\n defaultValue ?? isDarkOS ?? false,\n { initializeWithValue }\n );\n useIsomorphicLayoutEffect(() => {\n if (isDarkOS !== isDarkMode) {\n setDarkMode(isDarkOS);\n }\n }, [isDarkOS]);\n return {\n isDarkMode,\n toggle: () => {\n setDarkMode((prev) => !prev);\n },\n enable: () => {\n setDarkMode(true);\n },\n disable: () => {\n setDarkMode(false);\n },\n set: (value) => {\n setDarkMode(value);\n }\n };\n}\nfunction useUnmount(func) {\n const funcRef = useRef(func);\n funcRef.current = func;\n useEffect(\n () => () => {\n funcRef.current();\n },\n []\n );\n}\n\n// src/useDebounceCallback/useDebounceCallback.ts\nfunction useDebounceCallback(func, delay = 500, options) {\n const debouncedFunc = useRef();\n useUnmount(() => {\n if (debouncedFunc.current) {\n debouncedFunc.current.cancel();\n }\n });\n const debounced = useMemo(() => {\n const debouncedFuncInstance = debounce(func, delay, options);\n const wrappedFunc = (...args) => {\n return debouncedFuncInstance(...args);\n };\n wrappedFunc.cancel = () => {\n debouncedFuncInstance.cancel();\n };\n wrappedFunc.isPending = () => {\n return !!debouncedFunc.current;\n };\n wrappedFunc.flush = () => {\n return debouncedFuncInstance.flush();\n };\n return wrappedFunc;\n }, [func, delay, options]);\n useEffect(() => {\n debouncedFunc.current = debounce(func, delay, options);\n }, [func, delay, options]);\n return debounced;\n}\nfunction useDebounceValue(initialValue, delay, options) {\n const eq = (options == null ? void 0 : options.equalityFn) ?? ((left, right) => left === right);\n const unwrappedInitialValue = initialValue instanceof Function ? initialValue() : initialValue;\n const [debouncedValue, setDebouncedValue] = useState(unwrappedInitialValue);\n const previousValueRef = useRef(unwrappedInitialValue);\n const updateDebouncedValue = useDebounceCallback(\n setDebouncedValue,\n delay,\n options\n );\n if (!eq(previousValueRef.current, unwrappedInitialValue)) {\n updateDebouncedValue(unwrappedInitialValue);\n previousValueRef.current = unwrappedInitialValue;\n }\n return [debouncedValue, updateDebouncedValue];\n}\nfunction useDocumentTitle(title, options = {}) {\n const { preserveTitleOnUnmount = true } = options;\n const defaultTitle = useRef(null);\n useIsomorphicLayoutEffect(() => {\n defaultTitle.current = window.document.title;\n }, []);\n useIsomorphicLayoutEffect(() => {\n window.document.title = title;\n }, [title]);\n useUnmount(() => {\n if (!preserveTitleOnUnmount && defaultTitle.current) {\n window.document.title = defaultTitle.current;\n }\n });\n}\nfunction useHover(elementRef) {\n const [value, setValue] = useState(false);\n const handleMouseEnter = () => {\n setValue(true);\n };\n const handleMouseLeave = () => {\n setValue(false);\n };\n useEventListener(\"mouseenter\", handleMouseEnter, elementRef);\n useEventListener(\"mouseleave\", handleMouseLeave, elementRef);\n return value;\n}\nfunction useIntersectionObserver({\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false,\n onChange\n} = {}) {\n var _a;\n const [ref, setRef] = useState(null);\n const [state, setState] = useState(() => ({\n isIntersecting: initialIsIntersecting,\n entry: void 0\n }));\n const callbackRef = useRef();\n callbackRef.current = onChange;\n const frozen = ((_a = state.entry) == null ? void 0 : _a.isIntersecting) && freezeOnceVisible;\n useEffect(() => {\n if (!ref)\n return;\n if (!(\"IntersectionObserver\" in window))\n return;\n if (frozen)\n return;\n let unobserve;\n const observer = new IntersectionObserver(\n (entries) => {\n const thresholds = Array.isArray(observer.thresholds) ? observer.thresholds : [observer.thresholds];\n entries.forEach((entry) => {\n const isIntersecting = entry.isIntersecting && thresholds.some((threshold2) => entry.intersectionRatio >= threshold2);\n setState({ isIntersecting, entry });\n if (callbackRef.current) {\n callbackRef.current(isIntersecting, entry);\n }\n if (isIntersecting && freezeOnceVisible && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n });\n },\n { threshold, root, rootMargin }\n );\n observer.observe(ref);\n return () => {\n observer.disconnect();\n };\n }, [\n ref,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold),\n root,\n rootMargin,\n frozen,\n freezeOnceVisible\n ]);\n const prevRef = useRef(null);\n useEffect(() => {\n var _a2;\n if (!ref && ((_a2 = state.entry) == null ? void 0 : _a2.target) && !freezeOnceVisible && !frozen && prevRef.current !== state.entry.target) {\n prevRef.current = state.entry.target;\n setState({ isIntersecting: initialIsIntersecting, entry: void 0 });\n }\n }, [ref, state.entry, freezeOnceVisible, frozen, initialIsIntersecting]);\n const result = [\n setRef,\n !!state.isIntersecting,\n state.entry\n ];\n result.ref = result[0];\n result.isIntersecting = result[1];\n result.entry = result[2];\n return result;\n}\nfunction useIsClient() {\n const [isClient, setClient] = useState(false);\n useEffect(() => {\n setClient(true);\n }, []);\n return isClient;\n}\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return useCallback(() => isMounted.current, []);\n}\nfunction useMap(initialState = /* @__PURE__ */ new Map()) {\n const [map, setMap] = useState(new Map(initialState));\n const actions = {\n set: useCallback((key, value) => {\n setMap((prev) => {\n const copy = new Map(prev);\n copy.set(key, value);\n return copy;\n });\n }, []),\n setAll: useCallback((entries) => {\n setMap(() => new Map(entries));\n }, []),\n remove: useCallback((key) => {\n setMap((prev) => {\n const copy = new Map(prev);\n copy.delete(key);\n return copy;\n });\n }, []),\n reset: useCallback(() => {\n setMap(() => /* @__PURE__ */ new Map());\n }, [])\n };\n return [map, actions];\n}\n\n// src/useOnClickOutside/useOnClickOutside.ts\nfunction useOnClickOutside(ref, handler, eventType = \"mousedown\", eventListenerOptions = {}) {\n useEventListener(\n eventType,\n (event) => {\n const target = event.target;\n if (!target || !target.isConnected) {\n return;\n }\n const isOutside = Array.isArray(ref) ? ref.filter((r) => Boolean(r.current)).every((r) => r.current && !r.current.contains(target)) : ref.current && !ref.current.contains(target);\n if (isOutside) {\n handler(event);\n }\n },\n void 0,\n eventListenerOptions\n );\n}\nvar IS_SERVER3 = typeof window === \"undefined\";\nfunction useReadLocalStorage(key, options = {}) {\n let { initializeWithValue = true } = options;\n if (IS_SERVER3) {\n initializeWithValue = false;\n }\n const deserializer = useCallback(\n (value) => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return null;\n }\n return parsed;\n },\n [options]\n );\n const readValue = useCallback(() => {\n if (IS_SERVER3) {\n return null;\n }\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? deserializer(raw) : null;\n } catch (error) {\n console.warn(`Error reading localStorage key \\u201C${key}\\u201D:`, error);\n return null;\n }\n }, [key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return void 0;\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(\n (event) => {\n if (event.key && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"local-storage\", handleStorageChange);\n return storedValue;\n}\nvar initialSize = {\n width: void 0,\n height: void 0\n};\nfunction useResizeObserver(options) {\n const { ref, box = \"content-box\" } = options;\n const [{ width, height }, setSize] = useState(initialSize);\n const isMounted = useIsMounted();\n const previousSize = useRef({ ...initialSize });\n const onResize = useRef(void 0);\n onResize.current = options.onResize;\n useEffect(() => {\n if (!ref.current)\n return;\n if (typeof window === \"undefined\" || !(\"ResizeObserver\" in window))\n return;\n const observer = new ResizeObserver(([entry]) => {\n const boxProp = box === \"border-box\" ? \"borderBoxSize\" : box === \"device-pixel-content-box\" ? \"devicePixelContentBoxSize\" : \"contentBoxSize\";\n const newWidth = extractSize(entry, boxProp, \"inlineSize\");\n const newHeight = extractSize(entry, boxProp, \"blockSize\");\n const hasChanged = previousSize.current.width !== newWidth || previousSize.current.height !== newHeight;\n if (hasChanged) {\n const newSize = { width: newWidth, height: newHeight };\n previousSize.current.width = newWidth;\n previousSize.current.height = newHeight;\n if (onResize.current) {\n onResize.current(newSize);\n } else {\n if (isMounted()) {\n setSize(newSize);\n }\n }\n }\n });\n observer.observe(ref.current, { box });\n return () => {\n observer.disconnect();\n };\n }, [box, ref, isMounted]);\n return { width, height };\n}\nfunction extractSize(entry, box, sizeType) {\n if (!entry[box]) {\n if (box === \"contentBoxSize\") {\n return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n }\n return void 0;\n }\n return Array.isArray(entry[box]) ? entry[box][0][sizeType] : (\n // @ts-ignore Support Firefox's non-standard behavior\n entry[box][sizeType]\n );\n}\nvar IS_SERVER4 = typeof window === \"undefined\";\nfunction useScreen(options = {}) {\n let { initializeWithValue = true } = options;\n if (IS_SERVER4) {\n initializeWithValue = false;\n }\n const readScreen = () => {\n if (IS_SERVER4) {\n return void 0;\n }\n return window.screen;\n };\n const [screen, setScreen] = useState(() => {\n if (initializeWithValue) {\n return readScreen();\n }\n return void 0;\n });\n const debouncedSetScreen = useDebounceCallback(\n setScreen,\n options.debounceDelay\n );\n function handleSize() {\n const newScreen = readScreen();\n const setSize = options.debounceDelay ? debouncedSetScreen : setScreen;\n if (newScreen) {\n const {\n width,\n height,\n availHeight,\n availWidth,\n colorDepth,\n orientation,\n pixelDepth\n } = newScreen;\n setSize({\n width,\n height,\n availHeight,\n availWidth,\n colorDepth,\n orientation,\n pixelDepth\n });\n }\n }\n useEventListener(\"resize\", handleSize);\n useIsomorphicLayoutEffect(() => {\n handleSize();\n }, []);\n return screen;\n}\nvar cachedScriptStatuses = /* @__PURE__ */ new Map();\nfunction getScriptNode(src) {\n const node = document.querySelector(\n `script[src=\"${src}\"]`\n );\n const status = node == null ? void 0 : node.getAttribute(\"data-status\");\n return {\n node,\n status\n };\n}\nfunction useScript(src, options) {\n const [status, setStatus] = useState(() => {\n if (!src || (options == null ? void 0 : options.shouldPreventLoad)) {\n return \"idle\";\n }\n if (typeof window === \"undefined\") {\n return \"loading\";\n }\n return cachedScriptStatuses.get(src) ?? \"loading\";\n });\n useEffect(() => {\n if (!src || (options == null ? void 0 : options.shouldPreventLoad)) {\n return;\n }\n const cachedScriptStatus = cachedScriptStatuses.get(src);\n if (cachedScriptStatus === \"ready\" || cachedScriptStatus === \"error\") {\n setStatus(cachedScriptStatus);\n return;\n }\n const script = getScriptNode(src);\n let scriptNode = script.node;\n if (!scriptNode) {\n scriptNode = document.createElement(\"script\");\n scriptNode.src = src;\n scriptNode.async = true;\n if (options == null ? void 0 : options.id) {\n scriptNode.id = options.id;\n }\n scriptNode.setAttribute(\"data-status\", \"loading\");\n document.body.appendChild(scriptNode);\n const setAttributeFromEvent = (event) => {\n const scriptStatus = event.type === \"load\" ? \"ready\" : \"error\";\n scriptNode == null ? void 0 : scriptNode.setAttribute(\"data-status\", scriptStatus);\n };\n scriptNode.addEventListener(\"load\", setAttributeFromEvent);\n scriptNode.addEventListener(\"error\", setAttributeFromEvent);\n } else {\n setStatus(script.status ?? cachedScriptStatus ?? \"loading\");\n }\n const setStateFromEvent = (event) => {\n const newStatus = event.type === \"load\" ? \"ready\" : \"error\";\n setStatus(newStatus);\n cachedScriptStatuses.set(src, newStatus);\n };\n scriptNode.addEventListener(\"load\", setStateFromEvent);\n scriptNode.addEventListener(\"error\", setStateFromEvent);\n return () => {\n if (scriptNode) {\n scriptNode.removeEventListener(\"load\", setStateFromEvent);\n scriptNode.removeEventListener(\"error\", setStateFromEvent);\n }\n if (scriptNode && (options == null ? void 0 : options.removeOnUnmount)) {\n scriptNode.remove();\n cachedScriptStatuses.delete(src);\n }\n };\n }, [src, options == null ? void 0 : options.shouldPreventLoad, options == null ? void 0 : options.removeOnUnmount, options == null ? void 0 : options.id]);\n return status;\n}\nvar IS_SERVER5 = typeof window === \"undefined\";\nfunction useScrollLock(options = {}) {\n const { autoLock = true, lockTarget, widthReflow = true } = options;\n const [isLocked, setIsLocked] = useState(false);\n const target = useRef(null);\n const originalStyle = useRef(null);\n const lock = () => {\n if (target.current) {\n const { overflow, paddingRight } = target.current.style;\n originalStyle.current = { overflow, paddingRight };\n if (widthReflow) {\n const offsetWidth = target.current === document.body ? window.innerWidth : target.current.offsetWidth;\n const currentPaddingRight = parseInt(window.getComputedStyle(target.current).paddingRight, 10) || 0;\n const scrollbarWidth = offsetWidth - target.current.scrollWidth;\n target.current.style.paddingRight = `${scrollbarWidth + currentPaddingRight}px`;\n }\n target.current.style.overflow = \"hidden\";\n setIsLocked(true);\n }\n };\n const unlock = () => {\n if (target.current && originalStyle.current) {\n target.current.style.overflow = originalStyle.current.overflow;\n if (widthReflow) {\n target.current.style.paddingRight = originalStyle.current.paddingRight;\n }\n }\n setIsLocked(false);\n };\n useIsomorphicLayoutEffect(() => {\n if (IS_SERVER5)\n return;\n if (lockTarget) {\n target.current = typeof lockTarget === \"string\" ? document.querySelector(lockTarget) : lockTarget;\n }\n if (!target.current) {\n target.current = document.body;\n }\n if (autoLock) {\n lock();\n }\n return () => {\n unlock();\n };\n }, [autoLock, lockTarget, widthReflow]);\n return { isLocked, lock, unlock };\n}\nvar IS_SERVER6 = typeof window === \"undefined\";\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { initializeWithValue = true } = options;\n const serializer = useCallback(\n (value) => {\n if (options.serializer) {\n return options.serializer(value);\n }\n return JSON.stringify(value);\n },\n [options]\n );\n const deserializer = useCallback(\n (value) => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return defaultValue;\n }\n return parsed;\n },\n [options, initialValue]\n );\n const readValue = useCallback(() => {\n const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;\n if (IS_SERVER6) {\n return initialValueToUse;\n }\n try {\n const raw = window.sessionStorage.getItem(key);\n return raw ? deserializer(raw) : initialValueToUse;\n } catch (error) {\n console.warn(`Error reading sessionStorage key \\u201C${key}\\u201D:`, error);\n return initialValueToUse;\n }\n }, [initialValue, key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return initialValue instanceof Function ? initialValue() : initialValue;\n });\n const setValue = useEventCallback((value) => {\n if (IS_SERVER6) {\n console.warn(\n `Tried setting sessionStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n try {\n const newValue = value instanceof Function ? value(readValue()) : value;\n window.sessionStorage.setItem(key, serializer(newValue));\n setStoredValue(newValue);\n window.dispatchEvent(new StorageEvent(\"session-storage\", { key }));\n } catch (error) {\n console.warn(`Error setting sessionStorage key \\u201C${key}\\u201D:`, error);\n }\n });\n const removeValue = useEventCallback(() => {\n if (IS_SERVER6) {\n console.warn(\n `Tried removing sessionStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n window.sessionStorage.removeItem(key);\n setStoredValue(defaultValue);\n window.dispatchEvent(new StorageEvent(\"session-storage\", { key }));\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(\n (event) => {\n if (event.key && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"session-storage\", handleStorageChange);\n return [storedValue, setValue, removeValue];\n}\nfunction useStep(maxStep) {\n const [currentStep, setCurrentStep] = useState(1);\n const canGoToNextStep = currentStep + 1 <= maxStep;\n const canGoToPrevStep = currentStep - 1 > 0;\n const setStep = useCallback(\n (step) => {\n const newStep = step instanceof Function ? step(currentStep) : step;\n if (newStep >= 1 && newStep <= maxStep) {\n setCurrentStep(newStep);\n return;\n }\n throw new Error(\"Step not valid\");\n },\n [maxStep, currentStep]\n );\n const goToNextStep = useCallback(() => {\n if (canGoToNextStep) {\n setCurrentStep((step) => step + 1);\n }\n }, [canGoToNextStep]);\n const goToPrevStep = useCallback(() => {\n if (canGoToPrevStep) {\n setCurrentStep((step) => step - 1);\n }\n }, [canGoToPrevStep]);\n const reset = useCallback(() => {\n setCurrentStep(1);\n }, []);\n return [\n currentStep,\n {\n goToNextStep,\n goToPrevStep,\n canGoToNextStep,\n canGoToPrevStep,\n setStep,\n reset\n }\n ];\n}\n\n// src/useTernaryDarkMode/useTernaryDarkMode.ts\nvar COLOR_SCHEME_QUERY2 = \"(prefers-color-scheme: dark)\";\nvar LOCAL_STORAGE_KEY2 = \"usehooks-ts-ternary-dark-mode\";\nfunction useTernaryDarkMode({\n defaultValue = \"system\",\n localStorageKey = LOCAL_STORAGE_KEY2,\n initializeWithValue = true\n} = {}) {\n const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY2, { initializeWithValue });\n const [mode, setMode] = useLocalStorage(localStorageKey, defaultValue, {\n initializeWithValue\n });\n const isDarkMode = mode === \"dark\" || mode === \"system\" && isDarkOS;\n const toggleTernaryDarkMode = () => {\n const modes = [\"light\", \"system\", \"dark\"];\n setMode((prevMode) => {\n const nextIndex = (modes.indexOf(prevMode) + 1) % modes.length;\n return modes[nextIndex];\n });\n };\n return {\n isDarkMode,\n ternaryDarkMode: mode,\n setTernaryDarkMode: setMode,\n toggleTernaryDarkMode\n };\n}\nfunction useTimeout(callback, delay) {\n const savedCallback = useRef(callback);\n useIsomorphicLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n useEffect(() => {\n if (!delay && delay !== 0) {\n return;\n }\n const id = setTimeout(() => {\n savedCallback.current();\n }, delay);\n return () => {\n clearTimeout(id);\n };\n }, [delay]);\n}\nfunction useToggle(defaultValue) {\n const [value, setValue] = useState(!!defaultValue);\n const toggle = useCallback(() => {\n setValue((x) => !x);\n }, []);\n return [value, toggle, setValue];\n}\nvar IS_SERVER7 = typeof window === \"undefined\";\nfunction useWindowSize(options = {}) {\n let { initializeWithValue = true } = options;\n if (IS_SERVER7) {\n initializeWithValue = false;\n }\n const [windowSize, setWindowSize] = useState(() => {\n if (initializeWithValue) {\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n }\n return {\n width: void 0,\n height: void 0\n };\n });\n const debouncedSetWindowSize = useDebounceCallback(\n setWindowSize,\n options.debounceDelay\n );\n function handleSize() {\n const setSize = options.debounceDelay ? debouncedSetWindowSize : setWindowSize;\n setSize({\n width: window.innerWidth,\n height: window.innerHeight\n });\n }\n useEventListener(\"resize\", handleSize);\n useIsomorphicLayoutEffect(() => {\n handleSize();\n }, []);\n return windowSize;\n}\n\nexport { useBoolean, useClickAnyWhere, useCopyToClipboard, useCountdown, useCounter, useDarkMode, useDebounceCallback, useDebounceValue, useDocumentTitle, useEventCallback, useEventListener, useHover, useIntersectionObserver, useInterval, useIsClient, useIsMounted, useIsomorphicLayoutEffect, useLocalStorage, useMap, useMediaQuery, useOnClickOutside, useReadLocalStorage, useResizeObserver, useScreen, useScript, useScrollLock, useSessionStorage, useStep, useTernaryDarkMode, useTimeout, useToggle, useUnmount, useWindowSize };\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n () => selector(api.getState()),\n () => selector(api.getInitialState())\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\n\nexport { create, useStore };\n","import { create } from 'zustand';\r\n\r\ninterface Disclosure {\r\n open: boolean;\r\n setOpen: (open: boolean) => void;\r\n}\r\n\r\ninterface Popups {\r\n signUp: Disclosure;\r\n signIn: Disclosure;\r\n disclaimer: Disclosure;\r\n depositWithdrawal: Disclosure;\r\n}\r\n\r\nexport const usePopupsStore = create<Popups>((set, get) => ({\r\n signIn: {\r\n open: false,\r\n setOpen(open: boolean) {\r\n set({ signIn: { ...get().signIn, open } });\r\n },\r\n },\r\n signUp: {\r\n open: false,\r\n setOpen(open: boolean) {\r\n set({ signUp: { ...get().signUp, open } });\r\n },\r\n },\r\n disclaimer: {\r\n open: false,\r\n setOpen(open: boolean) {\r\n set({ disclaimer: { ...get().disclaimer, open } });\r\n },\r\n },\r\n depositWithdrawal: {\r\n open: false,\r\n setOpen(open: boolean) {\r\n set({ depositWithdrawal: { ...get().depositWithdrawal, open } });\r\n },\r\n },\r\n}));\r\n","import { useQuery } from '@tanstack/react-query';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { Query, Session } from '../../types';\r\nimport { getSessionQueryKey } from './getSessionQueryKey';\r\n\r\nexport const useSessionQuery: Query<Session> = (config) => {\r\n return useQuery({\r\n ...config,\r\n queryKey: getSessionQueryKey(),\r\n queryFn: async () => {\r\n return await getSession();\r\n },\r\n });\r\n};\r\n","import type { ApiResponse, Session } from '../../types';\r\n\r\nexport async function getSession(): Promise<Session> {\r\n const res = await fetch('/api/sessions', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n });\r\n\r\n const json = (await res.json()) as ApiResponse<Session>;\r\n\r\n return json.ok ? json.data : { status: 'unauthenticated' };\r\n}\r\n","import type { QueryKey } from '@tanstack/react-query';\r\n\r\nexport const getSessionQueryKey = (): QueryKey => ['queries/session'];\r\n","import { addMinutes } from 'date-fns';\r\nimport { clamp } from 'lodash-es';\r\nimport { useLocalStorage, useTimeout } from 'usehooks-ts';\r\nimport { usePopupsStore } from '../../hooks/useGlobalStore';\r\nimport { useSessionQuery } from '../../hooks/useSessionQuery/useSessionQuery';\r\n\r\nexport function useDisclaimer() {\r\n 'use no memo';\r\n\r\n const sessionQuery = useSessionQuery();\r\n const disclaimerStore = usePopupsStore((state) => state.disclaimer);\r\n\r\n const [refreshPausedUntil, setRefreshPausedUntil] = useLocalStorage<Date | null>(\r\n 'WebPortalDisclaimerRefreshPausedUntil',\r\n null,\r\n {\r\n serializer(v) {\r\n return v?.toISOString() ?? '';\r\n },\r\n deserializer(v) {\r\n return v ? new Date(v) : null;\r\n },\r\n },\r\n );\r\n\r\n const now = new Date();\r\n\r\n const refetchPausedUntilInMs = refreshPausedUntil\r\n ? clamp(refreshPausedUntil.getTime() - now.getTime(), 0, Infinity)\r\n : /* set to zero to trigger timeout function */ 0;\r\n\r\n useTimeout(() => {\r\n disclaimerStore.setOpen(true);\r\n }, refetchPausedUntilInMs);\r\n\r\n return {\r\n open: sessionQuery.isLoading\r\n ? false\r\n : sessionQuery.data?.status === 'authenticated'\r\n ? false\r\n : disclaimerStore.open,\r\n close: () => {\r\n disclaimerStore.setOpen(false);\r\n setRefreshPausedUntil(addMinutes(new Date(), 30));\r\n },\r\n };\r\n}\r\n","export function Games() {\r\n return null;\r\n}\r\n","'use client';\r\n\r\nimport { Toast, Toaster } from '@ark-ui/react';\r\nimport { QueryClientProvider } from '@tanstack/react-query';\r\nimport type { PropsWithChildren } from 'react';\r\nimport { twMerge } from 'tailwind-merge';\r\nimport { AlertCircleIcon } from '../../icons/AlertCircleIcon';\r\nimport { XIcon } from '../../icons/XIcon';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { toaster } from '../../utils/toaster';\r\n\r\nexport function PortalProvider({ children }: PropsWithChildren) {\r\n return (\r\n <QueryClientProvider client={getQueryClient()}>\r\n {children}\r\n\r\n <Toaster toaster={toaster}>\r\n {(toast) => (\r\n <Toast.Root\r\n key={toast.id}\r\n className={twMerge(\r\n 'z-[var(--z-index)]',\r\n 'h-[var(--height)]',\r\n 'opacity-[var(--opacity)]',\r\n '[translate:var(--x)_var(--y)_0]',\r\n 'scale-[var(--scale)]',\r\n\r\n 'shadow-xs',\r\n 'group',\r\n 'flex',\r\n 'w-[860px]',\r\n 'max-w-full',\r\n 'items-center',\r\n 'gap-lg',\r\n 'rounded-xl',\r\n 'border',\r\n 'border-gray-300',\r\n 'bg-white',\r\n 'p-xl',\r\n 'transition-all',\r\n 'duration-300',\r\n )}\r\n >\r\n <div\r\n className={twMerge(\r\n 'flex size-9.5 items-center justify-center rounded-full border-2',\r\n toast.type === 'error' ? 'border-red-500/15' : 'border-green-500/15',\r\n )}\r\n >\r\n <div\r\n className={twMerge(\r\n 'flex size-7 items-center justify-center rounded-full border-2',\r\n toast.type === 'error' ? 'border-red-500/35' : 'border-green-500/35',\r\n )}\r\n >\r\n <AlertCircleIcon\r\n className={twMerge(\r\n 'size-5',\r\n toast.type === 'error' ? 'text-red-500' : 'text-green-500',\r\n )}\r\n />\r\n </div>\r\n </div>\r\n\r\n <div className=\"grow text-sm leading-none\">\r\n <Toast.Title className=\"font-semibold\">\r\n {(toast.title ?? toast.type === 'error') ? 'Error' : 'Success'}\r\n </Toast.Title>\r\n <Toast.Description className=\"text-gray-700 mt-1\">\r\n {toast.description}\r\n </Toast.Description>\r\n </div>\r\n <Toast.CloseTrigger className=\"text-gray-400 hover:text-gray-500 self-start\">\r\n <XIcon className=\"size-5\" />\r\n </Toast.CloseTrigger>\r\n </Toast.Root>\r\n )}\r\n </Toaster>\r\n </QueryClientProvider>\r\n );\r\n}\r\n","import {\n AnyClassGroupIds,\n AnyConfig,\n AnyThemeGroupIds,\n ClassGroup,\n ClassValidator,\n Config,\n ThemeGetter,\n ThemeObject,\n} from './types'\n\nexport interface ClassPartObject {\n nextPart: Map<string, ClassPartObject>\n validators: ClassValidatorObject[]\n classGroupId?: AnyClassGroupIds\n}\n\ninterface ClassValidatorObject {\n classGroupId: AnyClassGroupIds\n validator: ClassValidator\n}\n\nconst CLASS_PART_SEPARATOR = '-'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n const getClassGroupId = (className: string) => {\n const classParts = className.split(CLASS_PART_SEPARATOR)\n\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift()\n }\n\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className)\n }\n\n const getConflictingClassGroupIds = (\n classGroupId: AnyClassGroupIds,\n hasPostfixModifier: boolean,\n ) => {\n const conflicts = conflictingClassGroups[classGroupId] || []\n\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]!]\n }\n\n return conflicts\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nconst getGroupRecursive = (\n classParts: string[],\n classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[0]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n const classGroupFromNextClassPart = nextClassPartObject\n ? getGroupRecursive(classParts.slice(1), nextClassPartObject)\n : undefined\n\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart\n }\n\n if (classPartObject.validators.length === 0) {\n return undefined\n }\n\n const classRest = classParts.join(CLASS_PART_SEPARATOR)\n\n return classPartObject.validators.find(({ validator }) => validator(classRest))?.classGroupId\n}\n\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/\n\nconst getGroupIdForArbitraryProperty = (className: string) => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)![1]\n const property = arbitraryPropertyClassName?.substring(\n 0,\n arbitraryPropertyClassName.indexOf(':'),\n )\n\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property\n }\n }\n}\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config<AnyClassGroupIds, AnyThemeGroupIds>) => {\n const { theme, classGroups } = config\n const classMap: ClassPartObject = {\n nextPart: new Map<string, ClassPartObject>(),\n validators: [],\n }\n\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId]!, classMap, classGroupId, theme)\n }\n\n return classMap\n}\n\nconst processClassesRecursively = (\n classGroup: ClassGroup<AnyThemeGroupIds>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n classGroup.forEach((classDefinition) => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n return\n }\n\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(\n classDefinition(theme),\n classPartObject,\n classGroupId,\n theme,\n )\n return\n }\n\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId,\n })\n\n return\n }\n\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(\n classGroup,\n getPart(classPartObject, key),\n classGroupId,\n theme,\n )\n })\n })\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string) => {\n let currentClassPartObject = classPartObject\n\n path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: [],\n })\n }\n\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart)!\n })\n\n return currentClassPartObject\n}\n\nconst isThemeGetter = (func: ClassValidator | ThemeGetter): func is ThemeGetter =>\n (func as ThemeGetter).isThemeGetter\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache<Key, Value> {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nexport const createLruCache = <Key, Value>(maxCacheSize: number): LruCache<Key, Value> => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache = new Map<Key, Value>()\n let previousCache = new Map<Key, Value>()\n\n const update = (key: Key, value: Value) => {\n cache.set(key, value)\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = new Map()\n }\n }\n\n return {\n get(key) {\n let value = cache.get(key)\n\n if (value !== undefined) {\n return value\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value)\n return value\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value)\n } else {\n update(key, value)\n }\n },\n }\n}\n","import { AnyConfig, ParsedClassName } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\nconst MODIFIER_SEPARATOR = ':'\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length\n\nexport const createParseClassName = (config: AnyConfig) => {\n const { prefix, experimentalParseClassName } = config\n\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = (className: string): ParsedClassName => {\n const modifiers = []\n\n let bracketDepth = 0\n let parenDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index]\n\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') {\n bracketDepth++\n } else if (currentCharacter === ']') {\n bracketDepth--\n } else if (currentCharacter === '(') {\n parenDepth++\n } else if (currentCharacter === ')') {\n parenDepth--\n }\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.substring(modifierStart)\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier)\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n }\n }\n\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR\n const parseClassNameOriginal = parseClassName\n parseClassName = (className) =>\n className.startsWith(fullPrefix)\n ? parseClassNameOriginal(className.substring(fullPrefix.length))\n : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined,\n }\n }\n\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName\n parseClassName = (className) =>\n experimentalParseClassName({ className, parseClassName: parseClassNameOriginal })\n }\n\n return parseClassName\n}\n\nconst stripImportantModifier = (baseClassName: string) => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1)\n }\n\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1)\n }\n\n return baseClassName\n}\n","import { AnyConfig } from './types'\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport const createSortModifiers = (config: AnyConfig) => {\n const orderSensitiveModifiers = Object.fromEntries(\n config.orderSensitiveModifiers.map((modifier) => [modifier, true]),\n )\n\n const sortModifiers = (modifiers: string[]) => {\n if (modifiers.length <= 1) {\n return modifiers\n }\n\n const sortedModifiers: string[] = []\n let unsortedModifiers: string[] = []\n\n modifiers.forEach((modifier) => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier]\n\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier)\n unsortedModifiers = []\n } else {\n unsortedModifiers.push(modifier)\n }\n })\n\n sortedModifiers.push(...unsortedModifiers.sort())\n\n return sortedModifiers\n }\n\n return sortModifiers\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { createSortModifiers } from './sort-modifiers'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n cache: createLruCache<string, string>(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config),\n})\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } =\n configUtils\n\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict: string[] = []\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n let result = ''\n\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index]!\n\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n } = parseClassName(originalClassName)\n\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n let hasPostfixModifier = !!maybePostfixModifierPosition\n let classGroupId = getClassGroupId(\n hasPostfixModifier\n ? baseClassName.substring(0, maybePostfixModifierPosition)\n : baseClassName,\n )\n\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n hasPostfixModifier = false\n }\n\n const variantModifier = sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue\n }\n\n classGroupsInConflict.push(classId)\n\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier)\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i]!\n classGroupsInConflict.push(modifierId + group)\n }\n\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n }\n\n return result\n}\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport function twJoin(...classLists: ClassNameValue[]): string\nexport function twJoin() {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\n while (index < arguments.length) {\n if ((argument = arguments[index++])) {\n if ((resolvedValue = toValue(argument))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n return string\n}\n\nconst toValue = (mix: ClassNameArray | string) => {\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport function createTailwindMerge(\n createConfigFirst: CreateConfigFirst,\n ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall = initTailwindMerge\n\n function initTailwindMerge(classList: string) {\n const config = createConfigRest.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n createConfigFirst() as AnyConfig,\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n function tailwindMerge(classList: string) {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments as any))\n }\n}\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nexport const fromTheme = <\n AdditionalThemeGroupIds extends string = never,\n DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>): ThemeGetter => {\n const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>\n theme[key] || []\n\n themeGetter.isThemeGetter = true as const\n\n return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\nconst imageRegex =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isFraction = (value: string) => fractionRegex.test(value)\n\nexport const isNumber = (value: string) => !!value && !Number.isNaN(Number(value))\n\nexport const isInteger = (value: string) => !!value && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nexport const isAny = () => true\n\nconst isLengthOnly = (value: string) =>\n // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n\nexport const isAnyNonArbitrary = (value: string) =>\n !isArbitraryValue(value) && !isArbitraryVariable(value)\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, isLabelSize, isNever)\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n getIsArbitraryValue(value, isLabelLength, isLengthOnly)\n\nexport const isArbitraryNumber = (value: string) =>\n getIsArbitraryValue(value, isLabelNumber, isNumber)\n\nexport const isArbitraryPosition = (value: string) =>\n getIsArbitraryValue(value, isLabelPosition, isNever)\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, isLabelImage, isImage)\n\nexport const isArbitraryShadow = (value: string) =>\n getIsArbitraryValue(value, isLabelShadow, isShadow)\n\nexport const isArbitraryVariable = (value: string) => arbitraryVariableRegex.test(value)\n\nexport const isArbitraryVariableLength = (value: string) =>\n getIsArbitraryVariable(value, isLabelLength)\n\nexport const isArbitraryVariableFamilyName = (value: string) =>\n getIsArbitraryVariable(value, isLabelFamilyName)\n\nexport const isArbitraryVariablePosition = (value: string) =>\n getIsArbitraryVariable(value, isLabelPosition)\n\nexport const isArbitraryVariableSize = (value: string) => getIsArbitraryVariable(value, isLabelSize)\n\nexport const isArbitraryVariableImage = (value: string) =>\n getIsArbitraryVariable(value, isLabelImage)\n\nexport const isArbitraryVariableShadow = (value: string) =>\n getIsArbitraryVariable(value, isLabelShadow, true)\n\n// Helpers\n\nconst getIsArbitraryValue = (\n value: string,\n testLabel: (label: string) => boolean,\n testValue: (value: string) => boolean,\n) => {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nconst getIsArbitraryVariable = (\n value: string,\n testLabel: (label: string) => boolean,\n shouldMatchNoLabel = false,\n) => {\n const result = arbitraryVariableRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n return shouldMatchNoLabel\n }\n\n return false\n}\n\n// Labels\n\nconst isLabelPosition = (label: string) => label === 'position' || label === 'percentage'\n\nconst isLabelImage = (label: string) => label === 'image' || label === 'url'\n\nconst isLabelSize = (label: string) => label === 'length' || label === 'size' || label === 'bg-size'\n\nconst isLabelLength = (label: string) => label === 'length'\n\nconst isLabelNumber = (label: string) => label === 'number'\n\nconst isLabelFamilyName = (label: string) => label === 'family-name'\n\nconst isLabelShadow = (label: string) => label === 'shadow'\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n\n const themeColor = fromTheme('color')\n const themeFont = fromTheme('font')\n const themeText = fromTheme('text')\n const themeFontWeight = fromTheme('font-weight')\n const themeTracking = fromTheme('tracking')\n const themeLeading = fromTheme('leading')\n const themeBreakpoint = fromTheme('breakpoint')\n const themeContainer = fromTheme('container')\n const themeSpacing = fromTheme('spacing')\n const themeRadius = fromTheme('radius')\n const themeShadow = fromTheme('shadow')\n const themeInsetShadow = fromTheme('inset-shadow')\n const themeTextShadow = fromTheme('text-shadow')\n const themeDropShadow = fromTheme('drop-shadow')\n const themeBlur = fromTheme('blur')\n const themePerspective = fromTheme('perspective')\n const themeAspect = fromTheme('aspect')\n const themeEase = fromTheme('ease')\n const themeAnimate = fromTheme('animate')\n\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n\n const scaleBreak = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const scalePosition = () =>\n [\n 'center',\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top',\n 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top',\n 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom',\n 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom',\n ] as const\n const scalePositionWithArbitrary = () =>\n [...scalePosition(), isArbitraryVariable, isArbitraryValue] as const\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const scaleOverscroll = () => ['auto', 'contain', 'none'] as const\n const scaleUnambiguousSpacing = () =>\n [isArbitraryVariable, isArbitraryValue, themeSpacing] as const\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()] as const\n const scaleGridTemplateColsRows = () =>\n [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridColRowStartAndEnd = () =>\n [\n 'auto',\n { span: ['full', isInteger, isArbitraryVariable, isArbitraryValue] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleGridColRowStartOrEnd = () =>\n [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridAutoColsRows = () =>\n ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue] as const\n const scaleAlignPrimaryAxis = () =>\n [\n 'start',\n 'end',\n 'center',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n 'center-safe',\n 'end-safe',\n ] as const\n const scaleAlignSecondaryAxis = () =>\n ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'] as const\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()] as const\n const scaleSizing = () =>\n [\n isFraction,\n 'auto',\n 'full',\n 'dvw',\n 'dvh',\n 'lvw',\n 'lvh',\n 'svw',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue] as const\n const scaleBgPosition = () =>\n [\n ...scalePosition(),\n isArbitraryVariablePosition,\n isArbitraryPosition,\n { position: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleBgRepeat = () => ['no-repeat', { repeat: ['', 'x', 'y', 'space', 'round'] }] as const\n const scaleBgSize = () =>\n [\n 'auto',\n 'cover',\n 'contain',\n isArbitraryVariableSize,\n isArbitrarySize,\n { size: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleGradientStopPosition = () =>\n [isPercent, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleRadius = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n 'full',\n themeRadius,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleBorderWidth = () =>\n ['', isNumber, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'] as const\n const scaleBlendMode = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ] as const\n const scaleMaskImagePosition = () =>\n [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition] as const\n const scaleBlur = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeBlur,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()] as const\n\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n ],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest'],\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [\n {\n aspect: [\n 'auto',\n 'square',\n isFraction,\n isArbitraryValue,\n isArbitraryVariable,\n themeAspect,\n ],\n },\n ],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [\n { columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer] },\n ],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': scaleBreak() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': scaleBreak() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: scalePositionWithArbitrary() }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: scaleOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': scaleOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': scaleOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: scaleOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': scaleOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': scaleOverscroll() }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{ inset: scaleInset() }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': scaleInset() }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': scaleInset() }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{ start: scaleInset() }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{ end: scaleInset() }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: scaleInset() }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: scaleInset() }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: scaleInset() }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: scaleInset() }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [\n {\n basis: [\n isFraction,\n 'full',\n 'auto',\n themeContainer,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['nowrap', 'wrap', 'wrap-reverse'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [\n {\n order: [\n isInteger,\n 'first',\n 'last',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': scaleGridTemplateColsRows() }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{ col: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': scaleGridTemplateColsRows() }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{ row: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': scaleGridAutoColsRows() }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': scaleGridAutoColsRows() }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: scaleUnambiguousSpacing() }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': scaleUnambiguousSpacing() }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': scaleUnambiguousSpacing() }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: [...scaleAlignPrimaryAxis(), 'normal'] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...scaleAlignPrimaryAxis()] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: [...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [\n { self: ['auto', ...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] },\n ],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': scaleAlignPrimaryAxis() }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: scaleUnambiguousSpacing() }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: scaleUnambiguousSpacing() }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: scaleUnambiguousSpacing() }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: scaleUnambiguousSpacing() }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: scaleUnambiguousSpacing() }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: scaleUnambiguousSpacing() }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: scaleUnambiguousSpacing() }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: scaleUnambiguousSpacing() }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: scaleUnambiguousSpacing() }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: scaleMargin() }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: scaleMargin() }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: scaleMargin() }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: scaleMargin() }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: scaleMargin() }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: scaleMargin() }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: scaleMargin() }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: scaleMargin() }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: scaleMargin() }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{ 'space-x': scaleUnambiguousSpacing() }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{ 'space-y': scaleUnambiguousSpacing() }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n\n // --------------\n // --- Sizing ---\n // --------------\n\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{ size: scaleSizing() }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{ w: [themeContainer, 'screen', ...scaleSizing()] }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [\n {\n 'min-w': [\n themeContainer,\n 'screen',\n /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none',\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n themeContainer,\n 'screen',\n 'none',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n { screen: [themeBreakpoint] },\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{ h: ['screen', 'lh', ...scaleSizing()] }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{ 'min-h': ['screen', 'lh', 'none', ...scaleSizing()] }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{ 'max-h': ['screen', 'lh', ...scaleSizing()] }],\n\n // ------------------\n // --- Typography ---\n // ------------------\n\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [\n { text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{ font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber] }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [\n {\n 'font-stretch': [\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n isPercent,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{ font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont] }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [\n { 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber] },\n ],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryVariable, isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [\n { list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: scaleColor() }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: scaleColor() }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{ decoration: [...scaleLineStyle(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [\n {\n decoration: [\n isNumber,\n 'from-font',\n 'auto',\n isArbitraryVariable,\n isArbitraryLength,\n ],\n },\n ],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: scaleColor() }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [\n { 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: scaleUnambiguousSpacing() }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [\n { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n ],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{ wrap: ['break-word', 'anywhere', 'normal'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // -------------------\n // --- Backgrounds ---\n // -------------------\n\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: scaleBgPosition() }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: scaleBgRepeat() }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: scaleBgSize() }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n {\n linear: [\n { to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue],\n },\n isArbitraryVariableImage,\n isArbitraryImage,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: scaleColor() }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: scaleColor() }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: scaleColor() }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: scaleColor() }],\n\n // ---------------\n // --- Borders ---\n // ---------------\n\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: scaleRadius() }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': scaleRadius() }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': scaleRadius() }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': scaleRadius() }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': scaleRadius() }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': scaleRadius() }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': scaleRadius() }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': scaleRadius() }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': scaleRadius() }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': scaleRadius() }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': scaleRadius() }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': scaleRadius() }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': scaleRadius() }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': scaleRadius() }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': scaleRadius() }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: scaleBorderWidth() }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': scaleBorderWidth() }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': scaleBorderWidth() }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': scaleBorderWidth() }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': scaleBorderWidth() }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': scaleBorderWidth() }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': scaleBorderWidth() }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': scaleBorderWidth() }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': scaleBorderWidth() }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{ 'divide-x': scaleBorderWidth() }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{ 'divide-y': scaleBorderWidth() }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{ divide: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: scaleColor() }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': scaleColor() }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': scaleColor() }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{ 'border-s': scaleColor() }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{ 'border-e': scaleColor() }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': scaleColor() }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': scaleColor() }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': scaleColor() }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': scaleColor() }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: scaleColor() }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: [...scaleLineStyle(), 'none', 'hidden'] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [\n { 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [\n { outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: scaleColor() }],\n\n // ---------------\n // --- Effects ---\n // ---------------\n\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [\n {\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{ shadow: scaleColor() }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [\n {\n 'inset-shadow': [\n 'none',\n themeInsetShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{ 'inset-shadow': scaleColor() }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{ ring: scaleBorderWidth() }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{ ring: scaleColor() }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{ 'ring-offset': [isNumber, isArbitraryLength] }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{ 'ring-offset': scaleColor() }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{ 'inset-ring': scaleBorderWidth() }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{ 'inset-ring': scaleColor() }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [\n {\n 'text-shadow': [\n 'none',\n themeTextShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{ 'text-shadow': scaleColor() }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter'] }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': scaleBlendMode() }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [\n { 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n 'mask-no-clip',\n ],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{ mask: ['add', 'subtract', 'intersect', 'exclude'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{ 'mask-linear': [isNumber] }],\n 'mask-image-linear-from-pos': [{ 'mask-linear-from': scaleMaskImagePosition() }],\n 'mask-image-linear-to-pos': [{ 'mask-linear-to': scaleMaskImagePosition() }],\n 'mask-image-linear-from-color': [{ 'mask-linear-from': scaleColor() }],\n 'mask-image-linear-to-color': [{ 'mask-linear-to': scaleColor() }],\n 'mask-image-t-from-pos': [{ 'mask-t-from': scaleMaskImagePosition() }],\n 'mask-image-t-to-pos': [{ 'mask-t-to': scaleMaskImagePosition() }],\n 'mask-image-t-from-color': [{ 'mask-t-from': scaleColor() }],\n 'mask-image-t-to-color': [{ 'mask-t-to': scaleColor() }],\n 'mask-image-r-from-pos': [{ 'mask-r-from': scaleMaskImagePosition() }],\n 'mask-image-r-to-pos': [{ 'mask-r-to': scaleMaskImagePosition() }],\n 'mask-image-r-from-color': [{ 'mask-r-from': scaleColor() }],\n 'mask-image-r-to-color': [{ 'mask-r-to': scaleColor() }],\n 'mask-image-b-from-pos': [{ 'mask-b-from': scaleMaskImagePosition() }],\n 'mask-image-b-to-pos': [{ 'mask-b-to': scaleMaskImagePosition() }],\n 'mask-image-b-from-color': [{ 'mask-b-from': scaleColor() }],\n 'mask-image-b-to-color': [{ 'mask-b-to': scaleColor() }],\n 'mask-image-l-from-pos': [{ 'mask-l-from': scaleMaskImagePosition() }],\n 'mask-image-l-to-pos': [{ 'mask-l-to': scaleMaskImagePosition() }],\n 'mask-image-l-from-color': [{ 'mask-l-from': scaleColor() }],\n 'mask-image-l-to-color': [{ 'mask-l-to': scaleColor() }],\n 'mask-image-x-from-pos': [{ 'mask-x-from': scaleMaskImagePosition() }],\n 'mask-image-x-to-pos': [{ 'mask-x-to': scaleMaskImagePosition() }],\n 'mask-image-x-from-color': [{ 'mask-x-from': scaleColor() }],\n 'mask-image-x-to-color': [{ 'mask-x-to': scaleColor() }],\n 'mask-image-y-from-pos': [{ 'mask-y-from': scaleMaskImagePosition() }],\n 'mask-image-y-to-pos': [{ 'mask-y-to': scaleMaskImagePosition() }],\n 'mask-image-y-from-color': [{ 'mask-y-from': scaleColor() }],\n 'mask-image-y-to-color': [{ 'mask-y-to': scaleColor() }],\n 'mask-image-radial': [{ 'mask-radial': [isArbitraryVariable, isArbitraryValue] }],\n 'mask-image-radial-from-pos': [{ 'mask-radial-from': scaleMaskImagePosition() }],\n 'mask-image-radial-to-pos': [{ 'mask-radial-to': scaleMaskImagePosition() }],\n 'mask-image-radial-from-color': [{ 'mask-radial-from': scaleColor() }],\n 'mask-image-radial-to-color': [{ 'mask-radial-to': scaleColor() }],\n 'mask-image-radial-shape': [{ 'mask-radial': ['circle', 'ellipse'] }],\n 'mask-image-radial-size': [\n { 'mask-radial': [{ closest: ['side', 'corner'], farthest: ['side', 'corner'] }] },\n ],\n 'mask-image-radial-pos': [{ 'mask-radial-at': scalePosition() }],\n 'mask-image-conic-pos': [{ 'mask-conic': [isNumber] }],\n 'mask-image-conic-from-pos': [{ 'mask-conic-from': scaleMaskImagePosition() }],\n 'mask-image-conic-to-pos': [{ 'mask-conic-to': scaleMaskImagePosition() }],\n 'mask-image-conic-from-color': [{ 'mask-conic-from': scaleColor() }],\n 'mask-image-conic-to-color': [{ 'mask-conic-to': scaleColor() }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{ mask: ['alpha', 'luminance', 'match'] }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [\n { 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n ],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{ mask: scaleBgPosition() }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{ mask: scaleBgRepeat() }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{ mask: scaleBgSize() }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{ 'mask-type': ['alpha', 'luminance'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{ mask: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // ---------------\n // --- Filters ---\n // ---------------\n\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [\n {\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: scaleBlur() }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [\n {\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeDropShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{ 'drop-shadow': scaleColor() }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [\n {\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': scaleBlur() }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [\n { 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [\n { 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [\n { 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [\n { 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [\n { 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [\n { 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [\n { 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [\n { 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n\n // --------------\n // --- Tables ---\n // --------------\n\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': scaleUnambiguousSpacing() }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n '',\n 'all',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{ transition: ['normal', 'discrete'] }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue] }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [\n { ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------\n // --- Transforms ---\n // ------------------\n\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{ backface: ['hidden', 'visible'] }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [\n { perspective: [themePerspective, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{ 'perspective-origin': scalePositionWithArbitrary() }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: scaleRotate() }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{ 'rotate-x': scaleRotate() }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{ 'rotate-y': scaleRotate() }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{ 'rotate-z': scaleRotate() }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: scaleScale() }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': scaleScale() }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': scaleScale() }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{ 'scale-z': scaleScale() }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{ skew: scaleSkew() }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': scaleSkew() }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': scaleSkew() }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [\n { transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu'] },\n ],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{ origin: scalePositionWithArbitrary() }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{ transform: ['3d', 'flat'] }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{ translate: scaleTranslate() }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': scaleTranslate() }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': scaleTranslate() }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{ 'translate-z': scaleTranslate() }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: scaleColor() }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{ appearance: ['none', 'auto'] }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: scaleColor() }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [\n { scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light'] },\n ],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{ 'field-sizing': ['fixed', 'content'] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['auto', 'none'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', '', 'y', 'x'] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': scaleUnambiguousSpacing() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{ touch: ['auto', 'none', 'manipulation'] }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{ 'touch-pan': ['x', 'left', 'right'] }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{ 'touch-pan': ['y', 'up', 'down'] }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n {\n 'will-change': [\n 'auto',\n 'scroll',\n 'contents',\n 'transform',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n\n // -----------\n // --- SVG ---\n // -----------\n\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: ['none', ...scaleColor()] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [\n {\n stroke: [\n isNumber,\n isArbitraryVariableLength,\n isArbitraryLength,\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: ['none', ...scaleColor()] }],\n\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': [\n 'border-w-x',\n 'border-w-y',\n 'border-w-s',\n 'border-w-e',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-x',\n 'border-color-y',\n 'border-color-s',\n 'border-color-e',\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch'],\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading'],\n },\n orderSensitiveModifiers: [\n '*',\n '**',\n 'after',\n 'backdrop',\n 'before',\n 'details-content',\n 'file',\n 'first-letter',\n 'first-line',\n 'marker',\n 'placeholder',\n 'selection',\n ],\n } as const satisfies Config<DefaultClassGroupIds, DefaultThemeGroupIds>\n}\n","import { AnyConfig, ConfigExtension, NoInfer } from './types'\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nexport const mergeConfigs = <ClassGroupIds extends string, ThemeGroupIds extends string = never>(\n baseConfig: AnyConfig,\n {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {},\n }: ConfigExtension<ClassGroupIds, ThemeGroupIds>,\n) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize)\n overrideProperty(baseConfig, 'prefix', prefix)\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName)\n\n overrideConfigProperties(baseConfig.theme, override.theme)\n overrideConfigProperties(baseConfig.classGroups, override.classGroups)\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups)\n overrideConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n override.conflictingClassGroupModifiers,\n )\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers)\n\n mergeConfigProperties(baseConfig.theme, extend.theme)\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups)\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups)\n mergeConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n extend.conflictingClassGroupModifiers,\n )\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers')\n\n return baseConfig\n}\n\nconst overrideProperty = <T extends object, K extends keyof T>(\n baseObject: T,\n overrideKey: K,\n overrideValue: T[K] | undefined,\n) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue\n }\n}\n\nconst overrideConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n overrideObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key])\n }\n }\n}\n\nconst mergeConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n mergeObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key)\n }\n }\n}\n\nconst mergeArrayProperties = <Key extends string>(\n baseObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n mergeObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n key: Key,\n) => {\n const mergeValue = mergeObject[key]\n\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue\n }\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { AnyConfig, ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\n\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\n\nexport const extendTailwindMerge = <\n AdditionalClassGroupIds extends string = never,\n AdditionalThemeGroupIds extends string = never,\n>(\n configExtension:\n | ConfigExtension<\n DefaultClassGroupIds | AdditionalClassGroupIds,\n DefaultThemeGroupIds | AdditionalThemeGroupIds\n >\n | CreateConfigSubsequent,\n ...createConfig: CreateConfigSubsequent[]\n) =>\n typeof configExtension === 'function'\n ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n : createTailwindMerge(\n () => mergeConfigs(getDefaultConfig(), configExtension),\n ...createConfig,\n )\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function AlertCircleIcon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M12 8V12M12 16H12.01M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" />\r\n </svg>\r\n );\r\n}\r\n","export function XIcon(props: React.ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M18 6L6 18M6 6L18 18\" />\r\n </svg>\r\n );\r\n}\r\n","import { QueryClient, defaultShouldDehydrateQuery, isServer } from '@tanstack/react-query';\r\n\r\nfunction createQueryClient() {\r\n return new QueryClient({\r\n defaultOptions: {\r\n queries: {\r\n staleTime: 1000 * 60,\r\n },\r\n dehydrate: {\r\n shouldDehydrateQuery(query) {\r\n return defaultShouldDehydrateQuery(query) || query.state.status === 'pending';\r\n },\r\n },\r\n },\r\n });\r\n}\r\n\r\nlet BROWSER_QUERY_CLIENT: QueryClient | undefined = undefined;\r\n\r\nexport const getQueryClient = () => {\r\n if (isServer) {\r\n return createQueryClient();\r\n }\r\n\r\n if (!BROWSER_QUERY_CLIENT) {\r\n BROWSER_QUERY_CLIENT = createQueryClient();\r\n }\r\n\r\n return BROWSER_QUERY_CLIENT;\r\n};\r\n","import { createToaster, type CreateToasterReturn } from '@ark-ui/react/toast';\r\n\r\nexport const toaster: CreateToasterReturn = createToaster({\r\n placement: 'top',\r\n duration: 5000,\r\n max: 5,\r\n overlap: true,\r\n gap: 8,\r\n});\r\n","'use client';\r\n\r\nimport { Dialog, Portal } from '@ark-ui/react';\r\nimport Image, { type ImageProps } from 'next/image';\r\nimport type { ReactNode } from 'react';\r\nimport { usePopupsStore } from '../../hooks/useGlobalStore';\r\nimport { XIcon } from '../../icons/XIcon';\r\nimport { SignInForm } from './SignInForm';\r\n\r\nexport interface SignInProps {\r\n logo: ImageProps['src'];\r\n banner: ImageProps['src'];\r\n children?: ReactNode;\r\n}\r\n\r\nexport function SignIn(props: SignInProps) {\r\n const signInStore = usePopupsStore((popups) => popups.signIn);\r\n\r\n return (\r\n <Dialog.Root\r\n open={signInStore.open}\r\n onOpenChange={(details) => {\r\n signInStore.setOpen(details.open);\r\n }}\r\n lazyMount\r\n unmountOnExit\r\n closeOnEscape={false}\r\n closeOnInteractOutside={false}\r\n >\r\n <Dialog.Trigger asChild>\r\n {props.children ?? (\r\n <button\r\n type=\"button\"\r\n className=\"text-gray-600 flex h-11 items-center justify-center px-3.5 font-semibold\"\r\n >\r\n Login\r\n </button>\r\n )}\r\n </Dialog.Trigger>\r\n <Portal>\r\n <Dialog.Backdrop className=\"z-backdrop ui-open:animate-backdrop-in ui-closed:animate-backdrop-out fixed inset-0 hidden bg-black/60 lg:block\" />\r\n <Dialog.Positioner className=\"z-dialog fixed inset-0 overflow-y-auto lg:py-16\">\r\n <Dialog.Content className=\"ui-open:animate-dialog-in ui-closed:animate-dialog-out mx-auto flex h-full w-full items-start lg:h-auto lg:w-fit\">\r\n <Image\r\n src={props.banner}\r\n alt=\"h-auto w-[400px]\"\r\n width={400}\r\n height={800}\r\n className=\"hidden rounded-l-xl lg:block\"\r\n />\r\n\r\n <div className=\"relative flex w-full flex-col items-start self-stretch bg-white p-3xl lg:w-[400px] lg:rounded-r-xl\">\r\n <Dialog.CloseTrigger className=\"text-gray-300 hover:text-gray-400 absolute right-4 top-4 flex size-11 items-center justify-center\">\r\n <XIcon className=\"size-6\" />\r\n </Dialog.CloseTrigger>\r\n\r\n <Image\r\n src={props.logo}\r\n alt=\"\"\r\n width={200}\r\n height={100}\r\n className=\"mx-auto h-auto w-[120px]\"\r\n draggable={false}\r\n />\r\n\r\n <SignInForm />\r\n </div>\r\n </Dialog.Content>\r\n </Dialog.Positioner>\r\n </Portal>\r\n </Dialog.Root>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { Checkbox, Field, PinInput, useDialogContext } from '@ark-ui/react';\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useState } from 'react';\r\nimport { Controller, useForm } from 'react-hook-form';\r\nimport { z } from 'zod';\r\nimport { usePopupsStore } from '../../hooks/useGlobalStore';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { useMobileNumberParser } from '../../hooks/useMobileNumberParser';\r\nimport { useSendVerificationCodeMutation } from '../../hooks/useSendVerificationCodeMutation/useSendVerificationCodeMutation';\r\nimport { useSignInMutation } from '../../hooks/useSigninMutation/useSignInMutation';\r\nimport { ArrowLeftIcon } from '../../icons/ArrowLeftIcon';\r\nimport { CheckIcon } from '../../icons/CheckIcon';\r\nimport { FacebookIcon } from '../../icons/FacebookIcon';\r\nimport { GoogleIcon } from '../../icons/GoogleIcon';\r\nimport { toaster } from '../../utils/toaster';\r\n\r\nexport function SignInForm() {\r\n const [step, setStep] = useState<1 | 2>(1);\r\n\r\n const dialog = useDialogContext();\r\n const signUpStore = usePopupsStore((popups) => popups.signUp);\r\n const signInMutation = useSignInMutation();\r\n const sendVerificationCodeMutation = useSendVerificationCodeMutation();\r\n\r\n const localeInfo = useLocaleInfo();\r\n const mobileNumberParser = useMobileNumberParser();\r\n\r\n const Step1Definition = z.object({\r\n mobileNumber: z.string().superRefine((v, ctx) => {\r\n if (!mobileNumberParser.validate(v)) {\r\n ctx.addIssue({\r\n code: z.ZodIssueCode.custom,\r\n message: 'Invalid mobile number',\r\n });\r\n }\r\n }),\r\n termsAccepted: z.boolean().superRefine((v, ctx) => {\r\n if (!v) {\r\n ctx.addIssue({\r\n code: z.ZodIssueCode.custom,\r\n message: 'You must accept the terms and conditions',\r\n });\r\n }\r\n }),\r\n });\r\n\r\n const Step2Definition = z.object({\r\n verificationCode: z.array(z.string().min(1).max(1).trim()).min(6).max(6),\r\n });\r\n\r\n const step1Form = useForm({\r\n resolver: zodResolver(Step1Definition),\r\n defaultValues: {\r\n mobileNumber: '',\r\n termsAccepted: false,\r\n },\r\n });\r\n\r\n const step2Form = useForm({\r\n resolver: zodResolver(Step2Definition),\r\n defaultValues: {\r\n verificationCode: Array.from<string>({ length: 6 }).fill(''),\r\n },\r\n });\r\n\r\n return (\r\n <>\r\n {step === 1 && (\r\n <>\r\n <div className=\"w-full grow\">\r\n <h2 className=\"mt-xl text-center text-lg font-semibold\">Log in to your account</h2>\r\n <p className=\"text-gray-600 mt-xs text-center text-sm\">\r\n Welcome back! Please enter your details.\r\n </p>\r\n\r\n <form\r\n className=\"mt-5\"\r\n onSubmit={step1Form.handleSubmit(async (data) => {\r\n try {\r\n await sendVerificationCodeMutation.mutateAsync({\r\n channel: 'SMS',\r\n recipient: data.mobileNumber,\r\n strict: true,\r\n });\r\n\r\n setStep(2);\r\n } catch (e) {\r\n toaster.error({\r\n description:\r\n e instanceof Error ? e.message : 'Failed to send verification code',\r\n });\r\n }\r\n })}\r\n >\r\n <Field.Root invalid={!!step1Form.formState.errors.mobileNumber}>\r\n <Field.Label className=\"text-gray-600 mb-sm inline-block text-sm font-medium\">\r\n Mobile Number\r\n </Field.Label>\r\n <div className=\"relative\">\r\n <localeInfo.country.flag className=\"absolute left-3.5 top-1/2 size-5 shrink-0 -translate-y-1/2\" />\r\n <Field.Input\r\n className=\"shadow-xs ui-invalid:border-red-400 border-gray-300 block h-11 w-full rounded-md border bg-transparent py-2.5 pl-11 pr-3.5 outline-none\"\r\n {...step1Form.register('mobileNumber')}\r\n />\r\n </div>\r\n <Field.ErrorText className=\"text-red-500 mt-sm inline-block text-sm\">\r\n {step1Form.formState.errors.mobileNumber?.message}\r\n </Field.ErrorText>\r\n </Field.Root>\r\n\r\n <button\r\n type=\"submit\"\r\n className=\"shadow-xs bg-accent-300 text-accent-800 mt-xl flex h-11 w-full items-center justify-center rounded-md font-semibold\"\r\n >\r\n Log In\r\n </button>\r\n\r\n <Controller\r\n control={step1Form.control}\r\n name=\"termsAccepted\"\r\n render={(o) => (\r\n <Checkbox.Root\r\n className=\"mt-xl flex gap-2\"\r\n invalid={o.fieldState.invalid}\r\n checked={o.field.value}\r\n onCheckedChange={(details) => {\r\n o.field.onChange(details.checked);\r\n }}\r\n >\r\n <Checkbox.Control className=\"border-gray-300 rounded-xs ui-checked:bg-accent-400 ui-checked:border-accent-400 ui-invalid:border-red-400 flex size-4 shrink-0 items-center justify-center border\">\r\n <Checkbox.Indicator asChild>\r\n <CheckIcon className=\"size-3 text-white\" />\r\n </Checkbox.Indicator>\r\n </Checkbox.Control>\r\n <Checkbox.Label className=\"text-gray-700 text-xs leading-tight\">\r\n I confirm that I am at least 21 years old, not listed in the PAGCOR NDRP, not\r\n a GEL license holder, government employee, or member of the Armed Forces of\r\n the Philippines. I am not playing in a public space and agree to the Terms of\r\n Use and Privacy Policy. Ineligible accounts will have their funds forfeited to\r\n the government.\r\n </Checkbox.Label>\r\n <Checkbox.HiddenInput />\r\n </Checkbox.Root>\r\n )}\r\n />\r\n </form>\r\n\r\n <div className=\"relative mt-5 text-center\">\r\n <hr className=\"-translte-y-1/2 text-gray-200 absolute top-1/2 w-full\" />\r\n <span className=\"text-gray-500 relative bg-white px-md text-center text-sm font-semibold\">\r\n OR\r\n </span>\r\n </div>\r\n\r\n <div className=\"mt-5\">\r\n <button\r\n type=\"button\"\r\n className=\"border-gray-300 shadow-xs text-gray-700 flex h-11 w-full items-center justify-center gap-lg rounded-md border font-semibold\"\r\n onClick={() => {\r\n dialog.setOpen(false);\r\n }}\r\n >\r\n <GoogleIcon className=\"size-6\" />\r\n Continue with Google\r\n </button>\r\n <button\r\n type=\"button\"\r\n className=\"border-gray-300 shadow-xs text-gray-700 mt-lg flex h-11 w-full items-center justify-center gap-lg rounded-md border font-semibold\"\r\n onClick={() => {\r\n dialog.setOpen(false);\r\n }}\r\n >\r\n <FacebookIcon className=\"size-6\" />\r\n Continue with Facebook\r\n </button>\r\n </div>\r\n </div>\r\n <div className=\"flex w-full items-center justify-center gap-xs text-sm\">\r\n <span className=\"text-gray-500\">Don&apos;t have an account?</span>\r\n <button\r\n type=\"submit\"\r\n className=\"text-accent-700 font-semibold\"\r\n onClick={() => {\r\n dialog.setOpen(false);\r\n signUpStore.setOpen(true);\r\n }}\r\n >\r\n Sign up\r\n </button>\r\n </div>\r\n </>\r\n )}\r\n\r\n {step === 2 && (\r\n <div className=\"w-full grow\">\r\n <h2 className=\"mt-xl text-center text-lg font-semibold\">Check your Phone</h2>\r\n <p className=\"text-gray-600 mt-xs text-center text-sm\">\r\n We&rsquo;ve sent a verification code to your mobile number{' '}\r\n <span className=\"font-semibold\">\r\n {mobileNumberParser.format(step1Form.getValues('mobileNumber'))}\r\n </span>{' '}\r\n via text\r\n </p>\r\n\r\n <form\r\n className=\"mt-5\"\r\n onSubmit={step2Form.handleSubmit(async ({ verificationCode }) => {\r\n const { mobileNumber } = step1Form.getValues();\r\n\r\n try {\r\n await signInMutation.mutateAsync({\r\n type: 'MOBILE_NUMBER',\r\n mobileNumber,\r\n verificationCode: verificationCode.join(''),\r\n });\r\n\r\n dialog.setOpen(false);\r\n step1Form.reset();\r\n step2Form.reset();\r\n setStep(1);\r\n } catch {\r\n toaster.error({\r\n title: 'Invalid Verification Code',\r\n });\r\n }\r\n })}\r\n >\r\n <Controller\r\n name=\"verificationCode\"\r\n control={step2Form.control}\r\n render={(o) => (\r\n <PinInput.Root\r\n placeholder=\"0\"\r\n invalid={o.fieldState.invalid}\r\n value={o.field.value}\r\n onValueChange={(details) => {\r\n o.field.onChange(details.value);\r\n }}\r\n >\r\n <PinInput.Control className=\"grid grid-cols-6 gap-2\">\r\n <PinInput.Input\r\n index={0}\r\n className=\"border-gray-300 shadow-xs placeholder:text-gray-300 ui-invalid:border-red-400 aspect-[10/11] w-full rounded-md border text-center text-2xl font-medium outline-none\"\r\n />\r\n <PinInput.Input\r\n index={1}\r\n className=\"border-gray-300 shadow-xs placeholder:text-gray-300 ui-invalid:border-red-400 aspect-[10/11] w-full rounded-md border text-center text-2xl font-medium outline-none\"\r\n />\r\n <PinInput.Input\r\n index={2}\r\n className=\"border-gray-300 shadow-xs placeholder:text-gray-300 ui-invalid:border-red-400 aspect-[10/11] w-full rounded-md border text-center text-2xl font-medium outline-none\"\r\n />\r\n <PinInput.Input\r\n index={3}\r\n className=\"border-gray-300 shadow-xs placeholder:text-gray-300 ui-invalid:border-red-400 aspect-[10/11] w-full rounded-md border text-center text-2xl font-medium outline-none\"\r\n />\r\n <PinInput.Input\r\n index={4}\r\n className=\"border-gray-300 shadow-xs placeholder:text-gray-300 ui-invalid:border-red-400 aspect-[10/11] w-full rounded-md border text-center text-2xl font-medium outline-none\"\r\n />\r\n <PinInput.Input\r\n index={5}\r\n className=\"border-gray-300 shadow-xs placeholder:text-gray-300 ui-invalid:border-red-400 aspect-[10/11] w-full rounded-md border text-center text-2xl font-medium outline-none\"\r\n />\r\n </PinInput.Control>\r\n <PinInput.HiddenInput />\r\n </PinInput.Root>\r\n )}\r\n />\r\n\r\n <button\r\n type=\"submit\"\r\n className=\"shadow-xs bg-accent-300 text-accent-800 mt-5 flex h-11 w-full items-center justify-center rounded-md font-semibold\"\r\n >\r\n Verify and Play\r\n </button>\r\n\r\n <div className=\"mt-5 flex w-full items-center justify-center gap-xs text-sm\">\r\n <span className=\"text-gray-500\">Didn&apos;t recieve the code?</span>\r\n <button type=\"button\" className=\"text-accent-700 font-semibold\">\r\n Resend\r\n </button>\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n className=\"text-gray-600 mx-auto mt-5 flex w-fit items-center gap-1 text-sm font-semibold\"\r\n onClick={() => {\r\n setStep(1);\r\n step2Form.reset();\r\n }}\r\n >\r\n <ArrowLeftIcon className=\"size-5\" />\r\n Back\r\n </button>\r\n </form>\r\n </div>\r\n )}\r\n </>\r\n );\r\n}\r\n","import type { ComponentProps, ComponentPropsWithRef, ComponentType } from 'react';\r\n\r\nexport interface CountryInfo {\r\n /**\r\n * @description The country code\r\n * @example 'PHL'\r\n */\r\n code: 'IDN' | 'IND' | 'MYS' | 'PHL' | 'VNM';\r\n /**\r\n * @description The country name\r\n * @example 'Philippines'\r\n */\r\n name: string;\r\n /**\r\n * @description The country flag\r\n * @usage\r\n * ```tsx\r\n * const localeInfo = getLocaleInfo('Asia/Manila');\r\n * <localeInfo.country.flag />\r\n * ```\r\n */\r\n flag: ComponentType<ComponentProps<'svg'>>;\r\n}\r\n\r\nexport interface CurrencyInfo {\r\n /**\r\n * @description The currency code\r\n * @example 'PHP'\r\n */\r\n code: 'IDR' | 'INR' | 'MYR' | 'PHP' | 'USD' | 'VND';\r\n /**\r\n * @description The currency name\r\n * @example 'Philippine Peso'\r\n */\r\n name: string;\r\n /**\r\n * @description The currency symbol\r\n * @example '₱'\r\n */\r\n symbol: string;\r\n /**\r\n * Used in api\r\n * @example 'VIRTUAL'\r\n */\r\n externalCode: 'IDR' | 'INR' | 'MYR' | 'PHP' | 'USD' | 'VIRTUAL' | (string & {});\r\n}\r\n\r\nexport interface MobileNumberInfo {\r\n /**\r\n * @description The mobile number area code\r\n * @example '+63'\r\n */\r\n areaCode: string;\r\n /**\r\n * @description The mobile number digits count\r\n * @example 10\r\n */\r\n numOfDigits: number;\r\n /**\r\n * @description pattern to validate mobile number\r\n * @usage\r\n * ```ts\r\n * const localeInfo = getLocaleInfo('Asia/Manila');\r\n * const isValid = localeInfo.mobileNumber.pattern.test('9190000000');\r\n * ```\r\n */\r\n pattern: RegExp;\r\n /**\r\n * @description The mobile number example\r\n * @example '9190000000'\r\n */\r\n example: string;\r\n}\r\n\r\nexport type Timezone =\r\n | 'Asia/Manila'\r\n | 'Asia/Kolkata'\r\n | 'Asia/Jakarta'\r\n | 'Asia/Makassar'\r\n | 'Asia/Jayapura'\r\n | 'Asia/Kuala_Lumpur'\r\n | 'Asia/Ho_Chi_Minh'\r\n | (string & {});\r\n\r\nexport interface LocaleInfo {\r\n locale: string;\r\n timezone: Timezone;\r\n country: CountryInfo;\r\n currency: CurrencyInfo;\r\n mobileNumber: MobileNumberInfo;\r\n}\r\n\r\nexport function getLocaleInfo(timezone: Timezone): LocaleInfo {\r\n switch (timezone.toLowerCase()) {\r\n case 'asia/jakarta':\r\n return {\r\n locale: 'id-ID',\r\n timezone: 'Asia/Jakarta',\r\n country: {\r\n name: 'Indonesia',\r\n code: 'IDN',\r\n flag: IndonesianFlag,\r\n },\r\n currency: {\r\n code: 'IDR',\r\n name: 'Indonesian Rupiah',\r\n symbol: 'Rp',\r\n externalCode: 'IDR',\r\n },\r\n mobileNumber: {\r\n areaCode: '+62',\r\n numOfDigits: 10,\r\n example: '81' + ''.padStart(8, '0'),\r\n pattern: /^(\\+?62|0)?8\\d{9}$/,\r\n },\r\n };\r\n\r\n case 'asia/jayapura':\r\n return {\r\n locale: 'id-ID',\r\n timezone: 'Asia/Jayapura',\r\n country: {\r\n code: 'IDN',\r\n name: 'Indonesia',\r\n flag: IndonesianFlag,\r\n },\r\n currency: {\r\n code: 'IDR',\r\n name: 'Indonesian Rupiah',\r\n symbol: 'Rp',\r\n externalCode: 'IDR',\r\n },\r\n mobileNumber: {\r\n areaCode: '+62',\r\n numOfDigits: 10,\r\n example: '81' + ''.padStart(8, '0'),\r\n pattern: /^(\\+?62|0)?8\\d{9}$/,\r\n },\r\n };\r\n\r\n case 'asia/makassar':\r\n return {\r\n locale: 'id-ID',\r\n timezone: 'Asia/Makassar',\r\n country: {\r\n code: 'IDN',\r\n name: 'Indonesia',\r\n flag: IndonesianFlag,\r\n },\r\n currency: {\r\n code: 'IDR',\r\n name: 'Indonesian Rupiah',\r\n symbol: 'Rp',\r\n externalCode: 'IDR',\r\n },\r\n mobileNumber: {\r\n areaCode: '+62',\r\n numOfDigits: 10,\r\n example: '81' + ''.padStart(8, '0'),\r\n pattern: /^(\\+?62|0)?8\\d{9}$/,\r\n },\r\n };\r\n\r\n case 'asia/kuala_lumpur':\r\n return {\r\n locale: 'ms-MY',\r\n timezone: 'Asia/Kuala_Lumpur',\r\n country: {\r\n name: 'Malaysia',\r\n code: 'MYS',\r\n flag: MalaysianFlag,\r\n },\r\n currency: {\r\n code: 'MYR',\r\n name: 'Malaysian Ringgit',\r\n symbol: 'RM',\r\n externalCode: 'MYR',\r\n },\r\n mobileNumber: {\r\n areaCode: '+60',\r\n numOfDigits: 9,\r\n example: '12' + ''.padStart(7, '0'),\r\n pattern: /^(\\+?60|0)?1[0-9]{1}\\d{7}$/,\r\n },\r\n };\r\n\r\n case 'asia/kolkata':\r\n return {\r\n locale: 'en-IN',\r\n timezone: 'Asia/Kolkata',\r\n country: {\r\n code: 'IND',\r\n name: 'India',\r\n flag: IndianFlag,\r\n },\r\n currency: {\r\n code: 'INR',\r\n name: 'Indian Rupee',\r\n symbol: '₹',\r\n externalCode: 'INR',\r\n },\r\n mobileNumber: {\r\n areaCode: '+91',\r\n numOfDigits: 10,\r\n example: '919' + ''.padStart(7, '0'),\r\n pattern: /^(\\+?91|0)?[789]\\d{9}$/,\r\n },\r\n };\r\n\r\n case 'asia/ho_chi_minh':\r\n return {\r\n locale: 'vi-VN',\r\n timezone: 'Asia/Ho_Chi_Minh',\r\n country: {\r\n code: 'VNM',\r\n name: 'Vietnam',\r\n flag: VietnameseFlag,\r\n },\r\n currency: {\r\n code: 'VND',\r\n name: 'Vietnamese Dong',\r\n symbol: '₫',\r\n externalCode: 'VIRTUAL',\r\n },\r\n mobileNumber: {\r\n areaCode: '+84',\r\n numOfDigits: 9,\r\n example: '849' + ''.padStart(7, '0'),\r\n pattern: /^(\\+?84|0)?(3[2-9]|5[6|8|9]|7[0|6-9]|8[1-6|8|9]|9[0-9])\\d{7}$/,\r\n },\r\n };\r\n\r\n default:\r\n return {\r\n locale: 'en-PH',\r\n timezone: 'Asia/Manila',\r\n country: {\r\n code: 'PHL',\r\n name: 'Philippines',\r\n flag: PhilippineFlag,\r\n },\r\n currency: {\r\n code: 'PHP',\r\n name: 'Philippine Peso',\r\n symbol: '₱',\r\n externalCode: 'PHP',\r\n },\r\n mobileNumber: {\r\n areaCode: '+63',\r\n numOfDigits: 10,\r\n example: '919' + ''.padStart(7, '0'),\r\n pattern: /^(\\+?63|0)?9\\d{9}$/,\r\n },\r\n };\r\n }\r\n}\r\n\r\nconst PhilippineFlag = (props: ComponentPropsWithRef<'svg'>) => {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <g clipPath=\"url(#clip0_4392_27540)\">\r\n <path\r\n d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\"\r\n fill=\"#F0F0F0\"\r\n />\r\n <path\r\n d=\"M12.0004 0V12L3.51514 20.4853C5.68671 22.6568 8.68671 24 12.0004 24C18.6278 24 24.0004 18.6274 24.0004 12C24.0004 5.37262 12.0004 0 12.0004 0Z\"\r\n fill=\"#D80027\"\r\n />\r\n <path\r\n d=\"M12.0004 0C8.68671 0 5.68671 1.34316 3.51514 3.51469C6.45936 6.45891 7.50453 7.50412 12.0004 12H24.0004C24.0004 5.37262 18.6278 0 12.0004 0Z\"\r\n fill=\"#0052B4\"\r\n />\r\n <path\r\n d=\"M8.21723 11.9998L6.75173 11.3104L7.53215 9.89111L5.94074 10.1956L5.73909 8.58789L4.63059 9.77027L3.52213 8.58789L3.32043 10.1956L1.72907 9.89106L2.50949 11.3104L1.04395 11.9998L2.50949 12.6891L1.72907 14.1085L3.32057 13.8041L3.52209 15.4117L4.63059 14.2293L5.73909 15.4117L5.94074 13.8041L7.53205 14.1085L6.75168 12.6892L8.21723 11.9998Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n <path\r\n d=\"M3.20082 4.69519L3.68851 5.37689L4.48749 5.12382L3.98977 5.79825L4.47746 6.47996L3.68218 6.21507L3.18451 6.88946L3.19074 6.05133L2.39551 5.78639L3.19463 5.53332L3.20082 4.69519Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n <path\r\n d=\"M3.20082 17.1095L3.68851 17.7912L4.48749 17.5381L3.98977 18.2126L4.47746 18.8943L3.68218 18.6294L3.18451 19.3038L3.19074 18.4656L2.39551 18.2007L3.19463 17.9476L3.20082 17.1095Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n <path\r\n d=\"M10.1563 10.9032L9.66866 11.5849L8.86963 11.3317L9.36735 12.0062L8.87966 12.688L9.67494 12.423L10.1727 13.0974L10.1664 12.2593L10.9616 11.9944L10.1625 11.7413L10.1563 10.9032Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4392_27540\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n );\r\n};\r\n\r\nconst MalaysianFlag = (props: ComponentPropsWithRef<'svg'>) => {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <g clipPath=\"url(#clip0_4392_27547)\">\r\n <path\r\n d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\"\r\n fill=\"#F0F0F0\"\r\n />\r\n <path\r\n d=\"M11.4783 12.0002H24C24 10.9171 23.8556 9.86791 23.5866 8.86975H11.4783V12.0002Z\"\r\n fill=\"#D80027\"\r\n />\r\n <path\r\n d=\"M11.4783 5.73873H22.2387C21.5041 4.54004 20.565 3.48053 19.4698 2.60828H11.4783V5.73873Z\"\r\n fill=\"#D80027\"\r\n />\r\n <path\r\n d=\"M12.0001 24.0002C14.8243 24.0002 17.4201 23.024 19.47 21.3915H4.53027C6.58016 23.024 9.17596 24.0002 12.0001 24.0002Z\"\r\n fill=\"#D80027\"\r\n />\r\n <path\r\n d=\"M1.76146 18.2601H22.2389C22.8286 17.2978 23.2859 16.2459 23.5868 15.1296H0.413574C0.714371 16.2459 1.17173 17.2978 1.76146 18.2601Z\"\r\n fill=\"#D80027\"\r\n />\r\n <path d=\"M12 12C12 5.37262 12 4.59131 12 0C5.37262 0 0 5.37262 0 12H12Z\" fill=\"#0052B4\" />\r\n <path\r\n d=\"M7.98001 10.2709C6.34117 10.2709 5.01263 8.94229 5.01263 7.30349C5.01263 5.6647 6.34121 4.33612 7.98001 4.33612C8.491 4.33612 8.97179 4.46535 9.39156 4.69279C8.73306 4.04887 7.8325 3.65137 6.8387 3.65137C4.82171 3.65137 3.18652 5.28651 3.18652 7.30354C3.18652 9.32057 4.82171 10.9557 6.8387 10.9557C7.8325 10.9557 8.73306 10.5582 9.39156 9.91429C8.97179 10.1416 8.49104 10.2709 7.98001 10.2709Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n <path\r\n d=\"M8.81671 5.21729L9.34354 6.31894L10.5333 6.04407L10.0005 7.14277L10.9573 7.90153L9.76602 8.17008L9.76935 9.39122L8.81671 8.62725L7.86402 9.39122L7.86731 8.17008L6.67603 7.90153L7.63284 7.14277L7.10001 6.04407L8.28984 6.31894L8.81671 5.21729Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4392_27547\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n );\r\n};\r\n\r\nconst IndianFlag = (props: ComponentPropsWithRef<'svg'>) => {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <g clipPath=\"url(#clip0_4392_27553)\">\r\n <path\r\n d=\"M1.19023 6.78213C0.427387 8.35976 -0.000488281 10.1296 -0.000488281 11.9995C-0.000488281 13.8694 0.427387 15.6393 1.19023 17.2169L11.9995 18.2604L22.8088 17.2169C23.5716 15.6393 23.9995 13.8694 23.9995 11.9995C23.9995 10.1296 23.5716 8.35976 22.8088 6.78213L11.9995 5.73865L1.19023 6.78213Z\"\r\n fill=\"#F0F0F0\"\r\n />\r\n <path\r\n d=\"M1.19092 17.2183C3.13182 21.2322 7.24225 24.0009 11.9998 24.0009C16.7573 24.0009 20.8677 21.2322 22.8086 17.2183H1.19092Z\"\r\n fill=\"#6DA544\"\r\n />\r\n <path\r\n d=\"M1.19092 6.78238H22.8086C20.8677 2.76843 16.7573 -0.000244141 11.9998 -0.000244141C7.24229 -0.000244141 3.13182 2.76843 1.19092 6.78238Z\"\r\n fill=\"#FF9811\"\r\n />\r\n <path\r\n d=\"M12.0001 16.1742C14.3052 16.1742 16.174 14.3055 16.174 12.0003C16.174 9.69513 14.3052 7.82642 12.0001 7.82642C9.69489 7.82642 7.82617 9.69513 7.82617 12.0003C7.82617 14.3055 9.69489 16.1742 12.0001 16.1742Z\"\r\n fill=\"#FF9811\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4392_27553\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n );\r\n};\r\n\r\nconst IndonesianFlag = (props: ComponentPropsWithRef<'svg'>) => {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <g clipPath=\"url(#clip0_4392_27559)\">\r\n <path\r\n d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\"\r\n fill=\"#F0F0F0\"\r\n />\r\n <path d=\"M0 12C0 5.37262 5.37262 0 12 0C18.6274 0 24 5.37262 24 12\" fill=\"#A2001D\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4392_27559\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n );\r\n};\r\n\r\nconst VietnameseFlag = (props: ComponentPropsWithRef<'svg'>) => {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <g clipPath=\"url(#clip0_10544_106556)\">\r\n <path\r\n d=\"M10 20C15.5228 20 20 15.5228 20 10C20 4.47715 15.5228 0 10 0C4.47715 0 0 4.47715 0 10C0 15.5228 4.47715 20 10 20Z\"\r\n fill=\"#D80027\"\r\n />\r\n <path\r\n d=\"M10.0003 5.2168L11.0795 8.53825H14.5719L11.7464 10.591L12.8257 13.9125L10.0003 11.8597L7.17488 13.9125L8.2541 10.591L5.42871 8.53825H8.92105L10.0003 5.2168Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_10544_106556\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n );\r\n};\r\n","import { getPlatform, type Platform } from '@opexa/portal-sdk-core';\r\nimport { useQuery } from '@tanstack/react-query';\r\nimport { PLATFORM_CODE } from '../../constants';\r\nimport type { Query } from '../../types';\r\nimport { getPlatformQueryKey } from './getPlatformQueryKey';\r\n\r\nexport const usePlatformQuery: Query<Platform> = (config) => {\r\n return useQuery({\r\n ...config,\r\n queryKey: getPlatformQueryKey(),\r\n queryFn: async () => {\r\n return await getPlatform({\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n },\r\n });\r\n },\r\n });\r\n};\r\n","import type { QueryKey } from '@tanstack/react-query';\r\n\r\nexport const getPlatformQueryKey = (): QueryKey => ['queries/platform'];\r\n","import { getLocaleInfo } from '../utils/getLocaleInfo';\r\nimport { usePlatformQuery } from './usePlatformQuery/usePlatformQuery';\r\n\r\nexport const useLocaleInfo = () => {\r\n const query = usePlatformQuery();\r\n return getLocaleInfo(query.data?.timezone ?? 'Asia/Manila');\r\n};\r\n","import { useLocaleInfo } from './useLocaleInfo';\r\n\r\nexport function useMobileNumberParser() {\r\n const localeInfo = useLocaleInfo();\r\n\r\n /**\r\n * Formats a mobile number based on the current locale information.\r\n * Adds the area code if it is not present and ensures the number is in the correct format.\r\n * @example\r\n * ```ts\r\n * format('9190000001'); // '+639190000001'\r\n * format('09190000001'); // '+639190000001'\r\n * format('639190000001'); // '+639190000001'\r\n * format('+639190000001'); // '+639190000001'\r\n * ```\r\n */\r\n const format = (value: string) => {\r\n if (value.startsWith(localeInfo.mobileNumber.areaCode)) {\r\n return value;\r\n }\r\n\r\n if (value.startsWith('0')) {\r\n return localeInfo.mobileNumber.areaCode + value.substring(1);\r\n }\r\n\r\n if (value.startsWith(localeInfo.mobileNumber.areaCode.substring(1))) {\r\n return '+' + value;\r\n }\r\n\r\n return localeInfo.mobileNumber.areaCode + value;\r\n };\r\n\r\n /**\r\n * Parses a mobile number based on the current locale information.\r\n * Returns the area code and the mobile number as separate values.\r\n * @example\r\n * ```ts\r\n * parse('+639190000001'); // { mobileNumber: '9190000001', areaCode: '+63' }\r\n * parse('639190000001'); // { mobileNumber: '9190000001', areaCode: '+63' }\r\n * parse('09190000001'); // { mobileNumber: '9190000001', areaCode: '+63' }\r\n * parse('9190000001'); // { mobileNumber: '9190000001', areaCode: '+63' }\r\n * ```\r\n */\r\n const parse = (value: string) => {\r\n const mobileNumber = format(value).replace(localeInfo.mobileNumber.areaCode, '');\r\n\r\n return {\r\n mobileNumber: mobileNumber,\r\n areaCode: localeInfo.mobileNumber.areaCode,\r\n };\r\n };\r\n\r\n /**\r\n * Validates a mobile number based on the current locale information.\r\n * @example\r\n * ```ts\r\n * validate('9190000001'); // true\r\n * validate('09190000001'); // true\r\n * validate('639190000001'); // true\r\n * validate('+639190000001'); // true\r\n * ```\r\n */\r\n const validate = (value: unknown): value is string => {\r\n return typeof value === 'string' && localeInfo.mobileNumber.pattern.test(value);\r\n };\r\n\r\n return {\r\n validate,\r\n format,\r\n parse,\r\n };\r\n}\r\n","import { sendVerificationCode, type SendVerificationCodeInput } from '@opexa/portal-sdk-core';\r\nimport { useMutation } from '@tanstack/react-query';\r\nimport type { Mutation } from '../../types';\r\nimport { getSendVerificationCodeMutationKey } from './getSendVerificationCodeMutationKey';\r\n\r\nexport const useSendVerificationCodeMutation: Mutation<void, SendVerificationCodeInput> = (\r\n config,\r\n) => {\r\n return useMutation({\r\n ...config,\r\n mutationKey: getSendVerificationCodeMutationKey(),\r\n mutationFn: async (input) => {\r\n await sendVerificationCode(input);\r\n },\r\n });\r\n};\r\n","import type { MutationKey } from '@tanstack/react-query';\r\n\r\nexport const getSendVerificationCodeMutationKey = (): MutationKey => [\r\n 'mutations/sendVerificationCode',\r\n];\r\n","import type { Authenticator } from '@opexa/portal-sdk-core';\r\nimport { useMutation } from '@tanstack/react-query';\r\nimport { signIn, type SignInInput } from '../../services/client/signIn';\r\nimport type { Mutation } from '../../types';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { getSignInMutationKey } from './getSignInMutationKey';\r\n\r\nexport const useSignInMutation: Mutation<Authenticator | null, SignInInput> = (config) => {\r\n const queryClient = getQueryClient();\r\n\r\n return useMutation({\r\n ...config,\r\n mutationKey: getSignInMutationKey(),\r\n mutationFn: async (input) => {\r\n const authenticator = await signIn(input);\r\n\r\n if (!authenticator) {\r\n await queryClient.invalidateQueries({\r\n queryKey: getSessionQueryKey(),\r\n });\r\n }\r\n\r\n return authenticator;\r\n },\r\n });\r\n};\r\n","import type { Authenticator, CreateSessionInput } from '@opexa/portal-sdk-core';\r\nimport type { ApiResponse } from '../../types';\r\n\r\nexport type SignInInput = CreateSessionInput;\r\n\r\nexport async function signIn(input: SignInInput): Promise<Authenticator | null> {\r\n const res = await fetch('/api/sessions', {\r\n body: JSON.stringify(input),\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n });\r\n\r\n const json = (await res.json()) as ApiResponse<Authenticator | null>;\r\n\r\n if (!json.ok) {\r\n const error = new Error();\r\n error.name = 'SignInError';\r\n error.message = 'Failed to sign in';\r\n throw error;\r\n }\r\n\r\n return json.data ?? null;\r\n}\r\n","import type { MutationKey } from '@tanstack/react-query';\r\n\r\nexport const getSignInMutationKey = (): MutationKey => ['mutations/signIn'];\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function ArrowLeftIcon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M19 12H5M5 12L12 19M5 12L12 5\" />\r\n </svg>\r\n );\r\n}\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function CheckIcon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M20 6L9 17L4 12\" />\r\n </svg>\r\n );\r\n}\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function FacebookIcon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 256 256\"\r\n {...props}\r\n >\r\n <path\r\n fill=\"#1877F2\"\r\n d=\"M256 128C256 57.308 198.692 0 128 0S0 57.308 0 128c0 63.888 46.808 116.843 108 126.445V165H75.5v-37H108V99.8c0-32.08 19.11-49.8 48.348-49.8C170.352 50 185 52.5 185 52.5V84h-16.14C152.959 84 148 93.867 148 103.99V128h35.5l-5.675 37H148v89.445c61.192-9.602 108-62.556 108-126.445\"\r\n />\r\n <path\r\n fill=\"#FFF\"\r\n d=\"m177.825 165l5.675-37H148v-24.01C148 93.866 152.959 84 168.86 84H185V52.5S170.352 50 156.347 50C127.11 50 108 67.72 108 99.8V128H75.5v37H108v89.445A129 129 0 0 0 128 256a129 129 0 0 0 20-1.555V165z\"\r\n />\r\n </svg>\r\n );\r\n}\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function GoogleIcon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 128 128\"\r\n {...props}\r\n >\r\n <path\r\n fill=\"#fff\"\r\n d=\"M44.59 4.21a63.28 63.28 0 0 0 4.33 120.9a67.6 67.6 0 0 0 32.36.35a57.13 57.13 0 0 0 25.9-13.46a57.44 57.44 0 0 0 16-26.26a74.3 74.3 0 0 0 1.61-33.58H65.27v24.69h34.47a29.72 29.72 0 0 1-12.66 19.52a36.2 36.2 0 0 1-13.93 5.5a41.3 41.3 0 0 1-15.1 0A37.2 37.2 0 0 1 44 95.74a39.3 39.3 0 0 1-14.5-19.42a38.3 38.3 0 0 1 0-24.63a39.25 39.25 0 0 1 9.18-14.91A37.17 37.17 0 0 1 76.13 27a34.3 34.3 0 0 1 13.64 8q5.83-5.8 11.64-11.63c2-2.09 4.18-4.08 6.15-6.22A61.2 61.2 0 0 0 87.2 4.59a64 64 0 0 0-42.61-.38\"\r\n />\r\n <path\r\n fill=\"#e33629\"\r\n d=\"M44.59 4.21a64 64 0 0 1 42.61.37a61.2 61.2 0 0 1 20.35 12.62c-2 2.14-4.11 4.14-6.15 6.22Q95.58 29.23 89.77 35a34.3 34.3 0 0 0-13.64-8a37.17 37.17 0 0 0-37.46 9.74a39.25 39.25 0 0 0-9.18 14.91L8.76 35.6A63.53 63.53 0 0 1 44.59 4.21\"\r\n />\r\n <path\r\n fill=\"#f8bd00\"\r\n d=\"M3.26 51.5a63 63 0 0 1 5.5-15.9l20.73 16.09a38.3 38.3 0 0 0 0 24.63q-10.36 8-20.73 16.08a63.33 63.33 0 0 1-5.5-40.9\"\r\n />\r\n <path\r\n fill=\"#587dbd\"\r\n d=\"M65.27 52.15h59.52a74.3 74.3 0 0 1-1.61 33.58a57.44 57.44 0 0 1-16 26.26c-6.69-5.22-13.41-10.4-20.1-15.62a29.72 29.72 0 0 0 12.66-19.54H65.27c-.01-8.22 0-16.45 0-24.68\"\r\n />\r\n <path\r\n fill=\"#319f43\"\r\n d=\"M8.75 92.4q10.37-8 20.73-16.08A39.3 39.3 0 0 0 44 95.74a37.2 37.2 0 0 0 14.08 6.08a41.3 41.3 0 0 0 15.1 0a36.2 36.2 0 0 0 13.93-5.5c6.69 5.22 13.41 10.4 20.1 15.62a57.13 57.13 0 0 1-25.9 13.47a67.6 67.6 0 0 1-32.36-.35a63 63 0 0 1-23-11.59A63.7 63.7 0 0 1 8.75 92.4\"\r\n />\r\n </svg>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { Dialog, Portal } from '@ark-ui/react';\r\nimport Image, { type ImageProps } from 'next/image';\r\nimport type { ReactNode } from 'react';\r\nimport { usePopupsStore } from '../../hooks/useGlobalStore';\r\nimport { XIcon } from '../../icons/XIcon';\r\nimport { SignUpForm } from './SignUpForm';\r\n\r\nexport interface SignUpProps {\r\n logo: ImageProps['src'];\r\n banner: ImageProps['src'];\r\n children?: ReactNode;\r\n}\r\n\r\nexport function SignUp(props: SignUpProps) {\r\n const signUpStore = usePopupsStore((popups) => popups.signUp);\r\n\r\n return (\r\n <Dialog.Root\r\n open={signUpStore.open}\r\n onOpenChange={(details) => {\r\n signUpStore.setOpen(details.open);\r\n }}\r\n lazyMount\r\n unmountOnExit\r\n closeOnEscape={false}\r\n closeOnInteractOutside={false}\r\n >\r\n <Dialog.Trigger asChild>\r\n {props.children ?? (\r\n <button\r\n type=\"button\"\r\n className=\"shadow-xs bg-accent-300 text-accent-800 flex h-11 items-center justify-center rounded-md px-3.5 font-semibold\"\r\n >\r\n Sign up\r\n </button>\r\n )}\r\n </Dialog.Trigger>\r\n <Portal>\r\n <Dialog.Backdrop className=\"z-backdrop ui-open:animate-backdrop-in ui-closed:animate-backdrop-out fixed inset-0 hidden bg-black/60 lg:block\" />\r\n <Dialog.Positioner className=\"z-dialog fixed inset-0 overflow-y-auto lg:py-16\">\r\n <Dialog.Content className=\"ui-open:animate-dialog-in ui-closed:animate-dialog-out mx-auto flex h-full w-full items-start lg:h-auto lg:w-fit\">\r\n <Image\r\n src={props.banner}\r\n alt=\"h-auto w-[400px]\"\r\n width={400}\r\n height={800}\r\n className=\"hidden rounded-l-xl lg:block\"\r\n />\r\n\r\n <div className=\"relative flex w-full flex-col items-start self-stretch bg-white p-3xl lg:w-[400px] lg:rounded-r-xl\">\r\n <Dialog.CloseTrigger className=\"text-gray-300 hover:text-gray-400 absolute right-4 top-4 flex size-11 items-center justify-center\">\r\n <XIcon className=\"size-6\" />\r\n </Dialog.CloseTrigger>\r\n\r\n <Image\r\n src={props.logo}\r\n alt=\"\"\r\n width={200}\r\n height={100}\r\n className=\"mx-auto h-auto w-[120px]\"\r\n draggable={false}\r\n />\r\n\r\n <SignUpForm />\r\n </div>\r\n </Dialog.Content>\r\n </Dialog.Positioner>\r\n </Portal>\r\n </Dialog.Root>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { Checkbox, Field, PinInput, useDialogContext } from '@ark-ui/react';\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useSearchParams } from 'next/navigation';\r\nimport { useState } from 'react';\r\nimport { Controller, useForm } from 'react-hook-form';\r\nimport { z } from 'zod';\r\nimport { usePopupsStore } from '../../hooks/useGlobalStore';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { useMobileNumberParser } from '../../hooks/useMobileNumberParser';\r\nimport { useSendVerificationCodeMutation } from '../../hooks/useSendVerificationCodeMutation/useSendVerificationCodeMutation';\r\nimport { useSignUpMutation } from '../../hooks/useSignUpMutation/useSignUpMutation';\r\nimport { ArrowLeftIcon } from '../../icons/ArrowLeftIcon';\r\nimport { CheckIcon } from '../../icons/CheckIcon';\r\nimport { toaster } from '../../utils/toaster';\r\n\r\nexport function SignUpForm() {\r\n const [step, setStep] = useState<1 | 2>(1);\r\n\r\n const dialog = useDialogContext();\r\n const search = useSearchParams();\r\n const signInStore = usePopupsStore((popups) => popups.signIn);\r\n const signUpMutation = useSignUpMutation();\r\n const sendVerificationCodeMutation = useSendVerificationCodeMutation();\r\n\r\n const localeInfo = useLocaleInfo();\r\n const mobileNumberParser = useMobileNumberParser();\r\n\r\n const Step1Definition = z.object({\r\n mobileNumber: z.string().superRefine((v, ctx) => {\r\n if (!mobileNumberParser.validate(v)) {\r\n ctx.addIssue({\r\n code: z.ZodIssueCode.custom,\r\n message: 'Invalid mobile number',\r\n });\r\n }\r\n }),\r\n termsAccepted: z.boolean().superRefine((v, ctx) => {\r\n if (!v) {\r\n ctx.addIssue({\r\n code: z.ZodIssueCode.custom,\r\n message: 'You must accept the terms and conditions',\r\n });\r\n }\r\n }),\r\n });\r\n\r\n const Step2Definition = z.object({\r\n verificationCode: z.array(z.string().min(1).max(1).trim()).min(6).max(6),\r\n });\r\n\r\n const step1Form = useForm({\r\n resolver: zodResolver(Step1Definition),\r\n defaultValues: {\r\n mobileNumber: '',\r\n termsAccepted: false,\r\n },\r\n });\r\n\r\n const step2Form = useForm({\r\n resolver: zodResolver(Step2Definition),\r\n defaultValues: {\r\n verificationCode: Array.from<string>({ length: 6 }).fill(''),\r\n },\r\n });\r\n\r\n return (\r\n <>\r\n {step === 1 && (\r\n <>\r\n <div className=\"w-full grow\">\r\n <h2 className=\"mt-xl text-center text-lg font-semibold\">Create an account</h2>\r\n <p className=\"text-gray-600 mt-xs text-center text-sm\">\r\n Register instantly and start playing!\r\n </p>\r\n\r\n <form\r\n className=\"mt-5\"\r\n onSubmit={step1Form.handleSubmit(async (data) => {\r\n try {\r\n await sendVerificationCodeMutation.mutateAsync({\r\n channel: 'SMS',\r\n recipient: data.mobileNumber,\r\n });\r\n\r\n setStep(2);\r\n } catch (e) {\r\n toaster.error({\r\n description:\r\n e instanceof Error ? e.message : 'Failed to send verification code',\r\n });\r\n }\r\n })}\r\n >\r\n <Field.Root invalid={!!step1Form.formState.errors.mobileNumber}>\r\n <Field.Label className=\"text-gray-600 mb-sm inline-block text-sm font-medium\">\r\n Mobile Number\r\n </Field.Label>\r\n <div className=\"relative\">\r\n <localeInfo.country.flag className=\"absolute left-3.5 top-1/2 size-5 shrink-0 -translate-y-1/2\" />\r\n <Field.Input\r\n className=\"shadow-xs ui-invalid:border-red-400 border-gray-300 block h-11 w-full rounded-md border bg-transparent py-2.5 pl-11 pr-3.5 outline-none\"\r\n {...step1Form.register('mobileNumber')}\r\n />\r\n </div>\r\n <Field.ErrorText className=\"text-red-500 mt-sm inline-block text-sm\">\r\n {step1Form.formState.errors.mobileNumber?.message}\r\n </Field.ErrorText>\r\n </Field.Root>\r\n\r\n <button\r\n type=\"submit\"\r\n className=\"shadow-xs bg-accent-300 text-accent-800 mt-xl flex h-11 w-full items-center justify-center rounded-md font-semibold\"\r\n >\r\n Create Account\r\n </button>\r\n\r\n <Controller\r\n control={step1Form.control}\r\n name=\"termsAccepted\"\r\n render={(o) => (\r\n <Checkbox.Root\r\n className=\"mt-xl flex gap-2\"\r\n invalid={o.fieldState.invalid}\r\n checked={o.field.value}\r\n onCheckedChange={(details) => {\r\n o.field.onChange(details.checked);\r\n }}\r\n >\r\n <Checkbox.Control className=\"border-gray-300 rounded-xs ui-checked:bg-accent-400 ui-checked:border-accent-400 ui-invalid:border-red-400 flex size-4 shrink-0 items-center justify-center border\">\r\n <Checkbox.Indicator asChild>\r\n <CheckIcon className=\"size-3 text-white\" />\r\n </Checkbox.Indicator>\r\n </Checkbox.Control>\r\n <Checkbox.Label className=\"text-gray-700 text-xs leading-tight\">\r\n I confirm that I am at least 21 years old, not listed in the PAGCOR NDRP, not\r\n a GEL license holder, government employee, or member of the Armed Forces of\r\n the Philippines. I am not playing in a public space and agree to the Terms of\r\n Use and Privacy Policy. Ineligible accounts will have their funds forfeited to\r\n the government.\r\n </Checkbox.Label>\r\n <Checkbox.HiddenInput />\r\n </Checkbox.Root>\r\n )}\r\n />\r\n </form>\r\n </div>\r\n\r\n <div className=\"flex w-full items-center justify-center gap-xs text-sm\">\r\n <span className=\"text-gray-500\">Don&apos;t have an account?</span>\r\n <button\r\n type=\"submit\"\r\n className=\"text-accent-700 font-semibold\"\r\n onClick={() => {\r\n dialog.setOpen(false);\r\n signInStore.setOpen(true);\r\n }}\r\n >\r\n Log In\r\n </button>\r\n </div>\r\n </>\r\n )}\r\n\r\n {step === 2 && (\r\n <div className=\"w-full grow\">\r\n <h2 className=\"mt-xl text-center text-lg font-semibold\">Check your Phone</h2>\r\n <p className=\"text-gray-600 mt-xs text-center text-sm\">\r\n We&rsquo;ve sent a verification code to your mobile number{' '}\r\n <span className=\"font-semibold\">\r\n {mobileNumberParser.format(step1Form.getValues('mobileNumber'))}\r\n </span>{' '}\r\n via text\r\n </p>\r\n\r\n <form\r\n className=\"mt-5\"\r\n onSubmit={step2Form.handleSubmit(async ({ verificationCode }) => {\r\n const { mobileNumber } = step1Form.getValues();\r\n\r\n try {\r\n await signUpMutation.mutateAsync({\r\n mobileNumber,\r\n verificationCode: verificationCode.join(''),\r\n referralCode: search.get('referralCode') ?? undefined,\r\n domain: search.get('domain') ?? undefined,\r\n btag: search.get('btag') ?? undefined,\r\n });\r\n\r\n dialog.setOpen(false);\r\n step1Form.reset();\r\n step2Form.reset();\r\n setStep(1);\r\n } catch {\r\n toaster.error({\r\n title: 'Invalid Verification Code',\r\n });\r\n }\r\n })}\r\n >\r\n <Controller\r\n name=\"verificationCode\"\r\n control={step2Form.control}\r\n render={(o) => (\r\n <PinInput.Root\r\n placeholder=\"0\"\r\n invalid={o.fieldState.invalid}\r\n value={o.field.value}\r\n onValueChange={(details) => {\r\n o.field.onChange(details.value);\r\n }}\r\n >\r\n <PinInput.Control className=\"grid grid-cols-6 gap-2\">\r\n <PinInput.Input\r\n index={0}\r\n className=\"border-gray-300 shadow-xs placeholder:text-gray-300 ui-invalid:border-red-400 aspect-[10/11] w-full rounded-md border text-center text-2xl font-medium outline-none\"\r\n />\r\n <PinInput.Input\r\n index={1}\r\n className=\"border-gray-300 shadow-xs placeholder:text-gray-300 ui-invalid:border-red-400 aspect-[10/11] w-full rounded-md border text-center text-2xl font-medium outline-none\"\r\n />\r\n <PinInput.Input\r\n index={2}\r\n className=\"border-gray-300 shadow-xs placeholder:text-gray-300 ui-invalid:border-red-400 aspect-[10/11] w-full rounded-md border text-center text-2xl font-medium outline-none\"\r\n />\r\n <PinInput.Input\r\n index={3}\r\n className=\"border-gray-300 shadow-xs placeholder:text-gray-300 ui-invalid:border-red-400 aspect-[10/11] w-full rounded-md border text-center text-2xl font-medium outline-none\"\r\n />\r\n <PinInput.Input\r\n index={4}\r\n className=\"border-gray-300 shadow-xs placeholder:text-gray-300 ui-invalid:border-red-400 aspect-[10/11] w-full rounded-md border text-center text-2xl font-medium outline-none\"\r\n />\r\n <PinInput.Input\r\n index={5}\r\n className=\"border-gray-300 shadow-xs placeholder:text-gray-300 ui-invalid:border-red-400 aspect-[10/11] w-full rounded-md border text-center text-2xl font-medium outline-none\"\r\n />\r\n </PinInput.Control>\r\n <PinInput.HiddenInput />\r\n </PinInput.Root>\r\n )}\r\n />\r\n\r\n <button\r\n type=\"submit\"\r\n className=\"shadow-xs bg-accent-300 text-accent-800 mt-5 flex h-11 w-full items-center justify-center rounded-md font-semibold\"\r\n >\r\n Verify and Play\r\n </button>\r\n\r\n <div className=\"mt-5 flex w-full items-center justify-center gap-xs text-sm\">\r\n <span className=\"text-gray-500\">Didn&apos;t recieve the code?</span>\r\n <button type=\"button\" className=\"text-accent-700 font-semibold\">\r\n Resend\r\n </button>\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n className=\"text-gray-600 mx-auto mt-5 flex w-fit items-center gap-1 text-sm font-semibold\"\r\n onClick={() => {\r\n setStep(1);\r\n step2Form.reset();\r\n }}\r\n >\r\n <ArrowLeftIcon className=\"size-5\" />\r\n Back\r\n </button>\r\n </form>\r\n </div>\r\n )}\r\n </>\r\n );\r\n}\r\n","import {\r\n registerMemberAccountViaMobile,\r\n type RegisterMemberAccountViaMobileInput,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useMutation } from '@tanstack/react-query';\r\nimport type { Mutation } from '../../types';\r\nimport { getSignUpMutationKey } from './getSignUpMutationKey';\r\n\r\nexport interface SignUpMutationInput extends RegisterMemberAccountViaMobileInput {}\r\n\r\nexport const useSignUpMutation: Mutation<string, SignUpMutationInput> = (config) => {\r\n return useMutation({\r\n ...config,\r\n mutationKey: getSignUpMutationKey(),\r\n mutationFn: async (input) => {\r\n return await registerMemberAccountViaMobile(input);\r\n },\r\n });\r\n};\r\n","import type { MutationKey } from '@tanstack/react-query';\r\n\r\nexport const getSignUpMutationKey = (): MutationKey => ['mutations/signUp'];\r\n","import { EmblaPluginType } from 'embla-carousel'\n\nexport function isObject(subject: unknown): subject is Record<string, unknown> {\n return Object.prototype.toString.call(subject) === '[object Object]'\n}\n\nexport function isRecord(\n subject: unknown\n): subject is Record<string | number, unknown> {\n return isObject(subject) || Array.isArray(subject)\n}\n\nexport function canUseDOM(): boolean {\n return !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n )\n}\n\nexport function areOptionsEqual(\n optionsA: Record<string, unknown>,\n optionsB: Record<string, unknown>\n): boolean {\n const optionsAKeys = Object.keys(optionsA)\n const optionsBKeys = Object.keys(optionsB)\n\n if (optionsAKeys.length !== optionsBKeys.length) return false\n\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}))\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}))\n\n if (breakpointsA !== breakpointsB) return false\n\n return optionsAKeys.every((key) => {\n const valueA = optionsA[key]\n const valueB = optionsB[key]\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB\n return areOptionsEqual(valueA, valueB)\n })\n}\n\nexport function sortAndMapPluginToOptions(\n plugins: EmblaPluginType[]\n): EmblaPluginType['options'][] {\n return plugins\n .concat()\n .sort((a, b) => (a.name > b.name ? 1 : -1))\n .map((plugin) => plugin.options)\n}\n\nexport function arePluginsEqual(\n pluginsA: EmblaPluginType[],\n pluginsB: EmblaPluginType[]\n): boolean {\n if (pluginsA.length !== pluginsB.length) return false\n\n const optionsA = sortAndMapPluginToOptions(pluginsA)\n const optionsB = sortAndMapPluginToOptions(pluginsB)\n\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index]\n return areOptionsEqual(optionA, optionB)\n })\n}\n","import { PointerEventType } from './DragTracker'\n\nexport type WindowType = Window & typeof globalThis\n\nexport function isNumber(subject: unknown): subject is number {\n return typeof subject === 'number'\n}\n\nexport function isString(subject: unknown): subject is string {\n return typeof subject === 'string'\n}\n\nexport function isBoolean(subject: unknown): subject is boolean {\n return typeof subject === 'boolean'\n}\n\nexport function isObject(subject: unknown): subject is Record<string, unknown> {\n return Object.prototype.toString.call(subject) === '[object Object]'\n}\n\nexport function mathAbs(n: number): number {\n return Math.abs(n)\n}\n\nexport function mathSign(n: number): number {\n return Math.sign(n)\n}\n\nexport function deltaAbs(valueB: number, valueA: number): number {\n return mathAbs(valueB - valueA)\n}\n\nexport function factorAbs(valueB: number, valueA: number): number {\n if (valueB === 0 || valueA === 0) return 0\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA))\n return mathAbs(diff / valueB)\n}\n\nexport function roundToTwoDecimals(num: number): number {\n return Math.round(num * 100) / 100\n}\n\nexport function arrayKeys<Type>(array: Type[]): number[] {\n return objectKeys(array).map(Number)\n}\n\nexport function arrayLast<Type>(array: Type[]): Type {\n return array[arrayLastIndex(array)]\n}\n\nexport function arrayLastIndex<Type>(array: Type[]): number {\n return Math.max(0, array.length - 1)\n}\n\nexport function arrayIsLastIndex<Type>(array: Type[], index: number): boolean {\n return index === arrayLastIndex(array)\n}\n\nexport function arrayFromNumber(n: number, startAt: number = 0): number[] {\n return Array.from(Array(n), (_, i) => startAt + i)\n}\n\nexport function objectKeys<Type extends object>(object: Type): string[] {\n return Object.keys(object)\n}\n\nexport function objectsMergeDeep(\n objectA: Record<string, unknown>,\n objectB: Record<string, unknown>\n): Record<string, unknown> {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach((key) => {\n const valueA = mergedObjects[key]\n const valueB = currentObject[key]\n const areObjects = isObject(valueA) && isObject(valueB)\n\n mergedObjects[key] = areObjects\n ? objectsMergeDeep(valueA, valueB)\n : valueB\n })\n return mergedObjects\n }, {})\n}\n\nexport function isMouseEvent(\n evt: PointerEventType,\n ownerWindow: WindowType\n): evt is MouseEvent {\n return (\n typeof ownerWindow.MouseEvent !== 'undefined' &&\n evt instanceof ownerWindow.MouseEvent\n )\n}\n","import { isString } from './utils'\n\nexport type AlignmentOptionType =\n | 'start'\n | 'center'\n | 'end'\n | ((viewSize: number, snapSize: number, index: number) => number)\n\nexport type AlignmentType = {\n measure: (n: number, index: number) => number\n}\n\nexport function Alignment(\n align: AlignmentOptionType,\n viewSize: number\n): AlignmentType {\n const predefined = { start, center, end }\n\n function start(): number {\n return 0\n }\n\n function center(n: number): number {\n return end(n) / 2\n }\n\n function end(n: number): number {\n return viewSize - n\n }\n\n function measure(n: number, index: number): number {\n if (isString(align)) return predefined[align](n)\n return align(viewSize, n, index)\n }\n\n const self: AlignmentType = {\n measure\n }\n return self\n}\n","type EventNameType = keyof DocumentEventMap | keyof WindowEventMap\ntype EventHandlerType = (evt: any) => void\ntype EventOptionsType = boolean | AddEventListenerOptions | undefined\ntype EventRemoverType = () => void\n\nexport type EventStoreType = {\n add: (\n node: EventTarget,\n type: EventNameType,\n handler: EventHandlerType,\n options?: EventOptionsType\n ) => EventStoreType\n clear: () => void\n}\n\nexport function EventStore(): EventStoreType {\n let listeners: EventRemoverType[] = []\n\n function add(\n node: EventTarget,\n type: EventNameType,\n handler: EventHandlerType,\n options: EventOptionsType = { passive: true }\n ): EventStoreType {\n let removeListener: EventRemoverType\n\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options)\n removeListener = () => node.removeEventListener(type, handler, options)\n } else {\n const legacyMediaQueryList = <MediaQueryList>node\n legacyMediaQueryList.addListener(handler)\n removeListener = () => legacyMediaQueryList.removeListener(handler)\n }\n\n listeners.push(removeListener)\n return self\n }\n\n function clear(): void {\n listeners = listeners.filter((remove) => remove())\n }\n\n const self: EventStoreType = {\n add,\n clear\n }\n return self\n}\n","import { EngineType } from './Engine'\nimport { EventStore } from './EventStore'\nimport { WindowType } from './utils'\n\nexport type AnimationsUpdateType = (engine: EngineType) => void\nexport type AnimationsRenderType = (engine: EngineType, alpha: number) => void\n\nexport type AnimationsType = {\n init: () => void\n destroy: () => void\n start: () => void\n stop: () => void\n update: () => void\n render: (alpha: number) => void\n}\n\nexport function Animations(\n ownerDocument: Document,\n ownerWindow: WindowType,\n update: () => void,\n render: (alpha: number) => void\n): AnimationsType {\n const documentVisibleHandler = EventStore()\n const fixedTimeStep = 1000 / 60\n\n let lastTimeStamp: number | null = null\n let accumulatedTime = 0\n let animationId = 0\n\n function init(): void {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset()\n })\n }\n\n function destroy(): void {\n stop()\n documentVisibleHandler.clear()\n }\n\n function animate(timeStamp: DOMHighResTimeStamp): void {\n if (!animationId) return\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp\n update()\n update()\n }\n\n const timeElapsed = timeStamp - lastTimeStamp\n lastTimeStamp = timeStamp\n accumulatedTime += timeElapsed\n\n while (accumulatedTime >= fixedTimeStep) {\n update()\n accumulatedTime -= fixedTimeStep\n }\n\n const alpha = accumulatedTime / fixedTimeStep\n render(alpha)\n\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate)\n }\n }\n\n function start(): void {\n if (animationId) return\n animationId = ownerWindow.requestAnimationFrame(animate)\n }\n\n function stop(): void {\n ownerWindow.cancelAnimationFrame(animationId)\n lastTimeStamp = null\n accumulatedTime = 0\n animationId = 0\n }\n\n function reset(): void {\n lastTimeStamp = null\n accumulatedTime = 0\n }\n\n const self: AnimationsType = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n }\n return self\n}\n","import { NodeRectType } from './NodeRects'\n\nexport type AxisOptionType = 'x' | 'y'\nexport type AxisDirectionOptionType = 'ltr' | 'rtl'\ntype AxisEdgeType = 'top' | 'right' | 'bottom' | 'left'\n\nexport type AxisType = {\n scroll: AxisOptionType\n cross: AxisOptionType\n startEdge: AxisEdgeType\n endEdge: AxisEdgeType\n measureSize: (nodeRect: NodeRectType) => number\n direction: (n: number) => number\n}\n\nexport function Axis(\n axis: AxisOptionType,\n contentDirection: AxisDirectionOptionType\n): AxisType {\n const isRightToLeft = contentDirection === 'rtl'\n const isVertical = axis === 'y'\n const scroll = isVertical ? 'y' : 'x'\n const cross = isVertical ? 'x' : 'y'\n const sign = !isVertical && isRightToLeft ? -1 : 1\n const startEdge = getStartEdge()\n const endEdge = getEndEdge()\n\n function measureSize(nodeRect: NodeRectType): number {\n const { height, width } = nodeRect\n return isVertical ? height : width\n }\n\n function getStartEdge(): AxisEdgeType {\n if (isVertical) return 'top'\n return isRightToLeft ? 'right' : 'left'\n }\n\n function getEndEdge(): AxisEdgeType {\n if (isVertical) return 'bottom'\n return isRightToLeft ? 'left' : 'right'\n }\n\n function direction(n: number): number {\n return n * sign\n }\n\n const self: AxisType = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n }\n return self\n}\n","import { mathAbs } from './utils'\n\nexport type LimitType = {\n min: number\n max: number\n length: number\n constrain: (n: number) => number\n reachedAny: (n: number) => boolean\n reachedMax: (n: number) => boolean\n reachedMin: (n: number) => boolean\n removeOffset: (n: number) => number\n}\n\nexport function Limit(min: number = 0, max: number = 0): LimitType {\n const length = mathAbs(min - max)\n\n function reachedMin(n: number): boolean {\n return n < min\n }\n\n function reachedMax(n: number): boolean {\n return n > max\n }\n\n function reachedAny(n: number): boolean {\n return reachedMin(n) || reachedMax(n)\n }\n\n function constrain(n: number): number {\n if (!reachedAny(n)) return n\n return reachedMin(n) ? min : max\n }\n\n function removeOffset(n: number): number {\n if (!length) return n\n return n - length * Math.ceil((n - max) / length)\n }\n\n const self: LimitType = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n }\n return self\n}\n","import { Limit } from './Limit'\nimport { mathAbs } from './utils'\n\nexport type CounterType = {\n get: () => number\n set: (n: number) => CounterType\n add: (n: number) => CounterType\n clone: () => CounterType\n}\n\nexport function Counter(\n max: number,\n start: number,\n loop: boolean\n): CounterType {\n const { constrain } = Limit(0, max)\n const loopEnd = max + 1\n let counter = withinLimit(start)\n\n function withinLimit(n: number): number {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd)\n }\n\n function get(): number {\n return counter\n }\n\n function set(n: number): CounterType {\n counter = withinLimit(n)\n return self\n }\n\n function add(n: number): CounterType {\n return clone().set(get() + n)\n }\n\n function clone(): CounterType {\n return Counter(max, get(), loop)\n }\n\n const self: CounterType = {\n get,\n set,\n add,\n clone\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { AnimationsType } from './Animations'\nimport { CounterType } from './Counter'\nimport { DragTrackerType, PointerEventType } from './DragTracker'\nimport { EventHandlerType } from './EventHandler'\nimport { AxisType } from './Axis'\nimport { EventStore } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollTargetType } from './ScrollTarget'\nimport { ScrollToType } from './ScrollTo'\nimport { Vector1DType } from './Vector1d'\nimport { PercentOfViewType } from './PercentOfView'\nimport { Limit } from './Limit'\nimport {\n deltaAbs,\n factorAbs,\n isBoolean,\n isMouseEvent,\n mathAbs,\n mathSign,\n WindowType\n} from './utils'\n\ntype DragHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n evt: PointerEventType\n) => boolean | void\n\nexport type DragHandlerOptionType = boolean | DragHandlerCallbackType\n\nexport type DragHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n pointerDown: () => boolean\n}\n\nexport function DragHandler(\n axis: AxisType,\n rootNode: HTMLElement,\n ownerDocument: Document,\n ownerWindow: WindowType,\n target: Vector1DType,\n dragTracker: DragTrackerType,\n location: Vector1DType,\n animation: AnimationsType,\n scrollTo: ScrollToType,\n scrollBody: ScrollBodyType,\n scrollTarget: ScrollTargetType,\n index: CounterType,\n eventHandler: EventHandlerType,\n percentOfView: PercentOfViewType,\n dragFree: boolean,\n dragThreshold: number,\n skipSnaps: boolean,\n baseFriction: number,\n watchDrag: DragHandlerOptionType\n): DragHandlerType {\n const { cross: crossAxis, direction } = axis\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA']\n const nonPassiveEvent = { passive: false }\n const initEvents = EventStore()\n const dragEvents = EventStore()\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20))\n const snapForceBoost = { mouse: 300, touch: 400 }\n const freeForceBoost = { mouse: 500, touch: 600 }\n const baseSpeed = dragFree ? 43 : 25\n\n let isMoving = false\n let startScroll = 0\n let startCross = 0\n let pointerIsDown = false\n let preventScroll = false\n let preventClick = false\n let isMouse = false\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchDrag) return\n\n function downIfAllowed(evt: PointerEventType): void {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt)\n }\n\n const node = rootNode\n initEvents\n .add(node, 'dragstart', (evt) => evt.preventDefault(), nonPassiveEvent)\n .add(node, 'touchmove', () => undefined, nonPassiveEvent)\n .add(node, 'touchend', () => undefined)\n .add(node, 'touchstart', downIfAllowed)\n .add(node, 'mousedown', downIfAllowed)\n .add(node, 'touchcancel', up)\n .add(node, 'contextmenu', up)\n .add(node, 'click', click, true)\n }\n\n function destroy(): void {\n initEvents.clear()\n dragEvents.clear()\n }\n\n function addDragEvents(): void {\n const node = isMouse ? ownerDocument : rootNode\n dragEvents\n .add(node, 'touchmove', move, nonPassiveEvent)\n .add(node, 'touchend', up)\n .add(node, 'mousemove', move, nonPassiveEvent)\n .add(node, 'mouseup', up)\n }\n\n function isFocusNode(node: Element): boolean {\n const nodeName = node.nodeName || ''\n return focusNodes.includes(nodeName)\n }\n\n function forceBoost(): number {\n const boost = dragFree ? freeForceBoost : snapForceBoost\n const type = isMouse ? 'mouse' : 'touch'\n return boost[type]\n }\n\n function allowedForce(force: number, targetChanged: boolean): number {\n const next = index.add(mathSign(force) * -1)\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance\n\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce\n if (skipSnaps && targetChanged) return baseForce * 0.5\n\n return scrollTarget.byIndex(next.get(), 0).distance\n }\n\n function down(evt: PointerEventType): void {\n const isMouseEvt = isMouseEvent(evt, ownerWindow)\n isMouse = isMouseEvt\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving\n isMoving = deltaAbs(target.get(), location.get()) >= 2\n\n if (isMouseEvt && evt.button !== 0) return\n if (isFocusNode(evt.target as Element)) return\n\n pointerIsDown = true\n dragTracker.pointerDown(evt)\n scrollBody.useFriction(0).useDuration(0)\n target.set(location)\n addDragEvents()\n startScroll = dragTracker.readPoint(evt)\n startCross = dragTracker.readPoint(evt, crossAxis)\n eventHandler.emit('pointerDown')\n }\n\n function move(evt: PointerEventType): void {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow)\n if (isTouchEvt && evt.touches.length >= 2) return up(evt)\n\n const lastScroll = dragTracker.readPoint(evt)\n const lastCross = dragTracker.readPoint(evt, crossAxis)\n const diffScroll = deltaAbs(lastScroll, startScroll)\n const diffCross = deltaAbs(lastCross, startCross)\n\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt)\n preventScroll = diffScroll > diffCross\n if (!preventScroll) return up(evt)\n }\n const diff = dragTracker.pointerMove(evt)\n if (diffScroll > dragThreshold) preventClick = true\n\n scrollBody.useFriction(0.3).useDuration(0.75)\n animation.start()\n target.add(direction(diff))\n evt.preventDefault()\n }\n\n function up(evt: PointerEventType): void {\n const currentLocation = scrollTarget.byDistance(0, false)\n const targetChanged = currentLocation.index !== index.get()\n const rawForce = dragTracker.pointerUp(evt) * forceBoost()\n const force = allowedForce(direction(rawForce), targetChanged)\n const forceFactor = factorAbs(rawForce, force)\n const speed = baseSpeed - 10 * forceFactor\n const friction = baseFriction + forceFactor / 50\n\n preventScroll = false\n pointerIsDown = false\n dragEvents.clear()\n scrollBody.useDuration(speed).useFriction(friction)\n scrollTo.distance(force, !dragFree)\n isMouse = false\n eventHandler.emit('pointerUp')\n }\n\n function click(evt: MouseEvent): void {\n if (preventClick) {\n evt.stopPropagation()\n evt.preventDefault()\n preventClick = false\n }\n }\n\n function pointerDown(): boolean {\n return pointerIsDown\n }\n\n const self: DragHandlerType = {\n init,\n destroy,\n pointerDown\n }\n return self\n}\n","import { AxisOptionType, AxisType } from './Axis'\nimport { isMouseEvent, mathAbs, WindowType } from './utils'\n\ntype PointerCoordType = keyof Touch | keyof MouseEvent\nexport type PointerEventType = TouchEvent | MouseEvent\n\nexport type DragTrackerType = {\n pointerDown: (evt: PointerEventType) => number\n pointerMove: (evt: PointerEventType) => number\n pointerUp: (evt: PointerEventType) => number\n readPoint: (evt: PointerEventType, evtAxis?: AxisOptionType) => number\n}\n\nexport function DragTracker(\n axis: AxisType,\n ownerWindow: WindowType\n): DragTrackerType {\n const logInterval = 170\n\n let startEvent: PointerEventType\n let lastEvent: PointerEventType\n\n function readTime(evt: PointerEventType): number {\n return evt.timeStamp\n }\n\n function readPoint(evt: PointerEventType, evtAxis?: AxisOptionType): number {\n const property = evtAxis || axis.scroll\n const coord: PointerCoordType = `client${property === 'x' ? 'X' : 'Y'}`\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord]\n }\n\n function pointerDown(evt: PointerEventType): number {\n startEvent = evt\n lastEvent = evt\n return readPoint(evt)\n }\n\n function pointerMove(evt: PointerEventType): number {\n const diff = readPoint(evt) - readPoint(lastEvent)\n const expired = readTime(evt) - readTime(startEvent) > logInterval\n\n lastEvent = evt\n if (expired) startEvent = evt\n return diff\n }\n\n function pointerUp(evt: PointerEventType): number {\n if (!startEvent || !lastEvent) return 0\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent)\n const diffTime = readTime(evt) - readTime(startEvent)\n const expired = readTime(evt) - readTime(lastEvent) > logInterval\n const force = diffDrag / diffTime\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1\n\n return isFlick ? force : 0\n }\n\n const self: DragTrackerType = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n }\n return self\n}\n","export type NodeRectType = {\n top: number\n right: number\n bottom: number\n left: number\n width: number\n height: number\n}\n\nexport type NodeRectsType = {\n measure: (node: HTMLElement) => NodeRectType\n}\n\nexport function NodeRects(): NodeRectsType {\n function measure(node: HTMLElement): NodeRectType {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = node\n const offset: NodeRectType = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n }\n\n return offset\n }\n\n const self: NodeRectsType = {\n measure\n }\n return self\n}\n","export type PercentOfViewType = {\n measure: (n: number) => number\n}\n\nexport function PercentOfView(viewSize: number): PercentOfViewType {\n function measure(n: number): number {\n return viewSize * (n / 100)\n }\n\n const self: PercentOfViewType = {\n measure\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { NodeRectsType } from './NodeRects'\nimport { isBoolean, mathAbs, WindowType } from './utils'\n\ntype ResizeHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n entries: ResizeObserverEntry[]\n) => boolean | void\n\nexport type ResizeHandlerOptionType = boolean | ResizeHandlerCallbackType\n\nexport type ResizeHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n}\n\nexport function ResizeHandler(\n container: HTMLElement,\n eventHandler: EventHandlerType,\n ownerWindow: WindowType,\n slides: HTMLElement[],\n axis: AxisType,\n watchResize: ResizeHandlerOptionType,\n nodeRects: NodeRectsType\n): ResizeHandlerType {\n const observeNodes = [container].concat(slides)\n let resizeObserver: ResizeObserver\n let containerSize: number\n let slideSizes: number[] = []\n let destroyed = false\n\n function readSize(node: HTMLElement): number {\n return axis.measureSize(nodeRects.measure(node))\n }\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchResize) return\n\n containerSize = readSize(container)\n slideSizes = slides.map(readSize)\n\n function defaultCallback(entries: ResizeObserverEntry[]): void {\n for (const entry of entries) {\n if (destroyed) return\n\n const isContainer = entry.target === container\n const slideIndex = slides.indexOf(<HTMLElement>entry.target)\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex]\n const newSize = readSize(isContainer ? container : slides[slideIndex])\n const diffSize = mathAbs(newSize - lastSize)\n\n if (diffSize >= 0.5) {\n emblaApi.reInit()\n eventHandler.emit('resize')\n\n break\n }\n }\n }\n\n resizeObserver = new ResizeObserver((entries) => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries)\n }\n })\n\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach((node) => resizeObserver.observe(node))\n })\n }\n\n function destroy(): void {\n destroyed = true\n if (resizeObserver) resizeObserver.disconnect()\n }\n\n const self: ResizeHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { mathSign, mathAbs } from './utils'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollBodyType = {\n direction: () => number\n duration: () => number\n velocity: () => number\n seek: () => ScrollBodyType\n settled: () => boolean\n useBaseFriction: () => ScrollBodyType\n useBaseDuration: () => ScrollBodyType\n useFriction: (n: number) => ScrollBodyType\n useDuration: (n: number) => ScrollBodyType\n}\n\nexport function ScrollBody(\n location: Vector1DType,\n offsetLocation: Vector1DType,\n previousLocation: Vector1DType,\n target: Vector1DType,\n baseDuration: number,\n baseFriction: number\n): ScrollBodyType {\n let scrollVelocity = 0\n let scrollDirection = 0\n let scrollDuration = baseDuration\n let scrollFriction = baseFriction\n let rawLocation = location.get()\n let rawLocationPrevious = 0\n\n function seek(): ScrollBodyType {\n const displacement = target.get() - location.get()\n const isInstant = !scrollDuration\n let scrollDistance = 0\n\n if (isInstant) {\n scrollVelocity = 0\n previousLocation.set(target)\n location.set(target)\n\n scrollDistance = displacement\n } else {\n previousLocation.set(location)\n\n scrollVelocity += displacement / scrollDuration\n scrollVelocity *= scrollFriction\n rawLocation += scrollVelocity\n location.add(scrollVelocity)\n\n scrollDistance = rawLocation - rawLocationPrevious\n }\n\n scrollDirection = mathSign(scrollDistance)\n rawLocationPrevious = rawLocation\n return self\n }\n\n function settled(): boolean {\n const diff = target.get() - offsetLocation.get()\n return mathAbs(diff) < 0.001\n }\n\n function duration(): number {\n return scrollDuration\n }\n\n function direction(): number {\n return scrollDirection\n }\n\n function velocity(): number {\n return scrollVelocity\n }\n\n function useBaseDuration(): ScrollBodyType {\n return useDuration(baseDuration)\n }\n\n function useBaseFriction(): ScrollBodyType {\n return useFriction(baseFriction)\n }\n\n function useDuration(n: number): ScrollBodyType {\n scrollDuration = n\n return self\n }\n\n function useFriction(n: number): ScrollBodyType {\n scrollFriction = n\n return self\n }\n\n const self: ScrollBodyType = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { ScrollBodyType } from './ScrollBody'\nimport { Vector1DType } from './Vector1d'\nimport { mathAbs } from './utils'\nimport { PercentOfViewType } from './PercentOfView'\n\nexport type ScrollBoundsType = {\n shouldConstrain: () => boolean\n constrain: (pointerDown: boolean) => void\n toggleActive: (active: boolean) => void\n}\n\nexport function ScrollBounds(\n limit: LimitType,\n location: Vector1DType,\n target: Vector1DType,\n scrollBody: ScrollBodyType,\n percentOfView: PercentOfViewType\n): ScrollBoundsType {\n const pullBackThreshold = percentOfView.measure(10)\n const edgeOffsetTolerance = percentOfView.measure(50)\n const frictionLimit = Limit(0.1, 0.99)\n let disabled = false\n\n function shouldConstrain(): boolean {\n if (disabled) return false\n if (!limit.reachedAny(target.get())) return false\n if (!limit.reachedAny(location.get())) return false\n return true\n }\n\n function constrain(pointerDown: boolean): void {\n if (!shouldConstrain()) return\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max'\n const diffToEdge = mathAbs(limit[edge] - location.get())\n const diffToTarget = target.get() - location.get()\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance)\n\n target.subtract(diffToTarget * friction)\n\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()))\n scrollBody.useDuration(25).useBaseFriction()\n }\n }\n\n function toggleActive(active: boolean): void {\n disabled = !active\n }\n\n const self: ScrollBoundsType = {\n shouldConstrain,\n constrain,\n toggleActive\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { arrayIsLastIndex, arrayLast, deltaAbs } from './utils'\n\nexport type ScrollContainOptionType = false | 'trimSnaps' | 'keepSnaps'\n\nexport type ScrollContainType = {\n snapsContained: number[]\n scrollContainLimit: LimitType\n}\n\nexport function ScrollContain(\n viewSize: number,\n contentSize: number,\n snapsAligned: number[],\n containScroll: ScrollContainOptionType,\n pixelTolerance: number\n): ScrollContainType {\n const scrollBounds = Limit(-contentSize + viewSize, 0)\n const snapsBounded = measureBounded()\n const scrollContainLimit = findScrollContainLimit()\n const snapsContained = measureContained()\n\n function usePixelTolerance(bound: number, snap: number): boolean {\n return deltaAbs(bound, snap) <= 1\n }\n\n function findScrollContainLimit(): LimitType {\n const startSnap = snapsBounded[0]\n const endSnap = arrayLast(snapsBounded)\n const min = snapsBounded.lastIndexOf(startSnap)\n const max = snapsBounded.indexOf(endSnap) + 1\n return Limit(min, max)\n }\n\n function measureBounded(): number[] {\n return snapsAligned\n .map((snapAligned, index) => {\n const { min, max } = scrollBounds\n const snap = scrollBounds.constrain(snapAligned)\n const isFirst = !index\n const isLast = arrayIsLastIndex(snapsAligned, index)\n if (isFirst) return max\n if (isLast) return min\n if (usePixelTolerance(min, snap)) return min\n if (usePixelTolerance(max, snap)) return max\n return snap\n })\n .map((scrollBound) => parseFloat(scrollBound.toFixed(3)))\n }\n\n function measureContained(): number[] {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max]\n if (containScroll === 'keepSnaps') return snapsBounded\n const { min, max } = scrollContainLimit\n return snapsBounded.slice(min, max)\n }\n\n const self: ScrollContainType = {\n snapsContained,\n scrollContainLimit\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { arrayLast } from './utils'\n\nexport type ScrollLimitType = {\n limit: LimitType\n}\n\nexport function ScrollLimit(\n contentSize: number,\n scrollSnaps: number[],\n loop: boolean\n): ScrollLimitType {\n const max = scrollSnaps[0]\n const min = loop ? max - contentSize : arrayLast(scrollSnaps)\n const limit = Limit(min, max)\n\n const self: ScrollLimitType = {\n limit\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollLooperType = {\n loop: (direction: number) => void\n}\n\nexport function ScrollLooper(\n contentSize: number,\n limit: LimitType,\n location: Vector1DType,\n vectors: Vector1DType[]\n): ScrollLooperType {\n const jointSafety = 0.1\n const min = limit.min + jointSafety\n const max = limit.max + jointSafety\n const { reachedMin, reachedMax } = Limit(min, max)\n\n function shouldLoop(direction: number): boolean {\n if (direction === 1) return reachedMax(location.get())\n if (direction === -1) return reachedMin(location.get())\n return false\n }\n\n function loop(direction: number): void {\n if (!shouldLoop(direction)) return\n\n const loopDistance = contentSize * (direction * -1)\n vectors.forEach((v) => v.add(loopDistance))\n }\n\n const self: ScrollLooperType = {\n loop\n }\n return self\n}\n","import { LimitType } from './Limit'\n\nexport type ScrollProgressType = {\n get: (n: number) => number\n}\n\nexport function ScrollProgress(limit: LimitType): ScrollProgressType {\n const { max, length } = limit\n\n function get(n: number): number {\n const currentLocation = n - max\n return length ? currentLocation / -length : 0\n }\n\n const self: ScrollProgressType = {\n get\n }\n return self\n}\n","import { AlignmentType } from './Alignment'\nimport { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport { SlidesToScrollType } from './SlidesToScroll'\nimport { arrayLast, mathAbs } from './utils'\n\nexport type ScrollSnapsType = {\n snaps: number[]\n snapsAligned: number[]\n}\n\nexport function ScrollSnaps(\n axis: AxisType,\n alignment: AlignmentType,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n slidesToScroll: SlidesToScrollType\n): ScrollSnapsType {\n const { startEdge, endEdge } = axis\n const { groupSlides } = slidesToScroll\n const alignments = measureSizes().map(alignment.measure)\n const snaps = measureUnaligned()\n const snapsAligned = measureAligned()\n\n function measureSizes(): number[] {\n return groupSlides(slideRects)\n .map((rects) => arrayLast(rects)[endEdge] - rects[0][startEdge])\n .map(mathAbs)\n }\n\n function measureUnaligned(): number[] {\n return slideRects\n .map((rect) => containerRect[startEdge] - rect[startEdge])\n .map((snap) => -mathAbs(snap))\n }\n\n function measureAligned(): number[] {\n return groupSlides(snaps)\n .map((g) => g[0])\n .map((snap, index) => snap + alignments[index])\n }\n\n const self: ScrollSnapsType = {\n snaps,\n snapsAligned\n }\n return self\n}\n","import { LimitType } from './Limit'\nimport { ScrollContainOptionType } from './ScrollContain'\nimport { SlidesToScrollType } from './SlidesToScroll'\nimport {\n arrayFromNumber,\n arrayIsLastIndex,\n arrayLast,\n arrayLastIndex\n} from './utils'\n\nexport type SlideRegistryType = {\n slideRegistry: number[][]\n}\n\nexport function SlideRegistry(\n containSnaps: boolean,\n containScroll: ScrollContainOptionType,\n scrollSnaps: number[],\n scrollContainLimit: LimitType,\n slidesToScroll: SlidesToScrollType,\n slideIndexes: number[]\n): SlideRegistryType {\n const { groupSlides } = slidesToScroll\n const { min, max } = scrollContainLimit\n const slideRegistry = createSlideRegistry()\n\n function createSlideRegistry(): number[][] {\n const groupedSlideIndexes = groupSlides(slideIndexes)\n const doNotContain = !containSnaps || containScroll === 'keepSnaps'\n\n if (scrollSnaps.length === 1) return [slideIndexes]\n if (doNotContain) return groupedSlideIndexes\n\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index\n const isLast = arrayIsLastIndex(groups, index)\n\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1\n return arrayFromNumber(range)\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1\n return arrayFromNumber(range, arrayLast(groups)[0])\n }\n return group\n })\n }\n\n const self: SlideRegistryType = {\n slideRegistry\n }\n return self\n}\n","import { LimitType } from './Limit'\nimport { Vector1DType } from './Vector1d'\nimport { arrayLast, mathAbs, mathSign } from './utils'\n\nexport type TargetType = {\n distance: number\n index: number\n}\n\nexport type ScrollTargetType = {\n byIndex: (target: number, direction: number) => TargetType\n byDistance: (force: number, snap: boolean) => TargetType\n shortcut: (target: number, direction: number) => number\n}\n\nexport function ScrollTarget(\n loop: boolean,\n scrollSnaps: number[],\n contentSize: number,\n limit: LimitType,\n targetVector: Vector1DType\n): ScrollTargetType {\n const { reachedAny, removeOffset, constrain } = limit\n\n function minDistance(distances: number[]): number {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0]\n }\n\n function findTargetSnap(target: number): TargetType {\n const distance = loop ? removeOffset(target) : constrain(target)\n const ascDiffsToSnaps = scrollSnaps\n .map((snap, index) => ({ diff: shortcut(snap - distance, 0), index }))\n .sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff))\n\n const { index } = ascDiffsToSnaps[0]\n return { index, distance }\n }\n\n function shortcut(target: number, direction: number): number {\n const targets = [target, target + contentSize, target - contentSize]\n\n if (!loop) return target\n if (!direction) return minDistance(targets)\n\n const matchingTargets = targets.filter((t) => mathSign(t) === direction)\n if (matchingTargets.length) return minDistance(matchingTargets)\n return arrayLast(targets) - contentSize\n }\n\n function byIndex(index: number, direction: number): TargetType {\n const diffToSnap = scrollSnaps[index] - targetVector.get()\n const distance = shortcut(diffToSnap, direction)\n return { index, distance }\n }\n\n function byDistance(distance: number, snap: boolean): TargetType {\n const target = targetVector.get() + distance\n const { index, distance: targetSnapDistance } = findTargetSnap(target)\n const reachedBound = !loop && reachedAny(target)\n\n if (!snap || reachedBound) return { index, distance }\n\n const diffToSnap = scrollSnaps[index] - targetSnapDistance\n const snapDistance = distance + shortcut(diffToSnap, 0)\n\n return { index, distance: snapDistance }\n }\n\n const self: ScrollTargetType = {\n byDistance,\n byIndex,\n shortcut\n }\n return self\n}\n","import { AnimationsType } from './Animations'\nimport { CounterType } from './Counter'\nimport { EventHandlerType } from './EventHandler'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollTargetType, TargetType } from './ScrollTarget'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollToType = {\n distance: (n: number, snap: boolean) => void\n index: (n: number, direction: number) => void\n}\n\nexport function ScrollTo(\n animation: AnimationsType,\n indexCurrent: CounterType,\n indexPrevious: CounterType,\n scrollBody: ScrollBodyType,\n scrollTarget: ScrollTargetType,\n targetVector: Vector1DType,\n eventHandler: EventHandlerType\n): ScrollToType {\n function scrollTo(target: TargetType): void {\n const distanceDiff = target.distance\n const indexDiff = target.index !== indexCurrent.get()\n\n targetVector.add(distanceDiff)\n\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start()\n } else {\n animation.update()\n animation.render(1)\n animation.update()\n }\n }\n\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get())\n indexCurrent.set(target.index)\n eventHandler.emit('select')\n }\n }\n\n function distance(n: number, snap: boolean): void {\n const target = scrollTarget.byDistance(n, snap)\n scrollTo(target)\n }\n\n function index(n: number, direction: number): void {\n const targetIndex = indexCurrent.clone().set(n)\n const target = scrollTarget.byIndex(targetIndex.get(), direction)\n scrollTo(target)\n }\n\n const self: ScrollToType = {\n distance,\n index\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { EventStoreType } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollToType } from './ScrollTo'\nimport { SlideRegistryType } from './SlideRegistry'\nimport { isBoolean, isNumber } from './utils'\n\ntype FocusHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n evt: FocusEvent\n) => boolean | void\n\nexport type FocusHandlerOptionType = boolean | FocusHandlerCallbackType\n\nexport type SlideFocusType = {\n init: (emblaApi: EmblaCarouselType) => void\n}\n\nexport function SlideFocus(\n root: HTMLElement,\n slides: HTMLElement[],\n slideRegistry: SlideRegistryType['slideRegistry'],\n scrollTo: ScrollToType,\n scrollBody: ScrollBodyType,\n eventStore: EventStoreType,\n eventHandler: EventHandlerType,\n watchFocus: FocusHandlerOptionType\n): SlideFocusType {\n const focusListenerOptions = { passive: true, capture: true }\n let lastTabPressTime = 0\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchFocus) return\n\n function defaultCallback(index: number): void {\n const nowTime = new Date().getTime()\n const diffTime = nowTime - lastTabPressTime\n\n if (diffTime > 10) return\n\n eventHandler.emit('slideFocusStart')\n root.scrollLeft = 0\n\n const group = slideRegistry.findIndex((group) => group.includes(index))\n\n if (!isNumber(group)) return\n\n scrollBody.useDuration(0)\n scrollTo.index(group, 0)\n\n eventHandler.emit('slideFocus')\n }\n\n eventStore.add(document, 'keydown', registerTabPress, false)\n\n slides.forEach((slide, slideIndex) => {\n eventStore.add(\n slide,\n 'focus',\n (evt: FocusEvent) => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex)\n }\n },\n focusListenerOptions\n )\n })\n }\n\n function registerTabPress(event: KeyboardEvent): void {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime()\n }\n\n const self: SlideFocusType = {\n init\n }\n return self\n}\n","import { isNumber } from './utils'\n\nexport type Vector1DType = {\n get: () => number\n set: (n: Vector1DType | number) => void\n add: (n: Vector1DType | number) => void\n subtract: (n: Vector1DType | number) => void\n}\n\nexport function Vector1D(initialValue: number): Vector1DType {\n let value = initialValue\n\n function get(): number {\n return value\n }\n\n function set(n: Vector1DType | number): void {\n value = normalizeInput(n)\n }\n\n function add(n: Vector1DType | number): void {\n value += normalizeInput(n)\n }\n\n function subtract(n: Vector1DType | number): void {\n value -= normalizeInput(n)\n }\n\n function normalizeInput(n: Vector1DType | number): number {\n return isNumber(n) ? n : n.get()\n }\n\n const self: Vector1DType = {\n get,\n set,\n add,\n subtract\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { roundToTwoDecimals } from './utils'\n\nexport type TranslateType = {\n clear: () => void\n to: (target: number) => void\n toggleActive: (active: boolean) => void\n}\n\nexport function Translate(\n axis: AxisType,\n container: HTMLElement\n): TranslateType {\n const translate = axis.scroll === 'x' ? x : y\n const containerStyle = container.style\n let previousTarget: number | null = null\n let disabled = false\n\n function x(n: number): string {\n return `translate3d(${n}px,0px,0px)`\n }\n\n function y(n: number): string {\n return `translate3d(0px,${n}px,0px)`\n }\n\n function to(target: number): void {\n if (disabled) return\n\n const newTarget = roundToTwoDecimals(axis.direction(target))\n if (newTarget === previousTarget) return\n\n containerStyle.transform = translate(newTarget)\n previousTarget = newTarget\n }\n\n function toggleActive(active: boolean): void {\n disabled = !active\n }\n\n function clear(): void {\n if (disabled) return\n containerStyle.transform = ''\n if (!container.getAttribute('style')) container.removeAttribute('style')\n }\n\n const self: TranslateType = {\n clear,\n to,\n toggleActive\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { arrayKeys } from './utils'\nimport { Vector1D, Vector1DType } from './Vector1d'\nimport { Translate, TranslateType } from './Translate'\n\ntype SlideBoundType = {\n start: number\n end: number\n}\n\ntype LoopPointType = {\n loopPoint: number\n index: number\n translate: TranslateType\n slideLocation: Vector1DType\n target: () => number\n}\n\nexport type SlideLooperType = {\n canLoop: () => boolean\n clear: () => void\n loop: () => void\n loopPoints: LoopPointType[]\n}\n\nexport function SlideLooper(\n axis: AxisType,\n viewSize: number,\n contentSize: number,\n slideSizes: number[],\n slideSizesWithGaps: number[],\n snaps: number[],\n scrollSnaps: number[],\n location: Vector1DType,\n slides: HTMLElement[]\n): SlideLooperType {\n const roundingSafety = 0.5\n const ascItems = arrayKeys(slideSizesWithGaps)\n const descItems = arrayKeys(slideSizesWithGaps).reverse()\n const loopPoints = startPoints().concat(endPoints())\n\n function removeSlideSizes(indexes: number[], from: number): number {\n return indexes.reduce((a: number, i) => {\n return a - slideSizesWithGaps[i]\n }, from)\n }\n\n function slidesInGap(indexes: number[], gap: number): number[] {\n return indexes.reduce((a: number[], i) => {\n const remainingGap = removeSlideSizes(a, gap)\n return remainingGap > 0 ? a.concat([i]) : a\n }, [])\n }\n\n function findSlideBounds(offset: number): SlideBoundType[] {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }))\n }\n\n function findLoopPoints(\n indexes: number[],\n offset: number,\n isEndEdge: boolean\n ): LoopPointType[] {\n const slideBounds = findSlideBounds(offset)\n\n return indexes.map((index) => {\n const initial = isEndEdge ? 0 : -contentSize\n const altered = isEndEdge ? contentSize : 0\n const boundEdge = isEndEdge ? 'end' : 'start'\n const loopPoint = slideBounds[index][boundEdge]\n\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => (location.get() > loopPoint ? initial : altered)\n }\n })\n }\n\n function startPoints(): LoopPointType[] {\n const gap = scrollSnaps[0]\n const indexes = slidesInGap(descItems, gap)\n return findLoopPoints(indexes, contentSize, false)\n }\n\n function endPoints(): LoopPointType[] {\n const gap = viewSize - scrollSnaps[0] - 1\n const indexes = slidesInGap(ascItems, gap)\n return findLoopPoints(indexes, -contentSize, true)\n }\n\n function canLoop(): boolean {\n return loopPoints.every(({ index }) => {\n const otherIndexes = ascItems.filter((i) => i !== index)\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1\n })\n }\n\n function loop(): void {\n loopPoints.forEach((loopPoint) => {\n const { target, translate, slideLocation } = loopPoint\n const shiftLocation = target()\n if (shiftLocation === slideLocation.get()) return\n translate.to(shiftLocation)\n slideLocation.set(shiftLocation)\n })\n }\n\n function clear(): void {\n loopPoints.forEach((loopPoint) => loopPoint.translate.clear())\n }\n\n const self: SlideLooperType = {\n canLoop,\n clear,\n loop,\n loopPoints\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { isBoolean } from './utils'\n\ntype SlidesHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n mutations: MutationRecord[]\n) => boolean | void\n\nexport type SlidesHandlerOptionType = boolean | SlidesHandlerCallbackType\n\nexport type SlidesHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n}\n\nexport function SlidesHandler(\n container: HTMLElement,\n eventHandler: EventHandlerType,\n watchSlides: SlidesHandlerOptionType\n): SlidesHandlerType {\n let mutationObserver: MutationObserver\n let destroyed = false\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchSlides) return\n\n function defaultCallback(mutations: MutationRecord[]): void {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit()\n eventHandler.emit('slidesChanged')\n break\n }\n }\n }\n\n mutationObserver = new MutationObserver((mutations) => {\n if (destroyed) return\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations)\n }\n })\n\n mutationObserver.observe(container, { childList: true })\n }\n\n function destroy(): void {\n if (mutationObserver) mutationObserver.disconnect()\n destroyed = true\n }\n\n const self: SlidesHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { EventHandlerType } from './EventHandler'\nimport { objectKeys } from './utils'\n\ntype IntersectionEntryMapType = {\n [key: number]: IntersectionObserverEntry\n}\n\nexport type SlidesInViewOptionsType = IntersectionObserverInit['threshold']\n\nexport type SlidesInViewType = {\n init: () => void\n destroy: () => void\n get: (inView?: boolean) => number[]\n}\n\nexport function SlidesInView(\n container: HTMLElement,\n slides: HTMLElement[],\n eventHandler: EventHandlerType,\n threshold: SlidesInViewOptionsType\n): SlidesInViewType {\n const intersectionEntryMap: IntersectionEntryMapType = {}\n let inViewCache: number[] | null = null\n let notInViewCache: number[] | null = null\n let intersectionObserver: IntersectionObserver\n let destroyed = false\n\n function init(): void {\n intersectionObserver = new IntersectionObserver(\n (entries) => {\n if (destroyed) return\n\n entries.forEach((entry) => {\n const index = slides.indexOf(<HTMLElement>entry.target)\n intersectionEntryMap[index] = entry\n })\n\n inViewCache = null\n notInViewCache = null\n eventHandler.emit('slidesInView')\n },\n {\n root: container.parentElement,\n threshold\n }\n )\n\n slides.forEach((slide) => intersectionObserver.observe(slide))\n }\n\n function destroy(): void {\n if (intersectionObserver) intersectionObserver.disconnect()\n destroyed = true\n }\n\n function createInViewList(inView: boolean): number[] {\n return objectKeys(intersectionEntryMap).reduce(\n (list: number[], slideIndex) => {\n const index = parseInt(slideIndex)\n const { isIntersecting } = intersectionEntryMap[index]\n const inViewMatch = inView && isIntersecting\n const notInViewMatch = !inView && !isIntersecting\n\n if (inViewMatch || notInViewMatch) list.push(index)\n return list\n },\n []\n )\n }\n\n function get(inView: boolean = true): number[] {\n if (inView && inViewCache) return inViewCache\n if (!inView && notInViewCache) return notInViewCache\n\n const slideIndexes = createInViewList(inView)\n\n if (inView) inViewCache = slideIndexes\n if (!inView) notInViewCache = slideIndexes\n\n return slideIndexes\n }\n\n const self: SlidesInViewType = {\n init,\n destroy,\n get\n }\n\n return self\n}\n","import { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport { arrayIsLastIndex, arrayLast, mathAbs, WindowType } from './utils'\n\nexport type SlideSizesType = {\n slideSizes: number[]\n slideSizesWithGaps: number[]\n startGap: number\n endGap: number\n}\n\nexport function SlideSizes(\n axis: AxisType,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n slides: HTMLElement[],\n readEdgeGap: boolean,\n ownerWindow: WindowType\n): SlideSizesType {\n const { measureSize, startEdge, endEdge } = axis\n const withEdgeGap = slideRects[0] && readEdgeGap\n const startGap = measureStartGap()\n const endGap = measureEndGap()\n const slideSizes = slideRects.map(measureSize)\n const slideSizesWithGaps = measureWithGaps()\n\n function measureStartGap(): number {\n if (!withEdgeGap) return 0\n const slideRect = slideRects[0]\n return mathAbs(containerRect[startEdge] - slideRect[startEdge])\n }\n\n function measureEndGap(): number {\n if (!withEdgeGap) return 0\n const style = ownerWindow.getComputedStyle(arrayLast(slides))\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`))\n }\n\n function measureWithGaps(): number[] {\n return slideRects\n .map((rect, index, rects) => {\n const isFirst = !index\n const isLast = arrayIsLastIndex(rects, index)\n if (isFirst) return slideSizes[index] + startGap\n if (isLast) return slideSizes[index] + endGap\n return rects[index + 1][startEdge] - rect[startEdge]\n })\n .map(mathAbs)\n }\n\n const self: SlideSizesType = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport {\n arrayKeys,\n arrayLast,\n arrayLastIndex,\n isNumber,\n mathAbs\n} from './utils'\n\nexport type SlidesToScrollOptionType = 'auto' | number\n\nexport type SlidesToScrollType = {\n groupSlides: <Type>(array: Type[]) => Type[][]\n}\n\nexport function SlidesToScroll(\n axis: AxisType,\n viewSize: number,\n slidesToScroll: SlidesToScrollOptionType,\n loop: boolean,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n startGap: number,\n endGap: number,\n pixelTolerance: number\n): SlidesToScrollType {\n const { startEdge, endEdge, direction } = axis\n const groupByNumber = isNumber(slidesToScroll)\n\n function byNumber<Type>(array: Type[], groupSize: number): Type[][] {\n return arrayKeys(array)\n .filter((i) => i % groupSize === 0)\n .map((i) => array.slice(i, i + groupSize))\n }\n\n function bySize<Type>(array: Type[]): Type[][] {\n if (!array.length) return []\n\n return arrayKeys(array)\n .reduce((groups: number[], rectB, index) => {\n const rectA = arrayLast(groups) || 0\n const isFirst = rectA === 0\n const isLast = rectB === arrayLastIndex(array)\n\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge]\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge]\n const gapA = !loop && isFirst ? direction(startGap) : 0\n const gapB = !loop && isLast ? direction(endGap) : 0\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA))\n\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB)\n if (isLast) groups.push(array.length)\n return groups\n }, [])\n .map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0)\n return array.slice(previousSize, currentSize)\n })\n }\n\n function groupSlides<Type>(array: Type[]): Type[][] {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array)\n }\n\n const self: SlidesToScrollType = {\n groupSlides\n }\n return self\n}\n","import { Alignment } from './Alignment'\nimport {\n Animations,\n AnimationsType,\n AnimationsUpdateType,\n AnimationsRenderType\n} from './Animations'\nimport { Axis, AxisType } from './Axis'\nimport { Counter, CounterType } from './Counter'\nimport { DragHandler, DragHandlerType } from './DragHandler'\nimport { DragTracker } from './DragTracker'\nimport { EventHandlerType } from './EventHandler'\nimport { EventStore, EventStoreType } from './EventStore'\nimport { LimitType } from './Limit'\nimport { NodeRectType, NodeRects } from './NodeRects'\nimport { OptionsType } from './Options'\nimport { PercentOfView, PercentOfViewType } from './PercentOfView'\nimport { ResizeHandler, ResizeHandlerType } from './ResizeHandler'\nimport { ScrollBody, ScrollBodyType } from './ScrollBody'\nimport { ScrollBounds, ScrollBoundsType } from './ScrollBounds'\nimport { ScrollContain } from './ScrollContain'\nimport { ScrollLimit } from './ScrollLimit'\nimport { ScrollLooper, ScrollLooperType } from './ScrollLooper'\nimport { ScrollProgress, ScrollProgressType } from './ScrollProgress'\nimport { ScrollSnaps } from './ScrollSnaps'\nimport { SlideRegistry, SlideRegistryType } from './SlideRegistry'\nimport { ScrollTarget, ScrollTargetType } from './ScrollTarget'\nimport { ScrollTo, ScrollToType } from './ScrollTo'\nimport { SlideFocus, SlideFocusType } from './SlideFocus'\nimport { SlideLooper, SlideLooperType } from './SlideLooper'\nimport { SlidesHandler, SlidesHandlerType } from './SlidesHandler'\nimport { SlidesInView, SlidesInViewType } from './SlidesInView'\nimport { SlideSizes } from './SlideSizes'\nimport { SlidesToScroll, SlidesToScrollType } from './SlidesToScroll'\nimport { Translate, TranslateType } from './Translate'\nimport { arrayKeys, arrayLast, arrayLastIndex, WindowType } from './utils'\nimport { Vector1D, Vector1DType } from './Vector1d'\n\nexport type EngineType = {\n ownerDocument: Document\n ownerWindow: WindowType\n eventHandler: EventHandlerType\n axis: AxisType\n animation: AnimationsType\n scrollBounds: ScrollBoundsType\n scrollLooper: ScrollLooperType\n scrollProgress: ScrollProgressType\n index: CounterType\n indexPrevious: CounterType\n limit: LimitType\n location: Vector1DType\n offsetLocation: Vector1DType\n previousLocation: Vector1DType\n options: OptionsType\n percentOfView: PercentOfViewType\n scrollBody: ScrollBodyType\n dragHandler: DragHandlerType\n eventStore: EventStoreType\n slideLooper: SlideLooperType\n slidesInView: SlidesInViewType\n slidesToScroll: SlidesToScrollType\n target: Vector1DType\n translate: TranslateType\n resizeHandler: ResizeHandlerType\n slidesHandler: SlidesHandlerType\n scrollTo: ScrollToType\n scrollTarget: ScrollTargetType\n scrollSnapList: number[]\n scrollSnaps: number[]\n slideIndexes: number[]\n slideFocus: SlideFocusType\n slideRegistry: SlideRegistryType['slideRegistry']\n containerRect: NodeRectType\n slideRects: NodeRectType[]\n}\n\nexport function Engine(\n root: HTMLElement,\n container: HTMLElement,\n slides: HTMLElement[],\n ownerDocument: Document,\n ownerWindow: WindowType,\n options: OptionsType,\n eventHandler: EventHandlerType\n): EngineType {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag,\n watchFocus\n } = options\n\n // Measurements\n const pixelTolerance = 2\n const nodeRects = NodeRects()\n const containerRect = nodeRects.measure(container)\n const slideRects = slides.map(nodeRects.measure)\n const axis = Axis(scrollAxis, direction)\n const viewSize = axis.measureSize(containerRect)\n const percentOfView = PercentOfView(viewSize)\n const alignment = Alignment(align, viewSize)\n const containSnaps = !loop && !!containScroll\n const readEdgeGap = loop || !!containScroll\n const { slideSizes, slideSizesWithGaps, startGap, endGap } = SlideSizes(\n axis,\n containerRect,\n slideRects,\n slides,\n readEdgeGap,\n ownerWindow\n )\n const slidesToScroll = SlidesToScroll(\n axis,\n viewSize,\n groupSlides,\n loop,\n containerRect,\n slideRects,\n startGap,\n endGap,\n pixelTolerance\n )\n const { snaps, snapsAligned } = ScrollSnaps(\n axis,\n alignment,\n containerRect,\n slideRects,\n slidesToScroll\n )\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps)\n const { snapsContained, scrollContainLimit } = ScrollContain(\n viewSize,\n contentSize,\n snapsAligned,\n containScroll,\n pixelTolerance\n )\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned\n const { limit } = ScrollLimit(contentSize, scrollSnaps, loop)\n\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop)\n const indexPrevious = index.clone()\n const slideIndexes = arrayKeys(slides)\n\n // Animation\n const update: AnimationsUpdateType = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: { loop }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown())\n scrollBody.seek()\n }\n\n const render: AnimationsRenderType = (\n {\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: { loop }\n },\n alpha\n ) => {\n const shouldSettle = scrollBody.settled()\n const withinBounds = !scrollBounds.shouldConstrain()\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown()\n\n if (hasSettledAndIdle) animation.stop()\n\n const interpolatedLocation =\n location.get() * alpha + previousLocation.get() * (1 - alpha)\n\n offsetLocation.set(interpolatedLocation)\n\n if (loop) {\n scrollLooper.loop(scrollBody.direction())\n slideLooper.loop()\n }\n\n translate.to(offsetLocation.get())\n\n if (hasSettledAndIdle) eventHandler.emit('settle')\n if (!hasSettled) eventHandler.emit('scroll')\n }\n\n const animation = Animations(\n ownerDocument,\n ownerWindow,\n () => update(engine),\n (alpha: number) => render(engine, alpha)\n )\n\n // Shared\n const friction = 0.68\n const startLocation = scrollSnaps[index.get()]\n const location = Vector1D(startLocation)\n const previousLocation = Vector1D(startLocation)\n const offsetLocation = Vector1D(startLocation)\n const target = Vector1D(startLocation)\n const scrollBody = ScrollBody(\n location,\n offsetLocation,\n previousLocation,\n target,\n duration,\n friction\n )\n const scrollTarget = ScrollTarget(\n loop,\n scrollSnaps,\n contentSize,\n limit,\n target\n )\n const scrollTo = ScrollTo(\n animation,\n index,\n indexPrevious,\n scrollBody,\n scrollTarget,\n target,\n eventHandler\n )\n const scrollProgress = ScrollProgress(limit)\n const eventStore = EventStore()\n const slidesInView = SlidesInView(\n container,\n slides,\n eventHandler,\n inViewThreshold\n )\n const { slideRegistry } = SlideRegistry(\n containSnaps,\n containScroll,\n scrollSnaps,\n scrollContainLimit,\n slidesToScroll,\n slideIndexes\n )\n const slideFocus = SlideFocus(\n root,\n slides,\n slideRegistry,\n scrollTo,\n scrollBody,\n eventStore,\n eventHandler,\n watchFocus\n )\n\n // Engine\n const engine: EngineType = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(\n axis,\n root,\n ownerDocument,\n ownerWindow,\n target,\n DragTracker(axis, ownerWindow),\n location,\n animation,\n scrollTo,\n scrollBody,\n scrollTarget,\n index,\n eventHandler,\n percentOfView,\n dragFree,\n dragThreshold,\n skipSnaps,\n friction,\n watchDrag\n ),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(\n container,\n eventHandler,\n ownerWindow,\n slides,\n axis,\n watchResize,\n nodeRects\n ),\n scrollBody,\n scrollBounds: ScrollBounds(\n limit,\n offsetLocation,\n target,\n scrollBody,\n percentOfView\n ),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [\n location,\n offsetLocation,\n previousLocation,\n target\n ]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(\n axis,\n viewSize,\n contentSize,\n slideSizes,\n slideSizesWithGaps,\n snaps,\n scrollSnaps,\n offsetLocation,\n slides\n ),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n }\n\n return engine\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\n\ntype CallbackType = (emblaApi: EmblaCarouselType, evt: EmblaEventType) => void\ntype ListenersType = Partial<{ [key in EmblaEventType]: CallbackType[] }>\n\nexport type EmblaEventType = EmblaEventListType[keyof EmblaEventListType]\n\nexport interface EmblaEventListType {\n init: 'init'\n pointerDown: 'pointerDown'\n pointerUp: 'pointerUp'\n slidesChanged: 'slidesChanged'\n slidesInView: 'slidesInView'\n scroll: 'scroll'\n select: 'select'\n settle: 'settle'\n destroy: 'destroy'\n reInit: 'reInit'\n resize: 'resize'\n slideFocusStart: 'slideFocusStart'\n slideFocus: 'slideFocus'\n}\n\nexport type EventHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n emit: (evt: EmblaEventType) => EventHandlerType\n on: (evt: EmblaEventType, cb: CallbackType) => EventHandlerType\n off: (evt: EmblaEventType, cb: CallbackType) => EventHandlerType\n clear: () => void\n}\n\nexport function EventHandler(): EventHandlerType {\n let listeners: ListenersType = {}\n let api: EmblaCarouselType\n\n function init(emblaApi: EmblaCarouselType): void {\n api = emblaApi\n }\n\n function getListeners(evt: EmblaEventType): CallbackType[] {\n return listeners[evt] || []\n }\n\n function emit(evt: EmblaEventType): EventHandlerType {\n getListeners(evt).forEach((e) => e(api, evt))\n return self\n }\n\n function on(evt: EmblaEventType, cb: CallbackType): EventHandlerType {\n listeners[evt] = getListeners(evt).concat([cb])\n return self\n }\n\n function off(evt: EmblaEventType, cb: CallbackType): EventHandlerType {\n listeners[evt] = getListeners(evt).filter((e) => e !== cb)\n return self\n }\n\n function clear(): void {\n listeners = {}\n }\n\n const self: EventHandlerType = {\n init,\n emit,\n off,\n on,\n clear\n }\n return self\n}\n","import { AlignmentOptionType } from './Alignment'\nimport { AxisDirectionOptionType, AxisOptionType } from './Axis'\nimport { SlidesToScrollOptionType } from './SlidesToScroll'\nimport { ScrollContainOptionType } from './ScrollContain'\nimport { DragHandlerOptionType } from './DragHandler'\nimport { ResizeHandlerOptionType } from './ResizeHandler'\nimport { SlidesHandlerOptionType } from './SlidesHandler'\nimport { SlidesInViewOptionsType } from './SlidesInView'\nimport { FocusHandlerOptionType } from './SlideFocus'\n\nexport type LooseOptionsType = {\n [key: string]: unknown\n}\n\nexport type CreateOptionsType<Type extends LooseOptionsType> = Type & {\n active: boolean\n breakpoints: {\n [key: string]: Omit<Partial<CreateOptionsType<Type>>, 'breakpoints'>\n }\n}\n\nexport type OptionsType = CreateOptionsType<{\n align: AlignmentOptionType\n axis: AxisOptionType\n container: string | HTMLElement | null\n slides: string | HTMLElement[] | NodeListOf<HTMLElement> | null\n containScroll: ScrollContainOptionType\n direction: AxisDirectionOptionType\n slidesToScroll: SlidesToScrollOptionType\n dragFree: boolean\n dragThreshold: number\n inViewThreshold: SlidesInViewOptionsType\n loop: boolean\n skipSnaps: boolean\n duration: number\n startIndex: number\n watchDrag: DragHandlerOptionType\n watchResize: ResizeHandlerOptionType\n watchSlides: SlidesHandlerOptionType\n watchFocus: FocusHandlerOptionType\n}>\n\nexport const defaultOptions: OptionsType = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true,\n watchFocus: true\n}\n\nexport type EmblaOptionsType = Partial<OptionsType>\n","import { LooseOptionsType, CreateOptionsType } from './Options'\nimport { objectKeys, objectsMergeDeep, WindowType } from './utils'\n\ntype OptionsType = Partial<CreateOptionsType<LooseOptionsType>>\n\nexport type OptionsHandlerType = {\n mergeOptions: <TypeA extends OptionsType, TypeB extends OptionsType>(\n optionsA: TypeA,\n optionsB?: TypeB\n ) => TypeA\n optionsAtMedia: <Type extends OptionsType>(options: Type) => Type\n optionsMediaQueries: (optionsList: OptionsType[]) => MediaQueryList[]\n}\n\nexport function OptionsHandler(ownerWindow: WindowType): OptionsHandlerType {\n function mergeOptions<TypeA extends OptionsType, TypeB extends OptionsType>(\n optionsA: TypeA,\n optionsB?: TypeB\n ): TypeA {\n return <TypeA>objectsMergeDeep(optionsA, optionsB || {})\n }\n\n function optionsAtMedia<Type extends OptionsType>(options: Type): Type {\n const optionsAtMedia = options.breakpoints || {}\n const matchedMediaOptions = objectKeys(optionsAtMedia)\n .filter((media) => ownerWindow.matchMedia(media).matches)\n .map((media) => optionsAtMedia[media])\n .reduce((a, mediaOption) => mergeOptions(a, mediaOption), {})\n\n return mergeOptions(options, matchedMediaOptions)\n }\n\n function optionsMediaQueries(optionsList: OptionsType[]): MediaQueryList[] {\n return optionsList\n .map((options) => objectKeys(options.breakpoints || {}))\n .reduce((acc, mediaQueries) => acc.concat(mediaQueries), [])\n .map(ownerWindow.matchMedia)\n }\n\n const self: OptionsHandlerType = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { OptionsHandlerType } from './OptionsHandler'\nimport { EmblaPluginsType, EmblaPluginType } from './Plugins'\n\nexport type PluginsHandlerType = {\n init: (\n emblaApi: EmblaCarouselType,\n plugins: EmblaPluginType[]\n ) => EmblaPluginsType\n destroy: () => void\n}\n\nexport function PluginsHandler(\n optionsHandler: OptionsHandlerType\n): PluginsHandlerType {\n let activePlugins: EmblaPluginType[] = []\n\n function init(\n emblaApi: EmblaCarouselType,\n plugins: EmblaPluginType[]\n ): EmblaPluginsType {\n activePlugins = plugins.filter(\n ({ options }) => optionsHandler.optionsAtMedia(options).active !== false\n )\n activePlugins.forEach((plugin) => plugin.init(emblaApi, optionsHandler))\n\n return plugins.reduce(\n (map, plugin) => Object.assign(map, { [plugin.name]: plugin }),\n {}\n )\n }\n\n function destroy(): void {\n activePlugins = activePlugins.filter((plugin) => plugin.destroy())\n }\n\n const self: PluginsHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { Engine, EngineType } from './Engine'\nimport { EventStore } from './EventStore'\nimport { EventHandler, EventHandlerType } from './EventHandler'\nimport { defaultOptions, EmblaOptionsType, OptionsType } from './Options'\nimport { OptionsHandler } from './OptionsHandler'\nimport { PluginsHandler } from './PluginsHandler'\nimport { EmblaPluginsType, EmblaPluginType } from './Plugins'\nimport { isString, WindowType } from './utils'\n\nexport type EmblaCarouselType = {\n canScrollNext: () => boolean\n canScrollPrev: () => boolean\n containerNode: () => HTMLElement\n internalEngine: () => EngineType\n destroy: () => void\n off: EventHandlerType['off']\n on: EventHandlerType['on']\n emit: EventHandlerType['emit']\n plugins: () => EmblaPluginsType\n previousScrollSnap: () => number\n reInit: (options?: EmblaOptionsType, plugins?: EmblaPluginType[]) => void\n rootNode: () => HTMLElement\n scrollNext: (jump?: boolean) => void\n scrollPrev: (jump?: boolean) => void\n scrollProgress: () => number\n scrollSnapList: () => number[]\n scrollTo: (index: number, jump?: boolean) => void\n selectedScrollSnap: () => number\n slideNodes: () => HTMLElement[]\n slidesInView: () => number[]\n slidesNotInView: () => number[]\n}\n\nfunction EmblaCarousel(\n root: HTMLElement,\n userOptions?: EmblaOptionsType,\n userPlugins?: EmblaPluginType[]\n): EmblaCarouselType {\n const ownerDocument = root.ownerDocument\n const ownerWindow = <WindowType>ownerDocument.defaultView\n const optionsHandler = OptionsHandler(ownerWindow)\n const pluginsHandler = PluginsHandler(optionsHandler)\n const mediaHandlers = EventStore()\n const eventHandler = EventHandler()\n const { mergeOptions, optionsAtMedia, optionsMediaQueries } = optionsHandler\n const { on, off, emit } = eventHandler\n const reInit = reActivate\n\n let destroyed = false\n let engine: EngineType\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions)\n let options = mergeOptions(optionsBase)\n let pluginList: EmblaPluginType[] = []\n let pluginApis: EmblaPluginsType\n\n let container: HTMLElement\n let slides: HTMLElement[]\n\n function storeElements(): void {\n const { container: userContainer, slides: userSlides } = options\n\n const customContainer = isString(userContainer)\n ? root.querySelector(userContainer)\n : userContainer\n container = <HTMLElement>(customContainer || root.children[0])\n\n const customSlides = isString(userSlides)\n ? container.querySelectorAll(userSlides)\n : userSlides\n slides = <HTMLElement[]>[].slice.call(customSlides || container.children)\n }\n\n function createEngine(options: OptionsType): EngineType {\n const engine = Engine(\n root,\n container,\n slides,\n ownerDocument,\n ownerWindow,\n options,\n eventHandler\n )\n\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, { loop: false })\n return createEngine(optionsWithoutLoop)\n }\n return engine\n }\n\n function activate(\n withOptions?: EmblaOptionsType,\n withPlugins?: EmblaPluginType[]\n ): void {\n if (destroyed) return\n\n optionsBase = mergeOptions(optionsBase, withOptions)\n options = optionsAtMedia(optionsBase)\n pluginList = withPlugins || pluginList\n\n storeElements()\n\n engine = createEngine(options)\n\n optionsMediaQueries([\n optionsBase,\n ...pluginList.map(({ options }) => options)\n ]).forEach((query) => mediaHandlers.add(query, 'change', reActivate))\n\n if (!options.active) return\n\n engine.translate.to(engine.location.get())\n engine.animation.init()\n engine.slidesInView.init()\n engine.slideFocus.init(self)\n engine.eventHandler.init(self)\n engine.resizeHandler.init(self)\n engine.slidesHandler.init(self)\n\n if (engine.options.loop) engine.slideLooper.loop()\n if (container.offsetParent && slides.length) engine.dragHandler.init(self)\n\n pluginApis = pluginsHandler.init(self, pluginList)\n }\n\n function reActivate(\n withOptions?: EmblaOptionsType,\n withPlugins?: EmblaPluginType[]\n ): void {\n const startIndex = selectedScrollSnap()\n deActivate()\n activate(mergeOptions({ startIndex }, withOptions), withPlugins)\n eventHandler.emit('reInit')\n }\n\n function deActivate(): void {\n engine.dragHandler.destroy()\n engine.eventStore.clear()\n engine.translate.clear()\n engine.slideLooper.clear()\n engine.resizeHandler.destroy()\n engine.slidesHandler.destroy()\n engine.slidesInView.destroy()\n engine.animation.destroy()\n pluginsHandler.destroy()\n mediaHandlers.clear()\n }\n\n function destroy(): void {\n if (destroyed) return\n destroyed = true\n mediaHandlers.clear()\n deActivate()\n eventHandler.emit('destroy')\n eventHandler.clear()\n }\n\n function scrollTo(index: number, jump?: boolean, direction?: number): void {\n if (!options.active || destroyed) return\n engine.scrollBody\n .useBaseFriction()\n .useDuration(jump === true ? 0 : options.duration)\n engine.scrollTo.index(index, direction || 0)\n }\n\n function scrollNext(jump?: boolean): void {\n const next = engine.index.add(1).get()\n scrollTo(next, jump, -1)\n }\n\n function scrollPrev(jump?: boolean): void {\n const prev = engine.index.add(-1).get()\n scrollTo(prev, jump, 1)\n }\n\n function canScrollNext(): boolean {\n const next = engine.index.add(1).get()\n return next !== selectedScrollSnap()\n }\n\n function canScrollPrev(): boolean {\n const prev = engine.index.add(-1).get()\n return prev !== selectedScrollSnap()\n }\n\n function scrollSnapList(): number[] {\n return engine.scrollSnapList\n }\n\n function scrollProgress(): number {\n return engine.scrollProgress.get(engine.offsetLocation.get())\n }\n\n function selectedScrollSnap(): number {\n return engine.index.get()\n }\n\n function previousScrollSnap(): number {\n return engine.indexPrevious.get()\n }\n\n function slidesInView(): number[] {\n return engine.slidesInView.get()\n }\n\n function slidesNotInView(): number[] {\n return engine.slidesInView.get(false)\n }\n\n function plugins(): EmblaPluginsType {\n return pluginApis\n }\n\n function internalEngine(): EngineType {\n return engine\n }\n\n function rootNode(): HTMLElement {\n return root\n }\n\n function containerNode(): HTMLElement {\n return container\n }\n\n function slideNodes(): HTMLElement[] {\n return slides\n }\n\n const self: EmblaCarouselType = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n }\n\n activate(userOptions, userPlugins)\n setTimeout(() => eventHandler.emit('init'), 0)\n return self\n}\n\ndeclare namespace EmblaCarousel {\n let globalOptions: EmblaOptionsType | undefined\n}\n\nEmblaCarousel.globalOptions = undefined\n\nexport default EmblaCarousel\n","'use client';\r\n\r\nimport useEmblaCarousel from 'embla-carousel-react';\r\nimport { uniqBy } from 'lodash-es';\r\nimport Image from 'next/image';\r\nimport { useGamesQuery } from '../../hooks/useGamesQuery/useGamesQuery';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { useTopWinsQuery } from '../../hooks/useTopWinsQuery/useTopWinsQuery';\r\nimport { formatNumber } from '../../utils/formatNumber';\r\nimport { getGameImageUrl } from '../../utils/getGameImageUrl';\r\n\r\nexport interface TopWinsProps {\r\n className?: string;\r\n}\r\n\r\nexport function TopWins(props: TopWinsProps) {\r\n const localeInfo = useLocaleInfo();\r\n const topWinsQuery = useTopWinsQuery();\r\n\r\n const ids = topWinsQuery.data?.length\r\n ? uniqBy(\r\n topWinsQuery.data.map((e) => e.game.id),\r\n 'game.id',\r\n )\r\n : [];\r\n\r\n const gamesQuery = useGamesQuery({\r\n filter: {\r\n reference: {\r\n in: ids,\r\n },\r\n },\r\n });\r\n\r\n const topWins = topWinsQuery.data?.map((topWin) => {\r\n const game = gamesQuery.data?.pages[0].edges.find(\r\n (e) => e.node.reference === topWin.game.id,\r\n )?.node;\r\n\r\n return {\r\n ...topWin,\r\n game,\r\n };\r\n });\r\n\r\n const [emblaRef] = useEmblaCarousel({\r\n dragFree: true,\r\n skipSnaps: true,\r\n });\r\n\r\n if (!topWins?.length) return null;\r\n\r\n return (\r\n <div className={props.className}>\r\n <div className=\"text-gray-600 mb-3 text-lg font-semibold md:mb-4\">Recent Big Wins</div>\r\n\r\n <div className=\"overflow-hidden\" ref={emblaRef}>\r\n <div className=\"flex gap-2.5\">\r\n {topWins.map((topWin, index) => (\r\n <div\r\n className=\"bg-accent-400 border-accent-800 flex w-[105px] shrink-0 flex-col space-y-2 rounded-sm border p-2 text-center\"\r\n key={index}\r\n >\r\n <div className=\"aspect-square w-full\">\r\n {topWin.game && (\r\n <Image\r\n width={100}\r\n height={100}\r\n src={getGameImageUrl(topWin.game)}\r\n alt=\"\"\r\n className=\"size-full rounded-sm border object-cover\"\r\n />\r\n )}\r\n </div>\r\n\r\n <div className=\"space-y-0.5\">\r\n <div className=\"text-gray-50 text-xs\">{topWin.member.name}</div>\r\n <div className=\"text-gray-50 text-sm font-semibold\">\r\n {formatNumber(topWin.payout, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </div>\r\n <div className=\"text-gray-50 text-xs\">\r\n {formatNumber(topWin.multiplier, {\r\n minDecimalPlaces: 2,\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import {\r\n type Game,\r\n type GamesInput,\r\n type PaginatedQueryResult,\r\n getGames,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useInfiniteQuery } from '@tanstack/react-query';\r\nimport { PLATFORM_ID, SITE_ID } from '../../constants';\r\nimport type { InfiniteQuery } from '../../types';\r\nimport { getGamesQueryKey } from './getGamesQueryKey';\r\n\r\nexport const useGamesQuery: InfiniteQuery<PaginatedQueryResult<Game>, GamesInput> = (\r\n input,\r\n config,\r\n) => {\r\n return useInfiniteQuery({\r\n ...config,\r\n queryKey: getGamesQueryKey(input),\r\n queryFn: ({ pageParam }) => {\r\n return getGames(\r\n { ...input, after: pageParam },\r\n {\r\n headers: {\r\n 'Site-ID': SITE_ID,\r\n 'Platform-ID': PLATFORM_ID,\r\n },\r\n },\r\n );\r\n },\r\n initialPageParam: undefined,\r\n getNextPageParam(lastPage) {\r\n if (lastPage?.pageInfo?.hasNextPage) {\r\n return lastPage?.pageInfo?.endCursor;\r\n }\r\n },\r\n });\r\n};\r\n","import type { GamesInput } from '@opexa/portal-sdk-core';\r\nimport type { QueryKey } from '@tanstack/react-query';\r\n\r\nexport const getGamesQueryKey = (input?: GamesInput): QueryKey => ['queries/games', input];\r\n","import { getTopWins, type TopWin } from '@opexa/portal-sdk-core';\r\nimport { useQuery } from '@tanstack/react-query';\r\nimport { PLATFORM_CODE } from '../../constants';\r\nimport type { Query } from '../../types';\r\nimport { getTopWinsQueryKey } from './getTopWinsQueryKey';\r\n\r\nexport const useTopWinsQuery: Query<TopWin[]> = (config) => {\r\n return useQuery({\r\n ...config,\r\n queryKey: getTopWinsQueryKey(),\r\n queryFn: async () => {\r\n return await getTopWins({\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n },\r\n });\r\n },\r\n });\r\n};\r\n","import type { QueryKey } from '@tanstack/react-query';\r\n\r\nexport const getTopWinsQueryKey = (): QueryKey => ['queries/topWins'];\r\n","import { z } from 'zod';\r\n\r\nconst definition = z\r\n .union([\r\n z.number(),\r\n z.string().transform((val) => {\r\n const parsed = parseFloat(val);\r\n return isNaN(parsed) ? null : parsed;\r\n }),\r\n ])\r\n .nullable()\r\n .optional()\r\n .default(null)\r\n .catch(null);\r\n\r\nexport function parseDecimal(value: unknown): number | null;\r\nexport function parseDecimal(value: unknown, fallback: number): number;\r\nexport function parseDecimal(value: unknown, fallback: number | null = null) {\r\n return definition.parse(value) ?? fallback;\r\n}\r\n","import { parseDecimal } from './parseDecimal';\r\n\r\ninterface FormatNumberConfig {\r\n /** @default \"en-US\" */\r\n locale?: string;\r\n compact?: boolean;\r\n currency?: string;\r\n /** @default 0 */\r\n minDecimalPlaces?: number;\r\n /** @default 2 */\r\n maxDecimalPlaces?: number;\r\n}\r\n\r\nconst defaultConfig = {\r\n locale: 'en-US',\r\n compact: false,\r\n minDecimalPlaces: 0,\r\n maxDecimalPlaces: 2,\r\n} satisfies FormatNumberConfig;\r\n\r\n/**\r\n * @example\r\n * ```ts\r\n * numberFormatter.format(1234567.89) // \"1,234,567.89\"\r\n * numberFormatter.format(1234567.89, { locale: 'de-DE' }) // \"1.234.567,89\"\r\n * numberFormatter.format(1234567.89, { compact: true }) // \"1M\"\r\n * numberFormatter.format(1234567.89, { currency: 'USD' }) // \"$1,234,567.89\"\r\n * ```\r\n */\r\nexport function formatNumber(value: unknown, config?: FormatNumberConfig) {\r\n const {\r\n /**/\r\n locale,\r\n compact,\r\n currency,\r\n minDecimalPlaces,\r\n maxDecimalPlaces,\r\n } = Object.assign({}, defaultConfig, config);\r\n\r\n const formatter = new Intl.NumberFormat(locale, {\r\n minimumFractionDigits: minDecimalPlaces,\r\n maximumFractionDigits: maxDecimalPlaces,\r\n\r\n ...(typeof currency === 'string'\r\n ? {\r\n style: 'currency',\r\n currency,\r\n }\r\n : {}),\r\n\r\n ...(compact\r\n ? {\r\n notation: 'compact',\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 0,\r\n }\r\n : {}),\r\n });\r\n\r\n return formatter.format(parseDecimal(value, 0));\r\n}\r\n","import type { Game } from '@opexa/portal-sdk-core';\r\nimport { ENVIRONMENT } from '../constants';\r\n\r\nconst GAME_IMAGE_URL =\r\n ENVIRONMENT === 'development'\r\n ? 'https://static.development.opexa.io/images'\r\n : 'https://static.opexa.io/images';\r\n\r\nexport const getGameImageUrl = (game: Game) => {\r\n return `${GAME_IMAGE_URL}/${game.provider.toLocaleLowerCase()}/thumbnail-${game.reference}.webp?cache_id=00000001`;\r\n};\r\n"],"mappings":"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;AAC/C,QAAM1O,iBAAiBmI,SAASuG,aAAa;AAC7C,QAAMxW,SAASiQ,SAASuG,aAAa;AACrC,QAAMnW,aAAawH,WACjB3H,UACA4H,gBACAC,kBACA/H,QACA4I,UACAjE,QAAQ;AAEV,QAAMrE,eAAeiN,aACnBhO,MACAgM,aACAzB,aACAb,OACAjJ,MAAM;AAER,QAAMI,WAAWsO,SACfvO,WACAzG,OACAkV,eACAvO,YACAC,cACAN,QACAO,YAAY;AAEd,QAAMkW,iBAAiB3K,eAAe7C,KAAK;AAC3C,QAAMiG,aAAazT,WAAU;AAC7B,QAAMib,eAAevD,aACnB9M,WACAC,QACA/F,cACAuV,eAAe;AAEjB,QAAM;IAAE9I;EAAa,IAAKH,cACxBC,cACA9C,eACAuB,aACAlB,oBACA8B,gBACAY,YAAY;AAEd,QAAM4J,aAAa3H,WACjBC,OACA3I,QACA0G,eACA5M,UACAC,YACA6O,YACA3O,cACA4O,UAAU;AAIZ,QAAMoH,SAAqB;IACzB5Z;IACA7B;IACAyF;IACA0L;IACAC;IACA/L;IACApC;IACAgY,aAAajW,YACX/B,MACAkR,OACAtS,eACA7B,aACAkF,QACA6E,YAAY9G,MAAMjD,WAAW,GAC7BoF,UACAC,WACAC,UACAC,YACAC,cACA5G,OACA6G,cACAC,eACAC,UACAC,eACAC,WACAgE,UACA9D,SAAS;IAEXqO;IACA1O;IACA9G;IACAkV;IACA3F;IACA/I;IACA4H;IACAC;IACAhM;IACA6a,eAAexQ,cACbC,WACA9F,cACAzF,aACAwL,QACAvI,MACAwI,aACAC,SAAS;IAEXnG;IACA6J,cAAclB,aACZC,OACAnB,gBACA9H,QACAK,YACAG,aAAa;IAEfwV,cAAcxK,aAAa1B,aAAab,OAAOnB,gBAAgB,CAC7D5H,UACA4H,gBACAC,kBACA/H,MAAM,CACP;IACDyW;IACAI,gBAAgBtL,YAAYpS,IAAIsd,eAAe9W,GAAG;IAClD4L;IACAjL;IACAF;IACA6V,aAAahF,YACXlT,MACA7C,UACA4O,aACAjD,YACAqK,oBACA3E,OACAhB,aACAzD,gBACAxB,MAAM;IAERqQ;IACAG,eAAe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","names":["exports","module","FUNC_ERROR_TEXT","NAN","symbolTag","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","root","objectProto","objectToString","debounce","toNumber","isObject","result","isObjectLike","isSymbol","useRef","Symbol","objectProto","nativeObjectToString","symToStringTag","funcProto","objectProto","funcToString","hasOwnProperty","MAX_SAFE_INTEGER","objectProto","objectProto","hasOwnProperty","argsTag","funcTag","freeExports","freeModule","moduleExports","objectProto","hasOwnProperty","objectProto","hasOwnProperty","objectProto","hasOwnProperty","objectProto","hasOwnProperty","HASH_UNDEFINED","Map","INFINITY","objectProto","propertyIsEnumerable","Promise","Set","mapTag","objectTag","setTag","weakMapTag","dataViewTag","HASH_UNDEFINED","othValue","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","stringTag","symbolTag","arrayBufferTag","dataViewTag","symbolProto","COMPARE_PARTIAL_FLAG","objectProto","hasOwnProperty","COMPARE_PARTIAL_FLAG","argsTag","arrayTag","objectTag","objectProto","hasOwnProperty","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","INFINITY","LARGE_ARRAY_SIZE","React","identity","React","get","useRef","CLASS_PART_SEPARATOR","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","classParts","split","length","shift","getGroupRecursive","getGroupIdForArbitraryProperty","getConflictingClassGroupIds","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","nextPart","get","classGroupFromNextClassPart","slice","undefined","validators","classRest","join","find","validator","arbitraryPropertyRegex","test","arbitraryPropertyClassName","exec","property","substring","indexOf","theme","classGroups","Map","processClassesRecursively","classGroup","forEach","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","Object","entries","key","path","currentClassPartObject","pathPart","has","set","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","value","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","MODIFIER_SEPARATOR_LENGTH","createParseClassName","prefix","experimentalParseClassName","parseClassName","modifiers","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","startsWith","isExternal","endsWith","createSortModifiers","orderSensitiveModifiers","fromEntries","map","modifier","sortModifiers","sortedModifiers","unsortedModifiers","isPositionSensitive","sort","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","classGroupsInConflict","classNames","trim","result","originalClassName","variantModifier","modifierId","classId","includes","conflictGroups","i","group","twJoin","argument","resolvedValue","string","arguments","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","reduce","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","callTailwindMerge","apply","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","Number","isNaN","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","fromTheme","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","isArbitraryVariable","isArbitraryValue","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","isFraction","scaleGridTemplateColsRows","isInteger","scaleGridColRowStartAndEnd","span","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","isArbitraryVariablePosition","isArbitraryPosition","position","scaleBgRepeat","repeat","scaleBgSize","isArbitraryVariableSize","isArbitrarySize","size","scaleGradientStopPosition","isPercent","isArbitraryVariableLength","isArbitraryLength","scaleRadius","scaleBorderWidth","isNumber","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","cacheSize","theme","animate","aspect","blur","isTshirtSize","breakpoint","color","isAny","container","ease","font","isAnyNonArbitrary","leading","perspective","radius","shadow","spacing","text","tracking","classGroups","columns","box","display","sr","float","clear","isolation","object","overflow","overscroll","inset","start","end","top","right","bottom","left","visibility","z","basis","flex","grow","shrink","order","col","row","gap","justify","content","items","baseline","self","p","px","py","ps","pe","pt","pr","pb","pl","m","mx","my","ms","me","mt","mr","mb","ml","w","screen","h","isArbitraryNumber","isArbitraryVariableFamilyName","list","placeholder","decoration","indent","align","whitespace","break","wrap","hyphens","bg","linear","to","radial","conic","isArbitraryVariableImage","isArbitraryImage","from","via","rounded","border","divide","outline","isArbitraryVariableShadow","isArbitraryShadow","ring","opacity","mask","closest","farthest","filter","brightness","contrast","grayscale","invert","saturate","sepia","table","caption","transition","duration","delay","backface","rotate","scale","skew","transform","origin","translate","accent","appearance","caret","scheme","cursor","resize","scroll","snap","touch","select","fill","stroke","conflictingClassGroups","conflictingClassGroupModifiers","orderSensitiveModifiers","twMerge","createTailwindMerge","getDefaultConfig","Dialog","Portal","Image","useState","useQuery","useQuery","useMutation","useMutation","useState","Dialog","Portal","Image","Dialog","Portal","Image","Checkbox","Field","PinInput","useDialogContext","zodResolver","useState","Controller","useForm","z","useMutation","useMutation","useState","useDialogContext","z","useForm","zodResolver","Field","Controller","Checkbox","PinInput","Dialog","Portal","Image","isObject","subject","Object","prototype","toString","call","isRecord","Array","isArray","canUseDOM","window","document","createElement","areOptionsEqual","optionsA","optionsB","optionsAKeys","keys","optionsBKeys","length","breakpointsA","JSON","stringify","breakpoints","breakpointsB","every","key","valueA","valueB","sortAndMapPluginToOptions","plugins","concat","sort","a","b","name","map","plugin","options","arePluginsEqual","pluginsA","pluginsB","optionA","index","optionB","isNumber","subject","isString","isBoolean","isObject","Object","prototype","toString","call","mathAbs","n","Math","abs","mathSign","sign","deltaAbs","valueB","valueA","factorAbs","diff","roundToTwoDecimals","num","round","arrayKeys","array","objectKeys","map","Number","arrayLast","arrayLastIndex","max","length","arrayIsLastIndex","index","arrayFromNumber","startAt","Array","from","_","i","object","keys","objectsMergeDeep","objectA","objectB","reduce","mergedObjects","currentObject","forEach","key","areObjects","isMouseEvent","evt","ownerWindow","MouseEvent","Alignment","align","viewSize","predefined","start","center","end","measure","self","EventStore","listeners","add","node","type","handler","options","passive","removeListener","addEventListener","removeEventListener","legacyMediaQueryList","addListener","push","clear","filter","remove","Animations","ownerDocument","update","render","documentVisibleHandler","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","init","hidden","reset","destroy","stop","animate","timeStamp","timeElapsed","alpha","requestAnimationFrame","cancelAnimationFrame","Axis","axis","contentDirection","isRightToLeft","isVertical","scroll","cross","startEdge","getStartEdge","endEdge","getEndEdge","measureSize","nodeRect","height","width","direction","Limit","min","reachedMin","reachedMax","reachedAny","constrain","removeOffset","ceil","Counter","loop","loopEnd","counter","withinLimit","get","set","clone","DragHandler","rootNode","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","crossAxis","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","snapForceBoost","mouse","touch","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","emblaApi","downIfAllowed","down","preventDefault","undefined","up","click","addDragEvents","move","isFocusNode","nodeName","includes","forceBoost","boost","allowedForce","force","targetChanged","next","baseForce","byDistance","distance","byIndex","isMouseEvt","buttons","button","pointerDown","useFriction","useDuration","readPoint","emit","isTouchEvt","touches","lastScroll","lastCross","diffScroll","diffCross","cancelable","pointerMove","currentLocation","rawForce","pointerUp","forceFactor","speed","friction","stopPropagation","DragTracker","logInterval","startEvent","lastEvent","readTime","evtAxis","property","coord","expired","diffDrag","diffTime","isFlick","NodeRects","offsetTop","offsetLeft","offsetWidth","offsetHeight","offset","top","right","bottom","left","PercentOfView","ResizeHandler","container","slides","watchResize","nodeRects","observeNodes","concat","resizeObserver","containerSize","slideSizes","destroyed","readSize","defaultCallback","entries","entry","isContainer","slideIndex","indexOf","lastSize","newSize","diffSize","reInit","ResizeObserver","observe","disconnect","ScrollBody","offsetLocation","previousLocation","baseDuration","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","seek","displacement","isInstant","scrollDistance","settled","duration","velocity","useBaseDuration","useBaseFriction","ScrollBounds","limit","pullBackThreshold","edgeOffsetTolerance","frictionLimit","disabled","shouldConstrain","edge","diffToEdge","diffToTarget","subtract","toggleActive","active","ScrollContain","contentSize","snapsAligned","containScroll","pixelTolerance","scrollBounds","snapsBounded","measureBounded","scrollContainLimit","findScrollContainLimit","snapsContained","measureContained","usePixelTolerance","bound","snap","startSnap","endSnap","lastIndexOf","snapAligned","isFirst","isLast","scrollBound","parseFloat","toFixed","slice","ScrollLimit","scrollSnaps","ScrollLooper","vectors","jointSafety","shouldLoop","loopDistance","v","ScrollProgress","ScrollSnaps","alignment","containerRect","slideRects","slidesToScroll","groupSlides","alignments","measureSizes","snaps","measureUnaligned","measureAligned","rects","rect","g","SlideRegistry","containSnaps","slideIndexes","slideRegistry","createSlideRegistry","groupedSlideIndexes","doNotContain","group","groups","range","ScrollTarget","targetVector","minDistance","distances","sort","a","b","findTargetSnap","ascDiffsToSnaps","shortcut","d1","d2","targets","matchingTargets","t","diffToSnap","targetSnapDistance","reachedBound","snapDistance","ScrollTo","indexCurrent","indexPrevious","distanceDiff","indexDiff","targetIndex","SlideFocus","root","eventStore","watchFocus","focusListenerOptions","capture","lastTabPressTime","nowTime","Date","getTime","scrollLeft","findIndex","document","registerTabPress","slide","event","code","Vector1D","initialValue","value","normalizeInput","Translate","translate","x","y","containerStyle","style","previousTarget","to","newTarget","transform","getAttribute","removeAttribute","SlideLooper","slideSizesWithGaps","roundingSafety","ascItems","descItems","reverse","loopPoints","startPoints","endPoints","removeSlideSizes","indexes","slidesInGap","gap","remainingGap","findSlideBounds","findLoopPoints","isEndEdge","slideBounds","initial","altered","boundEdge","loopPoint","slideLocation","canLoop","every","otherIndexes","shiftLocation","SlidesHandler","watchSlides","mutationObserver","mutations","mutation","MutationObserver","childList","SlidesInView","threshold","intersectionEntryMap","inViewCache","notInViewCache","intersectionObserver","IntersectionObserver","parentElement","createInViewList","inView","list","parseInt","isIntersecting","inViewMatch","notInViewMatch","SlideSizes","readEdgeGap","withEdgeGap","startGap","measureStartGap","endGap","measureEndGap","measureWithGaps","slideRect","getComputedStyle","getPropertyValue","SlidesToScroll","groupByNumber","byNumber","groupSize","bySize","rectB","rectA","edgeA","edgeB","gapA","gapB","chunkSize","currentSize","previousSize","Engine","scrollAxis","startIndex","inViewThreshold","dragHandler","scrollLooper","slideLooper","shouldSettle","withinBounds","hasSettled","hasSettledAndIdle","interpolatedLocation","engine","startLocation","scrollProgress","slidesInView","slideFocus","resizeHandler","scrollSnapList","slidesHandler","EventHandler","api","getListeners","e","on","cb","off","defaultOptions","breakpoints","OptionsHandler","mergeOptions","optionsA","optionsB","optionsAtMedia","matchedMediaOptions","media","matchMedia","matches","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","PluginsHandler","optionsHandler","activePlugins","plugins","plugin","assign","name","EmblaCarousel","userOptions","userPlugins","defaultView","pluginsHandler","mediaHandlers","reActivate","optionsBase","globalOptions","pluginList","pluginApis","storeElements","userContainer","userSlides","customContainer","querySelector","children","customSlides","querySelectorAll","createEngine","optionsWithoutLoop","activate","withOptions","withPlugins","query","offsetParent","selectedScrollSnap","deActivate","jump","scrollNext","scrollPrev","prev","canScrollNext","canScrollPrev","previousScrollSnap","slidesNotInView","internalEngine","containerNode","slideNodes","setTimeout","useEmblaCarousel","options","plugins","storedOptions","useRef","storedPlugins","emblaApi","setEmblaApi","useState","viewport","setViewport","reInit","useCallback","current","useEffect","areOptionsEqual","arePluginsEqual","canUseDOM","EmblaCarousel","globalOptions","newEmblaApi","destroy","undefined","Image","useQuery","useQuery","z","_a","_b","Image"]}