@acorex/platform 21.0.0-next.15 → 21.0.0-next.17

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.
@@ -1254,6 +1254,11 @@ declare class AXPCategoryTreeService {
1254
1254
  * Load root categories
1255
1255
  */
1256
1256
  loadRootCategories(treeData: CategoryTreeNodeData, config: CategoryTreeConfig): Promise<Record<string, unknown>[] | null>;
1257
+ /**
1258
+ * Fetches a single category item by ID. Uses byKey when available (full item with parent),
1259
+ * otherwise falls back to list query with filter so ancestor chains can be built.
1260
+ */
1261
+ fetchItemById(id: string, treeData: CategoryTreeNodeData, config: CategoryTreeConfig): Promise<Record<string, unknown> | null>;
1257
1262
  /**
1258
1263
  * Load children for a given node
1259
1264
  */
@@ -1341,6 +1346,8 @@ declare class AXPMiddlewareEntityStorageService<TKey = any, TDetailDto extends A
1341
1346
  private readonly backend;
1342
1347
  private readonly allMiddlewares;
1343
1348
  private readonly injector;
1349
+ /** In-flight read requests - identical parallel requests share one execution */
1350
+ private readonly inFlight;
1344
1351
  get dbName(): string;
1345
1352
  private filterMiddlewares;
1346
1353
  private compose;
@@ -1356,6 +1363,7 @@ declare class AXPMiddlewareEntityStorageService<TKey = any, TDetailDto extends A
1356
1363
  insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
1357
1364
  getAll(entityName: string): Promise<TListItemDto[]>;
1358
1365
  query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
1366
+ private runWithDedup;
1359
1367
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>, never>;
1360
1368
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>>;
1361
1369
  }
@@ -1411,6 +1419,8 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
1411
1419
  valueField: _angular_core.WritableSignal<string>;
1412
1420
  allowMultiple: _angular_core.WritableSignal<boolean>;
1413
1421
  selectedValues: _angular_core.WritableSignal<string[]>;
1422
+ /** Optional input for when popup passes selected values via inputs instead of data */
1423
+ selectedValuesInput: _angular_core.WritableSignal<string[]>;
1414
1424
  searchPlaceholder: _angular_core.WritableSignal<string>;
1415
1425
  excludedNodeId: _angular_core.WritableSignal<string | undefined>;
1416
1426
  searchWithChildren: _angular_core.WritableSignal<boolean>;
@@ -1437,8 +1447,19 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
1437
1447
  private relevantNodeIds;
1438
1448
  private expandedNodesBeforeSearch;
1439
1449
  private nodesExpandedDuringSearch;
1450
+ private initialExpandSyncDone;
1451
+ constructor();
1440
1452
  ngOnInit(): void;
1441
1453
  private initializeTree;
1454
+ /**
1455
+ * Called when popup data arrives after ngOnInit: load data, set selection, expand and sync.
1456
+ */
1457
+ private runInitialExpandAndSync;
1458
+ /**
1459
+ * Runs expand path + sync selection once the tree viewChild is available.
1460
+ * Uses retry loop so we don't run before the view has rendered the tree.
1461
+ */
1462
+ private runExpandAndSyncWhenTreeReady;
1442
1463
  /**
1443
1464
  * Handles search input value changes - Uses server-side search for efficiency and reliability
1444
1465
  */
@@ -1459,7 +1480,8 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
1459
1480
  */
1460
1481
  private collectChildrenRecursively;
1461
1482
  /**
1462
- * Fetches a single item by ID from the server
1483
+ * Fetches a single item by ID. Uses category tree service so byKey is used when available
1484
+ * (returns full item with parent/parentId for building ancestor chains).
1463
1485
  */
1464
1486
  private fetchItemById;
1465
1487
  /**
@@ -1535,6 +1557,8 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
1535
1557
  * This ensures parent nodes are loaded into the tree before selecting children.
1536
1558
  */
1537
1559
  private expandAncestorNodesInOrder;
1560
+ /** Waits until the node is expanded (tree has loaded children). Polls so deep paths load. */
1561
+ private waitForNodeExpanded;
1538
1562
  /**
1539
1563
  * Syncs selection state with the tree component.
1540
1564
  * Selects leaf nodes and manually updates parent states (indeterminate/selected).
@@ -1551,6 +1575,15 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
1551
1575
  * This is critical for pre-selected values in collapsed branches.
1552
1576
  */
1553
1577
  private loadMissingNodeData;
