@burdenoff/fe-libs 2026.1021.1 → 2026.1021.3

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/shared.js CHANGED
@@ -27,116 +27,118 @@ import { attemptTokenRefresh as Ot, clearAuthSessionStorage as kt, hasAuthGraphQ
27
27
  import { clearSSoCookie as Pt, clearShellSsoCookies as Ft, getSSoCookie as It, isSharedSsoCookieDomain as Lt, isTrustedSsoOrigin as Rt, readShellSsoCookie as zt, setSSoCookie as Bt, setShellSsoCookies as Vt } from "./shared/utils/authCookie.js";
28
28
  import { getNativeBridge as Ht } from "./shared/native/bridge.js";
29
29
  import { getPlatform as Ut, isAndroid as Wt, isElectron as Gt, isIOS as Kt, isInstalledApp as qt, isNative as Jt, isStandalonePWA as Yt, isWeb as Xt, isWebBrowser as Zt } from "./shared/native/platform.js";
30
- import { SSORedirectSpinner as Qt, checkRemoteSLO as $t, checkSLO as en, clearLocalAuthState as tn, getSSORedirectUrl as nn } from "./shared/components/SSORedirectGuard.js";
31
- import { SSO_DEPOSITED_PARAM as rn, beginSsoNavigation as an, buildSsoDepositUrl as on, clearSsoDepositState as sn, clearSsoNavigation as cn, consumeSsoDepositMarker as ln, isSsoNavigationPending as un, markSsoDepositDone as dn, markSsoDepositPending as fn, mintSsoSessionTokens as pn, readSsoDepositState as mn, shouldAttemptSsoDeposit as hn } from "./shared/utils/ssoDeposit.js";
32
- import { AppInitializer as gn, useRegistryHelpers as _n, useShellNavigate as vn } from "./shared/utils/appHelpers.js";
33
- import { LogLevel as yn } from "./shared/logger/types.js";
34
- import { Logger as bn } from "./shared/logger/Logger.js";
35
- import { LogManager as xn, logManager as Sn } from "./shared/logger/LogManager.js";
36
- import { ConsoleTransport as Cn } from "./shared/logger/ConsoleTransport.js";
37
- import { clearUserContext as wn, initializeLogger as Tn, setUserContext as En } from "./shared/utils/loggerInit.js";
38
- import { createProfileScopedStorage as Dn, getProfileScopedKey as On } from "./shared/utils/profileScopedStorage.js";
39
- import { QUOTA_EXHAUSTED_CODE as kn, RESOURCE_CAP_EXCEEDED_CODE as An, STORAGE_QUOTA_EXCEEDED_CODE as jn, UPGRADE_ERROR_CODES as Mn, buildQuotaExhaustedMessage as Nn, extractQuotaExhaustedExtensions as Pn, extractUpgradeErrorExtensions as Fn, isQuotaExhaustedError as In, isUpgradeError as Ln } from "./shared/utils/quotaErrors.js";
40
- import { INLINE_ENCODE as Rn, downscaleImage as zn, selectInlineBase64 as Bn } from "./shared/utils/imageDownscale.js";
41
- import { cn as Vn } from "./shared-utils.js";
42
- import { nativeActionSheet as Hn, nativeConfirm as Un, nativeCopyText as Wn, nativeImpact as Gn, nativeNotify as Kn, nativeOpenUrl as qn, nativeSelection as Jn, nativeShare as Yn, nativeToast as Xn } from "./shared/native/consumers.js";
43
- import { SafeAreaView as Zn } from "./shared/native/SafeAreaView.js";
44
- import { readInitialNetworkStatus as Qn, reduceNetworkStatus as $n, useNetworkStatus as er } from "./shared/native/hooks/useNetworkStatus.js";
45
- import { PULL_TO_REFRESH_THRESHOLD as tr, computePullOffset as nr, computePullProgress as rr, usePullToRefresh as ir } from "./shared/native/hooks/usePullToRefresh.js";
46
- import { useReturnFocus as ar } from "./shared/hooks/useReturnFocus.js";
47
- import { ActorIdentity as or } from "./shared/actors/ActorIdentity.js";
48
- import { buildActorFallback as sr, useActorProfiles as cr } from "./shared/actors/useActorProfiles.js";
49
- import { ErrorBoundary as lr } from "./shared/components/ErrorBoundary.js";
50
- import { RequireAuth as ur, RequireGuest as dr } from "./shared/components/RequireAuth.js";
51
- import { PermissionButton as fr, PermissionGate as pr, PermissionLink as mr } from "./shared/components/PermissionGate.js";
52
- import { AccessDenied as hr, PermissionDenied as gr } from "./shared/components/AccessDenied.js";
53
- import { ErrorFallback as _r } from "./shared/components/ErrorFallback.js";
54
- import { LoadingFallback as vr, PageLoadingFallback as yr, SectionLoadingFallback as br } from "./shared/components/LoadingFallback.js";
55
- import { MicrofrontendErrorBoundary as xr } from "./shared/components/MicrofrontendErrorBoundary.js";
56
- import { ConditionalShell as Sr } from "./shared/components/ConditionalShell.js";
57
- import { usePWA as Cr } from "./shared/hooks/usePWA.js";
58
- import { PWAInstallBanner as wr } from "./shared/components/PWAInstallBanner.js";
59
- import { ErrorBoundary as Tr } from "./shared/components/AppErrorBoundary.js";
60
- import { FeatureFlagProvider as Er, useFeatureFlags as Dr } from "./shared/feature-flags/FeatureFlagProvider.js";
61
- import { useFeatureFlag as Or, useFeatureFlagDetails as kr, useFeatureFlagValue as Ar } from "./shared/feature-flags/useFeatureFlag.js";
62
- import { FeatureGate as jr } from "./shared/feature-flags/FeatureGate.js";
30
+ import { assignLocationWithAllowlist as Qt, isAllowedRedirectUrl as $t, openUrlInNewTabWithAllowlist as en, replaceLocationWithAllowlist as tn } from "./shared/utils/redirectAllowlist.js";
31
+ import { SSORedirectSpinner as nn, checkRemoteSLO as rn, checkSLO as an, clearLocalAuthState as on, getSSORedirectUrl as sn, redirectToSSO as cn } from "./shared/components/SSORedirectGuard.js";
32
+ import { SSO_DEPOSITED_PARAM as ln, beginSsoNavigation as un, buildSsoDepositUrl as dn, clearSsoDepositState as fn, clearSsoNavigation as pn, consumeSsoDepositMarker as mn, isSsoNavigationPending as hn, markSsoDepositDone as gn, markSsoDepositPending as _n, mintSsoSessionTokens as vn, readSsoDepositState as yn, shouldAttemptSsoDeposit as bn } from "./shared/utils/ssoDeposit.js";
33
+ import { AppInitializer as xn, useRegistryHelpers as Sn, useShellNavigate as Cn } from "./shared/utils/appHelpers.js";
34
+ import { LogLevel as wn } from "./shared/logger/types.js";
35
+ import { Logger as Tn } from "./shared/logger/Logger.js";
36
+ import { LogManager as En, logManager as Dn } from "./shared/logger/LogManager.js";
37
+ import { ConsoleTransport as On } from "./shared/logger/ConsoleTransport.js";
38
+ import { clearUserContext as kn, initializeLogger as An, setUserContext as jn } from "./shared/utils/loggerInit.js";
39
+ import { createProfileScopedStorage as Mn, getProfileScopedKey as Nn } from "./shared/utils/profileScopedStorage.js";
40
+ import { QUOTA_EXHAUSTED_CODE as Pn, RESOURCE_CAP_EXCEEDED_CODE as Fn, STORAGE_QUOTA_EXCEEDED_CODE as In, UPGRADE_ERROR_CODES as Ln, buildQuotaExhaustedMessage as Rn, extractQuotaExhaustedExtensions as zn, extractUpgradeErrorExtensions as Bn, isQuotaExhaustedError as Vn, isUpgradeError as Hn } from "./shared/utils/quotaErrors.js";
41
+ import { INLINE_ENCODE as Un, downscaleImage as Wn, selectInlineBase64 as Gn } from "./shared/utils/imageDownscale.js";
42
+ import { cn as Kn } from "./shared-utils.js";
43
+ import { nativeActionSheet as qn, nativeConfirm as Jn, nativeCopyText as Yn, nativeImpact as Xn, nativeNotify as Zn, nativeOpenUrl as Qn, nativeSelection as $n, nativeShare as er, nativeToast as tr } from "./shared/native/consumers.js";
44
+ import { SafeAreaView as nr } from "./shared/native/SafeAreaView.js";
45
+ import { readInitialNetworkStatus as rr, reduceNetworkStatus as ir, useNetworkStatus as ar } from "./shared/native/hooks/useNetworkStatus.js";
46
+ import { PULL_TO_REFRESH_THRESHOLD as or, computePullOffset as sr, computePullProgress as cr, usePullToRefresh as lr } from "./shared/native/hooks/usePullToRefresh.js";
47
+ import { useReturnFocus as ur } from "./shared/hooks/useReturnFocus.js";
48
+ import { ActorIdentity as dr } from "./shared/actors/ActorIdentity.js";
49
+ import { buildActorFallback as fr, useActorProfiles as pr } from "./shared/actors/useActorProfiles.js";
50
+ import { ErrorBoundary as mr } from "./shared/components/ErrorBoundary.js";
51
+ import { RequireAuth as hr, RequireGuest as gr } from "./shared/components/RequireAuth.js";
52
+ import { PermissionButton as _r, PermissionGate as vr, PermissionLink as yr } from "./shared/components/PermissionGate.js";
53
+ import { AccessDenied as br, PermissionDenied as xr } from "./shared/components/AccessDenied.js";
54
+ import { ErrorFallback as Sr } from "./shared/components/ErrorFallback.js";
55
+ import { LoadingFallback as Cr, PageLoadingFallback as wr, SectionLoadingFallback as Tr } from "./shared/components/LoadingFallback.js";
56
+ import { MicrofrontendErrorBoundary as Er } from "./shared/components/MicrofrontendErrorBoundary.js";
57
+ import { ConditionalShell as Dr } from "./shared/components/ConditionalShell.js";
58
+ import { usePWA as Or } from "./shared/hooks/usePWA.js";
59
+ import { PWAInstallBanner as kr } from "./shared/components/PWAInstallBanner.js";
60
+ import { ErrorBoundary as Ar } from "./shared/components/AppErrorBoundary.js";
61
+ import { FeatureFlagProvider as jr, useFeatureFlags as Mr } from "./shared/feature-flags/FeatureFlagProvider.js";
62
+ import { useFeatureFlag as Nr, useFeatureFlagDetails as Pr, useFeatureFlagValue as Fr } from "./shared/feature-flags/useFeatureFlag.js";
63
+ import { FeatureGate as Ir } from "./shared/feature-flags/FeatureGate.js";
63
64
  import "./shared-feature-flags.js";
64
- import { ContextConversationWidget as Mr } from "./shared/components/ContextConversationWidget.js";
65
- import { detectPlatform as Nr, formatKeyCombo as Pr, getDisplayKeysForPlatform as Fr, getShortcutLabel as Ir, isMac as Lr, isMobileDevice as Rr, isTabletDevice as zr, matchesKeyCombo as Br, normalizeKey as Vr, normalizePlatformCombo as Hr, parseKeyCombo as Ur, shouldEnableKeyboardShortcuts as Wr, shouldIgnoreShortcut as Gr } from "./shared/keyboard/utils.js";
66
- import { KeyboardHelpDialogWrapper as Kr } from "./shared/components/KeyboardHelpDialogWrapper.js";
67
- import { QuotaMeter as qr } from "./shared/components/QuotaMeter.js";
68
- import { UPGRADE_PROMPT_EVENT as Jr, UpgradePromptModal as Yr, dispatchUpgradePrompt as Xr } from "./shared/components/UpgradePromptModal.js";
69
- import { UpgradeInlineBanner as Zr } from "./shared/components/UpgradeInlineBanner.js";
70
- import { useVoiceInput as Qr } from "./shared/components/assistantWidget/useVoiceInput.js";
71
- import { ASSISTANT_WIDGET_TOGGLE_EVENT as $r, AssistantWidget as ei } from "./shared/components/assistantWidget/AssistantWidget.js";
72
- import { Markdown as ti } from "./shared/components/Markdown.js";
73
- import { useNativePlatform as ni } from "./shared/native/hooks/useNativePlatform.js";
74
- import { useSafeArea as ri } from "./shared/native/hooks/useSafeArea.js";
75
- import { useNativeKeyboard as ii } from "./shared/native/hooks/useNativeKeyboard.js";
76
- import { useAppState as ai } from "./shared/native/hooks/useAppState.js";
77
- import { useDeviceInfo as oi } from "./shared/native/hooks/useDeviceInfo.js";
78
- import { useHaptics as si } from "./shared/native/hooks/useHaptics.js";
79
- import { useStatusBar as ci } from "./shared/native/hooks/useStatusBar.js";
80
- import { resolveActionSheetOutcome as li, useActionSheet as ui } from "./shared/native/hooks/useActionSheet.js";
81
- import { useDesktop as di } from "./shared/native/hooks/useDesktop.js";
82
- import { useDesktopUpdateState as fi } from "./shared/native/hooks/useDesktopUpdateState.js";
83
- import { useDesktopWindowState as pi } from "./shared/native/hooks/useDesktopWindowState.js";
84
- import { DesktopUpdateToast as mi } from "./shared/components/DesktopUpdateToast.js";
65
+ import { ContextConversationWidget as Lr } from "./shared/components/ContextConversationWidget.js";
66
+ import { detectPlatform as Rr, formatKeyCombo as zr, getDisplayKeysForPlatform as Br, getShortcutLabel as Vr, isMac as Hr, isMobileDevice as Ur, isTabletDevice as Wr, matchesKeyCombo as Gr, normalizeKey as Kr, normalizePlatformCombo as qr, parseKeyCombo as Jr, shouldEnableKeyboardShortcuts as Yr, shouldIgnoreShortcut as Xr } from "./shared/keyboard/utils.js";
67
+ import { KeyboardHelpDialogWrapper as Zr } from "./shared/components/KeyboardHelpDialogWrapper.js";
68
+ import { QuotaMeter as Qr } from "./shared/components/QuotaMeter.js";
69
+ import { UPGRADE_PROMPT_EVENT as $r, UpgradePromptModal as ei, dispatchUpgradePrompt as ti } from "./shared/components/UpgradePromptModal.js";
70
+ import { UpgradeInlineBanner as ni } from "./shared/components/UpgradeInlineBanner.js";
71
+ import { getNativeEntryRoutes as ri, shouldShowNativeWelcome as ii } from "./shared/native/entry.js";
72
+ import { LandingGateView as ai, LandingOrDashboardRedirect as oi, hasStoredValidSession as si, resolveLandingGate as ci } from "./shared/components/LandingOrDashboardRedirect.js";
73
+ import { useVoiceInput as li } from "./shared/components/assistantWidget/useVoiceInput.js";
74
+ import { ASSISTANT_WIDGET_TOGGLE_EVENT as ui, AssistantWidget as di } from "./shared/components/assistantWidget/AssistantWidget.js";
75
+ import { Markdown as fi } from "./shared/components/Markdown.js";
76
+ import { useNativePlatform as pi } from "./shared/native/hooks/useNativePlatform.js";
77
+ import { useSafeArea as mi } from "./shared/native/hooks/useSafeArea.js";
78
+ import { useNativeKeyboard as hi } from "./shared/native/hooks/useNativeKeyboard.js";
79
+ import { useAppState as gi } from "./shared/native/hooks/useAppState.js";
80
+ import { useDeviceInfo as _i } from "./shared/native/hooks/useDeviceInfo.js";
81
+ import { useHaptics as vi } from "./shared/native/hooks/useHaptics.js";
82
+ import { useStatusBar as yi } from "./shared/native/hooks/useStatusBar.js";
83
+ import { resolveActionSheetOutcome as bi, useActionSheet as xi } from "./shared/native/hooks/useActionSheet.js";
84
+ import { useDesktop as Si } from "./shared/native/hooks/useDesktop.js";
85
+ import { useDesktopUpdateState as Ci } from "./shared/native/hooks/useDesktopUpdateState.js";
86
+ import { useDesktopWindowState as wi } from "./shared/native/hooks/useDesktopWindowState.js";
87
+ import { DesktopUpdateToast as Ti } from "./shared/components/DesktopUpdateToast.js";
85
88
  import "./shared-components.js";
86
- import { DevtoolsSink as hi } from "./shared/events/sinks/DevtoolsSink.js";
87
- import { BroadcastChannelSink as gi } from "./shared/events/sinks/BroadcastChannelSink.js";
88
- import { BackendAuditSink as _i } from "./shared/events/sinks/BackendAuditSink.js";
89
- import { AnalyticsConsentBanner as vi, RybbitSink as yi, readAnalyticsConsent as bi, readAnalyticsConsentChoice as xi, setAnalyticsConsent as Si } from "./shared/events/sinks/RybbitSink.js";
90
- import { OtelBrowserSink as Ci } from "./shared/events/sinks/OtelBrowserSink.js";
91
- import { EventBusProvider as wi, createEventBus as Ti, useEvent as Ei, useEventBus as Di, useEventEmitter as Oi } from "./shared-events.js";
92
- import { useDebounce as ki } from "./shared/hooks/useDebounce.js";
93
- import { useThrottle as Ai } from "./shared/hooks/useThrottle.js";
94
- import { BREAKPOINTS as ji, useBreakpoint as Mi, useMobileBreakpoint as Ni } from "./shared/hooks/useBreakpoint.js";
95
- import { useOnClickOutside as Pi, useOnClickOutsideWithRef as Fi } from "./shared/hooks/useOnClickOutside.js";
96
- import { useKeyPress as Ii, useKeyboardShortcut as Li } from "./shared/hooks/useKeyPress.js";
97
- import { useExclusiveMenu as Ri } from "./shared/hooks/useExclusiveMenu.js";
98
- import { useLocalStorage as zi } from "./shared/hooks/useLocalStorage.js";
99
- import { useSessionStorage as Bi } from "./shared/hooks/useSessionStorage.js";
100
- import { usePrevious as Vi, usePreviousDistinct as Hi, usePreviousHistory as Ui } from "./shared/hooks/usePrevious.js";
101
- import { useConditionalToggle as Wi, useToggle as Gi, useToggleObject as Ki } from "./shared/hooks/useToggle.js";
102
- import { usePagination as qi } from "./shared/hooks/usePagination.js";
103
- import { useAsync as Ji, useAsyncImmediate as Yi } from "./shared/hooks/useAsync.js";
104
- import { MODIFIER_KEYS as Xi, PLATFORM_TYPES as Zi } from "./shared/keyboard/types.js";
105
- import { useKeyboardShortcuts as Qi } from "./shared/keyboard/useKeyboardShortcuts.js";
106
- import { useHotkeys as $i } from "./shared/keyboard/useHotkeys.js";
107
- import { useShortcutHelp as ea } from "./shared/keyboard/useShortcutHelp.js";
108
- import { GLOBAL_SHORTCUT_CATEGORIES as ta, createGlobalShortcuts as na, getGlobalShortcutsByCategory as ra, mergeShortcuts as ia } from "./shared/keyboard/globalShortcuts.js";
109
- import { useLogger as aa } from "./shared/logger/useLogger.js";
110
- import { useHasAnimated as oa } from "./shared/hooks/useHasAnimated.js";
111
- import { useReferralAttribution as sa } from "./shared/hooks/useReferralAttribution.js";
112
- import { useRecordProductVisit as ca } from "./shared/hooks/useRecordProductVisit.js";
113
- import { PUSH_DEVICE_ID_STORAGE_KEY as la, getOrCreatePushDeviceId as ua, registerPushDevice as da, unregisterPushDevice as fa } from "./shared/native/push-registration.js";
114
- import { usePushDeviceRegistration as pa } from "./shared/hooks/usePushDeviceRegistration.js";
115
- import { QUOTA_EXHAUSTED_EVENT as ma, dispatchQuotaExhausted as ha, useQuotaErrorToast as ga } from "./shared/hooks/useQuotaErrorToast.js";
116
- import { PLAN_USAGE_SNAPSHOT_EVENT as _a, publishPlanUsageSnapshot as va, useUpgradePrompt as ya } from "./shared/hooks/useUpgradePrompt.js";
117
- import { appendContextToPath as ba, useCurrentContextSearchParams as xa } from "./shared/hooks/useCurrentContextSearchParams.js";
118
- import { UNSAVED_CHANGE_LABEL_MAX as Sa, listUnsavedChanges as Ca, registerUnsavedChange as wa, unsavedChangesBlocking as Ta, useUnsavedChanges as Ea } from "./shared/navigation/unsavedChanges.js";
119
- import { MicrofrontendContext as Da, useMicrofrontendContext as Oa } from "./shared-hooks.js";
120
- import { withTourProgressStatus as ka } from "./shared/tours/progress.js";
121
- import { detectDeviceType as Aa, getResponsiveSelector as ja } from "./shared/tours/types.js";
122
- import { useTourPlayer as Ma } from "./shared/tours/useTourPlayer.js";
123
- import { TourSpotlight as Na } from "./shared/tours/TourSpotlight.js";
124
- import { TourTooltip as Pa } from "./shared/tours/TourTooltip.js";
125
- import { TourPlayerProvider as Fa, useIsTourPlaying as Ia, useStartTour as La, useStopTour as Ra, useTourPlayerContext as za } from "./shared/tours/TourPlayerProvider.js";
126
- import { TourPlayer as Ba, TourTriggerButton as Va, usePlayTour as Ha } from "./shared/tours/TourPlayer.js";
127
- import { getTourContextRank as Ua, getTourRouteCatalog as Wa, getTourRouteModules as Ga, getTourRoutePages as Ka, isTourVisibleForContext as qa, normalizeTourPath as Ja, registerTourRouteCatalog as Ya, resolveTourTargetPath as Xa } from "./shared/tours/routeCatalog.js";
128
- import { ToursProvider as Za, useAutoStartTour as Qa, useSafeToursContext as $a, useTours as eo, useToursContext as to } from "./shared/tours/ToursContext.js";
129
- import { TourInitializer as no } from "./shared/tours/TourInitializer.js";
130
- import { AppShellProvider as ro, resolveAppShellObservabilityConfig as io } from "./shared/providers/AppShellProvider.js";
131
- import { MicrofrontendProvider as ao } from "./shared-providers.js";
132
- import { TourTrigger as oo } from "./shared/tours/TourTrigger.js";
89
+ import { DevtoolsSink as Ei } from "./shared/events/sinks/DevtoolsSink.js";
90
+ import { BroadcastChannelSink as Di } from "./shared/events/sinks/BroadcastChannelSink.js";
91
+ import { BackendAuditSink as Oi } from "./shared/events/sinks/BackendAuditSink.js";
92
+ import { AnalyticsConsentBanner as ki, RybbitSink as Ai, readAnalyticsConsent as ji, readAnalyticsConsentChoice as Mi, setAnalyticsConsent as Ni } from "./shared/events/sinks/RybbitSink.js";
93
+ import { OtelBrowserSink as Pi } from "./shared/events/sinks/OtelBrowserSink.js";
94
+ import { EventBusProvider as Fi, createEventBus as Ii, useEvent as Li, useEventBus as Ri, useEventEmitter as zi } from "./shared-events.js";
95
+ import { useDebounce as Bi } from "./shared/hooks/useDebounce.js";
96
+ import { useThrottle as Vi } from "./shared/hooks/useThrottle.js";
97
+ import { BREAKPOINTS as Hi, useBreakpoint as Ui, useMobileBreakpoint as Wi } from "./shared/hooks/useBreakpoint.js";
98
+ import { useOnClickOutside as Gi, useOnClickOutsideWithRef as Ki } from "./shared/hooks/useOnClickOutside.js";
99
+ import { useKeyPress as qi, useKeyboardShortcut as Ji } from "./shared/hooks/useKeyPress.js";
100
+ import { useExclusiveMenu as Yi } from "./shared/hooks/useExclusiveMenu.js";
101
+ import { useLocalStorage as Xi } from "./shared/hooks/useLocalStorage.js";
102
+ import { useSessionStorage as Zi } from "./shared/hooks/useSessionStorage.js";
103
+ import { usePrevious as Qi, usePreviousDistinct as $i, usePreviousHistory as ea } from "./shared/hooks/usePrevious.js";
104
+ import { useConditionalToggle as ta, useToggle as na, useToggleObject as ra } from "./shared/hooks/useToggle.js";
105
+ import { usePagination as ia } from "./shared/hooks/usePagination.js";
106
+ import { useAsync as aa, useAsyncImmediate as oa } from "./shared/hooks/useAsync.js";
107
+ import { MODIFIER_KEYS as sa, PLATFORM_TYPES as ca } from "./shared/keyboard/types.js";
108
+ import { useKeyboardShortcuts as la } from "./shared/keyboard/useKeyboardShortcuts.js";
109
+ import { useHotkeys as ua } from "./shared/keyboard/useHotkeys.js";
110
+ import { useShortcutHelp as da } from "./shared/keyboard/useShortcutHelp.js";
111
+ import { GLOBAL_SHORTCUT_CATEGORIES as fa, createGlobalShortcuts as pa, getGlobalShortcutsByCategory as ma, mergeShortcuts as ha } from "./shared/keyboard/globalShortcuts.js";
112
+ import { useLogger as ga } from "./shared/logger/useLogger.js";
113
+ import { useHasAnimated as _a } from "./shared/hooks/useHasAnimated.js";
114
+ import { useReferralAttribution as va } from "./shared/hooks/useReferralAttribution.js";
115
+ import { useRecordProductVisit as ya } from "./shared/hooks/useRecordProductVisit.js";
116
+ import { PUSH_DEVICE_ID_STORAGE_KEY as ba, getOrCreatePushDeviceId as xa, registerPushDevice as Sa, unregisterPushDevice as Ca } from "./shared/native/push-registration.js";
117
+ import { usePushDeviceRegistration as wa } from "./shared/hooks/usePushDeviceRegistration.js";
118
+ import { QUOTA_EXHAUSTED_EVENT as Ta, dispatchQuotaExhausted as Ea, useQuotaErrorToast as Da } from "./shared/hooks/useQuotaErrorToast.js";
119
+ import { PLAN_USAGE_SNAPSHOT_EVENT as Oa, publishPlanUsageSnapshot as ka, useUpgradePrompt as Aa } from "./shared/hooks/useUpgradePrompt.js";
120
+ import { appendContextToPath as ja, useCurrentContextSearchParams as Ma } from "./shared/hooks/useCurrentContextSearchParams.js";
121
+ import { UNSAVED_CHANGE_LABEL_MAX as Na, listUnsavedChanges as Pa, registerUnsavedChange as Fa, unsavedChangesBlocking as Ia, useUnsavedChanges as La } from "./shared/navigation/unsavedChanges.js";
122
+ import { MicrofrontendContext as Ra, useMicrofrontendContext as za } from "./shared-hooks.js";
123
+ import { withTourProgressStatus as Ba } from "./shared/tours/progress.js";
124
+ import { detectDeviceType as Va, getResponsiveSelector as Ha } from "./shared/tours/types.js";
125
+ import { useTourPlayer as Ua } from "./shared/tours/useTourPlayer.js";
126
+ import { TourSpotlight as Wa } from "./shared/tours/TourSpotlight.js";
127
+ import { TourTooltip as Ga } from "./shared/tours/TourTooltip.js";
128
+ import { TourPlayerProvider as Ka, useIsTourPlaying as qa, useStartTour as Ja, useStopTour as Ya, useTourPlayerContext as Xa } from "./shared/tours/TourPlayerProvider.js";
129
+ import { TourPlayer as Za, TourTriggerButton as Qa, usePlayTour as $a } from "./shared/tours/TourPlayer.js";
130
+ import { getTourContextRank as eo, getTourRouteCatalog as to, getTourRouteModules as no, getTourRoutePages as ro, isTourVisibleForContext as io, normalizeTourPath as ao, registerTourRouteCatalog as oo, resolveTourTargetPath as so } from "./shared/tours/routeCatalog.js";
131
+ import { ToursProvider as co, useAutoStartTour as lo, useSafeToursContext as uo, useTours as fo, useToursContext as po } from "./shared/tours/ToursContext.js";
132
+ import { TourInitializer as mo } from "./shared/tours/TourInitializer.js";
133
+ import { AppShellProvider as ho, resolveAppShellObservabilityConfig as go } from "./shared/providers/AppShellProvider.js";
134
+ import { MicrofrontendProvider as _o } from "./shared-providers.js";
135
+ import { TourTrigger as vo } from "./shared/tours/TourTrigger.js";
133
136
  import "./shared-tours.js";
134
- import { acknowledgeNativePurchase as so, getNativeProducts as co, getNativePurchases as lo, installNativeIAP as uo, isNativeIAPAvailable as fo, purchaseNativeProduct as po, restoreNativePurchases as mo } from "./shared/native/purchases.js";
135
- import { getNativeEntryRoutes as ho, shouldShowNativeWelcome as go } from "./shared/native/entry.js";
136
- import { getPushOptInController as _o, recordPushPermissionPromptDismissed as vo, registerPushOptInController as yo, shouldPromptForPushPermission as bo } from "./shared/native/push-optin.js";
137
+ import { acknowledgeNativePurchase as yo, getNativeProducts as bo, getNativePurchases as xo, installNativeIAP as So, isNativeIAPAvailable as Co, purchaseNativeProduct as wo, restoreNativePurchases as To } from "./shared/native/purchases.js";
138
+ import { getPushOptInController as Eo, recordPushPermissionPromptDismissed as Do, registerPushOptInController as Oo, shouldPromptForPushPermission as ko } from "./shared/native/push-optin.js";
137
139
  import "./shared-native.js";
138
140
  import "./shared/actors/index.js";
139
141
  //#region src/shared/index.ts
140
- var xo = "1.0.0";
142
+ var Ao = "1.0.0";
141
143
  //#endregion
142
- export { $r as ASSISTANT_WIDGET_TOGGLE_EVENT, hr as AccessDenied, or as ActorIdentity, vi as AnalyticsConsentBanner, yt as ApolloClient, bt as ApolloProvider, Tr as AppErrorBoundary, gn as AppInitializer, ro as AppShellProvider, ei as AssistantWidget, Ve as BACKEND_ERROR_EVENT, Se as BOTMANOR_PRODUCT_SLUG, ji as BREAKPOINTS, _i as BackendAuditSink, gi as BroadcastChannelSink, Oe as COMMON_SHELL_LESS_ROUTES, He as CONNECTION_STATUS_EVENT, Sr as ConditionalShell, Cn as ConsoleTransport, Mr as ContextConversationWidget, Pe as DEFAULT_PAGE_SIZE, ke as DEFAULT_SHELL_CONFIG, R as DESKTOP_UPDATE_UNSUPPORTED, z as DESKTOP_WINDOW_STATE_DEFAULT, mi as DesktopUpdateToast, hi as DevtoolsSink, lr as ErrorBoundary, _r as ErrorFallback, wi as EventBusProvider, xo as FE_SHARED_VERSION, Er as FeatureFlagProvider, jr as FeatureGate, Fe as GATEWAYS, ta as GLOBAL_SHORTCUT_CATEGORIES, dt as GatewayProvider, Rn as INLINE_ENCODE, xt as InMemoryCache, Kr as KeyboardHelpDialogWrapper, vr as LoadingFallback, yn as LogLevel, xn as LogManager, bn as Logger, Xi as MODIFIER_KEYS, ti as Markdown, Da as MicrofrontendContext, xr as MicrofrontendErrorBoundary, ao as MicrofrontendProvider, Ci as OtelBrowserSink, _a as PLAN_USAGE_SNAPSHOT_EVENT, Zi as PLATFORM_TYPES, Ce as PRODUCTS, ge as PRODUCT_SLUG_EMIT, _e as PRODUCT_SLUG_RENAMES, we as PRODUCT_URLS, tr as PULL_TO_REFRESH_THRESHOLD, la as PUSH_DEVICE_ID_STORAGE_KEY, wr as PWAInstallBanner, yr as PageLoadingFallback, fr as PermissionButton, gr as PermissionDenied, pr as PermissionGate, mr as PermissionLink, kn as QUOTA_EXHAUSTED_CODE, ma as QUOTA_EXHAUSTED_EVENT, qr as QuotaMeter, An as RESOURCE_CAP_EXCEEDED_CODE, ur as RequireAuth, dr as RequireGuest, yi as RybbitSink, at as SSELink, Qt as SSORedirectSpinner, rn as SSO_DEPOSITED_PARAM, jn as STORAGE_QUOTA_EXCEEDED_CODE, Zn as SafeAreaView, br as SectionLoadingFallback, no as TourInitializer, Ba as TourPlayer, Fa as TourPlayerProvider, Na as TourSpotlight, Pa as TourTooltip, oo as TourTrigger, Va as TourTriggerButton, Za as ToursProvider, Sa as UNSAVED_CHANGE_LABEL_MAX, Mn as UPGRADE_ERROR_CODES, Jr as UPGRADE_PROMPT_EVENT, Zr as UpgradeInlineBanner, Yr as UpgradePromptModal, _t as WsLink, so as acknowledgeNativePurchase, r as alertTokens, ba as appendContextToPath, Ot as attemptTokenRefresh, an as beginSsoNavigation, B as bootDesktopShell, sr as buildActorFallback, Nn as buildQuotaExhaustedMessage, on as buildSsoDepositUrl, m as capitalizeFirst, h as capitalizeWords, i as categoryTokens, $t as checkRemoteSLO, en as checkSLO, kt as clearAuthSessionStorage, Xe as clearGraphqlFetchResponseCache, tn as clearLocalAuthState, Pt as clearSSoCookie, Ft as clearShellSsoCookies, sn as clearSsoDepositState, cn as clearSsoNavigation, wn as clearUserContext, Vn as cn, nr as computePullOffset, rr as computePullProgress, ln as consumeSsoDepositMarker, n as createApolloClient, Ti as createEventBus, na as createGlobalShortcuts, ot as createGraphQLClient, Dn as createProfileScopedStorage, V as desktopCheckForUpdates, H as desktopDeepLinkToPath, U as desktopInstallUpdate, W as desktopNotify, G as desktopOpenExternal, K as desktopSetBadgeCount, q as desktopSetLocale, J as desktopSetTheme, Y as desktopSetTrayQuickActions, Aa as detectDeviceType, Nr as detectPlatform, Ue as dispatchBackendErrorEvent, ha as dispatchQuotaExhausted, Xr as dispatchUpgradePrompt, zn as downscaleImage, ve as emitProductSlug, We as extractBackendError, Pn as extractQuotaExhaustedExtensions, Fn as extractUpgradeErrorExtensions, Te as findProductConfig, g as formatBytes, _ as formatCompactNumber, v as formatCurrency, y as formatCurrencyCompact, b as formatDate, x as formatDateTime, S as formatDuration, Pr as formatKeyCombo, C as formatList, w as formatNumber, T as formatOrdinal, E as formatPercentage, D as formatRelativeTime, O as formatTime, a as getAlertTokens, I as getCapacitorPlatform, o as getCategoryTokens, X as getDesktopAuthBridgeConfig, Z as getDesktopBridge, Q as getDesktopGatewayBases, $ as getDesktopGatewayUrls, ee as getDesktopRuntimeConfig, te as getDesktopUpdateState, ne as getDesktopWindowState, Fr as getDisplayKeysForPlatform, Ie as getGatewayConfig, Le as getGatewayUrl, st as getGlobalClient, ra as getGlobalShortcutsByCategory, Re as getGraphQLEndpoint, re as getLegacyDesktopRuntime, Ht as getNativeBridge, ho as getNativeEntryRoutes, co as getNativeProducts, lo as getNativePurchases, ua as getOrCreatePushDeviceId, Ut as getPlatform, Ee as getProductUrl, De as getProductsWithUrls, On as getProfileScopedKey, s as getProgressTokens, _o as getPushOptInController, ja as getResponsiveSelector, nn as getSSORedirectUrl, It as getSSoCookie, Ae as getShellConfig, Ir as getShortcutLabel, c as getStatusBadgeTokens, l as getStatusTokens, Ze as getStoredAuthToken, Qe as getStoredLocale, $e as getStoredOrganizationId, et as getStoredProjectId, tt as getStoredWorkspaceId, nt as getStoredWorkspaceToken, Ua as getTourContextRank, Wa as getTourRouteCatalog, Ga as getTourRouteModules, Ka as getTourRoutePages, u as getTrendTokens, ct as getWorkspaceClient, ze as getWorkspaceTokenPayload, St as gql, rt as graphqlFetch, At as hasAuthGraphQLErrors, lt as initializeAppClients, Tn as initializeLogger, ie as installDesktopDeepLinkHandler, ae as installDesktopNavigateHandler, de as installGatewayFetchRewrite, uo as installNativeIAP, Ge as isAbortError, Wt as isAndroid, jt as isAuthGraphQLError, Mt as isAuthNetworkError, Ke as isBackendErrorDisplay, L as isCapacitorNative, P as isChunkLoadError, oe as isDesktop, Gt as isElectron, Kt as isIOS, qt as isInstalledApp, Lr as isMac, Rr as isMobileDevice, Jt as isNative, fo as isNativeIAPAvailable, In as isQuotaExhaustedError, ye as isSameProductSlug, Lt as isSharedSsoCookieDomain, je as isShellLessRoute, un as isSsoNavigationPending, Yt as isStandalonePWA, zr as isTabletDevice, qa as isTourVisibleForContext, qe as isTransportError, Rt as isTrustedSsoOrigin, Ln as isUpgradeError, Xt as isWeb, Zt as isWebBrowser, Be as isWorkspaceTokenValidForContext, F as lazyWithRetry, be as legacyProductSlug, Ca as listUnsavedChanges, Sn as logManager, Je as markConnectionHealthy, dn as markSsoDepositDone, fn as markSsoDepositPending, Br as matchesKeyCombo, ia as mergeShortcuts, pn as mintSsoSessionTokens, Hn as nativeActionSheet, Un as nativeConfirm, Wn as nativeCopyText, Gn as nativeImpact, Kn as nativeNotify, qn as nativeOpenUrl, Jn as nativeSelection, Yn as nativeShare, Xn as nativeToast, Vr as normalizeKey, Hr as normalizePlatformCombo, xe as normalizeProductSlug, Ja as normalizeTourPath, se as onDesktopUpdateState, ce as onDesktopWindowState, Ur as parseKeyCombo, k as pluralize, vt as prepareWorkspaceRequest, d as progressTokens, va as publishPlanUsageSnapshot, po as purchaseNativeProduct, bi as readAnalyticsConsent, xi as readAnalyticsConsentChoice, Qn as readInitialNetworkStatus, zt as readShellSsoCookie, mn as readSsoDepositState, vo as recordPushPermissionPromptDismissed, Nt as redirectToLogin, $n as reduceNetworkStatus, le as registerDesktopNavigator, da as registerPushDevice, yo as registerPushOptInController, Ya as registerTourRouteCatalog, wa as registerUnsavedChange, ut as resetAppClients, li as resolveActionSheetOutcome, io as resolveAppShellObservabilityConfig, me as resolveAuthBridgeConfig, fe as resolveGatewayBases, it as resolveGatewayUrl, ue as resolveGatewayUrls, he as resolveShellAuthBridgeConfig, Xa as resolveTourTargetPath, mo as restoreNativePurchases, Bn as selectInlineBase64, Si as setAnalyticsConsent, Bt as setSSoCookie, Vt as setShellSsoCookies, En as setUserContext, hn as shouldAttemptSsoDeposit, Wr as shouldEnableKeyboardShortcuts, Gr as shouldIgnoreShortcut, bo as shouldPromptForPushPermission, Me as shouldShowBreadcrumb, go as shouldShowNativeWelcome, Ne as shouldShowSidebar, Ye as shouldToastBackendError, A as slugify, f as statusTokens, pe as suppressConsole, j as toCamelCase, M as toPascalCase, p as trendTokens, N as truncateText, fa as unregisterPushDevice, Ta as unsavedChangesBlocking, ui as useActionSheet, cr as useActorProfiles, Ct as useApolloClient, ai as useAppState, Ji as useAsync, Yi as useAsyncImmediate, Qa as useAutoStartTour, Mi as useBreakpoint, Wi as useConditionalToggle, e as useCopyToClipboard, xa as useCurrentContextSearchParams, ki as useDebounce, di as useDesktop, fi as useDesktopUpdateState, pi as useDesktopWindowState, oi as useDeviceInfo, Ei as useEvent, Di as useEventBus, Oi as useEventEmitter, Ri as useExclusiveMenu, Or as useFeatureFlag, kr as useFeatureFlagDetails, Ar as useFeatureFlagValue, Dr as useFeatureFlags, ft as useGateway, pt as useGatewayClient, si as useHaptics, oa as useHasAnimated, gt as useHasAuthToken, $i as useHotkeys, Ia as useIsTourPlaying, Ii as useKeyPress, Li as useKeyboardShortcut, Qi as useKeyboardShortcuts, wt as useLazyQuery, zi as useLocalStorage, aa as useLogger, t as useMediaQuery, Oa as useMicrofrontendContext, Ni as useMobileBreakpoint, Tt as useMutation, ii as useNativeKeyboard, ni as useNativePlatform, er as useNetworkStatus, Pi as useOnClickOutside, Fi as useOnClickOutsideWithRef, Cr as usePWA, qi as usePagination, Ha as usePlayTour, Vi as usePrevious, Hi as usePreviousDistinct, Ui as usePreviousHistory, ir as usePullToRefresh, pa as usePushDeviceRegistration, Et as useQuery, ga as useQuotaErrorToast, ca as useRecordProductVisit, sa as useReferralAttribution, _n as useRegistryHelpers, ar as useReturnFocus, ri as useSafeArea, mt as useSafeGateway, ht as useSafeGatewayClient, $a as useSafeToursContext, Bi as useSessionStorage, vn as useShellNavigate, ea as useShortcutHelp, La as useStartTour, ci as useStatusBar, Ra as useStopTour, Dt as useSubscription, Ai as useThrottle, Gi as useToggle, Ki as useToggleObject, Ma as useTourPlayer, za as useTourPlayerContext, eo as useTours, to as useToursContext, Ea as useUnsavedChanges, ya as useUpgradePrompt, Qr as useVoiceInput, ka as withTourProgressStatus };
144
+ export { ui as ASSISTANT_WIDGET_TOGGLE_EVENT, br as AccessDenied, dr as ActorIdentity, ki as AnalyticsConsentBanner, yt as ApolloClient, bt as ApolloProvider, Ar as AppErrorBoundary, xn as AppInitializer, ho as AppShellProvider, di as AssistantWidget, Ve as BACKEND_ERROR_EVENT, Se as BOTMANOR_PRODUCT_SLUG, Hi as BREAKPOINTS, Oi as BackendAuditSink, Di as BroadcastChannelSink, Oe as COMMON_SHELL_LESS_ROUTES, He as CONNECTION_STATUS_EVENT, Dr as ConditionalShell, On as ConsoleTransport, Lr as ContextConversationWidget, Pe as DEFAULT_PAGE_SIZE, ke as DEFAULT_SHELL_CONFIG, R as DESKTOP_UPDATE_UNSUPPORTED, z as DESKTOP_WINDOW_STATE_DEFAULT, Ti as DesktopUpdateToast, Ei as DevtoolsSink, mr as ErrorBoundary, Sr as ErrorFallback, Fi as EventBusProvider, Ao as FE_SHARED_VERSION, jr as FeatureFlagProvider, Ir as FeatureGate, Fe as GATEWAYS, fa as GLOBAL_SHORTCUT_CATEGORIES, dt as GatewayProvider, Un as INLINE_ENCODE, xt as InMemoryCache, Zr as KeyboardHelpDialogWrapper, ai as LandingGateView, oi as LandingOrDashboardRedirect, Cr as LoadingFallback, wn as LogLevel, En as LogManager, Tn as Logger, sa as MODIFIER_KEYS, fi as Markdown, Ra as MicrofrontendContext, Er as MicrofrontendErrorBoundary, _o as MicrofrontendProvider, Pi as OtelBrowserSink, Oa as PLAN_USAGE_SNAPSHOT_EVENT, ca as PLATFORM_TYPES, Ce as PRODUCTS, ge as PRODUCT_SLUG_EMIT, _e as PRODUCT_SLUG_RENAMES, we as PRODUCT_URLS, or as PULL_TO_REFRESH_THRESHOLD, ba as PUSH_DEVICE_ID_STORAGE_KEY, kr as PWAInstallBanner, wr as PageLoadingFallback, _r as PermissionButton, xr as PermissionDenied, vr as PermissionGate, yr as PermissionLink, Pn as QUOTA_EXHAUSTED_CODE, Ta as QUOTA_EXHAUSTED_EVENT, Qr as QuotaMeter, Fn as RESOURCE_CAP_EXCEEDED_CODE, hr as RequireAuth, gr as RequireGuest, Ai as RybbitSink, at as SSELink, nn as SSORedirectSpinner, ln as SSO_DEPOSITED_PARAM, In as STORAGE_QUOTA_EXCEEDED_CODE, nr as SafeAreaView, Tr as SectionLoadingFallback, mo as TourInitializer, Za as TourPlayer, Ka as TourPlayerProvider, Wa as TourSpotlight, Ga as TourTooltip, vo as TourTrigger, Qa as TourTriggerButton, co as ToursProvider, Na as UNSAVED_CHANGE_LABEL_MAX, Ln as UPGRADE_ERROR_CODES, $r as UPGRADE_PROMPT_EVENT, ni as UpgradeInlineBanner, ei as UpgradePromptModal, _t as WsLink, yo as acknowledgeNativePurchase, r as alertTokens, ja as appendContextToPath, Qt as assignLocationWithAllowlist, Ot as attemptTokenRefresh, un as beginSsoNavigation, B as bootDesktopShell, fr as buildActorFallback, Rn as buildQuotaExhaustedMessage, dn as buildSsoDepositUrl, m as capitalizeFirst, h as capitalizeWords, i as categoryTokens, rn as checkRemoteSLO, an as checkSLO, kt as clearAuthSessionStorage, Xe as clearGraphqlFetchResponseCache, on as clearLocalAuthState, Pt as clearSSoCookie, Ft as clearShellSsoCookies, fn as clearSsoDepositState, pn as clearSsoNavigation, kn as clearUserContext, Kn as cn, sr as computePullOffset, cr as computePullProgress, mn as consumeSsoDepositMarker, n as createApolloClient, Ii as createEventBus, pa as createGlobalShortcuts, ot as createGraphQLClient, Mn as createProfileScopedStorage, V as desktopCheckForUpdates, H as desktopDeepLinkToPath, U as desktopInstallUpdate, W as desktopNotify, G as desktopOpenExternal, K as desktopSetBadgeCount, q as desktopSetLocale, J as desktopSetTheme, Y as desktopSetTrayQuickActions, Va as detectDeviceType, Rr as detectPlatform, Ue as dispatchBackendErrorEvent, Ea as dispatchQuotaExhausted, ti as dispatchUpgradePrompt, Wn as downscaleImage, ve as emitProductSlug, We as extractBackendError, zn as extractQuotaExhaustedExtensions, Bn as extractUpgradeErrorExtensions, Te as findProductConfig, g as formatBytes, _ as formatCompactNumber, v as formatCurrency, y as formatCurrencyCompact, b as formatDate, x as formatDateTime, S as formatDuration, zr as formatKeyCombo, C as formatList, w as formatNumber, T as formatOrdinal, E as formatPercentage, D as formatRelativeTime, O as formatTime, a as getAlertTokens, I as getCapacitorPlatform, o as getCategoryTokens, X as getDesktopAuthBridgeConfig, Z as getDesktopBridge, Q as getDesktopGatewayBases, $ as getDesktopGatewayUrls, ee as getDesktopRuntimeConfig, te as getDesktopUpdateState, ne as getDesktopWindowState, Br as getDisplayKeysForPlatform, Ie as getGatewayConfig, Le as getGatewayUrl, st as getGlobalClient, ma as getGlobalShortcutsByCategory, Re as getGraphQLEndpoint, re as getLegacyDesktopRuntime, Ht as getNativeBridge, ri as getNativeEntryRoutes, bo as getNativeProducts, xo as getNativePurchases, xa as getOrCreatePushDeviceId, Ut as getPlatform, Ee as getProductUrl, De as getProductsWithUrls, Nn as getProfileScopedKey, s as getProgressTokens, Eo as getPushOptInController, Ha as getResponsiveSelector, sn as getSSORedirectUrl, It as getSSoCookie, Ae as getShellConfig, Vr as getShortcutLabel, c as getStatusBadgeTokens, l as getStatusTokens, Ze as getStoredAuthToken, Qe as getStoredLocale, $e as getStoredOrganizationId, et as getStoredProjectId, tt as getStoredWorkspaceId, nt as getStoredWorkspaceToken, eo as getTourContextRank, to as getTourRouteCatalog, no as getTourRouteModules, ro as getTourRoutePages, u as getTrendTokens, ct as getWorkspaceClient, ze as getWorkspaceTokenPayload, St as gql, rt as graphqlFetch, At as hasAuthGraphQLErrors, si as hasStoredValidSession, lt as initializeAppClients, An as initializeLogger, ie as installDesktopDeepLinkHandler, ae as installDesktopNavigateHandler, de as installGatewayFetchRewrite, So as installNativeIAP, Ge as isAbortError, $t as isAllowedRedirectUrl, Wt as isAndroid, jt as isAuthGraphQLError, Mt as isAuthNetworkError, Ke as isBackendErrorDisplay, L as isCapacitorNative, P as isChunkLoadError, oe as isDesktop, Gt as isElectron, Kt as isIOS, qt as isInstalledApp, Hr as isMac, Ur as isMobileDevice, Jt as isNative, Co as isNativeIAPAvailable, Vn as isQuotaExhaustedError, ye as isSameProductSlug, Lt as isSharedSsoCookieDomain, je as isShellLessRoute, hn as isSsoNavigationPending, Yt as isStandalonePWA, Wr as isTabletDevice, io as isTourVisibleForContext, qe as isTransportError, Rt as isTrustedSsoOrigin, Hn as isUpgradeError, Xt as isWeb, Zt as isWebBrowser, Be as isWorkspaceTokenValidForContext, F as lazyWithRetry, be as legacyProductSlug, Pa as listUnsavedChanges, Dn as logManager, Je as markConnectionHealthy, gn as markSsoDepositDone, _n as markSsoDepositPending, Gr as matchesKeyCombo, ha as mergeShortcuts, vn as mintSsoSessionTokens, qn as nativeActionSheet, Jn as nativeConfirm, Yn as nativeCopyText, Xn as nativeImpact, Zn as nativeNotify, Qn as nativeOpenUrl, $n as nativeSelection, er as nativeShare, tr as nativeToast, Kr as normalizeKey, qr as normalizePlatformCombo, xe as normalizeProductSlug, ao as normalizeTourPath, se as onDesktopUpdateState, ce as onDesktopWindowState, en as openUrlInNewTabWithAllowlist, Jr as parseKeyCombo, k as pluralize, vt as prepareWorkspaceRequest, d as progressTokens, ka as publishPlanUsageSnapshot, wo as purchaseNativeProduct, ji as readAnalyticsConsent, Mi as readAnalyticsConsentChoice, rr as readInitialNetworkStatus, zt as readShellSsoCookie, yn as readSsoDepositState, Do as recordPushPermissionPromptDismissed, Nt as redirectToLogin, cn as redirectToSSO, ir as reduceNetworkStatus, le as registerDesktopNavigator, Sa as registerPushDevice, Oo as registerPushOptInController, oo as registerTourRouteCatalog, Fa as registerUnsavedChange, tn as replaceLocationWithAllowlist, ut as resetAppClients, bi as resolveActionSheetOutcome, go as resolveAppShellObservabilityConfig, me as resolveAuthBridgeConfig, fe as resolveGatewayBases, it as resolveGatewayUrl, ue as resolveGatewayUrls, ci as resolveLandingGate, he as resolveShellAuthBridgeConfig, so as resolveTourTargetPath, To as restoreNativePurchases, Gn as selectInlineBase64, Ni as setAnalyticsConsent, Bt as setSSoCookie, Vt as setShellSsoCookies, jn as setUserContext, bn as shouldAttemptSsoDeposit, Yr as shouldEnableKeyboardShortcuts, Xr as shouldIgnoreShortcut, ko as shouldPromptForPushPermission, Me as shouldShowBreadcrumb, ii as shouldShowNativeWelcome, Ne as shouldShowSidebar, Ye as shouldToastBackendError, A as slugify, f as statusTokens, pe as suppressConsole, j as toCamelCase, M as toPascalCase, p as trendTokens, N as truncateText, Ca as unregisterPushDevice, Ia as unsavedChangesBlocking, xi as useActionSheet, pr as useActorProfiles, Ct as useApolloClient, gi as useAppState, aa as useAsync, oa as useAsyncImmediate, lo as useAutoStartTour, Ui as useBreakpoint, ta as useConditionalToggle, e as useCopyToClipboard, Ma as useCurrentContextSearchParams, Bi as useDebounce, Si as useDesktop, Ci as useDesktopUpdateState, wi as useDesktopWindowState, _i as useDeviceInfo, Li as useEvent, Ri as useEventBus, zi as useEventEmitter, Yi as useExclusiveMenu, Nr as useFeatureFlag, Pr as useFeatureFlagDetails, Fr as useFeatureFlagValue, Mr as useFeatureFlags, ft as useGateway, pt as useGatewayClient, vi as useHaptics, _a as useHasAnimated, gt as useHasAuthToken, ua as useHotkeys, qa as useIsTourPlaying, qi as useKeyPress, Ji as useKeyboardShortcut, la as useKeyboardShortcuts, wt as useLazyQuery, Xi as useLocalStorage, ga as useLogger, t as useMediaQuery, za as useMicrofrontendContext, Wi as useMobileBreakpoint, Tt as useMutation, hi as useNativeKeyboard, pi as useNativePlatform, ar as useNetworkStatus, Gi as useOnClickOutside, Ki as useOnClickOutsideWithRef, Or as usePWA, ia as usePagination, $a as usePlayTour, Qi as usePrevious, $i as usePreviousDistinct, ea as usePreviousHistory, lr as usePullToRefresh, wa as usePushDeviceRegistration, Et as useQuery, Da as useQuotaErrorToast, ya as useRecordProductVisit, va as useReferralAttribution, Sn as useRegistryHelpers, ur as useReturnFocus, mi as useSafeArea, mt as useSafeGateway, ht as useSafeGatewayClient, uo as useSafeToursContext, Zi as useSessionStorage, Cn as useShellNavigate, da as useShortcutHelp, Ja as useStartTour, yi as useStatusBar, Ya as useStopTour, Dt as useSubscription, Vi as useThrottle, na as useToggle, ra as useToggleObject, Ua as useTourPlayer, Xa as useTourPlayerContext, fo as useTours, po as useToursContext, La as useUnsavedChanges, Aa as useUpgradePrompt, li as useVoiceInput, Ba as withTourProgressStatus };
@@ -8,18 +8,18 @@ import { installNativeAuthNavigationIntercept as f } from "./auth-navigation.js"
8
8
  import { createDefaultBackButtonHandlers as p, installBackButtonHandler as m } from "./back-button.js";
9
9
  import { installExternalUrlOpener as h } from "./browser.js";
10
10
  import { installNativeBridge as g } from "./bridge.js";
11
- import { installDeepLinkHandler as _ } from "./deep-link.js";
12
- import { populateDeviceInfo as v } from "./device.js";
13
- import { configureKeyboard as y } from "./keyboard.js";
14
- import { installNetworkListener as b } from "./network.js";
15
- import { notifyOtaReady as x } from "./ota.js";
16
- import { installPushNotifications as S } from "./push.js";
17
- import { installPushOptIn as C } from "./push-optin.js";
18
- import { installPwa as w } from "./pwa.js";
19
- import { armSplashSafetyTimer as T, markAppReady as E } from "./splash.js";
20
- import { installStatusBarThemeListener as D } from "./system-bars.js";
11
+ import { armDeepLinkFallback as _, disarmDeepLinkFallback as v, installDeepLinkHandler as y } from "./deep-link.js";
12
+ import { populateDeviceInfo as b } from "./device.js";
13
+ import { configureKeyboard as x } from "./keyboard.js";
14
+ import { installNetworkListener as S } from "./network.js";
15
+ import { notifyOtaReady as C } from "./ota.js";
16
+ import { installPushNotifications as w } from "./push.js";
17
+ import { installPushOptIn as T } from "./push-optin.js";
18
+ import { installPwa as E } from "./pwa.js";
19
+ import { armSplashSafetyTimer as D, markAppReady as O } from "./splash.js";
20
+ import { installStatusBarThemeListener as k } from "./system-bars.js";
21
21
  //#region src/shell-native/boot.ts
22
- function O(e, t) {
22
+ function A(e, t) {
23
23
  try {
24
24
  let n = t();
25
25
  n instanceof Promise && n.catch((t) => {
@@ -29,38 +29,40 @@ function O(e, t) {
29
29
  console.debug(`[shell-native] boot step "${e}" failed:`, t);
30
30
  }
31
31
  }
32
- function k() {
32
+ function j() {
33
33
  if (typeof document > "u") return;
34
34
  let e = document.querySelector("meta[name=\"viewport\"]");
35
35
  if (!e) return;
36
36
  let t = (e.content || "").split(",").map((e) => e.trim()).filter((e) => e.length > 0 && !e.startsWith("maximum-scale") && !e.startsWith("user-scalable") && !e.startsWith("interactive-widget"));
37
37
  t.push("maximum-scale=1", "user-scalable=no"), o() === "android" && t.push("interactive-widget=resizes-content"), e.content = t.join(", ");
38
38
  }
39
- var A = null;
40
- function j(j) {
41
- if (A) return A;
42
- if (d(j.electronGlobalKey ?? `${j.product}Electron`), j.preview?.allow !== !1 && O("preview", () => n(i())), O("notifyOtaReady", () => x(j.plugins ?? {})), O("authIntercept", () => f(j.authIntercept)), O("externalUrlOpener", () => h()), O("nativeBridge", () => {
39
+ var M = null;
40
+ function N(v) {
41
+ if (M) return M;
42
+ d(v.electronGlobalKey ?? `${v.product}Electron`), v.preview?.allow !== !1 && A("preview", () => n(i())), A("notifyOtaReady", () => C(v.plugins ?? {})), A("authIntercept", () => f(v.authIntercept)), A("externalUrlOpener", () => h()), A("nativeBridge", () => {
43
43
  g(), a();
44
- }), O("deviceInfo", () => v()), O("statusBarTheme", () => D()), O("keyboard", () => y()), O("backButton", () => m({
45
- ...p(j.appName),
46
- ...j.backButton
47
- })), O("deepLinks", () => _()), O("network", () => b(j.network ?? {})), O("runtimeHooks", () => u(j.runtimeHooks ?? {})), j.push?.enabled && j.plugins?.pushNotifications) {
48
- let e = j.plugins.pushNotifications, t = j.plugins.localNotifications;
49
- O("push", () => S(e, j.push ?? {}, t));
44
+ }), A("deviceInfo", () => b()), A("statusBarTheme", () => k()), A("keyboard", () => x()), A("backButton", () => m({
45
+ ...p(v.appName),
46
+ ...v.backButton
47
+ })), A("deepLinks", () => y());
48
+ let N = v.deepLinks?.fallbackDelayMs;
49
+ if (N !== !1 && A("deepLinkFallback", () => _(N ?? 4e3)), A("network", () => S(v.network ?? {})), A("runtimeHooks", () => u(v.runtimeHooks ?? {})), v.push?.enabled && v.plugins?.pushNotifications) {
50
+ let e = v.plugins.pushNotifications, t = v.plugins.localNotifications;
51
+ A("push", () => w(e, v.push ?? {}, t));
50
52
  }
51
- return l() && j.splash?.autoHide !== !1 && O("splashSafetyTimer", () => T(j.splash?.maxWaitMs ?? 8e3)), O("pwa", () => w({
53
+ return l() && v.splash?.autoHide !== !1 && A("splashSafetyTimer", () => D(v.splash?.maxWaitMs ?? 8e3)), A("pwa", () => E({
52
54
  enabled: !0,
53
- ...j.pwa
54
- })), O("pushOptIn", () => C()), t() && O("desktopShell", () => e(j.desktop)), s() && O("viewport", () => k()), A = {
55
+ ...v.pwa
56
+ })), A("pushOptIn", () => T()), t() && A("desktopShell", () => e(v.desktop)), s() && A("viewport", () => j()), M = {
55
57
  platform: o(),
56
58
  isNative: s(),
57
59
  isPreview: c(),
58
60
  previewMode: r(),
59
- markAppReady: E
60
- }, A;
61
+ markAppReady: O
62
+ }, M;
61
63
  }
62
- function M() {
63
- A = null;
64
+ function P() {
65
+ M = null, v();
64
66
  }
65
67
  //#endregion
66
- export { j as bootNativeShell, M as resetNativeShellBootForTests };
68
+ export { N as bootNativeShell, P as resetNativeShellBootForTests };
@@ -0,0 +1,44 @@
1
+ import { ActiveContextUrlParams } from '../shared/providers/shell/ActiveContextStorage';
2
+ import { DeepLinkNavigator } from './deep-link';
3
+ /** The `setContext` payload of `ActiveContextProvider` (`useActiveContext().setContext`). */
4
+ export type DeepLinkContextUpdate = Partial<{
5
+ organizationId: string | null;
6
+ workspaceId: string | null;
7
+ projectId: string | null;
8
+ tenantId: string | null;
9
+ }>;
10
+ /**
11
+ * Ids a deep link may set as active context: a UUID or a cuid. Anything else is
12
+ * ignored so a crafted link cannot plant junk in the stored context.
13
+ */
14
+ export declare const DEEP_LINK_CONTEXT_ID_PATTERN: RegExp;
15
+ export interface DeepLinkContextOptions {
16
+ /** Query param names; defaults to `?org=&workspace=&project=&tenant=`. */
17
+ urlParams?: ActiveContextUrlParams;
18
+ }
19
+ /**
20
+ * Read the active-context ids a deep-link path carries. `path` is
21
+ * `pathname + search + hash`; the `#fragment` is ignored. Returns `null` when
22
+ * the link names no (valid) context.
23
+ *
24
+ * A link that names an organization or workspace but no project clears the
25
+ * project, so a project from the previous workspace cannot drive
26
+ * workspace-token issuance.
27
+ */
28
+ export declare function parseDeepLinkContext(path: string, options?: DeepLinkContextOptions): DeepLinkContextUpdate | null;
29
+ export interface DeepLinkNavigatorOptions extends DeepLinkContextOptions {
30
+ /**
31
+ * Commit the link's context before navigating — pass
32
+ * `useActiveContext().setContext`. A deep link arrives through `navigate()`
33
+ * (no reload, no `popstate`), so `ActiveContextProvider` would otherwise never
34
+ * see its `?org/workspace/project/tenant`.
35
+ */
36
+ setContext?: (context: DeepLinkContextUpdate) => void;
37
+ }
38
+ /**
39
+ * Build the navigator `registerDeepLinkNavigator` expects: it drops paths that
40
+ * are not same-origin in-app paths, commits the link's context once, then
41
+ * navigates. This is action-driven (it only runs for an actual deep link or
42
+ * push tap), so it cannot set up a URL ↔ context write-back loop.
43
+ */
44
+ export declare function createDeepLinkNavigator(navigate: (path: string) => void, options?: DeepLinkNavigatorOptions): DeepLinkNavigator;
@@ -0,0 +1,31 @@
1
+ import { DEFAULT_ACTIVE_CONTEXT_URL_PARAMS as e } from "../shared/providers/shell/ActiveContextStorage.js";
2
+ import { isSafeInAppPath as t } from "./deep-link.js";
3
+ //#region src/shell-native/deep-link-context.ts
4
+ var n = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|c[a-z0-9]{8,32})$/i;
5
+ function r(t, r = {}) {
6
+ let i = t.indexOf("?");
7
+ if (i === -1) return null;
8
+ let a = t.indexOf("#", i), o = a === -1 ? t.slice(i) : t.slice(i, a), s = new URLSearchParams(o), c = {
9
+ ...e,
10
+ ...r.urlParams
11
+ }, l = (e) => {
12
+ let t = s.get(e);
13
+ return t && n.test(t) ? t : null;
14
+ }, u = l(c.organization), d = l(c.workspace), f = l(c.project), p = l(c.tenant), m = {};
15
+ return u && (m.organizationId = u), d && (m.workspaceId = d), f ? m.projectId = f : (u || d) && (m.projectId = null), p && (m.tenantId = p), Object.keys(m).length > 0 ? m : null;
16
+ }
17
+ function i(e, n = {}) {
18
+ return (i) => {
19
+ if (!t(i)) {
20
+ console.debug("[shell-native] ignored a deep link that is not an in-app path");
21
+ return;
22
+ }
23
+ if (n.setContext) {
24
+ let e = r(i, n);
25
+ e && n.setContext(e);
26
+ }
27
+ e(i);
28
+ };
29
+ }
30
+ //#endregion
31
+ export { n as DEEP_LINK_CONTEXT_ID_PATTERN, i as createDeepLinkNavigator, r as parseDeepLinkContext };
@@ -1,4 +1,16 @@
1
- type DeepLinkNavigator = (path: string) => void;
1
+ export type DeepLinkNavigator = (path: string) => void;
2
+ /**
3
+ * How long `bootNativeShell` waits for a router to call
4
+ * `registerDeepLinkNavigator` before it drains queued deep links itself
5
+ * through `history.pushState` + `popstate` (see `armDeepLinkFallback`).
6
+ */
7
+ export declare const DEFAULT_DEEP_LINK_FALLBACK_DELAY_MS = 4000;
8
+ /**
9
+ * True for a same-origin, in-app path: `/x`, `/x?y#z`. Refuses protocol-relative
10
+ * (`//host`, `/\host`) and anything that is not a rooted path, so a deep link or
11
+ * push payload can never steer the webview to another origin.
12
+ */
13
+ export declare function isSafeInAppPath(path: string): boolean;
2
14
  /**
3
15
  * Map a deep-link URL to an in-app SPA path. Handles both
4
16
  * `scheme://app/path?x` (custom scheme; host is the synthetic `app`) and
@@ -9,10 +21,25 @@ export declare function deepLinkUrlToPath(rawUrl: string): string | null;
9
21
  export declare function installDeepLinkHandler(): Promise<void>;
10
22
  /**
11
23
  * Register the router's navigate function. Links that arrived before the router
12
- * mounted are queued and flushed here.
24
+ * mounted are queued and flushed here. Returns a disposer that unregisters this
25
+ * navigator only if it is still the active one (a newer registration wins).
26
+ *
27
+ * Prefer `useDeepLinkNavigator` in React shells — it also hydrates the active
28
+ * context from the link's `?org/workspace/project/tenant`.
13
29
  */
14
- export declare function registerDeepLinkNavigator(navigate: DeepLinkNavigator): void;
30
+ export declare function registerDeepLinkNavigator(navigate: DeepLinkNavigator): () => void;
15
31
  export declare function clearDeepLinkNavigator(): void;
16
32
  /** Route a path through the active navigator (or queue it) — used by push taps. */
17
33
  export declare function navigateDeepLinkPath(path: string): void;
18
- export {};
34
+ /**
35
+ * Safety net for shells whose router never registers a navigator: once
36
+ * `delayMs` has passed without a registration, queued links (and every later
37
+ * link while no navigator is registered) navigate through `history.pushState`
38
+ * + `popstate`. A navigator registered later always takes precedence. Calling
39
+ * it again re-arms with the new delay; `bootNativeShell` arms it.
40
+ */
41
+ export declare function armDeepLinkFallback(delayMs?: number): void;
42
+ /** Cancel the fallback timer and leave router-less navigation off. */
43
+ export declare function disarmDeepLinkFallback(): void;
44
+ /** Test-only: drop the queue, the navigator and the fallback. */
45
+ export declare function resetDeepLinksForTests(): void;