@wavemaker/angular-app 11.14.1-6.6324 → 11.14.1-8.6337

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.
@@ -147299,11 +147299,11 @@ const CURRENCY_INFO = {
147299
147299
  }
147300
147300
  };
147301
147301
 
147302
- const $RAF$1$1 = window.requestAnimationFrame;
147302
+ const $RAF$1 = window.requestAnimationFrame;
147303
147303
  const $RAFQueue$1 = [];
147304
147304
  const invokeLater$1 = fn => {
147305
147305
  if (!$RAFQueue$1.length) {
147306
- $RAF$1$1(() => {
147306
+ $RAF$1(() => {
147307
147307
  $RAFQueue$1.forEach(f => f());
147308
147308
  $RAFQueue$1.length = 0;
147309
147309
  });
@@ -147845,70 +147845,223 @@ const getFnForEventExpr$1 = (expr) => {
147845
147845
  return fnExecutor$1(expr, ExpressionType$2.Action);
147846
147846
  };
147847
147847
 
147848
+ // Constants
147849
+ const WIDGET_ID_REGEX$1 = /^(widget-[^_]+)/;
147850
+ const WIDGET_PROPERTY_REGEX$1 = /^widget-[^_]+_(.+)$/;
147851
+ const ARRAY_INDEX_PLACEHOLDER$1 = '[$i]';
147852
+ const ARRAY_INDEX_ZERO$1 = '[0]';
147848
147853
  const registry$1 = new Map();
147849
147854
  const watchIdGenerator$1 = new IDGenerator$1('watch-id-');
147850
- const FIRST_TIME_WATCH$1 = {};
147851
- Object.freeze(FIRST_TIME_WATCH$1);
147855
+ const FIRST_TIME_WATCH$1 = Object.freeze({});
147856
+ /**
147857
+ * Extracts widget ID from identifier (e.g., "widget-id23_eventsource" -> "widget-id23")
147858
+ */
147859
+ const getWidgetId$1 = (identifier) => {
147860
+ if (!identifier || typeof identifier !== 'string') {
147861
+ return null;
147862
+ }
147863
+ const match = identifier.match(WIDGET_ID_REGEX$1);
147864
+ return match ? match[1] : null;
147865
+ };
147866
+ /**
147867
+ * Extracts property name from identifier (e.g., "widget-id23_eventsource" -> "eventsource")
147868
+ */
147869
+ const getPropertyName$1 = (identifier) => {
147870
+ if (!identifier || typeof identifier !== 'string') {
147871
+ return identifier;
147872
+ }
147873
+ const match = identifier.match(WIDGET_PROPERTY_REGEX$1);
147874
+ return match ? match[1] : identifier;
147875
+ };
147876
+ /**
147877
+ * Array consumer wrapper for array-based expressions
147878
+ */
147852
147879
  const arrayConsumer$1 = (listenerFn, restExpr, newVal, oldVal) => {
147853
- let data = newVal, formattedData;
147854
- if (isArray$1(data)) {
147855
- formattedData = data.map(function (datum) {
147856
- return findValueOf$1(datum, restExpr);
147857
- });
147858
- // If resulting structure is an array of array, flatten it
147859
- if (isArray$1(formattedData[0])) {
147860
- formattedData = flatten$2(formattedData);
147861
- }
147862
- listenerFn(formattedData, oldVal);
147880
+ if (!isArray$1(newVal)) {
147881
+ return;
147863
147882
  }
147883
+ let formattedData = newVal.map(datum => findValueOf$1(datum, restExpr));
147884
+ // Flatten if result is array of arrays
147885
+ if (isArray$1(formattedData[0])) {
147886
+ formattedData = flatten$2(formattedData);
147887
+ }
147888
+ listenerFn(formattedData, oldVal);
147864
147889
  };
147865
- const getUpdatedWatcInfo$1 = (expr, acceptsArray, listener) => {
147866
- // listener doesn't accept array
147867
- // replace all `[$i]` with `[0]` and return the expression
147868
- let regex = /\[\$i\]/g, $I = '[$i]', $0 = '[0]';
147890
+ /**
147891
+ * Updates watch info for array expressions
147892
+ */
147893
+ const getUpdatedWatchInfo$1 = (expr, acceptsArray, listener) => {
147894
+ const regex = /\[\$i\]/g;
147869
147895
  if (!acceptsArray) {
147870
147896
  return {
147871
- 'expr': expr.replace(regex, $0),
147872
- 'listener': listener
147897
+ expr: expr.replace(regex, ARRAY_INDEX_ZERO$1),
147898
+ listener
147873
147899
  };
147874
147900
  }
147875
- // listener accepts array
147876
- // replace all except the last `[$i]` with `[0]` and return the expression.
147877
- var index = expr.lastIndexOf($I), _expr = expr.substr(0, index).replace($I, $0), restExpr = expr.substr(index + 5), arrayConsumerFn = listener;
147878
- if (restExpr) {
147879
- arrayConsumerFn = arrayConsumer$1.bind(undefined, listener, restExpr);
147880
- }
147901
+ const lastIndex = expr.lastIndexOf(ARRAY_INDEX_PLACEHOLDER$1);
147902
+ const baseExpr = expr.substring(0, lastIndex).replace(ARRAY_INDEX_PLACEHOLDER$1, ARRAY_INDEX_ZERO$1);
147903
+ const restExpr = expr.substring(lastIndex + 5);
147904
+ const arrayConsumerFn = restExpr
147905
+ ? arrayConsumer$1.bind(undefined, listener, restExpr)
147906
+ : listener;
147881
147907
  return {
147882
- 'expr': _expr,
147883
- 'listener': arrayConsumerFn
147908
+ expr: baseExpr,
147909
+ listener: arrayConsumerFn
147884
147910
  };
147885
147911
  };
147912
+ /**
147913
+ * Determines if an expression is static (doesn't need to be watched)
147914
+ */
147915
+ const STATIC_EXPRESSION_NAMES$1 = [
147916
+ "row.getProperty('investment')",
147917
+ "row.getProperty('factsheetLink')",
147918
+ "row.getProperty('isRebalanceEligible')"
147919
+ ];
147920
+ const isStaticExpression$1 = (expr) => {
147921
+ if (typeof expr !== 'string') {
147922
+ return false;
147923
+ }
147924
+ const trimmedExpr = expr.trim();
147925
+ // Expressions that always evaluate to localization strings
147926
+ // if (trimmedExpr.includes('appLocale')) {
147927
+ // return true;
147928
+ // }
147929
+ // Hard-coded static expression names
147930
+ if (STATIC_EXPRESSION_NAMES$1.includes(trimmedExpr)) {
147931
+ return true;
147932
+ }
147933
+ return false;
147934
+ };
147935
+ /**
147936
+ * Gets the scope type from the scope object
147937
+ */
147938
+ const getScopeType$1 = ($scope) => {
147939
+ if (!$scope) {
147940
+ return null;
147941
+ }
147942
+ if ($scope.pageName)
147943
+ return 'Page';
147944
+ if ($scope.prefabName)
147945
+ return 'Prefab';
147946
+ if ($scope.partialName)
147947
+ return 'Partial';
147948
+ // Check for App scope
147949
+ if ($scope.Variables !== undefined &&
147950
+ $scope.Actions !== undefined &&
147951
+ !$scope.pageName &&
147952
+ !$scope.prefabName &&
147953
+ !$scope.partialName) {
147954
+ return 'App';
147955
+ }
147956
+ if ($scope.constructor?.name === 'AppRef') {
147957
+ return 'App';
147958
+ }
147959
+ return null;
147960
+ };
147961
+ /**
147962
+ * Gets scope name based on scope type
147963
+ */
147964
+ const getScopeName$1 = ($scope, scopeType) => {
147965
+ if (!scopeType || !$scope) {
147966
+ return null;
147967
+ }
147968
+ switch (scopeType) {
147969
+ case 'Prefab': return $scope.prefabName || null;
147970
+ case 'Partial': return $scope.partialName || null;
147971
+ case 'Page': return $scope.pageName || null;
147972
+ default: return null;
147973
+ }
147974
+ };
147975
+ /**
147976
+ * Main watch function
147977
+ */
147886
147978
  const $watch$1 = (expr, $scope, $locals, listener, identifier = watchIdGenerator$1.nextUid(), doNotClone = false, config = {}, isMuted) => {
147887
- if (expr.indexOf('[$i]') !== -1) {
147888
- let watchInfo = getUpdatedWatcInfo$1(expr, config && (config.arrayType || config.isList), listener);
147979
+ // Handle array expressions
147980
+ if (expr.includes(ARRAY_INDEX_PLACEHOLDER$1)) {
147981
+ const watchInfo = getUpdatedWatchInfo$1(expr, config.arrayType || config.isList || false, listener);
147889
147982
  expr = watchInfo.expr;
147890
147983
  listener = watchInfo.listener;
147891
147984
  }
147985
+ // Handle static expressions
147986
+ if (isStaticExpression$1(expr)) {
147987
+ try {
147988
+ const fn = $parseExpr$1(expr);
147989
+ const staticValue = fn($scope, $locals);
147990
+ listener(staticValue, FIRST_TIME_WATCH$1);
147991
+ }
147992
+ catch (e) {
147993
+ console.warn(`Error evaluating static expression '${expr}':`, e);
147994
+ listener(undefined, FIRST_TIME_WATCH$1);
147995
+ }
147996
+ return () => { }; // No-op unsubscribe
147997
+ }
147892
147998
  const fn = $parseExpr$1();
147893
- registry$1.set(identifier, {
147894
- fn: fn.bind(expr, $scope, $locals),
147999
+ const scopeType = getScopeType$1($scope);
148000
+ const scopeName = getScopeName$1($scope, scopeType);
148001
+ const destroyFn = () => $unwatch$1(identifier);
148002
+ const watchInfo = {
148003
+ fn: fn.bind(null, $scope, $locals),
147895
148004
  listener,
147896
148005
  expr,
147897
148006
  last: FIRST_TIME_WATCH$1,
147898
148007
  doNotClone,
147899
- isMuted: isMuted
147900
- });
147901
- return () => $unwatch$1(identifier);
148008
+ isMuted,
148009
+ scopeType,
148010
+ scopeName,
148011
+ destroyFn
148012
+ };
148013
+ // Store in registry
148014
+ const widgetId = getWidgetId$1(identifier);
148015
+ if (widgetId) {
148016
+ const propertyName = getPropertyName$1(identifier);
148017
+ if (!registry$1.has(widgetId)) {
148018
+ registry$1.set(widgetId, {});
148019
+ }
148020
+ const widgetGroup = registry$1.get(widgetId);
148021
+ widgetGroup[propertyName] = watchInfo;
148022
+ }
148023
+ else {
148024
+ registry$1.set(identifier, watchInfo);
148025
+ }
148026
+ return destroyFn;
148027
+ };
148028
+ /**
148029
+ * Unwatches a single identifier
148030
+ */
148031
+ const $unwatch$1 = (identifier) => {
148032
+ const widgetId = getWidgetId$1(identifier);
148033
+ if (widgetId) {
148034
+ const propertyName = getPropertyName$1(identifier);
148035
+ const widgetGroup = registry$1.get(widgetId);
148036
+ //@ts-ignore
148037
+ if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
148038
+ const watchInfo = widgetGroup[propertyName];
148039
+ if (watchInfo) {
148040
+ delete widgetGroup[propertyName];
148041
+ // Clean up empty widget groups
148042
+ if (Object.keys(widgetGroup).length === 0) {
148043
+ registry$1.delete(widgetId);
148044
+ }
148045
+ return true;
148046
+ }
148047
+ }
148048
+ }
148049
+ // Fallback to direct lookup
148050
+ if (registry$1.has(identifier)) {
148051
+ registry$1.delete(identifier);
148052
+ return true;
148053
+ }
148054
+ return false;
147902
148055
  };
147903
- const $unwatch$1 = identifier => registry$1.delete(identifier);
147904
- window.watchRegistry = registry$1;
147905
148056
  const $appDigest$1 = (() => {
147906
- return (force) => {
148057
+ return (force = false) => {
147907
148058
  {
147908
148059
  return;
147909
148060
  }
147910
148061
  };
147911
148062
  })();
148063
+ // Export registry for debugging
148064
+ window.watchRegistry = registry$1;
147912
148065
 
147913
148066
  var ComponentType$1;
147914
148067
  (function (ComponentType) {
@@ -202914,11 +203067,11 @@ var DEFAULT_FORMATS;
202914
203067
  DEFAULT_FORMATS["DATE_TIME"] = "yyyy-MM-dd HH:mm:ss";
202915
203068
  })(DEFAULT_FORMATS || (DEFAULT_FORMATS = {}));
202916
203069
 
202917
- const $RAF$1 = window.requestAnimationFrame;
203070
+ const $RAF = window.requestAnimationFrame;
202918
203071
  const $RAFQueue = [];
202919
203072
  const invokeLater = fn => {
202920
203073
  if (!$RAFQueue.length) {
202921
- $RAF$1(() => {
203074
+ $RAF(() => {
202922
203075
  $RAFQueue.forEach(f => f());
202923
203076
  $RAFQueue.length = 0;
202924
203077
  });
@@ -203460,70 +203613,223 @@ const getFnForEventExpr = (expr) => {
203460
203613
  return fnExecutor(expr, ExpressionType.Action);
203461
203614
  };
203462
203615
 
203616
+ // Constants
203617
+ const WIDGET_ID_REGEX = /^(widget-[^_]+)/;
203618
+ const WIDGET_PROPERTY_REGEX = /^widget-[^_]+_(.+)$/;
203619
+ const ARRAY_INDEX_PLACEHOLDER = '[$i]';
203620
+ const ARRAY_INDEX_ZERO = '[0]';
203463
203621
  const registry = new Map();
203464
203622
  const watchIdGenerator = new IDGenerator('watch-id-');
203465
- const FIRST_TIME_WATCH = {};
203466
- Object.freeze(FIRST_TIME_WATCH);
203623
+ const FIRST_TIME_WATCH = Object.freeze({});
203624
+ /**
203625
+ * Extracts widget ID from identifier (e.g., "widget-id23_eventsource" -> "widget-id23")
203626
+ */
203627
+ const getWidgetId = (identifier) => {
203628
+ if (!identifier || typeof identifier !== 'string') {
203629
+ return null;
203630
+ }
203631
+ const match = identifier.match(WIDGET_ID_REGEX);
203632
+ return match ? match[1] : null;
203633
+ };
203634
+ /**
203635
+ * Extracts property name from identifier (e.g., "widget-id23_eventsource" -> "eventsource")
203636
+ */
203637
+ const getPropertyName = (identifier) => {
203638
+ if (!identifier || typeof identifier !== 'string') {
203639
+ return identifier;
203640
+ }
203641
+ const match = identifier.match(WIDGET_PROPERTY_REGEX);
203642
+ return match ? match[1] : identifier;
203643
+ };
203644
+ /**
203645
+ * Array consumer wrapper for array-based expressions
203646
+ */
203467
203647
  const arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {
203468
- let data = newVal, formattedData;
203469
- if (isArray(data)) {
203470
- formattedData = data.map(function (datum) {
203471
- return findValueOf(datum, restExpr);
203472
- });
203473
- // If resulting structure is an array of array, flatten it
203474
- if (isArray(formattedData[0])) {
203475
- formattedData = flatten(formattedData);
203476
- }
203477
- listenerFn(formattedData, oldVal);
203648
+ if (!isArray(newVal)) {
203649
+ return;
203478
203650
  }
203651
+ let formattedData = newVal.map(datum => findValueOf(datum, restExpr));
203652
+ // Flatten if result is array of arrays
203653
+ if (isArray(formattedData[0])) {
203654
+ formattedData = flatten(formattedData);
203655
+ }
203656
+ listenerFn(formattedData, oldVal);
203479
203657
  };
203480
- const getUpdatedWatcInfo = (expr, acceptsArray, listener) => {
203481
- // listener doesn't accept array
203482
- // replace all `[$i]` with `[0]` and return the expression
203483
- let regex = /\[\$i\]/g, $I = '[$i]', $0 = '[0]';
203658
+ /**
203659
+ * Updates watch info for array expressions
203660
+ */
203661
+ const getUpdatedWatchInfo = (expr, acceptsArray, listener) => {
203662
+ const regex = /\[\$i\]/g;
203484
203663
  if (!acceptsArray) {
203485
203664
  return {
203486
- 'expr': expr.replace(regex, $0),
203487
- 'listener': listener
203665
+ expr: expr.replace(regex, ARRAY_INDEX_ZERO),
203666
+ listener
203488
203667
  };
203489
203668
  }
203490
- // listener accepts array
203491
- // replace all except the last `[$i]` with `[0]` and return the expression.
203492
- var index = expr.lastIndexOf($I), _expr = expr.substr(0, index).replace($I, $0), restExpr = expr.substr(index + 5), arrayConsumerFn = listener;
203493
- if (restExpr) {
203494
- arrayConsumerFn = arrayConsumer.bind(undefined, listener, restExpr);
203495
- }
203669
+ const lastIndex = expr.lastIndexOf(ARRAY_INDEX_PLACEHOLDER);
203670
+ const baseExpr = expr.substring(0, lastIndex).replace(ARRAY_INDEX_PLACEHOLDER, ARRAY_INDEX_ZERO);
203671
+ const restExpr = expr.substring(lastIndex + 5);
203672
+ const arrayConsumerFn = restExpr
203673
+ ? arrayConsumer.bind(undefined, listener, restExpr)
203674
+ : listener;
203496
203675
  return {
203497
- 'expr': _expr,
203498
- 'listener': arrayConsumerFn
203676
+ expr: baseExpr,
203677
+ listener: arrayConsumerFn
203499
203678
  };
203500
203679
  };
203680
+ /**
203681
+ * Determines if an expression is static (doesn't need to be watched)
203682
+ */
203683
+ const STATIC_EXPRESSION_NAMES = [
203684
+ "row.getProperty('investment')",
203685
+ "row.getProperty('factsheetLink')",
203686
+ "row.getProperty('isRebalanceEligible')"
203687
+ ];
203688
+ const isStaticExpression = (expr) => {
203689
+ if (typeof expr !== 'string') {
203690
+ return false;
203691
+ }
203692
+ const trimmedExpr = expr.trim();
203693
+ // Expressions that always evaluate to localization strings
203694
+ // if (trimmedExpr.includes('appLocale')) {
203695
+ // return true;
203696
+ // }
203697
+ // Hard-coded static expression names
203698
+ if (STATIC_EXPRESSION_NAMES.includes(trimmedExpr)) {
203699
+ return true;
203700
+ }
203701
+ return false;
203702
+ };
203703
+ /**
203704
+ * Gets the scope type from the scope object
203705
+ */
203706
+ const getScopeType = ($scope) => {
203707
+ if (!$scope) {
203708
+ return null;
203709
+ }
203710
+ if ($scope.pageName)
203711
+ return 'Page';
203712
+ if ($scope.prefabName)
203713
+ return 'Prefab';
203714
+ if ($scope.partialName)
203715
+ return 'Partial';
203716
+ // Check for App scope
203717
+ if ($scope.Variables !== undefined &&
203718
+ $scope.Actions !== undefined &&
203719
+ !$scope.pageName &&
203720
+ !$scope.prefabName &&
203721
+ !$scope.partialName) {
203722
+ return 'App';
203723
+ }
203724
+ if ($scope.constructor?.name === 'AppRef') {
203725
+ return 'App';
203726
+ }
203727
+ return null;
203728
+ };
203729
+ /**
203730
+ * Gets scope name based on scope type
203731
+ */
203732
+ const getScopeName = ($scope, scopeType) => {
203733
+ if (!scopeType || !$scope) {
203734
+ return null;
203735
+ }
203736
+ switch (scopeType) {
203737
+ case 'Prefab': return $scope.prefabName || null;
203738
+ case 'Partial': return $scope.partialName || null;
203739
+ case 'Page': return $scope.pageName || null;
203740
+ default: return null;
203741
+ }
203742
+ };
203743
+ /**
203744
+ * Main watch function
203745
+ */
203501
203746
  const $watch = (expr, $scope, $locals, listener, identifier = watchIdGenerator.nextUid(), doNotClone = false, config = {}, isMuted) => {
203502
- if (expr.indexOf('[$i]') !== -1) {
203503
- let watchInfo = getUpdatedWatcInfo(expr, config && (config.arrayType || config.isList), listener);
203747
+ // Handle array expressions
203748
+ if (expr.includes(ARRAY_INDEX_PLACEHOLDER)) {
203749
+ const watchInfo = getUpdatedWatchInfo(expr, config.arrayType || config.isList || false, listener);
203504
203750
  expr = watchInfo.expr;
203505
203751
  listener = watchInfo.listener;
203506
203752
  }
203753
+ // Handle static expressions
203754
+ if (isStaticExpression(expr)) {
203755
+ try {
203756
+ const fn = $parseExpr(expr);
203757
+ const staticValue = fn($scope, $locals);
203758
+ listener(staticValue, FIRST_TIME_WATCH);
203759
+ }
203760
+ catch (e) {
203761
+ console.warn(`Error evaluating static expression '${expr}':`, e);
203762
+ listener(undefined, FIRST_TIME_WATCH);
203763
+ }
203764
+ return () => { }; // No-op unsubscribe
203765
+ }
203507
203766
  const fn = $parseExpr();
203508
- registry.set(identifier, {
203509
- fn: fn.bind(expr, $scope, $locals),
203767
+ const scopeType = getScopeType($scope);
203768
+ const scopeName = getScopeName($scope, scopeType);
203769
+ const destroyFn = () => $unwatch(identifier);
203770
+ const watchInfo = {
203771
+ fn: fn.bind(null, $scope, $locals),
203510
203772
  listener,
203511
203773
  expr,
203512
203774
  last: FIRST_TIME_WATCH,
203513
203775
  doNotClone,
203514
- isMuted: isMuted
203515
- });
203516
- return () => $unwatch(identifier);
203776
+ isMuted,
203777
+ scopeType,
203778
+ scopeName,
203779
+ destroyFn
203780
+ };
203781
+ // Store in registry
203782
+ const widgetId = getWidgetId(identifier);
203783
+ if (widgetId) {
203784
+ const propertyName = getPropertyName(identifier);
203785
+ if (!registry.has(widgetId)) {
203786
+ registry.set(widgetId, {});
203787
+ }
203788
+ const widgetGroup = registry.get(widgetId);
203789
+ widgetGroup[propertyName] = watchInfo;
203790
+ }
203791
+ else {
203792
+ registry.set(identifier, watchInfo);
203793
+ }
203794
+ return destroyFn;
203795
+ };
203796
+ /**
203797
+ * Unwatches a single identifier
203798
+ */
203799
+ const $unwatch = (identifier) => {
203800
+ const widgetId = getWidgetId(identifier);
203801
+ if (widgetId) {
203802
+ const propertyName = getPropertyName(identifier);
203803
+ const widgetGroup = registry.get(widgetId);
203804
+ //@ts-ignore
203805
+ if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
203806
+ const watchInfo = widgetGroup[propertyName];
203807
+ if (watchInfo) {
203808
+ delete widgetGroup[propertyName];
203809
+ // Clean up empty widget groups
203810
+ if (Object.keys(widgetGroup).length === 0) {
203811
+ registry.delete(widgetId);
203812
+ }
203813
+ return true;
203814
+ }
203815
+ }
203816
+ }
203817
+ // Fallback to direct lookup
203818
+ if (registry.has(identifier)) {
203819
+ registry.delete(identifier);
203820
+ return true;
203821
+ }
203822
+ return false;
203517
203823
  };
203518
- const $unwatch = identifier => registry.delete(identifier);
203519
- window.watchRegistry = registry;
203520
203824
  const $appDigest = (() => {
203521
- return (force) => {
203825
+ return (force = false) => {
203522
203826
  {
203523
203827
  return;
203524
203828
  }
203525
203829
  };
203526
203830
  })();
203831
+ // Export registry for debugging
203832
+ window.watchRegistry = registry;
203527
203833
 
203528
203834
  var ComponentType;
203529
203835
  (function (ComponentType) {
@@ -99707,11 +99707,11 @@ const getRowActionAttrs = attrs => {
99707
99707
  return tmpl;
99708
99708
  };
99709
99709
 
99710
- const $RAF$1 = window.requestAnimationFrame;
99710
+ const $RAF = window.requestAnimationFrame;
99711
99711
  const $RAFQueue = [];
99712
99712
  const invokeLater = fn => {
99713
99713
  if (!$RAFQueue.length) {
99714
- $RAF$1(() => {
99714
+ $RAF(() => {
99715
99715
  $RAFQueue.forEach(f => f());
99716
99716
  $RAFQueue.length = 0;
99717
99717
  });
@@ -100253,70 +100253,223 @@ const getFnForEventExpr = (expr) => {
100253
100253
  return fnExecutor(expr, ExpressionType.Action);
100254
100254
  };
100255
100255
 
100256
+ // Constants
100257
+ const WIDGET_ID_REGEX = /^(widget-[^_]+)/;
100258
+ const WIDGET_PROPERTY_REGEX = /^widget-[^_]+_(.+)$/;
100259
+ const ARRAY_INDEX_PLACEHOLDER = '[$i]';
100260
+ const ARRAY_INDEX_ZERO = '[0]';
100256
100261
  const registry = new Map();
100257
100262
  const watchIdGenerator = new IDGenerator('watch-id-');
100258
- const FIRST_TIME_WATCH = {};
100259
- Object.freeze(FIRST_TIME_WATCH);
100263
+ const FIRST_TIME_WATCH = Object.freeze({});
100264
+ /**
100265
+ * Extracts widget ID from identifier (e.g., "widget-id23_eventsource" -> "widget-id23")
100266
+ */
100267
+ const getWidgetId = (identifier) => {
100268
+ if (!identifier || typeof identifier !== 'string') {
100269
+ return null;
100270
+ }
100271
+ const match = identifier.match(WIDGET_ID_REGEX);
100272
+ return match ? match[1] : null;
100273
+ };
100274
+ /**
100275
+ * Extracts property name from identifier (e.g., "widget-id23_eventsource" -> "eventsource")
100276
+ */
100277
+ const getPropertyName = (identifier) => {
100278
+ if (!identifier || typeof identifier !== 'string') {
100279
+ return identifier;
100280
+ }
100281
+ const match = identifier.match(WIDGET_PROPERTY_REGEX);
100282
+ return match ? match[1] : identifier;
100283
+ };
100284
+ /**
100285
+ * Array consumer wrapper for array-based expressions
100286
+ */
100260
100287
  const arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {
100261
- let data = newVal, formattedData;
100262
- if (isArray(data)) {
100263
- formattedData = data.map(function (datum) {
100264
- return findValueOf(datum, restExpr);
100265
- });
100266
- // If resulting structure is an array of array, flatten it
100267
- if (isArray(formattedData[0])) {
100268
- formattedData = flatten$1(formattedData);
100269
- }
100270
- listenerFn(formattedData, oldVal);
100288
+ if (!isArray(newVal)) {
100289
+ return;
100290
+ }
100291
+ let formattedData = newVal.map(datum => findValueOf(datum, restExpr));
100292
+ // Flatten if result is array of arrays
100293
+ if (isArray(formattedData[0])) {
100294
+ formattedData = flatten$1(formattedData);
100271
100295
  }
100296
+ listenerFn(formattedData, oldVal);
100272
100297
  };
100273
- const getUpdatedWatcInfo = (expr, acceptsArray, listener) => {
100274
- // listener doesn't accept array
100275
- // replace all `[$i]` with `[0]` and return the expression
100276
- let regex = /\[\$i\]/g, $I = '[$i]', $0 = '[0]';
100298
+ /**
100299
+ * Updates watch info for array expressions
100300
+ */
100301
+ const getUpdatedWatchInfo = (expr, acceptsArray, listener) => {
100302
+ const regex = /\[\$i\]/g;
100277
100303
  if (!acceptsArray) {
100278
100304
  return {
100279
- 'expr': expr.replace(regex, $0),
100280
- 'listener': listener
100305
+ expr: expr.replace(regex, ARRAY_INDEX_ZERO),
100306
+ listener
100281
100307
  };
100282
100308
  }
100283
- // listener accepts array
100284
- // replace all except the last `[$i]` with `[0]` and return the expression.
100285
- var index = expr.lastIndexOf($I), _expr = expr.substr(0, index).replace($I, $0), restExpr = expr.substr(index + 5), arrayConsumerFn = listener;
100286
- if (restExpr) {
100287
- arrayConsumerFn = arrayConsumer.bind(undefined, listener, restExpr);
100288
- }
100309
+ const lastIndex = expr.lastIndexOf(ARRAY_INDEX_PLACEHOLDER);
100310
+ const baseExpr = expr.substring(0, lastIndex).replace(ARRAY_INDEX_PLACEHOLDER, ARRAY_INDEX_ZERO);
100311
+ const restExpr = expr.substring(lastIndex + 5);
100312
+ const arrayConsumerFn = restExpr
100313
+ ? arrayConsumer.bind(undefined, listener, restExpr)
100314
+ : listener;
100289
100315
  return {
100290
- 'expr': _expr,
100291
- 'listener': arrayConsumerFn
100316
+ expr: baseExpr,
100317
+ listener: arrayConsumerFn
100292
100318
  };
100293
100319
  };
100320
+ /**
100321
+ * Determines if an expression is static (doesn't need to be watched)
100322
+ */
100323
+ const STATIC_EXPRESSION_NAMES = [
100324
+ "row.getProperty('investment')",
100325
+ "row.getProperty('factsheetLink')",
100326
+ "row.getProperty('isRebalanceEligible')"
100327
+ ];
100328
+ const isStaticExpression = (expr) => {
100329
+ if (typeof expr !== 'string') {
100330
+ return false;
100331
+ }
100332
+ const trimmedExpr = expr.trim();
100333
+ // Expressions that always evaluate to localization strings
100334
+ // if (trimmedExpr.includes('appLocale')) {
100335
+ // return true;
100336
+ // }
100337
+ // Hard-coded static expression names
100338
+ if (STATIC_EXPRESSION_NAMES.includes(trimmedExpr)) {
100339
+ return true;
100340
+ }
100341
+ return false;
100342
+ };
100343
+ /**
100344
+ * Gets the scope type from the scope object
100345
+ */
100346
+ const getScopeType = ($scope) => {
100347
+ if (!$scope) {
100348
+ return null;
100349
+ }
100350
+ if ($scope.pageName)
100351
+ return 'Page';
100352
+ if ($scope.prefabName)
100353
+ return 'Prefab';
100354
+ if ($scope.partialName)
100355
+ return 'Partial';
100356
+ // Check for App scope
100357
+ if ($scope.Variables !== undefined &&
100358
+ $scope.Actions !== undefined &&
100359
+ !$scope.pageName &&
100360
+ !$scope.prefabName &&
100361
+ !$scope.partialName) {
100362
+ return 'App';
100363
+ }
100364
+ if ($scope.constructor?.name === 'AppRef') {
100365
+ return 'App';
100366
+ }
100367
+ return null;
100368
+ };
100369
+ /**
100370
+ * Gets scope name based on scope type
100371
+ */
100372
+ const getScopeName = ($scope, scopeType) => {
100373
+ if (!scopeType || !$scope) {
100374
+ return null;
100375
+ }
100376
+ switch (scopeType) {
100377
+ case 'Prefab': return $scope.prefabName || null;
100378
+ case 'Partial': return $scope.partialName || null;
100379
+ case 'Page': return $scope.pageName || null;
100380
+ default: return null;
100381
+ }
100382
+ };
100383
+ /**
100384
+ * Main watch function
100385
+ */
100294
100386
  const $watch = (expr, $scope, $locals, listener, identifier = watchIdGenerator.nextUid(), doNotClone = false, config = {}, isMuted) => {
100295
- if (expr.indexOf('[$i]') !== -1) {
100296
- let watchInfo = getUpdatedWatcInfo(expr, config && (config.arrayType || config.isList), listener);
100387
+ // Handle array expressions
100388
+ if (expr.includes(ARRAY_INDEX_PLACEHOLDER)) {
100389
+ const watchInfo = getUpdatedWatchInfo(expr, config.arrayType || config.isList || false, listener);
100297
100390
  expr = watchInfo.expr;
100298
100391
  listener = watchInfo.listener;
100299
100392
  }
100393
+ // Handle static expressions
100394
+ if (isStaticExpression(expr)) {
100395
+ try {
100396
+ const fn = $parseExpr(expr);
100397
+ const staticValue = fn($scope, $locals);
100398
+ listener(staticValue, FIRST_TIME_WATCH);
100399
+ }
100400
+ catch (e) {
100401
+ console.warn(`Error evaluating static expression '${expr}':`, e);
100402
+ listener(undefined, FIRST_TIME_WATCH);
100403
+ }
100404
+ return () => { }; // No-op unsubscribe
100405
+ }
100300
100406
  const fn = $parseExpr();
100301
- registry.set(identifier, {
100302
- fn: fn.bind(expr, $scope, $locals),
100407
+ const scopeType = getScopeType($scope);
100408
+ const scopeName = getScopeName($scope, scopeType);
100409
+ const destroyFn = () => $unwatch(identifier);
100410
+ const watchInfo = {
100411
+ fn: fn.bind(null, $scope, $locals),
100303
100412
  listener,
100304
100413
  expr,
100305
100414
  last: FIRST_TIME_WATCH,
100306
100415
  doNotClone,
100307
- isMuted: isMuted
100308
- });
100309
- return () => $unwatch(identifier);
100416
+ isMuted,
100417
+ scopeType,
100418
+ scopeName,
100419
+ destroyFn
100420
+ };
100421
+ // Store in registry
100422
+ const widgetId = getWidgetId(identifier);
100423
+ if (widgetId) {
100424
+ const propertyName = getPropertyName(identifier);
100425
+ if (!registry.has(widgetId)) {
100426
+ registry.set(widgetId, {});
100427
+ }
100428
+ const widgetGroup = registry.get(widgetId);
100429
+ widgetGroup[propertyName] = watchInfo;
100430
+ }
100431
+ else {
100432
+ registry.set(identifier, watchInfo);
100433
+ }
100434
+ return destroyFn;
100435
+ };
100436
+ /**
100437
+ * Unwatches a single identifier
100438
+ */
100439
+ const $unwatch = (identifier) => {
100440
+ const widgetId = getWidgetId(identifier);
100441
+ if (widgetId) {
100442
+ const propertyName = getPropertyName(identifier);
100443
+ const widgetGroup = registry.get(widgetId);
100444
+ //@ts-ignore
100445
+ if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
100446
+ const watchInfo = widgetGroup[propertyName];
100447
+ if (watchInfo) {
100448
+ delete widgetGroup[propertyName];
100449
+ // Clean up empty widget groups
100450
+ if (Object.keys(widgetGroup).length === 0) {
100451
+ registry.delete(widgetId);
100452
+ }
100453
+ return true;
100454
+ }
100455
+ }
100456
+ }
100457
+ // Fallback to direct lookup
100458
+ if (registry.has(identifier)) {
100459
+ registry.delete(identifier);
100460
+ return true;
100461
+ }
100462
+ return false;
100310
100463
  };
100311
- const $unwatch = identifier => registry.delete(identifier);
100312
- window.watchRegistry = registry;
100313
100464
  const $appDigest = (() => {
100314
- return (force) => {
100465
+ return (force = false) => {
100315
100466
  {
100316
100467
  return;
100317
100468
  }
100318
100469
  };
100319
100470
  })();
100471
+ // Export registry for debugging
100472
+ window.watchRegistry = registry;
100320
100473
 
100321
100474
  var ComponentType;
100322
100475
  (function (ComponentType) {
@@ -69,7 +69,7 @@
69
69
  <body>
70
70
  <div class="header">
71
71
  <h1>Angular Project Dependencies Report</h1>
72
- <p class="timestamp">Generated on: 12/3/2025, 12:06:47 PM</p>
72
+ <p class="timestamp">Generated on: 12/5/2025, 4:54:28 PM</p>
73
73
  </div>
74
74
 
75
75
  <div class="section">
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@wavemaker/angular-app",
3
- "version": "11.14.1-6.6324",
3
+ "version": "11.14.1-8.6337",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@wavemaker/angular-app",
9
- "version": "11.14.1-6.6324",
9
+ "version": "11.14.1-8.6337",
10
10
  "dependencies": {
11
11
  "@angular/animations": "18.2.13",
12
12
  "@angular/common": "18.2.13",
@@ -23,12 +23,12 @@
23
23
  "@fullcalendar/list": "6.1.18",
24
24
  "@fullcalendar/timegrid": "6.1.18",
25
25
  "@metrichor/jmespath": "0.3.1",
26
- "@wavemaker/app-ng-runtime": "11.14.1-6.6324",
27
- "@wavemaker/custom-widgets-m3": "11.14.1-6.6324",
26
+ "@wavemaker/app-ng-runtime": "11.14.1-8.6337",
27
+ "@wavemaker/custom-widgets-m3": "11.14.1-8.6337",
28
28
  "@wavemaker/focus-trap": "1.0.1",
29
- "@wavemaker/foundation-css": "11.14.1-6.6324",
29
+ "@wavemaker/foundation-css": "11.14.1-8.6337",
30
30
  "@wavemaker/nvd3": "1.8.15",
31
- "@wavemaker/variables": "11.14.1-6.6324",
31
+ "@wavemaker/variables": "11.14.1-8.6337",
32
32
  "@ztree/ztree_v3": "3.5.48",
33
33
  "acorn": "^8.15.0",
34
34
  "angular-imask": "7.6.1",
@@ -568,12 +568,12 @@
568
568
  }
569
569
  },
570
570
  "node_modules/@angular-devkit/schematics": {
571
- "version": "20.3.12",
572
- "integrity": "sha512-JqJ1u59y+Ud51k/8MHYzSP+aQOeC2PJBaDmMnvqfWVaIt6n3x4gc/VtuhqhpJ0SKulbFuOWgAfI6QbPFrgUYQQ==",
571
+ "version": "20.3.13",
572
+ "integrity": "sha512-hdMKY4rUTko8xqeWYGnwwDYDomkeOoLsYsP6SdaHWK7hpGvzWsT6Q/aIv8J8NrCYkLu+M+5nLiKOooweUZu3GQ==",
573
573
  "dev": true,
574
574
  "license": "MIT",
575
575
  "dependencies": {
576
- "@angular-devkit/core": "20.3.12",
576
+ "@angular-devkit/core": "20.3.13",
577
577
  "jsonc-parser": "3.3.1",
578
578
  "magic-string": "0.30.17",
579
579
  "ora": "8.2.0",
@@ -586,8 +586,8 @@
586
586
  }
587
587
  },
588
588
  "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": {
589
- "version": "20.3.12",
590
- "integrity": "sha512-ReFxd/UOoVDr3+kIUjmYILQZF89qg62POdY7a7OqBH7plmInFlYVSEDouJvGqj3LVCPiqTk2ZOSChbhS/eLxXA==",
589
+ "version": "20.3.13",
590
+ "integrity": "sha512-/D84T1Caxll3I2sRihPDR9UaWBhF50M+tAX15PdP6uSh/TxwAlLl9p7Rm1bD0mPjPercqaEKA+h9a9qLP16hug==",
591
591
  "dev": true,
592
592
  "license": "MIT",
593
593
  "dependencies": {
@@ -794,12 +794,12 @@
794
794
  }
795
795
  },
796
796
  "node_modules/@angular-eslint/builder/node_modules/@angular-devkit/architect": {
797
- "version": "0.2003.12",
798
- "integrity": "sha512-5H40lAFF4CKY32C4HOp6bTlOF1f4WsGCwe7FjFQp9A+T7yoCBiHpIWt2JKTwV4sBoTKVDZOnuf0GG+UVKjQT4A==",
797
+ "version": "0.2003.13",
798
+ "integrity": "sha512-JyH6Af6PNC1IHJToColFk1RaXDU87mpPjz7M5sWDfn8bC+KBipw6dSdRkCEuw0D9HY1lZkC9EBV9k9GhpvHjCQ==",
799
799
  "dev": true,
800
800
  "license": "MIT",
801
801
  "dependencies": {
802
- "@angular-devkit/core": "20.3.12",
802
+ "@angular-devkit/core": "20.3.13",
803
803
  "rxjs": "7.8.2"
804
804
  },
805
805
  "engines": {
@@ -809,8 +809,8 @@
809
809
  }
810
810
  },
811
811
  "node_modules/@angular-eslint/builder/node_modules/@angular-devkit/core": {
812
- "version": "20.3.12",
813
- "integrity": "sha512-ReFxd/UOoVDr3+kIUjmYILQZF89qg62POdY7a7OqBH7plmInFlYVSEDouJvGqj3LVCPiqTk2ZOSChbhS/eLxXA==",
812
+ "version": "20.3.13",
813
+ "integrity": "sha512-/D84T1Caxll3I2sRihPDR9UaWBhF50M+tAX15PdP6uSh/TxwAlLl9p7Rm1bD0mPjPercqaEKA+h9a9qLP16hug==",
814
814
  "dev": true,
815
815
  "license": "MIT",
816
816
  "dependencies": {
@@ -913,8 +913,8 @@
913
913
  }
914
914
  },
915
915
  "node_modules/@angular-eslint/schematics/node_modules/@angular-devkit/core": {
916
- "version": "20.3.12",
917
- "integrity": "sha512-ReFxd/UOoVDr3+kIUjmYILQZF89qg62POdY7a7OqBH7plmInFlYVSEDouJvGqj3LVCPiqTk2ZOSChbhS/eLxXA==",
916
+ "version": "20.3.13",
917
+ "integrity": "sha512-/D84T1Caxll3I2sRihPDR9UaWBhF50M+tAX15PdP6uSh/TxwAlLl9p7Rm1bD0mPjPercqaEKA+h9a9qLP16hug==",
918
918
  "dev": true,
919
919
  "license": "MIT",
920
920
  "dependencies": {
@@ -8693,8 +8693,8 @@
8693
8693
  }
8694
8694
  },
8695
8695
  "node_modules/@wavemaker/app-ng-runtime": {
8696
- "version": "11.14.1-6.6324",
8697
- "integrity": "sha512-5KsrfmMmR/CSwHJhSpqRjZXCK5v3K8ym14EtTVqLS2HlnNTRWF29rpHLPaCSCTnteo7jtOYTW4cCsD5ivOFfkg==",
8696
+ "version": "11.14.1-8.6337",
8697
+ "integrity": "sha512-MxNZBps4dQ2jCvnDSgvjUYP35oWNx85tgN94ulgnYWKm50ud4skWs+Bgds7nqpzgAF67zZyMi1gwiu5b03lOlA==",
8698
8698
  "license": "MIT",
8699
8699
  "engines": {
8700
8700
  "node": ">=18.16.1",
@@ -8702,8 +8702,8 @@
8702
8702
  }
8703
8703
  },
8704
8704
  "node_modules/@wavemaker/custom-widgets-m3": {
8705
- "version": "11.14.1-6.6324",
8706
- "integrity": "sha512-k354qE5DvPViKkwkFQppikn+T/RjkpyGrMfcM9phITLINb1Yz2aJZqlUwlN9nY4mewZHLihxDyKzZe83pRGChQ==",
8705
+ "version": "11.14.1-8.6337",
8706
+ "integrity": "sha512-WvAvdZJZ3hCuEA2maP/BLY7ToGUfFYXD8mUzjMrA8fp4Mdb4VyzQvZJh2XZLjPCo9CU78JoMGzFK97jwWKYnrQ==",
8707
8707
  "license": "ISC"
8708
8708
  },
8709
8709
  "node_modules/@wavemaker/focus-trap": {
@@ -8716,8 +8716,8 @@
8716
8716
  }
8717
8717
  },
8718
8718
  "node_modules/@wavemaker/foundation-css": {
8719
- "version": "11.14.1-6.6324",
8720
- "integrity": "sha512-CDLgFjC9jvd7/uRzs03SVxFA9FN9mmL1bzREzepWxTVxIG99tO0d5+pR4ibvIUhx1GDQg7tFzZygMa2pZ+sBGA==",
8719
+ "version": "11.14.1-8.6337",
8720
+ "integrity": "sha512-WkE64qSCQmeIAG8L0Qsqn3mTY2sSQxuoFbftMcuk67G57zuVdVfDIuMwO4DwxZYp5lOvOOQ+xGKwM69BC8xtUA==",
8721
8721
  "license": "ISC",
8722
8722
  "dependencies": {
8723
8723
  "chroma-js": "^3.1.2"
@@ -8732,8 +8732,8 @@
8732
8732
  }
8733
8733
  },
8734
8734
  "node_modules/@wavemaker/variables": {
8735
- "version": "11.14.1-6.6324",
8736
- "integrity": "sha512-BHVnNHaBFnvWGgek5ewCMgQMZcs+7l6DjnG5/YjcnCL+Tj0sNCtAwfzj73DbcArGifQyGsku+0krYvnt3YeAXA==",
8735
+ "version": "11.14.1-8.6337",
8736
+ "integrity": "sha512-zOj4+VktLFY8mm/qIPh+PwK9TEVG0sglfrVM3bUE9l2iU3ei8ldd7E9AikSV1O/UWOYWAvbM9PMmQ9M9LCxOaA==",
8737
8737
  "license": "ISC",
8738
8738
  "dependencies": {
8739
8739
  "@metrichor/jmespath": "^0.3.1",
@@ -9551,8 +9551,8 @@
9551
9551
  "license": "MIT"
9552
9552
  },
9553
9553
  "node_modules/baseline-browser-mapping": {
9554
- "version": "2.8.32",
9555
- "integrity": "sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==",
9554
+ "version": "2.9.2",
9555
+ "integrity": "sha512-PxSsosKQjI38iXkmb3d0Y32efqyA0uW4s41u4IVBsLlWLhCiYNpH/AfNOVWRqCQBlD8TFJTz6OUWNd4DFJCnmw==",
9556
9556
  "dev": true,
9557
9557
  "license": "Apache-2.0",
9558
9558
  "bin": {
@@ -9697,8 +9697,8 @@
9697
9697
  }
9698
9698
  },
9699
9699
  "node_modules/browserslist": {
9700
- "version": "4.28.0",
9701
- "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==",
9700
+ "version": "4.28.1",
9701
+ "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
9702
9702
  "dev": true,
9703
9703
  "funding": [
9704
9704
  {
@@ -9716,11 +9716,11 @@
9716
9716
  ],
9717
9717
  "license": "MIT",
9718
9718
  "dependencies": {
9719
- "baseline-browser-mapping": "^2.8.25",
9720
- "caniuse-lite": "^1.0.30001754",
9721
- "electron-to-chromium": "^1.5.249",
9719
+ "baseline-browser-mapping": "^2.9.0",
9720
+ "caniuse-lite": "^1.0.30001759",
9721
+ "electron-to-chromium": "^1.5.263",
9722
9722
  "node-releases": "^2.0.27",
9723
- "update-browserslist-db": "^1.1.4"
9723
+ "update-browserslist-db": "^1.2.0"
9724
9724
  },
9725
9725
  "bin": {
9726
9726
  "browserslist": "cli.js"
@@ -9967,8 +9967,8 @@
9967
9967
  }
9968
9968
  },
9969
9969
  "node_modules/caniuse-lite": {
9970
- "version": "1.0.30001757",
9971
- "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==",
9970
+ "version": "1.0.30001759",
9971
+ "integrity": "sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==",
9972
9972
  "dev": true,
9973
9973
  "funding": [
9974
9974
  {
@@ -11696,8 +11696,8 @@
11696
11696
  "license": "MIT"
11697
11697
  },
11698
11698
  "node_modules/electron-to-chromium": {
11699
- "version": "1.5.263",
11700
- "integrity": "sha512-DrqJ11Knd+lo+dv+lltvfMDLU27g14LMdH2b0O3Pio4uk0x+z7OR+JrmyacTPN2M8w3BrZ7/RTwG3R9B7irPlg==",
11699
+ "version": "1.5.265",
11700
+ "integrity": "sha512-B7IkLR1/AE+9jR2LtVF/1/6PFhY5TlnEHnlrKmGk7PvkJibg5jr+mLXLLzq3QYl6PA1T/vLDthQPqIPAlS/PPA==",
11701
11701
  "dev": true,
11702
11702
  "license": "ISC"
11703
11703
  },
@@ -22305,8 +22305,8 @@
22305
22305
  }
22306
22306
  },
22307
22307
  "node_modules/update-browserslist-db": {
22308
- "version": "1.1.4",
22309
- "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==",
22308
+ "version": "1.2.2",
22309
+ "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==",
22310
22310
  "dev": true,
22311
22311
  "funding": [
22312
22312
  {
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@wavemaker/angular-app",
3
- "version": "11.14.1-6.6324",
3
+ "version": "11.14.1-8.6337",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@wavemaker/angular-app",
9
- "version": "11.14.1-6.6324",
9
+ "version": "11.14.1-8.6337",
10
10
  "dependencies": {
11
11
  "@angular/animations": "18.2.13",
12
12
  "@angular/common": "18.2.13",
@@ -23,12 +23,12 @@
23
23
  "@fullcalendar/list": "6.1.18",
24
24
  "@fullcalendar/timegrid": "6.1.18",
25
25
  "@metrichor/jmespath": "0.3.1",
26
- "@wavemaker/app-ng-runtime": "11.14.1-6.6324",
27
- "@wavemaker/custom-widgets-m3": "11.14.1-6.6324",
26
+ "@wavemaker/app-ng-runtime": "11.14.1-8.6337",
27
+ "@wavemaker/custom-widgets-m3": "11.14.1-8.6337",
28
28
  "@wavemaker/focus-trap": "1.0.1",
29
- "@wavemaker/foundation-css": "11.14.1-6.6324",
29
+ "@wavemaker/foundation-css": "11.14.1-8.6337",
30
30
  "@wavemaker/nvd3": "1.8.15",
31
- "@wavemaker/variables": "11.14.1-6.6324",
31
+ "@wavemaker/variables": "11.14.1-8.6337",
32
32
  "@ztree/ztree_v3": "3.5.48",
33
33
  "acorn": "^8.15.0",
34
34
  "angular-imask": "7.6.1",
@@ -568,12 +568,12 @@
568
568
  }
569
569
  },
570
570
  "node_modules/@angular-devkit/schematics": {
571
- "version": "20.3.12",
572
- "integrity": "sha512-JqJ1u59y+Ud51k/8MHYzSP+aQOeC2PJBaDmMnvqfWVaIt6n3x4gc/VtuhqhpJ0SKulbFuOWgAfI6QbPFrgUYQQ==",
571
+ "version": "20.3.13",
572
+ "integrity": "sha512-hdMKY4rUTko8xqeWYGnwwDYDomkeOoLsYsP6SdaHWK7hpGvzWsT6Q/aIv8J8NrCYkLu+M+5nLiKOooweUZu3GQ==",
573
573
  "dev": true,
574
574
  "license": "MIT",
575
575
  "dependencies": {
576
- "@angular-devkit/core": "20.3.12",
576
+ "@angular-devkit/core": "20.3.13",
577
577
  "jsonc-parser": "3.3.1",
578
578
  "magic-string": "0.30.17",
579
579
  "ora": "8.2.0",
@@ -586,8 +586,8 @@
586
586
  }
587
587
  },
588
588
  "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": {
589
- "version": "20.3.12",
590
- "integrity": "sha512-ReFxd/UOoVDr3+kIUjmYILQZF89qg62POdY7a7OqBH7plmInFlYVSEDouJvGqj3LVCPiqTk2ZOSChbhS/eLxXA==",
589
+ "version": "20.3.13",
590
+ "integrity": "sha512-/D84T1Caxll3I2sRihPDR9UaWBhF50M+tAX15PdP6uSh/TxwAlLl9p7Rm1bD0mPjPercqaEKA+h9a9qLP16hug==",
591
591
  "dev": true,
592
592
  "license": "MIT",
593
593
  "dependencies": {
@@ -794,12 +794,12 @@
794
794
  }
795
795
  },
796
796
  "node_modules/@angular-eslint/builder/node_modules/@angular-devkit/architect": {
797
- "version": "0.2003.12",
798
- "integrity": "sha512-5H40lAFF4CKY32C4HOp6bTlOF1f4WsGCwe7FjFQp9A+T7yoCBiHpIWt2JKTwV4sBoTKVDZOnuf0GG+UVKjQT4A==",
797
+ "version": "0.2003.13",
798
+ "integrity": "sha512-JyH6Af6PNC1IHJToColFk1RaXDU87mpPjz7M5sWDfn8bC+KBipw6dSdRkCEuw0D9HY1lZkC9EBV9k9GhpvHjCQ==",
799
799
  "dev": true,
800
800
  "license": "MIT",
801
801
  "dependencies": {
802
- "@angular-devkit/core": "20.3.12",
802
+ "@angular-devkit/core": "20.3.13",
803
803
  "rxjs": "7.8.2"
804
804
  },
805
805
  "engines": {
@@ -809,8 +809,8 @@
809
809
  }
810
810
  },
811
811
  "node_modules/@angular-eslint/builder/node_modules/@angular-devkit/core": {
812
- "version": "20.3.12",
813
- "integrity": "sha512-ReFxd/UOoVDr3+kIUjmYILQZF89qg62POdY7a7OqBH7plmInFlYVSEDouJvGqj3LVCPiqTk2ZOSChbhS/eLxXA==",
812
+ "version": "20.3.13",
813
+ "integrity": "sha512-/D84T1Caxll3I2sRihPDR9UaWBhF50M+tAX15PdP6uSh/TxwAlLl9p7Rm1bD0mPjPercqaEKA+h9a9qLP16hug==",
814
814
  "dev": true,
815
815
  "license": "MIT",
816
816
  "dependencies": {
@@ -913,8 +913,8 @@
913
913
  }
914
914
  },
915
915
  "node_modules/@angular-eslint/schematics/node_modules/@angular-devkit/core": {
916
- "version": "20.3.12",
917
- "integrity": "sha512-ReFxd/UOoVDr3+kIUjmYILQZF89qg62POdY7a7OqBH7plmInFlYVSEDouJvGqj3LVCPiqTk2ZOSChbhS/eLxXA==",
916
+ "version": "20.3.13",
917
+ "integrity": "sha512-/D84T1Caxll3I2sRihPDR9UaWBhF50M+tAX15PdP6uSh/TxwAlLl9p7Rm1bD0mPjPercqaEKA+h9a9qLP16hug==",
918
918
  "dev": true,
919
919
  "license": "MIT",
920
920
  "dependencies": {
@@ -8693,8 +8693,8 @@
8693
8693
  }
8694
8694
  },
8695
8695
  "node_modules/@wavemaker/app-ng-runtime": {
8696
- "version": "11.14.1-6.6324",
8697
- "integrity": "sha512-5KsrfmMmR/CSwHJhSpqRjZXCK5v3K8ym14EtTVqLS2HlnNTRWF29rpHLPaCSCTnteo7jtOYTW4cCsD5ivOFfkg==",
8696
+ "version": "11.14.1-8.6337",
8697
+ "integrity": "sha512-MxNZBps4dQ2jCvnDSgvjUYP35oWNx85tgN94ulgnYWKm50ud4skWs+Bgds7nqpzgAF67zZyMi1gwiu5b03lOlA==",
8698
8698
  "license": "MIT",
8699
8699
  "engines": {
8700
8700
  "node": ">=18.16.1",
@@ -8702,8 +8702,8 @@
8702
8702
  }
8703
8703
  },
8704
8704
  "node_modules/@wavemaker/custom-widgets-m3": {
8705
- "version": "11.14.1-6.6324",
8706
- "integrity": "sha512-k354qE5DvPViKkwkFQppikn+T/RjkpyGrMfcM9phITLINb1Yz2aJZqlUwlN9nY4mewZHLihxDyKzZe83pRGChQ==",
8705
+ "version": "11.14.1-8.6337",
8706
+ "integrity": "sha512-WvAvdZJZ3hCuEA2maP/BLY7ToGUfFYXD8mUzjMrA8fp4Mdb4VyzQvZJh2XZLjPCo9CU78JoMGzFK97jwWKYnrQ==",
8707
8707
  "license": "ISC"
8708
8708
  },
8709
8709
  "node_modules/@wavemaker/focus-trap": {
@@ -8716,8 +8716,8 @@
8716
8716
  }
8717
8717
  },
8718
8718
  "node_modules/@wavemaker/foundation-css": {
8719
- "version": "11.14.1-6.6324",
8720
- "integrity": "sha512-CDLgFjC9jvd7/uRzs03SVxFA9FN9mmL1bzREzepWxTVxIG99tO0d5+pR4ibvIUhx1GDQg7tFzZygMa2pZ+sBGA==",
8719
+ "version": "11.14.1-8.6337",
8720
+ "integrity": "sha512-WkE64qSCQmeIAG8L0Qsqn3mTY2sSQxuoFbftMcuk67G57zuVdVfDIuMwO4DwxZYp5lOvOOQ+xGKwM69BC8xtUA==",
8721
8721
  "license": "ISC",
8722
8722
  "dependencies": {
8723
8723
  "chroma-js": "^3.1.2"
@@ -8732,8 +8732,8 @@
8732
8732
  }
8733
8733
  },
8734
8734
  "node_modules/@wavemaker/variables": {
8735
- "version": "11.14.1-6.6324",
8736
- "integrity": "sha512-BHVnNHaBFnvWGgek5ewCMgQMZcs+7l6DjnG5/YjcnCL+Tj0sNCtAwfzj73DbcArGifQyGsku+0krYvnt3YeAXA==",
8735
+ "version": "11.14.1-8.6337",
8736
+ "integrity": "sha512-zOj4+VktLFY8mm/qIPh+PwK9TEVG0sglfrVM3bUE9l2iU3ei8ldd7E9AikSV1O/UWOYWAvbM9PMmQ9M9LCxOaA==",
8737
8737
  "license": "ISC",
8738
8738
  "dependencies": {
8739
8739
  "@metrichor/jmespath": "^0.3.1",
@@ -9551,8 +9551,8 @@
9551
9551
  "license": "MIT"
9552
9552
  },
9553
9553
  "node_modules/baseline-browser-mapping": {
9554
- "version": "2.8.32",
9555
- "integrity": "sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==",
9554
+ "version": "2.9.2",
9555
+ "integrity": "sha512-PxSsosKQjI38iXkmb3d0Y32efqyA0uW4s41u4IVBsLlWLhCiYNpH/AfNOVWRqCQBlD8TFJTz6OUWNd4DFJCnmw==",
9556
9556
  "dev": true,
9557
9557
  "license": "Apache-2.0",
9558
9558
  "bin": {
@@ -9697,8 +9697,8 @@
9697
9697
  }
9698
9698
  },
9699
9699
  "node_modules/browserslist": {
9700
- "version": "4.28.0",
9701
- "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==",
9700
+ "version": "4.28.1",
9701
+ "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
9702
9702
  "dev": true,
9703
9703
  "funding": [
9704
9704
  {
@@ -9716,11 +9716,11 @@
9716
9716
  ],
9717
9717
  "license": "MIT",
9718
9718
  "dependencies": {
9719
- "baseline-browser-mapping": "^2.8.25",
9720
- "caniuse-lite": "^1.0.30001754",
9721
- "electron-to-chromium": "^1.5.249",
9719
+ "baseline-browser-mapping": "^2.9.0",
9720
+ "caniuse-lite": "^1.0.30001759",
9721
+ "electron-to-chromium": "^1.5.263",
9722
9722
  "node-releases": "^2.0.27",
9723
- "update-browserslist-db": "^1.1.4"
9723
+ "update-browserslist-db": "^1.2.0"
9724
9724
  },
9725
9725
  "bin": {
9726
9726
  "browserslist": "cli.js"
@@ -9967,8 +9967,8 @@
9967
9967
  }
9968
9968
  },
9969
9969
  "node_modules/caniuse-lite": {
9970
- "version": "1.0.30001757",
9971
- "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==",
9970
+ "version": "1.0.30001759",
9971
+ "integrity": "sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==",
9972
9972
  "dev": true,
9973
9973
  "funding": [
9974
9974
  {
@@ -11696,8 +11696,8 @@
11696
11696
  "license": "MIT"
11697
11697
  },
11698
11698
  "node_modules/electron-to-chromium": {
11699
- "version": "1.5.263",
11700
- "integrity": "sha512-DrqJ11Knd+lo+dv+lltvfMDLU27g14LMdH2b0O3Pio4uk0x+z7OR+JrmyacTPN2M8w3BrZ7/RTwG3R9B7irPlg==",
11699
+ "version": "1.5.265",
11700
+ "integrity": "sha512-B7IkLR1/AE+9jR2LtVF/1/6PFhY5TlnEHnlrKmGk7PvkJibg5jr+mLXLLzq3QYl6PA1T/vLDthQPqIPAlS/PPA==",
11701
11701
  "dev": true,
11702
11702
  "license": "ISC"
11703
11703
  },
@@ -22305,8 +22305,8 @@
22305
22305
  }
22306
22306
  },
22307
22307
  "node_modules/update-browserslist-db": {
22308
- "version": "1.1.4",
22309
- "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==",
22308
+ "version": "1.2.2",
22309
+ "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==",
22310
22310
  "dev": true,
22311
22311
  "funding": [
22312
22312
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavemaker/angular-app",
3
- "version": "11.14.1-6.6324",
3
+ "version": "11.14.1-8.6337",
4
4
  "scripts": {
5
5
  "ng": "ng",
6
6
  "start": "./node_modules/.bin/ng serve",
@@ -36,11 +36,11 @@
36
36
  "@fullcalendar/list": "6.1.18",
37
37
  "@fullcalendar/timegrid": "6.1.18",
38
38
  "@metrichor/jmespath": "0.3.1",
39
- "@wavemaker/custom-widgets-m3": "11.14.1-6.6324",
39
+ "@wavemaker/custom-widgets-m3": "11.14.1-8.6337",
40
40
  "@wavemaker/focus-trap": "1.0.1",
41
- "@wavemaker/foundation-css": "11.14.1-6.6324",
41
+ "@wavemaker/foundation-css": "11.14.1-8.6337",
42
42
  "@wavemaker/nvd3": "1.8.15",
43
- "@wavemaker/variables": "11.14.1-6.6324",
43
+ "@wavemaker/variables": "11.14.1-8.6337",
44
44
  "@ztree/ztree_v3": "3.5.48",
45
45
  "acorn": "^8.15.0",
46
46
  "angular-imask": "7.6.1",
@@ -62,7 +62,7 @@
62
62
  "tslib": "2.8.1",
63
63
  "x2js": "3.4.4",
64
64
  "zone.js": "0.15.1",
65
- "@wavemaker/app-ng-runtime": "11.14.1-6.6324"
65
+ "@wavemaker/app-ng-runtime": "11.14.1-8.6337"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@ampproject/rollup-plugin-closure-compiler": "^0.27.0",