@acorex/platform 20.9.36 → 20.9.38

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.
@@ -4446,6 +4446,45 @@ function resetPagingForTreeChildrenLoad(request, parentKey, take = TREE_CHILDREN
4446
4446
  request.take = take;
4447
4447
  }
4448
4448
  }
4449
+ /**
4450
+ * Returns true when the filter tree already constrains `parentKey`
4451
+ * (root `isEmpty`, children `equal`, or nested equivalents).
4452
+ */
4453
+ function filterTouchesParentKey(filter, parentKey) {
4454
+ if (filter.field === parentKey) {
4455
+ return true;
4456
+ }
4457
+ return (filter.filters ?? []).some((child) => filterTouchesParentKey(child, parentKey));
4458
+ }
4459
+ /**
4460
+ * Ensures hierarchical root loads keep `parentKey isEmpty` while preserving custom filters.
4461
+ * Call this in lookup/list loaders before query so storage does not replace custom filters.
4462
+ * Skips when the request already targets `parentKey` (e.g. children expand).
4463
+ */
4464
+ function ensureHierarchicalRootFilter(filter, parentKey) {
4465
+ if (!parentKey) {
4466
+ return filter ?? undefined;
4467
+ }
4468
+ const rootFilter = {
4469
+ value: true,
4470
+ field: parentKey,
4471
+ operator: {
4472
+ type: 'isEmpty',
4473
+ },
4474
+ };
4475
+ if (!filter) {
4476
+ return rootFilter;
4477
+ }
4478
+ if (filterTouchesParentKey(filter, parentKey)) {
4479
+ return filter;
4480
+ }
4481
+ return {
4482
+ field: null,
4483
+ logic: 'and',
4484
+ operator: null,
4485
+ filters: [filter, rootFilter],
4486
+ };
4487
+ }
4449
4488
  /**
4450
4489
  * Applies take/skip to the data source without triggering {@link AXDataSource.load}.
4451
4490
  */
@@ -12779,6 +12818,12 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
12779
12818
  this.selectedItems = signal([], ...(ngDevMode ? [{ debugName: "selectedItems" }] : /* istanbul ignore next */ []));
12780
12819
  this.toolbarNode = signal(null, ...(ngDevMode ? [{ debugName: "toolbarNode" }] : /* istanbul ignore next */ []));
12781
12820
  this.destroyed = new Subject();
12821
+ /** Invalidates in-flight filter/refresh work on remount, rapid page switches, or destroy. */
12822
+ this.opGeneration = 0;
12823
+ this.isViewDestroyed = false;
12824
+ this.initListTimeoutId = null;
12825
+ /** Unpatched data-list refresh (hits the grid). Prefer this over the scoped patch to avoid recursion. */
12826
+ this.boundDataListRefresh = null;
12782
12827
  //options
12783
12828
  this.entitySource = computed(() => this.options()['entity'], ...(ngDevMode ? [{ debugName: "entitySource" }] : /* istanbul ignore next */ []));
12784
12829
  this.excludeColumns = computed(() => this.options()['excludeColumns'], ...(ngDevMode ? [{ debugName: "excludeColumns" }] : /* istanbul ignore next */ []));
@@ -12891,20 +12936,20 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
12891
12936
  }
12892
12937
  inst.__axpEntityListRefreshPatched = true;
12893
12938
  const originalRefresh = inst.refresh.bind(inst);
12939
+ this.boundDataListRefresh = originalRefresh;
12894
12940
  inst.refresh = () => {
12895
- void (async () => {
12896
- const o = this.options();
12897
- const specs = o['relatedFilterConditionSpecs'];
12898
- if (o['syncRelatedListFiltersFromDialogContext'] && specs?.length) {
12899
- await this.applyRelatedFiltersFromContextAndDatasource(specs);
12900
- }
12901
- else {
12902
- await this.reapplyScopedFiltersToDataSource();
12903
- }
12904
- originalRefresh();
12905
- })();
12941
+ void this.runScopedDataListRefresh(originalRefresh);
12942
+ // Patched refresh is async; callers that need a boolean should use boundDataListRefresh.
12943
+ return false;
12906
12944
  };
