@flyos/design-system 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, signal, computed, Injectable, inject, TemplateRef, ViewContainerRef, effect, Input, Directive, ErrorHandler, isDevMode, Pipe, ChangeDetectionStrategy, Component, makeEnvironmentProviders, provideAppInitializer, PLATFORM_ID, DestroyRef, ElementRef, input, output, afterNextRender, HostListener, ViewChild, NgZone, viewChild, DOCUMENT as DOCUMENT$1, EventEmitter, Output, forwardRef, model, viewChildren, untracked, Injector, ViewEncapsulation, Renderer2, contentChildren, contentChild } from '@angular/core';
3
- import { catchError, throwError, Subject, from, firstValueFrom, of, Observable, map, ReplaySubject, retry, timer } from 'rxjs';
3
+ import { catchError, throwError, Subject, from, firstValueFrom, of, Observable, map, ReplaySubject, retry, timer, tap } from 'rxjs';
4
4
  import { HttpClient, HttpParams, HttpHeaders, HttpErrorResponse, HttpEventType } from '@angular/common/http';
5
5
  import { switchMap, debounceTime, distinctUntilChanged, filter } from 'rxjs/operators';
6
6
  import { HubConnectionBuilder, HttpTransportType, LogLevel, HubConnectionState } from '@microsoft/signalr';
@@ -48,7 +48,7 @@ import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
48
48
  // tools/publish-library.ps1 at bump time, and asserted by the spec beside this file.
49
49
  // Used only for the diagnostic message; the duplicate-instance detection itself is
50
50
  // version-agnostic, so a stale literal misnames a fork rather than hiding one.
51
- const FLY_DS_VERSION = '1.5.0';
51
+ const FLY_DS_VERSION = '1.6.0';
52
52
  const FLY_DS_REGISTRY_KEY = '__FLY_DS_INSTANCES__';
