@wavemaker/app-ng-runtime 11.15.4-rc.250 → 11.15.5-1.256

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 (53) hide show
  1. package/components/base/bundles/index.umd.js +4 -13
  2. package/components/base/esm2022/utils/widget-utils.mjs +5 -4
  3. package/components/base/esm2022/widgets/common/base/base.component.mjs +1 -11
  4. package/components/base/fesm2022/index.mjs +4 -13
  5. package/components/base/fesm2022/index.mjs.map +1 -1
  6. package/components/containers/tabs/bundles/index.umd.js +1 -1
  7. package/components/containers/tabs/esm2022/tabs.animator.mjs +2 -2
  8. package/components/containers/tabs/fesm2022/index.mjs +1 -1
  9. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  10. package/components/data/form/bundles/index.umd.js +6 -3
  11. package/components/data/form/esm2022/form.component.mjs +5 -2
  12. package/components/data/form/esm2022/live-form/live-form.directive.mjs +3 -3
  13. package/components/data/form/fesm2022/index.mjs +6 -3
  14. package/components/data/form/fesm2022/index.mjs.map +1 -1
  15. package/components/data/form/live-form/live-form.directive.d.ts +1 -1
  16. package/components/data/list/bundles/index.umd.js +6 -0
  17. package/components/data/list/esm2022/list.component.mjs +7 -1
  18. package/components/data/list/fesm2022/index.mjs +6 -0
  19. package/components/data/list/fesm2022/index.mjs.map +1 -1
  20. package/components/data/pagination/bundles/index.umd.js +45 -7
  21. package/components/data/pagination/esm2022/pagination.component.mjs +46 -8
  22. package/components/data/pagination/fesm2022/index.mjs +45 -7
  23. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  24. package/components/data/pagination/pagination.component.d.ts +1 -0
  25. package/components/data/table/bundles/index.umd.js +228 -20
  26. package/components/data/table/esm2022/table-column/table-column.directive.mjs +6 -1
  27. package/components/data/table/esm2022/table-cud.directive.mjs +14 -3
  28. package/components/data/table/esm2022/table-filter.directive.mjs +6 -1
  29. package/components/data/table/esm2022/table.component.mjs +206 -19
  30. package/components/data/table/fesm2022/index.mjs +229 -21
  31. package/components/data/table/fesm2022/index.mjs.map +1 -1
  32. package/components/data/table/table.component.d.ts +16 -1
  33. package/core/bundles/index.umd.js +7 -1
  34. package/core/esm2022/utils/dom.mjs +4 -2
  35. package/core/esm2022/utils/utils.mjs +5 -1
  36. package/core/fesm2022/index.mjs +7 -1
  37. package/core/fesm2022/index.mjs.map +1 -1
  38. package/npm-shrinkwrap.json +2 -2
  39. package/package-lock.json +2 -2
  40. package/package.json +1 -1
  41. package/runtime/base/bundles/index.umd.js +45 -12
  42. package/runtime/base/components/app-component/app.component.d.ts +1 -1
  43. package/runtime/base/esm2022/components/app-component/app.component.mjs +23 -12
  44. package/runtime/base/esm2022/guards/role.guard.mjs +2 -2
  45. package/runtime/base/esm2022/services/app.manager.service.mjs +23 -1
  46. package/runtime/base/fesm2022/index.mjs +45 -12
  47. package/runtime/base/fesm2022/index.mjs.map +1 -1
  48. package/runtime/base/services/app.manager.service.d.ts +5 -0
  49. package/scripts/datatable/datatable.js +282 -44
  50. package/transpiler/bundles/index.umd.js +3 -0
  51. package/transpiler/esm2022/build.mjs +4 -1
  52. package/transpiler/fesm2022/index.mjs +3 -0
  53. package/transpiler/fesm2022/index.mjs.map +1 -1
@@ -66,6 +66,9 @@ export declare class TableComponent extends StylableComponent implements AfterCo
66
66
  viewlessmessage: any;
67
67
  showviewlessbutton: boolean;
68
68
  _triggeredByUser: any;
69
+ _isInlineEditSave: any;
70
+ /** Covers async navigator/dataset updates after inline/quickedit save (wm.Variable). */
71
+ private _modelVarEditSoftRefreshActiveUntil;
69
72
  isGridEditMode: any;