1578
+ /**
1579
+ * For each selected id, if cached item has no parent (e.g. batch query returned minimal fields),
1580
+ * re-fetch by id so we have parent/parentId for building ancestor chains.
1581
+ */
1582
+ private ensureParentDataInCache;
1583
+ /**
1584
+ * Resolves parent ID from node data: supports nested `parent` object or flat parentId/parentKey.
1585
+ */
1586
+ private getParentIdFromNodeData;
1554
1587
  /**
1555
1588
  * Marks nodes as selected in the tree structure based on selectedNodeIds.
1556
1589
  * This ensures pre-selected nodes appear selected when the tree is rendered.
@@ -1604,6 +1637,7 @@ declare class AXPEntityCategoryWidgetColumnComponent extends AXPColumnWidgetComp
1604
1637
  protected readonly entityDetailPopoverService: AXPEntityDetailPopoverService;
1605
1638
  protected readonly formatService: AXFormatService;
1606
1639
  protected readonly entityResolver: AXPEntityDefinitionRegistryService;
1640
+ private readonly categoryBatchResolver;
1607
1641
  private readonly rawValueSignal;
1608
1642
  set rawValueInput(value: any);
1609
1643
  protected entity: _angular_core.Signal<string>;
@@ -1628,6 +1662,12 @@ declare class AXPEntityCategoryWidgetColumnComponent extends AXPColumnWidgetComp
1628
1662
  protected joinPath(path: string[]): string;
1629
1663
  protected getItemId(item: any): string;
1630
1664
  protected getBreadcrumbPath(item: any): string;
1665
+ private resolveItemsWithPaths;
1666
+ /**
1667
+ * Build path from categories array when record has full chain (id, parentId, title).
1668
+ * Used when middleware enriches categories on create/update.
1669
+ */
1670
+ private buildItemWithPathFromChain;
1631
1671
  private extractItemWithPath;
1632
1672
  /**
1633
1673
  * Calculate the full path from root to the item.
@@ -2178,6 +2178,7 @@ declare class AXPEditFileUploaderCommand implements AXPCommand<{
2178
2178
  }[];
2179
2179
  excludePlugins?: string[];
2180
2180
  enableTitleDescription?: boolean;
2181
+ isNewFile?: boolean;
2181
2182
  }, AXPFileListItem> {
2182
2183
  private readonly layoutBuilder;
2183
2184
  private readonly translationService;
@@ -2190,6 +2191,7 @@ declare class AXPEditFileUploaderCommand implements AXPCommand<{
2190
2191
  }[];
2191
2192
  excludePlugins?: string[];
2192
2193
  enableTitleDescription?: boolean;
2194
+ isNewFile?: boolean;
2193
2195
  }): Promise<AXPExecuteCommandResult<AXPFileListItem>>;
2194
2196
  private showEditDialog;
2195
2197
  /**
@@ -2276,6 +2278,7 @@ declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent
2276
2278
  protected readonly fileService: AXFileService;
2277
2279
  private readonly hooks;
2278
2280
  private readonly fileActionsService;
2281
+ private readonly commandExecutor;
2279
2282
  protected multiple: _angular_core.Signal<boolean>;
2280
2283
  private readonly acceptOverride;
2281
2284
  protected accept: _angular_core.Signal<string>;
@@ -2287,6 +2290,8 @@ declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent
2287
2290
  protected excludePlugins: _angular_core.Signal<string[]>;
2288
2291
  protected fileEditable: _angular_core.Signal<boolean>;
2289
2292
  protected enableTitleDescription: _angular_core.Signal<boolean>;
2293
+ /** When true, show the edit dialog (name/title/description + plugin hooks) after each file select; otherwise add to list and user edits via Edit button. */
2294
+ protected showEditDialogAfterSelect: _angular_core.Signal<boolean>;
2290
2295
  protected readonly: _angular_core.Signal<boolean>;
2291
2296
  protected maxFileSize: _angular_core.Signal<number>;
2292
2297
  protected isDragOver: _angular_core.WritableSignal<boolean>;
@@ -2297,8 +2302,13 @@ declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent
2297
2302
  private configureFromHooks;
2298
2303
  /**
2299
2304
  * Process files from various sources (file picker, drag-drop, etc.)
2305
+ * When showEditDialogAfterSelect is true, the edit dialog (with plugin hooks) is shown per file before adding; otherwise files are added and user can edit via Edit button.
2300
2306
  */
