@epic-web/workshop-app 4.20.1 → 4.21.0
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.
- package/build/client/assets/{_-Dfo2h4rl.js → _-DbrWZazo.js} +2 -2
- package/build/client/assets/_-DbrWZazo.js.map +1 -0
- package/build/client/assets/_exerciseNumber-Cq0nozYz.js +2 -0
- package/build/client/assets/_exerciseNumber-Cq0nozYz.js.map +1 -0
- package/build/client/assets/{_exerciseNumber_._stepNumber-DpAxO0AM.js → _exerciseNumber_._stepNumber-B5pmJ29o.js} +2 -2
- package/build/client/assets/_exerciseNumber_._stepNumber-B5pmJ29o.js.map +1 -0
- package/build/client/assets/{_exerciseNumber_.finished-czQBjiVF.js → _exerciseNumber_.finished-Q9qnPuZX.js} +2 -2
- package/build/client/assets/_exerciseNumber_.finished-Q9qnPuZX.js.map +1 -0
- package/build/client/assets/{_layout-IOROGN78.js → _layout-AgYGL72C.js} +2 -2
- package/build/client/assets/_layout-AgYGL72C.js.map +1 -0
- package/build/client/assets/_layout-BUs3av-e.js.map +1 -1
- package/build/client/assets/{_layout-BrGbNrqb.js → _layout-C8uU4Hwj.js} +2 -2
- package/build/client/assets/{_layout-BrGbNrqb.js.map → _layout-C8uU4Hwj.js.map} +1 -1
- package/build/client/assets/_layout-DLVrpOki.js +2 -0
- package/build/client/assets/_layout-DLVrpOki.js.map +1 -0
- package/build/client/assets/accordion-BroSqIct.js +2 -0
- package/build/client/assets/accordion-BroSqIct.js.map +1 -0
- package/build/client/assets/{account-CQNVYlpT.js → account-7o6O4ruO.js} +2 -2
- package/build/client/assets/{account-CQNVYlpT.js.map → account-7o6O4ruO.js.map} +1 -1
- package/build/client/assets/app-BiWJY58g.js +2 -0
- package/build/client/assets/app-BiWJY58g.js.map +1 -0
- package/build/client/assets/{button-DcWUKEqR.js → button-BklqyTPS.js} +2 -2
- package/build/client/assets/{button-DcWUKEqR.js.map → button-BklqyTPS.js.map} +1 -1
- package/build/client/assets/{client-hints-DWL_Mq1C.js → client-hints-DNUUFGmB.js} +2 -2
- package/build/client/assets/{client-hints-DWL_Mq1C.js.map → client-hints-DNUUFGmB.js.map} +1 -1
- package/build/client/assets/{components-C17zb3Us.js → components-CME-nGId.js} +2 -2
- package/build/client/assets/{components-C17zb3Us.js.map → components-CME-nGId.js.map} +1 -1
- package/build/client/assets/diff-CpFxuKA2.js +2 -0
- package/build/client/assets/diff-CpFxuKA2.js.map +1 -0
- package/build/client/assets/diff-Cw8ktQ1-.js +2 -0
- package/build/client/assets/{diff-DBQZWFaQ.js.map → diff-Cw8ktQ1-.js.map} +1 -1
- package/build/client/assets/discord-CHP4_JLJ.js +2 -0
- package/build/client/assets/discord-CHP4_JLJ.js.map +1 -0
- package/build/client/assets/{discord-CBGQw7I4.js → discord-Dq4e30wV.js} +2 -2
- package/build/client/assets/{discord-CBGQw7I4.js.map → discord-Dq4e30wV.js.map} +1 -1
- package/build/client/assets/{entry.client-C1yl0iQe.js → entry.client-3M2p-8I3.js} +2 -2
- package/build/client/assets/{entry.client-C1yl0iQe.js.map → entry.client-3M2p-8I3.js.map} +1 -1
- package/build/client/assets/{epic-video-DGVKtAan.js → epic-video-iluUs1-s.js} +2 -2
- package/build/client/assets/{epic-video-DGVKtAan.js.map → epic-video-iluUs1-s.js.map} +1 -1
- package/build/client/assets/{error-boundary-yAXgvsPR.js → error-boundary-DDTvdkB4.js} +2 -2
- package/build/client/assets/{error-boundary-yAXgvsPR.js.map → error-boundary-DDTvdkB4.js.map} +1 -1
- package/build/client/assets/{finished-DQ70NSmN.js → finished-Bm-bCUU2.js} +2 -2
- package/build/client/assets/{finished-DQ70NSmN.js.map → finished-Bm-bCUU2.js.map} +1 -1
- package/build/client/assets/{index-B9w5akmN.js → index-B-hHvmeV.js} +2 -2
- package/build/client/assets/{index-B9w5akmN.js.map → index-B-hHvmeV.js.map} +1 -1
- package/build/client/assets/{index-Dc-1lfub.js → index-BATSX33w.js} +2 -2
- package/build/client/assets/{index-Dc-1lfub.js.map → index-BATSX33w.js.map} +1 -1
- package/build/client/assets/{index-DC4pM5aW.js → index-BXWoOGxB.js} +4 -4
- package/build/client/assets/{index-DC4pM5aW.js.map → index-BXWoOGxB.js.map} +1 -1
- package/build/client/assets/index-Dm1ll1kT.js +2 -0
- package/build/client/assets/index-Dm1ll1kT.js.map +1 -0
- package/build/client/assets/{index-yQg0GLtS.js → index-Tfdnz1AB.js} +2 -2
- package/build/client/assets/{index-yQg0GLtS.js.map → index-Tfdnz1AB.js.map} +1 -1
- package/build/client/assets/index-hogig2HK.js +2 -0
- package/build/client/assets/index-hogig2HK.js.map +1 -0
- package/build/client/assets/{loading-C4Cc1EBG.js → loading-C5uX0jJw.js} +2 -2
- package/build/client/assets/{loading-C4Cc1EBG.js.map → loading-C5uX0jJw.js.map} +1 -1
- package/build/client/assets/{login-Bimq6Ilz.js → login-4cvVFzF8.js} +2 -2
- package/build/client/assets/{login-Bimq6Ilz.js.map → login-4cvVFzF8.js.map} +1 -1
- package/build/client/assets/manifest-746b2907.js +1 -0
- package/build/client/assets/{mdx-Cb7iYGhg.js → mdx-M0kcP-mP.js} +2 -2
- package/build/client/assets/{mdx-Cb7iYGhg.js.map → mdx-M0kcP-mP.js.map} +1 -1
- package/build/client/assets/{misc-Bt-_bj1O.js → misc-ENVX3CWf.js} +2 -2
- package/build/client/assets/{misc-Bt-_bj1O.js.map → misc-ENVX3CWf.js.map} +1 -1
- package/build/client/assets/{nav-chevrons-DIhkJv4W.js → nav-chevrons-B82nbdyj.js} +2 -2
- package/build/client/assets/{nav-chevrons-DIhkJv4W.js.map → nav-chevrons-B82nbdyj.js.map} +1 -1
- package/build/client/assets/{onboarding-CU7IWhDE.js → onboarding-Bib-wh6d.js} +2 -2
- package/build/client/assets/{onboarding-CU7IWhDE.js.map → onboarding-Bib-wh6d.js.map} +1 -1
- package/build/client/assets/presence-Cr--lRCr.js +28 -0
- package/build/client/assets/{presence-DgSzsRAv.js.map → presence-Cr--lRCr.js.map} +1 -1
- package/build/client/assets/preview-CqrRe2BV.js +2 -0
- package/build/client/assets/preview-CqrRe2BV.js.map +1 -0
- package/build/client/assets/{progress-C1WSMZl4.js → progress-BsY6hGPp.js} +2 -2
- package/build/client/assets/{progress-C1WSMZl4.js.map → progress-BsY6hGPp.js.map} +1 -1
- package/build/client/assets/{progress-bar-DMef_aq8.js → progress-bar-CSvo1ZXP.js} +2 -2
- package/build/client/assets/{progress-bar-DMef_aq8.js.map → progress-bar-CSvo1ZXP.js.map} +1 -1
- package/build/client/assets/{request-info-DU15ezmn.js → request-info-CEhUGODY.js} +2 -2
- package/build/client/assets/{request-info-DU15ezmn.js.map → request-info-CEhUGODY.js.map} +1 -1
- package/build/client/assets/{root-CX2PgcP9.js → root-Tcnfz99O.js} +3 -3
- package/build/client/assets/{root-CX2PgcP9.js.map → root-Tcnfz99O.js.map} +1 -1
- package/build/client/assets/set-playground-Cdy8VlVD.js +2 -0
- package/build/client/assets/set-playground-Cdy8VlVD.js.map +1 -0
- package/build/client/assets/{support-D6UIcaNu.js → support-hcqGIpir.js} +2 -2
- package/build/client/assets/{support-D6UIcaNu.js.map → support-hcqGIpir.js.map} +1 -1
- package/build/client/assets/tailwind-DTowOebn.css +1 -0
- package/build/client/assets/test-D9HsTvpe.js +2 -0
- package/build/client/assets/test-D9HsTvpe.js.map +1 -0
- package/build/client/assets/tests-CmNNBElK.js +4 -0
- package/build/client/assets/tests-CmNNBElK.js.map +1 -0
- package/build/client/assets/{tooltip-Cqh5cQvd.js → tooltip-BiHTe_7F.js} +2 -2
- package/build/client/assets/{tooltip-Cqh5cQvd.js.map → tooltip-BiHTe_7F.js.map} +1 -1
- package/build/client/assets/{user-MNzkRgJ3.js → user-D6tTg1yS.js} +2 -2
- package/build/client/assets/{user-MNzkRgJ3.js.map → user-D6tTg1yS.js.map} +1 -1
- package/build/client/icons.svg +1 -1
- package/build/server/index.js +6144 -5873
- package/build/server/index.js.map +1 -1
- package/package.json +3 -3
- package/build/client/assets/_-Dfo2h4rl.js.map +0 -1
- package/build/client/assets/_exerciseNumber-CfKoF9W0.js +0 -2
- package/build/client/assets/_exerciseNumber-CfKoF9W0.js.map +0 -1
- package/build/client/assets/_exerciseNumber_._stepNumber-DpAxO0AM.js.map +0 -1
- package/build/client/assets/_exerciseNumber_.finished-czQBjiVF.js.map +0 -1
- package/build/client/assets/_layout-DBCEqk3b.js +0 -4
- package/build/client/assets/_layout-DBCEqk3b.js.map +0 -1
- package/build/client/assets/_layout-IOROGN78.js.map +0 -1
- package/build/client/assets/diff-CCCucBoq.js +0 -2
- package/build/client/assets/diff-CCCucBoq.js.map +0 -1
- package/build/client/assets/diff-DBQZWFaQ.js +0 -2
- package/build/client/assets/discord-CULpXzAC.js +0 -2
- package/build/client/assets/discord-CULpXzAC.js.map +0 -1
- package/build/client/assets/manifest-8371b608.js +0 -1
- package/build/client/assets/presence-DgSzsRAv.js +0 -28
- package/build/client/assets/tailwind-BZciDTNv.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-hogig2HK.js","sources":["../../../../../node_modules/@radix-ui/number/dist/index.mjs","../../../../../node_modules/@radix-ui/react-collection/dist/index.mjs","../../../../../node_modules/@radix-ui/react-direction/dist/index.mjs","../../../../../node_modules/@radix-ui/react-use-previous/dist/index.mjs","../../../../../node_modules/@radix-ui/react-select/dist/index.mjs"],"sourcesContent":["// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\nexport {\n clamp\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/collection/src/Collection.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(Slot, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(Slot, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\nexport {\n createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/Direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-previous/src/usePrevious.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/select/src/Select.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar OPEN_KEYS = [\" \", \"Enter\", \"ArrowUp\", \"ArrowDown\"];\nvar SELECTION_KEYS = [\" \", \"Enter\"];\nvar SELECT_NAME = \"Select\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME);\nvar [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [\n createCollectionScope,\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME);\nvar [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);\nvar Select = (props) => {\n const {\n __scopeSelect,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n value: valueProp,\n defaultValue,\n onValueChange,\n dir,\n name,\n autoComplete,\n disabled,\n required\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const [trigger, setTrigger] = React.useState(null);\n const [valueNode, setValueNode] = React.useState(null);\n const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false);\n const direction = useDirection(dir);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange\n });\n const triggerPointerDownPosRef = React.useRef(null);\n const isFormControl = trigger ? Boolean(trigger.closest(\"form\")) : true;\n const [nativeOptionsSet, setNativeOptionsSet] = React.useState(/* @__PURE__ */ new Set());\n const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(\";\");\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsxs(\n SelectProvider,\n {\n required,\n scope: __scopeSelect,\n trigger,\n onTriggerChange: setTrigger,\n valueNode,\n onValueNodeChange: setValueNode,\n valueNodeHasChildren,\n onValueNodeHasChildrenChange: setValueNodeHasChildren,\n contentId: useId(),\n value,\n onValueChange: setValue,\n open,\n onOpenChange: setOpen,\n dir: direction,\n triggerPointerDownPosRef,\n disabled,\n children: [\n /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n SelectNativeOptionsProvider,\n {\n scope: props.__scopeSelect,\n onNativeOptionAdd: React.useCallback((option) => {\n setNativeOptionsSet((prev) => new Set(prev).add(option));\n }, []),\n onNativeOptionRemove: React.useCallback((option) => {\n setNativeOptionsSet((prev) => {\n const optionsSet = new Set(prev);\n optionsSet.delete(option);\n return optionsSet;\n });\n }, []),\n children\n }\n ) }),\n isFormControl ? /* @__PURE__ */ jsxs(\n BubbleSelect,\n {\n \"aria-hidden\": true,\n required,\n tabIndex: -1,\n name,\n autoComplete,\n value,\n onChange: (event) => setValue(event.target.value),\n disabled,\n children: [\n value === void 0 ? /* @__PURE__ */ jsx(\"option\", { value: \"\" }) : null,\n Array.from(nativeOptionsSet)\n ]\n },\n nativeSelectKey\n ) : null\n ]\n }\n ) });\n};\nSelect.displayName = SELECT_NAME;\nvar TRIGGER_NAME = \"SelectTrigger\";\nvar SelectTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, disabled = false, ...triggerProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(TRIGGER_NAME, __scopeSelect);\n const isDisabled = context.disabled || disabled;\n const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange);\n const getItems = useCollection(__scopeSelect);\n const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.value === context.value);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem !== void 0) {\n context.onValueChange(nextItem.value);\n }\n });\n const handleOpen = () => {\n if (!isDisabled) {\n context.onOpenChange(true);\n resetTypeahead();\n }\n };\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"combobox\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open,\n \"aria-required\": context.required,\n \"aria-autocomplete\": \"none\",\n dir: context.dir,\n \"data-state\": context.open ? \"open\" : \"closed\",\n disabled: isDisabled,\n \"data-disabled\": isDisabled ? \"\" : void 0,\n \"data-placeholder\": shouldShowPlaceholder(context.value) ? \"\" : void 0,\n ...triggerProps,\n ref: composedRefs,\n onClick: composeEventHandlers(triggerProps.onClick, (event) => {\n event.currentTarget.focus();\n }),\n onPointerDown: composeEventHandlers(triggerProps.onPointerDown, (event) => {\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n if (event.button === 0 && event.ctrlKey === false) {\n handleOpen();\n context.triggerPointerDownPosRef.current = {\n x: Math.round(event.pageX),\n y: Math.round(event.pageY)\n };\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (event) => {\n const isTypingAhead = searchRef.current !== \"\";\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if (isTypingAhead && event.key === \" \") return;\n if (OPEN_KEYS.includes(event.key)) {\n handleOpen();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nSelectTrigger.displayName = TRIGGER_NAME;\nvar VALUE_NAME = \"SelectValue\";\nvar SelectValue = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, children, placeholder = \"\", ...valueProps } = props;\n const context = useSelectContext(VALUE_NAME, __scopeSelect);\n const { onValueNodeHasChildrenChange } = context;\n const hasChildren = children !== void 0;\n const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n useLayoutEffect(() => {\n onValueNodeHasChildrenChange(hasChildren);\n }, [onValueNodeHasChildrenChange, hasChildren]);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...valueProps,\n ref: composedRefs,\n style: { pointerEvents: \"none\" },\n children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ jsx(Fragment, { children: placeholder }) : children\n }\n );\n }\n);\nSelectValue.displayName = VALUE_NAME;\nvar ICON_NAME = \"SelectIcon\";\nvar SelectIcon = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, children, ...iconProps } = props;\n return /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...iconProps, ref: forwardedRef, children: children || \"\\u25BC\" });\n }\n);\nSelectIcon.displayName = ICON_NAME;\nvar PORTAL_NAME = \"SelectPortal\";\nvar SelectPortal = (props) => {\n return /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, ...props });\n};\nSelectPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"SelectContent\";\nvar SelectContent = React.forwardRef(\n (props, forwardedRef) => {\n const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);\n const [fragment, setFragment] = React.useState();\n useLayoutEffect(() => {\n setFragment(new DocumentFragment());\n }, []);\n if (!context.open) {\n const frag = fragment;\n return frag ? ReactDOM.createPortal(\n /* @__PURE__ */ jsx(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(\"div\", { children: props.children }) }) }),\n frag\n ) : null;\n }\n return /* @__PURE__ */ jsx(SelectContentImpl, { ...props, ref: forwardedRef });\n }\n);\nSelectContent.displayName = CONTENT_NAME;\nvar CONTENT_MARGIN = 10;\nvar [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);\nvar CONTENT_IMPL_NAME = \"SelectContentImpl\";\nvar SelectContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n position = \"item-aligned\",\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n //\n // PopperContent props\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions,\n //\n ...contentProps\n } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const [content, setContent] = React.useState(null);\n const [viewport, setViewport] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [selectedItem, setSelectedItem] = React.useState(null);\n const [selectedItemText, setSelectedItemText] = React.useState(\n null\n );\n const getItems = useCollection(__scopeSelect);\n const [isPositioned, setIsPositioned] = React.useState(false);\n const firstValidItemFoundRef = React.useRef(false);\n React.useEffect(() => {\n if (content) return hideOthers(content);\n }, [content]);\n useFocusGuards();\n const focusFirst = React.useCallback(\n (candidates) => {\n const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);\n const [lastItem] = restItems.slice(-1);\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate?.scrollIntoView({ block: \"nearest\" });\n if (candidate === firstItem && viewport) viewport.scrollTop = 0;\n if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;\n candidate?.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n },\n [getItems, viewport]\n );\n const focusSelectedItem = React.useCallback(\n () => focusFirst([selectedItem, content]),\n [focusFirst, selectedItem, content]\n );\n React.useEffect(() => {\n if (isPositioned) {\n focusSelectedItem();\n }\n }, [isPositioned, focusSelectedItem]);\n const { onOpenChange, triggerPointerDownPosRef } = context;\n React.useEffect(() => {\n if (content) {\n let pointerMoveDelta = { x: 0, y: 0 };\n const handlePointerMove = (event) => {\n pointerMoveDelta = {\n x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),\n y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0))\n };\n };\n const handlePointerUp = (event) => {\n if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n event.preventDefault();\n } else {\n if (!content.contains(event.target)) {\n onOpenChange(false);\n }\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n triggerPointerDownPosRef.current = null;\n };\n if (triggerPointerDownPosRef.current !== null) {\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp, { capture: true, once: true });\n }\n return () => {\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp, { capture: true });\n };\n }\n }, [content, onOpenChange, triggerPointerDownPosRef]);\n React.useEffect(() => {\n const close = () => onOpenChange(false);\n window.addEventListener(\"blur\", close);\n window.addEventListener(\"resize\", close);\n return () => {\n window.removeEventListener(\"blur\", close);\n window.removeEventListener(\"resize\", close);\n };\n }, [onOpenChange]);\n const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem) {\n setTimeout(() => nextItem.ref.current.focus());\n }\n });\n const itemRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItem(node);\n if (isFirstValidItem) firstValidItemFoundRef.current = true;\n }\n },\n [context.value]\n );\n const handleItemLeave = React.useCallback(() => content?.focus(), [content]);\n const itemTextRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItemText(node);\n }\n },\n [context.value]\n );\n const SelectPosition = position === \"popper\" ? SelectPopperPosition : SelectItemAlignedPosition;\n const popperContentProps = SelectPosition === SelectPopperPosition ? {\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions\n } : {};\n return /* @__PURE__ */ jsx(\n SelectContentProvider,\n {\n scope: __scopeSelect,\n content,\n viewport,\n onViewportChange: setViewport,\n itemRefCallback,\n selectedItem,\n onItemLeave: handleItemLeave,\n itemTextRefCallback,\n focusSelectedItem,\n selectedItemText,\n position,\n isPositioned,\n searchRef,\n children: /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: context.open,\n onMountAutoFocus: (event) => {\n event.preventDefault();\n },\n onUnmountAutoFocus: composeEventHandlers(onCloseAutoFocus, (event) => {\n context.trigger?.focus({ preventScroll: true });\n event.preventDefault();\n }),\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: true,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n SelectPosition,\n {\n role: \"listbox\",\n id: context.contentId,\n \"data-state\": context.open ? \"open\" : \"closed\",\n dir: context.dir,\n onContextMenu: (event) => event.preventDefault(),\n ...contentProps,\n ...popperContentProps,\n onPlaced: () => setIsPositioned(true),\n ref: composedRefs,\n style: {\n // flex layout so we can place the scroll buttons properly\n display: \"flex\",\n flexDirection: \"column\",\n // reset the outline by default as the content MAY get focused\n outline: \"none\",\n ...contentProps.style\n },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if ([\"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) {\n const items = getItems().filter((item) => !item.disabled);\n let candidateNodes = items.map((item) => item.ref.current);\n if ([\"ArrowUp\", \"End\"].includes(event.key)) {\n candidateNodes = candidateNodes.slice().reverse();\n }\n if ([\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n const currentElement = event.target;\n const currentIndex = candidateNodes.indexOf(currentElement);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n })\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nSelectContentImpl.displayName = CONTENT_IMPL_NAME;\nvar ITEM_ALIGNED_POSITION_NAME = \"SelectItemAlignedPosition\";\nvar SelectItemAlignedPosition = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onPlaced, ...popperProps } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);\n const [contentWrapper, setContentWrapper] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const getItems = useCollection(__scopeSelect);\n const shouldExpandOnScrollRef = React.useRef(false);\n const shouldRepositionRef = React.useRef(true);\n const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;\n const position = React.useCallback(() => {\n if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {\n const triggerRect = context.trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const valueNodeRect = context.valueNode.getBoundingClientRect();\n const itemTextRect = selectedItemText.getBoundingClientRect();\n if (context.dir !== \"rtl\") {\n const itemTextOffset = itemTextRect.left - contentRect.left;\n const left = valueNodeRect.left - itemTextOffset;\n const leftDelta = triggerRect.left - left;\n const minContentWidth = triggerRect.width + leftDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const rightEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedLeft = clamp(left, [CONTENT_MARGIN, rightEdge - contentWidth]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.left = clampedLeft + \"px\";\n } else {\n const itemTextOffset = contentRect.right - itemTextRect.right;\n const right = window.innerWidth - valueNodeRect.right - itemTextOffset;\n const rightDelta = window.innerWidth - triggerRect.right - right;\n const minContentWidth = triggerRect.width + rightDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const leftEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedRight = clamp(right, [CONTENT_MARGIN, leftEdge - contentWidth]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.right = clampedRight + \"px\";\n }\n const items = getItems();\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const itemsHeight = viewport.scrollHeight;\n const contentStyles = window.getComputedStyle(content);\n const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);\n const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);\n const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);\n const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);\n const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;\n const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);\n const viewportStyles = window.getComputedStyle(viewport);\n const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);\n const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);\n const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n const selectedItemHalfHeight = selectedItem.offsetHeight / 2;\n const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;\n const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n if (willAlignWithoutTopOverflow) {\n const isLastItem = selectedItem === items[items.length - 1].ref.current;\n contentWrapper.style.bottom = \"0px\";\n const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;\n const clampedTriggerMiddleToBottomEdge = Math.max(\n triggerMiddleToBottomEdge,\n selectedItemHalfHeight + // viewport might have padding bottom, include it to avoid a scrollable viewport\n (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth\n );\n const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n contentWrapper.style.height = height + \"px\";\n } else {\n const isFirstItem = selectedItem === items[0].ref.current;\n contentWrapper.style.top = \"0px\";\n const clampedTopEdgeToTriggerMiddle = Math.max(\n topEdgeToTriggerMiddle,\n contentBorderTopWidth + viewport.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport\n (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight\n );\n const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n contentWrapper.style.height = height + \"px\";\n viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;\n }\n contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;\n contentWrapper.style.minHeight = minContentHeight + \"px\";\n contentWrapper.style.maxHeight = availableHeight + \"px\";\n onPlaced?.();\n requestAnimationFrame(() => shouldExpandOnScrollRef.current = true);\n }\n }, [\n getItems,\n context.trigger,\n context.valueNode,\n contentWrapper,\n content,\n viewport,\n selectedItem,\n selectedItemText,\n context.dir,\n onPlaced\n ]);\n useLayoutEffect(() => position(), [position]);\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n const handleScrollButtonChange = React.useCallback(\n (node) => {\n if (node && shouldRepositionRef.current === true) {\n position();\n focusSelectedItem?.();\n shouldRepositionRef.current = false;\n }\n },\n [position, focusSelectedItem]\n );\n return /* @__PURE__ */ jsx(\n SelectViewportProvider,\n {\n scope: __scopeSelect,\n contentWrapper,\n shouldExpandOnScrollRef,\n onScrollButtonChange: handleScrollButtonChange,\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: setContentWrapper,\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"fixed\",\n zIndex: contentZIndex\n },\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...popperProps,\n ref: composedRefs,\n style: {\n // When we get the height of the content, it includes borders. If we were to set\n // the height without having `boxSizing: 'border-box'` it would be too big.\n boxSizing: \"border-box\",\n // We need to ensure the content doesn't get taller than the wrapper\n maxHeight: \"100%\",\n ...popperProps.style\n }\n }\n )\n }\n )\n }\n );\n});\nSelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;\nvar POPPER_POSITION_NAME = \"SelectPopperPosition\";\nvar SelectPopperPosition = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeSelect,\n align = \"start\",\n collisionPadding = CONTENT_MARGIN,\n ...popperProps\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n return /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n ...popperScope,\n ...popperProps,\n ref: forwardedRef,\n align,\n collisionPadding,\n style: {\n // Ensure border-box for floating-ui calculations\n boxSizing: \"border-box\",\n ...popperProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-select-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-select-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-select-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-select-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-select-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nSelectPopperPosition.displayName = POPPER_POSITION_NAME;\nvar [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});\nvar VIEWPORT_NAME = \"SelectViewport\";\nvar SelectViewport = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, nonce, ...viewportProps } = props;\n const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);\n const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);\n const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);\n const prevScrollTopRef = React.useRef(0);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n \"style\",\n {\n dangerouslySetInnerHTML: {\n __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`\n },\n nonce\n }\n ),\n /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-select-viewport\": \"\",\n role: \"presentation\",\n ...viewportProps,\n ref: composedRefs,\n style: {\n // we use position: 'relative' here on the `viewport` so that when we call\n // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n // (independent of the scrollUpButton).\n position: \"relative\",\n flex: 1,\n overflow: \"auto\",\n ...viewportProps.style\n },\n onScroll: composeEventHandlers(viewportProps.onScroll, (event) => {\n const viewport = event.currentTarget;\n const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;\n if (shouldExpandOnScrollRef?.current && contentWrapper) {\n const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);\n if (scrolledBy > 0) {\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const cssMinHeight = parseFloat(contentWrapper.style.minHeight);\n const cssHeight = parseFloat(contentWrapper.style.height);\n const prevHeight = Math.max(cssMinHeight, cssHeight);\n if (prevHeight < availableHeight) {\n const nextHeight = prevHeight + scrolledBy;\n const clampedNextHeight = Math.min(availableHeight, nextHeight);\n const heightDiff = nextHeight - clampedNextHeight;\n contentWrapper.style.height = clampedNextHeight + \"px\";\n if (contentWrapper.style.bottom === \"0px\") {\n viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n contentWrapper.style.justifyContent = \"flex-end\";\n }\n }\n }\n }\n prevScrollTopRef.current = viewport.scrollTop;\n })\n }\n ) })\n ] });\n }\n);\nSelectViewport.displayName = VIEWPORT_NAME;\nvar GROUP_NAME = \"SelectGroup\";\nvar [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);\nvar SelectGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...groupProps } = props;\n const groupId = useId();\n return /* @__PURE__ */ jsx(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", \"aria-labelledby\": groupId, ...groupProps, ref: forwardedRef }) });\n }\n);\nSelectGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"SelectLabel\";\nvar SelectLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...labelProps } = props;\n const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);\n return /* @__PURE__ */ jsx(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });\n }\n);\nSelectLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"SelectItem\";\nvar [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);\nvar SelectItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n value,\n disabled = false,\n textValue: textValueProp,\n ...itemProps\n } = props;\n const context = useSelectContext(ITEM_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);\n const isSelected = context.value === value;\n const [textValue, setTextValue] = React.useState(textValueProp ?? \"\");\n const [isFocused, setIsFocused] = React.useState(false);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => contentContext.itemRefCallback?.(node, value, disabled)\n );\n const textId = useId();\n const handleSelect = () => {\n if (!disabled) {\n context.onValueChange(value);\n context.onOpenChange(false);\n }\n };\n if (value === \"\") {\n throw new Error(\n \"A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.\"\n );\n }\n return /* @__PURE__ */ jsx(\n SelectItemContextProvider,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: React.useCallback((node) => {\n setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? \"\").trim());\n }, []),\n children: /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textValue,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"option\",\n \"aria-labelledby\": textId,\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-selected\": isSelected && isFocused,\n \"data-state\": isSelected ? \"checked\" : \"unchecked\",\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n tabIndex: disabled ? void 0 : -1,\n ...itemProps,\n ref: composedRefs,\n onFocus: composeEventHandlers(itemProps.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(itemProps.onBlur, () => setIsFocused(false)),\n onPointerUp: composeEventHandlers(itemProps.onPointerUp, handleSelect),\n onPointerMove: composeEventHandlers(itemProps.onPointerMove, (event) => {\n if (disabled) {\n contentContext.onItemLeave?.();\n } else {\n event.currentTarget.focus({ preventScroll: true });\n }\n }),\n onPointerLeave: composeEventHandlers(itemProps.onPointerLeave, (event) => {\n if (event.currentTarget === document.activeElement) {\n contentContext.onItemLeave?.();\n }\n }),\n onKeyDown: composeEventHandlers(itemProps.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef?.current !== \"\";\n if (isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) handleSelect();\n if (event.key === \" \") event.preventDefault();\n })\n }\n )\n }\n )\n }\n );\n }\n);\nSelectItem.displayName = ITEM_NAME;\nvar ITEM_TEXT_NAME = \"SelectItemText\";\nvar SelectItemText = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, ...itemTextProps } = props;\n const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);\n const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);\n const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);\n const [itemTextNode, setItemTextNode] = React.useState(null);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => setItemTextNode(node),\n itemContext.onItemTextChange,\n (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)\n );\n const textContent = itemTextNode?.textContent;\n const nativeOption = React.useMemo(\n () => /* @__PURE__ */ jsx(\"option\", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),\n [itemContext.disabled, itemContext.value, textContent]\n );\n const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;\n useLayoutEffect(() => {\n onNativeOptionAdd(nativeOption);\n return () => onNativeOptionRemove(nativeOption);\n }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),\n itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM.createPortal(itemTextProps.children, context.valueNode) : null\n ] });\n }\n);\nSelectItemText.displayName = ITEM_TEXT_NAME;\nvar ITEM_INDICATOR_NAME = \"SelectItemIndicator\";\nvar SelectItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...itemIndicatorProps } = props;\n const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);\n return itemContext.isSelected ? /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...itemIndicatorProps, ref: forwardedRef }) : null;\n }\n);\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SCROLL_UP_BUTTON_NAME = \"SelectScrollUpButton\";\nvar SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const [canScrollUp, setCanScrollUp] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const canScrollUp2 = viewport.scrollTop > 0;\n setCanScrollUp(canScrollUp2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollUp ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;\nvar SCROLL_DOWN_BUTTON_NAME = \"SelectScrollDownButton\";\nvar SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const [canScrollDown, setCanScrollDown] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight;\n const canScrollDown2 = Math.ceil(viewport.scrollTop) < maxScroll;\n setCanScrollDown(canScrollDown2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollDown ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;\nvar SelectScrollButtonImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;\n const contentContext = useSelectContentContext(\"SelectScrollButton\", __scopeSelect);\n const autoScrollTimerRef = React.useRef(null);\n const getItems = useCollection(__scopeSelect);\n const clearAutoScrollTimer = React.useCallback(() => {\n if (autoScrollTimerRef.current !== null) {\n window.clearInterval(autoScrollTimerRef.current);\n autoScrollTimerRef.current = null;\n }\n }, []);\n React.useEffect(() => {\n return () => clearAutoScrollTimer();\n }, [clearAutoScrollTimer]);\n useLayoutEffect(() => {\n const activeItem = getItems().find((item) => item.ref.current === document.activeElement);\n activeItem?.ref.current?.scrollIntoView({ block: \"nearest\" });\n }, [getItems]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"aria-hidden\": true,\n ...scrollIndicatorProps,\n ref: forwardedRef,\n style: { flexShrink: 0, ...scrollIndicatorProps.style },\n onPointerDown: composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerMove: composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {\n contentContext.onItemLeave?.();\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerLeave: composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {\n clearAutoScrollTimer();\n })\n }\n );\n});\nvar SEPARATOR_NAME = \"SelectSeparator\";\nvar SelectSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { \"aria-hidden\": true, ...separatorProps, ref: forwardedRef });\n }\n);\nSelectSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"SelectArrow\";\nvar SelectArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(ARROW_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);\n return context.open && contentContext.position === \"popper\" ? /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;\n }\n);\nSelectArrow.displayName = ARROW_NAME;\nfunction shouldShowPlaceholder(value) {\n return value === \"\" || value === void 0;\n}\nvar BubbleSelect = React.forwardRef(\n (props, forwardedRef) => {\n const { value, ...selectProps } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const prevValue = usePrevious(value);\n React.useEffect(() => {\n const select = ref.current;\n const selectProto = window.HTMLSelectElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n selectProto,\n \"value\"\n );\n const setValue = descriptor.set;\n if (prevValue !== value && setValue) {\n const event = new Event(\"change\", { bubbles: true });\n setValue.call(select, value);\n select.dispatchEvent(event);\n }\n }, [prevValue, value]);\n return /* @__PURE__ */ jsx(VisuallyHidden, { asChild: true, children: /* @__PURE__ */ jsx(\"select\", { ...selectProps, ref: composedRefs, defaultValue: value }) });\n }\n);\nBubbleSelect.displayName = \"BubbleSelect\";\nfunction useTypeaheadSearch(onSearchChange) {\n const handleSearchChange = useCallbackRef(onSearchChange);\n const searchRef = React.useRef(\"\");\n const timerRef = React.useRef(0);\n const handleTypeaheadSearch = React.useCallback(\n (key) => {\n const search = searchRef.current + key;\n handleSearchChange(search);\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n },\n [handleSearchChange]\n );\n const resetTypeahead = React.useCallback(() => {\n searchRef.current = \"\";\n window.clearTimeout(timerRef.current);\n }, []);\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n return [searchRef, handleTypeaheadSearch, resetTypeahead];\n}\nfunction findNextItem(items, search, currentItem) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;\n let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));\n const excludeCurrentItem = normalizedSearch.length === 1;\n if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);\n const nextItem = wrappedItems.find(\n (item) => item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextItem !== currentItem ? nextItem : void 0;\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root2 = Select;\nvar Trigger = SelectTrigger;\nvar Value = SelectValue;\nvar Icon = SelectIcon;\nvar Portal = SelectPortal;\nvar Content2 = SelectContent;\nvar Viewport = SelectViewport;\nvar Group = SelectGroup;\nvar Label = SelectLabel;\nvar Item = SelectItem;\nvar ItemText = SelectItemText;\nvar ItemIndicator = SelectItemIndicator;\nvar ScrollUpButton = SelectScrollUpButton;\nvar ScrollDownButton = SelectScrollDownButton;\nvar Separator = SelectSeparator;\nvar Arrow2 = SelectArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Group,\n Icon,\n Item,\n ItemIndicator,\n ItemText,\n Label,\n Portal,\n Root2 as Root,\n ScrollDownButton,\n ScrollUpButton,\n Select,\n SelectArrow,\n SelectContent,\n SelectGroup,\n SelectIcon,\n SelectItem,\n SelectItemIndicator,\n SelectItemText,\n SelectLabel,\n SelectPortal,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n SelectViewport,\n Separator,\n Trigger,\n Value,\n Viewport,\n createSelectScope\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["clamp","value","min","max","createCollection","name","PROVIDER_NAME","createCollectionContext","createCollectionScope","createContextScope","CollectionProviderImpl","useCollectionContext","CollectionProvider","props","scope","children","ref","React","itemMap","jsx","COLLECTION_SLOT_NAME","CollectionSlot","forwardedRef","context","composedRefs","useComposedRefs","Slot","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlot","itemData","useCollection","collectionNode","orderedNodes","a","b","DirectionContext","React.createContext","useDirection","localDir","globalDir","React.useContext","usePrevious","React.useRef","React.useMemo","OPEN_KEYS","SELECTION_KEYS","SELECT_NAME","Collection","createSelectContext","createSelectScope","createPopperScope","usePopperScope","SelectProvider","useSelectContext","SelectNativeOptionsProvider","useSelectNativeOptionsContext","Select","__scopeSelect","openProp","defaultOpen","onOpenChange","valueProp","defaultValue","onValueChange","dir","autoComplete","disabled","required","popperScope","trigger","setTrigger","React.useState","valueNode","setValueNode","valueNodeHasChildren","setValueNodeHasChildren","direction","open","setOpen","useControllableState","setValue","triggerPointerDownPosRef","isFormControl","nativeOptionsSet","setNativeOptionsSet","nativeSelectKey","option","PopperPrimitive.Root","jsxs","useId","React.useCallback","prev","optionsSet","BubbleSelect","event","TRIGGER_NAME","SelectTrigger","React.forwardRef","triggerProps","isDisabled","getItems","searchRef","handleTypeaheadSearch","resetTypeahead","useTypeaheadSearch","search","enabledItems","item","currentItem","nextItem","findNextItem","handleOpen","PopperPrimitive.Anchor","Primitive","shouldShowPlaceholder","composeEventHandlers","target","isTypingAhead","VALUE_NAME","SelectValue","className","style","placeholder","valueProps","onValueNodeHasChildrenChange","hasChildren","useLayoutEffect","Fragment","ICON_NAME","SelectIcon","iconProps","PORTAL_NAME","SelectPortal","PortalPrimitive","CONTENT_NAME","SelectContent","fragment","setFragment","frag","ReactDOM.createPortal","SelectContentProvider","SelectContentImpl","CONTENT_MARGIN","useSelectContentContext","CONTENT_IMPL_NAME","position","onCloseAutoFocus","onEscapeKeyDown","onPointerDownOutside","side","sideOffset","align","alignOffset","arrowPadding","collisionBoundary","collisionPadding","sticky","hideWhenDetached","avoidCollisions","contentProps","content","setContent","viewport","setViewport","node","selectedItem","setSelectedItem","selectedItemText","setSelectedItemText","isPositioned","setIsPositioned","firstValidItemFoundRef","React.useEffect","hideOthers","useFocusGuards","focusFirst","candidates","firstItem","restItems","lastItem","PREVIOUSLY_FOCUSED_ELEMENT","candidate","focusSelectedItem","pointerMoveDelta","handlePointerMove","_a","_b","handlePointerUp","close","itemRefCallback","isFirstValidItem","handleItemLeave","itemTextRefCallback","SelectPosition","SelectPopperPosition","SelectItemAlignedPosition","popperContentProps","RemoveScroll","FocusScope","DismissableLayer","isModifierKey","candidateNodes","currentElement","currentIndex","ITEM_ALIGNED_POSITION_NAME","onPlaced","popperProps","contentContext","contentWrapper","setContentWrapper","shouldExpandOnScrollRef","shouldRepositionRef","triggerRect","contentRect","valueNodeRect","itemTextRect","itemTextOffset","left","leftDelta","minContentWidth","contentWidth","rightEdge","clampedLeft","right","rightDelta","leftEdge","clampedRight","items","availableHeight","itemsHeight","contentStyles","contentBorderTopWidth","contentPaddingTop","contentBorderBottomWidth","contentPaddingBottom","fullContentHeight","minContentHeight","viewportStyles","viewportPaddingTop","viewportPaddingBottom","topEdgeToTriggerMiddle","triggerMiddleToBottomEdge","selectedItemHalfHeight","itemOffsetMiddle","contentTopToItemMiddle","itemMiddleToContentBottom","isLastItem","viewportOffsetBottom","clampedTriggerMiddleToBottomEdge","height","isFirstItem","contentZIndex","setContentZIndex","handleScrollButtonChange","SelectViewportProvider","POPPER_POSITION_NAME","PopperPrimitive.Content","useSelectViewportContext","VIEWPORT_NAME","SelectViewport","nonce","viewportProps","viewportContext","prevScrollTopRef","scrolledBy","cssMinHeight","cssHeight","prevHeight","nextHeight","clampedNextHeight","heightDiff","GROUP_NAME","SelectGroupContextProvider","useSelectGroupContext","SelectGroup","groupProps","groupId","LABEL_NAME","SelectLabel","labelProps","groupContext","ITEM_NAME","SelectItemContextProvider","useSelectItemContext","SelectItem","textValueProp","itemProps","isSelected","textValue","setTextValue","isFocused","setIsFocused","textId","handleSelect","prevTextValue","ITEM_TEXT_NAME","SelectItemText","itemTextProps","itemContext","nativeOptionsContext","itemTextNode","setItemTextNode","textContent","nativeOption","onNativeOptionAdd","onNativeOptionRemove","ITEM_INDICATOR_NAME","SelectItemIndicator","itemIndicatorProps","SCROLL_UP_BUTTON_NAME","SelectScrollUpButton","canScrollUp","setCanScrollUp","handleScroll2","canScrollUp2","SelectScrollButtonImpl","SCROLL_DOWN_BUTTON_NAME","SelectScrollDownButton","canScrollDown","setCanScrollDown","maxScroll","canScrollDown2","onAutoScroll","scrollIndicatorProps","autoScrollTimerRef","clearAutoScrollTimer","activeItem","SEPARATOR_NAME","SelectSeparator","separatorProps","ARROW_NAME","SelectArrow","arrowProps","PopperPrimitive.Arrow","selectProps","prevValue","select","selectProto","VisuallyHidden","onSearchChange","handleSearchChange","useCallbackRef","timerRef","key","updateSearch","normalizedSearch","char","currentItemIndex","wrappedItems","wrapArray","v","array","startIndex","_","index","Root2","Trigger","Value","Icon","Portal","Content2","Viewport","Group","Label","Item","ItemText","ItemIndicator","ScrollUpButton","ScrollDownButton"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as r,r as n}from"./index-1cKOJFpX.js";import{u as d}from"./client-hints-
|
|
2
|
-
//# sourceMappingURL=loading-
|
|
1
|
+
import{j as r,r as n}from"./index-1cKOJFpX.js";import{u as d}from"./client-hints-DNUUFGmB.js";function x({children:t="Loading"}){const{reducedMotion:e}=d();return e==="reduce"?r.jsx("div",{className:"animate-pulse",children:t}):r.jsxs("div",{className:"flex items-center gap-2 font-mono text-sm font-medium uppercase",role:"status",children:[r.jsx("div",{"aria-hidden":"true",children:r.jsx(u,{})}),t,r.jsx("div",{"aria-hidden":"true",children:r.jsx(u,{})})]})}const o="█<▓█ ▒░/▒░ █░>▒▓/ █▒▒ ▓▒▓/█<░▒ ▓/░>",i=()=>o[Math.floor(Math.random()*o.length)];function u(){const[t,e]=n.useState(o[0]),[s,c]=n.useState(o[1]);return f(()=>{e(i()),c(i())},80),r.jsxs("span",{children:[t,s]})}function f(t,e=1e3){const s=n.useRef(null);n.useEffect(()=>{s.current=t},[t]),n.useEffect(()=>{function c(){var a;(a=s.current)==null||a.call(s)}if(e!==null){const a=setInterval(c,e);return()=>clearInterval(a)}},[e])}export{x as L};
|
|
2
|
+
//# sourceMappingURL=loading-C5uX0jJw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loading-
|
|
1
|
+
{"version":3,"file":"loading-C5uX0jJw.js","sources":["../../../app/components/loading.tsx"],"sourcesContent":["// originally this was based on baffle-react, but it was unnecessarily bloated\n// and very out-dated. I've replaced it with a simple Characters component that\n// does the same thing we were using baffle-react for\nimport { useEffect, useRef, useState } from 'react'\nimport { useHints } from '#app/utils/client-hints.tsx'\n\nexport function Loading({\n\tchildren = 'Loading',\n}: {\n\tchildren?: React.ReactNode\n}) {\n\tconst { reducedMotion } = useHints()\n\tif (reducedMotion === 'reduce') {\n\t\treturn <div className=\"animate-pulse\">{children}</div>\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"flex items-center gap-2 font-mono text-sm font-medium uppercase\"\n\t\t\trole=\"status\"\n\t\t>\n\t\t\t<div aria-hidden=\"true\">\n\t\t\t\t<Characters />\n\t\t\t</div>\n\t\t\t{children}\n\t\t\t<div aria-hidden=\"true\">\n\t\t\t\t<Characters />\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nconst characters = '█<▓█ ▒░/▒░ █░>▒▓/ █▒▒ ▓▒▓/█<░▒ ▓/░>'\nconst randomCharacter = () =>\n\tcharacters[Math.floor(Math.random() * characters.length)]\nexport function Characters() {\n\tconst [char1, setChar1] = useState(characters[0])\n\tconst [char2, setChar2] = useState(characters[1])\n\n\tuseInterval(() => {\n\t\tsetChar1(randomCharacter())\n\t\tsetChar2(randomCharacter())\n\t}, 80)\n\n\treturn (\n\t\t<span>\n\t\t\t{char1}\n\t\t\t{char2}\n\t\t</span>\n\t)\n}\n\nfunction useInterval(callback: () => void, delay: number | null = 1000) {\n\tconst savedCallback = useRef<() => void>(null)\n\n\t// Remember the latest function.\n\tuseEffect(() => {\n\t\tsavedCallback.current = callback\n\t}, [callback])\n\n\t// Set up the interval.\n\tuseEffect(() => {\n\t\tfunction tick() {\n\t\t\tsavedCallback.current?.()\n\t\t}\n\t\tif (delay !== null) {\n\t\t\tconst id = setInterval(tick, delay)\n\t\t\treturn () => clearInterval(id)\n\t\t}\n\t}, [delay])\n}\n"],"names":["Loading","children","reducedMotion","useHints","jsx","jsxs","Characters","characters","randomCharacter","char1","setChar1","useState","char2","setChar2","useInterval","callback","delay","savedCallback","useRef","useEffect","tick","_a","id"],"mappings":"8FAMO,SAASA,EAAQ,CACvB,SAAAC,EAAW,SACZ,EAEG,CACI,KAAA,CAAE,cAAAC,GAAkBC,IAC1B,OAAID,IAAkB,SACbE,EAAAA,IAAA,MAAA,CAAI,UAAU,gBAAiB,SAAAH,CAAS,CAAA,EAIhDI,EAAA,KAAC,MAAA,CACA,UAAU,kEACV,KAAK,SAEL,SAAA,CAAAD,MAAC,MAAI,CAAA,cAAY,OAChB,SAAAA,MAACE,GAAW,CAAA,EACb,EACCL,QACA,MAAI,CAAA,cAAY,OAChB,SAAAG,MAACE,GAAW,CAAA,EACb,CAAA,CAAA,CAAA,CAGH,CAEA,MAAMC,EAAa,sCACbC,EAAkB,IACvBD,EAAW,KAAK,MAAM,KAAK,SAAWA,EAAW,MAAM,CAAC,EAClD,SAASD,GAAa,CAC5B,KAAM,CAACG,EAAOC,CAAQ,EAAIC,EAAS,SAAAJ,EAAW,CAAC,CAAC,EAC1C,CAACK,EAAOC,CAAQ,EAAIF,EAAS,SAAAJ,EAAW,CAAC,CAAC,EAEhD,OAAAO,EAAY,IAAM,CACjBJ,EAASF,GAAiB,EAC1BK,EAASL,GAAiB,GACxB,EAAE,SAGH,OACC,CAAA,SAAA,CAAAC,EACAG,CACF,CAAA,CAAA,CAEF,CAEA,SAASE,EAAYC,EAAsBC,EAAuB,IAAM,CACjE,MAAAC,EAAgBC,SAAmB,IAAI,EAG7CC,EAAAA,UAAU,IAAM,CACfF,EAAc,QAAUF,CAAA,EACtB,CAACA,CAAQ,CAAC,EAGbI,EAAAA,UAAU,IAAM,CACf,SAASC,GAAO,QACfC,EAAAJ,EAAc,UAAd,MAAAI,EAAA,KAAAJ,EACD,CACA,GAAID,IAAU,KAAM,CACb,MAAAM,EAAK,YAAYF,EAAMJ,CAAK,EAC3B,MAAA,IAAM,cAAcM,CAAE,CAC9B,CAAA,EACE,CAACN,CAAK,CAAC,CACX"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as i,d as h,e as C,j as e}from"./index-1cKOJFpX.js";import{u as j}from"./use-event-source-A_0lEOPX.js";import{a as g,B as v}from"./button-
|
|
2
|
-
//# sourceMappingURL=login-
|
|
1
|
+
import{r as i,d as h,e as C,j as e}from"./index-1cKOJFpX.js";import{u as j}from"./use-event-source-A_0lEOPX.js";import{a as g,B as v}from"./button-BklqyTPS.js";import{L as R}from"./loading-C5uX0jJw.js";import{z as t}from"./request-info-CEhUGODY.js";import{a as L}from"./components-CME-nGId.js";import"./clsx-B-dksMZM.js";import"./client-hints-DNUUFGmB.js";const r={USER_CODE_RECEIVED:"USER_CODE_RECEIVED",AUTH_RESOLVED:"AUTH_RESOLVED",AUTH_REJECTED:"AUTH_REJECTED"},S=t.object({type:t.literal(r.USER_CODE_RECEIVED),code:t.string(),url:t.string()}),b=t.object({type:t.literal(r.AUTH_RESOLVED)}),w=t.object({type:t.literal(r.AUTH_REJECTED),error:t.string().optional().default("Unknown error")}),y=t.union([S,b,w]),F={getSitemapEntries:()=>null};function H(){var x;const s=L(),[u,E]=i.useState(!1),[o,m]=i.useState(null),[l,f]=i.useState(null),c=h(),d=C(),n=j("/login-sse");return i.useEffect(()=>{if(!n)return;const p=JSON.parse(n),a=y.safeParse(p);if(!a.success){console.error(a.error.flatten());return}switch(a.data.type){case r.USER_CODE_RECEIVED:{f(a.data);break}case r.AUTH_RESOLVED:{d.revalidate(),c("/");break}case r.AUTH_REJECTED:{m(a.data.error);break}}},[n,c,d]),e.jsx("main",{className:"flex h-full w-full flex-grow flex-col items-center justify-center p-10 text-center",children:e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx(_,{className:"h-16 w-16"}),e.jsx("h1",{className:"pt-5 text-2xl font-semibold md:text-3xl",children:"Authenticate with EpicWeb.dev"}),e.jsx("h2",{className:"max-w-sm pt-3 text-base text-gray-700 dark:text-gray-300",children:"If you have purchased Epic Web, you'll be able to watch videos, track progress, and more!"}),e.jsxs("div",{className:"flex w-full flex-col items-center pt-5",children:[l?e.jsxs("div",{className:"flex w-full flex-col items-center gap-3",children:[e.jsxs("div",{className:"my-2 flex w-full flex-col items-center gap-2",children:[e.jsx("p",{className:"text-lg",children:"Your verification code is: "}),e.jsx("div",{className:"mb-3 w-full bg-gray-100 px-5 py-3 text-lg font-bold dark:bg-black/40",children:e.jsx("code",{children:l.code})})]}),e.jsx(g,{varient:"primary",to:l.url,target:"_blank",rel:"noreferrer",onClick:()=>E(!0),children:"Continue"}),u?e.jsx("div",{className:"pt-5 opacity-60",children:e.jsx(R,{children:"Waiting for confirmation"})}):null]}):e.jsx(s.Form,{method:"POST",children:e.jsx(v,{varient:"primary",type:"submit",children:s.state==="idle"&&((x=s.data)==null?void 0:x.status)!=="pending"?"Retrieve Code":"Retrieving Code..."})}),o?e.jsxs("div",{className:"mt-4 text-red-500",children:["There was an error: ",e.jsx("pre",{children:o})]}):null]})]})})}function _({className:s=""}){return e.jsxs("svg",{className:s,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[e.jsx("path",{d:"M12.438 11.5677C12.0131 11.8026 11.5249 12.0534 10.9784 12.3047C8.80704 13.3031 5.70429 14.314 1.986 14.3555L1.55773 14.3603L1.48003 13.9391C1.36509 13.316 1.29793 12.6714 1.29793 12.006C1.29793 6.10441 6.09863 1.30372 12.0002 1.30372C13.6287 1.30372 15.1745 1.66961 16.5585 2.32369L17.9801 1.59897C16.2189 0.582162 14.1769 0 12.0002 0C5.38709 0 0 5.38709 0 12.0002C0 14.6402 0.858474 17.0847 2.31072 19.0692C4.79741 18.6457 6.35749 17.6495 6.35749 17.6495C6.35749 17.6495 5.36137 19.2075 4.93785 21.6946C6.92114 23.1439 9.36321 24.0005 12.0002 24.0005C18.6134 24.0005 24.0005 18.6134 24.0005 12.0002C24.0005 9.82732 23.4199 7.78762 22.4053 6.02738L21.6818 7.44613C22.3364 8.83057 22.7025 10.3769 22.7025 12.006C22.7025 17.9076 17.9018 22.7083 12.0002 22.7083C11.3345 22.7083 10.6959 22.6411 10.0681 22.5264L9.646 22.4493L9.65079 22.0203C9.6923 18.2991 10.7031 15.1964 11.7016 13.0257C11.9527 12.4797 12.2033 11.9921 12.438 11.5677Z",fill:"url(#epicGradient)"}),e.jsx("path",{d:"M18.2525 9.31052L15.4992 8.50683L14.6953 5.74778L23.8291 0.171387L18.2525 9.31052Z",fill:"currentColor"}),e.jsx("defs",{children:e.jsxs("linearGradient",{id:"epicGradient",x1:"16.9703",y1:"7.03022",x2:"7.05798",y2:"16.948",gradientUnits:"userSpaceOnUse",children:[e.jsx("stop",{stopColor:"#4F75FF"}),e.jsx("stop",{offset:"1",stopColor:"#30AFFF"})]})})]})}export{H as default,F as handle};
|
|
2
|
+
//# sourceMappingURL=login-4cvVFzF8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login-Bimq6Ilz.js","sources":["../../../app/utils/auth-events.ts","../../../app/routes/login-sse.tsx","../../../app/routes/_app+/login.tsx"],"sourcesContent":["export const EVENTS = {\n\tUSER_CODE_RECEIVED: 'USER_CODE_RECEIVED',\n\tAUTH_RESOLVED: 'AUTH_RESOLVED',\n\tAUTH_REJECTED: 'AUTH_REJECTED',\n} as const\nexport type EventTypes = keyof typeof EVENTS\n","import { type LoaderFunctionArgs } from '@remix-run/node'\nimport { eventStream } from 'remix-utils/sse/server'\nimport { z } from 'zod'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { authEmitter } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\n\nconst CodeReceivedEventSchema = z.object({\n\ttype: z.literal(EVENTS.USER_CODE_RECEIVED),\n\tcode: z.string(),\n\turl: z.string(),\n})\nconst AuthResolvedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_RESOLVED),\n})\nconst AuthRejectedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_REJECTED),\n\terror: z.string().optional().default('Unknown error'),\n})\nexport const EventSchema = z.union([\n\tCodeReceivedEventSchema,\n\tAuthResolvedEventSchema,\n\tAuthRejectedEventSchema,\n])\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tensureUndeployed()\n\treturn eventStream(request.signal, function setup(send) {\n\t\tfunction handleCodeReceived(data: any) {\n\t\t\tsend({\n\t\t\t\tdata: JSON.stringify(\n\t\t\t\t\tCodeReceivedEventSchema.parse({\n\t\t\t\t\t\ttype: EVENTS.USER_CODE_RECEIVED,\n\t\t\t\t\t\t...data,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t})\n\t\t}\n\t\tfunction handleAuthResolved() {\n\t\t\tsend({ data: JSON.stringify({ type: EVENTS.AUTH_RESOLVED }) })\n\t\t}\n\t\tfunction handleAuthRejected(data: any) {\n\t\t\tconst result = AuthRejectedEventSchema.safeParse(data)\n\t\t\tif (result.success) {\n\t\t\t\tsend({ data: JSON.stringify(result.data) })\n\t\t\t} else {\n\t\t\t\tconsole.error('Error parsing auth rejected event', result.error, data)\n\t\t\t}\n\t\t}\n\t\tauthEmitter.on(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\tauthEmitter.on(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\tauthEmitter.on(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\treturn () => {\n\t\t\tauthEmitter.off(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\t\tauthEmitter.off(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\t\tauthEmitter.off(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\t}\n\t})\n}\n","import { getAuthInfo } from '@epic-web/workshop-utils/db.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport { json, redirect } from '@remix-run/node'\nimport { useFetcher, useNavigate, useRevalidator } from '@remix-run/react'\nimport { useEffect, useState } from 'react'\nimport { useEventSource } from 'remix-utils/sse/react'\nimport { Button, ButtonLink } from '#app/components/button.tsx'\nimport { Loading } from '#app/components/loading.tsx'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { registerDevice } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\nimport { EventSchema } from '../login-sse.tsx'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => null,\n}\n\nexport async function loader() {\n\tensureUndeployed()\n\tconst isAuthenticated = Boolean(await getAuthInfo())\n\tif (isAuthenticated) throw redirect('/account')\n\treturn json({})\n}\n\nexport async function action() {\n\tensureUndeployed()\n\tvoid registerDevice()\n\treturn json({ status: 'pending' } as const)\n}\n\nexport default function Login() {\n\tconst loginFetcher = useFetcher<typeof action>()\n\tconst [clickedVerificationLink, setClickedVerificationLink] = useState(false)\n\tconst [authError, setAuthError] = useState<null | string>(null)\n\tconst [userCodeInfo, setUserCodeInfo] = useState<null | {\n\t\tcode: string\n\t\turl: string\n\t}>(null)\n\tconst navigate = useNavigate()\n\tconst revalidator = useRevalidator()\n\tconst lastMessage = useEventSource(`/login-sse`)\n\tuseEffect(() => {\n\t\tif (!lastMessage) return\n\n\t\tconst parsed = JSON.parse(lastMessage)\n\t\tconst result = EventSchema.safeParse(parsed)\n\t\tif (!result.success) {\n\t\t\tconsole.error(result.error.flatten())\n\t\t\treturn\n\t\t}\n\t\tswitch (result.data.type) {\n\t\t\tcase EVENTS.USER_CODE_RECEIVED: {\n\t\t\t\tsetUserCodeInfo(result.data)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_RESOLVED: {\n\t\t\t\trevalidator.revalidate()\n\t\t\t\tnavigate('/')\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_REJECTED: {\n\t\t\t\tsetAuthError(result.data.error)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}, [lastMessage, navigate, revalidator])\n\n\treturn (\n\t\t<main className=\"flex h-full w-full flex-grow flex-col items-center justify-center p-10 text-center\">\n\t\t\t<div className=\"flex flex-col items-center\">\n\t\t\t\t<Logo className=\"h-16 w-16\" />\n\t\t\t\t<h1 className=\"pt-5 text-2xl font-semibold md:text-3xl\">\n\t\t\t\t\tAuthenticate with EpicWeb.dev\n\t\t\t\t</h1>\n\t\t\t\t<h2 className=\"max-w-sm pt-3 text-base text-gray-700 dark:text-gray-300\">\n\t\t\t\t\tIf you have purchased Epic Web, you'll be able to watch videos, track\n\t\t\t\t\tprogress, and more!\n\t\t\t\t</h2>\n\t\t\t\t<div className=\"flex w-full flex-col items-center pt-5\">\n\t\t\t\t\t{userCodeInfo ? (\n\t\t\t\t\t\t<div className=\"flex w-full flex-col items-center gap-3\">\n\t\t\t\t\t\t\t<div className=\"my-2 flex w-full flex-col items-center gap-2\">\n\t\t\t\t\t\t\t\t<p className=\"text-lg\">Your verification code is: </p>\n\t\t\t\t\t\t\t\t<div className=\"mb-3 w-full bg-gray-100 px-5 py-3 text-lg font-bold dark:bg-black/40\">\n\t\t\t\t\t\t\t\t\t<code>{userCodeInfo.code}</code>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<ButtonLink\n\t\t\t\t\t\t\t\tvarient=\"primary\"\n\t\t\t\t\t\t\t\tto={userCodeInfo.url}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t\t\t\t\tonClick={() => setClickedVerificationLink(true)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tContinue\n\t\t\t\t\t\t\t</ButtonLink>\n\t\t\t\t\t\t\t{clickedVerificationLink ? (\n\t\t\t\t\t\t\t\t<div className=\"pt-5 opacity-60\">\n\t\t\t\t\t\t\t\t\t<Loading>Waiting for confirmation</Loading>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<loginFetcher.Form method=\"POST\">\n\t\t\t\t\t\t\t<Button varient=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t{loginFetcher.state === 'idle' &&\n\t\t\t\t\t\t\t\tloginFetcher.data?.status !== 'pending'\n\t\t\t\t\t\t\t\t\t? `Retrieve Code`\n\t\t\t\t\t\t\t\t\t: `Retrieving Code...`}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</loginFetcher.Form>\n\t\t\t\t\t)}\n\t\t\t\t\t{authError ? (\n\t\t\t\t\t\t<div className=\"mt-4 text-red-500\">\n\t\t\t\t\t\t\tThere was an error: <pre>{authError}</pre>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</main>\n\t)\n}\n\nfunction Logo({ className = '' }) {\n\t// svg sprites do not support gradients\n\treturn (\n\t\t<svg\n\t\t\tclassName={className}\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<path\n\t\t\t\td=\"M12.438 11.5677C12.0131 11.8026 11.5249 12.0534 10.9784 12.3047C8.80704 13.3031 5.70429 14.314 1.986 14.3555L1.55773 14.3603L1.48003 13.9391C1.36509 13.316 1.29793 12.6714 1.29793 12.006C1.29793 6.10441 6.09863 1.30372 12.0002 1.30372C13.6287 1.30372 15.1745 1.66961 16.5585 2.32369L17.9801 1.59897C16.2189 0.582162 14.1769 0 12.0002 0C5.38709 0 0 5.38709 0 12.0002C0 14.6402 0.858474 17.0847 2.31072 19.0692C4.79741 18.6457 6.35749 17.6495 6.35749 17.6495C6.35749 17.6495 5.36137 19.2075 4.93785 21.6946C6.92114 23.1439 9.36321 24.0005 12.0002 24.0005C18.6134 24.0005 24.0005 18.6134 24.0005 12.0002C24.0005 9.82732 23.4199 7.78762 22.4053 6.02738L21.6818 7.44613C22.3364 8.83057 22.7025 10.3769 22.7025 12.006C22.7025 17.9076 17.9018 22.7083 12.0002 22.7083C11.3345 22.7083 10.6959 22.6411 10.0681 22.5264L9.646 22.4493L9.65079 22.0203C9.6923 18.2991 10.7031 15.1964 11.7016 13.0257C11.9527 12.4797 12.2033 11.9921 12.438 11.5677Z\"\n\t\t\t\tfill=\"url(#epicGradient)\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M18.2525 9.31052L15.4992 8.50683L14.6953 5.74778L23.8291 0.171387L18.2525 9.31052Z\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t/>\n\t\t\t<defs>\n\t\t\t\t<linearGradient\n\t\t\t\t\tid=\"epicGradient\"\n\t\t\t\t\tx1=\"16.9703\"\n\t\t\t\t\ty1=\"7.03022\"\n\t\t\t\t\tx2=\"7.05798\"\n\t\t\t\t\ty2=\"16.948\"\n\t\t\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\t\t>\n\t\t\t\t\t<stop stopColor=\"#4F75FF\" />\n\t\t\t\t\t<stop offset=\"1\" stopColor=\"#30AFFF\" />\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>\n\t)\n}\n"],"names":["EVENTS","CodeReceivedEventSchema","z","object","type","literal","USER_CODE_RECEIVED","code","string","url","AuthResolvedEventSchema","AUTH_RESOLVED","AuthRejectedEventSchema","AUTH_REJECTED","error","optional","default","EventSchema","union","handle","getSitemapEntries","Login","loginFetcher","useFetcher","clickedVerificationLink","setClickedVerificationLink","useState","authError","setAuthError","userCodeInfo","setUserCodeInfo","navigate","useNavigate","revalidator","useRevalidator","lastMessage","useEventSource","useEffect","parsed","JSON","parse","result","safeParse","success","console","flatten","data","revalidate","className","children","jsxs","jsx","Logo","ButtonLink","varient","to","target","rel","onClick","Loading","Form","method","Button","state","status","viewBox","fill","xmlns","d","id","x1","y1","x2","y2","gradientUnits","stopColor","offset"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"login-4cvVFzF8.js","sources":["../../../app/utils/auth-events.ts","../../../app/routes/login-sse.tsx","../../../app/routes/_app+/login.tsx"],"sourcesContent":["export const EVENTS = {\n\tUSER_CODE_RECEIVED: 'USER_CODE_RECEIVED',\n\tAUTH_RESOLVED: 'AUTH_RESOLVED',\n\tAUTH_REJECTED: 'AUTH_REJECTED',\n} as const\nexport type EventTypes = keyof typeof EVENTS\n","import { type LoaderFunctionArgs } from '@remix-run/node'\nimport { eventStream } from 'remix-utils/sse/server'\nimport { z } from 'zod'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { authEmitter } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\n\nconst CodeReceivedEventSchema = z.object({\n\ttype: z.literal(EVENTS.USER_CODE_RECEIVED),\n\tcode: z.string(),\n\turl: z.string(),\n})\nconst AuthResolvedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_RESOLVED),\n})\nconst AuthRejectedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_REJECTED),\n\terror: z.string().optional().default('Unknown error'),\n})\nexport const EventSchema = z.union([\n\tCodeReceivedEventSchema,\n\tAuthResolvedEventSchema,\n\tAuthRejectedEventSchema,\n])\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tensureUndeployed()\n\treturn eventStream(request.signal, function setup(send) {\n\t\tfunction handleCodeReceived(data: any) {\n\t\t\tsend({\n\t\t\t\tdata: JSON.stringify(\n\t\t\t\t\tCodeReceivedEventSchema.parse({\n\t\t\t\t\t\ttype: EVENTS.USER_CODE_RECEIVED,\n\t\t\t\t\t\t...data,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t})\n\t\t}\n\t\tfunction handleAuthResolved() {\n\t\t\tsend({ data: JSON.stringify({ type: EVENTS.AUTH_RESOLVED }) })\n\t\t}\n\t\tfunction handleAuthRejected(data: any) {\n\t\t\tconst result = AuthRejectedEventSchema.safeParse(data)\n\t\t\tif (result.success) {\n\t\t\t\tsend({ data: JSON.stringify(result.data) })\n\t\t\t} else {\n\t\t\t\tconsole.error('Error parsing auth rejected event', result.error, data)\n\t\t\t}\n\t\t}\n\t\tauthEmitter.on(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\tauthEmitter.on(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\tauthEmitter.on(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\treturn () => {\n\t\t\tauthEmitter.off(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\t\tauthEmitter.off(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\t\tauthEmitter.off(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\t}\n\t})\n}\n","import { getAuthInfo } from '@epic-web/workshop-utils/db.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport { json, redirect } from '@remix-run/node'\nimport { useFetcher, useNavigate, useRevalidator } from '@remix-run/react'\nimport { useEffect, useState } from 'react'\nimport { useEventSource } from 'remix-utils/sse/react'\nimport { Button, ButtonLink } from '#app/components/button.tsx'\nimport { Loading } from '#app/components/loading.tsx'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { registerDevice } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\nimport { EventSchema } from '../login-sse.tsx'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => null,\n}\n\nexport async function loader() {\n\tensureUndeployed()\n\tconst isAuthenticated = Boolean(await getAuthInfo())\n\tif (isAuthenticated) throw redirect('/account')\n\treturn json({})\n}\n\nexport async function action() {\n\tensureUndeployed()\n\tvoid registerDevice()\n\treturn json({ status: 'pending' } as const)\n}\n\nexport default function Login() {\n\tconst loginFetcher = useFetcher<typeof action>()\n\tconst [clickedVerificationLink, setClickedVerificationLink] = useState(false)\n\tconst [authError, setAuthError] = useState<null | string>(null)\n\tconst [userCodeInfo, setUserCodeInfo] = useState<null | {\n\t\tcode: string\n\t\turl: string\n\t}>(null)\n\tconst navigate = useNavigate()\n\tconst revalidator = useRevalidator()\n\tconst lastMessage = useEventSource(`/login-sse`)\n\tuseEffect(() => {\n\t\tif (!lastMessage) return\n\n\t\tconst parsed = JSON.parse(lastMessage)\n\t\tconst result = EventSchema.safeParse(parsed)\n\t\tif (!result.success) {\n\t\t\tconsole.error(result.error.flatten())\n\t\t\treturn\n\t\t}\n\t\tswitch (result.data.type) {\n\t\t\tcase EVENTS.USER_CODE_RECEIVED: {\n\t\t\t\tsetUserCodeInfo(result.data)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_RESOLVED: {\n\t\t\t\trevalidator.revalidate()\n\t\t\t\tnavigate('/')\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_REJECTED: {\n\t\t\t\tsetAuthError(result.data.error)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}, [lastMessage, navigate, revalidator])\n\n\treturn (\n\t\t<main className=\"flex h-full w-full flex-grow flex-col items-center justify-center p-10 text-center\">\n\t\t\t<div className=\"flex flex-col items-center\">\n\t\t\t\t<Logo className=\"h-16 w-16\" />\n\t\t\t\t<h1 className=\"pt-5 text-2xl font-semibold md:text-3xl\">\n\t\t\t\t\tAuthenticate with EpicWeb.dev\n\t\t\t\t</h1>\n\t\t\t\t<h2 className=\"max-w-sm pt-3 text-base text-gray-700 dark:text-gray-300\">\n\t\t\t\t\tIf you have purchased Epic Web, you'll be able to watch videos, track\n\t\t\t\t\tprogress, and more!\n\t\t\t\t</h2>\n\t\t\t\t<div className=\"flex w-full flex-col items-center pt-5\">\n\t\t\t\t\t{userCodeInfo ? (\n\t\t\t\t\t\t<div className=\"flex w-full flex-col items-center gap-3\">\n\t\t\t\t\t\t\t<div className=\"my-2 flex w-full flex-col items-center gap-2\">\n\t\t\t\t\t\t\t\t<p className=\"text-lg\">Your verification code is: </p>\n\t\t\t\t\t\t\t\t<div className=\"mb-3 w-full bg-gray-100 px-5 py-3 text-lg font-bold dark:bg-black/40\">\n\t\t\t\t\t\t\t\t\t<code>{userCodeInfo.code}</code>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<ButtonLink\n\t\t\t\t\t\t\t\tvarient=\"primary\"\n\t\t\t\t\t\t\t\tto={userCodeInfo.url}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t\t\t\t\tonClick={() => setClickedVerificationLink(true)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tContinue\n\t\t\t\t\t\t\t</ButtonLink>\n\t\t\t\t\t\t\t{clickedVerificationLink ? (\n\t\t\t\t\t\t\t\t<div className=\"pt-5 opacity-60\">\n\t\t\t\t\t\t\t\t\t<Loading>Waiting for confirmation</Loading>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<loginFetcher.Form method=\"POST\">\n\t\t\t\t\t\t\t<Button varient=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t{loginFetcher.state === 'idle' &&\n\t\t\t\t\t\t\t\tloginFetcher.data?.status !== 'pending'\n\t\t\t\t\t\t\t\t\t? `Retrieve Code`\n\t\t\t\t\t\t\t\t\t: `Retrieving Code...`}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</loginFetcher.Form>\n\t\t\t\t\t)}\n\t\t\t\t\t{authError ? (\n\t\t\t\t\t\t<div className=\"mt-4 text-red-500\">\n\t\t\t\t\t\t\tThere was an error: <pre>{authError}</pre>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</main>\n\t)\n}\n\nfunction Logo({ className = '' }) {\n\t// svg sprites do not support gradients\n\treturn (\n\t\t<svg\n\t\t\tclassName={className}\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<path\n\t\t\t\td=\"M12.438 11.5677C12.0131 11.8026 11.5249 12.0534 10.9784 12.3047C8.80704 13.3031 5.70429 14.314 1.986 14.3555L1.55773 14.3603L1.48003 13.9391C1.36509 13.316 1.29793 12.6714 1.29793 12.006C1.29793 6.10441 6.09863 1.30372 12.0002 1.30372C13.6287 1.30372 15.1745 1.66961 16.5585 2.32369L17.9801 1.59897C16.2189 0.582162 14.1769 0 12.0002 0C5.38709 0 0 5.38709 0 12.0002C0 14.6402 0.858474 17.0847 2.31072 19.0692C4.79741 18.6457 6.35749 17.6495 6.35749 17.6495C6.35749 17.6495 5.36137 19.2075 4.93785 21.6946C6.92114 23.1439 9.36321 24.0005 12.0002 24.0005C18.6134 24.0005 24.0005 18.6134 24.0005 12.0002C24.0005 9.82732 23.4199 7.78762 22.4053 6.02738L21.6818 7.44613C22.3364 8.83057 22.7025 10.3769 22.7025 12.006C22.7025 17.9076 17.9018 22.7083 12.0002 22.7083C11.3345 22.7083 10.6959 22.6411 10.0681 22.5264L9.646 22.4493L9.65079 22.0203C9.6923 18.2991 10.7031 15.1964 11.7016 13.0257C11.9527 12.4797 12.2033 11.9921 12.438 11.5677Z\"\n\t\t\t\tfill=\"url(#epicGradient)\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M18.2525 9.31052L15.4992 8.50683L14.6953 5.74778L23.8291 0.171387L18.2525 9.31052Z\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t/>\n\t\t\t<defs>\n\t\t\t\t<linearGradient\n\t\t\t\t\tid=\"epicGradient\"\n\t\t\t\t\tx1=\"16.9703\"\n\t\t\t\t\ty1=\"7.03022\"\n\t\t\t\t\tx2=\"7.05798\"\n\t\t\t\t\ty2=\"16.948\"\n\t\t\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\t\t>\n\t\t\t\t\t<stop stopColor=\"#4F75FF\" />\n\t\t\t\t\t<stop offset=\"1\" stopColor=\"#30AFFF\" />\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>\n\t)\n}\n"],"names":["EVENTS","CodeReceivedEventSchema","z","object","type","literal","USER_CODE_RECEIVED","code","string","url","AuthResolvedEventSchema","AUTH_RESOLVED","AuthRejectedEventSchema","AUTH_REJECTED","error","optional","default","EventSchema","union","handle","getSitemapEntries","Login","loginFetcher","useFetcher","clickedVerificationLink","setClickedVerificationLink","useState","authError","setAuthError","userCodeInfo","setUserCodeInfo","navigate","useNavigate","revalidator","useRevalidator","lastMessage","useEventSource","useEffect","parsed","JSON","parse","result","safeParse","success","console","flatten","data","revalidate","className","children","jsxs","jsx","Logo","ButtonLink","varient","to","target","rel","onClick","Loading","Form","method","Button","state","status","viewBox","fill","xmlns","d","id","x1","y1","x2","y2","gradientUnits","stopColor","offset"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
window.__remixManifest={"entry":{"module":"/assets/entry.client-3M2p-8I3.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/root-Tcnfz99O.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js","/assets/clsx-B-dksMZM.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/use-hydrated-Citou692.js","/assets/error-boundary-DDTvdkB4.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-B-hHvmeV.js","/assets/index-BATSX33w.js","/assets/presence-Cr--lRCr.js","/assets/seo-pBpFCWsy.js"],"css":[]},"routes/$":{"id":"routes/$","parentId":"root","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_-DbrWZazo.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/error-boundary-DDTvdkB4.js"],"css":[]},"routes/_app+/_layout":{"id":"routes/_app+/_layout","parentId":"root","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-AgYGL72C.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/tooltip-BiHTe_7F.js","/assets/request-info-CEhUGODY.js","/assets/client-hints-DNUUFGmB.js","/assets/use-hydrated-Citou692.js","/assets/index-BXWoOGxB.js","/assets/user-D6tTg1yS.js","/assets/presence-Cr--lRCr.js","/assets/progress-BsY6hGPp.js","/assets/index-BATSX33w.js"],"css":[]},"routes/_app+/account":{"id":"routes/_app+/account","parentId":"routes/_app+/_layout","path":"account","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/account-7o6O4ruO.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/button-BklqyTPS.js","/assets/tooltip-BiHTe_7F.js","/assets/user-D6tTg1yS.js","/assets/presence-Cr--lRCr.js"],"css":[]},"routes/_app+/app.$appName+/$":{"id":"routes/_app+/app.$appName+/$","parentId":"routes/_app+/_layout","path":"app/:appName/*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/api.$":{"id":"routes/_app+/app.$appName+/api.$","parentId":"routes/_app+/_layout","path":"app/:appName/api/*","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/api._-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/epic_ws[.js]":{"id":"routes/_app+/app.$appName+/epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/epic_ws.js","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/index":{"id":"routes/_app+/app.$appName+/index","parentId":"routes/_app+/_layout","path":"app/:appName/","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-K6Dvbx-E.js","imports":[],"css":[]},"routes/_app+/app.$appName+/test.$testName":{"id":"routes/_app+/app.$appName+/test.$testName","parentId":"routes/_app+/_layout","path":"app/:appName/test/:testName","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test._testName-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/test.epic_ws[.js]":{"id":"routes/_app+/app.$appName+/test.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/test/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/discord":{"id":"routes/_app+/discord","parentId":"routes/_app+/_layout","path":"discord","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/discord-CHP4_JLJ.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/user-D6tTg1yS.js","/assets/discord-Dq4e30wV.js"],"css":[]},"routes/_app+/exercise+/_layout":{"id":"routes/_app+/exercise+/_layout","parentId":"routes/_app+/_layout","path":"exercise","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-BUs3av-e.js","imports":["/assets/index-1cKOJFpX.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber":{"id":"routes/_app+/exercise+/$exerciseNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber-Cq0nozYz.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js","/assets/clsx-B-dksMZM.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-Dx5GmdYq.js","/assets/mdx-M0kcP-mP.js","/assets/progress-BsY6hGPp.js","/assets/seo-pBpFCWsy.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/:stepNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber_._stepNumber-B5pmJ29o.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","path":":type","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_layout-DLVrpOki.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-BXWoOGxB.js","/assets/index-hogig2HK.js","/assets/index-Dx5GmdYq.js","/assets/error-boundary-DDTvdkB4.js","/assets/nav-chevrons-B82nbdyj.js","/assets/mdx-M0kcP-mP.js","/assets/progress-BsY6hGPp.js","/assets/set-playground-Cdy8VlVD.js","/assets/seo-pBpFCWsy.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"app","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/app-BiWJY58g.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/request-info-CEhUGODY.js","/assets/client-hints-DNUUFGmB.js","/assets/misc-ENVX3CWf.js","/assets/tooltip-BiHTe_7F.js","/assets/button-BklqyTPS.js","/assets/loading-C5uX0jJw.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-BATSX33w.js","/assets/preview-CqrRe2BV.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/index-Dm1ll1kT.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/tooltip-BiHTe_7F.js","/assets/index-BXWoOGxB.js","/assets/index-hogig2HK.js","/assets/request-info-CEhUGODY.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/accordion-BroSqIct.js","/assets/mdx-M0kcP-mP.js","/assets/use-event-source-A_0lEOPX.js","/assets/set-playground-Cdy8VlVD.js","/assets/button-BklqyTPS.js","/assets/diff-CpFxuKA2.js","/assets/error-boundary-DDTvdkB4.js","/assets/discord-Dq4e30wV.js","/assets/index-B-hHvmeV.js","/assets/tests-CmNNBElK.js","/assets/preview-CqrRe2BV.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"test","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test-D9HsTvpe.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/tooltip-BiHTe_7F.js","/assets/index-BXWoOGxB.js","/assets/index-hogig2HK.js","/assets/request-info-CEhUGODY.js","/assets/client-hints-DNUUFGmB.js","/assets/progress-bar-CSvo1ZXP.js","/assets/accordion-BroSqIct.js","/assets/index-BATSX33w.js","/assets/use-event-source-A_0lEOPX.js","/assets/set-playground-Cdy8VlVD.js","/assets/tests-CmNNBElK.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.finished":{"id":"routes/_app+/exercise+/$exerciseNumber_.finished","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_.finished-Q9qnPuZX.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js","/assets/clsx-B-dksMZM.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-Dx5GmdYq.js","/assets/nav-chevrons-B82nbdyj.js","/assets/mdx-M0kcP-mP.js","/assets/progress-BsY6hGPp.js","/assets/seo-pBpFCWsy.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/finished":{"id":"routes/_app+/finished","parentId":"routes/_app+/_layout","path":"finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/finished-Bm-bCUU2.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js","/assets/clsx-B-dksMZM.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-Dx5GmdYq.js","/assets/nav-chevrons-B82nbdyj.js","/assets/mdx-M0kcP-mP.js","/assets/seo-pBpFCWsy.js","/assets/progress-BsY6hGPp.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/index":{"id":"routes/_app+/index","parentId":"routes/_app+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/index-Tfdnz1AB.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js","/assets/clsx-B-dksMZM.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/index-Dx5GmdYq.js","/assets/error-boundary-DDTvdkB4.js","/assets/mdx-M0kcP-mP.js","/assets/progress-BsY6hGPp.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/login":{"id":"routes/_app+/login","parentId":"routes/_app+/_layout","path":"login","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/login-4cvVFzF8.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/request-info-CEhUGODY.js","/assets/client-hints-DNUUFGmB.js","/assets/use-event-source-A_0lEOPX.js","/assets/button-BklqyTPS.js","/assets/loading-C5uX0jJw.js"],"css":[]},"routes/_app+/support":{"id":"routes/_app+/support","parentId":"routes/_app+/_layout","path":"support","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/support-hcqGIpir.js","imports":["/assets/index-1cKOJFpX.js","/assets/components-CME-nGId.js"],"css":[]},"routes/admin+/_layout":{"id":"routes/admin+/_layout","parentId":"root","path":"admin","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-C8uU4Hwj.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/tooltip-BiHTe_7F.js","/assets/progress-BsY6hGPp.js"],"css":[]},"routes/admin+/apps":{"id":"routes/admin+/apps","parentId":"routes/admin+/_layout","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/apps-DP2rzg_V.js","imports":[],"css":[]},"routes/admin+/cache":{"id":"routes/admin+/cache","parentId":"routes/admin+/_layout","path":"cache","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/cache-l0sNRNKZ.js","imports":[],"css":[]},"routes/apps":{"id":"routes/apps","parentId":"root","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/apps-l0sNRNKZ.js","imports":[],"css":[]},"routes/diff":{"id":"routes/diff","parentId":"root","path":"diff","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/diff-Cw8ktQ1-.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/tooltip-BiHTe_7F.js","/assets/index-BXWoOGxB.js","/assets/index-hogig2HK.js","/assets/request-info-CEhUGODY.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/epic-video-iluUs1-s.js","/assets/progress-bar-CSvo1ZXP.js","/assets/accordion-BroSqIct.js","/assets/mdx-M0kcP-mP.js","/assets/diff-CpFxuKA2.js","/assets/nav-chevrons-B82nbdyj.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/discord.callback":{"id":"routes/discord.callback","parentId":"root","path":"discord/callback","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/discord.callback-l0sNRNKZ.js","imports":[],"css":[]},"routes/exercises":{"id":"routes/exercises","parentId":"root","path":"exercises","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/exercises-l0sNRNKZ.js","imports":[],"css":[]},"routes/launch-editor":{"id":"routes/launch-editor","parentId":"root","path":"launch-editor","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/launch-editor-l0sNRNKZ.js","imports":[],"css":[]},"routes/login-sse":{"id":"routes/login-sse","parentId":"root","path":"login-sse","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/login-sse-l0sNRNKZ.js","imports":[],"css":[]},"routes/og":{"id":"routes/og","parentId":"root","path":"og","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/og-l0sNRNKZ.js","imports":[],"css":[]},"routes/onboarding":{"id":"routes/onboarding","parentId":"root","path":"onboarding","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/onboarding-Bib-wh6d.js","imports":["/assets/index-1cKOJFpX.js","/assets/clsx-B-dksMZM.js","/assets/components-CME-nGId.js","/assets/misc-ENVX3CWf.js","/assets/request-info-CEhUGODY.js","/assets/tooltip-BiHTe_7F.js","/assets/client-hints-DNUUFGmB.js","/assets/index-BATSX33w.js","/assets/loading-C5uX0jJw.js","/assets/user-D6tTg1yS.js","/assets/button-BklqyTPS.js","/assets/epic-video-iluUs1-s.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/processes":{"id":"routes/processes","parentId":"root","path":"processes","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/processes-l0sNRNKZ.js","imports":[],"css":[]},"routes/progress":{"id":"routes/progress","parentId":"root","path":"progress","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/progress-l0sNRNKZ.js","imports":[],"css":[]},"routes/robots[.]txt":{"id":"routes/robots[.]txt","parentId":"root","path":"robots.txt","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/robots_._txt-l0sNRNKZ.js","imports":[],"css":[]},"routes/set-playground":{"id":"routes/set-playground","parentId":"root","path":"set-playground","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/set-playground-l0sNRNKZ.js","imports":[],"css":[]},"routes/sitemap[.]xml":{"id":"routes/sitemap[.]xml","parentId":"root","path":"sitemap.xml","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/sitemap_._xml-l0sNRNKZ.js","imports":[],"css":[]},"routes/start":{"id":"routes/start","parentId":"root","path":"start","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/start-l0sNRNKZ.js","imports":[],"css":[]},"routes/test":{"id":"routes/test","parentId":"root","path":"test","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test-l0sNRNKZ.js","imports":[],"css":[]},"routes/theme/index":{"id":"routes/theme/index","parentId":"root","path":"theme","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-l0sNRNKZ.js","imports":[],"css":[]},"routes/update-mdx-cache":{"id":"routes/update-mdx-cache","parentId":"root","path":"update-mdx-cache","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/update-mdx-cache-l0sNRNKZ.js","imports":[],"css":[]},"routes/video-player/index":{"id":"routes/video-player/index","parentId":"root","path":"video-player","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-DP2rzg_V.js","imports":[],"css":[]}},"url":"/assets/manifest-746b2907.js","version":"746b2907"};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var Qt=Object.defineProperty;var Lt=n=>{throw TypeError(n)};var te=(n,e,i)=>e in n?Qt(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i;var O=(n,e,i)=>te(n,typeof e!="symbol"?e+"":e,i),xt=(n,e,i)=>e.has(n)||Lt("Cannot "+i);var t=(n,e,i)=>(xt(n,e,"read from private field"),i?i.call(n):e.get(n)),b=(n,e,i)=>e.has(n)?Lt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,i),f=(n,e,i,s)=>(xt(n,e,"write to private field"),s?s.call(n,i):e.set(n,i),i),u=(n,e,i)=>(xt(n,e,"access private method"),i);var mt=(n,e,i,s)=>({set _(o){f(n,e,o,i)},get _(){return t(n,e,s)}});import{j as g,r as at}from"./index-1cKOJFpX.js";import{c as St}from"./clsx-B-dksMZM.js";import{d as ee,L as Ht,a as ie,r as se,u as ne}from"./components-C17zb3Us.js";import{V as re,D as oe}from"./epic-video-DGVKtAan.js";import{I as ae,c as he,H as ht,A as le}from"./misc-Bt-_bj1O.js";import{s as ce}from"./progress-bar-DMef_aq8.js";import{u as ue}from"./request-info-DU15ezmn.js";function fe(){const n=ee("root");if(!n)throw new Error("useApps requires a data object from the root loader");return n.apps}function Ut(n){const e=ie();return at.useEffect(()=>{e.state==="idle"&&e.data!=null&&(n==null||n("fetcher-done"))},[e,n]),e}function de({file:n,appFile:e,appName:i,syncTo:s,line:o,column:r,children:a,onUpdate:h}){var W;const c=Ut(h),m=typeof e=="string"?[e]:e,F=n?"file":e?"appFile":"",w=s!=null&&s.file?"file":s!=null&&s.appFile?"appFile":"";return g.jsxs(c.Form,{action:"/launch-editor",method:"POST",className:"flex items-center",children:[ce,g.jsx("input",{type:"hidden",name:"line",value:o}),g.jsx("input",{type:"hidden",name:"column",value:r}),g.jsx("input",{type:"hidden",name:"type",value:F}),g.jsx("input",{type:"hidden",name:"file",value:n}),g.jsx("input",{type:"hidden",name:"appName",value:i}),m==null?void 0:m.map(_=>g.jsx("input",{type:"hidden",name:"appFile",value:_},_)),s?g.jsxs(g.Fragment,{children:[g.jsx("input",{type:"hidden",name:"syncTo.type",value:w}),g.jsx("input",{type:"hidden",name:"syncTo.file",value:s.file}),g.jsx("input",{type:"hidden",name:"syncTo.appName",value:s.appName}),g.jsx("input",{type:"hidden",name:"syncTo.appFile",value:s.appFile})]}):null,g.jsx("button",{type:"submit",className:St("launch_button",c.state==="idle"?null:"cursor-progress",((W=c.data)==null?void 0:W.status)==="error"?"cursor-not-allowed":null),children:a})]})}function pe({file:n,appFile:e,appName:i,line:s,children:o}){const r=fe(),a=ue();if(Array.isArray(e))return g.jsx("div",{children:"Cannot open more than one file"});if(n){const m=F=>F.replace(/\\/g,"/");return g.jsx("a",{className:"launch_button !no-underline",href:m(n).replace(m(ENV.EPICSHOP_CONTEXT_CWD),ENV.EPICSHOP_GITHUB_ROOT)+(s?`#L${s}`:""),rel:"noreferrer",target:"_blank",children:o})}const h=r.find(m=>m.name===i),c=[...(h==null?void 0:h.relativePath.split(a.separator))??[],e+(s?`#L${s}`:"")].join("/");return g.jsx("a",{className:"launch_button !no-underline",href:`${ENV.EPICSHOP_GITHUB_ROOT}/${c}`,rel:"noreferrer",target:"_blank",children:o})}function Re({appFile:n="README.mdx",appName:e,file:i,relativePath:s}){const o=Ut(),r=h=>{if(!h.altKey||ENV.EPICSHOP_DEPLOYED)return;h.preventDefault();const c=new FormData,m=i?"file":"appFile";c.append(m,i??n),c.append("type",m),e&&c.append("appName",e),o.submit(c,{method:"POST",action:"/launch-editor"})},a=ENV.EPICSHOP_GITHUB_ROOT.replace(/\/tree\/|\/blob\//,"/edit/");return g.jsxs(Ht,{className:"self-center font-mono text-sm",onClick:r,target:"_blank",to:`${a}/${s}/${n}`.replace(/\\/g,"/"),children:[g.jsx("span",{className:"block md:hidden",children:"Edit on GitHub"}),g.jsx("span",{className:"hidden md:block",children:"Edit this page on GitHub"})]})}const Vt=ENV.EPICSHOP_DEPLOYED?pe:de,lt=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Bt=new Set,At=typeof process=="object"&&process?process:{},$t=(n,e,i,s)=>{typeof At.emitWarning=="function"?At.emitWarning(n,e,i,s):console.error(`[${i}] ${e}: ${n}`)};let yt=globalThis.AbortController,It=globalThis.AbortSignal;var Mt;if(typeof yt>"u"){It=class{constructor(){O(this,"onabort");O(this,"_onabort",[]);O(this,"reason");O(this,"aborted",!1)}addEventListener(s,o){this._onabort.push(o)}},yt=class{constructor(){O(this,"signal",new It);e()}abort(s){var o,r;if(!this.signal.aborted){this.signal.reason=s,this.signal.aborted=!0;for(const a of this.signal._onabort)a(s);(r=(o=this.signal).onabort)==null||r.call(o,s)}}};let n=((Mt=At.env)==null?void 0:Mt.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const e=()=>{n&&(n=!1,$t("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}const ge=n=>!Bt.has(n),Q=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),qt=n=>Q(n)?n<=Math.pow(2,8)?Uint8Array:n<=Math.pow(2,16)?Uint16Array:n<=Math.pow(2,32)?Uint32Array:n<=Number.MAX_SAFE_INTEGER?bt:null:null;class bt extends Array{constructor(e){super(e),this.fill(0)}}var ct;const nt=class nt{constructor(e,i){O(this,"heap");O(this,"length");if(!t(nt,ct))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new i(e),this.length=0}static create(e){const i=qt(e);if(!i)return[];f(nt,ct,!0);const s=new nt(e,i);return f(nt,ct,!1),s}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}};ct=new WeakMap,b(nt,ct,!1);let Ft=nt;var Gt,kt,U,I,V,B,ut,A,$,v,E,p,N,M,z,C,q,T,X,Y,G,K,it,R,l,Ct,rt,Z,pt,k,Xt,ot,ft,gt,tt,et,Tt,wt,_t,S,Dt,dt;const Nt=class Nt{constructor(e){b(this,l);b(this,U);b(this,I);b(this,V);b(this,B);b(this,ut);O(this,"ttl");O(this,"ttlResolution");O(this,"ttlAutopurge");O(this,"updateAgeOnGet");O(this,"updateAgeOnHas");O(this,"allowStale");O(this,"noDisposeOnSet");O(this,"noUpdateTTL");O(this,"maxEntrySize");O(this,"sizeCalculation");O(this,"noDeleteOnFetchRejection");O(this,"noDeleteOnStaleGet");O(this,"allowStaleOnFetchAbort");O(this,"allowStaleOnFetchRejection");O(this,"ignoreFetchAbort");b(this,A);b(this,$);b(this,v);b(this,E);b(this,p);b(this,N);b(this,M);b(this,z);b(this,C);b(this,q);b(this,T);b(this,X);b(this,Y);b(this,G);b(this,K);b(this,it);b(this,R);b(this,rt,()=>{});b(this,Z,()=>{});b(this,pt,()=>{});b(this,k,()=>!1);b(this,ot,e=>{});b(this,ft,(e,i,s)=>{});b(this,gt,(e,i,s,o)=>{if(s||o)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});O(this,Gt,"LRUCache");const{max:i=0,ttl:s,ttlResolution:o=1,ttlAutopurge:r,updateAgeOnGet:a,updateAgeOnHas:h,allowStale:c,dispose:m,disposeAfter:F,noDisposeOnSet:w,noUpdateTTL:W,maxSize:_=0,maxEntrySize:P=0,sizeCalculation:x,fetchMethod:j,noDeleteOnFetchRejection:d,noDeleteOnStaleGet:y,allowStaleOnFetchRejection:L,allowStaleOnFetchAbort:D,ignoreFetchAbort:H}=e;if(i!==0&&!Q(i))throw new TypeError("max option must be a nonnegative integer");const st=i?qt(i):Array;if(!st)throw new Error("invalid max value: "+i);if(f(this,U,i),f(this,I,_),this.maxEntrySize=P||t(this,I),this.sizeCalculation=x,this.sizeCalculation){if(!t(this,I)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(j!==void 0&&typeof j!="function")throw new TypeError("fetchMethod must be a function if specified");if(f(this,ut,j),f(this,it,!!j),f(this,v,new Map),f(this,E,new Array(i).fill(void 0)),f(this,p,new Array(i).fill(void 0)),f(this,N,new st(i)),f(this,M,new st(i)),f(this,z,0),f(this,C,0),f(this,q,Ft.create(i)),f(this,A,0),f(this,$,0),typeof m=="function"&&f(this,V,m),typeof F=="function"?(f(this,B,F),f(this,T,[])):(f(this,B,void 0),f(this,T,void 0)),f(this,K,!!t(this,V)),f(this,R,!!t(this,B)),this.noDisposeOnSet=!!w,this.noUpdateTTL=!!W,this.noDeleteOnFetchRejection=!!d,this.allowStaleOnFetchRejection=!!L,this.allowStaleOnFetchAbort=!!D,this.ignoreFetchAbort=!!H,this.maxEntrySize!==0){if(t(this,I)!==0&&!Q(t(this,I)))throw new TypeError("maxSize must be a positive integer if specified");if(!Q(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");u(this,l,Xt).call(this)}if(this.allowStale=!!c,this.noDeleteOnStaleGet=!!y,this.updateAgeOnGet=!!a,this.updateAgeOnHas=!!h,this.ttlResolution=Q(o)||o===0?o:1,this.ttlAutopurge=!!r,this.ttl=s||0,this.ttl){if(!Q(this.ttl))throw new TypeError("ttl must be a positive integer if specified");u(this,l,Ct).call(this)}if(t(this,U)===0&&this.ttl===0&&t(this,I)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!t(this,U)&&!t(this,I)){const J="LRU_CACHE_UNBOUNDED";ge(J)&&(Bt.add(J),$t("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",J,Nt))}}static unsafeExposeInternals(e){return{starts:t(e,Y),ttls:t(e,G),sizes:t(e,X),keyMap:t(e,v),keyList:t(e,E),valList:t(e,p),next:t(e,N),prev:t(e,M),get head(){return t(e,z)},get tail(){return t(e,C)},free:t(e,q),isBackgroundFetch:i=>{var s;return u(s=e,l,S).call(s,i)},backgroundFetch:(i,s,o,r)=>{var a;return u(a=e,l,_t).call(a,i,s,o,r)},moveToTail:i=>{var s;return u(s=e,l,dt).call(s,i)},indexes:i=>{var s;return u(s=e,l,tt).call(s,i)},rindexes:i=>{var s;return u(s=e,l,et).call(s,i)},isStale:i=>{var s;return t(s=e,k).call(s,i)}}}get max(){return t(this,U)}get maxSize(){return t(this,I)}get calculatedSize(){return t(this,$)}get size(){return t(this,A)}get fetchMethod(){return t(this,ut)}get dispose(){return t(this,V)}get disposeAfter(){return t(this,B)}getRemainingTTL(e){return t(this,v).has(e)?1/0:0}*entries(){for(const e of u(this,l,tt).call(this))t(this,p)[e]!==void 0&&t(this,E)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield[t(this,E)[e],t(this,p)[e]])}*rentries(){for(const e of u(this,l,et).call(this))t(this,p)[e]!==void 0&&t(this,E)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield[t(this,E)[e],t(this,p)[e]])}*keys(){for(const e of u(this,l,tt).call(this)){const i=t(this,E)[e];i!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield i)}}*rkeys(){for(const e of u(this,l,et).call(this)){const i=t(this,E)[e];i!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield i)}}*values(){for(const e of u(this,l,tt).call(this))t(this,p)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield t(this,p)[e])}*rvalues(){for(const e of u(this,l,et).call(this))t(this,p)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield t(this,p)[e])}[(kt=Symbol.iterator,Gt=Symbol.toStringTag,kt)](){return this.entries()}find(e,i={}){for(const s of u(this,l,tt).call(this)){const o=t(this,p)[s],r=u(this,l,S).call(this,o)?o.__staleWhileFetching:o;if(r!==void 0&&e(r,t(this,E)[s],this))return this.get(t(this,E)[s],i)}}forEach(e,i=this){for(const s of u(this,l,tt).call(this)){const o=t(this,p)[s],r=u(this,l,S).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&e.call(i,r,t(this,E)[s],this)}}rforEach(e,i=this){for(const s of u(this,l,et).call(this)){const o=t(this,p)[s],r=u(this,l,S).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&e.call(i,r,t(this,E)[s],this)}}purgeStale(){let e=!1;for(const i of u(this,l,et).call(this,{allowStale:!0}))t(this,k).call(this,i)&&(this.delete(t(this,E)[i]),e=!0);return e}info(e){const i=t(this,v).get(e);if(i===void 0)return;const s=t(this,p)[i],o=u(this,l,S).call(this,s)?s.__staleWhileFetching:s;if(o===void 0)return;const r={value:o};if(t(this,G)&&t(this,Y)){const a=t(this,G)[i],h=t(this,Y)[i];if(a&&h){const c=a-(lt.now()-h);r.ttl=c,r.start=Date.now()}}return t(this,X)&&(r.size=t(this,X)[i]),r}dump(){const e=[];for(const i of u(this,l,tt).call(this,{allowStale:!0})){const s=t(this,E)[i],o=t(this,p)[i],r=u(this,l,S).call(this,o)?o.__staleWhileFetching:o;if(r===void 0||s===void 0)continue;const a={value:r};if(t(this,G)&&t(this,Y)){a.ttl=t(this,G)[i];const h=lt.now()-t(this,Y)[i];a.start=Math.floor(Date.now()-h)}t(this,X)&&(a.size=t(this,X)[i]),e.unshift([s,a])}return e}load(e){this.clear();for(const[i,s]of e){if(s.start){const o=Date.now()-s.start;s.start=lt.now()-o}this.set(i,s.value,s)}}set(e,i,s={}){var W,_,P,x,j;if(i===void 0)return this.delete(e),this;const{ttl:o=this.ttl,start:r,noDisposeOnSet:a=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:c}=s;let{noUpdateTTL:m=this.noUpdateTTL}=s;const F=t(this,gt).call(this,e,i,s.size||0,h);if(this.maxEntrySize&&F>this.maxEntrySize)return c&&(c.set="miss",c.maxEntrySizeExceeded=!0),this.delete(e),this;let w=t(this,A)===0?void 0:t(this,v).get(e);if(w===void 0)w=t(this,A)===0?t(this,C):t(this,q).length!==0?t(this,q).pop():t(this,A)===t(this,U)?u(this,l,wt).call(this,!1):t(this,A),t(this,E)[w]=e,t(this,p)[w]=i,t(this,v).set(e,w),t(this,N)[t(this,C)]=w,t(this,M)[w]=t(this,C),f(this,C,w),mt(this,A)._++,t(this,ft).call(this,w,F,c),c&&(c.set="add"),m=!1;else{u(this,l,dt).call(this,w);const d=t(this,p)[w];if(i!==d){if(t(this,it)&&u(this,l,S).call(this,d)){d.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:y}=d;y!==void 0&&!a&&(t(this,K)&&((W=t(this,V))==null||W.call(this,y,e,"set")),t(this,R)&&((_=t(this,T))==null||_.push([y,e,"set"])))}else a||(t(this,K)&&((P=t(this,V))==null||P.call(this,d,e,"set")),t(this,R)&&((x=t(this,T))==null||x.push([d,e,"set"])));if(t(this,ot).call(this,w),t(this,ft).call(this,w,F,c),t(this,p)[w]=i,c){c.set="replace";const y=d&&u(this,l,S).call(this,d)?d.__staleWhileFetching:d;y!==void 0&&(c.oldValue=y)}}else c&&(c.set="update")}if(o!==0&&!t(this,G)&&u(this,l,Ct).call(this),t(this,G)&&(m||t(this,pt).call(this,w,o,r),c&&t(this,Z).call(this,c,w)),!a&&t(this,R)&&t(this,T)){const d=t(this,T);let y;for(;y=d==null?void 0:d.shift();)(j=t(this,B))==null||j.call(this,...y)}return this}pop(){var e;try{for(;t(this,A);){const i=t(this,p)[t(this,z)];if(u(this,l,wt).call(this,!0),u(this,l,S).call(this,i)){if(i.__staleWhileFetching)return i.__staleWhileFetching}else if(i!==void 0)return i}}finally{if(t(this,R)&&t(this,T)){const i=t(this,T);let s;for(;s=i==null?void 0:i.shift();)(e=t(this,B))==null||e.call(this,...s)}}}has(e,i={}){const{updateAgeOnHas:s=this.updateAgeOnHas,status:o}=i,r=t(this,v).get(e);if(r!==void 0){const a=t(this,p)[r];if(u(this,l,S).call(this,a)&&a.__staleWhileFetching===void 0)return!1;if(t(this,k).call(this,r))o&&(o.has="stale",t(this,Z).call(this,o,r));else return s&&t(this,rt).call(this,r),o&&(o.has="hit",t(this,Z).call(this,o,r)),!0}else o&&(o.has="miss");return!1}peek(e,i={}){const{allowStale:s=this.allowStale}=i,o=t(this,v).get(e);if(o===void 0||!s&&t(this,k).call(this,o))return;const r=t(this,p)[o];return u(this,l,S).call(this,r)?r.__staleWhileFetching:r}async fetch(e,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:a=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:c=0,sizeCalculation:m=this.sizeCalculation,noUpdateTTL:F=this.noUpdateTTL,noDeleteOnFetchRejection:w=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:W=this.allowStaleOnFetchRejection,ignoreFetchAbort:_=this.ignoreFetchAbort,allowStaleOnFetchAbort:P=this.allowStaleOnFetchAbort,context:x,forceRefresh:j=!1,status:d,signal:y}=i;if(!t(this,it))return d&&(d.fetch="get"),this.get(e,{allowStale:s,updateAgeOnGet:o,noDeleteOnStaleGet:r,status:d});const L={allowStale:s,updateAgeOnGet:o,noDeleteOnStaleGet:r,ttl:a,noDisposeOnSet:h,size:c,sizeCalculation:m,noUpdateTTL:F,noDeleteOnFetchRejection:w,allowStaleOnFetchRejection:W,allowStaleOnFetchAbort:P,ignoreFetchAbort:_,status:d,signal:y};let D=t(this,v).get(e);if(D===void 0){d&&(d.fetch="miss");const H=u(this,l,_t).call(this,e,D,L,x);return H.__returned=H}else{const H=t(this,p)[D];if(u(this,l,S).call(this,H)){const Wt=s&&H.__staleWhileFetching!==void 0;return d&&(d.fetch="inflight",Wt&&(d.returnedStale=!0)),Wt?H.__staleWhileFetching:H.__returned=H}const st=t(this,k).call(this,D);if(!j&&!st)return d&&(d.fetch="hit"),u(this,l,dt).call(this,D),o&&t(this,rt).call(this,D),d&&t(this,Z).call(this,d,D),H;const J=u(this,l,_t).call(this,e,D,L,x),Rt=J.__staleWhileFetching!==void 0&&s;return d&&(d.fetch=st?"stale":"refresh",Rt&&st&&(d.returnedStale=!0)),Rt?J.__staleWhileFetching:J.__returned=J}}get(e,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:a}=i,h=t(this,v).get(e);if(h!==void 0){const c=t(this,p)[h],m=u(this,l,S).call(this,c);return a&&t(this,Z).call(this,a,h),t(this,k).call(this,h)?(a&&(a.get="stale"),m?(a&&s&&c.__staleWhileFetching!==void 0&&(a.returnedStale=!0),s?c.__staleWhileFetching:void 0):(r||this.delete(e),a&&s&&(a.returnedStale=!0),s?c:void 0)):(a&&(a.get="hit"),m?c.__staleWhileFetching:(u(this,l,dt).call(this,h),o&&t(this,rt).call(this,h),c))}else a&&(a.get="miss")}delete(e){var s,o,r,a;let i=!1;if(t(this,A)!==0){const h=t(this,v).get(e);if(h!==void 0)if(i=!0,t(this,A)===1)this.clear();else{t(this,ot).call(this,h);const c=t(this,p)[h];if(u(this,l,S).call(this,c)?c.__abortController.abort(new Error("deleted")):(t(this,K)||t(this,R))&&(t(this,K)&&((s=t(this,V))==null||s.call(this,c,e,"delete")),t(this,R)&&((o=t(this,T))==null||o.push([c,e,"delete"]))),t(this,v).delete(e),t(this,E)[h]=void 0,t(this,p)[h]=void 0,h===t(this,C))f(this,C,t(this,M)[h]);else if(h===t(this,z))f(this,z,t(this,N)[h]);else{const m=t(this,M)[h];t(this,N)[m]=t(this,N)[h];const F=t(this,N)[h];t(this,M)[F]=t(this,M)[h]}mt(this,A)._--,t(this,q).push(h)}}if(t(this,R)&&((r=t(this,T))!=null&&r.length)){const h=t(this,T);let c;for(;c=h==null?void 0:h.shift();)(a=t(this,B))==null||a.call(this,...c)}return i}clear(){var e,i,s;for(const o of u(this,l,et).call(this,{allowStale:!0})){const r=t(this,p)[o];if(u(this,l,S).call(this,r))r.__abortController.abort(new Error("deleted"));else{const a=t(this,E)[o];t(this,K)&&((e=t(this,V))==null||e.call(this,r,a,"delete")),t(this,R)&&((i=t(this,T))==null||i.push([r,a,"delete"]))}}if(t(this,v).clear(),t(this,p).fill(void 0),t(this,E).fill(void 0),t(this,G)&&t(this,Y)&&(t(this,G).fill(0),t(this,Y).fill(0)),t(this,X)&&t(this,X).fill(0),f(this,z,0),f(this,C,0),t(this,q).length=0,f(this,$,0),f(this,A,0),t(this,R)&&t(this,T)){const o=t(this,T);let r;for(;r=o==null?void 0:o.shift();)(s=t(this,B))==null||s.call(this,...r)}}};U=new WeakMap,I=new WeakMap,V=new WeakMap,B=new WeakMap,ut=new WeakMap,A=new WeakMap,$=new WeakMap,v=new WeakMap,E=new WeakMap,p=new WeakMap,N=new WeakMap,M=new WeakMap,z=new WeakMap,C=new WeakMap,q=new WeakMap,T=new WeakMap,X=new WeakMap,Y=new WeakMap,G=new WeakMap,K=new WeakMap,it=new WeakMap,R=new WeakMap,l=new WeakSet,Ct=function(){const e=new bt(t(this,U)),i=new bt(t(this,U));f(this,G,e),f(this,Y,i),f(this,pt,(r,a,h=lt.now())=>{if(i[r]=a!==0?h:0,e[r]=a,a!==0&&this.ttlAutopurge){const c=setTimeout(()=>{t(this,k).call(this,r)&&this.delete(t(this,E)[r])},a+1);c.unref&&c.unref()}}),f(this,rt,r=>{i[r]=e[r]!==0?lt.now():0}),f(this,Z,(r,a)=>{if(e[a]){const h=e[a],c=i[a];if(!h||!c)return;r.ttl=h,r.start=c,r.now=s||o();const m=r.now-c;r.remainingTTL=h-m}});let s=0;const o=()=>{const r=lt.now();if(this.ttlResolution>0){s=r;const a=setTimeout(()=>s=0,this.ttlResolution);a.unref&&a.unref()}return r};this.getRemainingTTL=r=>{const a=t(this,v).get(r);if(a===void 0)return 0;const h=e[a],c=i[a];if(!h||!c)return 1/0;const m=(s||o())-c;return h-m},f(this,k,r=>{const a=i[r],h=e[r];return!!h&&!!a&&(s||o())-a>h})},rt=new WeakMap,Z=new WeakMap,pt=new WeakMap,k=new WeakMap,Xt=function(){const e=new bt(t(this,U));f(this,$,0),f(this,X,e),f(this,ot,i=>{f(this,$,t(this,$)-e[i]),e[i]=0}),f(this,gt,(i,s,o,r)=>{if(u(this,l,S).call(this,s))return 0;if(!Q(o))if(r){if(typeof r!="function")throw new TypeError("sizeCalculation must be a function");if(o=r(s,i),!Q(o))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return o}),f(this,ft,(i,s,o)=>{if(e[i]=s,t(this,I)){const r=t(this,I)-e[i];for(;t(this,$)>r;)u(this,l,wt).call(this,!0)}f(this,$,t(this,$)+e[i]),o&&(o.entrySize=s,o.totalCalculatedSize=t(this,$))})},ot=new WeakMap,ft=new WeakMap,gt=new WeakMap,tt=function*({allowStale:e=this.allowStale}={}){if(t(this,A))for(let i=t(this,C);!(!u(this,l,Tt).call(this,i)||((e||!t(this,k).call(this,i))&&(yield i),i===t(this,z)));)i=t(this,M)[i]},et=function*({allowStale:e=this.allowStale}={}){if(t(this,A))for(let i=t(this,z);!(!u(this,l,Tt).call(this,i)||((e||!t(this,k).call(this,i))&&(yield i),i===t(this,C)));)i=t(this,N)[i]},Tt=function(e){return e!==void 0&&t(this,v).get(t(this,E)[e])===e},wt=function(e){var r,a;const i=t(this,z),s=t(this,E)[i],o=t(this,p)[i];return t(this,it)&&u(this,l,S).call(this,o)?o.__abortController.abort(new Error("evicted")):(t(this,K)||t(this,R))&&(t(this,K)&&((r=t(this,V))==null||r.call(this,o,s,"evict")),t(this,R)&&((a=t(this,T))==null||a.push([o,s,"evict"]))),t(this,ot).call(this,i),e&&(t(this,E)[i]=void 0,t(this,p)[i]=void 0,t(this,q).push(i)),t(this,A)===1?(f(this,z,f(this,C,0)),t(this,q).length=0):f(this,z,t(this,N)[i]),t(this,v).delete(s),mt(this,A)._--,i},_t=function(e,i,s,o){const r=i===void 0?void 0:t(this,p)[i];if(u(this,l,S).call(this,r))return r;const a=new yt,{signal:h}=s;h==null||h.addEventListener("abort",()=>a.abort(h.reason),{signal:a.signal});const c={signal:a.signal,options:s,context:o},m=(x,j=!1)=>{const{aborted:d}=a.signal,y=s.ignoreFetchAbort&&x!==void 0;if(s.status&&(d&&!j?(s.status.fetchAborted=!0,s.status.fetchError=a.signal.reason,y&&(s.status.fetchAbortIgnored=!0)):s.status.fetchResolved=!0),d&&!y&&!j)return w(a.signal.reason);const L=_;return t(this,p)[i]===_&&(x===void 0?L.__staleWhileFetching?t(this,p)[i]=L.__staleWhileFetching:this.delete(e):(s.status&&(s.status.fetchUpdated=!0),this.set(e,x,c.options))),x},F=x=>(s.status&&(s.status.fetchRejected=!0,s.status.fetchError=x),w(x)),w=x=>{const{aborted:j}=a.signal,d=j&&s.allowStaleOnFetchAbort,y=d||s.allowStaleOnFetchRejection,L=y||s.noDeleteOnFetchRejection,D=_;if(t(this,p)[i]===_&&(!L||D.__staleWhileFetching===void 0?this.delete(e):d||(t(this,p)[i]=D.__staleWhileFetching)),y)return s.status&&D.__staleWhileFetching!==void 0&&(s.status.returnedStale=!0),D.__staleWhileFetching;if(D.__returned===D)throw x},W=(x,j)=>{var y;const d=(y=t(this,ut))==null?void 0:y.call(this,e,r,c);d&&d instanceof Promise&&d.then(L=>x(L===void 0?void 0:L),j),a.signal.addEventListener("abort",()=>{(!s.ignoreFetchAbort||s.allowStaleOnFetchAbort)&&(x(void 0),s.allowStaleOnFetchAbort&&(x=L=>m(L,!0)))})};s.status&&(s.status.fetchDispatched=!0);const _=new Promise(W).then(m,F),P=Object.assign(_,{__abortController:a,__staleWhileFetching:r,__returned:void 0});return i===void 0?(this.set(e,P,{...c.options,status:void 0}),i=t(this,v).get(e)):t(this,p)[i]=P,P},S=function(e){if(!t(this,it))return!1;const i=e;return!!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof yt},Dt=function(e,i){t(this,M)[i]=e,t(this,N)[e]=i},dt=function(e){e!==t(this,C)&&(e===t(this,z)?f(this,z,t(this,N)[e]):u(this,l,Dt).call(this,t(this,M)[e],t(this,N)[e]),u(this,l,Dt).call(this,t(this,C),e),f(this,C,e))};let jt=Nt;var Et={};Object.defineProperty(Et,"__esModule",{value:!0});Et.getMDXComponent=_e;Et.getMDXExport=Kt;var me=Pt(at),be=Pt(g),we=Pt(se);function Yt(n){if(typeof WeakMap!="function")return null;var e=new WeakMap,i=new WeakMap;return(Yt=function(s){return s?i:e})(n)}function Pt(n,e){if(n&&n.__esModule)return n;if(n===null||typeof n!="object"&&typeof n!="function")return{default:n};var i=Yt(e);if(i&&i.has(n))return i.get(n);var s={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in n)if(r!=="default"&&{}.hasOwnProperty.call(n,r)){var a=o?Object.getOwnPropertyDescriptor(n,r):null;a&&(a.get||a.set)?Object.defineProperty(s,r,a):s[r]=n[r]}return s.default=n,i&&i.set(n,s),s}function _e(n,e){return Kt(n,e).default}function Kt(n,e){const i={React:me,ReactDOM:we,_jsx_runtime:be,...e};return new Function(...Object.keys(i),n)(...Object.values(i))}var ye=Et;const Ot=n=>n.replace(/\\/g,"/");function Zt(n,e,i){const[,s]=n.replace(/\\|\//g,e).split(`${i==="playground"?"example":"exercises"}${e}`);return s}const zt="border-border bg-[var(--shiki-background)] hover:bg-foreground/20 active:bg-foreground/30 box-content block rounded border-2 px-2 py-0.5 font-mono text-xs font-semibold outline-none transition duration-300 ease-in-out";function Se({"data-buttons":n,"data-filename":e,"data-fullpath":i,"data-sep":s="/","data-start":o,"data-type":r}){var W;const a=ne();if(r==="other"||!n||!e||!i)return null;const h=Ot(((W=a[a.type])==null?void 0:W.fullPath)??""),c=!i.startsWith(h),m=ENV.EPICSHOP_DEPLOYED?["problem","solution"]:["problem","solution","playground"],F=n.split(","),w=m.filter(_=>F.includes(_));return g.jsx(g.Fragment,{children:w.map(_=>{var d;const P=a[_];if(_==="playground"){const y=a.playground&&a.playground.appName!==((d=a.problem)==null?void 0:d.name);if(!P||y||c)return g.jsxs("button",{className:St(zt,"cursor-not-allowed"),title:y?"Playground is not set to the right app":c?"This file is from different app":"You must 'Set to Playground' before opening a file",children:[g.jsx("span",{className:"uppercase",children:"Open"})," in ",_]},_)}if(!P||!P.fullPath)return null;const x=[Ot(P.fullPath),Ot(e)].join(s),j=Zt(x,s,_);return g.jsx(Vt,{file:x,line:Number(o??1),children:g.jsxs("span",{title:j,className:zt,children:[g.jsx("span",{className:"uppercase",children:"Open"})," in ",_]})},_)})})}function Ee(){const[n,e]=at.useState(!1);return at.useEffect(()=>{if(n){const i=setTimeout(()=>e(!1),1500);return()=>clearTimeout(i)}},[n]),g.jsx("button",{className:he(zt,"w-12 uppercase"),onClick:i=>{var r,a,h;e(!0);const o=((h=(a=(r=i.currentTarget.parentElement)==null?void 0:r.parentElement)==null?void 0:a.querySelector("pre"))==null?void 0:h.textContent)||"";navigator.clipboard.writeText(o)},children:n?"copied":"copy"})}function xe({children:n,...e}){const{"data-buttons":i,"data-filename":s,"data-fullpath":o,"data-nocopy":r,"data-sep":a}=e,h=r===void 0;function c(){if(o&&a)return!s||s.includes("..")?{"data-filename":Zt(o,a)}:{"data-filename":s.replace(/\//g,a)}}return g.jsxs("div",{className:"group relative",children:[g.jsxs("div",{className:"absolute right-0 top-0 z-50 m-2 flex items-baseline justify-end gap-4 opacity-0 transition duration-300 ease-in-out focus-within:opacity-100 group-hover:opacity-100",children:[i?g.jsx(Se,{...e}):null,h?g.jsx(Ee,{}):null]}),g.jsx("pre",{...e,className:St("scrollbar-thin scrollbar-thumb-scrollbar",e.className??""),...c(),children:n})]})}const Oe={h1:n=>g.jsx(ht,{...n,as:"h1"}),h2:n=>g.jsx(ht,{...n,as:"h2"}),h3:n=>g.jsx(ht,{...n,as:"h3"}),h4:n=>g.jsx(ht,{...n,as:"h4"}),h5:n=>g.jsx(ht,{...n,as:"h5"}),h6:n=>g.jsx(ht,{...n,as:"h6"}),a:le,p:n=>g.jsx("div",{...n}),pre:n=>g.jsx("pre",{...n,className:St("scrollbar-thin scrollbar-thumb-scrollbar",n.className??"")}),LaunchEditor:Vt,VideoEmbed:re,EpicVideo:oe};function ve(n){const e=ye.getMDXComponent(n);function i({components:s,...o}){const r=at.useMemo(()=>({...Oe,...s}),[s]);return g.jsx(e,{components:r,...o})}return i}const vt=new jt({max:1e3});function Ae(n){return at.useMemo(()=>{if(vt.has(n))return vt.get(n);const e=ve(n);return vt.set(n,e),e},[n])}function Ie({code:n,components:e}){const i=Ae(n),s=at.useMemo(()=>({Icon:ae,pre:xe,Link:Ht,...e}),[e]);return g.jsx(i,{components:s})}export{Re as E,Vt as L,Ie as M};
|
|
2
|
-
//# sourceMappingURL=mdx-
|
|
1
|
+
var Qt=Object.defineProperty;var Lt=n=>{throw TypeError(n)};var te=(n,e,i)=>e in n?Qt(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i;var O=(n,e,i)=>te(n,typeof e!="symbol"?e+"":e,i),xt=(n,e,i)=>e.has(n)||Lt("Cannot "+i);var t=(n,e,i)=>(xt(n,e,"read from private field"),i?i.call(n):e.get(n)),b=(n,e,i)=>e.has(n)?Lt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,i),f=(n,e,i,s)=>(xt(n,e,"write to private field"),s?s.call(n,i):e.set(n,i),i),u=(n,e,i)=>(xt(n,e,"access private method"),i);var mt=(n,e,i,s)=>({set _(o){f(n,e,o,i)},get _(){return t(n,e,s)}});import{j as g,r as at}from"./index-1cKOJFpX.js";import{c as St}from"./clsx-B-dksMZM.js";import{e as ee,L as Ht,a as ie,r as se,u as ne}from"./components-CME-nGId.js";import{V as re,D as oe}from"./epic-video-iluUs1-s.js";import{I as ae,c as he,H as ht,A as le}from"./misc-ENVX3CWf.js";import{s as ce}from"./progress-bar-CSvo1ZXP.js";import{u as ue}from"./request-info-CEhUGODY.js";function fe(){const n=ee("root");if(!n)throw new Error("useApps requires a data object from the root loader");return n.apps}function Ut(n){const e=ie();return at.useEffect(()=>{e.state==="idle"&&e.data!=null&&(n==null||n("fetcher-done"))},[e,n]),e}function de({file:n,appFile:e,appName:i,syncTo:s,line:o,column:r,children:a,onUpdate:h}){var W;const c=Ut(h),m=typeof e=="string"?[e]:e,F=n?"file":e?"appFile":"",w=s!=null&&s.file?"file":s!=null&&s.appFile?"appFile":"";return g.jsxs(c.Form,{action:"/launch-editor",method:"POST",className:"flex items-center",children:[ce,g.jsx("input",{type:"hidden",name:"line",value:o}),g.jsx("input",{type:"hidden",name:"column",value:r}),g.jsx("input",{type:"hidden",name:"type",value:F}),g.jsx("input",{type:"hidden",name:"file",value:n}),g.jsx("input",{type:"hidden",name:"appName",value:i}),m==null?void 0:m.map(_=>g.jsx("input",{type:"hidden",name:"appFile",value:_},_)),s?g.jsxs(g.Fragment,{children:[g.jsx("input",{type:"hidden",name:"syncTo.type",value:w}),g.jsx("input",{type:"hidden",name:"syncTo.file",value:s.file}),g.jsx("input",{type:"hidden",name:"syncTo.appName",value:s.appName}),g.jsx("input",{type:"hidden",name:"syncTo.appFile",value:s.appFile})]}):null,g.jsx("button",{type:"submit",className:St("launch_button",c.state==="idle"?null:"cursor-progress",((W=c.data)==null?void 0:W.status)==="error"?"cursor-not-allowed":null),children:a})]})}function pe({file:n,appFile:e,appName:i,line:s,children:o}){const r=fe(),a=ue();if(Array.isArray(e))return g.jsx("div",{children:"Cannot open more than one file"});if(n){const m=F=>F.replace(/\\/g,"/");return g.jsx("a",{className:"launch_button !no-underline",href:m(n).replace(m(ENV.EPICSHOP_CONTEXT_CWD),ENV.EPICSHOP_GITHUB_ROOT)+(s?`#L${s}`:""),rel:"noreferrer",target:"_blank",children:o})}const h=r.find(m=>m.name===i),c=[...(h==null?void 0:h.relativePath.split(a.separator))??[],e+(s?`#L${s}`:"")].join("/");return g.jsx("a",{className:"launch_button !no-underline",href:`${ENV.EPICSHOP_GITHUB_ROOT}/${c}`,rel:"noreferrer",target:"_blank",children:o})}function Re({appFile:n="README.mdx",appName:e,file:i,relativePath:s}){const o=Ut(),r=h=>{if(!h.altKey||ENV.EPICSHOP_DEPLOYED)return;h.preventDefault();const c=new FormData,m=i?"file":"appFile";c.append(m,i??n),c.append("type",m),e&&c.append("appName",e),o.submit(c,{method:"POST",action:"/launch-editor"})},a=ENV.EPICSHOP_GITHUB_ROOT.replace(/\/tree\/|\/blob\//,"/edit/");return g.jsxs(Ht,{className:"self-center font-mono text-sm",onClick:r,target:"_blank",to:`${a}/${s}/${n}`.replace(/\\/g,"/"),children:[g.jsx("span",{className:"block md:hidden",children:"Edit on GitHub"}),g.jsx("span",{className:"hidden md:block",children:"Edit this page on GitHub"})]})}const Vt=ENV.EPICSHOP_DEPLOYED?pe:de,lt=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Bt=new Set,At=typeof process=="object"&&process?process:{},$t=(n,e,i,s)=>{typeof At.emitWarning=="function"?At.emitWarning(n,e,i,s):console.error(`[${i}] ${e}: ${n}`)};let yt=globalThis.AbortController,It=globalThis.AbortSignal;var Mt;if(typeof yt>"u"){It=class{constructor(){O(this,"onabort");O(this,"_onabort",[]);O(this,"reason");O(this,"aborted",!1)}addEventListener(s,o){this._onabort.push(o)}},yt=class{constructor(){O(this,"signal",new It);e()}abort(s){var o,r;if(!this.signal.aborted){this.signal.reason=s,this.signal.aborted=!0;for(const a of this.signal._onabort)a(s);(r=(o=this.signal).onabort)==null||r.call(o,s)}}};let n=((Mt=At.env)==null?void 0:Mt.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const e=()=>{n&&(n=!1,$t("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}const ge=n=>!Bt.has(n),Q=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),qt=n=>Q(n)?n<=Math.pow(2,8)?Uint8Array:n<=Math.pow(2,16)?Uint16Array:n<=Math.pow(2,32)?Uint32Array:n<=Number.MAX_SAFE_INTEGER?bt:null:null;class bt extends Array{constructor(e){super(e),this.fill(0)}}var ct;const nt=class nt{constructor(e,i){O(this,"heap");O(this,"length");if(!t(nt,ct))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new i(e),this.length=0}static create(e){const i=qt(e);if(!i)return[];f(nt,ct,!0);const s=new nt(e,i);return f(nt,ct,!1),s}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}};ct=new WeakMap,b(nt,ct,!1);let Ft=nt;var Gt,kt,U,I,V,B,ut,A,$,v,E,p,N,M,z,C,q,T,X,Y,G,K,it,R,l,Ct,rt,Z,pt,k,Xt,ot,ft,gt,tt,et,Tt,wt,_t,S,Dt,dt;const Nt=class Nt{constructor(e){b(this,l);b(this,U);b(this,I);b(this,V);b(this,B);b(this,ut);O(this,"ttl");O(this,"ttlResolution");O(this,"ttlAutopurge");O(this,"updateAgeOnGet");O(this,"updateAgeOnHas");O(this,"allowStale");O(this,"noDisposeOnSet");O(this,"noUpdateTTL");O(this,"maxEntrySize");O(this,"sizeCalculation");O(this,"noDeleteOnFetchRejection");O(this,"noDeleteOnStaleGet");O(this,"allowStaleOnFetchAbort");O(this,"allowStaleOnFetchRejection");O(this,"ignoreFetchAbort");b(this,A);b(this,$);b(this,v);b(this,E);b(this,p);b(this,N);b(this,M);b(this,z);b(this,C);b(this,q);b(this,T);b(this,X);b(this,Y);b(this,G);b(this,K);b(this,it);b(this,R);b(this,rt,()=>{});b(this,Z,()=>{});b(this,pt,()=>{});b(this,k,()=>!1);b(this,ot,e=>{});b(this,ft,(e,i,s)=>{});b(this,gt,(e,i,s,o)=>{if(s||o)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});O(this,Gt,"LRUCache");const{max:i=0,ttl:s,ttlResolution:o=1,ttlAutopurge:r,updateAgeOnGet:a,updateAgeOnHas:h,allowStale:c,dispose:m,disposeAfter:F,noDisposeOnSet:w,noUpdateTTL:W,maxSize:_=0,maxEntrySize:P=0,sizeCalculation:x,fetchMethod:j,noDeleteOnFetchRejection:d,noDeleteOnStaleGet:y,allowStaleOnFetchRejection:L,allowStaleOnFetchAbort:D,ignoreFetchAbort:H}=e;if(i!==0&&!Q(i))throw new TypeError("max option must be a nonnegative integer");const st=i?qt(i):Array;if(!st)throw new Error("invalid max value: "+i);if(f(this,U,i),f(this,I,_),this.maxEntrySize=P||t(this,I),this.sizeCalculation=x,this.sizeCalculation){if(!t(this,I)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(j!==void 0&&typeof j!="function")throw new TypeError("fetchMethod must be a function if specified");if(f(this,ut,j),f(this,it,!!j),f(this,v,new Map),f(this,E,new Array(i).fill(void 0)),f(this,p,new Array(i).fill(void 0)),f(this,N,new st(i)),f(this,M,new st(i)),f(this,z,0),f(this,C,0),f(this,q,Ft.create(i)),f(this,A,0),f(this,$,0),typeof m=="function"&&f(this,V,m),typeof F=="function"?(f(this,B,F),f(this,T,[])):(f(this,B,void 0),f(this,T,void 0)),f(this,K,!!t(this,V)),f(this,R,!!t(this,B)),this.noDisposeOnSet=!!w,this.noUpdateTTL=!!W,this.noDeleteOnFetchRejection=!!d,this.allowStaleOnFetchRejection=!!L,this.allowStaleOnFetchAbort=!!D,this.ignoreFetchAbort=!!H,this.maxEntrySize!==0){if(t(this,I)!==0&&!Q(t(this,I)))throw new TypeError("maxSize must be a positive integer if specified");if(!Q(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");u(this,l,Xt).call(this)}if(this.allowStale=!!c,this.noDeleteOnStaleGet=!!y,this.updateAgeOnGet=!!a,this.updateAgeOnHas=!!h,this.ttlResolution=Q(o)||o===0?o:1,this.ttlAutopurge=!!r,this.ttl=s||0,this.ttl){if(!Q(this.ttl))throw new TypeError("ttl must be a positive integer if specified");u(this,l,Ct).call(this)}if(t(this,U)===0&&this.ttl===0&&t(this,I)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!t(this,U)&&!t(this,I)){const J="LRU_CACHE_UNBOUNDED";ge(J)&&(Bt.add(J),$t("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",J,Nt))}}static unsafeExposeInternals(e){return{starts:t(e,Y),ttls:t(e,G),sizes:t(e,X),keyMap:t(e,v),keyList:t(e,E),valList:t(e,p),next:t(e,N),prev:t(e,M),get head(){return t(e,z)},get tail(){return t(e,C)},free:t(e,q),isBackgroundFetch:i=>{var s;return u(s=e,l,S).call(s,i)},backgroundFetch:(i,s,o,r)=>{var a;return u(a=e,l,_t).call(a,i,s,o,r)},moveToTail:i=>{var s;return u(s=e,l,dt).call(s,i)},indexes:i=>{var s;return u(s=e,l,tt).call(s,i)},rindexes:i=>{var s;return u(s=e,l,et).call(s,i)},isStale:i=>{var s;return t(s=e,k).call(s,i)}}}get max(){return t(this,U)}get maxSize(){return t(this,I)}get calculatedSize(){return t(this,$)}get size(){return t(this,A)}get fetchMethod(){return t(this,ut)}get dispose(){return t(this,V)}get disposeAfter(){return t(this,B)}getRemainingTTL(e){return t(this,v).has(e)?1/0:0}*entries(){for(const e of u(this,l,tt).call(this))t(this,p)[e]!==void 0&&t(this,E)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield[t(this,E)[e],t(this,p)[e]])}*rentries(){for(const e of u(this,l,et).call(this))t(this,p)[e]!==void 0&&t(this,E)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield[t(this,E)[e],t(this,p)[e]])}*keys(){for(const e of u(this,l,tt).call(this)){const i=t(this,E)[e];i!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield i)}}*rkeys(){for(const e of u(this,l,et).call(this)){const i=t(this,E)[e];i!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield i)}}*values(){for(const e of u(this,l,tt).call(this))t(this,p)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield t(this,p)[e])}*rvalues(){for(const e of u(this,l,et).call(this))t(this,p)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield t(this,p)[e])}[(kt=Symbol.iterator,Gt=Symbol.toStringTag,kt)](){return this.entries()}find(e,i={}){for(const s of u(this,l,tt).call(this)){const o=t(this,p)[s],r=u(this,l,S).call(this,o)?o.__staleWhileFetching:o;if(r!==void 0&&e(r,t(this,E)[s],this))return this.get(t(this,E)[s],i)}}forEach(e,i=this){for(const s of u(this,l,tt).call(this)){const o=t(this,p)[s],r=u(this,l,S).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&e.call(i,r,t(this,E)[s],this)}}rforEach(e,i=this){for(const s of u(this,l,et).call(this)){const o=t(this,p)[s],r=u(this,l,S).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&e.call(i,r,t(this,E)[s],this)}}purgeStale(){let e=!1;for(const i of u(this,l,et).call(this,{allowStale:!0}))t(this,k).call(this,i)&&(this.delete(t(this,E)[i]),e=!0);return e}info(e){const i=t(this,v).get(e);if(i===void 0)return;const s=t(this,p)[i],o=u(this,l,S).call(this,s)?s.__staleWhileFetching:s;if(o===void 0)return;const r={value:o};if(t(this,G)&&t(this,Y)){const a=t(this,G)[i],h=t(this,Y)[i];if(a&&h){const c=a-(lt.now()-h);r.ttl=c,r.start=Date.now()}}return t(this,X)&&(r.size=t(this,X)[i]),r}dump(){const e=[];for(const i of u(this,l,tt).call(this,{allowStale:!0})){const s=t(this,E)[i],o=t(this,p)[i],r=u(this,l,S).call(this,o)?o.__staleWhileFetching:o;if(r===void 0||s===void 0)continue;const a={value:r};if(t(this,G)&&t(this,Y)){a.ttl=t(this,G)[i];const h=lt.now()-t(this,Y)[i];a.start=Math.floor(Date.now()-h)}t(this,X)&&(a.size=t(this,X)[i]),e.unshift([s,a])}return e}load(e){this.clear();for(const[i,s]of e){if(s.start){const o=Date.now()-s.start;s.start=lt.now()-o}this.set(i,s.value,s)}}set(e,i,s={}){var W,_,P,x,j;if(i===void 0)return this.delete(e),this;const{ttl:o=this.ttl,start:r,noDisposeOnSet:a=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:c}=s;let{noUpdateTTL:m=this.noUpdateTTL}=s;const F=t(this,gt).call(this,e,i,s.size||0,h);if(this.maxEntrySize&&F>this.maxEntrySize)return c&&(c.set="miss",c.maxEntrySizeExceeded=!0),this.delete(e),this;let w=t(this,A)===0?void 0:t(this,v).get(e);if(w===void 0)w=t(this,A)===0?t(this,C):t(this,q).length!==0?t(this,q).pop():t(this,A)===t(this,U)?u(this,l,wt).call(this,!1):t(this,A),t(this,E)[w]=e,t(this,p)[w]=i,t(this,v).set(e,w),t(this,N)[t(this,C)]=w,t(this,M)[w]=t(this,C),f(this,C,w),mt(this,A)._++,t(this,ft).call(this,w,F,c),c&&(c.set="add"),m=!1;else{u(this,l,dt).call(this,w);const d=t(this,p)[w];if(i!==d){if(t(this,it)&&u(this,l,S).call(this,d)){d.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:y}=d;y!==void 0&&!a&&(t(this,K)&&((W=t(this,V))==null||W.call(this,y,e,"set")),t(this,R)&&((_=t(this,T))==null||_.push([y,e,"set"])))}else a||(t(this,K)&&((P=t(this,V))==null||P.call(this,d,e,"set")),t(this,R)&&((x=t(this,T))==null||x.push([d,e,"set"])));if(t(this,ot).call(this,w),t(this,ft).call(this,w,F,c),t(this,p)[w]=i,c){c.set="replace";const y=d&&u(this,l,S).call(this,d)?d.__staleWhileFetching:d;y!==void 0&&(c.oldValue=y)}}else c&&(c.set="update")}if(o!==0&&!t(this,G)&&u(this,l,Ct).call(this),t(this,G)&&(m||t(this,pt).call(this,w,o,r),c&&t(this,Z).call(this,c,w)),!a&&t(this,R)&&t(this,T)){const d=t(this,T);let y;for(;y=d==null?void 0:d.shift();)(j=t(this,B))==null||j.call(this,...y)}return this}pop(){var e;try{for(;t(this,A);){const i=t(this,p)[t(this,z)];if(u(this,l,wt).call(this,!0),u(this,l,S).call(this,i)){if(i.__staleWhileFetching)return i.__staleWhileFetching}else if(i!==void 0)return i}}finally{if(t(this,R)&&t(this,T)){const i=t(this,T);let s;for(;s=i==null?void 0:i.shift();)(e=t(this,B))==null||e.call(this,...s)}}}has(e,i={}){const{updateAgeOnHas:s=this.updateAgeOnHas,status:o}=i,r=t(this,v).get(e);if(r!==void 0){const a=t(this,p)[r];if(u(this,l,S).call(this,a)&&a.__staleWhileFetching===void 0)return!1;if(t(this,k).call(this,r))o&&(o.has="stale",t(this,Z).call(this,o,r));else return s&&t(this,rt).call(this,r),o&&(o.has="hit",t(this,Z).call(this,o,r)),!0}else o&&(o.has="miss");return!1}peek(e,i={}){const{allowStale:s=this.allowStale}=i,o=t(this,v).get(e);if(o===void 0||!s&&t(this,k).call(this,o))return;const r=t(this,p)[o];return u(this,l,S).call(this,r)?r.__staleWhileFetching:r}async fetch(e,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:a=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:c=0,sizeCalculation:m=this.sizeCalculation,noUpdateTTL:F=this.noUpdateTTL,noDeleteOnFetchRejection:w=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:W=this.allowStaleOnFetchRejection,ignoreFetchAbort:_=this.ignoreFetchAbort,allowStaleOnFetchAbort:P=this.allowStaleOnFetchAbort,context:x,forceRefresh:j=!1,status:d,signal:y}=i;if(!t(this,it))return d&&(d.fetch="get"),this.get(e,{allowStale:s,updateAgeOnGet:o,noDeleteOnStaleGet:r,status:d});const L={allowStale:s,updateAgeOnGet:o,noDeleteOnStaleGet:r,ttl:a,noDisposeOnSet:h,size:c,sizeCalculation:m,noUpdateTTL:F,noDeleteOnFetchRejection:w,allowStaleOnFetchRejection:W,allowStaleOnFetchAbort:P,ignoreFetchAbort:_,status:d,signal:y};let D=t(this,v).get(e);if(D===void 0){d&&(d.fetch="miss");const H=u(this,l,_t).call(this,e,D,L,x);return H.__returned=H}else{const H=t(this,p)[D];if(u(this,l,S).call(this,H)){const Wt=s&&H.__staleWhileFetching!==void 0;return d&&(d.fetch="inflight",Wt&&(d.returnedStale=!0)),Wt?H.__staleWhileFetching:H.__returned=H}const st=t(this,k).call(this,D);if(!j&&!st)return d&&(d.fetch="hit"),u(this,l,dt).call(this,D),o&&t(this,rt).call(this,D),d&&t(this,Z).call(this,d,D),H;const J=u(this,l,_t).call(this,e,D,L,x),Rt=J.__staleWhileFetching!==void 0&&s;return d&&(d.fetch=st?"stale":"refresh",Rt&&st&&(d.returnedStale=!0)),Rt?J.__staleWhileFetching:J.__returned=J}}get(e,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:a}=i,h=t(this,v).get(e);if(h!==void 0){const c=t(this,p)[h],m=u(this,l,S).call(this,c);return a&&t(this,Z).call(this,a,h),t(this,k).call(this,h)?(a&&(a.get="stale"),m?(a&&s&&c.__staleWhileFetching!==void 0&&(a.returnedStale=!0),s?c.__staleWhileFetching:void 0):(r||this.delete(e),a&&s&&(a.returnedStale=!0),s?c:void 0)):(a&&(a.get="hit"),m?c.__staleWhileFetching:(u(this,l,dt).call(this,h),o&&t(this,rt).call(this,h),c))}else a&&(a.get="miss")}delete(e){var s,o,r,a;let i=!1;if(t(this,A)!==0){const h=t(this,v).get(e);if(h!==void 0)if(i=!0,t(this,A)===1)this.clear();else{t(this,ot).call(this,h);const c=t(this,p)[h];if(u(this,l,S).call(this,c)?c.__abortController.abort(new Error("deleted")):(t(this,K)||t(this,R))&&(t(this,K)&&((s=t(this,V))==null||s.call(this,c,e,"delete")),t(this,R)&&((o=t(this,T))==null||o.push([c,e,"delete"]))),t(this,v).delete(e),t(this,E)[h]=void 0,t(this,p)[h]=void 0,h===t(this,C))f(this,C,t(this,M)[h]);else if(h===t(this,z))f(this,z,t(this,N)[h]);else{const m=t(this,M)[h];t(this,N)[m]=t(this,N)[h];const F=t(this,N)[h];t(this,M)[F]=t(this,M)[h]}mt(this,A)._--,t(this,q).push(h)}}if(t(this,R)&&((r=t(this,T))!=null&&r.length)){const h=t(this,T);let c;for(;c=h==null?void 0:h.shift();)(a=t(this,B))==null||a.call(this,...c)}return i}clear(){var e,i,s;for(const o of u(this,l,et).call(this,{allowStale:!0})){const r=t(this,p)[o];if(u(this,l,S).call(this,r))r.__abortController.abort(new Error("deleted"));else{const a=t(this,E)[o];t(this,K)&&((e=t(this,V))==null||e.call(this,r,a,"delete")),t(this,R)&&((i=t(this,T))==null||i.push([r,a,"delete"]))}}if(t(this,v).clear(),t(this,p).fill(void 0),t(this,E).fill(void 0),t(this,G)&&t(this,Y)&&(t(this,G).fill(0),t(this,Y).fill(0)),t(this,X)&&t(this,X).fill(0),f(this,z,0),f(this,C,0),t(this,q).length=0,f(this,$,0),f(this,A,0),t(this,R)&&t(this,T)){const o=t(this,T);let r;for(;r=o==null?void 0:o.shift();)(s=t(this,B))==null||s.call(this,...r)}}};U=new WeakMap,I=new WeakMap,V=new WeakMap,B=new WeakMap,ut=new WeakMap,A=new WeakMap,$=new WeakMap,v=new WeakMap,E=new WeakMap,p=new WeakMap,N=new WeakMap,M=new WeakMap,z=new WeakMap,C=new WeakMap,q=new WeakMap,T=new WeakMap,X=new WeakMap,Y=new WeakMap,G=new WeakMap,K=new WeakMap,it=new WeakMap,R=new WeakMap,l=new WeakSet,Ct=function(){const e=new bt(t(this,U)),i=new bt(t(this,U));f(this,G,e),f(this,Y,i),f(this,pt,(r,a,h=lt.now())=>{if(i[r]=a!==0?h:0,e[r]=a,a!==0&&this.ttlAutopurge){const c=setTimeout(()=>{t(this,k).call(this,r)&&this.delete(t(this,E)[r])},a+1);c.unref&&c.unref()}}),f(this,rt,r=>{i[r]=e[r]!==0?lt.now():0}),f(this,Z,(r,a)=>{if(e[a]){const h=e[a],c=i[a];if(!h||!c)return;r.ttl=h,r.start=c,r.now=s||o();const m=r.now-c;r.remainingTTL=h-m}});let s=0;const o=()=>{const r=lt.now();if(this.ttlResolution>0){s=r;const a=setTimeout(()=>s=0,this.ttlResolution);a.unref&&a.unref()}return r};this.getRemainingTTL=r=>{const a=t(this,v).get(r);if(a===void 0)return 0;const h=e[a],c=i[a];if(!h||!c)return 1/0;const m=(s||o())-c;return h-m},f(this,k,r=>{const a=i[r],h=e[r];return!!h&&!!a&&(s||o())-a>h})},rt=new WeakMap,Z=new WeakMap,pt=new WeakMap,k=new WeakMap,Xt=function(){const e=new bt(t(this,U));f(this,$,0),f(this,X,e),f(this,ot,i=>{f(this,$,t(this,$)-e[i]),e[i]=0}),f(this,gt,(i,s,o,r)=>{if(u(this,l,S).call(this,s))return 0;if(!Q(o))if(r){if(typeof r!="function")throw new TypeError("sizeCalculation must be a function");if(o=r(s,i),!Q(o))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return o}),f(this,ft,(i,s,o)=>{if(e[i]=s,t(this,I)){const r=t(this,I)-e[i];for(;t(this,$)>r;)u(this,l,wt).call(this,!0)}f(this,$,t(this,$)+e[i]),o&&(o.entrySize=s,o.totalCalculatedSize=t(this,$))})},ot=new WeakMap,ft=new WeakMap,gt=new WeakMap,tt=function*({allowStale:e=this.allowStale}={}){if(t(this,A))for(let i=t(this,C);!(!u(this,l,Tt).call(this,i)||((e||!t(this,k).call(this,i))&&(yield i),i===t(this,z)));)i=t(this,M)[i]},et=function*({allowStale:e=this.allowStale}={}){if(t(this,A))for(let i=t(this,z);!(!u(this,l,Tt).call(this,i)||((e||!t(this,k).call(this,i))&&(yield i),i===t(this,C)));)i=t(this,N)[i]},Tt=function(e){return e!==void 0&&t(this,v).get(t(this,E)[e])===e},wt=function(e){var r,a;const i=t(this,z),s=t(this,E)[i],o=t(this,p)[i];return t(this,it)&&u(this,l,S).call(this,o)?o.__abortController.abort(new Error("evicted")):(t(this,K)||t(this,R))&&(t(this,K)&&((r=t(this,V))==null||r.call(this,o,s,"evict")),t(this,R)&&((a=t(this,T))==null||a.push([o,s,"evict"]))),t(this,ot).call(this,i),e&&(t(this,E)[i]=void 0,t(this,p)[i]=void 0,t(this,q).push(i)),t(this,A)===1?(f(this,z,f(this,C,0)),t(this,q).length=0):f(this,z,t(this,N)[i]),t(this,v).delete(s),mt(this,A)._--,i},_t=function(e,i,s,o){const r=i===void 0?void 0:t(this,p)[i];if(u(this,l,S).call(this,r))return r;const a=new yt,{signal:h}=s;h==null||h.addEventListener("abort",()=>a.abort(h.reason),{signal:a.signal});const c={signal:a.signal,options:s,context:o},m=(x,j=!1)=>{const{aborted:d}=a.signal,y=s.ignoreFetchAbort&&x!==void 0;if(s.status&&(d&&!j?(s.status.fetchAborted=!0,s.status.fetchError=a.signal.reason,y&&(s.status.fetchAbortIgnored=!0)):s.status.fetchResolved=!0),d&&!y&&!j)return w(a.signal.reason);const L=_;return t(this,p)[i]===_&&(x===void 0?L.__staleWhileFetching?t(this,p)[i]=L.__staleWhileFetching:this.delete(e):(s.status&&(s.status.fetchUpdated=!0),this.set(e,x,c.options))),x},F=x=>(s.status&&(s.status.fetchRejected=!0,s.status.fetchError=x),w(x)),w=x=>{const{aborted:j}=a.signal,d=j&&s.allowStaleOnFetchAbort,y=d||s.allowStaleOnFetchRejection,L=y||s.noDeleteOnFetchRejection,D=_;if(t(this,p)[i]===_&&(!L||D.__staleWhileFetching===void 0?this.delete(e):d||(t(this,p)[i]=D.__staleWhileFetching)),y)return s.status&&D.__staleWhileFetching!==void 0&&(s.status.returnedStale=!0),D.__staleWhileFetching;if(D.__returned===D)throw x},W=(x,j)=>{var y;const d=(y=t(this,ut))==null?void 0:y.call(this,e,r,c);d&&d instanceof Promise&&d.then(L=>x(L===void 0?void 0:L),j),a.signal.addEventListener("abort",()=>{(!s.ignoreFetchAbort||s.allowStaleOnFetchAbort)&&(x(void 0),s.allowStaleOnFetchAbort&&(x=L=>m(L,!0)))})};s.status&&(s.status.fetchDispatched=!0);const _=new Promise(W).then(m,F),P=Object.assign(_,{__abortController:a,__staleWhileFetching:r,__returned:void 0});return i===void 0?(this.set(e,P,{...c.options,status:void 0}),i=t(this,v).get(e)):t(this,p)[i]=P,P},S=function(e){if(!t(this,it))return!1;const i=e;return!!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof yt},Dt=function(e,i){t(this,M)[i]=e,t(this,N)[e]=i},dt=function(e){e!==t(this,C)&&(e===t(this,z)?f(this,z,t(this,N)[e]):u(this,l,Dt).call(this,t(this,M)[e],t(this,N)[e]),u(this,l,Dt).call(this,t(this,C),e),f(this,C,e))};let jt=Nt;var Et={};Object.defineProperty(Et,"__esModule",{value:!0});Et.getMDXComponent=_e;Et.getMDXExport=Kt;var me=Pt(at),be=Pt(g),we=Pt(se);function Yt(n){if(typeof WeakMap!="function")return null;var e=new WeakMap,i=new WeakMap;return(Yt=function(s){return s?i:e})(n)}function Pt(n,e){if(n&&n.__esModule)return n;if(n===null||typeof n!="object"&&typeof n!="function")return{default:n};var i=Yt(e);if(i&&i.has(n))return i.get(n);var s={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in n)if(r!=="default"&&{}.hasOwnProperty.call(n,r)){var a=o?Object.getOwnPropertyDescriptor(n,r):null;a&&(a.get||a.set)?Object.defineProperty(s,r,a):s[r]=n[r]}return s.default=n,i&&i.set(n,s),s}function _e(n,e){return Kt(n,e).default}function Kt(n,e){const i={React:me,ReactDOM:we,_jsx_runtime:be,...e};return new Function(...Object.keys(i),n)(...Object.values(i))}var ye=Et;const Ot=n=>n.replace(/\\/g,"/");function Zt(n,e,i){const[,s]=n.replace(/\\|\//g,e).split(`${i==="playground"?"example":"exercises"}${e}`);return s}const zt="border-border bg-[var(--shiki-background)] hover:bg-foreground/20 active:bg-foreground/30 box-content block rounded border-2 px-2 py-0.5 font-mono text-xs font-semibold outline-none transition duration-300 ease-in-out";function Se({"data-buttons":n,"data-filename":e,"data-fullpath":i,"data-sep":s="/","data-start":o,"data-type":r}){var W;const a=ne();if(r==="other"||!n||!e||!i)return null;const h=Ot(((W=a[a.type])==null?void 0:W.fullPath)??""),c=!i.startsWith(h),m=ENV.EPICSHOP_DEPLOYED?["problem","solution"]:["problem","solution","playground"],F=n.split(","),w=m.filter(_=>F.includes(_));return g.jsx(g.Fragment,{children:w.map(_=>{var d;const P=a[_];if(_==="playground"){const y=a.playground&&a.playground.appName!==((d=a.problem)==null?void 0:d.name);if(!P||y||c)return g.jsxs("button",{className:St(zt,"cursor-not-allowed"),title:y?"Playground is not set to the right app":c?"This file is from different app":"You must 'Set to Playground' before opening a file",children:[g.jsx("span",{className:"uppercase",children:"Open"})," in ",_]},_)}if(!P||!P.fullPath)return null;const x=[Ot(P.fullPath),Ot(e)].join(s),j=Zt(x,s,_);return g.jsx(Vt,{file:x,line:Number(o??1),children:g.jsxs("span",{title:j,className:zt,children:[g.jsx("span",{className:"uppercase",children:"Open"})," in ",_]})},_)})})}function Ee(){const[n,e]=at.useState(!1);return at.useEffect(()=>{if(n){const i=setTimeout(()=>e(!1),1500);return()=>clearTimeout(i)}},[n]),g.jsx("button",{className:he(zt,"w-12 uppercase"),onClick:i=>{var r,a,h;e(!0);const o=((h=(a=(r=i.currentTarget.parentElement)==null?void 0:r.parentElement)==null?void 0:a.querySelector("pre"))==null?void 0:h.textContent)||"";navigator.clipboard.writeText(o)},children:n?"copied":"copy"})}function xe({children:n,...e}){const{"data-buttons":i,"data-filename":s,"data-fullpath":o,"data-nocopy":r,"data-sep":a}=e,h=r===void 0;function c(){if(o&&a)return!s||s.includes("..")?{"data-filename":Zt(o,a)}:{"data-filename":s.replace(/\//g,a)}}return g.jsxs("div",{className:"group relative",children:[g.jsxs("div",{className:"absolute right-0 top-0 z-50 m-2 flex items-baseline justify-end gap-4 opacity-0 transition duration-300 ease-in-out focus-within:opacity-100 group-hover:opacity-100",children:[i?g.jsx(Se,{...e}):null,h?g.jsx(Ee,{}):null]}),g.jsx("pre",{...e,className:St("scrollbar-thin scrollbar-thumb-scrollbar",e.className??""),...c(),children:n})]})}const Oe={h1:n=>g.jsx(ht,{...n,as:"h1"}),h2:n=>g.jsx(ht,{...n,as:"h2"}),h3:n=>g.jsx(ht,{...n,as:"h3"}),h4:n=>g.jsx(ht,{...n,as:"h4"}),h5:n=>g.jsx(ht,{...n,as:"h5"}),h6:n=>g.jsx(ht,{...n,as:"h6"}),a:le,p:n=>g.jsx("div",{...n}),pre:n=>g.jsx("pre",{...n,className:St("scrollbar-thin scrollbar-thumb-scrollbar",n.className??"")}),LaunchEditor:Vt,VideoEmbed:re,EpicVideo:oe};function ve(n){const e=ye.getMDXComponent(n);function i({components:s,...o}){const r=at.useMemo(()=>({...Oe,...s}),[s]);return g.jsx(e,{components:r,...o})}return i}const vt=new jt({max:1e3});function Ae(n){return at.useMemo(()=>{if(vt.has(n))return vt.get(n);const e=ve(n);return vt.set(n,e),e},[n])}function Ie({code:n,components:e}){const i=Ae(n),s=at.useMemo(()=>({Icon:ae,pre:xe,Link:Ht,...e}),[e]);return g.jsx(i,{components:s})}export{Re as E,Vt as L,Ie as M};
|
|
2
|
+
//# sourceMappingURL=mdx-M0kcP-mP.js.map
|