70
73
  loadingdatamsg: any;
71
74
  multiselect: any;
@@ -236,6 +239,10 @@ export declare class TableComponent extends StylableComponent implements AfterCo
236
239
  viewlessmessage: string;
237
240
  loadingdatamsg: string;
238
241
  isNextPageData: any;
242
+ enableSort: boolean;
243
+ multiselect: boolean;
244
+ showRadioColumn: boolean;
245
+ enableColumnSelection: boolean;
239
246
  multiselecttitle: string;
240
247
  multiselectarialabel: string;
241
248
  radioselecttitle: string;
@@ -295,7 +302,10 @@ export declare class TableComponent extends StylableComponent implements AfterCo
295
302
  registerColNgClassWatcher: (rowData: any, colDef: any, rowIndex: any, colIndex: any, summaryRow: any) => void;
296
303
  registerCollapseOrExpandTitleWatch: (expr: any, rowData: any, index: any, titleName: any, element: any) => void;
297
304
  clearCustomExpression: () => void;
305
+ updateCustomExpressionContexts: (preparedData: any) => void;
298
306
  clearRowDetailExpression: () => void;
307
+ invalidateRowDetailCache: (preparedData: any) => void;
308
+ refreshSelectedItems: () => void;
299
309
  generateCustomExpressions: (rowData: any, index: any, summaryRow?: any) => void;
300
310
  generateRowExpansionCell: (rowData: any, index: any) => void;
301
311
  getRowExpansionAction: (index: any) => any;
@@ -331,6 +341,10 @@ export declare class TableComponent extends StylableComponent implements AfterCo
331
341
  applyValidations: (col: any, alwaysNewRow: any) => void;
332
342
  removeValidations: (alwaysNewRow: any) => void;
333
343
  };
344
+ /** wm.Variable + inline or quickedit (editmode is string from markup; normalize case). */
345
+ private isModelVariableInlineOrQuickEdit;
346
+ /** True while an inline/quickedit row save is updating the grid (incl. delayed navigator emit). */
347
+ private shouldSoftRefreshAfterModelVarRowSave;
334
348
  private _gridData;
335
349
  private _selectedItemsExist;
336
350
  set gridData(newValue: any);
@@ -381,7 +395,8 @@ export declare class TableComponent extends StylableComponent implements AfterCo
381
395
  setDefaultPageSize(nv: any): void;
382
396
  isPageSizeOptionsChanged(): boolean;
383
397
  selectPageSize(pagesize: number): void;
384
- sanitizeCommaSeparatedIntegers(input: string): string;
398
+ sanitizeCommaSeparatedIntegers(input: any): string;
399
+ getNormalizedPageSizeOptionsArray(input: any): number[];
385
400
  onDataSourceChange(): void;
386
401
  private refreshRowFilterDataFromDataset;
387
402
  private clearActionRowVars;
