@acorex-platform/framework-client 2.0.0-next.0 → 2.0.0-next.10

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.
Files changed (45) hide show
  1. package/fesm2022/acorex-platform-framework-client-auth.mjs +113 -45
  2. package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-framework-client-common.mjs +320 -166
  4. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-framework-client-core.mjs +7 -2
  6. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +109 -15
  8. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  9. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DToXUL54.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Dj1zqE3r.mjs} +456 -169
  10. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Dj1zqE3r.mjs.map +1 -0
  11. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-DqssRhIG.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-Dv0qPsuq.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-DqssRhIG.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-Dv0qPsuq.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-Deq-a9MQ.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-D774EAiQ.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-Deq-a9MQ.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-D774EAiQ.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-J30yrJMo.mjs → acorex-platform-framework-client-layout-entity-file-list-popup.component-BwTpQIWl.mjs} +4 -4
  16. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-J30yrJMo.mjs.map → acorex-platform-framework-client-layout-entity-file-list-popup.component-BwTpQIWl.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-BqqxD8cX.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-Be6RD2-p.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-BqqxD8cX.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-Be6RD2-p.mjs.map} +1 -1
  19. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
  20. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +12 -0
  21. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +98 -13
  23. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  24. package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-Drmmu4HQ.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-BNdFv1ii.mjs} +310 -54
  25. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-BNdFv1ii.mjs.map +1 -0
  26. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BiuahYd8.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-CgSd-ix-.mjs} +3 -3
  27. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BiuahYd8.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-CgSd-ix-.mjs.map} +1 -1
  28. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-CU_5b_te.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-DyW8ti20.mjs} +2 -2
  29. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-CU_5b_te.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-DyW8ti20.mjs.map} +1 -1
  30. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
  31. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +27 -14
  32. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  33. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +1 -1
  34. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
  35. package/layout/widget-core/README.md +1 -1
  36. package/layout/widgets/README.md +2 -2
  37. package/package.json +2 -2
  38. package/types/acorex-platform-framework-client-auth.d.ts +15 -1
  39. package/types/acorex-platform-framework-client-common.d.ts +35 -4
  40. package/types/acorex-platform-framework-client-layout-components.d.ts +26 -1
  41. package/types/acorex-platform-framework-client-layout-entity.d.ts +52 -29
  42. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +26 -2
  43. package/types/acorex-platform-framework-client-layout-widgets.d.ts +9 -7
  44. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DToXUL54.mjs.map +0 -1
  45. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-Drmmu4HQ.mjs.map +0 -1
