@wavemaker/app-ng-runtime 11.14.1-18.6421 → 11.14.1-18.6428
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/components/base/bundles/index.umd.js +17 -81
- package/components/base/esm2022/pipes/custom-pipes.mjs +10 -10
- package/components/base/esm2022/utils/widget-utils.mjs +3 -3
- package/components/base/esm2022/widgets/common/base/base.component.mjs +6 -61
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +3 -7
- package/components/base/esm2022/widgets/framework/property-change-handler.mjs +2 -7
- package/components/base/fesm2022/index.mjs +18 -82
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/pipes/custom-pipes.d.ts +5 -5
- package/components/basic/label/bundles/index.umd.js +1 -9
- package/components/basic/label/esm2022/label.directive.mjs +2 -10
- package/components/basic/label/fesm2022/index.mjs +1 -9
- package/components/basic/label/fesm2022/index.mjs.map +1 -1
- package/components/chart/bundles/index.umd.js +2 -2
- package/components/chart/esm2022/chart.utils.mjs +3 -3
- package/components/chart/fesm2022/index.mjs +2 -2
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/bundles/index.umd.js +2 -21
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +1 -3
- package/components/containers/wizard/esm2022/wizard.component.mjs +3 -20
- package/components/containers/wizard/fesm2022/index.mjs +2 -21
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +0 -2
- package/components/data/pagination/bundles/index.umd.js +0 -4
- package/components/data/pagination/esm2022/pagination.component.mjs +1 -5
- package/components/data/pagination/fesm2022/index.mjs +0 -4
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/table/bundles/index.umd.js +14 -370
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +1 -8
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +3 -107
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +1 -9
- package/components/data/table/esm2022/table-cud.directive.mjs +2 -8
- package/components/data/table/esm2022/table-filter.directive.mjs +2 -12
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +1 -8
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +1 -8
- package/components/data/table/esm2022/table.component.mjs +12 -219
- package/components/data/table/fesm2022/index.mjs +15 -371
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table-action/table-action.directive.d.ts +2 -3
- package/components/data/table/table-column/table-column.directive.d.ts +2 -3
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +2 -3
- package/components/data/table/table-cud.directive.d.ts +1 -3
- package/components/data/table/table-filter.directive.d.ts +1 -3
- package/components/data/table/table-row/table-row.directive.d.ts +2 -3
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +2 -3
- package/components/data/table/table.component.d.ts +2 -6
- package/components/navigation/menu/bundles/index.umd.js +0 -5
- package/components/navigation/menu/esm2022/menu.component.mjs +1 -6
- package/components/navigation/menu/fesm2022/index.mjs +0 -5
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/bundles/index.umd.js +6 -6
- package/components/navigation/popover/esm2022/popover.component.mjs +4 -4
- package/components/navigation/popover/fesm2022/index.mjs +3 -3
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/popover.component.d.ts +0 -6
- package/core/bundles/index.umd.js +15 -120
- package/core/esm2022/public_api.mjs +2 -2
- package/core/esm2022/utils/utils.mjs +2 -6
- package/core/esm2022/utils/watcher.mjs +15 -118
- package/core/fesm2022/index.mjs +15 -124
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/public_api.d.ts +1 -1
- package/core/utils/utils.d.ts +0 -1
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +2 -3
- package/runtime/base/esm2022/components/base-page.component.mjs +1 -2
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +4 -4
- package/runtime/base/fesm2022/index.mjs +2 -3
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/dynamic/bundles/index.umd.js +0 -4
- package/runtime/dynamic/esm2022/app/app.config.mjs +2 -6
- package/runtime/dynamic/fesm2022/index.mjs +1 -5
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- package/scripts/datatable/datatable.js +15 -103
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { IDGenerator } from './id-generator';
|
|
2
2
|
import { $parseExpr } from './expression-parser';
|
|
3
3
|
import { findValueOf } from './utils';
|
|
4
|
+
import { clone, flatten, isArray, isEqual, isObject } from "lodash-es";
|
|
4
5
|
const registry = new Map();
|
|
5
6
|
const watchIdGenerator = new IDGenerator('watch-id-');
|
|
6
7
|
export const FIRST_TIME_WATCH = {};
|
|
@@ -20,17 +21,17 @@ export const muteWatchers = () => {
|
|
|
20
21
|
};
|
|
21
22
|
export const unMuteWatchers = () => {
|
|
22
23
|
muted = false;
|
|
23
|
-
|
|
24
|
+
triggerWatchers();
|
|
24
25
|
};
|
|
25
26
|
const arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {
|
|
26
27
|
let data = newVal, formattedData;
|
|
27
|
-
if (
|
|
28
|
+
if (isArray(data)) {
|
|
28
29
|
formattedData = data.map(function (datum) {
|
|
29
30
|
return findValueOf(datum, restExpr);
|
|
30
31
|
});
|
|
31
32
|
// If resulting structure is an array of array, flatten it
|
|
32
|
-
if (
|
|
33
|
-
formattedData =
|
|
33
|
+
if (isArray(formattedData[0])) {
|
|
34
|
+
formattedData = flatten(formattedData);
|
|
34
35
|
}
|
|
35
36
|
listenerFn(formattedData, oldVal);
|
|
36
37
|
}
|
|
@@ -81,7 +82,6 @@ const triggerWatchers = (ignoreMuted) => {
|
|
|
81
82
|
if (muted && !ignoreMuted) {
|
|
82
83
|
return;
|
|
83
84
|
}
|
|
84
|
-
log(".......................triggerWatchers.................................");
|
|
85
85
|
const limit = 5;
|
|
86
86
|
let pass = 1;
|
|
87
87
|
let changeDetected;
|
|
@@ -101,12 +101,13 @@ const triggerWatchers = (ignoreMuted) => {
|
|
|
101
101
|
catch (e) {
|
|
102
102
|
console.warn(`error in executing expression: '${watchInfo.expr}'`);
|
|
103
103
|
}
|
|
104
|
-
if (!
|
|
104
|
+
if (!isEqual(nv, ov)) {
|
|
105
105
|
changeDetected = true;
|
|
106
106
|
changedByWatch = true;
|
|
107
107
|
watchInfo.last = nv;
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
// @ts-ignore
|
|
109
|
+
if (isObject(nv) && !watchInfo.doNotClone && nv.__cloneable__ !== false) {
|
|
110
|
+
watchInfo.last = clone(nv);
|
|
110
111
|
}
|
|
111
112
|
listener(nv, ov);
|
|
112
113
|
resetChangeFromWatch();
|
|
@@ -126,121 +127,22 @@ export const isChangeFromWatch = () => changedByWatch;
|
|
|
126
127
|
export const resetChangeFromWatch = () => changedByWatch = false;
|
|
127
128
|
window.watchRegistry = registry;
|
|
128
129
|
let skipWatchers;
|
|
129
|
-
let scheduled = false, rerunRequested = false, isRunning = false, consecutiveReruns = 0;
|
|
130
|
-
const MAX_PASSES = 5, DEBOUNCE_TIME = 200, MAX_CONSECUTIVE_RERUNS = 3;
|
|
131
|
-
window.__WM_DEBUG_WATCHERS__ = false;
|
|
132
|
-
export const $invokeWatchers = (force = false, ignoreMuted = false) => {
|
|
133
|
-
if (force) {
|
|
134
|
-
triggerWatchers(ignoreMuted);
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
scheduleExecution(ignoreMuted);
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
function scheduleExecution(ignoreMuted) {
|
|
141
|
-
if (scheduled) {
|
|
142
|
-
rerunRequested = true;
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
scheduled = true;
|
|
146
|
-
// Reset consecutive rerun counter when scheduling from outside
|
|
147
|
-
// (not from within executeWatchers rerun logic)
|
|
148
|
-
if (!isRunning) {
|
|
149
|
-
consecutiveReruns = 0;
|
|
150
|
-
}
|
|
151
|
-
debouncedExecute(ignoreMuted);
|
|
152
|
-
}
|
|
153
|
-
const debouncedExecute = debounce((ignoreMuted) => {
|
|
154
|
-
scheduled = false;
|
|
155
|
-
executeWatchers(ignoreMuted);
|
|
156
|
-
}, DEBOUNCE_TIME);
|
|
157
|
-
function executeWatchers(ignoreMuted) {
|
|
158
|
-
if (isRunning) {
|
|
159
|
-
rerunRequested = true;
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
isRunning = true;
|
|
163
|
-
let actuallyChanged = false;
|
|
164
|
-
ngZone.runOutsideAngular(() => {
|
|
165
|
-
let pass = 1;
|
|
166
|
-
let changeDetected;
|
|
167
|
-
do {
|
|
168
|
-
changeDetected = false;
|
|
169
|
-
log(`-------executeWatchers (run #${consecutiveReruns + 1})--------- `);
|
|
170
|
-
registry.forEach(watchInfo => {
|
|
171
|
-
if (watchInfo.isMuted && watchInfo.isMuted()) {
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
const fn = watchInfo.fn;
|
|
175
|
-
const listener = watchInfo.listener;
|
|
176
|
-
const ov = watchInfo.last;
|
|
177
|
-
let nv;
|
|
178
|
-
try {
|
|
179
|
-
nv = fn();
|
|
180
|
-
}
|
|
181
|
-
catch (e) {
|
|
182
|
-
console.warn(`error in executing expression: '${watchInfo.expr}'`);
|
|
183
|
-
}
|
|
184
|
-
if (!_.isEqual(nv, ov)) {
|
|
185
|
-
changeDetected = true;
|
|
186
|
-
actuallyChanged = true;
|
|
187
|
-
changedByWatch = true;
|
|
188
|
-
watchInfo.last = nv;
|
|
189
|
-
if (_.isObject(nv) && !watchInfo.doNotClone && nv.__cloneable__ !== false) {
|
|
190
|
-
watchInfo.last = _.clone(nv);
|
|
191
|
-
}
|
|
192
|
-
listener(nv, ov);
|
|
193
|
-
resetChangeFromWatch();
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
pass++;
|
|
197
|
-
} while (changeDetected && pass < MAX_PASSES);
|
|
198
|
-
});
|
|
199
|
-
isRunning = false;
|
|
200
|
-
// Trigger Angular change detection if watchers actually changed values
|
|
201
|
-
if (actuallyChanged) {
|
|
202
|
-
ngZone.run(() => {
|
|
203
|
-
log(`-------DONE (changes detected)--------- `);
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
else {
|
|
207
|
-
log(`-------DONE (no changes)--------- `);
|
|
208
|
-
}
|
|
209
|
-
// 🔥 collapse ALL mid-run triggers into ONE rerun
|
|
210
|
-
// BUT limit consecutive reruns to prevent infinite loops
|
|
211
|
-
if (rerunRequested) {
|
|
212
|
-
rerunRequested = false;
|
|
213
|
-
if (consecutiveReruns < MAX_CONSECUTIVE_RERUNS) {
|
|
214
|
-
consecutiveReruns++;
|
|
215
|
-
log(`[Watcher] Scheduling rerun #${consecutiveReruns} (requested during execution)`);
|
|
216
|
-
scheduleExecution(ignoreMuted);
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
consecutiveReruns = 0;
|
|
220
|
-
log(`[Watcher] ⚠️ Stopped infinite loop! Max consecutive reruns (${MAX_CONSECUTIVE_RERUNS}) reached. This usually means watcher listeners are triggering more change detection.`);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
// No rerun requested - reset counter
|
|
225
|
-
consecutiveReruns = 0;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
130
|
const debouncedTriggerWatchers = debounce(() => {
|
|
229
131
|
skipWatchers = true;
|
|
230
|
-
ngZone.
|
|
132
|
+
ngZone.run(() => triggerWatchers());
|
|
231
133
|
}, 100);
|
|
232
|
-
|
|
134
|
+
export const $invokeWatchers = (force, ignoreMuted) => {
|
|
233
135
|
if (force) {
|
|
234
136
|
triggerWatchers(ignoreMuted);
|
|
235
|
-
}
|
|
236
|
-
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
237
139
|
if (skipWatchers) {
|
|
238
140
|
skipWatchers = false;
|
|
239
141
|
return;
|
|
240
142
|
}
|
|
241
143
|
debouncedTriggerWatchers();
|
|
242
144
|
}
|
|
243
|
-
}
|
|
145
|
+
};
|
|
244
146
|
export const $appDigest = (() => {
|
|
245
147
|
let queued = false;
|
|
246
148
|
return (force) => {
|
|
@@ -265,9 +167,4 @@ export const $appDigest = (() => {
|
|
|
265
167
|
}
|
|
266
168
|
};
|
|
267
169
|
})();
|
|
268
|
-
function log(message) {
|
|
269
|
-
if (window.__WM_DEBUG_WATCHERS__) {
|
|
270
|
-
console.log(message);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3V0aWxzL3dhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBSXRDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7QUFFeEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRWhDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDO0FBRTdELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNsQixJQUFJLE1BQU0sQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQVksRUFBRSxPQUFlLEVBQUUsRUFBRSxFQUFFO0lBQ3hELElBQUksT0FBTyxDQUFDO0lBQ1osT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUU7UUFDZixNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxPQUFPLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0UsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEdB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QUFNLEVBQUUsQ0FBQztnQkFDVCxPQUFPO1lBQ1gsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDTixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUNoQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNuQixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUVMLFNBQVMsR0FBRyxDQUFDLE9BQWU7SUFDeEIsSUFBSyxNQUFjLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSURHZW5lcmF0b3IgfSBmcm9tICcuL2lkLWdlbmVyYXRvcic7XG5cbmltcG9ydCB7ICRwYXJzZUV4cHIgfSBmcm9tICcuL2V4cHJlc3Npb24tcGFyc2VyJztcbmltcG9ydCB7IGZpbmRWYWx1ZU9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuY29uc3QgcmVnaXN0cnkgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG5jb25zdCB3YXRjaElkR2VuZXJhdG9yID0gbmV3IElER2VuZXJhdG9yKCd3YXRjaC1pZC0nKTtcblxuZXhwb3J0IGNvbnN0IEZJUlNUX1RJTUVfV0FUQ0ggPSB7fTtcblxuT2JqZWN0LmZyZWV6ZShGSVJTVF9USU1FX1dBVENIKTtcblxuZXhwb3J0IGNvbnN0IGlzRmlyc3RUaW1lQ2hhbmdlID0gdiA9PiB2ID09PSBGSVJTVF9USU1FX1dBVENIO1xuXG5sZXQgbXV0ZWQgPSBmYWxzZTtcbmxldCBhcHBSZWY7XG5cbmV4cG9ydCBjb25zdCBkZWJvdW5jZSA9IChmbjogRnVuY3Rpb24sIHdhaXQ6IG51bWJlciA9IDUwKSA9PiB7XG4gICAgbGV0IHRpbWVvdXQ7XG4gICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgIHdpbmRvd1snX196b25lX3N5bWJvbF9fY2xlYXJUaW1lb3V0J10odGltZW91dCk7XG4gICAgICAgIHRpbWVvdXQgPSB3aW5kb3dbJ19fem9uZV9zeW1ib2xfX3NldFRpbWVvdXQnXSgoKSA9PiBmbiguLi5hcmdzKSwgd2FpdCk7XG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBtdXRlV2F0Y2hlcnMgPSAoKSA9PiB7XG4gICAgbXV0ZWQgPSB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVuTXV0ZVdhdGNoZXJzID0gKCkgPT4ge1xuICAgIG11dGVkID0gZmFsc2U7XG4gICAgJGludm9rZVdhdGNoZXJzKHRydWUpO1xufTtcblxuY29uc3QgYXJyYXlDb25zdW1lciA9IChsaXN0ZW5lckZuLCByZXN0RXhwciwgbmV3VmFsLCBvbGRWYWwpID0+IHtcbiAgICBsZXQgZGF0YSA9IG5ld1ZhbCxcbiAgICAgICAgZm9ybWF0dGVkRGF0YTtcblxuICAgIGlmIChfLmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgZm9ybWF0dGVkRGF0YSA9IGRhdGEubWFwKGZ1bmN0aW9uIChkYXR1bSkge1xuICAgICAgICAgICAgcmV0dXJuIGZpbmRWYWx1ZU9mKGRhdHVtLCByZXN0RXhwcik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIElmIHJlc3VsdGluZyBzdHJ1Y3R1cmUgaXMgYW4gYXJyYXkgb2YgYXJyYXksIGZsYXR0ZW4gaXRcbiAgICAgICAgaWYgKF8uaXNBcnJheShmb3JtYXR0ZWREYXRhWzBdKSkge1xuICAgICAgICAgICAgZm9ybWF0dGVkRGF0YSA9IF8uZmxhdHRlbihmb3JtYXR0ZWREYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpc3RlbmVyRm4oZm9ybWF0dGVkRGF0YSwgb2xkVmFsKTtcbiAgICB9XG59O1xuXG5jb25zdCBnZXRVcGRhdGVkV2F0Y0luZm8gPSAoZXhwciwgYWNjZXB0c0FycmF5LCBsaXN0ZW5lcikgPT4ge1xuICAgIC8vIGxpc3RlbmVyIGRvZXNuJ3QgYWNjZXB0IGFycmF5XG4gICAgLy8gcmVwbGFjZSBhbGwgYFskaV1gIHdpdGggYFswXWAgYW5kIHJldHVybiB0aGUgZXhwcmVzc2lvblxuICAgIGxldCByZWdleCA9IC9cXFtcXCRpXFxdL2csXG4gICAgICAgICRJICAgICAgICAgICAgICAgID0gJ1skaV0nLFxuICAgICAgICAkMCAgICAgICAgICAgICAgICA9ICdbMF0nO1xuICAgIGlmICghYWNjZXB0c0FycmF5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnZXhwcicgICAgIDogZXhwci5yZXBsYWNlKHJlZ2V4LCAkMCksXG4gICAgICAgICAgICAnbGlzdGVuZXInIDogbGlzdGVuZXJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBsaXN0ZW5lciBhY2NlcHRzIGFycmF5XG4gICAgLy8gcmVwbGFjZSBhbGwgZXhjZXB0IHRoZSBsYXN0IGBbJGldYCB3aXRoIGBbMF1gIGFuZCByZXR1cm4gdGhlIGV4cHJlc3Npb24uXG4gICAgdmFyIGluZGV4ICAgICAgICAgICA9IGV4cHIubGFzdEluZGV4T2YoJEkpLFxuICAgICAgICBfZXhwciAgICAgICAgICAgPSBleHByLnN1YnN0cigwLCBpbmRleCkucmVwbGFjZSgkSSwgJDApLFxuICAgICAgICByZXN0RXhwciAgICAgICAgPSBleHByLnN1YnN0cihpbmRleCArIDUpLFxuICAgICAgICBhcnJheUNvbnN1bWVyRm4gPSBsaXN0ZW5lcjtcblxuICAgIGlmIChyZXN0RXhwcikge1xuICAgICAgICBhcnJheUNvbnN1bWVyRm4gPSBhcnJheUNvbnN1bWVyLmJpbmQodW5kZWZpbmVkLCBsaXN0ZW5lciwgcmVzdEV4cHIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgICdleHByJyAgICAgOiBfZXhwcixcbiAgICAgICAgJ2xpc3RlbmVyJyA6IGFycmF5Q29uc3VtZXJGblxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgJHdhdGNoID0gKGV4cHIsICRzY29wZSwgJGxvY2FscywgbGlzdGVuZXIsIGlkZW50aWZpZXIgPSB3YXRjaElkR2VuZXJhdG9yLm5leHRVaWQoKSwgZG9Ob3RDbG9uZSA9IGZhbHNlLCBjb25maWc6YW55PXt9LCBpc011dGVkPzogKCkgPT4gYm9vbGVhbikgPT4ge1xuICAgIGlmIChleHByLmluZGV4T2YoJ1skaV0nKSAhPT0gLTEpIHtcbiAgICAgICAgbGV0IHdhdGNoSW5mbyA9IGdldFVwZGF0ZWRXYXRjSW5mbyhleHByLCBjb25maWcgJiYgKGNvbmZpZy5hcnJheVR5cGUgfHwgY29uZmlnLmlzTGlzdCksIGxpc3RlbmVyKTtcbiAgICAgICAgZXhwciA9IHdhdGNoSW5mby5leHByO1xuICAgICAgICBsaXN0ZW5lciA9IHdhdGNoSW5mby5saXN0ZW5lcjtcbiAgICB9XG4gICAgY29uc3QgZm4gPSAkcGFyc2VFeHByKGV4cHIpO1xuXG4gICAgcmVnaXN0cnkuc2V0KGlkZW50aWZpZXIsIHtcbiAgICAgICAgZm46IGZuLmJpbmQoZXhwciwgJHNjb3BlLCAkbG9jYWxzKSxcbiAgICAgICAgbGlzdGVuZXIsXG4gICAgICAgIGV4cHIsXG4gICAgICAgIGxhc3Q6IEZJUlNUX1RJTUVfV0FUQ0gsXG4gICAgICAgIGRvTm90Q2xvbmUsXG4gICAgICAgIGlzTXV0ZWQ6IGlzTXV0ZWRcbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiAkdW53YXRjaChpZGVudGlmaWVyKTtcbn07XG5cbmV4cG9ydCBjb25zdCAkdW53YXRjaCA9IGlkZW50aWZpZXIgPT4gcmVnaXN0cnkuZGVsZXRlKGlkZW50aWZpZXIpO1xuXG5sZXQgY2hhbmdlZEJ5V2F0Y2ggPSBmYWxzZTtcblxuY29uc3QgJFJBRiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7XG5cbmxldCBuZ1pvbmU7XG5cbmNvbnN0IHRyaWdnZXJXYXRjaGVycyA9IChpZ25vcmVNdXRlZD86IGJvb2xlYW4pID0+IHtcblxuICAgIGlmIChtdXRlZCAmJiAhaWdub3JlTXV0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsb2coXCIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnRyaWdnZXJXYXRjaGVycy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLlwiKTtcbiAgICBjb25zdCBsaW1pdCA9IDU7XG4gICAgbGV0IHBhc3MgPSAxO1xuICAgIGxldCBjaGFuZ2VEZXRlY3RlZDtcblxuICAgIGRvIHtcbiAgICAgICAgY2hhbmdlRGV0ZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgcmVnaXN0cnkuZm9yRWFjaCh3YXRjaEluZm8gPT4ge1xuICAgICAgICAgICAgaWYod2F0Y2hJbmZvLmlzTXV0ZWQgJiYgd2F0Y2hJbmZvLmlzTXV0ZWQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZuID0gd2F0Y2hJbmZvLmZuO1xuICAgICAgICAgICAgY29uc3QgbGlzdGVuZXIgPSB3YXRjaEluZm8ubGlzdGVuZXI7XG4gICAgICAgICAgICBjb25zdCBvdiA9IHdhdGNoSW5mby5sYXN0O1xuICAgICAgICAgICAgbGV0IG52O1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG52ID0gZm4oKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYGVycm9yIGluIGV4ZWN1dGluZyBleHByZXNzaW9uOiAnJHt3YXRjaEluZm8uZXhwcn0nYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghXy5pc0VxdWFsKG52LCBvdikpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY2hhbmdlZEJ5V2F0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgIHdhdGNoSW5mby5sYXN0ID0gbnY7XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5pc09iamVjdChudikgJiYgIXdhdGNoSW5mby5kb05vdENsb25lICYmIG52Ll9fY2xvbmVhYmxlX18gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHdhdGNoSW5mby5sYXN0ID0gXy5jbG9uZShudik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxpc3RlbmVyKG52LCBvdik7XG4gICAgICAgICAgICAgICAgcmVzZXRDaGFuZ2VGcm9tV2F0Y2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHBhc3MrKztcblxuICAgIH0gd2hpbGUgKGNoYW5nZURldGVjdGVkICYmIHBhc3MgPCBsaW1pdCk7XG5cbiAgICBpZiAoY2hhbmdlRGV0ZWN0ZWQgJiYgcGFzcyA9PT0gbGltaXQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBOdW1iZXIgb2Ygd2F0Y2ggY3ljbGVzIGdvbmUgYWJvdmUgc2V0IGxpbWl0IG9mOiAke2xpbWl0fSBgKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0Tmdab25lID0gem9uZSA9PiBuZ1pvbmUgPSB6b25lO1xuXG5leHBvcnQgY29uc3Qgc2V0QXBwUmVmID0gcmVmID0+IHtcbiAgICBhcHBSZWYgPSByZWZcbn07XG5cbmV4cG9ydCBjb25zdCBpc0NoYW5nZUZyb21XYXRjaCA9ICgpID0+IGNoYW5nZWRCeVdhdGNoO1xuZXhwb3J0IGNvbnN0IHJlc2V0Q2hhbmdlRnJvbVdhdGNoID0gKCkgPT4gY2hhbmdlZEJ5V2F0Y2ggPSBmYWxzZTtcblxuKDxhbnk+d2luZG93KS53YXRjaFJlZ2lzdHJ5ID0gcmVnaXN0cnk7XG5cbmxldCBza2lwV2F0Y2hlcnM7XG5cbmxldCBzY2hlZHVsZWQgPSBmYWxzZSxcbiAgICByZXJ1blJlcXVlc3RlZCA9IGZhbHNlLFxuICAgIGlzUnVubmluZyA9IGZhbHNlLFxuICAgIGNvbnNlY3V0aXZlUmVydW5zID0gMDtcblxuY29uc3QgTUFYX1BBU1NFUyA9IDUsXG4gICAgREVCT1VOQ0VfVElNRSA9IDIwMCxcbiAgICBNQVhfQ09OU0VDVVRJVkVfUkVSVU5TID0gMztcblxuKHdpbmRvdyBhcyBhbnkpLl9fV01fREVCVUdfV0FUQ0hFUlNfXyA9IGZhbHNlO1xuXG5leHBvcnQgY29uc3QgJGludm9rZVdhdGNoZXJzID0gKFxuICAgIGZvcmNlID0gZmFsc2UsXG4gICAgaWdub3JlTXV0ZWQgPSBmYWxzZVxuKTogdm9pZCA9PiB7XG4gICAgaWYgKGZvcmNlKSB7XG4gICAgICAgIHRyaWdnZXJXYXRjaGVycyhpZ25vcmVNdXRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc2NoZWR1bGVFeGVjdXRpb24oaWdub3JlTXV0ZWQpO1xuICAgIH1cbn07XG5cbmZ1bmN0aW9uIHNjaGVkdWxlRXhlY3V0aW9uKGlnbm9yZU11dGVkOiBib29sZWFuKSB7XG4gICAgaWYgKHNjaGVkdWxlZCkge1xuICAgICAgICByZXJ1blJlcXVlc3RlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzY2hlZHVsZWQgPSB0cnVlO1xuXG4gICAgLy8gUmVzZXQgY29uc2VjdXRpdmUgcmVydW4gY291bnRlciB3aGVuIHNjaGVkdWxpbmcgZnJvbSBvdXRzaWRlXG4gICAgLy8gKG5vdCBmcm9tIHdpdGhpbiBleGVjdXRlV2F0Y2hlcnMgcmVydW4gbG9naWMpXG4gICAgaWYgKCFpc1J1bm5pbmcpIHtcbiAgICAgICAgY29uc2VjdXRpdmVSZXJ1bnMgPSAwO1xuICAgIH1cblxuICAgIGRlYm91bmNlZEV4ZWN1dGUoaWdub3JlTXV0ZWQpO1xufVxuXG5jb25zdCBkZWJvdW5jZWRFeGVjdXRlID0gZGVib3VuY2UoKGlnbm9yZU11dGVkOiBib29sZWFuKSA9PiB7XG4gICAgc2NoZWR1bGVkID0gZmFsc2U7XG4gICAgZXhlY3V0ZVdhdGNoZXJzKGlnbm9yZU11dGVkKTtcbn0sIERFQk9VTkNFX1RJTUUpO1xuXG5mdW5jdGlvbiBleGVjdXRlV2F0Y2hlcnMoaWdub3JlTXV0ZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoaXNSdW5uaW5nKSB7XG4gICAgICAgIHJlcnVuUmVxdWVzdGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlzUnVubmluZyA9IHRydWU7XG5cbiAgICBsZXQgYWN0dWFsbHlDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICBuZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBsZXQgcGFzcyA9IDE7XG4gICAgICAgIGxldCBjaGFuZ2VEZXRlY3RlZDogYm9vbGVhbjtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICBjaGFuZ2VEZXRlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgbG9nKGAtLS0tLS0tZXhlY3V0ZVdhdGNoZXJzIChydW4gIyR7Y29uc2VjdXRpdmVSZXJ1bnMgKyAxfSktLS0tLS0tLS0gYCk7XG5cbiAgICAgICAgICAgIHJlZ2lzdHJ5LmZvckVhY2god2F0Y2hJbmZvID0+IHtcbiAgICAgICAgICAgICAgICBpZih3YXRjaEluZm8uaXNNdXRlZCAmJiB3YXRjaEluZm8uaXNNdXRlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZm4gPSB3YXRjaEluZm8uZm47XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdGVuZXIgPSB3YXRjaEluZm8ubGlzdGVuZXI7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3YgPSB3YXRjaEluZm8ubGFzdDtcbiAgICAgICAgICAgICAgICBsZXQgbnY7XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBudiA9IGZuKCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYGVycm9yIGluIGV4ZWN1dGluZyBleHByZXNzaW9uOiAnJHt3YXRjaEluZm8uZXhwcn0nYCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFfLmlzRXF1YWwobnYsIG92KSkge1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbGx5Q2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRCeVdhdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgd2F0Y2hJbmZvLmxhc3QgPSBudjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoXy5pc09iamVjdChudikgJiYgIXdhdGNoSW5mby5kb05vdENsb25lICYmIG52Ll9fY2xvbmVhYmxlX18gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3YXRjaEluZm8ubGFzdCA9IF8uY2xvbmUobnYpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyKG52LCBvdik7XG4gICAgICAgICAgICAgICAgICAgIHJlc2V0Q2hhbmdlRnJvbVdhdGNoKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHBhc3MrKztcbiAgICAgICAgfSB3aGlsZSAoY2hhbmdlRGV0ZWN0ZWQgJiYgcGFzcyA8IE1BWF9QQVNTRVMpO1xuICAgIH0pO1xuXG4gICAgaXNSdW5uaW5nID0gZmFsc2U7XG5cbiAgICAvLyBUcmlnZ2VyIEFuZ3VsYXIgY2hhbmdlIGRldGVjdGlvbiBpZiB3YXRjaGVycyBhY3R1YWxseSBjaGFuZ2VkIHZhbHVlc1xuICAgIGlmIChhY3R1YWxseUNoYW5nZWQpIHtcbiAgICAgICAgbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBsb2coYC0tLS0tLS1ET05FIChjaGFuZ2VzIGRldGVjdGVkKS0tLS0tLS0tLSBgKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbG9nKGAtLS0tLS0tRE9ORSAobm8gY2hhbmdlcyktLS0tLS0tLS0gYCk7XG4gICAgfVxuXG4gICAgLy8g8J+UpSBjb2xsYXBzZSBBTEwgbWlkLXJ1biB0cmlnZ2VycyBpbnRvIE9ORSByZXJ1blxuICAgIC8vIEJVVCBsaW1pdCBjb25zZWN1dGl2ZSByZXJ1bnMgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wc1xuICAgIGlmIChyZXJ1blJlcXVlc3RlZCkge1xuICAgICAgICByZXJ1blJlcXVlc3RlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChjb25zZWN1dGl2ZVJlcnVucyA8IE1BWF9DT05TRUNVVElWRV9SRVJVTlMpIHtcbiAgICAgICAgICAgIGNvbnNlY3V0aXZlUmVydW5zKys7XG4gICAgICAgICAgICBsb2coYFtXYXRjaGVyXSBTY2hlZHVsaW5nIHJlcnVuICMke2NvbnNlY3V0aXZlUmVydW5zfSAocmVxdWVzdGVkIGR1cmluZyBleGVjdXRpb24pYCk7XG4gICAgICAgICAgICBzY2hlZHVsZUV4ZWN1dGlvbihpZ25vcmVNdXRlZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zZWN1dGl2ZVJlcnVucyA9IDA7XG4gICAgICAgICAgICBsb2coYFtXYXRjaGVyXSDimqDvuI8gU3RvcHBlZCBpbmZpbml0ZSBsb29wISBNYXggY29uc2VjdXRpdmUgcmVydW5zICgke01BWF9DT05TRUNVVElWRV9SRVJVTlN9KSByZWFjaGVkLiBUaGlzIHVzdWFsbHkgbWVhbnMgd2F0Y2hlciBsaXN0ZW5lcnMgYXJlIHRyaWdnZXJpbmcgbW9yZSBjaGFuZ2UgZGV0ZWN0aW9uLmApO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm8gcmVydW4gcmVxdWVzdGVkIC0gcmVzZXQgY291bnRlclxuICAgICAgICBjb25zZWN1dGl2ZVJlcnVucyA9IDA7XG4gICAgfVxufVxuXG5jb25zdCBkZWJvdW5jZWRUcmlnZ2VyV2F0Y2hlcnMgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgc2tpcFdhdGNoZXJzID0gdHJ1ZTtcbiAgICBuZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdHJpZ2dlcldhdGNoZXJzKCkpO1xufSwgMTAwKTtcblxuLypleHBvcnQgY29uc3QgJGludm9rZVdhdGNoZXJzID0gKGZvcmNlPzogYm9vbGVhbiwgaWdub3JlTXV0ZWQ/OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKGZvcmNlKSB7XG4gICAgICAgIHRyaWdnZXJXYXRjaGVycyhpZ25vcmVNdXRlZCk7XG4gICAgfSBlbHNlIHtcblxuICAgICAgICBpZiAoc2tpcFdhdGNoZXJzKSB7XG4gICAgICAgICAgICBza2lwV2F0Y2hlcnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBkZWJvdW5jZWRUcmlnZ2VyV2F0Y2hlcnMoKTtcbiAgICB9XG59OyovXG5cbmV4cG9ydCBjb25zdCAkYXBwRGlnZXN0ID0gKCgpID0+IHtcbiAgICBsZXQgcXVldWVkID0gZmFsc2U7XG4gICAgcmV0dXJuIChmb3JjZT86IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKCFhcHBSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9yY2UpIHtcbiAgICAgICAgICAgIG5nWm9uZS5ydW4oKCkgPT4gYXBwUmVmLnRpY2soKSk7XG4gICAgICAgICAgICBxdWV1ZWQgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChxdWV1ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHF1ZXVlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgJFJBRigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG5nWm9uZS5ydW4oKCkgPT4gYXBwUmVmLnRpY2soKSk7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXVlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn0pKCk7XG5cbmZ1bmN0aW9uIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl9fV01fREVCVUdfV0FUQ0hFUlNfXykge1xuICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcbiAgICB9XG59XG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3V0aWxzL3dhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXJFLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7QUFFeEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRWhDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDO0FBRTdELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNsQixJQUFJLE1BQU0sQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQVksRUFBRSxPQUFlLEVBQUUsRUFBRSxFQUFFO0lBQ3hELElBQUksT0FBTyxDQUFDO0lBQ1osT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUU7UUFDZixNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxPQUFPLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVB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QUNELElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNULE9BQU87WUFDWCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDZCxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ2hDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDLENBQUM7QUFDTixDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSURHZW5lcmF0b3IgfSBmcm9tICcuL2lkLWdlbmVyYXRvcic7XG5cbmltcG9ydCB7ICRwYXJzZUV4cHIgfSBmcm9tICcuL2V4cHJlc3Npb24tcGFyc2VyJztcbmltcG9ydCB7IGZpbmRWYWx1ZU9mIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge2Nsb25lLCBmbGF0dGVuLCBpc0FycmF5LCBpc0VxdWFsLCBpc09iamVjdH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5jb25zdCByZWdpc3RyeSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5cbmNvbnN0IHdhdGNoSWRHZW5lcmF0b3IgPSBuZXcgSURHZW5lcmF0b3IoJ3dhdGNoLWlkLScpO1xuXG5leHBvcnQgY29uc3QgRklSU1RfVElNRV9XQVRDSCA9IHt9O1xuXG5PYmplY3QuZnJlZXplKEZJUlNUX1RJTUVfV0FUQ0gpO1xuXG5leHBvcnQgY29uc3QgaXNGaXJzdFRpbWVDaGFuZ2UgPSB2ID0+IHYgPT09IEZJUlNUX1RJTUVfV0FUQ0g7XG5cbmxldCBtdXRlZCA9IGZhbHNlO1xubGV0IGFwcFJlZjtcblxuZXhwb3J0IGNvbnN0IGRlYm91bmNlID0gKGZuOiBGdW5jdGlvbiwgd2FpdDogbnVtYmVyID0gNTApID0+IHtcbiAgICBsZXQgdGltZW91dDtcbiAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgd2luZG93WydfX3pvbmVfc3ltYm9sX19jbGVhclRpbWVvdXQnXSh0aW1lb3V0KTtcbiAgICAgICAgdGltZW91dCA9IHdpbmRvd1snX196b25lX3N5bWJvbF9fc2V0VGltZW91dCddKCgpID0+IGZuKC4uLmFyZ3MpLCB3YWl0KTtcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG11dGVXYXRjaGVycyA9ICgpID0+IHtcbiAgICBtdXRlZCA9IHRydWU7XG59O1xuXG5leHBvcnQgY29uc3QgdW5NdXRlV2F0Y2hlcnMgPSAoKSA9PiB7XG4gICAgbXV0ZWQgPSBmYWxzZTtcbiAgICB0cmlnZ2VyV2F0Y2hlcnMoKTtcbn07XG5cbmNvbnN0IGFycmF5Q29uc3VtZXIgPSAobGlzdGVuZXJGbiwgcmVzdEV4cHIsIG5ld1ZhbCwgb2xkVmFsKSA9PiB7XG4gICAgbGV0IGRhdGEgPSBuZXdWYWwsXG4gICAgICAgIGZvcm1hdHRlZERhdGE7XG5cbiAgICBpZiAoaXNBcnJheShkYXRhKSkge1xuICAgICAgICBmb3JtYXR0ZWREYXRhID0gZGF0YS5tYXAoZnVuY3Rpb24gKGRhdHVtKSB7XG4gICAgICAgICAgICByZXR1cm4gZmluZFZhbHVlT2YoZGF0dW0sIHJlc3RFeHByKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gSWYgcmVzdWx0aW5nIHN0cnVjdHVyZSBpcyBhbiBhcnJheSBvZiBhcnJheSwgZmxhdHRlbiBpdFxuICAgICAgICBpZiAoaXNBcnJheShmb3JtYXR0ZWREYXRhWzBdKSkge1xuICAgICAgICAgICAgZm9ybWF0dGVkRGF0YSA9IGZsYXR0ZW4oZm9ybWF0dGVkRGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBsaXN0ZW5lckZuKGZvcm1hdHRlZERhdGEsIG9sZFZhbCk7XG4gICAgfVxufTtcblxuY29uc3QgZ2V0VXBkYXRlZFdhdGNJbmZvID0gKGV4cHIsIGFjY2VwdHNBcnJheSwgbGlzdGVuZXIpID0+IHtcbiAgICAvLyBsaXN0ZW5lciBkb2Vzbid0IGFjY2VwdCBhcnJheVxuICAgIC8vIHJlcGxhY2UgYWxsIGBbJGldYCB3aXRoIGBbMF1gIGFuZCByZXR1cm4gdGhlIGV4cHJlc3Npb25cbiAgICBsZXQgcmVnZXggPSAvXFxbXFwkaVxcXS9nLFxuICAgICAgICAkSSAgICAgICAgICAgICAgICA9ICdbJGldJyxcbiAgICAgICAgJDAgICAgICAgICAgICAgICAgPSAnWzBdJztcbiAgICBpZiAoIWFjY2VwdHNBcnJheSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ2V4cHInICAgICA6IGV4cHIucmVwbGFjZShyZWdleCwgJDApLFxuICAgICAgICAgICAgJ2xpc3RlbmVyJyA6IGxpc3RlbmVyXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gbGlzdGVuZXIgYWNjZXB0cyBhcnJheVxuICAgIC8vIHJlcGxhY2UgYWxsIGV4Y2VwdCB0aGUgbGFzdCBgWyRpXWAgd2l0aCBgWzBdYCBhbmQgcmV0dXJuIHRoZSBleHByZXNzaW9uLlxuICAgIHZhciBpbmRleCAgICAgICAgICAgPSBleHByLmxhc3RJbmRleE9mKCRJKSxcbiAgICAgICAgX2V4cHIgICAgICAgICAgID0gZXhwci5zdWJzdHIoMCwgaW5kZXgpLnJlcGxhY2UoJEksICQwKSxcbiAgICAgICAgcmVzdEV4cHIgICAgICAgID0gZXhwci5zdWJzdHIoaW5kZXggKyA1KSxcbiAgICAgICAgYXJyYXlDb25zdW1lckZuID0gbGlzdGVuZXI7XG5cbiAgICBpZiAocmVzdEV4cHIpIHtcbiAgICAgICAgYXJyYXlDb25zdW1lckZuID0gYXJyYXlDb25zdW1lci5iaW5kKHVuZGVmaW5lZCwgbGlzdGVuZXIsIHJlc3RFeHByKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICAnZXhwcicgICAgIDogX2V4cHIsXG4gICAgICAgICdsaXN0ZW5lcicgOiBhcnJheUNvbnN1bWVyRm5cbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0ICR3YXRjaCA9IChleHByLCAkc2NvcGUsICRsb2NhbHMsIGxpc3RlbmVyLCBpZGVudGlmaWVyID0gd2F0Y2hJZEdlbmVyYXRvci5uZXh0VWlkKCksIGRvTm90Q2xvbmUgPSBmYWxzZSwgY29uZmlnOmFueT17fSwgaXNNdXRlZD86ICgpID0+IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoZXhwci5pbmRleE9mKCdbJGldJykgIT09IC0xKSB7XG4gICAgICAgIGxldCB3YXRjaEluZm8gPSBnZXRVcGRhdGVkV2F0Y0luZm8oZXhwciwgY29uZmlnICYmIChjb25maWcuYXJyYXlUeXBlIHx8IGNvbmZpZy5pc0xpc3QpLCBsaXN0ZW5lcik7XG4gICAgICAgIGV4cHIgPSB3YXRjaEluZm8uZXhwcjtcbiAgICAgICAgbGlzdGVuZXIgPSB3YXRjaEluZm8ubGlzdGVuZXI7XG4gICAgfVxuICAgIGNvbnN0IGZuID0gJHBhcnNlRXhwcihleHByKTtcblxuICAgIHJlZ2lzdHJ5LnNldChpZGVudGlmaWVyLCB7XG4gICAgICAgIGZuOiBmbi5iaW5kKGV4cHIsICRzY29wZSwgJGxvY2FscyksXG4gICAgICAgIGxpc3RlbmVyLFxuICAgICAgICBleHByLFxuICAgICAgICBsYXN0OiBGSVJTVF9USU1FX1dBVENILFxuICAgICAgICBkb05vdENsb25lLFxuICAgICAgICBpc011dGVkOiBpc011dGVkXG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4gJHVud2F0Y2goaWRlbnRpZmllcik7XG59O1xuXG5leHBvcnQgY29uc3QgJHVud2F0Y2ggPSBpZGVudGlmaWVyID0+IHJlZ2lzdHJ5LmRlbGV0ZShpZGVudGlmaWVyKTtcblxubGV0IGNoYW5nZWRCeVdhdGNoID0gZmFsc2U7XG5cbmNvbnN0ICRSQUYgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lO1xuXG5sZXQgbmdab25lO1xuXG5jb25zdCB0cmlnZ2VyV2F0Y2hlcnMgPSAoaWdub3JlTXV0ZWQ/OiBib29sZWFuKSA9PiB7XG5cbiAgICBpZiAobXV0ZWQgJiYgIWlnbm9yZU11dGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaW1pdCA9IDU7XG4gICAgbGV0IHBhc3MgPSAxO1xuICAgIGxldCBjaGFuZ2VEZXRlY3RlZDtcblxuICAgIGRvIHtcbiAgICAgICAgY2hhbmdlRGV0ZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgcmVnaXN0cnkuZm9yRWFjaCh3YXRjaEluZm8gPT4ge1xuICAgICAgICAgICAgaWYod2F0Y2hJbmZvLmlzTXV0ZWQgJiYgd2F0Y2hJbmZvLmlzTXV0ZWQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZuID0gd2F0Y2hJbmZvLmZuO1xuICAgICAgICAgICAgY29uc3QgbGlzdGVuZXIgPSB3YXRjaEluZm8ubGlzdGVuZXI7XG4gICAgICAgICAgICBjb25zdCBvdiA9IHdhdGNoSW5mby5sYXN0O1xuICAgICAgICAgICAgbGV0IG52O1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG52ID0gZm4oKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYGVycm9yIGluIGV4ZWN1dGluZyBleHByZXNzaW9uOiAnJHt3YXRjaEluZm8uZXhwcn0nYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNFcXVhbChudiwgb3YpKSB7XG4gICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNoYW5nZWRCeVdhdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB3YXRjaEluZm8ubGFzdCA9IG52O1xuXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChudikgJiYgIXdhdGNoSW5mby5kb05vdENsb25lICYmIG52Ll9fY2xvbmVhYmxlX18gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHdhdGNoSW5mby5sYXN0ID0gY2xvbmUobnYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsaXN0ZW5lcihudiwgb3YpO1xuICAgICAgICAgICAgICAgIHJlc2V0Q2hhbmdlRnJvbVdhdGNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBwYXNzKys7XG5cbiAgICB9IHdoaWxlIChjaGFuZ2VEZXRlY3RlZCAmJiBwYXNzIDwgbGltaXQpO1xuXG4gICAgaWYgKGNoYW5nZURldGVjdGVkICYmIHBhc3MgPT09IGxpbWl0KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgTnVtYmVyIG9mIHdhdGNoIGN5Y2xlcyBnb25lIGFib3ZlIHNldCBsaW1pdCBvZjogJHtsaW1pdH0gYCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHNldE5nWm9uZSA9IHpvbmUgPT4gbmdab25lID0gem9uZTtcblxuZXhwb3J0IGNvbnN0IHNldEFwcFJlZiA9IHJlZiA9PiB7XG4gICAgYXBwUmVmID0gcmVmXG59O1xuXG5leHBvcnQgY29uc3QgaXNDaGFuZ2VGcm9tV2F0Y2ggPSAoKSA9PiBjaGFuZ2VkQnlXYXRjaDtcbmV4cG9ydCBjb25zdCByZXNldENoYW5nZUZyb21XYXRjaCA9ICgpID0+IGNoYW5nZWRCeVdhdGNoID0gZmFsc2U7XG5cbig8YW55PndpbmRvdykud2F0Y2hSZWdpc3RyeSA9IHJlZ2lzdHJ5O1xuXG5sZXQgc2tpcFdhdGNoZXJzO1xuXG5jb25zdCBkZWJvdW5jZWRUcmlnZ2VyV2F0Y2hlcnMgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgc2tpcFdhdGNoZXJzID0gdHJ1ZTtcbiAgICBuZ1pvbmUucnVuKCgpID0+IHRyaWdnZXJXYXRjaGVycygpKTtcbn0sIDEwMCk7XG5cbmV4cG9ydCBjb25zdCAkaW52b2tlV2F0Y2hlcnMgPSAoZm9yY2U/OiBib29sZWFuLCBpZ25vcmVNdXRlZD86IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoZm9yY2UpIHtcbiAgICAgICAgdHJpZ2dlcldhdGNoZXJzKGlnbm9yZU11dGVkKTtcbiAgICB9IGVsc2Uge1xuXG4gICAgICAgIGlmIChza2lwV2F0Y2hlcnMpIHtcbiAgICAgICAgICAgIHNraXBXYXRjaGVycyA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRlYm91bmNlZFRyaWdnZXJXYXRjaGVycygpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCAkYXBwRGlnZXN0ID0gKCgpID0+IHtcbiAgICBsZXQgcXVldWVkID0gZmFsc2U7XG4gICAgcmV0dXJuIChmb3JjZT86IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKCFhcHBSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9yY2UpIHtcbiAgICAgICAgICAgIG5nWm9uZS5ydW4oKCkgPT4gYXBwUmVmLnRpY2soKSk7XG4gICAgICAgICAgICBxdWV1ZWQgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChxdWV1ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHF1ZXVlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgJFJBRigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG5nWm9uZS5ydW4oKCkgPT4gYXBwUmVmLnRpY2soKSk7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXVlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn0pKCk7XG4iXX0=
|
package/core/fesm2022/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Attribute, ImplicitReceiver, PropertyRead, LiteralPrimitive, LiteralArray, LiteralMap, PropertyWrite, KeyedRead, PrefixNot, Unary, Binary, Conditional, Call, Chain, BindingPipe, Parser, Lexer } from '@angular/compiler';
|
|
2
|
-
import { isArray, startsWith, includes, get, camelCase, split, map, attempt, isError, isFunction, isDate, isString, cloneDeep, identity, intersection, omit,
|
|
2
|
+
import { isArray, startsWith, includes, get, flatten, isEqual, isObject as isObject$1, clone, camelCase, split, map, attempt, isError, isFunction, isDate, isString, cloneDeep, identity, intersection, omit, keys, toLower, replace as replace$1, forEach, trim, isEqualWith, every, indexOf, isNumber, filter, isUndefined, isNull, noop as noop$2, toUpper, assign, merge, isEmpty, debounce as debounce$1, isNil } from 'lodash-es';
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
import X2JS from 'x2js';
|
|
5
5
|
import * as momentLib from 'moment-timezone/moment-timezone';
|
|
@@ -2192,17 +2192,17 @@ const muteWatchers = () => {
|
|
|
2192
2192
|
};
|
|
2193
2193
|
const unMuteWatchers = () => {
|
|
2194
2194
|
muted = false;
|
|
2195
|
-
|
|
2195
|
+
triggerWatchers();
|
|
2196
2196
|
};
|
|
2197
2197
|
const arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {
|
|
2198
2198
|
let data = newVal, formattedData;
|
|
2199
|
-
if (
|
|
2199
|
+
if (isArray(data)) {
|
|
2200
2200
|
formattedData = data.map(function (datum) {
|
|
2201
2201
|
return findValueOf(datum, restExpr);
|
|
2202
2202
|
});
|
|
2203
2203
|
// If resulting structure is an array of array, flatten it
|
|
2204
|
-
if (
|
|
2205
|
-
formattedData =
|
|
2204
|
+
if (isArray(formattedData[0])) {
|
|
2205
|
+
formattedData = flatten(formattedData);
|
|
2206
2206
|
}
|
|
2207
2207
|
listenerFn(formattedData, oldVal);
|
|
2208
2208
|
}
|
|
@@ -2253,7 +2253,6 @@ const triggerWatchers = (ignoreMuted) => {
|
|
|
2253
2253
|
if (muted && !ignoreMuted) {
|
|
2254
2254
|
return;
|
|
2255
2255
|
}
|
|
2256
|
-
log(".......................triggerWatchers.................................");
|
|
2257
2256
|
const limit = 5;
|
|
2258
2257
|
let pass = 1;
|
|
2259
2258
|
let changeDetected;
|
|
@@ -2273,12 +2272,13 @@ const triggerWatchers = (ignoreMuted) => {
|
|
|
2273
2272
|
catch (e) {
|
|
2274
2273
|
console.warn(`error in executing expression: '${watchInfo.expr}'`);
|
|
2275
2274
|
}
|
|
2276
|
-
if (!
|
|
2275
|
+
if (!isEqual(nv, ov)) {
|
|
2277
2276
|
changeDetected = true;
|
|
2278
2277
|
changedByWatch = true;
|
|
2279
2278
|
watchInfo.last = nv;
|
|
2280
|
-
|
|
2281
|
-
|
|
2279
|
+
// @ts-ignore
|
|
2280
|
+
if (isObject$1(nv) && !watchInfo.doNotClone && nv.__cloneable__ !== false) {
|
|
2281
|
+
watchInfo.last = clone(nv);
|
|
2282
2282
|
}
|
|
2283
2283
|
listener(nv, ov);
|
|
2284
2284
|
resetChangeFromWatch();
|
|
@@ -2298,121 +2298,22 @@ const isChangeFromWatch = () => changedByWatch;
|
|
|
2298
2298
|
const resetChangeFromWatch = () => changedByWatch = false;
|
|
2299
2299
|
window.watchRegistry = registry;
|
|
2300
2300
|
let skipWatchers;
|
|
2301
|
-
let scheduled = false, rerunRequested = false, isRunning = false, consecutiveReruns = 0;
|
|
2302
|
-
const MAX_PASSES = 5, DEBOUNCE_TIME = 200, MAX_CONSECUTIVE_RERUNS = 3;
|
|
2303
|
-
window.__WM_DEBUG_WATCHERS__ = false;
|
|
2304
|
-
const $invokeWatchers = (force = false, ignoreMuted = false) => {
|
|
2305
|
-
if (force) {
|
|
2306
|
-
triggerWatchers(ignoreMuted);
|
|
2307
|
-
}
|
|
2308
|
-
else {
|
|
2309
|
-
scheduleExecution(ignoreMuted);
|
|
2310
|
-
}
|
|
2311
|
-
};
|
|
2312
|
-
function scheduleExecution(ignoreMuted) {
|
|
2313
|
-
if (scheduled) {
|
|
2314
|
-
rerunRequested = true;
|
|
2315
|
-
return;
|
|
2316
|
-
}
|
|
2317
|
-
scheduled = true;
|
|
2318
|
-
// Reset consecutive rerun counter when scheduling from outside
|
|
2319
|
-
// (not from within executeWatchers rerun logic)
|
|
2320
|
-
if (!isRunning) {
|
|
2321
|
-
consecutiveReruns = 0;
|
|
2322
|
-
}
|
|
2323
|
-
debouncedExecute(ignoreMuted);
|
|
2324
|
-
}
|
|
2325
|
-
const debouncedExecute = debounce((ignoreMuted) => {
|
|
2326
|
-
scheduled = false;
|
|
2327
|
-
executeWatchers(ignoreMuted);
|
|
2328
|
-
}, DEBOUNCE_TIME);
|
|
2329
|
-
function executeWatchers(ignoreMuted) {
|
|
2330
|
-
if (isRunning) {
|
|
2331
|
-
rerunRequested = true;
|
|
2332
|
-
return;
|
|
2333
|
-
}
|
|
2334
|
-
isRunning = true;
|
|
2335
|
-
let actuallyChanged = false;
|
|
2336
|
-
ngZone.runOutsideAngular(() => {
|
|
2337
|
-
let pass = 1;
|
|
2338
|
-
let changeDetected;
|
|
2339
|
-
do {
|
|
2340
|
-
changeDetected = false;
|
|
2341
|
-
log(`-------executeWatchers (run #${consecutiveReruns + 1})--------- `);
|
|
2342
|
-
registry.forEach(watchInfo => {
|
|
2343
|
-
if (watchInfo.isMuted && watchInfo.isMuted()) {
|
|
2344
|
-
return;
|
|
2345
|
-
}
|
|
2346
|
-
const fn = watchInfo.fn;
|
|
2347
|
-
const listener = watchInfo.listener;
|
|
2348
|
-
const ov = watchInfo.last;
|
|
2349
|
-
let nv;
|
|
2350
|
-
try {
|
|
2351
|
-
nv = fn();
|
|
2352
|
-
}
|
|
2353
|
-
catch (e) {
|
|
2354
|
-
console.warn(`error in executing expression: '${watchInfo.expr}'`);
|
|
2355
|
-
}
|
|
2356
|
-
if (!_.isEqual(nv, ov)) {
|
|
2357
|
-
changeDetected = true;
|
|
2358
|
-
actuallyChanged = true;
|
|
2359
|
-
changedByWatch = true;
|
|
2360
|
-
watchInfo.last = nv;
|
|
2361
|
-
if (_.isObject(nv) && !watchInfo.doNotClone && nv.__cloneable__ !== false) {
|
|
2362
|
-
watchInfo.last = _.clone(nv);
|
|
2363
|
-
}
|
|
2364
|
-
listener(nv, ov);
|
|
2365
|
-
resetChangeFromWatch();
|
|
2366
|
-
}
|
|
2367
|
-
});
|
|
2368
|
-
pass++;
|
|
2369
|
-
} while (changeDetected && pass < MAX_PASSES);
|
|
2370
|
-
});
|
|
2371
|
-
isRunning = false;
|
|
2372
|
-
// Trigger Angular change detection if watchers actually changed values
|
|
2373
|
-
if (actuallyChanged) {
|
|
2374
|
-
ngZone.run(() => {
|
|
2375
|
-
log(`-------DONE (changes detected)--------- `);
|
|
2376
|
-
});
|
|
2377
|
-
}
|
|
2378
|
-
else {
|
|
2379
|
-
log(`-------DONE (no changes)--------- `);
|
|
2380
|
-
}
|
|
2381
|
-
// 🔥 collapse ALL mid-run triggers into ONE rerun
|
|
2382
|
-
// BUT limit consecutive reruns to prevent infinite loops
|
|
2383
|
-
if (rerunRequested) {
|
|
2384
|
-
rerunRequested = false;
|
|
2385
|
-
if (consecutiveReruns < MAX_CONSECUTIVE_RERUNS) {
|
|
2386
|
-
consecutiveReruns++;
|
|
2387
|
-
log(`[Watcher] Scheduling rerun #${consecutiveReruns} (requested during execution)`);
|
|
2388
|
-
scheduleExecution(ignoreMuted);
|
|
2389
|
-
}
|
|
2390
|
-
else {
|
|
2391
|
-
consecutiveReruns = 0;
|
|
2392
|
-
log(`[Watcher] ⚠️ Stopped infinite loop! Max consecutive reruns (${MAX_CONSECUTIVE_RERUNS}) reached. This usually means watcher listeners are triggering more change detection.`);
|
|
2393
|
-
}
|
|
2394
|
-
}
|
|
2395
|
-
else {
|
|
2396
|
-
// No rerun requested - reset counter
|
|
2397
|
-
consecutiveReruns = 0;
|
|
2398
|
-
}
|
|
2399
|
-
}
|
|
2400
2301
|
const debouncedTriggerWatchers = debounce(() => {
|
|
2401
2302
|
skipWatchers = true;
|
|
2402
|
-
ngZone.
|
|
2303
|
+
ngZone.run(() => triggerWatchers());
|
|
2403
2304
|
}, 100);
|
|
2404
|
-
|
|
2305
|
+
const $invokeWatchers = (force, ignoreMuted) => {
|
|
2405
2306
|
if (force) {
|
|
2406
2307
|
triggerWatchers(ignoreMuted);
|
|
2407
|
-
}
|
|
2408
|
-
|
|
2308
|
+
}
|
|
2309
|
+
else {
|
|
2409
2310
|
if (skipWatchers) {
|
|
2410
2311
|
skipWatchers = false;
|
|
2411
2312
|
return;
|
|
2412
2313
|
}
|
|
2413
2314
|
debouncedTriggerWatchers();
|
|
2414
2315
|
}
|
|
2415
|
-
}
|
|
2316
|
+
};
|
|
2416
2317
|
const $appDigest = (() => {
|
|
2417
2318
|
let queued = false;
|
|
2418
2319
|
return (force) => {
|
|
@@ -2437,11 +2338,6 @@ const $appDigest = (() => {
|
|
|
2437
2338
|
}
|
|
2438
2339
|
};
|
|
2439
2340
|
})();
|
|
2440
|
-
function log(message) {
|
|
2441
|
-
if (window.__WM_DEBUG_WATCHERS__) {
|
|
2442
|
-
console.log(message);
|
|
2443
|
-
}
|
|
2444
|
-
}
|
|
2445
2341
|
|
|
2446
2342
|
var ComponentType;
|
|
2447
2343
|
(function (ComponentType) {
|
|
@@ -2544,7 +2440,6 @@ const REGEX = {
|
|
|
2544
2440
|
MIN_PAGE_RESOURCE_PATH: /.*(page.min.html)$/,
|
|
2545
2441
|
VALID_EMAIL: /^[a-zA-Z][\w.+]+@[a-zA-Z_]+?\.[a-zA-Z.]{1,4}[a-zA-Z]$/,
|
|
2546
2442
|
VALID_WEB_URL: /^(http[s]?:\/\/)(www\.){0,1}[a-zA-Z0-9=:?\/\.\-]+(\.[a-zA-Z]{2,5}[\.]{0,1})?/,
|
|
2547
|
-
VALID_IMAGE_URL: /^(https?|blob|data|file|ftp):/i,
|
|
2548
2443
|
VALID_WEBSOCKET_URL: /^(ws[s]?:\/\/)(www\.){0,1}[a-zA-Z0-9=:?\/\.\-]+(\.[a-zA-Z]{2,5}[\.]{0,1})?/,
|
|
2549
2444
|
VALID_RELATIVE_URL: /^(?!www\.|(?:http|ftp)s?:\/\/|[A-Za-z]:\\|\/\/).*/,
|
|
2550
2445
|
REPLACE_PATTERN: /\$\{([^\}]+)\}/g,
|
|
@@ -2778,9 +2673,6 @@ const isVideoFile = (fileName) => {
|
|
|
2778
2673
|
const isValidWebURL = (url) => {
|
|
2779
2674
|
return (REGEX.VALID_WEB_URL).test(url);
|
|
2780
2675
|
};
|
|
2781
|
-
const isValidImageUrl = (url) => {
|
|
2782
|
-
return (REGEX.VALID_IMAGE_URL).test(url?.trim());
|
|
2783
|
-
};
|
|
2784
2676
|
/*This function returns the url to the resource after checking the validity of url*/
|
|
2785
2677
|
const getResourceURL = (urlString) => {
|
|
2786
2678
|
if (isValidWebURL(urlString)) {
|
|
@@ -4046,7 +3938,6 @@ var Utils = /*#__PURE__*/Object.freeze({
|
|
|
4046
3938
|
isPageable: isPageable,
|
|
4047
3939
|
isSafari: isSafari,
|
|
4048
3940
|
isTablet: isTablet,
|
|
4049
|
-
isValidImageUrl: isValidImageUrl,
|
|
4050
3941
|
isValidWebURL: isValidWebURL,
|
|
4051
3942
|
isVideoFile: isVideoFile,
|
|
4052
3943
|
loadScript: loadScript,
|
|
@@ -5286,5 +5177,5 @@ class LRUCache {
|
|
|
5286
5177
|
* Generated bundle index. Do not edit.
|
|
5287
5178
|
*/
|
|
5288
5179
|
|
|
5289
|
-
export { $appDigest, $invokeWatchers, $parseEvent, $parseExpr, $unwatch, $watch, AbstractDialogService, AbstractHttpService, AbstractI18nService, AbstractNavigationService, AbstractSpinnerService, AbstractToasterService, App, AppConstants, AppDefaults, CURRENCY_INFO, ComponentType, ConstantService, CustomIconsLoaderService, CustomPipeManager, CustomWidgetRefProvider, DEFAULT_FORMATS, DataSource, DataType, DynamicComponentRefProvider, EventNotifier, FIRST_TIME_WATCH, FieldTypeService, FieldWidgetService, FormWidgetType, IDGenerator, IDataSource, LRUCache, MatchMode, PaginationService, PartialRefProvider, ScriptLoaderService, ScriptStore, StatePersistence, UserDefinedExecutionContext, UtilsService, VALIDATOR, Viewport, _WM_APP_PROJECT, addClass, addEventListenerOnElement, addForIdAttributes, adjustContainerPosition, adjustContainerRightEdges, appendNode, appendScriptToHead, checkIsCustomPipeExpression, closePopover, convertToBlob, createCSSRule, createElement, deHyphenate, debounce, defer, detectChanges, encodeUrl, encodeUrlParams, executePromiseChain, extendProto, extractCurrentItemExpr, extractType, fetchContent, findParent, findRootContainer, findValueOf, generateGUId, getAbortableDefer, getAndroidVersion, getAppSetting, getBlob, getClonedObject, getDatasourceFromExpr, getDateObj, getDisplayDateTimeFormat, getEvaluatedExprValue, getFiles, getFnByExpr, getFnForBindExpr, getFnForEventExpr, getFormWidgetTemplate, getFormattedDate, getMomentLocaleObject, getNativeDateObject, getNavClass, getNgModelAttr, getPreviewProperties, getRequiredFormWidget, getResourceURL, getRouteNameFromLink, getRowActionAttrs, getSessionStorageItem, getSheetPositionClass, getUrlParams, getValidDateObject, getValidJSON, getWebkitTraslationMatrix, getWmProjectProperties, hasOffsetStr, initCaps, insertAfter, insertBefore, isAndroid, isAndroidTablet, isAppleProduct, isAudioFile, isChangeFromWatch, isDataSourceEqual, isDateTimeType, isDefined, isElementInViewport, isEmptyObject, isEqualWithFields, isFirstTimeChange, isIE, isImageFile, isInsecureContentRequest, isIos, isIpad, isIphone, isIpod, isKitkatDevice, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, isNumberType, isObject, isPageable, isSafari,
|
|
5180
|
+
export { $appDigest, $invokeWatchers, $parseEvent, $parseExpr, $unwatch, $watch, AbstractDialogService, AbstractHttpService, AbstractI18nService, AbstractNavigationService, AbstractSpinnerService, AbstractToasterService, App, AppConstants, AppDefaults, CURRENCY_INFO, ComponentType, ConstantService, CustomIconsLoaderService, CustomPipeManager, CustomWidgetRefProvider, DEFAULT_FORMATS, DataSource, DataType, DynamicComponentRefProvider, EventNotifier, FIRST_TIME_WATCH, FieldTypeService, FieldWidgetService, FormWidgetType, IDGenerator, IDataSource, LRUCache, MatchMode, PaginationService, PartialRefProvider, ScriptLoaderService, ScriptStore, StatePersistence, UserDefinedExecutionContext, UtilsService, VALIDATOR, Viewport, _WM_APP_PROJECT, addClass, addEventListenerOnElement, addForIdAttributes, adjustContainerPosition, adjustContainerRightEdges, appendNode, appendScriptToHead, checkIsCustomPipeExpression, closePopover, convertToBlob, createCSSRule, createElement, deHyphenate, debounce, defer, detectChanges, encodeUrl, encodeUrlParams, executePromiseChain, extendProto, extractCurrentItemExpr, extractType, fetchContent, findParent, findRootContainer, findValueOf, generateGUId, getAbortableDefer, getAndroidVersion, getAppSetting, getBlob, getClonedObject, getDatasourceFromExpr, getDateObj, getDisplayDateTimeFormat, getEvaluatedExprValue, getFiles, getFnByExpr, getFnForBindExpr, getFnForEventExpr, getFormWidgetTemplate, getFormattedDate, getMomentLocaleObject, getNativeDateObject, getNavClass, getNgModelAttr, getPreviewProperties, getRequiredFormWidget, getResourceURL, getRouteNameFromLink, getRowActionAttrs, getSessionStorageItem, getSheetPositionClass, getUrlParams, getValidDateObject, getValidJSON, getWebkitTraslationMatrix, getWmProjectProperties, hasOffsetStr, initCaps, insertAfter, insertBefore, isAndroid, isAndroidTablet, isAppleProduct, isAudioFile, isChangeFromWatch, isDataSourceEqual, isDateTimeType, isDefined, isElementInViewport, isEmptyObject, isEqualWithFields, isFirstTimeChange, isIE, isImageFile, isInsecureContentRequest, isIos, isIpad, isIphone, isIpod, isKitkatDevice, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, isNumberType, isObject, isPageable, isSafari, isValidWebURL, isVideoFile, loadScript, loadScripts, loadStyleSheet, loadStyleSheets, muteWatchers, noop, openLink, periodSeparate, prettifyLabel, prettifyLabels, processFilterExpBindNode, registerFnByExpr, removeAttr, removeClass, removeExtraSlashes, removeNode, replace, replaceAt, resetChangeFromWatch, retryIfFails, scrollToElement, setAppRef, setAttr, setCSS, setCSSFromObj, setHtml, setListClass, setNgZone, setPipeProvider, setPreviewProperties, setProperty, setSessionStorageItem, setTranslation3dPosition, setWmProjectProperties, spaceSeparate, stringStartsWith, switchClass, toBoolean, toDimension, toPromise, toggleClass, transformFileURI, triggerFn, triggerItemAction, unMuteWatchers, updateTemplateAttrs, validateAccessRoles, validateDataSourceCtx, xmlToJson };
|
|
5290
5181
|
//# sourceMappingURL=index.mjs.map
|