@stackflow/plugin-basic-ui 0.18.0 → 0.19.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/dist/components/AppBar.css.d.ts +1 -0
- package/dist/components/AppBar.d.ts +1 -0
- package/dist/index.css +1 -1
- package/dist/index.css.map +3 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +3 -3
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +3 -3
- package/package.json +6 -6
- package/src/components/AppBar.css.ts +20 -0
- package/src/components/AppBar.tsx +8 -0
- package/src/components/AppScreen.tsx +14 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/basicUIPlugin.tsx", "../src/theme.css.ts", "../src/utils/compactMap.ts", "../src/utils/listenOnce.ts", "../src/utils/listenResize.ts", "../src/utils/noop.ts", "../src/utils/requestNextFrame.tsx", "../src/components/AppScreen.tsx", "../src/hooks/useLazy.tsx", "../src/hooks/useMaxWidth.ts", "../src/hooks/useStyleEffect.ts", "../src/hooks/useStyleEffectHide.ts", "../src/hooks/useStyleEffectOffset.ts", "../src/hooks/useStyleEffectSwipeBack.ts", "../src/components/AppBar.tsx", "../src/assets/IconBack.tsx", "../src/assets/IconClose.tsx", "../src/components/AppBar.css.ts", "../src/components/AppScreen.css.ts", "../src/components/BottomSheet.tsx", "../src/components/BottomSheet.css.ts", "../src/components/Modal.tsx", "../src/components/Modal.css.ts"],
|
|
4
|
-
"sourcesContent": ["import type { StackflowReactPlugin } from \"@stackflow/react\";\nimport { assignInlineVars } from \"@vanilla-extract/dynamic\";\nimport React, { createContext, useContext } from \"react\";\n\nimport * as theme from \"./theme.css\";\nimport type { RecursivePartial } from \"./utils\";\nimport { compactMap } from \"./utils\";\n\ntype BasicUIPluginOptions = RecursivePartial<theme.GlobalVars> & {\n theme: \"android\" | \"cupertino\";\n appBar?: {\n closeButton?:\n | {\n renderIcon?: () => React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n }\n | {\n render?: () => React.ReactNode;\n };\n };\n};\n\nconst GlobalOptionsContext = createContext<BasicUIPluginOptions>({\n theme: \"android\",\n});\n\nexport const GlobalOptionsProvider = GlobalOptionsContext.Provider;\n\nexport function useGlobalOptions() {\n return useContext(GlobalOptionsContext);\n}\n\nexport const basicUIPlugin: (\n options: BasicUIPluginOptions,\n) => StackflowReactPlugin = (options) => () => ({\n key: \"basic-ui\",\n wrapStack({ stack }) {\n return (\n <GlobalOptionsProvider value={options}>\n <div\n className={\n typeof window !== \"undefined\" ? theme[options.theme] : undefined\n }\n style={assignInlineVars(\n compactMap({\n [theme.globalVars.backgroundColor]: options.backgroundColor,\n [theme.globalVars.dimBackgroundColor]: options.dimBackgroundColor,\n [theme.globalVars.appBar.borderColor]:\n options.appBar?.borderColor,\n [theme.globalVars.appBar.borderSize]: options.appBar?.borderSize,\n [theme.globalVars.appBar.height]: options.appBar?.height,\n [theme.globalVars.appBar.iconColor]: options.appBar?.iconColor,\n [theme.globalVars.appBar.textColor]: options.appBar?.textColor,\n [theme.globalVars.bottomSheet.borderRadius]:\n options.bottomSheet?.borderRadius,\n [theme.globalVars.modal.borderRadius]:\n options.modal?.borderRadius,\n }),\n )}\n >\n {stack.render()}\n </div>\n </GlobalOptionsProvider>\n );\n },\n});\n", "import 'src/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAE+2U3UrEMBBG7/cpAt4obEKzWha6+CQikr+2wSYTJhNcVnx3q6hX6ra97ZJACMn5IJPDNAhAW9Z8LA9WkeKZlHluB3jhaSidj1yr7A0vnlPvgrtX0SJ4+8heN4zxf67r8aBDKNFyAwNgw67atj2coawPv5DYaXVdbdnXFLK+ORekUho3yDWgdfhXULWfG5T9yTVMpuNUrne+66lht6JGF6ZS3kD8qdtOjuNuKkruSAvRZX+mgQgCz71z9F0mVNaXPBbq881vmxmGmZIcko+wcscqUc+3bCf2a9ZMPEkDKYVTtW53Lv1pqThy3eJcms5sd94BLE4WS0QJAAA=';\nexport var android = '_1coppmz0';\nexport var cupertino = '_1coppmz1';\nexport var globalVars = {backgroundColor:'var(--stackflow-plugin-basic-ui-background-color)',dimBackgroundColor:'var(--stackflow-plugin-basic-ui-dim-background-color)',appBar:{borderColor:'var(--stackflow-plugin-basic-ui-app-bar-border-color)',borderSize:'var(--stackflow-plugin-basic-ui-app-bar-border-size)',height:'var(--stackflow-plugin-basic-ui-app-bar-height)',iconColor:'var(--stackflow-plugin-basic-ui-app-bar-icon-color)',textColor:'var(--stackflow-plugin-basic-ui-app-bar-text-color)',backgroundColor:'var(--stackflow-plugin-basic-ui-app-bar-background-color)'},bottomSheet:{borderRadius:'var(--stackflow-plugin-basic-ui-bottom-sheet-border-radius)'},modal:{borderRadius:'var(--stackflow-plugin-basic-ui-bottom-sheet-border-radius)'}};\nexport var rootAndroid = ':root[data-stackflow-plugin-basic-ui-theme=android]';\nexport var rootCupertino = ':root[data-stackflow-plugin-basic-ui-theme=cupertino]';", "export function compactMap<T extends {}>(\n obj: T,\n): {\n [key in keyof T]: NonNullable<T[key]>;\n} {\n return Object.entries(obj).reduce<any>((acc, [key, value]) => {\n if (value !== null && value !== undefined) {\n acc[key] = value;\n }\n\n return acc;\n }, {});\n}\n", "export function listenOnce<T extends HTMLElement>(\n el: T,\n type: keyof HTMLElementEventMap,\n cb: () => void,\n) {\n const listener = () => {\n el.removeEventListener(type, listener);\n cb();\n };\n\n el.addEventListener(type, listener);\n}\n", "export const listenResize = (cb: () => void) => {\n cb();\n window.addEventListener(\"resize\", cb);\n\n return () => {\n window.removeEventListener(\"resize\", cb);\n };\n};\n", "export const noop = () => {};\n", "// https://github.com/MingruiZhang/react-animate-mount/blob/32300c04a4fdfa97724b70aaaf0c0f403d6da247/src/Animate.js#L171-L179\nexport function requestNextFrame(cb: () => void) {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n cb();\n });\n });\n}\n", "/* eslint-disable no-param-reassign */\n\nimport { useActions, useActivity } from \"@stackflow/react\";\nimport { assignInlineVars } from \"@vanilla-extract/dynamic\";\nimport React, { useRef } from \"react\";\n\nimport { useGlobalOptions } from \"../basicUIPlugin\";\nimport {\n useLazy,\n useStyleEffectHide,\n useStyleEffectOffset,\n useStyleEffectSwipeBack,\n} from \"../hooks\";\nimport type { GlobalVars } from \"../theme.css\";\nimport { globalVars } from \"../theme.css\";\nimport type { PropOf } from \"../utils\";\nimport { compactMap } from \"../utils\";\nimport AppBar from \"./AppBar\";\nimport * as css from \"./AppScreen.css\";\n\ntype AppScreenProps = Partial<\n Pick<GlobalVars, \"backgroundColor\" | \"dimBackgroundColor\">\n> & {\n appBar?: Omit<PropOf<typeof AppBar>, \"theme\" | \"ref\" | \"key\">;\n preventSwipeBack?: boolean;\n children: React.ReactNode;\n};\nconst AppScreen: React.FC<AppScreenProps> = ({\n backgroundColor,\n dimBackgroundColor,\n appBar,\n preventSwipeBack,\n children,\n}) => {\n const globalOptions = useGlobalOptions();\n const activity = useActivity();\n const { pop } = useActions();\n\n const appScreenRef = useRef<HTMLDivElement>(null);\n const dimRef = useRef<HTMLDivElement>(null);\n const paperRef = useRef<HTMLDivElement>(null);\n const edgeRef = useRef<HTMLDivElement>(null);\n const appBarRef = useRef<HTMLDivElement>(null);\n\n useStyleEffectHide({\n refs: [appScreenRef],\n hasEffect: true,\n });\n useStyleEffectOffset({\n theme: globalOptions.theme,\n refs:\n globalOptions.theme === \"cupertino\" ? [paperRef] : [paperRef, appBarRef],\n hasEffect: true,\n });\n useStyleEffectSwipeBack({\n theme: globalOptions.theme,\n dimRef,\n edgeRef,\n paperRef,\n hasEffect: true,\n onSwiped() {\n pop();\n },\n });\n\n const hasAppBar = !!appBar;\n\n const zIndexBase = activity.zIndex * 5;\n const zIndexDim = zIndexBase;\n const zIndexPaper =\n zIndexBase + (globalOptions.theme === \"cupertino\" && hasAppBar ? 1 : 3);\n const zIndexEdge = zIndexBase + 4;\n const zIndexAppBar = zIndexBase + 7;\n\n const { transitionState } = activity;\n const lazyTransitionState = useLazy(transitionState);\n\n return (\n <div\n ref={appScreenRef}\n className={css.appScreen({\n transitionState:\n transitionState === \"enter-done\" || transitionState === \"exit-done\"\n ? transitionState\n : lazyTransitionState,\n })}\n style={assignInlineVars(\n compactMap({\n [globalVars.backgroundColor]: backgroundColor,\n [globalVars.dimBackgroundColor]: dimBackgroundColor,\n [globalVars.appBar.height]: appBar?.height,\n [css.vars.zIndexes.dim]: `${zIndexDim}`,\n [css.vars.zIndexes.paper]: `${zIndexPaper}`,\n [css.vars.zIndexes.edge]: `${zIndexEdge}`,\n [css.vars.zIndexes.appBar]: `${zIndexAppBar}`,\n [css.vars.transitionDuration]:\n activity.transitionState === \"enter-active\" ||\n activity.transitionState === \"exit-active\"\n ? `var(--stackflow-transition-duration)`\n : \"0ms\",\n }),\n )}\n >\n <div className={css.dim} ref={dimRef} />\n <div\n key={activity.id}\n className={css.paper({\n hasAppBar,\n })}\n ref={paperRef}\n >\n {children}\n </div>\n {!activity.isRoot &&\n globalOptions.theme === \"cupertino\" &&\n !preventSwipeBack && (\n <div className={css.edge({ hasAppBar })} ref={edgeRef} />\n )}\n {appBar && <AppBar {...appBar} ref={appBarRef} />}\n </div>\n );\n};\n\nexport default AppScreen;\n", "import { useEffect, useState } from \"react\";\n\nimport { requestNextFrame } from \"../utils\";\n\nexport function useLazy<T>(value: T) {\n const [state, setState] = useState<T | undefined>(undefined);\n\n useEffect(() => {\n requestNextFrame(() => {\n setState(value);\n });\n }, [value]);\n\n return state;\n}\n", "import type React from \"react\";\nimport { useEffect, useState } from \"react\";\n\nimport { listenResize, noop } from \"../utils\";\n\nexport function useMaxWidth({\n outerRef,\n innerRef,\n enable,\n}: {\n outerRef: React.ForwardedRef<any>;\n innerRef: React.MutableRefObject<any>;\n enable: boolean;\n}) {\n const [maxWidth, setMaxWidth] = useState<number | undefined>(undefined);\n\n useEffect(() => {\n const $outer = outerRef && \"current\" in outerRef && outerRef.current;\n const $inner = innerRef.current;\n\n if (!enable || !$outer || !$inner) {\n return noop;\n }\n\n const dispose = listenResize(() => {\n const screenWidth = $outer.clientWidth;\n\n const leftWidth = $inner.offsetLeft;\n const centerWidth = $inner.clientWidth;\n const rightWidth = screenWidth - leftWidth - centerWidth;\n\n const sideMargin = Math.max(leftWidth, rightWidth);\n\n setMaxWidth(screenWidth - 2 * sideMargin);\n });\n\n return dispose;\n }, []);\n\n return {\n maxWidth,\n };\n}\n", "import type { ActivityTransitionState } from \"@stackflow/core\";\nimport { useActivity } from \"@stackflow/react\";\nimport type React from \"react\";\nimport { useEffect } from \"react\";\n\nconst connections: {\n [styleName: string]: Map<\n number,\n {\n refs: Array<React.RefObject<any>>;\n hasEffect: boolean;\n }\n >;\n} = {};\n\nexport function useStyleEffect({\n styleName,\n refs,\n effect,\n}: {\n styleName: string;\n refs: Array<React.RefObject<any>>;\n effect?: (params: {\n activityTransitionState: ActivityTransitionState;\n refs: Array<React.RefObject<HTMLElement>>;\n }) => (() => void) | void;\n}) {\n const activity = useActivity();\n\n useEffect(() => {\n if (!connections[styleName]) {\n connections[styleName] = new Map();\n }\n\n connections[styleName].set(activity.zIndex, {\n refs,\n hasEffect: !!effect,\n });\n\n return () => {\n connections[styleName].delete(activity.zIndex);\n };\n }, [activity.id, refs, effect]);\n\n useEffect(() => {\n if (!effect) {\n return () => {};\n }\n\n const refs = (() => {\n let arr: Array<React.RefObject<any>> = [];\n\n for (let i = 1; i <= activity.zIndex; i += 1) {\n const connection = connections[styleName].get(activity.zIndex - i);\n\n if (connection?.refs) {\n arr = [...arr, ...connection.refs];\n }\n if (connection?.hasEffect) {\n break;\n }\n }\n\n return arr;\n })();\n\n const cleanup = effect({\n activityTransitionState: activity.transitionState,\n refs,\n });\n\n return () => {\n cleanup?.();\n };\n }, [activity.transitionState]);\n}\n", "/* eslint-disable no-param-reassign */\n\nimport type React from \"react\";\n\nimport { useStyleEffect } from \"./useStyleEffect\";\n\nexport function useStyleEffectHide({\n refs,\n hasEffect,\n}: {\n refs: Array<React.RefObject<any>>;\n hasEffect?: boolean;\n}) {\n useStyleEffect({\n styleName: \"hide\",\n refs,\n effect: hasEffect\n ? ({ activityTransitionState, refs }) => {\n switch (activityTransitionState) {\n case \"enter-done\": {\n refs.forEach((ref) => {\n if (!ref.current) {\n return;\n }\n\n ref.current.style.display = \"none\";\n });\n break;\n }\n default: {\n refs.forEach((ref) => {\n if (!ref.current) {\n return;\n }\n\n ref.current.style.display = \"\";\n });\n break;\n }\n }\n }\n : undefined,\n });\n}\n", "/* eslint-disable no-param-reassign */\n\nimport { listenOnce, requestNextFrame } from \"../utils\";\nimport { useStyleEffect } from \"./useStyleEffect\";\n\nexport const OFFSET_PX_ANDROID = 32;\nexport const OFFSET_PX_CUPERTINO = 80;\n\nexport function useStyleEffectOffset({\n refs,\n theme,\n hasEffect,\n}: {\n refs: Array<React.RefObject<any>>;\n theme: \"android\" | \"cupertino\";\n hasEffect?: boolean;\n}) {\n useStyleEffect({\n styleName: \"offset\",\n refs,\n effect: hasEffect\n ? ({ activityTransitionState, refs }) => {\n const transform =\n theme === \"cupertino\"\n ? `translateX(-${OFFSET_PX_CUPERTINO / 16}rem)`\n : `translateY(-${OFFSET_PX_ANDROID / 16}rem)`;\n\n switch (activityTransitionState) {\n case \"enter-active\":\n case \"enter-done\": {\n refs.forEach((ref) => {\n if (!ref.current) {\n return;\n }\n\n ref.current.style.transition = `var(--stackflow-transition-duration)`;\n ref.current.style.transform = transform;\n });\n break;\n }\n case \"exit-active\":\n case \"exit-done\": {\n requestNextFrame(() => {\n refs.forEach((ref) => {\n if (!ref.current) {\n return;\n }\n\n const $el = ref.current;\n\n $el.style.transform = \"\";\n\n listenOnce($el, \"transitionend\", () => {\n $el.style.transition = \"\";\n });\n });\n });\n break;\n }\n default: {\n break;\n }\n }\n }\n : undefined,\n });\n}\n", "/* eslint-disable no-param-reassign */\n\nimport { listenOnce } from \"../utils\";\nimport { useStyleEffect } from \"./useStyleEffect\";\nimport { OFFSET_PX_CUPERTINO } from \"./useStyleEffectOffset\";\n\nexport function useStyleEffectSwipeBack({\n theme,\n dimRef,\n edgeRef,\n paperRef,\n hasEffect,\n onSwiped,\n}: {\n theme: \"android\" | \"cupertino\";\n dimRef: React.RefObject<HTMLDivElement>;\n edgeRef: React.RefObject<HTMLDivElement>;\n paperRef: React.RefObject<HTMLDivElement>;\n hasEffect?: boolean;\n onSwiped?: () => void;\n}) {\n useStyleEffect({\n styleName: \"swipe-back\",\n refs: [paperRef],\n effect: hasEffect\n ? ({ refs }) => {\n if (theme !== \"cupertino\") {\n return () => {};\n }\n\n if (!dimRef.current || !edgeRef.current || !paperRef.current) {\n return () => {};\n }\n\n const $dim = dimRef.current;\n const $edge = edgeRef.current;\n const $paper = paperRef.current;\n\n let x0: number | null = null;\n let t0: number | null = null;\n let x: number | null = null;\n\n let cachedRefs: Array<{\n style: {\n transform: string;\n transition: string;\n };\n parentElement?: {\n style: {\n display: string;\n };\n };\n }> = [];\n\n const resetState = () => {\n x0 = null;\n t0 = null;\n x = null;\n cachedRefs = [];\n };\n\n let _rAFLock = false;\n\n function movePaper(dx: number) {\n if (!_rAFLock) {\n _rAFLock = true;\n\n requestAnimationFrame(() => {\n const p = dx / $paper.clientWidth;\n\n $dim.style.opacity = `${1 - p}`;\n $dim.style.transition = \"0s\";\n\n $paper.style.overflowY = \"hidden\";\n $paper.style.transform = `translateX(${dx}px)`;\n $paper.style.transition = \"0s\";\n\n refs.forEach((ref) => {\n if (!ref.current) {\n return;\n }\n\n ref.current.style.transform = `translateX(${\n -1 * (1 - p) * OFFSET_PX_CUPERTINO\n }px)`;\n ref.current.style.transition = \"0s\";\n\n if (ref.current.parentElement?.style.display === \"none\") {\n ref.current.parentElement.style.display = \"block\";\n }\n });\n\n _rAFLock = false;\n });\n }\n }\n\n function resetPaper({ swiped }: { swiped: boolean }) {\n requestAnimationFrame(() => {\n $dim.style.opacity = `${swiped ? 0 : 1}`;\n $dim.style.transition = \"var(--stackflow-transition-duration)\";\n\n $paper.style.overflowY = \"hidden\";\n $paper.style.transform = `translateX(${swiped ? \"100%\" : \"0\"})`;\n $paper.style.transition = \"var(--stackflow-transition-duration)\";\n\n refs.forEach((ref) => {\n if (!ref.current) {\n return;\n }\n\n ref.current.style.transition = `var(--stackflow-transition-duration)`;\n ref.current.style.transform = `translateX(${\n swiped ? \"0\" : `-${OFFSET_PX_CUPERTINO / 16}rem`\n })`;\n });\n\n listenOnce($paper, \"transitionend\", () => {\n $dim.style.opacity = \"\";\n $paper.style.overflowY = \"\";\n $paper.style.transform = \"\";\n\n refs.forEach((ref, i) => {\n if (!ref.current) {\n return;\n }\n\n const cachedRef = cachedRefs[i];\n\n if (swiped) {\n ref.current.style.transition = \"\";\n ref.current.style.transform = \"\";\n\n if (ref.current.parentElement) {\n ref.current.parentElement.style.display = \"\";\n }\n } else if (cachedRef) {\n ref.current.style.transition = cachedRef.style.transition;\n ref.current.style.transform = cachedRef.style.transform;\n\n if (ref.current.parentElement && cachedRef.parentElement) {\n ref.current.parentElement.style.display =\n cachedRef.parentElement.style.display;\n }\n }\n });\n });\n });\n }\n\n const onTouchStart = (e: TouchEvent) => {\n const { activeElement } = document as any;\n\n activeElement?.blur?.();\n // eslint-disable-next-line no-multi-assign\n x0 = x = e.touches[0].clientX;\n t0 = Date.now();\n\n cachedRefs = refs.map((ref) => {\n if (!ref.current) {\n return {\n style: {\n transform: \"\",\n transition: \"\",\n },\n };\n }\n\n return {\n style: {\n transform: ref.current.style.transform,\n transition: ref.current.style.transition,\n },\n parentElement: ref.current.parentElement\n ? {\n style: {\n display: ref.current.parentElement.style.display,\n },\n }\n : undefined,\n };\n });\n };\n\n const onTouchMove = (e: TouchEvent) => {\n if (!x0) {\n resetState();\n return;\n }\n\n x = e.touches[0].clientX;\n\n movePaper(x - x0);\n };\n\n const onTouchEnd = () => {\n if (!x0 || !t0 || !x) {\n resetState();\n return;\n }\n\n const t = Date.now();\n const v = (x - x0) / (t - t0);\n const swiped = v > 1 || x / $paper.clientWidth > 0.4;\n\n if (swiped) {\n onSwiped?.();\n }\n\n resetState();\n resetPaper({ swiped });\n };\n\n $edge.addEventListener(\"touchstart\", onTouchStart, { passive: true });\n $edge.addEventListener(\"touchmove\", onTouchMove, { passive: true });\n $edge.addEventListener(\"touchend\", onTouchEnd, { passive: true });\n $edge.addEventListener(\"touchcancel\", onTouchEnd, { passive: true });\n\n return () => {\n $edge.removeEventListener(\"touchstart\", onTouchStart);\n $edge.removeEventListener(\"touchmove\", onTouchMove);\n $edge.removeEventListener(\"touchend\", onTouchEnd);\n $edge.removeEventListener(\"touchcancel\", onTouchEnd);\n };\n }\n : undefined,\n });\n}\n", "import { useActions, useActivity } from \"@stackflow/react\";\nimport { assignInlineVars } from \"@vanilla-extract/dynamic\";\nimport React, { useRef } from \"react\";\n\nimport { IconBack, IconClose } from \"../assets\";\nimport { useGlobalOptions } from \"../basicUIPlugin\";\nimport { useMaxWidth } from \"../hooks\";\nimport type { GlobalVars } from \"../theme.css\";\nimport { globalVars } from \"../theme.css\";\nimport { compactMap, noop } from \"../utils\";\nimport * as css from \"./AppBar.css\";\nimport * as appScreenCss from \"./AppScreen.css\";\n\ntype AppBarProps = Partial<\n Pick<\n GlobalVars[\"appBar\"],\n | \"borderColor\"\n | \"borderSize\"\n | \"height\"\n | \"iconColor\"\n | \"textColor\"\n | \"backgroundColor\"\n >\n> & {\n title?: React.ReactNode;\n appendLeft?: () => React.ReactNode;\n appendRight?: () => React.ReactNode;\n backButton?:\n | {\n renderIcon?: () => React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n }\n | {\n render?: () => React.ReactNode;\n };\n closeButton?:\n | {\n renderIcon?: () => React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n }\n | {\n render?: () => React.ReactNode;\n };\n closeButtonLocation?: \"left\" | \"right\";\n border?: boolean;\n};\nconst AppBar = React.forwardRef<HTMLDivElement, AppBarProps>(\n (\n {\n title,\n appendLeft,\n appendRight,\n backButton,\n closeButton,\n closeButtonLocation = \"left\",\n border = true,\n iconColor,\n textColor,\n borderColor,\n borderSize,\n height,\n backgroundColor,\n },\n ref,\n ) => {\n const actions = useActions();\n const activity = useActivity();\n\n const globalOptions = useGlobalOptions();\n const globalCloseButton = globalOptions.appBar?.closeButton;\n\n const centerRef = useRef<any>(null);\n\n const { maxWidth } = useMaxWidth({\n outerRef: ref,\n innerRef: centerRef,\n enable: globalOptions.theme === \"cupertino\",\n });\n\n const onBackClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (backButton && \"onClick\" in backButton && backButton.onClick) {\n backButton.onClick(e);\n }\n\n if (!e.defaultPrevented) {\n actions.pop();\n }\n };\n\n const renderBackButton = () => {\n if (activity.isRoot) {\n return null;\n }\n\n if (!backButton) {\n return (\n <button\n type=\"button\"\n className={css.backButton}\n onClick={onBackClick}\n >\n <IconBack />\n </button>\n );\n }\n\n if (\"render\" in backButton && backButton.render) {\n return backButton.render?.();\n }\n\n return (\n <button type=\"button\" className={css.backButton} onClick={onBackClick}>\n {\"renderIcon\" in backButton && backButton.renderIcon ? (\n backButton.renderIcon()\n ) : (\n <IconBack />\n )}\n </button>\n );\n };\n\n const onCloseClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (closeButton && \"onClick\" in closeButton && closeButton.onClick) {\n closeButton.onClick(e);\n }\n\n if (\n !e.defaultPrevented &&\n globalCloseButton &&\n \"onClick\" in globalCloseButton\n ) {\n globalCloseButton.onClick?.(e);\n }\n };\n\n const renderCloseButton = () => {\n if (\n (!closeButton && !globalOptions.appBar?.closeButton) ||\n !activity.isRoot\n ) {\n return null;\n }\n if (closeButton && \"render\" in closeButton && closeButton.render) {\n return closeButton.render();\n }\n if (\n globalCloseButton &&\n \"render\" in globalCloseButton &&\n globalCloseButton.render\n ) {\n return globalCloseButton.render();\n }\n\n return (\n <button\n type=\"button\"\n className={css.closeButton}\n onClick={onCloseClick}\n >\n {(() => {\n if (\n closeButton &&\n \"renderIcon\" in closeButton &&\n closeButton.renderIcon\n ) {\n return closeButton.renderIcon();\n }\n if (\n globalCloseButton &&\n \"renderIcon\" in globalCloseButton &&\n globalCloseButton.renderIcon\n ) {\n return globalCloseButton.renderIcon();\n }\n\n return <IconClose />;\n })()}\n </button>\n );\n };\n\n const hasLeft = !!(\n (closeButtonLocation === \"left\" && closeButton) ||\n backButton ||\n appendLeft\n );\n\n return (\n <div\n ref={ref}\n className={css.appBar({\n border,\n })}\n style={assignInlineVars(\n compactMap({\n [globalVars.appBar.iconColor]: iconColor,\n [globalVars.appBar.textColor]: textColor,\n [globalVars.appBar.borderColor]: borderColor,\n [globalVars.appBar.borderSize]: borderSize,\n [globalVars.appBar.height]: height,\n [globalVars.appBar.backgroundColor]:\n backgroundColor || globalVars.backgroundColor,\n [appScreenCss.vars.appBar.center.mainWidth]: `${maxWidth}px`,\n }),\n )}\n >\n <div className={css.left}>\n {closeButtonLocation === \"left\" && renderCloseButton()}\n {renderBackButton()}\n {appendLeft?.()}\n </div>\n <div ref={centerRef} className={css.center}>\n <div\n className={css.centerMain({\n hasLeft,\n })}\n >\n {typeof title === \"string\" ? (\n <div className={css.centerText}>{title}</div>\n ) : (\n title\n )}\n </div>\n </div>\n <div className={css.right}>\n {appendRight?.()}\n {closeButtonLocation === \"right\" && renderCloseButton()}\n </div>\n </div>\n );\n },\n);\n\nexport default AppBar;\n", "import React from \"react\";\n\nconst IconBack: React.FC<{\n className?: string;\n}> = (props) => (\n <svg\n className={props.className}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.5659 5.56564C11.8783 5.25322 11.8783 4.74669 11.5659 4.43427C11.2535 4.12185 10.7469 4.12185 10.4345 4.43427L3.43451 11.4343C3.12209 11.7467 3.12209 12.2532 3.43451 12.5656L10.4345 19.5656C10.7469 19.8781 11.2535 19.8781 11.5659 19.5656C11.8783 19.2532 11.8783 18.7467 11.5659 18.4343L5.93157 12.8H20.0002C20.442 12.8 20.8002 12.4418 20.8002 12C20.8002 11.5581 20.442 11.2 20.0002 11.2H5.93157L11.5659 5.56564Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default IconBack;\n", "import React from \"react\";\n\nconst IconClose: React.FC<{\n className?: string;\n}> = (props) => (\n <svg\n className={props.className}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.56588 5.43433C6.25346 5.12191 5.74693 5.12191 5.43451 5.43433C5.12209 5.74675 5.12209 6.25328 5.43451 6.5657L10.8688 12L5.43451 17.4343C5.12209 17.7467 5.12209 18.2533 5.43451 18.5657C5.74693 18.8781 6.25346 18.8781 6.56588 18.5657L12.0002 13.1314L17.4345 18.5657C17.7469 18.8781 18.2535 18.8781 18.5659 18.5657C18.8783 18.2533 18.8783 17.7467 18.5659 17.4343L13.1316 12L18.5659 6.5657C18.8783 6.25328 18.8783 5.74675 18.5659 5.43433C18.2535 5.12191 17.7469 5.12191 17.4345 5.43433L12.0002 10.8686L6.56588 5.43433Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6.56588 5.43433C6.25346 5.12191 5.74693 5.12191 5.43451 5.43433C5.12209 5.74675 5.12209 6.25328 5.43451 6.5657L10.8688 12L5.43451 17.4343C5.12209 17.7467 5.12209 18.2533 5.43451 18.5657C5.74693 18.8781 6.25346 18.8781 6.56588 18.5657L12.0002 13.1314L17.4345 18.5657C17.7469 18.8781 18.2535 18.8781 18.5659 18.5657C18.8783 18.2533 18.8783 17.7467 18.5659 17.4343L13.1316 12L18.5659 6.5657C18.8783 6.25328 18.8783 5.74675 18.5659 5.43433C18.2535 5.12191 17.7469 5.12191 17.4345 5.43433L12.0002 10.8686L6.56588 5.43433Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default IconClose;\n", "import 'src/styles/f.css.ts.vanilla.css?source=LmRodGh4cTAgewogIHdpZHRoOiAxMDAlOwp9Ci5kaHRoeHExIHsKICBoZWlnaHQ6IDEwMCU7Cn0KLmRodGh4cTIgewogIHRvcDogMDsKfQouZGh0aHhxMyB7CiAgbGVmdDogMDsKfQouZGh0aHhxNCB7CiAgcG9zaXRpb246IGFic29sdXRlOwp9Ci5kaHRoeHE1IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmRodGh4cTcgewogIGRpc3BsYXk6IGZsZXg7Cn0KLmRodGh4cTggewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLmRodGh4cTkgewogIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKfQouZGh0aHhxYSB7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmRodGh4cWIgewogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmRodGh4cWMgewogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmRodGh4cWQgewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouZGh0aHhxZSB7CiAgY3Vyc29yOiBwb2ludGVyOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmRodGh4cWYgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLmRodGh4cWcgewogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Owp9Ci5kaHRoeHFoIHsKICBhcHBlYXJhbmNlOiBub25lOwogIGJvcmRlcjogMDsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQ6IG5vbmU7Cn0=';\nimport 'src/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAE+2U3UrEMBBG7/cpAt4obEKzWha6+CQikr+2wSYTJhNcVnx3q6hX6ra97ZJACMn5IJPDNAhAW9Z8LA9WkeKZlHluB3jhaSidj1yr7A0vnlPvgrtX0SJ4+8heN4zxf67r8aBDKNFyAwNgw67atj2coawPv5DYaXVdbdnXFLK+ORekUho3yDWgdfhXULWfG5T9yTVMpuNUrne+66lht6JGF6ZS3kD8qdtOjuNuKkruSAvRZX+mgQgCz71z9F0mVNaXPBbq881vmxmGmZIcko+wcscqUc+3bCf2a9ZMPEkDKYVTtW53Lv1pqThy3eJcms5sd94BLE4WS0QJAAA=';\nimport 'src/components/AppScreen.css.ts.vanilla.css?source=#H4sIAAAAAAAAE61V246bMBB9z1f4pRJR48jsbi9x1P9oVVXVYDtgYmzLmKTdqv9eA8smwJImKBIPoDlz5syV9c+Yq93T49NH9GeBUAJsnzpTaY6ZUcZRdAAXYVz6YNgpc8RWVanUOIFSMlxJzGWBh17L7eLvYt0xf5rJfJn1c8PqHehSeml0x9fZSR/OTvCdcQVtXxV48TWKCXnXR8sGbSww6X9TRLbh6xlLzcWvYZy482TG2uKZoBPJClFnjP/OwcOFPH0mCvEFNHdG8h9oICITMs08RTFxotj2CkmRklqAw6kDLoX20axmrZBLE4jICr08y34xNkNJr3WJezi4EpdM4sigZdfh8tZ4EK7JOdhL5oxSdbHwUSR76fGrtTVJnYYJMBXLLnT2oV+GnNKOrSVJwDWRuSytghBWGy16wxCfMshvGgZWWeG81OZsHPIrJ3gUenNPFZvrBJFJNXBPNTBLDZkrYbyj+RuH4i0N36Jmfyd1zO7RWNKoQ+drOKVuukKz+zVWNurWTcpax33jaIHzsMPYG0sRA8X+e/nA2vDhcHtOl+g9YkYHeDiaJewEBicgnIFS+Jq0voD3iSL0YSrAWVaqyeoouc9CMdYPH15u/cRleux7F+3o1ypvFLg9+8E0CdaHBOFbaWo5/wBUmwz0SQgAAA==';\nimport 'src/components/AppBar.css.ts.vanilla.css?source=#H4sIAAAAAAAAE61Wy3LbIBTd5yvYdMbuBA3yM1Gmmy6666qbdjqdzLWEbBoEDCC/Ov33ApIdybISp85O4j44nHvvgegx3j2NYTIl6M8NQgtIn5ZaliLDqeRSJ2gNeoCxsc6Qc7nBipdLJvACDEtxyTAo5X40Po0cPrh0K8qWK3t5kso/hCrIMiaW2EqVoFQKFyzswEBOMWgKmAlDrbd2valY9zru3X9GtwdIj3HG88l4MnHGvzfRY5xKpYp9jKIjL7co0VLanxlYeOEIdkUL+iktFdWWCfmrkSEwq6RhlkmRIFgYyUtLuztWWBbvs3k3WcBhNQiTS10k1ScHS78PYkI+tCkg/4sCRKYlyzoESAUps7sEkYceGD8cDE2L4dFeE9YuFTmDs7Lcvwfkbqo2+rgffT8yeD9kcBWyKjCuZl1usVlBJjcJCkOCiNqiFHg6uHjopc6oxobt6RB9RDgeInK5YlTBB7Vo4BtVE1PNtGsYRKKpa4y2T0ILZXfBM2NGcXAUCCloy2sc7G+UMubkpiFizVasyUZjQgrjjRuW2VWCRtGoQviseaNo3gE9TiC1bE1PBiIa9e1DTCt+GgJz7gUsbllmwVKjaQ/MNJzijRxYurXt0nRkYXalLLQgewHyMH+XxrJ857YWlgpHoz+sT65tU+c5zZ0trinPnXNoQrcUxXfzQyk4ExQf6hFH06Pvpl5bSJ49HEaB7UO31W3plvquhLcd/NyVMOu9EhrN7E/uF4CzpcDM0sK4m9CRQvVZpp5NoXghrLkaTp5DwbhL7gvNKTY74/Leos+OqqevkH4L/1+cZ4erGSGnXB9oDsWYVgU8J0ADPA3Xy1UPgsseAq88AM538vzKTp439aruTRKNu/N/V13BvjxyTbXfxKHlnCnDzAm7TKyoZt06HNcbee/7BBOhArQ/QwUKSivbga+oaIeq+yup6kHqP9yW/wDsb3cFjgoAAA==';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var appBar = _7a468({defaultClassName:'_1yk3a450 dhthxq4 dhthxq8 dhthxq7 dhthxq0 dhthxqg _1dlf4347',variantClassNames:{border:{true:'_1yk3a451'}},defaultVariants:{},compoundVariants:[]});\nexport var backButton = '_1yk3a453 dhthxq8 dhthxq7 dhthxqa dhthxqe dhthxqh';\nexport var center = '_1yk3a455 dhthxq8 dhthxq7';\nexport var centerMain = _7a468({defaultClassName:'_1yk3a456',variantClassNames:{hasLeft:{true:'_1yk3a457'}},defaultVariants:{},compoundVariants:[]});\nexport var centerText = '_1yk3a458 dhthxqb dhthxqc dhthxq0';\nexport var closeButton = '_1yk3a453 dhthxq8 dhthxq7 dhthxqa dhthxqe dhthxqh';\nexport var left = '_1yk3a452 dhthxq8 dhthxq7 dhthxq1';\nexport var right = '_1yk3a459 dhthxq8 dhthxq7 dhthxq1 dhthxq5';", "import 'src/styles/f.css.ts.vanilla.css?source=LmRodGh4cTAgewogIHdpZHRoOiAxMDAlOwp9Ci5kaHRoeHExIHsKICBoZWlnaHQ6IDEwMCU7Cn0KLmRodGh4cTIgewogIHRvcDogMDsKfQouZGh0aHhxMyB7CiAgbGVmdDogMDsKfQouZGh0aHhxNCB7CiAgcG9zaXRpb246IGFic29sdXRlOwp9Ci5kaHRoeHE1IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmRodGh4cTcgewogIGRpc3BsYXk6IGZsZXg7Cn0KLmRodGh4cTggewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLmRodGh4cTkgewogIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKfQouZGh0aHhxYSB7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmRodGh4cWIgewogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmRodGh4cWMgewogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmRodGh4cWQgewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouZGh0aHhxZSB7CiAgY3Vyc29yOiBwb2ludGVyOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmRodGh4cWYgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLmRodGh4cWcgewogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Owp9Ci5kaHRoeHFoIHsKICBhcHBlYXJhbmNlOiBub25lOwogIGJvcmRlcjogMDsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQ6IG5vbmU7Cn0=';\nimport 'src/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAE+2U3UrEMBBG7/cpAt4obEKzWha6+CQikr+2wSYTJhNcVnx3q6hX6ra97ZJACMn5IJPDNAhAW9Z8LA9WkeKZlHluB3jhaSidj1yr7A0vnlPvgrtX0SJ4+8heN4zxf67r8aBDKNFyAwNgw67atj2coawPv5DYaXVdbdnXFLK+ORekUho3yDWgdfhXULWfG5T9yTVMpuNUrne+66lht6JGF6ZS3kD8qdtOjuNuKkruSAvRZX+mgQgCz71z9F0mVNaXPBbq881vmxmGmZIcko+wcscqUc+3bCf2a9ZMPEkDKYVTtW53Lv1pqThy3eJcms5sd94BLE4WS0QJAAA=';\nimport 'src/components/AppScreen.css.ts.vanilla.css?source=#H4sIAAAAAAAAE61V246bMBB9z1f4pRJR48jsbi9x1P9oVVXVYDtgYmzLmKTdqv9eA8smwJImKBIPoDlz5syV9c+Yq93T49NH9GeBUAJsnzpTaY6ZUcZRdAAXYVz6YNgpc8RWVanUOIFSMlxJzGWBh17L7eLvYt0xf5rJfJn1c8PqHehSeml0x9fZSR/OTvCdcQVtXxV48TWKCXnXR8sGbSww6X9TRLbh6xlLzcWvYZy482TG2uKZoBPJClFnjP/OwcOFPH0mCvEFNHdG8h9oICITMs08RTFxotj2CkmRklqAw6kDLoX20axmrZBLE4jICr08y34xNkNJr3WJezi4EpdM4sigZdfh8tZ4EK7JOdhL5oxSdbHwUSR76fGrtTVJnYYJMBXLLnT2oV+GnNKOrSVJwDWRuSytghBWGy16wxCfMshvGgZWWeG81OZsHPIrJ3gUenNPFZvrBJFJNXBPNTBLDZkrYbyj+RuH4i0N36Jmfyd1zO7RWNKoQ+drOKVuukKz+zVWNurWTcpax33jaIHzsMPYG0sRA8X+e/nA2vDhcHtOl+g9YkYHeDiaJewEBicgnIFS+Jq0voD3iSL0YSrAWVaqyeoouc9CMdYPH15u/cRleux7F+3o1ypvFLg9+8E0CdaHBOFbaWo5/wBUmwz0SQgAAA==';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var allTransitions = '_1dlf4348';\nexport var appScreen = _7a468({defaultClassName:'dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 dhthxqb',variantClassNames:{transitionState:{'enter-active':'_1dlf4349','enter-done':'_1dlf434a','exit-active':'_1dlf434b','exit-done':'_1dlf434c'}},defaultVariants:{},compoundVariants:[]});\nexport var background = '_1dlf4347';\nexport var dim = '_1dlf434i dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 _1dlf4346 _1dlf4348';\nexport var edge = _7a468({defaultClassName:'_1dlf434l dhthxq4 dhthxq2 dhthxq3 dhthxq1',variantClassNames:{hasAppBar:{true:'_1dlf434m'}},defaultVariants:{},compoundVariants:[]});\nexport var enterActive = '_1dlf4349';\nexport var enterDone = '_1dlf434a';\nexport var exitActive = '_1dlf434b';\nexport var exitDone = '_1dlf434c';\nexport var paper = _7a468({defaultClassName:'_1dlf434j dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 _1dlf4347 _1dlf4348',variantClassNames:{hasAppBar:{true:'_1dlf434k dhthxqf'}},defaultVariants:{},compoundVariants:[]});\nexport var vars = {transitionDuration:'var(--_1dlf4340)',zIndexes:{dim:'var(--_1dlf4341)',paper:'var(--_1dlf4342)',edge:'var(--_1dlf4343)',appBar:'var(--_1dlf4344)'},appBar:{center:{mainWidth:'var(--_1dlf4345)'}}};", "/* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n\nimport { useActions, useActivity } from \"@stackflow/react\";\nimport { assignInlineVars } from \"@vanilla-extract/dynamic\";\nimport React, { useRef } from \"react\";\n\nimport { useLazy, useStyleEffect } from \"../hooks\";\nimport type { GlobalVars } from \"../theme.css\";\nimport { globalVars } from \"../theme.css\";\nimport { compactMap } from \"../utils\";\nimport * as css from \"./BottomSheet.css\";\n\ntype BottomSheetProps = Partial<\n Pick<GlobalVars, \"backgroundColor\" | \"dimBackgroundColor\">\n> &\n Partial<GlobalVars[\"bottomSheet\"]> & {\n onOutsideClick?: React.MouseEventHandler;\n children: React.ReactNode;\n };\nconst BottomSheet: React.FC<BottomSheetProps> = ({\n borderRadius = \"1rem\",\n backgroundColor,\n dimBackgroundColor,\n onOutsideClick,\n children,\n}) => {\n const activity = useActivity();\n const { pop } = useActions();\n\n const containerRef = useRef<HTMLDivElement>(null);\n const paperRef = useRef<HTMLDivElement>(null);\n\n useStyleEffect({\n styleName: \"hide\",\n refs: [containerRef],\n });\n useStyleEffect({\n styleName: \"offset\",\n refs: [paperRef],\n });\n useStyleEffect({\n styleName: \"swipe-back\",\n refs: [paperRef],\n });\n\n const popLock = useRef(false);\n\n const onDimClick: React.MouseEventHandler = (e) => {\n onOutsideClick?.(e);\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (popLock.current) {\n return;\n }\n popLock.current = true;\n\n pop();\n };\n const onPaperClick: React.MouseEventHandler = (e) => {\n e.stopPropagation();\n };\n\n const zIndexBase = activity.zIndex * 5 + 3;\n const zIndexPaper = activity.zIndex * 5 + 4;\n\n return (\n <div\n className={css.container({\n transitionState: useLazy(activity.transitionState),\n })}\n ref={containerRef}\n style={assignInlineVars(\n compactMap({\n [globalVars.bottomSheet.borderRadius]: borderRadius,\n [globalVars.backgroundColor]: backgroundColor,\n [globalVars.dimBackgroundColor]: dimBackgroundColor,\n [css.vars.zIndexes.dim]: `${zIndexBase}`,\n [css.vars.zIndexes.paper]: `${zIndexPaper}`,\n [css.vars.transitionDuration]:\n activity.transitionState === \"enter-active\" ||\n activity.transitionState === \"exit-active\"\n ? `var(--stackflow-transition-duration)`\n : \"0ms\",\n }),\n )}\n >\n <div className={css.dim} ref={paperRef} onClick={onDimClick}>\n <div className={css.paper} onClick={onPaperClick}>\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nexport default BottomSheet;\n", "import 'src/styles/f.css.ts.vanilla.css?source=LmRodGh4cTAgewogIHdpZHRoOiAxMDAlOwp9Ci5kaHRoeHExIHsKICBoZWlnaHQ6IDEwMCU7Cn0KLmRodGh4cTIgewogIHRvcDogMDsKfQouZGh0aHhxMyB7CiAgbGVmdDogMDsKfQouZGh0aHhxNCB7CiAgcG9zaXRpb246IGFic29sdXRlOwp9Ci5kaHRoeHE1IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmRodGh4cTcgewogIGRpc3BsYXk6IGZsZXg7Cn0KLmRodGh4cTggewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLmRodGh4cTkgewogIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKfQouZGh0aHhxYSB7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmRodGh4cWIgewogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmRodGh4cWMgewogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmRodGh4cWQgewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouZGh0aHhxZSB7CiAgY3Vyc29yOiBwb2ludGVyOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmRodGh4cWYgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLmRodGh4cWcgewogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Owp9Ci5kaHRoeHFoIHsKICBhcHBlYXJhbmNlOiBub25lOwogIGJvcmRlcjogMDsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQ6IG5vbmU7Cn0=';\nimport 'src/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAE+2U3UrEMBBG7/cpAt4obEKzWha6+CQikr+2wSYTJhNcVnx3q6hX6ra97ZJACMn5IJPDNAhAW9Z8LA9WkeKZlHluB3jhaSidj1yr7A0vnlPvgrtX0SJ4+8heN4zxf67r8aBDKNFyAwNgw67atj2coawPv5DYaXVdbdnXFLK+ORekUho3yDWgdfhXULWfG5T9yTVMpuNUrne+66lht6JGF6ZS3kD8qdtOjuNuKkruSAvRZX+mgQgCz71z9F0mVNaXPBbq881vmxmGmZIcko+wcscqUc+3bCf2a9ZMPEkDKYVTtW53Lv1pqThy3eJcms5sd94BLE4WS0QJAAA=';\nimport 'src/components/BottomSheet.css.ts.vanilla.css?source=Ll8xaHQzOGgwMyB7CiAgdHJhbnNpdGlvbjogdmFyKC0tXzFodDM4aDAwKTsKfQouXzFodDM4aDA3IHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7Cn0KLl8xaHQzOGgwZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3RhY2tmbG93LXBsdWdpbi1iYXNpYy11aS1kaW0tYmFja2dyb3VuZC1jb2xvcik7CiAgei1pbmRleDogdmFyKC0tXzFodDM4aDAxKTsKICBvcGFjaXR5OiAwOwp9Ci5fMWh0MzhoMDQgLl8xaHQzOGgwZCwgLl8xaHQzOGgwNSAuXzFodDM4aDBkIHsKICBvcGFjaXR5OiAxOwp9Ci5fMWh0MzhoMDYgLl8xaHQzOGgwZCwgLl8xaHQzOGgwNyAuXzFodDM4aDBkIHsKICBvcGFjaXR5OiAwOwp9Ci5fMWh0MzhoMGUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN0YWNrZmxvdy1wbHVnaW4tYmFzaWMtdWktYmFja2dyb3VuZC1jb2xvcik7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3RhY2tmbG93LXBsdWdpbi1iYXNpYy11aS1ib3R0b20tc2hlZXQtYm9yZGVyLXJhZGl1cykgdmFyKC0tc3RhY2tmbG93LXBsdWdpbi1iYXNpYy11aS1ib3R0b20tc2hlZXQtYm9yZGVyLXJhZGl1cykgMCAwOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsKICBvcGFjaXR5OiAwOwp9Ci5fMWh0MzhoMDQgLl8xaHQzOGgwZSwgLl8xaHQzOGgwNSAuXzFodDM4aDBlIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgb3BhY2l0eTogMTsKfQouXzFodDM4aDA2IC5fMWh0MzhoMGUsIC5fMWh0MzhoMDcgLl8xaHQzOGgwZSB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpOwogIG9wYWNpdHk6IDA7Cn0=';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var container = _7a468({defaultClassName:'dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 dhthxqb',variantClassNames:{transitionState:{'enter-active':'_1ht38h04','enter-done':'_1ht38h05','exit-active':'_1ht38h06','exit-done':'_1ht38h07'}},defaultVariants:{},compoundVariants:[]});\nexport var dim = '_1ht38h0d dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 dhthxqb dhthxq9 dhthxq7 _1ht38h03';\nexport var enterActive = '_1ht38h04';\nexport var enterDone = '_1ht38h05';\nexport var exitActive = '_1ht38h06';\nexport var exitDone = '_1ht38h07';\nexport var paper = '_1ht38h0e dhthxqb _1ht38h03';\nexport var vars = {transitionDuration:'var(--_1ht38h00)',zIndexes:{dim:'var(--_1ht38h01)',paper:'var(--_1ht38h02)'}};", "/* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n\nimport { useActions, useActivity } from \"@stackflow/react\";\nimport { assignInlineVars } from \"@vanilla-extract/dynamic\";\nimport React, { useRef } from \"react\";\n\nimport { useLazy, useStyleEffect } from \"../hooks\";\nimport type { GlobalVars } from \"../theme.css\";\nimport { globalVars } from \"../theme.css\";\nimport { compactMap } from \"../utils\";\nimport * as css from \"./Modal.css\";\n\ntype ModalProps = Partial<\n Pick<GlobalVars, \"backgroundColor\" | \"dimBackgroundColor\">\n> &\n Partial<GlobalVars[\"modal\"]> & {\n onOutsideClick?: React.MouseEventHandler;\n children: React.ReactNode;\n };\nconst Modal: React.FC<ModalProps> = ({\n backgroundColor,\n dimBackgroundColor,\n borderRadius = \"1rem\",\n onOutsideClick,\n children,\n}) => {\n const activity = useActivity();\n const { pop } = useActions();\n\n const containerRef = useRef<HTMLDivElement>(null);\n const paperRef = useRef<HTMLDivElement>(null);\n\n useStyleEffect({\n styleName: \"hide\",\n refs: [containerRef],\n });\n useStyleEffect({\n styleName: \"offset\",\n refs: [paperRef],\n });\n useStyleEffect({\n styleName: \"swipe-back\",\n refs: [paperRef],\n });\n\n const popLock = useRef(false);\n\n const onDimClick: React.MouseEventHandler = (e) => {\n onOutsideClick?.(e);\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (popLock.current) {\n return;\n }\n popLock.current = true;\n\n pop();\n };\n const onPaperClick: React.MouseEventHandler = (e) => {\n e.stopPropagation();\n };\n\n const zIndexBase = activity.zIndex * 5 + 3;\n const zIndexPaper = activity.zIndex * 5 + 4;\n\n return (\n <div\n className={css.container({\n transitionState: useLazy(activity.transitionState),\n })}\n ref={containerRef}\n style={assignInlineVars(\n compactMap({\n [globalVars.bottomSheet.borderRadius]: borderRadius,\n [globalVars.backgroundColor]: backgroundColor,\n [globalVars.dimBackgroundColor]: dimBackgroundColor,\n [css.vars.zIndexes.dim]: `${zIndexBase}`,\n [css.vars.zIndexes.paper]: `${zIndexPaper}`,\n [css.vars.transitionDuration]:\n activity.transitionState === \"enter-active\" ||\n activity.transitionState === \"exit-active\"\n ? `var(--stackflow-transition-duration)`\n : \"0ms\",\n }),\n )}\n >\n <div className={css.dim} ref={paperRef} onClick={onDimClick}>\n <div className={css.paper} onClick={onPaperClick}>\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Modal;\n", "import 'src/styles/f.css.ts.vanilla.css?source=LmRodGh4cTAgewogIHdpZHRoOiAxMDAlOwp9Ci5kaHRoeHExIHsKICBoZWlnaHQ6IDEwMCU7Cn0KLmRodGh4cTIgewogIHRvcDogMDsKfQouZGh0aHhxMyB7CiAgbGVmdDogMDsKfQouZGh0aHhxNCB7CiAgcG9zaXRpb246IGFic29sdXRlOwp9Ci5kaHRoeHE1IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmRodGh4cTcgewogIGRpc3BsYXk6IGZsZXg7Cn0KLmRodGh4cTggewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLmRodGh4cTkgewogIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKfQouZGh0aHhxYSB7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmRodGh4cWIgewogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmRodGh4cWMgewogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmRodGh4cWQgewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouZGh0aHhxZSB7CiAgY3Vyc29yOiBwb2ludGVyOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmRodGh4cWYgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLmRodGh4cWcgewogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Owp9Ci5kaHRoeHFoIHsKICBhcHBlYXJhbmNlOiBub25lOwogIGJvcmRlcjogMDsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQ6IG5vbmU7Cn0=';\nimport 'src/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAE+2U3UrEMBBG7/cpAt4obEKzWha6+CQikr+2wSYTJhNcVnx3q6hX6ra97ZJACMn5IJPDNAhAW9Z8LA9WkeKZlHluB3jhaSidj1yr7A0vnlPvgrtX0SJ4+8heN4zxf67r8aBDKNFyAwNgw67atj2coawPv5DYaXVdbdnXFLK+ORekUho3yDWgdfhXULWfG5T9yTVMpuNUrne+66lht6JGF6ZS3kD8qdtOjuNuKkruSAvRZX+mgQgCz71z9F0mVNaXPBbq881vmxmGmZIcko+wcscqUc+3bCf2a9ZMPEkDKYVTtW53Lv1pqThy3eJcms5sd94BLE4WS0QJAAA=';\nimport 'src/components/Modal.css.ts.vanilla.css?source=Ll81b3pnOGMzIHsKICB0cmFuc2l0aW9uOiB2YXIoLS1fNW96ZzhjMCk7Cn0KLl81b3pnOGM3IHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7Cn0KLl81b3pnOGNkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zdGFja2Zsb3ctcGx1Z2luLWJhc2ljLXVpLWRpbS1iYWNrZ3JvdW5kLWNvbG9yKTsKICB6LWluZGV4OiB2YXIoLS1fNW96ZzhjMSk7CiAgb3BhY2l0eTogMDsKfQouXzVvemc4YzQgLl81b3pnOGNkLCAuXzVvemc4YzUgLl81b3pnOGNkIHsKICBvcGFjaXR5OiAxOwp9Ci5fNW96ZzhjNiAuXzVvemc4Y2QsIC5fNW96ZzhjNyAuXzVvemc4Y2QgewogIG9wYWNpdHk6IDA7Cn0KLl81b3pnOGNlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zdGFja2Zsb3ctcGx1Z2luLWJhc2ljLXVpLWJhY2tncm91bmQtY29sb3IpOwogIHdpZHRoOiAxMDAlOwogIG1hcmdpbjogMCAyLjVyZW07CiAgYm94LXNoYWRvdzogMHB4IDAuNjI1cmVtIDIuMzc1cmVtIHJnYmEoMCwgMCwgMCwgMC4xNSksIDBweCAuNTYyNXJlbSAyLjg3NXJlbSByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwcHggLjMxMjVyZW0gLjkzNzVyZW0gcmdiYSgwLCAwLCAwLCAwLjEpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXN0YWNrZmxvdy1wbHVnaW4tYmFzaWMtdWktYm90dG9tLXNoZWV0LWJvcmRlci1yYWRpdXMpOwogIHRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICBvcGFjaXR5OiAwOwp9Ci5fNW96ZzhjNCAuXzVvemc4Y2UsIC5fNW96ZzhjNSAuXzVvemc4Y2UgewogIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgb3BhY2l0eTogMTsKfQouXzVvemc4YzYgLl81b3pnOGNlLCAuXzVvemc4YzcgLl81b3pnOGNlIHsKICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgb3BhY2l0eTogMDsKfQ==';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var container = _7a468({defaultClassName:'dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 dhthxqb',variantClassNames:{transitionState:{'enter-active':'_5ozg8c4','enter-done':'_5ozg8c5','exit-active':'_5ozg8c6','exit-done':'_5ozg8c7'}},defaultVariants:{},compoundVariants:[]});\nexport var dim = '_5ozg8cd dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 dhthxqb dhthxq8 dhthxq7 dhthxqa _5ozg8c3';\nexport var enterActive = '_5ozg8c4';\nexport var enterDone = '_5ozg8c5';\nexport var exitActive = '_5ozg8c6';\nexport var exitDone = '_5ozg8c7';\nexport var paper = '_5ozg8ce dhthxqb _5ozg8c3';\nexport var vars = {transitionDuration:'var(--_5ozg8c0)',zIndexes:{dim:'var(--_5ozg8c1)',paper:'var(--_5ozg8c2)'}};"],
|
|
5
|
-
"mappings": "4fACA,OAAS,oBAAAA,OAAwB,2BACjC,OAAOC,IAAS,iBAAAC,GAAe,cAAAC,OAAkB,QCFjD,IAAAC,EAAA,GAAAC,GAAAD,EAAA,aAAAE,GAAA,cAAAC,GAAA,eAAAC,EAAA,gBAAAC,GAAA,kBAAAC,KACO,IAAIC,GAAU,YACVC,GAAY,YACZC,EAAa,CAAC,gBAAgB,oDAAoD,mBAAmB,wDAAwD,OAAO,CAAC,YAAY,wDAAwD,WAAW,uDAAuD,OAAO,kDAAkD,UAAU,sDAAsD,UAAU,sDAAsD,gBAAgB,2DAA2D,EAAE,YAAY,CAAC,aAAa,6DAA6D,EAAE,MAAM,CAAC,aAAa,6DAA6D,CAAC,EAC5tBC,GAAc,sDACdC,GAAgB,wDCLpB,SAASC,EACdC,EAGA,CACA,OAAO,OAAO,QAAQA,CAAG,EAAE,OAAY,CAACC,EAAK,CAACC,EAAKC,CAAK,KAClDA,GAAU,OACZF,EAAIC,GAAOC,GAGNF,GACN,CAAC,CAAC,CACP,CCZO,SAASG,EACdC,EACAC,EACAC,EACA,CACA,IAAMC,EAAW,IAAM,CACrBH,EAAG,oBAAoBC,EAAME,CAAQ,EACrCD,EAAG,CACL,EAEAF,EAAG,iBAAiBC,EAAME,CAAQ,CACpC,CCXO,IAAMC,GAAgBC,IAC3BA,EAAG,EACH,OAAO,iBAAiB,SAAUA,CAAE,EAE7B,IAAM,CACX,OAAO,oBAAoB,SAAUA,CAAE,CACzC,GCNK,IAAMC,GAAO,IAAM,CAAC,ECCpB,SAASC,EAAiBC,EAAgB,CAC/C,sBAAsB,IAAM,CAC1B,sBAAsB,IAAM,CAC1BA,EAAG,CACL,CAAC,CACH,CAAC,CACH,CNeA,IAAMC,GAAuBC,GAAoC,CAC/D,MAAO,SACT,CAAC,EAEYC,GAAwBF,GAAqB,SAEnD,SAASG,GAAmB,CACjC,OAAOC,GAAWJ,EAAoB,CACxC,CAEO,IAAMK,GAEgBC,GAAY,KAAO,CAC9C,IAAK,WACL,UAAU,CAAE,MAAAC,CAAM,EAAG,CApCvB,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAqCI,OACEC,GAAA,cAACb,GAAA,CAAsB,MAAOI,GAC5BS,GAAA,cAAC,OACC,UACE,OAAO,QAAW,YAAcC,EAAMV,EAAQ,OAAS,OAEzD,MAAOW,GACLC,EAAW,CACT,CAAOC,EAAW,iBAAkBb,EAAQ,gBAC5C,CAAOa,EAAW,oBAAqBb,EAAQ,mBAC/C,CAAOa,EAAW,OAAO,cACvBX,EAAAF,EAAQ,SAAR,YAAAE,EAAgB,YAClB,CAAOW,EAAW,OAAO,aAAaV,EAAAH,EAAQ,SAAR,YAAAG,EAAgB,WACtD,CAAOU,EAAW,OAAO,SAAST,EAAAJ,EAAQ,SAAR,YAAAI,EAAgB,OAClD,CAAOS,EAAW,OAAO,YAAYR,EAAAL,EAAQ,SAAR,YAAAK,EAAgB,UACrD,CAAOQ,EAAW,OAAO,YAAYP,EAAAN,EAAQ,SAAR,YAAAM,EAAgB,UACrD,CAAOO,EAAW,YAAY,eAC5BN,EAAAP,EAAQ,cAAR,YAAAO,EAAqB,aACvB,CAAOM,EAAW,MAAM,eACtBL,EAAAR,EAAQ,QAAR,YAAAQ,EAAe,YACnB,CAAC,CACH,GAECP,EAAM,OAAO,CAChB,CACF,CAEJ,CACF,GO/DA,OAAS,cAAAa,GAAY,eAAAC,OAAmB,mBACxC,OAAS,oBAAAC,OAAwB,2BACjC,OAAOC,GAAS,UAAAC,MAAc,QCJ9B,OAAS,aAAAC,GAAW,YAAAC,OAAgB,QAI7B,SAASC,EAAWC,EAAU,CACnC,GAAM,CAACC,EAAOC,CAAQ,EAAIC,GAAwB,MAAS,EAE3D,OAAAC,GAAU,IAAM,CACdC,EAAiB,IAAM,CACrBH,EAASF,CAAK,CAChB,CAAC,CACH,EAAG,CAACA,CAAK,CAAC,EAEHC,CACT,CCbA,OAAS,aAAAK,GAAW,YAAAC,OAAgB,QAI7B,SAASC,GAAY,CAC1B,SAAAC,EACA,SAAAC,EACA,OAAAC,CACF,EAIG,CACD,GAAM,CAACC,EAAUC,CAAW,EAAIC,GAA6B,MAAS,EAEtE,OAAAC,GAAU,IAAM,CACd,IAAMC,EAASP,GAAY,YAAaA,GAAYA,EAAS,QACvDQ,EAASP,EAAS,QAExB,MAAI,CAACC,GAAU,CAACK,GAAU,CAACC,EAClBC,GAGOC,GAAa,IAAM,CACjC,IAAMC,EAAcJ,EAAO,YAErBK,EAAYJ,EAAO,WACnBK,EAAcL,EAAO,YACrBM,EAAaH,EAAcC,EAAYC,EAEvCE,EAAa,KAAK,IAAIH,EAAWE,CAAU,EAEjDV,EAAYO,EAAc,EAAII,CAAU,CAC1C,CAAC,CAGH,EAAG,CAAC,CAAC,EAEE,CACL,SAAAZ,CACF,CACF,CCzCA,OAAS,eAAAa,OAAmB,mBAE5B,OAAS,aAAAC,OAAiB,QAE1B,IAAMC,EAQF,CAAC,EAEE,SAASC,EAAe,CAC7B,UAAAC,EACA,KAAAC,EACA,OAAAC,CACF,EAOG,CACD,IAAMC,EAAWP,GAAY,EAE7BC,GAAU,KACHC,EAAYE,KACfF,EAAYE,GAAa,IAAI,KAG/BF,EAAYE,GAAW,IAAIG,EAAS,OAAQ,CAC1C,KAAAF,EACA,UAAW,CAAC,CAACC,CACf,CAAC,EAEM,IAAM,CACXJ,EAAYE,GAAW,OAAOG,EAAS,MAAM,CAC/C,GACC,CAACA,EAAS,GAAIF,EAAMC,CAAM,CAAC,EAE9BL,GAAU,IAAM,CACd,GAAI,CAACK,EACH,MAAO,IAAM,CAAC,EAGhB,IAAMD,GAAQ,IAAM,CAClB,IAAIG,EAAmC,CAAC,EAExC,QAASC,EAAI,EAAGA,GAAKF,EAAS,OAAQE,GAAK,EAAG,CAC5C,IAAMC,EAAaR,EAAYE,GAAW,IAAIG,EAAS,OAASE,CAAC,EAKjE,GAHIC,GAAA,MAAAA,EAAY,OACdF,EAAM,CAAC,GAAGA,EAAK,GAAGE,EAAW,IAAI,GAE/BA,GAAA,MAAAA,EAAY,UACd,KAEJ,CAEA,OAAOF,CACT,GAAG,EAEGG,EAAUL,EAAO,CACrB,wBAAyBC,EAAS,gBAClC,KAAAF,CACF,CAAC,EAED,MAAO,IAAM,CACXM,GAAA,MAAAA,GACF,CACF,EAAG,CAACJ,EAAS,eAAe,CAAC,CAC/B,CCrEO,SAASK,GAAmB,CACjC,KAAAC,EACA,UAAAC,CACF,EAGG,CACDC,EAAe,CACb,UAAW,OACX,KAAAF,EACA,OAAQC,EACJ,CAAC,CAAE,wBAAAE,EAAyB,KAAAH,CAAK,IAAM,CACrC,OAAQG,OACD,aAAc,CACjBH,EAAK,QAASI,GAAQ,CAChB,CAACA,EAAI,UAITA,EAAI,QAAQ,MAAM,QAAU,OAC9B,CAAC,EACD,KACF,SACS,CACPJ,EAAK,QAASI,GAAQ,CAChB,CAACA,EAAI,UAITA,EAAI,QAAQ,MAAM,QAAU,GAC9B,CAAC,EACD,KACF,EAEJ,EACA,MACN,CAAC,CACH,CCtCO,IAAMC,GAAoB,GACpBC,EAAsB,GAE5B,SAASC,GAAqB,CACnC,KAAAC,EACA,MAAAC,EACA,UAAAC,CACF,EAIG,CACDC,EAAe,CACb,UAAW,SACX,KAAAH,EACA,OAAQE,EACJ,CAAC,CAAE,wBAAAE,EAAyB,KAAAJ,CAAK,IAAM,CACrC,IAAMK,EACJJ,IAAU,YACN,eAAeH,EAAsB,SACrC,eAAeD,GAAoB,SAEzC,OAAQO,OACD,mBACA,aAAc,CACjBJ,EAAK,QAASM,GAAQ,CAChB,CAACA,EAAI,UAITA,EAAI,QAAQ,MAAM,WAAa,uCAC/BA,EAAI,QAAQ,MAAM,UAAYD,EAChC,CAAC,EACD,KACF,KACK,kBACA,YAAa,CAChBE,EAAiB,IAAM,CACrBP,EAAK,QAASM,GAAQ,CACpB,GAAI,CAACA,EAAI,QACP,OAGF,IAAME,EAAMF,EAAI,QAEhBE,EAAI,MAAM,UAAY,GAEtBC,EAAWD,EAAK,gBAAiB,IAAM,CACrCA,EAAI,MAAM,WAAa,EACzB,CAAC,CACH,CAAC,CACH,CAAC,EACD,KACF,SAEE,MAGN,EACA,MACN,CAAC,CACH,CC5DO,SAASE,GAAwB,CACtC,MAAAC,EACA,OAAAC,EACA,QAAAC,EACA,SAAAC,EACA,UAAAC,EACA,SAAAC,CACF,EAOG,CACDC,EAAe,CACb,UAAW,aACX,KAAM,CAACH,CAAQ,EACf,OAAQC,EACJ,CAAC,CAAE,KAAAG,CAAK,IAAM,CACZ,GAAIP,IAAU,YACZ,MAAO,IAAM,CAAC,EAGhB,GAAI,CAACC,EAAO,SAAW,CAACC,EAAQ,SAAW,CAACC,EAAS,QACnD,MAAO,IAAM,CAAC,EAGhB,IAAMK,EAAOP,EAAO,QACdQ,EAAQP,EAAQ,QAChBQ,EAASP,EAAS,QAEpBQ,EAAoB,KACpBC,EAAoB,KACpBC,EAAmB,KAEnBC,EAUC,CAAC,EAEAC,EAAa,IAAM,CACvBJ,EAAK,KACLC,EAAK,KACLC,EAAI,KACJC,EAAa,CAAC,CAChB,EAEIE,EAAW,GAEf,SAASC,EAAUC,EAAY,CACxBF,IACHA,EAAW,GAEX,sBAAsB,IAAM,CAC1B,IAAM,EAAIE,EAAKR,EAAO,YAEtBF,EAAK,MAAM,QAAU,GAAG,EAAI,IAC5BA,EAAK,MAAM,WAAa,KAExBE,EAAO,MAAM,UAAY,SACzBA,EAAO,MAAM,UAAY,cAAcQ,OACvCR,EAAO,MAAM,WAAa,KAE1BH,EAAK,QAASY,GAAQ,CA7EtC,IAAAC,EA8EsB,CAACD,EAAI,UAITA,EAAI,QAAQ,MAAM,UAAY,cAC5B,IAAM,EAAI,GAAKE,OAEjBF,EAAI,QAAQ,MAAM,WAAa,OAE3BC,EAAAD,EAAI,QAAQ,gBAAZ,YAAAC,EAA2B,MAAM,WAAY,SAC/CD,EAAI,QAAQ,cAAc,MAAM,QAAU,SAE9C,CAAC,EAEDH,EAAW,EACb,CAAC,EAEL,CAEA,SAASM,EAAW,CAAE,OAAAC,CAAO,EAAwB,CACnD,sBAAsB,IAAM,CAC1Bf,EAAK,MAAM,QAAU,GAAGe,EAAS,EAAI,IACrCf,EAAK,MAAM,WAAa,uCAExBE,EAAO,MAAM,UAAY,SACzBA,EAAO,MAAM,UAAY,cAAca,EAAS,OAAS,OACzDb,EAAO,MAAM,WAAa,uCAE1BH,EAAK,QAASY,GAAQ,CAChB,CAACA,EAAI,UAITA,EAAI,QAAQ,MAAM,WAAa,uCAC/BA,EAAI,QAAQ,MAAM,UAAY,cAC5BI,EAAS,IAAM,IAAIF,EAAsB,WAE7C,CAAC,EAEDG,EAAWd,EAAQ,gBAAiB,IAAM,CACxCF,EAAK,MAAM,QAAU,GACrBE,EAAO,MAAM,UAAY,GACzBA,EAAO,MAAM,UAAY,GAEzBH,EAAK,QAAQ,CAACY,EAAKM,IAAM,CACvB,GAAI,CAACN,EAAI,QACP,OAGF,IAAMO,EAAYZ,EAAWW,GAEzBF,GACFJ,EAAI,QAAQ,MAAM,WAAa,GAC/BA,EAAI,QAAQ,MAAM,UAAY,GAE1BA,EAAI,QAAQ,gBACdA,EAAI,QAAQ,cAAc,MAAM,QAAU,KAEnCO,IACTP,EAAI,QAAQ,MAAM,WAAaO,EAAU,MAAM,WAC/CP,EAAI,QAAQ,MAAM,UAAYO,EAAU,MAAM,UAE1CP,EAAI,QAAQ,eAAiBO,EAAU,gBACzCP,EAAI,QAAQ,cAAc,MAAM,QAC9BO,EAAU,cAAc,MAAM,SAGtC,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAEA,IAAMC,EAAgBC,GAAkB,CAtJlD,IAAAR,EAuJY,GAAM,CAAE,cAAAS,CAAc,EAAI,UAE1BT,EAAAS,GAAA,YAAAA,EAAe,OAAf,MAAAT,EAAA,KAAAS,GAEAlB,EAAKE,EAAIe,EAAE,QAAQ,GAAG,QACtBhB,EAAK,KAAK,IAAI,EAEdE,EAAaP,EAAK,IAAKY,GAChBA,EAAI,QASF,CACL,MAAO,CACL,UAAWA,EAAI,QAAQ,MAAM,UAC7B,WAAYA,EAAI,QAAQ,MAAM,UAChC,EACA,cAAeA,EAAI,QAAQ,cACvB,CACE,MAAO,CACL,QAASA,EAAI,QAAQ,cAAc,MAAM,OAC3C,CACF,EACA,MACN,EApBS,CACL,MAAO,CACL,UAAW,GACX,WAAY,EACd,CACF,CAgBH,CACH,EAEMW,EAAeF,GAAkB,CACrC,GAAI,CAACjB,EAAI,CACPI,EAAW,EACX,MACF,CAEAF,EAAIe,EAAE,QAAQ,GAAG,QAEjBX,EAAUJ,EAAIF,CAAE,CAClB,EAEMoB,EAAa,IAAM,CACvB,GAAI,CAACpB,GAAM,CAACC,GAAM,CAACC,EAAG,CACpBE,EAAW,EACX,MACF,CAEA,IAAMiB,EAAI,KAAK,IAAI,EAEbT,GADKV,EAAIF,IAAOqB,EAAIpB,GACP,GAAKC,EAAIH,EAAO,YAAc,GAE7Ca,IACFlB,GAAA,MAAAA,KAGFU,EAAW,EACXO,EAAW,CAAE,OAAAC,CAAO,CAAC,CACvB,EAEA,OAAAd,EAAM,iBAAiB,aAAckB,EAAc,CAAE,QAAS,EAAK,CAAC,EACpElB,EAAM,iBAAiB,YAAaqB,EAAa,CAAE,QAAS,EAAK,CAAC,EAClErB,EAAM,iBAAiB,WAAYsB,EAAY,CAAE,QAAS,EAAK,CAAC,EAChEtB,EAAM,iBAAiB,cAAesB,EAAY,CAAE,QAAS,EAAK,CAAC,EAE5D,IAAM,CACXtB,EAAM,oBAAoB,aAAckB,CAAY,EACpDlB,EAAM,oBAAoB,YAAaqB,CAAW,EAClDrB,EAAM,oBAAoB,WAAYsB,CAAU,EAChDtB,EAAM,oBAAoB,cAAesB,CAAU,CACrD,CACF,EACA,MACN,CAAC,CACH,CCnOA,OAAS,cAAAE,GAAY,eAAAC,OAAmB,mBACxC,OAAS,oBAAAC,OAAwB,2BACjC,OAAOC,GAAS,UAAAC,OAAc,QCF9B,OAAOC,OAAW,QAElB,IAAMC,GAEAC,GACJF,GAAA,cAAC,OACC,UAAWE,EAAM,UACjB,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,8BAENF,GAAA,cAAC,QACC,EAAE,iaACF,KAAK,eACP,CACF,EAGKG,EAAQF,GCpBf,OAAOG,MAAW,QAElB,IAAMC,GAEAC,GACJF,EAAA,cAAC,OACC,UAAWE,EAAM,UACjB,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,8BAENF,EAAA,cAAC,QACC,EAAE,wgBACF,KAAK,eACP,EACAA,EAAA,cAAC,QACC,EAAE,wgBACF,KAAK,eACP,CACF,EAGKG,EAAQF,GCpBf,OAAS,mBAAmBG,OAAc,2CACnC,IAAIC,GAASD,GAAO,CAAC,iBAAiB,8DAA8D,kBAAkB,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACrLE,EAAa,oDACbC,GAAS,4BACTC,GAAaJ,GAAO,CAAC,iBAAiB,YAAY,kBAAkB,CAAC,QAAQ,CAAC,KAAK,WAAW,CAAC,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACxIK,GAAa,oCACbC,GAAc,oDACdC,GAAO,oCACPC,GAAQ,4CCTnB,OAAS,mBAAmBC,MAAc,2CAEnC,IAAIC,GAAYC,EAAO,CAAC,iBAAiB,kDAAkD,kBAAkB,CAAC,gBAAgB,CAAC,eAAe,YAAY,aAAa,YAAY,cAAc,YAAY,YAAY,WAAW,CAAC,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAE9Q,IAAIC,GAAM,wEACNC,GAAOC,EAAO,CAAC,iBAAiB,4CAA4C,kBAAkB,CAAC,UAAU,CAAC,KAAK,WAAW,CAAC,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAKxK,IAAIC,GAAQC,EAAO,CAAC,iBAAiB,wEAAwE,kBAAkB,CAAC,UAAU,CAAC,KAAK,mBAAmB,CAAC,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACzMC,EAAO,CAAC,mBAAmB,mBAAmB,SAAS,CAAC,IAAI,mBAAmB,MAAM,mBAAmB,KAAK,mBAAmB,OAAO,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,kBAAkB,CAAC,CAAC,EJgCpN,IAAMC,GAASC,EAAM,WACnB,CACE,CACE,MAAAC,EACA,WAAAC,EACA,YAAAC,EACA,WAAAC,EACA,YAAAC,EACA,oBAAAC,EAAsB,OACtB,OAAAC,EAAS,GACT,UAAAC,EACA,UAAAC,EACA,YAAAC,EACA,WAAAC,EACA,OAAAC,EACA,gBAAAC,CACF,EACAC,IACG,CAhEP,IAAAC,EAiEI,IAAMC,EAAUC,GAAW,EACrBC,EAAWC,GAAY,EAEvBC,EAAgBC,EAAiB,EACjCC,GAAoBP,EAAAK,EAAc,SAAd,YAAAL,EAAsB,YAE1CQ,EAAYC,GAAY,IAAI,EAE5B,CAAE,SAAAC,CAAS,EAAIC,GAAY,CAC/B,SAAUZ,EACV,SAAUS,EACV,OAAQH,EAAc,QAAU,WAClC,CAAC,EAEKO,EAAeC,GAA2C,CAC1DxB,GAAc,YAAaA,GAAcA,EAAW,SACtDA,EAAW,QAAQwB,CAAC,EAGjBA,EAAE,kBACLZ,EAAQ,IAAI,CAEhB,EAEMa,EAAmB,IAAM,CAzFnC,IAAAd,EA0FM,OAAIG,EAAS,OACJ,KAGJd,EAYD,WAAYA,GAAcA,EAAW,QAChCW,EAAAX,EAAW,SAAX,YAAAW,EAAA,KAAAX,GAIPJ,EAAA,cAAC,UAAO,KAAK,SAAS,UAAeI,EAAY,QAASuB,GACvD,eAAgBvB,GAAcA,EAAW,WACxCA,EAAW,WAAW,EAEtBJ,EAAA,cAAC8B,EAAA,IAAS,CAEd,EArBE9B,EAAA,cAAC,UACC,KAAK,SACL,UAAeI,EACf,QAASuB,GAET3B,EAAA,cAAC8B,EAAA,IAAS,CACZ,CAiBN,EAEMC,EAAgBH,GAA2C,CAzHrE,IAAAb,EA0HUV,GAAe,YAAaA,GAAeA,EAAY,SACzDA,EAAY,QAAQuB,CAAC,EAIrB,CAACA,EAAE,kBACHN,GACA,YAAaA,KAEbP,EAAAO,EAAkB,UAAlB,MAAAP,EAAA,KAAAO,EAA4BM,GAEhC,EAEMI,EAAoB,IAAM,CAvIpC,IAAAjB,EAwIM,MACG,CAACV,GAAe,GAACU,EAAAK,EAAc,SAAd,MAAAL,EAAsB,cACxC,CAACG,EAAS,OAEH,KAELb,GAAe,WAAYA,GAAeA,EAAY,OACjDA,EAAY,OAAO,EAG1BiB,GACA,WAAYA,GACZA,EAAkB,OAEXA,EAAkB,OAAO,EAIhCtB,EAAA,cAAC,UACC,KAAK,SACL,UAAeK,GACf,QAAS0B,IAEP,IAEE1B,GACA,eAAgBA,GAChBA,EAAY,WAELA,EAAY,WAAW,EAG9BiB,GACA,eAAgBA,GAChBA,EAAkB,WAEXA,EAAkB,WAAW,EAG/BtB,EAAA,cAACiC,EAAA,IAAU,GACjB,CACL,CAEJ,EAEMC,EAAU,CAAC,EACd5B,IAAwB,QAAUD,GACnCD,GACAF,GAGF,OACEF,EAAA,cAAC,OACC,IAAKc,EACL,UAAeqB,GAAO,CACpB,OAAA5B,CACF,CAAC,EACD,MAAO6B,GACLC,EAAW,CACT,CAACC,EAAW,OAAO,WAAY9B,EAC/B,CAAC8B,EAAW,OAAO,WAAY7B,EAC/B,CAAC6B,EAAW,OAAO,aAAc5B,EACjC,CAAC4B,EAAW,OAAO,YAAa3B,EAChC,CAAC2B,EAAW,OAAO,QAAS1B,EAC5B,CAAC0B,EAAW,OAAO,iBACjBzB,GAAmByB,EAAW,gBAChC,CAAcC,EAAK,OAAO,OAAO,WAAY,GAAGd,KAClD,CAAC,CACH,GAEAzB,EAAA,cAAC,OAAI,UAAewC,IACjBlC,IAAwB,QAAU0B,EAAkB,EACpDH,EAAiB,EACjB3B,GAAA,YAAAA,GACH,EACAF,EAAA,cAAC,OAAI,IAAKuB,EAAW,UAAekB,IAClCzC,EAAA,cAAC,OACC,UAAe0C,GAAW,CACxB,QAAAR,CACF,CAAC,GAEA,OAAOjC,GAAU,SAChBD,EAAA,cAAC,OAAI,UAAe2C,IAAa1C,CAAM,EAEvCA,CAEJ,CACF,EACAD,EAAA,cAAC,OAAI,UAAe4C,IACjBzC,GAAA,YAAAA,IACAG,IAAwB,SAAW0B,EAAkB,CACxD,CACF,CAEJ,CACF,EAEOa,GAAQ9C,GP9Mf,IAAM+C,GAAsC,CAAC,CAC3C,gBAAAC,EACA,mBAAAC,EACA,OAAAC,EACA,iBAAAC,EACA,SAAAC,CACF,IAAM,CACJ,IAAMC,EAAgBC,EAAiB,EACjCC,EAAWC,GAAY,EACvB,CAAE,IAAAC,CAAI,EAAIC,GAAW,EAErBC,EAAeC,EAAuB,IAAI,EAC1CC,EAASD,EAAuB,IAAI,EACpCE,EAAWF,EAAuB,IAAI,EACtCG,EAAUH,EAAuB,IAAI,EACrCI,EAAYJ,EAAuB,IAAI,EAE7CK,GAAmB,CACjB,KAAM,CAACN,CAAY,EACnB,UAAW,EACb,CAAC,EACDO,GAAqB,CACnB,MAAOb,EAAc,MACrB,KACEA,EAAc,QAAU,YAAc,CAACS,CAAQ,EAAI,CAACA,EAAUE,CAAS,EACzE,UAAW,EACb,CAAC,EACDG,GAAwB,CACtB,MAAOd,EAAc,MACrB,OAAAQ,EACA,QAAAE,EACA,SAAAD,EACA,UAAW,GACX,UAAW,CACTL,EAAI,CACN,CACF,CAAC,EAED,IAAMW,EAAY,CAAC,CAAClB,EAEdmB,EAAad,EAAS,OAAS,EAC/Be,EAAYD,EACZE,EACJF,GAAchB,EAAc,QAAU,aAAee,EAAY,EAAI,GACjEI,EAAaH,EAAa,EAC1BI,EAAeJ,EAAa,EAE5B,CAAE,gBAAAK,CAAgB,EAAInB,EACtBoB,EAAsBC,EAAQF,CAAe,EAEnD,OACEG,EAAA,cAAC,OACC,IAAKlB,EACL,UAAemB,GAAU,CACvB,gBACEJ,IAAoB,cAAgBA,IAAoB,YACpDA,EACAC,CACR,CAAC,EACD,MAAOI,GACLC,EAAW,CACT,CAACC,EAAW,iBAAkBjC,EAC9B,CAACiC,EAAW,oBAAqBhC,EACjC,CAACgC,EAAW,OAAO,QAAS/B,GAAA,YAAAA,EAAQ,OACpC,CAAKgC,EAAK,SAAS,KAAM,GAAGZ,IAC5B,CAAKY,EAAK,SAAS,OAAQ,GAAGX,IAC9B,CAAKW,EAAK,SAAS,MAAO,GAAGV,IAC7B,CAAKU,EAAK,SAAS,QAAS,GAAGT,IAC/B,CAAKS,EAAK,oBACR3B,EAAS,kBAAoB,gBAC7BA,EAAS,kBAAoB,cACzB,uCACA,KACR,CAAC,CACH,GAEAsB,EAAA,cAAC,OAAI,UAAeM,GAAK,IAAKtB,EAAQ,EACtCgB,EAAA,cAAC,OACC,IAAKtB,EAAS,GACd,UAAe6B,GAAM,CACnB,UAAAhB,CACF,CAAC,EACD,IAAKN,GAEJV,CACH,EACC,CAACG,EAAS,QACTF,EAAc,QAAU,aACxB,CAACF,GACC0B,EAAA,cAAC,OAAI,UAAeQ,GAAK,CAAE,UAAAjB,CAAU,CAAC,EAAG,IAAKL,EAAS,EAE1Db,GAAU2B,EAAA,cAACS,GAAAC,GAAAC,GAAA,GAAWtC,GAAX,CAAmB,IAAKc,GAAW,CACjD,CAEJ,EAEOyB,GAAQ1C,GYzHf,OAAS,cAAA2C,GAAY,eAAAC,OAAmB,mBACxC,OAAS,oBAAAC,OAAwB,2BACjC,OAAOC,GAAS,UAAAC,MAAc,QCD9B,OAAS,mBAAmBC,OAAc,2CACnC,IAAIC,GAAYD,GAAO,CAAC,iBAAiB,kDAAkD,kBAAkB,CAAC,gBAAgB,CAAC,eAAe,YAAY,aAAa,YAAY,cAAc,YAAY,YAAY,WAAW,CAAC,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC1QE,GAAM,sFAKV,IAAIC,GAAQ,8BACRC,EAAO,CAAC,mBAAmB,mBAAmB,SAAS,CAAC,IAAI,mBAAmB,MAAM,kBAAkB,CAAC,EDQnH,IAAMC,GAA0C,CAAC,CAC/C,aAAAC,EAAe,OACf,gBAAAC,EACA,mBAAAC,EACA,eAAAC,EACA,SAAAC,CACF,IAAM,CACJ,IAAMC,EAAWC,GAAY,EACvB,CAAE,IAAAC,CAAI,EAAIC,GAAW,EAErBC,EAAeC,EAAuB,IAAI,EAC1CC,EAAWD,EAAuB,IAAI,EAE5CE,EAAe,CACb,UAAW,OACX,KAAM,CAACH,CAAY,CACrB,CAAC,EACDG,EAAe,CACb,UAAW,SACX,KAAM,CAACD,CAAQ,CACjB,CAAC,EACDC,EAAe,CACb,UAAW,aACX,KAAM,CAACD,CAAQ,CACjB,CAAC,EAED,IAAME,EAAUH,EAAO,EAAK,EAEtBI,EAAuCC,GAAM,CACjDZ,GAAA,MAAAA,EAAiBY,GAEb,CAAAA,EAAE,mBAIFF,EAAQ,UAGZA,EAAQ,QAAU,GAElBN,EAAI,GACN,EACMS,EAAyCD,GAAM,CACnDA,EAAE,gBAAgB,CACpB,EAEME,EAAaZ,EAAS,OAAS,EAAI,EACnCa,EAAcb,EAAS,OAAS,EAAI,EAE1C,OACEc,EAAA,cAAC,OACC,UAAeC,GAAU,CACvB,gBAAiBC,EAAQhB,EAAS,eAAe,CACnD,CAAC,EACD,IAAKI,EACL,MAAOa,GACLC,EAAW,CACT,CAACC,EAAW,YAAY,cAAexB,EACvC,CAACwB,EAAW,iBAAkBvB,EAC9B,CAACuB,EAAW,oBAAqBtB,EACjC,CAAKuB,EAAK,SAAS,KAAM,GAAGR,IAC5B,CAAKQ,EAAK,SAAS,OAAQ,GAAGP,IAC9B,CAAKO,EAAK,oBACRpB,EAAS,kBAAoB,gBAC7BA,EAAS,kBAAoB,cACzB,uCACA,KACR,CAAC,CACH,GAEAc,EAAA,cAAC,OAAI,UAAeO,GAAK,IAAKf,EAAU,QAASG,GAC/CK,EAAA,cAAC,OAAI,UAAeQ,GAAO,QAASX,GACjCZ,CACH,CACF,CACF,CAEJ,EAEOwB,GAAQ7B,GEhGf,OAAS,cAAA8B,GAAY,eAAAC,OAAmB,mBACxC,OAAS,oBAAAC,OAAwB,2BACjC,OAAOC,GAAS,UAAAC,MAAc,QCD9B,OAAS,mBAAmBC,OAAc,2CACnC,IAAIC,GAAYD,GAAO,CAAC,iBAAiB,kDAAkD,kBAAkB,CAAC,gBAAgB,CAAC,eAAe,WAAW,aAAa,WAAW,cAAc,WAAW,YAAY,UAAU,CAAC,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACtQE,GAAM,4FAKV,IAAIC,GAAQ,4BACRC,EAAO,CAAC,mBAAmB,kBAAkB,SAAS,CAAC,IAAI,kBAAkB,MAAM,iBAAiB,CAAC,EDQhH,IAAMC,GAA8B,CAAC,CACnC,gBAAAC,EACA,mBAAAC,EACA,aAAAC,EAAe,OACf,eAAAC,EACA,SAAAC,CACF,IAAM,CACJ,IAAMC,EAAWC,GAAY,EACvB,CAAE,IAAAC,CAAI,EAAIC,GAAW,EAErBC,EAAeC,EAAuB,IAAI,EAC1CC,EAAWD,EAAuB,IAAI,EAE5CE,EAAe,CACb,UAAW,OACX,KAAM,CAACH,CAAY,CACrB,CAAC,EACDG,EAAe,CACb,UAAW,SACX,KAAM,CAACD,CAAQ,CACjB,CAAC,EACDC,EAAe,CACb,UAAW,aACX,KAAM,CAACD,CAAQ,CACjB,CAAC,EAED,IAAME,EAAUH,EAAO,EAAK,EAEtBI,EAAuCC,GAAM,CACjDZ,GAAA,MAAAA,EAAiBY,GAEb,CAAAA,EAAE,mBAIFF,EAAQ,UAGZA,EAAQ,QAAU,GAElBN,EAAI,GACN,EACMS,EAAyCD,GAAM,CACnDA,EAAE,gBAAgB,CACpB,EAEME,EAAaZ,EAAS,OAAS,EAAI,EACnCa,EAAcb,EAAS,OAAS,EAAI,EAE1C,OACEc,EAAA,cAAC,OACC,UAAeC,GAAU,CACvB,gBAAiBC,EAAQhB,EAAS,eAAe,CACnD,CAAC,EACD,IAAKI,EACL,MAAOa,GACLC,EAAW,CACT,CAACC,EAAW,YAAY,cAAetB,EACvC,CAACsB,EAAW,iBAAkBxB,EAC9B,CAACwB,EAAW,oBAAqBvB,EACjC,CAAKwB,EAAK,SAAS,KAAM,GAAGR,IAC5B,CAAKQ,EAAK,SAAS,OAAQ,GAAGP,IAC9B,CAAKO,EAAK,oBACRpB,EAAS,kBAAoB,gBAC7BA,EAAS,kBAAoB,cACzB,uCACA,KACR,CAAC,CACH,GAEAc,EAAA,cAAC,OAAI,UAAeO,GAAK,IAAKf,EAAU,QAASG,GAC/CK,EAAA,cAAC,OAAI,UAAeQ,GAAO,QAASX,GACjCZ,CACH,CACF,CACF,CAEJ,EAEOwB,GAAQ7B",
|
|
6
|
-
"names": ["assignInlineVars", "React", "createContext", "useContext", "theme_css_exports", "__export", "android", "cupertino", "globalVars", "rootAndroid", "rootCupertino", "android", "cupertino", "globalVars", "rootAndroid", "rootCupertino", "compactMap", "obj", "acc", "key", "value", "listenOnce", "el", "type", "cb", "listener", "listenResize", "cb", "noop", "requestNextFrame", "cb", "GlobalOptionsContext", "createContext", "GlobalOptionsProvider", "useGlobalOptions", "useContext", "basicUIPlugin", "options", "stack", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "React", "theme_css_exports", "assignInlineVars", "compactMap", "globalVars", "useActions", "useActivity", "assignInlineVars", "React", "useRef", "useEffect", "useState", "useLazy", "value", "state", "setState", "useState", "useEffect", "requestNextFrame", "useEffect", "useState", "useMaxWidth", "outerRef", "innerRef", "enable", "maxWidth", "setMaxWidth", "useState", "useEffect", "$outer", "$inner", "noop", "listenResize", "screenWidth", "leftWidth", "centerWidth", "rightWidth", "sideMargin", "useActivity", "useEffect", "connections", "useStyleEffect", "styleName", "refs", "effect", "activity", "arr", "i", "connection", "cleanup", "useStyleEffectHide", "refs", "hasEffect", "useStyleEffect", "activityTransitionState", "ref", "OFFSET_PX_ANDROID", "OFFSET_PX_CUPERTINO", "useStyleEffectOffset", "refs", "theme", "hasEffect", "useStyleEffect", "activityTransitionState", "transform", "ref", "requestNextFrame", "$el", "listenOnce", "useStyleEffectSwipeBack", "theme", "dimRef", "edgeRef", "paperRef", "hasEffect", "onSwiped", "useStyleEffect", "refs", "$dim", "$edge", "$paper", "x0", "t0", "x", "cachedRefs", "resetState", "_rAFLock", "movePaper", "dx", "ref", "_a", "OFFSET_PX_CUPERTINO", "resetPaper", "swiped", "listenOnce", "i", "cachedRef", "onTouchStart", "e", "activeElement", "onTouchMove", "onTouchEnd", "t", "useActions", "useActivity", "assignInlineVars", "React", "useRef", "React", "IconBack", "props", "IconBack_default", "React", "IconClose", "props", "IconClose_default", "_7a468", "appBar", "backButton", "center", "centerMain", "centerText", "closeButton", "left", "right", "_7a468", "appScreen", "_7a468", "dim", "edge", "_7a468", "paper", "_7a468", "vars", "AppBar", "React", "title", "appendLeft", "appendRight", "backButton", "closeButton", "closeButtonLocation", "border", "iconColor", "textColor", "borderColor", "borderSize", "height", "backgroundColor", "ref", "_a", "actions", "useActions", "activity", "useActivity", "globalOptions", "useGlobalOptions", "globalCloseButton", "centerRef", "useRef", "maxWidth", "useMaxWidth", "onBackClick", "e", "renderBackButton", "IconBack_default", "onCloseClick", "renderCloseButton", "IconClose_default", "hasLeft", "appBar", "assignInlineVars", "compactMap", "globalVars", "vars", "left", "center", "centerMain", "centerText", "right", "AppBar_default", "AppScreen", "backgroundColor", "dimBackgroundColor", "appBar", "preventSwipeBack", "children", "globalOptions", "useGlobalOptions", "activity", "useActivity", "pop", "useActions", "appScreenRef", "useRef", "dimRef", "paperRef", "edgeRef", "appBarRef", "useStyleEffectHide", "useStyleEffectOffset", "useStyleEffectSwipeBack", "hasAppBar", "zIndexBase", "zIndexDim", "zIndexPaper", "zIndexEdge", "zIndexAppBar", "transitionState", "lazyTransitionState", "useLazy", "React", "appScreen", "assignInlineVars", "compactMap", "globalVars", "vars", "dim", "paper", "edge", "AppBar_default", "__spreadProps", "__spreadValues", "AppScreen_default", "useActions", "useActivity", "assignInlineVars", "React", "useRef", "_7a468", "container", "dim", "paper", "vars", "BottomSheet", "borderRadius", "backgroundColor", "dimBackgroundColor", "onOutsideClick", "children", "activity", "useActivity", "pop", "useActions", "containerRef", "useRef", "paperRef", "useStyleEffect", "popLock", "onDimClick", "e", "onPaperClick", "zIndexBase", "zIndexPaper", "React", "container", "useLazy", "assignInlineVars", "compactMap", "globalVars", "vars", "dim", "paper", "BottomSheet_default", "useActions", "useActivity", "assignInlineVars", "React", "useRef", "_7a468", "container", "dim", "paper", "vars", "Modal", "backgroundColor", "dimBackgroundColor", "borderRadius", "onOutsideClick", "children", "activity", "useActivity", "pop", "useActions", "containerRef", "useRef", "paperRef", "useStyleEffect", "popLock", "onDimClick", "e", "onPaperClick", "zIndexBase", "zIndexPaper", "React", "container", "useLazy", "assignInlineVars", "compactMap", "globalVars", "vars", "dim", "paper", "Modal_default"]
|
|
4
|
+
"sourcesContent": ["import type { StackflowReactPlugin } from \"@stackflow/react\";\nimport { assignInlineVars } from \"@vanilla-extract/dynamic\";\nimport React, { createContext, useContext } from \"react\";\n\nimport * as theme from \"./theme.css\";\nimport type { RecursivePartial } from \"./utils\";\nimport { compactMap } from \"./utils\";\n\ntype BasicUIPluginOptions = RecursivePartial<theme.GlobalVars> & {\n theme: \"android\" | \"cupertino\";\n appBar?: {\n closeButton?:\n | {\n renderIcon?: () => React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n }\n | {\n render?: () => React.ReactNode;\n };\n };\n};\n\nconst GlobalOptionsContext = createContext<BasicUIPluginOptions>({\n theme: \"android\",\n});\n\nexport const GlobalOptionsProvider = GlobalOptionsContext.Provider;\n\nexport function useGlobalOptions() {\n return useContext(GlobalOptionsContext);\n}\n\nexport const basicUIPlugin: (\n options: BasicUIPluginOptions,\n) => StackflowReactPlugin = (options) => () => ({\n key: \"basic-ui\",\n wrapStack({ stack }) {\n return (\n <GlobalOptionsProvider value={options}>\n <div\n className={\n typeof window !== \"undefined\" ? theme[options.theme] : undefined\n }\n style={assignInlineVars(\n compactMap({\n [theme.globalVars.backgroundColor]: options.backgroundColor,\n [theme.globalVars.dimBackgroundColor]: options.dimBackgroundColor,\n [theme.globalVars.appBar.borderColor]:\n options.appBar?.borderColor,\n [theme.globalVars.appBar.borderSize]: options.appBar?.borderSize,\n [theme.globalVars.appBar.height]: options.appBar?.height,\n [theme.globalVars.appBar.iconColor]: options.appBar?.iconColor,\n [theme.globalVars.appBar.textColor]: options.appBar?.textColor,\n [theme.globalVars.bottomSheet.borderRadius]:\n options.bottomSheet?.borderRadius,\n [theme.globalVars.modal.borderRadius]:\n options.modal?.borderRadius,\n }),\n )}\n >\n {stack.render()}\n </div>\n </GlobalOptionsProvider>\n );\n },\n});\n", "import 'src/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAE+2U3UrEMBBG7/cpAt4obEKzWha6+CQikr+2wSYTJhNcVnx3q6hX6ra97ZJACMn5IJPDNAhAW9Z8LA9WkeKZlHluB3jhaSidj1yr7A0vnlPvgrtX0SJ4+8heN4zxf67r8aBDKNFyAwNgw67atj2coawPv5DYaXVdbdnXFLK+ORekUho3yDWgdfhXULWfG5T9yTVMpuNUrne+66lht6JGF6ZS3kD8qdtOjuNuKkruSAvRZX+mgQgCz71z9F0mVNaXPBbq881vmxmGmZIcko+wcscqUc+3bCf2a9ZMPEkDKYVTtW53Lv1pqThy3eJcms5sd94BLE4WS0QJAAA=';\nexport var android = '_1coppmz0';\nexport var cupertino = '_1coppmz1';\nexport var globalVars = {backgroundColor:'var(--stackflow-plugin-basic-ui-background-color)',dimBackgroundColor:'var(--stackflow-plugin-basic-ui-dim-background-color)',appBar:{borderColor:'var(--stackflow-plugin-basic-ui-app-bar-border-color)',borderSize:'var(--stackflow-plugin-basic-ui-app-bar-border-size)',height:'var(--stackflow-plugin-basic-ui-app-bar-height)',iconColor:'var(--stackflow-plugin-basic-ui-app-bar-icon-color)',textColor:'var(--stackflow-plugin-basic-ui-app-bar-text-color)',backgroundColor:'var(--stackflow-plugin-basic-ui-app-bar-background-color)'},bottomSheet:{borderRadius:'var(--stackflow-plugin-basic-ui-bottom-sheet-border-radius)'},modal:{borderRadius:'var(--stackflow-plugin-basic-ui-bottom-sheet-border-radius)'}};\nexport var rootAndroid = ':root[data-stackflow-plugin-basic-ui-theme=android]';\nexport var rootCupertino = ':root[data-stackflow-plugin-basic-ui-theme=cupertino]';", "export function compactMap<T extends {}>(\n obj: T,\n): {\n [key in keyof T]: NonNullable<T[key]>;\n} {\n return Object.entries(obj).reduce<any>((acc, [key, value]) => {\n if (value !== null && value !== undefined) {\n acc[key] = value;\n }\n\n return acc;\n }, {});\n}\n", "export function listenOnce<T extends HTMLElement>(\n el: T,\n type: keyof HTMLElementEventMap,\n cb: () => void,\n) {\n const listener = () => {\n el.removeEventListener(type, listener);\n cb();\n };\n\n el.addEventListener(type, listener);\n}\n", "export const listenResize = (cb: () => void) => {\n cb();\n window.addEventListener(\"resize\", cb);\n\n return () => {\n window.removeEventListener(\"resize\", cb);\n };\n};\n", "export const noop = () => {};\n", "// https://github.com/MingruiZhang/react-animate-mount/blob/32300c04a4fdfa97724b70aaaf0c0f403d6da247/src/Animate.js#L171-L179\nexport function requestNextFrame(cb: () => void) {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n cb();\n });\n });\n}\n", "/* eslint-disable no-param-reassign */\n\nimport { useActions, useActivity } from \"@stackflow/react\";\nimport { assignInlineVars } from \"@vanilla-extract/dynamic\";\nimport React, { useRef } from \"react\";\n\nimport { useGlobalOptions } from \"../basicUIPlugin\";\nimport {\n useLazy,\n useStyleEffectHide,\n useStyleEffectOffset,\n useStyleEffectSwipeBack,\n} from \"../hooks\";\nimport type { GlobalVars } from \"../theme.css\";\nimport { globalVars } from \"../theme.css\";\nimport type { PropOf } from \"../utils\";\nimport { compactMap } from \"../utils\";\nimport AppBar from \"./AppBar\";\nimport * as css from \"./AppScreen.css\";\n\ntype AppScreenProps = Partial<\n Pick<GlobalVars, \"backgroundColor\" | \"dimBackgroundColor\">\n> & {\n appBar?: Omit<PropOf<typeof AppBar>, \"theme\" | \"ref\" | \"key\">;\n preventSwipeBack?: boolean;\n children: React.ReactNode;\n};\nconst AppScreen: React.FC<AppScreenProps> = ({\n backgroundColor,\n dimBackgroundColor,\n appBar,\n preventSwipeBack,\n children,\n}) => {\n const globalOptions = useGlobalOptions();\n const activity = useActivity();\n const { pop } = useActions();\n\n const appScreenRef = useRef<HTMLDivElement>(null);\n const dimRef = useRef<HTMLDivElement>(null);\n const paperRef = useRef<HTMLDivElement>(null);\n const edgeRef = useRef<HTMLDivElement>(null);\n const appBarRef = useRef<HTMLDivElement>(null);\n\n useStyleEffectHide({\n refs: [appScreenRef],\n hasEffect: true,\n });\n useStyleEffectOffset({\n theme: globalOptions.theme,\n refs:\n globalOptions.theme === \"cupertino\" ? [paperRef] : [paperRef, appBarRef],\n hasEffect: true,\n });\n useStyleEffectSwipeBack({\n theme: globalOptions.theme,\n dimRef,\n edgeRef,\n paperRef,\n hasEffect: true,\n onSwiped() {\n pop();\n },\n });\n\n const hasAppBar = !!appBar;\n\n const zIndexBase = activity.zIndex * 5;\n const zIndexDim = zIndexBase;\n const zIndexPaper =\n zIndexBase + (globalOptions.theme === \"cupertino\" && hasAppBar ? 1 : 3);\n const zIndexEdge = zIndexBase + 4;\n const zIndexAppBar = zIndexBase + 7;\n\n const { transitionState } = activity;\n const lazyTransitionState = useLazy(transitionState);\n\n const onAppBarTopClick: React.MouseEventHandler = (e) => {\n appBar?.onTopClick?.(e);\n\n if (!e.defaultPrevented) {\n paperRef.current?.scroll({\n top: 0,\n behavior: \"smooth\",\n });\n }\n };\n\n return (\n <div\n ref={appScreenRef}\n className={css.appScreen({\n transitionState:\n transitionState === \"enter-done\" || transitionState === \"exit-done\"\n ? transitionState\n : lazyTransitionState,\n })}\n style={assignInlineVars(\n compactMap({\n [globalVars.backgroundColor]: backgroundColor,\n [globalVars.dimBackgroundColor]: dimBackgroundColor,\n [globalVars.appBar.height]: appBar?.height,\n [css.vars.zIndexes.dim]: `${zIndexDim}`,\n [css.vars.zIndexes.paper]: `${zIndexPaper}`,\n [css.vars.zIndexes.edge]: `${zIndexEdge}`,\n [css.vars.zIndexes.appBar]: `${zIndexAppBar}`,\n [css.vars.transitionDuration]:\n activity.transitionState === \"enter-active\" ||\n activity.transitionState === \"exit-active\"\n ? `var(--stackflow-transition-duration)`\n : \"0ms\",\n }),\n )}\n >\n <div className={css.dim} ref={dimRef} />\n <div\n key={activity.id}\n className={css.paper({\n hasAppBar,\n })}\n ref={paperRef}\n >\n {children}\n </div>\n {!activity.isRoot &&\n globalOptions.theme === \"cupertino\" &&\n !preventSwipeBack && (\n <div className={css.edge({ hasAppBar })} ref={edgeRef} />\n )}\n {appBar && (\n <AppBar {...appBar} ref={appBarRef} onTopClick={onAppBarTopClick} />\n )}\n </div>\n );\n};\n\nexport default AppScreen;\n", "import { useEffect, useState } from \"react\";\n\nimport { requestNextFrame } from \"../utils\";\n\nexport function useLazy<T>(value: T) {\n const [state, setState] = useState<T | undefined>(undefined);\n\n useEffect(() => {\n requestNextFrame(() => {\n setState(value);\n });\n }, [value]);\n\n return state;\n}\n", "import type React from \"react\";\nimport { useEffect, useState } from \"react\";\n\nimport { listenResize, noop } from \"../utils\";\n\nexport function useMaxWidth({\n outerRef,\n innerRef,\n enable,\n}: {\n outerRef: React.ForwardedRef<any>;\n innerRef: React.MutableRefObject<any>;\n enable: boolean;\n}) {\n const [maxWidth, setMaxWidth] = useState<number | undefined>(undefined);\n\n useEffect(() => {\n const $outer = outerRef && \"current\" in outerRef && outerRef.current;\n const $inner = innerRef.current;\n\n if (!enable || !$outer || !$inner) {\n return noop;\n }\n\n const dispose = listenResize(() => {\n const screenWidth = $outer.clientWidth;\n\n const leftWidth = $inner.offsetLeft;\n const centerWidth = $inner.clientWidth;\n const rightWidth = screenWidth - leftWidth - centerWidth;\n\n const sideMargin = Math.max(leftWidth, rightWidth);\n\n setMaxWidth(screenWidth - 2 * sideMargin);\n });\n\n return dispose;\n }, []);\n\n return {\n maxWidth,\n };\n}\n", "import type { ActivityTransitionState } from \"@stackflow/core\";\nimport { useActivity } from \"@stackflow/react\";\nimport type React from \"react\";\nimport { useEffect } from \"react\";\n\nconst connections: {\n [styleName: string]: Map<\n number,\n {\n refs: Array<React.RefObject<any>>;\n hasEffect: boolean;\n }\n >;\n} = {};\n\nexport function useStyleEffect({\n styleName,\n refs,\n effect,\n}: {\n styleName: string;\n refs: Array<React.RefObject<any>>;\n effect?: (params: {\n activityTransitionState: ActivityTransitionState;\n refs: Array<React.RefObject<HTMLElement>>;\n }) => (() => void) | void;\n}) {\n const activity = useActivity();\n\n useEffect(() => {\n if (!connections[styleName]) {\n connections[styleName] = new Map();\n }\n\n connections[styleName].set(activity.zIndex, {\n refs,\n hasEffect: !!effect,\n });\n\n return () => {\n connections[styleName].delete(activity.zIndex);\n };\n }, [activity.id, refs, effect]);\n\n useEffect(() => {\n if (!effect) {\n return () => {};\n }\n\n const refs = (() => {\n let arr: Array<React.RefObject<any>> = [];\n\n for (let i = 1; i <= activity.zIndex; i += 1) {\n const connection = connections[styleName].get(activity.zIndex - i);\n\n if (connection?.refs) {\n arr = [...arr, ...connection.refs];\n }\n if (connection?.hasEffect) {\n break;\n }\n }\n\n return arr;\n })();\n\n const cleanup = effect({\n activityTransitionState: activity.transitionState,\n refs,\n });\n\n return () => {\n cleanup?.();\n };\n }, [activity.transitionState]);\n}\n", "/* eslint-disable no-param-reassign */\n\nimport type React from \"react\";\n\nimport { useStyleEffect } from \"./useStyleEffect\";\n\nexport function useStyleEffectHide({\n refs,\n hasEffect,\n}: {\n refs: Array<React.RefObject<any>>;\n hasEffect?: boolean;\n}) {\n useStyleEffect({\n styleName: \"hide\",\n refs,\n effect: hasEffect\n ? ({ activityTransitionState, refs }) => {\n switch (activityTransitionState) {\n case \"enter-done\": {\n refs.forEach((ref) => {\n if (!ref.current) {\n return;\n }\n\n ref.current.style.display = \"none\";\n });\n break;\n }\n default: {\n refs.forEach((ref) => {\n if (!ref.current) {\n return;\n }\n\n ref.current.style.display = \"\";\n });\n break;\n }\n }\n }\n : undefined,\n });\n}\n", "/* eslint-disable no-param-reassign */\n\nimport { listenOnce, requestNextFrame } from \"../utils\";\nimport { useStyleEffect } from \"./useStyleEffect\";\n\nexport const OFFSET_PX_ANDROID = 32;\nexport const OFFSET_PX_CUPERTINO = 80;\n\nexport function useStyleEffectOffset({\n refs,\n theme,\n hasEffect,\n}: {\n refs: Array<React.RefObject<any>>;\n theme: \"android\" | \"cupertino\";\n hasEffect?: boolean;\n}) {\n useStyleEffect({\n styleName: \"offset\",\n refs,\n effect: hasEffect\n ? ({ activityTransitionState, refs }) => {\n const transform =\n theme === \"cupertino\"\n ? `translateX(-${OFFSET_PX_CUPERTINO / 16}rem)`\n : `translateY(-${OFFSET_PX_ANDROID / 16}rem)`;\n\n switch (activityTransitionState) {\n case \"enter-active\":\n case \"enter-done\": {\n refs.forEach((ref) => {\n if (!ref.current) {\n return;\n }\n\n ref.current.style.transition = `var(--stackflow-transition-duration)`;\n ref.current.style.transform = transform;\n });\n break;\n }\n case \"exit-active\":\n case \"exit-done\": {\n requestNextFrame(() => {\n refs.forEach((ref) => {\n if (!ref.current) {\n return;\n }\n\n const $el = ref.current;\n\n $el.style.transform = \"\";\n\n listenOnce($el, \"transitionend\", () => {\n $el.style.transition = \"\";\n });\n });\n });\n break;\n }\n default: {\n break;\n }\n }\n }\n : undefined,\n });\n}\n", "/* eslint-disable no-param-reassign */\n\nimport { listenOnce } from \"../utils\";\nimport { useStyleEffect } from \"./useStyleEffect\";\nimport { OFFSET_PX_CUPERTINO } from \"./useStyleEffectOffset\";\n\nexport function useStyleEffectSwipeBack({\n theme,\n dimRef,\n edgeRef,\n paperRef,\n hasEffect,\n onSwiped,\n}: {\n theme: \"android\" | \"cupertino\";\n dimRef: React.RefObject<HTMLDivElement>;\n edgeRef: React.RefObject<HTMLDivElement>;\n paperRef: React.RefObject<HTMLDivElement>;\n hasEffect?: boolean;\n onSwiped?: () => void;\n}) {\n useStyleEffect({\n styleName: \"swipe-back\",\n refs: [paperRef],\n effect: hasEffect\n ? ({ refs }) => {\n if (theme !== \"cupertino\") {\n return () => {};\n }\n\n if (!dimRef.current || !edgeRef.current || !paperRef.current) {\n return () => {};\n }\n\n const $dim = dimRef.current;\n const $edge = edgeRef.current;\n const $paper = paperRef.current;\n\n let x0: number | null = null;\n let t0: number | null = null;\n let x: number | null = null;\n\n let cachedRefs: Array<{\n style: {\n transform: string;\n transition: string;\n };\n parentElement?: {\n style: {\n display: string;\n };\n };\n }> = [];\n\n const resetState = () => {\n x0 = null;\n t0 = null;\n x = null;\n cachedRefs = [];\n };\n\n let _rAFLock = false;\n\n function movePaper(dx: number) {\n if (!_rAFLock) {\n _rAFLock = true;\n\n requestAnimationFrame(() => {\n const p = dx / $paper.clientWidth;\n\n $dim.style.opacity = `${1 - p}`;\n $dim.style.transition = \"0s\";\n\n $paper.style.overflowY = \"hidden\";\n $paper.style.transform = `translateX(${dx}px)`;\n $paper.style.transition = \"0s\";\n\n refs.forEach((ref) => {\n if (!ref.current) {\n return;\n }\n\n ref.current.style.transform = `translateX(${\n -1 * (1 - p) * OFFSET_PX_CUPERTINO\n }px)`;\n ref.current.style.transition = \"0s\";\n\n if (ref.current.parentElement?.style.display === \"none\") {\n ref.current.parentElement.style.display = \"block\";\n }\n });\n\n _rAFLock = false;\n });\n }\n }\n\n function resetPaper({ swiped }: { swiped: boolean }) {\n requestAnimationFrame(() => {\n $dim.style.opacity = `${swiped ? 0 : 1}`;\n $dim.style.transition = \"var(--stackflow-transition-duration)\";\n\n $paper.style.overflowY = \"hidden\";\n $paper.style.transform = `translateX(${swiped ? \"100%\" : \"0\"})`;\n $paper.style.transition = \"var(--stackflow-transition-duration)\";\n\n refs.forEach((ref) => {\n if (!ref.current) {\n return;\n }\n\n ref.current.style.transition = `var(--stackflow-transition-duration)`;\n ref.current.style.transform = `translateX(${\n swiped ? \"0\" : `-${OFFSET_PX_CUPERTINO / 16}rem`\n })`;\n });\n\n listenOnce($paper, \"transitionend\", () => {\n $dim.style.opacity = \"\";\n $paper.style.overflowY = \"\";\n $paper.style.transform = \"\";\n\n refs.forEach((ref, i) => {\n if (!ref.current) {\n return;\n }\n\n const cachedRef = cachedRefs[i];\n\n if (swiped) {\n ref.current.style.transition = \"\";\n ref.current.style.transform = \"\";\n\n if (ref.current.parentElement) {\n ref.current.parentElement.style.display = \"\";\n }\n } else if (cachedRef) {\n ref.current.style.transition = cachedRef.style.transition;\n ref.current.style.transform = cachedRef.style.transform;\n\n if (ref.current.parentElement && cachedRef.parentElement) {\n ref.current.parentElement.style.display =\n cachedRef.parentElement.style.display;\n }\n }\n });\n });\n });\n }\n\n const onTouchStart = (e: TouchEvent) => {\n const { activeElement } = document as any;\n\n activeElement?.blur?.();\n // eslint-disable-next-line no-multi-assign\n x0 = x = e.touches[0].clientX;\n t0 = Date.now();\n\n cachedRefs = refs.map((ref) => {\n if (!ref.current) {\n return {\n style: {\n transform: \"\",\n transition: \"\",\n },\n };\n }\n\n return {\n style: {\n transform: ref.current.style.transform,\n transition: ref.current.style.transition,\n },\n parentElement: ref.current.parentElement\n ? {\n style: {\n display: ref.current.parentElement.style.display,\n },\n }\n : undefined,\n };\n });\n };\n\n const onTouchMove = (e: TouchEvent) => {\n if (!x0) {\n resetState();\n return;\n }\n\n x = e.touches[0].clientX;\n\n movePaper(x - x0);\n };\n\n const onTouchEnd = () => {\n if (!x0 || !t0 || !x) {\n resetState();\n return;\n }\n\n const t = Date.now();\n const v = (x - x0) / (t - t0);\n const swiped = v > 1 || x / $paper.clientWidth > 0.4;\n\n if (swiped) {\n onSwiped?.();\n }\n\n resetState();\n resetPaper({ swiped });\n };\n\n $edge.addEventListener(\"touchstart\", onTouchStart, { passive: true });\n $edge.addEventListener(\"touchmove\", onTouchMove, { passive: true });\n $edge.addEventListener(\"touchend\", onTouchEnd, { passive: true });\n $edge.addEventListener(\"touchcancel\", onTouchEnd, { passive: true });\n\n return () => {\n $edge.removeEventListener(\"touchstart\", onTouchStart);\n $edge.removeEventListener(\"touchmove\", onTouchMove);\n $edge.removeEventListener(\"touchend\", onTouchEnd);\n $edge.removeEventListener(\"touchcancel\", onTouchEnd);\n };\n }\n : undefined,\n });\n}\n", "import { useActions, useActivity } from \"@stackflow/react\";\nimport { assignInlineVars } from \"@vanilla-extract/dynamic\";\nimport React, { useRef } from \"react\";\n\nimport { IconBack, IconClose } from \"../assets\";\nimport { useGlobalOptions } from \"../basicUIPlugin\";\nimport { useMaxWidth } from \"../hooks\";\nimport type { GlobalVars } from \"../theme.css\";\nimport { globalVars } from \"../theme.css\";\nimport { compactMap, noop } from \"../utils\";\nimport * as css from \"./AppBar.css\";\nimport * as appScreenCss from \"./AppScreen.css\";\n\ntype AppBarProps = Partial<\n Pick<\n GlobalVars[\"appBar\"],\n | \"borderColor\"\n | \"borderSize\"\n | \"height\"\n | \"iconColor\"\n | \"textColor\"\n | \"backgroundColor\"\n >\n> & {\n title?: React.ReactNode;\n appendLeft?: () => React.ReactNode;\n appendRight?: () => React.ReactNode;\n backButton?:\n | {\n renderIcon?: () => React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n }\n | {\n render?: () => React.ReactNode;\n };\n closeButton?:\n | {\n renderIcon?: () => React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n }\n | {\n render?: () => React.ReactNode;\n };\n closeButtonLocation?: \"left\" | \"right\";\n border?: boolean;\n onTopClick?: (e: React.MouseEvent) => void;\n};\nconst AppBar = React.forwardRef<HTMLDivElement, AppBarProps>(\n (\n {\n title,\n appendLeft,\n appendRight,\n backButton,\n closeButton,\n closeButtonLocation = \"left\",\n border = true,\n iconColor,\n textColor,\n borderColor,\n borderSize,\n height,\n backgroundColor,\n onTopClick,\n },\n ref,\n ) => {\n const actions = useActions();\n const activity = useActivity();\n\n const globalOptions = useGlobalOptions();\n const globalCloseButton = globalOptions.appBar?.closeButton;\n\n const centerRef = useRef<any>(null);\n\n const { maxWidth } = useMaxWidth({\n outerRef: ref,\n innerRef: centerRef,\n enable: globalOptions.theme === \"cupertino\",\n });\n\n const onBackClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (backButton && \"onClick\" in backButton && backButton.onClick) {\n backButton.onClick(e);\n }\n\n if (!e.defaultPrevented) {\n actions.pop();\n }\n };\n\n const renderBackButton = () => {\n if (activity.isRoot) {\n return null;\n }\n\n if (!backButton) {\n return (\n <button\n type=\"button\"\n className={css.backButton}\n onClick={onBackClick}\n >\n <IconBack />\n </button>\n );\n }\n\n if (\"render\" in backButton && backButton.render) {\n return backButton.render?.();\n }\n\n return (\n <button type=\"button\" className={css.backButton} onClick={onBackClick}>\n {\"renderIcon\" in backButton && backButton.renderIcon ? (\n backButton.renderIcon()\n ) : (\n <IconBack />\n )}\n </button>\n );\n };\n\n const onCloseClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (closeButton && \"onClick\" in closeButton && closeButton.onClick) {\n closeButton.onClick(e);\n }\n\n if (\n !e.defaultPrevented &&\n globalCloseButton &&\n \"onClick\" in globalCloseButton\n ) {\n globalCloseButton.onClick?.(e);\n }\n };\n\n const renderCloseButton = () => {\n if (\n (!closeButton && !globalOptions.appBar?.closeButton) ||\n !activity.isRoot\n ) {\n return null;\n }\n if (closeButton && \"render\" in closeButton && closeButton.render) {\n return closeButton.render();\n }\n if (\n globalCloseButton &&\n \"render\" in globalCloseButton &&\n globalCloseButton.render\n ) {\n return globalCloseButton.render();\n }\n\n return (\n <button\n type=\"button\"\n className={css.closeButton}\n onClick={onCloseClick}\n >\n {(() => {\n if (\n closeButton &&\n \"renderIcon\" in closeButton &&\n closeButton.renderIcon\n ) {\n return closeButton.renderIcon();\n }\n if (\n globalCloseButton &&\n \"renderIcon\" in globalCloseButton &&\n globalCloseButton.renderIcon\n ) {\n return globalCloseButton.renderIcon();\n }\n\n return <IconClose />;\n })()}\n </button>\n );\n };\n\n const hasLeft = !!(\n (closeButtonLocation === \"left\" && closeButton) ||\n backButton ||\n appendLeft\n );\n\n return (\n <div\n ref={ref}\n className={css.appBar({\n border,\n })}\n style={assignInlineVars(\n compactMap({\n [globalVars.appBar.iconColor]: iconColor,\n [globalVars.appBar.textColor]: textColor,\n [globalVars.appBar.borderColor]: borderColor,\n [globalVars.appBar.borderSize]: borderSize,\n [globalVars.appBar.height]: height,\n [globalVars.appBar.backgroundColor]:\n backgroundColor || globalVars.backgroundColor,\n [appScreenCss.vars.appBar.center.mainWidth]: `${maxWidth}px`,\n }),\n )}\n >\n <div className={css.left}>\n {closeButtonLocation === \"left\" && renderCloseButton()}\n {renderBackButton()}\n {appendLeft?.()}\n </div>\n <div ref={centerRef} className={css.center}>\n <div\n className={css.centerMain({\n hasLeft,\n })}\n >\n {typeof title === \"string\" ? (\n <div className={css.centerText}>{title}</div>\n ) : (\n title\n )}\n <button\n className={css.centerMainEdge}\n type=\"button\"\n aria-hidden=\"true\"\n onClick={onTopClick}\n />\n </div>\n </div>\n <div className={css.right}>\n {appendRight?.()}\n {closeButtonLocation === \"right\" && renderCloseButton()}\n </div>\n </div>\n );\n },\n);\n\nexport default AppBar;\n", "import React from \"react\";\n\nconst IconBack: React.FC<{\n className?: string;\n}> = (props) => (\n <svg\n className={props.className}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.5659 5.56564C11.8783 5.25322 11.8783 4.74669 11.5659 4.43427C11.2535 4.12185 10.7469 4.12185 10.4345 4.43427L3.43451 11.4343C3.12209 11.7467 3.12209 12.2532 3.43451 12.5656L10.4345 19.5656C10.7469 19.8781 11.2535 19.8781 11.5659 19.5656C11.8783 19.2532 11.8783 18.7467 11.5659 18.4343L5.93157 12.8H20.0002C20.442 12.8 20.8002 12.4418 20.8002 12C20.8002 11.5581 20.442 11.2 20.0002 11.2H5.93157L11.5659 5.56564Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default IconBack;\n", "import React from \"react\";\n\nconst IconClose: React.FC<{\n className?: string;\n}> = (props) => (\n <svg\n className={props.className}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.56588 5.43433C6.25346 5.12191 5.74693 5.12191 5.43451 5.43433C5.12209 5.74675 5.12209 6.25328 5.43451 6.5657L10.8688 12L5.43451 17.4343C5.12209 17.7467 5.12209 18.2533 5.43451 18.5657C5.74693 18.8781 6.25346 18.8781 6.56588 18.5657L12.0002 13.1314L17.4345 18.5657C17.7469 18.8781 18.2535 18.8781 18.5659 18.5657C18.8783 18.2533 18.8783 17.7467 18.5659 17.4343L13.1316 12L18.5659 6.5657C18.8783 6.25328 18.8783 5.74675 18.5659 5.43433C18.2535 5.12191 17.7469 5.12191 17.4345 5.43433L12.0002 10.8686L6.56588 5.43433Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6.56588 5.43433C6.25346 5.12191 5.74693 5.12191 5.43451 5.43433C5.12209 5.74675 5.12209 6.25328 5.43451 6.5657L10.8688 12L5.43451 17.4343C5.12209 17.7467 5.12209 18.2533 5.43451 18.5657C5.74693 18.8781 6.25346 18.8781 6.56588 18.5657L12.0002 13.1314L17.4345 18.5657C17.7469 18.8781 18.2535 18.8781 18.5659 18.5657C18.8783 18.2533 18.8783 17.7467 18.5659 17.4343L13.1316 12L18.5659 6.5657C18.8783 6.25328 18.8783 5.74675 18.5659 5.43433C18.2535 5.12191 17.7469 5.12191 17.4345 5.43433L12.0002 10.8686L6.56588 5.43433Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default IconClose;\n", "import 'src/styles/f.css.ts.vanilla.css?source=LmRodGh4cTAgewogIHdpZHRoOiAxMDAlOwp9Ci5kaHRoeHExIHsKICBoZWlnaHQ6IDEwMCU7Cn0KLmRodGh4cTIgewogIHRvcDogMDsKfQouZGh0aHhxMyB7CiAgbGVmdDogMDsKfQouZGh0aHhxNCB7CiAgcG9zaXRpb246IGFic29sdXRlOwp9Ci5kaHRoeHE1IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmRodGh4cTcgewogIGRpc3BsYXk6IGZsZXg7Cn0KLmRodGh4cTggewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLmRodGh4cTkgewogIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKfQouZGh0aHhxYSB7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmRodGh4cWIgewogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmRodGh4cWMgewogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmRodGh4cWQgewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouZGh0aHhxZSB7CiAgY3Vyc29yOiBwb2ludGVyOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmRodGh4cWYgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLmRodGh4cWcgewogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Owp9Ci5kaHRoeHFoIHsKICBhcHBlYXJhbmNlOiBub25lOwogIGJvcmRlcjogMDsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQ6IG5vbmU7Cn0=';\nimport 'src/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAE+2U3UrEMBBG7/cpAt4obEKzWha6+CQikr+2wSYTJhNcVnx3q6hX6ra97ZJACMn5IJPDNAhAW9Z8LA9WkeKZlHluB3jhaSidj1yr7A0vnlPvgrtX0SJ4+8heN4zxf67r8aBDKNFyAwNgw67atj2coawPv5DYaXVdbdnXFLK+ORekUho3yDWgdfhXULWfG5T9yTVMpuNUrne+66lht6JGF6ZS3kD8qdtOjuNuKkruSAvRZX+mgQgCz71z9F0mVNaXPBbq881vmxmGmZIcko+wcscqUc+3bCf2a9ZMPEkDKYVTtW53Lv1pqThy3eJcms5sd94BLE4WS0QJAAA=';\nimport 'src/components/AppScreen.css.ts.vanilla.css?source=#H4sIAAAAAAAAE61V246bMBB9z1f4pRJR48jsbi9x1P9oVVXVYDtgYmzLmKTdqv9eA8smwJImKBIPoDlz5syV9c+Yq93T49NH9GeBUAJsnzpTaY6ZUcZRdAAXYVz6YNgpc8RWVanUOIFSMlxJzGWBh17L7eLvYt0xf5rJfJn1c8PqHehSeml0x9fZSR/OTvCdcQVtXxV48TWKCXnXR8sGbSww6X9TRLbh6xlLzcWvYZy482TG2uKZoBPJClFnjP/OwcOFPH0mCvEFNHdG8h9oICITMs08RTFxotj2CkmRklqAw6kDLoX20axmrZBLE4jICr08y34xNkNJr3WJezi4EpdM4sigZdfh8tZ4EK7JOdhL5oxSdbHwUSR76fGrtTVJnYYJMBXLLnT2oV+GnNKOrSVJwDWRuSytghBWGy16wxCfMshvGgZWWeG81OZsHPIrJ3gUenNPFZvrBJFJNXBPNTBLDZkrYbyj+RuH4i0N36Jmfyd1zO7RWNKoQ+drOKVuukKz+zVWNurWTcpax33jaIHzsMPYG0sRA8X+e/nA2vDhcHtOl+g9YkYHeDiaJewEBicgnIFS+Jq0voD3iSL0YSrAWVaqyeoouc9CMdYPH15u/cRleux7F+3o1ypvFLg9+8E0CdaHBOFbaWo5/wBUmwz0SQgAAA==';\nimport 'src/components/AppBar.css.ts.vanilla.css?source=#H4sIAAAAAAAAE61Wy47bIBTdz1ewqZRUg4XzHo+66aK7rrppVVWjGxsnNBgswHlV/fcCtjN2HM9kmtnZ3AeHc8+9EDyFh80YJlOC/twhtIR4s1KyEAmOJZcqQltQA4y1sYaUyx3OebFiAi9BsxgXDEOe2x+FzyOHjzbdmrLV2lyfpPT3oTkkCRMrbGQeoVgKGyzMQENKMSgKmAlNjbN2vanY9joe7X9C9zWkpzDh6WQ8mVjj37vgKYxlnmfHEAUnXu5RpKQ0PxMw8MIRzJpm9FNc5FQZJuSvRgbPbC41M0yKCMFSS14Y2t2xxLJ8n827yTwOo0DoVKosKj85GPp9EBLyoU0B+V8UIBIlWdIhQOYQM3OIEHnsgfHDwlA0G57sFWHtUpELOEvLw3tA7qZqow/70fcjg/dDBjchKwPDstflHus1JHIXId8kiOR7FAOPB1c3vVQJVVizIx2ijwiHQ0SunxhlcD0tGvhGZceUPW0Fg0gwtcJo+0Q0y83BeyZM5xwsBUIK2vIae/sbRxmz46YxxJpSrMhGY0Iy7Yw7lph1hEbBqET4PPNGwbwDehxBbNiWnjVEMOrbh+hW/NQHptwNsLBlmXlLhabdMFN/ijdyYOjetEvTGQuzG8dCC7IbQA7m70Iblh7s1sJQYWl0h3XJlWnOeU5TawsrylPr7EVol4JwMa9LwZmguK5HGExPvrtqbSl58li3Ajt6tVWytEt9V8LbDn7pSpj1XgkNMbuTuwXgbCUwMzTT9ia0pFB1kalnky+eD2uu+pOnkDFuk7tCc4r1Qdu89+izpWrzFeJv/v+L9exwNSPknOuaZl+MaVnASwNogKf+ernpQXDdQ+CVB8BlJc9vVPK8Oa8qbZJg3O3/hXds8fUsz9MEeZnCDPa4apo64Gz+vTAHLgt6cbOgF+05vOQy3rRO/lA+Ppww5ZYql97WiXOWa6bPdMXEmirWVeBpvZEX+q4KR5Ry6Eu2oTCyHfjK/dERCdwokh6k7sNu+Q+p8+vLiAsAAA==';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var appBar = _7a468({defaultClassName:'_1yk3a450 dhthxq4 dhthxq8 dhthxq7 dhthxq0 dhthxqg _1dlf4347',variantClassNames:{border:{true:'_1yk3a451'}},defaultVariants:{},compoundVariants:[]});\nexport var backButton = '_1yk3a453 dhthxq8 dhthxq7 dhthxqa dhthxqe dhthxqh';\nexport var center = '_1yk3a455 dhthxq8 dhthxq7';\nexport var centerMain = _7a468({defaultClassName:'_1yk3a456',variantClassNames:{hasLeft:{true:'_1yk3a457'}},defaultVariants:{},compoundVariants:[]});\nexport var centerMainEdge = '_1yk3a458 dhthxqh dhthxq4 dhthxq2 dhthxqe';\nexport var centerText = '_1yk3a459 dhthxqb dhthxqc dhthxq0';\nexport var closeButton = '_1yk3a453 dhthxq8 dhthxq7 dhthxqa dhthxqe dhthxqh';\nexport var left = '_1yk3a452 dhthxq8 dhthxq7 dhthxq1';\nexport var right = '_1yk3a45a dhthxq8 dhthxq7 dhthxq1 dhthxq5';", "import 'src/styles/f.css.ts.vanilla.css?source=LmRodGh4cTAgewogIHdpZHRoOiAxMDAlOwp9Ci5kaHRoeHExIHsKICBoZWlnaHQ6IDEwMCU7Cn0KLmRodGh4cTIgewogIHRvcDogMDsKfQouZGh0aHhxMyB7CiAgbGVmdDogMDsKfQouZGh0aHhxNCB7CiAgcG9zaXRpb246IGFic29sdXRlOwp9Ci5kaHRoeHE1IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmRodGh4cTcgewogIGRpc3BsYXk6IGZsZXg7Cn0KLmRodGh4cTggewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLmRodGh4cTkgewogIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKfQouZGh0aHhxYSB7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmRodGh4cWIgewogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmRodGh4cWMgewogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmRodGh4cWQgewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouZGh0aHhxZSB7CiAgY3Vyc29yOiBwb2ludGVyOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmRodGh4cWYgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLmRodGh4cWcgewogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Owp9Ci5kaHRoeHFoIHsKICBhcHBlYXJhbmNlOiBub25lOwogIGJvcmRlcjogMDsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQ6IG5vbmU7Cn0=';\nimport 'src/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAE+2U3UrEMBBG7/cpAt4obEKzWha6+CQikr+2wSYTJhNcVnx3q6hX6ra97ZJACMn5IJPDNAhAW9Z8LA9WkeKZlHluB3jhaSidj1yr7A0vnlPvgrtX0SJ4+8heN4zxf67r8aBDKNFyAwNgw67atj2coawPv5DYaXVdbdnXFLK+ORekUho3yDWgdfhXULWfG5T9yTVMpuNUrne+66lht6JGF6ZS3kD8qdtOjuNuKkruSAvRZX+mgQgCz71z9F0mVNaXPBbq881vmxmGmZIcko+wcscqUc+3bCf2a9ZMPEkDKYVTtW53Lv1pqThy3eJcms5sd94BLE4WS0QJAAA=';\nimport 'src/components/AppScreen.css.ts.vanilla.css?source=#H4sIAAAAAAAAE61V246bMBB9z1f4pRJR48jsbi9x1P9oVVXVYDtgYmzLmKTdqv9eA8smwJImKBIPoDlz5syV9c+Yq93T49NH9GeBUAJsnzpTaY6ZUcZRdAAXYVz6YNgpc8RWVanUOIFSMlxJzGWBh17L7eLvYt0xf5rJfJn1c8PqHehSeml0x9fZSR/OTvCdcQVtXxV48TWKCXnXR8sGbSww6X9TRLbh6xlLzcWvYZy482TG2uKZoBPJClFnjP/OwcOFPH0mCvEFNHdG8h9oICITMs08RTFxotj2CkmRklqAw6kDLoX20axmrZBLE4jICr08y34xNkNJr3WJezi4EpdM4sigZdfh8tZ4EK7JOdhL5oxSdbHwUSR76fGrtTVJnYYJMBXLLnT2oV+GnNKOrSVJwDWRuSytghBWGy16wxCfMshvGgZWWeG81OZsHPIrJ3gUenNPFZvrBJFJNXBPNTBLDZkrYbyj+RuH4i0N36Jmfyd1zO7RWNKoQ+drOKVuukKz+zVWNurWTcpax33jaIHzsMPYG0sRA8X+e/nA2vDhcHtOl+g9YkYHeDiaJewEBicgnIFS+Jq0voD3iSL0YSrAWVaqyeoouc9CMdYPH15u/cRleux7F+3o1ypvFLg9+8E0CdaHBOFbaWo5/wBUmwz0SQgAAA==';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var allTransitions = '_1dlf4348';\nexport var appScreen = _7a468({defaultClassName:'dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 dhthxqb',variantClassNames:{transitionState:{'enter-active':'_1dlf4349','enter-done':'_1dlf434a','exit-active':'_1dlf434b','exit-done':'_1dlf434c'}},defaultVariants:{},compoundVariants:[]});\nexport var background = '_1dlf4347';\nexport var dim = '_1dlf434i dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 _1dlf4346 _1dlf4348';\nexport var edge = _7a468({defaultClassName:'_1dlf434l dhthxq4 dhthxq2 dhthxq3 dhthxq1',variantClassNames:{hasAppBar:{true:'_1dlf434m'}},defaultVariants:{},compoundVariants:[]});\nexport var enterActive = '_1dlf4349';\nexport var enterDone = '_1dlf434a';\nexport var exitActive = '_1dlf434b';\nexport var exitDone = '_1dlf434c';\nexport var paper = _7a468({defaultClassName:'_1dlf434j dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 _1dlf4347 _1dlf4348',variantClassNames:{hasAppBar:{true:'_1dlf434k dhthxqf'}},defaultVariants:{},compoundVariants:[]});\nexport var vars = {transitionDuration:'var(--_1dlf4340)',zIndexes:{dim:'var(--_1dlf4341)',paper:'var(--_1dlf4342)',edge:'var(--_1dlf4343)',appBar:'var(--_1dlf4344)'},appBar:{center:{mainWidth:'var(--_1dlf4345)'}}};", "/* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n\nimport { useActions, useActivity } from \"@stackflow/react\";\nimport { assignInlineVars } from \"@vanilla-extract/dynamic\";\nimport React, { useRef } from \"react\";\n\nimport { useLazy, useStyleEffect } from \"../hooks\";\nimport type { GlobalVars } from \"../theme.css\";\nimport { globalVars } from \"../theme.css\";\nimport { compactMap } from \"../utils\";\nimport * as css from \"./BottomSheet.css\";\n\ntype BottomSheetProps = Partial<\n Pick<GlobalVars, \"backgroundColor\" | \"dimBackgroundColor\">\n> &\n Partial<GlobalVars[\"bottomSheet\"]> & {\n onOutsideClick?: React.MouseEventHandler;\n children: React.ReactNode;\n };\nconst BottomSheet: React.FC<BottomSheetProps> = ({\n borderRadius = \"1rem\",\n backgroundColor,\n dimBackgroundColor,\n onOutsideClick,\n children,\n}) => {\n const activity = useActivity();\n const { pop } = useActions();\n\n const containerRef = useRef<HTMLDivElement>(null);\n const paperRef = useRef<HTMLDivElement>(null);\n\n useStyleEffect({\n styleName: \"hide\",\n refs: [containerRef],\n });\n useStyleEffect({\n styleName: \"offset\",\n refs: [paperRef],\n });\n useStyleEffect({\n styleName: \"swipe-back\",\n refs: [paperRef],\n });\n\n const popLock = useRef(false);\n\n const onDimClick: React.MouseEventHandler = (e) => {\n onOutsideClick?.(e);\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (popLock.current) {\n return;\n }\n popLock.current = true;\n\n pop();\n };\n const onPaperClick: React.MouseEventHandler = (e) => {\n e.stopPropagation();\n };\n\n const zIndexBase = activity.zIndex * 5 + 3;\n const zIndexPaper = activity.zIndex * 5 + 4;\n\n return (\n <div\n className={css.container({\n transitionState: useLazy(activity.transitionState),\n })}\n ref={containerRef}\n style={assignInlineVars(\n compactMap({\n [globalVars.bottomSheet.borderRadius]: borderRadius,\n [globalVars.backgroundColor]: backgroundColor,\n [globalVars.dimBackgroundColor]: dimBackgroundColor,\n [css.vars.zIndexes.dim]: `${zIndexBase}`,\n [css.vars.zIndexes.paper]: `${zIndexPaper}`,\n [css.vars.transitionDuration]:\n activity.transitionState === \"enter-active\" ||\n activity.transitionState === \"exit-active\"\n ? `var(--stackflow-transition-duration)`\n : \"0ms\",\n }),\n )}\n >\n <div className={css.dim} ref={paperRef} onClick={onDimClick}>\n <div className={css.paper} onClick={onPaperClick}>\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nexport default BottomSheet;\n", "import 'src/styles/f.css.ts.vanilla.css?source=LmRodGh4cTAgewogIHdpZHRoOiAxMDAlOwp9Ci5kaHRoeHExIHsKICBoZWlnaHQ6IDEwMCU7Cn0KLmRodGh4cTIgewogIHRvcDogMDsKfQouZGh0aHhxMyB7CiAgbGVmdDogMDsKfQouZGh0aHhxNCB7CiAgcG9zaXRpb246IGFic29sdXRlOwp9Ci5kaHRoeHE1IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmRodGh4cTcgewogIGRpc3BsYXk6IGZsZXg7Cn0KLmRodGh4cTggewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLmRodGh4cTkgewogIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKfQouZGh0aHhxYSB7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmRodGh4cWIgewogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmRodGh4cWMgewogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmRodGh4cWQgewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouZGh0aHhxZSB7CiAgY3Vyc29yOiBwb2ludGVyOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmRodGh4cWYgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLmRodGh4cWcgewogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Owp9Ci5kaHRoeHFoIHsKICBhcHBlYXJhbmNlOiBub25lOwogIGJvcmRlcjogMDsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQ6IG5vbmU7Cn0=';\nimport 'src/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAE+2U3UrEMBBG7/cpAt4obEKzWha6+CQikr+2wSYTJhNcVnx3q6hX6ra97ZJACMn5IJPDNAhAW9Z8LA9WkeKZlHluB3jhaSidj1yr7A0vnlPvgrtX0SJ4+8heN4zxf67r8aBDKNFyAwNgw67atj2coawPv5DYaXVdbdnXFLK+ORekUho3yDWgdfhXULWfG5T9yTVMpuNUrne+66lht6JGF6ZS3kD8qdtOjuNuKkruSAvRZX+mgQgCz71z9F0mVNaXPBbq881vmxmGmZIcko+wcscqUc+3bCf2a9ZMPEkDKYVTtW53Lv1pqThy3eJcms5sd94BLE4WS0QJAAA=';\nimport 'src/components/BottomSheet.css.ts.vanilla.css?source=Ll8xaHQzOGgwMyB7CiAgdHJhbnNpdGlvbjogdmFyKC0tXzFodDM4aDAwKTsKfQouXzFodDM4aDA3IHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7Cn0KLl8xaHQzOGgwZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3RhY2tmbG93LXBsdWdpbi1iYXNpYy11aS1kaW0tYmFja2dyb3VuZC1jb2xvcik7CiAgei1pbmRleDogdmFyKC0tXzFodDM4aDAxKTsKICBvcGFjaXR5OiAwOwp9Ci5fMWh0MzhoMDQgLl8xaHQzOGgwZCwgLl8xaHQzOGgwNSAuXzFodDM4aDBkIHsKICBvcGFjaXR5OiAxOwp9Ci5fMWh0MzhoMDYgLl8xaHQzOGgwZCwgLl8xaHQzOGgwNyAuXzFodDM4aDBkIHsKICBvcGFjaXR5OiAwOwp9Ci5fMWh0MzhoMGUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN0YWNrZmxvdy1wbHVnaW4tYmFzaWMtdWktYmFja2dyb3VuZC1jb2xvcik7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3RhY2tmbG93LXBsdWdpbi1iYXNpYy11aS1ib3R0b20tc2hlZXQtYm9yZGVyLXJhZGl1cykgdmFyKC0tc3RhY2tmbG93LXBsdWdpbi1iYXNpYy11aS1ib3R0b20tc2hlZXQtYm9yZGVyLXJhZGl1cykgMCAwOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsKICBvcGFjaXR5OiAwOwp9Ci5fMWh0MzhoMDQgLl8xaHQzOGgwZSwgLl8xaHQzOGgwNSAuXzFodDM4aDBlIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgb3BhY2l0eTogMTsKfQouXzFodDM4aDA2IC5fMWh0MzhoMGUsIC5fMWh0MzhoMDcgLl8xaHQzOGgwZSB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpOwogIG9wYWNpdHk6IDA7Cn0=';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var container = _7a468({defaultClassName:'dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 dhthxqb',variantClassNames:{transitionState:{'enter-active':'_1ht38h04','enter-done':'_1ht38h05','exit-active':'_1ht38h06','exit-done':'_1ht38h07'}},defaultVariants:{},compoundVariants:[]});\nexport var dim = '_1ht38h0d dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 dhthxqb dhthxq9 dhthxq7 _1ht38h03';\nexport var enterActive = '_1ht38h04';\nexport var enterDone = '_1ht38h05';\nexport var exitActive = '_1ht38h06';\nexport var exitDone = '_1ht38h07';\nexport var paper = '_1ht38h0e dhthxqb _1ht38h03';\nexport var vars = {transitionDuration:'var(--_1ht38h00)',zIndexes:{dim:'var(--_1ht38h01)',paper:'var(--_1ht38h02)'}};", "/* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n\nimport { useActions, useActivity } from \"@stackflow/react\";\nimport { assignInlineVars } from \"@vanilla-extract/dynamic\";\nimport React, { useRef } from \"react\";\n\nimport { useLazy, useStyleEffect } from \"../hooks\";\nimport type { GlobalVars } from \"../theme.css\";\nimport { globalVars } from \"../theme.css\";\nimport { compactMap } from \"../utils\";\nimport * as css from \"./Modal.css\";\n\ntype ModalProps = Partial<\n Pick<GlobalVars, \"backgroundColor\" | \"dimBackgroundColor\">\n> &\n Partial<GlobalVars[\"modal\"]> & {\n onOutsideClick?: React.MouseEventHandler;\n children: React.ReactNode;\n };\nconst Modal: React.FC<ModalProps> = ({\n backgroundColor,\n dimBackgroundColor,\n borderRadius = \"1rem\",\n onOutsideClick,\n children,\n}) => {\n const activity = useActivity();\n const { pop } = useActions();\n\n const containerRef = useRef<HTMLDivElement>(null);\n const paperRef = useRef<HTMLDivElement>(null);\n\n useStyleEffect({\n styleName: \"hide\",\n refs: [containerRef],\n });\n useStyleEffect({\n styleName: \"offset\",\n refs: [paperRef],\n });\n useStyleEffect({\n styleName: \"swipe-back\",\n refs: [paperRef],\n });\n\n const popLock = useRef(false);\n\n const onDimClick: React.MouseEventHandler = (e) => {\n onOutsideClick?.(e);\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (popLock.current) {\n return;\n }\n popLock.current = true;\n\n pop();\n };\n const onPaperClick: React.MouseEventHandler = (e) => {\n e.stopPropagation();\n };\n\n const zIndexBase = activity.zIndex * 5 + 3;\n const zIndexPaper = activity.zIndex * 5 + 4;\n\n return (\n <div\n className={css.container({\n transitionState: useLazy(activity.transitionState),\n })}\n ref={containerRef}\n style={assignInlineVars(\n compactMap({\n [globalVars.bottomSheet.borderRadius]: borderRadius,\n [globalVars.backgroundColor]: backgroundColor,\n [globalVars.dimBackgroundColor]: dimBackgroundColor,\n [css.vars.zIndexes.dim]: `${zIndexBase}`,\n [css.vars.zIndexes.paper]: `${zIndexPaper}`,\n [css.vars.transitionDuration]:\n activity.transitionState === \"enter-active\" ||\n activity.transitionState === \"exit-active\"\n ? `var(--stackflow-transition-duration)`\n : \"0ms\",\n }),\n )}\n >\n <div className={css.dim} ref={paperRef} onClick={onDimClick}>\n <div className={css.paper} onClick={onPaperClick}>\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Modal;\n", "import 'src/styles/f.css.ts.vanilla.css?source=LmRodGh4cTAgewogIHdpZHRoOiAxMDAlOwp9Ci5kaHRoeHExIHsKICBoZWlnaHQ6IDEwMCU7Cn0KLmRodGh4cTIgewogIHRvcDogMDsKfQouZGh0aHhxMyB7CiAgbGVmdDogMDsKfQouZGh0aHhxNCB7CiAgcG9zaXRpb246IGFic29sdXRlOwp9Ci5kaHRoeHE1IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmRodGh4cTcgewogIGRpc3BsYXk6IGZsZXg7Cn0KLmRodGh4cTggewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLmRodGh4cTkgewogIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKfQouZGh0aHhxYSB7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmRodGh4cWIgewogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmRodGh4cWMgewogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmRodGh4cWQgewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouZGh0aHhxZSB7CiAgY3Vyc29yOiBwb2ludGVyOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmRodGh4cWYgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLmRodGh4cWcgewogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Owp9Ci5kaHRoeHFoIHsKICBhcHBlYXJhbmNlOiBub25lOwogIGJvcmRlcjogMDsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQ6IG5vbmU7Cn0=';\nimport 'src/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAE+2U3UrEMBBG7/cpAt4obEKzWha6+CQikr+2wSYTJhNcVnx3q6hX6ra97ZJACMn5IJPDNAhAW9Z8LA9WkeKZlHluB3jhaSidj1yr7A0vnlPvgrtX0SJ4+8heN4zxf67r8aBDKNFyAwNgw67atj2coawPv5DYaXVdbdnXFLK+ORekUho3yDWgdfhXULWfG5T9yTVMpuNUrne+66lht6JGF6ZS3kD8qdtOjuNuKkruSAvRZX+mgQgCz71z9F0mVNaXPBbq881vmxmGmZIcko+wcscqUc+3bCf2a9ZMPEkDKYVTtW53Lv1pqThy3eJcms5sd94BLE4WS0QJAAA=';\nimport 'src/components/Modal.css.ts.vanilla.css?source=Ll81b3pnOGMzIHsKICB0cmFuc2l0aW9uOiB2YXIoLS1fNW96ZzhjMCk7Cn0KLl81b3pnOGM3IHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7Cn0KLl81b3pnOGNkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zdGFja2Zsb3ctcGx1Z2luLWJhc2ljLXVpLWRpbS1iYWNrZ3JvdW5kLWNvbG9yKTsKICB6LWluZGV4OiB2YXIoLS1fNW96ZzhjMSk7CiAgb3BhY2l0eTogMDsKfQouXzVvemc4YzQgLl81b3pnOGNkLCAuXzVvemc4YzUgLl81b3pnOGNkIHsKICBvcGFjaXR5OiAxOwp9Ci5fNW96ZzhjNiAuXzVvemc4Y2QsIC5fNW96ZzhjNyAuXzVvemc4Y2QgewogIG9wYWNpdHk6IDA7Cn0KLl81b3pnOGNlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zdGFja2Zsb3ctcGx1Z2luLWJhc2ljLXVpLWJhY2tncm91bmQtY29sb3IpOwogIHdpZHRoOiAxMDAlOwogIG1hcmdpbjogMCAyLjVyZW07CiAgYm94LXNoYWRvdzogMHB4IDAuNjI1cmVtIDIuMzc1cmVtIHJnYmEoMCwgMCwgMCwgMC4xNSksIDBweCAuNTYyNXJlbSAyLjg3NXJlbSByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwcHggLjMxMjVyZW0gLjkzNzVyZW0gcmdiYSgwLCAwLCAwLCAwLjEpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXN0YWNrZmxvdy1wbHVnaW4tYmFzaWMtdWktYm90dG9tLXNoZWV0LWJvcmRlci1yYWRpdXMpOwogIHRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICBvcGFjaXR5OiAwOwp9Ci5fNW96ZzhjNCAuXzVvemc4Y2UsIC5fNW96ZzhjNSAuXzVvemc4Y2UgewogIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgb3BhY2l0eTogMTsKfQouXzVvemc4YzYgLl81b3pnOGNlLCAuXzVvemc4YzcgLl81b3pnOGNlIHsKICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgb3BhY2l0eTogMDsKfQ==';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var container = _7a468({defaultClassName:'dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 dhthxqb',variantClassNames:{transitionState:{'enter-active':'_5ozg8c4','enter-done':'_5ozg8c5','exit-active':'_5ozg8c6','exit-done':'_5ozg8c7'}},defaultVariants:{},compoundVariants:[]});\nexport var dim = '_5ozg8cd dhthxq4 dhthxq0 dhthxq1 dhthxq2 dhthxq3 dhthxqb dhthxq8 dhthxq7 dhthxqa _5ozg8c3';\nexport var enterActive = '_5ozg8c4';\nexport var enterDone = '_5ozg8c5';\nexport var exitActive = '_5ozg8c6';\nexport var exitDone = '_5ozg8c7';\nexport var paper = '_5ozg8ce dhthxqb _5ozg8c3';\nexport var vars = {transitionDuration:'var(--_5ozg8c0)',zIndexes:{dim:'var(--_5ozg8c1)',paper:'var(--_5ozg8c2)'}};"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["assignInlineVars", "React", "createContext", "useContext", "theme_css_exports", "__export", "android", "cupertino", "globalVars", "rootAndroid", "rootCupertino", "android", "cupertino", "globalVars", "rootAndroid", "rootCupertino", "compactMap", "obj", "acc", "key", "value", "listenOnce", "el", "type", "cb", "listener", "listenResize", "cb", "noop", "requestNextFrame", "cb", "GlobalOptionsContext", "createContext", "GlobalOptionsProvider", "useGlobalOptions", "useContext", "basicUIPlugin", "options", "stack", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "React", "theme_css_exports", "assignInlineVars", "compactMap", "globalVars", "useActions", "useActivity", "assignInlineVars", "React", "useRef", "useEffect", "useState", "useLazy", "value", "state", "setState", "useState", "useEffect", "requestNextFrame", "useEffect", "useState", "useMaxWidth", "outerRef", "innerRef", "enable", "maxWidth", "setMaxWidth", "useState", "useEffect", "$outer", "$inner", "noop", "listenResize", "screenWidth", "leftWidth", "centerWidth", "rightWidth", "sideMargin", "useActivity", "useEffect", "connections", "useStyleEffect", "styleName", "refs", "effect", "activity", "arr", "i", "connection", "cleanup", "useStyleEffectHide", "refs", "hasEffect", "useStyleEffect", "activityTransitionState", "ref", "OFFSET_PX_ANDROID", "OFFSET_PX_CUPERTINO", "useStyleEffectOffset", "refs", "theme", "hasEffect", "useStyleEffect", "activityTransitionState", "transform", "ref", "requestNextFrame", "$el", "listenOnce", "useStyleEffectSwipeBack", "theme", "dimRef", "edgeRef", "paperRef", "hasEffect", "onSwiped", "useStyleEffect", "refs", "$dim", "$edge", "$paper", "x0", "t0", "x", "cachedRefs", "resetState", "_rAFLock", "movePaper", "dx", "p", "ref", "_a", "OFFSET_PX_CUPERTINO", "resetPaper", "swiped", "listenOnce", "i", "cachedRef", "onTouchStart", "e", "activeElement", "onTouchMove", "onTouchEnd", "t", "useActions", "useActivity", "assignInlineVars", "React", "useRef", "React", "IconBack", "props", "IconBack_default", "React", "IconClose", "props", "IconClose_default", "_7a468", "appBar", "backButton", "center", "centerMain", "centerMainEdge", "centerText", "closeButton", "left", "right", "_7a468", "appScreen", "_7a468", "dim", "edge", "_7a468", "paper", "_7a468", "vars", "AppBar", "React", "title", "appendLeft", "appendRight", "backButton", "closeButton", "closeButtonLocation", "border", "iconColor", "textColor", "borderColor", "borderSize", "height", "backgroundColor", "onTopClick", "ref", "_a", "actions", "useActions", "activity", "useActivity", "globalOptions", "useGlobalOptions", "globalCloseButton", "centerRef", "useRef", "maxWidth", "useMaxWidth", "onBackClick", "e", "renderBackButton", "IconBack_default", "onCloseClick", "renderCloseButton", "IconClose_default", "hasLeft", "appBar", "assignInlineVars", "compactMap", "globalVars", "vars", "left", "center", "centerMain", "centerText", "centerMainEdge", "right", "AppBar_default", "AppScreen", "backgroundColor", "dimBackgroundColor", "appBar", "preventSwipeBack", "children", "globalOptions", "useGlobalOptions", "activity", "useActivity", "pop", "useActions", "appScreenRef", "useRef", "dimRef", "paperRef", "edgeRef", "appBarRef", "useStyleEffectHide", "useStyleEffectOffset", "useStyleEffectSwipeBack", "hasAppBar", "zIndexBase", "zIndexDim", "zIndexPaper", "zIndexEdge", "zIndexAppBar", "transitionState", "lazyTransitionState", "useLazy", "onAppBarTopClick", "e", "_a", "_b", "React", "appScreen", "assignInlineVars", "compactMap", "globalVars", "vars", "dim", "paper", "edge", "AppBar_default", "__spreadProps", "__spreadValues", "AppScreen_default", "useActions", "useActivity", "assignInlineVars", "React", "useRef", "_7a468", "container", "dim", "paper", "vars", "BottomSheet", "borderRadius", "backgroundColor", "dimBackgroundColor", "onOutsideClick", "children", "activity", "useActivity", "pop", "useActions", "containerRef", "useRef", "paperRef", "useStyleEffect", "popLock", "onDimClick", "e", "onPaperClick", "zIndexBase", "zIndexPaper", "React", "container", "useLazy", "assignInlineVars", "compactMap", "globalVars", "vars", "dim", "paper", "BottomSheet_default", "useActions", "useActivity", "assignInlineVars", "React", "useRef", "_7a468", "container", "dim", "paper", "vars", "Modal", "backgroundColor", "dimBackgroundColor", "borderRadius", "onOutsideClick", "children", "activity", "useActivity", "pop", "useActions", "containerRef", "useRef", "paperRef", "useStyleEffect", "popLock", "onDimClick", "e", "onPaperClick", "zIndexBase", "zIndexPaper", "React", "container", "useLazy", "assignInlineVars", "compactMap", "globalVars", "vars", "dim", "paper", "Modal_default"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackflow/plugin-basic-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
"ts-pattern": "^4.0.5"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@stackflow/core": "^0.
|
|
35
|
-
"@stackflow/esbuild-config": "^0.
|
|
36
|
-
"@stackflow/eslint-config": "^0.
|
|
37
|
-
"@stackflow/react": "^0.
|
|
34
|
+
"@stackflow/core": "^0.19.0",
|
|
35
|
+
"@stackflow/esbuild-config": "^0.19.0",
|
|
36
|
+
"@stackflow/eslint-config": "^0.19.0",
|
|
37
|
+
"@stackflow/react": "^0.19.0",
|
|
38
38
|
"@types/react": "^18.0.10",
|
|
39
39
|
"@typescript-eslint/eslint-plugin": "^5.32.0",
|
|
40
40
|
"@typescript-eslint/parser": "^5.20.0",
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"build"
|
|
70
70
|
]
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "06479b635f1fe01c501af726c32f04c1f3b9f69c"
|
|
73
73
|
}
|
|
@@ -144,6 +144,26 @@ export const centerMain = recipe({
|
|
|
144
144
|
},
|
|
145
145
|
});
|
|
146
146
|
|
|
147
|
+
export const centerMainEdge = style([
|
|
148
|
+
f.resetButton,
|
|
149
|
+
f.posAbs,
|
|
150
|
+
f.top0,
|
|
151
|
+
f.cursorPointer,
|
|
152
|
+
{
|
|
153
|
+
left: "50%",
|
|
154
|
+
height: "1.25rem",
|
|
155
|
+
transform: "translate(-50%)",
|
|
156
|
+
maxWidth: "5rem",
|
|
157
|
+
display: "none",
|
|
158
|
+
width: vars.appBar.center.mainWidth,
|
|
159
|
+
selectors: {
|
|
160
|
+
[`${cupertino} &, ${rootCupertino} &`]: {
|
|
161
|
+
display: "block",
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
]);
|
|
166
|
+
|
|
147
167
|
export const centerText = style([
|
|
148
168
|
f.overflowHidden,
|
|
149
169
|
f.whiteSpaceNowrap,
|
|
@@ -43,6 +43,7 @@ type AppBarProps = Partial<
|
|
|
43
43
|
};
|
|
44
44
|
closeButtonLocation?: "left" | "right";
|
|
45
45
|
border?: boolean;
|
|
46
|
+
onTopClick?: (e: React.MouseEvent) => void;
|
|
46
47
|
};
|
|
47
48
|
const AppBar = React.forwardRef<HTMLDivElement, AppBarProps>(
|
|
48
49
|
(
|
|
@@ -60,6 +61,7 @@ const AppBar = React.forwardRef<HTMLDivElement, AppBarProps>(
|
|
|
60
61
|
borderSize,
|
|
61
62
|
height,
|
|
62
63
|
backgroundColor,
|
|
64
|
+
onTopClick,
|
|
63
65
|
},
|
|
64
66
|
ref,
|
|
65
67
|
) => {
|
|
@@ -220,6 +222,12 @@ const AppBar = React.forwardRef<HTMLDivElement, AppBarProps>(
|
|
|
220
222
|
) : (
|
|
221
223
|
title
|
|
222
224
|
)}
|
|
225
|
+
<button
|
|
226
|
+
className={css.centerMainEdge}
|
|
227
|
+
type="button"
|
|
228
|
+
aria-hidden="true"
|
|
229
|
+
onClick={onTopClick}
|
|
230
|
+
/>
|
|
223
231
|
</div>
|
|
224
232
|
</div>
|
|
225
233
|
<div className={css.right}>
|
|
@@ -75,6 +75,17 @@ const AppScreen: React.FC<AppScreenProps> = ({
|
|
|
75
75
|
const { transitionState } = activity;
|
|
76
76
|
const lazyTransitionState = useLazy(transitionState);
|
|
77
77
|
|
|
78
|
+
const onAppBarTopClick: React.MouseEventHandler = (e) => {
|
|
79
|
+
appBar?.onTopClick?.(e);
|
|
80
|
+
|
|
81
|
+
if (!e.defaultPrevented) {
|
|
82
|
+
paperRef.current?.scroll({
|
|
83
|
+
top: 0,
|
|
84
|
+
behavior: "smooth",
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
|
|
78
89
|
return (
|
|
79
90
|
<div
|
|
80
91
|
ref={appScreenRef}
|
|
@@ -116,7 +127,9 @@ const AppScreen: React.FC<AppScreenProps> = ({
|
|
|
116
127
|
!preventSwipeBack && (
|
|
117
128
|
<div className={css.edge({ hasAppBar })} ref={edgeRef} />
|
|
118
129
|
)}
|
|
119
|
-
{appBar &&
|
|
130
|
+
{appBar && (
|
|
131
|
+
<AppBar {...appBar} ref={appBarRef} onTopClick={onAppBarTopClick} />
|
|
132
|
+
)}
|
|
120
133
|
</div>
|
|
121
134
|
);
|
|
122
135
|
};
|