53
53
  /**
54
54
  * Records this design-system instance on the shared `scope` and returns the
@@ -15040,29 +15040,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImpo
15040
15040
  args: ['dragstart', ['$event']]
15041
15041
  }] } });
15042
15042
 
15043
- /** Files-manager answers a fresh (still-scanning) upload with `423 Locked` /
15044
- * `SCAN_PENDING` until the background virus scan clears it. */
15045
- const SCAN_PENDING_STATUS = 423;
15046
- /** Matches the retry budget used by the hand-rolled `423` retries in the notes
15047
- * and documents markdown editors (`notes-editor.component.ts`,
15048
- * `documents-editor.component.ts`) — the scan usually clears within a few
15049
- * seconds, so six attempts comfortably covers the common case without
15050
- * hammering the endpoint indefinitely on a stuck scan. */
15051
- const SCAN_PENDING_MAX_RETRIES = 6;
15052
- /** Fallback delay when the response carries no (or an unparsable) `Retry-After`
15053
- * header mirrors the flat 2s the editor call sites use today. */
15054
- const SCAN_PENDING_DEFAULT_DELAY_MS = 2000;
15055
- /**
15056
- * Resolves a `423 Locked` / `SCAN_PENDING` error's `Retry-After` header to a
15057
- * delay in milliseconds. The header is advisory and, per RFC 9110, either a
15058
- * number of seconds or an HTTP-date — both are handled. Falls back to
15059
- * {@link SCAN_PENDING_DEFAULT_DELAY_MS} when the header is missing or
15060
- * unparsable.
15061
- */
15062
- function scanPendingDelayMs(err) {
15063
- const header = err.headers?.get('Retry-After');
15043
+ /**
15044
+ * Files-Manager answers a fresh (still-scanning) upload with `423 Locked` / `SCAN_PENDING` until
15045
+ * the background virus scan clears it.
15046
+ */
15047
+ const FLY_SCAN_PENDING_STATUS = 423;
15048
+ /**
15049
+ * Retry budget. The scan usually clears within a few seconds, so six attempts comfortably covers
15050
+ * the common case without hammering the endpoint indefinitely on a stuck scan.
15051
+ */
15052
+ const FLY_SCAN_PENDING_MAX_RETRIES = 6;
15053
+ /** Fallback delay when the response carries no (or an unparsable) `Retry-After` header. */
15054
+ const FLY_SCAN_PENDING_DEFAULT_DELAY_MS = 2000;
15055
+ /**
15056
+ * Resolves a `423 Locked` / `SCAN_PENDING` error's `Retry-After` header to a delay in
15057
+ * milliseconds. The header is advisory and, per RFC 9110, either a number of seconds or an
15058
+ * HTTP-date — both are handled. Falls back to {@link FLY_SCAN_PENDING_DEFAULT_DELAY_MS} when the
15059
+ * header is missing, unparsable, or already in the past.
15060
+ */
15061
+ function flyScanPendingDelayMs(err) {
15062
+ const header = err?.headers?.get('Retry-After');
15064
15063
  if (!header)
15065
- return SCAN_PENDING_DEFAULT_DELAY_MS;
15064
+ return FLY_SCAN_PENDING_DEFAULT_DELAY_MS;
15066
15065
  const seconds = Number(header);
15067
15066
  if (Number.isFinite(seconds) && seconds >= 0)
15068
15067
  return seconds * 1000;
@@ -15072,8 +15071,36 @@ function scanPendingDelayMs(err) {
15072
15071
  if (diff > 0)
15073
15072
  return diff;
15074
15073
  }
15075
- return SCAN_PENDING_DEFAULT_DELAY_MS;
15074
+ return FLY_SCAN_PENDING_DEFAULT_DELAY_MS;
15076
15075
  }
15076
+ /**
15077
+ * Rides out the `423 SCAN_PENDING` window on any authenticated Files-Manager request.
15078
+ *
15079
+ * A file is not readable for the first seconds of its life — Files-Manager holds it at `423` until
15080
+ * the virus scan clears. Without this, the first read after an upload or an export completes just
15081
+ * fails, which is exactly when a user is most likely to click.
15082
+ *
15083
+ * **This honours `Retry-After`.** Every hand-rolled copy of this policy across the platform used a
15084
+ * flat `timer(2000)`, which is both slower than necessary when the server says "200ms" and a
15085
+ * hammer when it says "30s". The header is advisory, so the flat fallback remains for responses
15086
+ * that omit it.
15087
+ *
15088
+ * Only `423` is retried. A terminal outcome — `403 SCAN_INFECTED`, `422 SCAN_FAILED`, `401`, or
15089
+ * anything else — re-throws immediately: the `delay` notifier erroring stops `retry` at once
15090
+ * rather than waiting out the budget.
15091
+ *
15092
+ * @example
15093
+ * this.http.get(url, { responseType: 'blob' }).pipe(flyScanRetry())
15094
+ */
15095
+ function flyScanRetry(options = {}) {
15096
+ return retry({
15097
+ count: options.count ?? FLY_SCAN_PENDING_MAX_RETRIES,
15098
+ delay: (err) => err?.status === FLY_SCAN_PENDING_STATUS
15099
+ ? timer(flyScanPendingDelayMs(err))
15100
+ : throwError(() => err),
15101
+ });
15102
+ }
15103
+
15077
15104
  /**
15078
15105
  * Renders an authenticated image into a host `<img>` element by fetching the
15079
15106
  * resource as a blob through Angular's `HttpClient` and binding the resulting
@@ -15122,7 +15149,7 @@ function scanPendingDelayMs(err) {
15122
15149
  * few seconds of its life; the Files Manager download endpoint answers
15123
15150
  * `423 Locked` / `SCAN_PENDING` (with an advisory `Retry-After` header) until
15124
15151
  * the scan clears. Rather than treating that like a permission error, the
15125
- * directive retries the fetch — up to {@link SCAN_PENDING_MAX_RETRIES} times,
15152
+ * directive retries the fetch — up to {@link FLY_SCAN_PENDING_MAX_RETRIES} times,
15126
15153
  * honoring `Retry-After` when present (falling back to a flat 2s) — and swaps
15127
15154
  * in the image automatically once the scan reports Clean. This mirrors the
15128
15155
  * hand-rolled `retry({ count: 6, delay: … })` policy already used by the
@@ -15189,12 +15216,7 @@ class FlySecureSrcDirective {
15189
15216
  // scan clears. Any other error (401/403/404, terminal 403
15190
15217
  // SCAN_INFECTED, 422 SCAN_FAILED) re-throws immediately — the `delay`
15191
15218
  // notifier erroring stops `retry` right away without waiting.
15192
- retry({
15193
- count: SCAN_PENDING_MAX_RETRIES,
15194
- delay: (err) => err?.status === SCAN_PENDING_STATUS
15195
- ? timer(scanPendingDelayMs(err))
15196
- : throwError(() => err),
15197
- }))
15219
+ flyScanRetry())
15198
15220
  .subscribe({
15199
15221
  next: (blob) => {
15200
15222
  const objectUrl = URL.createObjectURL(blob);
@@ -17328,6 +17350,130 @@ function flyExportFileName(contentDisposition, fallback) {
17328
17350
  }
17329
17351
  }
17330
17352
 
17353
+ /**
17354
+ * Downloads a Files-Manager file through the authenticated `HttpClient` and hands it to the
17355
+ * browser's save dialog.
17356
+ *
17357
+ * **Why this exists rather than an `<a href>`.** `/api/files/{id}/download` is bearer-gated and
17358
+ * Files-Manager exposes no signed or public URL, so a browser-native navigation carries no
17359
+ * `Authorization` header and answers **401**. That is not a hypothetical: three Circles templates
17360
+ * shipped plain `<a href>` download links that were simply broken, Thoughts hit the same 401 on
17361
+ * its story attachments, and in both apps other screens had already hand-rolled the correct blob
17362
+ * fetch inline. The design system shipped the *save* half (`flyDownloadBlob`) and the image-side
17363
+ * *fetch* half (`img[flySecureSrc]`) but nothing for a plain authenticated download, so every app
17364
+ * rediscovered the same 401 and wrote the same fix.
17365
+ *
17366
+ * It also rides out the `423 SCAN_PENDING` window via {@link flyScanRetry}: a freshly-produced
17367
+ * export or upload is still being virus-scanned for the first seconds of its life, which is
17368
+ * exactly when a user clicks.
17369
+ *
17370
+ * @example
17371
+ * private readonly downloads = inject(FlyFileDownloadService);
17372
+ * this.downloads.download(attachment.fileId, attachment.fileName);
17373
+ */
17374
+ class FlyFileDownloadService {
17375
+ http = inject(HttpClient);
17376
+ /**
17377
+ * Fetches a file and saves it, subscribing internally — the fire-and-forget form for a click
17378
+ * handler that has no state to drive.
17379
+ *
17380
+ * Errors are left to the app's global `HttpClient` error handling. Use {@link fetch} instead
17381
+ * when the caller needs to show a spinner or a per-row failure state.
17382
+ *
17383
+ * @param fileIdOrUrl A bare Files-Manager file id, or a path starting with `/` used verbatim.
17384
+ * @param fileName Name offered to the OS save dialog, extension included.
17385
+ */
17386
+ download(fileIdOrUrl, fileName) {
17387
+ this.fetch(fileIdOrUrl, fileName).subscribe({
17388
+ // Swallowing here would hide a 403 SCAN_INFECTED behind a button that silently does
17389
+ // nothing; the app's error interceptor is the right place to surface it.
17390
+ error: () => undefined,
17391
+ });
17392
+ }
17393
+ /**
17394
+ * The observable form: emits the blob after saving it, so a caller can drive its own loading
17395
+ * and error state. The save happens on emission — subscribing is what triggers the download.
17396
+ *
17397
+ * @param fileIdOrUrl A bare Files-Manager file id, or a path starting with `/` used verbatim.
17398
+ * @param fileName Name offered to the OS save dialog, extension included.
17399
+ */
17400
+ fetch(fileIdOrUrl, fileName) {
17401
+ const url = fileIdOrUrl.startsWith('/') ? fileIdOrUrl : `/api/files/${fileIdOrUrl}/download`;
17402
+ return this.http
17403
+ .get(url, { responseType: 'blob' })
17404
+ .pipe(flyScanRetry(), tap((blob) => flyDownloadBlob(blob, fileName)));
17405
+ }
17406
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: FlyFileDownloadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17407
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: FlyFileDownloadService, providedIn: 'root' });
17408
+ }
17409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: FlyFileDownloadService, decorators: [{
17410
+ type: Injectable,
17411
+ args: [{ providedIn: 'root' }]
17412
+ }] });
17413
+
17414
+ /**
17415
+ * Unwraps `FlyApiResponse<T>` to its payload, or `null` when the call did not succeed.
17416
+ *
17417
+ * This is the STRICT reading: `success: false` yields `null` even if a partial `data` came with
17418
+ * it. Prefer it. Use {@link flyUnwrapLenient} only against an endpoint that is known to answer
17419
+ * unwrapped.
17420
+ */
17421
+ function flyUnwrap(res) {
17422
+ return res.success ? res.data ?? null : null;
17423
+ }
17424
+ /**
17425
+ * Unwraps `FlyApiResponse<T>`, tolerating an endpoint that answered UNWRAPPED — i.e. returned the
17426
+ * payload as the whole body with no envelope around it.
17427
+ *
17428
+ * **This is a workaround for a backend that is inconsistent, not a preference.** Every endpoint is
17429
+ * supposed to wrap its payload; a handful do not, and call sites carried a defensive
17430
+ * `res.data ?? res` for them. That expression forced the surrounding chain to `any`, which
17431
+ * silenced the mismatch rather than naming it. This keeps the identical runtime behaviour while
17432
+ * staying typed — but a call site reaching for it is evidence of an endpoint worth fixing, and it
17433
+ * cannot distinguish "unwrapped payload" from "envelope with `success: false`".
17434
+ */
17435
+ function flyUnwrapLenient(res) {
17436
+ return res.data ?? res;
17437
+ }
17438
+ /**
17439
+ * Normalizes the `FlyApiResponse<FlyPaged<T>>` envelope to the flat `{ items, total }` a list UI
17440
+ * reads. An absent `total` falls back to the row count, so a server that omits it still renders a
17441
+ * correct count for the page in hand rather than `0`.
17442
+ */
17443
+ function flyToPage(res) {
17444
+ const items = res.data?.items ?? [];
17445
+ return { items, total: res.data?.total ?? items.length };
17446
+ }
17447
+ /**
17448
+ * Best-effort extraction of the message (usually an i18n key) out of an
17449
+ * `HttpErrorResponse.error` body returned by a FlyOS endpoint.
17450
+ *
17451
+ * The wire format is inconsistent by design: business-rule failures arrive as `{ errors: [key] }`,
17452
+ * the structured envelope as `{ error: { code, message } }`, framework failures as `{ message }`,
17453
+ * and some proxies hand back a bare string. Call sites used to inline this probe behind
17454
+ * `err?.error as any`, typing the whole chain as `any` and duplicating the logic verbatim.
17455
+ *
17456
+ * @returns the first `errors[]` entry, else `error.message`, else `message`, else the raw string
17457
+ * body — or `undefined` when none of those is present.
17458
+ */
17459
+ function flyApiErrorMessage(err) {
17460
+ const raw = err?.error;
17461
+ if (typeof raw === 'string')
17462
+ return raw;
17463
+ if (raw && typeof raw === 'object') {
17464
+ const body = raw;
17465
+ if (Array.isArray(body.errors) && body.errors.length > 0)
17466
+ return String(body.errors[0]);
17467
+ const nested = body.error;
17468
+ if (nested && typeof nested === 'object' && typeof nested.message === 'string') {
17469
+ return nested.message;
17470
+ }
17471
+ if (typeof body.message === 'string')
17472
+ return body.message;
17473
+ }
17474
+ return undefined;
17475
+ }
17476
+
17331
17477
  /**
17332
17478
  * Shared presence-colour utility — one deterministic seed → colour mapping so
17333
17479
  * every co-authoring surface (mind-maps, canvas-boards, and future Documents/
@@ -21849,5 +21995,5 @@ const AUDIENCE_ERROR_CODES = {
21849
21995
  * Generated bundle index. Do not edit.
21850
21996
  */
