@acorex-platform/framework-client 2.0.0-next.6 → 2.0.0-next.8

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 (38) hide show
  1. package/fesm2022/acorex-platform-framework-client-common.mjs +234 -155
  2. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-framework-client-core.mjs +7 -2
  4. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +107 -15
  6. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  7. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DaOvPoNI.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-B5-EWZbC.mjs} +215 -95
  8. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-B5-EWZbC.mjs.map +1 -0
  9. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-BU7KEfyF.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-NqoqvVNH.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-BU7KEfyF.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-NqoqvVNH.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-Boq0MUFK.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-4dFHTjF9.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-Boq0MUFK.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-4dFHTjF9.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-CMoFkzhf.mjs → acorex-platform-framework-client-layout-entity-file-list-popup.component-CoHxHyUT.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-CMoFkzhf.mjs.map → acorex-platform-framework-client-layout-entity-file-list-popup.component-CoHxHyUT.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-Bre8friL.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-Dy9LQN8x.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-Bre8friL.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-Dy9LQN8x.mjs.map} +1 -1
  17. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
  18. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +98 -13
  19. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  20. package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-1UJh0Qj4.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CvYTQYMW.mjs} +42 -19
  21. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CvYTQYMW.mjs.map +1 -0
  22. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-SHCgo4UC.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-C9eqdmKD.mjs} +3 -3
  23. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-SHCgo4UC.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-C9eqdmKD.mjs.map} +1 -1
  24. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BYsrp8LT.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-DZ_G-FcA.mjs} +2 -2
  25. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BYsrp8LT.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-DZ_G-FcA.mjs.map} +1 -1
  26. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
  27. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +25 -7
  28. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  29. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +1 -1
  30. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
  31. package/package.json +2 -2
  32. package/types/acorex-platform-framework-client-common.d.ts +19 -4
  33. package/types/acorex-platform-framework-client-layout-components.d.ts +26 -1
  34. package/types/acorex-platform-framework-client-layout-entity.d.ts +38 -27
  35. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +26 -2
  36. package/types/acorex-platform-framework-client-layout-widgets.d.ts +2 -0
  37. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DaOvPoNI.mjs.map +0 -1
  38. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-1UJh0Qj4.mjs.map +0 -1
@@ -3442,6 +3442,213 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
3442
3442
  }]
3443
3443
  }], ctorParameters: () => [] });
3444
3444
 
