@hh.ru/magritte-ui-nav-bar 1.3.24 → 1.3.26

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.
@@ -1,116 +0,0 @@
1
- import './index.css';
2
- import { jsx, jsxs } from 'react/jsx-runtime';
3
- import React, { createContext, useContext, useRef, useLayoutEffect } from 'react';
4
- import classNames from 'classnames';
5
- import { frame, motion } from 'motion/react';
6
- import { Divider } from '@hh.ru/magritte-ui-divider';
7
- import { Layer } from '@hh.ru/magritte-ui-layer';
8
- import { MetricsProvider } from './internal/MetricsProvider.js';
9
- import { useAnimationRanges } from './internal/useAnimationRanges.js';
10
- import { useBindScrollToAnimationProgress } from './internal/useBindScrollToAnimationProgress.js';
11
- import { useNavBarMetrics } from './internal/useNavBarMetrics.js';
12
- import { useResetFocus } from './internal/useResetFocus.js';
13
- import { useScrollAdapter } from './internal/useScrollAdapter.js';
14
- import { useSnapScroll } from './internal/useSnapScroll.js';
15
- import { useSyncMotionValue } from './internal/useSyncMotionValue.js';
16
- import { useInitOnce, scheduleMicro, scheduleMacro, remap } from './internal/utils.js';
17
-
18
- var styles = {"actions-container":"magritte-actions-container___CBgYW_1-3-24","actionsContainer":"magritte-actions-container___CBgYW_1-3-24","actions-no-children":"magritte-actions-no-children___rgJUl_1-3-24","actionsNoChildren":"magritte-actions-no-children___rgJUl_1-3-24","actions-left-slot":"magritte-actions-left-slot___DNOj0_1-3-24","actionsLeftSlot":"magritte-actions-left-slot___DNOj0_1-3-24","actions-right-slot":"magritte-actions-right-slot___aodtj_1-3-24","actionsRightSlot":"magritte-actions-right-slot___aodtj_1-3-24","navbar-transparent-end":"magritte-navbar-transparent-end___6KqLR_1-3-24","navbarTransparentEnd":"magritte-navbar-transparent-end___6KqLR_1-3-24","actions-start-stage":"magritte-actions-start-stage___MJ67a_1-3-24","actionsStartStage":"magritte-actions-start-stage___MJ67a_1-3-24","actions-side-slot-content":"magritte-actions-side-slot-content___TlHrX_1-3-24","actionsSideSlotContent":"magritte-actions-side-slot-content___TlHrX_1-3-24","actions-icon-morph":"magritte-actions-icon-morph___-nNgW_1-3-24","actionsIconMorph":"magritte-actions-icon-morph___-nNgW_1-3-24","navbar-transparent-start":"magritte-navbar-transparent-start___wysv0_1-3-24","navbarTransparentStart":"magritte-navbar-transparent-start___wysv0_1-3-24","actions-end-stage":"magritte-actions-end-stage___qHtTV_1-3-24","actionsEndStage":"magritte-actions-end-stage___qHtTV_1-3-24","navbar-not-transparent":"magritte-navbar-not-transparent___5KZNp_1-3-24","navbarNotTransparent":"magritte-navbar-not-transparent___5KZNp_1-3-24","actions-only-stage":"magritte-actions-only-stage___cg10A_1-3-24","actionsOnlyStage":"magritte-actions-only-stage___cg10A_1-3-24","actions-side-slot-content-clone":"magritte-actions-side-slot-content-clone___jDxVm_1-3-24","actionsSideSlotContentClone":"magritte-actions-side-slot-content-clone___jDxVm_1-3-24","actions-center-slot":"magritte-actions-center-slot___hLAy6_1-3-24","actionsCenterSlot":"magritte-actions-center-slot___hLAy6_1-3-24","actions-center-slot-centered":"magritte-actions-center-slot-centered___merXQ_1-3-24","actionsCenterSlotCentered":"magritte-actions-center-slot-centered___merXQ_1-3-24","title-container-wrapper":"magritte-title-container-wrapper___DQUcj_1-3-24","titleContainerWrapper":"magritte-title-container-wrapper___DQUcj_1-3-24","title-main-part":"magritte-title-main-part___npoHN_1-3-24","titleMainPart":"magritte-title-main-part___npoHN_1-3-24","title-left-slot":"magritte-title-left-slot___HTE7h_1-3-24","titleLeftSlot":"magritte-title-left-slot___HTE7h_1-3-24","title-container":"magritte-title-container___y9AIx_1-3-24","titleContainer":"magritte-title-container___y9AIx_1-3-24","subtitle-container":"magritte-subtitle-container___nVUBu_1-3-24","subtitleContainer":"magritte-subtitle-container___nVUBu_1-3-24","centered":"magritte-centered___Y2mlP_1-3-24","title-morph-item":"magritte-title-morph-item___t7Wf3_1-3-24","titleMorphItem":"magritte-title-morph-item___t7Wf3_1-3-24","title":"magritte-title___ZbLgP_1-3-24","pane-content":"magritte-pane-content___UVmC6_1-3-24","paneContent":"magritte-pane-content___UVmC6_1-3-24","pane-background":"magritte-pane-background___PDZAX_1-3-24","paneBackground":"magritte-pane-background___PDZAX_1-3-24","morph-item":"magritte-morph-item___8kF46_1-3-24","morphItem":"magritte-morph-item___8kF46_1-3-24","morph-item-top":"magritte-morph-item-top___WPEkn_1-3-24","morphItemTop":"magritte-morph-item-top___WPEkn_1-3-24","morph-item-bottom":"magritte-morph-item-bottom___zNbsF_1-3-24","morphItemBottom":"magritte-morph-item-bottom___zNbsF_1-3-24","morph-item-left":"magritte-morph-item-left___T6AMW_1-3-24","morphItemLeft":"magritte-morph-item-left___T6AMW_1-3-24","morph-item-right":"magritte-morph-item-right___EuT1E_1-3-24","morphItemRight":"magritte-morph-item-right___EuT1E_1-3-24","pane":"magritte-pane___f8eFC_1-3-24","start-state-container":"magritte-start-state-container___giBVb_1-3-24","startStateContainer":"magritte-start-state-container___giBVb_1-3-24","end-state-container":"magritte-end-state-container___uiW8Q_1-3-24","endStateContainer":"magritte-end-state-container___uiW8Q_1-3-24","content-container":"magritte-content-container___7s7vv_1-3-24","contentContainer":"magritte-content-container___7s7vv_1-3-24","next-pane":"magritte-next-pane___H2oxQ_1-3-24","nextPane":"magritte-next-pane___H2oxQ_1-3-24","nav-bar":"magritte-nav-bar___RRGe0_1-3-24","navBar":"magritte-nav-bar___RRGe0_1-3-24","nav-bar-overlay":"magritte-nav-bar-overlay___Mq5ZD_1-3-24","navBarOverlay":"magritte-nav-bar-overlay___Mq5ZD_1-3-24","nav-bar-overlay-wrapper":"magritte-nav-bar-overlay-wrapper___y1VpY_1-3-24","navBarOverlayWrapper":"magritte-nav-bar-overlay-wrapper___y1VpY_1-3-24","nav-bar-content-container":"magritte-nav-bar-content-container___H-WMO_1-3-24","navBarContentContainer":"magritte-nav-bar-content-container___H-WMO_1-3-24","nav-bar-panes-container":"magritte-nav-bar-panes-container___5ZDLa_1-3-24","navBarPanesContainer":"magritte-nav-bar-panes-container___5ZDLa_1-3-24","nav-bar-progressive-blur":"magritte-nav-bar-progressive-blur___qyeUV_1-3-24","navBarProgressiveBlur":"magritte-nav-bar-progressive-blur___qyeUV_1-3-24","nav-bar-stage":"magritte-nav-bar-stage___amDz7_1-3-24","navBarStage":"magritte-nav-bar-stage___amDz7_1-3-24","last-pane":"magritte-last-pane___Hf2No_1-3-24","lastPane":"magritte-last-pane___Hf2No_1-3-24","metrics-mode":"magritte-metrics-mode___h38aX_1-3-24","metricsMode":"magritte-metrics-mode___h38aX_1-3-24","layout-morph":"magritte-layout-morph___I3SPy_1-3-24","layoutMorph":"magritte-layout-morph___I3SPy_1-3-24","animation-stage-progress":"magritte-animation-stage-progress___5FthT_1-3-24","animationStageProgress":"magritte-animation-stage-progress___5FthT_1-3-24","layout-morph-start":"magritte-layout-morph-start___9-krP_1-3-24","layoutMorphStart":"magritte-layout-morph-start___9-krP_1-3-24","layout-morph-end":"magritte-layout-morph-end___LIg4d_1-3-24","layoutMorphEnd":"magritte-layout-morph-end___LIg4d_1-3-24","divider-container":"magritte-divider-container___-NdWi_1-3-24","dividerContainer":"magritte-divider-container___-NdWi_1-3-24"};
19
-
20
- const NavBarContext = createContext(null);
21
- const useNavBarContext = () => useContext(NavBarContext);
22
- const NavBar = ({ children, transparent = false, startTriggerPosition = 'start', endTriggerPosition, overlay = false, snapScroll: scrollSnapping = true, showDivider = false, animationProgress, }) => {
23
- const paneStoreRegistry = useInitOnce(() => new Set());
24
- const prevFullHeight = useRef(0);
25
- const rootRef = useRef(null);
26
- const [scrollAdapter, scrollPosition] = useScrollAdapter(rootRef);
27
- const [getMetrics, invalidateMetrics] = useNavBarMetrics(paneStoreRegistry, rootRef, scrollAdapter);
28
- const [getAnimationRanges, invalidateAnimationRanges] = useAnimationRanges(paneStoreRegistry, getMetrics);
29
- const [bindScrollToAnimation, getClosestStops, totalAnimationProgress, dividerStyle] = useBindScrollToAnimationProgress(scrollPosition, getMetrics, getAnimationRanges, scrollAdapter, startTriggerPosition, endTriggerPosition);
30
- const snapScroll = useSnapScroll(scrollPosition, totalAnimationProgress, scrollAdapter, getClosestStops, scrollSnapping);
31
- // При получении размеров важно дождаться применения MotionValue к DOM, поэтому используем frame.render
32
- const bindScrollToAnimationScheduled = useInitOnce(() => scheduleMicro(() => frame.render(bindScrollToAnimation)));
33
- useResetFocus(rootRef, totalAnimationProgress);
34
- useSyncMotionValue(totalAnimationProgress, animationProgress);
35
- const dividerVisibility =
36
- // eslint-disable-next-line no-nested-ternary
37
- showDivider === 'with-scroll' ? dividerStyle.visibility : showDivider ? 'visible' : 'hidden';
38
- const registerPaneStore = useInitOnce(() => {
39
- const subscriptions = [];
40
- const updateAnimationParams = () => {
41
- subscriptions.length = 0;
42
- invalidateMetrics();
43
- invalidateAnimationRanges();
44
- bindScrollToAnimationScheduled();
45
- const navBarMetrics = getMetrics();
46
- const fullPanesStartHeight = navBarMetrics.bottom - navBarMetrics.top;
47
- let scroll = scrollAdapter.getScrollTop();
48
- if (prevFullHeight.current !== null && scroll !== 0) {
49
- const heightDelta = fullPanesStartHeight - prevFullHeight.current;
50
- scroll += heightDelta;
51
- requestAnimationFrame(() => {
52
- scrollPosition.jump(scrollAdapter.getScrollTop() - 1);
53
- scrollPosition.jump(scrollAdapter.getScrollTop());
54
- });
55
- }
56
- const animationRanges = getAnimationRanges();
57
- [...paneStoreRegistry.values()].forEach((paneStore) => {
58
- const range = animationRanges.get(paneStore.get('id'));
59
- if (!range) {
60
- return;
61
- }
62
- const remapFn = remap(range[0] === 0 && range[1] === 0
63
- ? [0, 1]
64
- : [range[0] / navBarMetrics.animationHeight, range[1] / navBarMetrics.animationHeight], [0, 1]);
65
- const motionValue = paneStore.get('motionValue');
66
- motionValue.set(remapFn(totalAnimationProgress.get()));
67
- subscriptions.push(totalAnimationProgress.on('change', (value) => motionValue.set(remapFn(value))));
68
- });
69
- prevFullHeight.current = fullPanesStartHeight;
70
- };
71
- // основной триггер запуска updateAnimationParams это изменения размеров, обработка которых происходит
72
- // в очереди микрозадач, поэтому откладываем запуск функции до перехдоа к макрозадачам, чтобы сократить
73
- // количество вызовов при массовых изменениях
74
- const onChange = scheduleMacro(updateAnimationParams);
75
- return (paneStore) => {
76
- const unsubscribe = paneStore.onChange(['startHeight', 'endHeight', 'top', 'foldable', 'animated'], onChange);
77
- paneStoreRegistry.add(paneStore);
78
- return () => {
79
- paneStoreRegistry.delete(paneStore);
80
- unsubscribe();
81
- };
82
- };
83
- });
84
- useLayoutEffect(() => {
85
- bindScrollToAnimation();
86
- snapScroll();
87
- if (!rootRef.current || (typeof startTriggerPosition === 'string' && !endTriggerPosition)) {
88
- return void 0;
89
- }
90
- return scrollAdapter.onResize(bindScrollToAnimationScheduled);
91
- }, [
92
- startTriggerPosition,
93
- endTriggerPosition,
94
- bindScrollToAnimation,
95
- bindScrollToAnimationScheduled,
96
- snapScroll,
97
- scrollAdapter,
98
- ]);
99
- // Вкладываем панели друг в друга через проп nextPane
100
- const items = React.Children.toArray(children);
101
- const nested = items.reduceRight((acc, child) => {
102
- return React.cloneElement(child, {
103
- ...child.props,
104
- nextPane: acc,
105
- });
106
- }, null);
107
- return (jsx(Layer, { layer: "navigation-bar", children: jsx(MetricsProvider, { className: classNames(styles.navBar, {
108
- [styles.navbarTransparentStart]: transparent === 'start',
109
- [styles.navbarTransparentEnd]: transparent === 'end',
110
- [styles.navbarNotTransparent]: !transparent,
111
- [styles.navBarOverlay]: overlay,
112
- }), ref: rootRef, measureClassName: styles.metricsMode, children: jsx("div", { className: styles.navBarOverlayWrapper, children: jsxs("div", { className: styles.navBarContentContainer, children: [jsx(motion.div, { style: { '--magritte-ui-navbar-animation-progress': totalAnimationProgress }, className: styles.navBarPanesContainer, children: jsx(NavBarContext.Provider, { value: registerPaneStore, children: nested }) }), jsx(motion.div, { className: styles.dividerContainer, style: { ...dividerStyle, visibility: dividerVisibility }, children: jsx(Divider, {}) })] }) }) }) }));
113
- };
114
-
115
- export { NavBar as N, styles as s, useNavBarContext as u };
116
- //# sourceMappingURL=NavBar-Cp0mcX9W.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavBar-Cp0mcX9W.js","sources":["src/public/NavBar.tsx"],"sourcesContent":["import React, { createContext, type RefObject, useContext, useLayoutEffect, useRef, type FC } from 'react';\nimport classNames from 'classnames';\nimport { motion, type MotionStyle, MotionValue, frame } from 'motion/react';\n\nimport { Divider, type ShowDivider } from '@hh.ru/magritte-ui-divider';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { MetricsProvider } from '@hh.ru/magritte-ui-nav-bar/internal/MetricsProvider';\nimport { PaneStore } from '@hh.ru/magritte-ui-nav-bar/internal/PaneStore';\nimport { useAnimationRanges } from '@hh.ru/magritte-ui-nav-bar/internal/useAnimationRanges';\nimport { useBindScrollToAnimationProgress } from '@hh.ru/magritte-ui-nav-bar/internal/useBindScrollToAnimationProgress';\nimport { useNavBarMetrics } from '@hh.ru/magritte-ui-nav-bar/internal/useNavBarMetrics';\nimport { useResetFocus } from '@hh.ru/magritte-ui-nav-bar/internal/useResetFocus';\nimport { useScrollAdapter } from '@hh.ru/magritte-ui-nav-bar/internal/useScrollAdapter';\nimport { useSnapScroll } from '@hh.ru/magritte-ui-nav-bar/internal/useSnapScroll';\nimport { useSyncMotionValue } from '@hh.ru/magritte-ui-nav-bar/internal/useSyncMotionValue';\nimport { remap, scheduleMicro, scheduleMacro, useInitOnce } from '@hh.ru/magritte-ui-nav-bar/internal/utils';\nimport { type PaneElement, type InternalPaneProps } from '@hh.ru/magritte-ui-nav-bar/public/Pane';\n\nimport styles from './nav-bar.less';\n\ntype PaneStoreContextValue = ((store: PaneStore) => VoidFunction) | null;\nconst NavBarContext = createContext<PaneStoreContextValue>(null);\n\nexport const useNavBarContext = (): PaneStoreContextValue => useContext(NavBarContext);\n\nexport interface NavBarProps {\n /**\n * В качестве потомков могут передаваться только компоненты <Pane />\n */\n children: PaneElement | PaneElement[];\n /**\n * Управляет режимом прозрачности:\n * -- Прозрачность отключена (`false`)\n * -- Прозрачный всегда (`true`)\n * -- Прозрачный в начале анимации (`start`)\n * -- Прозрачный в конце анимации (`end`)\n */\n transparent?: 'start' | 'end' | boolean;\n /**\n * Управляет позицией триггера начала анимации\n */\n startTriggerPosition?: 'start' | 'full-area' | RefObject<HTMLElement | null>;\n /**\n * Управляет позицией триггера конца анимации. Если не передан вычисляется автоматически на основе изменения\n * высоты навбара в процессе анимации и позиции триггера начала анмиации. Если передано число, то интерпретируется\n * как отступ в пикселях от позиции триггера старта анимации.\n */\n endTriggerPosition?: RefObject<HTMLElement | null> | number;\n /**\n * Включает режим когда NavBar не занимает место в лейауте и контент располагается под ним.\n */\n overlay?: boolean;\n /**\n * Управляет режимом автодоскролла. По умолчанию включен.\n */\n snapScroll?: boolean;\n /**\n * Управляет режимом отображения дивайдера:\n * - `false` дивайдер отключен\n * - `always` дивайдер отображается постоянно\n * - `with-scroll` дивайдер отображается только когда контент подскроллен под NavBar\n */\n showDivider?: ShowDivider;\n /**\n * Принимает MotionValue значение которого будет обновляться синхронно с анимацией всего NavBar.\n * Прогресс анимации представляется в виде числа 0..1\n * Предназначен для синхронизации внешних анимаций с анимациями NavBar.\n */\n animationProgress?: MotionValue<number>;\n}\n\nexport const NavBar: FC<NavBarProps> = ({\n children,\n transparent = false,\n startTriggerPosition = 'start',\n endTriggerPosition,\n overlay = false,\n snapScroll: scrollSnapping = true,\n showDivider = false,\n animationProgress,\n}) => {\n const paneStoreRegistry = useInitOnce(() => new Set<PaneStore>());\n const prevFullHeight = useRef<null | number>(0);\n const rootRef = useRef<HTMLDivElement>(null);\n\n const [scrollAdapter, scrollPosition] = useScrollAdapter(rootRef);\n const [getMetrics, invalidateMetrics] = useNavBarMetrics(paneStoreRegistry, rootRef, scrollAdapter);\n const [getAnimationRanges, invalidateAnimationRanges] = useAnimationRanges(paneStoreRegistry, getMetrics);\n const [bindScrollToAnimation, getClosestStops, totalAnimationProgress, dividerStyle] =\n useBindScrollToAnimationProgress(\n scrollPosition,\n getMetrics,\n getAnimationRanges,\n scrollAdapter,\n startTriggerPosition,\n endTriggerPosition\n );\n const snapScroll = useSnapScroll(\n scrollPosition,\n totalAnimationProgress,\n scrollAdapter,\n getClosestStops,\n scrollSnapping\n );\n\n // При получении размеров важно дождаться применения MotionValue к DOM, поэтому используем frame.render\n const bindScrollToAnimationScheduled = useInitOnce(() => scheduleMicro(() => frame.render(bindScrollToAnimation)));\n useResetFocus(rootRef, totalAnimationProgress);\n useSyncMotionValue(totalAnimationProgress, animationProgress);\n\n const dividerVisibility =\n // eslint-disable-next-line no-nested-ternary\n showDivider === 'with-scroll' ? dividerStyle.visibility : showDivider ? 'visible' : 'hidden';\n\n const registerPaneStore = useInitOnce(() => {\n const subscriptions: VoidFunction[] = [];\n\n const updateAnimationParams = () => {\n subscriptions.length = 0;\n invalidateMetrics();\n invalidateAnimationRanges();\n bindScrollToAnimationScheduled();\n const navBarMetrics = getMetrics();\n const fullPanesStartHeight = navBarMetrics.bottom - navBarMetrics.top;\n\n let scroll = scrollAdapter.getScrollTop();\n if (prevFullHeight.current !== null && scroll !== 0) {\n const heightDelta = fullPanesStartHeight - prevFullHeight.current;\n scroll += heightDelta;\n\n requestAnimationFrame(() => {\n scrollPosition.jump(scrollAdapter.getScrollTop() - 1);\n scrollPosition.jump(scrollAdapter.getScrollTop());\n });\n }\n\n const animationRanges = getAnimationRanges();\n [...paneStoreRegistry.values()].forEach((paneStore) => {\n const range = animationRanges.get(paneStore.get('id'));\n if (!range) {\n return;\n }\n const remapFn = remap(\n range[0] === 0 && range[1] === 0\n ? [0, 1]\n : [range[0] / navBarMetrics.animationHeight, range[1] / navBarMetrics.animationHeight],\n [0, 1]\n );\n const motionValue = paneStore.get('motionValue');\n motionValue.set(remapFn(totalAnimationProgress.get()));\n subscriptions.push(totalAnimationProgress.on('change', (value) => motionValue.set(remapFn(value))));\n });\n\n prevFullHeight.current = fullPanesStartHeight;\n };\n\n // основной триггер запуска updateAnimationParams это изменения размеров, обработка которых происходит\n // в очереди микрозадач, поэтому откладываем запуск функции до перехдоа к макрозадачам, чтобы сократить\n // количество вызовов при массовых изменениях\n const onChange = scheduleMacro(updateAnimationParams);\n\n return (paneStore: PaneStore) => {\n const unsubscribe = paneStore.onChange(\n ['startHeight', 'endHeight', 'top', 'foldable', 'animated'],\n onChange\n );\n paneStoreRegistry.add(paneStore);\n return () => {\n paneStoreRegistry.delete(paneStore);\n unsubscribe();\n };\n };\n });\n\n useLayoutEffect(() => {\n bindScrollToAnimation();\n snapScroll();\n if (!rootRef.current || (typeof startTriggerPosition === 'string' && !endTriggerPosition)) {\n return void 0;\n }\n return scrollAdapter.onResize(bindScrollToAnimationScheduled);\n }, [\n startTriggerPosition,\n endTriggerPosition,\n bindScrollToAnimation,\n bindScrollToAnimationScheduled,\n snapScroll,\n scrollAdapter,\n ]);\n\n // Вкладываем панели друг в друга через проп nextPane\n const items = React.Children.toArray(children) as PaneElement[];\n\n const nested = items.reduceRight<PaneElement | null>((acc, child) => {\n return React.cloneElement<InternalPaneProps>(child, {\n ...child.props,\n nextPane: acc,\n }) as PaneElement;\n }, null);\n\n return (\n <Layer layer=\"navigation-bar\">\n <MetricsProvider\n className={classNames(styles.navBar, {\n [styles.navbarTransparentStart]: transparent === 'start',\n [styles.navbarTransparentEnd]: transparent === 'end',\n [styles.navbarNotTransparent]: !transparent,\n [styles.navBarOverlay]: overlay,\n })}\n ref={rootRef}\n measureClassName={styles.metricsMode}\n >\n <div className={styles.navBarOverlayWrapper}>\n <div className={styles.navBarContentContainer}>\n <motion.div\n style={{ '--magritte-ui-navbar-animation-progress': totalAnimationProgress } as MotionStyle}\n className={styles.navBarPanesContainer}\n >\n <NavBarContext.Provider value={registerPaneStore}>{nested}</NavBarContext.Provider>\n </motion.div>\n <motion.div\n className={styles.dividerContainer}\n style={{ ...dividerStyle, visibility: dividerVisibility }}\n >\n <Divider />\n </motion.div>\n </div>\n </div>\n </MetricsProvider>\n </Layer>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}