@wavemaker/angular-app 11.14.1-16.6419 → 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 +14 -14
- package/package-lock.json +14 -14
- 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),
|
|
@@ -99707,11 +99707,11 @@ const getRowActionAttrs = attrs => {
|
|
|
99707
99707
|
return tmpl;
|
|
99708
99708
|
};
|
|
99709
99709
|
|
|
99710
|
-
const $RAF = window.requestAnimationFrame;
|
|
99710
|
+
const $RAF$1 = window.requestAnimationFrame;
|
|
99711
99711
|
const $RAFQueue = [];
|
|
99712
99712
|
const invokeLater = fn => {
|
|
99713
99713
|
if (!$RAFQueue.length) {
|
|
99714
|
-
$RAF(() => {
|
|
99714
|
+
$RAF$1(() => {
|
|
99715
99715
|
$RAFQueue.forEach(f => f());
|
|
99716
99716
|
$RAFQueue.length = 0;
|
|
99717
99717
|
});
|
|
@@ -100253,223 +100253,70 @@ 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]';
|
|
100261
100256
|
const registry = new Map();
|
|
100262
100257
|
const watchIdGenerator = new IDGenerator('watch-id-');
|
|
100263
|
-
const FIRST_TIME_WATCH =
|
|
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
|
-
*/
|
|
100258
|
+
const FIRST_TIME_WATCH = {};
|
|
100259
|
+
Object.freeze(FIRST_TIME_WATCH);
|
|
100287
100260
|
const arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {
|
|
100288
|
-
|
|
100289
|
-
|
|
100290
|
-
|
|
100291
|
-
|
|
100292
|
-
|
|
100293
|
-
|
|
100294
|
-
|
|
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);
|
|
100295
100271
|
}
|
|
100296
|
-
listenerFn(formattedData, oldVal);
|
|
100297
100272
|
};
|
|
100298
|
-
|
|
100299
|
-
|
|
100300
|
-
|
|
100301
|
-
|
|
100302
|
-
const regex = /\[\$i\]/g;
|
|
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]';
|
|
100303
100277
|
if (!acceptsArray) {
|
|
100304
100278
|
return {
|
|
100305
|
-
expr: expr.replace(regex,
|
|
100306
|
-
listener
|
|
100279
|
+
'expr': expr.replace(regex, $0),
|
|
100280
|
+
'listener': listener
|
|
100307
100281
|
};
|
|
100308
100282
|
}
|
|
100309
|
-
|
|
100310
|
-
|
|
100311
|
-
|
|
100312
|
-
|
|
100313
|
-
|
|
100314
|
-
|
|
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
|
+
}
|
|
100315
100289
|
return {
|
|
100316
|
-
expr:
|
|
100317
|
-
listener: arrayConsumerFn
|
|
100290
|
+
'expr': _expr,
|
|
100291
|
+
'listener': arrayConsumerFn
|
|
100318
100292
|
};
|
|
100319
100293
|
};
|
|
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
|
-
*/
|
|
100386
100294
|
const $watch = (expr, $scope, $locals, listener, identifier = watchIdGenerator.nextUid(), doNotClone = false, config = {}, isMuted) => {
|
|
100387
|
-
|
|
100388
|
-
|
|
100389
|
-
const watchInfo = getUpdatedWatchInfo(expr, config.arrayType || config.isList || false, listener);
|
|
100295
|
+
if (expr.indexOf('[$i]') !== -1) {
|
|
100296
|
+
let watchInfo = getUpdatedWatcInfo(expr, config && (config.arrayType || config.isList), listener);
|
|
100390
100297
|
expr = watchInfo.expr;
|
|
100391
100298
|
listener = watchInfo.listener;
|
|
100392
100299
|
}
|
|
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
|
-
}
|
|
100406
100300
|
const fn = $parseExpr();
|
|
100407
|
-
|
|
100408
|
-
|
|
100409
|
-
const destroyFn = () => $unwatch(identifier);
|
|
100410
|
-
const watchInfo = {
|
|
100411
|
-
fn: fn.bind(null, $scope, $locals),
|
|
100301
|
+
registry.set(identifier, {
|
|
100302
|
+
fn: fn.bind(expr, $scope, $locals),
|
|
100412
100303
|
listener,
|
|
100413
100304
|
expr,
|
|
100414
100305
|
last: FIRST_TIME_WATCH,
|
|
100415
100306
|
doNotClone,
|
|
100416
|
-
isMuted
|
|
100417
|
-
|
|
100418
|
-
|
|
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;
|
|
100307
|
+
isMuted: isMuted
|
|
100308
|
+
});
|
|
100309
|
+
return () => $unwatch(identifier);
|
|
100463
100310
|
};
|
|
100311
|
+
const $unwatch = identifier => registry.delete(identifier);
|
|
100312
|
+
window.watchRegistry = registry;
|
|
100464
100313
|
const $appDigest = (() => {
|
|
100465
|
-
return (force
|
|
100314
|
+
return (force) => {
|
|
100466
100315
|
{
|
|
100467
100316
|
return;
|
|
100468
100317
|
}
|
|
100469
100318
|
};
|
|
100470
100319
|
})();
|
|
100471
|
-
// Export registry for debugging
|
|
100472
|
-
window.watchRegistry = registry;
|
|
100473
100320
|
|
|
100474
100321
|
var ComponentType;
|
|
100475
100322
|
(function (ComponentType) {
|
|
@@ -100540,7 +100387,6 @@ const REGEX = {
|
|
|
100540
100387
|
SUPPORTED_AUDIO_FORMAT: /\.(mp3|ogg|webm|wma|3gp|wav|m4a)$/i,
|
|
100541
100388
|
SUPPORTED_VIDEO_FORMAT: /\.(mp4|ogg|webm|wmv|mpeg|mpg|avi|mov)$/i,
|
|
100542
100389
|
VALID_WEB_URL: /^(http[s]?:\/\/)(www\.){0,1}[a-zA-Z0-9=:?\/\.\-]+(\.[a-zA-Z]{2,5}[\.]{0,1})?/,
|
|
100543
|
-
VALID_IMAGE_URL: /^(https?|blob|data|file|ftp):/i,
|
|
100544
100390
|
REPLACE_PATTERN: /\$\{([^\}]+)\}/g,
|
|
100545
100391
|
DATA_URL: /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*)\s*$/i,
|
|
100546
100392
|
ISO_DATE_FORMAT: /(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})(\.\d+)?([+-]\d{2}:?\d{2}|Z)$/
|
|
@@ -100763,9 +100609,6 @@ const isVideoFile = (fileName) => {
|
|
|
100763
100609
|
const isValidWebURL = (url) => {
|
|
100764
100610
|
return (REGEX.VALID_WEB_URL).test(url);
|
|
100765
100611
|
};
|
|
100766
|
-
const isValidImageUrl = (url) => {
|
|
100767
|
-
return (REGEX.VALID_IMAGE_URL).test(url?.trim());
|
|
100768
|
-
};
|
|
100769
100612
|
/*This function returns the url to the resource after checking the validity of url*/
|
|
100770
100613
|
const getResourceURL = (urlString) => {
|
|
100771
100614
|
return urlString;
|
|
@@ -102019,7 +101862,6 @@ var Utils = /*#__PURE__*/Object.freeze({
|
|
|
102019
101862
|
isPageable: isPageable,
|
|
102020
101863
|
isSafari: isSafari,
|
|
102021
101864
|
isTablet: isTablet,
|
|
102022
|
-
isValidImageUrl: isValidImageUrl,
|
|
102023
101865
|
isValidWebURL: isValidWebURL,
|
|
102024
101866
|
isVideoFile: isVideoFile,
|
|
102025
101867
|
loadScript: loadScript,
|
package/dependency-report.html
CHANGED
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavemaker/angular-app",
|
|
3
|
-
"version": "11.14.1-
|
|
3
|
+
"version": "11.14.1-17.6420",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@wavemaker/angular-app",
|
|
9
|
-
"version": "11.14.1-
|
|
9
|
+
"version": "11.14.1-17.6420",
|
|
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-
|
|
27
|
-
"@wavemaker/custom-widgets-m3": "11.14.1-
|
|
26
|
+
"@wavemaker/app-ng-runtime": "11.14.1-17.6420",
|
|
27
|
+
"@wavemaker/custom-widgets-m3": "11.14.1-17.6420",
|
|
28
28
|
"@wavemaker/focus-trap": "1.0.1",
|
|
29
|
-
"@wavemaker/foundation-css": "11.14.1-
|
|
29
|
+
"@wavemaker/foundation-css": "11.14.1-17.6420",
|
|
30
30
|
"@wavemaker/nvd3": "1.8.15",
|
|
31
|
-
"@wavemaker/variables": "11.14.1-
|
|
31
|
+
"@wavemaker/variables": "11.14.1-17.6420",
|
|
32
32
|
"@ztree/ztree_v3": "3.5.48",
|
|
33
33
|
"acorn": "^8.15.0",
|
|
34
34
|
"angular-imask": "7.6.1",
|
|
@@ -8972,8 +8972,8 @@
|
|
|
8972
8972
|
}
|
|
8973
8973
|
},
|
|
8974
8974
|
"node_modules/@wavemaker/app-ng-runtime": {
|
|
8975
|
-
"version": "11.14.1-
|
|
8976
|
-
"integrity": "sha512-
|
|
8975
|
+
"version": "11.14.1-17.6420",
|
|
8976
|
+
"integrity": "sha512-RF9yM6BTdH3xU868rrwIS5FIN3zRvNaTNqQ38oqw3vrEC0cwFjQ+wdfcU/81f+QJPCqVLJ0p/0wt2MCmFnJ5BQ==",
|
|
8977
8977
|
"license": "MIT",
|
|
8978
8978
|
"engines": {
|
|
8979
8979
|
"node": ">=18.16.1",
|
|
@@ -8981,8 +8981,8 @@
|
|
|
8981
8981
|
}
|
|
8982
8982
|
},
|
|
8983
8983
|
"node_modules/@wavemaker/custom-widgets-m3": {
|
|
8984
|
-
"version": "11.14.1-
|
|
8985
|
-
"integrity": "sha512-
|
|
8984
|
+
"version": "11.14.1-17.6420",
|
|
8985
|
+
"integrity": "sha512-wfnxN8M+27eOAxcVZAenL64w5KEU2/hnli7RFGoW7WYQ5l6rVQN23gpO7N04VcW0+66+qNPivxMzDuZlOF/GiA==",
|
|
8986
8986
|
"license": "ISC"
|
|
8987
8987
|
},
|
|
8988
8988
|
"node_modules/@wavemaker/focus-trap": {
|
|
@@ -8995,8 +8995,8 @@
|
|
|
8995
8995
|
}
|
|
8996
8996
|
},
|
|
8997
8997
|
"node_modules/@wavemaker/foundation-css": {
|
|
8998
|
-
"version": "11.14.1-
|
|
8999
|
-
"integrity": "sha512-
|
|
8998
|
+
"version": "11.14.1-17.6420",
|
|
8999
|
+
"integrity": "sha512-RRpGg6miVo4548S3XDqg4Jxt7GEOJwPMbAQ3s57PoBN1o+j10LsIRt8uKPI2L8Z5rCtD75yxhYNQAUY/9r2rnQ==",
|
|
9000
9000
|
"license": "ISC",
|
|
9001
9001
|
"dependencies": {
|
|
9002
9002
|
"chroma-js": "^3.1.2"
|
|
@@ -9011,8 +9011,8 @@
|
|
|
9011
9011
|
}
|
|
9012
9012
|
},
|
|
9013
9013
|
"node_modules/@wavemaker/variables": {
|
|
9014
|
-
"version": "11.14.1-
|
|
9015
|
-
"integrity": "sha512
|
|
9014
|
+
"version": "11.14.1-17.6420",
|
|
9015
|
+
"integrity": "sha512-/bTiSWur7Qnhytic/vSSWrAfGpqlHOdOucNuGFB7lXsTY0K4evUPP31VRlQ1PIy3VLrKrAPkLH7EzQU0KZidow==",
|
|
9016
9016
|
"license": "ISC",
|
|
9017
9017
|
"dependencies": {
|
|
9018
9018
|
"@metrichor/jmespath": "^0.3.1",
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavemaker/angular-app",
|
|
3
|
-
"version": "11.14.1-
|
|
3
|
+
"version": "11.14.1-17.6420",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@wavemaker/angular-app",
|
|
9
|
-
"version": "11.14.1-
|
|
9
|
+
"version": "11.14.1-17.6420",
|
|
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-
|
|
27
|
-
"@wavemaker/custom-widgets-m3": "11.14.1-
|
|
26
|
+
"@wavemaker/app-ng-runtime": "11.14.1-17.6420",
|
|
27
|
+
"@wavemaker/custom-widgets-m3": "11.14.1-17.6420",
|
|
28
28
|
"@wavemaker/focus-trap": "1.0.1",
|
|
29
|
-
"@wavemaker/foundation-css": "11.14.1-
|
|
29
|
+
"@wavemaker/foundation-css": "11.14.1-17.6420",
|
|
30
30
|
"@wavemaker/nvd3": "1.8.15",
|
|
31
|
-
"@wavemaker/variables": "11.14.1-
|
|
31
|
+
"@wavemaker/variables": "11.14.1-17.6420",
|
|
32
32
|
"@ztree/ztree_v3": "3.5.48",
|
|
33
33
|
"acorn": "^8.15.0",
|
|
34
34
|
"angular-imask": "7.6.1",
|
|
@@ -8972,8 +8972,8 @@
|
|
|
8972
8972
|
}
|
|
8973
8973
|
},
|
|
8974
8974
|
"node_modules/@wavemaker/app-ng-runtime": {
|
|
8975
|
-
"version": "11.14.1-
|
|
8976
|
-
"integrity": "sha512-
|
|
8975
|
+
"version": "11.14.1-17.6420",
|
|
8976
|
+
"integrity": "sha512-RF9yM6BTdH3xU868rrwIS5FIN3zRvNaTNqQ38oqw3vrEC0cwFjQ+wdfcU/81f+QJPCqVLJ0p/0wt2MCmFnJ5BQ==",
|
|
8977
8977
|
"license": "MIT",
|
|
8978
8978
|
"engines": {
|
|
8979
8979
|
"node": ">=18.16.1",
|
|
@@ -8981,8 +8981,8 @@
|
|
|
8981
8981
|
}
|
|
8982
8982
|
},
|
|
8983
8983
|
"node_modules/@wavemaker/custom-widgets-m3": {
|
|
8984
|
-
"version": "11.14.1-
|
|
8985
|
-
"integrity": "sha512-
|
|
8984
|
+
"version": "11.14.1-17.6420",
|
|
8985
|
+
"integrity": "sha512-wfnxN8M+27eOAxcVZAenL64w5KEU2/hnli7RFGoW7WYQ5l6rVQN23gpO7N04VcW0+66+qNPivxMzDuZlOF/GiA==",
|
|
8986
8986
|
"license": "ISC"
|
|
8987
8987
|
},
|
|
8988
8988
|
"node_modules/@wavemaker/focus-trap": {
|
|
@@ -8995,8 +8995,8 @@
|
|
|
8995
8995
|
}
|
|
8996
8996
|
},
|
|
8997
8997
|
"node_modules/@wavemaker/foundation-css": {
|
|
8998
|
-
"version": "11.14.1-
|
|
8999
|
-
"integrity": "sha512-
|
|
8998
|
+
"version": "11.14.1-17.6420",
|
|
8999
|
+
"integrity": "sha512-RRpGg6miVo4548S3XDqg4Jxt7GEOJwPMbAQ3s57PoBN1o+j10LsIRt8uKPI2L8Z5rCtD75yxhYNQAUY/9r2rnQ==",
|
|
9000
9000
|
"license": "ISC",
|
|
9001
9001
|
"dependencies": {
|
|
9002
9002
|
"chroma-js": "^3.1.2"
|
|
@@ -9011,8 +9011,8 @@
|
|
|
9011
9011
|
}
|
|
9012
9012
|
},
|
|
9013
9013
|
"node_modules/@wavemaker/variables": {
|
|
9014
|
-
"version": "11.14.1-
|
|
9015
|
-
"integrity": "sha512
|
|
9014
|
+
"version": "11.14.1-17.6420",
|
|
9015
|
+
"integrity": "sha512-/bTiSWur7Qnhytic/vSSWrAfGpqlHOdOucNuGFB7lXsTY0K4evUPP31VRlQ1PIy3VLrKrAPkLH7EzQU0KZidow==",
|
|
9016
9016
|
"license": "ISC",
|
|
9017
9017
|
"dependencies": {
|
|
9018
9018
|
"@metrichor/jmespath": "^0.3.1",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavemaker/angular-app",
|
|
3
|
-
"version": "11.14.1-
|
|
3
|
+
"version": "11.14.1-17.6420",
|
|
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-
|
|
39
|
+
"@wavemaker/custom-widgets-m3": "11.14.1-17.6420",
|
|
40
40
|
"@wavemaker/focus-trap": "1.0.1",
|
|
41
|
-
"@wavemaker/foundation-css": "11.14.1-
|
|
41
|
+
"@wavemaker/foundation-css": "11.14.1-17.6420",
|
|
42
42
|
"@wavemaker/nvd3": "1.8.15",
|
|
43
|
-
"@wavemaker/variables": "11.14.1-
|
|
43
|
+
"@wavemaker/variables": "11.14.1-17.6420",
|
|
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-
|
|
65
|
+
"@wavemaker/app-ng-runtime": "11.14.1-17.6420"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@ampproject/rollup-plugin-closure-compiler": "^0.27.0",
|