3445
+ //#endregion
3446
+ //#region ---- App Path Navigation ----
3447
+ /**
3448
+ * Splits an absolute app path (`/app/m/module/e/Entity/id/view`) into router command segments.
3449
+ * Prefer this over `navigate([fullPath])` or ambiguous single-segment navigation so browser history stays correct.
3450
+ */
3451
+ function axpParseAppPath(path) {
3452
+ const trimmed = path.trim();
3453
+ const withoutLeadingSlash = trimmed.startsWith('/') ? trimmed.slice(1) : trimmed;
3454
+ const [pathAndFragment, queryString] = withoutLeadingSlash.split('?');
3455
+ const [pathPart, fragment] = pathAndFragment.split('#');
3456
+ const segments = pathPart.split('/').filter(Boolean);
3457
+ const queryParams = queryString
3458
+ ? queryString.split('&').reduce((params, pair) => {
3459
+ const [key, value = ''] = pair.split('=');
3460
+ if (key) {
3461
+ params[decodeURIComponent(key)] = decodeURIComponent(value);
3462
+ }
3463
+ return params;
3464
+ }, {})
3465
+ : undefined;
3466
+ return {
3467
+ segments,
3468
+ queryParams,
3469
+ fragment: fragment || undefined,
3470
+ };
3471
+ }
3472
+ /** Navigates using explicit path segments (same pattern as entity preload filters). */
3473
+ function axpNavigateAppPath(router, path, extras) {
3474
+ const { segments, queryParams, fragment } = axpParseAppPath(path);
3475
+ return router.navigate(segments, {
3476
+ ...extras,
3477
+ queryParams,
3478
+ fragment,
3479
+ });
3480
+ }
3481
+ /** True when a URL path is an entity master list route (`.../e/{Entity}/list`). */
3482
+ function axpIsEntityListPath(url) {
3483
+ const path = url.split('?')[0].split('#')[0];
3484
+ return /\/e\/[^/]+\/list$/.test(path);
3485
+ }
3486
+ /** True when the current browser URL is an entity master list route (`.../e/{Entity}/list`). */
3487
+ function axpIsEntityListRoute(router) {
3488
+ return axpIsEntityListPath(router.url);
3489
+ }
3490
+ /** True when a URL path is an entity details view route (`.../e/{Entity}/{id}/view`). */
3491
+ function axpIsEntityDetailsPath(url) {
3492
+ const path = url.split('?')[0].split('#')[0];
3493
+ return /\/e\/[^/]+\/[^/]+\/view$/.test(path);
3494
+ }
3495
+ /**
3496
+ * Entity key (`module.entity`) for `/{app}/m/{module}/e/{entity}/{id}/view`.
3497
+ * Query and hash are ignored. Returns null for every other path.
3498
+ */
3499
+ function axpEntityKeyFromDetailsPath(url) {
3500
+ const path = url.split('?')[0]?.split('#')[0] ?? '';
3501
+ const match = /\/m\/([^/]+)\/e\/([^/]+)\/[^/]+\/view$/.exec(path);
3502
+ const moduleName = match?.[1];
3503
+ const entityName = match?.[2];
3504
+ if (!moduleName || !entityName) {
3505
+ return null;
3506
+ }
3507
+ return `${moduleName}.${entityName}`;
3508
+ }
3509
+ /** True when the current browser URL is an entity details view route (`.../e/{Entity}/{id}/view`). */
3510
+ function axpIsEntityDetailsViewRoute(router) {
3511
+ return axpIsEntityDetailsPath(router.url);
3512
+ }
3513
+ /**
3514
+ * Merges query params on the current entity list route without pushing history.
3515
+ * Uses absolute path segments so a stale `relativeTo` cannot rewrite the active URL after navigating away.
3516
+ */
3517
+ function axpReplaceEntityListRouteQueryParams(router, queryParams) {
3518
+ const url = router.url;
3519
+ if (!axpIsEntityListPath(url)) {
3520
+ return;
3521
+ }
3522
+ const parsed = router.parseUrl(url);
3523
+ const pathOnly = url.split('?')[0].split('#')[0];
3524
+ const { segments } = axpParseAppPath(pathOnly);
3525
+ const mergedQueryParams = { ...parsed.queryParams, ...queryParams };
3526
+ void router.navigate(segments, {
3527
+ queryParams: mergedQueryParams,
3528
+ replaceUrl: true,
3529
+ });
3530
+ }
3531
+ //#endregion
3532
+
3533
+ //#region ----- Constants -----
3534
+ /** Query param that distinguishes two menus pointing at the same entity list. */
3535
+ const ENTITY_LIST_INSTANCE_QUERY_PARAM = 'list';
3536
+ /** Used when the list is opened without a menu (command, deep link). */
3537
+ const ENTITY_LIST_DEFAULT_INSTANCE_ID = 'default';
3538
+ //#endregion
3539
+ //#region ----- Instance id -----
3540
+ function axpNormalizeEntityListInstanceId(value) {
3541
+ if (typeof value !== 'string') {
3542
+ return ENTITY_LIST_DEFAULT_INSTANCE_ID;
3543
+ }
3544
+ const trimmed = value.trim();
3545
+ return trimmed.length > 0 ? trimmed : ENTITY_LIST_DEFAULT_INSTANCE_ID;
3546
+ }
3547
+ function axpGetEntityListInstanceIdFromQueryString(queryString) {
3548
+ const params = new URLSearchParams(queryString.startsWith('?') ? queryString.slice(1) : queryString);
3549
+ return axpNormalizeEntityListInstanceId(params.get(ENTITY_LIST_INSTANCE_QUERY_PARAM));
3550
+ }
3551
+ function axpGetEntityListInstanceIdFromParamMap(queryParamMap) {
3552
+ return axpNormalizeEntityListInstanceId(queryParamMap.get(ENTITY_LIST_INSTANCE_QUERY_PARAM));
3553
+ }
3554
+ function axpGetEntityListInstanceIdFromPath(path) {
3555
+ const queryString = path.split('#')[0].split('?')[1] ?? '';
3556
+ return axpGetEntityListInstanceIdFromQueryString(queryString);
3557
+ }
3558
+ //#endregion
3559
+ //#region ----- Menu / URL stamping -----
3560
+ /**
3561
+ * Appends `list={instanceId}` to an entity-list path when missing.
3562
+ * Named menu entries get a stable identity so Angular reuses the list route
3563
+ * while filter persistence can still isolate each menu.
3564
+ */
3565
+ function axpEnsureEntityListInstanceQueryParam(path, instanceId) {
3566
+ if (!path || !instanceId || !axpIsEntityListPath(path)) {
3567
+ return path;
3568
+ }
3569
+ const normalized = axpNormalizeEntityListInstanceId(instanceId);
3570
+ if (normalized === ENTITY_LIST_DEFAULT_INSTANCE_ID) {
3571
+ return path;
3572
+ }
3573
+ const { segments, queryParams, fragment } = axpParseAppPath(path);
3574
+ if (queryParams?.[ENTITY_LIST_INSTANCE_QUERY_PARAM]) {
3575
+ return path;
3576
+ }
3577
+ const nextQuery = new URLSearchParams({
3578
+ ...(queryParams ?? {}),
3579
+ [ENTITY_LIST_INSTANCE_QUERY_PARAM]: normalized,
3580
+ });
3581
+ const base = `/${segments.join('/')}`;
3582
+ const withQuery = `${base}?${nextQuery.toString()}`;
3583
+ return fragment ? `${withQuery}#${fragment}` : withQuery;
3584
+ }
3585
+ /**
3586
+ * Query keys the list page rewrites while the user stays on the same menu
3587
+ * (`view`, `filters`, layout, refresh). They must not open another tab.
3588
+ */
3589
+ const ENTITY_LIST_PAGE_STATE_QUERY_KEYS = new Set(['view', 'layout', 'filters', '_ts']);
3590
+ function pushEntityListNavigationPair(pairs, key, raw) {
3591
+ if (!key || ENTITY_LIST_PAGE_STATE_QUERY_KEYS.has(key)) {
3592
+ return;
3593
+ }
3594
+ const value = Array.isArray(raw) ? raw[0] : raw;
3595
+ if (typeof value !== 'string') {
3596
+ return;
3597
+ }
3598
+ if (key === ENTITY_LIST_INSTANCE_QUERY_PARAM) {
3599
+ const normalized = axpNormalizeEntityListInstanceId(value);
3600
+ if (normalized === ENTITY_LIST_DEFAULT_INSTANCE_ID) {
3601
+ return;
3602
+ }
3603
+ pairs.push([key, normalized]);
3604
+ return;
3605
+ }
3606
+ pairs.push([key, value]);
3607
+ }
3608
+ function readEntityListNavigationPairs(query) {
3609
+ const pairs = [];
3610
+ if (!query) {
3611
+ return pairs;
3612
+ }
3613
+ if (typeof query === 'string') {
3614
+ const queryString = query.includes('?')
3615
+ ? (query.split('#')[0].split('?')[1] ?? '')
3616
+ : query.replace(/^\?/, '');
3617
+ const params = new URLSearchParams(queryString);
3618
+ params.forEach((value, key) => pushEntityListNavigationPair(pairs, key, value));
3619
+ return pairs;
3620
+ }
3621
+ if (typeof URLSearchParams !== 'undefined' && query instanceof URLSearchParams) {
3622
+ query.forEach((value, key) => pushEntityListNavigationPair(pairs, key, value));
3623
+ return pairs;
3624
+ }
3625
+ for (const [key, value] of Object.entries(query)) {
3626
+ pushEntityListNavigationPair(pairs, key, value);
3627
+ }
3628
+ return pairs;
3629
+ }
3630
+ /**
3631
+ * Tab and route-cache identity for an entity list.
3632
+ * Navigation query params (`mode=cm`, `mode=pm`, non-default `list`, …) keep each menu distinct,
3633
+ * the same way simple navigation does. Page-state params stay on the URL and do not split the tab.
3634
+ */
3635
+ function axpEntityListNavigationTabKey(path, query) {
3636
+ const base = path.split('?')[0].split('#')[0].replace(/\/+$/, '') || '/';
3637
+ if (!axpIsEntityListPath(base)) {
3638
+ return base;
3639
+ }
3640
+ const pairs = readEntityListNavigationPairs(query);
3641
+ if (!pairs.length) {
3642
+ return base;
3643
+ }
3644
+ pairs.sort((left, right) => left[0].localeCompare(right[0]) || left[1].localeCompare(right[1]));
3645
+ const queryString = pairs
3646
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
3647
+ .join('&');
3648
+ return `${base}?${queryString}`;
3649
+ }
3650
+ //#endregion
3651
+
3445
3652
  //#endregion