2301
2307
  private processFiles;
2308
+ /**
2309
+ * Show edit dialog per file and add only those submitted. Used when showEditDialogAfterSelect is true (both from zone and from dropdown actions).
2310
+ */
2311
+ private addFilesWithEditDialogAsync;
2302
2312
  protected files: _angular_core.Signal<AXPFileListItem[]>;
2303
2313
  handleFileRemove(file: AXPFileListItem): void;
2304
2314
  removeFile(file: AXPFileListItem): void;
@@ -2307,7 +2317,8 @@ declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent
2307
2317
  */
2308
2318
  handleFileRevert(file: AXPFileListItem): void;
2309
2319
  /**
2310
- * Handle file rename action
2320
+ * Handle file rename action. Persists name/title/description to file storage immediately when edited
2321
+ * so they are saved even if the entity payload does not carry these fields.
2311
2322
  */
2312
2323
  handleFileRename(file: AXPFileListItem): void;
2313
2324
  clear(): void;
@@ -2341,6 +2352,7 @@ interface AXPFileUploaderWidgetDesignerOptions {
2341
2352
  fileEditable?: boolean;
2342
2353
  maxFileSize?: number;
2343
2354
  enableTitleDescription?: boolean;
2355
+ showEditDialogAfterSelect?: boolean;
2344
2356
  }
2345
2357
  interface AXPFileUploaderWidgetViewOptions {
2346
2358
  }
@@ -2356,6 +2368,7 @@ interface AXPFileUploaderWidgetEditOptions {
2356
2368
  fileEditable?: boolean;
2357
2369
  maxFileSize?: number;
2358
2370
  enableTitleDescription?: boolean;
2371
+ showEditDialogAfterSelect?: boolean;
2359
2372
  }
