@wavemaker/angular-app 11.14.1-16.6418 → 11.14.1-17.6420
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.
- package/dependencies/pipe-provider.cjs.js +88 -406
- package/dependencies/transpilation-web.cjs.js +38 -196
- package/dependency-report.html +1 -1
- package/npm-shrinkwrap.json +152 -164
- package/package-lock.json +152 -164
- package/package.json +5 -5
|
@@ -147299,11 +147299,11 @@ const CURRENCY_INFO = {
|
|
|
147299
147299
|
}
|
|
147300
147300
|
};
|
|
147301
147301
|
|
|
147302
|
-
const $RAF$1 = window.requestAnimationFrame;
|
|
147302
|
+
const $RAF$1$1 = window.requestAnimationFrame;
|
|
147303
147303
|
const $RAFQueue$1 = [];
|
|
147304
147304
|
const invokeLater$1 = fn => {
|
|
147305
147305
|
if (!$RAFQueue$1.length) {
|
|
147306
|
-
$RAF$1(() => {
|
|
147306
|
+
$RAF$1$1(() => {
|
|
147307
147307
|
$RAFQueue$1.forEach(f => f());
|
|
147308
147308
|
$RAFQueue$1.length = 0;
|
|
147309
147309
|
});
|
|
@@ -147845,223 +147845,70 @@ 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]';
|
|
147853
147848
|
const registry$1 = new Map();
|
|
147854
147849
|
const watchIdGenerator$1 = new IDGenerator$1('watch-id-');
|
|
147855
|
-
const FIRST_TIME_WATCH$1 =
|
|
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
|
-
*/
|
|
147850
|
+
const FIRST_TIME_WATCH$1 = {};
|
|
147851
|
+
Object.freeze(FIRST_TIME_WATCH$1);
|
|
147879
147852
|
const arrayConsumer$1 = (listenerFn, restExpr, newVal, oldVal) => {
|
|
147880
|
-
|
|
147881
|
-
|
|
147882
|
-
|
|
147883
|
-
|
|
147884
|
-
|
|
147885
|
-
|
|
147886
|
-
|
|
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);
|
|
147887
147863
|
}
|
|
147888
|
-
listenerFn(formattedData, oldVal);
|
|
147889
147864
|
};
|
|
147890
|
-
|
|
147891
|
-
|
|
147892
|
-
|
|
147893
|
-
|
|
147894
|
-
const regex = /\[\$i\]/g;
|
|
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]';
|
|
147895
147869
|
if (!acceptsArray) {
|
|
147896
147870
|
return {
|
|
147897
|
-
expr: expr.replace(regex,
|
|
147898
|
-
listener
|
|
147871
|
+
'expr': expr.replace(regex, $0),
|
|
147872
|
+
'listener': listener
|
|
147899
147873
|
};
|
|
147900
147874
|
}
|
|
147901
|
-
|
|
147902
|
-
|
|
147903
|
-
|
|
147904
|
-
|
|
147905
|
-
|
|
147906
|
-
|
|
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
|
+
}
|
|
147907
147881
|
return {
|
|
147908
|
-
expr:
|
|
147909
|
-
listener: arrayConsumerFn
|
|
147882
|
+
'expr': _expr,
|
|
147883
|
+
'listener': arrayConsumerFn
|
|
147910
147884
|
};
|
|
147911
147885
|
};
|
|
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
|
-
*/
|
|
147978
147886
|
const $watch$1 = (expr, $scope, $locals, listener, identifier = watchIdGenerator$1.nextUid(), doNotClone = false, config = {}, isMuted) => {
|
|
147979
|
-
|
|
147980
|
-
|
|
147981
|
-
const watchInfo = getUpdatedWatchInfo$1(expr, config.arrayType || config.isList || false, listener);
|
|
147887
|
+
if (expr.indexOf('[$i]') !== -1) {
|
|
147888
|
+
let watchInfo = getUpdatedWatcInfo$1(expr, config && (config.arrayType || config.isList), listener);
|
|
147982
147889
|
expr = watchInfo.expr;
|
|
147983
147890
|
listener = watchInfo.listener;
|
|
147984
147891
|
}
|
|
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
|
-
}
|
|
147998
147892
|
const fn = $parseExpr$1();
|
|
147999
|
-
|
|
148000
|
-
|
|
148001
|
-
const destroyFn = () => $unwatch$1(identifier);
|
|
148002
|
-
const watchInfo = {
|
|
148003
|
-
fn: fn.bind(null, $scope, $locals),
|
|
147893
|
+
registry$1.set(identifier, {
|
|
147894
|
+
fn: fn.bind(expr, $scope, $locals),
|
|
148004
147895
|
listener,
|
|
148005
147896
|
expr,
|
|
148006
147897
|
last: FIRST_TIME_WATCH$1,
|
|
148007
147898
|
doNotClone,
|
|
148008
|
-
isMuted
|
|
148009
|
-
|
|
148010
|
-
|
|
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;
|
|
147899
|
+
isMuted: isMuted
|
|
147900
|
+
});
|
|
147901
|
+
return () => $unwatch$1(identifier);
|
|
148055
147902
|
};
|
|
147903
|
+
const $unwatch$1 = identifier => registry$1.delete(identifier);
|
|
147904
|
+
window.watchRegistry = registry$1;
|
|
148056
147905
|
const $appDigest$1 = (() => {
|
|
148057
|
-
return (force
|
|
147906
|
+
return (force) => {
|
|
148058
147907
|
{
|
|
148059
147908
|
return;
|
|
148060
147909
|
}
|
|
148061
147910
|
};
|
|
148062
147911
|
})();
|
|
148063
|
-
// Export registry for debugging
|
|
148064
|
-
window.watchRegistry = registry$1;
|
|
148065
147912
|
|
|
148066
147913
|
var ComponentType$1;
|
|
148067
147914
|
(function (ComponentType) {
|
|
@@ -148117,8 +147964,8 @@ var Operation$1;
|
|
|
148117
147964
|
const DataSource$1 = {
|
|
148118
147965
|
Operation: Operation$1
|
|
148119
147966
|
};
|
|
148120
|
-
|
|
148121
|
-
}
|
|
147967
|
+
class App {
|
|
147968
|
+
}
|
|
148122
147969
|
let AbstractI18nService$1 = class AbstractI18nService {
|
|
148123
147970
|
};
|
|
148124
147971
|
|
|
@@ -148136,7 +147983,6 @@ const REGEX$1 = {
|
|
|
148136
147983
|
SUPPORTED_AUDIO_FORMAT: /\.(mp3|ogg|webm|wma|3gp|wav|m4a)$/i,
|
|
148137
147984
|
SUPPORTED_VIDEO_FORMAT: /\.(mp4|ogg|webm|wmv|mpeg|mpg|avi|mov)$/i,
|
|
148138
147985
|
VALID_WEB_URL: /^(http[s]?:\/\/)(www\.){0,1}[a-zA-Z0-9=:?\/\.\-]+(\.[a-zA-Z]{2,5}[\.]{0,1})?/,
|
|
148139
|
-
VALID_IMAGE_URL: /^(https?|blob|data|file|ftp):/i,
|
|
148140
147986
|
REPLACE_PATTERN: /\$\{([^\}]+)\}/g,
|
|
148141
147987
|
DATA_URL: /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*)\s*$/i,
|
|
148142
147988
|
ISO_DATE_FORMAT: /(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})(\.\d+)?([+-]\d{2}:?\d{2}|Z)$/
|
|
@@ -148359,9 +148205,6 @@ const isVideoFile$1 = (fileName) => {
|
|
|
148359
148205
|
const isValidWebURL$1 = (url) => {
|
|
148360
148206
|
return (REGEX$1.VALID_WEB_URL).test(url);
|
|
148361
148207
|
};
|
|
148362
|
-
const isValidImageUrl$1 = (url) => {
|
|
148363
|
-
return (REGEX$1.VALID_IMAGE_URL).test(url?.trim());
|
|
148364
|
-
};
|
|
148365
148208
|
/*This function returns the url to the resource after checking the validity of url*/
|
|
148366
148209
|
const getResourceURL$1 = (urlString) => {
|
|
148367
148210
|
return urlString;
|
|
@@ -149615,7 +149458,6 @@ var Utils$1 = /*#__PURE__*/Object.freeze({
|
|
|
149615
149458
|
isPageable: isPageable$1,
|
|
149616
149459
|
isSafari: isSafari$1,
|
|
149617
149460
|
isTablet: isTablet$1,
|
|
149618
|
-
isValidImageUrl: isValidImageUrl$1,
|
|
149619
149461
|
isValidWebURL: isValidWebURL$1,
|
|
149620
149462
|
isVideoFile: isVideoFile$1,
|
|
149621
149463
|
loadScript: loadScript$1,
|
|
@@ -150850,14 +150692,14 @@ class ToDatePipe extends WmPipe {
|
|
|
150850
150692
|
}
|
|
150851
150693
|
return this.returnFn('', arguments, this.app.Variables);
|
|
150852
150694
|
}
|
|
150853
|
-
constructor(datePipe, i18nService,
|
|
150695
|
+
constructor(datePipe, i18nService, customPipeManager) {
|
|
150854
150696
|
super('toDate', customPipeManager);
|
|
150855
150697
|
this.datePipe = datePipe;
|
|
150856
150698
|
this.i18nService = i18nService;
|
|
150857
|
-
this.app = app;
|
|
150858
150699
|
this.customPipeManager = customPipeManager;
|
|
150700
|
+
this.app = inject(App);
|
|
150859
150701
|
}
|
|
150860
|
-
static { this.ɵfac = function ToDatePipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ToDatePipe)(ɵɵdirectiveInject(DatePipe, 16), ɵɵdirectiveInject(AbstractI18nService$1, 16), ɵɵdirectiveInject(
|
|
150702
|
+
static { this.ɵfac = function ToDatePipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ToDatePipe)(ɵɵdirectiveInject(DatePipe, 16), ɵɵdirectiveInject(AbstractI18nService$1, 16), ɵɵdirectiveInject(CustomPipeManager$1, 16)); }; }
|
|
150861
150703
|
static { this.ɵpipe = /*@__PURE__*/ ɵɵdefinePipe({ name: "toDate", type: ToDatePipe, pure: true, standalone: true }); }
|
|
150862
150704
|
}
|
|
150863
150705
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ToDatePipe, [{
|
|
@@ -150866,7 +150708,7 @@ class ToDatePipe extends WmPipe {
|
|
|
150866
150708
|
standalone: true,
|
|
150867
150709
|
name: 'toDate'
|
|
150868
150710
|
}]
|
|
150869
|
-
}], () => [{ type: DatePipe }, { type: AbstractI18nService$1 }, { type:
|
|
150711
|
+
}], () => [{ type: DatePipe }, { type: AbstractI18nService$1 }, { type: CustomPipeManager$1 }], null); })();
|
|
150870
150712
|
class ToNumberPipe {
|
|
150871
150713
|
transform(data, fracSize) {
|
|
150872
150714
|
if (fracSize && !String(fracSize).match(/^(\d+)?\.((\d+)(-(\d+))?)?$/)) {
|
|
@@ -150954,9 +150796,9 @@ class SuffixPipe {
|
|
|
150954
150796
|
* Custom pipe: It is work as interceptor between the user custom pipe function and angular pipe
|
|
150955
150797
|
*/
|
|
150956
150798
|
class CustomPipe {
|
|
150957
|
-
constructor(
|
|
150958
|
-
this.app = app;
|
|
150799
|
+
constructor(custmeUserPipe) {
|
|
150959
150800
|
this.custmeUserPipe = custmeUserPipe;
|
|
150801
|
+
this.app = inject(App);
|
|
150960
150802
|
}
|
|
150961
150803
|
transform(data, pipename) {
|
|
150962
150804
|
let argumentArr = [];
|
|
@@ -150976,7 +150818,7 @@ class CustomPipe {
|
|
|
150976
150818
|
return data;
|
|
150977
150819
|
}
|
|
150978
150820
|
}
|
|
150979
|
-
static { this.ɵfac = function CustomPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CustomPipe)(ɵɵdirectiveInject(
|
|
150821
|
+
static { this.ɵfac = function CustomPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CustomPipe)(ɵɵdirectiveInject(CustomPipeManager$1, 16)); }; }
|
|
150980
150822
|
static { this.ɵpipe = /*@__PURE__*/ ɵɵdefinePipe({ name: "custom", type: CustomPipe, pure: true, standalone: true }); }
|
|
150981
150823
|
}
|
|
150982
150824
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CustomPipe, [{
|
|
@@ -150985,7 +150827,7 @@ class CustomPipe {
|
|
|
150985
150827
|
standalone: true,
|
|
150986
150828
|
name: 'custom'
|
|
150987
150829
|
}]
|
|
150988
|
-
}], () => [{ type:
|
|
150830
|
+
}], () => [{ type: CustomPipeManager$1 }], null); })();
|
|
150989
150831
|
class TimeFromNowPipe {
|
|
150990
150832
|
transform(data) {
|
|
150991
150833
|
let timestamp;
|
|
@@ -203067,11 +202909,11 @@ var DEFAULT_FORMATS;
|
|
|
203067
202909
|
DEFAULT_FORMATS["DATE_TIME"] = "yyyy-MM-dd HH:mm:ss";
|
|
203068
202910
|
})(DEFAULT_FORMATS || (DEFAULT_FORMATS = {}));
|
|
203069
202911
|
|
|
203070
|
-
const $RAF = window.requestAnimationFrame;
|
|
202912
|
+
const $RAF$1 = window.requestAnimationFrame;
|
|
203071
202913
|
const $RAFQueue = [];
|
|
203072
202914
|
const invokeLater = fn => {
|
|
203073
202915
|
if (!$RAFQueue.length) {
|
|
203074
|
-
$RAF(() => {
|
|
202916
|
+
$RAF$1(() => {
|
|
203075
202917
|
$RAFQueue.forEach(f => f());
|
|
203076
202918
|
$RAFQueue.length = 0;
|
|
203077
202919
|
});
|
|
@@ -203613,223 +203455,70 @@ const getFnForEventExpr = (expr) => {
|
|
|
203613
203455
|
return fnExecutor(expr, ExpressionType.Action);
|
|
203614
203456
|
};
|
|
203615
203457
|
|
|
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]';
|
|
203621
203458
|
const registry = new Map();
|
|
203622
203459
|
const watchIdGenerator = new IDGenerator('watch-id-');
|
|
203623
|
-
const FIRST_TIME_WATCH =
|
|
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
|
-
*/
|
|
203460
|
+
const FIRST_TIME_WATCH = {};
|
|
203461
|
+
Object.freeze(FIRST_TIME_WATCH);
|
|
203647
203462
|
const arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {
|
|
203648
|
-
|
|
203649
|
-
|
|
203650
|
-
|
|
203651
|
-
|
|
203652
|
-
|
|
203653
|
-
|
|
203654
|
-
|
|
203463
|
+
let data = newVal, formattedData;
|
|
203464
|
+
if (isArray(data)) {
|
|
203465
|
+
formattedData = data.map(function (datum) {
|
|
203466
|
+
return findValueOf(datum, restExpr);
|
|
203467
|
+
});
|
|
203468
|
+
// If resulting structure is an array of array, flatten it
|
|
203469
|
+
if (isArray(formattedData[0])) {
|
|
203470
|
+
formattedData = flatten(formattedData);
|
|
203471
|
+
}
|
|
203472
|
+
listenerFn(formattedData, oldVal);
|
|
203655
203473
|
}
|
|
203656
|
-
listenerFn(formattedData, oldVal);
|
|
203657
203474
|
};
|
|
203658
|
-
|
|
203659
|
-
|
|
203660
|
-
|
|
203661
|
-
|
|
203662
|
-
const regex = /\[\$i\]/g;
|
|
203475
|
+
const getUpdatedWatcInfo = (expr, acceptsArray, listener) => {
|
|
203476
|
+
// listener doesn't accept array
|
|
203477
|
+
// replace all `[$i]` with `[0]` and return the expression
|
|
203478
|
+
let regex = /\[\$i\]/g, $I = '[$i]', $0 = '[0]';
|
|
203663
203479
|
if (!acceptsArray) {
|
|
203664
203480
|
return {
|
|
203665
|
-
expr: expr.replace(regex,
|
|
203666
|
-
listener
|
|
203481
|
+
'expr': expr.replace(regex, $0),
|
|
203482
|
+
'listener': listener
|
|
203667
203483
|
};
|
|
203668
203484
|
}
|
|
203669
|
-
|
|
203670
|
-
|
|
203671
|
-
|
|
203672
|
-
|
|
203673
|
-
|
|
203674
|
-
|
|
203485
|
+
// listener accepts array
|
|
203486
|
+
// replace all except the last `[$i]` with `[0]` and return the expression.
|
|
203487
|
+
var index = expr.lastIndexOf($I), _expr = expr.substr(0, index).replace($I, $0), restExpr = expr.substr(index + 5), arrayConsumerFn = listener;
|
|
203488
|
+
if (restExpr) {
|
|
203489
|
+
arrayConsumerFn = arrayConsumer.bind(undefined, listener, restExpr);
|
|
203490
|
+
}
|
|
203675
203491
|
return {
|
|
203676
|
-
expr:
|
|
203677
|
-
listener: arrayConsumerFn
|
|
203492
|
+
'expr': _expr,
|
|
203493
|
+
'listener': arrayConsumerFn
|
|
203678
203494
|
};
|
|
203679
203495
|
};
|
|
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
|
-
*/
|
|
203746
203496
|
const $watch = (expr, $scope, $locals, listener, identifier = watchIdGenerator.nextUid(), doNotClone = false, config = {}, isMuted) => {
|
|
203747
|
-
|
|
203748
|
-
|
|
203749
|
-
const watchInfo = getUpdatedWatchInfo(expr, config.arrayType || config.isList || false, listener);
|
|
203497
|
+
if (expr.indexOf('[$i]') !== -1) {
|
|
203498
|
+
let watchInfo = getUpdatedWatcInfo(expr, config && (config.arrayType || config.isList), listener);
|
|
203750
203499
|
expr = watchInfo.expr;
|
|
203751
203500
|
listener = watchInfo.listener;
|
|
203752
203501
|
}
|
|
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
|
-
}
|
|
203766
203502
|
const fn = $parseExpr();
|
|
203767
|
-
|
|
203768
|
-
|
|
203769
|
-
const destroyFn = () => $unwatch(identifier);
|
|
203770
|
-
const watchInfo = {
|
|
203771
|
-
fn: fn.bind(null, $scope, $locals),
|
|
203503
|
+
registry.set(identifier, {
|
|
203504
|
+
fn: fn.bind(expr, $scope, $locals),
|
|
203772
203505
|
listener,
|
|
203773
203506
|
expr,
|
|
203774
203507
|
last: FIRST_TIME_WATCH,
|
|
203775
203508
|
doNotClone,
|
|
203776
|
-
isMuted
|
|
203777
|
-
|
|
203778
|
-
|
|
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;
|
|
203509
|
+
isMuted: isMuted
|
|
203510
|
+
});
|
|
203511
|
+
return () => $unwatch(identifier);
|
|
203823
203512
|
};
|
|
203513
|
+
const $unwatch = identifier => registry.delete(identifier);
|
|
203514
|
+
window.watchRegistry = registry;
|
|
203824
203515
|
const $appDigest = (() => {
|
|
203825
|
-
return (force
|
|
203516
|
+
return (force) => {
|
|
203826
203517
|
{
|
|
203827
203518
|
return;
|
|
203828
203519
|
}
|
|
203829
203520
|
};
|
|
203830
203521
|
})();
|
|
203831
|
-
// Export registry for debugging
|
|
203832
|
-
window.watchRegistry = registry;
|
|
203833
203522
|
|
|
203834
203523
|
var ComponentType;
|
|
203835
203524
|
(function (ComponentType) {
|
|
@@ -203885,8 +203574,6 @@ var Operation;
|
|
|
203885
203574
|
const DataSource = {
|
|
203886
203575
|
Operation
|
|
203887
203576
|
};
|
|
203888
|
-
class App {
|
|
203889
|
-
}
|
|
203890
203577
|
class AbstractI18nService {
|
|
203891
203578
|
}
|
|
203892
203579
|
|
|
@@ -203904,7 +203591,6 @@ const REGEX = {
|
|
|
203904
203591
|
SUPPORTED_AUDIO_FORMAT: /\.(mp3|ogg|webm|wma|3gp|wav|m4a)$/i,
|
|
203905
203592
|
SUPPORTED_VIDEO_FORMAT: /\.(mp4|ogg|webm|wmv|mpeg|mpg|avi|mov)$/i,
|
|
203906
203593
|
VALID_WEB_URL: /^(http[s]?:\/\/)(www\.){0,1}[a-zA-Z0-9=:?\/\.\-]+(\.[a-zA-Z]{2,5}[\.]{0,1})?/,
|
|
203907
|
-
VALID_IMAGE_URL: /^(https?|blob|data|file|ftp):/i,
|
|
203908
203594
|
REPLACE_PATTERN: /\$\{([^\}]+)\}/g,
|
|
203909
203595
|
DATA_URL: /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*)\s*$/i,
|
|
203910
203596
|
ISO_DATE_FORMAT: /(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})(\.\d+)?([+-]\d{2}:?\d{2}|Z)$/
|
|
@@ -204127,9 +203813,6 @@ const isVideoFile = (fileName) => {
|
|
|
204127
203813
|
const isValidWebURL = (url) => {
|
|
204128
203814
|
return (REGEX.VALID_WEB_URL).test(url);
|
|
204129
203815
|
};
|
|
204130
|
-
const isValidImageUrl = (url) => {
|
|
204131
|
-
return (REGEX.VALID_IMAGE_URL).test(url?.trim());
|
|
204132
|
-
};
|
|
204133
203816
|
/*This function returns the url to the resource after checking the validity of url*/
|
|
204134
203817
|
const getResourceURL = (urlString) => {
|
|
204135
203818
|
return urlString;
|
|
@@ -205383,7 +205066,6 @@ var Utils = /*#__PURE__*/Object.freeze({
|
|
|
205383
205066
|
isPageable: isPageable,
|
|
205384
205067
|
isSafari: isSafari,
|
|
205385
205068
|
isTablet: isTablet,
|
|
205386
|
-
isValidImageUrl: isValidImageUrl,
|
|
205387
205069
|
isValidWebURL: isValidWebURL,
|
|
205388
205070
|
isVideoFile: isVideoFile,
|
|
205389
205071
|
loadScript: loadScript,
|
|
@@ -208223,7 +207905,7 @@ class PipeProvider {
|
|
|
208223
207905
|
this.preparePipeMeta(CurrencyPipe$1, 'currency', true, [this._locale]),
|
|
208224
207906
|
this.preparePipeMeta(DatePipe$1, 'date', true, [this._locale]),
|
|
208225
207907
|
this.preparePipeMeta(ToDatePipe, 'toDate', true, [
|
|
208226
|
-
new DatePipe$1(this._locale), undefined, this.injector.get(
|
|
207908
|
+
new DatePipe$1(this._locale), undefined, this.injector.get(CustomPipeManager)
|
|
208227
207909
|
]),
|
|
208228
207910
|
this.preparePipeMeta(ToNumberPipe, 'toNumber', true, [
|
|
208229
207911
|
new DecimalPipe$1(this._locale),
|
|
@@ -208240,7 +207922,7 @@ class PipeProvider {
|
|
|
208240
207922
|
new DecimalPipe$1(this._locale)
|
|
208241
207923
|
]),
|
|
208242
207924
|
this.preparePipeMeta(StringToNumberPipe, 'stringToNumber', true),
|
|
208243
|
-
this.preparePipeMeta(CustomPipe, 'custom', true, [this.injector.get(
|
|
207925
|
+
this.preparePipeMeta(CustomPipe, 'custom', true, [this.injector.get(CustomPipeManager)]),
|
|
208244
207926
|
this.preparePipeMeta(TrustAsPipe, 'trustAs', true, [this.domSanitizer]),
|
|
208245
207927
|
this.preparePipeMeta(SanitizePipe, 'sanitize', true, [this.domSanitizer]),
|
|
208246
207928
|
this.preparePipeMeta(TemplateReplacePipe, 'templateReplace', true),
|