@wavemaker/app-ng-runtime 11.14.1-8.6337 → 11.14.1-9.6343

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 (49) hide show
  1. package/components/base/bundles/index.umd.js +8 -77
  2. package/components/base/esm2022/pipes/custom-pipes.mjs +1 -1
  3. package/components/base/esm2022/widgets/common/base/base.component.mjs +7 -67
  4. package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +3 -7
  5. package/components/base/esm2022/widgets/framework/property-change-handler.mjs +2 -7
  6. package/components/base/fesm2022/index.mjs +9 -78
  7. package/components/base/fesm2022/index.mjs.map +1 -1
  8. package/components/basic/label/bundles/index.umd.js +1 -9
  9. package/components/basic/label/esm2022/label.directive.mjs +2 -10
  10. package/components/basic/label/fesm2022/index.mjs +1 -9
  11. package/components/basic/label/fesm2022/index.mjs.map +1 -1
  12. package/components/data/pagination/bundles/index.umd.js +0 -4
  13. package/components/data/pagination/esm2022/pagination.component.mjs +1 -5
  14. package/components/data/pagination/fesm2022/index.mjs +0 -4
  15. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  16. package/components/data/table/bundles/index.umd.js +12 -219
  17. package/components/data/table/esm2022/table-cud.directive.mjs +2 -2
  18. package/components/data/table/esm2022/table.component.mjs +12 -219
  19. package/components/data/table/fesm2022/index.mjs +12 -219
  20. package/components/data/table/fesm2022/index.mjs.map +1 -1
  21. package/components/data/table/table.component.d.ts +2 -6
  22. package/components/navigation/menu/bundles/index.umd.js +0 -5
  23. package/components/navigation/menu/esm2022/menu.component.mjs +1 -6
  24. package/components/navigation/menu/fesm2022/index.mjs +0 -5
  25. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  26. package/components/navigation/popover/bundles/index.umd.js +6 -6
  27. package/components/navigation/popover/esm2022/popover.component.mjs +4 -4
  28. package/components/navigation/popover/fesm2022/index.mjs +3 -3
  29. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  30. package/components/navigation/popover/popover.component.d.ts +0 -6
  31. package/core/bundles/index.umd.js +82 -395
  32. package/core/esm2022/public_api.mjs +2 -2
  33. package/core/esm2022/utils/watcher.mjs +81 -392
  34. package/core/fesm2022/index.mjs +84 -395
  35. package/core/fesm2022/index.mjs.map +1 -1
  36. package/core/public_api.d.ts +1 -1
  37. package/core/utils/watcher.d.ts +5 -28
  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 +0 -20
  42. package/runtime/base/esm2022/components/app-component/app.component.mjs +2 -4
  43. package/runtime/base/esm2022/components/base-page.component.mjs +2 -6
  44. package/runtime/base/esm2022/components/base-partial.component.mjs +2 -7
  45. package/runtime/base/esm2022/components/base-prefab.component.mjs +2 -7
  46. package/runtime/base/esm2022/components/base-spa-page.component.mjs +2 -6
  47. package/runtime/base/fesm2022/index.mjs +1 -21
  48. package/runtime/base/fesm2022/index.mjs.map +1 -1
  49. package/scripts/datatable/datatable.js +2 -34
@@ -1450,11 +1450,11 @@
1450
1450
  }
1451
1451
  };
1452
1452
 
1453
- const $RAF = window.requestAnimationFrame;
1453
+ const $RAF$1 = window.requestAnimationFrame;
1454
1454
  const $RAFQueue = [];