2360
2373
  interface AXPFileUploaderWidgetColumnOptions {
2361
2374
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/platform",
3
- "version": "21.0.0-next.15",
3
+ "version": "21.0.0-next.17",
4
4
  "peerDependencies": {
5
5
  "@acorex/cdk": "^19.0.0 || ^20.0.0 || ^21.0.0-next.0",
6
6
  "@acorex/core": "^19.0.0 || ^20.0.0 || ^21.0.0-next.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-platform-common-common-settings.provider-BwBLG0Hl.mjs","sources":["../tmp-esm2022/common/lib/configs/common-settings.provider.js"],"sourcesContent":["import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXPCommonSettings } from './common-settings.key';\nimport * as i0 from \"@angular/core\";\nexport class AXPCommonSettingProvider {\n constructor(injector) {\n this.injector = injector;\n this.translateService = this.injector.get(AXTranslationService);\n }\n async provide(context) {\n const trans = async (key) => await this.translateService.translateAsync(`@general:settings.${key}`);\n // Define the 'General Settings' group\n context\n .group('general')\n ?.addSection('notifications', await trans('general.notifications.title'), await trans('general.notifications.description'))\n // Add the 'Enable Operation Toasts' setting\n .addSetting({\n key: AXPCommonSettings.EnableOperationToasts,\n title: await trans('general.notifications.enable-operation-toasts.title'),\n scope: AXPPlatformScope.User,\n isInherited: true,\n defaultValue: true,\n widget: {\n type: AXPWidgetsCatalog.toggle,\n options: {\n label: null,\n },\n },\n description: await trans('general.notifications.enable-operation-toasts.description'),\n })\n // End the 'Notifications' section\n .endSection()\n .addSection('entity', await trans('general.entity.title'), await trans('general.entity.description'))\n // Add the 'Enable Operation Toasts' setting\n .addSetting({\n key: AXPCommonSettings.EntityFilterApplyMode,\n title: await trans('general.entity.filter-apply-mode.title'),\n scope: AXPPlatformScope.User,\n isInherited: true,\n defaultValue: 'auto',\n widget: {\n type: AXPWidgetsCatalog.select,\n options: {\n label: null,\n valueField: 'value',\n textField: 'text',\n dataSource: [\n { value: 'auto', text: await trans('general.entity.filter-apply-mode.options.auto') },\n { value: 'manual', text: await trans('general.entity.filter-apply-mode.options.manual') },\n ],\n },\n },\n description: await trans('general.entity.filter-apply-mode.description'),\n })\n // End the 'Entity Settings' section\n .endSection()\n // End the 'General Settings' group\n .endGroup();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPCommonSettingProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPCommonSettingProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPCommonSettingProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNldHRpbmdzLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb21tb24vc3JjL2xpYi9jb25maWdzL2NvbW1vbi1zZXR0aW5ncy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHMUQsTUFBTSxPQUFPLHdCQUF3QjtJQUduQyxZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRnJCLHFCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFbkMsQ0FBQztJQUUxQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQTRDO1FBQ3hELE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUU1RyxzQ0FBc0M7UUFDdEMsT0FBTzthQUNKLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDakIsRUFBRSxVQUFVLENBQ1YsZUFBZSxFQUNmLE1BQU0sS0FBSyxDQUFDLDZCQUE2QixDQUFDLEVBQzFDLE1BQU0sS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQ2pEO1lBQ0QsNENBQTRDO2FBQzNDLFVBQVUsQ0FBQztZQUNWLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxxQkFBcUI7WUFDNUMsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDLHFEQUFxRCxDQUFDO1lBQ3pFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJO1lBQzVCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtnQkFDOUIsT0FBTyxFQUFFO29CQUNQLEtBQUssRUFBRSxJQUFJO2lCQUNaO2FBQ0Y7WUFFRCxXQUFXLEVBQUUsTUFBTSxLQUFLLENBQUMsMkRBQTJELENBQUM7U0FDdEYsQ0FBQztZQUVGLGtDQUFrQzthQUNqQyxVQUFVLEVBQUU7YUFDWixVQUFVLENBQUMsUUFBUSxFQUFFLE1BQU0sS0FBSyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUNyRyw0Q0FBNEM7YUFDM0MsVUFBVSxDQUFDO1lBQ1YsR0FBRyxFQUFFLGlCQUFpQixDQUFDLHFCQUFxQjtZQUM1QyxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUMsd0NBQXdDLENBQUM7WUFDNUQsS0FBSyxFQUFFLGdCQUFnQixDQUFDLElBQUk7WUFDNUIsV0FBVyxFQUFFLElBQUk7WUFDakIsWUFBWSxFQUFFLE1BQU07WUFDcEIsTUFBTSxFQUFFO2dCQUNOLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxNQUFNO2dCQUM5QixPQUFPLEVBQUU7b0JBQ1AsS0FBSyxFQUFFLElBQUk7b0JBQ1gsVUFBVSxFQUFFLE9BQU87b0JBQ25CLFNBQVMsRUFBRSxNQUFNO29CQUNqQixVQUFVLEVBQUU7d0JBQ1YsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxFQUFFO3dCQUNyRixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sS0FBSyxDQUFDLGlEQUFpRCxDQUFDLEVBQUU7cUJBQzFGO2lCQUNGO2FBQ0Y7WUFFRCxXQUFXLEVBQUUsTUFBTSxLQUFLLENBQUMsOENBQThDLENBQUM7U0FDekUsQ0FBQztZQUVGLG9DQUFvQzthQUNuQyxVQUFVLEVBQUU7WUFDYixtQ0FBbUM7YUFDbEMsUUFBUSxFQUFFLENBQUM7SUFDaEIsQ0FBQzsrR0EvRFUsd0JBQXdCO21IQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBQbGF0Zm9ybVNjb3BlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUFdpZGdldHNDYXRhbG9nIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFNldHRpbmdEZWZpbml0aW9uUHJvdmlkZXIsIEFYUFNldHRpbmdEZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0IH0gZnJvbSAnLi4vc2V0dGluZ3MnO1xuaW1wb3J0IHsgQVhQQ29tbW9uU2V0dGluZ3MgfSBmcm9tICcuL2NvbW1vbi1zZXR0aW5ncy5rZXknO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhQQ29tbW9uU2V0dGluZ1Byb3ZpZGVyIGltcGxlbWVudHMgQVhQU2V0dGluZ0RlZmluaXRpb25Qcm92aWRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBhc3luYyBwcm92aWRlKGNvbnRleHQ6IEFYUFNldHRpbmdEZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdHJhbnMgPSBhc3luYyAoa2V5OiBzdHJpbmcpID0+IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYyhgQGdlbmVyYWw6c2V0dGluZ3MuJHtrZXl9YCk7XG5cbiAgICAvLyBEZWZpbmUgdGhlICdHZW5lcmFsIFNldHRpbmdzJyBncm91cFxuICAgIGNvbnRleHRcbiAgICAgIC5ncm91cCgnZ2VuZXJhbCcpXG4gICAgICA/LmFkZFNlY3Rpb24oXG4gICAgICAgICdub3RpZmljYXRpb25zJyxcbiAgICAgICAgYXdhaXQgdHJhbnMoJ2dlbmVyYWwubm90aWZpY2F0aW9ucy50aXRsZScpLFxuICAgICAgICBhd2FpdCB0cmFucygnZ2VuZXJhbC5ub3RpZmljYXRpb25zLmRlc2NyaXB0aW9uJyksXG4gICAgICApXG4gICAgICAvLyBBZGQgdGhlICdFbmFibGUgT3BlcmF0aW9uIFRvYXN0cycgc2V0dGluZ1xuICAgICAgLmFkZFNldHRpbmcoe1xuICAgICAgICBrZXk6IEFYUENvbW1vblNldHRpbmdzLkVuYWJsZU9wZXJhdGlvblRvYXN0cyxcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRyYW5zKCdnZW5lcmFsLm5vdGlmaWNhdGlvbnMuZW5hYmxlLW9wZXJhdGlvbi10b2FzdHMudGl0bGUnKSxcbiAgICAgICAgc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUuVXNlcixcbiAgICAgICAgaXNJbmhlcml0ZWQ6IHRydWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgd2lkZ2V0OiB7XG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVzY3JpcHRpb246IGF3YWl0IHRyYW5zKCdnZW5lcmFsLm5vdGlmaWNhdGlvbnMuZW5hYmxlLW9wZXJhdGlvbi10b2FzdHMuZGVzY3JpcHRpb24nKSxcbiAgICAgIH0pXG5cbiAgICAgIC8vIEVuZCB0aGUgJ05vdGlmaWNhdGlvbnMnIHNlY3Rpb25cbiAgICAgIC5lbmRTZWN0aW9uKClcbiAgICAgIC5hZGRTZWN0aW9uKCdlbnRpdHknLCBhd2FpdCB0cmFucygnZ2VuZXJhbC5lbnRpdHkudGl0bGUnKSwgYXdhaXQgdHJhbnMoJ2dlbmVyYWwuZW50aXR5LmRlc2NyaXB0aW9uJykpXG4gICAgICAvLyBBZGQgdGhlICdFbmFibGUgT3BlcmF0aW9uIFRvYXN0cycgc2V0dGluZ1xuICAgICAgLmFkZFNldHRpbmcoe1xuICAgICAgICBrZXk6IEFYUENvbW1vblNldHRpbmdzLkVudGl0eUZpbHRlckFwcGx5TW9kZSxcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRyYW5zKCdnZW5lcmFsLmVudGl0eS5maWx0ZXItYXBwbHktbW9kZS50aXRsZScpLFxuICAgICAgICBzY29wZTogQVhQUGxhdGZvcm1TY29wZS5Vc2VyLFxuICAgICAgICBpc0luaGVyaXRlZDogdHJ1ZSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAnYXV0bycsXG4gICAgICAgIHdpZGdldDoge1xuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICAgIHZhbHVlRmllbGQ6ICd2YWx1ZScsXG4gICAgICAgICAgICB0ZXh0RmllbGQ6ICd0ZXh0JyxcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IFtcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2F1dG8nLCB0ZXh0OiBhd2FpdCB0cmFucygnZ2VuZXJhbC5lbnRpdHkuZmlsdGVyLWFwcGx5LW1vZGUub3B0aW9ucy5hdXRvJykgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ21hbnVhbCcsIHRleHQ6IGF3YWl0IHRyYW5zKCdnZW5lcmFsLmVudGl0eS5maWx0ZXItYXBwbHktbW9kZS5vcHRpb25zLm1hbnVhbCcpIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVzY3JpcHRpb246IGF3YWl0IHRyYW5zKCdnZW5lcmFsLmVudGl0eS5maWx0ZXItYXBwbHktbW9kZS5kZXNjcmlwdGlvbicpLFxuICAgICAgfSlcblxuICAgICAgLy8gRW5kIHRoZSAnRW50aXR5IFNldHRpbmdzJyBzZWN0aW9uXG4gICAgICAuZW5kU2VjdGlvbigpXG4gICAgICAvLyBFbmQgdGhlICdHZW5lcmFsIFNldHRpbmdzJyBncm91cFxuICAgICAgLmVuZEdyb3VwKCk7XG4gIH1cbn1cbiJdfQ=="],"names":[],"mappings":"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"}