@rs-x/state-manager 0.4.4

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/dist/index.js ADDED
@@ -0,0 +1,3219 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // lib/abstract-observer.ts
5
+ import { Type } from "@rs-x/core";
6
+ import { Subject } from "rxjs";
7
+ var AbstractObserver = class {
8
+ static {
9
+ __name(this, "AbstractObserver");
10
+ }
11
+ _owner;
12
+ _target;
13
+ _value;
14
+ id;
15
+ _isDisposed = false;
16
+ _changed;
17
+ constructor(_owner, _target, _value, changed, id) {
18
+ this._owner = _owner;
19
+ this._target = _target;
20
+ this._value = _value;
21
+ this.id = id;
22
+ this._changed = changed ?? new Subject();
23
+ }
24
+ get value() {
25
+ return this._value;
26
+ }
27
+ set value(value) {
28
+ this._value = value;
29
+ }
30
+ get target() {
31
+ return this._target;
32
+ }
33
+ set target(value) {
34
+ this._target = value;
35
+ }
36
+ get changed() {
37
+ return this._changed;
38
+ }
39
+ init() {
40
+ }
41
+ dispose() {
42
+ if (this._isDisposed) {
43
+ return;
44
+ }
45
+ if (!this._owner?.canDispose || this._owner.canDispose()) {
46
+ this.disposeInternal();
47
+ this._target = Type.cast(void 0);
48
+ this._value = Type.cast(void 0);
49
+ this._isDisposed = true;
50
+ }
51
+ this._owner?.release?.();
52
+ }
53
+ get isDisposed() {
54
+ return this._isDisposed;
55
+ }
56
+ disposeInternal() {
57
+ }
58
+ emitChange(change) {
59
+ this._changed.next(change);
60
+ }
61
+ };
62
+
63
+ // lib/grouped-change-subscriptions-for-context-manager.ts
64
+ import { SingletonFactoryWithGuid } from "@rs-x/core";
65
+ var GroupedChangeSubscriptionsForContextManager = class extends SingletonFactoryWithGuid {
66
+ static {
67
+ __name(this, "GroupedChangeSubscriptionsForContextManager");
68
+ }
69
+ _context;
70
+ releaseContext;
71
+ _errorLog;
72
+ _subscriptions = /* @__PURE__ */ new Map();
73
+ constructor(_context, releaseContext, _errorLog, guidFactory) {
74
+ super(guidFactory), this._context = _context, this.releaseContext = releaseContext, this._errorLog = _errorLog;
75
+ }
76
+ getSubsriptionData(id) {
77
+ return this._subscriptions.get(id)?.data;
78
+ }
79
+ createInstance(data, id) {
80
+ const { observer, subscriptionData } = this.createObserver(this._context, data, id);
81
+ this._subscriptions.set(id, {
82
+ subscription: observer.changed.subscribe({
83
+ next: data.onChanged,
84
+ error: /* @__PURE__ */ __name((e) => this._errorLog.add({
85
+ message: `Failed to handle change emitted ${id}`,
86
+ exception: e,
87
+ context: this._context,
88
+ fatal: true,
89
+ data
90
+ }), "error")
91
+ }),
92
+ data: subscriptionData
93
+ });
94
+ return observer;
95
+ }
96
+ onInstanceCreated(observer, data) {
97
+ const init = data.init ? data.init : (observer2) => observer2.init();
98
+ init(observer);
99
+ }
100
+ releaseInstance(observer, id) {
101
+ super.releaseInstance(observer, id);
102
+ this._subscriptions.get(id)?.subscription.unsubscribe();
103
+ this._subscriptions.delete(id);
104
+ }
105
+ onReleased() {
106
+ this.releaseContext();
107
+ }
108
+ };
109
+
110
+ // lib/object-observer/factories/abstract-object-observer-proxy-pair.factory.ts
111
+ import { truePredicate } from "@rs-x/core";
112
+
113
+ // lib/observer-group.ts
114
+ import { Type as Type2 } from "@rs-x/core";
115
+ import { ReplaySubject } from "rxjs";
116
+ var ObserverGroup = class _ObserverGroup extends AbstractObserver {
117
+ static {
118
+ __name(this, "ObserverGroup");
119
+ }
120
+ _errorLog;
121
+ getRootObserver;
122
+ _observeRootObserver;
123
+ _subscriptions = /* @__PURE__ */ new Map();
124
+ _rootChangeSubscription;
125
+ _observers = [];
126
+ mustHandleChange;
127
+ _rootObserver;
128
+ _isInitialized = false;
129
+ _parent;
130
+ constructor(owner, target, initialValue, mustHandleChange, _errorLog, id, getRootObserver, _observeRootObserver) {
131
+ super(owner, target, initialValue, new ReplaySubject(1), id), this._errorLog = _errorLog, this.getRootObserver = getRootObserver, this._observeRootObserver = _observeRootObserver;
132
+ this.mustHandleChange = mustHandleChange ?? (() => true);
133
+ }
134
+ get rootObserver() {
135
+ if (!this._rootObserver && this.getRootObserver) {
136
+ this._rootObserver = this.getRootObserver();
137
+ }
138
+ return this._rootObserver;
139
+ }
140
+ init() {
141
+ if (this._isInitialized) {
142
+ return;
143
+ }
144
+ this._isInitialized = true;
145
+ this.rootObserver?.init();
146
+ this._observers.forEach((observer) => observer.init());
147
+ if (this._observeRootObserver && this._rootObserver) {
148
+ this._rootChangeSubscription = this._rootObserver.changed.subscribe({
149
+ next: this.emitChange,
150
+ error: /* @__PURE__ */ __name((e) => {
151
+ const target = this._rootObserver.target;
152
+ this._errorLog.add({
153
+ message: `Failed to handle change for ${Type2.getConstructorName(target)}[${this._rootObserver.id}]`,
154
+ exception: e,
155
+ context: target,
156
+ fatal: true
157
+ });
158
+ }, "error")
159
+ });
160
+ }
161
+ }
162
+ addObservers(observers) {
163
+ this._observers.push(...observers);
164
+ observers.filter((observer) => observer instanceof _ObserverGroup).forEach((observer) => observer._parent = this);
165
+ observers.forEach((observer) => this._subscriptions.set(observer, observer.changed.subscribe({
166
+ next: this.emitChange,
167
+ error: /* @__PURE__ */ __name((e) => this._errorLog.add({
168
+ message: "Failed to handle change emitted",
169
+ exception: e,
170
+ context: this,
171
+ fatal: true
172
+ }), "error")
173
+ })));
174
+ return this;
175
+ }
176
+ replaceObservers(observers) {
177
+ this.unsubscribeToObservers();
178
+ this.addObservers(observers);
179
+ this._observers.forEach((observer) => observer.init());
180
+ }
181
+ emitValue(newValue) {
182
+ this.emitChange({
183
+ arguments: [],
184
+ target: this.target,
185
+ chain: [
186
+ {
187
+ object: this.target,
188
+ id: this.id
189
+ }
190
+ ],
191
+ id: this.id,
192
+ newValue
193
+ });
194
+ }
195
+ removeObserver(target, id) {
196
+ const index = this._observers.findIndex((observer) => observer.target === target && observer.id === id);
197
+ if (index === -1) {
198
+ return;
199
+ }
200
+ const subscription = this._subscriptions.get(this._observers[index]);
201
+ if (subscription) {
202
+ subscription.unsubscribe();
203
+ this._subscriptions.delete(this._observers[index]);
204
+ }
205
+ this._observers.splice(index, 1);
206
+ }
207
+ disposeInternal() {
208
+ this.rootObserver?.dispose();
209
+ this.unsubscribeToObservers();
210
+ }
211
+ emitChange = /* @__PURE__ */ __name((change) => {
212
+ if (!change || !this.mustHandleChange(change)) {
213
+ return;
214
+ }
215
+ const isThisTarget = change.target === this.target;
216
+ const chain = isThisTarget || Type2.isNullOrUndefined(this.id) ? change.chain : [
217
+ {
218
+ object: this.target,
219
+ id: this.id
220
+ },
221
+ ...change.chain ?? []
222
+ ];
223
+ super.emitChange({
224
+ ...change,
225
+ chain
226
+ });
227
+ }, "emitChange");
228
+ unsubscribeToObservers() {
229
+ this._subscriptions.forEach((subscription) => subscription.unsubscribe());
230
+ this._subscriptions.clear();
231
+ this._observers.forEach((observer) => observer.dispose());
232
+ this._observers.length = 0;
233
+ this._rootChangeSubscription?.unsubscribe();
234
+ }
235
+ };
236
+
237
+ // lib/object-observer/factories/abstract-object-observer-proxy-pair.factory.ts
238
+ var AbstractObjectObserverProxyPairFactory = class {
239
+ static {
240
+ __name(this, "AbstractObjectObserverProxyPairFactory");
241
+ }
242
+ priority;
243
+ _observerRootObserver;
244
+ _errorLog;
245
+ _indexAccessor;
246
+ _objectPropertyObserverProxyPairManager;
247
+ constructor(priority, _observerRootObserver, _errorLog, _indexAccessor, _objectPropertyObserverProxyPairManager) {
248
+ this.priority = priority;
249
+ this._observerRootObserver = _observerRootObserver;
250
+ this._errorLog = _errorLog;
251
+ this._indexAccessor = _indexAccessor;
252
+ this._objectPropertyObserverProxyPairManager = _objectPropertyObserverProxyPairManager;
253
+ }
254
+ create(owner, data) {
255
+ const observerGroup = new ObserverGroup(this.createDisposableOwner(owner, data), data.target, data.target, truePredicate, this._errorLog, void 0, () => rootObserver?.observer, this._observerRootObserver);
256
+ this.onObserverGroupCreate(data.target, observerGroup, data.mustProxify);
257
+ const rootObserver = this.createRootObserver(data);
258
+ if (!data.initializeManually) {
259
+ observerGroup.init();
260
+ }
261
+ return {
262
+ observer: observerGroup,
263
+ proxy: rootObserver?.proxy,
264
+ proxyTarget: rootObserver?.proxyTarget
265
+ };
266
+ }
267
+ createDisposableOwner(owner, _data) {
268
+ return owner;
269
+ }
270
+ onObserverGroupCreate(target, observerGroup, mustProxify) {
271
+ if (!mustProxify) {
272
+ return;
273
+ }
274
+ const observers = [];
275
+ const indexes = this._indexAccessor.getIndexes(target);
276
+ for (const index of indexes) {
277
+ if (!mustProxify(index, target)) {
278
+ continue;
279
+ }
280
+ const { observer } = this._objectPropertyObserverProxyPairManager.create(target).instance.create({
281
+ key: index,
282
+ mustProxify
283
+ }).instance;
284
+ observers.push(observer);
285
+ }
286
+ observerGroup.replaceObservers(observers);
287
+ }
288
+ };
289
+
290
+ // lib/object-observer/factories/array-observer-proxy-pair.factory.ts
291
+ import { Inject, Injectable, RsXCoreInjectionTokens } from "@rs-x/core";
292
+
293
+ // lib/rs-x-state-manager-injection-tokes.ts
294
+ var RsXStateManagerInjectionTokens = {
295
+ IArrayProxyFactory: Symbol("IArrayProxyFactory"),
296
+ IMapProxyFactory: Symbol("IMapProxyFactory"),
297
+ ISetProxyFactory: Symbol("ISetProxyFactory"),
298
+ IDateProxyFactory: Symbol("IDateProxyFactory"),
299
+ IProxyRegistry: Symbol("IProxyRegistry"),
300
+ IPromiseProxyFactory: Symbol("IPromiseProxyFactory"),
301
+ IObservableProxyFactory: Symbol("IObservableProxyFactory"),
302
+ IObjectPropertyObserverProxyPairManager: Symbol("IObjectPropertyObserverProxyPairManager"),
303
+ IPlainObjectObserverProxyPairFactory: Symbol("IPlainObjectObserverProxyPairFactory"),
304
+ IDateObserverProxyPairFactory: Symbol("IDateObserverProxyPairFactory"),
305
+ IArrayObserverProxyPairFactory: Symbol("IArrayObserverProxyPairFactory"),
306
+ PromiseObserverProxyPairFactory: Symbol("PromiseObserverProxyPairFactory"),
307
+ ObservableObserverProxyPairFactory: Symbol("ObservableObserverProxyPairFactory"),
308
+ IMapObserverProxyPairFactory: Symbol("IMapObserverProxyPairFactory"),
309
+ ISetObserverProxyPairFactory: Symbol("ISetObserverProxyPairFactory"),
310
+ IDatePropertyObserverProxyPairFactory: Symbol("IDatePropertyObserverProxyPairFactory"),
311
+ IObjectObserverProxyPairFactoryList: Symbol("IObjectObserverProxyPairFactoryList"),
312
+ IObjectObserverProxyPairFactoryProvider: Symbol("IObjectObserverProxyPairFactoryProvider"),
313
+ IObjectObserverProxyPairManager: Symbol("IObjectObserverProxyPairManager"),
314
+ IObjectPropertyObserverManager: Symbol("IObjectPropertyObserverManager"),
315
+ ICollectionItemObserverManager: Symbol("ICollectionItemObserverManager"),
316
+ ISetItemObserverManager: Symbol("ISetItemObserverManager"),
317
+ IDatePropertyObserverManager: Symbol("IDatePropertyObserverManager"),
318
+ IPropertyObserverProxyPairFactoryList: Symbol("IPropertyObserverProxyPairFactoryList"),
319
+ NonIterableObjectPropertyObserverProxyPairFactory: Symbol("NonIterableObjectPropertyObserverProxyPairFactory"),
320
+ ICollectionItemObserverProxyPairFactory: Symbol("ICollectionItemObserverProxyPairFactory"),
321
+ IMustProxifyItemHandlerFactory: Symbol("IMustProxifyItemHandlerFactory"),
322
+ IObjectStateManager: Symbol("IObjectStateManager"),
323
+ IPropertyObserverProxyPairFactoryProvider: Symbol("IPropertyObserverProxyPairFactoryProvider"),
324
+ IPropertyObserverProxyPairFactoryProviderFactory: Symbol("IPropertyObserverProxyPairFactoryProviderFactory"),
325
+ IObjectObserverProxyPairFactoryProviderFactory: Symbol("IObjectObserverProxyPairFactoryProviderFactory"),
326
+ IStateManager: Symbol("IStateManager")
327
+ };
328
+
329
+ // lib/object-observer/factories/array-observer-proxy-pair.factory.ts
330
+ function _ts_decorate(decorators, target, key, desc) {
331
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
332
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
333
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
334
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
335
+ }
336
+ __name(_ts_decorate, "_ts_decorate");
337
+ function _ts_metadata(k, v) {
338
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
339
+ }
340
+ __name(_ts_metadata, "_ts_metadata");
341
+ function _ts_param(paramIndex, decorator) {
342
+ return function(target, key) {
343
+ decorator(target, key, paramIndex);
344
+ };
345
+ }
346
+ __name(_ts_param, "_ts_param");
347
+ var ArrayObserverProxyPairFactory = class extends AbstractObjectObserverProxyPairFactory {
348
+ static {
349
+ __name(this, "ArrayObserverProxyPairFactory");
350
+ }
351
+ _arrayProxyFactory;
352
+ constructor(_arrayProxyFactory, errorLog, arrayIndexAccessor, objectPropertyObserverProxyPairManager) {
353
+ super(5, true, errorLog, arrayIndexAccessor, objectPropertyObserverProxyPairManager), this._arrayProxyFactory = _arrayProxyFactory;
354
+ }
355
+ applies(object) {
356
+ return Array.isArray(object);
357
+ }
358
+ createRootObserver(data) {
359
+ return this._arrayProxyFactory.create({
360
+ array: data.target
361
+ }).instance;
362
+ }
363
+ };
364
+ ArrayObserverProxyPairFactory = _ts_decorate([
365
+ Injectable(),
366
+ _ts_param(0, Inject(RsXStateManagerInjectionTokens.IArrayProxyFactory)),
367
+ _ts_param(1, Inject(RsXCoreInjectionTokens.IErrorLog)),
368
+ _ts_param(2, Inject(RsXCoreInjectionTokens.IArrayIndexAccessor)),
369
+ _ts_param(3, Inject(RsXStateManagerInjectionTokens.IObjectPropertyObserverProxyPairManager)),
370
+ _ts_metadata("design:type", Function),
371
+ _ts_metadata("design:paramtypes", [
372
+ typeof IArrayProxyFactory === "undefined" ? Object : IArrayProxyFactory,
373
+ typeof IErrorLog === "undefined" ? Object : IErrorLog,
374
+ typeof IArrayIndexAccessor === "undefined" ? Object : IArrayIndexAccessor,
375
+ typeof IObjectPropertyObserverProxyPairManager === "undefined" ? Object : IObjectPropertyObserverProxyPairManager
376
+ ])
377
+ ], ArrayObserverProxyPairFactory);
378
+
379
+ // lib/object-observer/factories/date-observer-proxy-pair.factory.ts
380
+ import { Inject as Inject2, Injectable as Injectable2 } from "@rs-x/core";
381
+ function _ts_decorate2(decorators, target, key, desc) {
382
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
383
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
384
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
385
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
386
+ }
387
+ __name(_ts_decorate2, "_ts_decorate");
388
+ function _ts_metadata2(k, v) {
389
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
390
+ }
391
+ __name(_ts_metadata2, "_ts_metadata");
392
+ function _ts_param2(paramIndex, decorator) {
393
+ return function(target, key) {
394
+ decorator(target, key, paramIndex);
395
+ };
396
+ }
397
+ __name(_ts_param2, "_ts_param");
398
+ var DateObserverProxyPairFactory = class {
399
+ static {
400
+ __name(this, "DateObserverProxyPairFactory");
401
+ }
402
+ _dateProxyFactory;
403
+ priority = 6;
404
+ constructor(_dateProxyFactory) {
405
+ this._dateProxyFactory = _dateProxyFactory;
406
+ }
407
+ create(owner, proxyTarget) {
408
+ return this._dateProxyFactory.create({
409
+ owner,
410
+ date: proxyTarget.target
411
+ }).instance;
412
+ }
413
+ applies(object) {
414
+ return object instanceof Date;
415
+ }
416
+ };
417
+ DateObserverProxyPairFactory = _ts_decorate2([
418
+ Injectable2(),
419
+ _ts_param2(0, Inject2(RsXStateManagerInjectionTokens.IDateProxyFactory)),
420
+ _ts_metadata2("design:type", Function),
421
+ _ts_metadata2("design:paramtypes", [
422
+ typeof IDateProxyFactory === "undefined" ? Object : IDateProxyFactory
423
+ ])
424
+ ], DateObserverProxyPairFactory);
425
+
426
+ // lib/object-observer/factories/map-observer-proxy-pair.factory.ts
427
+ import { Inject as Inject3, Injectable as Injectable3, RsXCoreInjectionTokens as RsXCoreInjectionTokens2 } from "@rs-x/core";
428
+ function _ts_decorate3(decorators, target, key, desc) {
429
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
430
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
431
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
432
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
433
+ }
434
+ __name(_ts_decorate3, "_ts_decorate");
435
+ function _ts_metadata3(k, v) {
436
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
437
+ }
438
+ __name(_ts_metadata3, "_ts_metadata");
439
+ function _ts_param3(paramIndex, decorator) {
440
+ return function(target, key) {
441
+ decorator(target, key, paramIndex);
442
+ };
443
+ }
444
+ __name(_ts_param3, "_ts_param");
445
+ var MapObserverProxyPairFactory = class extends AbstractObjectObserverProxyPairFactory {
446
+ static {
447
+ __name(this, "MapObserverProxyPairFactory");
448
+ }
449
+ _mapProxyFactory;
450
+ constructor(_mapProxyFactory, errorLog, mapKeyAccessor, objectPropertyObserverProxyPairManager) {
451
+ super(2, true, errorLog, mapKeyAccessor, objectPropertyObserverProxyPairManager), this._mapProxyFactory = _mapProxyFactory;
452
+ }
453
+ applies(object) {
454
+ return object instanceof Map;
455
+ }
456
+ createRootObserver(data) {
457
+ return this._mapProxyFactory.create({
458
+ map: data.target
459
+ }).instance;
460
+ }
461
+ };
462
+ MapObserverProxyPairFactory = _ts_decorate3([
463
+ Injectable3(),
464
+ _ts_param3(0, Inject3(RsXStateManagerInjectionTokens.IMapProxyFactory)),
465
+ _ts_param3(1, Inject3(RsXCoreInjectionTokens2.IErrorLog)),
466
+ _ts_param3(2, Inject3(RsXCoreInjectionTokens2.IMapKeyAccessor)),
467
+ _ts_param3(3, Inject3(RsXStateManagerInjectionTokens.IObjectPropertyObserverProxyPairManager)),
468
+ _ts_metadata3("design:type", Function),
469
+ _ts_metadata3("design:paramtypes", [
470
+ typeof IMapProxyFactory === "undefined" ? Object : IMapProxyFactory,
471
+ typeof IErrorLog === "undefined" ? Object : IErrorLog,
472
+ typeof IMapKeyAccessor === "undefined" ? Object : IMapKeyAccessor,
473
+ typeof IObjectPropertyObserverProxyPairManager === "undefined" ? Object : IObjectPropertyObserverProxyPairManager
474
+ ])
475
+ ], MapObserverProxyPairFactory);
476
+
477
+ // lib/object-observer/factories/observable-observer-proxy-pair.factory.ts
478
+ import { Inject as Inject4, Injectable as Injectable4 } from "@rs-x/core";
479
+ import { isObservable } from "rxjs";
480
+ function _ts_decorate4(decorators, target, key, desc) {
481
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
482
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
483
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
484
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
485
+ }
486
+ __name(_ts_decorate4, "_ts_decorate");
487
+ function _ts_metadata4(k, v) {
488
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
489
+ }
490
+ __name(_ts_metadata4, "_ts_metadata");
491
+ function _ts_param4(paramIndex, decorator) {
492
+ return function(target, key) {
493
+ decorator(target, key, paramIndex);
494
+ };
495
+ }
496
+ __name(_ts_param4, "_ts_param");
497
+ var ObservableObserverProxyPairFactory = class {
498
+ static {
499
+ __name(this, "ObservableObserverProxyPairFactory");
500
+ }
501
+ _observableProxyFactory;
502
+ priority = 3;
503
+ constructor(_observableProxyFactory) {
504
+ this._observableProxyFactory = _observableProxyFactory;
505
+ }
506
+ create(owner, objectObserverInfo) {
507
+ return this._observableProxyFactory.create({
508
+ observable: objectObserverInfo.target,
509
+ owner
510
+ }).instance;
511
+ }
512
+ applies(object) {
513
+ return isObservable(object);
514
+ }
515
+ };
516
+ ObservableObserverProxyPairFactory = _ts_decorate4([
517
+ Injectable4(),
518
+ _ts_param4(0, Inject4(RsXStateManagerInjectionTokens.IObservableProxyFactory)),
519
+ _ts_metadata4("design:type", Function),
520
+ _ts_metadata4("design:paramtypes", [
521
+ typeof IObservableProxyFactory === "undefined" ? Object : IObservableProxyFactory
522
+ ])
523
+ ], ObservableObserverProxyPairFactory);
524
+
525
+ // lib/object-observer/factories/plain-object-observer-proxy-pair.factory.ts
526
+ import { Inject as Inject5, Injectable as Injectable5, RsXCoreInjectionTokens as RsXCoreInjectionTokens3, truePredicate as truePredicate2, Type as Type3 } from "@rs-x/core";
527
+ function _ts_decorate5(decorators, target, key, desc) {
528
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
529
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
530
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
531
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
532
+ }
533
+ __name(_ts_decorate5, "_ts_decorate");
534
+ function _ts_metadata5(k, v) {
535
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
536
+ }
537
+ __name(_ts_metadata5, "_ts_metadata");
538
+ function _ts_param5(paramIndex, decorator) {
539
+ return function(target, key) {
540
+ decorator(target, key, paramIndex);
541
+ };
542
+ }
543
+ __name(_ts_param5, "_ts_param");
544
+ var PlainObjectObserverProxyPairFactory = class extends AbstractObjectObserverProxyPairFactory {
545
+ static {
546
+ __name(this, "PlainObjectObserverProxyPairFactory");
547
+ }
548
+ constructor(errorLog, propertyValueAccessor, objectPropertyObserverProxyPairManager) {
549
+ super(7, true, errorLog, propertyValueAccessor, objectPropertyObserverProxyPairManager);
550
+ }
551
+ applies(object) {
552
+ return Type3.isPlainObject(object);
553
+ }
554
+ createRootObserver(data) {
555
+ if (data.mustProxify) {
556
+ return void 0;
557
+ }
558
+ const target = data.target;
559
+ const observers = [];
560
+ for (const index of this._indexAccessor.getIndexes(target)) {
561
+ const { observer } = this._objectPropertyObserverProxyPairManager.create(target).instance.create({
562
+ key: index
563
+ }).instance;
564
+ observers.push(observer);
565
+ }
566
+ if (observers.length === 0) {
567
+ return void 0;
568
+ }
569
+ const observerGroup = new ObserverGroup(void 0, data.target, data.target, truePredicate2, this._errorLog);
570
+ observerGroup.replaceObservers(observers);
571
+ return {
572
+ observer: observerGroup
573
+ };
574
+ }
575
+ };
576
+ PlainObjectObserverProxyPairFactory = _ts_decorate5([
577
+ Injectable5(),
578
+ _ts_param5(0, Inject5(RsXCoreInjectionTokens3.IErrorLog)),
579
+ _ts_param5(1, Inject5(RsXCoreInjectionTokens3.IPropertyValueAccessor)),
580
+ _ts_param5(2, Inject5(RsXStateManagerInjectionTokens.IObjectPropertyObserverProxyPairManager)),
581
+ _ts_metadata5("design:type", Function),
582
+ _ts_metadata5("design:paramtypes", [
583
+ typeof IErrorLog === "undefined" ? Object : IErrorLog,
584
+ typeof IPropertyValueAccessor === "undefined" ? Object : IPropertyValueAccessor,
585
+ typeof IObjectPropertyObserverProxyPairManager === "undefined" ? Object : IObjectPropertyObserverProxyPairManager
586
+ ])
587
+ ], PlainObjectObserverProxyPairFactory);
588
+
589
+ // lib/object-observer/factories/promise-observer-proxy-pair.factory.ts
590
+ import { Inject as Inject6, Injectable as Injectable6 } from "@rs-x/core";
591
+ function _ts_decorate6(decorators, target, key, desc) {
592
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
593
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
594
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
595
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
596
+ }
597
+ __name(_ts_decorate6, "_ts_decorate");
598
+ function _ts_metadata6(k, v) {
599
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
600
+ }
601
+ __name(_ts_metadata6, "_ts_metadata");
602
+ function _ts_param6(paramIndex, decorator) {
603
+ return function(target, key) {
604
+ decorator(target, key, paramIndex);
605
+ };
606
+ }
607
+ __name(_ts_param6, "_ts_param");
608
+ var PromiseObserverProxyPairFactory = class {
609
+ static {
610
+ __name(this, "PromiseObserverProxyPairFactory");
611
+ }
612
+ _promiseProxyFactory;
613
+ priority = 4;
614
+ constructor(_promiseProxyFactory) {
615
+ this._promiseProxyFactory = _promiseProxyFactory;
616
+ }
617
+ create(owner, proxyTarget) {
618
+ return this._promiseProxyFactory.create({
619
+ promise: proxyTarget.target,
620
+ owner
621
+ }).instance;
622
+ }
623
+ applies(object) {
624
+ return object instanceof Promise;
625
+ }
626
+ };
627
+ PromiseObserverProxyPairFactory = _ts_decorate6([
628
+ Injectable6(),
629
+ _ts_param6(0, Inject6(RsXStateManagerInjectionTokens.IPromiseProxyFactory)),
630
+ _ts_metadata6("design:type", Function),
631
+ _ts_metadata6("design:paramtypes", [
632
+ typeof IPromiseProxyFactory === "undefined" ? Object : IPromiseProxyFactory
633
+ ])
634
+ ], PromiseObserverProxyPairFactory);
635
+
636
+ // lib/object-observer/factories/set-observer-proxy-pair.factory.ts
637
+ import { Inject as Inject7, Injectable as Injectable7, RsXCoreInjectionTokens as RsXCoreInjectionTokens4 } from "@rs-x/core";
638
+ function _ts_decorate7(decorators, target, key, desc) {
639
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
640
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
641
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
642
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
643
+ }
644
+ __name(_ts_decorate7, "_ts_decorate");
645
+ function _ts_metadata7(k, v) {
646
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
647
+ }
648
+ __name(_ts_metadata7, "_ts_metadata");
649
+ function _ts_param7(paramIndex, decorator) {
650
+ return function(target, key) {
651
+ decorator(target, key, paramIndex);
652
+ };
653
+ }
654
+ __name(_ts_param7, "_ts_param");
655
+ var SetObserverProxyPairFactory = class extends AbstractObjectObserverProxyPairFactory {
656
+ static {
657
+ __name(this, "SetObserverProxyPairFactory");
658
+ }
659
+ _setProxyFactory;
660
+ constructor(_setProxyFactory, errorLog, setKeyAccessor, objectPropertyObserverProxyPairManager) {
661
+ super(1, true, errorLog, setKeyAccessor, objectPropertyObserverProxyPairManager), this._setProxyFactory = _setProxyFactory;
662
+ }
663
+ applies(object) {
664
+ return object instanceof Set;
665
+ }
666
+ createRootObserver(data) {
667
+ return this._setProxyFactory.create({
668
+ set: data.target
669
+ }).instance;
670
+ }
671
+ };
672
+ SetObserverProxyPairFactory = _ts_decorate7([
673
+ Injectable7(),
674
+ _ts_param7(0, Inject7(RsXStateManagerInjectionTokens.ISetProxyFactory)),
675
+ _ts_param7(1, Inject7(RsXCoreInjectionTokens4.IErrorLog)),
676
+ _ts_param7(2, Inject7(RsXCoreInjectionTokens4.ISetKeyAccessor)),
677
+ _ts_param7(3, Inject7(RsXStateManagerInjectionTokens.IObjectPropertyObserverProxyPairManager)),
678
+ _ts_metadata7("design:type", Function),
679
+ _ts_metadata7("design:paramtypes", [
680
+ typeof ISetProxyFactory === "undefined" ? Object : ISetProxyFactory,
681
+ typeof IErrorLog === "undefined" ? Object : IErrorLog,
682
+ typeof ISetKeyAccessor === "undefined" ? Object : ISetKeyAccessor,
683
+ typeof IObjectPropertyObserverProxyPairManager === "undefined" ? Object : IObjectPropertyObserverProxyPairManager
684
+ ])
685
+ ], SetObserverProxyPairFactory);
686
+
687
+ // lib/object-observer/object-observer-proxy-pair-factory.provider.ts
688
+ import { Injectable as Injectable8, MultiInject } from "@rs-x/core";
689
+ function _ts_decorate8(decorators, target, key, desc) {
690
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
691
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
692
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
693
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
694
+ }
695
+ __name(_ts_decorate8, "_ts_decorate");
696
+ function _ts_metadata8(k, v) {
697
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
698
+ }
699
+ __name(_ts_metadata8, "_ts_metadata");
700
+ function _ts_param8(paramIndex, decorator) {
701
+ return function(target, key) {
702
+ decorator(target, key, paramIndex);
703
+ };
704
+ }
705
+ __name(_ts_param8, "_ts_param");
706
+ var ObjectObserverProxyPairFactoryProvider = class {
707
+ static {
708
+ __name(this, "ObjectObserverProxyPairFactoryProvider");
709
+ }
710
+ factories;
711
+ constructor(factories) {
712
+ this.factories = [
713
+ ...factories
714
+ ].sort((a, b) => b.priority - a.priority);
715
+ }
716
+ };
717
+ ObjectObserverProxyPairFactoryProvider = _ts_decorate8([
718
+ Injectable8(),
719
+ _ts_param8(0, MultiInject(RsXStateManagerInjectionTokens.IObjectObserverProxyPairFactoryList)),
720
+ _ts_metadata8("design:type", Function),
721
+ _ts_metadata8("design:paramtypes", [
722
+ Object
723
+ ])
724
+ ], ObjectObserverProxyPairFactoryProvider);
725
+
726
+ // lib/object-observer/object-observer-proxy-pair-manager.ts
727
+ import { Inject as Inject8, Injectable as Injectable9, InvalidOperationException, RsXCoreInjectionTokens as RsXCoreInjectionTokens5, SingletonFactoryWithGuid as SingletonFactoryWithGuid2, Type as Type4 } from "@rs-x/core";
728
+ function _ts_decorate9(decorators, target, key, desc) {
729
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
730
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
731
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
732
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
733
+ }
734
+ __name(_ts_decorate9, "_ts_decorate");
735
+ function _ts_metadata9(k, v) {
736
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
737
+ }
738
+ __name(_ts_metadata9, "_ts_metadata");
739
+ function _ts_param9(paramIndex, decorator) {
740
+ return function(target, key) {
741
+ decorator(target, key, paramIndex);
742
+ };
743
+ }
744
+ __name(_ts_param9, "_ts_param");
745
+ var ObjectObserverProxyPairManager = class extends SingletonFactoryWithGuid2 {
746
+ static {
747
+ __name(this, "ObjectObserverProxyPairManager");
748
+ }
749
+ getObserverFactoryProvider;
750
+ _proxyRegistry;
751
+ constructor(getObserverFactoryProvider, _proxyRegistry, guidFactory) {
752
+ super(guidFactory), this.getObserverFactoryProvider = getObserverFactoryProvider, this._proxyRegistry = _proxyRegistry;
753
+ }
754
+ getGroupId(data) {
755
+ return data.target;
756
+ }
757
+ getGroupMemberId(data) {
758
+ return data.mustProxify;
759
+ }
760
+ create(data) {
761
+ if (this._proxyRegistry.isProxy(data.target)) {
762
+ throw new InvalidOperationException("Cannot create a proxy for a proxy");
763
+ }
764
+ return super.create(data);
765
+ }
766
+ createInstance(objectObserverInfo, id) {
767
+ const factory = this.getObserverFactoryProvider().factories.find((factory2) => factory2.applies(objectObserverInfo.target));
768
+ return factory ? factory.create({
769
+ canDispose: /* @__PURE__ */ __name(() => this.getReferenceCount(id) === 1, "canDispose"),
770
+ release: /* @__PURE__ */ __name(() => this.release(id), "release")
771
+ }, objectObserverInfo) : Type4.cast(null);
772
+ }
773
+ releaseInstance(observerProxyPair) {
774
+ observerProxyPair.observer.dispose();
775
+ }
776
+ };
777
+ ObjectObserverProxyPairManager = _ts_decorate9([
778
+ Injectable9(),
779
+ _ts_param9(0, Inject8(RsXStateManagerInjectionTokens.IObjectObserverProxyPairFactoryProviderFactory)),
780
+ _ts_param9(1, Inject8(RsXStateManagerInjectionTokens.IProxyRegistry)),
781
+ _ts_param9(2, Inject8(RsXCoreInjectionTokens5.IGuidFactory)),
782
+ _ts_metadata9("design:type", Function),
783
+ _ts_metadata9("design:paramtypes", [
784
+ Function,
785
+ typeof IProxyRegistry === "undefined" ? Object : IProxyRegistry,
786
+ typeof IGuidFactory === "undefined" ? Object : IGuidFactory
787
+ ])
788
+ ], ObjectObserverProxyPairManager);
789
+
790
+ // lib/object-property-observer-proxy-pair-manager.ts
791
+ import { Inject as Inject9, Injectable as Injectable10, MultiInject as MultiInject2, RsXCoreInjectionTokens as RsXCoreInjectionTokens6, SingletonFactory, SingletonFactoryWithGuid as SingletonFactoryWithGuid3, Type as Type5, UnsupportedException } from "@rs-x/core";
792
+ function _ts_decorate10(decorators, target, key, desc) {
793
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
794
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
795
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
796
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
797
+ }
798
+ __name(_ts_decorate10, "_ts_decorate");
799
+ function _ts_metadata10(k, v) {
800
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
801
+ }
802
+ __name(_ts_metadata10, "_ts_metadata");
803
+ function _ts_param10(paramIndex, decorator) {
804
+ return function(target, key) {
805
+ decorator(target, key, paramIndex);
806
+ };
807
+ }
808
+ __name(_ts_param10, "_ts_param");
809
+ var PropertyObserverProxyPairManager = class PropertyObserverProxyPairManager2 extends SingletonFactoryWithGuid3 {
810
+ static {
811
+ __name(this, "PropertyObserverProxyPairManager");
812
+ }
813
+ _object;
814
+ _observerFactories;
815
+ releaseContext;
816
+ constructor(guidFactory, _object, _observerFactories, releaseContext) {
817
+ super(guidFactory), this._object = _object, this._observerFactories = _observerFactories, this.releaseContext = releaseContext;
818
+ }
819
+ getGroupId(data) {
820
+ return data.key;
821
+ }
822
+ getGroupMemberId(data) {
823
+ return data.mustProxify;
824
+ }
825
+ createInstance(propertyInfo, id) {
826
+ return this.getObserverFactory(propertyInfo).create({
827
+ canDispose: /* @__PURE__ */ __name(() => this.getReferenceCount(id) === 1, "canDispose"),
828
+ release: /* @__PURE__ */ __name(() => {
829
+ propertyInfo.owner?.release();
830
+ this.release(id);
831
+ }, "release")
832
+ }, this._object, propertyInfo);
833
+ }
834
+ releaseInstance(observerProxyPair) {
835
+ observerProxyPair.observer.dispose();
836
+ }
837
+ onReleased() {
838
+ this.releaseContext();
839
+ }
840
+ getObserverFactory(propertyInfo) {
841
+ const observerFactory = this._observerFactories.find((observerFactory2) => observerFactory2.applies(this._object, propertyInfo));
842
+ if (!observerFactory) {
843
+ throw new UnsupportedException(`No observer factory found for given object of type ${Type5.getConstructorName(this._object)} for given id ${propertyInfo.key}`);
844
+ }
845
+ return observerFactory;
846
+ }
847
+ };
848
+ var ObjectPropertyObserverProxyPairManager = class extends SingletonFactory {
849
+ static {
850
+ __name(this, "ObjectPropertyObserverProxyPairManager");
851
+ }
852
+ _factories;
853
+ _guidFactory;
854
+ constructor(_factories, _guidFactory) {
855
+ super(), this._factories = _factories, this._guidFactory = _guidFactory;
856
+ }
857
+ getId(context) {
858
+ return context;
859
+ }
860
+ createId(context) {
861
+ return context;
862
+ }
863
+ createInstance(context) {
864
+ return new PropertyObserverProxyPairManager(this._guidFactory, context, this._factories, () => this.release(context));
865
+ }
866
+ };
867
+ ObjectPropertyObserverProxyPairManager = _ts_decorate10([
868
+ Injectable10(),
869
+ _ts_param10(0, MultiInject2(RsXStateManagerInjectionTokens.IPropertyObserverProxyPairFactoryList)),
870
+ _ts_param10(1, Inject9(RsXCoreInjectionTokens6.IGuidFactory)),
871
+ _ts_metadata10("design:type", Function),
872
+ _ts_metadata10("design:paramtypes", [
873
+ Array,
874
+ typeof IGuidFactory === "undefined" ? Object : IGuidFactory
875
+ ])
876
+ ], ObjectPropertyObserverProxyPairManager);
877
+
878
+ // lib/property-observer/factories/collection-item/collection-item-observer-manager.ts
879
+ import { Inject as Inject10, Injectable as Injectable11, RsXCoreInjectionTokens as RsXCoreInjectionTokens7, SingletonFactory as SingletonFactory2 } from "@rs-x/core";
880
+ function _ts_decorate11(decorators, target, key, desc) {
881
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
882
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
883
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
884
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
885
+ }
886
+ __name(_ts_decorate11, "_ts_decorate");
887
+ function _ts_metadata11(k, v) {
888
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
889
+ }
890
+ __name(_ts_metadata11, "_ts_metadata");
891
+ function _ts_param11(paramIndex, decorator) {
892
+ return function(target, key) {
893
+ decorator(target, key, paramIndex);
894
+ };
895
+ }
896
+ __name(_ts_param11, "_ts_param");
897
+ var CollectionIndexObserver = class CollectionIndexObserver2 extends AbstractObserver {
898
+ static {
899
+ __name(this, "CollectionIndexObserver");
900
+ }
901
+ _equalityService;
902
+ _indexValueAccessor;
903
+ _objectObserverProxyPairManager;
904
+ _changeSubscription;
905
+ _collectionObserver;
906
+ constructor(owner, collection, index, _equalityService, _indexValueAccessor, _objectObserverProxyPairManager, errorLog) {
907
+ super(owner, collection, _indexValueAccessor.getValue(collection, index), void 0, index), this._equalityService = _equalityService, this._indexValueAccessor = _indexValueAccessor, this._objectObserverProxyPairManager = _objectObserverProxyPairManager;
908
+ this._collectionObserver = this._objectObserverProxyPairManager.create({
909
+ target: collection
910
+ }).instance.observer;
911
+ this._changeSubscription = this._collectionObserver.changed.subscribe({
912
+ next: this.onChanged,
913
+ error: /* @__PURE__ */ __name((e) => errorLog.add({
914
+ message: `Failed to handle change for ${collection.constructor.name} item for index '${index}'`,
915
+ exception: e,
916
+ context: collection,
917
+ fatal: true
918
+ }), "error")
919
+ });
920
+ }
921
+ disposeInternal() {
922
+ super.disposeInternal();
923
+ this._changeSubscription?.unsubscribe();
924
+ this._collectionObserver.dispose();
925
+ }
926
+ onChanged = /* @__PURE__ */ __name((change) => {
927
+ if (change.id !== this.id) {
928
+ return;
929
+ }
930
+ if (!this._indexValueAccessor.hasValue(this.target, this.id)) {
931
+ this.value = void 0;
932
+ this.emitChange(change);
933
+ return;
934
+ }
935
+ if (!this._equalityService.isEqual(this.value, change.newValue)) {
936
+ this.value = change.newValue;
937
+ this.emitChange(change);
938
+ }
939
+ }, "onChanged");
940
+ };
941
+ var CollectionIndexObserverManager = class CollectionIndexObserverManager2 extends SingletonFactory2 {
942
+ static {
943
+ __name(this, "CollectionIndexObserverManager");
944
+ }
945
+ _collection;
946
+ _errorLog;
947
+ _equalityService;
948
+ _indexValueAccessor;
949
+ _objectObserverProxyPairManager;
950
+ releaseObject;
951
+ constructor(_collection, _errorLog, _equalityService, _indexValueAccessor, _objectObserverProxyPairManager, releaseObject) {
952
+ super(), this._collection = _collection, this._errorLog = _errorLog, this._equalityService = _equalityService, this._indexValueAccessor = _indexValueAccessor, this._objectObserverProxyPairManager = _objectObserverProxyPairManager, this.releaseObject = releaseObject;
953
+ }
954
+ getId(data) {
955
+ return data.index;
956
+ }
957
+ createId(data) {
958
+ return data.index;
959
+ }
960
+ createInstance(data, id) {
961
+ return new CollectionIndexObserver({
962
+ canDispose: /* @__PURE__ */ __name(() => this.getReferenceCount(id) === 1, "canDispose"),
963
+ release: /* @__PURE__ */ __name(() => this.release(id), "release")
964
+ }, this._collection, data.index, this._equalityService, this._indexValueAccessor, this._objectObserverProxyPairManager, this._errorLog);
965
+ }
966
+ releaseInstance(observer) {
967
+ observer.dispose();
968
+ }
969
+ onReleased() {
970
+ this.releaseObject();
971
+ }
972
+ };
973
+ var CollectionItemObserverManager = class extends SingletonFactory2 {
974
+ static {
975
+ __name(this, "CollectionItemObserverManager");
976
+ }
977
+ _errorLog;
978
+ _equalityService;
979
+ _indexValueAccessor;
980
+ _objectObserverProxyPairManager;
981
+ constructor(_errorLog, _equalityService, _indexValueAccessor, _objectObserverProxyPairManager) {
982
+ super(), this._errorLog = _errorLog, this._equalityService = _equalityService, this._indexValueAccessor = _indexValueAccessor, this._objectObserverProxyPairManager = _objectObserverProxyPairManager;
983
+ }
984
+ getId(collection) {
985
+ return collection;
986
+ }
987
+ createId(collection) {
988
+ return collection;
989
+ }
990
+ createInstance(collection) {
991
+ return new CollectionIndexObserverManager(collection, this._errorLog, this._equalityService, this._indexValueAccessor, this._objectObserverProxyPairManager, () => this.release(collection));
992
+ }
993
+ releaseInstance(collectionIndexObserverManager) {
994
+ collectionIndexObserverManager.dispose();
995
+ }
996
+ };
997
+ CollectionItemObserverManager = _ts_decorate11([
998
+ Injectable11(),
999
+ _ts_param11(0, Inject10(RsXCoreInjectionTokens7.IErrorLog)),
1000
+ _ts_param11(1, Inject10(RsXCoreInjectionTokens7.IEqualityService)),
1001
+ _ts_param11(2, Inject10(RsXCoreInjectionTokens7.IIndexValueAccessor)),
1002
+ _ts_param11(3, Inject10(RsXStateManagerInjectionTokens.IObjectObserverProxyPairManager)),
1003
+ _ts_metadata11("design:type", Function),
1004
+ _ts_metadata11("design:paramtypes", [
1005
+ typeof IErrorLog === "undefined" ? Object : IErrorLog,
1006
+ typeof IEqualityService === "undefined" ? Object : IEqualityService,
1007
+ typeof IIndexValueAccessor === "undefined" ? Object : IIndexValueAccessor,
1008
+ typeof IObjectObserverProxyPairManager === "undefined" ? Object : IObjectObserverProxyPairManager
1009
+ ])
1010
+ ], CollectionItemObserverManager);
1011
+
1012
+ // lib/property-observer/factories/collection-item/collection-item-observer-proxy-pair.factory.ts
1013
+ import { Inject as Inject11, Injectable as Injectable12, RsXCoreInjectionTokens as RsXCoreInjectionTokens8, truePredicate as truePredicate4 } from "@rs-x/core";
1014
+
1015
+ // lib/property-observer/factories/indexed-value-observer-proxy-pair/indexed-value-observer-proxy-pair.factory.ts
1016
+ import { truePredicate as truePredicate3, Type as Type6, UnexpectedException } from "@rs-x/core";
1017
+
1018
+ // lib/property-observer/factories/indexed-value-observer-proxy-pair/index-change-subscription-manager.ts
1019
+ import { SingletonFactory as SingletonFactory3 } from "@rs-x/core";
1020
+ var IndexChangeSubscriptionsForContextManager = class IndexChangeSubscriptionsForContextManager2 extends GroupedChangeSubscriptionsForContextManager {
1021
+ static {
1022
+ __name(this, "IndexChangeSubscriptionsForContextManager");
1023
+ }
1024
+ _indexSetObserverManager;
1025
+ constructor(context, releaseContext, _indexSetObserverManager, errorLog, guidFactory) {
1026
+ super(context, releaseContext, errorLog, guidFactory), this._indexSetObserverManager = _indexSetObserverManager;
1027
+ }
1028
+ getGroupId(data) {
1029
+ return data.index;
1030
+ }
1031
+ getGroupMemberId(data) {
1032
+ return data.mustProxify;
1033
+ }
1034
+ createObserver(context, data, id) {
1035
+ const indexSetObserver = this._indexSetObserverManager.create(context).instance.create({
1036
+ index: data.index,
1037
+ initialValue: data.initialValue
1038
+ }).instance;
1039
+ const group = this.createGroupObserver(data, indexSetObserver, id);
1040
+ return {
1041
+ subscriptionData: group,
1042
+ observer: indexSetObserver
1043
+ };
1044
+ }
1045
+ createGroupObserver(data, indexSetObserver, id) {
1046
+ const observer = new ObserverGroup({
1047
+ ...data.owner,
1048
+ release: /* @__PURE__ */ __name(() => {
1049
+ data.owner.release();
1050
+ this.release(id);
1051
+ }, "release")
1052
+ }, this._context, data.initialValue, data.mustHandleChange, this._errorLog, data.index, () => indexSetObserver).addObservers(data.indexValueObserver ? [
1053
+ data.indexValueObserver
1054
+ ] : []);
1055
+ if (!data.initializeManually) {
1056
+ observer.init();
1057
+ }
1058
+ return observer;
1059
+ }
1060
+ };
1061
+ var IndexChangeSubscriptionManager = class extends SingletonFactory3 {
1062
+ static {
1063
+ __name(this, "IndexChangeSubscriptionManager");
1064
+ }
1065
+ _indexSetObserverManager;
1066
+ _errorLog;
1067
+ _guidFactory;
1068
+ constructor(_indexSetObserverManager, _errorLog, _guidFactory) {
1069
+ super(), this._indexSetObserverManager = _indexSetObserverManager, this._errorLog = _errorLog, this._guidFactory = _guidFactory;
1070
+ }
1071
+ getId(context) {
1072
+ return context;
1073
+ }
1074
+ createId(context) {
1075
+ return context;
1076
+ }
1077
+ createInstance(context) {
1078
+ return new IndexChangeSubscriptionsForContextManager(context, () => this.release(context), this._indexSetObserverManager, this._errorLog, this._guidFactory);
1079
+ }
1080
+ releaseInstance(instance, id) {
1081
+ super.releaseInstance(instance, id);
1082
+ instance.dispose();
1083
+ }
1084
+ };
1085
+
1086
+ // lib/property-observer/factories/indexed-value-observer-proxy-pair/indexed-value-observer-proxy-pair.factory.ts
1087
+ var IndexObserverProxyPairFactory = class {
1088
+ static {
1089
+ __name(this, "IndexObserverProxyPairFactory");
1090
+ }
1091
+ _objectObserveryManager;
1092
+ _indexValueAccessor;
1093
+ _proxyRegister;
1094
+ mustHandleChange;
1095
+ _indexChangeSubscriptionManager;
1096
+ constructor(_objectObserveryManager, indexSetObserverManager, errorLog, guidFactory, _indexValueAccessor, _proxyRegister, mustHandleChange) {
1097
+ this._objectObserveryManager = _objectObserveryManager;
1098
+ this._indexValueAccessor = _indexValueAccessor;
1099
+ this._proxyRegister = _proxyRegister;
1100
+ this.mustHandleChange = mustHandleChange;
1101
+ this._indexChangeSubscriptionManager = new IndexChangeSubscriptionManager(indexSetObserverManager, errorLog, guidFactory);
1102
+ }
1103
+ dispose() {
1104
+ this._indexChangeSubscriptionManager.dispose();
1105
+ }
1106
+ create(owner, object, propertyInfo) {
1107
+ const index = propertyInfo.key;
1108
+ const valueAtIndex = this._indexValueAccessor.getValue(object, index);
1109
+ const mustProxify = this.getMustProxifyHandler(propertyInfo.mustProxify, object, index);
1110
+ const indexValueObserverProxyPair = mustProxify ? this.createIndexValueProxy(propertyInfo, object, index, valueAtIndex, mustProxify) : void 0;
1111
+ const initialValue = indexValueObserverProxyPair ? indexValueObserverProxyPair.observer.value : valueAtIndex;
1112
+ ;
1113
+ const groupObserver = this.createGroupObserver(owner, object, index, initialValue, propertyInfo.initializeManually, indexValueObserverProxyPair?.observer, mustProxify);
1114
+ return {
1115
+ observer: groupObserver,
1116
+ proxy: indexValueObserverProxyPair?.proxy,
1117
+ proxyTarget: valueAtIndex
1118
+ };
1119
+ }
1120
+ getMustProxifyHandler(mustProxify, context, index) {
1121
+ if (mustProxify) {
1122
+ return mustProxify;
1123
+ }
1124
+ return this._indexValueAccessor.isAsync(context, index) ? truePredicate3 : void 0;
1125
+ }
1126
+ createIndexValueProxy(propertyInfo, object, index, value, mustProxify) {
1127
+ const setValue = propertyInfo.setValue ?? ((v) => this._indexValueAccessor.setValue(object, index, v));
1128
+ return this.proxifyIndexValue(value, mustProxify, propertyInfo.initializeManually, setValue);
1129
+ }
1130
+ createGroupObserver(owner, object, index, initialValue, initializeManually, indexValueObserver, mustProxify) {
1131
+ const indexChangeSubscriptionsForContextManager = this._indexChangeSubscriptionManager.create(object).instance;
1132
+ const { id } = indexChangeSubscriptionsForContextManager.create({
1133
+ index,
1134
+ initialValue,
1135
+ indexValueObserver,
1136
+ mustProxify,
1137
+ initializeManually,
1138
+ mustHandleChange: this.mustHandleChange,
1139
+ onChanged: /* @__PURE__ */ __name((change) => this.onIndexSet(change, id, mustProxify), "onChanged"),
1140
+ owner
1141
+ });
1142
+ return Type6.cast(indexChangeSubscriptionsForContextManager.getSubsriptionData(id));
1143
+ }
1144
+ onIndexSet(change, subsriptionId, mustProxify) {
1145
+ const emitValue = Type6.isNullOrUndefined(change.newValue) || !this._indexValueAccessor.isAsync(change.target, change.id);
1146
+ const observerGroup = this._indexChangeSubscriptionManager.getFromId(change.target)?.getSubsriptionData(subsriptionId);
1147
+ if (!observerGroup) {
1148
+ throw new UnexpectedException(`Observer group not found for subscription id ${subsriptionId}`);
1149
+ }
1150
+ if (emitValue) {
1151
+ observerGroup.emitValue(change.newValue);
1152
+ }
1153
+ const observers = this.getNestedObservers(change, mustProxify);
1154
+ observerGroup.replaceObservers(observers);
1155
+ }
1156
+ getNestedObservers(change, mustProxify) {
1157
+ const mustProxifyHandler = this.getMustProxifyHandler(mustProxify, change.target, change.id);
1158
+ let observers = [];
1159
+ if (mustProxifyHandler) {
1160
+ const observerProxyPair = this.proxifyIndexValue(change.newValue, mustProxifyHandler, true, change.setValue ?? ((value) => {
1161
+ const obj = Type6.toObject(change.target);
1162
+ if (obj) {
1163
+ obj[change.id] = value;
1164
+ }
1165
+ }));
1166
+ if (observerProxyPair) {
1167
+ observers.push(observerProxyPair.observer);
1168
+ }
1169
+ }
1170
+ return observers;
1171
+ }
1172
+ proxifyIndexValue(value, mustProxify, initializeManually, setValue) {
1173
+ const target = this._proxyRegister.getProxyTarget(value) ?? value;
1174
+ const observerProxyPair = this._objectObserveryManager.create({
1175
+ target,
1176
+ mustProxify,
1177
+ initializeManually
1178
+ }).instance;
1179
+ if (!observerProxyPair) {
1180
+ return void 0;
1181
+ }
1182
+ if (observerProxyPair.proxy !== void 0) {
1183
+ setValue(observerProxyPair.proxy);
1184
+ }
1185
+ return observerProxyPair;
1186
+ }
1187
+ };
1188
+
1189
+ // lib/property-observer/factories/collection-item/collection-item-observer-proxy-pair.factory.ts
1190
+ function _ts_decorate12(decorators, target, key, desc) {
1191
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1192
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1193
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1194
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1195
+ }
1196
+ __name(_ts_decorate12, "_ts_decorate");
1197
+ function _ts_metadata12(k, v) {
1198
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1199
+ }
1200
+ __name(_ts_metadata12, "_ts_metadata");
1201
+ function _ts_param12(paramIndex, decorator) {
1202
+ return function(target, key) {
1203
+ decorator(target, key, paramIndex);
1204
+ };
1205
+ }
1206
+ __name(_ts_param12, "_ts_param");
1207
+ var CollectionItemObserverProxyPairFactory = class extends IndexObserverProxyPairFactory {
1208
+ static {
1209
+ __name(this, "CollectionItemObserverProxyPairFactory");
1210
+ }
1211
+ constructor(objectObserverManager, collectionItemObserverManager, errorLog, guidFactory, indexValueAccessor, proxyRegister) {
1212
+ super(objectObserverManager, collectionItemObserverManager, errorLog, guidFactory, indexValueAccessor, proxyRegister, truePredicate4);
1213
+ }
1214
+ applies(object) {
1215
+ return object instanceof Map || object instanceof Array || object instanceof Set;
1216
+ }
1217
+ };
1218
+ CollectionItemObserverProxyPairFactory = _ts_decorate12([
1219
+ Injectable12(),
1220
+ _ts_param12(0, Inject11(RsXStateManagerInjectionTokens.IObjectObserverProxyPairManager)),
1221
+ _ts_param12(1, Inject11(RsXStateManagerInjectionTokens.ICollectionItemObserverManager)),
1222
+ _ts_param12(2, Inject11(RsXCoreInjectionTokens8.IErrorLog)),
1223
+ _ts_param12(3, Inject11(RsXCoreInjectionTokens8.IGuidFactory)),
1224
+ _ts_param12(4, Inject11(RsXCoreInjectionTokens8.IIndexValueAccessor)),
1225
+ _ts_param12(5, Inject11(RsXStateManagerInjectionTokens.IProxyRegistry)),
1226
+ _ts_metadata12("design:type", Function),
1227
+ _ts_metadata12("design:paramtypes", [
1228
+ typeof IObjectObserverProxyPairManager === "undefined" ? Object : IObjectObserverProxyPairManager,
1229
+ typeof ICollectionItemObserverManager === "undefined" ? Object : ICollectionItemObserverManager,
1230
+ typeof IErrorLog === "undefined" ? Object : IErrorLog,
1231
+ typeof IGuidFactory === "undefined" ? Object : IGuidFactory,
1232
+ typeof IIndexValueAccessor === "undefined" ? Object : IIndexValueAccessor,
1233
+ typeof IProxyRegistry === "undefined" ? Object : IProxyRegistry
1234
+ ])
1235
+ ], CollectionItemObserverProxyPairFactory);
1236
+
1237
+ // lib/property-observer/factories/date-property/data-property-observer-manager.ts
1238
+ import { Inject as Inject12, Injectable as Injectable13, RsXCoreInjectionTokens as RsXCoreInjectionTokens9, SingletonFactory as SingletonFactory4 } from "@rs-x/core";
1239
+ function _ts_decorate13(decorators, target, key, desc) {
1240
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1241
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1242
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1243
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1244
+ }
1245
+ __name(_ts_decorate13, "_ts_decorate");
1246
+ function _ts_metadata13(k, v) {
1247
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1248
+ }
1249
+ __name(_ts_metadata13, "_ts_metadata");
1250
+ function _ts_param13(paramIndex, decorator) {
1251
+ return function(target, key) {
1252
+ decorator(target, key, paramIndex);
1253
+ };
1254
+ }
1255
+ __name(_ts_param13, "_ts_param");
1256
+ var DatePropertybserver = class DatePropertybserver2 extends AbstractObserver {
1257
+ static {
1258
+ __name(this, "DatePropertybserver");
1259
+ }
1260
+ _dateObserver;
1261
+ _errorLog;
1262
+ _oldValue;
1263
+ _dateChangeSubscription;
1264
+ constructor(owner, target, propertyName, datePropertyAccessor, _dateObserver, _errorLog) {
1265
+ super(owner, target, datePropertyAccessor.getValue(target, propertyName), void 0, propertyName), this._dateObserver = _dateObserver, this._errorLog = _errorLog;
1266
+ this._oldValue = this.value;
1267
+ this._dateChangeSubscription = this._dateObserver.changed.subscribe({
1268
+ next: this.onDateChanged,
1269
+ error: /* @__PURE__ */ __name((e) => this._errorLog.add({
1270
+ message: `Failed to handle change for Date property '${propertyName}'`,
1271
+ exception: e,
1272
+ context: target,
1273
+ fatal: true
1274
+ }), "error")
1275
+ });
1276
+ }
1277
+ disposeInternal() {
1278
+ this._dateObserver.dispose();
1279
+ this._dateChangeSubscription.unsubscribe();
1280
+ }
1281
+ onDateChanged = /* @__PURE__ */ __name((change) => {
1282
+ if (change.id !== this.id || change.newValue === this._oldValue) {
1283
+ return;
1284
+ }
1285
+ this.emitChange(change);
1286
+ this._oldValue = change.newValue;
1287
+ }, "onDateChanged");
1288
+ };
1289
+ var ProperForDataObserverManager = class ProperForDataObserverManager2 extends SingletonFactory4 {
1290
+ static {
1291
+ __name(this, "ProperForDataObserverManager");
1292
+ }
1293
+ _date;
1294
+ _dateProxyFactory;
1295
+ _datePropertyAccessor;
1296
+ _errorLog;
1297
+ _mustProxifyItemHandlerFactory;
1298
+ releaseObject;
1299
+ constructor(_date, _dateProxyFactory, _datePropertyAccessor, _errorLog, _mustProxifyItemHandlerFactory, releaseObject) {
1300
+ super(), this._date = _date, this._dateProxyFactory = _dateProxyFactory, this._datePropertyAccessor = _datePropertyAccessor, this._errorLog = _errorLog, this._mustProxifyItemHandlerFactory = _mustProxifyItemHandlerFactory, this.releaseObject = releaseObject;
1301
+ }
1302
+ getId(data) {
1303
+ return data.index;
1304
+ }
1305
+ createId(data) {
1306
+ return data.index;
1307
+ }
1308
+ createInstance(data, id) {
1309
+ const dateObserver = this._dateProxyFactory.create({
1310
+ date: this._date,
1311
+ mustProxify: this._mustProxifyItemHandlerFactory.create(id).instance
1312
+ }).instance.observer;
1313
+ return new DatePropertybserver({
1314
+ canDispose: /* @__PURE__ */ __name(() => this.getReferenceCount(id) === 1, "canDispose"),
1315
+ release: /* @__PURE__ */ __name(() => this.release(id), "release")
1316
+ }, this._date, data.index, this._datePropertyAccessor, dateObserver, this._errorLog);
1317
+ }
1318
+ releaseInstance(observer) {
1319
+ observer.dispose();
1320
+ }
1321
+ onReleased() {
1322
+ this.releaseObject();
1323
+ }
1324
+ };
1325
+ var DatePropertyObserverManager = class extends SingletonFactory4 {
1326
+ static {
1327
+ __name(this, "DatePropertyObserverManager");
1328
+ }
1329
+ _dateProxyFactory;
1330
+ _errorLog;
1331
+ _datePropertyAccessor;
1332
+ _mustProxifyItemHandlerFactory;
1333
+ constructor(_dateProxyFactory, _errorLog, _datePropertyAccessor, _mustProxifyItemHandlerFactory) {
1334
+ super(), this._dateProxyFactory = _dateProxyFactory, this._errorLog = _errorLog, this._datePropertyAccessor = _datePropertyAccessor, this._mustProxifyItemHandlerFactory = _mustProxifyItemHandlerFactory;
1335
+ }
1336
+ getId(date) {
1337
+ return date;
1338
+ }
1339
+ createId(date) {
1340
+ return date;
1341
+ }
1342
+ createInstance(date) {
1343
+ return new ProperForDataObserverManager(date, this._dateProxyFactory, this._datePropertyAccessor, this._errorLog, this._mustProxifyItemHandlerFactory, () => this.release(date));
1344
+ }
1345
+ releaseInstance(properForDataObserverManager) {
1346
+ properForDataObserverManager.dispose();
1347
+ }
1348
+ };
1349
+ DatePropertyObserverManager = _ts_decorate13([
1350
+ Injectable13(),
1351
+ _ts_param13(0, Inject12(RsXStateManagerInjectionTokens.IDateProxyFactory)),
1352
+ _ts_param13(1, Inject12(RsXCoreInjectionTokens9.IErrorLog)),
1353
+ _ts_param13(2, Inject12(RsXCoreInjectionTokens9.IDatePropertyAccessor)),
1354
+ _ts_param13(3, Inject12(RsXStateManagerInjectionTokens.IMustProxifyItemHandlerFactory)),
1355
+ _ts_metadata13("design:type", Function),
1356
+ _ts_metadata13("design:paramtypes", [
1357
+ typeof IDateProxyFactory === "undefined" ? Object : IDateProxyFactory,
1358
+ typeof IErrorLog === "undefined" ? Object : IErrorLog,
1359
+ typeof IDatePropertyAccessor === "undefined" ? Object : IDatePropertyAccessor,
1360
+ typeof IMustProxifyItemHandlerFactory === "undefined" ? Object : IMustProxifyItemHandlerFactory
1361
+ ])
1362
+ ], DatePropertyObserverManager);
1363
+
1364
+ // lib/property-observer/factories/date-property/date-property-observer-proxy-pair.factory.ts
1365
+ import { Inject as Inject13, Injectable as Injectable14, RsXCoreInjectionTokens as RsXCoreInjectionTokens10, truePredicate as truePredicate5 } from "@rs-x/core";
1366
+ function _ts_decorate14(decorators, target, key, desc) {
1367
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1368
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1369
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1370
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1371
+ }
1372
+ __name(_ts_decorate14, "_ts_decorate");
1373
+ function _ts_metadata14(k, v) {
1374
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1375
+ }
1376
+ __name(_ts_metadata14, "_ts_metadata");
1377
+ function _ts_param14(paramIndex, decorator) {
1378
+ return function(target, key) {
1379
+ decorator(target, key, paramIndex);
1380
+ };
1381
+ }
1382
+ __name(_ts_param14, "_ts_param");
1383
+ var DatePropertyObserverProxyPairFactory = class extends IndexObserverProxyPairFactory {
1384
+ static {
1385
+ __name(this, "DatePropertyObserverProxyPairFactory");
1386
+ }
1387
+ constructor(objectObserverManager, datePropertyObserverManager, errorLog, guidFactory, datePropertyAccessor, proxyRegister) {
1388
+ super(objectObserverManager, datePropertyObserverManager, errorLog, guidFactory, datePropertyAccessor, proxyRegister, truePredicate5);
1389
+ }
1390
+ applies(object) {
1391
+ return object instanceof Date;
1392
+ }
1393
+ };
1394
+ DatePropertyObserverProxyPairFactory = _ts_decorate14([
1395
+ Injectable14(),
1396
+ _ts_param14(0, Inject13(RsXStateManagerInjectionTokens.IObjectObserverProxyPairManager)),
1397
+ _ts_param14(1, Inject13(RsXStateManagerInjectionTokens.IDatePropertyObserverManager)),
1398
+ _ts_param14(2, Inject13(RsXCoreInjectionTokens10.IErrorLog)),
1399
+ _ts_param14(3, Inject13(RsXCoreInjectionTokens10.IGuidFactory)),
1400
+ _ts_param14(4, Inject13(RsXCoreInjectionTokens10.IIndexValueAccessor)),
1401
+ _ts_param14(5, Inject13(RsXStateManagerInjectionTokens.IProxyRegistry)),
1402
+ _ts_metadata14("design:type", Function),
1403
+ _ts_metadata14("design:paramtypes", [
1404
+ typeof IObjectObserverProxyPairManager === "undefined" ? Object : IObjectObserverProxyPairManager,
1405
+ typeof IDatePropertyObserverManager === "undefined" ? Object : IDatePropertyObserverManager,
1406
+ typeof IErrorLog === "undefined" ? Object : IErrorLog,
1407
+ typeof IGuidFactory === "undefined" ? Object : IGuidFactory,
1408
+ typeof IIndexValueAccessor === "undefined" ? Object : IIndexValueAccessor,
1409
+ typeof IProxyRegistry === "undefined" ? Object : IProxyRegistry
1410
+ ])
1411
+ ], DatePropertyObserverProxyPairFactory);
1412
+
1413
+ // lib/property-observer/factories/non-iterable-object-property/non-iterable-object-property-observer-proxy-pair.factory.ts
1414
+ import { Inject as Inject14, Injectable as Injectable15, RsXCoreInjectionTokens as RsXCoreInjectionTokens11, Type as Type7 } from "@rs-x/core";
1415
+ function _ts_decorate15(decorators, target, key, desc) {
1416
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1417
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1418
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1419
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1420
+ }
1421
+ __name(_ts_decorate15, "_ts_decorate");
1422
+ function _ts_metadata15(k, v) {
1423
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1424
+ }
1425
+ __name(_ts_metadata15, "_ts_metadata");
1426
+ function _ts_param15(paramIndex, decorator) {
1427
+ return function(target, key) {
1428
+ decorator(target, key, paramIndex);
1429
+ };
1430
+ }
1431
+ __name(_ts_param15, "_ts_param");
1432
+ var NonIterableObjectPropertyObserverProxyPairFactory = class extends IndexObserverProxyPairFactory {
1433
+ static {
1434
+ __name(this, "NonIterableObjectPropertyObserverProxyPairFactory");
1435
+ }
1436
+ constructor(objectObserveryManager, objectPropertyObserverManager, errorLog, guidFactory, indexValueAccessor, proxyRegister) {
1437
+ super(objectObserveryManager, objectPropertyObserverManager, errorLog, guidFactory, indexValueAccessor, proxyRegister);
1438
+ }
1439
+ applies(object, propertyInfo) {
1440
+ return !(Array.isArray(object) || object instanceof Date || object instanceof Map || object instanceof Set) && Type7.isString(propertyInfo.key) && !Type7.isMethod((Type7.toObject(object) ?? {})[propertyInfo.key]);
1441
+ }
1442
+ setIndexValue(object, key, value) {
1443
+ object[key] = value;
1444
+ }
1445
+ };
1446
+ NonIterableObjectPropertyObserverProxyPairFactory = _ts_decorate15([
1447
+ Injectable15(),
1448
+ _ts_param15(0, Inject14(RsXStateManagerInjectionTokens.IObjectObserverProxyPairManager)),
1449
+ _ts_param15(1, Inject14(RsXStateManagerInjectionTokens.IObjectPropertyObserverManager)),
1450
+ _ts_param15(2, Inject14(RsXCoreInjectionTokens11.IErrorLog)),
1451
+ _ts_param15(3, Inject14(RsXCoreInjectionTokens11.IGuidFactory)),
1452
+ _ts_param15(4, Inject14(RsXCoreInjectionTokens11.IIndexValueAccessor)),
1453
+ _ts_param15(5, Inject14(RsXStateManagerInjectionTokens.IProxyRegistry)),
1454
+ _ts_metadata15("design:type", Function),
1455
+ _ts_metadata15("design:paramtypes", [
1456
+ typeof IObjectObserverProxyPairManager === "undefined" ? Object : IObjectObserverProxyPairManager,
1457
+ typeof IObjectPropertyObserverManager === "undefined" ? Object : IObjectPropertyObserverManager,
1458
+ typeof IErrorLog === "undefined" ? Object : IErrorLog,
1459
+ typeof IGuidFactory === "undefined" ? Object : IGuidFactory,
1460
+ typeof IIndexValueAccessor === "undefined" ? Object : IIndexValueAccessor,
1461
+ typeof IProxyRegistry === "undefined" ? Object : IProxyRegistry
1462
+ ])
1463
+ ], NonIterableObjectPropertyObserverProxyPairFactory);
1464
+
1465
+ // lib/property-observer/factories/non-iterable-object-property/object-property-observer-manager.ts
1466
+ import { Inject as Inject15, Injectable as Injectable16, InvalidOperationException as InvalidOperationException2, PropertyDescriptorType, SingletonFactory as SingletonFactory5, Type as Type8 } from "@rs-x/core";
1467
+ import { Subject as Subject2 } from "rxjs";
1468
+ function _ts_decorate16(decorators, target, key, desc) {
1469
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1470
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1471
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1472
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1473
+ }
1474
+ __name(_ts_decorate16, "_ts_decorate");
1475
+ function _ts_metadata16(k, v) {
1476
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1477
+ }
1478
+ __name(_ts_metadata16, "_ts_metadata");
1479
+ function _ts_param16(paramIndex, decorator) {
1480
+ return function(target, key) {
1481
+ decorator(target, key, paramIndex);
1482
+ };
1483
+ }
1484
+ __name(_ts_param16, "_ts_param");
1485
+ var PropertObserver = class PropertObserver2 extends AbstractObserver {
1486
+ static {
1487
+ __name(this, "PropertObserver");
1488
+ }
1489
+ _proxyRegister;
1490
+ _emitingChange = false;
1491
+ _propertyDescriptorWithTarget;
1492
+ constructor(owner, target, propertyName, initialValue, _proxyRegister) {
1493
+ super(owner, target, initialValue, new Subject2(), propertyName), this._proxyRegister = _proxyRegister;
1494
+ this.patch(propertyName);
1495
+ }
1496
+ disposeInternal() {
1497
+ const propertyName = this.id;
1498
+ const object = Type8.toObject(this.target) ?? {};
1499
+ const value = object[propertyName];
1500
+ delete object[propertyName];
1501
+ Object.defineProperty(this.target, propertyName, Type8.cast(this._propertyDescriptorWithTarget?.descriptor));
1502
+ if (this._propertyDescriptorWithTarget?.type !== PropertyDescriptorType.Function) {
1503
+ object[propertyName] = this._proxyRegister.getProxyTarget(value) ?? value;
1504
+ }
1505
+ this.value = void 0;
1506
+ this._propertyDescriptorWithTarget = void 0;
1507
+ }
1508
+ patch(propertyName) {
1509
+ const descriptorWithTarget = Type8.getPropertyDescriptor(this.target, propertyName);
1510
+ const descriptor = descriptorWithTarget.descriptor;
1511
+ let newDescriptor;
1512
+ if (descriptorWithTarget.type === PropertyDescriptorType.Function) {
1513
+ newDescriptor = this.createFunctionPropertyDescriptor(descriptorWithTarget);
1514
+ } else if (!descriptor.get && !descriptor.set) {
1515
+ newDescriptor = this.createFieldPropertyDescriptor(descriptorWithTarget);
1516
+ } else if (descriptor.set) {
1517
+ newDescriptor = this.createWritablePropertyDescriptor(descriptorWithTarget);
1518
+ } else {
1519
+ throw new InvalidOperationException2(`Property '${propertyName}' can not be watched because it is readonly`);
1520
+ }
1521
+ Object.defineProperty(this.target, propertyName, newDescriptor);
1522
+ this._propertyDescriptorWithTarget = descriptorWithTarget;
1523
+ }
1524
+ createFunctionPropertyDescriptor(descriptorWithTarget) {
1525
+ const newDescriptor = {
1526
+ ...descriptorWithTarget.descriptor
1527
+ };
1528
+ newDescriptor.value = (...args) => {
1529
+ const newValue = descriptorWithTarget.descriptor.value.call(this.target, ...args);
1530
+ if (newValue === void 0 || this.value !== newValue) {
1531
+ this.internalEmitChange({
1532
+ newValue,
1533
+ arguments: args
1534
+ }, this.id);
1535
+ }
1536
+ return newValue;
1537
+ };
1538
+ this.value = void 0;
1539
+ return newDescriptor;
1540
+ }
1541
+ setValue = /* @__PURE__ */ __name((value) => {
1542
+ this.value = value;
1543
+ }, "setValue");
1544
+ internalEmitChange(change, id) {
1545
+ this.value = change.newValue;
1546
+ if (!this._emitingChange) {
1547
+ this._emitingChange = true;
1548
+ super.emitChange({
1549
+ arguments: [],
1550
+ ...change,
1551
+ chain: [
1552
+ {
1553
+ object: this.target,
1554
+ id: this.id
1555
+ }
1556
+ ],
1557
+ target: this.target,
1558
+ id,
1559
+ setValue: this.setValue
1560
+ });
1561
+ this._emitingChange = false;
1562
+ }
1563
+ }
1564
+ createFieldPropertyDescriptor(descriptorWithTarget) {
1565
+ const newDescriptor = {
1566
+ ...descriptorWithTarget.descriptor
1567
+ };
1568
+ newDescriptor.get = () => this.value;
1569
+ delete newDescriptor.writable;
1570
+ delete newDescriptor.value;
1571
+ newDescriptor.set = (value) => {
1572
+ if (value !== this.value) {
1573
+ this.internalEmitChange({
1574
+ newValue: value
1575
+ }, this.id);
1576
+ }
1577
+ };
1578
+ this.value = (Type8.toObject(this.target) ?? {})[this.id];
1579
+ return newDescriptor;
1580
+ }
1581
+ createWritablePropertyDescriptor(descriptorWithTarget) {
1582
+ const newDescriptor = {
1583
+ ...descriptorWithTarget.descriptor
1584
+ };
1585
+ const oldSetter = descriptorWithTarget.descriptor.set;
1586
+ newDescriptor.set = (value) => {
1587
+ const oldValue = (Type8.toObject(this.target) ?? {})[this.id];
1588
+ if (value !== oldValue) {
1589
+ oldSetter.call(this.target, value);
1590
+ this.internalEmitChange({
1591
+ newValue: value
1592
+ }, this.id);
1593
+ }
1594
+ };
1595
+ this.value = (Type8.toObject(this.target) ?? {})[this.id];
1596
+ return newDescriptor;
1597
+ }
1598
+ };
1599
+ var PropertyObserverManager = class PropertyObserverManager2 extends SingletonFactory5 {
1600
+ static {
1601
+ __name(this, "PropertyObserverManager");
1602
+ }
1603
+ _object;
1604
+ _proxyRegister;
1605
+ releaseObject;
1606
+ constructor(_object, _proxyRegister, releaseObject) {
1607
+ super(), this._object = _object, this._proxyRegister = _proxyRegister, this.releaseObject = releaseObject;
1608
+ }
1609
+ getId(data) {
1610
+ return data.index;
1611
+ }
1612
+ createId(data) {
1613
+ return data.index;
1614
+ }
1615
+ createInstance(data, id) {
1616
+ return new PropertObserver({
1617
+ canDispose: /* @__PURE__ */ __name(() => this.getReferenceCount(id) === 1, "canDispose"),
1618
+ release: /* @__PURE__ */ __name(() => this.release(id), "release")
1619
+ }, this._object, data.index, data.initialValue, this._proxyRegister);
1620
+ }
1621
+ onReleased() {
1622
+ this.releaseObject();
1623
+ }
1624
+ releaseInstance(observer) {
1625
+ observer.dispose();
1626
+ }
1627
+ };
1628
+ var ObjectPropertyObserverManager = class extends SingletonFactory5 {
1629
+ static {
1630
+ __name(this, "ObjectPropertyObserverManager");
1631
+ }
1632
+ _proxyRegister;
1633
+ constructor(_proxyRegister) {
1634
+ super(), this._proxyRegister = _proxyRegister;
1635
+ }
1636
+ getId(context) {
1637
+ return context;
1638
+ }
1639
+ createId(context) {
1640
+ return context;
1641
+ }
1642
+ createInstance(context) {
1643
+ return new PropertyObserverManager(context, this._proxyRegister, () => this.release(context));
1644
+ }
1645
+ releaseInstance(propertyObserverManager) {
1646
+ propertyObserverManager.dispose();
1647
+ }
1648
+ };
1649
+ ObjectPropertyObserverManager = _ts_decorate16([
1650
+ Injectable16(),
1651
+ _ts_param16(0, Inject15(RsXStateManagerInjectionTokens.IProxyRegistry)),
1652
+ _ts_metadata16("design:type", Function),
1653
+ _ts_metadata16("design:paramtypes", [
1654
+ typeof IProxyRegistry === "undefined" ? Object : IProxyRegistry
1655
+ ])
1656
+ ], ObjectPropertyObserverManager);
1657
+
1658
+ // lib/property-observer/must-proxify-item-handler.factory.ts
1659
+ import { Injectable as Injectable17, SingletonFactory as SingletonFactory6 } from "@rs-x/core";
1660
+ function _ts_decorate17(decorators, target, key, desc) {
1661
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1662
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1663
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1664
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1665
+ }
1666
+ __name(_ts_decorate17, "_ts_decorate");
1667
+ function _ts_metadata17(k, v) {
1668
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1669
+ }
1670
+ __name(_ts_metadata17, "_ts_metadata");
1671
+ var MustProxifyItemHandlerFactory = class extends SingletonFactory6 {
1672
+ static {
1673
+ __name(this, "MustProxifyItemHandlerFactory");
1674
+ }
1675
+ constructor() {
1676
+ super();
1677
+ }
1678
+ getId(index) {
1679
+ return index;
1680
+ }
1681
+ createInstance(_, id) {
1682
+ return (index) => index === id;
1683
+ }
1684
+ createId(index) {
1685
+ return index;
1686
+ }
1687
+ };
1688
+ MustProxifyItemHandlerFactory = _ts_decorate17([
1689
+ Injectable17(),
1690
+ _ts_metadata17("design:type", Function),
1691
+ _ts_metadata17("design:paramtypes", [])
1692
+ ], MustProxifyItemHandlerFactory);
1693
+
1694
+ // lib/proxies/array-proxy/array-proxy.factory.ts
1695
+ import { Inject as Inject16, Injectable as Injectable18, SingletonFactory as SingletonFactory7, Type as Type9 } from "@rs-x/core";
1696
+ import { Subject as Subject3 } from "rxjs";
1697
+ function _ts_decorate18(decorators, target, key, desc) {
1698
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1699
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1700
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1701
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1702
+ }
1703
+ __name(_ts_decorate18, "_ts_decorate");
1704
+ function _ts_metadata18(k, v) {
1705
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1706
+ }
1707
+ __name(_ts_metadata18, "_ts_metadata");
1708
+ function _ts_param17(paramIndex, decorator) {
1709
+ return function(target, key) {
1710
+ decorator(target, key, paramIndex);
1711
+ };
1712
+ }
1713
+ __name(_ts_param17, "_ts_param");
1714
+ var ArrayProxy = class ArrayProxy2 extends AbstractObserver {
1715
+ static {
1716
+ __name(this, "ArrayProxy");
1717
+ }
1718
+ _proxyRegistry;
1719
+ _patching = false;
1720
+ updateArray;
1721
+ constructor(owner, initialValue, _proxyRegistry) {
1722
+ super(owner, Type9.cast(void 0), initialValue, new Subject3(), void 0), this._proxyRegistry = _proxyRegistry;
1723
+ this.updateArray = {
1724
+ push: this.pushArray,
1725
+ splice: this.spliceArray,
1726
+ pop: this.popArray,
1727
+ shift: this.shiftArray,
1728
+ unshift: this.unshiftArray,
1729
+ reverse: this.reverseArray,
1730
+ sort: this.sortArray,
1731
+ fill: this.fillArray
1732
+ };
1733
+ this.target = new Proxy(initialValue, this);
1734
+ this._proxyRegistry.register(initialValue, this.target);
1735
+ }
1736
+ get(originalArray, property, receiver) {
1737
+ if (this.isUpdateArrayKey(property)) {
1738
+ return (...args) => {
1739
+ return this.updateArray[property](originalArray, ...args);
1740
+ };
1741
+ }
1742
+ return Reflect.get(originalArray, property, receiver);
1743
+ }
1744
+ set(originalArray, property, value, receiver) {
1745
+ if (!this._patching) {
1746
+ if (property === "length") {
1747
+ this.setLength(originalArray, value);
1748
+ } else if (Type9.isPositiveInteger(property)) {
1749
+ const index = Number(property);
1750
+ originalArray[index] = value;
1751
+ this.emitSet(originalArray, index, value);
1752
+ } else {
1753
+ Reflect.set(originalArray, property, value, receiver);
1754
+ }
1755
+ }
1756
+ return true;
1757
+ }
1758
+ disposeInternal() {
1759
+ this._proxyRegistry.unregister(this.value);
1760
+ this.target = Type9.cast(void 0);
1761
+ }
1762
+ isUpdateArrayKey(property) {
1763
+ return typeof property === "string" && property in this.updateArray;
1764
+ }
1765
+ pushArray = /* @__PURE__ */ __name((orginalArray, ...args) => {
1766
+ const startIndex = orginalArray.length;
1767
+ orginalArray.push(...args);
1768
+ this.emitSetForRange(orginalArray, startIndex, args.length);
1769
+ return orginalArray.length;
1770
+ }, "pushArray");
1771
+ spliceArray = /* @__PURE__ */ __name((originalArray, ...args) => {
1772
+ const startIndex = args[0];
1773
+ const itemsToAdd = args.length > 2 ? args.slice(2) : [];
1774
+ const deleteCount = args[1];
1775
+ const before = originalArray.slice();
1776
+ const removed = originalArray.splice(startIndex, deleteCount, ...itemsToAdd);
1777
+ const after = originalArray;
1778
+ const maxLength = Math.max(before.length, after.length);
1779
+ for (let i = startIndex; i < maxLength; i++) {
1780
+ if (before[i] !== after[i]) {
1781
+ this.emitSet(originalArray, i, after[i]);
1782
+ }
1783
+ }
1784
+ return removed;
1785
+ }, "spliceArray");
1786
+ popArray = /* @__PURE__ */ __name((orginalArray) => {
1787
+ const index = orginalArray.length - 1;
1788
+ const removedItem = orginalArray.pop();
1789
+ this.emitSet(orginalArray, index);
1790
+ return removedItem;
1791
+ }, "popArray");
1792
+ shiftArray = /* @__PURE__ */ __name((orginalArray) => {
1793
+ const oldLength = orginalArray.length;
1794
+ const result = orginalArray.shift();
1795
+ this.emitSetForRange(orginalArray, 0, orginalArray.length);
1796
+ this.emitSet(orginalArray, oldLength - 1);
1797
+ return result;
1798
+ }, "shiftArray");
1799
+ unshiftArray = /* @__PURE__ */ __name((orginalArray, ...args) => {
1800
+ orginalArray.unshift(...args);
1801
+ this.emitSetForRange(orginalArray, 0, orginalArray.length);
1802
+ return orginalArray.length;
1803
+ }, "unshiftArray");
1804
+ reverseArray = /* @__PURE__ */ __name((orginalArray) => {
1805
+ const result = orginalArray.reverse();
1806
+ this.emitSetForRange(orginalArray, 0, orginalArray.length);
1807
+ return result;
1808
+ }, "reverseArray");
1809
+ sortArray = /* @__PURE__ */ __name((orginalArray, ...args) => {
1810
+ const result = orginalArray.sort(args[0]);
1811
+ this.emitSetForRange(orginalArray, 0, orginalArray.length);
1812
+ return result;
1813
+ }, "sortArray");
1814
+ fillArray = /* @__PURE__ */ __name((orginalArray, ...args) => {
1815
+ const start = args[1] ?? 0;
1816
+ const end = args[2] ?? orginalArray.length;
1817
+ for (let i = start; i < end; i++) {
1818
+ orginalArray[i] = structuredClone(args[0]);
1819
+ this.emitSet(orginalArray, i, orginalArray[i]);
1820
+ }
1821
+ return orginalArray;
1822
+ }, "fillArray");
1823
+ setLength(array, length) {
1824
+ if (length < array.length) {
1825
+ this.updateArray.splice(array, length, array.length - length);
1826
+ } else {
1827
+ array.length = length;
1828
+ }
1829
+ }
1830
+ emitSet(originaArray, index, value) {
1831
+ this.emitChange({
1832
+ arguments: [],
1833
+ chain: [
1834
+ {
1835
+ object: originaArray,
1836
+ id: index
1837
+ }
1838
+ ],
1839
+ id: index,
1840
+ target: originaArray,
1841
+ newValue: value
1842
+ });
1843
+ }
1844
+ emitSetForRange(originaArray, startIndex, length) {
1845
+ const endIndex = startIndex + length;
1846
+ for (let i = startIndex; i < endIndex; i++) {
1847
+ this.emitSet(originaArray, i, originaArray[i]);
1848
+ }
1849
+ }
1850
+ };
1851
+ var ArrayProxyFactory = class extends SingletonFactory7 {
1852
+ static {
1853
+ __name(this, "ArrayProxyFactory");
1854
+ }
1855
+ _proxyRegistry;
1856
+ constructor(_proxyRegistry) {
1857
+ super(), this._proxyRegistry = _proxyRegistry;
1858
+ }
1859
+ getId(data) {
1860
+ return data.array;
1861
+ }
1862
+ createId(data) {
1863
+ return data.array;
1864
+ }
1865
+ createInstance(data, id) {
1866
+ const observer = new ArrayProxy({
1867
+ canDispose: /* @__PURE__ */ __name(() => this.getReferenceCount(id) === 1, "canDispose"),
1868
+ release: /* @__PURE__ */ __name(() => {
1869
+ this.release(id);
1870
+ data.owner?.release();
1871
+ }, "release")
1872
+ }, data.array, this._proxyRegistry);
1873
+ return {
1874
+ observer,
1875
+ proxy: observer.target,
1876
+ proxyTarget: data.array
1877
+ };
1878
+ }
1879
+ releaseInstance(arrayObserverWithProxy, id) {
1880
+ super.releaseInstance(arrayObserverWithProxy, id);
1881
+ arrayObserverWithProxy.observer.dispose();
1882
+ }
1883
+ };
1884
+ ArrayProxyFactory = _ts_decorate18([
1885
+ Injectable18(),
1886
+ _ts_param17(0, Inject16(RsXStateManagerInjectionTokens.IProxyRegistry)),
1887
+ _ts_metadata18("design:type", Function),
1888
+ _ts_metadata18("design:paramtypes", [
1889
+ typeof IProxyRegistry === "undefined" ? Object : IProxyRegistry
1890
+ ])
1891
+ ], ArrayProxyFactory);
1892
+
1893
+ // lib/proxies/date-proxy/date-proxy.factory.ts
1894
+ import { Inject as Inject17, Injectable as Injectable19, RsXCoreInjectionTokens as RsXCoreInjectionTokens12, SingletonFactoryWithGuid as SingletonFactoryWithGuid4, Type as Type10 } from "@rs-x/core";
1895
+ import { Subject as Subject4 } from "rxjs";
1896
+ function _ts_decorate19(decorators, target, key, desc) {
1897
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1898
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1899
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1900
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1901
+ }
1902
+ __name(_ts_decorate19, "_ts_decorate");
1903
+ function _ts_metadata19(k, v) {
1904
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1905
+ }
1906
+ __name(_ts_metadata19, "_ts_metadata");
1907
+ function _ts_param18(paramIndex, decorator) {
1908
+ return function(target, key) {
1909
+ decorator(target, key, paramIndex);
1910
+ };
1911
+ }
1912
+ __name(_ts_param18, "_ts_param");
1913
+ var DateProxy = class DateProxy2 extends AbstractObserver {
1914
+ static {
1915
+ __name(this, "DateProxy");
1916
+ }
1917
+ _proxyRegistry;
1918
+ _filter;
1919
+ _dateSetterMetadata = /* @__PURE__ */ new Map([
1920
+ [
1921
+ "setFullYear",
1922
+ {
1923
+ name: "year",
1924
+ getterName: "getFullYear",
1925
+ setterName: "setFullYear"
1926
+ }
1927
+ ],
1928
+ [
1929
+ "setUTCFullYear",
1930
+ {
1931
+ name: "utcYear",
1932
+ getterName: "getUTCFullYear",
1933
+ setterName: "setUTCFullYear"
1934
+ }
1935
+ ],
1936
+ [
1937
+ "setMonth",
1938
+ {
1939
+ name: "month",
1940
+ getterName: "getMonth",
1941
+ setterName: "setMonth"
1942
+ }
1943
+ ],
1944
+ [
1945
+ "setUTCMonth",
1946
+ {
1947
+ name: "utcMonth",
1948
+ getterName: "getUTCMonth",
1949
+ setterName: "setUTCMonth"
1950
+ }
1951
+ ],
1952
+ [
1953
+ "setDate",
1954
+ {
1955
+ name: "date",
1956
+ getterName: "getDate",
1957
+ setterName: "setDate"
1958
+ }
1959
+ ],
1960
+ [
1961
+ "setUTCDate",
1962
+ {
1963
+ name: "utcDate",
1964
+ getterName: "getUTCDate",
1965
+ setterName: "setUTCDate"
1966
+ }
1967
+ ],
1968
+ [
1969
+ "setHours",
1970
+ {
1971
+ name: "hours",
1972
+ getterName: "getHours",
1973
+ setterName: "setHours"
1974
+ }
1975
+ ],
1976
+ [
1977
+ "setUTCHours",
1978
+ {
1979
+ name: "utcHours",
1980
+ getterName: "getUTCHours",
1981
+ setterName: "setUTCHours"
1982
+ }
1983
+ ],
1984
+ [
1985
+ "setMinutes",
1986
+ {
1987
+ name: "minutes",
1988
+ getterName: "getMinutes",
1989
+ setterName: "setMinutes"
1990
+ }
1991
+ ],
1992
+ [
1993
+ "setUTCMinutes",
1994
+ {
1995
+ name: "utcMinutes",
1996
+ getterName: "getUTCMinutes",
1997
+ setterName: "setUTCMinutes"
1998
+ }
1999
+ ],
2000
+ [
2001
+ "setSeconds",
2002
+ {
2003
+ name: "seconds",
2004
+ getterName: "getSeconds",
2005
+ setterName: "setSeconds"
2006
+ }
2007
+ ],
2008
+ [
2009
+ "setUTCSeconds",
2010
+ {
2011
+ name: "utcSeconds",
2012
+ getterName: "getUTCSeconds",
2013
+ setterName: "setUTCSeconds"
2014
+ }
2015
+ ],
2016
+ [
2017
+ "setMilliseconds",
2018
+ {
2019
+ name: "milliseconds",
2020
+ getterName: "getMilliseconds",
2021
+ setterName: "setMilliseconds"
2022
+ }
2023
+ ],
2024
+ [
2025
+ "setUTCMilliseconds",
2026
+ {
2027
+ name: "utcMilliseconds",
2028
+ getterName: "getUTCMilliseconds",
2029
+ setterName: "setUTCMilliseconds"
2030
+ }
2031
+ ],
2032
+ [
2033
+ "setTime",
2034
+ {
2035
+ name: "time",
2036
+ getterName: "getTime",
2037
+ setterName: "setTime"
2038
+ }
2039
+ ]
2040
+ ]);
2041
+ constructor(owner, initialValue, _proxyRegistry, _filter) {
2042
+ super(owner, Type10.cast(void 0), initialValue, new Subject4(), void 0), this._proxyRegistry = _proxyRegistry, this._filter = _filter;
2043
+ this.target = new Proxy(initialValue, this);
2044
+ this._proxyRegistry.register(initialValue, this.target);
2045
+ }
2046
+ get(target, property, receiver) {
2047
+ const value = Reflect.get(target, property, receiver);
2048
+ if (typeof property === "string") {
2049
+ const setterMetadata = this._dateSetterMetadata.get(property);
2050
+ if (!setterMetadata) {
2051
+ return typeof value === "function" ? value.bind(target) : value;
2052
+ }
2053
+ return (...args) => {
2054
+ const oldTimeStamp = target.getTime();
2055
+ const setter = value;
2056
+ const result = setter.apply(target, args);
2057
+ if (oldTimeStamp !== target.getTime()) {
2058
+ this.emitChanges(oldTimeStamp, target, setterMetadata.name);
2059
+ }
2060
+ return result;
2061
+ };
2062
+ }
2063
+ return value;
2064
+ }
2065
+ emitChanges(oldTimestamp, newDate, propertyName) {
2066
+ const oldDate = new Date(oldTimestamp);
2067
+ if (!this._filter) {
2068
+ this.emitChange({
2069
+ arguments: [],
2070
+ chain: [
2071
+ {
2072
+ object: newDate,
2073
+ id: propertyName
2074
+ }
2075
+ ],
2076
+ id: propertyName,
2077
+ target: newDate,
2078
+ newValue: newDate
2079
+ });
2080
+ return;
2081
+ }
2082
+ for (const setterMetaData of this._dateSetterMetadata.values()) {
2083
+ if (!this._filter(setterMetaData.name)) {
2084
+ continue;
2085
+ }
2086
+ const oldValue = oldDate[setterMetaData.getterName].call(oldDate);
2087
+ const newValue = newDate[setterMetaData.getterName].call(newDate);
2088
+ if (oldValue !== newValue) {
2089
+ this.emitChange({
2090
+ arguments: [],
2091
+ chain: [
2092
+ {
2093
+ object: newDate,
2094
+ id: setterMetaData.name
2095
+ }
2096
+ ],
2097
+ id: setterMetaData.name,
2098
+ target: newDate,
2099
+ newValue
2100
+ });
2101
+ }
2102
+ }
2103
+ }
2104
+ set(target, property, value, receiver) {
2105
+ const oldTimeStamp = target.getTime();
2106
+ const result = Reflect.set(target, property, value, receiver);
2107
+ if (oldTimeStamp !== target.getTime()) {
2108
+ this.emitChange({
2109
+ arguments: [
2110
+ value
2111
+ ],
2112
+ chain: [
2113
+ {
2114
+ object: target,
2115
+ id: 0
2116
+ }
2117
+ ],
2118
+ id: 0,
2119
+ target,
2120
+ newValue: target
2121
+ });
2122
+ }
2123
+ return result;
2124
+ }
2125
+ disposeInternal() {
2126
+ this._proxyRegistry.unregister(this.value);
2127
+ this.target = Type10.cast(void 0);
2128
+ }
2129
+ };
2130
+ var DateProxyFactory = class extends SingletonFactoryWithGuid4 {
2131
+ static {
2132
+ __name(this, "DateProxyFactory");
2133
+ }
2134
+ _proxyRegistry;
2135
+ constructor(guidFactory, _proxyRegistry) {
2136
+ super(guidFactory), this._proxyRegistry = _proxyRegistry;
2137
+ }
2138
+ getGroupId(data) {
2139
+ return data.date;
2140
+ }
2141
+ getGroupMemberId(data) {
2142
+ return data.mustProxify;
2143
+ }
2144
+ createInstance(dateProxyData, id) {
2145
+ const observer = new DateProxy({
2146
+ canDispose: /* @__PURE__ */ __name(() => this.getReferenceCount(id) === 1, "canDispose"),
2147
+ release: /* @__PURE__ */ __name(() => {
2148
+ this.release(id);
2149
+ dateProxyData.owner?.release();
2150
+ }, "release")
2151
+ }, dateProxyData.date, this._proxyRegistry, dateProxyData.mustProxify);
2152
+ return {
2153
+ observer,
2154
+ proxy: observer.target,
2155
+ proxyTarget: dateProxyData.date
2156
+ };
2157
+ }
2158
+ };
2159
+ DateProxyFactory = _ts_decorate19([
2160
+ Injectable19(),
2161
+ _ts_param18(0, Inject17(RsXCoreInjectionTokens12.IGuidFactory)),
2162
+ _ts_param18(1, Inject17(RsXStateManagerInjectionTokens.IProxyRegistry)),
2163
+ _ts_metadata19("design:type", Function),
2164
+ _ts_metadata19("design:paramtypes", [
2165
+ typeof IGuidFactory === "undefined" ? Object : IGuidFactory,
2166
+ typeof IProxyRegistry === "undefined" ? Object : IProxyRegistry
2167
+ ])
2168
+ ], DateProxyFactory);
2169
+
2170
+ // lib/proxies/map-proxy/map-proxy.factory.ts
2171
+ import { Inject as Inject18, Injectable as Injectable20, SingletonFactory as SingletonFactory8, Type as Type11 } from "@rs-x/core";
2172
+ function _ts_decorate20(decorators, target, key, desc) {
2173
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2174
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2175
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2176
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2177
+ }
2178
+ __name(_ts_decorate20, "_ts_decorate");
2179
+ function _ts_metadata20(k, v) {
2180
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2181
+ }
2182
+ __name(_ts_metadata20, "_ts_metadata");
2183
+ function _ts_param19(paramIndex, decorator) {
2184
+ return function(target, key) {
2185
+ decorator(target, key, paramIndex);
2186
+ };
2187
+ }
2188
+ __name(_ts_param19, "_ts_param");
2189
+ var MapProxy = class extends AbstractObserver {
2190
+ static {
2191
+ __name(this, "MapProxy");
2192
+ }
2193
+ _proxyRegistry;
2194
+ updateMap;
2195
+ constructor(owner, map, _proxyRegistry) {
2196
+ super(owner, Type11.cast(void 0), map), this._proxyRegistry = _proxyRegistry;
2197
+ this.updateMap = {
2198
+ clear: this.clearMap,
2199
+ set: this.setMap,
2200
+ delete: this.deleteMap
2201
+ };
2202
+ this.target = new Proxy(map, this);
2203
+ this._proxyRegistry.register(map, this.target);
2204
+ }
2205
+ get(originalMap, property) {
2206
+ if (this.isUpdateMapKey(property)) {
2207
+ return (...args) => {
2208
+ return this.updateMap[property](originalMap, ...args);
2209
+ };
2210
+ }
2211
+ if (property === "get") {
2212
+ return (key) => originalMap.get(key);
2213
+ }
2214
+ const mapAny = originalMap;
2215
+ return typeof mapAny[property] === "function" ? mapAny[property].bind(originalMap) : mapAny[property];
2216
+ }
2217
+ disposeInternal() {
2218
+ this._proxyRegistry.unregister(this.value);
2219
+ ;
2220
+ }
2221
+ isUpdateMapKey(property) {
2222
+ return typeof property === "string" && property in this.updateMap;
2223
+ }
2224
+ clearMap = /* @__PURE__ */ __name((originalMap) => {
2225
+ for (const key of originalMap.keys()) {
2226
+ this.deleteItem(originalMap, key);
2227
+ }
2228
+ }, "clearMap");
2229
+ setMap = /* @__PURE__ */ __name((originalMap, ...args) => {
2230
+ const key = args[0];
2231
+ const value = args[1];
2232
+ originalMap.set(key, value);
2233
+ this.emitSet(originalMap, key, value);
2234
+ return this.target;
2235
+ }, "setMap");
2236
+ deleteMap = /* @__PURE__ */ __name((originalMap, ...args) => {
2237
+ return this.deleteItem(originalMap, args[0]);
2238
+ }, "deleteMap");
2239
+ deleteItem(originalMap, key) {
2240
+ const item = originalMap.get(key);
2241
+ if (item === void 0) {
2242
+ return false;
2243
+ }
2244
+ originalMap.delete(key);
2245
+ this.emitSet(originalMap, key);
2246
+ return true;
2247
+ }
2248
+ emitSet(originalMap, key, value) {
2249
+ this.emitChange({
2250
+ arguments: [],
2251
+ chain: [
2252
+ {
2253
+ object: originalMap,
2254
+ id: key
2255
+ }
2256
+ ],
2257
+ id: key,
2258
+ target: originalMap,
2259
+ newValue: value
2260
+ });
2261
+ }
2262
+ };
2263
+ var MapProxyFactory = class extends SingletonFactory8 {
2264
+ static {
2265
+ __name(this, "MapProxyFactory");
2266
+ }
2267
+ _proxyRegistry;
2268
+ constructor(_proxyRegistry) {
2269
+ super(), this._proxyRegistry = _proxyRegistry;
2270
+ }
2271
+ getId(data) {
2272
+ return data.map;
2273
+ }
2274
+ createId(data) {
2275
+ return data.map;
2276
+ }
2277
+ createInstance(data, id) {
2278
+ const observer = new MapProxy({
2279
+ canDispose: /* @__PURE__ */ __name(() => this.getReferenceCount(id) === 1, "canDispose"),
2280
+ release: /* @__PURE__ */ __name(() => {
2281
+ this.release(id);
2282
+ data.owner?.release();
2283
+ }, "release")
2284
+ }, data.map, this._proxyRegistry);
2285
+ return {
2286
+ observer,
2287
+ proxy: observer.target,
2288
+ proxyTarget: data.map
2289
+ };
2290
+ }
2291
+ releaseInstance(mapObserverWithProxy) {
2292
+ mapObserverWithProxy.observer.dispose();
2293
+ }
2294
+ };
2295
+ MapProxyFactory = _ts_decorate20([
2296
+ Injectable20(),
2297
+ _ts_param19(0, Inject18(RsXStateManagerInjectionTokens.IProxyRegistry)),
2298
+ _ts_metadata20("design:type", Function),
2299
+ _ts_metadata20("design:paramtypes", [
2300
+ typeof IProxyRegistry === "undefined" ? Object : IProxyRegistry
2301
+ ])
2302
+ ], MapProxyFactory);
2303
+
2304
+ // lib/proxies/observable-proxy/observable-proxy.factory.ts
2305
+ import { Inject as Inject19, Injectable as Injectable21, RsXCoreInjectionTokens as RsXCoreInjectionTokens13, SingletonFactory as SingletonFactory9 } from "@rs-x/core";
2306
+ import { ReplaySubject as ReplaySubject2 } from "rxjs";
2307
+ function _ts_decorate21(decorators, target, key, desc) {
2308
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2309
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2310
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2311
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2312
+ }
2313
+ __name(_ts_decorate21, "_ts_decorate");
2314
+ function _ts_metadata21(k, v) {
2315
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2316
+ }
2317
+ __name(_ts_metadata21, "_ts_metadata");
2318
+ function _ts_param20(paramIndex, decorator) {
2319
+ return function(target, key) {
2320
+ decorator(target, key, paramIndex);
2321
+ };
2322
+ }
2323
+ __name(_ts_param20, "_ts_param");
2324
+ var ObservableProxy = class ObservableProxy2 extends AbstractObserver {
2325
+ static {
2326
+ __name(this, "ObservableProxy");
2327
+ }
2328
+ _observableAccessor;
2329
+ _observableSubscription;
2330
+ _oldValue;
2331
+ constructor(owner, target, _observableAccessor) {
2332
+ super(owner, target, void 0, new ReplaySubject2(1)), this._observableAccessor = _observableAccessor;
2333
+ }
2334
+ init() {
2335
+ if (this._observableSubscription) {
2336
+ return;
2337
+ }
2338
+ this._observableSubscription = this.target.subscribe(this.emitObservableChange);
2339
+ }
2340
+ disposeInternal() {
2341
+ this._observableSubscription?.unsubscribe();
2342
+ this._observableAccessor.clearLastValue(this.target);
2343
+ this._observableSubscription = void 0;
2344
+ this._oldValue = null;
2345
+ }
2346
+ emitObservableChange = /* @__PURE__ */ __name((newValue) => {
2347
+ if (newValue === this._oldValue || this.isDisposed) {
2348
+ return;
2349
+ }
2350
+ this._oldValue = newValue;
2351
+ this._observableAccessor.setLastValue(this.target, newValue);
2352
+ this.emitChange({
2353
+ arguments: [],
2354
+ chain: [],
2355
+ target: this.target,
2356
+ id: this.id,
2357
+ newValue
2358
+ });
2359
+ }, "emitObservableChange");
2360
+ };
2361
+ var ObservableProxyFactory = class extends SingletonFactory9 {
2362
+ static {
2363
+ __name(this, "ObservableProxyFactory");
2364
+ }
2365
+ _observableAccessor;
2366
+ constructor(_observableAccessor) {
2367
+ super(), this._observableAccessor = _observableAccessor;
2368
+ }
2369
+ getId(data) {
2370
+ return data.observable;
2371
+ }
2372
+ createId(data) {
2373
+ return data.observable;
2374
+ }
2375
+ createInstance(data, id) {
2376
+ const observer = new ObservableProxy({
2377
+ canDispose: /* @__PURE__ */ __name(() => this.getReferenceCount(id) === 1, "canDispose"),
2378
+ release: /* @__PURE__ */ __name(() => {
2379
+ this.release(id);
2380
+ data.owner?.release();
2381
+ }, "release")
2382
+ }, data.observable, this._observableAccessor);
2383
+ return {
2384
+ observer,
2385
+ proxy: void 0,
2386
+ proxyTarget: data.observable
2387
+ };
2388
+ }
2389
+ releaseInstance(observableObserverWithProxy) {
2390
+ observableObserverWithProxy.observer.dispose();
2391
+ }
2392
+ };
2393
+ ObservableProxyFactory = _ts_decorate21([
2394
+ Injectable21(),
2395
+ _ts_param20(0, Inject19(RsXCoreInjectionTokens13.IObservableAccessor)),
2396
+ _ts_metadata21("design:type", Function),
2397
+ _ts_metadata21("design:paramtypes", [
2398
+ typeof IObservableAccessor === "undefined" ? Object : IObservableAccessor
2399
+ ])
2400
+ ], ObservableProxyFactory);
2401
+
2402
+ // lib/proxies/promise-proxy/promise-proxy.factory.ts
2403
+ import { Inject as Inject20, Injectable as Injectable22, RsXCoreInjectionTokens as RsXCoreInjectionTokens14, SingletonFactory as SingletonFactory10 } from "@rs-x/core";
2404
+ import { ReplaySubject as ReplaySubject3 } from "rxjs";
2405
+ function _ts_decorate22(decorators, target, key, desc) {
2406
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2407
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2408
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2409
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2410
+ }
2411
+ __name(_ts_decorate22, "_ts_decorate");
2412
+ function _ts_metadata22(k, v) {
2413
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2414
+ }
2415
+ __name(_ts_metadata22, "_ts_metadata");
2416
+ function _ts_param21(paramIndex, decorator) {
2417
+ return function(target, key) {
2418
+ decorator(target, key, paramIndex);
2419
+ };
2420
+ }
2421
+ __name(_ts_param21, "_ts_param");
2422
+ var PromiseObserver = class PromiseObserver2 extends AbstractObserver {
2423
+ static {
2424
+ __name(this, "PromiseObserver");
2425
+ }
2426
+ _promiseAccessor;
2427
+ constructor(owner, target, _promiseAccessor) {
2428
+ super(owner, target, void 0, new ReplaySubject3(1)), this._promiseAccessor = _promiseAccessor;
2429
+ target.then(this.onValueResolved);
2430
+ }
2431
+ disposeInternal() {
2432
+ this._promiseAccessor.clearLastValue(this.target);
2433
+ }
2434
+ onValueResolved = /* @__PURE__ */ __name((newValue) => {
2435
+ if (this.isDisposed) {
2436
+ return;
2437
+ }
2438
+ this._promiseAccessor.setLastValue(this.target, newValue);
2439
+ this.emitChange({
2440
+ arguments: [],
2441
+ chain: [],
2442
+ target: this.target,
2443
+ newValue
2444
+ });
2445
+ }, "onValueResolved");
2446
+ };
2447
+ var PromiseProxyFactory = class extends SingletonFactory10 {
2448
+ static {
2449
+ __name(this, "PromiseProxyFactory");
2450
+ }
2451
+ _promiseAccessor;
2452
+ constructor(_promiseAccessor) {
2453
+ super(), this._promiseAccessor = _promiseAccessor;
2454
+ }
2455
+ getId(data) {
2456
+ return data.promise;
2457
+ }
2458
+ createId(data) {
2459
+ return data.promise;
2460
+ }
2461
+ createInstance(data, id) {
2462
+ const observer = new PromiseObserver({
2463
+ canDispose: /* @__PURE__ */ __name(() => this.getReferenceCount(id) === 1, "canDispose"),
2464
+ release: /* @__PURE__ */ __name(() => {
2465
+ this.release(id);
2466
+ data.owner?.release();
2467
+ }, "release")
2468
+ }, data.promise, this._promiseAccessor);
2469
+ return {
2470
+ observer,
2471
+ proxy: void 0,
2472
+ proxyTarget: data.promise
2473
+ };
2474
+ }
2475
+ releaseInstance(promiseObserverWithProxy) {
2476
+ promiseObserverWithProxy.observer.dispose();
2477
+ }
2478
+ };
2479
+ PromiseProxyFactory = _ts_decorate22([
2480
+ Injectable22(),
2481
+ _ts_param21(0, Inject20(RsXCoreInjectionTokens14.IPromiseAccessor)),
2482
+ _ts_metadata22("design:type", Function),
2483
+ _ts_metadata22("design:paramtypes", [
2484
+ typeof IPromiseAccessor === "undefined" ? Object : IPromiseAccessor
2485
+ ])
2486
+ ], PromiseProxyFactory);
2487
+
2488
+ // lib/proxies/proxy-registry/proxy-registry.ts
2489
+ import { Injectable as Injectable23 } from "@rs-x/core";
2490
+ function _ts_decorate23(decorators, target, key, desc) {
2491
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2492
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2493
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2494
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2495
+ }
2496
+ __name(_ts_decorate23, "_ts_decorate");
2497
+ var ProxyRegistry = class {
2498
+ static {
2499
+ __name(this, "ProxyRegistry");
2500
+ }
2501
+ _proxies = /* @__PURE__ */ new Map();
2502
+ getProxyTarget(proxyToFind) {
2503
+ return Array.from(this._proxies.entries()).find(([_, proxy]) => proxy === proxyToFind)?.[0];
2504
+ }
2505
+ getProxy(proxyTarget) {
2506
+ return this._proxies.get(proxyTarget);
2507
+ }
2508
+ register(proxyTarget, proxy) {
2509
+ this._proxies.set(proxyTarget, proxy);
2510
+ }
2511
+ unregister(proxyTarget) {
2512
+ this._proxies.delete(proxyTarget);
2513
+ }
2514
+ isProxy(object) {
2515
+ return !!this.getProxyTarget(object);
2516
+ }
2517
+ };
2518
+ ProxyRegistry = _ts_decorate23([
2519
+ Injectable23()
2520
+ ], ProxyRegistry);
2521
+
2522
+ // lib/proxies/set-proxy/set-proxy.factory.ts
2523
+ import { Inject as Inject21, Injectable as Injectable24, SingletonFactory as SingletonFactory11, Type as Type12 } from "@rs-x/core";
2524
+ function _ts_decorate24(decorators, target, key, desc) {
2525
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2526
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2527
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2528
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2529
+ }
2530
+ __name(_ts_decorate24, "_ts_decorate");
2531
+ function _ts_metadata23(k, v) {
2532
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2533
+ }
2534
+ __name(_ts_metadata23, "_ts_metadata");
2535
+ function _ts_param22(paramIndex, decorator) {
2536
+ return function(target, key) {
2537
+ decorator(target, key, paramIndex);
2538
+ };
2539
+ }
2540
+ __name(_ts_param22, "_ts_param");
2541
+ var SetProxy = class extends AbstractObserver {
2542
+ static {
2543
+ __name(this, "SetProxy");
2544
+ }
2545
+ _proxyRegistry;
2546
+ updateSet;
2547
+ constructor(owner, initialValue, _proxyRegistry) {
2548
+ super(owner, Type12.cast(void 0), initialValue), this._proxyRegistry = _proxyRegistry;
2549
+ this.updateSet = {
2550
+ clear: this.clearSet,
2551
+ add: this.addSet,
2552
+ delete: this.deleteSet,
2553
+ has: this.hasSet
2554
+ };
2555
+ this.target = new Proxy(initialValue, this);
2556
+ this._proxyRegistry.register(initialValue, this.target);
2557
+ }
2558
+ get(originalSet, property) {
2559
+ const target = originalSet;
2560
+ if (property !== "constructor" && property in this.updateSet) {
2561
+ return (...args) => this.updateSet[property](originalSet, ...args);
2562
+ }
2563
+ const value = target[property];
2564
+ return typeof value === "function" ? value.bind(originalSet) : value;
2565
+ }
2566
+ disposeInternal() {
2567
+ this._proxyRegistry.unregister(this.value);
2568
+ }
2569
+ clearSet = /* @__PURE__ */ __name((originalSet) => {
2570
+ for (const value of originalSet.values()) {
2571
+ this.deleteSet(originalSet, value);
2572
+ }
2573
+ }, "clearSet");
2574
+ addSet = /* @__PURE__ */ __name((originalSet, ...args) => {
2575
+ originalSet.add(args[0]);
2576
+ this.emitValueChange(originalSet, args[0], args[0]);
2577
+ return this.target;
2578
+ }, "addSet");
2579
+ deleteSet = /* @__PURE__ */ __name((originalSet, ...args) => {
2580
+ const result = originalSet.delete(args[0]);
2581
+ this.emitValueChange(originalSet, args[0], void 0);
2582
+ return result;
2583
+ }, "deleteSet");
2584
+ hasSet = /* @__PURE__ */ __name((originalSet, ...args) => {
2585
+ return originalSet.has(args[0]);
2586
+ }, "hasSet");
2587
+ emitValueChange(originalSet, id, value) {
2588
+ this.emitChange({
2589
+ arguments: [],
2590
+ chain: [
2591
+ {
2592
+ object: originalSet,
2593
+ id
2594
+ }
2595
+ ],
2596
+ id,
2597
+ target: originalSet,
2598
+ newValue: value
2599
+ });
2600
+ }
2601
+ };
2602
+ var SetProxyFactory = class extends SingletonFactory11 {
2603
+ static {
2604
+ __name(this, "SetProxyFactory");
2605
+ }
2606
+ _proxyRegistry;
2607
+ constructor(_proxyRegistry) {
2608
+ super(), this._proxyRegistry = _proxyRegistry;
2609
+ }
2610
+ getId(data) {
2611
+ return data.set;
2612
+ }
2613
+ createId(data) {
2614
+ return data.set;
2615
+ }
2616
+ createInstance(data, id) {
2617
+ const observer = new SetProxy({
2618
+ canDispose: /* @__PURE__ */ __name(() => this.getReferenceCount(id) === 1, "canDispose"),
2619
+ release: /* @__PURE__ */ __name(() => {
2620
+ this.release(id);
2621
+ data.owner?.release();
2622
+ }, "release")
2623
+ }, data.set, this._proxyRegistry);
2624
+ return {
2625
+ observer,
2626
+ proxy: observer.target,
2627
+ proxyTarget: data.set
2628
+ };
2629
+ }
2630
+ releaseInstance(setObserverWithProxy) {
2631
+ setObserverWithProxy.observer.dispose();
2632
+ }
2633
+ };
2634
+ SetProxyFactory = _ts_decorate24([
2635
+ Injectable24(),
2636
+ _ts_param22(0, Inject21(RsXStateManagerInjectionTokens.IProxyRegistry)),
2637
+ _ts_metadata23("design:type", Function),
2638
+ _ts_metadata23("design:paramtypes", [
2639
+ typeof IProxyRegistry === "undefined" ? Object : IProxyRegistry
2640
+ ])
2641
+ ], SetProxyFactory);
2642
+
2643
+ // lib/rs-x-state-manager.module.ts
2644
+ import { ContainerModule, InjectionContainer, registerMultiInjectServices, RsXCoreModule } from "@rs-x/core";
2645
+
2646
+ // lib/state-manager/object-state-manager.ts
2647
+ import { Inject as Inject22, Injectable as Injectable25, RsXCoreInjectionTokens as RsXCoreInjectionTokens15, SingletonFactory as SingletonFactory12, UnsupportedException as UnsupportedException2 } from "@rs-x/core";
2648
+ function _ts_decorate25(decorators, target, key, desc) {
2649
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2650
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2651
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2652
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2653
+ }
2654
+ __name(_ts_decorate25, "_ts_decorate");
2655
+ function _ts_metadata24(k, v) {
2656
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2657
+ }
2658
+ __name(_ts_metadata24, "_ts_metadata");
2659
+ function _ts_param23(paramIndex, decorator) {
2660
+ return function(target, key) {
2661
+ decorator(target, key, paramIndex);
2662
+ };
2663
+ }
2664
+ __name(_ts_param23, "_ts_param");
2665
+ var StateForObjectManager = class extends SingletonFactory12 {
2666
+ static {
2667
+ __name(this, "StateForObjectManager");
2668
+ }
2669
+ _deepClone;
2670
+ releaseContext;
2671
+ constructor(_deepClone, releaseContext) {
2672
+ super(), this._deepClone = _deepClone, this.releaseContext = releaseContext;
2673
+ }
2674
+ getId(data) {
2675
+ return data.key;
2676
+ }
2677
+ set(key, value, watched) {
2678
+ const state = this.getFromId(key);
2679
+ if (state) {
2680
+ state.valueCopy = this.deepClone(key, value);
2681
+ state.value = value;
2682
+ } else {
2683
+ this.create({
2684
+ key,
2685
+ value,
2686
+ watched
2687
+ });
2688
+ }
2689
+ }
2690
+ createId(data) {
2691
+ return data.key;
2692
+ }
2693
+ deepClone(key, data) {
2694
+ try {
2695
+ return this._deepClone.clone(data);
2696
+ } catch (e) {
2697
+ throw new UnsupportedException2(`Failed to clone state for key '${key}'. Error: ${e}. If the object type is not supported, you can provide your own implementation of IDeepClone.`);
2698
+ }
2699
+ }
2700
+ createInstance(data) {
2701
+ return {
2702
+ value: data.value,
2703
+ valueCopy: this.deepClone(data.key, data.value),
2704
+ watched: data.watched
2705
+ };
2706
+ }
2707
+ onReleased() {
2708
+ this.releaseContext();
2709
+ }
2710
+ };
2711
+ var ObjectStateManager = class extends SingletonFactory12 {
2712
+ static {
2713
+ __name(this, "ObjectStateManager");
2714
+ }
2715
+ _deepClone;
2716
+ constructor(_deepClone) {
2717
+ super(), this._deepClone = _deepClone;
2718
+ }
2719
+ getId(object) {
2720
+ return object;
2721
+ }
2722
+ isRegistered(context, key) {
2723
+ return !!this.getFromId(context)?.has(key);
2724
+ }
2725
+ replaceState(key, newContext, newValue, oldContext, watched) {
2726
+ let stateForObjectManagerForNewContext;
2727
+ const stateForObjectManagerForOldContext = this.getFromId(oldContext);
2728
+ if (newValue === void 0) {
2729
+ stateForObjectManagerForOldContext?.release(key);
2730
+ return;
2731
+ }
2732
+ if (newContext !== oldContext) {
2733
+ stateForObjectManagerForOldContext?.release(key);
2734
+ stateForObjectManagerForNewContext = this.getFromId(newContext);
2735
+ } else {
2736
+ stateForObjectManagerForNewContext = stateForObjectManagerForOldContext;
2737
+ }
2738
+ if (stateForObjectManagerForNewContext) {
2739
+ stateForObjectManagerForNewContext.set(key, newValue, watched);
2740
+ } else if (newValue !== void 0) {
2741
+ this.create(newContext).instance.create({
2742
+ key,
2743
+ value: newValue,
2744
+ watched
2745
+ });
2746
+ }
2747
+ }
2748
+ createId(object) {
2749
+ return object;
2750
+ }
2751
+ createInstance(context) {
2752
+ return new StateForObjectManager(this._deepClone, () => this.release(context));
2753
+ }
2754
+ };
2755
+ ObjectStateManager = _ts_decorate25([
2756
+ Injectable25(),
2757
+ _ts_param23(0, Inject22(RsXCoreInjectionTokens15.IDeepClone)),
2758
+ _ts_metadata24("design:type", Function),
2759
+ _ts_metadata24("design:paramtypes", [
2760
+ typeof IDeepClone === "undefined" ? Object : IDeepClone
2761
+ ])
2762
+ ], ObjectStateManager);
2763
+
2764
+ // lib/state-manager/state-manager.ts
2765
+ import { Inject as Inject23, Injectable as Injectable26, PENDING, RsXCoreInjectionTokens as RsXCoreInjectionTokens16 } from "@rs-x/core";
2766
+ import { Subject as Subject5 } from "rxjs";
2767
+
2768
+ // lib/state-manager/state-change-subscription-manager/state-change-subsription-manager.ts
2769
+ import { SingletonFactory as SingletonFactory13 } from "@rs-x/core";
2770
+ var StateChangeSubscriptionsForContextManager = class StateChangeSubscriptionsForContextManager2 extends GroupedChangeSubscriptionsForContextManager {
2771
+ static {
2772
+ __name(this, "StateChangeSubscriptionsForContextManager");
2773
+ }
2774
+ _objectObserverManager;
2775
+ constructor(context, releaseContext, _objectObserverManager, errorLog, guidFactory) {
2776
+ super(context, releaseContext, errorLog, guidFactory), this._objectObserverManager = _objectObserverManager;
2777
+ }
2778
+ getGroupId(data) {
2779
+ return data.key;
2780
+ }
2781
+ getGroupMemberId(data) {
2782
+ return data.mustProxify;
2783
+ }
2784
+ createObserver(context, data, id) {
2785
+ const objectObserver = this._objectObserverManager.create(context).instance;
2786
+ const observer = objectObserver.create({
2787
+ key: data.key,
2788
+ initializeManually: true,
2789
+ mustProxify: data.mustProxify,
2790
+ owner: {
2791
+ release: /* @__PURE__ */ __name(() => this.release(id), "release")
2792
+ }
2793
+ }).instance.observer;
2794
+ return {
2795
+ observer,
2796
+ subscriptionData: void 0
2797
+ };
2798
+ }
2799
+ };
2800
+ var StateChangeSubscriptionManager = class extends SingletonFactory13 {
2801
+ static {
2802
+ __name(this, "StateChangeSubscriptionManager");
2803
+ }
2804
+ _objectObserverManager;
2805
+ _errorLog;
2806
+ _guidFactory;
2807
+ constructor(_objectObserverManager, _errorLog, _guidFactory) {
2808
+ super(), this._objectObserverManager = _objectObserverManager, this._errorLog = _errorLog, this._guidFactory = _guidFactory;
2809
+ }
2810
+ getId(context) {
2811
+ return context;
2812
+ }
2813
+ isRegistered(context, key) {
2814
+ const stateChangeSubscriptionsForContextManager = this.getFromId(context);
2815
+ if (!stateChangeSubscriptionsForContextManager) {
2816
+ return false;
2817
+ }
2818
+ return stateChangeSubscriptionsForContextManager.isGroupRegistered(key);
2819
+ }
2820
+ createId(context) {
2821
+ return context;
2822
+ }
2823
+ createInstance(context, id) {
2824
+ return new StateChangeSubscriptionsForContextManager(context, () => this.release(id), this._objectObserverManager, this._errorLog, this._guidFactory);
2825
+ }
2826
+ releaseInstance(instance, id) {
2827
+ super.releaseInstance(instance, id);
2828
+ instance.dispose();
2829
+ }
2830
+ };
2831
+
2832
+ // lib/state-manager/state-manager.ts
2833
+ function _ts_decorate26(decorators, target, key, desc) {
2834
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2835
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2836
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2837
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2838
+ }
2839
+ __name(_ts_decorate26, "_ts_decorate");
2840
+ function _ts_metadata25(k, v) {
2841
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2842
+ }
2843
+ __name(_ts_metadata25, "_ts_metadata");
2844
+ function _ts_param24(paramIndex, decorator) {
2845
+ return function(target, key) {
2846
+ decorator(target, key, paramIndex);
2847
+ };
2848
+ }
2849
+ __name(_ts_param24, "_ts_param");
2850
+ var StateManager = class {
2851
+ static {
2852
+ __name(this, "StateManager");
2853
+ }
2854
+ _objectStateManager;
2855
+ _indexValueAccessor;
2856
+ _equalityService;
2857
+ _changed = new Subject5();
2858
+ _contextChanged = new Subject5();
2859
+ _startChangeCycle = new Subject5();
2860
+ _endChangeCycle = new Subject5();
2861
+ _stateChangeSubscriptionManager;
2862
+ _pending = /* @__PURE__ */ new Map();
2863
+ constructor(objectObserverManager, _objectStateManager, errorLog, guidFactory, _indexValueAccessor, _equalityService) {
2864
+ this._objectStateManager = _objectStateManager;
2865
+ this._indexValueAccessor = _indexValueAccessor;
2866
+ this._equalityService = _equalityService;
2867
+ this._stateChangeSubscriptionManager = new StateChangeSubscriptionManager(objectObserverManager, errorLog, guidFactory);
2868
+ }
2869
+ get changed() {
2870
+ return this._changed;
2871
+ }
2872
+ get contextChanged() {
2873
+ return this._contextChanged;
2874
+ }
2875
+ get startChangeCycle() {
2876
+ return this._startChangeCycle;
2877
+ }
2878
+ get endChangeCycle() {
2879
+ return this._endChangeCycle;
2880
+ }
2881
+ toString() {
2882
+ return this._objectStateManager.toString();
2883
+ }
2884
+ isWatched(context, index, mustProxify) {
2885
+ const stateChangeSubscriptionsForContextManager = this._stateChangeSubscriptionManager.getFromId(context);
2886
+ if (!stateChangeSubscriptionsForContextManager) {
2887
+ return false;
2888
+ }
2889
+ const id = stateChangeSubscriptionsForContextManager.getId({
2890
+ key: index,
2891
+ mustProxify
2892
+ });
2893
+ return id ? stateChangeSubscriptionsForContextManager.has(id) : false;
2894
+ }
2895
+ watchState(context, index, mustProxify) {
2896
+ if (!this.isWatched(context, index, mustProxify)) {
2897
+ const value = this.getState(context, index);
2898
+ this.tryToSubscribeToChange(context, index, mustProxify);
2899
+ return value;
2900
+ } else {
2901
+ return this.increaseStateReferenceCount(context, index, true);
2902
+ }
2903
+ }
2904
+ releaseState(context, index, mustProxify) {
2905
+ if (!this._objectStateManager.getFromId(context)?.has(index)) {
2906
+ return;
2907
+ }
2908
+ this.internalUnregister(context, index, mustProxify);
2909
+ }
2910
+ clear() {
2911
+ this._stateChangeSubscriptionManager.dispose();
2912
+ this._objectStateManager.dispose();
2913
+ }
2914
+ getState(context, index) {
2915
+ return this._objectStateManager.getFromId(context)?.getFromId(index)?.value;
2916
+ }
2917
+ setState(context, index, value) {
2918
+ this.internalSetState(context, index, value, {
2919
+ context,
2920
+ value: this.getState(context, index)
2921
+ });
2922
+ }
2923
+ internalSetState(context, index, value, transferValue) {
2924
+ this.tryRebindingNestedState(value, transferValue.value);
2925
+ this._objectStateManager.replaceState(index, context, value, transferValue.context, false);
2926
+ this.emitChange(context, index, value, transferValue.value, transferValue.context);
2927
+ }
2928
+ getOldValue(context, index) {
2929
+ return this._objectStateManager.getFromId(context)?.getFromId(index)?.valueCopy;
2930
+ }
2931
+ unnsubscribeToObserverEvents(context, index, mustProxify) {
2932
+ const subscriptionsForKey = this._stateChangeSubscriptionManager.getFromId(context);
2933
+ const observer = subscriptionsForKey?.getFromData({
2934
+ key: index,
2935
+ mustProxify
2936
+ });
2937
+ if (!observer) {
2938
+ return;
2939
+ }
2940
+ observer.dispose();
2941
+ }
2942
+ internalUnregister(context, index, mustProxify) {
2943
+ if (this.canReleaseState(context, index)) {
2944
+ this.unnsubscribeToObserverEvents(context, index, mustProxify);
2945
+ }
2946
+ }
2947
+ emitChange(context, index, newValue, oldValue, oldContext) {
2948
+ if (this._equalityService.isEqual(newValue, oldValue)) {
2949
+ return;
2950
+ }
2951
+ this._changed.next({
2952
+ oldContext: oldContext ?? context,
2953
+ context,
2954
+ key: index,
2955
+ oldValue,
2956
+ newValue
2957
+ });
2958
+ }
2959
+ updateState(newContext, oldContext, index, newValue, watched) {
2960
+ this._objectStateManager.replaceState(index, newContext, newValue, oldContext, watched);
2961
+ }
2962
+ canReleaseState(context, key) {
2963
+ return this._objectStateManager.getFromId(context)?.release(key).referenceCount === 0;
2964
+ }
2965
+ increaseStateReferenceCount(context, index, watched) {
2966
+ const state = this.getState(context, index);
2967
+ this._objectStateManager.create(context).instance.create({
2968
+ value: state,
2969
+ key: index,
2970
+ watched
2971
+ });
2972
+ return state;
2973
+ }
2974
+ tryToSubscribeToChange(context, index, mustProxify, transferedValue) {
2975
+ this._stateChangeSubscriptionManager.create(context).instance.create({
2976
+ key: index,
2977
+ mustProxify,
2978
+ onChanged: /* @__PURE__ */ __name((change) => this.onChange(change, mustProxify, true), "onChanged"),
2979
+ init: /* @__PURE__ */ __name((observer) => {
2980
+ if (observer.value !== void 0) {
2981
+ this.setInitialValue(context, index, observer.value, transferedValue, true);
2982
+ }
2983
+ observer.init();
2984
+ }, "init")
2985
+ });
2986
+ }
2987
+ getValue(context, key) {
2988
+ try {
2989
+ return this._indexValueAccessor.getResolvedValue(context, key);
2990
+ } catch {
2991
+ return this.getState(context, key);
2992
+ }
2993
+ }
2994
+ getStateChanges(oldContext, newContext) {
2995
+ const oldState = this._objectStateManager.getFromId(oldContext);
2996
+ if (!oldState) {
2997
+ return [];
2998
+ }
2999
+ return Array.from(oldState.ids()).map((id) => {
3000
+ const { value: oldValue, watched } = oldState.getFromId(id) ?? {};
3001
+ const newValue = this.getValue(newContext, id);
3002
+ if (oldContext === newContext && this._equalityService.isEqual(oldValue, newValue)) {
3003
+ return [];
3004
+ }
3005
+ let pendingId = null;
3006
+ if (newValue === PENDING) {
3007
+ this._pending.set(newContext, oldValue);
3008
+ }
3009
+ const stateInfo = {
3010
+ oldContext,
3011
+ context: newContext,
3012
+ key: id,
3013
+ oldValue,
3014
+ newValue: pendingId ?? newValue,
3015
+ watched
3016
+ };
3017
+ return newValue === PENDING ? [
3018
+ stateInfo
3019
+ ] : [
3020
+ stateInfo,
3021
+ ...this.getStateChanges(oldValue, newValue)
3022
+ ];
3023
+ }).reduce((a, b) => a.concat(b), []);
3024
+ }
3025
+ tryRebindingNestedState(newValue, oldValue, mustProxify) {
3026
+ const stateChanges = this.getStateChanges(oldValue, newValue);
3027
+ stateChanges.forEach((stateChange) => {
3028
+ this.internalUnregister(stateChange.oldContext, stateChange.key, mustProxify);
3029
+ });
3030
+ stateChanges.filter((stateChange) => stateChange.context !== stateChange.oldContext).forEach((stateChange) => this._contextChanged.next({
3031
+ context: stateChange.context,
3032
+ oldContext: stateChange.oldContext,
3033
+ key: stateChange.key
3034
+ }));
3035
+ stateChanges.filter((stateChange) => stateChange.watched).forEach((stateChange) => this.tryToSubscribeToChange(stateChange.context, stateChange.key, mustProxify, {
3036
+ context: stateChange.oldContext,
3037
+ value: stateChange.oldValue
3038
+ }));
3039
+ stateChanges.filter((stateChange) => !stateChange.watched).forEach((stateChange) => this.internalSetState(stateChange.context, stateChange.key, stateChange.newValue, {
3040
+ context: stateChange.oldContext,
3041
+ value: stateChange.oldValue
3042
+ }));
3043
+ }
3044
+ setInitialValue(context, index, initialValue, transferedValue, watched) {
3045
+ this.updateState(context, transferedValue?.context ?? context, index, initialValue, watched);
3046
+ this.emitChange(context, index, initialValue, transferedValue?.value, transferedValue?.context);
3047
+ }
3048
+ getChainChanges(chain) {
3049
+ if (!chain) {
3050
+ return [];
3051
+ }
3052
+ const registeredChainParts = chain.filter((chainPart) => this._stateChangeSubscriptionManager.isRegistered(chainPart.object, chainPart.id));
3053
+ return registeredChainParts.map((chainPart) => ({
3054
+ ...chainPart,
3055
+ oldValue: this.getOldValue(chainPart.object, chainPart.id),
3056
+ value: this.getValue(chainPart.object, chainPart.id)
3057
+ }));
3058
+ }
3059
+ getCurrentValue(context, id) {
3060
+ const value = this._pending.get(context);
3061
+ if (value !== void 0) {
3062
+ this._pending.delete(context);
3063
+ return value;
3064
+ }
3065
+ return this.getState(context, id);
3066
+ }
3067
+ onChange(change, mustProxify, watched) {
3068
+ const chainChanges = this.getChainChanges(change.chain);
3069
+ if (chainChanges.length === 0) {
3070
+ return;
3071
+ }
3072
+ this._startChangeCycle.next();
3073
+ try {
3074
+ const chainLeaf = chainChanges[chainChanges.length - 1];
3075
+ const currentValue = this.getCurrentValue(chainLeaf.object, chainLeaf.id);
3076
+ this.tryRebindingNestedState(change.newValue, currentValue, mustProxify);
3077
+ this.updateState(chainLeaf.object, chainLeaf.object, chainLeaf.id, chainLeaf.value, watched);
3078
+ chainChanges.forEach((chainChange) => this.emitChange(chainChange.object, chainChange.id, chainChange.value, chainChange.oldValue));
3079
+ } finally {
3080
+ this._endChangeCycle.next();
3081
+ }
3082
+ }
3083
+ };
3084
+ StateManager = _ts_decorate26([
3085
+ Injectable26(),
3086
+ _ts_param24(0, Inject23(RsXStateManagerInjectionTokens.IObjectPropertyObserverProxyPairManager)),
3087
+ _ts_param24(1, Inject23(RsXStateManagerInjectionTokens.IObjectStateManager)),
3088
+ _ts_param24(2, Inject23(RsXCoreInjectionTokens16.IErrorLog)),
3089
+ _ts_param24(3, Inject23(RsXCoreInjectionTokens16.IGuidFactory)),
3090
+ _ts_param24(4, Inject23(RsXCoreInjectionTokens16.IIndexValueAccessor)),
3091
+ _ts_param24(5, Inject23(RsXCoreInjectionTokens16.IEqualityService)),
3092
+ _ts_metadata25("design:type", Function),
3093
+ _ts_metadata25("design:paramtypes", [
3094
+ typeof IObjectPropertyObserverProxyPairManager === "undefined" ? Object : IObjectPropertyObserverProxyPairManager,
3095
+ typeof IObjectStateManager === "undefined" ? Object : IObjectStateManager,
3096
+ typeof IErrorLog === "undefined" ? Object : IErrorLog,
3097
+ typeof IGuidFactory === "undefined" ? Object : IGuidFactory,
3098
+ typeof IIndexValueAccessor === "undefined" ? Object : IIndexValueAccessor,
3099
+ typeof IEqualityService === "undefined" ? Object : IEqualityService
3100
+ ])
3101
+ ], StateManager);
3102
+
3103
+ // lib/rs-x-state-manager.module.ts
3104
+ var defaultObjectObserverProxyPairFactoryList = [
3105
+ {
3106
+ target: PlainObjectObserverProxyPairFactory,
3107
+ token: RsXStateManagerInjectionTokens.IPlainObjectObserverProxyPairFactory
3108
+ },
3109
+ {
3110
+ target: DateObserverProxyPairFactory,
3111
+ token: RsXStateManagerInjectionTokens.IDateObserverProxyPairFactory
3112
+ },
3113
+ {
3114
+ target: ArrayObserverProxyPairFactory,
3115
+ token: RsXStateManagerInjectionTokens.IArrayObserverProxyPairFactory
3116
+ },
3117
+ {
3118
+ target: PromiseObserverProxyPairFactory,
3119
+ token: RsXStateManagerInjectionTokens.PromiseObserverProxyPairFactory
3120
+ },
3121
+ {
3122
+ target: ObservableObserverProxyPairFactory,
3123
+ token: RsXStateManagerInjectionTokens.ObservableObserverProxyPairFactory
3124
+ },
3125
+ {
3126
+ target: MapObserverProxyPairFactory,
3127
+ token: RsXStateManagerInjectionTokens.IMapObserverProxyPairFactory
3128
+ },
3129
+ {
3130
+ target: SetObserverProxyPairFactory,
3131
+ token: RsXStateManagerInjectionTokens.ISetObserverProxyPairFactory
3132
+ }
3133
+ ];
3134
+ var defaultPropertyObserverProxyPairFactoryList = [
3135
+ {
3136
+ target: NonIterableObjectPropertyObserverProxyPairFactory,
3137
+ token: RsXStateManagerInjectionTokens.NonIterableObjectPropertyObserverProxyPairFactory
3138
+ },
3139
+ {
3140
+ target: CollectionItemObserverProxyPairFactory,
3141
+ token: RsXStateManagerInjectionTokens.ICollectionItemObserverProxyPairFactory
3142
+ },
3143
+ {
3144
+ target: DatePropertyObserverProxyPairFactory,
3145
+ token: RsXStateManagerInjectionTokens.IDatePropertyObserverProxyPairFactory
3146
+ }
3147
+ ];
3148
+ InjectionContainer.load(RsXCoreModule);
3149
+ var RsXStateManagerModule = new ContainerModule((options) => {
3150
+ options.bind(RsXStateManagerInjectionTokens.IArrayProxyFactory).to(ArrayProxyFactory).inSingletonScope();
3151
+ options.bind(RsXStateManagerInjectionTokens.IMapProxyFactory).to(MapProxyFactory).inSingletonScope();
3152
+ options.bind(RsXStateManagerInjectionTokens.ISetProxyFactory).to(SetProxyFactory).inSingletonScope();
3153
+ options.bind(RsXStateManagerInjectionTokens.IDateProxyFactory).to(DateProxyFactory).inSingletonScope();
3154
+ options.bind(RsXStateManagerInjectionTokens.IPromiseProxyFactory).to(PromiseProxyFactory).inSingletonScope();
3155
+ options.bind(RsXStateManagerInjectionTokens.IObservableProxyFactory).to(ObservableProxyFactory).inSingletonScope();
3156
+ options.bind(RsXStateManagerInjectionTokens.IProxyRegistry).to(ProxyRegistry).inSingletonScope();
3157
+ options.bind(RsXStateManagerInjectionTokens.IObjectPropertyObserverProxyPairManager).to(ObjectPropertyObserverProxyPairManager).inSingletonScope();
3158
+ registerMultiInjectServices(options, RsXStateManagerInjectionTokens.IObjectObserverProxyPairFactoryList, defaultObjectObserverProxyPairFactoryList);
3159
+ registerMultiInjectServices(options, RsXStateManagerInjectionTokens.IPropertyObserverProxyPairFactoryList, defaultPropertyObserverProxyPairFactoryList);
3160
+ options.bind(RsXStateManagerInjectionTokens.IObjectObserverProxyPairFactoryProvider).to(ObjectObserverProxyPairFactoryProvider).inSingletonScope();
3161
+ options.bind(RsXStateManagerInjectionTokens.IObjectObserverProxyPairManager).to(ObjectObserverProxyPairManager).inSingletonScope();
3162
+ options.bind(RsXStateManagerInjectionTokens.IObjectPropertyObserverManager).to(ObjectPropertyObserverManager).inSingletonScope();
3163
+ options.bind(RsXStateManagerInjectionTokens.ICollectionItemObserverManager).to(CollectionItemObserverManager).inSingletonScope();
3164
+ options.bind(RsXStateManagerInjectionTokens.IDatePropertyObserverManager).to(DatePropertyObserverManager).inSingletonScope();
3165
+ options.bind(RsXStateManagerInjectionTokens.IMustProxifyItemHandlerFactory).to(MustProxifyItemHandlerFactory).inSingletonScope();
3166
+ options.bind(RsXStateManagerInjectionTokens.IObjectStateManager).to(ObjectStateManager).inTransientScope();
3167
+ options.bind(RsXStateManagerInjectionTokens.IObjectObserverProxyPairFactoryProviderFactory).toFactory((context) => {
3168
+ return () => context.get(RsXStateManagerInjectionTokens.IObjectObserverProxyPairFactoryProvider);
3169
+ });
3170
+ options.bind(RsXStateManagerInjectionTokens.IStateManager).to(StateManager).inSingletonScope();
3171
+ });
3172
+ async function unloadRsXStateManagerModule() {
3173
+ await InjectionContainer.unload(RsXStateManagerModule);
3174
+ await InjectionContainer.unload(RsXCoreModule);
3175
+ }
3176
+ __name(unloadRsXStateManagerModule, "unloadRsXStateManagerModule");
3177
+ export {
3178
+ AbstractObjectObserverProxyPairFactory,
3179
+ AbstractObserver,
3180
+ ArrayObserverProxyPairFactory,
3181
+ ArrayProxyFactory,
3182
+ CollectionItemObserverManager,
3183
+ CollectionItemObserverProxyPairFactory,
3184
+ DateObserverProxyPairFactory,
3185
+ DatePropertyObserverManager,
3186
+ DatePropertyObserverProxyPairFactory,
3187
+ DateProxyFactory,
3188
+ GroupedChangeSubscriptionsForContextManager,
3189
+ IndexChangeSubscriptionManager,
3190
+ IndexObserverProxyPairFactory,
3191
+ MapObserverProxyPairFactory,
3192
+ MapProxy,
3193
+ MapProxyFactory,
3194
+ MustProxifyItemHandlerFactory,
3195
+ NonIterableObjectPropertyObserverProxyPairFactory,
3196
+ ObjectObserverProxyPairFactoryProvider,
3197
+ ObjectObserverProxyPairManager,
3198
+ ObjectPropertyObserverManager,
3199
+ ObjectPropertyObserverProxyPairManager,
3200
+ ObjectStateManager,
3201
+ ObservableObserverProxyPairFactory,
3202
+ ObservableProxyFactory,
3203
+ ObserverGroup,
3204
+ PlainObjectObserverProxyPairFactory,
3205
+ PromiseObserverProxyPairFactory,
3206
+ PromiseProxyFactory,
3207
+ ProxyRegistry,
3208
+ RsXStateManagerInjectionTokens,
3209
+ RsXStateManagerModule,
3210
+ SetObserverProxyPairFactory,
3211
+ SetProxy,
3212
+ SetProxyFactory,
3213
+ StateChangeSubscriptionManager,
3214
+ StateForObjectManager,
3215
+ StateManager,
3216
+ defaultObjectObserverProxyPairFactoryList,
3217
+ defaultPropertyObserverProxyPairFactoryList,
3218
+ unloadRsXStateManagerModule
3219
+ };