1455
1455
  const invokeLater = fn => {
1456
1456
  if (!$RAFQueue.length) {
1457
- $RAF(() => {
1457
+ $RAF$1(() => {
1458
1458
  $RAFQueue.forEach(f => f());
1459
1459
  $RAFQueue.length = 0;
1460
1460
  });
@@ -2191,89 +2191,14 @@
2191
2191
  return fnExecutor(expr, ExpressionType.Action);
2192
2192
  };
2193
2193
 
2194
- // Constants
2195
- const WIDGET_ID_REGEX = /^(widget-[^_]+)/;
2196
- const WIDGET_PROPERTY_REGEX = /^widget-[^_]+_(.+)$/;
2197
- const ARRAY_INDEX_PLACEHOLDER = '[$i]';
2198
- const ARRAY_INDEX_ZERO = '[0]';
2199
- const DEBOUNCE_WAIT = 100;
2200
- const MAX_WATCH_CYCLES = 5;
2201
2194
  const registry = new Map();
2202
2195
  const watchIdGenerator = new IDGenerator('watch-id-');
2203
- const FIRST_TIME_WATCH = Object.freeze({});
2204
- // State
2196
+ const FIRST_TIME_WATCH = {};
2197
+ Object.freeze(FIRST_TIME_WATCH);
2198
+ const isFirstTimeChange = v => v === FIRST_TIME_WATCH;
2205
2199
  let muted = false;
2206
- let changedByWatch = false;
2207
- let skipWatchers = false;
2208
- let ngZone;
2209
2200
  let appRef;
2210
- /********************************************************************
2211
- * CLEANUP SCHEDULER WITH:
2212
- * - Significant watcher delta trigger (+/-)
2213
- * - UI stabilization delay (1–2 seconds)
2214
- * - Cooldown to prevent repeated scheduling
2215
- ********************************************************************/
2216
- const CLEANUP_TRIGGER_DELTA = 300; // watcher change threshold
2217
- const CLEANUP_DELAY = 1500; // delay before running cleanup
2218
- const CLEANUP_COOLDOWN = 4000; // prevent re-scheduling for 4s
2219
- let lastWatcherCount = 0;
2220
- let scheduledCleanup = null;
2221
- let lastScheduledTime = 0;
2222
- function getWatcherCount() {
2223
- let count = 0;
2224
- registry.forEach(bucket => count += bucket.size);
2225
- return count;
2226
- }
2227
- const cleanupStaleWatchers = () => {
2228
- // console.log(".........Cleaning up stale watchers...registry.size....", registry.size);
2229
- let removed = 0;
2230
- registry.forEach((bucket, widgetId) => {
2231
- if (!document.querySelector(`[widget-id="${widgetId}"]`)) {
2232
- for (const key in bucket) {
2233
- if (bucket.hasOwnProperty(key) && key !== "scopeType" && key !== "scopeName" && typeof bucket[key] !== "function") {
2234
- let watchInfo = bucket[key];
2235
- if (watchInfo && watchInfo.destroyFn) {
2236
- watchInfo.destroyFn();
2237
- }
2238
- }
2239
- }
2240
- removed++;
2241
- registry.delete(widgetId);
2242
- return;
2243
- }
2244
- });
2245
- return removed;
2246
- };
2247
- const scheduleThresholdCleanup = () => {
2248
- const now = performance.now();
2249
- let lastTriggerPeriod = now - lastScheduledTime;
2250
- // If a cleanup was scheduled recently, skip scheduling
2251
- if (lastTriggerPeriod < CLEANUP_COOLDOWN) {
2252
- return;
2253
- }
2254
- const current = getWatcherCount();
2255
- const delta = Math.abs(current - lastWatcherCount); // significant + or -
2256
- // If change not large enough, skip scheduling
2257
- if (delta <= CLEANUP_TRIGGER_DELTA) {
2258
- lastWatcherCount = current;
2259
- return;
2260
- }
2261
- // Prevent re-scheduling: set timestamp early
2262
- lastScheduledTime = now;
2263
- // Clear previous scheduled cleanup (if any)
2264
- if (scheduledCleanup) {
2265
- clearTimeout(scheduledCleanup);
2266
- }
2267
- // Schedule cleanup after UI stabilizes (delay prevents aggressive cleanup)
2268
- scheduledCleanup = setTimeout(() => {
2269
- cleanupStaleWatchers();
2270
- scheduledCleanup = null;
2271
- }, CLEANUP_DELAY);
2272
- lastWatcherCount = current;
2273
- };
2274
- // Utility functions
2275
- const isFirstTimeChange = (v) => v === FIRST_TIME_WATCH;
2276
- const debounce = (fn, wait = DEBOUNCE_WAIT) => {
2201
+ const debounce = (fn, wait = 50) => {
2277
2202
  let timeout;
2278
2203
  return (...args) => {
2279
2204
  window['__zone_symbol__clearTimeout'](timeout);
@@ -2287,350 +2212,115 @@
2287
2212
  muted = false;
2288
2213
  triggerWatchers();
2289
2214
  };
2290
- /**
2291
- * Extracts widget ID from identifier (e.g., "widget-id23_eventsource" -> "widget-id23")
2292
- */
2293
- const getWidgetId = (identifier) => {
2294
- if (!identifier || typeof identifier !== 'string') {
2295
- return null;
2296
- }
2297
- const match = identifier.match(WIDGET_ID_REGEX);
2298
- return match ? match[1] : null;
2299
- };
2300
- /**
2301
- * Extracts property name from identifier (e.g., "widget-id23_eventsource" -> "eventsource")
2302
- */
2303
- const getPropertyName = (identifier) => {
2304
- if (!identifier || typeof identifier !== 'string') {
2305
- return identifier;
2306
- }
2307
- const match = identifier.match(WIDGET_PROPERTY_REGEX);
2308
- return match ? match[1] : identifier;
2309
- };
2310
- /**
2311
- * Array consumer wrapper for array-based expressions
2312
- */
2313
2215
  const arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {
2314
- if (!lodashEs.isArray(newVal)) {
2315
- return;
2316
- }
2317
- let formattedData = newVal.map(datum => findValueOf(datum, restExpr));
2318
- // Flatten if result is array of arrays
2319
- if (lodashEs.isArray(formattedData[0])) {
2320
- formattedData = lodashEs.flatten(formattedData);
2216
+ let data = newVal, formattedData;
2217
+ if (lodashEs.isArray(data)) {
2218
+ formattedData = data.map(function (datum) {
2219
+ return findValueOf(datum, restExpr);
2220
+ });
2221
+ // If resulting structure is an array of array, flatten it
2222
+ if (lodashEs.isArray(formattedData[0])) {
2223
+ formattedData = lodashEs.flatten(formattedData);
2224
+ }
2225
+ listenerFn(formattedData, oldVal);
2321
2226
  }
2322
- listenerFn(formattedData, oldVal);
2323
2227
  };
2324
- /**
2325
- * Updates watch info for array expressions
2326
- */
2327
- const getUpdatedWatchInfo = (expr, acceptsArray, listener) => {
2328
- const regex = /\[\$i\]/g;
2228
+ const getUpdatedWatcInfo = (expr, acceptsArray, listener) => {
2229
+ // listener doesn't accept array
2230
+ // replace all `[$i]` with `[0]` and return the expression
2231
+ let regex = /\[\$i\]/g, $I = '[$i]', $0 = '[0]';
2329
2232
  if (!acceptsArray) {
2330
2233
  return {
2331
- expr: expr.replace(regex, ARRAY_INDEX_ZERO),
2332
- listener
2234
+ 'expr': expr.replace(regex, $0),
2235
+ 'listener': listener
2333
2236
  };
2334
2237
  }
2335
- const lastIndex = expr.lastIndexOf(ARRAY_INDEX_PLACEHOLDER);
2336
- const baseExpr = expr.substring(0, lastIndex).replace(ARRAY_INDEX_PLACEHOLDER, ARRAY_INDEX_ZERO);
2337
- const restExpr = expr.substring(lastIndex + 5);
2338
- const arrayConsumerFn = restExpr
2339
- ? arrayConsumer.bind(undefined, listener, restExpr)
2340
- : listener;
2238
+ // listener accepts array
2239
+ // replace all except the last `[$i]` with `[0]` and return the expression.
2240
+ var index = expr.lastIndexOf($I), _expr = expr.substr(0, index).replace($I, $0), restExpr = expr.substr(index + 5), arrayConsumerFn = listener;
2241
+ if (restExpr) {
2242
+ arrayConsumerFn = arrayConsumer.bind(undefined, listener, restExpr);
2243
+ }
2341
2244
  return {
2342
- expr: baseExpr,
2343
- listener: arrayConsumerFn
2245
+ 'expr': _expr,
2246
+ 'listener': arrayConsumerFn
2344
2247
  };
2345
2248
  };
2346
- /**
2347
- * Determines if an expression is static (doesn't need to be watched)
2348
- */
2349
- const STATIC_EXPRESSION_NAMES = [
2350
- "row.getProperty('investment')",
2351
- "row.getProperty('factsheetLink')",
2352
- "row.getProperty('isRebalanceEligible')"
2353
- ];
2354
- const isStaticExpression = (expr) => {
2355
- if (typeof expr !== 'string') {
2356
- return false;
2357
- }
2358
- const trimmedExpr = expr.trim();
2359
- // Expressions that always evaluate to localization strings
2360
- // if (trimmedExpr.includes('appLocale')) {
2361
- // return true;
2362
- // }
2363
- // Hard-coded static expression names
2364
- if (STATIC_EXPRESSION_NAMES.includes(trimmedExpr)) {
2365
- return true;
2366
- }
2367
- return false;
2368
- };
2369
- /**
2370
- * Gets the scope type from the scope object
2371
- */
2372
- const getScopeType = ($scope) => {
2373
- if (!$scope) {
2374
- return null;
2375
- }
2376
- if ($scope.pageName)
2377
- return 'Page';
2378
- if ($scope.prefabName)
2379
- return 'Prefab';
2380
- if ($scope.partialName)
2381
- return 'Partial';
2382
- // Check for App scope
2383
- if ($scope.Variables !== undefined &&
2384
- $scope.Actions !== undefined &&
2385
- !$scope.pageName &&
2386
- !$scope.prefabName &&
2387
- !$scope.partialName) {
2388
- return 'App';
2389
- }
2390
- if ($scope.constructor?.name === 'AppRef') {
2391
- return 'App';
2392
- }
2393
- return null;
2394
- };
2395
- /**
2396
- * Gets scope name based on scope type
2397
- */
2398
- const getScopeName = ($scope, scopeType) => {
2399
- if (!scopeType || !$scope) {
2400
- return null;
2401
- }
2402
- switch (scopeType) {
2403
- case 'Prefab': return $scope.prefabName || null;
2404
- case 'Partial': return $scope.partialName || null;
2405
- case 'Page': return $scope.pageName || null;
2406
- default: return null;
2407
- }
2408
- };
2409
- /**
2410
- * Main watch function
2411
- */
2412
2249
  const $watch = (expr, $scope, $locals, listener, identifier = watchIdGenerator.nextUid(), doNotClone = false, config = {}, isMuted) => {
2413
- // Handle array expressions
2414
- if (expr.includes(ARRAY_INDEX_PLACEHOLDER)) {
2415
- const watchInfo = getUpdatedWatchInfo(expr, config.arrayType || config.isList || false, listener);
2250
+ if (expr.indexOf('[$i]') !== -1) {
2251
+ let watchInfo = getUpdatedWatcInfo(expr, config && (config.arrayType || config.isList), listener);
2416
2252
  expr = watchInfo.expr;
2417
2253
  listener = watchInfo.listener;
2418
2254
  }
2419
- // Handle static expressions
2420
- if (isStaticExpression(expr)) {
2421
- try {
2422
- const fn = $parseExpr(expr);
2423
- const staticValue = fn($scope, $locals);
2424
- listener(staticValue, FIRST_TIME_WATCH);
2425
- }
2426
- catch (e) {
2427
- console.warn(`Error evaluating static expression '${expr}':`, e);
2428
- listener(undefined, FIRST_TIME_WATCH);
2429
- }
2430
- return () => { }; // No-op unsubscribe
2431
- }
2432
2255
  const fn = $parseExpr(expr);
2433
- const scopeType = getScopeType($scope);
2434
- const scopeName = getScopeName($scope, scopeType);
2435
- const destroyFn = () => $unwatch(identifier);
2436
- const watchInfo = {
2437
- fn: fn.bind(null, $scope, $locals),
2256
+ registry.set(identifier, {
2257
+ fn: fn.bind(expr, $scope, $locals),
2438
2258
  listener,
2439
2259
  expr,
2440
2260
  last: FIRST_TIME_WATCH,
2441
2261
  doNotClone,
2442
- isMuted,
2443
- scopeType,
2444
- scopeName,
2445
- destroyFn
2446
- };
2447
- // Store in registry
2448
- const widgetId = getWidgetId(identifier);
2449
- if (widgetId) {
2450
- const propertyName = getPropertyName(identifier);
2451
- if (!registry.has(widgetId)) {
2452
- registry.set(widgetId, {});
2453
- }
2454
- const widgetGroup = registry.get(widgetId);
2455
- widgetGroup[propertyName] = watchInfo;
2456
- }
2457
- else {
2458
- registry.set(identifier, watchInfo);
2459
- }
2460
- return destroyFn;
2461
- };
2462
- /**
2463
- * Unwatches a single identifier
2464
- */
2465
- const $unwatch = (identifier) => {
2466
- const widgetId = getWidgetId(identifier);
2467
- if (widgetId) {
2468
- const propertyName = getPropertyName(identifier);
2469
- const widgetGroup = registry.get(widgetId);
2470
- //@ts-ignore
2471
- if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
2472
- const watchInfo = widgetGroup[propertyName];
2473
- if (watchInfo) {
2474
- delete widgetGroup[propertyName];
2475
- // Clean up empty widget groups
2476
- if (Object.keys(widgetGroup).length === 0) {
2477
- registry.delete(widgetId);
2478
- }
2479
- return true;
2480
- }
2481
- }
2482
- }
2483
- // Fallback to direct lookup
2484
- if (registry.has(identifier)) {
2485
- registry.delete(identifier);
2486
- return true;
2487
- }
2488
- return false;
2489
- };
2490
- /**
2491
- * Unwatches all watchers for a specific widget ID
2492
- */
2493
- const $unwatchAll = (widgetId) => {
2494
- if (!widgetId || typeof widgetId !== 'string') {
2495
- return 0;
2496
- }
2497
- const widgetGroup = registry.get(widgetId);
2498
- if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
2499
- const count = Object.keys(widgetGroup).length;
2500
- registry.delete(widgetId);
2501
- return count;
2502
- }
2503
- // Fallback: find all identifiers starting with this widget ID
2504
- let removedCount = 0;
2505
- const identifiersToRemove = [];
2506
- registry.forEach((_, key) => {
2507
- if (key.startsWith(widgetId + '_')) {
2508
- identifiersToRemove.push(key);
2509
- }
2262
+ isMuted: isMuted
2510
2263
  });
2511
- identifiersToRemove.forEach(identifier => {
2512
- if ($unwatch(identifier)) {
2513
- removedCount++;
2514
- }
2515
- });
2516
- return removedCount;
2517
- };
2518
- /**
2519
- * Unwatches all watchers for a specific scope (Page, Prefab, Partial, or App)
2520
- * Now works directly with the main registry instead of separate scoped registries
2521
- */
2522
- const $unwatchAllByScope = (scopeType, scopeName) => {
2523
- if (!scopeType) {
2524
- return 0;
2525
- }
2526
- let removedCount = 0;
2527
- const identifiersToRemove = [];
2528
- registry.forEach((value, key) => {
2529
- // Handle grouped structure (widget groups)
2530
- if (value && typeof value === 'object' && !value.fn) {
2531
- Object.entries(value).forEach(([propertyName, watchInfo]) => {
2532
- if (watchInfo?.scopeType === scopeType &&
2533
- (!scopeName || watchInfo.scopeName === scopeName)) {
2534
- identifiersToRemove.push(`${key}_${propertyName}`);
2535
- }
2536
- });
2537
- }
2538
- else {
2539
- // Direct watchInfo
2540
- const watchInfo = value;
2541
- if (watchInfo?.scopeType === scopeType &&
2542
- (!scopeName || watchInfo.scopeName === scopeName)) {
2543
- identifiersToRemove.push(key);
2544
- }
2545
- }
2546
- });
2547
- // Unwatch all collected identifiers
2548
- identifiersToRemove.forEach(identifier => {
2549
- if ($unwatch(identifier)) {
2550
- removedCount++;
2551
- }
2552
- });
2553
- return removedCount;
2554
- };
2555
- /**
2556
- * Processes a single watch info during trigger cycle
2557
- */
2558
- const processWatchInfo = (watchInfo) => {
2559
- if (!watchInfo?.fn || (watchInfo.isMuted?.() ?? false)) {
2560
- return false;
2561
- }
2562
- let newValue;
2563
- try {
2564
- newValue = watchInfo.fn();
2565
- }
2566
- catch (e) {
2567
- console.warn(`Error executing expression: '${watchInfo.expr}'`, e);
2568
- return false;
2569
- }
2570
- if (lodashEs.isEqual(newValue, watchInfo.last)) {
2571
- return false;
2572
- }
2573
- // Change detected
2574
- changedByWatch = true;
2575
- watchInfo.last = lodashEs.isObject(newValue) && !watchInfo.doNotClone
2576
- ? lodashEs.clone(newValue)
2577
- : newValue;
2578
- watchInfo.listener(newValue, watchInfo.last === newValue ? FIRST_TIME_WATCH : watchInfo.last);
2579
- changedByWatch = false;
2580
- return true;
2264
+ return () => $unwatch(identifier);
2581
2265
  };
2582
- /**
2583
- * Triggers all watchers
2584
- */
2585
- const triggerWatchers = (ignoreMuted = false) => {
2266
+ const $unwatch = identifier => registry.delete(identifier);
2267
+ let changedByWatch = false;
2268
+ const $RAF = window.requestAnimationFrame;
2269
+ let ngZone;
2270
+ const triggerWatchers = (ignoreMuted) => {
2586
2271
  if (muted && !ignoreMuted) {
2587
2272
  return;
2588
2273
  }
2274
+ const limit = 5;
2589
2275
  let pass = 1;
2590
2276
  let changeDetected;
2591
2277
  do {
2592
2278
  changeDetected = false;
2593
- registry.forEach((value) => {
2594
- // Handle grouped structure
2595
- if (value && typeof value === 'object' && !value.fn) {
2596
- Object.values(value).forEach((watchInfo) => {
2597
- if (processWatchInfo(watchInfo)) {
2598
- changeDetected = true;
2599
- }
2600
- });
2279
+ registry.forEach(watchInfo => {
2280
+ if (watchInfo.isMuted && watchInfo.isMuted()) {
2281
+ return;
2601
2282
  }
2602
- else {
2603
- // Direct watchInfo
2604
- if (processWatchInfo(value)) {
2605
- changeDetected = true;
2283
+ const fn = watchInfo.fn;
2284
+ const listener = watchInfo.listener;
2285
+ const ov = watchInfo.last;
2286
+ let nv;
2287
+ try {
2288
+ nv = fn();
2289
+ }
2290
+ catch (e) {
2291
+ console.warn(`error in executing expression: '${watchInfo.expr}'`);
2292
+ }
2293
+ if (!lodashEs.isEqual(nv, ov)) {
2294
+ changeDetected = true;
2295
+ changedByWatch = true;
2296
+ watchInfo.last = nv;
2297
+ // @ts-ignore
2298
+ if (lodashEs.isObject(nv) && !watchInfo.doNotClone && nv.__cloneable__ !== false) {
2299
+ watchInfo.last = lodashEs.clone(nv);
2606
2300
  }
2301
+ listener(nv, ov);
2302
+ resetChangeFromWatch();
2607
2303
  }
2608
2304
  });
2609
2305
  pass++;
2610
- } while (changeDetected && pass < MAX_WATCH_CYCLES);
2611
- // Schedule cleanup after watchers are triggered
2612
- scheduleThresholdCleanup();
2613
- if (changeDetected && pass === MAX_WATCH_CYCLES) {
2614
- console.warn(`Watch cycles exceeded limit of ${MAX_WATCH_CYCLES}`);
2306
+ } while (changeDetected && pass < limit);
2307
+ if (changeDetected && pass === limit) {
2308
+ console.warn(`Number of watch cycles gone above set limit of: ${limit} `);
2615
2309
  }
2616
2310
  };
2617
- // Angular zone integration
2618
- const setNgZone = (zone) => {
2619
- ngZone = zone;
2620
- };
2621
- const setAppRef = (ref) => {
2311
+ const setNgZone = zone => ngZone = zone;
2312
+ const setAppRef = ref => {
2622
2313
  appRef = ref;
2623
2314
  };
2624
2315
  const isChangeFromWatch = () => changedByWatch;
2625
- const resetChangeFromWatch = () => {
2626
- changedByWatch = false;
2627
- };
2628
- // Debounced trigger
2316
+ const resetChangeFromWatch = () => changedByWatch = false;
2317
+ window.watchRegistry = registry;
2318
+ let skipWatchers;
2629
2319
  const debouncedTriggerWatchers = debounce(() => {
2630
2320
  skipWatchers = true;
2631
2321
  ngZone.run(() => triggerWatchers());
2632
- }, DEBOUNCE_WAIT);
2633
- const $invokeWatchers = (force = false, ignoreMuted = false) => {
2322
+ }, 100);
2323
+ const $invokeWatchers = (force, ignoreMuted) => {
2634
2324
  if (force) {
2635
2325
  triggerWatchers(ignoreMuted);
2636
2326
  }
@@ -2644,8 +2334,7 @@
2644
2334
  };
2645
2335
  const $appDigest = (() => {
2646
2336
  let queued = false;
2647
- const $RAF = window.requestAnimationFrame;
2648
- return (force = false) => {
2337
+ return (force) => {
2649
2338
  if (!appRef) {
2650
2339
  return;
2651
2340
  }
@@ -2657,16 +2346,16 @@
2657
2346
  if (queued) {
2658
2347
  return;
2659
2348
  }
2660
- queued = true;
2661
- $RAF(() => {
2662
- ngZone.run(() => appRef.tick());
2663
- queued = false;
2664
- });
2349
+ else {
2350
+ queued = true;
2351
+ $RAF(() => {
2352
+ ngZone.run(() => appRef.tick());
2353
+ queued = false;
2354
+ });
2355
+ }
2665
2356
  }
2666
2357
  };
2667
2358
  })();
2668
- // Export registry for debugging
2669
- window.watchRegistry = registry;
2670
2359
 
2671
2360
  exports.ComponentType = void 0;
2672
2361
  (function (ComponentType) {
@@ -5475,8 +5164,6 @@
5475
5164
  exports.$parseEvent = $parseEvent;
5476
5165
  exports.$parseExpr = $parseExpr;
5477
5166
  exports.$unwatch = $unwatch;
5478
- exports.$unwatchAll = $unwatchAll;
5479
- exports.$unwatchAllByScope = $unwatchAllByScope;
5480
5167
  exports.$watch = $watch;
5481
5168
  exports.AbstractDialogService = AbstractDialogService;
5482
5169
  exports.AbstractHttpService = AbstractHttpService;
@@ -8,7 +8,7 @@ export * from './enums/enums';
8
8
  export * from './utils/event-notifier';
9
9
  export { $parseExpr, $parseEvent, registerFnByExpr, setPipeProvider, getFnByExpr, getFnForBindExpr, getFnForEventExpr } from './utils/expression-parser';
10
10
  export { isDefined, isObject, toBoolean, isIE, isAndroid, isAndroidTablet, isIphone, isIpod, isIpad, isIos, isSafari, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, getAndroidVersion, isKitkatDevice, encodeUrl, encodeUrlParams, initCaps, spaceSeparate, replaceAt, periodSeparate, prettifyLabel, deHyphenate, prettifyLabels, isInsecureContentRequest, stringStartsWith, getEvaluatedExprValue, isImageFile, isAudioFile, isVideoFile, isValidImageUrl, isValidWebURL, getResourceURL, triggerFn, hasOffsetStr, getFormattedDate, getDateObj, addEventListenerOnElement, getClonedObject, getFiles, generateGUId, validateAccessRoles, getValidJSON, xmlToJson, findValueOf, extractType, isNumberType, isEmptyObject, scrollToElement, isElementInViewport, isPageable, replace, isDateTimeType, getValidDateObject, getNativeDateObject, getBlob, isEqualWithFields, loadStyleSheet, loadStyleSheets, loadScript, loadScripts, _WM_APP_PROJECT, setSessionStorageItem, getSessionStorageItem, noop, convertToBlob, AppConstants, openLink, fetchContent, toPromise, retryIfFails, getAbortableDefer, createCSSRule, getUrlParams, getMomentLocaleObject, getRouteNameFromLink, isAppleProduct, defer, executePromiseChain, isDataSourceEqual, validateDataSourceCtx, processFilterExpBindNode, extendProto, removeExtraSlashes, getDisplayDateTimeFormat, addForIdAttributes, adjustContainerPosition, adjustContainerRightEdges, setTranslation3dPosition, getWebkitTraslationMatrix, closePopover, detectChanges, triggerItemAction, getDatasourceFromExpr, extractCurrentItemExpr, findRootContainer, VALIDATOR, transformFileURI, appendScriptToHead, getAppSetting, setListClass, findParent, getNavClass, getSheetPositionClass } from './utils/utils';
11
- export { FIRST_TIME_WATCH, isFirstTimeChange, debounce, muteWatchers, unMuteWatchers, $watch, $unwatch, $unwatchAll, $unwatchAllByScope, setNgZone, setAppRef, isChangeFromWatch, resetChangeFromWatch, $invokeWatchers, $appDigest } from './utils/watcher';
11
+ export { FIRST_TIME_WATCH, isFirstTimeChange, debounce, muteWatchers, unMuteWatchers, $watch, $unwatch, setNgZone, setAppRef, isChangeFromWatch, resetChangeFromWatch, $invokeWatchers, $appDigest } from './utils/watcher';
12
12
  export * from './utils/id-generator';
13
13
  export * from './types/types';
14
14
  export { Viewport } from './services/viewport.service';
@@ -23,4 +23,4 @@ export { StatePersistence } from './services/state-persistence.service';
23
23
  export { PaginationService } from './services/pagination.service';
24
24
  export * from './utils/wm-project-properties';
25
25
  export * from './utils/lru-cache';
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLE9BQU8sRUFFSCxVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUgsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLGFBQWEsRUFDYixTQUFTLEVBQ1QsY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBQ1gsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGVBQWUsRUFDZixhQUFhLEVBQ2IsY0FBYyxFQUNkLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVix5QkFBeUIsRUFDekIsZUFBZSxFQUNmLFFBQVEsRUFDUixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLFlBQVksRUFDWixTQUFTLEVBQ1QsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxFQUNiLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLE9BQU8sRUFDUCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFdBQVcsRUFDWCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixJQUFJLEVBQ0osYUFBYSxFQUNiLFlBQVksRUFDWixRQUFRLEVBQ1IsWUFBWSxFQUNaLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsS0FBSyxFQUNMLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6Qix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxxQkFBcUIsRUFDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLFlBQVksRUFDWixjQUFjLEVBQ2QsTUFBTSxFQUNOLFFBQVEsRUFDUixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsVUFBVSxFQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFpQixNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjb3JlXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvYnVpbGQtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMvY3VycmVuY3ktY29uc3RhbnRzJztcbmV4cG9ydCB7XG4gICAgYXBwZW5kTm9kZSxcbiAgICBpbnNlcnRCZWZvcmUsXG4gICAgaW5zZXJ0QWZ0ZXIsXG4gICAgcmVtb3ZlTm9kZSxcbiAgICByZW1vdmVDbGFzcyxcbiAgICBhZGRDbGFzcyxcbiAgICBzd2l0Y2hDbGFzcyxcbiAgICB0b2dnbGVDbGFzcyxcbiAgICBzZXRDU1MsXG4gICAgc2V0Q1NTRnJvbU9iaixcbiAgICBzZXRQcm9wZXJ0eSxcbiAgICBzZXRBdHRyLFxuICAgIHNldEh0bWwsXG4gICAgcmVtb3ZlQXR0cixcbiAgICBjcmVhdGVFbGVtZW50LFxuICAgIHRvRGltZW5zaW9uXG59IGZyb20gJy4vdXRpbHMvZG9tJztcbmV4cG9ydCAqIGZyb20gJy4vZW51bXMvZW51bXMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9ldmVudC1ub3RpZmllcic7XG5leHBvcnQge1xuICAgIFBhcnNlRXhwclJlc3VsdCxcbiAgICAkcGFyc2VFeHByLFxuICAgICRwYXJzZUV2ZW50LFxuICAgIHJlZ2lzdGVyRm5CeUV4cHIsXG4gICAgc2V0UGlwZVByb3ZpZGVyLFxuICAgIGdldEZuQnlFeHByLFxuICAgIGdldEZuRm9yQmluZEV4cHIsXG4gICAgZ2V0Rm5Gb3JFdmVudEV4cHJcbn0gZnJvbSAnLi91dGlscy9leHByZXNzaW9uLXBhcnNlcic7XG5leHBvcnQge1xuICAgIEVWRU5UX0xJRkUsXG4gICAgaXNEZWZpbmVkLFxuICAgIGlzT2JqZWN0LFxuICAgIHRvQm9vbGVhbixcbiAgICBpc0lFLFxuICAgIGlzQW5kcm9pZCxcbiAgICBpc0FuZHJvaWRUYWJsZXQsXG4gICAgaXNJcGhvbmUsXG4gICAgaXNJcG9kLFxuICAgIGlzSXBhZCxcbiAgICBpc0lvcyxcbiAgICBpc1NhZmFyaSxcbiAgICBpc0xhcmdlVGFibGV0TGFuZHNjYXBlLFxuICAgIGlzTGFyZ2VUYWJsZXRQb3J0cmFpdCxcbiAgICBpc01vYmlsZSxcbiAgICBnZXRBbmRyb2lkVmVyc2lvbixcbiAgICBpc0tpdGthdERldmljZSxcbiAgICBlbmNvZGVVcmwsXG4gICAgZW5jb2RlVXJsUGFyYW1zLFxuICAgIGluaXRDYXBzLFxuICAgIHNwYWNlU2VwYXJhdGUsXG4gICAgcmVwbGFjZUF0LFxuICAgIHBlcmlvZFNlcGFyYXRlLFxuICAgIHByZXR0aWZ5TGFiZWwsXG4gICAgZGVIeXBoZW5hdGUsXG4gICAgcHJldHRpZnlMYWJlbHMsXG4gICAgaXNJbnNlY3VyZUNvbnRlbnRSZXF1ZXN0LFxuICAgIHN0cmluZ1N0YXJ0c1dpdGgsXG4gICAgZ2V0RXZhbHVhdGVkRXhwclZhbHVlLFxuICAgIGlzSW1hZ2VGaWxlLFxuICAgIGlzQXVkaW9GaWxlLFxuICAgIGlzVmlkZW9GaWxlLFxuICAgIGlzVmFsaWRJbWFnZVVybCxcbiAgICBpc1ZhbGlkV2ViVVJMLFxuICAgIGdldFJlc291cmNlVVJMLFxuICAgIHRyaWdnZXJGbixcbiAgICBoYXNPZmZzZXRTdHIsXG4gICAgZ2V0Rm9ybWF0dGVkRGF0ZSxcbiAgICBnZXREYXRlT2JqLFxuICAgIGFkZEV2ZW50TGlzdGVuZXJPbkVsZW1lbnQsXG4gICAgZ2V0Q2xvbmVkT2JqZWN0LFxuICAgIGdldEZpbGVzLFxuICAgIGdlbmVyYXRlR1VJZCxcbiAgICB2YWxpZGF0ZUFjY2Vzc1JvbGVzLFxuICAgIGdldFZhbGlkSlNPTixcbiAgICB4bWxUb0pzb24sXG4gICAgZmluZFZhbHVlT2YsXG4gICAgZXh0cmFjdFR5cGUsXG4gICAgaXNOdW1iZXJUeXBlLFxuICAgIGlzRW1wdHlPYmplY3QsXG4gICAgc2Nyb2xsVG9FbGVtZW50LFxuICAgIGlzRWxlbWVudEluVmlld3BvcnQsXG4gICAgaXNQYWdlYWJsZSxcbiAgICByZXBsYWNlLFxuICAgIGlzRGF0ZVRpbWVUeXBlLFxuICAgIGdldFZhbGlkRGF0ZU9iamVjdCxcbiAgICBnZXROYXRpdmVEYXRlT2JqZWN0LFxuICAgIGdldEJsb2IsXG4gICAgaXNFcXVhbFdpdGhGaWVsZHMsXG4gICAgbG9hZFN0eWxlU2hlZXQsXG4gICAgbG9hZFN0eWxlU2hlZXRzLFxuICAgIGxvYWRTY3JpcHQsXG4gICAgbG9hZFNjcmlwdHMsXG4gICAgX1dNX0FQUF9QUk9KRUNULFxuICAgIHNldFNlc3Npb25TdG9yYWdlSXRlbSxcbiAgICBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgbm9vcCxcbiAgICBjb252ZXJ0VG9CbG9iLFxuICAgIEFwcENvbnN0YW50cyxcbiAgICBvcGVuTGluayxcbiAgICBmZXRjaENvbnRlbnQsXG4gICAgdG9Qcm9taXNlLFxuICAgIHJldHJ5SWZGYWlscyxcbiAgICBnZXRBYm9ydGFibGVEZWZlcixcbiAgICBjcmVhdGVDU1NSdWxlLFxuICAgIGdldFVybFBhcmFtcyxcbiAgICBnZXRNb21lbnRMb2NhbGVPYmplY3QsXG4gICAgZ2V0Um91dGVOYW1lRnJvbUxpbmssXG4gICAgaXNBcHBsZVByb2R1Y3QsXG4gICAgZGVmZXIsXG4gICAgZXhlY3V0ZVByb21pc2VDaGFpbixcbiAgICBpc0RhdGFTb3VyY2VFcXVhbCxcbiAgICB2YWxpZGF0ZURhdGFTb3VyY2VDdHgsXG4gICAgcHJvY2Vzc0ZpbHRlckV4cEJpbmROb2RlLFxuICAgIGV4dGVuZFByb3RvLFxuICAgIHJlbW92ZUV4dHJhU2xhc2hlcyxcbiAgICBnZXREaXNwbGF5RGF0ZVRpbWVGb3JtYXQsXG4gICAgYWRkRm9ySWRBdHRyaWJ1dGVzLFxuICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uLFxuICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMsXG4gICAgc2V0VHJhbnNsYXRpb24zZFBvc2l0aW9uLFxuICAgIGdldFdlYmtpdFRyYXNsYXRpb25NYXRyaXgsXG4gICAgY2xvc2VQb3BvdmVyLFxuICAgIGRldGVjdENoYW5nZXMsXG4gICAgdHJpZ2dlckl0ZW1BY3Rpb24sXG4gICAgZ2V0RGF0YXNvdXJjZUZyb21FeHByLFxuICAgIGV4dHJhY3RDdXJyZW50SXRlbUV4cHIsXG4gICAgZmluZFJvb3RDb250YWluZXIsXG4gICAgVkFMSURBVE9SLFxuICAgIHRyYW5zZm9ybUZpbGVVUkksXG4gICAgYXBwZW5kU2NyaXB0VG9IZWFkLFxuICAgIGdldEFwcFNldHRpbmcsXG4gICAgc2V0TGlzdENsYXNzLFxuICAgIGZpbmRQYXJlbnQsXG4gICAgZ2V0TmF2Q2xhc3MsXG4gICAgZ2V0U2hlZXRQb3NpdGlvbkNsYXNzXG59IGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBGSVJTVF9USU1FX1dBVENILFxuICAgIGlzRmlyc3RUaW1lQ2hhbmdlLFxuICAgIGRlYm91bmNlLFxuICAgIG11dGVXYXRjaGVycyxcbiAgICB1bk11dGVXYXRjaGVycyxcbiAgICAkd2F0Y2gsXG4gICAgJHVud2F0Y2gsXG4gICAgJHVud2F0Y2hBbGwsXG4gICAgJHVud2F0Y2hBbGxCeVNjb3BlLFxuICAgIHNldE5nWm9uZSxcbiAgICBzZXRBcHBSZWYsXG4gICAgaXNDaGFuZ2VGcm9tV2F0Y2gsXG4gICAgcmVzZXRDaGFuZ2VGcm9tV2F0Y2gsXG4gICAgJGludm9rZVdhdGNoZXJzLFxuICAgICRhcHBEaWdlc3Rcbn0gZnJvbSAnLi91dGlscy93YXRjaGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvaWQtZ2VuZXJhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvdHlwZXMnO1xuZXhwb3J0IHsgVmlld3BvcnQsIFZpZXdwb3J0RXZlbnQgfSBmcm9tICcuL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jb25zdGFudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZpZWxkLXR5cGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZpZWxkLXdpZGdldC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvc2NyaXB0LWxvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdXNlci1jdXN0b20tcGlwZS1tYW5hZ2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jdXN0b20taWNvbnMtbG9hZGVyLnNlcnZpY2UnO1xuZXhwb3J0IHsgU3RhdGVQZXJzaXN0ZW5jZSB9IGZyb20gJy4vc2VydmljZXMvc3RhdGUtcGVyc2lzdGVuY2Uuc2VydmljZSc7XG5leHBvcnQgeyBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcGFnaW5hdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvd20tcHJvamVjdC1wcm9wZXJ0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvbHJ1LWNhY2hlJztcbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLE9BQU8sRUFFSCxVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUgsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLGFBQWEsRUFDYixTQUFTLEVBQ1QsY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBQ1gsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGVBQWUsRUFDZixhQUFhLEVBQ2IsY0FBYyxFQUNkLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVix5QkFBeUIsRUFDekIsZUFBZSxFQUNmLFFBQVEsRUFDUixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLFlBQVksRUFDWixTQUFTLEVBQ1QsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxFQUNiLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLE9BQU8sRUFDUCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFdBQVcsRUFDWCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixJQUFJLEVBQ0osYUFBYSxFQUNiLFlBQVksRUFDWixRQUFRLEVBQ1IsWUFBWSxFQUNaLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsS0FBSyxFQUNMLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6Qix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxxQkFBcUIsRUFDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLFlBQVksRUFDWixjQUFjLEVBQ2QsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLFVBQVUsRUFDYixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxlQUFlLENBQUM7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBaUIsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgY29yZVxuICovXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2J1aWxkLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzL2N1cnJlbmN5LWNvbnN0YW50cyc7XG5leHBvcnQge1xuICAgIGFwcGVuZE5vZGUsXG4gICAgaW5zZXJ0QmVmb3JlLFxuICAgIGluc2VydEFmdGVyLFxuICAgIHJlbW92ZU5vZGUsXG4gICAgcmVtb3ZlQ2xhc3MsXG4gICAgYWRkQ2xhc3MsXG4gICAgc3dpdGNoQ2xhc3MsXG4gICAgdG9nZ2xlQ2xhc3MsXG4gICAgc2V0Q1NTLFxuICAgIHNldENTU0Zyb21PYmosXG4gICAgc2V0UHJvcGVydHksXG4gICAgc2V0QXR0cixcbiAgICBzZXRIdG1sLFxuICAgIHJlbW92ZUF0dHIsXG4gICAgY3JlYXRlRWxlbWVudCxcbiAgICB0b0RpbWVuc2lvblxufSBmcm9tICcuL3V0aWxzL2RvbSc7XG5leHBvcnQgKiBmcm9tICcuL2VudW1zL2VudW1zJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvZXZlbnQtbm90aWZpZXInO1xuZXhwb3J0IHtcbiAgICBQYXJzZUV4cHJSZXN1bHQsXG4gICAgJHBhcnNlRXhwcixcbiAgICAkcGFyc2VFdmVudCxcbiAgICByZWdpc3RlckZuQnlFeHByLFxuICAgIHNldFBpcGVQcm92aWRlcixcbiAgICBnZXRGbkJ5RXhwcixcbiAgICBnZXRGbkZvckJpbmRFeHByLFxuICAgIGdldEZuRm9yRXZlbnRFeHByXG59IGZyb20gJy4vdXRpbHMvZXhwcmVzc2lvbi1wYXJzZXInO1xuZXhwb3J0IHtcbiAgICBFVkVOVF9MSUZFLFxuICAgIGlzRGVmaW5lZCxcbiAgICBpc09iamVjdCxcbiAgICB0b0Jvb2xlYW4sXG4gICAgaXNJRSxcbiAgICBpc0FuZHJvaWQsXG4gICAgaXNBbmRyb2lkVGFibGV0LFxuICAgIGlzSXBob25lLFxuICAgIGlzSXBvZCxcbiAgICBpc0lwYWQsXG4gICAgaXNJb3MsXG4gICAgaXNTYWZhcmksXG4gICAgaXNMYXJnZVRhYmxldExhbmRzY2FwZSxcbiAgICBpc0xhcmdlVGFibGV0UG9ydHJhaXQsXG4gICAgaXNNb2JpbGUsXG4gICAgZ2V0QW5kcm9pZFZlcnNpb24sXG4gICAgaXNLaXRrYXREZXZpY2UsXG4gICAgZW5jb2RlVXJsLFxuICAgIGVuY29kZVVybFBhcmFtcyxcbiAgICBpbml0Q2FwcyxcbiAgICBzcGFjZVNlcGFyYXRlLFxuICAgIHJlcGxhY2VBdCxcbiAgICBwZXJpb2RTZXBhcmF0ZSxcbiAgICBwcmV0dGlmeUxhYmVsLFxuICAgIGRlSHlwaGVuYXRlLFxuICAgIHByZXR0aWZ5TGFiZWxzLFxuICAgIGlzSW5zZWN1cmVDb250ZW50UmVxdWVzdCxcbiAgICBzdHJpbmdTdGFydHNXaXRoLFxuICAgIGdldEV2YWx1YXRlZEV4cHJWYWx1ZSxcbiAgICBpc0ltYWdlRmlsZSxcbiAgICBpc0F1ZGlvRmlsZSxcbiAgICBpc1ZpZGVvRmlsZSxcbiAgICBpc1ZhbGlkSW1hZ2VVcmwsXG4gICAgaXNWYWxpZFdlYlVSTCxcbiAgICBnZXRSZXNvdXJjZVVSTCxcbiAgICB0cmlnZ2VyRm4sXG4gICAgaGFzT2Zmc2V0U3RyLFxuICAgIGdldEZvcm1hdHRlZERhdGUsXG4gICAgZ2V0RGF0ZU9iaixcbiAgICBhZGRFdmVudExpc3RlbmVyT25FbGVtZW50LFxuICAgIGdldENsb25lZE9iamVjdCxcbiAgICBnZXRGaWxlcyxcbiAgICBnZW5lcmF0ZUdVSWQsXG4gICAgdmFsaWRhdGVBY2Nlc3NSb2xlcyxcbiAgICBnZXRWYWxpZEpTT04sXG4gICAgeG1sVG9Kc29uLFxuICAgIGZpbmRWYWx1ZU9mLFxuICAgIGV4dHJhY3RUeXBlLFxuICAgIGlzTnVtYmVyVHlwZSxcbiAgICBpc0VtcHR5T2JqZWN0LFxuICAgIHNjcm9sbFRvRWxlbWVudCxcbiAgICBpc0VsZW1lbnRJblZpZXdwb3J0LFxuICAgIGlzUGFnZWFibGUsXG4gICAgcmVwbGFjZSxcbiAgICBpc0RhdGVUaW1lVHlwZSxcbiAgICBnZXRWYWxpZERhdGVPYmplY3QsXG4gICAgZ2V0TmF0aXZlRGF0ZU9iamVjdCxcbiAgICBnZXRCbG9iLFxuICAgIGlzRXF1YWxXaXRoRmllbGRzLFxuICAgIGxvYWRTdHlsZVNoZWV0LFxuICAgIGxvYWRTdHlsZVNoZWV0cyxcbiAgICBsb2FkU2NyaXB0LFxuICAgIGxvYWRTY3JpcHRzLFxuICAgIF9XTV9BUFBfUFJPSkVDVCxcbiAgICBzZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgZ2V0U2Vzc2lvblN0b3JhZ2VJdGVtLFxuICAgIG5vb3AsXG4gICAgY29udmVydFRvQmxvYixcbiAgICBBcHBDb25zdGFudHMsXG4gICAgb3BlbkxpbmssXG4gICAgZmV0Y2hDb250ZW50LFxuICAgIHRvUHJvbWlzZSxcbiAgICByZXRyeUlmRmFpbHMsXG4gICAgZ2V0QWJvcnRhYmxlRGVmZXIsXG4gICAgY3JlYXRlQ1NTUnVsZSxcbiAgICBnZXRVcmxQYXJhbXMsXG4gICAgZ2V0TW9tZW50TG9jYWxlT2JqZWN0LFxuICAgIGdldFJvdXRlTmFtZUZyb21MaW5rLFxuICAgIGlzQXBwbGVQcm9kdWN0LFxuICAgIGRlZmVyLFxuICAgIGV4ZWN1dGVQcm9taXNlQ2hhaW4sXG4gICAgaXNEYXRhU291cmNlRXF1YWwsXG4gICAgdmFsaWRhdGVEYXRhU291cmNlQ3R4LFxuICAgIHByb2Nlc3NGaWx0ZXJFeHBCaW5kTm9kZSxcbiAgICBleHRlbmRQcm90byxcbiAgICByZW1vdmVFeHRyYVNsYXNoZXMsXG4gICAgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0LFxuICAgIGFkZEZvcklkQXR0cmlidXRlcyxcbiAgICBhZGp1c3RDb250YWluZXJQb3NpdGlvbixcbiAgICBhZGp1c3RDb250YWluZXJSaWdodEVkZ2VzLFxuICAgIHNldFRyYW5zbGF0aW9uM2RQb3NpdGlvbixcbiAgICBnZXRXZWJraXRUcmFzbGF0aW9uTWF0cml4LFxuICAgIGNsb3NlUG9wb3ZlcixcbiAgICBkZXRlY3RDaGFuZ2VzLFxuICAgIHRyaWdnZXJJdGVtQWN0aW9uLFxuICAgIGdldERhdGFzb3VyY2VGcm9tRXhwcixcbiAgICBleHRyYWN0Q3VycmVudEl0ZW1FeHByLFxuICAgIGZpbmRSb290Q29udGFpbmVyLFxuICAgIFZBTElEQVRPUixcbiAgICB0cmFuc2Zvcm1GaWxlVVJJLFxuICAgIGFwcGVuZFNjcmlwdFRvSGVhZCxcbiAgICBnZXRBcHBTZXR0aW5nLFxuICAgIHNldExpc3RDbGFzcyxcbiAgICBmaW5kUGFyZW50LFxuICAgIGdldE5hdkNsYXNzLFxuICAgIGdldFNoZWV0UG9zaXRpb25DbGFzc1xufSBmcm9tICcuL3V0aWxzL3V0aWxzJztcbmV4cG9ydCB7XG4gICAgRklSU1RfVElNRV9XQVRDSCxcbiAgICBpc0ZpcnN0VGltZUNoYW5nZSxcbiAgICBkZWJvdW5jZSxcbiAgICBtdXRlV2F0Y2hlcnMsXG4gICAgdW5NdXRlV2F0Y2hlcnMsXG4gICAgJHdhdGNoLFxuICAgICR1bndhdGNoLFxuICAgIHNldE5nWm9uZSxcbiAgICBzZXRBcHBSZWYsXG4gICAgaXNDaGFuZ2VGcm9tV2F0Y2gsXG4gICAgcmVzZXRDaGFuZ2VGcm9tV2F0Y2gsXG4gICAgJGludm9rZVdhdGNoZXJzLFxuICAgICRhcHBEaWdlc3Rcbn0gZnJvbSAnLi91dGlscy93YXRjaGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvaWQtZ2VuZXJhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvdHlwZXMnO1xuZXhwb3J0IHsgVmlld3BvcnQsIFZpZXdwb3J0RXZlbnQgfSBmcm9tICcuL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jb25zdGFudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZpZWxkLXR5cGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZpZWxkLXdpZGdldC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvc2NyaXB0LWxvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdXNlci1jdXN0b20tcGlwZS1tYW5hZ2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jdXN0b20taWNvbnMtbG9hZGVyLnNlcnZpY2UnO1xuZXhwb3J0IHsgU3RhdGVQZXJzaXN0ZW5jZSB9IGZyb20gJy4vc2VydmljZXMvc3RhdGUtcGVyc2lzdGVuY2Uuc2VydmljZSc7XG5leHBvcnQgeyBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcGFnaW5hdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvd20tcHJvamVjdC1wcm9wZXJ0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvbHJ1LWNhY2hlJztcbiJdfQ==