21851
21997
 
21852
- export { AGENT_DRAG_MIME, AGENT_PAYLOAD_VERSION, APP_LOOKUP, AUDIENCE_ERROR_CODES, AUDIENCE_LIMITS, AUDIENCE_PRESETS, AUDIENCE_TERM_KINDS, AgentActionBus, AgentActionUnsupportedDispatchError, AgentCommandRegistry, AgentDropRegistry, AgentFlightAnimator, AgentLookupRegistry, AgentPayloadOversizeError, AudienceBuilderComponent, AuthService, BilingualFieldComponent, CRON_MODES, CRON_WEEKDAYS, ContextMenuComponent, DEFAULT_AGENT_PAYLOAD_LIMITS, DEFAULT_FLY_THEME_MODE, DS_BASELINE_LOCALES, DashboardKpiComponent, DialogResult, EntityLookupComponent, FLYOS_LAUNCH_EVENT, FLYOS_LAUNCH_REQUEST_EVENT, FLYOS_REMOTE_ROUTE_EVENT, FLY_ACCENT_PROPERTY, FLY_ADMIN_ROLES, FLY_CHUNK_RELOAD_FLAG, FLY_COMPACT_THRESHOLD, FLY_COUNTRIES, FLY_EMOJI_BY_ID, FLY_EMOJI_CATEGORIES, FLY_EMOJI_CATEGORY_BY_ID, FLY_EMOJI_DEFAULT_CATEGORIES, FLY_EMOJI_PACK, FLY_EMOJI_PACK_MISSING_MESSAGE, FLY_EMOJI_PREVIEW_COUNT, FLY_EMPTY_VALUE, FLY_LOCALE_CATALOG, FLY_NF_CACHE_HEAL_FLAG, FLY_RELOAD_DEBOUNCE_MS, FLY_RELOAD_REARM_MS, FLY_REMOTE_BASE_PATH, FLY_REMOTE_CONTEXT_EVENT, FLY_REMOTE_CONTEXT_STORE_KEY, FLY_REMOTE_ROUTES, FLY_SEARCH_DEBOUNCE_MS, FLY_SKIN_TONES, FLY_STANDALONE_AUTH_CONFIG, FLY_THEME_MODE_IDS, FLY_WINDOW_HELP_HINT_EVENT, FLY_WINDOW_PAGE_TITLE_EVENT, FlyAchievementProgressComponent, FlyActionMenuComponent, FlyActionStackComponent, FlyAgentDraggableDirective, FlyAnimatedEmojiComponent, FlyAppHomeComponent, FlyAppTopbarComponent, FlyAuthLiveRefresh, FlyBadgeWallComponent, FlyBlockUiComponent, FlyBreadcrumbComponent, FlyButtonComponent, FlyBytesPipe, FlyCaptchaComponent, FlyCardActionsComponent, FlyCardBodyComponent, FlyCardComponent, FlyCardFooterComponent, FlyCardGridComponent, FlyCardMediaComponent, FlyCardMetaComponent, FlyCardStatusComponent, FlyCardTitleComponent, FlyCellDirective, FlyCheckboxComponent, FlyChipComponent, FlyChunkReloadErrorHandler, FlyClickOutsideDirective, FlyCollapsibleComponent, FlyCommentThreadComponent, FlyCompactNumberPipe, FlyConfirmDialogComponent, FlyControlDirective, FlyCronBuilderComponent, FlyDataTableComponent, FlyDatePipe, FlyDateTimePipe, FlyDebouncer, FlyDecimalNumberPipe, FlyDetailCardComponent, FlyDetailShellComponent, FlyDrawerComponent, FlyDurationPipe, FlyDynamicFormComponent, FlyEmojiPickerComponent, FlyFieldComponent, FlyFileUploadComponent, FlyFilterPanelComponent, FlyFormBannerComponent, FlyFormFooterComponent, FlyFormGridComponent, FlyFormSectionComponent, FlyFullNumberPipe, FlyGanttComponent, FlyHubClient, FlyIconButtonComponent, FlyIfAdminDirective, FlyIfRoleDirective, FlyImageUploadComponent, FlyLeaderboardComponent, FlyMetaListComponent, FlyModalComponent, FlyModerationQueueComponent, FlyModuleIconDirective, FlyPaginationComponent, FlyPeoplePickerComponent, FlyPointsTierComponent, FlyProgressComponent, FlyRelativeTimePipe, FlyRemoteContextService, FlyRemoteRouter, FlyRemoteRouterOutletComponent, FlySearchInputComponent, FlySectionHeaderComponent, FlySecureSrcDirective, FlySegmentedComponent, FlySelectComponent, FlySkeletonComponent, FlySliderComponent, FlySparklineComponent, FlySpinnerComponent, FlyStandaloneAuthCallbackComponent, FlyStandaloneAuthService, FlyStateMessageComponent, FlyDynamicFormComponent as FlySurveyFormComponent, FlyTabComponent, FlyTabsComponent, FlyTagsInputComponent, FlyThemeService, FlyTimePipe, FlyToastService, FlyToggleComponent, FlyTooltipDirective, FlyTreeNavComponent, FlyTypeaheadComponent, FlyUserDirectoryService, FlyWindowHelpService, FlyWindowTitleService, FlyosPendingLaunchesGlobalKey, FlyosShellHandlesLaunchRequestsGlobalKey, FlyosShellOwnsHistoryGlobalKey, GANTT_ZOOMS, I18nService, LAUNCH_CONTEXT, MessageBoxButtons, MessageBoxComponent, MessageBoxIcon, MessageBoxService, MockAuthService, OverlayStack, PRESENCE_COLORS, PageHeaderComponent, RTL_LOCALE_SET, SHARE_ORG_CHART_SYSTEM_KEY_APPS, SHARE_ORG_CHART_SYSTEM_KEY_DEFAULT, SHARE_PANEL_DEFAULT_FILE_LEVELS, STATE_DEFAULT_ICONS, STATE_DEFAULT_MESSAGE_KEYS, STEP_UP_CODE, STEP_UP_REAUTH_HANDLER, STEP_UP_RETURN_KEY, SUPPORTED_AGENT_PAYLOAD_VERSIONS, SharePanelComponent, SourceAppResolver, StandaloneWindowManagerService, StatusBadgeComponent, StepUpService, ToastHostComponent, TranslatePipe, WINDOW_DATA, WINDOW_HELP_HINT, WindowManagerService, applySkinTone, applySuggestion, ariaSort, buildCron, canConfirm, canGoNext, canGoPrev, captureFocus, clampPage, clampSliderValue, connectRemoteLaunch, enterActivatesNatively, filterGroup, filterSuggestions, findLocaleByDialect, findLocaleByPrefix, firstEnabledIndex, firstModuleIndex, flattenModules, flyAdminGuard, flyCaptchaBase64Utf8, flyCaptchaBuildToken, flyCaptchaSha256Hex, flyCompactNumber, flyDebounced, flyDecimalNumber, flyDownloadBlob, flyDuration, flyEmojiFor, flyEmojiIsTonable, flyEmojiPackUrl, flyExportFileName, flyFirstEnabledIndex, flyFormatBytes, flyFormatDate, flyFormatDateTime, flyFormatTime, flyFullNumber, flyNextEnabledIndex, flyNextSegmentIndex, flyRelativeTime, flyResolveActiveTab, flyRoleGuard, flySignedCompact, flySkinToneLabelKey, flyStandaloneAuthGuard, flyStandaloneAuthInterceptor, flyToDateOnly, hasAnyRoleIn, healNativeFederationCacheOnce, initialExpanded, isAccentColor, isChunkLoadError, isFlyAuthStorePopulated, isNativeFederationCacheError, isRtlLocale, isRtlLocaleEntry, isValidCron, isValidSingleField, loadRemoteStyles, matchFlyRoutePattern, nextEnabledIndex, nextModuleIndex, nextSegmentIndex, nextSort, normalizeFlyTheme, normalizeRoles, overlayStack, parseCron, parseStepUpChallenge, parseTags, presenceColorFor, printConsoleSecurityWarning, provideFlyChunkReloadRecovery, provideFlyEmojiPack, provideFlyStandaloneAuth, reloadOnceForChunkError, requestAppLaunch, resolveActiveModule, resolveActiveSection, resolveActiveTab, resolveCellValue, resolveStateIcon, resolveStateMessageKey, restoreFocus, sameTags, sectionHintKey, sectionLayout, sliderTrackGradient, sparklinePath, sparklinePoints, stepUpInterceptor, stepUpReturnKey, trimAgentPayload, trimAgentString, unloadRemoteStyles, utf8ByteLength, validateAgentPayload, warnIfEmbeddedSessionMissing };
21998
+ export { AGENT_DRAG_MIME, AGENT_PAYLOAD_VERSION, APP_LOOKUP, AUDIENCE_ERROR_CODES, AUDIENCE_LIMITS, AUDIENCE_PRESETS, AUDIENCE_TERM_KINDS, AgentActionBus, AgentActionUnsupportedDispatchError, AgentCommandRegistry, AgentDropRegistry, AgentFlightAnimator, AgentLookupRegistry, AgentPayloadOversizeError, AudienceBuilderComponent, AuthService, BilingualFieldComponent, CRON_MODES, CRON_WEEKDAYS, ContextMenuComponent, DEFAULT_AGENT_PAYLOAD_LIMITS, DEFAULT_FLY_THEME_MODE, DS_BASELINE_LOCALES, DashboardKpiComponent, DialogResult, EntityLookupComponent, FLYOS_LAUNCH_EVENT, FLYOS_LAUNCH_REQUEST_EVENT, FLYOS_REMOTE_ROUTE_EVENT, FLY_ACCENT_PROPERTY, FLY_ADMIN_ROLES, FLY_CHUNK_RELOAD_FLAG, FLY_COMPACT_THRESHOLD, FLY_COUNTRIES, FLY_EMOJI_BY_ID, FLY_EMOJI_CATEGORIES, FLY_EMOJI_CATEGORY_BY_ID, FLY_EMOJI_DEFAULT_CATEGORIES, FLY_EMOJI_PACK, FLY_EMOJI_PACK_MISSING_MESSAGE, FLY_EMOJI_PREVIEW_COUNT, FLY_EMPTY_VALUE, FLY_LOCALE_CATALOG, FLY_NF_CACHE_HEAL_FLAG, FLY_RELOAD_DEBOUNCE_MS, FLY_RELOAD_REARM_MS, FLY_REMOTE_BASE_PATH, FLY_REMOTE_CONTEXT_EVENT, FLY_REMOTE_CONTEXT_STORE_KEY, FLY_REMOTE_ROUTES, FLY_SCAN_PENDING_DEFAULT_DELAY_MS, FLY_SCAN_PENDING_MAX_RETRIES, FLY_SCAN_PENDING_STATUS, FLY_SEARCH_DEBOUNCE_MS, FLY_SKIN_TONES, FLY_STANDALONE_AUTH_CONFIG, FLY_THEME_MODE_IDS, FLY_WINDOW_HELP_HINT_EVENT, FLY_WINDOW_PAGE_TITLE_EVENT, FlyAchievementProgressComponent, FlyActionMenuComponent, FlyActionStackComponent, FlyAgentDraggableDirective, FlyAnimatedEmojiComponent, FlyAppHomeComponent, FlyAppTopbarComponent, FlyAuthLiveRefresh, FlyBadgeWallComponent, FlyBlockUiComponent, FlyBreadcrumbComponent, FlyButtonComponent, FlyBytesPipe, FlyCaptchaComponent, FlyCardActionsComponent, FlyCardBodyComponent, FlyCardComponent, FlyCardFooterComponent, FlyCardGridComponent, FlyCardMediaComponent, FlyCardMetaComponent, FlyCardStatusComponent, FlyCardTitleComponent, FlyCellDirective, FlyCheckboxComponent, FlyChipComponent, FlyChunkReloadErrorHandler, FlyClickOutsideDirective, FlyCollapsibleComponent, FlyCommentThreadComponent, FlyCompactNumberPipe, FlyConfirmDialogComponent, FlyControlDirective, FlyCronBuilderComponent, FlyDataTableComponent, FlyDatePipe, FlyDateTimePipe, FlyDebouncer, FlyDecimalNumberPipe, FlyDetailCardComponent, FlyDetailShellComponent, FlyDrawerComponent, FlyDurationPipe, FlyDynamicFormComponent, FlyEmojiPickerComponent, FlyFieldComponent, FlyFileDownloadService, FlyFileUploadComponent, FlyFilterPanelComponent, FlyFormBannerComponent, FlyFormFooterComponent, FlyFormGridComponent, FlyFormSectionComponent, FlyFullNumberPipe, FlyGanttComponent, FlyHubClient, FlyIconButtonComponent, FlyIfAdminDirective, FlyIfRoleDirective, FlyImageUploadComponent, FlyLeaderboardComponent, FlyMetaListComponent, FlyModalComponent, FlyModerationQueueComponent, FlyModuleIconDirective, FlyPaginationComponent, FlyPeoplePickerComponent, FlyPointsTierComponent, FlyProgressComponent, FlyRelativeTimePipe, FlyRemoteContextService, FlyRemoteRouter, FlyRemoteRouterOutletComponent, FlySearchInputComponent, FlySectionHeaderComponent, FlySecureSrcDirective, FlySegmentedComponent, FlySelectComponent, FlySkeletonComponent, FlySliderComponent, FlySparklineComponent, FlySpinnerComponent, FlyStandaloneAuthCallbackComponent, FlyStandaloneAuthService, FlyStateMessageComponent, FlyDynamicFormComponent as FlySurveyFormComponent, FlyTabComponent, FlyTabsComponent, FlyTagsInputComponent, FlyThemeService, FlyTimePipe, FlyToastService, FlyToggleComponent, FlyTooltipDirective, FlyTreeNavComponent, FlyTypeaheadComponent, FlyUserDirectoryService, FlyWindowHelpService, FlyWindowTitleService, FlyosPendingLaunchesGlobalKey, FlyosShellHandlesLaunchRequestsGlobalKey, FlyosShellOwnsHistoryGlobalKey, GANTT_ZOOMS, I18nService, LAUNCH_CONTEXT, MessageBoxButtons, MessageBoxComponent, MessageBoxIcon, MessageBoxService, MockAuthService, OverlayStack, PRESENCE_COLORS, PageHeaderComponent, RTL_LOCALE_SET, SHARE_ORG_CHART_SYSTEM_KEY_APPS, SHARE_ORG_CHART_SYSTEM_KEY_DEFAULT, SHARE_PANEL_DEFAULT_FILE_LEVELS, STATE_DEFAULT_ICONS, STATE_DEFAULT_MESSAGE_KEYS, STEP_UP_CODE, STEP_UP_REAUTH_HANDLER, STEP_UP_RETURN_KEY, SUPPORTED_AGENT_PAYLOAD_VERSIONS, SharePanelComponent, SourceAppResolver, StandaloneWindowManagerService, StatusBadgeComponent, StepUpService, ToastHostComponent, TranslatePipe, WINDOW_DATA, WINDOW_HELP_HINT, WindowManagerService, applySkinTone, applySuggestion, ariaSort, buildCron, canConfirm, canGoNext, canGoPrev, captureFocus, clampPage, clampSliderValue, connectRemoteLaunch, enterActivatesNatively, filterGroup, filterSuggestions, findLocaleByDialect, findLocaleByPrefix, firstEnabledIndex, firstModuleIndex, flattenModules, flyAdminGuard, flyApiErrorMessage, flyCaptchaBase64Utf8, flyCaptchaBuildToken, flyCaptchaSha256Hex, flyCompactNumber, flyDebounced, flyDecimalNumber, flyDownloadBlob, flyDuration, flyEmojiFor, flyEmojiIsTonable, flyEmojiPackUrl, flyExportFileName, flyFirstEnabledIndex, flyFormatBytes, flyFormatDate, flyFormatDateTime, flyFormatTime, flyFullNumber, flyNextEnabledIndex, flyNextSegmentIndex, flyRelativeTime, flyResolveActiveTab, flyRoleGuard, flyScanPendingDelayMs, flyScanRetry, flySignedCompact, flySkinToneLabelKey, flyStandaloneAuthGuard, flyStandaloneAuthInterceptor, flyToDateOnly, flyToPage, flyUnwrap, flyUnwrapLenient, hasAnyRoleIn, healNativeFederationCacheOnce, initialExpanded, isAccentColor, isChunkLoadError, isFlyAuthStorePopulated, isNativeFederationCacheError, isRtlLocale, isRtlLocaleEntry, isValidCron, isValidSingleField, loadRemoteStyles, matchFlyRoutePattern, nextEnabledIndex, nextModuleIndex, nextSegmentIndex, nextSort, normalizeFlyTheme, normalizeRoles, overlayStack, parseCron, parseStepUpChallenge, parseTags, presenceColorFor, printConsoleSecurityWarning, provideFlyChunkReloadRecovery, provideFlyEmojiPack, provideFlyStandaloneAuth, reloadOnceForChunkError, requestAppLaunch, resolveActiveModule, resolveActiveSection, resolveActiveTab, resolveCellValue, resolveStateIcon, resolveStateMessageKey, restoreFocus, sameTags, sectionHintKey, sectionLayout, sliderTrackGradient, sparklinePath, sparklinePoints, stepUpInterceptor, stepUpReturnKey, trimAgentPayload, trimAgentString, unloadRemoteStyles, utf8ByteLength, validateAgentPayload, warnIfEmbeddedSessionMissing };
21853
21999
  //# sourceMappingURL=flyos-design-system.mjs.map