@burdenoff/microfe-mybodyshield 2026.1028.1 → 2026.1101.2
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/_virtual/_rolldown/runtime.js +11 -5
- package/dist/dev/main.d.ts +0 -1
- package/dist/mybodyshield/MyBodyShieldRoot.d.ts +0 -1
- package/dist/mybodyshield/MyBodyShieldRoot.js +22 -21
- package/dist/mybodyshield/MyBodyShieldRoot.js.map +1 -1
- package/dist/mybodyshield/MyBodyShieldRoutes.d.ts +0 -1
- package/dist/mybodyshield/MyBodyShieldRoutes.js +5 -6
- package/dist/mybodyshield/MyBodyShieldRoutes.js.map +1 -1
- package/dist/mybodyshield/components/DataTable.d.ts +1 -2
- package/dist/mybodyshield/components/DataTable.js +1 -2
- package/dist/mybodyshield/components/DataTable.js.map +1 -1
- package/dist/mybodyshield/components/EmptyState.d.ts +0 -1
- package/dist/mybodyshield/components/EmptyState.js +1 -2
- package/dist/mybodyshield/components/EmptyState.js.map +1 -1
- package/dist/mybodyshield/components/EvidenceUpload.d.ts +1 -2
- package/dist/mybodyshield/components/EvidenceUpload.js +1 -2
- package/dist/mybodyshield/components/EvidenceUpload.js.map +1 -1
- package/dist/mybodyshield/components/FeatureFlagGuard.d.ts +0 -1
- package/dist/mybodyshield/components/FeatureFlagGuard.js +1 -2
- package/dist/mybodyshield/components/FeatureFlagGuard.js.map +1 -1
- package/dist/mybodyshield/components/FileLink.d.ts +1 -1
- package/dist/mybodyshield/components/FileLink.js +1 -2
- package/dist/mybodyshield/components/FileLink.js.map +1 -1
- package/dist/mybodyshield/components/FilterTabs.d.ts +1 -1
- package/dist/mybodyshield/components/FilterTabs.js +1 -2
- package/dist/mybodyshield/components/FilterTabs.js.map +1 -1
- package/dist/mybodyshield/components/MetricsCard.d.ts +0 -1
- package/dist/mybodyshield/components/MetricsCard.js +1 -2
- package/dist/mybodyshield/components/MetricsCard.js.map +1 -1
- package/dist/mybodyshield/components/MiniBar.d.ts +1 -1
- package/dist/mybodyshield/components/MiniBar.js +1 -2
- package/dist/mybodyshield/components/MiniBar.js.map +1 -1
- package/dist/mybodyshield/components/MybDiscussion.d.ts +1 -1
- package/dist/mybodyshield/components/MybDiscussion.js +15 -16
- package/dist/mybodyshield/components/MybDiscussion.js.map +1 -1
- package/dist/mybodyshield/components/MybTags.d.ts +1 -1
- package/dist/mybodyshield/components/MybTags.js +1 -2
- package/dist/mybodyshield/components/MybTags.js.map +1 -1
- package/dist/mybodyshield/components/PageDisabled.d.ts +0 -1
- package/dist/mybodyshield/components/PageDisabled.js +1 -2
- package/dist/mybodyshield/components/PageDisabled.js.map +1 -1
- package/dist/mybodyshield/components/PageLayout.d.ts +0 -1
- package/dist/mybodyshield/components/PageLayout.js +1 -2
- package/dist/mybodyshield/components/PageLayout.js.map +1 -1
- package/dist/mybodyshield/components/Pagination.d.ts +1 -1
- package/dist/mybodyshield/components/Pagination.js +1 -2
- package/dist/mybodyshield/components/Pagination.js.map +1 -1
- package/dist/mybodyshield/components/StateViews.d.ts +0 -1
- package/dist/mybodyshield/components/StateViews.js +1 -2
- package/dist/mybodyshield/components/StateViews.js.map +1 -1
- package/dist/mybodyshield/components/StatusBadge.d.ts +0 -1
- package/dist/mybodyshield/components/StatusBadge.js +2 -3
- package/dist/mybodyshield/components/StatusBadge.js.map +1 -1
- package/dist/mybodyshield/components/Tabs.d.ts +1 -2
- package/dist/mybodyshield/components/Tabs.js +1 -2
- package/dist/mybodyshield/components/Tabs.js.map +1 -1
- package/dist/mybodyshield/components/UserSearchSelect.d.ts +1 -1
- package/dist/mybodyshield/components/UserSearchSelect.js +1 -2
- package/dist/mybodyshield/components/UserSearchSelect.js.map +1 -1
- package/dist/mybodyshield/components/index.js +18 -17
- package/dist/mybodyshield/context/MyBodyShieldContext.d.ts +0 -1
- package/dist/mybodyshield/context/MyBodyShieldContext.js +1 -2
- package/dist/mybodyshield/context/MyBodyShieldContext.js.map +1 -1
- package/dist/mybodyshield/context/index.js +1 -1
- package/dist/mybodyshield/data/programTemplates.d.ts +0 -1
- package/dist/mybodyshield/data/programTemplates.js +1 -2
- package/dist/mybodyshield/data/programTemplates.js.map +1 -1
- package/dist/mybodyshield/hooks/index.js +9 -8
- package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.js +1 -2
- package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.js.map +1 -1
- package/dist/mybodyshield/hooks/useMyBodyShieldApi.d.ts +0 -1
- package/dist/mybodyshield/hooks/useMyBodyShieldApi.js +1 -2
- package/dist/mybodyshield/hooks/useMyBodyShieldApi.js.map +1 -1
- package/dist/mybodyshield/hooks/useMybComments.js +1 -2
- package/dist/mybodyshield/hooks/useMybComments.js.map +1 -1
- package/dist/mybodyshield/hooks/useMybFiles.js +1 -2
- package/dist/mybodyshield/hooks/useMybFiles.js.map +1 -1
- package/dist/mybodyshield/hooks/useMybTags.js +6 -7
- package/dist/mybodyshield/hooks/useMybTags.js.map +1 -1
- package/dist/mybodyshield/hooks/useMybUsers.js +1 -2
- package/dist/mybodyshield/hooks/useMybUsers.js.map +1 -1
- package/dist/mybodyshield/hooks/usePager.js +1 -2
- package/dist/mybodyshield/hooks/usePager.js.map +1 -1
- package/dist/mybodyshield/hooks/useTr.d.ts +0 -1
- package/dist/mybodyshield/hooks/useTr.js +1 -2
- package/dist/mybodyshield/hooks/useTr.js.map +1 -1
- package/dist/mybodyshield/index.js +6 -5
- package/dist/mybodyshield/lib/offlineSessionQueue.js +34 -35
- package/dist/mybodyshield/lib/offlineSessionQueue.js.map +1 -1
- package/dist/mybodyshield/lib/useOfflineSessionSync.d.ts +0 -1
- package/dist/mybodyshield/lib/useOfflineSessionSync.js +1 -2
- package/dist/mybodyshield/lib/useOfflineSessionSync.js.map +1 -1
- package/dist/mybodyshield/pages/DashboardPage.d.ts +1 -1
- package/dist/mybodyshield/pages/DashboardPage.js +132 -133
- package/dist/mybodyshield/pages/DashboardPage.js.map +1 -1
- package/dist/mybodyshield/pages/SettingsPage.d.ts +1 -1
- package/dist/mybodyshield/pages/SettingsPage.js +2 -3
- package/dist/mybodyshield/pages/SettingsPage.js.map +1 -1
- package/dist/mybodyshield/pages/_shared/visuals.d.ts +0 -1
- package/dist/mybodyshield/pages/_shared/visuals.js +1 -2
- package/dist/mybodyshield/pages/_shared/visuals.js.map +1 -1
- package/dist/mybodyshield/pages/ai/AiControlsPage.d.ts +1 -1
- package/dist/mybodyshield/pages/ai/AiControlsPage.js +90 -91
- package/dist/mybodyshield/pages/ai/AiControlsPage.js.map +1 -1
- package/dist/mybodyshield/pages/coaching/CoachClientPage.d.ts +1 -1
- package/dist/mybodyshield/pages/coaching/CoachClientPage.js +35 -37
- package/dist/mybodyshield/pages/coaching/CoachClientPage.js.map +1 -1
- package/dist/mybodyshield/pages/coaching/CoachingPage.d.ts +1 -1
- package/dist/mybodyshield/pages/coaching/CoachingPage.js +169 -170
- package/dist/mybodyshield/pages/coaching/CoachingPage.js.map +1 -1
- package/dist/mybodyshield/pages/coaching/coachAnalytics.d.ts +0 -1
- package/dist/mybodyshield/pages/coaching/coachAnalytics.js +1 -2
- package/dist/mybodyshield/pages/coaching/coachAnalytics.js.map +1 -1
- package/dist/mybodyshield/pages/goals/GoalsPage.d.ts +1 -1
- package/dist/mybodyshield/pages/goals/GoalsPage.js +219 -221
- package/dist/mybodyshield/pages/goals/GoalsPage.js.map +1 -1
- package/dist/mybodyshield/pages/insights/InsightsCharts.d.ts +5 -6
- package/dist/mybodyshield/pages/insights/InsightsCharts.js +117 -118
- package/dist/mybodyshield/pages/insights/InsightsCharts.js.map +1 -1
- package/dist/mybodyshield/pages/insights/InsightsPage.d.ts +1 -1
- package/dist/mybodyshield/pages/insights/InsightsPage.js +67 -68
- package/dist/mybodyshield/pages/insights/InsightsPage.js.map +1 -1
- package/dist/mybodyshield/pages/nutrition/NutritionPage.d.ts +1 -1
- package/dist/mybodyshield/pages/nutrition/NutritionPage.js +519 -518
- package/dist/mybodyshield/pages/nutrition/NutritionPage.js.map +1 -1
- package/dist/mybodyshield/pages/programs/ProgramDetailPage.d.ts +1 -1
- package/dist/mybodyshield/pages/programs/ProgramDetailPage.js +420 -421
- package/dist/mybodyshield/pages/programs/ProgramDetailPage.js.map +1 -1
- package/dist/mybodyshield/pages/programs/ProgramsPage.d.ts +1 -1
- package/dist/mybodyshield/pages/programs/ProgramsPage.js +258 -259
- package/dist/mybodyshield/pages/programs/ProgramsPage.js.map +1 -1
- package/dist/mybodyshield/pages/progress/ProgressPage.d.ts +1 -1
- package/dist/mybodyshield/pages/progress/ProgressPage.js +139 -140
- package/dist/mybodyshield/pages/progress/ProgressPage.js.map +1 -1
- package/dist/mybodyshield/pages/recovery/MindfulnessPage.d.ts +1 -1
- package/dist/mybodyshield/pages/recovery/MindfulnessPage.js +3 -4
- package/dist/mybodyshield/pages/recovery/MindfulnessPage.js.map +1 -1
- package/dist/mybodyshield/pages/recovery/RecoveryPage.d.ts +1 -1
- package/dist/mybodyshield/pages/recovery/RecoveryPage.js +205 -206
- package/dist/mybodyshield/pages/recovery/RecoveryPage.js.map +1 -1
- package/dist/mybodyshield/pages/train/SessionDetailPage.d.ts +1 -1
- package/dist/mybodyshield/pages/train/SessionDetailPage.js +118 -125
- package/dist/mybodyshield/pages/train/SessionDetailPage.js.map +1 -1
- package/dist/mybodyshield/pages/train/SessionsPage.d.ts +1 -1
- package/dist/mybodyshield/pages/train/SessionsPage.js +156 -157
- package/dist/mybodyshield/pages/train/SessionsPage.js.map +1 -1
- package/dist/mybodyshield/services/createSandboxAssistantTransport.js +1 -2
- package/dist/mybodyshield/services/createSandboxAssistantTransport.js.map +1 -1
- package/dist/mybodyshield/types/index.d.ts +0 -1
- package/dist/mybodyshield/utils/cn.d.ts +0 -1
- package/dist/mybodyshield/utils/cn.js +2 -3
- package/dist/mybodyshield/utils/cn.js.map +1 -1
- package/dist/mybodyshield/utils/formatters.js +1 -2
- package/dist/mybodyshield/utils/formatters.js.map +1 -1
- package/dist/mybodyshield/utils/i18n.d.ts +0 -1
- package/dist/mybodyshield/utils/i18n.js +1 -2
- package/dist/mybodyshield/utils/i18n.js.map +1 -1
- package/dist/mybodyshield/utils/navigation.js +1 -2
- package/dist/mybodyshield/utils/navigation.js.map +1 -1
- package/dist/mybodyshield/utils/pageContext.js +2 -3
- package/dist/mybodyshield/utils/pageContext.js.map +1 -1
- package/dist/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js +4 -5
- package/dist/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js.map +1 -1
- package/dist/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js +2 -3
- package/dist/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js.map +1 -1
- package/dist/node_modules/clsx/dist/clsx.js +8 -7
- package/dist/node_modules/clsx/dist/clsx.js.map +1 -1
- package/dist/node_modules/d3-array/src/ascending.js +1 -2
- package/dist/node_modules/d3-array/src/ascending.js.map +1 -1
- package/dist/node_modules/d3-array/src/bisect.js +2 -3
- package/dist/node_modules/d3-array/src/bisect.js.map +1 -1
- package/dist/node_modules/d3-array/src/bisector.js +1 -2
- package/dist/node_modules/d3-array/src/bisector.js.map +1 -1
- package/dist/node_modules/d3-array/src/descending.js +1 -2
- package/dist/node_modules/d3-array/src/descending.js.map +1 -1
- package/dist/node_modules/d3-array/src/max.js +1 -2
- package/dist/node_modules/d3-array/src/max.js.map +1 -1
- package/dist/node_modules/d3-array/src/min.js +1 -2
- package/dist/node_modules/d3-array/src/min.js.map +1 -1
- package/dist/node_modules/d3-array/src/number.js +1 -2
- package/dist/node_modules/d3-array/src/number.js.map +1 -1
- package/dist/node_modules/d3-array/src/quantile.js +17 -18
- package/dist/node_modules/d3-array/src/quantile.js.map +1 -1
- package/dist/node_modules/d3-array/src/quickselect.js +1 -2
- package/dist/node_modules/d3-array/src/quickselect.js.map +1 -1
- package/dist/node_modules/d3-array/src/range.js +1 -2
- package/dist/node_modules/d3-array/src/range.js.map +1 -1
- package/dist/node_modules/d3-array/src/sort.js +1 -2
- package/dist/node_modules/d3-array/src/sort.js.map +1 -1
- package/dist/node_modules/d3-array/src/ticks.js +5 -5
- package/dist/node_modules/d3-array/src/ticks.js.map +1 -1
- package/dist/node_modules/d3-color/src/color.js +2 -3
- package/dist/node_modules/d3-color/src/color.js.map +1 -1
- package/dist/node_modules/d3-color/src/define.js +1 -2
- package/dist/node_modules/d3-color/src/define.js.map +1 -1
- package/dist/node_modules/d3-format/src/defaultLocale.js +2 -3
- package/dist/node_modules/d3-format/src/defaultLocale.js.map +1 -1
- package/dist/node_modules/d3-format/src/exponent.js +1 -2
- package/dist/node_modules/d3-format/src/exponent.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatDecimal.js +1 -2
- package/dist/node_modules/d3-format/src/formatDecimal.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatGroup.js +1 -2
- package/dist/node_modules/d3-format/src/formatGroup.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatNumerals.js +1 -2
- package/dist/node_modules/d3-format/src/formatNumerals.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatPrefixAuto.js +1 -2
- package/dist/node_modules/d3-format/src/formatPrefixAuto.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatRounded.js +1 -2
- package/dist/node_modules/d3-format/src/formatRounded.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatSpecifier.js +2 -3
- package/dist/node_modules/d3-format/src/formatSpecifier.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatTrim.js +1 -3
- package/dist/node_modules/d3-format/src/formatTrim.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatTypes.js +1 -2
- package/dist/node_modules/d3-format/src/formatTypes.js.map +1 -1
- package/dist/node_modules/d3-format/src/identity.js +1 -2
- package/dist/node_modules/d3-format/src/identity.js.map +1 -1
- package/dist/node_modules/d3-format/src/locale.js +10 -13
- package/dist/node_modules/d3-format/src/locale.js.map +1 -1
- package/dist/node_modules/d3-format/src/precisionFixed.js +1 -2
- package/dist/node_modules/d3-format/src/precisionFixed.js.map +1 -1
- package/dist/node_modules/d3-format/src/precisionPrefix.js +1 -2
- package/dist/node_modules/d3-format/src/precisionPrefix.js.map +1 -1
- package/dist/node_modules/d3-format/src/precisionRound.js +1 -2
- package/dist/node_modules/d3-format/src/precisionRound.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/array.js +2 -4
- package/dist/node_modules/d3-interpolate/src/array.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/basis.js +1 -2
- package/dist/node_modules/d3-interpolate/src/basis.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/basisClosed.js +1 -2
- package/dist/node_modules/d3-interpolate/src/basisClosed.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/color.js +1 -2
- package/dist/node_modules/d3-interpolate/src/color.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/constant.js +1 -2
- package/dist/node_modules/d3-interpolate/src/constant.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/date.js +1 -2
- package/dist/node_modules/d3-interpolate/src/date.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/number.js +1 -2
- package/dist/node_modules/d3-interpolate/src/number.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/numberArray.js +1 -2
- package/dist/node_modules/d3-interpolate/src/numberArray.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/object.js +2 -3
- package/dist/node_modules/d3-interpolate/src/object.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/piecewise.js +1 -2
- package/dist/node_modules/d3-interpolate/src/piecewise.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/rgb.js +1 -2
- package/dist/node_modules/d3-interpolate/src/rgb.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/round.js +1 -2
- package/dist/node_modules/d3-interpolate/src/round.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/string.js +1 -2
- package/dist/node_modules/d3-interpolate/src/string.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/value.js +10 -11
- package/dist/node_modules/d3-interpolate/src/value.js.map +1 -1
- package/dist/node_modules/d3-path/src/path.js +8 -7
- package/dist/node_modules/d3-path/src/path.js.map +1 -1
- package/dist/node_modules/d3-scale/src/band.js +1 -2
- package/dist/node_modules/d3-scale/src/band.js.map +1 -1
- package/dist/node_modules/d3-scale/src/constant.js +1 -2
- package/dist/node_modules/d3-scale/src/constant.js.map +1 -1
- package/dist/node_modules/d3-scale/src/continuous.js +7 -8
- package/dist/node_modules/d3-scale/src/continuous.js.map +1 -1
- package/dist/node_modules/d3-scale/src/diverging.js +35 -36
- package/dist/node_modules/d3-scale/src/diverging.js.map +1 -1
- package/dist/node_modules/d3-scale/src/identity.js +6 -7
- package/dist/node_modules/d3-scale/src/identity.js.map +1 -1
- package/dist/node_modules/d3-scale/src/init.js +3 -8
- package/dist/node_modules/d3-scale/src/init.js.map +1 -1
- package/dist/node_modules/d3-scale/src/linear.js +6 -7
- package/dist/node_modules/d3-scale/src/linear.js.map +1 -1
- package/dist/node_modules/d3-scale/src/log.js +32 -33
- package/dist/node_modules/d3-scale/src/log.js.map +1 -1
- package/dist/node_modules/d3-scale/src/nice.js +1 -2
- package/dist/node_modules/d3-scale/src/nice.js.map +1 -1
- package/dist/node_modules/d3-scale/src/number.js +1 -2
- package/dist/node_modules/d3-scale/src/number.js.map +1 -1
- package/dist/node_modules/d3-scale/src/ordinal.js +1 -2
- package/dist/node_modules/d3-scale/src/ordinal.js.map +1 -1
- package/dist/node_modules/d3-scale/src/pow.js +13 -14
- package/dist/node_modules/d3-scale/src/pow.js.map +1 -1
- package/dist/node_modules/d3-scale/src/quantile.js +2 -3
- package/dist/node_modules/d3-scale/src/quantile.js.map +1 -1
- package/dist/node_modules/d3-scale/src/quantize.js +5 -6
- package/dist/node_modules/d3-scale/src/quantize.js.map +1 -1
- package/dist/node_modules/d3-scale/src/radial.js +8 -9
- package/dist/node_modules/d3-scale/src/radial.js.map +1 -1
- package/dist/node_modules/d3-scale/src/sequential.js +27 -28
- package/dist/node_modules/d3-scale/src/sequential.js.map +1 -1
- package/dist/node_modules/d3-scale/src/sequentialQuantile.js +6 -7
- package/dist/node_modules/d3-scale/src/sequentialQuantile.js.map +1 -1
- package/dist/node_modules/d3-scale/src/symlog.js +12 -13
- package/dist/node_modules/d3-scale/src/symlog.js.map +1 -1
- package/dist/node_modules/d3-scale/src/threshold.js +2 -3
- package/dist/node_modules/d3-scale/src/threshold.js.map +1 -1
- package/dist/node_modules/d3-scale/src/tickFormat.js +7 -10
- package/dist/node_modules/d3-scale/src/tickFormat.js.map +1 -1
- package/dist/node_modules/d3-scale/src/time.js +27 -28
- package/dist/node_modules/d3-scale/src/time.js.map +1 -1
- package/dist/node_modules/d3-scale/src/utcTime.js +13 -14
- package/dist/node_modules/d3-scale/src/utcTime.js.map +1 -1
- package/dist/node_modules/d3-shape/src/area.js +34 -33
- package/dist/node_modules/d3-shape/src/area.js.map +1 -1
- package/dist/node_modules/d3-shape/src/array.js +0 -1
- package/dist/node_modules/d3-shape/src/array.js.map +1 -1
- package/dist/node_modules/d3-shape/src/constant.js +1 -2
- package/dist/node_modules/d3-shape/src/constant.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/basis.js +4 -9
- package/dist/node_modules/d3-shape/src/curve/basis.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/basisClosed.js +3 -8
- package/dist/node_modules/d3-shape/src/curve/basisClosed.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/basisOpen.js +2 -5
- package/dist/node_modules/d3-shape/src/curve/basisOpen.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/bump.js +2 -5
- package/dist/node_modules/d3-shape/src/curve/bump.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/linear.js +2 -5
- package/dist/node_modules/d3-shape/src/curve/linear.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/linearClosed.js +1 -2
- package/dist/node_modules/d3-shape/src/curve/linearClosed.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/monotone.js +4 -9
- package/dist/node_modules/d3-shape/src/curve/monotone.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/natural.js +5 -4
- package/dist/node_modules/d3-shape/src/curve/natural.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/step.js +6 -9
- package/dist/node_modules/d3-shape/src/curve/step.js.map +1 -1
- package/dist/node_modules/d3-shape/src/line.js +16 -17
- package/dist/node_modules/d3-shape/src/line.js.map +1 -1
- package/dist/node_modules/d3-shape/src/math.js +1 -2
- package/dist/node_modules/d3-shape/src/math.js.map +1 -1
- package/dist/node_modules/d3-shape/src/noop.js +1 -2
- package/dist/node_modules/d3-shape/src/noop.js.map +1 -1
- package/dist/node_modules/d3-shape/src/offset/expand.js +1 -2
- package/dist/node_modules/d3-shape/src/offset/expand.js.map +1 -1
- package/dist/node_modules/d3-shape/src/offset/none.js +1 -2
- package/dist/node_modules/d3-shape/src/offset/none.js.map +1 -1
- package/dist/node_modules/d3-shape/src/offset/silhouette.js +1 -2
- package/dist/node_modules/d3-shape/src/offset/silhouette.js.map +1 -1
- package/dist/node_modules/d3-shape/src/offset/wiggle.js +2 -3
- package/dist/node_modules/d3-shape/src/offset/wiggle.js.map +1 -1
- package/dist/node_modules/d3-shape/src/order/none.js +1 -2
- package/dist/node_modules/d3-shape/src/order/none.js.map +1 -1
- package/dist/node_modules/d3-shape/src/path.js +1 -2
- package/dist/node_modules/d3-shape/src/path.js.map +1 -1
- package/dist/node_modules/d3-shape/src/point.js +1 -2
- package/dist/node_modules/d3-shape/src/point.js.map +1 -1
- package/dist/node_modules/d3-shape/src/stack.js +13 -14
- package/dist/node_modules/d3-shape/src/stack.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/circle.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/circle.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/cross.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/cross.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/diamond.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/diamond.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/square.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/square.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/star.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/star.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/triangle.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/triangle.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/wye.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/wye.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol.js.map +1 -1
- package/dist/node_modules/d3-time/src/day.js +1 -2
- package/dist/node_modules/d3-time/src/day.js.map +1 -1
- package/dist/node_modules/d3-time/src/duration.js +1 -2
- package/dist/node_modules/d3-time/src/duration.js.map +1 -1
- package/dist/node_modules/d3-time/src/hour.js +1 -2
- package/dist/node_modules/d3-time/src/hour.js.map +1 -1
- package/dist/node_modules/d3-time/src/interval.js +5 -4
- package/dist/node_modules/d3-time/src/interval.js.map +1 -1
- package/dist/node_modules/d3-time/src/millisecond.js +1 -2
- package/dist/node_modules/d3-time/src/millisecond.js.map +1 -1
- package/dist/node_modules/d3-time/src/minute.js +1 -2
- package/dist/node_modules/d3-time/src/minute.js.map +1 -1
- package/dist/node_modules/d3-time/src/month.js +1 -2
- package/dist/node_modules/d3-time/src/month.js.map +1 -1
- package/dist/node_modules/d3-time/src/second.js +1 -2
- package/dist/node_modules/d3-time/src/second.js.map +1 -1
- package/dist/node_modules/d3-time/src/ticks.js +27 -28
- package/dist/node_modules/d3-time/src/ticks.js.map +1 -1
- package/dist/node_modules/d3-time/src/week.js +2 -3
- package/dist/node_modules/d3-time/src/week.js.map +1 -1
- package/dist/node_modules/d3-time/src/year.js +1 -2
- package/dist/node_modules/d3-time/src/year.js.map +1 -1
- package/dist/node_modules/d3-time-format/src/defaultLocale.js +6 -7
- package/dist/node_modules/d3-time-format/src/defaultLocale.js.map +1 -1
- package/dist/node_modules/d3-time-format/src/locale.js +1 -2
- package/dist/node_modules/d3-time-format/src/locale.js.map +1 -1
- package/dist/node_modules/decimal.js-light/decimal.js +33 -30
- package/dist/node_modules/decimal.js-light/decimal.js.map +1 -1
- package/dist/node_modules/eventemitter3/index.js +2 -3
- package/dist/node_modules/eventemitter3/index.js.map +1 -1
- package/dist/node_modules/fast-equals/dist/es/index.js +3 -4
- package/dist/node_modules/fast-equals/dist/es/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.js +3 -4
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.js +7 -8
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/utils.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/utils.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/LayoutGroupContext.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/LayoutGroupContext.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/LazyContext.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/LazyContext.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionConfigContext.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/MotionConfigContext.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/create.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/create.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/index.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/utils.js +7 -8
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/utils.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/PresenceContext.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/PresenceContext.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/events/add-pointer-event.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/events/add-pointer-event.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/events/event-info.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/events/event-info.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.js +92 -101
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/index.js +8 -9
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.js +11 -12
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/focus.js +8 -9
- package/dist/node_modules/framer-motion/dist/es/gestures/focus.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/hover.js +8 -9
- package/dist/node_modules/framer-motion/dist/es/gestures/hover.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.js +37 -38
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.js +5 -6
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/press.js +9 -10
- package/dist/node_modules/framer-motion/dist/es/gestures/press.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.js +12 -13
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/index.js +8 -9
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/animations.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/motion/features/animations.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/definitions.js +2 -3
- package/dist/node_modules/framer-motion/dist/es/motion/features/definitions.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/drag.js +9 -10
- package/dist/node_modules/framer-motion/dist/es/motion/features/drag.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/gestures.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/motion/features/gestures.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.js +15 -16
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/load-features.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/motion/features/load-features.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.js +4 -5
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/index.js +34 -35
- package/dist/node_modules/framer-motion/dist/es/motion/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/symbol.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/motion/utils/symbol.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.js +7 -7
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.js +17 -18
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.js +22 -23
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/valid-prop.js +2 -3
- package/dist/node_modules/framer-motion/dist/es/motion/utils/valid-prop.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/components/create-proxy.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/components/create-proxy.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/feature-bundle.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/feature-bundle.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/proxy.js +4 -5
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/proxy.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/create-visual-element.js +4 -5
- package/dist/node_modules/framer-motion/dist/es/render/dom/create-visual-element.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.js +5 -6
- package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.js +2 -3
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/html/use-html-visual-state.js +5 -6
- package/dist/node_modules/framer-motion/dist/es/render/html/use-html-visual-state.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/html/use-props.js +8 -9
- package/dist/node_modules/framer-motion/dist/es/render/html/use-props.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/html/utils/create-render-state.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/html/utils/create-render-state.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/lowercase-elements.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/svg/lowercase-elements.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-svg-visual-state.js +5 -6
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-svg-visual-state.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/distance.js +2 -3
- package/dist/node_modules/framer-motion/dist/es/utils/distance.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/is-browser.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/utils/is-browser.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/is-ref-object.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/utils/is-ref-object.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js +7 -8
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-composed-ref.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/utils/use-composed-ref.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-constant.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/utils/use-constant.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.js.map +1 -1
- package/dist/node_modules/internmap/src/index.js +1 -2
- package/dist/node_modules/internmap/src/index.js.map +1 -1
- package/dist/node_modules/lodash/_DataView.js +4 -5
- package/dist/node_modules/lodash/_DataView.js.map +1 -1
- package/dist/node_modules/lodash/_Hash.js +1 -2
- package/dist/node_modules/lodash/_Hash.js.map +1 -1
- package/dist/node_modules/lodash/_ListCache.js +1 -2
- package/dist/node_modules/lodash/_ListCache.js.map +1 -1
- package/dist/node_modules/lodash/_Map.js +4 -5
- package/dist/node_modules/lodash/_Map.js.map +1 -1
- package/dist/node_modules/lodash/_MapCache.js +1 -2
- package/dist/node_modules/lodash/_MapCache.js.map +1 -1
- package/dist/node_modules/lodash/_Promise.js +4 -5
- package/dist/node_modules/lodash/_Promise.js.map +1 -1
- package/dist/node_modules/lodash/_Set.js +4 -5
- package/dist/node_modules/lodash/_Set.js.map +1 -1
- package/dist/node_modules/lodash/_SetCache.js +1 -2
- package/dist/node_modules/lodash/_SetCache.js.map +1 -1
- package/dist/node_modules/lodash/_Stack.js +3 -3
- package/dist/node_modules/lodash/_Stack.js.map +1 -1
- package/dist/node_modules/lodash/_Symbol.js +1 -2
- package/dist/node_modules/lodash/_Symbol.js.map +1 -1
- package/dist/node_modules/lodash/_Uint8Array.js +1 -2
- package/dist/node_modules/lodash/_Uint8Array.js.map +1 -1
- package/dist/node_modules/lodash/_WeakMap.js +4 -5
- package/dist/node_modules/lodash/_WeakMap.js.map +1 -1
- package/dist/node_modules/lodash/_apply.js +1 -2
- package/dist/node_modules/lodash/_apply.js.map +1 -1
- package/dist/node_modules/lodash/_arrayEvery.js +1 -2
- package/dist/node_modules/lodash/_arrayEvery.js.map +1 -1
- package/dist/node_modules/lodash/_arrayFilter.js +1 -2
- package/dist/node_modules/lodash/_arrayFilter.js.map +1 -1
- package/dist/node_modules/lodash/_arrayIncludes.js +1 -2
- package/dist/node_modules/lodash/_arrayIncludes.js.map +1 -1
- package/dist/node_modules/lodash/_arrayIncludesWith.js +1 -2
- package/dist/node_modules/lodash/_arrayIncludesWith.js.map +1 -1
- package/dist/node_modules/lodash/_arrayLikeKeys.js +5 -6
- package/dist/node_modules/lodash/_arrayLikeKeys.js.map +1 -1
- package/dist/node_modules/lodash/_arrayMap.js +1 -2
- package/dist/node_modules/lodash/_arrayMap.js.map +1 -1
- package/dist/node_modules/lodash/_arrayPush.js +1 -2
- package/dist/node_modules/lodash/_arrayPush.js.map +1 -1
- package/dist/node_modules/lodash/_arraySome.js +1 -2
- package/dist/node_modules/lodash/_arraySome.js.map +1 -1
- package/dist/node_modules/lodash/_asciiToArray.js +1 -2
- package/dist/node_modules/lodash/_asciiToArray.js.map +1 -1
- package/dist/node_modules/lodash/_assocIndexOf.js +1 -2
- package/dist/node_modules/lodash/_assocIndexOf.js.map +1 -1
- package/dist/node_modules/lodash/_baseAssignValue.js +1 -2
- package/dist/node_modules/lodash/_baseAssignValue.js.map +1 -1
- package/dist/node_modules/lodash/_baseEach.js +1 -2
- package/dist/node_modules/lodash/_baseEach.js.map +1 -1
- package/dist/node_modules/lodash/_baseEvery.js +1 -2
- package/dist/node_modules/lodash/_baseEvery.js.map +1 -1
- package/dist/node_modules/lodash/_baseExtremum.js +1 -2
- package/dist/node_modules/lodash/_baseExtremum.js.map +1 -1
- package/dist/node_modules/lodash/_baseFindIndex.js +1 -2
- package/dist/node_modules/lodash/_baseFindIndex.js.map +1 -1
- package/dist/node_modules/lodash/_baseFlatten.js +1 -2
- package/dist/node_modules/lodash/_baseFlatten.js.map +1 -1
- package/dist/node_modules/lodash/_baseFor.js +1 -2
- package/dist/node_modules/lodash/_baseFor.js.map +1 -1
- package/dist/node_modules/lodash/_baseForOwn.js +4 -5
- package/dist/node_modules/lodash/_baseForOwn.js.map +1 -1
- package/dist/node_modules/lodash/_baseGet.js +1 -2
- package/dist/node_modules/lodash/_baseGet.js.map +1 -1
- package/dist/node_modules/lodash/_baseGetAllKeys.js +4 -5
- package/dist/node_modules/lodash/_baseGetAllKeys.js.map +1 -1
- package/dist/node_modules/lodash/_baseGetTag.js +1 -2
- package/dist/node_modules/lodash/_baseGetTag.js.map +1 -1
- package/dist/node_modules/lodash/_baseGt.js +1 -2
- package/dist/node_modules/lodash/_baseGt.js.map +1 -1
- package/dist/node_modules/lodash/_baseHasIn.js +1 -2
- package/dist/node_modules/lodash/_baseHasIn.js.map +1 -1
- package/dist/node_modules/lodash/_baseIndexOf.js +1 -2
- package/dist/node_modules/lodash/_baseIndexOf.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsArguments.js +1 -2
- package/dist/node_modules/lodash/_baseIsArguments.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsEqual.js +4 -5
- package/dist/node_modules/lodash/_baseIsEqual.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsEqualDeep.js +10 -11
- package/dist/node_modules/lodash/_baseIsEqualDeep.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsMatch.js +1 -2
- package/dist/node_modules/lodash/_baseIsMatch.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsNaN.js +1 -2
- package/dist/node_modules/lodash/_baseIsNaN.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsNative.js +5 -6
- package/dist/node_modules/lodash/_baseIsNative.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsTypedArray.js +4 -5
- package/dist/node_modules/lodash/_baseIsTypedArray.js.map +1 -1
- package/dist/node_modules/lodash/_baseIteratee.js +6 -7
- package/dist/node_modules/lodash/_baseIteratee.js.map +1 -1
- package/dist/node_modules/lodash/_baseKeys.js +1 -2
- package/dist/node_modules/lodash/_baseKeys.js.map +1 -1
- package/dist/node_modules/lodash/_baseLt.js +1 -2
- package/dist/node_modules/lodash/_baseLt.js.map +1 -1
- package/dist/node_modules/lodash/_baseMap.js +4 -5
- package/dist/node_modules/lodash/_baseMap.js.map +1 -1
- package/dist/node_modules/lodash/_baseMatches.js +1 -2
- package/dist/node_modules/lodash/_baseMatches.js.map +1 -1
- package/dist/node_modules/lodash/_baseMatchesProperty.js +7 -8
- package/dist/node_modules/lodash/_baseMatchesProperty.js.map +1 -1
- package/dist/node_modules/lodash/_baseOrderBy.js +11 -12
- package/dist/node_modules/lodash/_baseOrderBy.js.map +1 -1
- package/dist/node_modules/lodash/_baseProperty.js +1 -2
- package/dist/node_modules/lodash/_baseProperty.js.map +1 -1
- package/dist/node_modules/lodash/_basePropertyDeep.js +1 -2
- package/dist/node_modules/lodash/_basePropertyDeep.js.map +1 -1
- package/dist/node_modules/lodash/_baseRange.js +1 -2
- package/dist/node_modules/lodash/_baseRange.js.map +1 -1
- package/dist/node_modules/lodash/_baseRest.js +1 -2
- package/dist/node_modules/lodash/_baseRest.js.map +1 -1
- package/dist/node_modules/lodash/_baseSetToString.js +5 -6
- package/dist/node_modules/lodash/_baseSetToString.js.map +1 -1
- package/dist/node_modules/lodash/_baseSlice.js +1 -2
- package/dist/node_modules/lodash/_baseSlice.js.map +1 -1
- package/dist/node_modules/lodash/_baseSome.js +1 -2
- package/dist/node_modules/lodash/_baseSome.js.map +1 -1
- package/dist/node_modules/lodash/_baseSortBy.js +1 -2
- package/dist/node_modules/lodash/_baseSortBy.js.map +1 -1
- package/dist/node_modules/lodash/_baseTimes.js +1 -2
- package/dist/node_modules/lodash/_baseTimes.js.map +1 -1
- package/dist/node_modules/lodash/_baseToString.js +6 -7
- package/dist/node_modules/lodash/_baseToString.js.map +1 -1
- package/dist/node_modules/lodash/_baseTrim.js +1 -2
- package/dist/node_modules/lodash/_baseTrim.js.map +1 -1
- package/dist/node_modules/lodash/_baseUnary.js +1 -2
- package/dist/node_modules/lodash/_baseUnary.js.map +1 -1
- package/dist/node_modules/lodash/_baseUniq.js +7 -8
- package/dist/node_modules/lodash/_baseUniq.js.map +1 -1
- package/dist/node_modules/lodash/_cacheHas.js +1 -2
- package/dist/node_modules/lodash/_cacheHas.js.map +1 -1
- package/dist/node_modules/lodash/_castPath.js +1 -2
- package/dist/node_modules/lodash/_castPath.js.map +1 -1
- package/dist/node_modules/lodash/_castSlice.js +1 -2
- package/dist/node_modules/lodash/_castSlice.js.map +1 -1
- package/dist/node_modules/lodash/_compareAscending.js +1 -2
- package/dist/node_modules/lodash/_compareAscending.js.map +1 -1
- package/dist/node_modules/lodash/_compareMultiple.js +1 -2
- package/dist/node_modules/lodash/_compareMultiple.js.map +1 -1
- package/dist/node_modules/lodash/_coreJsData.js +1 -2
- package/dist/node_modules/lodash/_coreJsData.js.map +1 -1
- package/dist/node_modules/lodash/_createBaseEach.js +1 -2
- package/dist/node_modules/lodash/_createBaseEach.js.map +1 -1
- package/dist/node_modules/lodash/_createBaseFor.js +1 -2
- package/dist/node_modules/lodash/_createBaseFor.js.map +1 -1
- package/dist/node_modules/lodash/_createCaseFirst.js +6 -7
- package/dist/node_modules/lodash/_createCaseFirst.js.map +1 -1
- package/dist/node_modules/lodash/_createFind.js +5 -6
- package/dist/node_modules/lodash/_createFind.js.map +1 -1
- package/dist/node_modules/lodash/_createRange.js +4 -5
- package/dist/node_modules/lodash/_createRange.js.map +1 -1
- package/dist/node_modules/lodash/_createSet.js +6 -7
- package/dist/node_modules/lodash/_createSet.js.map +1 -1
- package/dist/node_modules/lodash/_defineProperty.js +1 -2
- package/dist/node_modules/lodash/_defineProperty.js.map +1 -1
- package/dist/node_modules/lodash/_equalArrays.js +1 -2
- package/dist/node_modules/lodash/_equalArrays.js.map +1 -1
- package/dist/node_modules/lodash/_equalByTag.js +5 -6
- package/dist/node_modules/lodash/_equalByTag.js.map +1 -1
- package/dist/node_modules/lodash/_equalObjects.js +1 -2
- package/dist/node_modules/lodash/_equalObjects.js.map +1 -1
- package/dist/node_modules/lodash/_freeGlobal.js +1 -2
- package/dist/node_modules/lodash/_freeGlobal.js.map +1 -1
- package/dist/node_modules/lodash/_getAllKeys.js +1 -2
- package/dist/node_modules/lodash/_getAllKeys.js.map +1 -1
- package/dist/node_modules/lodash/_getMapData.js +1 -2
- package/dist/node_modules/lodash/_getMapData.js.map +1 -1
- package/dist/node_modules/lodash/_getMatchData.js +4 -5
- package/dist/node_modules/lodash/_getMatchData.js.map +1 -1
- package/dist/node_modules/lodash/_getNative.js +1 -2
- package/dist/node_modules/lodash/_getNative.js.map +1 -1
- package/dist/node_modules/lodash/_getPrototype.js +1 -2
- package/dist/node_modules/lodash/_getPrototype.js.map +1 -1
- package/dist/node_modules/lodash/_getRawTag.js +1 -2
- package/dist/node_modules/lodash/_getRawTag.js.map +1 -1
- package/dist/node_modules/lodash/_getSymbols.js +1 -2
- package/dist/node_modules/lodash/_getSymbols.js.map +1 -1
- package/dist/node_modules/lodash/_getTag.js +9 -10
- package/dist/node_modules/lodash/_getTag.js.map +1 -1
- package/dist/node_modules/lodash/_getValue.js +1 -2
- package/dist/node_modules/lodash/_getValue.js.map +1 -1
- package/dist/node_modules/lodash/_hasPath.js +8 -9
- package/dist/node_modules/lodash/_hasPath.js.map +1 -1
- package/dist/node_modules/lodash/_hasUnicode.js +1 -2
- package/dist/node_modules/lodash/_hasUnicode.js.map +1 -1
- package/dist/node_modules/lodash/_hashClear.js +1 -2
- package/dist/node_modules/lodash/_hashClear.js.map +1 -1
- package/dist/node_modules/lodash/_hashDelete.js +1 -2
- package/dist/node_modules/lodash/_hashDelete.js.map +1 -1
- package/dist/node_modules/lodash/_hashGet.js +1 -2
- package/dist/node_modules/lodash/_hashGet.js.map +1 -1
- package/dist/node_modules/lodash/_hashHas.js +1 -2
- package/dist/node_modules/lodash/_hashHas.js.map +1 -1
- package/dist/node_modules/lodash/_hashSet.js +1 -2
- package/dist/node_modules/lodash/_hashSet.js.map +1 -1
- package/dist/node_modules/lodash/_isFlattenable.js +5 -6
- package/dist/node_modules/lodash/_isFlattenable.js.map +1 -1
- package/dist/node_modules/lodash/_isIndex.js +6 -7
- package/dist/node_modules/lodash/_isIndex.js.map +1 -1
- package/dist/node_modules/lodash/_isIterateeCall.js +5 -6
- package/dist/node_modules/lodash/_isIterateeCall.js.map +1 -1
- package/dist/node_modules/lodash/_isKey.js +1 -2
- package/dist/node_modules/lodash/_isKey.js.map +1 -1
- package/dist/node_modules/lodash/_isKeyable.js +1 -2
- package/dist/node_modules/lodash/_isKeyable.js.map +1 -1
- package/dist/node_modules/lodash/_isMasked.js +1 -2
- package/dist/node_modules/lodash/_isMasked.js.map +1 -1
- package/dist/node_modules/lodash/_isPrototype.js +1 -2
- package/dist/node_modules/lodash/_isPrototype.js.map +1 -1
- package/dist/node_modules/lodash/_isStrictComparable.js +1 -2
- package/dist/node_modules/lodash/_isStrictComparable.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheClear.js +1 -2
- package/dist/node_modules/lodash/_listCacheClear.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheDelete.js +1 -2
- package/dist/node_modules/lodash/_listCacheDelete.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheGet.js +1 -2
- package/dist/node_modules/lodash/_listCacheGet.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheHas.js +1 -2
- package/dist/node_modules/lodash/_listCacheHas.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheSet.js +1 -2
- package/dist/node_modules/lodash/_listCacheSet.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheClear.js +1 -2
- package/dist/node_modules/lodash/_mapCacheClear.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheDelete.js +1 -2
- package/dist/node_modules/lodash/_mapCacheDelete.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheGet.js +1 -2
- package/dist/node_modules/lodash/_mapCacheGet.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheHas.js +1 -2
- package/dist/node_modules/lodash/_mapCacheHas.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheSet.js +1 -2
- package/dist/node_modules/lodash/_mapCacheSet.js.map +1 -1
- package/dist/node_modules/lodash/_mapToArray.js +1 -2
- package/dist/node_modules/lodash/_mapToArray.js.map +1 -1
- package/dist/node_modules/lodash/_matchesStrictComparable.js +2 -3
- package/dist/node_modules/lodash/_matchesStrictComparable.js.map +1 -1
- package/dist/node_modules/lodash/_memoizeCapped.js +1 -2
- package/dist/node_modules/lodash/_memoizeCapped.js.map +1 -1
- package/dist/node_modules/lodash/_nativeCreate.js +1 -2
- package/dist/node_modules/lodash/_nativeCreate.js.map +1 -1
- package/dist/node_modules/lodash/_nativeKeys.js +1 -2
- package/dist/node_modules/lodash/_nativeKeys.js.map +1 -1
- package/dist/node_modules/lodash/_nodeUtil.js +1 -2
- package/dist/node_modules/lodash/_nodeUtil.js.map +1 -1
- package/dist/node_modules/lodash/_objectToString.js +1 -2
- package/dist/node_modules/lodash/_objectToString.js.map +1 -1
- package/dist/node_modules/lodash/_overArg.js +1 -2
- package/dist/node_modules/lodash/_overArg.js.map +1 -1
- package/dist/node_modules/lodash/_overRest.js +1 -2
- package/dist/node_modules/lodash/_overRest.js.map +1 -1
- package/dist/node_modules/lodash/_root.js +1 -2
- package/dist/node_modules/lodash/_root.js.map +1 -1
- package/dist/node_modules/lodash/_setCacheAdd.js +4 -6
- package/dist/node_modules/lodash/_setCacheAdd.js.map +1 -1
- package/dist/node_modules/lodash/_setCacheHas.js +1 -2
- package/dist/node_modules/lodash/_setCacheHas.js.map +1 -1
- package/dist/node_modules/lodash/_setToArray.js +1 -2
- package/dist/node_modules/lodash/_setToArray.js.map +1 -1
- package/dist/node_modules/lodash/_setToString.js +1 -2
- package/dist/node_modules/lodash/_setToString.js.map +1 -1
- package/dist/node_modules/lodash/_shortOut.js +8 -9
- package/dist/node_modules/lodash/_shortOut.js.map +1 -1
- package/dist/node_modules/lodash/_stackClear.js +1 -2
- package/dist/node_modules/lodash/_stackClear.js.map +1 -1
- package/dist/node_modules/lodash/_stackDelete.js +1 -2
- package/dist/node_modules/lodash/_stackDelete.js.map +1 -1
- package/dist/node_modules/lodash/_stackGet.js +1 -2
- package/dist/node_modules/lodash/_stackGet.js.map +1 -1
- package/dist/node_modules/lodash/_stackHas.js +1 -2
- package/dist/node_modules/lodash/_stackHas.js.map +1 -1
- package/dist/node_modules/lodash/_stackSet.js +1 -2
- package/dist/node_modules/lodash/_stackSet.js.map +1 -1
- package/dist/node_modules/lodash/_strictIndexOf.js +1 -2
- package/dist/node_modules/lodash/_strictIndexOf.js.map +1 -1
- package/dist/node_modules/lodash/_stringToArray.js +4 -5
- package/dist/node_modules/lodash/_stringToArray.js.map +1 -1
- package/dist/node_modules/lodash/_stringToPath.js +1 -2
- package/dist/node_modules/lodash/_stringToPath.js.map +1 -1
- package/dist/node_modules/lodash/_toKey.js +2 -3
- package/dist/node_modules/lodash/_toKey.js.map +1 -1
- package/dist/node_modules/lodash/_toSource.js +1 -2
- package/dist/node_modules/lodash/_toSource.js.map +1 -1
- package/dist/node_modules/lodash/_trimmedEndIndex.js +1 -2
- package/dist/node_modules/lodash/_trimmedEndIndex.js.map +1 -1
- package/dist/node_modules/lodash/_unicodeToArray.js +1 -2
- package/dist/node_modules/lodash/_unicodeToArray.js.map +1 -1
- package/dist/node_modules/lodash/constant.js +1 -2
- package/dist/node_modules/lodash/constant.js.map +1 -1
- package/dist/node_modules/lodash/debounce.js +1 -2
- package/dist/node_modules/lodash/debounce.js.map +1 -1
- package/dist/node_modules/lodash/eq.js +1 -2
- package/dist/node_modules/lodash/eq.js.map +1 -1
- package/dist/node_modules/lodash/every.js +7 -8
- package/dist/node_modules/lodash/every.js.map +1 -1
- package/dist/node_modules/lodash/find.js +1 -2
- package/dist/node_modules/lodash/find.js.map +1 -1
- package/dist/node_modules/lodash/findIndex.js +4 -5
- package/dist/node_modules/lodash/findIndex.js.map +1 -1
- package/dist/node_modules/lodash/flatMap.js +1 -2
- package/dist/node_modules/lodash/flatMap.js.map +1 -1
- package/dist/node_modules/lodash/get.js +1 -2
- package/dist/node_modules/lodash/get.js.map +1 -1
- package/dist/node_modules/lodash/hasIn.js +1 -2
- package/dist/node_modules/lodash/hasIn.js.map +1 -1
- package/dist/node_modules/lodash/identity.js +1 -2
- package/dist/node_modules/lodash/identity.js.map +1 -1
- package/dist/node_modules/lodash/isArguments.js +4 -5
- package/dist/node_modules/lodash/isArguments.js.map +1 -1
- package/dist/node_modules/lodash/isArray.js +1 -2
- package/dist/node_modules/lodash/isArray.js.map +1 -1
- package/dist/node_modules/lodash/isArrayLike.js +1 -2
- package/dist/node_modules/lodash/isArrayLike.js.map +1 -1
- package/dist/node_modules/lodash/isBoolean.js +1 -2
- package/dist/node_modules/lodash/isBoolean.js.map +1 -1
- package/dist/node_modules/lodash/isBuffer.js +1 -2
- package/dist/node_modules/lodash/isBuffer.js.map +1 -1
- package/dist/node_modules/lodash/isEqual.js +1 -2
- package/dist/node_modules/lodash/isEqual.js.map +1 -1
- package/dist/node_modules/lodash/isFunction.js +1 -2
- package/dist/node_modules/lodash/isFunction.js.map +1 -1
- package/dist/node_modules/lodash/isLength.js +4 -6
- package/dist/node_modules/lodash/isLength.js.map +1 -1
- package/dist/node_modules/lodash/isNaN.js +1 -2
- package/dist/node_modules/lodash/isNaN.js.map +1 -1
- package/dist/node_modules/lodash/isNil.js +1 -2
- package/dist/node_modules/lodash/isNil.js.map +1 -1
- package/dist/node_modules/lodash/isNumber.js +1 -2
- package/dist/node_modules/lodash/isNumber.js.map +1 -1
- package/dist/node_modules/lodash/isObject.js +1 -2
- package/dist/node_modules/lodash/isObject.js.map +1 -1
- package/dist/node_modules/lodash/isObjectLike.js +1 -2
- package/dist/node_modules/lodash/isObjectLike.js.map +1 -1
- package/dist/node_modules/lodash/isPlainObject.js +4 -5
- package/dist/node_modules/lodash/isPlainObject.js.map +1 -1
- package/dist/node_modules/lodash/isString.js +4 -5
- package/dist/node_modules/lodash/isString.js.map +1 -1
- package/dist/node_modules/lodash/isSymbol.js +1 -2
- package/dist/node_modules/lodash/isSymbol.js.map +1 -1
- package/dist/node_modules/lodash/isTypedArray.js +1 -2
- package/dist/node_modules/lodash/isTypedArray.js.map +1 -1
- package/dist/node_modules/lodash/keys.js +1 -2
- package/dist/node_modules/lodash/keys.js.map +1 -1
- package/dist/node_modules/lodash/last.js +1 -2
- package/dist/node_modules/lodash/last.js.map +1 -1
- package/dist/node_modules/lodash/map.js +6 -7
- package/dist/node_modules/lodash/map.js.map +1 -1
- package/dist/node_modules/lodash/mapValues.js +4 -5
- package/dist/node_modules/lodash/mapValues.js.map +1 -1
- package/dist/node_modules/lodash/max.js +5 -6
- package/dist/node_modules/lodash/max.js.map +1 -1
- package/dist/node_modules/lodash/memoize.js +1 -2
- package/dist/node_modules/lodash/memoize.js.map +1 -1
- package/dist/node_modules/lodash/min.js +5 -6
- package/dist/node_modules/lodash/min.js.map +1 -1
- package/dist/node_modules/lodash/noop.js +1 -2
- package/dist/node_modules/lodash/noop.js.map +1 -1
- package/dist/node_modules/lodash/now.js +1 -2
- package/dist/node_modules/lodash/now.js.map +1 -1
- package/dist/node_modules/lodash/property.js +6 -7
- package/dist/node_modules/lodash/property.js.map +1 -1
- package/dist/node_modules/lodash/range.js +1 -2
- package/dist/node_modules/lodash/range.js.map +1 -1
- package/dist/node_modules/lodash/some.js +7 -8
- package/dist/node_modules/lodash/some.js.map +1 -1
- package/dist/node_modules/lodash/sortBy.js +1 -2
- package/dist/node_modules/lodash/sortBy.js.map +1 -1
- package/dist/node_modules/lodash/stubArray.js +1 -2
- package/dist/node_modules/lodash/stubArray.js.map +1 -1
- package/dist/node_modules/lodash/stubFalse.js +1 -2
- package/dist/node_modules/lodash/stubFalse.js.map +1 -1
- package/dist/node_modules/lodash/throttle.js +4 -5
- package/dist/node_modules/lodash/throttle.js.map +1 -1
- package/dist/node_modules/lodash/toFinite.js +2 -3
- package/dist/node_modules/lodash/toFinite.js.map +1 -1
- package/dist/node_modules/lodash/toInteger.js +1 -2
- package/dist/node_modules/lodash/toInteger.js.map +1 -1
- package/dist/node_modules/lodash/toNumber.js +4 -5
- package/dist/node_modules/lodash/toNumber.js.map +1 -1
- package/dist/node_modules/lodash/toString.js +1 -2
- package/dist/node_modules/lodash/toString.js.map +1 -1
- package/dist/node_modules/lodash/uniqBy.js +1 -2
- package/dist/node_modules/lodash/uniqBy.js.map +1 -1
- package/dist/node_modules/lodash/upperFirst.js +1 -2
- package/dist/node_modules/lodash/upperFirst.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.js +22 -23
- package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.js +29 -30
- package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.js +17 -18
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.js +10 -11
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/animate/single-value.js +5 -6
- package/dist/node_modules/motion-dom/dist/es/animation/animate/single-value.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.js +6 -7
- package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.js +4 -5
- package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.js +50 -49
- package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.js +17 -18
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.js +23 -24
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.js +12 -12
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.js +35 -37
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.js +18 -19
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.js +9 -10
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.js +3 -3
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/get-appear-id.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/get-appear-id.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/WithPromise.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/WithPromise.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/can-animate.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/can-animate.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/default-transitions.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/default-transitions.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-animatable.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-animatable.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-css-variable.js +3 -4
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-css-variable.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/make-animation-instant.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/make-animation-instant.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.js +9 -10
- package/dist/node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/resolve-transition.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/resolve-transition.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.js +4 -5
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/supported.js +5 -6
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/supported.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.js +3 -4
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/is-browser-color.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/is-browser-color.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.js +7 -8
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/frame.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/frameloop/frame.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/microtask.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/frameloop/microtask.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/order.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/frameloop/order.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/sync-time.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/frameloop/sync-time.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/hover.js +2 -9
- package/dist/node_modules/motion-dom/dist/es/gestures/hover.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/index.js +16 -17
- package/dist/node_modules/motion-dom/dist/es/gestures/press/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.js +3 -4
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/state.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/state.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/setup.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/setup.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/animation/mix-values.js +15 -16
- package/dist/node_modules/motion-dom/dist/es/projection/animation/mix-values.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/conversion.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/conversion.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/copy.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/copy.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.js +16 -17
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.js +6 -7
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/models.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/models.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/utils.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/utils.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.js +175 -180
- package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/state.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/node/state.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/shared/stack.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/projection/shared/stack.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-border-radius.js +6 -5
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-border-radius.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-correction.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-correction.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/transform.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/styles/transform.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/compare-by-depth.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/utils/compare-by-depth.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/each-axis.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/utils/each-axis.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/flat-tree.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/utils/flat-tree.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/measure.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/utils/measure.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/Feature.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/Feature.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/VisualElement.js +58 -59
- package/dist/node_modules/motion-dom/dist/es/render/VisualElement.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/is-css-var.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/dom/is-css-var.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/parse-transform.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/dom/parse-transform.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/style-set.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/dom/style-set.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.js +9 -10
- package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-styles.js +10 -15
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-styles.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-transform.js +10 -11
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-transform.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/render.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/render.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/scrape-motion-values.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/scrape-motion-values.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/store.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/store.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.js +11 -12
- package/dist/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/camel-case-attrs.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/camel-case-attrs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/is-svg-tag.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/is-svg-tag.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/path.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/path.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/render.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/render.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.js +6 -7
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.js +57 -58
- package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/get-variant-context.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/get-variant-context.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-animation-controls.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-animation-controls.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-keyframes-target.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-keyframes-target.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-variant-label.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-variant-label.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-position.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-position.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-transform.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-transform.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/motion-values.js +9 -8
- package/dist/node_modules/motion-dom/dist/es/render/utils/motion-values.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/index.js +8 -7
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/state.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/state.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-variants.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-variants.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/setters.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/setters.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/shallow-compare.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/shallow-compare.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/variant-props.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/variant-props.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/resize/handle-element.js +7 -8
- package/dist/node_modules/motion-dom/dist/es/resize/handle-element.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/resize/handle-window.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/resize/handle-window.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/resize/index.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/resize/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/stats/buffer.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/stats/buffer.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/border-radius.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/border-radius.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/delay.js +7 -8
- package/dist/node_modules/motion-dom/dist/es/utils/delay.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/interpolate.js +10 -7
- package/dist/node_modules/motion-dom/dist/es/utils/interpolate.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/is-html-element.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/is-html-element.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-element.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-element.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-svg-element.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-svg-element.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/color.js +17 -18
- package/dist/node_modules/motion-dom/dist/es/utils/mix/color.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/complex.js +13 -14
- package/dist/node_modules/motion-dom/dist/es/utils/mix/complex.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/immediate.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/mix/immediate.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/index.js +4 -5
- package/dist/node_modules/motion-dom/dist/es/utils/mix/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/number.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/mix/number.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/visibility.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/utils/mix/visibility.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/flags.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/supports/flags.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/linear-easing.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/utils/supports/linear-easing.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/memo.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/supports/memo.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/index.js +20 -21
- package/dist/node_modules/motion-dom/dist/es/value/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/auto.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/auto.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hex.js +5 -6
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hex.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.js +7 -8
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/index.js +7 -8
- package/dist/node_modules/motion-dom/dist/es/value/types/color/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.js +4 -5
- package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/utils.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/color/utils.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/filter.js +10 -11
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/filter.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.js +13 -14
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/mask.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/mask.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/dimensions.js +8 -9
- package/dist/node_modules/motion-dom/dist/es/value/types/dimensions.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/int.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/int.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/defaults.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/defaults.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/number.js +58 -59
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/number.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/transform.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/transform.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/index.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/units.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/units.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/test.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/test.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/color-regex.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/color-regex.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/find.js +5 -6
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/find.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/float-regex.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/float-regex.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/get-as-type.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/get-as-type.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/is-nullish.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/is-nullish.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/sanitize.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/sanitize.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/utils/is-motion-value.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/utils/is-motion-value.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/utils/resolve-motion-value.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/utils/resolve-motion-value.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/will-change/add-will-change.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/will-change/add-will-change.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/will-change/is.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/will-change/is.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/array.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/array.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/clamp.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/clamp.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/anticipate.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/easing/anticipate.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/back.js +2 -3
- package/dist/node_modules/motion-utils/dist/es/easing/back.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/circ.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/easing/circ.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/cubic-bezier.js +2 -3
- package/dist/node_modules/motion-utils/dist/es/easing/cubic-bezier.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/ease.js +2 -3
- package/dist/node_modules/motion-utils/dist/es/easing/ease.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/mirror.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/mirror.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/reverse.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/reverse.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-easing-array.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-easing-array.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/utils/map.js +12 -13
- package/dist/node_modules/motion-utils/dist/es/easing/utils/map.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/errors.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/errors.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/format-error-message.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/format-error-message.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/global-config.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/global-config.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/is-numerical-string.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/is-numerical-string.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/is-object.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/is-object.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/is-zero-value-string.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/is-zero-value-string.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/memo.js +2 -3
- package/dist/node_modules/motion-utils/dist/es/memo.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/noop.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/noop.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/pipe.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/pipe.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/progress.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/progress.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/subscription-manager.js +7 -6
- package/dist/node_modules/motion-utils/dist/es/subscription-manager.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/time-conversion.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/time-conversion.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/velocity-per-second.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/velocity-per-second.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/warn-once.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/warn-once.js.map +1 -1
- package/dist/node_modules/object-assign/index.js +1 -2
- package/dist/node_modules/object-assign/index.js.map +1 -1
- package/dist/node_modules/prop-types/checkPropTypes.js +1 -2
- package/dist/node_modules/prop-types/checkPropTypes.js.map +1 -1
- package/dist/node_modules/prop-types/factoryWithThrowingShims.js +1 -2
- package/dist/node_modules/prop-types/factoryWithThrowingShims.js.map +1 -1
- package/dist/node_modules/prop-types/factoryWithTypeCheckers.js +3 -3
- package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +1 -1
- package/dist/node_modules/prop-types/index.js +1 -2
- package/dist/node_modules/prop-types/index.js.map +1 -1
- package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js +1 -2
- package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js.map +1 -1
- package/dist/node_modules/prop-types/lib/has.js +1 -2
- package/dist/node_modules/prop-types/lib/has.js.map +1 -1
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js +1 -2
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js.map +1 -1
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js +1 -2
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
- package/dist/node_modules/prop-types/node_modules/react-is/index.js +2 -3
- package/dist/node_modules/prop-types/node_modules/react-is/index.js.map +1 -1
- package/dist/node_modules/react-is/cjs/react-is.development.js +31 -32
- package/dist/node_modules/react-is/cjs/react-is.development.js.map +1 -1
- package/dist/node_modules/react-is/cjs/react-is.production.min.js +1 -2
- package/dist/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
- package/dist/node_modules/react-is/index.js +2 -3
- package/dist/node_modules/react-is/index.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/Animate.js +33 -41
- package/dist/node_modules/react-smooth/es6/Animate.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/AnimateManager.js +2 -5
- package/dist/node_modules/react-smooth/es6/AnimateManager.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/configUpdate.js +1 -2
- package/dist/node_modules/react-smooth/es6/configUpdate.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/easing.js +1 -2
- package/dist/node_modules/react-smooth/es6/easing.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/index.js +1 -2
- package/dist/node_modules/react-smooth/es6/index.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/setRafTimeout.js +1 -2
- package/dist/node_modules/react-smooth/es6/setRafTimeout.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/util.js +17 -16
- package/dist/node_modules/react-smooth/es6/util.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Area.js +99 -100
- package/dist/node_modules/recharts/es6/cartesian/Area.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Bar.js +103 -104
- package/dist/node_modules/recharts/es6/cartesian/Bar.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Brush.js +35 -36
- package/dist/node_modules/recharts/es6/cartesian/Brush.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js +60 -67
- package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js +45 -46
- package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js +20 -21
- package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Line.js +79 -80
- package/dist/node_modules/recharts/es6/cartesian/Line.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js +29 -30
- package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js +23 -24
- package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js +31 -32
- package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Scatter.js +81 -82
- package/dist/node_modules/recharts/es6/cartesian/Scatter.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/XAxis.js +10 -11
- package/dist/node_modules/recharts/es6/cartesian/XAxis.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/YAxis.js +10 -11
- package/dist/node_modules/recharts/es6/cartesian/YAxis.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ZAxis.js +2 -3
- package/dist/node_modules/recharts/es6/cartesian/ZAxis.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js +5 -6
- package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/getTicks.js +7 -8
- package/dist/node_modules/recharts/es6/cartesian/getTicks.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js +2 -5
- package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/AreaChart.js +5 -6
- package/dist/node_modules/recharts/es6/chart/AreaChart.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/BarChart.js +7 -8
- package/dist/node_modules/recharts/es6/chart/BarChart.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/ComposedChart.js +18 -19
- package/dist/node_modules/recharts/es6/chart/ComposedChart.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js +534 -533
- package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Cell.js +1 -2
- package/dist/node_modules/recharts/es6/component/Cell.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Cursor.js +17 -18
- package/dist/node_modules/recharts/es6/component/Cursor.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js +35 -36
- package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js +16 -17
- package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Label.js +85 -86
- package/dist/node_modules/recharts/es6/component/Label.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/LabelList.js +20 -21
- package/dist/node_modules/recharts/es6/component/LabelList.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Legend.js +26 -23
- package/dist/node_modules/recharts/es6/component/Legend.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js +16 -17
- package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Text.js +18 -21
- package/dist/node_modules/recharts/es6/component/Text.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Tooltip.js +16 -17
- package/dist/node_modules/recharts/es6/component/Tooltip.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js +3 -4
- package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js.map +1 -1
- package/dist/node_modules/recharts/es6/container/Layer.js +5 -6
- package/dist/node_modules/recharts/es6/container/Layer.js.map +1 -1
- package/dist/node_modules/recharts/es6/container/Surface.js +5 -6
- package/dist/node_modules/recharts/es6/container/Surface.js.map +1 -1
- package/dist/node_modules/recharts/es6/context/chartLayoutContext.js +21 -21
- package/dist/node_modules/recharts/es6/context/chartLayoutContext.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Cross.js +4 -5
- package/dist/node_modules/recharts/es6/shape/Cross.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Curve.js +51 -52
- package/dist/node_modules/recharts/es6/shape/Curve.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Dot.js +3 -4
- package/dist/node_modules/recharts/es6/shape/Dot.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Rectangle.js +8 -9
- package/dist/node_modules/recharts/es6/shape/Rectangle.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Sector.js +33 -34
- package/dist/node_modules/recharts/es6/shape/Sector.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Symbols.js +33 -34
- package/dist/node_modules/recharts/es6/shape/Symbols.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Trapezoid.js +8 -9
- package/dist/node_modules/recharts/es6/shape/Trapezoid.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js +24 -25
- package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/BarUtils.js +10 -11
- package/dist/node_modules/recharts/es6/util/BarUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/CartesianUtils.js +33 -34
- package/dist/node_modules/recharts/es6/util/CartesianUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ChartUtils.js +237 -236
- package/dist/node_modules/recharts/es6/util/ChartUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js +1 -2
- package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/DOMUtils.js +1 -2
- package/dist/node_modules/recharts/es6/util/DOMUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/DataUtils.js +7 -8
- package/dist/node_modules/recharts/es6/util/DataUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js +20 -21
- package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/Events.js +0 -1
- package/dist/node_modules/recharts/es6/util/Events.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/Global.js +0 -1
- package/dist/node_modules/recharts/es6/util/Global.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js +1 -2
- package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/LogUtils.js +9 -8
- package/dist/node_modules/recharts/es6/util/LogUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/PolarUtils.js +4 -5
- package/dist/node_modules/recharts/es6/util/PolarUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ReactUtils.js +11 -12
- package/dist/node_modules/recharts/es6/util/ReactUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js +5 -6
- package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ScatterUtils.js +5 -6
- package/dist/node_modules/recharts/es6/util/ScatterUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ShallowEqual.js +1 -2
- package/dist/node_modules/recharts/es6/util/ShallowEqual.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/TickUtils.js +4 -4
- package/dist/node_modules/recharts/es6/util/TickUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/calculateViewBox.js +0 -1
- package/dist/node_modules/recharts/es6/util/calculateViewBox.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js +7 -6
- package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js +1 -2
- package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js +1 -2
- package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js +1 -2
- package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/getLegendProps.js +9 -10
- package/dist/node_modules/recharts/es6/util/getLegendProps.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js +1 -2
- package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js +4 -5
- package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/tooltip/translate.js +3 -4
- package/dist/node_modules/recharts/es6/util/tooltip/translate.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/types.js +2 -3
- package/dist/node_modules/recharts/es6/util/types.js.map +1 -1
- package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js +2 -3
- package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js.map +1 -1
- package/dist/node_modules/recharts-scale/es6/index.js +1 -1
- package/dist/node_modules/recharts-scale/es6/util/arithmetic.js +1 -2
- package/dist/node_modules/recharts-scale/es6/util/arithmetic.js.map +1 -1
- package/dist/node_modules/recharts-scale/es6/util/utils.js +3 -4
- package/dist/node_modules/recharts-scale/es6/util/utils.js.map +1 -1
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +134 -151
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -1
- package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js +2 -3
- package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js.map +1 -1
- package/dist/node_modules/victory-vendor/es/d3-scale.js +2 -3
- package/dist/node_modules/victory-vendor/es/d3-scale.js.map +1 -1
- package/dist/stories/EmptyState.stories.d.ts +0 -1
- package/dist/stories/InsightsCharts.stories.d.ts +0 -1
- package/dist/stories/MetricsCard.stories.d.ts +0 -1
- package/dist/stories/StatusBadge.stories.d.ts +0 -1
- package/package.json +21 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionDetailPage.js","names":[],"sources":["../../../../src/mybodyshield/pages/train/SessionDetailPage.tsx"],"sourcesContent":["/**\n * Train — workout session detail & live logging.\n * @module mybodyshield/pages/train\n *\n * Renders a single workout session (real `mybSession`, including its `sets`).\n * While a session is IN_PROGRESS you can log sets and complete it; completed /\n * scheduled sessions render read-only. Sets are grouped by exercise. No mock\n * data — everything comes from the myb* hooks.\n */\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { motion, useReducedMotion } from 'framer-motion';\nimport { useParams } from 'react-router';\nimport {\n ArrowLeft,\n Plus,\n CheckCircle2,\n Dumbbell,\n Weight,\n Timer,\n Flame,\n Ruler,\n Gauge,\n AlertTriangle,\n ChevronLeft,\n ChevronRight,\n ListChecks,\n Trophy,\n WifiOff,\n X,\n} from 'lucide-react';\nimport {\n Button,\n GlassCard,\n Label,\n Input,\n Textarea,\n Switch,\n ResponsiveDialog,\n ResponsiveDialogContent,\n ResponsiveDialogHeader,\n ResponsiveDialogTitle,\n ResponsiveDialogDescription,\n ResponsiveDialogFooter,\n} from '@burdenoff/fe-libs/ui';\nimport {\n PageLayout,\n MetricsCard,\n StatusBadge,\n EmptyState,\n LoadingView,\n ErrorView,\n MybDiscussion,\n} from '../../components';\nimport { IconChip } from '../_shared/visuals';\nimport { useMyBodyShield } from '../../context';\nimport {\n useMybSession,\n useMybLogSet,\n useMybCompleteSession,\n useMybWorkoutExercises,\n useMybExerciseBestSet,\n useMyBodyShieldAnalytics,\n useTr,\n} from '../../hooks';\nimport {\n listPendingActionsForSession,\n type PendingSessionAction,\n} from '../../lib/offlineSessionQueue';\nimport { useOfflineSessionSync } from '../../lib/useOfflineSessionSync';\nimport {\n formatDateTime,\n formatRelativeTime,\n formatNumber,\n formatWeight,\n formatKcal,\n formatDuration,\n formatEnumLabel,\n} from '../../utils/formatters';\nimport type { MybSessionSet, MybExercise } from '../../types';\n\n/**\n * Heuristic for \"this failure means we're offline, not that the request was\n * rejected\" (BOFF-4219). `graphqlFetch`'s underlying `fetch()` throws a\n * `TypeError` when the network is unreachable (no HTTP response at all);\n * a real GraphQL/backend error instead resolves with an `errors` array that\n * `mybQuery` turns into a plain `Error` with a server-authored message, so\n * checking `navigator.onLine` first and falling back to the error shape\n * keeps a genuine validation error (e.g. a deleted session) from being\n * mistaken for a connectivity gap and silently queued.\n */\nfunction isLikelyOffline(err: unknown): boolean {\n if (typeof navigator !== 'undefined' && !navigator.onLine) return true;\n if (err instanceof TypeError) return true;\n const msg = err instanceof Error ? err.message.toLowerCase() : '';\n return msg.includes('failed to fetch') || msg.includes('load failed') || msg.includes('network');\n}\n\n/** Render a queued (not-yet-synced) set the same shape as a real MybSessionSet for display. */\nfunction pendingActionToDisplaySet(action: PendingSessionAction, sessionId: string): MybSessionSet {\n const input = action.input as {\n exerciseName: string;\n setNumber?: number | null;\n reps?: number | null;\n weight?: number | null;\n distanceM?: number | null;\n durationSec?: number | null;\n isPersonalRecord?: boolean | null;\n };\n return {\n id: `pending-${action.clientActionId}`,\n workspaceId: '',\n sessionId,\n exerciseName: input.exerciseName,\n setNumber: input.setNumber ?? 1,\n reps: input.reps ?? 0,\n weight: input.weight ?? 0,\n distanceM: input.distanceM ?? 0,\n durationSec: input.durationSec ?? 0,\n isPersonalRecord: Boolean(input.isPersonalRecord),\n createdAt: action.capturedAt,\n updatedAt: action.capturedAt,\n };\n}\n\n/** Rest timer default when a set isn't part of a guided plan exercise. */\nconst DEFAULT_REST_SECONDS = 90;\n\n/** Stable empty-array reference so the \"no plan\" case never changes identity across renders. */\nconst NO_EXERCISES: readonly MybExercise[] = [];\n\n/**\n * Does a newly-logged `weight`/`reps` beat the member's prior best for this\n * exercise? Mirrors the backend's own ranking (weight desc, then reps desc).\n * `null`/`undefined` best (never logged before) is NOT treated as a record —\n * there is nothing yet to break — matching `mybExerciseBestSet`'s contract.\n */\nfunction beatsBest(weight: number, reps: number, best: MybSessionSet | null | undefined): boolean {\n if (!best) return false;\n if (weight > best.weight) return true;\n if (weight === best.weight && reps > best.reps) return true;\n return false;\n}\n\n/** Shared entrance easing — a soft, decelerating cubic-bezier. */\nconst MOTION_EASE: [number, number, number, number] = [0.16, 1, 0.3, 1];\n\n/** Stagger container + rise-in child variants for grouped card entrances. */\nconst STAGGER_CONTAINER = {\n hidden: {},\n show: { transition: { staggerChildren: 0.06 } },\n};\nconst RISE_ITEM = {\n hidden: { opacity: 0, y: 12 },\n show: { opacity: 1, y: 0, transition: { duration: 0.35, ease: MOTION_EASE } },\n};\n\n/** Parse an optional numeric string into a number, or undefined when blank. */\nfunction numOrUndef(value: string): number | undefined {\n const trimmed = value.trim();\n if (!trimmed) return undefined;\n const n = Number(trimmed);\n return Number.isFinite(n) ? n : undefined;\n}\n\ninterface LogSetForm {\n exerciseName: string;\n setNumber: string;\n reps: string;\n weight: string;\n distanceM: string;\n durationSec: string;\n isPersonalRecord: boolean;\n}\n\nconst EMPTY_LOG_FORM: LogSetForm = {\n exerciseName: '',\n setNumber: '',\n reps: '',\n weight: '',\n distanceM: '',\n durationSec: '',\n isPersonalRecord: false,\n};\n\ninterface CompleteForm {\n caloriesBurned: string;\n perceivedExertion: string;\n notes: string;\n}\n\nconst EMPTY_COMPLETE_FORM: CompleteForm = { caloriesBurned: '', perceivedExertion: '', notes: '' };\n\nexport function SessionDetailPage() {\n const t = useTr();\n const { navigateTo, workspaceId } = useMyBodyShield();\n const reduce = useReducedMotion();\n const { id } = useParams<{ id: string }>();\n const analytics = useMyBodyShieldAnalytics();\n\n const session = useMybSession(id);\n const logSet = useMybLogSet();\n const completeSession = useMybCompleteSession();\n const exercisesQuery = useMybWorkoutExercises(session.data?.workoutId ?? undefined);\n\n // BOFF-4219: offline-first queue for logging sets / completing a session\n // that was started while online but hits a connectivity gap mid-workout.\n const offlineSync = useOfflineSessionSync(\n (input) => logSet.mutateAsync(input),\n (vars) => completeSession.mutateAsync(vars),\n () => session.refetch()\n );\n const [pendingActions, setPendingActions] = useState<PendingSessionAction[]>([]);\n const refreshPendingForSession = useCallback(() => {\n if (!id) return;\n void listPendingActionsForSession(id).then(setPendingActions);\n }, [id]);\n useEffect(() => {\n refreshPendingForSession();\n }, [refreshPendingForSession, offlineSync.pendingCount]);\n const pendingSets = useMemo(\n () =>\n id\n ? pendingActions\n .filter((a) => a.type === 'LOG_SET')\n .map((a) => pendingActionToDisplaySet(a, id))\n : [],\n [pendingActions, id]\n );\n const pendingComplete = pendingActions.some((a) => a.type === 'COMPLETE_SESSION');\n\n const [logOpen, setLogOpen] = useState(false);\n const [logForm, setLogForm] = useState<LogSetForm>(EMPTY_LOG_FORM);\n const [logError, setLogError] = useState<string | null>(null);\n const [prTouched, setPrTouched] = useState(false);\n\n const [completeOpen, setCompleteOpen] = useState(false);\n const [completeForm, setCompleteForm] = useState<CompleteForm>(EMPTY_COMPLETE_FORM);\n const [completeError, setCompleteError] = useState<string | null>(null);\n\n // Guided next-exercise stepper (BOFF-4096): `null` means \"auto-follow\" —\n // the active step tracks the first not-yet-fully-logged planned exercise;\n // an explicit index means the member manually paged away from that.\n const [manualExerciseIdx, setManualExerciseIdx] = useState<number | null>(null);\n const [prevWorkoutId, setPrevWorkoutId] = useState<string | null | undefined>(\n session.data?.workoutId\n );\n\n // Rest timer (BOFF-4096): a wall-clock deadline rather than a plain\n // countdown-in-state, so the remaining time stays correct even if the tab\n // was backgrounded and the 1s interval was throttled/paused.\n const [restEndsAt, setRestEndsAt] = useState<number | null>(null);\n const [restRemaining, setRestRemaining] = useState(0);\n\n const bestSet = useMybExerciseBestSet(logForm.exerciseName);\n\n const data = session.data;\n // BOFF-4219: sets queued offline aren't in the server-fetched `data.sets`\n // yet — merge them in so a member sees what they logged immediately,\n // even before the queue has had a chance to sync.\n const sets = useMemo<MybSessionSet[]>(\n () => [...(data?.sets ?? []), ...pendingSets],\n [data?.sets, pendingSets]\n );\n\n const groups = useMemo(() => {\n const map = new Map<string, MybSessionSet[]>();\n for (const st of sets) {\n const arr = map.get(st.exerciseName) ?? [];\n arr.push(st);\n map.set(st.exerciseName, arr);\n }\n return Array.from(map.entries()).map(([name, list]) => ({\n name,\n sets: list.slice().sort((a, b) => a.setNumber - b.setNumber),\n }));\n }, [sets]);\n\n const totalVolume = useMemo(() => sets.reduce((acc, st) => acc + st.reps * st.weight, 0), [sets]);\n\n const startedAt = data?.startedAt;\n const completedAt = data?.completedAt;\n const durationSec = useMemo(() => {\n if (!startedAt || !completedAt) return undefined;\n const start = new Date(startedAt).getTime();\n const end = new Date(completedAt).getTime();\n if (!Number.isFinite(start) || !Number.isFinite(end) || end < start) return undefined;\n return (end - start) / 1000;\n }, [startedAt, completedAt]);\n\n const exercises = exercisesQuery.data ?? NO_EXERCISES;\n\n const loggedCountByExercise = useMemo(() => {\n const map = new Map<string, number>();\n for (const g of groups) map.set(g.name, g.sets.length);\n return map;\n }, [groups]);\n\n const autoExerciseIdx = useMemo(() => {\n if (exercises.length === 0) return 0;\n const idx = exercises.findIndex(\n (ex) => (loggedCountByExercise.get(ex.name) ?? 0) < Math.max(ex.sets, 1)\n );\n return idx === -1 ? exercises.length - 1 : idx;\n }, [exercises, loggedCountByExercise]);\n\n const activeExerciseIdx = Math.min(\n manualExerciseIdx ?? autoExerciseIdx,\n Math.max(exercises.length - 1, 0)\n );\n const activeExercise: MybExercise | undefined = exercises[activeExerciseIdx];\n const allExercisesDone =\n exercises.length > 0 &&\n exercises.every((ex) => (loggedCountByExercise.get(ex.name) ?? 0) >= Math.max(ex.sets, 1));\n\n // A different session's plan invalidates any manual stepper override. This\n // adjusts state during render (React's documented alternative to an\n // effect for \"reset state when a prop changes\") rather than an effect, so\n // it never causes the extra reset-then-settle render an effect would.\n if (session.data?.workoutId !== prevWorkoutId) {\n setPrevWorkoutId(session.data?.workoutId);\n setManualExerciseIdx(null);\n }\n\n // Tick the rest-timer countdown against the wall-clock deadline. The\n // effect only *subscribes* to the interval — every state update happens\n // inside the (deferred) tick callback, never synchronously in the effect\n // body itself, so starting/stopping the timer never forces an extra render.\n useEffect(() => {\n if (restEndsAt == null) return;\n const interval = window.setInterval(() => {\n const remaining = Math.max(0, Math.ceil((restEndsAt - Date.now()) / 1000));\n setRestRemaining(remaining);\n if (remaining <= 0) setRestEndsAt(null);\n }, 1000);\n return () => window.clearInterval(interval);\n }, [restEndsAt]);\n\n // Live auto-PR detection (BOFF-4096): derived at render time, not synced\n // via an effect — whether the in-progress reps/weight would beat the\n // member's historical best, unless they've manually overridden the switch\n // for this exercise.\n const weightNum = numOrUndef(logForm.weight) ?? 0;\n const repsNum = numOrUndef(logForm.reps) ?? 0;\n const autoPredictedPR =\n logForm.exerciseName.trim().length > 0 && beatsBest(weightNum, repsNum, bestSet.data);\n const effectiveIsPersonalRecord = prTouched ? logForm.isPersonalRecord : autoPredictedPR;\n\n if (!id) {\n return (\n <PageLayout title={t('mybodyshield.pages.sessionDetail.title', 'Workout session')}>\n <ErrorView\n message={t(\n 'mybodyshield.pages.sessionDetail.noSessionSpecified',\n 'No session was specified.'\n )}\n onRetry={() => navigateTo('train')}\n />\n </PageLayout>\n );\n }\n\n if (session.isLoading) {\n return (\n <PageLayout title={t('mybodyshield.pages.sessionDetail.title', 'Workout session')}>\n <LoadingView label={t('mybodyshield.pages.sessionDetail.loading', 'Loading session…')} />\n </PageLayout>\n );\n }\n\n if (session.isError || !data) {\n return (\n <PageLayout title={t('mybodyshield.pages.sessionDetail.title', 'Workout session')}>\n <ErrorView\n title={t('mybodyshield.pages.sessionDetail.notFound', 'Session not found')}\n message={t(\n 'mybodyshield.pages.sessionDetail.notFoundDescription',\n \"This workout session may have been removed, or you don't have access to it.\"\n )}\n onRetry={() => session.refetch()}\n />\n </PageLayout>\n );\n }\n\n const isLive = data.status === 'IN_PROGRESS';\n\n const summary = data.completedAt\n ? t('mybodyshield.pages.sessionDetail.completedAgo', 'Completed {{time}}', {\n time: formatRelativeTime(data.completedAt),\n })\n : data.startedAt\n ? t('mybodyshield.pages.sessionDetail.startedAgo', 'Started {{time}}', {\n time: formatRelativeTime(data.startedAt),\n })\n : data.scheduledFor\n ? t('mybodyshield.pages.sessionDetail.scheduledAgo', 'Scheduled {{time}}', {\n time: formatRelativeTime(data.scheduledFor),\n })\n : t('mybodyshield.pages.sessionDetail.createdAgo', 'Created {{time}}', {\n time: formatRelativeTime(data.createdAt),\n });\n\n const openLog = () => {\n setLogForm(EMPTY_LOG_FORM);\n setLogError(null);\n setPrTouched(false);\n setLogOpen(true);\n };\n\n /** Guided-stepper quick action: pre-fill the log dialog from a planned exercise. */\n const openLogForExercise = (exercise: MybExercise) => {\n const alreadyLogged = loggedCountByExercise.get(exercise.name) ?? 0;\n setLogForm({\n ...EMPTY_LOG_FORM,\n exerciseName: exercise.name,\n setNumber: String(alreadyLogged + 1),\n reps: exercise.reps > 0 ? String(exercise.reps) : '',\n weight: exercise.targetWeight > 0 ? String(exercise.targetWeight) : '',\n });\n setLogError(null);\n setPrTouched(false);\n setLogOpen(true);\n };\n\n const submitLog = async () => {\n setLogError(null);\n const exerciseName = logForm.exerciseName.trim();\n if (!exerciseName) {\n setLogError(\n t('mybodyshield.pages.sessionDetail.exerciseNameRequired', 'Exercise name is required.')\n );\n return;\n }\n const input = {\n exerciseName,\n setNumber: numOrUndef(logForm.setNumber),\n reps: numOrUndef(logForm.reps),\n weight: numOrUndef(logForm.weight),\n distanceM: numOrUndef(logForm.distanceM),\n durationSec: numOrUndef(logForm.durationSec),\n isPersonalRecord: effectiveIsPersonalRecord,\n };\n const advanceForm = (nextSetNumber: number) => {\n setLogForm({ ...EMPTY_LOG_FORM, exerciseName, setNumber: String(nextSetNumber) });\n setPrTouched(false);\n const restSeconds =\n activeExercise && activeExercise.name === exerciseName && activeExercise.restSeconds > 0\n ? activeExercise.restSeconds\n : DEFAULT_REST_SECONDS;\n setRestEndsAt(Date.now() + restSeconds * 1000);\n setRestRemaining(restSeconds);\n };\n // BOFF-4219: log offline-first — don't even attempt the network round-trip\n // when we already know we're offline, so the set is captured instantly.\n if (!offlineSync.isOnline) {\n await offlineSync.enqueueLogSet(id, input);\n refreshPendingForSession();\n advanceForm((numOrUndef(logForm.setNumber) ?? sets.length) + 1);\n return;\n }\n try {\n const created = await logSet.mutateAsync({ sessionId: id, ...input });\n advanceForm(created.setNumber + 1);\n } catch (e) {\n if (isLikelyOffline(e)) {\n await offlineSync.enqueueLogSet(id, input);\n refreshPendingForSession();\n advanceForm((numOrUndef(logForm.setNumber) ?? sets.length) + 1);\n return;\n }\n setLogError(\n e instanceof Error\n ? e.message\n : t('mybodyshield.pages.sessionDetail.failedToLogSet', 'Failed to log the set.')\n );\n }\n };\n\n const openComplete = () => {\n setCompleteForm(EMPTY_COMPLETE_FORM);\n setCompleteError(null);\n setCompleteOpen(true);\n };\n\n const submitComplete = async () => {\n setCompleteError(null);\n const input = {\n caloriesBurned: numOrUndef(completeForm.caloriesBurned),\n perceivedExertion: numOrUndef(completeForm.perceivedExertion),\n notes: completeForm.notes.trim() ? completeForm.notes.trim() : undefined,\n };\n if (!offlineSync.isOnline) {\n await offlineSync.enqueueCompleteSession(id, input);\n refreshPendingForSession();\n setCompleteOpen(false);\n return;\n }\n try {\n await completeSession.mutateAsync({ id, input });\n setCompleteOpen(false);\n } catch (e) {\n if (isLikelyOffline(e)) {\n await offlineSync.enqueueCompleteSession(id, input);\n refreshPendingForSession();\n setCompleteOpen(false);\n return;\n }\n setCompleteError(\n e instanceof Error\n ? e.message\n : t(\n 'mybodyshield.pages.sessionDetail.failedToComplete',\n 'Failed to complete the session.'\n )\n );\n }\n };\n\n const actions = isLive ? (\n <>\n <Button variant=\"outline\" onClick={openLog}>\n <Plus className=\"h-4 w-4\" /> {t('mybodyshield.pages.sessionDetail.logSet', 'Log set')}\n </Button>\n <Button onClick={openComplete} disabled={pendingComplete}>\n <CheckCircle2 className=\"h-4 w-4\" />{' '}\n {pendingComplete\n ? t('mybodyshield.pages.sessionDetail.pendingSync', 'Pending sync…')\n : t('mybodyshield.pages.sessionDetail.complete', 'Complete')}\n </Button>\n </>\n ) : undefined;\n\n return (\n <PageLayout\n title={t('mybodyshield.pages.sessionDetail.title', 'Workout session')}\n description={summary}\n actions={actions}\n >\n <button\n type=\"button\"\n onClick={() => navigateTo('train')}\n className=\"mb-4 inline-flex items-center gap-1.5 text-sm font-medium text-text-secondary hover:text-text-primary\"\n >\n <ArrowLeft className=\"h-4 w-4\" />{' '}\n {t('mybodyshield.pages.sessionDetail.backToSessions', 'Back to sessions')}\n </button>\n\n {/* BOFF-4219: offline queue status — only shown when it's relevant, so\n nothing changes for a member who never leaves connectivity. */}\n {(!offlineSync.isOnline || pendingActions.length > 0) && (\n <div className=\"mb-4 flex items-center gap-2 rounded-xl border border-status-warning-text/40 bg-status-warning-bg-subtle px-4 py-2.5 text-sm text-text-primary\">\n <WifiOff className=\"h-4 w-4 shrink-0 text-status-warning-text\" />\n <span>\n {!offlineSync.isOnline\n ? t(\n 'mybodyshield.pages.sessionDetail.offlineBanner',\n \"You're offline — logged sets and completion will sync automatically once you're back online{{queue}}.\",\n {\n queue:\n pendingActions.length > 0\n ? ` (${pendingActions.length} ${t(\n 'mybodyshield.pages.sessionDetail.queued',\n 'queued'\n )})`\n : '',\n }\n )\n : t(\n 'mybodyshield.pages.sessionDetail.syncingBanner',\n 'Syncing {{count}} queued {{actions}}…',\n {\n count: pendingActions.length,\n actions: t(\n pendingActions.length === 1\n ? 'mybodyshield.pages.sessionDetail.action'\n : 'mybodyshield.pages.sessionDetail.actions',\n pendingActions.length === 1 ? 'action' : 'actions'\n ),\n }\n )}\n </span>\n {offlineSync.isOnline && pendingActions.length > 0 && (\n <Button\n variant=\"ghost\"\n onClick={offlineSync.syncNow}\n className=\"ml-auto h-7 px-2 text-xs\"\n >\n {t('mybodyshield.pages.sessionDetail.retryNow', 'Retry now')}\n </Button>\n )}\n </div>\n )}\n\n {/* Header card */}\n <motion.div\n initial={reduce ? false : { opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={reduce ? { duration: 0 } : { duration: 0.35, ease: MOTION_EASE }}\n >\n <GlassCard treatment=\"glass\" glow={isLive} className=\"p-6\">\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div className=\"flex items-center gap-3\">\n <IconChip\n icon={isLive ? <Flame className=\"h-5 w-5\" /> : <Dumbbell className=\"h-5 w-5\" />}\n tint={isLive ? 'var(--color-accent-teal)' : 'var(--color-accent-primary)'}\n />\n <div>\n <div className=\"flex items-center gap-2\">\n <StatusBadge status={data.status} />\n </div>\n <p className=\"mt-1 text-sm text-text-secondary\">{summary}</p>\n </div>\n </div>\n </div>\n\n <div className=\"mt-5 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {data.scheduledFor && (\n <div>\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.pages.sessionDetail.scheduledFor', 'Scheduled for')}\n </p>\n <p className=\"mt-0.5 text-sm font-medium text-text-primary\">\n {formatDateTime(data.scheduledFor)}\n </p>\n </div>\n )}\n {data.startedAt && (\n <div>\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.pages.sessionDetail.started', 'Started')}\n </p>\n <p className=\"mt-0.5 text-sm font-medium text-text-primary\">\n {formatDateTime(data.startedAt)}\n </p>\n </div>\n )}\n {data.completedAt && (\n <div>\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.pages.sessionDetail.completed', 'Completed')}\n </p>\n <p className=\"mt-0.5 text-sm font-medium text-text-primary\">\n {formatDateTime(data.completedAt)}\n </p>\n </div>\n )}\n {data.perceivedExertion != null && (\n <div>\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.pages.sessionDetail.perceivedExertion', 'Perceived exertion')}\n </p>\n <p className=\"mt-0.5 text-sm font-medium tabular-nums text-text-primary\">\n {t('mybodyshield.pages.sessionDetail.rpeValue', '{{rpe}}/10 RPE', {\n rpe: data.perceivedExertion,\n })}\n </p>\n </div>\n )}\n {data.caloriesBurned > 0 && (\n <div>\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.pages.sessionDetail.caloriesBurned', 'Calories burned')}\n </p>\n <p className=\"mt-0.5 text-sm font-medium tabular-nums text-text-primary\">\n {formatKcal(data.caloriesBurned)}\n </p>\n </div>\n )}\n </div>\n\n {data.notes && (\n <div className=\"mt-5 rounded-xl bg-bg-sunken/60 p-4\">\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.common.notes', 'Notes')}\n </p>\n <p className=\"mt-1 whitespace-pre-wrap text-sm text-text-secondary\">{data.notes}</p>\n </div>\n )}\n </GlassCard>\n </motion.div>\n\n {/* Rest timer — appears after a set is logged, counts down to the next one */}\n {isLive && restRemaining > 0 && (\n <motion.div\n initial={reduce ? false : { opacity: 0, y: -6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={reduce ? { duration: 0 } : { duration: 0.25, ease: MOTION_EASE }}\n className=\"mt-4\"\n >\n <GlassCard\n treatment=\"plain\"\n className=\"flex flex-wrap items-center justify-between gap-3 border border-accent/30 bg-accent/5 p-4\"\n >\n <div className=\"flex items-center gap-2.5\">\n <IconChip icon={<Timer className=\"h-4 w-4\" />} tint=\"var(--color-accent-teal)\" />\n <div>\n <p className=\"text-sm font-semibold text-text-primary\">\n {t('mybodyshield.pages.sessionDetail.resting', 'Resting')}\n </p>\n <p className=\"text-xs tabular-nums text-text-secondary\">\n {t('mybodyshield.pages.sessionDetail.remaining', '{{time}} remaining', {\n time: formatDuration(restRemaining),\n })}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setRestEndsAt((prev) => (prev ? prev + 15_000 : prev));\n setRestRemaining((r) => r + 15);\n }}\n >\n {t('mybodyshield.pages.sessionDetail.add15s', '+15s')}\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n setRestEndsAt(null);\n setRestRemaining(0);\n }}\n >\n <X className=\"h-4 w-4\" /> {t('mybodyshield.pages.sessionDetail.skipRest', 'Skip')}\n </Button>\n </div>\n </GlassCard>\n </motion.div>\n )}\n\n {/* Guided next-exercise stepper — only for sessions tied to a planned workout */}\n {isLive && exercises.length > 0 && (\n <motion.div\n initial={reduce ? false : { opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={reduce ? { duration: 0 } : { duration: 0.35, ease: MOTION_EASE, delay: 0.05 }}\n className=\"mt-4\"\n >\n <GlassCard treatment=\"plain\" className=\"p-4\">\n <div className=\"mb-3 flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2.5\">\n <IconChip icon={<ListChecks className=\"h-4 w-4\" />} />\n <div>\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {t('mybodyshield.pages.sessionDetail.guidedWorkout', 'Guided workout')}\n </h3>\n <p className=\"text-xs text-text-secondary\">\n {allExercisesDone\n ? t(\n 'mybodyshield.pages.sessionDetail.allExercisesDone',\n 'All planned exercises logged — nice work.'\n )\n : t(\n 'mybodyshield.pages.sessionDetail.exerciseProgress',\n 'Exercise {{current}} of {{total}}',\n {\n current: activeExerciseIdx + 1,\n total: exercises.length,\n }\n )}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-1.5\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setManualExerciseIdx(Math.max(activeExerciseIdx - 1, 0))}\n disabled={activeExerciseIdx === 0}\n aria-label={t(\n 'mybodyshield.pages.sessionDetail.previousExercise',\n 'Previous exercise'\n )}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() =>\n setManualExerciseIdx(Math.min(activeExerciseIdx + 1, exercises.length - 1))\n }\n disabled={activeExerciseIdx >= exercises.length - 1}\n aria-label={t('mybodyshield.pages.sessionDetail.nextExercise', 'Next exercise')}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n\n {activeExercise && (\n <div className=\"flex flex-wrap items-center justify-between gap-3 rounded-xl bg-bg-sunken/60 p-3\">\n <div>\n <p className=\"text-sm font-semibold text-text-primary\">{activeExercise.name}</p>\n <p className=\"mt-0.5 text-xs text-text-secondary\">\n {formatEnumLabel(activeExercise.muscleGroup)} · {activeExercise.sets} ×{' '}\n {activeExercise.reps} {t('mybodyshield.pages.sessionDetail.reps', 'reps')}\n {activeExercise.targetWeight > 0\n ? ` @ ${formatWeight(activeExercise.targetWeight)}`\n : ''}\n {activeExercise.restSeconds > 0\n ? ` · ${formatDuration(activeExercise.restSeconds)} ${t(\n 'mybodyshield.pages.sessionDetail.rest',\n 'rest'\n )}`\n : ''}\n </p>\n <p className=\"mt-0.5 text-xs tabular-nums text-text-tertiary\">\n {loggedCountByExercise.get(activeExercise.name) ?? 0}{' '}\n {t('mybodyshield.pages.sessionDetail.ofSets', 'of')}{' '}\n {Math.max(activeExercise.sets, 1)}{' '}\n {t('mybodyshield.pages.sessionDetail.setsLogged', 'sets logged')}\n </p>\n </div>\n <Button size=\"sm\" onClick={() => openLogForExercise(activeExercise)}>\n <Plus className=\"h-4 w-4\" />{' '}\n {t('mybodyshield.pages.sessionDetail.logThisExercise', 'Log this exercise')}\n </Button>\n </div>\n )}\n </GlassCard>\n </motion.div>\n )}\n\n {/* Stat cards */}\n <motion.div\n className=\"mt-6 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\"\n variants={reduce ? undefined : STAGGER_CONTAINER}\n initial={reduce ? false : 'hidden'}\n animate=\"show\"\n >\n <motion.div variants={reduce ? undefined : RISE_ITEM}>\n <MetricsCard\n icon={\n <span className=\"text-action-primary-bg\">\n <Dumbbell className=\"h-5 w-5\" />\n </span>\n }\n value={formatNumber(sets.length)}\n label={t(\n sets.length === 1\n ? 'mybodyshield.pages.sessionDetail.totalSet'\n : 'mybodyshield.pages.sessionDetail.totalSets',\n sets.length === 1 ? 'Total set' : 'Total sets'\n )}\n />\n </motion.div>\n <motion.div variants={reduce ? undefined : RISE_ITEM}>\n <MetricsCard\n icon={\n <span className=\"text-action-primary-bg\">\n <Weight className=\"h-5 w-5\" />\n </span>\n }\n value={t('mybodyshield.pages.sessionDetail.volumeKg', '{{volume}} kg', {\n volume: formatNumber(totalVolume),\n })}\n label={t('mybodyshield.pages.sessionDetail.totalVolume', 'Total volume')}\n />\n </motion.div>\n <motion.div variants={reduce ? undefined : RISE_ITEM}>\n <MetricsCard\n icon={\n <span className=\"text-action-primary-bg\">\n <Timer className=\"h-5 w-5\" />\n </span>\n }\n value={durationSec != null ? formatDuration(durationSec) : '—'}\n label={t('mybodyshield.pages.sessionDetail.duration', 'Duration')}\n />\n </motion.div>\n <motion.div variants={reduce ? undefined : RISE_ITEM}>\n <MetricsCard\n icon={\n <span className=\"text-action-primary-bg\">\n <Flame className=\"h-5 w-5\" />\n </span>\n }\n value={data.caloriesBurned > 0 ? formatKcal(data.caloriesBurned) : '—'}\n label={t('mybodyshield.pages.sessionDetail.caloriesBurned', 'Calories burned')}\n />\n </motion.div>\n </motion.div>\n\n {/* Logged sets */}\n <div className=\"mt-8\">\n <div className=\"mb-3 flex items-end justify-between gap-3\">\n <div>\n <h2 className=\"text-base font-semibold text-text-primary\">\n {t('mybodyshield.pages.sessionDetail.loggedSets', 'Logged sets')}\n </h2>\n <p className=\"mt-0.5 text-sm text-text-secondary\">\n {t(\n 'mybodyshield.pages.sessionDetail.loggedSetsDescription',\n 'Every set recorded during this session, grouped by exercise.'\n )}\n </p>\n </div>\n {isLive && (\n <Button variant=\"outline\" size=\"sm\" onClick={openLog} className=\"shrink-0\">\n <Plus className=\"h-4 w-4\" /> {t('mybodyshield.pages.sessionDetail.logSet', 'Log set')}\n </Button>\n )}\n </div>\n\n {groups.length === 0 ? (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Dumbbell className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.sessionDetail.noSetsLogged', 'No sets logged yet')}\n description={t(\n isLive\n ? 'mybodyshield.pages.sessionDetail.noSetsLoggedLive'\n : 'mybodyshield.pages.sessionDetail.noSetsLoggedReadonly',\n isLive\n ? 'Log your first set to start tracking this workout.'\n : 'No sets were recorded for this session.'\n )}\n action={\n isLive ? (\n <Button onClick={openLog}>\n <Plus className=\"h-4 w-4\" />{' '}\n {t('mybodyshield.pages.sessionDetail.logSet', 'Log set')}\n </Button>\n ) : undefined\n }\n />\n ) : (\n <motion.div\n className=\"space-y-4\"\n variants={reduce ? undefined : STAGGER_CONTAINER}\n initial={reduce ? false : 'hidden'}\n animate=\"show\"\n >\n {groups.map((group) => {\n const prCount = group.sets.filter((st) => st.isPersonalRecord).length;\n return (\n <motion.div key={group.name} variants={reduce ? undefined : RISE_ITEM}>\n <GlassCard treatment=\"plain\" className=\"p-4 transition-shadow hover:shadow-float\">\n <div className=\"mb-3 flex items-center justify-between gap-2\">\n <div className=\"flex min-w-0 items-center gap-2.5\">\n <IconChip icon={<Dumbbell className=\"h-4 w-4\" />} />\n <h3 className=\"truncate text-sm font-semibold text-text-primary\">\n {group.name}\n </h3>\n {prCount > 0 && (\n <span className=\"inline-flex items-center rounded-full bg-status-success-bg-subtle px-2 py-0.5 text-[11px] font-semibold text-status-success-text shadow-[0_0_0_3px_color-mix(in_oklab,var(--color-status-success-text)_14%,transparent)]\">\n {prCount}{' '}\n {t(\n prCount === 1\n ? 'mybodyshield.pages.sessionDetail.prSingular'\n : 'mybodyshield.pages.sessionDetail.prPlural',\n prCount === 1 ? 'PR' : 'PRs'\n )}\n </span>\n )}\n </div>\n <span className=\"shrink-0 text-xs tabular-nums text-text-tertiary\">\n {formatNumber(group.sets.length)}{' '}\n {t(\n group.sets.length === 1\n ? 'mybodyshield.pages.sessionDetail.set'\n : 'mybodyshield.pages.sessionDetail.sets',\n group.sets.length === 1 ? 'set' : 'sets'\n )}\n </span>\n </div>\n <ul className=\"divide-y divide-border-seam\">\n {group.sets.map((st) => {\n const isCardio = st.durationSec > 0 || st.distanceM > 0;\n return (\n <li\n key={st.id}\n className={\n 'flex flex-wrap items-center justify-between gap-2 rounded-lg px-2 py-2 transition-colors' +\n (st.isPersonalRecord\n ? ' bg-[color-mix(in_oklab,var(--color-status-success-text)_9%,transparent)]'\n : ' hover:bg-bg-sunken/40')\n }\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium text-text-primary tabular-nums\">\n {t(\n 'mybodyshield.pages.sessionDetail.setRow',\n 'Set {{number}}: {{reps}} × {{weight}}',\n {\n number: st.setNumber,\n reps: formatNumber(st.reps),\n weight: formatWeight(st.weight),\n }\n )}\n </span>\n {st.isPersonalRecord && (\n <span className=\"inline-flex rounded-full shadow-[0_0_0_3px_color-mix(in_oklab,var(--color-status-success-text)_16%,transparent)]\">\n <StatusBadge status=\"PR\" />\n </span>\n )}\n </div>\n <div className=\"flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-text-secondary\">\n {isCardio && st.durationSec > 0 && (\n <span className=\"inline-flex items-center gap-1 tabular-nums\">\n <Timer className=\"h-3.5 w-3.5 text-accent\" />\n {formatDuration(st.durationSec)}\n </span>\n )}\n {isCardio && st.distanceM > 0 && (\n <span className=\"inline-flex items-center gap-1 tabular-nums\">\n <Ruler className=\"h-3.5 w-3.5 text-accent\" />\n {t(\n 'mybodyshield.pages.sessionDetail.distanceM',\n '{{distance}} m',\n {\n distance: formatNumber(st.distanceM),\n }\n )}\n </span>\n )}\n </div>\n </li>\n );\n })}\n </ul>\n </GlassCard>\n </motion.div>\n );\n })}\n </motion.div>\n )}\n </div>\n\n {/* Coach feedback / discussion — available for any session */}\n <div className=\"mt-8\">\n <MybDiscussion\n entityType=\"mybodyshield-session\"\n entityId={data.id}\n title={t('mybodyshield.pages.sessionDetail.coachFeedback', 'Coach feedback')}\n description={t(\n 'mybodyshield.pages.sessionDetail.coachFeedbackDescription',\n \"Discuss form, cues and this session's results with your coach and team.\"\n )}\n />\n </div>\n\n {/* Log set dialog */}\n <ResponsiveDialog open={logOpen} onOpenChange={setLogOpen}>\n <ResponsiveDialogContent>\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>\n {t('mybodyshield.pages.sessionDetail.logSetDialogTitle', 'Log a set')}\n </ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n {t(\n 'mybodyshield.pages.sessionDetail.logSetDialogDescription',\n 'Record reps and load for strength work, or duration and distance for cardio. The dialog stays open so you can log sets back-to-back.'\n )}\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"space-y-4 px-1\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-set-exercise\">\n {t('mybodyshield.pages.sessionDetail.exerciseLabel', 'Exercise')}\n </Label>\n <Input\n id=\"myb-set-exercise\"\n value={logForm.exerciseName}\n onChange={(e) => {\n const exerciseName = e.target.value;\n setLogForm((f) => ({ ...f, exerciseName }));\n // A different exercise has a different history — let auto-PR\n // detection recompute fresh instead of keeping a stale override.\n setPrTouched(false);\n }}\n placeholder={t(\n 'mybodyshield.pages.sessionDetail.exercisePlaceholder',\n 'e.g. Back Squat'\n )}\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-set-number\">\n {t('mybodyshield.pages.sessionDetail.setNumberLabel', 'Set number')}\n </Label>\n <Input\n id=\"myb-set-number\"\n type=\"number\"\n inputMode=\"numeric\"\n min={1}\n value={logForm.setNumber}\n onChange={(e) => setLogForm((f) => ({ ...f, setNumber: e.target.value }))}\n placeholder={t('mybodyshield.pages.sessionDetail.setNumberPlaceholder', '1')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-set-reps\">\n {t('mybodyshield.pages.sessionDetail.repsLabel', 'Reps')}\n </Label>\n <Input\n id=\"myb-set-reps\"\n type=\"number\"\n inputMode=\"numeric\"\n min={0}\n value={logForm.reps}\n onChange={(e) => setLogForm((f) => ({ ...f, reps: e.target.value }))}\n placeholder={t('mybodyshield.pages.sessionDetail.repsPlaceholder', '8')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-set-weight\">\n {t('mybodyshield.pages.sessionDetail.weightLabel', 'Weight (kg)')}\n </Label>\n <Input\n id=\"myb-set-weight\"\n type=\"number\"\n inputMode=\"decimal\"\n min={0}\n step=\"0.5\"\n value={logForm.weight}\n onChange={(e) => setLogForm((f) => ({ ...f, weight: e.target.value }))}\n placeholder={t('mybodyshield.pages.sessionDetail.weightPlaceholder', '60')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-set-distance\">\n {t('mybodyshield.pages.sessionDetail.distanceLabel', 'Distance (m)')}\n </Label>\n <Input\n id=\"myb-set-distance\"\n type=\"number\"\n inputMode=\"numeric\"\n min={0}\n value={logForm.distanceM}\n onChange={(e) => setLogForm((f) => ({ ...f, distanceM: e.target.value }))}\n placeholder={t(\n 'mybodyshield.pages.sessionDetail.optionalPlaceholder',\n 'Optional'\n )}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-set-duration\">\n {t('mybodyshield.pages.sessionDetail.durationLabel', 'Duration (sec)')}\n </Label>\n <Input\n id=\"myb-set-duration\"\n type=\"number\"\n inputMode=\"numeric\"\n min={0}\n value={logForm.durationSec}\n onChange={(e) => setLogForm((f) => ({ ...f, durationSec: e.target.value }))}\n placeholder={t(\n 'mybodyshield.pages.sessionDetail.optionalPlaceholder',\n 'Optional'\n )}\n />\n </div>\n </div>\n\n <div className=\"flex items-center justify-between gap-3 rounded-xl bg-bg-sunken/60 p-3\">\n <div className=\"flex items-center gap-2\">\n {effectiveIsPersonalRecord ? (\n <Trophy className=\"h-4 w-4 text-status-success-text\" />\n ) : (\n <Gauge className=\"h-4 w-4 text-accent\" />\n )}\n <div>\n <Label htmlFor=\"myb-set-pr\" className=\"cursor-pointer\">\n {t('mybodyshield.pages.sessionDetail.personalRecord', 'Personal record')}\n </Label>\n <p className=\"text-xs text-text-tertiary\">\n {bestSet.data\n ? t(\n 'mybodyshield.pages.sessionDetail.prAutoDetected',\n 'Auto-detected against your best: {{reps}} × {{weight}}.',\n {\n reps: formatNumber(bestSet.data.reps),\n weight: formatWeight(bestSet.data.weight),\n }\n )\n : logForm.exerciseName.trim()\n ? t(\n 'mybodyshield.pages.sessionDetail.prFirstTime',\n 'First time logging this exercise — nothing to compare yet.'\n )\n : t(\n 'mybodyshield.pages.sessionDetail.prFlagHint',\n 'Flag this set as a new PR.'\n )}\n </p>\n </div>\n </div>\n <Switch\n id=\"myb-set-pr\"\n checked={effectiveIsPersonalRecord}\n onCheckedChange={(v) => {\n setPrTouched(true);\n setLogForm((f) => ({ ...f, isPersonalRecord: v }));\n }}\n />\n </div>\n\n {logError && <p className=\"text-sm text-status-error-text\">{logError}</p>}\n </div>\n\n <ResponsiveDialogFooter>\n <Button variant=\"outline\" onClick={() => setLogOpen(false)}>\n {t('mybodyshield.common.close', 'Close')}\n </Button>\n <Button onClick={submitLog} disabled={logSet.isPending}>\n {logSet.isPending\n ? t('mybodyshield.common.logging', 'Logging…')\n : t('mybodyshield.pages.sessionDetail.logSet', 'Log set')}\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n\n {/* Complete session dialog */}\n <ResponsiveDialog open={completeOpen} onOpenChange={setCompleteOpen}>\n <ResponsiveDialogContent>\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>\n {t('mybodyshield.pages.sessionDetail.completeDialogTitle', 'Complete session')}\n </ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n {t(\n 'mybodyshield.pages.sessionDetail.completeDialogDescription',\n 'Wrap up this workout and record how it went.'\n )}\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"space-y-4 px-1\">\n {sets.length === 0 && (\n <div className=\"flex items-start gap-2.5 rounded-xl border border-status-warning-text/40 bg-status-warning-bg-subtle p-3\">\n <AlertTriangle className=\"mt-0.5 h-4 w-4 shrink-0 text-status-warning-text\" />\n <p className=\"text-sm text-text-secondary\">\n <span className=\"font-medium text-text-primary\">\n {t('mybodyshield.pages.sessionDetail.noSetsWarning', 'No sets logged.')}\n </span>{' '}\n {t(\n 'mybodyshield.pages.sessionDetail.noSetsWarningDetail',\n 'You can still complete this session, but nothing was recorded for it.'\n )}\n </p>\n </div>\n )}\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-complete-calories\">\n {t('mybodyshield.pages.sessionDetail.caloriesBurned', 'Calories burned')}\n </Label>\n <Input\n id=\"myb-complete-calories\"\n type=\"number\"\n inputMode=\"numeric\"\n min={0}\n value={completeForm.caloriesBurned}\n onChange={(e) =>\n setCompleteForm((f) => ({ ...f, caloriesBurned: e.target.value }))\n }\n placeholder={t(\n 'mybodyshield.pages.sessionDetail.optionalPlaceholder',\n 'Optional'\n )}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-complete-rpe\">\n {t('mybodyshield.pages.sessionDetail.rpeLabel', 'Perceived exertion (1–10)')}\n </Label>\n <Input\n id=\"myb-complete-rpe\"\n type=\"number\"\n inputMode=\"numeric\"\n min={1}\n max={10}\n value={completeForm.perceivedExertion}\n onChange={(e) =>\n setCompleteForm((f) => ({ ...f, perceivedExertion: e.target.value }))\n }\n placeholder={t(\n 'mybodyshield.pages.sessionDetail.optionalPlaceholder',\n 'Optional'\n )}\n />\n </div>\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-complete-notes\">{t('mybodyshield.common.notes', 'Notes')}</Label>\n <Textarea\n id=\"myb-complete-notes\"\n rows={3}\n value={completeForm.notes}\n onChange={(e) => setCompleteForm((f) => ({ ...f, notes: e.target.value }))}\n placeholder={t(\n 'mybodyshield.pages.sessionDetail.completeNotesPlaceholder',\n 'How did the session feel?'\n )}\n />\n </div>\n\n {completeError && <p className=\"text-sm text-status-error-text\">{completeError}</p>}\n </div>\n\n <ResponsiveDialogFooter>\n <Button variant=\"outline\" onClick={() => setCompleteOpen(false)}>\n {t('mybodyshield.common.cancel', 'Cancel')}\n </Button>\n <Button onClick={submitComplete} disabled={completeSession.isPending}>\n {completeSession.isPending\n ? t('mybodyshield.common.completing', 'Completing…')\n : t('mybodyshield.pages.sessionDetail.completeSession', 'Complete session')}\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SessionDetailPage.js","names":["_Fragment","Fragment$1","isLikelyOffline","err","msg","pendingActionToDisplaySet","input","action","DEFAULT_REST_SECONDS","NO_EXERCISES","beatsBest","best","weight","reps","MOTION_EASE","STAGGER_CONTAINER","RISE_ITEM","numOrUndef","trimmed","value","EMPTY_LOG_FORM","EMPTY_COMPLETE_FORM","SessionDetailPage","t","useTr","useMyBodyShield","reduce","useReducedMotion","useParams","session","useMybSession","id","logSet","useMybLogSet","completeSession","useMybCompleteSession","exercisesQuery","useMybWorkoutExercises","offlineSync","useOfflineSessionSync","vars","pendingActions","setPendingActions","useState","refreshPendingForSession","useCallback","listPendingActionsForSession","pendingSets","useMemo","a","pendingComplete","logOpen","setLogOpen","logForm","setLogForm","logError","setLogError","prTouched","setPrTouched","completeOpen","setCompleteOpen","completeForm","setCompleteForm","completeError","setCompleteError","manualExerciseIdx","setManualExerciseIdx","prevWorkoutId","setPrevWorkoutId","restEndsAt","setRestEndsAt","restRemaining","setRestRemaining","bestSet","useMybExerciseBestSet","data","sets","groups","map","st","arr","name","list","b","totalVolume","acc","startedAt","completedAt","durationSec","start","end","exercises","loggedCountByExercise","g","autoExerciseIdx","idx","ex","activeExerciseIdx","activeExercise","allExercisesDone","useEffect","interval","remaining","weightNum","repsNum","autoPredictedPR","effectiveIsPersonalRecord","PageLayout","ErrorView","navigateTo","LoadingView","isLive","summary","formatRelativeTime","openLog","openLogForExercise","alreadyLogged","exercise","submitLog","exerciseName","advanceForm","nextSetNumber","restSeconds","openComplete","submitComplete","e","actions","Button","Plus","CheckCircle2","ArrowLeft","WifiOff","motion","GlassCard","IconChip","jsx","Flame","Dumbbell","StatusBadge","formatDateTime","formatKcal","Timer","formatDuration","prev","r","X","ListChecks","ChevronLeft","ChevronRight","formatEnumLabel","formatWeight","MetricsCard","formatNumber","Weight","EmptyState","prCount","group","isCardio","Ruler","MybDiscussion","ResponsiveDialog","ResponsiveDialogContent","ResponsiveDialogHeader","ResponsiveDialogTitle","ResponsiveDialogDescription","Label","Input","f","Trophy","Gauge","Switch","v","ResponsiveDialogFooter","AlertTriangle","Textarea"],"sources":["../../../../src/mybodyshield/pages/train/SessionDetailPage.tsx"],"sourcesContent":["/**\n * Train — workout session detail & live logging.\n * @module mybodyshield/pages/train\n *\n * Renders a single workout session (real `mybSession`, including its `sets`).\n * While a session is IN_PROGRESS you can log sets and complete it; completed /\n * scheduled sessions render read-only. Sets are grouped by exercise. No mock\n * data — everything comes from the myb* hooks.\n */\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { motion, useReducedMotion } from 'framer-motion';\nimport { useParams } from 'react-router';\nimport {\n ArrowLeft,\n Plus,\n CheckCircle2,\n Dumbbell,\n Weight,\n Timer,\n Flame,\n Ruler,\n Gauge,\n AlertTriangle,\n ChevronLeft,\n ChevronRight,\n ListChecks,\n Trophy,\n WifiOff,\n X,\n} from 'lucide-react';\nimport {\n Button,\n GlassCard,\n Label,\n Input,\n Textarea,\n Switch,\n ResponsiveDialog,\n ResponsiveDialogContent,\n ResponsiveDialogHeader,\n ResponsiveDialogTitle,\n ResponsiveDialogDescription,\n ResponsiveDialogFooter,\n} from '@burdenoff/fe-libs/ui';\nimport {\n PageLayout,\n MetricsCard,\n StatusBadge,\n EmptyState,\n LoadingView,\n ErrorView,\n MybDiscussion,\n} from '../../components';\nimport { IconChip } from '../_shared/visuals';\nimport { useMyBodyShield } from '../../context';\nimport {\n useMybSession,\n useMybLogSet,\n useMybCompleteSession,\n useMybWorkoutExercises,\n useMybExerciseBestSet,\n useMyBodyShieldAnalytics,\n useTr,\n} from '../../hooks';\nimport {\n listPendingActionsForSession,\n type PendingSessionAction,\n} from '../../lib/offlineSessionQueue';\nimport { useOfflineSessionSync } from '../../lib/useOfflineSessionSync';\nimport {\n formatDateTime,\n formatRelativeTime,\n formatNumber,\n formatWeight,\n formatKcal,\n formatDuration,\n formatEnumLabel,\n} from '../../utils/formatters';\nimport type { MybSessionSet, MybExercise } from '../../types';\n\n/**\n * Heuristic for \"this failure means we're offline, not that the request was\n * rejected\" (BOFF-4219). `graphqlFetch`'s underlying `fetch()` throws a\n * `TypeError` when the network is unreachable (no HTTP response at all);\n * a real GraphQL/backend error instead resolves with an `errors` array that\n * `mybQuery` turns into a plain `Error` with a server-authored message, so\n * checking `navigator.onLine` first and falling back to the error shape\n * keeps a genuine validation error (e.g. a deleted session) from being\n * mistaken for a connectivity gap and silently queued.\n */\nfunction isLikelyOffline(err: unknown): boolean {\n if (typeof navigator !== 'undefined' && !navigator.onLine) return true;\n if (err instanceof TypeError) return true;\n const msg = err instanceof Error ? err.message.toLowerCase() : '';\n return msg.includes('failed to fetch') || msg.includes('load failed') || msg.includes('network');\n}\n\n/** Render a queued (not-yet-synced) set the same shape as a real MybSessionSet for display. */\nfunction pendingActionToDisplaySet(action: PendingSessionAction, sessionId: string): MybSessionSet {\n const input = action.input as {\n exerciseName: string;\n setNumber?: number | null;\n reps?: number | null;\n weight?: number | null;\n distanceM?: number | null;\n durationSec?: number | null;\n isPersonalRecord?: boolean | null;\n };\n return {\n id: `pending-${action.clientActionId}`,\n workspaceId: '',\n sessionId,\n exerciseName: input.exerciseName,\n setNumber: input.setNumber ?? 1,\n reps: input.reps ?? 0,\n weight: input.weight ?? 0,\n distanceM: input.distanceM ?? 0,\n durationSec: input.durationSec ?? 0,\n isPersonalRecord: Boolean(input.isPersonalRecord),\n createdAt: action.capturedAt,\n updatedAt: action.capturedAt,\n };\n}\n\n/** Rest timer default when a set isn't part of a guided plan exercise. */\nconst DEFAULT_REST_SECONDS = 90;\n\n/** Stable empty-array reference so the \"no plan\" case never changes identity across renders. */\nconst NO_EXERCISES: readonly MybExercise[] = [];\n\n/**\n * Does a newly-logged `weight`/`reps` beat the member's prior best for this\n * exercise? Mirrors the backend's own ranking (weight desc, then reps desc).\n * `null`/`undefined` best (never logged before) is NOT treated as a record —\n * there is nothing yet to break — matching `mybExerciseBestSet`'s contract.\n */\nfunction beatsBest(weight: number, reps: number, best: MybSessionSet | null | undefined): boolean {\n if (!best) return false;\n if (weight > best.weight) return true;\n if (weight === best.weight && reps > best.reps) return true;\n return false;\n}\n\n/** Shared entrance easing — a soft, decelerating cubic-bezier. */\nconst MOTION_EASE: [number, number, number, number] = [0.16, 1, 0.3, 1];\n\n/** Stagger container + rise-in child variants for grouped card entrances. */\nconst STAGGER_CONTAINER = {\n hidden: {},\n show: { transition: { staggerChildren: 0.06 } },\n};\nconst RISE_ITEM = {\n hidden: { opacity: 0, y: 12 },\n show: { opacity: 1, y: 0, transition: { duration: 0.35, ease: MOTION_EASE } },\n};\n\n/** Parse an optional numeric string into a number, or undefined when blank. */\nfunction numOrUndef(value: string): number | undefined {\n const trimmed = value.trim();\n if (!trimmed) return undefined;\n const n = Number(trimmed);\n return Number.isFinite(n) ? n : undefined;\n}\n\ninterface LogSetForm {\n exerciseName: string;\n setNumber: string;\n reps: string;\n weight: string;\n distanceM: string;\n durationSec: string;\n isPersonalRecord: boolean;\n}\n\nconst EMPTY_LOG_FORM: LogSetForm = {\n exerciseName: '',\n setNumber: '',\n reps: '',\n weight: '',\n distanceM: '',\n durationSec: '',\n isPersonalRecord: false,\n};\n\ninterface CompleteForm {\n caloriesBurned: string;\n perceivedExertion: string;\n notes: string;\n}\n\nconst EMPTY_COMPLETE_FORM: CompleteForm = { caloriesBurned: '', perceivedExertion: '', notes: '' };\n\nexport function SessionDetailPage() {\n const t = useTr();\n const { navigateTo, workspaceId } = useMyBodyShield();\n const reduce = useReducedMotion();\n const { id } = useParams<{ id: string }>();\n const analytics = useMyBodyShieldAnalytics();\n\n const session = useMybSession(id);\n const logSet = useMybLogSet();\n const completeSession = useMybCompleteSession();\n const exercisesQuery = useMybWorkoutExercises(session.data?.workoutId ?? undefined);\n\n // BOFF-4219: offline-first queue for logging sets / completing a session\n // that was started while online but hits a connectivity gap mid-workout.\n const offlineSync = useOfflineSessionSync(\n (input) => logSet.mutateAsync(input),\n (vars) => completeSession.mutateAsync(vars),\n () => session.refetch()\n );\n const [pendingActions, setPendingActions] = useState<PendingSessionAction[]>([]);\n const refreshPendingForSession = useCallback(() => {\n if (!id) return;\n void listPendingActionsForSession(id).then(setPendingActions);\n }, [id]);\n useEffect(() => {\n refreshPendingForSession();\n }, [refreshPendingForSession, offlineSync.pendingCount]);\n const pendingSets = useMemo(\n () =>\n id\n ? pendingActions\n .filter((a) => a.type === 'LOG_SET')\n .map((a) => pendingActionToDisplaySet(a, id))\n : [],\n [pendingActions, id]\n );\n const pendingComplete = pendingActions.some((a) => a.type === 'COMPLETE_SESSION');\n\n const [logOpen, setLogOpen] = useState(false);\n const [logForm, setLogForm] = useState<LogSetForm>(EMPTY_LOG_FORM);\n const [logError, setLogError] = useState<string | null>(null);\n const [prTouched, setPrTouched] = useState(false);\n\n const [completeOpen, setCompleteOpen] = useState(false);\n const [completeForm, setCompleteForm] = useState<CompleteForm>(EMPTY_COMPLETE_FORM);\n const [completeError, setCompleteError] = useState<string | null>(null);\n\n // Guided next-exercise stepper (BOFF-4096): `null` means \"auto-follow\" —\n // the active step tracks the first not-yet-fully-logged planned exercise;\n // an explicit index means the member manually paged away from that.\n const [manualExerciseIdx, setManualExerciseIdx] = useState<number | null>(null);\n const [prevWorkoutId, setPrevWorkoutId] = useState<string | null | undefined>(\n session.data?.workoutId\n );\n\n // Rest timer (BOFF-4096): a wall-clock deadline rather than a plain\n // countdown-in-state, so the remaining time stays correct even if the tab\n // was backgrounded and the 1s interval was throttled/paused.\n const [restEndsAt, setRestEndsAt] = useState<number | null>(null);\n const [restRemaining, setRestRemaining] = useState(0);\n\n const bestSet = useMybExerciseBestSet(logForm.exerciseName);\n\n const data = session.data;\n // BOFF-4219: sets queued offline aren't in the server-fetched `data.sets`\n // yet — merge them in so a member sees what they logged immediately,\n // even before the queue has had a chance to sync.\n const sets = useMemo<MybSessionSet[]>(\n () => [...(data?.sets ?? []), ...pendingSets],\n [data?.sets, pendingSets]\n );\n\n const groups = useMemo(() => {\n const map = new Map<string, MybSessionSet[]>();\n for (const st of sets) {\n const arr = map.get(st.exerciseName) ?? [];\n arr.push(st);\n map.set(st.exerciseName, arr);\n }\n return Array.from(map.entries()).map(([name, list]) => ({\n name,\n sets: list.slice().sort((a, b) => a.setNumber - b.setNumber),\n }));\n }, [sets]);\n\n const totalVolume = useMemo(() => sets.reduce((acc, st) => acc + st.reps * st.weight, 0), [sets]);\n\n const startedAt = data?.startedAt;\n const completedAt = data?.completedAt;\n const durationSec = useMemo(() => {\n if (!startedAt || !completedAt) return undefined;\n const start = new Date(startedAt).getTime();\n const end = new Date(completedAt).getTime();\n if (!Number.isFinite(start) || !Number.isFinite(end) || end < start) return undefined;\n return (end - start) / 1000;\n }, [startedAt, completedAt]);\n\n const exercises = exercisesQuery.data ?? NO_EXERCISES;\n\n const loggedCountByExercise = useMemo(() => {\n const map = new Map<string, number>();\n for (const g of groups) map.set(g.name, g.sets.length);\n return map;\n }, [groups]);\n\n const autoExerciseIdx = useMemo(() => {\n if (exercises.length === 0) return 0;\n const idx = exercises.findIndex(\n (ex) => (loggedCountByExercise.get(ex.name) ?? 0) < Math.max(ex.sets, 1)\n );\n return idx === -1 ? exercises.length - 1 : idx;\n }, [exercises, loggedCountByExercise]);\n\n const activeExerciseIdx = Math.min(\n manualExerciseIdx ?? autoExerciseIdx,\n Math.max(exercises.length - 1, 0)\n );\n const activeExercise: MybExercise | undefined = exercises[activeExerciseIdx];\n const allExercisesDone =\n exercises.length > 0 &&\n exercises.every((ex) => (loggedCountByExercise.get(ex.name) ?? 0) >= Math.max(ex.sets, 1));\n\n // A different session's plan invalidates any manual stepper override. This\n // adjusts state during render (React's documented alternative to an\n // effect for \"reset state when a prop changes\") rather than an effect, so\n // it never causes the extra reset-then-settle render an effect would.\n if (session.data?.workoutId !== prevWorkoutId) {\n setPrevWorkoutId(session.data?.workoutId);\n setManualExerciseIdx(null);\n }\n\n // Tick the rest-timer countdown against the wall-clock deadline. The\n // effect only *subscribes* to the interval — every state update happens\n // inside the (deferred) tick callback, never synchronously in the effect\n // body itself, so starting/stopping the timer never forces an extra render.\n useEffect(() => {\n if (restEndsAt == null) return;\n const interval = window.setInterval(() => {\n const remaining = Math.max(0, Math.ceil((restEndsAt - Date.now()) / 1000));\n setRestRemaining(remaining);\n if (remaining <= 0) setRestEndsAt(null);\n }, 1000);\n return () => window.clearInterval(interval);\n }, [restEndsAt]);\n\n // Live auto-PR detection (BOFF-4096): derived at render time, not synced\n // via an effect — whether the in-progress reps/weight would beat the\n // member's historical best, unless they've manually overridden the switch\n // for this exercise.\n const weightNum = numOrUndef(logForm.weight) ?? 0;\n const repsNum = numOrUndef(logForm.reps) ?? 0;\n const autoPredictedPR =\n logForm.exerciseName.trim().length > 0 && beatsBest(weightNum, repsNum, bestSet.data);\n const effectiveIsPersonalRecord = prTouched ? logForm.isPersonalRecord : autoPredictedPR;\n\n if (!id) {\n return (\n <PageLayout title={t('mybodyshield.pages.sessionDetail.title', 'Workout session')}>\n <ErrorView\n message={t(\n 'mybodyshield.pages.sessionDetail.noSessionSpecified',\n 'No session was specified.'\n )}\n onRetry={() => navigateTo('train')}\n />\n </PageLayout>\n );\n }\n\n if (session.isLoading) {\n return (\n <PageLayout title={t('mybodyshield.pages.sessionDetail.title', 'Workout session')}>\n <LoadingView label={t('mybodyshield.pages.sessionDetail.loading', 'Loading session…')} />\n </PageLayout>\n );\n }\n\n if (session.isError || !data) {\n return (\n <PageLayout title={t('mybodyshield.pages.sessionDetail.title', 'Workout session')}>\n <ErrorView\n title={t('mybodyshield.pages.sessionDetail.notFound', 'Session not found')}\n message={t(\n 'mybodyshield.pages.sessionDetail.notFoundDescription',\n \"This workout session may have been removed, or you don't have access to it.\"\n )}\n onRetry={() => session.refetch()}\n />\n </PageLayout>\n );\n }\n\n const isLive = data.status === 'IN_PROGRESS';\n\n const summary = data.completedAt\n ? t('mybodyshield.pages.sessionDetail.completedAgo', 'Completed {{time}}', {\n time: formatRelativeTime(data.completedAt),\n })\n : data.startedAt\n ? t('mybodyshield.pages.sessionDetail.startedAgo', 'Started {{time}}', {\n time: formatRelativeTime(data.startedAt),\n })\n : data.scheduledFor\n ? t('mybodyshield.pages.sessionDetail.scheduledAgo', 'Scheduled {{time}}', {\n time: formatRelativeTime(data.scheduledFor),\n })\n : t('mybodyshield.pages.sessionDetail.createdAgo', 'Created {{time}}', {\n time: formatRelativeTime(data.createdAt),\n });\n\n const openLog = () => {\n setLogForm(EMPTY_LOG_FORM);\n setLogError(null);\n setPrTouched(false);\n setLogOpen(true);\n };\n\n /** Guided-stepper quick action: pre-fill the log dialog from a planned exercise. */\n const openLogForExercise = (exercise: MybExercise) => {\n const alreadyLogged = loggedCountByExercise.get(exercise.name) ?? 0;\n setLogForm({\n ...EMPTY_LOG_FORM,\n exerciseName: exercise.name,\n setNumber: String(alreadyLogged + 1),\n reps: exercise.reps > 0 ? String(exercise.reps) : '',\n weight: exercise.targetWeight > 0 ? String(exercise.targetWeight) : '',\n });\n setLogError(null);\n setPrTouched(false);\n setLogOpen(true);\n };\n\n const submitLog = async () => {\n setLogError(null);\n const exerciseName = logForm.exerciseName.trim();\n if (!exerciseName) {\n setLogError(\n t('mybodyshield.pages.sessionDetail.exerciseNameRequired', 'Exercise name is required.')\n );\n return;\n }\n const input = {\n exerciseName,\n setNumber: numOrUndef(logForm.setNumber),\n reps: numOrUndef(logForm.reps),\n weight: numOrUndef(logForm.weight),\n distanceM: numOrUndef(logForm.distanceM),\n durationSec: numOrUndef(logForm.durationSec),\n isPersonalRecord: effectiveIsPersonalRecord,\n };\n const advanceForm = (nextSetNumber: number) => {\n setLogForm({ ...EMPTY_LOG_FORM, exerciseName, setNumber: String(nextSetNumber) });\n setPrTouched(false);\n const restSeconds =\n activeExercise && activeExercise.name === exerciseName && activeExercise.restSeconds > 0\n ? activeExercise.restSeconds\n : DEFAULT_REST_SECONDS;\n setRestEndsAt(Date.now() + restSeconds * 1000);\n setRestRemaining(restSeconds);\n };\n // BOFF-4219: log offline-first — don't even attempt the network round-trip\n // when we already know we're offline, so the set is captured instantly.\n if (!offlineSync.isOnline) {\n await offlineSync.enqueueLogSet(id, input);\n refreshPendingForSession();\n advanceForm((numOrUndef(logForm.setNumber) ?? sets.length) + 1);\n return;\n }\n try {\n const created = await logSet.mutateAsync({ sessionId: id, ...input });\n advanceForm(created.setNumber + 1);\n } catch (e) {\n if (isLikelyOffline(e)) {\n await offlineSync.enqueueLogSet(id, input);\n refreshPendingForSession();\n advanceForm((numOrUndef(logForm.setNumber) ?? sets.length) + 1);\n return;\n }\n setLogError(\n e instanceof Error\n ? e.message\n : t('mybodyshield.pages.sessionDetail.failedToLogSet', 'Failed to log the set.')\n );\n }\n };\n\n const openComplete = () => {\n setCompleteForm(EMPTY_COMPLETE_FORM);\n setCompleteError(null);\n setCompleteOpen(true);\n };\n\n const submitComplete = async () => {\n setCompleteError(null);\n const input = {\n caloriesBurned: numOrUndef(completeForm.caloriesBurned),\n perceivedExertion: numOrUndef(completeForm.perceivedExertion),\n notes: completeForm.notes.trim() ? completeForm.notes.trim() : undefined,\n };\n if (!offlineSync.isOnline) {\n await offlineSync.enqueueCompleteSession(id, input);\n refreshPendingForSession();\n setCompleteOpen(false);\n return;\n }\n try {\n await completeSession.mutateAsync({ id, input });\n setCompleteOpen(false);\n } catch (e) {\n if (isLikelyOffline(e)) {\n await offlineSync.enqueueCompleteSession(id, input);\n refreshPendingForSession();\n setCompleteOpen(false);\n return;\n }\n setCompleteError(\n e instanceof Error\n ? e.message\n : t(\n 'mybodyshield.pages.sessionDetail.failedToComplete',\n 'Failed to complete the session.'\n )\n );\n }\n };\n\n const actions = isLive ? (\n <>\n <Button variant=\"outline\" onClick={openLog}>\n <Plus className=\"h-4 w-4\" /> {t('mybodyshield.pages.sessionDetail.logSet', 'Log set')}\n </Button>\n <Button onClick={openComplete} disabled={pendingComplete}>\n <CheckCircle2 className=\"h-4 w-4\" />{' '}\n {pendingComplete\n ? t('mybodyshield.pages.sessionDetail.pendingSync', 'Pending sync…')\n : t('mybodyshield.pages.sessionDetail.complete', 'Complete')}\n </Button>\n </>\n ) : undefined;\n\n return (\n <PageLayout\n title={t('mybodyshield.pages.sessionDetail.title', 'Workout session')}\n description={summary}\n actions={actions}\n >\n <button\n type=\"button\"\n onClick={() => navigateTo('train')}\n className=\"mb-4 inline-flex items-center gap-1.5 text-sm font-medium text-text-secondary hover:text-text-primary\"\n >\n <ArrowLeft className=\"h-4 w-4\" />{' '}\n {t('mybodyshield.pages.sessionDetail.backToSessions', 'Back to sessions')}\n </button>\n\n {/* BOFF-4219: offline queue status — only shown when it's relevant, so\n nothing changes for a member who never leaves connectivity. */}\n {(!offlineSync.isOnline || pendingActions.length > 0) && (\n <div className=\"mb-4 flex items-center gap-2 rounded-xl border border-status-warning-text/40 bg-status-warning-bg-subtle px-4 py-2.5 text-sm text-text-primary\">\n <WifiOff className=\"h-4 w-4 shrink-0 text-status-warning-text\" />\n <span>\n {!offlineSync.isOnline\n ? t(\n 'mybodyshield.pages.sessionDetail.offlineBanner',\n \"You're offline — logged sets and completion will sync automatically once you're back online{{queue}}.\",\n {\n queue:\n pendingActions.length > 0\n ? ` (${pendingActions.length} ${t(\n 'mybodyshield.pages.sessionDetail.queued',\n 'queued'\n )})`\n : '',\n }\n )\n : t(\n 'mybodyshield.pages.sessionDetail.syncingBanner',\n 'Syncing {{count}} queued {{actions}}…',\n {\n count: pendingActions.length,\n actions: t(\n pendingActions.length === 1\n ? 'mybodyshield.pages.sessionDetail.action'\n : 'mybodyshield.pages.sessionDetail.actions',\n pendingActions.length === 1 ? 'action' : 'actions'\n ),\n }\n )}\n </span>\n {offlineSync.isOnline && pendingActions.length > 0 && (\n <Button\n variant=\"ghost\"\n onClick={offlineSync.syncNow}\n className=\"ml-auto h-7 px-2 text-xs\"\n >\n {t('mybodyshield.pages.sessionDetail.retryNow', 'Retry now')}\n </Button>\n )}\n </div>\n )}\n\n {/* Header card */}\n <motion.div\n initial={reduce ? false : { opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={reduce ? { duration: 0 } : { duration: 0.35, ease: MOTION_EASE }}\n >\n <GlassCard treatment=\"glass\" glow={isLive} className=\"p-6\">\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div className=\"flex items-center gap-3\">\n <IconChip\n icon={isLive ? <Flame className=\"h-5 w-5\" /> : <Dumbbell className=\"h-5 w-5\" />}\n tint={isLive ? 'var(--color-accent-teal)' : 'var(--color-accent-primary)'}\n />\n <div>\n <div className=\"flex items-center gap-2\">\n <StatusBadge status={data.status} />\n </div>\n <p className=\"mt-1 text-sm text-text-secondary\">{summary}</p>\n </div>\n </div>\n </div>\n\n <div className=\"mt-5 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {data.scheduledFor && (\n <div>\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.pages.sessionDetail.scheduledFor', 'Scheduled for')}\n </p>\n <p className=\"mt-0.5 text-sm font-medium text-text-primary\">\n {formatDateTime(data.scheduledFor)}\n </p>\n </div>\n )}\n {data.startedAt && (\n <div>\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.pages.sessionDetail.started', 'Started')}\n </p>\n <p className=\"mt-0.5 text-sm font-medium text-text-primary\">\n {formatDateTime(data.startedAt)}\n </p>\n </div>\n )}\n {data.completedAt && (\n <div>\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.pages.sessionDetail.completed', 'Completed')}\n </p>\n <p className=\"mt-0.5 text-sm font-medium text-text-primary\">\n {formatDateTime(data.completedAt)}\n </p>\n </div>\n )}\n {data.perceivedExertion != null && (\n <div>\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.pages.sessionDetail.perceivedExertion', 'Perceived exertion')}\n </p>\n <p className=\"mt-0.5 text-sm font-medium tabular-nums text-text-primary\">\n {t('mybodyshield.pages.sessionDetail.rpeValue', '{{rpe}}/10 RPE', {\n rpe: data.perceivedExertion,\n })}\n </p>\n </div>\n )}\n {data.caloriesBurned > 0 && (\n <div>\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.pages.sessionDetail.caloriesBurned', 'Calories burned')}\n </p>\n <p className=\"mt-0.5 text-sm font-medium tabular-nums text-text-primary\">\n {formatKcal(data.caloriesBurned)}\n </p>\n </div>\n )}\n </div>\n\n {data.notes && (\n <div className=\"mt-5 rounded-xl bg-bg-sunken/60 p-4\">\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.common.notes', 'Notes')}\n </p>\n <p className=\"mt-1 whitespace-pre-wrap text-sm text-text-secondary\">{data.notes}</p>\n </div>\n )}\n </GlassCard>\n </motion.div>\n\n {/* Rest timer — appears after a set is logged, counts down to the next one */}\n {isLive && restRemaining > 0 && (\n <motion.div\n initial={reduce ? false : { opacity: 0, y: -6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={reduce ? { duration: 0 } : { duration: 0.25, ease: MOTION_EASE }}\n className=\"mt-4\"\n >\n <GlassCard\n treatment=\"plain\"\n className=\"flex flex-wrap items-center justify-between gap-3 border border-accent/30 bg-accent/5 p-4\"\n >\n <div className=\"flex items-center gap-2.5\">\n <IconChip icon={<Timer className=\"h-4 w-4\" />} tint=\"var(--color-accent-teal)\" />\n <div>\n <p className=\"text-sm font-semibold text-text-primary\">\n {t('mybodyshield.pages.sessionDetail.resting', 'Resting')}\n </p>\n <p className=\"text-xs tabular-nums text-text-secondary\">\n {t('mybodyshield.pages.sessionDetail.remaining', '{{time}} remaining', {\n time: formatDuration(restRemaining),\n })}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setRestEndsAt((prev) => (prev ? prev + 15_000 : prev));\n setRestRemaining((r) => r + 15);\n }}\n >\n {t('mybodyshield.pages.sessionDetail.add15s', '+15s')}\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n setRestEndsAt(null);\n setRestRemaining(0);\n }}\n >\n <X className=\"h-4 w-4\" /> {t('mybodyshield.pages.sessionDetail.skipRest', 'Skip')}\n </Button>\n </div>\n </GlassCard>\n </motion.div>\n )}\n\n {/* Guided next-exercise stepper — only for sessions tied to a planned workout */}\n {isLive && exercises.length > 0 && (\n <motion.div\n initial={reduce ? false : { opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={reduce ? { duration: 0 } : { duration: 0.35, ease: MOTION_EASE, delay: 0.05 }}\n className=\"mt-4\"\n >\n <GlassCard treatment=\"plain\" className=\"p-4\">\n <div className=\"mb-3 flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2.5\">\n <IconChip icon={<ListChecks className=\"h-4 w-4\" />} />\n <div>\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {t('mybodyshield.pages.sessionDetail.guidedWorkout', 'Guided workout')}\n </h3>\n <p className=\"text-xs text-text-secondary\">\n {allExercisesDone\n ? t(\n 'mybodyshield.pages.sessionDetail.allExercisesDone',\n 'All planned exercises logged — nice work.'\n )\n : t(\n 'mybodyshield.pages.sessionDetail.exerciseProgress',\n 'Exercise {{current}} of {{total}}',\n {\n current: activeExerciseIdx + 1,\n total: exercises.length,\n }\n )}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-1.5\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setManualExerciseIdx(Math.max(activeExerciseIdx - 1, 0))}\n disabled={activeExerciseIdx === 0}\n aria-label={t(\n 'mybodyshield.pages.sessionDetail.previousExercise',\n 'Previous exercise'\n )}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() =>\n setManualExerciseIdx(Math.min(activeExerciseIdx + 1, exercises.length - 1))\n }\n disabled={activeExerciseIdx >= exercises.length - 1}\n aria-label={t('mybodyshield.pages.sessionDetail.nextExercise', 'Next exercise')}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n\n {activeExercise && (\n <div className=\"flex flex-wrap items-center justify-between gap-3 rounded-xl bg-bg-sunken/60 p-3\">\n <div>\n <p className=\"text-sm font-semibold text-text-primary\">{activeExercise.name}</p>\n <p className=\"mt-0.5 text-xs text-text-secondary\">\n {formatEnumLabel(activeExercise.muscleGroup)} · {activeExercise.sets} ×{' '}\n {activeExercise.reps} {t('mybodyshield.pages.sessionDetail.reps', 'reps')}\n {activeExercise.targetWeight > 0\n ? ` @ ${formatWeight(activeExercise.targetWeight)}`\n : ''}\n {activeExercise.restSeconds > 0\n ? ` · ${formatDuration(activeExercise.restSeconds)} ${t(\n 'mybodyshield.pages.sessionDetail.rest',\n 'rest'\n )}`\n : ''}\n </p>\n <p className=\"mt-0.5 text-xs tabular-nums text-text-tertiary\">\n {loggedCountByExercise.get(activeExercise.name) ?? 0}{' '}\n {t('mybodyshield.pages.sessionDetail.ofSets', 'of')}{' '}\n {Math.max(activeExercise.sets, 1)}{' '}\n {t('mybodyshield.pages.sessionDetail.setsLogged', 'sets logged')}\n </p>\n </div>\n <Button size=\"sm\" onClick={() => openLogForExercise(activeExercise)}>\n <Plus className=\"h-4 w-4\" />{' '}\n {t('mybodyshield.pages.sessionDetail.logThisExercise', 'Log this exercise')}\n </Button>\n </div>\n )}\n </GlassCard>\n </motion.div>\n )}\n\n {/* Stat cards */}\n <motion.div\n className=\"mt-6 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\"\n variants={reduce ? undefined : STAGGER_CONTAINER}\n initial={reduce ? false : 'hidden'}\n animate=\"show\"\n >\n <motion.div variants={reduce ? undefined : RISE_ITEM}>\n <MetricsCard\n icon={\n <span className=\"text-action-primary-bg\">\n <Dumbbell className=\"h-5 w-5\" />\n </span>\n }\n value={formatNumber(sets.length)}\n label={t(\n sets.length === 1\n ? 'mybodyshield.pages.sessionDetail.totalSet'\n : 'mybodyshield.pages.sessionDetail.totalSets',\n sets.length === 1 ? 'Total set' : 'Total sets'\n )}\n />\n </motion.div>\n <motion.div variants={reduce ? undefined : RISE_ITEM}>\n <MetricsCard\n icon={\n <span className=\"text-action-primary-bg\">\n <Weight className=\"h-5 w-5\" />\n </span>\n }\n value={t('mybodyshield.pages.sessionDetail.volumeKg', '{{volume}} kg', {\n volume: formatNumber(totalVolume),\n })}\n label={t('mybodyshield.pages.sessionDetail.totalVolume', 'Total volume')}\n />\n </motion.div>\n <motion.div variants={reduce ? undefined : RISE_ITEM}>\n <MetricsCard\n icon={\n <span className=\"text-action-primary-bg\">\n <Timer className=\"h-5 w-5\" />\n </span>\n }\n value={durationSec != null ? formatDuration(durationSec) : '—'}\n label={t('mybodyshield.pages.sessionDetail.duration', 'Duration')}\n />\n </motion.div>\n <motion.div variants={reduce ? undefined : RISE_ITEM}>\n <MetricsCard\n icon={\n <span className=\"text-action-primary-bg\">\n <Flame className=\"h-5 w-5\" />\n </span>\n }\n value={data.caloriesBurned > 0 ? formatKcal(data.caloriesBurned) : '—'}\n label={t('mybodyshield.pages.sessionDetail.caloriesBurned', 'Calories burned')}\n />\n </motion.div>\n </motion.div>\n\n {/* Logged sets */}\n <div className=\"mt-8\">\n <div className=\"mb-3 flex items-end justify-between gap-3\">\n <div>\n <h2 className=\"text-base font-semibold text-text-primary\">\n {t('mybodyshield.pages.sessionDetail.loggedSets', 'Logged sets')}\n </h2>\n <p className=\"mt-0.5 text-sm text-text-secondary\">\n {t(\n 'mybodyshield.pages.sessionDetail.loggedSetsDescription',\n 'Every set recorded during this session, grouped by exercise.'\n )}\n </p>\n </div>\n {isLive && (\n <Button variant=\"outline\" size=\"sm\" onClick={openLog} className=\"shrink-0\">\n <Plus className=\"h-4 w-4\" /> {t('mybodyshield.pages.sessionDetail.logSet', 'Log set')}\n </Button>\n )}\n </div>\n\n {groups.length === 0 ? (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Dumbbell className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.sessionDetail.noSetsLogged', 'No sets logged yet')}\n description={t(\n isLive\n ? 'mybodyshield.pages.sessionDetail.noSetsLoggedLive'\n : 'mybodyshield.pages.sessionDetail.noSetsLoggedReadonly',\n isLive\n ? 'Log your first set to start tracking this workout.'\n : 'No sets were recorded for this session.'\n )}\n action={\n isLive ? (\n <Button onClick={openLog}>\n <Plus className=\"h-4 w-4\" />{' '}\n {t('mybodyshield.pages.sessionDetail.logSet', 'Log set')}\n </Button>\n ) : undefined\n }\n />\n ) : (\n <motion.div\n className=\"space-y-4\"\n variants={reduce ? undefined : STAGGER_CONTAINER}\n initial={reduce ? false : 'hidden'}\n animate=\"show\"\n >\n {groups.map((group) => {\n const prCount = group.sets.filter((st) => st.isPersonalRecord).length;\n return (\n <motion.div key={group.name} variants={reduce ? undefined : RISE_ITEM}>\n <GlassCard treatment=\"plain\" className=\"p-4 transition-shadow hover:shadow-float\">\n <div className=\"mb-3 flex items-center justify-between gap-2\">\n <div className=\"flex min-w-0 items-center gap-2.5\">\n <IconChip icon={<Dumbbell className=\"h-4 w-4\" />} />\n <h3 className=\"truncate text-sm font-semibold text-text-primary\">\n {group.name}\n </h3>\n {prCount > 0 && (\n <span className=\"inline-flex items-center rounded-full bg-status-success-bg-subtle px-2 py-0.5 text-[11px] font-semibold text-status-success-text shadow-[0_0_0_3px_color-mix(in_oklab,var(--color-status-success-text)_14%,transparent)]\">\n {prCount}{' '}\n {t(\n prCount === 1\n ? 'mybodyshield.pages.sessionDetail.prSingular'\n : 'mybodyshield.pages.sessionDetail.prPlural',\n prCount === 1 ? 'PR' : 'PRs'\n )}\n </span>\n )}\n </div>\n <span className=\"shrink-0 text-xs tabular-nums text-text-tertiary\">\n {formatNumber(group.sets.length)}{' '}\n {t(\n group.sets.length === 1\n ? 'mybodyshield.pages.sessionDetail.set'\n : 'mybodyshield.pages.sessionDetail.sets',\n group.sets.length === 1 ? 'set' : 'sets'\n )}\n </span>\n </div>\n <ul className=\"divide-y divide-border-seam\">\n {group.sets.map((st) => {\n const isCardio = st.durationSec > 0 || st.distanceM > 0;\n return (\n <li\n key={st.id}\n className={\n 'flex flex-wrap items-center justify-between gap-2 rounded-lg px-2 py-2 transition-colors' +\n (st.isPersonalRecord\n ? ' bg-[color-mix(in_oklab,var(--color-status-success-text)_9%,transparent)]'\n : ' hover:bg-bg-sunken/40')\n }\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium text-text-primary tabular-nums\">\n {t(\n 'mybodyshield.pages.sessionDetail.setRow',\n 'Set {{number}}: {{reps}} × {{weight}}',\n {\n number: st.setNumber,\n reps: formatNumber(st.reps),\n weight: formatWeight(st.weight),\n }\n )}\n </span>\n {st.isPersonalRecord && (\n <span className=\"inline-flex rounded-full shadow-[0_0_0_3px_color-mix(in_oklab,var(--color-status-success-text)_16%,transparent)]\">\n <StatusBadge status=\"PR\" />\n </span>\n )}\n </div>\n <div className=\"flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-text-secondary\">\n {isCardio && st.durationSec > 0 && (\n <span className=\"inline-flex items-center gap-1 tabular-nums\">\n <Timer className=\"h-3.5 w-3.5 text-accent\" />\n {formatDuration(st.durationSec)}\n </span>\n )}\n {isCardio && st.distanceM > 0 && (\n <span className=\"inline-flex items-center gap-1 tabular-nums\">\n <Ruler className=\"h-3.5 w-3.5 text-accent\" />\n {t(\n 'mybodyshield.pages.sessionDetail.distanceM',\n '{{distance}} m',\n {\n distance: formatNumber(st.distanceM),\n }\n )}\n </span>\n )}\n </div>\n </li>\n );\n })}\n </ul>\n </GlassCard>\n </motion.div>\n );\n })}\n </motion.div>\n )}\n </div>\n\n {/* Coach feedback / discussion — available for any session */}\n <div className=\"mt-8\">\n <MybDiscussion\n entityType=\"mybodyshield-session\"\n entityId={data.id}\n title={t('mybodyshield.pages.sessionDetail.coachFeedback', 'Coach feedback')}\n description={t(\n 'mybodyshield.pages.sessionDetail.coachFeedbackDescription',\n \"Discuss form, cues and this session's results with your coach and team.\"\n )}\n />\n </div>\n\n {/* Log set dialog */}\n <ResponsiveDialog open={logOpen} onOpenChange={setLogOpen}>\n <ResponsiveDialogContent>\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>\n {t('mybodyshield.pages.sessionDetail.logSetDialogTitle', 'Log a set')}\n </ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n {t(\n 'mybodyshield.pages.sessionDetail.logSetDialogDescription',\n 'Record reps and load for strength work, or duration and distance for cardio. The dialog stays open so you can log sets back-to-back.'\n )}\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"space-y-4 px-1\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-set-exercise\">\n {t('mybodyshield.pages.sessionDetail.exerciseLabel', 'Exercise')}\n </Label>\n <Input\n id=\"myb-set-exercise\"\n value={logForm.exerciseName}\n onChange={(e) => {\n const exerciseName = e.target.value;\n setLogForm((f) => ({ ...f, exerciseName }));\n // A different exercise has a different history — let auto-PR\n // detection recompute fresh instead of keeping a stale override.\n setPrTouched(false);\n }}\n placeholder={t(\n 'mybodyshield.pages.sessionDetail.exercisePlaceholder',\n 'e.g. Back Squat'\n )}\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-set-number\">\n {t('mybodyshield.pages.sessionDetail.setNumberLabel', 'Set number')}\n </Label>\n <Input\n id=\"myb-set-number\"\n type=\"number\"\n inputMode=\"numeric\"\n min={1}\n value={logForm.setNumber}\n onChange={(e) => setLogForm((f) => ({ ...f, setNumber: e.target.value }))}\n placeholder={t('mybodyshield.pages.sessionDetail.setNumberPlaceholder', '1')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-set-reps\">\n {t('mybodyshield.pages.sessionDetail.repsLabel', 'Reps')}\n </Label>\n <Input\n id=\"myb-set-reps\"\n type=\"number\"\n inputMode=\"numeric\"\n min={0}\n value={logForm.reps}\n onChange={(e) => setLogForm((f) => ({ ...f, reps: e.target.value }))}\n placeholder={t('mybodyshield.pages.sessionDetail.repsPlaceholder', '8')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-set-weight\">\n {t('mybodyshield.pages.sessionDetail.weightLabel', 'Weight (kg)')}\n </Label>\n <Input\n id=\"myb-set-weight\"\n type=\"number\"\n inputMode=\"decimal\"\n min={0}\n step=\"0.5\"\n value={logForm.weight}\n onChange={(e) => setLogForm((f) => ({ ...f, weight: e.target.value }))}\n placeholder={t('mybodyshield.pages.sessionDetail.weightPlaceholder', '60')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-set-distance\">\n {t('mybodyshield.pages.sessionDetail.distanceLabel', 'Distance (m)')}\n </Label>\n <Input\n id=\"myb-set-distance\"\n type=\"number\"\n inputMode=\"numeric\"\n min={0}\n value={logForm.distanceM}\n onChange={(e) => setLogForm((f) => ({ ...f, distanceM: e.target.value }))}\n placeholder={t(\n 'mybodyshield.pages.sessionDetail.optionalPlaceholder',\n 'Optional'\n )}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-set-duration\">\n {t('mybodyshield.pages.sessionDetail.durationLabel', 'Duration (sec)')}\n </Label>\n <Input\n id=\"myb-set-duration\"\n type=\"number\"\n inputMode=\"numeric\"\n min={0}\n value={logForm.durationSec}\n onChange={(e) => setLogForm((f) => ({ ...f, durationSec: e.target.value }))}\n placeholder={t(\n 'mybodyshield.pages.sessionDetail.optionalPlaceholder',\n 'Optional'\n )}\n />\n </div>\n </div>\n\n <div className=\"flex items-center justify-between gap-3 rounded-xl bg-bg-sunken/60 p-3\">\n <div className=\"flex items-center gap-2\">\n {effectiveIsPersonalRecord ? (\n <Trophy className=\"h-4 w-4 text-status-success-text\" />\n ) : (\n <Gauge className=\"h-4 w-4 text-accent\" />\n )}\n <div>\n <Label htmlFor=\"myb-set-pr\" className=\"cursor-pointer\">\n {t('mybodyshield.pages.sessionDetail.personalRecord', 'Personal record')}\n </Label>\n <p className=\"text-xs text-text-tertiary\">\n {bestSet.data\n ? t(\n 'mybodyshield.pages.sessionDetail.prAutoDetected',\n 'Auto-detected against your best: {{reps}} × {{weight}}.',\n {\n reps: formatNumber(bestSet.data.reps),\n weight: formatWeight(bestSet.data.weight),\n }\n )\n : logForm.exerciseName.trim()\n ? t(\n 'mybodyshield.pages.sessionDetail.prFirstTime',\n 'First time logging this exercise — nothing to compare yet.'\n )\n : t(\n 'mybodyshield.pages.sessionDetail.prFlagHint',\n 'Flag this set as a new PR.'\n )}\n </p>\n </div>\n </div>\n <Switch\n id=\"myb-set-pr\"\n checked={effectiveIsPersonalRecord}\n onCheckedChange={(v) => {\n setPrTouched(true);\n setLogForm((f) => ({ ...f, isPersonalRecord: v }));\n }}\n />\n </div>\n\n {logError && <p className=\"text-sm text-status-error-text\">{logError}</p>}\n </div>\n\n <ResponsiveDialogFooter>\n <Button variant=\"outline\" onClick={() => setLogOpen(false)}>\n {t('mybodyshield.common.close', 'Close')}\n </Button>\n <Button onClick={submitLog} disabled={logSet.isPending}>\n {logSet.isPending\n ? t('mybodyshield.common.logging', 'Logging…')\n : t('mybodyshield.pages.sessionDetail.logSet', 'Log set')}\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n\n {/* Complete session dialog */}\n <ResponsiveDialog open={completeOpen} onOpenChange={setCompleteOpen}>\n <ResponsiveDialogContent>\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>\n {t('mybodyshield.pages.sessionDetail.completeDialogTitle', 'Complete session')}\n </ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n {t(\n 'mybodyshield.pages.sessionDetail.completeDialogDescription',\n 'Wrap up this workout and record how it went.'\n )}\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"space-y-4 px-1\">\n {sets.length === 0 && (\n <div className=\"flex items-start gap-2.5 rounded-xl border border-status-warning-text/40 bg-status-warning-bg-subtle p-3\">\n <AlertTriangle className=\"mt-0.5 h-4 w-4 shrink-0 text-status-warning-text\" />\n <p className=\"text-sm text-text-secondary\">\n <span className=\"font-medium text-text-primary\">\n {t('mybodyshield.pages.sessionDetail.noSetsWarning', 'No sets logged.')}\n </span>{' '}\n {t(\n 'mybodyshield.pages.sessionDetail.noSetsWarningDetail',\n 'You can still complete this session, but nothing was recorded for it.'\n )}\n </p>\n </div>\n )}\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-complete-calories\">\n {t('mybodyshield.pages.sessionDetail.caloriesBurned', 'Calories burned')}\n </Label>\n <Input\n id=\"myb-complete-calories\"\n type=\"number\"\n inputMode=\"numeric\"\n min={0}\n value={completeForm.caloriesBurned}\n onChange={(e) =>\n setCompleteForm((f) => ({ ...f, caloriesBurned: e.target.value }))\n }\n placeholder={t(\n 'mybodyshield.pages.sessionDetail.optionalPlaceholder',\n 'Optional'\n )}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-complete-rpe\">\n {t('mybodyshield.pages.sessionDetail.rpeLabel', 'Perceived exertion (1–10)')}\n </Label>\n <Input\n id=\"myb-complete-rpe\"\n type=\"number\"\n inputMode=\"numeric\"\n min={1}\n max={10}\n value={completeForm.perceivedExertion}\n onChange={(e) =>\n setCompleteForm((f) => ({ ...f, perceivedExertion: e.target.value }))\n }\n placeholder={t(\n 'mybodyshield.pages.sessionDetail.optionalPlaceholder',\n 'Optional'\n )}\n />\n </div>\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"myb-complete-notes\">{t('mybodyshield.common.notes', 'Notes')}</Label>\n <Textarea\n id=\"myb-complete-notes\"\n rows={3}\n value={completeForm.notes}\n onChange={(e) => setCompleteForm((f) => ({ ...f, notes: e.target.value }))}\n placeholder={t(\n 'mybodyshield.pages.sessionDetail.completeNotesPlaceholder',\n 'How did the session feel?'\n )}\n />\n </div>\n\n {completeError && <p className=\"text-sm text-status-error-text\">{completeError}</p>}\n </div>\n\n <ResponsiveDialogFooter>\n <Button variant=\"outline\" onClick={() => setCompleteOpen(false)}>\n {t('mybodyshield.common.cancel', 'Cancel')}\n </Button>\n <Button onClick={submitComplete} disabled={completeSession.isPending}>\n {completeSession.isPending\n ? t('mybodyshield.common.completing', 'Completing…')\n : t('mybodyshield.pages.sessionDetail.completeSession', 'Complete session')}\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA2FA,SAASE,GAAgB,GAAuB;CAE9C,IADI,OAAO,YAAc,OAAe,CAAC,UAAU,UAC/CC,aAAe,WAAW,OAAO;CACrC,IAAMC,IAAMD,aAAe,QAAQA,EAAI,QAAQ,YAAY,IAAI;CAC/D,OAAOC,EAAI,SAAS,iBAAiB,KAAKA,EAAI,SAAS,aAAa,KAAKA,EAAI,SAAS,SAAS;AACjG;AAGA,SAASC,GAA0B,GAA8B,GAAkC;CACjG,IAAMC,IAAQC,EAAO;CASrB,OAAO;EACL,IAAI,WAAWA,EAAO;EACtB,aAAa;EACb;EACA,cAAcD,EAAM;EACpB,WAAWA,EAAM,aAAa;EAC9B,MAAMA,EAAM,QAAQ;EACpB,QAAQA,EAAM,UAAU;EACxB,WAAWA,EAAM,aAAa;EAC9B,aAAaA,EAAM,eAAe;EAClC,kBAAkB,EAAQA,EAAM;EAChC,WAAWC,EAAO;EAClB,WAAWA,EAAO;CACpB;AACF;AAGA,IAAMC,KAAuB,IAGvBC,KAAuC,CAAC;AAQ9C,SAASC,GAAU,GAAgB,GAAc,GAAiD;CAIhG,OAHKC,IACDC,IAASD,EAAK,UACdC,MAAWD,EAAK,UAAUE,IAAOF,EAAK,OAFxB;AAIpB;AAGA,IAAMG,IAAgD;CAAC;CAAM;CAAG;CAAK;AAAC,GAGhEC,KAAoB;CACxB,QAAQ,CAAC;CACT,MAAM,EAAE,YAAY,EAAE,iBAAiB,IAAK,EAAE;AAChD,GACMC,IAAY;CAChB,QAAQ;EAAE,SAAS;EAAG,GAAG;CAAG;CAC5B,MAAM;EAAE,SAAS;EAAG,GAAG;EAAG,YAAY;GAAE,UAAU;GAAM,MAAMF;EAAY;CAAE;AAC9E;AAGA,SAASG,EAAW,GAAmC;CACrD,IAAMC,IAAUC,EAAM,KAAK;CAC3B,IAAI,CAACD,GAAS;CACd,IAAM,IAAI,OAAOA,CAAO;CACxB,OAAO,OAAO,SAAS,CAAC,IAAI,IAAI,KAAA;AAClC;AAYA,IAAME,IAA6B;CACjC,cAAc;CACd,WAAW;CACX,MAAM;CACN,QAAQ;CACR,WAAW;CACX,aAAa;CACb,kBAAkB;AACpB,GAQMC,KAAoC;CAAE,gBAAgB;CAAI,mBAAmB;CAAI,OAAO;AAAG;AAEjG,SAAgBC,IAAoB;CAClC,IAAMC,IAAIC,GAAM,GACV,EAAE,gBAAY,oBAAgBC,EAAgB,GAC9CC,IAASC,GAAiB,GAC1B,EAAE,UAAOC,GAA0B;CACvB,GAAyB;CAE3C,IAAMC,IAAUC,GAAcC,CAAE,GAC1BC,IAASC,GAAa,GACtBC,IAAkBC,GAAsB,GACxCC,KAAiBC,GAAuBR,EAAQ,MAAM,aAAa,KAAA,CAAS,GAI5ES,IAAcC,IACjB,MAAUP,EAAO,YAAY1B,CAAK,IAClC,MAAS4B,EAAgB,YAAYM,CAAI,SACpCX,EAAQ,QAAQ,CACxB,GACM,CAACY,GAAgBC,MAAqBC,EAAiC,CAAC,CAAC,GACzEC,IAA2BC,SAAkB;EACjD,AAAKd,KACLe,GAAkCf,CAAE,CAAC,CAAC,KAAKW,EAAiB;CAC9D,GAAG,CAACX,CAAE,CAAC;CACP,SAAgB;EACd,EAAyB;CAC3B,GAAG,CAACa,GAA0BN,EAAY,YAAY,CAAC;CACvD,IAAMS,KAAcC,QAEhBjB,IACIU,EACG,QAAQ,MAAMQ,EAAE,SAAS,SAAS,CAAC,CACnC,KAAK,MAAM5C,GAA0B4C,GAAGlB,CAAE,CAAC,IAC9C,CAAC,GACP,CAACU,GAAgBV,CAAE,CACrB,GACMmB,KAAkBT,EAAe,MAAM,MAAMQ,EAAE,SAAS,kBAAkB,GAE1E,CAACE,IAASC,KAAcT,EAAS,EAAK,GACtC,CAACU,GAASC,KAAcX,EAAqBvB,CAAc,GAC3D,CAACmC,IAAUC,KAAeb,EAAwB,IAAI,GACtD,CAACc,IAAWC,KAAgBf,EAAS,EAAK,GAE1C,CAACgB,IAAcC,KAAmBjB,EAAS,EAAK,GAChD,CAACkB,GAAcC,KAAmBnB,EAAuBtB,EAAmB,GAC5E,CAAC0C,IAAeC,KAAoBrB,EAAwB,IAAI,GAKhE,CAACsB,IAAmBC,MAAwBvB,EAAwB,IAAI,GACxE,CAACwB,IAAeC,MAAoBzB,EACxCd,EAAQ,MAAM,SAChB,GAKM,CAACwC,IAAYC,KAAiB3B,EAAwB,IAAI,GAC1D,CAAC4B,IAAeC,KAAoB7B,EAAS,CAAC,GAE9C8B,IAAUC,GAAsBrB,EAAQ,YAAY,GAEpDsB,IAAO9C,EAAQ,MAIf+C,IAAO5B,QACL,CAAC,GAAI2B,GAAM,QAAQ,CAAC,GAAI,GAAG5B,EAAW,GAC5C,CAAC4B,GAAM,MAAM5B,EAAW,CAC1B,GAEM8B,IAAS7B,QAAc;EAC3B,IAAM8B,oBAAM,IAAI,IAA6B;EAC7C,KAAK,IAAMC,KAAMH,GAAM;GACrB,IAAMI,IAAMF,EAAI,IAAIC,EAAG,YAAY,KAAK,CAAC;GAEzC,AADAC,EAAI,KAAKD,CAAE,GACXD,EAAI,IAAIC,EAAG,cAAcC,CAAG;EAC9B;EACA,OAAO,MAAM,KAAKF,EAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAACG,GAAMC,QAAW;GACtD;GACA,MAAMA,EAAK,MAAM,CAAC,CAAC,MAAM,GAAG,MAAMjC,EAAE,YAAYkC,EAAE,SAAS;EAC7D,EAAE;CACJ,GAAG,CAACP,CAAI,CAAC,GAEHQ,KAAcpC,QAAc4B,EAAK,QAAQ,GAAK,MAAOS,IAAMN,EAAG,OAAOA,EAAG,QAAQ,CAAC,GAAG,CAACH,CAAI,CAAC,GAE1FU,IAAYX,GAAM,WAClBY,KAAcZ,GAAM,aACpBa,KAAcxC,QAAc;EAChC,IAAI,CAACsC,KAAa,CAACC,IAAa;EAChC,IAAME,IAAQ,IAAI,KAAKH,CAAS,CAAC,CAAC,QAAQ,GACpCI,IAAM,IAAI,KAAKH,EAAW,CAAC,CAAC,QAAQ;EAC1C,IAAI,GAAC,OAAO,SAASE,CAAK,KAAK,CAAC,OAAO,SAASC,CAAG,KAAKA,IAAMD,IAC9D,QAAQC,IAAMD,KAAS;CACzB,GAAG,CAACH,GAAWC,EAAW,CAAC,GAErBI,IAAYvD,GAAe,QAAQ3B,IAEnCmF,IAAwB5C,QAAc;EAC1C,IAAM8B,oBAAM,IAAI,IAAoB;EACpC,KAAK,IAAMe,KAAKhB,GAAQ,EAAI,IAAIgB,EAAE,MAAMA,EAAE,KAAK,MAAM;EACrD,OAAOf;CACT,GAAG,CAACD,CAAM,CAAC,GAELiB,KAAkB9C,QAAc;EACpC,IAAI2C,EAAU,WAAW,GAAG,OAAO;EACnC,IAAMI,IAAMJ,EAAU,WACnB,OAAQC,EAAsB,IAAII,EAAG,IAAI,KAAK,KAAK,KAAK,IAAIA,EAAG,MAAM,CAAC,CACzE;EACA,OAAOD,MAAQ,KAAKJ,EAAU,SAAS,IAAII;CAC7C,GAAG,CAACJ,GAAWC,CAAqB,CAAC,GAE/BK,IAAoB,KAAK,IAC7BhC,MAAqB6B,IACrB,KAAK,IAAIH,EAAU,SAAS,GAAG,CAAC,CAClC,GACMO,IAA0CP,EAAUM,IACpDE,KACJR,EAAU,SAAS,KACnBA,EAAU,OAAO,OAAQC,EAAsB,IAAII,EAAG,IAAI,KAAK,MAAM,KAAK,IAAIA,EAAG,MAAM,CAAC,CAAC;CAe3F,AATInE,EAAQ,MAAM,cAAcsC,OAC9BC,GAAiBvC,EAAQ,MAAM,SAAS,GACxCqC,GAAqB,IAAI,IAO3BkC,SAAgB;EACd,IAAI/B,MAAc,MAAM;EACxB,IAAMgC,IAAW,OAAO,kBAAkB;GACxC,IAAMC,IAAY,KAAK,IAAI,GAAG,KAAK,MAAMjC,KAAa,KAAK,IAAI,KAAK,GAAI,CAAC;GAEzE,AADAG,EAAiB8B,CAAS,GACtBA,KAAa,KAAGhC,EAAc,IAAI;EACxC,GAAG,GAAI;EACP,aAAa,OAAO,cAAc+B,CAAQ;CAC5C,GAAG,CAAChC,EAAU,CAAC;CAMf,IAAMkC,KAAYtF,EAAWoC,EAAQ,MAAM,KAAK,GAC1CmD,KAAUvF,EAAWoC,EAAQ,IAAI,KAAK,GACtCoD,KACJpD,EAAQ,aAAa,KAAK,CAAC,CAAC,SAAS,KAAK3C,GAAU6F,IAAWC,IAAS/B,EAAQ,IAAI,GAChFiC,KAA4BjD,KAAYJ,EAAQ,mBAAmBoD;CAEzE,IAAI,CAAC1E,GACH,OACE,kBAAC4E,GAAD;EAAY,OAAOpF,EAAE,0CAA0C,iBAAiB;EAC9E,UAAA,kBAACqF,IAAD;GACE,SAASrF,EACP,uDACA,2BACF;GACA,eAAesF,GAAW,OAAO;EAClC,CAAA;CACS,CAAA;CAIhB,IAAIhF,EAAQ,WACV,OACE,kBAAC8E,GAAD;EAAY,OAAOpF,EAAE,0CAA0C,iBAAiB;EAC9E,UAAA,kBAACuF,IAAD,EAAa,OAAOvF,EAAE,4CAA4C,kBAAkB,EAAI,CAAA;CAC9E,CAAA;CAIhB,IAAIM,EAAQ,WAAW,CAAC8C,GACtB,OACE,kBAACgC,GAAD;EAAY,OAAOpF,EAAE,0CAA0C,iBAAiB;EAC9E,UAAA,kBAACqF,IAAD;GACE,OAAOrF,EAAE,6CAA6C,mBAAmB;GACzE,SAASA,EACP,wDACA,6EACF;GACA,eAAeM,EAAQ,QAAQ;EAChC,CAAA;CACS,CAAA;CAIhB,IAAMkF,IAASpC,EAAK,WAAW,eAEzBqC,KAAUrC,EAAK,cACjBpD,EAAE,iDAAiD,sBAAsB,EACvE,MAAM0F,EAAmBtC,EAAK,WAAW,EAC3C,CAAC,IACDA,EAAK,YACHpD,EAAE,+CAA+C,oBAAoB,EACnE,MAAM0F,EAAmBtC,EAAK,SAAS,EACzC,CAAC,IACDA,EAAK,eACHpD,EAAE,iDAAiD,sBAAsB,EACvE,MAAM0F,EAAmBtC,EAAK,YAAY,EAC5C,CAAC,IACDpD,EAAE,+CAA+C,oBAAoB,EACnE,MAAM0F,EAAmBtC,EAAK,SAAS,EACzC,CAAC,GAEHuC,WAAgB;EAIpB,AAHA5D,EAAWlC,CAAc,GACzBoC,EAAY,IAAI,GAChBE,EAAa,EAAK,GAClBN,EAAW,EAAI;CACjB,GAGM+D,MAAsB,MAA0B;EACpD,IAAMC,IAAgBxB,EAAsB,IAAIyB,EAAS,IAAI,KAAK;EAUlE,AATA/D,EAAW;GACT,GAAGlC;GACH,cAAciG,EAAS;GACvB,WAAW,OAAOD,IAAgB,CAAC;GACnC,MAAMC,EAAS,OAAO,IAAI,OAAOA,EAAS,IAAI,IAAI;GAClD,QAAQA,EAAS,eAAe,IAAI,OAAOA,EAAS,YAAY,IAAI;EACtE,CAAC,GACD7D,EAAY,IAAI,GAChBE,EAAa,EAAK,GAClBN,EAAW,EAAI;CACjB,GAEMkE,KAAY,YAAY;EAC5B,EAAY,IAAI;EAChB,IAAMC,IAAelE,EAAQ,aAAa,KAAK;EAC/C,IAAI,CAACkE,GAAc;GACjB,EACEhG,EAAE,yDAAyD,4BAA4B,CACzF;GACA;EACF;EACA,IAAMjB,IAAQ;GACZ;GACA,WAAWW,EAAWoC,EAAQ,SAAS;GACvC,MAAMpC,EAAWoC,EAAQ,IAAI;GAC7B,QAAQpC,EAAWoC,EAAQ,MAAM;GACjC,WAAWpC,EAAWoC,EAAQ,SAAS;GACvC,aAAapC,EAAWoC,EAAQ,WAAW;GAC3C,kBAAkBqD;EACpB,GACMc,KAAe,MAA0B;GAE7C,AADAlE,EAAW;IAAE,GAAGlC;IAAgB;IAAc,WAAW,OAAOqG,CAAa;GAAE,CAAC,GAChF/D,EAAa,EAAK;GAClB,IAAMgE,IACJxB,KAAkBA,EAAe,SAASqB,KAAgBrB,EAAe,cAAc,IACnFA,EAAe,cACf1F;GAEN,AADA8D,EAAc,KAAK,IAAI,IAAIoD,IAAc,GAAI,GAC7ClD,EAAiBkD,CAAW;EAC9B;EAGA,IAAI,CAACpF,EAAY,UAGf,AAFA,MAAMA,EAAY,cAAcP,GAAIzB,CAAK,GACzCsC,EAAyB,GACzB4E,GAAavG,EAAWoC,EAAQ,SAAS,KAAKuB,EAAK,UAAU,CAAC;OAGhE,IAAI;GAEF,GAAY,MADU5C,EAAO,YAAY;IAAE,WAAWD;IAAI,GAAGzB;GAAM,CAAC,EAAA,CAChD,YAAY,CAAC;EACnC,SAAS,GAAG;GACV,IAAIJ,GAAgB,CAAC,GAAG;IAGtB,AAFA,MAAMoC,EAAY,cAAcP,GAAIzB,CAAK,GACzCsC,EAAyB,GACzB4E,GAAavG,EAAWoC,EAAQ,SAAS,KAAKuB,EAAK,UAAU,CAAC;IAC9D;GACF;GACA,EACE,aAAa,QACT,EAAE,UACFrD,EAAE,mDAAmD,wBAAwB,CACnF;EACF;CACF,GAEMoG,WAAqB;EAGzB,AAFA7D,EAAgBzC,EAAmB,GACnC2C,EAAiB,IAAI,GACrBJ,EAAgB,EAAI;CACtB,GAEMgE,KAAiB,YAAY;EACjC,EAAiB,IAAI;EACrB,IAAMtH,IAAQ;GACZ,gBAAgBW,EAAW4C,EAAa,cAAc;GACtD,mBAAmB5C,EAAW4C,EAAa,iBAAiB;GAC5D,OAAOA,EAAa,MAAM,KAAK,IAAIA,EAAa,MAAM,KAAK,IAAI,KAAA;EACjE;EACA,IAAI,CAACvB,EAAY,UAGf,AAFA,MAAMA,EAAY,uBAAuBP,GAAIzB,CAAK,GAClDsC,EAAyB,GACzBgB,EAAgB,EAAK;OAGvB,IAAI;GAEF,AADA,MAAM1B,EAAgB,YAAY;IAAE;IAAI;GAAM,CAAC,GAC/C0B,EAAgB,EAAK;EACvB,SAASiE,GAAG;GACV,IAAI3H,GAAgB2H,CAAC,GAAG;IAGtB,AAFA,MAAMvF,EAAY,uBAAuBP,GAAIzB,CAAK,GAClDsC,EAAyB,GACzBgB,EAAgB,EAAK;IACrB;GACF;GACA,EACEiE,aAAa,QACTA,EAAE,UACFtG,EACE,qDACA,iCACF,CACN;EACF;CACF,GAEMuG,KAAUf,IACd,kBAAA/G,IAAA,EAAA,UAAA,CACE,kBAAC+H,GAAD;EAAQ,SAAQ;EAAU,SAASb;EAAnC,UAAA;GACE,kBAACc,GAAD,EAAM,WAAU,UAAW,CAAA;GAAC;GAAEzG,EAAE,2CAA2C,SAAS;EAC9E;CACR,CAAA,GAAA,kBAACwG,GAAD;EAAQ,SAASJ;EAAc,UAAUzE;EAAzC,UAAA;GACE,kBAAC+E,IAAD,EAAc,WAAU,UAAW,CAAA;GAAE;GACpC/E,KACG3B,EAAE,gDAAgD,eAAe,IACjEA,EAAE,6CAA6C,UAAU;EACvD;CACR,CAAA,CAAA,EAAA,CAAA,IACA,KAAA;CAEJ,OACE,kBAACoF,GAAD;EACE,OAAOpF,EAAE,0CAA0C,iBAAiB;EACpE,aAAayF;EACJ;EAHX,UAAA;GAKE,kBAAC,UAAD;IACE,MAAK;IACL,eAAeH,GAAW,OAAO;IACjC,WAAU;IAHZ,UAAA;KAKE,kBAACqB,IAAD,EAAW,WAAU,UAAW,CAAA;KAAE;KACjC3G,EAAE,mDAAmD,kBAAkB;IAClE;;IAIN,CAACe,EAAY,YAAYG,EAAe,SAAS,MACjD,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,kBAAC0F,IAAD,EAAS,WAAU,4CAA6C,CAAA;KAChE,kBAAC,QAAD,EAAA,UACI7F,EAAY,WAcVf,EACE,kDACA,yCACA;MACE,OAAOkB,EAAe;MACtB,SAASlB,EACPkB,EAAe,WAAW,IACtB,4CACA,4CACJA,EAAe,WAAW,IAAI,WAAW,SAC3C;KACF,CACF,IAzBAlB,EACE,kDACA,yGACA,EACE,OACEkB,EAAe,SAAS,IACpB,KAAKA,EAAe,OAAO,GAAGlB,EAC5B,2CACA,QACF,EAAE,KACF,GACR,CACF,EAcA,CAAA;KACLe,EAAY,YAAYG,EAAe,SAAS,KAC/C,kBAACsF,GAAD;MACE,SAAQ;MACR,SAASzF,EAAY;MACrB,WAAU;MAET,UAAAf,EAAE,6CAA6C,WAAW;KACrD,CAAA;IAEP;;GAIP,kBAAC6G,EAAO,KAAR;IACE,SAAS,MAAiB;KAAE,SAAS;KAAG,GAAG;IAAG;IAC9C,SAAS;KAAE,SAAS;KAAG,GAAG;IAAE;IAC5B,YAAY1G,IAAS,EAAE,UAAU,EAAE,IAAI;KAAE,UAAU;KAAM,MAAMZ;IAAY;IAE3E,UAAA,kBAACuH,GAAD;KAAW,WAAU;KAAQ,MAAMtB;KAAQ,WAAU;KAArD,UAAA;MACE,kBAAC,OAAD;OAAK,WAAU;OACb,UAAA,kBAAC,OAAD;QAAK,WAAU;QAAf,UAAA,CACE,kBAACuB,GAAD;SACE,MAAeC,EAATxB,IAAUyB,KAAgCC,GAAjC,EAAO,WAAU,UAAW,CAAmC;SAC9E,MAAM1B,IAAS,6BAA6B;QAC7C,CAAA,GACD,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,OAAD;SAAK,WAAU;SACb,UAAA,kBAAC2B,IAAD,EAAa,QAAQ/D,EAAK,OAAS,CAAA;QAChC,CAAA,GACL,kBAAC,KAAD;SAAG,WAAU;SAAoC,UAAAqC;QAAW,CAAA,CACzD,EAAA,CAAA,CACF;;MACF,CAAA;MAEL,kBAAC,OAAD;OAAK,WAAU;OAAf,UAAA;QACGrC,EAAK,gBACJ,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;SAAG,WAAU;SACV,UAAApD,EAAE,iDAAiD,eAAe;QAClE,CAAA,GACH,kBAAC,KAAD;SAAG,WAAU;SACV,UAAAoH,EAAehE,EAAK,YAAY;QAChC,CAAA,CACA,EAAA,CAAA;QAENA,EAAK,aACJ,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;SAAG,WAAU;SACV,UAAApD,EAAE,4CAA4C,SAAS;QACvD,CAAA,GACH,kBAAC,KAAD;SAAG,WAAU;SACV,UAAAoH,EAAehE,EAAK,SAAS;QAC7B,CAAA,CACA,EAAA,CAAA;QAENA,EAAK,eACJ,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;SAAG,WAAU;SACV,UAAApD,EAAE,8CAA8C,WAAW;QAC3D,CAAA,GACH,kBAAC,KAAD;SAAG,WAAU;SACV,UAAAoH,EAAehE,EAAK,WAAW;QAC/B,CAAA,CACA,EAAA,CAAA;QAENA,EAAK,qBAAqB,QACzB,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;SAAG,WAAU;SACV,UAAApD,EAAE,sDAAsD,oBAAoB;QAC5E,CAAA,GACH,kBAAC,KAAD;SAAG,WAAU;SACV,UAAAA,EAAE,6CAA6C,kBAAkB,EAChE,KAAKoD,EAAK,kBACZ,CAAC;QACA,CAAA,CACA,EAAA,CAAA;QAENA,EAAK,iBAAiB,KACrB,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;SAAG,WAAU;SACV,UAAApD,EAAE,mDAAmD,iBAAiB;QACtE,CAAA,GACH,kBAAC,KAAD;SAAG,WAAU;SACV,UAAAqH,GAAWjE,EAAK,cAAc;QAC9B,CAAA,CACA,EAAA,CAAA;OAEJ;;MAEJA,EAAK,SACJ,kBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;QACV,UAAApD,EAAE,6BAA6B,OAAO;OACtC,CAAA,GACH,kBAAC,KAAD;QAAG,WAAU;QAAwD,UAAAoD,EAAK;OAAS,CAAA,CAChF;;KAEE;;GACD,CAAA;GAGXoC,KAAUxC,KAAgB,KACzB,kBAAC6D,EAAO,KAAR;IACE,SAAS,MAAiB;KAAE,SAAS;KAAG,GAAG;IAAG;IAC9C,SAAS;KAAE,SAAS;KAAG,GAAG;IAAE;IAC5B,YAAY1G,IAAS,EAAE,UAAU,EAAE,IAAI;KAAE,UAAU;KAAM,MAAMZ;IAAY;IAC3E,WAAU;IAEV,UAAA,kBAACuH,GAAD;KACE,WAAU;KACV,WAAU;KAFZ,UAAA,CAIE,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,kBAACC,GAAD;OAAU,MAAM,kBAACO,IAAD,EAAO,WAAU,UAAW,CAAA;OAAG,MAAK;MAA4B,CAAA,GAChF,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;OAAG,WAAU;OACV,UAAAtH,EAAE,4CAA4C,SAAS;MACvD,CAAA,GACH,kBAAC,KAAD;OAAG,WAAU;OACV,UAAAA,EAAE,8CAA8C,sBAAsB,EACrE,MAAMuH,EAAevE,EAAa,EACpC,CAAC;MACA,CAAA,CACA,EAAA,CAAA,CACF;KACL,CAAA,GAAA,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,kBAACwD,GAAD;OACE,SAAQ;OACR,MAAK;OACL,eAAe;QAEb,AADAzD,GAAe,MAAUyE,KAAOA,IAAO,IAAc,GACrDvE,GAAkB,MAAMwE,IAAI,EAAE;OAChC;OAEC,UAAAzH,EAAE,2CAA2C,MAAM;MAC9C,CAAA,GACR,kBAACwG,GAAD;OACE,SAAQ;OACR,MAAK;OACL,eAAe;QAEb,AADAzD,EAAc,IAAI,GAClBE,EAAiB,CAAC;OACpB;OANF,UAAA;QAQE,kBAACyE,IAAD,EAAG,WAAU,UAAW,CAAA;QAAC;QAAE1H,EAAE,6CAA6C,MAAM;OAC1E;MACL,CAAA,CAAA;KACI,CAAA,CAAA;;GACD,CAAA;GAIbwF,KAAUpB,EAAU,SAAS,KAC5B,kBAACyC,EAAO,KAAR;IACE,SAAS,MAAiB;KAAE,SAAS;KAAG,GAAG;IAAG;IAC9C,SAAS;KAAE,SAAS;KAAG,GAAG;IAAE;IAC5B,YAAY1G,IAAS,EAAE,UAAU,EAAE,IAAI;KAAE,UAAU;KAAM,MAAMZ;KAAa,OAAO;IAAK;IACxF,WAAU;IAEV,UAAA,kBAACuH,GAAD;KAAW,WAAU;KAAQ,WAAU;KAAvC,UAAA,CACE,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,kBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACE,kBAACC,GAAD,EAAU,MAAM,kBAACY,IAAD,EAAY,WAAU,UAAW,CAAA,EAAI,CAAA,GACrD,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;QAAI,WAAU;QACX,UAAA3H,EAAE,kDAAkD,gBAAgB;OACnE,CAAA,GACJ,kBAAC,KAAD;QAAG,WAAU;QACV,UAAA4E,KACG5E,EACE,qDACA,2CACF,IACAA,EACE,qDACA,qCACA;SACE,SAAS0E,IAAoB;SAC7B,OAAON,EAAU;QACnB,CACF;OACH,CAAA,CACA,EAAA,CAAA,CACF;MACL,CAAA,GAAA,kBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACE,kBAACoC,GAAD;QACE,SAAQ;QACR,MAAK;QACL,eAAe7D,GAAqB,KAAK,IAAI+B,IAAoB,GAAG,CAAC,CAAC;QACtE,UAAUA,MAAsB;QAChC,cAAY1E,EACV,qDACA,mBACF;QAEA,UAAA,kBAAC4H,IAAD,EAAa,WAAU,UAAW,CAAA;OAC5B,CAAA,GACR,kBAACpB,GAAD;QACE,SAAQ;QACR,MAAK;QACL,eACE7D,GAAqB,KAAK,IAAI+B,IAAoB,GAAGN,EAAU,SAAS,CAAC,CAAC;QAE5E,UAAUM,KAAqBN,EAAU,SAAS;QAClD,cAAYpE,EAAE,iDAAiD,eAAe;QAE9E,UAAA,kBAAC6H,IAAD,EAAc,WAAU,UAAW,CAAA;OAC7B,CAAA,CACL;MACF,CAAA,CAAA;KAEJ,CAAA,GAAAlD,KACC,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,kBAAC,OAAD,EAAA,UAAA;OACE,kBAAC,KAAD;QAAG,WAAU;QAA2C,UAAAA,EAAe;OAAQ,CAAA;OAC/E,kBAAC,KAAD;QAAG,WAAU;QAAb,UAAA;SACGmD,GAAgBnD,EAAe,WAAW;SAAE;SAAIA,EAAe;SAAK;SAAG;SACvEA,EAAe;SAAK;SAAE3E,EAAE,yCAAyC,MAAM;SACvE2E,EAAe,eAAe,IAC3B,MAAMoD,EAAapD,EAAe,YAAY,MAC9C;SACHA,EAAe,cAAc,IAC1B,MAAM4C,EAAe5C,EAAe,WAAW,EAAE,GAAG3E,EAClD,yCACA,MACF,MACA;QACH;;OACH,kBAAC,KAAD;QAAG,WAAU;QAAb,UAAA;SACGqE,EAAsB,IAAIM,EAAe,IAAI,KAAK;SAAG;SACrD3E,EAAE,2CAA2C,IAAI;SAAG;SACpD,KAAK,IAAI2E,EAAe,MAAM,CAAC;SAAG;SAClC3E,EAAE,+CAA+C,aAAa;QAC9D;;MACA,EAAA,CAAA,GACL,kBAACwG,GAAD;OAAQ,MAAK;OAAK,eAAeZ,GAAmBjB,CAAc;OAAlE,UAAA;QACE,kBAAC8B,GAAD,EAAM,WAAU,UAAW,CAAA;QAAE;QAC5BzG,EAAE,oDAAoD,mBAAmB;OACpE;MACL,CAAA,CAAA;KAEE,CAAA,CAAA;;GACD,CAAA;GAId,kBAAC6G,EAAO,KAAR;IACE,WAAU;IACV,UAAU1G,IAAS,KAAA,IAAYX;IAC/B,SAAS,MAAiB;IAC1B,SAAQ;IAJV,UAAA;KAME,kBAACqH,EAAO,KAAR;MAAY,UAAU1G,IAAS,KAAA,IAAYV;MACzC,UAAA,kBAACuI,GAAD;OACE,MACE,kBAAC,QAAD;QAAM,WAAU;QACd,UAAA,kBAACd,GAAD,EAAU,WAAU,UAAW,CAAA;OAC3B,CAAA;OAER,OAAOe,EAAa5E,EAAK,MAAM;OAC/B,OAAOrD,EACLqD,EAAK,WAAW,IACZ,8CACA,8CACJA,EAAK,WAAW,IAAI,cAAc,YACpC;MACD,CAAA;KACS,CAAA;KACZ,kBAACwD,EAAO,KAAR;MAAY,UAAU1G,IAAS,KAAA,IAAYV;MACzC,UAAA,kBAACuI,GAAD;OACE,MACE,kBAAC,QAAD;QAAM,WAAU;QACd,UAAA,kBAACE,IAAD,EAAQ,WAAU,UAAW,CAAA;OACzB,CAAA;OAER,OAAOlI,EAAE,6CAA6C,iBAAiB,EACrE,QAAQiI,EAAapE,EAAW,EAClC,CAAC;OACD,OAAO7D,EAAE,gDAAgD,cAAc;MACxE,CAAA;KACS,CAAA;KACZ,kBAAC6G,EAAO,KAAR;MAAY,UAAU1G,IAAS,KAAA,IAAYV;MACzC,UAAA,kBAACuI,GAAD;OACE,MACE,kBAAC,QAAD;QAAM,WAAU;QACd,UAAA,kBAACV,IAAD,EAAO,WAAU,UAAW,CAAA;OACxB,CAAA;OAER,OAAOrD,MAAe,OAAqC,MAA9BsD,EAAetD,EAAW;OACvD,OAAOjE,EAAE,6CAA6C,UAAU;MACjE,CAAA;KACS,CAAA;KACZ,kBAAC6G,EAAO,KAAR;MAAY,UAAU1G,IAAS,KAAA,IAAYV;MACzC,UAAA,kBAACuI,GAAD;OACE,MACE,kBAAC,QAAD;QAAM,WAAU;QACd,UAAA,kBAACf,IAAD,EAAO,WAAU,UAAW,CAAA;OACxB,CAAA;OAER,OAAO7D,EAAK,iBAAiB,IAAIiE,GAAWjE,EAAK,cAAc,IAAI;OACnE,OAAOpD,EAAE,mDAAmD,iBAAiB;MAC9E,CAAA;KACS,CAAA;IACF;;GAGZ,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;MAAI,WAAU;MACX,UAAAA,EAAE,+CAA+C,aAAa;KAC7D,CAAA,GACJ,kBAAC,KAAD;MAAG,WAAU;MACV,UAAAA,EACC,0DACA,8DACF;KACC,CAAA,CACA,EAAA,CAAA,GACJwF,KACC,kBAACgB,GAAD;MAAQ,SAAQ;MAAU,MAAK;MAAK,SAASb;MAAS,WAAU;MAAhE,UAAA;OACE,kBAACc,GAAD,EAAM,WAAU,UAAW,CAAA;OAAC;OAAEzG,EAAE,2CAA2C,SAAS;MAC9E;KAEP,CAAA,CAAA;IAEJ,CAAA,GAAAsD,EAAO,WAAW,IACjB,kBAAC6E,IAAD;KACE,cAAa;KACb,MAAM,kBAACjB,GAAD,EAAU,WAAU,YAAa,CAAA;KACvC,OAAOlH,EAAE,iDAAiD,oBAAoB;KAC9E,aAAaA,EACXwF,IACI,sDACA,yDACJA,IACI,uDACA,yCACN;KACA,QACEA,IACE,kBAACgB,GAAD;MAAQ,SAASb;MAAjB,UAAA;OACE,kBAACc,GAAD,EAAM,WAAU,UAAW,CAAA;OAAE;OAC5BzG,EAAE,2CAA2C,SAAS;MACjD;KACN,CAAA,IAAA,KAAA;IAEP,CAAA,IAED,kBAAC6G,EAAO,KAAR;KACE,WAAU;KACV,UAAU1G,IAAS,KAAA,IAAYX;KAC/B,SAAS,MAAiB;KAC1B,SAAQ;KAEP,UAAA8D,EAAO,KAAK,MAAU;MACrB,IAAM8E,IAAUC,EAAM,KAAK,QAAQ,MAAO7E,EAAG,gBAAgB,CAAC,CAAC;MAC/D,OACE,kBAACqD,EAAO,KAAR;OAA6B,UAAU1G,IAAS,KAAA,IAAYV;OAC1D,UAAA,kBAACqH,GAAD;QAAW,WAAU;QAAQ,WAAU;QAAvC,UAAA,CACE,kBAAC,OAAD;SAAK,WAAU;SAAf,UAAA,CACE,kBAAC,OAAD;UAAK,WAAU;UAAf,UAAA;WACE,kBAACC,GAAD,EAAU,MAAM,kBAACG,GAAD,EAAU,WAAU,UAAW,CAAA,EAAI,CAAA;WACnD,kBAAC,MAAD;YAAI,WAAU;YACX,UAAAmB,EAAM;WACL,CAAA;WACHD,IAAU,KACT,kBAAC,QAAD;YAAM,WAAU;YAAhB,UAAA;aACGA;aAAS;aACTpI,EACCoI,MAAY,IACR,gDACA,6CACJA,MAAY,IAAI,OAAO,KACzB;YACI;;UAEL;SACL,CAAA,GAAA,kBAAC,QAAD;UAAM,WAAU;UAAhB,UAAA;WACGH,EAAaI,EAAM,KAAK,MAAM;WAAG;WACjCrI,EACCqI,EAAM,KAAK,WAAW,IAClB,yCACA,yCACJA,EAAM,KAAK,WAAW,IAAI,QAAQ,MACpC;UACI;SACH,CAAA,CAAA;QACL,CAAA,GAAA,kBAAC,MAAD;SAAI,WAAU;SACX,UAAAA,EAAM,KAAK,KAAK,MAAO;UACtB,IAAMC,IAAW9E,EAAG,cAAc,KAAKA,EAAG,YAAY;UACtD,OACE,kBAAC,MAAD;WAEE,WACE,8FACCA,EAAG,mBACA,8EACA;WANR,UAAA,CASE,kBAAC,OAAD;YAAK,WAAU;YAAf,UAAA,CACE,kBAAC,QAAD;aAAM,WAAU;aACb,UAAAxD,EACC,2CACA,yCACA;cACE,QAAQwD,EAAG;cACX,MAAMyE,EAAazE,EAAG,IAAI;cAC1B,QAAQuE,EAAavE,EAAG,MAAM;aAChC,CACF;YACI,CAAA,GACLA,EAAG,oBACF,kBAAC,QAAD;aAAM,WAAU;aACd,UAAA,kBAAC2D,IAAD,EAAa,QAAO,KAAM,CAAA;YACtB,CAAA,CAEL;WACL,CAAA,GAAA,kBAAC,OAAD;YAAK,WAAU;YAAf,UAAA,CACGmB,KAAY9E,EAAG,cAAc,KAC5B,kBAAC,QAAD;aAAM,WAAU;aAAhB,UAAA,CACE,kBAAC8D,IAAD,EAAO,WAAU,0BAA2B,CAAA,GAC3CC,EAAe/D,EAAG,WAAW,CAC1B;YAEP,CAAA,GAAA8E,KAAY9E,EAAG,YAAY,KAC1B,kBAAC,QAAD;aAAM,WAAU;aAAhB,UAAA,CACE,kBAAC+E,IAAD,EAAO,WAAU,0BAA2B,CAAA,GAC3CvI,EACC,8CACA,kBACA,EACE,UAAUiI,EAAazE,EAAG,SAAS,EACrC,CACF,CACI;YAEL,CAAA,CAAA;WACH,CAAA,CAAA;UA9CG,GAAAA,EAAG,EA8CN;SAER,CAAC;QACC,CAAA,CACK;;MACD,GAtFK6E,EAAM,IAsFX;KAEhB,CAAC;IACS,CAAA,CAEX;;GAGL,kBAAC,OAAD;IAAK,WAAU;IACb,UAAA,kBAACG,IAAD;KACE,YAAW;KACX,UAAUpF,EAAK;KACf,OAAOpD,EAAE,kDAAkD,gBAAgB;KAC3E,aAAaA,EACX,6DACA,yEACF;IACD,CAAA;GACE,CAAA;GAGL,kBAACyI,IAAD;IAAkB,MAAM7G;IAAS,cAAcC;IAC7C,UAAA,kBAAC6G,IAAD,EAAA,UAAA;KACE,kBAACC,IAAD,EAAA,UAAA,CACE,kBAACC,IAAD,EAAA,UACG5I,EAAE,sDAAsD,WAAW,EAC/C,CAAA,GACvB,kBAAC6I,IAAD,EAAA,UACG7I,EACC,4DACA,sIACF,EAC2B,CAAA,CACP,EAAA,CAAA;KAExB,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA;OACE,kBAAC,OAAD;QAAK,WAAU;QAAf,UAAA,CACE,kBAAC8I,GAAD;SAAO,SAAQ;SACZ,UAAA9I,EAAE,kDAAkD,UAAU;QAC1D,CAAA,GACP,kBAAC+I,GAAD;SACE,IAAG;SACH,OAAOjH,EAAQ;SACf,WAAW,MAAM;UACf,IAAMkE,IAAe,EAAE,OAAO;UAI9B,AAHAjE,GAAY,OAAO;WAAE,GAAGiH;WAAG;UAAa,EAAE,GAG1C7G,EAAa,EAAK;SACpB;SACA,aAAanC,EACX,wDACA,iBACF;QACD,CAAA,CACE;;OAEL,kBAAC,OAAD;QAAK,WAAU;QAAf,UAAA;SACE,kBAAC,OAAD;UAAK,WAAU;UAAf,UAAA,CACE,kBAAC8I,GAAD;WAAO,SAAQ;WACZ,UAAA9I,EAAE,mDAAmD,YAAY;UAC7D,CAAA,GACP,kBAAC+I,GAAD;WACE,IAAG;WACH,MAAK;WACL,WAAU;WACV,KAAK;WACL,OAAOjH,EAAQ;WACf,WAAW,MAAMC,GAAY,OAAO;YAAE,GAAGiH;YAAG,WAAW,EAAE,OAAO;WAAM,EAAE;WACxE,aAAahJ,EAAE,yDAAyD,GAAG;UAC5E,CAAA,CACE;;SACL,kBAAC,OAAD;UAAK,WAAU;UAAf,UAAA,CACE,kBAAC8I,GAAD;WAAO,SAAQ;WACZ,UAAA9I,EAAE,8CAA8C,MAAM;UAClD,CAAA,GACP,kBAAC+I,GAAD;WACE,IAAG;WACH,MAAK;WACL,WAAU;WACV,KAAK;WACL,OAAOjH,EAAQ;WACf,WAAW,MAAMC,GAAY,OAAO;YAAE,GAAGiH;YAAG,MAAM,EAAE,OAAO;WAAM,EAAE;WACnE,aAAahJ,EAAE,oDAAoD,GAAG;UACvE,CAAA,CACE;;SACL,kBAAC,OAAD;UAAK,WAAU;UAAf,UAAA,CACE,kBAAC8I,GAAD;WAAO,SAAQ;WACZ,UAAA9I,EAAE,gDAAgD,aAAa;UAC3D,CAAA,GACP,kBAAC+I,GAAD;WACE,IAAG;WACH,MAAK;WACL,WAAU;WACV,KAAK;WACL,MAAK;WACL,OAAOjH,EAAQ;WACf,WAAW,MAAMC,GAAY,OAAO;YAAE,GAAGiH;YAAG,QAAQ,EAAE,OAAO;WAAM,EAAE;WACrE,aAAahJ,EAAE,sDAAsD,IAAI;UAC1E,CAAA,CACE;;SACL,kBAAC,OAAD;UAAK,WAAU;UAAf,UAAA,CACE,kBAAC8I,GAAD;WAAO,SAAQ;WACZ,UAAA9I,EAAE,kDAAkD,cAAc;UAC9D,CAAA,GACP,kBAAC+I,GAAD;WACE,IAAG;WACH,MAAK;WACL,WAAU;WACV,KAAK;WACL,OAAOjH,EAAQ;WACf,WAAW,MAAMC,GAAY,OAAO;YAAE,GAAGiH;YAAG,WAAW,EAAE,OAAO;WAAM,EAAE;WACxE,aAAahJ,EACX,wDACA,UACF;UACD,CAAA,CACE;;SACL,kBAAC,OAAD;UAAK,WAAU;UAAf,UAAA,CACE,kBAAC8I,GAAD;WAAO,SAAQ;WACZ,UAAA9I,EAAE,kDAAkD,gBAAgB;UAChE,CAAA,GACP,kBAAC+I,GAAD;WACE,IAAG;WACH,MAAK;WACL,WAAU;WACV,KAAK;WACL,OAAOjH,EAAQ;WACf,WAAW,MAAMC,GAAY,OAAO;YAAE,GAAGiH;YAAG,aAAa,EAAE,OAAO;WAAM,EAAE;WAC1E,aAAahJ,EACX,wDACA,UACF;UACD,CAAA,CACE;;QACF;;OAEL,kBAAC,OAAD;QAAK,WAAU;QAAf,UAAA,CACE,kBAAC,OAAD;SAAK,WAAU;SAAf,UAAA,CACGmF,KACC,kBAAC8D,IAAD,EAAQ,WAAU,mCAAoC,CAAA,IAEtD,kBAACC,IAAD,EAAO,WAAU,sBAAuB,CAAA,GAE1C,kBAAC,OAAD,EAAA,UAAA,CACE,kBAACJ,GAAD;UAAO,SAAQ;UAAa,WAAU;UACnC,UAAA9I,EAAE,mDAAmD,iBAAiB;SAClE,CAAA,GACP,kBAAC,KAAD;UAAG,WAAU;UACV,UAAAkD,EAAQ,OACLlD,EACE,mDACA,2DACA;WACE,MAAMiI,EAAa/E,EAAQ,KAAK,IAAI;WACpC,QAAQ6E,EAAa7E,EAAQ,KAAK,MAAM;UAC1C,CACF,IACApB,EAAQ,aAAa,KAAK,IACxB9B,EACE,gDACA,4DACF,IACAA,EACE,+CACA,4BACF;SACL,CAAA,CACA,EAAA,CAAA,CACF;QACL,CAAA,GAAA,kBAACmJ,IAAD;SACE,IAAG;SACH,SAAShE;SACT,kBAAkB,MAAM;UAEtB,AADAhD,EAAa,EAAI,GACjBJ,GAAY,OAAO;WAAE,GAAGiH;WAAG,kBAAkBI;UAAE,EAAE;SACnD;QACD,CAAA,CACE;;OAEJpH,MAAY,kBAAC,KAAD;QAAG,WAAU;QAAkC,UAAAA;OAAY,CAAA;MACrE;;KAEL,kBAACqH,IAAD,EAAA,UAAA,CACE,kBAAC7C,GAAD;MAAQ,SAAQ;MAAU,eAAe3E,EAAW,EAAK;MACtD,UAAA7B,EAAE,6BAA6B,OAAO;KACjC,CAAA,GACR,kBAACwG,GAAD;MAAQ,SAAST;MAAW,UAAUtF,EAAO;MAC1C,UAAAA,EAAO,YACJT,EAAE,+BAA+B,UAAU,IAC3CA,EAAE,2CAA2C,SAAS;KACpD,CAAA,CACc,EAAA,CAAA;IACD,EAAA,CAAA;GACT,CAAA;GAGlB,kBAACyI,IAAD;IAAkB,MAAMrG;IAAc,cAAcC;IAClD,UAAA,kBAACqG,IAAD,EAAA,UAAA;KACE,kBAACC,IAAD,EAAA,UAAA,CACE,kBAACC,IAAD,EAAA,UACG5I,EAAE,wDAAwD,kBAAkB,EACxD,CAAA,GACvB,kBAAC6I,IAAD,EAAA,UACG7I,EACC,8DACA,8CACF,EAC2B,CAAA,CACP,EAAA,CAAA;KAExB,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA;OACGqD,EAAK,WAAW,KACf,kBAAC,OAAD;QAAK,WAAU;QAAf,UAAA,CACE,kBAACiG,IAAD,EAAe,WAAU,mDAAoD,CAAA,GAC7E,kBAAC,KAAD;SAAG,WAAU;SAAb,UAAA;UACE,kBAAC,QAAD;WAAM,WAAU;WACb,UAAAtJ,EAAE,kDAAkD,iBAAiB;UAClE,CAAA;UAAE;UACPA,EACC,wDACA,uEACF;SACC;QACA,CAAA,CAAA;;OAEP,kBAAC,OAAD;QAAK,WAAU;QAAf,UAAA,CACE,kBAAC,OAAD;SAAK,WAAU;SAAf,UAAA,CACE,kBAAC8I,GAAD;UAAO,SAAQ;UACZ,UAAA9I,EAAE,mDAAmD,iBAAiB;SAClE,CAAA,GACP,kBAAC+I,GAAD;UACE,IAAG;UACH,MAAK;UACL,WAAU;UACV,KAAK;UACL,OAAOzG,EAAa;UACpB,WAAW,MACTC,GAAiB,OAAO;WAAE,GAAGyG;WAAG,gBAAgB,EAAE,OAAO;UAAM,EAAE;UAEnE,aAAahJ,EACX,wDACA,UACF;SACD,CAAA,CACE;QACL,CAAA,GAAA,kBAAC,OAAD;SAAK,WAAU;SAAf,UAAA,CACE,kBAAC8I,GAAD;UAAO,SAAQ;UACZ,UAAA9I,EAAE,6CAA6C,2BAA2B;SACtE,CAAA,GACP,kBAAC+I,GAAD;UACE,IAAG;UACH,MAAK;UACL,WAAU;UACV,KAAK;UACL,KAAK;UACL,OAAOzG,EAAa;UACpB,WAAW,MACTC,GAAiB,OAAO;WAAE,GAAGyG;WAAG,mBAAmB,EAAE,OAAO;UAAM,EAAE;UAEtE,aAAahJ,EACX,wDACA,UACF;SACD,CAAA,CACE;QACF,CAAA,CAAA;;OACL,kBAAC,OAAD;QAAK,WAAU;QAAf,UAAA,CACE,kBAAC8I,GAAD;SAAO,SAAQ;SAAsB,UAAA9I,EAAE,6BAA6B,OAAO;QAAS,CAAA,GACpF,kBAACuJ,IAAD;SACE,IAAG;SACH,MAAM;SACN,OAAOjH,EAAa;SACpB,WAAW,MAAMC,GAAiB,OAAO;UAAE,GAAGyG;UAAG,OAAO,EAAE,OAAO;SAAM,EAAE;SACzE,aAAahJ,EACX,6DACA,2BACF;QACD,CAAA,CACE;;OAEJwC,MAAiB,kBAAC,KAAD;QAAG,WAAU;QAAkC,UAAAA;OAAiB,CAAA;MAC/E;;KAEL,kBAAC6G,IAAD,EAAA,UAAA,CACE,kBAAC7C,GAAD;MAAQ,SAAQ;MAAU,eAAenE,EAAgB,EAAK;MAC3D,UAAArC,EAAE,8BAA8B,QAAQ;KACnC,CAAA,GACR,kBAACwG,GAAD;MAAQ,SAASH;MAAgB,UAAU1F,EAAgB;MACxD,UAAAA,EAAgB,YACbX,EAAE,kCAAkC,aAAa,IACjDA,EAAE,oDAAoD,kBAAkB;KACtE,CAAA,CACc,EAAA,CAAA;IACD,EAAA,CAAA;GACT,CAAA;EACR;;AAEhB"}
|
|
@@ -7,5 +7,5 @@
|
|
|
7
7
|
* active program). In-progress sessions are highlighted with an accent ring and
|
|
8
8
|
* a "Resume" affordance. No mock data — everything comes from the myb* hooks.
|
|
9
9
|
*/
|
|
10
|
-
export declare function SessionsPage(): import(
|
|
10
|
+
export declare function SessionsPage(): import('react').JSX.Element;
|
|
11
11
|
//# sourceMappingURL=SessionsPage.d.ts.map
|