@@ -584,24 +584,64 @@ const AXP_SETTING_DEFINITION_PROVIDER = new InjectionToken('AXP_SETTING_DEFINITI
584
584
  class AXPSettingDefinitionProviderService {
585
585
  constructor() {
586
586
  this.providers = inject(AXP_SETTING_DEFINITION_PROVIDER, { optional: true });
587
+ this.sessionService = inject(AXPSessionService);
587
588
  this.cache = null;
589
+ /**
590
+ * Tenant, application, and enabled edition features.
591
+ * Providers such as Telegram gate sections on `isModuleEnabled` at build time,
592
+ * so a catalog built before login must be rebuilt once features arrive.
593
+ */
594
+ this.cacheAvailabilityKey = null;
588
595
  this.loadPromise = null;
589
596
  }
597
+ /** Same identity permissions use when deciding the definition cache is still valid. */
598
+ getAvailabilityKey() {
599
+ return this.buildAvailabilityKey();
600
+ }
601
+ buildAvailabilityKey() {
602
+ const enabled = this.sessionService.features
603
+ .filter((feature) => feature.value === true && !!feature.name)
604
+ .map((feature) => feature.name)
605
+ .sort();
606
+ const applicationId = this.sessionService.application?.id ?? '';
607
+ const tenantId = this.sessionService.tenant?.id ?? '';
608
+ return `${tenantId}|${applicationId}|${enabled.join(',')}`;
609
+ }
590
610
  async load() {
591
- if (this.cache) {
592
- return;
593
- }
594
- if (!this.loadPromise) {
595
- this.loadPromise = this.loadDefinitions().finally(() => {
596
- this.loadPromise = null;
611
+ while (true) {
612
+ const availabilityKey = this.buildAvailabilityKey();
613
+ if (this.cache && this.cacheAvailabilityKey === availabilityKey) {
614
+ return;
615
+ }
616
+ if (this.loadPromise) {
617
+ await this.loadPromise;
618
+ continue;
619
+ }
620
+ const keyAtStart = availabilityKey;
621
+ this.cache = null;
622
+ this.cacheAvailabilityKey = null;
623
+ let resolveLoad;
624
+ this.loadPromise = new Promise((resolve) => {
625
+ resolveLoad = resolve;
597
626
  });
627
+ try {
628
+ await this.loadDefinitions();
629
+ if (this.buildAvailabilityKey() === keyAtStart) {
630
+ this.cacheAvailabilityKey = keyAtStart;
631
+ }
632
+ else {
633
+ // Features changed while providers ran. Drop the catalog and rebuild.
634
+ this.cache = null;
635
+ this.cacheAvailabilityKey = null;
636
+ }
637
+ }
638
+ finally {
639
+ this.loadPromise = null;
640
+ resolveLoad();
641
+ }
598
642
  }
599
- await this.loadPromise;
600
643
  }
601
644
  async loadDefinitions() {
602
- if (this.cache) {
603
- return;
604
- }
605
645
  const context = new AXPSettingDefinitionProviderContext();
606
646
  // Load providers from DI tokens — isolate failures so one provider cannot block bootstrap.
607
647
  const providerList = this.normalizeProviders(this.providers);
@@ -629,6 +669,12 @@ class AXPSettingDefinitionProviderService {
629
669
  }
630
670
  async reload() {
631
671
  this.cache = null;
672
+ this.cacheAvailabilityKey = null;
673
+ if (this.loadPromise) {
674
+ await this.loadPromise;
675
+ this.cache = null;
676
+ this.cacheAvailabilityKey = null;
677
+ }
632
678
  await this.load();
633
679
  }
634
680
  async getListAsync(scope) {
@@ -3442,6 +3488,213 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
3442
3488
  }]
3443
3489
  }], ctorParameters: () => [] });
3444
3490
 
3491
+ //#endregion
3492
+ //#region ---- App Path Navigation ----
3493
+ /**
3494
+ * Splits an absolute app path (`/app/m/module/e/Entity/id/view`) into router command segments.
3495
+ * Prefer this over `navigate([fullPath])` or ambiguous single-segment navigation so browser history stays correct.
3496
+ */
3497
+ function axpParseAppPath(path) {
3498
+ const trimmed = path.trim();
3499
+ const withoutLeadingSlash = trimmed.startsWith('/') ? trimmed.slice(1) : trimmed;
3500
+ const [pathAndFragment, queryString] = withoutLeadingSlash.split('?');
3501
+ const [pathPart, fragment] = pathAndFragment.split('#');
3502
+ const segments = pathPart.split('/').filter(Boolean);
3503
+ const queryParams = queryString
3504
+ ? queryString.split('&').reduce((params, pair) => {
3505
+ const [key, value = ''] = pair.split('=');
3506
+ if (key) {
3507
+ params[decodeURIComponent(key)] = decodeURIComponent(value);
3508
+ }
3509
+ return params;
3510
+ }, {})
3511
+ : undefined;
3512
+ return {
3513
+ segments,
3514
+ queryParams,
3515
+ fragment: fragment || undefined,
3516
+ };
3517
+ }
3518
+ /** Navigates using explicit path segments (same pattern as entity preload filters). */
3519
+ function axpNavigateAppPath(router, path, extras) {
3520
+ const { segments, queryParams, fragment } = axpParseAppPath(path);
3521
+ return router.navigate(segments, {
3522
+ ...extras,
3523
+ queryParams,
3524
+ fragment,
3525
+ });
3526
+ }
3527
+ /** True when a URL path is an entity master list route (`.../e/{Entity}/list`). */
3528
+ function axpIsEntityListPath(url) {
3529
+ const path = url.split('?')[0].split('#')[0];
3530
+ return /\/e\/[^/]+\/list$/.test(path);
3531
+ }
3532
+ /** True when the current browser URL is an entity master list route (`.../e/{Entity}/list`). */
3533
+ function axpIsEntityListRoute(router) {
3534
+ return axpIsEntityListPath(router.url);
3535
+ }
3536
+ /** True when a URL path is an entity details view route (`.../e/{Entity}/{id}/view`). */
3537
+ function axpIsEntityDetailsPath(url) {
3538
+ const path = url.split('?')[0].split('#')[0];
3539
+ return /\/e\/[^/]+\/[^/]+\/view$/.test(path);
3540
+ }
3541
+ /**
3542
+ * Entity key (`module.entity`) for `/{app}/m/{module}/e/{entity}/{id}/view`.
3543
+ * Query and hash are ignored. Returns null for every other path.
3544
+ */
3545
+ function axpEntityKeyFromDetailsPath(url) {
3546
+ const path = url.split('?')[0]?.split('#')[0] ?? '';
3547
+ const match = /\/m\/([^/]+)\/e\/([^/]+)\/[^/]+\/view$/.exec(path);
3548
+ const moduleName = match?.[1];
3549
+ const entityName = match?.[2];
3550
+ if (!moduleName || !entityName) {
3551
+ return null;
3552
+ }
3553
+ return `${moduleName}.${entityName}`;
3554
+ }
3555
+ /** True when the current browser URL is an entity details view route (`.../e/{Entity}/{id}/view`). */
3556
+ function axpIsEntityDetailsViewRoute(router) {
3557
+ return axpIsEntityDetailsPath(router.url);
3558
+ }
3559
+ /**
3560
+ * Merges query params on the current entity list route without pushing history.
3561
+ * Uses absolute path segments so a stale `relativeTo` cannot rewrite the active URL after navigating away.
3562
+ */
3563
+ function axpReplaceEntityListRouteQueryParams(router, queryParams) {
3564
+ const url = router.url;
3565
+ if (!axpIsEntityListPath(url)) {
3566
+ return;
3567
+ }
3568
+ const parsed = router.parseUrl(url);
3569
+ const pathOnly = url.split('?')[0].split('#')[0];
3570
+ const { segments } = axpParseAppPath(pathOnly);
3571
+ const mergedQueryParams = { ...parsed.queryParams, ...queryParams };
3572
+ void router.navigate(segments, {
3573
+ queryParams: mergedQueryParams,
3574
+ replaceUrl: true,
3575
+ });
3576
+ }
3577
+ //#endregion
3578
+
3579
+ //#region ----- Constants -----
3580
+ /** Query param that distinguishes two menus pointing at the same entity list. */
3581
+ const ENTITY_LIST_INSTANCE_QUERY_PARAM = 'list';
3582
+ /** Used when the list is opened without a menu (command, deep link). */
3583
+ const ENTITY_LIST_DEFAULT_INSTANCE_ID = 'default';
3584
+ //#endregion
3585
+ //#region ----- Instance id -----
3586
+ function axpNormalizeEntityListInstanceId(value) {
3587
+ if (typeof value !== 'string') {
3588
+ return ENTITY_LIST_DEFAULT_INSTANCE_ID;
3589
+ }
3590
+ const trimmed = value.trim();
3591
+ return trimmed.length > 0 ? trimmed : ENTITY_LIST_DEFAULT_INSTANCE_ID;
3592
+ }
3593
+ function axpGetEntityListInstanceIdFromQueryString(queryString) {
3594
+ const params = new URLSearchParams(queryString.startsWith('?') ? queryString.slice(1) : queryString);
3595
+ return axpNormalizeEntityListInstanceId(params.get(ENTITY_LIST_INSTANCE_QUERY_PARAM));
3596
+ }
3597
+ function axpGetEntityListInstanceIdFromParamMap(queryParamMap) {
3598
+ return axpNormalizeEntityListInstanceId(queryParamMap.get(ENTITY_LIST_INSTANCE_QUERY_PARAM));
3599
+ }
3600
+ function axpGetEntityListInstanceIdFromPath(path) {
3601
+ const queryString = path.split('#')[0].split('?')[1] ?? '';
3602
+ return axpGetEntityListInstanceIdFromQueryString(queryString);
3603
+ }
3604
+ //#endregion
3605
+ //#region ----- Menu / URL stamping -----
3606
+ /**
3607
+ * Appends `list={instanceId}` to an entity-list path when missing.
3608
+ * Named menu entries get a stable identity so Angular reuses the list route
3609
+ * while filter persistence can still isolate each menu.
3610
+ */
3611
+ function axpEnsureEntityListInstanceQueryParam(path, instanceId) {
3612
+ if (!path || !instanceId || !axpIsEntityListPath(path)) {
3613
+ return path;
3614
+ }
3615
+ const normalized = axpNormalizeEntityListInstanceId(instanceId);
3616
+ if (normalized === ENTITY_LIST_DEFAULT_INSTANCE_ID) {
3617
+ return path;
3618
+ }
3619
+ const { segments, queryParams, fragment } = axpParseAppPath(path);
3620
+ if (queryParams?.[ENTITY_LIST_INSTANCE_QUERY_PARAM]) {
3621
+ return path;
3622
+ }
3623
+ const nextQuery = new URLSearchParams({
3624
+ ...(queryParams ?? {}),
3625
+ [ENTITY_LIST_INSTANCE_QUERY_PARAM]: normalized,
3626
+ });
3627
+ const base = `/${segments.join('/')}`;
3628
+ const withQuery = `${base}?${nextQuery.toString()}`;
3629
+ return fragment ? `${withQuery}#${fragment}` : withQuery;
3630
+ }
3631
+ /**
3632
+ * Query keys the list page rewrites while the user stays on the same menu
3633
+ * (`view`, `filters`, layout, refresh). They must not open another tab.
3634
+ */
3635
+ const ENTITY_LIST_PAGE_STATE_QUERY_KEYS = new Set(['view', 'layout', 'filters', '_ts']);
3636
+ function pushEntityListNavigationPair(pairs, key, raw) {
3637
+ if (!key || ENTITY_LIST_PAGE_STATE_QUERY_KEYS.has(key)) {
3638
+ return;
3639
+ }
3640
+ const value = Array.isArray(raw) ? raw[0] : raw;
3641
+ if (typeof value !== 'string') {
3642
+ return;
3643
+ }
3644
+ if (key === ENTITY_LIST_INSTANCE_QUERY_PARAM) {
3645
+ const normalized = axpNormalizeEntityListInstanceId(value);
3646
+ if (normalized === ENTITY_LIST_DEFAULT_INSTANCE_ID) {
3647
+ return;
3648
+ }
3649
+ pairs.push([key, normalized]);
3650
+ return;
3651
+ }
3652
+ pairs.push([key, value]);
3653
+ }
3654
+ function readEntityListNavigationPairs(query) {
3655
+ const pairs = [];
3656
+ if (!query) {
3657
+ return pairs;
3658
+ }
3659
+ if (typeof query === 'string') {
3660
+ const queryString = query.includes('?')
3661
+ ? (query.split('#')[0].split('?')[1] ?? '')
3662
+ : query.replace(/^\?/, '');
3663
+ const params = new URLSearchParams(queryString);
3664
+ params.forEach((value, key) => pushEntityListNavigationPair(pairs, key, value));
3665
+ return pairs;
3666
+ }
3667
+ if (typeof URLSearchParams !== 'undefined' && query instanceof URLSearchParams) {
3668
+ query.forEach((value, key) => pushEntityListNavigationPair(pairs, key, value));
3669
+ return pairs;
3670
+ }
3671
+ for (const [key, value] of Object.entries(query)) {
3672
+ pushEntityListNavigationPair(pairs, key, value);
3673
+ }
3674
+ return pairs;
3675
+ }
3676
+ /**
3677
+ * Tab and route-cache identity for an entity list.
3678
+ * Navigation query params (`mode=cm`, `mode=pm`, non-default `list`, …) keep each menu distinct,
3679
+ * the same way simple navigation does. Page-state params stay on the URL and do not split the tab.
3680
+ */
3681
+ function axpEntityListNavigationTabKey(path, query) {
3682
+ const base = path.split('?')[0].split('#')[0].replace(/\/+$/, '') || '/';
3683
+ if (!axpIsEntityListPath(base)) {
3684
+ return base;
3685
+ }
3686
+ const pairs = readEntityListNavigationPairs(query);
3687
+ if (!pairs.length) {
3688
+ return base;
3689
+ }
3690
+ pairs.sort((left, right) => left[0].localeCompare(right[0]) || left[1].localeCompare(right[1]));
3691
+ const queryString = pairs
3692
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
3693
+ .join('&');
3694
+ return `${base}?${queryString}`;
3695
+ }
3696
+ //#endregion
3697
+
3445
3698
  //#endregion
3446
3699
  /**
3447
3700
  * Holds detached Angular route component instances keyed by tab key so tabular navigation can
@@ -3502,7 +3755,11 @@ class AXPTabRouteCacheRegistry {
3502
3755
  */
3503
3756
  syncOpenKeys(scopedKeys, activeTabUrls = []) {
3504
3757
  const scopedSet = new Set(scopedKeys);
3505
- const activePathSet = new Set(activeTabUrls.map((url) => url.split('?')[0].split('#')[0].replace(/\/+$/, '') || '/'));
3758
+ const activePathSet = new Set(activeTabUrls.flatMap((url) => {
3759
+ const pathOnly = url.split('?')[0].split('#')[0].replace(/\/+$/, '') || '/';
3760
+ const withNavigation = axpEntityListNavigationTabKey(pathOnly, url);
3761
+ return withNavigation === pathOnly ? [pathOnly] : [pathOnly, withNavigation];
3762
+ }));
3506
3763
  for (const cacheKey of [...this.handles.keys()]) {
3507
3764
  const normalizedCacheKey = cacheKey.replace(/\/+$/, '') || '/';
3508
3765
  const keepsScopedKey = scopedSet.has(normalizedCacheKey);
@@ -5329,7 +5586,7 @@ class AXPBackgroundOperationSlotComponent {
5329
5586
  this.popover()?.close();
5330
5587
  }
5331
5588
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBackgroundOperationSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5332
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPBackgroundOperationSlotComponent, isStandalone: true, selector: "axp-background-operation-slot", viewQueries: [{ propertyName: "popover", first: true, predicate: AXPopoverComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@if (showSlot()) {\n <!-- ----- Footer tray trigger ----- -->\n <button type=\"button\" class=\"operation-slot__trigger\" #operationTrigger (click)=\"onTriggerClick(panel)\">\n @if (badgeDisplay()) {\n <!-- ----- Count badge ----- -->\n <ax-badge class=\"operation-slot__badge\" [class.--xs]=\"badgeDisplay().length > 2\" color=\"danger\" [text]=\"badgeDisplay()\"></ax-badge>\n }\n @if (slotShowsFailureOnly()) {\n <!-- ----- Failed tasks ----- -->\n <ax-icon class=\"operation-slot__icon\">\n <i class=\"fa-light fa-circle-exclamation\"></i>\n </ax-icon>\n }\n <!--->\n <!-- ----- In-progress spinner (no icon for completed) ----- -->\n @else if (!slotShowsRetainedOnly()) {\n <ax-icon class=\"operation-slot__icon\">\n <i class=\"fa-light fa-spinner fa-spin\"></i>\n </ax-icon>\n }\n <span class=\"operation-slot__text\">\n {{ slotLabelKey() | translate | async }}\n </span>\n </button>\n\n <ax-popover\n [target]=\"operationTrigger\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n (onOpened)=\"onPopoverOpened(panel)\"\n >\n <axp-background-operation-panel\n #panel\n (onClosePopover)=\"closePopover()\"\n ></axp-background-operation-panel>\n </ax-popover>\n}\n", styles: ["@layer properties;axp-background-operation-slot{display:inline-flex}.operation-slot__trigger{display:inline-flex;cursor:pointer;align-items:center;gap:calc(var(--spacing, .25rem) * 1.5);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);color:var(--color-text-default);--ax-sys-size: ax-sm;--ax-sys-size-base: calc(var(--ax-sys-size-md) - var(--ax-sys-size-step));--spacing: calc(var(--ax-sys-spacing-base) - .25 * var(--ax-sys-padding-step));--ax-sys-border-radius: var(--ax-sys-border-radius-base);--text-xs: calc(var(--ax-sys-text-xs-base) * 11 / 12);--text-sm: calc(var(--ax-sys-text-sm-base) * 6 / 7);--text-base: calc(var(--ax-sys-body-font-size) * .875);--text-lg: calc(var(--ax-sys-text-lg-base) * 8 / 9);--text-xl: calc(var(--ax-sys-text-xl-base) * .9);--leading-3: calc(var(--ax-sys-leading-3-base) * 7 / 6);--leading-4: var(--ax-sys-leading-4-base);--leading-5: calc(var(--ax-sys-leading-5-base) * .9);--leading-6: calc(var(--ax-sys-leading-6-base) * 11 / 12)}@media(hover:hover){.operation-slot__trigger:hover{background-color:rgba(var(--ax-sys-color-light-surface))}}.operation-slot__icon{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)))}.operation-slot__text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}.operation-slot__badge{flex-shrink:0}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i4$1.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i3$2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXPBackgroundOperationPanelComponent, selector: "axp-background-operation-panel", outputs: ["onActiveCountChange", "onClosePopover"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
5589
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPBackgroundOperationSlotComponent, isStandalone: true, selector: "axp-background-operation-slot", viewQueries: [{ propertyName: "popover", first: true, predicate: AXPopoverComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@if (showSlot()) {\n <!-- ----- Footer tray trigger ----- -->\n <button type=\"button\" class=\"operation-slot__trigger\" #operationTrigger (click)=\"onTriggerClick(panel)\">\n @if (badgeDisplay()) {\n <!-- ----- Count badge ----- -->\n <ax-badge class=\"operation-slot__badge\" [class.--xs]=\"badgeDisplay().length > 2\" color=\"danger\" [text]=\"badgeDisplay()\"></ax-badge>\n }\n @if (slotShowsFailureOnly()) {\n <!-- ----- Failed tasks ----- -->\n <ax-icon class=\"operation-slot__icon\">\n <i class=\"fa-light fa-circle-exclamation\"></i>\n </ax-icon>\n }\n <!--->\n <!-- ----- In-progress spinner (no icon for completed) ----- -->\n @else if (!slotShowsRetainedOnly()) {\n <ax-icon class=\"operation-slot__icon\">\n <i class=\"fa-light fa-spinner fa-spin\"></i>\n </ax-icon>\n }\n <span class=\"operation-slot__text\">\n {{ slotLabelKey() | translate | async }}\n </span>\n </button>\n\n <ax-popover\n [target]=\"operationTrigger\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n (onOpened)=\"onPopoverOpened(panel)\"\n >\n <axp-background-operation-panel\n #panel\n (onClosePopover)=\"closePopover()\"\n ></axp-background-operation-panel>\n </ax-popover>\n}\n", styles: ["@layer properties;axp-background-operation-slot{display:inline-flex}.operation-slot__trigger{display:inline-flex;cursor:pointer;align-items:center;gap:calc(var(--spacing, .25rem) * 1.5);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);color:var(--color-text-default);--ax-sys-size: ax-sm;--ax-sys-size-base: calc(var(--ax-sys-size-md) - var(--ax-sys-size-step));--spacing: calc(var(--ax-sys-spacing-base) - .25 * var(--ax-sys-padding-step));--ax-sys-border-radius: var(--ax-sys-border-radius-base);--text-xs: calc(var(--ax-sys-text-xs-base) * 11 / 12);--text-sm: calc(var(--ax-sys-text-sm-base) * 6 / 7);--text-base: calc(var(--ax-sys-body-font-size) * .875);--text-lg: calc(var(--ax-sys-text-lg-base) * 8 / 9);--text-xl: calc(var(--ax-sys-text-xl-base) * .9);--leading-3: calc(var(--ax-sys-leading-3-base) * 7 / 6);--leading-4: var(--ax-sys-leading-4-base);--leading-5: calc(var(--ax-sys-leading-5-base) * .9);--leading-6: calc(var(--ax-sys-leading-6-base) * 11 / 12)}@media(hover:hover){.operation-slot__trigger:hover{background-color:rgba(var(--ax-sys-color-light-surface))}}.operation-slot__icon{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)))}.operation-slot__text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}.operation-slot__badge{flex-shrink:0}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i4$1.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i3$2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "restoreFocusOnClose", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXPBackgroundOperationPanelComponent, selector: "axp-background-operation-panel", outputs: ["onActiveCountChange", "onClosePopover"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
5333
5590
  }
5334
5591
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBackgroundOperationSlotComponent, decorators: [{
5335
5592
  type: Component,
@@ -5600,148 +5857,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
5600
5857
  args: [{ providedIn: 'root' }]
5601
5858
  }] });
5602
5859
 
5603
- //#endregion
5604
- //#region ---- App Path Navigation ----
5605
- /**
5606
- * Splits an absolute app path (`/app/m/module/e/Entity/id/view`) into router command segments.
5607
- * Prefer this over `navigate([fullPath])` or ambiguous single-segment navigation so browser history stays correct.
5608
- */
5609
- function axpParseAppPath(path) {
5610
- const trimmed = path.trim();
5611
- const withoutLeadingSlash = trimmed.startsWith('/') ? trimmed.slice(1) : trimmed;
5612
- const [pathAndFragment, queryString] = withoutLeadingSlash.split('?');
5613
- const [pathPart, fragment] = pathAndFragment.split('#');
5614
- const segments = pathPart.split('/').filter(Boolean);
5615
- const queryParams = queryString
5616
- ? queryString.split('&').reduce((params, pair) => {
5617
- const [key, value = ''] = pair.split('=');
5618
- if (key) {
5619
- params[decodeURIComponent(key)] = decodeURIComponent(value);
5620
- }
5621
- return params;
5622
- }, {})
5623
- : undefined;
5624
- return {
5625
- segments,
5626
- queryParams,
5627
- fragment: fragment || undefined,
5628
- };
5629
- }
5630
- /** Navigates using explicit path segments (same pattern as entity preload filters). */
5631
- function axpNavigateAppPath(router, path, extras) {
5632
- const { segments, queryParams, fragment } = axpParseAppPath(path);
5633
- return router.navigate(segments, {
5634
- ...extras,
5635
- queryParams,
5636
- fragment,
5637
- });
5638
- }
5639
- /** True when a URL path is an entity master list route (`.../e/{Entity}/list`). */
5640
- function axpIsEntityListPath(url) {
5641
- const path = url.split('?')[0].split('#')[0];
5642
- return /\/e\/[^/]+\/list$/.test(path);
5643
- }
5644
- /** True when the current browser URL is an entity master list route (`.../e/{Entity}/list`). */
5645
- function axpIsEntityListRoute(router) {
5646
- return axpIsEntityListPath(router.url);
5647
- }
5648
- /** True when a URL path is an entity details view route (`.../e/{Entity}/{id}/view`). */
5649
- function axpIsEntityDetailsPath(url) {
5650
- const path = url.split('?')[0].split('#')[0];
5651
- return /\/e\/[^/]+\/[^/]+\/view$/.test(path);
5652
- }
5653
- /**
5654
- * Entity key (`module.entity`) for `/{app}/m/{module}/e/{entity}/{id}/view`.
5655
- * Query and hash are ignored. Returns null for every other path.
5656
- */
5657
- function axpEntityKeyFromDetailsPath(url) {
5658
- const path = url.split('?')[0]?.split('#')[0] ?? '';
5659
- const match = /\/m\/([^/]+)\/e\/([^/]+)\/[^/]+\/view$/.exec(path);
5660
- const moduleName = match?.[1];
5661
- const entityName = match?.[2];
5662
- if (!moduleName || !entityName) {
5663
- return null;
5664
- }
5665
- return `${moduleName}.${entityName}`;
5666
- }
5667
- /** True when the current browser URL is an entity details view route (`.../e/{Entity}/{id}/view`). */
5668
- function axpIsEntityDetailsViewRoute(router) {
5669
- return axpIsEntityDetailsPath(router.url);
5670
- }
5671
- /**
5672
- * Merges query params on the current entity list route without pushing history.
5673
- * Uses absolute path segments so a stale `relativeTo` cannot rewrite the active URL after navigating away.
5674
- */
5675
- function axpReplaceEntityListRouteQueryParams(router, queryParams) {
5676
- const url = router.url;
5677
- if (!axpIsEntityListPath(url)) {
5678
- return;
5679
- }
5680
- const parsed = router.parseUrl(url);
5681
- const pathOnly = url.split('?')[0].split('#')[0];
5682
- const { segments } = axpParseAppPath(pathOnly);
5683
- const mergedQueryParams = { ...parsed.queryParams, ...queryParams };
5684
- void router.navigate(segments, {
5685
- queryParams: mergedQueryParams,
5686
- replaceUrl: true,
5687
- });
5688
- }
5689
- //#endregion
5690
-
5691
- //#region ----- Constants -----
5692
- /** Query param that distinguishes two menus pointing at the same entity list. */
5693
- const ENTITY_LIST_INSTANCE_QUERY_PARAM = 'list';
5694
- /** Used when the list is opened without a menu (command, deep link). */
5695
- const ENTITY_LIST_DEFAULT_INSTANCE_ID = 'default';
5696
- //#endregion
5697
- //#region ----- Instance id -----
5698
- function axpNormalizeEntityListInstanceId(value) {
5699
- if (typeof value !== 'string') {
5700
- return ENTITY_LIST_DEFAULT_INSTANCE_ID;
5701
- }
5702
- const trimmed = value.trim();
5703
- return trimmed.length > 0 ? trimmed : ENTITY_LIST_DEFAULT_INSTANCE_ID;
5704
- }
5705
- function axpGetEntityListInstanceIdFromQueryString(queryString) {
5706
- const params = new URLSearchParams(queryString.startsWith('?') ? queryString.slice(1) : queryString);
5707
- return axpNormalizeEntityListInstanceId(params.get(ENTITY_LIST_INSTANCE_QUERY_PARAM));
5708
- }
5709
- function axpGetEntityListInstanceIdFromParamMap(queryParamMap) {
5710
- return axpNormalizeEntityListInstanceId(queryParamMap.get(ENTITY_LIST_INSTANCE_QUERY_PARAM));
5711
- }
5712
- function axpGetEntityListInstanceIdFromPath(path) {
5713
- const queryString = path.split('#')[0].split('?')[1] ?? '';
5714
- return axpGetEntityListInstanceIdFromQueryString(queryString);
5715
- }
5716
- //#endregion
5717
- //#region ----- Menu / URL stamping -----
5718
- /**
5719
- * Appends `list={instanceId}` to an entity-list path when missing.
5720
- * Named menu entries get a stable identity so Angular reuses the list route
5721
- * while filter persistence can still isolate each menu.
5722
- */
5723
- function axpEnsureEntityListInstanceQueryParam(path, instanceId) {
5724
- if (!path || !instanceId || !axpIsEntityListPath(path)) {
5725
- return path;
5726
- }
5727
- const normalized = axpNormalizeEntityListInstanceId(instanceId);
5728
- if (normalized === ENTITY_LIST_DEFAULT_INSTANCE_ID) {
5729
- return path;
5730
- }
5731
- const { segments, queryParams, fragment } = axpParseAppPath(path);
5732
- if (queryParams?.[ENTITY_LIST_INSTANCE_QUERY_PARAM]) {
5733
- return path;
5734
- }
5735
- const nextQuery = new URLSearchParams({
5736
- ...(queryParams ?? {}),
5737
- [ENTITY_LIST_INSTANCE_QUERY_PARAM]: normalized,
5738
- });
5739
- const base = `/${segments.join('/')}`;
5740
- const withQuery = `${base}?${nextQuery.toString()}`;
5741
- return fragment ? `${withQuery}#${fragment}` : withQuery;
5742
- }
5743
- //#endregion
5744
-
5745
5860
  //#region ----- Menu instance identity -----
5746
5861
  /** Prefers the stamped `list` query param, then the menu item name. */
5747
5862
  function axpMenuItemListInstanceId(item) {
@@ -7248,13 +7363,14 @@ withMethods((store, router = inject(Router), commandService = inject(AXPCommandS
7248
7363
  const IGNORED_QUERY_KEYS = new Set(['_ts']);
7249
7364
  /**
7250
7365
  * Builds a stable tab key from a router URL.
7251
- * Path segments define identity; query params are excluded so the same entity record
7252
- * or list reuses one tab even when filters or refresh tokens change.
7366
+ * Path segments define the page. Entity-list navigation query params (`mode`, `list`, …)
7367
+ * stay in the key so two menus of the same entity stay distinct, matching simple navigation.
7368
+ * Page-state params (`view`, `filters`, `_ts`) stay on the URL and do not open another tab.
7253
7369
  */
7254
7370
  function axpBuildTabKey(url) {
7255
7371
  const normalized = normalizeRouterUrl(url);
7256
7372
  const pathOnly = normalized.split('?')[0].split('#')[0];
7257
- return pathOnly;
7373
+ return axpEntityListNavigationTabKey(pathOnly, normalized);
7258
7374
  }
7259
7375
  /** Normalizes a router URL for storage and navigation. */
7260
7376
  function normalizeRouterUrl(url) {
@@ -7328,10 +7444,10 @@ function axpGetLeafRouteSnapshot(root) {
7328
7444
  return route;
7329
7445
  }
7330
7446
  /**
7331
- * Resolves the tab dedupe key from an activated route tree.
7447
+ * Path identity from an activated route tree, without query params.
7332
7448
  * Uses the nearest ancestor with `data.tab = true`; otherwise the leaf path.
7333
7449
  */
7334
- function axpResolveTabKeyFromSnapshot(leaf) {
7450
+ function axpTabScopePathFromSnapshot(leaf) {
7335
7451
  const chain = leaf.pathFromRoot;
7336
7452
  for (let index = chain.length - 1; index >= 0; index--) {
7337
7453
  const snapshot = chain[index];
@@ -7341,6 +7457,13 @@ function axpResolveTabKeyFromSnapshot(leaf) {
7341
7457
  }
7342
7458
  return axpPathFromSnapshot(leaf);
7343
7459
  }
7460
+ /**
7461
+ * Resolves the tab dedupe key from an activated route tree.
7462
+ * Entity list routes also include navigation query params (`mode`, `list`, …), same as simple navigation.
7463
+ */
7464
+ function axpResolveTabKeyFromSnapshot(leaf) {
7465
+ return axpEntityListNavigationTabKey(axpTabScopePathFromSnapshot(leaf), leaf.queryParams);
7466
+ }
7344
7467
  //#endregion
7345
7468
  //#region ---- Router / URL Resolution ----
7346
7469
  /**
@@ -7351,15 +7474,17 @@ function axpResolveTabKey(router, url) {
7351
7474
  const normalized = normalizeRouterUrl(url ?? router.url);
7352
7475
  const pathOnly = normalized.split('?')[0].split('#')[0];
7353
7476
  const currentPath = normalizeRouterUrl(router.url).split('?')[0].split('#')[0];
7477
+ let basePath;
7354
7478
  if (!url || pathOnly === currentPath) {
7355
7479
  const leaf = axpGetLeafRouteSnapshot(router.routerState.snapshot.root);
7356
- return axpResolveTabKeyFromSnapshot(leaf);
7480
+ basePath = axpTabScopePathFromSnapshot(leaf);
7357
7481
  }
7358
- const fromConfig = axpResolveTabKeyFromRouteConfig(router.config, pathOnly);
7359
- if (fromConfig) {
7360
- return fromConfig;
7482
+ else {
7483
+ basePath =
7484
+ axpResolveTabKeyFromRouteConfig(router.config, pathOnly) ??
7485
+ (pathOnly.startsWith('/') ? pathOnly : `/${pathOnly}`);
7361
7486
  }
7362
- return pathOnly.startsWith('/') ? pathOnly : `/${pathOnly}`;
7487
+ return axpEntityListNavigationTabKey(basePath, normalized);
7363
7488
  }
7364
7489
  /**
7365
7490
  * Matches a URL path against registered routes and resolves the tab key from `data.tab`.
@@ -9426,7 +9551,7 @@ function isStoredImageFileId(value) {
9426
9551
  */
9427
9552
  function buildFileStorageDownloadUrl(baseUrl, fileId) {
9428
9553
  const base = baseUrl.replace(/\/$/, '');
9429
- return `${base}/v1/file-storage/download/${encodeURIComponent(fileId)}`;
9554
+ return `${base}/v1/file-storage/download/${encodeURIComponent(fileId)}?v=raw`;
9430
9555
  }
9431
9556
  /**
9432
9557
  * Resolves a stored image ref to a browser-displayable URL.
@@ -13625,6 +13750,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
13625
13750
  }]
13626
13751
  }] });
13627
13752
 
13753
+ const NON_CASCADE_OPERATORS = new Set(['not-in', 'nin']);
13628
13754
  function AXPCleanNestedFilters(filters) {
13629
13755
  return filters
13630
13756
  .map((filter) => {
@@ -13647,6 +13773,34 @@ function AXPCleanNestedFilters(filters) {
13647
13773
  })
13648
13774
  .filter(Boolean);
13649
13775
  }
13776
+ /**
13777
+ * True when a cascade parent filter has structure but no value yet.
13778
+ * `{}` and other structurally empty filters are not pending.
13779
+ * Top-level `not-in` / `nin` are not cascade; nested `not-in` still follows cleaning.
13780
+ */
13781
+ function isPendingCascadeFilter(filter) {
13782
+ if (filter == null || isStructurallyEmptyFilter(filter)) {
13783
+ return false;
13784
+ }
13785
+ const operatorType = readFilterOperatorType(filter.operator);
13786
+ if (NON_CASCADE_OPERATORS.has(operatorType)) {
13787
+ return false;
13788
+ }
13789
+ return AXPCleanNestedFilters([filter]).length === 0;
13790
+ }
13791
+ function isStructurallyEmptyFilter(filter) {
13792
+ const hasField = filter.field != null && filter.field !== '';
13793
+ const hasOperator = filter.operator != null;
13794
+ const hasNestedFilters = Array.isArray(filter.filters) && filter.filters.length > 0;
13795
+ return !hasField && !hasOperator && !hasNestedFilters;
13796
+ }
13797
+ function readFilterOperatorType(operator) {
13798
+ if (operator == null || typeof operator !== 'object') {
13799
+ return '';
13800
+ }
13801
+ const type = operator.type;
13802
+ return typeof type === 'string' ? type.toLowerCase() : '';
13803
+ }
13650
13804
 
13651
13805
  //#region ----- Locale codes -----
13652
13806
  /** Normalizes AvailableLanguages values (string codes or `{ code }` rows) to BCP-47 locale strings. */
@@ -14025,5 +14179,5 @@ const axpPageGetContextQueryDefinition = defineQuery({
14025
14179
  * Generated bundle index. Do not edit.
14026
14180
  */
14027
14181
 
14028
- export { ALL_DEFAULT_OPERATORS, AXPAcorexFileTypeBridgeProvider, AXPAcorexFileTypeModule, AXPAppVersionService, AXPBackgroundOperationCompletionService, AXPBackgroundOperationEntityStoreService, AXPBackgroundOperationHandler, AXPBackgroundOperationNotificationService, AXPBackgroundOperationProvider, AXPBackgroundOperationRootConfig, AXPBackgroundOperationService, AXPBackgroundOperationSlotComponent, AXPBrowserTitleService, AXPCleanNestedFilters, AXPClipBoardService, AXPCommonModule, AXPCommonSettings, AXPCustomOperatorService, AXPCustomOperatorServiceImpl, AXPDataProvider, AXPDefaultMultiLanguageConfigService, AXPEntityDetailsNavTrailService, AXPErrorHandlerRegistryService, AXPExportService, AXPFileActionsService, AXPFileChooserSettings, AXPFileStorageEvaluatorScopeProvider, AXPFileStorageService, AXPFileTypeProviderService, AXPFilterOperatorMiddlewareService, AXPFilterOperatorMiddlewareServiceImpl, AXPFooterTextSlotComponent, AXPGlobalErrorHandler, AXPHomePageModule, AXPHomePageService, AXPIndexedDbSettingValueProvider, AXPIntegrationDomainProviderContext, AXPIntegrationDomainRegistryFacade, AXPIntegrationDomainRegistryService, AXPIntegrationOAuthService, AXPIntegrationProviderContext, AXPIntegrationProviderRegistryService, AXPIntegrationRuntimeService, AXPKeyboardShortcutsHelpComponent, AXPKeyboardShortcutsHelpService, AXPLocalEntityEngine, AXPLocalEntityIndexedDb, AXPLocalEntityOfflineRuntime, AXPLocalEntityOutboxService, AXPLocalEntityRealtimeBridge, AXPLockService, AXPLogoImageSrcResolverService, AXPMenuKeyboardShortcutService, AXPMenuMiddlewareRegistry, AXPMenuProviderService, AXPMenuRouteAccessService, AXPMenuRouteGuard, AXPMenuSearchDefinitionProvider, AXPMenuSearchProvider, AXPMenuService, AXPMenuVisibilityService, AXPNavBarSlotComponent, AXPNavigateCommand, AXPNetworkConnectivityService, AXPNotFoundCatchAllRoute, AXPNotFoundError, AXPOutputContractTranscriptSegmentService, AXPPageGetContextQuery, AXPPageRunActionCommand, AXPPlatformBrandingService, AXPPlatformDefaultConfigs, AXPPlatformSettingsLoadState, AXPPlatformSettingsOfflineBootstrapService, AXPQueryEvaluatorScopeProvider, AXPQueryParamsEvaluatorScopeProvider, AXPRegionalCalendarService, AXPSearchCommandProvider, AXPSearchDefinitionActionBuilder, AXPSearchDefinitionBuilder, AXPSearchDefinitionProviderContext, AXPSearchDefinitionProviderService, AXPSearchService, AXPSettingDefaultValuesAggregatorService, AXPSettingDefinitionGroupBuilder, AXPSettingDefinitionProviderContext, AXPSettingDefinitionProviderService, AXPSettingDefinitionSectionBuilder, AXPSettingsBulkSyncService, AXPSettingsEvaluatorScopeProvider, AXPSettingsIndexedDb, AXPSettingsService, AXPStateMessageComponent, AXPStatusDefinitionProviderService, AXPStickyDirective, AXPTabNavigationService, AXPTabPreviewService, AXPTabRouteCacheRegistry, AXPTokenDefinitionService, AXPTokenEvaluatorScopeProvider, AXPTranslateFormatter, AXPUnsavedChangesConfirmService, AXPUnsavedChangesPopstateService, AXPUserNotificationService, AXPVersioningService, AXP_AGENT_OUTPUT_CONTRACT_DEFAULT_STRUCTURED_RETRIES, AXP_APP_VERSION_PROVIDER, AXP_BACKGROUND_OPERATION_ENTITY_STORAGE, AXP_BACKGROUND_OPERATION_HANDLERS, AXP_BACKGROUND_OPERATION_PROVIDERS, AXP_BREADCRUMB_COLLAPSE_HEAD_COUNT, AXP_BREADCRUMB_COLLAPSE_TAIL_COUNT, AXP_DOCUMENT_FILE_TYPE_PURPOSES, AXP_ENTITY_LIST_DISPLAY_MODE_DEFAULT, AXP_ENTITY_VIEW_ACCESS, AXP_EXPERIENCE_SETTINGS_GROUP, AXP_EXPERIENCE_SETTINGS_SECTIONS, AXP_FILE_ACTION_PROVIDER, AXP_FILE_TYPE_INFO_PROVIDER, AXP_HOME_PAGES, AXP_HOME_PAGE_DEFAULT_KEY, AXP_HOME_TAB_KEY, AXP_INTEGRATION_CONNECTION_ESTABLISHED, AXP_INTEGRATION_CONNECTION_LIFECYCLE, AXP_INTEGRATION_DOMAIN_PROVIDER, AXP_INTEGRATION_OAUTH_SERVICE, AXP_INTEGRATION_PROVIDER, AXP_INTEGRATION_RUNTIME_PROVIDER, AXP_INTEGRATION_SECRET_STORE, AXP_IN_APP_NOTIFICATION_SERVICE, AXP_LOCALE_MANAGEMENT_PORT, AXP_LOCAL_ENTITY_BROADCAST_CHANNEL, AXP_LOCAL_ENTITY_DEFAULT_MAX_ITEMS, AXP_LOCAL_ENTITY_OUTBOX_LOCK, AXP_MENU_MIDDLEWARE, AXP_MENU_PROVIDER, AXP_NOT_FOUND_CATCH_ALL_ROUTE, AXP_NOT_FOUND_ROUTE, AXP_OUTPUT_CONTRACT_TRANSCRIPT_SEGMENT_PROVIDER, AXP_PLATFORM_BRANDING_SETTING_KEYS, AXP_PLATFORM_CONFIG_TOKEN, AXP_PROTECTED_ROUTE_GUARDS, AXP_ROOT_CONFIG_TOKEN, AXP_RUNTIME_QUERY_CACHE_DEFAULTS, AXP_SEARCH_DEFINITION_LAZY_RESOLVER, AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, AXP_SETTINGS_CACHE_SYNC, AXP_SETTINGS_SYNC_DEBOUNCE_MS, AXP_SETTINGS_SYNC_KEYS, AXP_SETTINGS_SYNC_RETRY_BACKOFF_MS, AXP_SETTINGS_SYNC_TTL_MS, AXP_SETTING_DEFAULT_VALUES_PROVIDERS, AXP_SETTING_DEFINITION_PROVIDER, AXP_SETTING_SCOPE_DESCENDANTS, AXP_SETTING_VALUE_PROVIDER, AXP_STATUS_PROVIDERS, AXP_TAB_BREADCRUMB_JOIN_SEPARATOR, AXP_TAB_ROUTE_DATA_KEY, AXP_TOKEN_DEFINITION_PROVIDER, AXP_UNAUTHORIZED_ROUTE, AXP_USER_NOTIFICATION_SERVICE, AXVChangeType, AX_FILE_TYPE_METADATA_SUPPORT_BY_FILE_VIEWER, BETWEEN_OPER, BOOLEAN_OPERATORS, CONTAINS_OPER, DATE_OPERATORS, DEFAULT_DATE_FILTER_PRESETS, DEFAULT_MULTILANGUAGE_FIELD_NAMES, ENDS_WITH_OPER, ENTITY_LIST_DEFAULT_INSTANCE_ID, ENTITY_LIST_INSTANCE_QUERY_PARAM, ENVIRONMENT, EQ_OPER, FILE_VIEWER_PREVIEW_EXTENSIONS, GTE_OPER, GT_OPER, IN_OPER, IS_EMPTY_OPER, IS_NOT_EMPTY_OPER, LTE_OPER, LT_OPER, MULTILANGUAGE_CAPABLE_WIDGET_TYPES, NOT_CONTAINS_OPER, NOT_EQ_OPER, NUMBER_OPERATORS, SETTINGS_TRACE_NS, SETTINGS_TRACE_TITLE, STARTS_WITH_OPER, STRING_OPERATORS, UploadFromComputerActionProvider, applyDateFilterPreset, axpBackgroundOperationCapabilities, axpBackgroundOperationDisplayTime, axpBackgroundOperationDurationMs, axpBackgroundOperationEntityName, axpBackgroundOperationEstimateEndDate, axpBackgroundOperationFailurePolicy, axpBackgroundOperationFromEntityModel, axpBackgroundOperationRemainingMs, axpBackgroundOperationStatusTextParams, axpBackgroundOperationToEntityModel, axpBeginCommandSubFlowNavigation, axpBuildBackgroundOperation, axpBuildTabKey, axpClearEntityDetailsNavTrail, axpCloneBreadcrumbItems, axpCoerceBackgroundOperationDate, axpComposeEntityDetailsNavTrail, axpCreateBackgroundOperationId, axpEndCommandSubFlowNavigation, axpEnsureEntityListInstanceQueryParam, axpEntityKeyFromDetailsPath, axpFallbackTabTitle, axpFindMenuItemByRoute, axpFormatBackgroundOperationDurationMs, axpGetBreadcrumbNavigatePath, axpGetEntityDetailsNavTrail, axpGetEntityListInstanceIdFromParamMap, axpGetEntityListInstanceIdFromPath, axpGetEntityListInstanceIdFromQueryString, axpGetEntityListReturnUrl, axpGetLeafRouteSnapshot, axpHasTabScope, axpInterpolateNavigatePath, axpIsActiveBackgroundOperationStatus, axpIsBackgroundOperationI18nText, axpIsCommandSubFlowNavigationSuspended, axpIsCompletedBackgroundOperationStatus, axpIsCompletedPanelBackgroundOperation, axpIsEntityDetailsPath, axpIsEntityDetailsViewRoute, axpIsEntityListPath, axpIsEntityListRoute, axpIsEntityRecordNotFound, axpIsInProgressPanelBackgroundOperation, axpIsLikelyNetworkFailure, axpIsSameEntityDetailsRecord, axpIsTabEligibleUrl, axpIsTrayVisibleBackgroundOperation, axpJoinTabTitleSegments, axpLocalEntityCanServeListLocally, axpLocalEntityHotListRequest, axpLocalEntityIndexedDb, axpLocalEntityRecordId, axpLocalEntitySortAt, axpLocalEntitySupportsOfflineWrite, axpLocalEntityToPayload, axpMenuItemListInstanceId, axpMenuPathsMatch, axpNavigateAppPath, axpNavigateCommandDefinition, axpNormalizeEntityListInstanceId, axpPageGetContextQueryDefinition, axpPageRunActionCommandDefinition, axpParseAppPath, axpParseEntityDetailsRoute, axpParseEntityListRoute, axpPathFromSnapshot, axpPeekCommandSubFlowReturnUrl, axpPlatformSettingsAvailableGuard, axpPrepareOriginNavTrail, axpRedirectToNotFound, axpRedirectToUnauthorized, axpReplaceEntityListRouteQueryParams, axpResolveNavigatePath, axpResolveTabKey, axpResolveTabKeyFromRouteConfig, axpResolveTabKeyFromSnapshot, axpResolveTabTitleParts, axpSaveEntityDetailsNavTrail, axpSaveEntityListReturnUrl, axpSetEntityDetailsPageQuery, axpSettingsIndexedDb, axpSplitCollapsedBreadcrumbs, axpStampEntityListMenuInstancePaths, axpStripHomeBreadcrumb, axpStripTrailingCommandlessCrumbs, axpTrimNavTrailBeforeTarget, backgroundOperationEntityFactory, buildFileStorageDownloadUrl, buildLocalEntityMetaId, buildLocalEntityStorageId, buildScopedSettingsSnapshotId, chooseSystemFiles, coerceAXPSettingRawValue, coerceAXPSettingRawValueByKind, configPlatform, createBackgroundOperationStore, createDefaultSettingValueProviders, createEmptyScopedSettingsSnapshot, createEntityCommandOptions, createEntityRowExpressionScope, createEntitySearchCommand, createFileTypeOpenContext, createIndexedDbSettingValueProviders, createMenuContext, createMenuMiddleware, createUnsavedChangesCanDeactivateGuard, downloadGraphicFromElement, evaluateEntityDisplayTemplate, extractFileExtension, extractHttpRequestErrorInfo, extractRequestErrorInfo, findManualPresetIdByOperation, formatEntityRowDisplayTitle, formatRequestError, hasFileTypeOpenHandler, hydrateSettingsValuesFromIndexedDb, inferSettingCoercionKind, isFileNameShownInViewer, isFileTypeShownInViewer, isFileViewerPreviewExtension, isOneWaySettingsIndexedDbCache, isSettingKeyCacheable, isSettingVisibleOnScope, isStoredImageFileId, normalizeAvailableLanguageCodes, normalizeDocumentFileTypePurposes, normalizeDocumentToFileListItem, normalizeOverridableAt, normalizePositiveNumberOption, normalizeRouterUrl, normalizeStoredImageRef, peelSettingValueKey, platformErrorI18nKey, primaryLanguageSubtag, printGraphicFromElement, projectSettingsValuesForIndexedDb, provideAXPUserNotificationService, provideDynamicHomePage, provideLocalEntityOfflineRuntime, provideMenuMiddleware, purgeLegacyTenantScopedSettingsSnapshots, resolveDateFilterPresets, resolveEffectiveAvailableLanguageCodes, resolveEntityCreateListBehavior, resolveEntityDetailsRouteAccess, resolveEntityModifyPopupTitle, resolveEntityRowDisplayText, resolveEntityRowDisplayTitle, resolveEntityRowDisplayTitleFromColumnContext, resolveEntitySearchTitleFallback, resolveExplorerFileDisplayName, resolveFileTypeDisplay, resolveFileViewerType, resolveGraphicElementSize, resolveGraphicPrintContent, resolveQueryMatchingDisplayText, resolveSearchDisplayTemplate, resolveSearchableText, resolveStoredImageDisplayUrl, searchInRecordValues, searchInSearchableValue, serializeSvgElement, shouldApplyDefaultMultiLanguageToEntityProperty, shouldApplyDefaultMultiLanguageToWidgetNode, shouldApplyDefaultMultiLanguageToWidgetProperty, shouldPersistSettingsInIndexedDb, stripAccidentalNestedSettingParents, throwIfCommandFailed, toAXPRequestError, toExecuteCommandFailureResult, traceSettingsAppStartupLoadComplete, traceSettingsAppStartupLoadStarted, traceSettingsClientTool, traceSettingsFlush, traceSettingsLocalPersist, traceSettingsPageLoadComplete, traceSettingsPageLoadStarted, traceSettingsPageRouteLoad, traceSettingsRetryScheduled, traceSettingsRevalidateFailed, traceSettingsServerApiCall, traceSettingsServiceLoadComplete, traceSettingsServiceLoadFailed, traceSettingsServiceLoadStarted, traceSettingsServiceReload, traceSettingsSyncFailed, triggerBrowserDownload, tryOpenFileByCatalogType, withDefaultMultiLanguageOnWidgetNodeTree, withDefaultMultiLanguageOnWidgetProperty };
14182
+ export { ALL_DEFAULT_OPERATORS, AXPAcorexFileTypeBridgeProvider, AXPAcorexFileTypeModule, AXPAppVersionService, AXPBackgroundOperationCompletionService, AXPBackgroundOperationEntityStoreService, AXPBackgroundOperationHandler, AXPBackgroundOperationNotificationService, AXPBackgroundOperationProvider, AXPBackgroundOperationRootConfig, AXPBackgroundOperationService, AXPBackgroundOperationSlotComponent, AXPBrowserTitleService, AXPCleanNestedFilters, AXPClipBoardService, AXPCommonModule, AXPCommonSettings, AXPCustomOperatorService, AXPCustomOperatorServiceImpl, AXPDataProvider, AXPDefaultMultiLanguageConfigService, AXPEntityDetailsNavTrailService, AXPErrorHandlerRegistryService, AXPExportService, AXPFileActionsService, AXPFileChooserSettings, AXPFileStorageEvaluatorScopeProvider, AXPFileStorageService, AXPFileTypeProviderService, AXPFilterOperatorMiddlewareService, AXPFilterOperatorMiddlewareServiceImpl, AXPFooterTextSlotComponent, AXPGlobalErrorHandler, AXPHomePageModule, AXPHomePageService, AXPIndexedDbSettingValueProvider, AXPIntegrationDomainProviderContext, AXPIntegrationDomainRegistryFacade, AXPIntegrationDomainRegistryService, AXPIntegrationOAuthService, AXPIntegrationProviderContext, AXPIntegrationProviderRegistryService, AXPIntegrationRuntimeService, AXPKeyboardShortcutsHelpComponent, AXPKeyboardShortcutsHelpService, AXPLocalEntityEngine, AXPLocalEntityIndexedDb, AXPLocalEntityOfflineRuntime, AXPLocalEntityOutboxService, AXPLocalEntityRealtimeBridge, AXPLockService, AXPLogoImageSrcResolverService, AXPMenuKeyboardShortcutService, AXPMenuMiddlewareRegistry, AXPMenuProviderService, AXPMenuRouteAccessService, AXPMenuRouteGuard, AXPMenuSearchDefinitionProvider, AXPMenuSearchProvider, AXPMenuService, AXPMenuVisibilityService, AXPNavBarSlotComponent, AXPNavigateCommand, AXPNetworkConnectivityService, AXPNotFoundCatchAllRoute, AXPNotFoundError, AXPOutputContractTranscriptSegmentService, AXPPageGetContextQuery, AXPPageRunActionCommand, AXPPlatformBrandingService, AXPPlatformDefaultConfigs, AXPPlatformSettingsLoadState, AXPPlatformSettingsOfflineBootstrapService, AXPQueryEvaluatorScopeProvider, AXPQueryParamsEvaluatorScopeProvider, AXPRegionalCalendarService, AXPSearchCommandProvider, AXPSearchDefinitionActionBuilder, AXPSearchDefinitionBuilder, AXPSearchDefinitionProviderContext, AXPSearchDefinitionProviderService, AXPSearchService, AXPSettingDefaultValuesAggregatorService, AXPSettingDefinitionGroupBuilder, AXPSettingDefinitionProviderContext, AXPSettingDefinitionProviderService, AXPSettingDefinitionSectionBuilder, AXPSettingsBulkSyncService, AXPSettingsEvaluatorScopeProvider, AXPSettingsIndexedDb, AXPSettingsService, AXPStateMessageComponent, AXPStatusDefinitionProviderService, AXPStickyDirective, AXPTabNavigationService, AXPTabPreviewService, AXPTabRouteCacheRegistry, AXPTokenDefinitionService, AXPTokenEvaluatorScopeProvider, AXPTranslateFormatter, AXPUnsavedChangesConfirmService, AXPUnsavedChangesPopstateService, AXPUserNotificationService, AXPVersioningService, AXP_AGENT_OUTPUT_CONTRACT_DEFAULT_STRUCTURED_RETRIES, AXP_APP_VERSION_PROVIDER, AXP_BACKGROUND_OPERATION_ENTITY_STORAGE, AXP_BACKGROUND_OPERATION_HANDLERS, AXP_BACKGROUND_OPERATION_PROVIDERS, AXP_BREADCRUMB_COLLAPSE_HEAD_COUNT, AXP_BREADCRUMB_COLLAPSE_TAIL_COUNT, AXP_DOCUMENT_FILE_TYPE_PURPOSES, AXP_ENTITY_LIST_DISPLAY_MODE_DEFAULT, AXP_ENTITY_VIEW_ACCESS, AXP_EXPERIENCE_SETTINGS_GROUP, AXP_EXPERIENCE_SETTINGS_SECTIONS, AXP_FILE_ACTION_PROVIDER, AXP_FILE_TYPE_INFO_PROVIDER, AXP_HOME_PAGES, AXP_HOME_PAGE_DEFAULT_KEY, AXP_HOME_TAB_KEY, AXP_INTEGRATION_CONNECTION_ESTABLISHED, AXP_INTEGRATION_CONNECTION_LIFECYCLE, AXP_INTEGRATION_DOMAIN_PROVIDER, AXP_INTEGRATION_OAUTH_SERVICE, AXP_INTEGRATION_PROVIDER, AXP_INTEGRATION_RUNTIME_PROVIDER, AXP_INTEGRATION_SECRET_STORE, AXP_IN_APP_NOTIFICATION_SERVICE, AXP_LOCALE_MANAGEMENT_PORT, AXP_LOCAL_ENTITY_BROADCAST_CHANNEL, AXP_LOCAL_ENTITY_DEFAULT_MAX_ITEMS, AXP_LOCAL_ENTITY_OUTBOX_LOCK, AXP_MENU_MIDDLEWARE, AXP_MENU_PROVIDER, AXP_NOT_FOUND_CATCH_ALL_ROUTE, AXP_NOT_FOUND_ROUTE, AXP_OUTPUT_CONTRACT_TRANSCRIPT_SEGMENT_PROVIDER, AXP_PLATFORM_BRANDING_SETTING_KEYS, AXP_PLATFORM_CONFIG_TOKEN, AXP_PROTECTED_ROUTE_GUARDS, AXP_ROOT_CONFIG_TOKEN, AXP_RUNTIME_QUERY_CACHE_DEFAULTS, AXP_SEARCH_DEFINITION_LAZY_RESOLVER, AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, AXP_SETTINGS_CACHE_SYNC, AXP_SETTINGS_SYNC_DEBOUNCE_MS, AXP_SETTINGS_SYNC_KEYS, AXP_SETTINGS_SYNC_RETRY_BACKOFF_MS, AXP_SETTINGS_SYNC_TTL_MS, AXP_SETTING_DEFAULT_VALUES_PROVIDERS, AXP_SETTING_DEFINITION_PROVIDER, AXP_SETTING_SCOPE_DESCENDANTS, AXP_SETTING_VALUE_PROVIDER, AXP_STATUS_PROVIDERS, AXP_TAB_BREADCRUMB_JOIN_SEPARATOR, AXP_TAB_ROUTE_DATA_KEY, AXP_TOKEN_DEFINITION_PROVIDER, AXP_UNAUTHORIZED_ROUTE, AXP_USER_NOTIFICATION_SERVICE, AXVChangeType, AX_FILE_TYPE_METADATA_SUPPORT_BY_FILE_VIEWER, BETWEEN_OPER, BOOLEAN_OPERATORS, CONTAINS_OPER, DATE_OPERATORS, DEFAULT_DATE_FILTER_PRESETS, DEFAULT_MULTILANGUAGE_FIELD_NAMES, ENDS_WITH_OPER, ENTITY_LIST_DEFAULT_INSTANCE_ID, ENTITY_LIST_INSTANCE_QUERY_PARAM, ENVIRONMENT, EQ_OPER, FILE_VIEWER_PREVIEW_EXTENSIONS, GTE_OPER, GT_OPER, IN_OPER, IS_EMPTY_OPER, IS_NOT_EMPTY_OPER, LTE_OPER, LT_OPER, MULTILANGUAGE_CAPABLE_WIDGET_TYPES, NOT_CONTAINS_OPER, NOT_EQ_OPER, NUMBER_OPERATORS, SETTINGS_TRACE_NS, SETTINGS_TRACE_TITLE, STARTS_WITH_OPER, STRING_OPERATORS, UploadFromComputerActionProvider, applyDateFilterPreset, axpBackgroundOperationCapabilities, axpBackgroundOperationDisplayTime, axpBackgroundOperationDurationMs, axpBackgroundOperationEntityName, axpBackgroundOperationEstimateEndDate, axpBackgroundOperationFailurePolicy, axpBackgroundOperationFromEntityModel, axpBackgroundOperationRemainingMs, axpBackgroundOperationStatusTextParams, axpBackgroundOperationToEntityModel, axpBeginCommandSubFlowNavigation, axpBuildBackgroundOperation, axpBuildTabKey, axpClearEntityDetailsNavTrail, axpCloneBreadcrumbItems, axpCoerceBackgroundOperationDate, axpComposeEntityDetailsNavTrail, axpCreateBackgroundOperationId, axpEndCommandSubFlowNavigation, axpEnsureEntityListInstanceQueryParam, axpEntityKeyFromDetailsPath, axpEntityListNavigationTabKey, axpFallbackTabTitle, axpFindMenuItemByRoute, axpFormatBackgroundOperationDurationMs, axpGetBreadcrumbNavigatePath, axpGetEntityDetailsNavTrail, axpGetEntityListInstanceIdFromParamMap, axpGetEntityListInstanceIdFromPath, axpGetEntityListInstanceIdFromQueryString, axpGetEntityListReturnUrl, axpGetLeafRouteSnapshot, axpHasTabScope, axpInterpolateNavigatePath, axpIsActiveBackgroundOperationStatus, axpIsBackgroundOperationI18nText, axpIsCommandSubFlowNavigationSuspended, axpIsCompletedBackgroundOperationStatus, axpIsCompletedPanelBackgroundOperation, axpIsEntityDetailsPath, axpIsEntityDetailsViewRoute, axpIsEntityListPath, axpIsEntityListRoute, axpIsEntityRecordNotFound, axpIsInProgressPanelBackgroundOperation, axpIsLikelyNetworkFailure, axpIsSameEntityDetailsRecord, axpIsTabEligibleUrl, axpIsTrayVisibleBackgroundOperation, axpJoinTabTitleSegments, axpLocalEntityCanServeListLocally, axpLocalEntityHotListRequest, axpLocalEntityIndexedDb, axpLocalEntityRecordId, axpLocalEntitySortAt, axpLocalEntitySupportsOfflineWrite, axpLocalEntityToPayload, axpMenuItemListInstanceId, axpMenuPathsMatch, axpNavigateAppPath, axpNavigateCommandDefinition, axpNormalizeEntityListInstanceId, axpPageGetContextQueryDefinition, axpPageRunActionCommandDefinition, axpParseAppPath, axpParseEntityDetailsRoute, axpParseEntityListRoute, axpPathFromSnapshot, axpPeekCommandSubFlowReturnUrl, axpPlatformSettingsAvailableGuard, axpPrepareOriginNavTrail, axpRedirectToNotFound, axpRedirectToUnauthorized, axpReplaceEntityListRouteQueryParams, axpResolveNavigatePath, axpResolveTabKey, axpResolveTabKeyFromRouteConfig, axpResolveTabKeyFromSnapshot, axpResolveTabTitleParts, axpSaveEntityDetailsNavTrail, axpSaveEntityListReturnUrl, axpSetEntityDetailsPageQuery, axpSettingsIndexedDb, axpSplitCollapsedBreadcrumbs, axpStampEntityListMenuInstancePaths, axpStripHomeBreadcrumb, axpStripTrailingCommandlessCrumbs, axpTabScopePathFromSnapshot, axpTrimNavTrailBeforeTarget, backgroundOperationEntityFactory, buildFileStorageDownloadUrl, buildLocalEntityMetaId, buildLocalEntityStorageId, buildScopedSettingsSnapshotId, chooseSystemFiles, coerceAXPSettingRawValue, coerceAXPSettingRawValueByKind, configPlatform, createBackgroundOperationStore, createDefaultSettingValueProviders, createEmptyScopedSettingsSnapshot, createEntityCommandOptions, createEntityRowExpressionScope, createEntitySearchCommand, createFileTypeOpenContext, createIndexedDbSettingValueProviders, createMenuContext, createMenuMiddleware, createUnsavedChangesCanDeactivateGuard, downloadGraphicFromElement, evaluateEntityDisplayTemplate, extractFileExtension, extractHttpRequestErrorInfo, extractRequestErrorInfo, findManualPresetIdByOperation, formatEntityRowDisplayTitle, formatRequestError, hasFileTypeOpenHandler, hydrateSettingsValuesFromIndexedDb, inferSettingCoercionKind, isFileNameShownInViewer, isFileTypeShownInViewer, isFileViewerPreviewExtension, isOneWaySettingsIndexedDbCache, isPendingCascadeFilter, isSettingKeyCacheable, isSettingVisibleOnScope, isStoredImageFileId, normalizeAvailableLanguageCodes, normalizeDocumentFileTypePurposes, normalizeDocumentToFileListItem, normalizeOverridableAt, normalizePositiveNumberOption, normalizeRouterUrl, normalizeStoredImageRef, peelSettingValueKey, platformErrorI18nKey, primaryLanguageSubtag, printGraphicFromElement, projectSettingsValuesForIndexedDb, provideAXPUserNotificationService, provideDynamicHomePage, provideLocalEntityOfflineRuntime, provideMenuMiddleware, purgeLegacyTenantScopedSettingsSnapshots, resolveDateFilterPresets, resolveEffectiveAvailableLanguageCodes, resolveEntityCreateListBehavior, resolveEntityDetailsRouteAccess, resolveEntityModifyPopupTitle, resolveEntityRowDisplayText, resolveEntityRowDisplayTitle, resolveEntityRowDisplayTitleFromColumnContext, resolveEntitySearchTitleFallback, resolveExplorerFileDisplayName, resolveFileTypeDisplay, resolveFileViewerType, resolveGraphicElementSize, resolveGraphicPrintContent, resolveQueryMatchingDisplayText, resolveSearchDisplayTemplate, resolveSearchableText, resolveStoredImageDisplayUrl, searchInRecordValues, searchInSearchableValue, serializeSvgElement, shouldApplyDefaultMultiLanguageToEntityProperty, shouldApplyDefaultMultiLanguageToWidgetNode, shouldApplyDefaultMultiLanguageToWidgetProperty, shouldPersistSettingsInIndexedDb, stripAccidentalNestedSettingParents, throwIfCommandFailed, toAXPRequestError, toExecuteCommandFailureResult, traceSettingsAppStartupLoadComplete, traceSettingsAppStartupLoadStarted, traceSettingsClientTool, traceSettingsFlush, traceSettingsLocalPersist, traceSettingsPageLoadComplete, traceSettingsPageLoadStarted, traceSettingsPageRouteLoad, traceSettingsRetryScheduled, traceSettingsRevalidateFailed, traceSettingsServerApiCall, traceSettingsServiceLoadComplete, traceSettingsServiceLoadFailed, traceSettingsServiceLoadStarted, traceSettingsServiceReload, traceSettingsSyncFailed, triggerBrowserDownload, tryOpenFileByCatalogType, withDefaultMultiLanguageOnWidgetNodeTree, withDefaultMultiLanguageOnWidgetProperty };
14029
14183
  //# sourceMappingURL=acorex-platform-framework-client-common.mjs.map