3446
3653
  /**
3447
3654
  * Holds detached Angular route component instances keyed by tab key so tabular navigation can
@@ -3502,7 +3709,11 @@ class AXPTabRouteCacheRegistry {
3502
3709
  */
3503
3710
  syncOpenKeys(scopedKeys, activeTabUrls = []) {
3504
3711
  const scopedSet = new Set(scopedKeys);
3505
- const activePathSet = new Set(activeTabUrls.map((url) => url.split('?')[0].split('#')[0].replace(/\/+$/, '') || '/'));
3712
+ const activePathSet = new Set(activeTabUrls.flatMap((url) => {
3713
+ const pathOnly = url.split('?')[0].split('#')[0].replace(/\/+$/, '') || '/';
3714
+ const withNavigation = axpEntityListNavigationTabKey(pathOnly, url);
3715
+ return withNavigation === pathOnly ? [pathOnly] : [pathOnly, withNavigation];
3716
+ }));
3506
3717
  for (const cacheKey of [...this.handles.keys()]) {
3507
3718
  const normalizedCacheKey = cacheKey.replace(/\/+$/, '') || '/';
3508
3719
  const keepsScopedKey = scopedSet.has(normalizedCacheKey);
@@ -5329,7 +5540,7 @@ class AXPBackgroundOperationSlotComponent {
5329
5540
  this.popover()?.close();
5330
5541
  }
5331
5542
  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 }); }