12945
+ // If the initial filter apply raced ahead of the grid, retry load now that refresh is bound.
12946
+ untracked(() => {
12947
+ if (!this.isMounted() && !this.isViewDestroyed) {
12948
+ void this.reapplyScopedFiltersToDataSource({ triggerInitialLoad: true });
12949
+ }
12950
+ });
12907
12951
  }, ...(ngDevMode ? [{ debugName: "#patchDataListRefreshEffect" }] : /* istanbul ignore next */ []));
12952
+ //#endregion
12908
12953
  //#region ---- Query Change Handler ----
12909
12954
  this.queries = undefined;
12910
12955
  this.#effect = effect(() => {
@@ -13117,14 +13162,29 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
13117
13162
  const routeFilters = this.parseFiltersFromRoute();
13118
13163
  return routeFilters.length ? this.mergeToolbarFilters(base, routeFilters) : base;
13119
13164
  }
13165
+ //#region ---- Scoped filter / initial load (race-safe) ----
13166
+ beginOp() {
13167
+ return ++this.opGeneration;
13168
+ }
13169
+ isOpStale(generation) {
13170
+ return this.isViewDestroyed || generation !== this.opGeneration;
13171
+ }
13172
+ delay(ms) {
13173
+ return new Promise((resolve) => setTimeout(resolve, ms));
13174
+ }
13120
13175
  /**
13121
13176
  * Applies merged route + parent-scope filters to the widget value and data source.
13122
13177
  */
13123
13178
  applyMergedRouteFiltersToList() {
13124
- void this.reapplyScopedFiltersToDataSource();
13179
+ void this.reapplyScopedFiltersToDataSource({ triggerInitialLoad: true });
13125
13180
  }
13126
- /** Syncs toolbar filters to context and AXDataSource (retries until data-list is mounted). */
13127
- async reapplyScopedFiltersToDataSource() {
13181
+ /**
13182
+ * Syncs toolbar filters to context and AXDataSource (retries until data-list is mounted).
13183
+ * Stale generations (destroy / newer op) exit without touching the grid.
13184
+ */
13185
+ async reapplyScopedFiltersToDataSource(options) {
13186
+ const generation = options?.generation ?? this.beginOp();
13187
+ const triggerInitialLoad = options?.triggerInitialLoad !== false;
13128
13188
  const merged = this.getMergedToolbarFilters();
13129
13189
  const current = this.getValue();
13130
13190
  if (!isEqual(current?.toolbar?.filters, merged)) {
@@ -13133,26 +13193,64 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
13133
13193
  toolbar: { ...(current?.toolbar ?? {}), filters: merged },
13134
13194
  });
13135
13195
  }
13136
- const pushed = await this.ensureToolbarFiltersOnDataSource();
13137
- if (pushed) {
13138
- this.triggerInitialLoadIfNeeded();
13196
+ if (this.isOpStale(generation)) {
13197
+ return;
13198
+ }
13199
+ const pushed = await this.ensureToolbarFiltersOnDataSource(generation);
13200
+ if (!pushed || this.isOpStale(generation)) {
13201
+ return;
13202
+ }
13203
+ if (triggerInitialLoad) {
13204
+ await this.triggerInitialLoadIfNeeded(generation);
13139
13205
  }
13140
13206
  }
13141
13207
  /**
13142
13208
  * Entity lists use `fetchDataMode: 'manual'`; after scoped filters reach the data source,
13143
- * the grid must be refreshed once (initial #effect may run before the data-list is ready).
13209
+ * the grid must be refreshed once. Retries until the data-table view child accepts refresh
13210
+ * so rapid relatedEntity page switches cannot leave the table on "no data loaded yet".
13144
13211
  */