@@ -1503,7 +1503,9 @@
1503
1503
  const switchClass = (node, toAdd = '', toRemove = '', sync) => {
1504
1504
  // After NG15 upgrade ng-invalid class is added even the field is valid, so we are removing the ng-invalid manually
1505
1505
  const isNgUntouchedValid = node.classList.contains('ng-untouched') && node.classList.contains('ng-valid');
1506
- if (isNgUntouchedValid && toAdd.includes('ng-untouched') && toAdd.includes('ng-invalid')) {
1506
+ // Detect Angular's initial form state where the field has 'ng-invalid', 'ng-pristine', and 'ng-untouched' before user interaction.
1507
+ const isInitialInvalidState = toAdd.includes('ng-untouched') && toAdd.includes('ng-pristine') && toAdd.includes('ng-invalid');
1508
+ if ((isNgUntouchedValid && toAdd.includes('ng-untouched') && toAdd.includes('ng-invalid')) || isInitialInvalidState) {
1507
1509
  toAdd = toAdd.replace('ng-invalid', '');
1508
1510
  }
1509
1511
  removeClass(node, toRemove, sync);
@@ -3832,10 +3834,14 @@
3832
3834
  const getDatasourceFromExpr = (expr, scope) => {
3833
3835
  const isBoundToVariable = lodashEs.startsWith(expr, 'Variables.');
3834
3836
  const isBoundToWidget = lodashEs.startsWith(expr, 'Widgets.');
3837
+ const isBoundToActivePageVar = lodashEs.startsWith(expr, 'App.activePage.Variables.');
3835
3838
  const parts = expr.split('.');
3836
3839
  if (isBoundToVariable) {
3837
3840
  return lodashEs.get(scope.viewParent.Variables, parts[1]);
3838
3841
  }
3842
+ if (isBoundToActivePageVar) {
3843
+ return lodashEs.get(scope.viewParent?.App?.activePage?.Variables, parts[3]);
3844
+ }
3839
3845
  if (isBoundToWidget) {
3840
3846
  const widgetScope = lodashEs.get(scope.viewParent.Widgets, parts[1]);
3841
3847
  const widgetDatasetBoundExpr = widgetScope.$attrs.get('datasetboundexpr');
@@ -46,7 +46,9 @@ export const addClass = (node, nv, sync) => {
46
46
  export const switchClass = (node, toAdd = '', toRemove = '', sync) => {
47
47
  // After NG15 upgrade ng-invalid class is added even the field is valid, so we are removing the ng-invalid manually
48
48
  const isNgUntouchedValid = node.classList.contains('ng-untouched') && node.classList.contains('ng-valid');
49
- if (isNgUntouchedValid && toAdd.includes('ng-untouched') && toAdd.includes('ng-invalid')) {
49
+ // Detect Angular's initial form state where the field has 'ng-invalid', 'ng-pristine', and 'ng-untouched' before user interaction.
50
+ const isInitialInvalidState = toAdd.includes('ng-untouched') && toAdd.includes('ng-pristine') && toAdd.includes('ng-invalid');
51
+ if ((isNgUntouchedValid && toAdd.includes('ng-untouched') && toAdd.includes('ng-invalid')) || isInitialInvalidState) {
50
52
  toAdd = toAdd.replace('ng-invalid', '');
51
53
  }
52
54
  removeClass(node, toRemove, sync);
@@ -118,4 +120,4 @@ export const toDimension = (v) => {
118
120
  }
119
121
  return v;
120
122
  };
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvdXRpbHMvZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztBQUMxQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFFckIsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUU7SUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFpQixFQUFFLE1BQW1CLEVBQUUsSUFBYyxFQUFFLEVBQUU7SUFDakYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBaUIsRUFBRSxHQUFnQixFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ2hGLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxRCxJQUFJLENB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RUYsb0VBQW9FO0FBQ3BFLDZCQUE2QjtBQUM3QixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFrQixFQUFFLEVBQUU7SUFDOUMsYUFBYTtJQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDVixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgJFJBRiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7XG5jb25zdCAkUkFGUXVldWUgPSBbXTtcblxuY29uc3QgaW52b2tlTGF0ZXIgPSBmbiA9PiB7XG4gICAgaWYgKCEkUkFGUXVldWUubGVuZ3RoKSB7XG4gICAgICAgICRSQUYoKCkgPT4ge1xuICAgICAgICAgICAgJFJBRlF1ZXVlLmZvckVhY2goZiA9PiBmKCkpO1xuICAgICAgICAgICAgJFJBRlF1ZXVlLmxlbmd0aCA9IDA7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAkUkFGUXVldWUucHVzaChmbik7XG59O1xuXG5leHBvcnQgY29uc3QgYXBwZW5kTm9kZSA9IChub2RlOiBIVE1MRWxlbWVudCwgcGFyZW50OiBIVE1MRWxlbWVudCwgc3luYz86IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCB0YXNrID0gKCkgPT4gcGFyZW50LmFwcGVuZENoaWxkKG5vZGUpO1xuICAgIHN5bmMgPyB0YXNrKCkgOiBpbnZva2VMYXRlcih0YXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRCZWZvcmUgPSAobm9kZTogSFRNTEVsZW1lbnQsIHJlZjogSFRNTEVsZW1lbnQsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IHJlZi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCByZWYpO1xuICAgIHN5bmMgPyB0YXNrKCkgOiBpbnZva2VMYXRlcih0YXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRBZnRlciA9IChub2RlOiBIVE1MRWxlbWVudCwgcmVmOiBIVE1MRWxlbWVudCwgc3luYz86IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCB0YXNrID0gKCkgPT4gcmVmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIHJlZi5uZXh0U2libGluZyk7XG4gICAgc3luYyA/IHRhc2soKSA6IGludm9rZUxhdGVyKHRhc2spO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZU5vZGUgPSAobm9kZTogSFRNTEVsZW1lbnQsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IG5vZGUucmVtb3ZlKCk7XG4gICAgc3luYyA/IHRhc2soKSA6IGludm9rZUxhdGVyKHRhc2spO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUNsYXNzID0gKG5vZGU6IEhUTUxFbGVtZW50LCBvdjogc3RyaW5nLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIG92ID0gb3YgfHwgJyc7XG4gICAgY29uc3QgdGFzayA9IGMgPT4gbm9kZS5jbGFzc0xpc3QucmVtb3ZlKGMpO1xuICAgIG92LnNwbGl0KCcgJykuZm9yRWFjaChjID0+IHtcbiAgICAgICAgaWYgKGMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzeW5jID8gdGFzayhjKSA6IGludm9rZUxhdGVyKCgpID0+IHRhc2soYykpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkQ2xhc3MgPSAobm9kZTogSFRNTEVsZW1lbnQsIG52OiBzdHJpbmcsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgbnYgPSBudiB8fCAnJztcbiAgICBjb25zdCB0YXNrID0gYyA9PiBub2RlLmNsYXNzTGlzdC5hZGQoYyk7XG4gICAgbnYuc3BsaXQoJyAnKS5mb3JFYWNoKGMgPT4ge1xuICAgICAgICBpZiAoYy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHN5bmMgPyB0YXNrKGMpIDogaW52b2tlTGF0ZXIoKCkgPT4gdGFzayhjKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzd2l0Y2hDbGFzcyA9IChub2RlOiBIVE1MRWxlbWVudCwgdG9BZGQ6IHN0cmluZyA9ICcnLCB0b1JlbW92ZTogc3RyaW5nID0gJycsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgLy8gQWZ0ZXIgTkcxNSB1cGdyYWRlIG5nLWludmFsaWQgY2xhc3MgaXMgYWRkZWQgZXZlbiB0aGUgZmllbGQgaXMgdmFsaWQsIHNvIHdlIGFyZSByZW1vdmluZyB0aGUgbmctaW52YWxpZCBtYW51YWxseVxuICAgIGNvbnN0IGlzTmdVbnRvdWNoZWRWYWxpZCA9IG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy11bnRvdWNoZWQnKSAmJiBub2RlLmNsYXNzTGlzdC5jb250YWlucygnbmctdmFsaWQnKTtcbiAgICBpZihpc05nVW50b3VjaGVkVmFsaWQgJiYgdG9BZGQuaW5jbHVkZXMoJ25nLXVudG91Y2hlZCcpICYmIHRvQWRkLmluY2x1ZGVzKCduZy1pbnZhbGlkJykpIHtcbiAgICAgICAgdG9BZGQgPSB0b0FkZC5yZXBsYWNlKCduZy1pbnZhbGlkJywgJycpO1xuICAgIH1cbiAgICByZW1vdmVDbGFzcyhub2RlLCB0b1JlbW92ZSwgc3luYyk7XG4gICAgYWRkQ2xhc3Mobm9kZSwgdG9BZGQsIHN5bmMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZ2dsZUNsYXNzID0gKG5vZGU6IEhUTUxFbGVtZW50LCBjbHM6IHN0cmluZywgY29uZGl0aW9uOiBib29sZWFuLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgYWRkQ2xhc3Mobm9kZSwgY2xzLCBzeW5jKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZW1vdmVDbGFzcyhub2RlLCBjbHMsIHN5bmMpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDU1MgPSAobm9kZTogSFRNTEVsZW1lbnQsIGNzc05hbWU6IHN0cmluZywgdmFsPzogc3RyaW5nIHwgbnVtYmVyLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlLnN0eWxlW2Nzc05hbWVdID0gdmFsO1xuICAgIHN5bmMgPyB0YXNrKCkgOiBpbnZva2VMYXRlcih0YXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDU1NGcm9tT2JqID0gKG5vZGU6IEhUTUxFbGVtZW50LCBjc3NPYmo6IGFueSwgc3luYz86IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY3NzT2JqIHx8IHt9KTtcbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHNldENTUyhub2RlLCBrZXksIGNzc09ialtrZXldLCBzeW5jKSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UHJvcGVydHkgPSAobm9kZTogSFRNTEVsZW1lbnQsIHByb3BOYW1lOiBzdHJpbmcsIHZhbDogYW55LCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlW3Byb3BOYW1lXSA9IHZhbDtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0QXR0ciA9IChub2RlOiBIVE1MRWxlbWVudCwgYXR0ck5hbWU6IHN0cmluZywgdmFsOiBhbnksIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgdGFiaW5kZXggc3BlY2lmaWNhbGx5IC0gZW5zdXJlIGl0J3MgYSB2YWxpZCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gc3RyaW5nLCBoYW5kbGluZyAwLCBudWxsLCB1bmRlZmluZWQsIGFuZCBOYU5cbiAgICAgICAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkIHx8ICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWwpKSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIFN0cmluZyh2YWwpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJOYW1lLCB2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0SHRtbCA9IChub2RlOiBIVE1MRWxlbWVudCwgaHRtbDogc3RyaW5nLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlLmlubmVySFRNTCA9IGh0bWw7XG4gICAgc3luYyA/IHRhc2soKSA6IGludm9rZUxhdGVyKHRhc2spO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUF0dHIgPSAobm9kZTogSFRNTEVsZW1lbnQsIGF0dHJOYW1lOiBzdHJpbmcsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKTtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRWxlbWVudCA9IChub2RlVHlwZTogc3RyaW5nLCBhdHRyczogYW55LCBzeW5jPzogYm9vbGVhbik6IEhUTUxFbGVtZW50ID0+IHtcbiAgICBjb25zdCBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChub2RlVHlwZSk7XG5cbiAgICBpZiAoYXR0cnMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoYXR0cnMpLmZvckVhY2goYXR0ck5hbWUgPT4ge1xuICAgICAgICAgICAgc2V0QXR0cihub2RlLCBhdHRyTmFtZSwgYXR0cnNbYXR0ck5hbWVdLCBzeW5jKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xufTtcblxuLy8gZm9yIHdpZHRoIGFuZCBoZWlnaHQgaWYgYSBudW1lcmljIHZhbHVlIGlzIHNwZWNpZmllZCByZXR1cm4gaW4gcHhcbi8vIGVsc2UgcmV0dXJuIHRoZSBzYW1lIHZhbHVlXG5leHBvcnQgY29uc3QgdG9EaW1lbnNpb24gPSAodjogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh2ID09ICt2KSB7XG4gICAgICAgIHJldHVybiBgJHt2fXB4YDtcbiAgICB9XG4gICAgcmV0dXJuIHY7XG59O1xuIl19
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvdXRpbHMvZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztBQUMxQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFFckIsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUU7SUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFpQixFQUFFLE1BQW1CLEVBQUUsSUFBYyxFQUFFLEVBQUU7SUFDakYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBaUIsRUFBRSxHQUFnQixFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ2hGLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxRCxJQUFJLENB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QUMsUUFBUSxDQUFDLEVBQUU7WUFDbEMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLG9FQUFvRTtBQUNwRSw2QkFBNkI7QUFDN0IsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBa0IsRUFBRSxFQUFFO0lBQzlDLGFBQWE7SUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1YsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNiLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0ICRSQUYgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lO1xuY29uc3QgJFJBRlF1ZXVlID0gW107XG5cbmNvbnN0IGludm9rZUxhdGVyID0gZm4gPT4ge1xuICAgIGlmICghJFJBRlF1ZXVlLmxlbmd0aCkge1xuICAgICAgICAkUkFGKCgpID0+IHtcbiAgICAgICAgICAgICRSQUZRdWV1ZS5mb3JFYWNoKGYgPT4gZigpKTtcbiAgICAgICAgICAgICRSQUZRdWV1ZS5sZW5ndGggPSAwO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgJFJBRlF1ZXVlLnB1c2goZm4pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFwcGVuZE5vZGUgPSAobm9kZTogSFRNTEVsZW1lbnQsIHBhcmVudDogSFRNTEVsZW1lbnQsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IHBhcmVudC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0QmVmb3JlID0gKG5vZGU6IEhUTUxFbGVtZW50LCByZWY6IEhUTUxFbGVtZW50LCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiByZWYucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgcmVmKTtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0QWZ0ZXIgPSAobm9kZTogSFRNTEVsZW1lbnQsIHJlZjogSFRNTEVsZW1lbnQsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IHJlZi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCByZWYubmV4dFNpYmxpbmcpO1xuICAgIHN5bmMgPyB0YXNrKCkgOiBpbnZva2VMYXRlcih0YXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVOb2RlID0gKG5vZGU6IEhUTUxFbGVtZW50LCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlLnJlbW92ZSgpO1xuICAgIHN5bmMgPyB0YXNrKCkgOiBpbnZva2VMYXRlcih0YXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVDbGFzcyA9IChub2RlOiBIVE1MRWxlbWVudCwgb3Y6IHN0cmluZywgc3luYz86IGJvb2xlYW4pID0+IHtcbiAgICBvdiA9IG92IHx8ICcnO1xuICAgIGNvbnN0IHRhc2sgPSBjID0+IG5vZGUuY2xhc3NMaXN0LnJlbW92ZShjKTtcbiAgICBvdi5zcGxpdCgnICcpLmZvckVhY2goYyA9PiB7XG4gICAgICAgIGlmIChjLmxlbmd0aCkge1xuICAgICAgICAgICAgc3luYyA/IHRhc2soYykgOiBpbnZva2VMYXRlcigoKSA9PiB0YXNrKGMpKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZENsYXNzID0gKG5vZGU6IEhUTUxFbGVtZW50LCBudjogc3RyaW5nLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIG52ID0gbnYgfHwgJyc7XG4gICAgY29uc3QgdGFzayA9IGMgPT4gbm9kZS5jbGFzc0xpc3QuYWRkKGMpO1xuICAgIG52LnNwbGl0KCcgJykuZm9yRWFjaChjID0+IHtcbiAgICAgICAgaWYgKGMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzeW5jID8gdGFzayhjKSA6IGludm9rZUxhdGVyKCgpID0+IHRhc2soYykpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc3dpdGNoQ2xhc3MgPSAobm9kZTogSFRNTEVsZW1lbnQsIHRvQWRkOiBzdHJpbmcgPSAnJywgdG9SZW1vdmU6IHN0cmluZyA9ICcnLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIC8vIEFmdGVyIE5HMTUgdXBncmFkZSBuZy1pbnZhbGlkIGNsYXNzIGlzIGFkZGVkIGV2ZW4gdGhlIGZpZWxkIGlzIHZhbGlkLCBzbyB3ZSBhcmUgcmVtb3ZpbmcgdGhlIG5nLWludmFsaWQgbWFudWFsbHlcbiAgICBjb25zdCBpc05nVW50b3VjaGVkVmFsaWQgPSBub2RlLmNsYXNzTGlzdC5jb250YWlucygnbmctdW50b3VjaGVkJykgJiYgbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXZhbGlkJyk7XG4gICAgLy8gRGV0ZWN0IEFuZ3VsYXIncyBpbml0aWFsIGZvcm0gc3RhdGUgd2hlcmUgdGhlIGZpZWxkIGhhcyAnbmctaW52YWxpZCcsICduZy1wcmlzdGluZScsIGFuZCAnbmctdW50b3VjaGVkJyBiZWZvcmUgdXNlciBpbnRlcmFjdGlvbi5cbiAgICBjb25zdCBpc0luaXRpYWxJbnZhbGlkU3RhdGUgPSB0b0FkZC5pbmNsdWRlcygnbmctdW50b3VjaGVkJykgJiYgdG9BZGQuaW5jbHVkZXMoJ25nLXByaXN0aW5lJykgJiYgdG9BZGQuaW5jbHVkZXMoJ25nLWludmFsaWQnKTtcbiAgICBpZigoaXNOZ1VudG91Y2hlZFZhbGlkICYmIHRvQWRkLmluY2x1ZGVzKCduZy11bnRvdWNoZWQnKSAmJiB0b0FkZC5pbmNsdWRlcygnbmctaW52YWxpZCcpKSB8fCBpc0luaXRpYWxJbnZhbGlkU3RhdGUpIHtcbiAgICAgICAgdG9BZGQgPSB0b0FkZC5yZXBsYWNlKCduZy1pbnZhbGlkJywgJycpO1xuICAgIH1cbiAgICByZW1vdmVDbGFzcyhub2RlLCB0b1JlbW92ZSwgc3luYyk7XG4gICAgYWRkQ2xhc3Mobm9kZSwgdG9BZGQsIHN5bmMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZ2dsZUNsYXNzID0gKG5vZGU6IEhUTUxFbGVtZW50LCBjbHM6IHN0cmluZywgY29uZGl0aW9uOiBib29sZWFuLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgYWRkQ2xhc3Mobm9kZSwgY2xzLCBzeW5jKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZW1vdmVDbGFzcyhub2RlLCBjbHMsIHN5bmMpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDU1MgPSAobm9kZTogSFRNTEVsZW1lbnQsIGNzc05hbWU6IHN0cmluZywgdmFsPzogc3RyaW5nIHwgbnVtYmVyLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlLnN0eWxlW2Nzc05hbWVdID0gdmFsO1xuICAgIHN5bmMgPyB0YXNrKCkgOiBpbnZva2VMYXRlcih0YXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDU1NGcm9tT2JqID0gKG5vZGU6IEhUTUxFbGVtZW50LCBjc3NPYmo6IGFueSwgc3luYz86IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY3NzT2JqIHx8IHt9KTtcbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHNldENTUyhub2RlLCBrZXksIGNzc09ialtrZXldLCBzeW5jKSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UHJvcGVydHkgPSAobm9kZTogSFRNTEVsZW1lbnQsIHByb3BOYW1lOiBzdHJpbmcsIHZhbDogYW55LCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlW3Byb3BOYW1lXSA9IHZhbDtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0QXR0ciA9IChub2RlOiBIVE1MRWxlbWVudCwgYXR0ck5hbWU6IHN0cmluZywgdmFsOiBhbnksIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgdGFiaW5kZXggc3BlY2lmaWNhbGx5IC0gZW5zdXJlIGl0J3MgYSB2YWxpZCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gc3RyaW5nLCBoYW5kbGluZyAwLCBudWxsLCB1bmRlZmluZWQsIGFuZCBOYU5cbiAgICAgICAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkIHx8ICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWwpKSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIFN0cmluZyh2YWwpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJOYW1lLCB2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0SHRtbCA9IChub2RlOiBIVE1MRWxlbWVudCwgaHRtbDogc3RyaW5nLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlLmlubmVySFRNTCA9IGh0bWw7XG4gICAgc3luYyA/IHRhc2soKSA6IGludm9rZUxhdGVyKHRhc2spO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUF0dHIgPSAobm9kZTogSFRNTEVsZW1lbnQsIGF0dHJOYW1lOiBzdHJpbmcsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKTtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRWxlbWVudCA9IChub2RlVHlwZTogc3RyaW5nLCBhdHRyczogYW55LCBzeW5jPzogYm9vbGVhbik6IEhUTUxFbGVtZW50ID0+IHtcbiAgICBjb25zdCBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChub2RlVHlwZSk7XG5cbiAgICBpZiAoYXR0cnMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoYXR0cnMpLmZvckVhY2goYXR0ck5hbWUgPT4ge1xuICAgICAgICAgICAgc2V0QXR0cihub2RlLCBhdHRyTmFtZSwgYXR0cnNbYXR0ck5hbWVdLCBzeW5jKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xufTtcblxuLy8gZm9yIHdpZHRoIGFuZCBoZWlnaHQgaWYgYSBudW1lcmljIHZhbHVlIGlzIHNwZWNpZmllZCByZXR1cm4gaW4gcHhcbi8vIGVsc2UgcmV0dXJuIHRoZSBzYW1lIHZhbHVlXG5leHBvcnQgY29uc3QgdG9EaW1lbnNpb24gPSAodjogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh2ID09ICt2KSB7XG4gICAgICAgIHJldHVybiBgJHt2fXB4YDtcbiAgICB9XG4gICAgcmV0dXJuIHY7XG59O1xuIl19