5543
+ 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
5544
  }
5334
5545
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBackgroundOperationSlotComponent, decorators: [{
5335
5546
  type: Component,
@@ -5600,148 +5811,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
5600
5811
  args: [{ providedIn: 'root' }]
5601
5812
  }] });
5602
5813
 
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
5814
  //#region ----- Menu instance identity -----
5746
5815
  /** Prefers the stamped `list` query param, then the menu item name. */
5747
5816
  function axpMenuItemListInstanceId(item) {
@@ -7248,13 +7317,14 @@ withMethods((store, router = inject(Router), commandService = inject(AXPCommandS
7248
7317
  const IGNORED_QUERY_KEYS = new Set(['_ts']);
7249
7318
  /**
7250
7319
  * 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.
7320
+ * Path segments define the page. Entity-list navigation query params (`mode`, `list`, …)
7321
+ * stay in the key so two menus of the same entity stay distinct, matching simple navigation.
7322
+ * Page-state params (`view`, `filters`, `_ts`) stay on the URL and do not open another tab.
7253
7323
  */
7254
7324
  function axpBuildTabKey(url) {
7255
7325
  const normalized = normalizeRouterUrl(url);
7256
7326
  const pathOnly = normalized.split('?')[0].split('#')[0];
7257
- return pathOnly;
7327
+ return axpEntityListNavigationTabKey(pathOnly, normalized);
7258
7328
  }
7259
7329
  /** Normalizes a router URL for storage and navigation. */
7260
7330
  function normalizeRouterUrl(url) {
@@ -7328,10 +7398,10 @@ function axpGetLeafRouteSnapshot(root) {
7328
7398
  return route;
7329
7399
  }
7330
7400
  /**
7331
- * Resolves the tab dedupe key from an activated route tree.
7401
+ * Path identity from an activated route tree, without query params.
7332
7402
  * Uses the nearest ancestor with `data.tab = true`; otherwise the leaf path.
7333
7403
  */
7334
- function axpResolveTabKeyFromSnapshot(leaf) {
7404
+ function axpTabScopePathFromSnapshot(leaf) {
7335
7405
  const chain = leaf.pathFromRoot;
7336
7406
  for (let index = chain.length - 1; index >= 0; index--) {
7337
7407
  const snapshot = chain[index];
@@ -7341,6 +7411,13 @@ function axpResolveTabKeyFromSnapshot(leaf) {
7341
7411
  }
7342
7412
  return axpPathFromSnapshot(leaf);
7343
7413
  }
7414
+ /**
7415
+ * Resolves the tab dedupe key from an activated route tree.
7416
+ * Entity list routes also include navigation query params (`mode`, `list`, …), same as simple navigation.
7417
+ */
7418
+ function axpResolveTabKeyFromSnapshot(leaf) {
7419
+ return axpEntityListNavigationTabKey(axpTabScopePathFromSnapshot(leaf), leaf.queryParams);
7420
+ }
7344
7421
  //#endregion
7345
7422
  //#region ---- Router / URL Resolution ----
7346
7423
  /**
@@ -7351,15 +7428,17 @@ function axpResolveTabKey(router, url) {
7351
7428
  const normalized = normalizeRouterUrl(url ?? router.url);
7352
7429
  const pathOnly = normalized.split('?')[0].split('#')[0];
7353
7430
  const currentPath = normalizeRouterUrl(router.url).split('?')[0].split('#')[0];
7431
+ let basePath;
7354
7432
  if (!url || pathOnly === currentPath) {
7355
7433
  const leaf = axpGetLeafRouteSnapshot(router.routerState.snapshot.root);
7356
- return axpResolveTabKeyFromSnapshot(leaf);
7434
+ basePath = axpTabScopePathFromSnapshot(leaf);
7357
7435
  }
7358
- const fromConfig = axpResolveTabKeyFromRouteConfig(router.config, pathOnly);
7359
- if (fromConfig) {
7360
- return fromConfig;
7436
+ else {
7437
+ basePath =
7438
+ axpResolveTabKeyFromRouteConfig(router.config, pathOnly) ??
7439
+ (pathOnly.startsWith('/') ? pathOnly : `/${pathOnly}`);
7361
7440
  }
7362
- return pathOnly.startsWith('/') ? pathOnly : `/${pathOnly}`;
7441
+ return axpEntityListNavigationTabKey(basePath, normalized);
7363
7442
  }
7364
7443
  /**
7365
7444
  * Matches a URL path against registered routes and resolves the tab key from `data.tab`.
@@ -14054,5 +14133,5 @@ const axpPageGetContextQueryDefinition = defineQuery({
14054
14133
  * Generated bundle index. Do not edit.
14055
14134
  */
14056
14135
 
14057
- 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, 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 };
14136
+ 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 };
14058
14137
  //# sourceMappingURL=acorex-platform-framework-client-common.mjs.map