13145
- triggerInitialLoadIfNeeded() {
13146
- if (this.isMounted()) {
13212
+ async triggerInitialLoadIfNeeded(generation) {
13213
+ if (this.isMounted() || this.isOpStale(generation)) {
13147
13214
  return;
13148
13215
  }
13149
- const listInstance = this.listWidget()?.instance;
13150
- if (!listInstance?.call) {
13151
- return;
13216
+ const refreshed = await this.refreshWhenGridReady(generation);
13217
+ if (refreshed && !this.isOpStale(generation)) {
13218
+ this.isMounted.set(true);
13152
13219
  }
13153
- this.pushToolbarFiltersToDataSource();
13154
- listInstance.call('refresh');
13155
- this.isMounted.set(true);
13220
+ }
13221
+ /**
13222
+ * Calls the unpatched data-list refresh until the grid is ready or the op is stale.
13223
+ */
13224
+ async refreshWhenGridReady(generation) {
13225
+ return this.refreshWhenGridReadyWith(generation, () => this.resolveDataListRefresh()?.() ?? false);
13226
+ }
13227
+ /**
13228
+ * Prefer the bound original refresh (pre-patch). Falls back to an unpatched instance refresh.
13229
+ */
13230
+ resolveDataListRefresh() {
13231
+ if (this.boundDataListRefresh) {
13232
+ return this.boundDataListRefresh;
13233
+ }
13234
+ const inst = this.listWidget()?.instance;
13235
+ if (!inst?.refresh || inst.__axpEntityListRefreshPatched) {
13236
+ return null;
13237
+ }
13238
+ return () => inst.refresh?.() ?? false;
13239
+ }
13240
+ async refreshWhenGridReadyWith(generation, refreshFn) {
13241
+ const maxAttempts = 60;
13242
+ const delayMs = 50;
13243
+ for (let i = 0; i < maxAttempts; i++) {
13244
+ if (this.isOpStale(generation)) {
13245
+ return false;
13246
+ }
13247
+ this.pushToolbarFiltersToDataSource();
13248
+ if (refreshFn()) {
13249
+ return true;
13250
+ }
13251
+ await this.delay(delayMs);
13252
+ }
13253
+ return false;
13156
13254
  }
13157
13255
  /**
13158
13256
  * Re-evaluates related-entity list filters from the live dialog form context (e.g. after create saves the main row id).
@@ -13170,7 +13268,7 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
13170
13268
  value: await this.expressionEvaluator.evaluate(c.value, scope),
13171
13269
  hidden: true,
13172
13270
  })));
13173
- if (!this.fullPath()) {
13271
+ if (this.isViewDestroyed || !this.fullPath()) {
13174
13272
  return;
13175
13273
  }
13176
13274
  const current = this.getValue();
@@ -13202,14 +13300,18 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
13202
13300
  * Pushes toolbar filters once the embedded data-list exposes its data source
13203
13301
  * (listNode is created via deferred setTimeout in ngOnInit).
13204
13302
  */
13205
- async ensureToolbarFiltersOnDataSource() {
13303
+ async ensureToolbarFiltersOnDataSource(generation) {
13304
+ const opGeneration = generation ?? this.opGeneration;
13206
13305
  if (this.pushToolbarFiltersToDataSource()) {
13207
13306
  return true;
13208
13307
  }
13209
13308
  const maxAttempts = 40;
13210
13309
  const delayMs = 50;
13211
13310
  for (let i = 0; i < maxAttempts; i++) {
13212
- await new Promise((resolve) => setTimeout(resolve, delayMs));
13311
+ await this.delay(delayMs);
13312
+ if (this.isOpStale(opGeneration)) {
13313
+ return false;
13314
+ }
13213
13315
  if (this.pushToolbarFiltersToDataSource()) {
13214
13316
  return true;
13215
13317
  }
@@ -13220,8 +13322,12 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
13220
13322
  * Writes toolbar filters from specs and pushes them onto the data source so refresh/reload keeps the parent scope.
13221
13323
  */
13222
13324
  async applyRelatedFiltersFromContextAndDatasource(specs) {
13325
+ const generation = this.beginOp();
13223
13326
  await this.applyRelatedFiltersFromContext(specs);
13224
- await this.ensureToolbarFiltersOnDataSource();
13327
+ if (this.isOpStale(generation)) {
13328
+ return;
13329
+ }
13330
+ await this.ensureToolbarFiltersOnDataSource(generation);
13225
13331
  }
13226
13332
  /**
13227
13333
  * Refreshes the embedded data list (toolbar / workflow). In wizard mode, `refresh` is patched to re-apply scoped filters first.
@@ -13231,6 +13337,31 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
13231
13337
  }
13232
13338
  /** Patches data-list `refresh` so reload keeps parent-scoped toolbar filters on the data source. */
13233
13339
  #patchDataListRefreshEffect;
13340
+ /**
13341
+ * Re-applies parent-scoped filters then refreshes the grid, ignoring stale overlapping calls.
13342
+ */
13343
+ async runScopedDataListRefresh(originalRefresh) {
13344
+ const generation = this.beginOp();
13345
+ const o = this.options();
13346
+ const specs = o['relatedFilterConditionSpecs'];
13347
+ if (o['syncRelatedListFiltersFromDialogContext'] && specs?.length) {
13348
+ await this.applyRelatedFiltersFromContext(specs);
13349
+ if (this.isOpStale(generation)) {
13350
+ return;
13351
+ }
13352
+ await this.ensureToolbarFiltersOnDataSource(generation);
13353
+ }
13354
+ else {
13355
+ await this.reapplyScopedFiltersToDataSource({ triggerInitialLoad: false, generation });
13356
+ }
13357
+ if (this.isOpStale(generation)) {
13358
+ return;
13359
+ }
13360
+ const refreshed = await this.refreshWhenGridReadyWith(generation, originalRefresh);
13361
+ if (refreshed && !this.isOpStale(generation) && !this.isMounted()) {
13362
+ this.isMounted.set(true);
13363
+ }
13364
+ }
13234
13365
  #effect;
13235
13366
  /**
13236
13367
  * Validates that all required dependencies are available
@@ -13336,6 +13467,9 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
13336
13467
  }
13337
13468
  // Resolve entity and set it in the signal
13338
13469
  const resolvedEntity = await this.entityService.resolve(moduleName, entityName);
13470
+ if (this.isViewDestroyed) {
13471
+ return;
13472
+ }
13339
13473
  if (!resolvedEntity) {
13340
13474
  throw new Error(`Entity not found: ${this.entitySource()}`);
13341
13475
  }
@@ -13348,8 +13482,18 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
13348
13482
  excludeProperties: this.options()['excludeProperties'],
13349
13483
  };
13350
13484
  const listOptions = await this.entityListTableService.convertEntityToListOptions(resolvedEntity, options, this.allActions());
13485
+ if (this.isViewDestroyed) {
13486
+ return;
13487
+ }
13351
13488
  const toolbarOptions = await this.entityListToolbarService.convertEntityToolbarOptions(resolvedEntity, options);
13352
- setTimeout(() => {
13489
+ if (this.isViewDestroyed) {
13490
+ return;
13491
+ }
13492
+ this.initListTimeoutId = setTimeout(() => {
13493
+ this.initListTimeoutId = null;
13494
+ if (this.isViewDestroyed) {
13495
+ return;
13496
+ }
13353
13497
  this.listNode.set({
13354
13498
  type: AXPWidgetsCatalog.dataList,
13355
13499
  options: listOptions,
@@ -13371,7 +13515,9 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
13371
13515
  },
13372
13516
  });
13373
13517
  queueMicrotask(() => {
13374
- this.applyMergedRouteFiltersToList();
13518
+ if (!this.isViewDestroyed) {
13519
+ this.applyMergedRouteFiltersToList();
13520
+ }
13375
13521
  });
13376
13522
  }, 100);
13377
13523
  }
@@ -13396,6 +13542,9 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
13396
13542
  }
13397
13543
  });
13398
13544
  const listWidget = (await this.layoutService.waitForWidget(`${this.entitySource()}-tab-list_table`, 500));
13545
+ if (this.isViewDestroyed) {
13546
+ return;
13547
+ }
13399
13548
  if (listWidget?.api && typeof listWidget.api === 'function') {
13400
13549
  const onSelectionChange = listWidget.api()['onSelectionChange'];
13401
13550
  if (onSelectionChange) {
@@ -13406,6 +13555,13 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
13406
13555
  }
13407
13556
  }
13408
13557
  ngOnDestroy() {
13558
+ this.isViewDestroyed = true;
13559
+ this.beginOp();
13560
+ if (this.initListTimeoutId != null) {
13561
+ clearTimeout(this.initListTimeoutId);
13562
+ this.initListTimeoutId = null;
13563
+ }
13564
+ this.boundDataListRefresh = null;
13409
13565
  this.listWidget.set(undefined);
13410
13566
  this.destroyed.next();
13411
13567
  this.destroyed.complete();
@@ -14855,6 +15011,7 @@ class AXPEntityDataSelectorService {
14855
15011
  // Tree expand reuses grid page skip/take via getItemsByFilter; reset before merge.
14856
15012
  resetPagingForTreeChildrenLoad(e, entity.parentKey);
14857
15013
  this.mergeFilters(e, filters, parentFilters);
15014
+ e.filter = ensureHierarchicalRootFilter(e.filter, entity.parentKey);
14858
15015
  return func(e);
14859
15016
  },
14860
15017
  pageSize: options.grid?.pageSize ?? 10,
@@ -15287,6 +15444,7 @@ class AXPLookupWidgetSelectComponent extends LookupWidgetLookBase {
15287
15444
  }
15288
15445
  this.mergeFilter(e, this.customFilter()());
15289
15446
  this.expandSearchToInlineFields(e, entity, this.displayField()());
15447
+ e.filter = ensureHierarchicalRootFilter(e.filter, entity.parentKey);
15290
15448
  // Apply default sort order if no sort is already specified
15291
15449
  if (defaultSorts.length > 0 && (!e.sort || e.sort.length === 0)) {
15292
15450
  e.sort = defaultSorts;
@@ -15407,8 +15565,10 @@ class AXPLookupWidgetSelectComponent extends LookupWidgetLookBase {
15407
15565
  }
15408
15566
  if (request.filter) {
15409
15567
  request.filter = {
15568
+ field: null,
15410
15569
  logic: 'and',
15411
- filters: [...[request.filter], ...(filter.filters ?? [])],
15570
+ operator: null,
15571
+ filters: [request.filter, filter],
15412
15572
  };
15413
15573
  }
15414
15574
  else {
@@ -26888,5 +27048,5 @@ function detectEntityChanges(oldObj, newObj) {
26888
27048
  * Generated bundle index. Do not edit.
26889
27049
  */
26890
27050
 
26891
- export { ATTACHMENTS_PAGE_COMPONENT_KEY, AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEditFileUploaderCommand, AXPEntitiesListDataSourceDefinition, AXPEntityApplyUpdatesAction, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorRowActionsService, AXPEntityDataSelectorService, AXPEntityDefinitionProviderWidget, AXPEntityDefinitionProviderWidgetEditComponent, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityFormBuilderService, AXPEntityListPersistenceModeDefault, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewCardFieldViewModel, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListCardSelectActionName, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPFileListComponent, AXPFileUploaderLoadFilesQuery, AXPFileUploaderSaveFilesCommand, AXPFileUploaderWidget, AXPFileUploaderWidgetColumnComponent, AXPFileUploaderWidgetEditComponent, AXPFileUploaderWidgetService, AXPFileUploaderWidgetViewComponent, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPRelatedColumnEnrichmentService, AXPRelatedColumnMetadataResolver, AXPSelectorStructureWidget, AXPSelectorStructureWidgetColumnComponent, AXPSelectorStructureWidgetEditComponent, AXPSelectorStructureWidgetViewComponent, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPViewEntityDetailsCommand, AXP_APPEARANCE_SECTION_ORDER, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, AXP_CLASSIFICATION_SECTION_ORDER, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_BACKEND, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_MULTI_SOURCE_DEFINITION_PROVIDER, DEFAULT_COLUMN_ORDER, DEFAULT_PAIR_SPAN_RULES, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, ENTITY_FORM_ACTION_FIRST_STEP_CONTINUE, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, EntityBuilder, EntityDataAccessor, FILE_UPLOADER_TRACE_NS, TREE_CHILDREN_QUERY_TAKE, actionExists, applyDataSourcePagingWithoutLoad, attachmentFieldCount, attachmentNeedsHydration, attachmentsPlugin, attachmentsSemanticallyEqual, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, canPersistEntityListState, cloneLayoutArrays, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, commandMessageTextForError, committedAttachments, computeEntityAggregates, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, defaultCardLayoutMiddleware, defaultCardLayoutMiddlewareProvider, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, eventDispatchMiddleware, fetchHydratedEntityAttachments, filterSortEntityRows, findEntityListRowDataInTree, fingerprintAttachmentItem, fingerprintAttachments, formatLookupItemDisplay, formatLookupItemDisplayAsync, getDataSourcePageIndex, getEntityListRowId, getMasterInterfacePropertySortKey, hasFileUploaderTitleOrDescriptionFields, hydrateAttachmentFieldToFileList, isAXPMiddlewareAbortError, isAttachmentFieldPresentOnRow, isAttachmentListEntry, isAttachmentStorageRef, isCategoryEntity, isCategoryFilter, isFileListItem, isFileUploaderEditDialogAuto, isLazyAttachmentFieldPath, isLegacyEntityDataSelectorOptions, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, mapEntityStorageErrorToCommandResult, mapLegacyEntityDataSelectorOptions, normalizeEntityDataSelectorOptions, normalizeEntityFieldToFileList, normalizeEntityListPersistenceMode, normalizeListPaging, persistedAttachments, provideEntity, resetPagingForTreeChildrenLoad, resolveAttachmentFieldPath, resolveEntityAttachmentFieldNames, resolveEntityPluginDetailPageOrder, resolveFileUploaderEditDialog, resolveFileUploaderEntityScope, resolveLookupDisplayField, resolveLookupDisplayTemplate, restoreEntityListExpandedRows, runEntityQuery, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry };
27051
+ export { ATTACHMENTS_PAGE_COMPONENT_KEY, AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEditFileUploaderCommand, AXPEntitiesListDataSourceDefinition, AXPEntityApplyUpdatesAction, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorRowActionsService, AXPEntityDataSelectorService, AXPEntityDefinitionProviderWidget, AXPEntityDefinitionProviderWidgetEditComponent, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityFormBuilderService, AXPEntityListPersistenceModeDefault, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewCardFieldViewModel, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListCardSelectActionName, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPFileListComponent, AXPFileUploaderLoadFilesQuery, AXPFileUploaderSaveFilesCommand, AXPFileUploaderWidget, AXPFileUploaderWidgetColumnComponent, AXPFileUploaderWidgetEditComponent, AXPFileUploaderWidgetService, AXPFileUploaderWidgetViewComponent, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPRelatedColumnEnrichmentService, AXPRelatedColumnMetadataResolver, AXPSelectorStructureWidget, AXPSelectorStructureWidgetColumnComponent, AXPSelectorStructureWidgetEditComponent, AXPSelectorStructureWidgetViewComponent, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPViewEntityDetailsCommand, AXP_APPEARANCE_SECTION_ORDER, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, AXP_CLASSIFICATION_SECTION_ORDER, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_BACKEND, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_MULTI_SOURCE_DEFINITION_PROVIDER, DEFAULT_COLUMN_ORDER, DEFAULT_PAIR_SPAN_RULES, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, ENTITY_FORM_ACTION_FIRST_STEP_CONTINUE, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, EntityBuilder, EntityDataAccessor, FILE_UPLOADER_TRACE_NS, TREE_CHILDREN_QUERY_TAKE, actionExists, applyDataSourcePagingWithoutLoad, attachmentFieldCount, attachmentNeedsHydration, attachmentsPlugin, attachmentsSemanticallyEqual, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, canPersistEntityListState, cloneLayoutArrays, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, commandMessageTextForError, committedAttachments, computeEntityAggregates, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, defaultCardLayoutMiddleware, defaultCardLayoutMiddlewareProvider, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, ensureHierarchicalRootFilter, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, eventDispatchMiddleware, fetchHydratedEntityAttachments, filterSortEntityRows, filterTouchesParentKey, findEntityListRowDataInTree, fingerprintAttachmentItem, fingerprintAttachments, formatLookupItemDisplay, formatLookupItemDisplayAsync, getDataSourcePageIndex, getEntityListRowId, getMasterInterfacePropertySortKey, hasFileUploaderTitleOrDescriptionFields, hydrateAttachmentFieldToFileList, isAXPMiddlewareAbortError, isAttachmentFieldPresentOnRow, isAttachmentListEntry, isAttachmentStorageRef, isCategoryEntity, isCategoryFilter, isFileListItem, isFileUploaderEditDialogAuto, isLazyAttachmentFieldPath, isLegacyEntityDataSelectorOptions, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, mapEntityStorageErrorToCommandResult, mapLegacyEntityDataSelectorOptions, normalizeEntityDataSelectorOptions, normalizeEntityFieldToFileList, normalizeEntityListPersistenceMode, normalizeListPaging, persistedAttachments, provideEntity, resetPagingForTreeChildrenLoad, resolveAttachmentFieldPath, resolveEntityAttachmentFieldNames, resolveEntityPluginDetailPageOrder, resolveFileUploaderEditDialog, resolveFileUploaderEntityScope, resolveLookupDisplayField, resolveLookupDisplayTemplate, restoreEntityListExpandedRows, runEntityQuery, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry };
26892
27052
  //# sourceMappingURL=acorex-platform-layout-entity.mjs.map