@blac/react 0.0.18 → 0.0.20

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.
@@ -1,11 +1,11 @@
1
- import { BlocBase, ValueType, BlocConstructor, BlocInstanceId, CubitPropsType } from 'blac';
1
+ import { BlocBase, BlocConstructor, ValueType, CubitPropsType } from 'blac/src';
2
2
 
3
- interface ExternalStore<B extends BlocBase<any>> {
3
+ interface ExternalStore<B extends BlocBase<S>, S> {
4
4
  subscribe: (onStoreChange: () => void) => () => void;
5
- getSnapshot: () => ValueType<B>;
6
- getServerSnapshot?: () => ValueType<B>;
5
+ getSnapshot: () => S;
6
+ getServerSnapshot?: () => S;
7
7
  }
8
- declare const externalBlocStore: <B extends BlocBase<any>>(bloc: B, dependencySelector: (state: ValueType<B>) => unknown) => ExternalStore<B>;
8
+ declare const externalBlocStore: <B extends BlocBase<S, {}>, S>(bloc: B, dependencySelector: (state: S) => unknown) => ExternalStore<B, S>;
9
9
 
10
10
  type BlocHookData<B extends BlocBase<S>, S> = [
11
11
  value: ValueType<B>,
@@ -18,10 +18,10 @@ interface BlocHookOptions<B extends BlocBase<S>, S> {
18
18
  }
19
19
  type BlocHookDependencySelector<B extends BlocBase<S>, S> = (state: ValueType<B>) => unknown;
20
20
  declare class UseBlocClass {
21
- static useBloc<B extends BlocBase<S>, S>(bloc: BlocConstructor<B>): BlocHookData<B, S>;
22
- static useBloc<B extends BlocBase<S>, S>(bloc: BlocConstructor<B>, options: BlocHookOptions<B, S>): BlocHookData<B, S>;
23
- static useBloc<B extends BlocBase<S>, S>(bloc: BlocConstructor<B>, depsSelector: BlocHookDependencySelector<B, S>): BlocHookData<B, S>;
24
- static useBloc<B extends BlocBase<S>, S>(bloc: BlocConstructor<B>, instanceId: BlocInstanceId): BlocHookData<B, S>;
21
+ static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(bloc: B): BlocHookData<InstanceType<B>, S>;
22
+ static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(bloc: B, options: BlocHookOptions<InstanceType<B>, S>): BlocHookData<InstanceType<B>, S>;
23
+ static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(bloc: B, depsSelector: BlocHookDependencySelector<InstanceType<B>, S>): BlocHookData<InstanceType<B>, S>;
24
+ static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(bloc: B, instanceId: string): BlocHookData<InstanceType<B>, S>;
25
25
  }
26
26
  declare const useBloc: typeof UseBlocClass.useBloc;
27
27
 
@@ -1,5 +1,4 @@
1
- import { useMemo, useSyncExternalStore, useEffect } from 'react';
2
- import { Blac } from 'blac';
1
+ import { useId, useMemo, useSyncExternalStore, useEffect } from 'react';
3
2
 
4
3
  var externalBlocStore = function (bloc, dependencySelector) {
5
4
  var lastDependencyCheck = dependencySelector(bloc.state);
@@ -17,44 +16,475 @@ var externalBlocStore = function (bloc, dependencySelector) {
17
16
  };
18
17
  },
19
18
  getSnapshot: function () { return bloc.state; },
20
- getServerSnapshot: function () { return bloc.state; }
19
+ getServerSnapshot: function () { return bloc.state; },
21
20
  };
22
21
  };
23
22
 
24
- var useResolvedBloc = function (bloc, options) {
25
- if (options === void 0) { options = {}; }
26
- return useMemo(function () { return Blac.getInstance().getBloc(bloc, {
27
- id: options.id,
28
- props: options.props
29
- }); }, [options.id]);
23
+ /******************************************************************************
24
+ Copyright (c) Microsoft Corporation.
25
+
26
+ Permission to use, copy, modify, and/or distribute this software for any
27
+ purpose with or without fee is hereby granted.
28
+
29
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
30
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
31
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
32
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
33
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
34
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
35
+ PERFORMANCE OF THIS SOFTWARE.
36
+ ***************************************************************************** */
37
+ /* global Reflect, Promise, SuppressedError, Symbol */
38
+
39
+ var extendStatics = function(d, b) {
40
+ extendStatics = Object.setPrototypeOf ||
41
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
43
+ return extendStatics(d, b);
44
+ };
45
+
46
+ function __extends(d, b) {
47
+ if (typeof b !== "function" && b !== null)
48
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
49
+ extendStatics(d, b);
50
+ function __() { this.constructor = d; }
51
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
52
+ }
53
+
54
+ var __assign = function() {
55
+ __assign = Object.assign || function __assign(t) {
56
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
57
+ s = arguments[i];
58
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
59
+ }
60
+ return t;
61
+ };
62
+ return __assign.apply(this, arguments);
63
+ };
64
+
65
+ function __awaiter(thisArg, _arguments, P, generator) {
66
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
67
+ return new (P || (P = Promise))(function (resolve, reject) {
68
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
69
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
70
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
71
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
72
+ });
73
+ }
74
+
75
+ function __generator(thisArg, body) {
76
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
77
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
78
+ function verb(n) { return function (v) { return step([n, v]); }; }
79
+ function step(op) {
80
+ if (f) throw new TypeError("Generator is already executing.");
81
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
82
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
83
+ if (y = 0, t) op = [op[0] & 2, t.value];
84
+ switch (op[0]) {
85
+ case 0: case 1: t = op; break;
86
+ case 4: _.label++; return { value: op[1], done: false };
87
+ case 5: _.label++; y = op[1]; op = [0]; continue;
88
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
89
+ default:
90
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
91
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
92
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
93
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
94
+ if (t[2]) _.ops.pop();
95
+ _.trys.pop(); continue;
96
+ }
97
+ op = body.call(thisArg, _);
98
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
99
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
100
+ }
101
+ }
102
+
103
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
104
+ var e = new Error(message);
105
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
30
106
  };
31
107
 
108
+ var BlacEvent;
109
+ (function (BlacEvent) {
110
+ BlacEvent["BLOC_DISPOSED"] = "BLOC_DISPOSED";
111
+ BlacEvent["LISTENER_REMOVED"] = "LISTENER_REMOVED";
112
+ BlacEvent["LISTENER_ADDED"] = "LISTENER_ADDED";
113
+ BlacEvent["STATE_CHANGED"] = "STATE_CHANGED";
114
+ BlacEvent["BLOC_CREATED"] = "BLOC_CREATED";
115
+ })(BlacEvent || (BlacEvent = {}));
116
+ var Blac = /** @class */ (function () {
117
+ function Blac() {
118
+ var _this = this;
119
+ this.blocInstanceMap = new Map();
120
+ this.isolatedBlocMap = new Map();
121
+ this.pluginList = [];
122
+ this.customPropsMap = new Map();
123
+ this.postChangesToDocument = false;
124
+ this.addPlugin = function (plugin) {
125
+ // check if already added
126
+ var index = _this.pluginList.findIndex(function (p) { return p.name === plugin.name; });
127
+ if (index !== -1)
128
+ return;
129
+ _this.pluginList.push(plugin);
130
+ };
131
+ this.reportToPlugins = function (event, bloc, params) {
132
+ _this.pluginList.forEach(function (plugin) {
133
+ plugin.onEvent(event, bloc, params);
134
+ });
135
+ };
136
+ this.report = function (event, bloc, params) {
137
+ var base = bloc.constructor;
138
+ switch (event) {
139
+ case BlacEvent.BLOC_DISPOSED:
140
+ _this.disposeBloc(bloc);
141
+ break;
142
+ case BlacEvent.LISTENER_REMOVED:
143
+ if (bloc.observer.size === 0 && !base.keepAlive)
144
+ _this.disposeBloc(bloc);
145
+ break;
146
+ }
147
+ _this.reportToPlugins(event, bloc, params);
148
+ };
149
+ this.disposeBloc = function (bloc) {
150
+ var base = bloc.constructor;
151
+ if (!base.isolated) {
152
+ _this.unregisterBlocInstance(bloc);
153
+ }
154
+ else {
155
+ _this.unregisterIsolatedBlocInstance(bloc);
156
+ }
157
+ };
158
+ this.getAllBlocs = function (blocClass, options) {
159
+ if (options === void 0) { options = {}; }
160
+ return __awaiter(_this, void 0, void 0, function () {
161
+ var base, searchIsolated, blocs, blocs;
162
+ var _a;
163
+ return __generator(this, function (_b) {
164
+ base = blocClass;
165
+ searchIsolated = (_a = options.searchIsolated, _a === void 0 ? base.isolated : _a);
166
+ if (searchIsolated) {
167
+ blocs = this.isolatedBlocMap.get(blocClass);
168
+ if (blocs)
169
+ return [2 /*return*/, blocs];
170
+ }
171
+ else {
172
+ blocs = Array.from(this.blocInstanceMap.values());
173
+ return [2 /*return*/, blocs.filter(function (b) { return b instanceof blocClass; })];
174
+ }
175
+ return [2 /*return*/, []];
176
+ });
177
+ });
178
+ };
179
+ this.configure = function (config) {
180
+ if (config.exposeBlacInstance) ;
181
+ };
182
+ if (Blac.instance) {
183
+ return Blac.instance;
184
+ }
185
+ Blac.instance = this;
186
+ console.log('Blac Init');
187
+ }
188
+ Blac.getInstance = function () {
189
+ return Blac.instance;
190
+ };
191
+ Blac.prototype.createBlocInstanceMapKey = function (blocClassName, id) {
192
+ return "".concat(blocClassName, ":").concat(id);
193
+ };
194
+ Blac.prototype.unregisterBlocInstance = function (bloc) {
195
+ var key = this.createBlocInstanceMapKey(bloc.name, bloc.id);
196
+ this.blocInstanceMap.delete(key);
197
+ };
198
+ Blac.prototype.registerBlocInstance = function (bloc) {
199
+ var key = this.createBlocInstanceMapKey(bloc.name, bloc.id);
200
+ this.blocInstanceMap.set(key, bloc);
201
+ };
202
+ Blac.prototype.findRegisteredBlocInstance = function (blocClass, id) {
203
+ var base = blocClass;
204
+ if (base.isolated)
205
+ return undefined;
206
+ var key = this.createBlocInstanceMapKey(blocClass.name, id);
207
+ return this.blocInstanceMap.get(key);
208
+ };
209
+ Blac.prototype.registerIsolatedBlocInstance = function (bloc) {
210
+ var blocClass = bloc.constructor;
211
+ var blocs = this.isolatedBlocMap.get(blocClass);
212
+ if (blocs) {
213
+ blocs.push(bloc);
214
+ }
215
+ else {
216
+ this.isolatedBlocMap.set(blocClass, [bloc]);
217
+ }
218
+ };
219
+ Blac.prototype.findIsolatedBlocInstance = function (blocClass, id) {
220
+ var blocs = this.isolatedBlocMap.get(blocClass);
221
+ if (blocs) {
222
+ return blocs.find(function (b) { return b.id === id; });
223
+ }
224
+ return undefined;
225
+ };
226
+ Blac.prototype.unregisterIsolatedBlocInstance = function (bloc) {
227
+ var blocClass = bloc.constructor;
228
+ var blocs = this.isolatedBlocMap.get(blocClass);
229
+ if (blocs) {
230
+ var index = blocs.findIndex(function (b) { return b.id === bloc.id; });
231
+ blocs.splice(index, 1);
232
+ }
233
+ };
234
+ Blac.prototype.setCustomProps = function (blocClass, props) {
235
+ if (!props)
236
+ return;
237
+ this.customPropsMap.set(blocClass, props);
238
+ };
239
+ Blac.prototype.getCustomProps = function (blocClass) {
240
+ var props = this.customPropsMap.get(blocClass);
241
+ this.customPropsMap.delete(blocClass);
242
+ return props;
243
+ };
244
+ Blac.prototype.createNewBlocInstance = function (blocClass, id, props) {
245
+ var base = blocClass;
246
+ var hasCreateMethod = Object.prototype.hasOwnProperty.call(blocClass, 'create');
247
+ this.setCustomProps(base, props);
248
+ var newBloc = hasCreateMethod ? base.create() : new blocClass();
249
+ newBloc.updateId(id);
250
+ if (base.isolated) {
251
+ this.registerIsolatedBlocInstance(newBloc);
252
+ return newBloc;
253
+ }
254
+ this.registerBlocInstance(newBloc);
255
+ return newBloc;
256
+ };
257
+ Blac.prototype.getBloc = function (blocClass, options) {
258
+ if (options === void 0) { options = {}; }
259
+ var base = blocClass;
260
+ var isIsolated = base.isolated;
261
+ var id = options.id || blocClass.name;
262
+ var registered = isIsolated
263
+ ? this.findIsolatedBlocInstance(blocClass, id)
264
+ : this.findRegisteredBlocInstance(blocClass, id);
265
+ var reconnect = options.reconnect;
266
+ if (registered) {
267
+ if (reconnect) {
268
+ registered.dispose();
269
+ }
270
+ else {
271
+ return registered;
272
+ }
273
+ }
274
+ return this.createNewBlocInstance(blocClass, id, options.props);
275
+ };
276
+ Blac.instance = new Blac();
277
+ Blac.getAllBlocs = Blac.instance.getAllBlocs;
278
+ Blac.addPlugin = Blac.instance.addPlugin;
279
+ Blac.configure = Blac.instance.configure;
280
+ return Blac;
281
+ }());
282
+
283
+ var BlacObservable = /** @class */ (function () {
284
+ function BlacObservable() {
285
+ this._observers = new Set();
286
+ }
287
+ Object.defineProperty(BlacObservable.prototype, "size", {
288
+ get: function () {
289
+ return this._observers.size;
290
+ },
291
+ enumerable: false,
292
+ configurable: true
293
+ });
294
+ BlacObservable.prototype.subscribe = function (observer) {
295
+ var _this = this;
296
+ this._observers.add(observer);
297
+ return function () { return _this.unsubscribe(observer); };
298
+ };
299
+ BlacObservable.prototype.unsubscribe = function (observer) {
300
+ this._observers.delete(observer);
301
+ };
302
+ BlacObservable.prototype.notify = function (newState, oldState) {
303
+ this._observers.forEach(function (observer) { return observer(newState, oldState); });
304
+ };
305
+ BlacObservable.prototype.dispose = function () {
306
+ this._observers.clear();
307
+ };
308
+ return BlacObservable;
309
+ }());
310
+
311
+ var BlocBase = /** @class */ (function () {
312
+ // onConnect(): void;
313
+ // onDisconnect(): void;
314
+ function BlocBase(initialState) {
315
+ var _this = this;
316
+ this.isolated = false;
317
+ this.isBlacLive = true;
318
+ this.blac = Blac.getInstance();
319
+ this.props = {};
320
+ this.createdAt = Date.now();
321
+ this.updateId = function (id) {
322
+ var originalId = _this.id;
323
+ if (!id || id === originalId)
324
+ return;
325
+ _this.id = id;
326
+ };
327
+ this.addEventListenerStateChange = function (callback) {
328
+ _this.blac.report(BlacEvent.LISTENER_ADDED, _this);
329
+ _this.observer.subscribe(callback);
330
+ return function () { return _this.handleUnsubscribe(callback); };
331
+ };
332
+ this.handleUnsubscribe = function (callback) {
333
+ _this.observer.unsubscribe(callback);
334
+ _this.blac.report(BlacEvent.LISTENER_REMOVED, _this);
335
+ };
336
+ this.observer = new BlacObservable();
337
+ this._state = initialState;
338
+ this.blac.report(BlacEvent.BLOC_CREATED, this);
339
+ this.id = this.constructor.name;
340
+ this.isolated = this.constructor.isolated;
341
+ // this.onConnect?.();
342
+ }
343
+ Object.defineProperty(BlocBase.prototype, "state", {
344
+ get: function () {
345
+ return this._state;
346
+ },
347
+ enumerable: false,
348
+ configurable: true
349
+ });
350
+ Object.defineProperty(BlocBase.prototype, "name", {
351
+ get: function () {
352
+ return this.constructor.name;
353
+ },
354
+ enumerable: false,
355
+ configurable: true
356
+ });
357
+ BlocBase.prototype.dispose = function () {
358
+ this.blac.report(BlacEvent.BLOC_DISPOSED, this);
359
+ this.isBlacLive = false;
360
+ this.observer.dispose();
361
+ // this.onDisconnect?.();
362
+ };
363
+ BlocBase.isolated = false;
364
+ BlocBase.keepAlive = false;
365
+ BlocBase.isBlacClass = true;
366
+ return BlocBase;
367
+ }());
368
+
369
+ /** @class */ ((function (_super) {
370
+ __extends(Cubit, _super);
371
+ function Cubit(initialState) {
372
+ var _this = _super.call(this, initialState) || this;
373
+ _this.props = {};
374
+ var newProps = Blac.getInstance().getCustomProps(_this.constructor);
375
+ _this.props = __assign(__assign({}, _this.props), newProps);
376
+ return _this;
377
+ }
378
+ /**
379
+ * Update the state then will notify all observers
380
+ * @param state: new state
381
+ **/
382
+ Cubit.prototype.emit = function (state) {
383
+ if (state === this.state) {
384
+ return;
385
+ }
386
+ var oldState = this.state;
387
+ var newState = state;
388
+ this._state = state;
389
+ this.observer.notify(newState, oldState);
390
+ this.blac.report(BlacEvent.STATE_CHANGED, this, {
391
+ newState: newState,
392
+ oldState: oldState,
393
+ });
394
+ };
395
+ /**
396
+ * Merges current state object with the parameter "state" and emits the new state
397
+ * Warning: only works when the state is an object.
398
+ * @param state: Partial state that should change
399
+ **/
400
+ Cubit.prototype.patch = function (statePatch, ignoreChangeCheck) {
401
+ if (ignoreChangeCheck === void 0) { ignoreChangeCheck = false; }
402
+ var changes = false;
403
+ if (!ignoreChangeCheck) {
404
+ for (var key in statePatch) {
405
+ var current = this.state[key];
406
+ if (statePatch[key] !== current) {
407
+ changes = true;
408
+ break;
409
+ }
410
+ }
411
+ }
412
+ if (changes) {
413
+ this.emit(__assign(__assign({}, this.state), statePatch));
414
+ }
415
+ };
416
+ return Cubit;
417
+ })(BlocBase));
418
+
419
+ /** @class */ ((function (_super) {
420
+ __extends(Bloc, _super);
421
+ function Bloc() {
422
+ var _this = _super !== null && _super.apply(this, arguments) || this;
423
+ /**
424
+ * Emit a new action, the reducer should digest the action and update the state accordingly
425
+ * @param action: action t obe sent to the reducer
426
+ */
427
+ _this.emit = function (action) {
428
+ var oldState = _this.state;
429
+ var newState = _this.reducer(action, _this.state);
430
+ _this._state = newState;
431
+ _this.observer.notify(newState, oldState);
432
+ _this.blac.report(BlacEvent.STATE_CHANGED, _this, {
433
+ newState: newState,
434
+ oldState: oldState,
435
+ });
436
+ };
437
+ return _this;
438
+ }
439
+ return Bloc;
440
+ })(BlocBase));
441
+
32
442
  var UseBlocClass = /** @class */ (function () {
33
443
  function UseBlocClass() {
34
444
  }
35
445
  UseBlocClass.useBloc = function (bloc, options) {
36
446
  var _a, _b;
447
+ var rid = useId();
37
448
  // default options
38
449
  var dependencySelector = function (state) { return state; };
39
450
  var blocId;
40
451
  var props = {};
41
452
  // parse options
42
- if (typeof options === "function") {
453
+ // if options is a function, its a dependencySelector
454
+ if (typeof options === 'function') {
43
455
  dependencySelector = options;
44
456
  }
45
- if (typeof options === "string") {
457
+ // if options is a string its an ID
458
+ if (typeof options === 'string') {
46
459
  blocId = options;
47
460
  }
48
- if (typeof options === "object") {
461
+ if (typeof options === 'object') {
49
462
  dependencySelector = (_a = options.dependencySelector) !== null && _a !== void 0 ? _a : dependencySelector;
50
463
  blocId = options.id;
51
464
  props = (_b = options.props) !== null && _b !== void 0 ? _b : props;
52
465
  }
53
- var resolvedBloc = useResolvedBloc(bloc, { id: blocId, props: props });
466
+ var base = bloc;
467
+ var isIsolated = base.isolated;
468
+ if (isIsolated) {
469
+ blocId = rid;
470
+ }
471
+ // const now = Date.now();
472
+ // const createdAt = useRef(now);
473
+ // const dateChanged = now !== createdAt;
474
+ // resolve the bloc, get the existing instance of the bloc or create a new one
475
+ // const resolvedBloc = useMemo(
476
+ // () =>
477
+ var resolvedBloc = Blac.getInstance().getBloc(bloc, {
478
+ id: blocId,
479
+ props: props,
480
+ reconnect: false,
481
+ });
482
+ // [renderId.current],
483
+ // );
54
484
  if (!resolvedBloc) {
55
485
  throw new Error("useBloc: could not resolve: ".concat(bloc.name || bloc));
56
486
  }
57
- var _c = useMemo(function () { return externalBlocStore(resolvedBloc, dependencySelector); }, [resolvedBloc]), subscribe = _c.subscribe, getSnapshot = _c.getSnapshot, getServerSnapshot = _c.getServerSnapshot;
487
+ var _c = useMemo(function () { return externalBlocStore(resolvedBloc, dependencySelector); }, [resolvedBloc.createdAt]), subscribe = _c.subscribe, getSnapshot = _c.getSnapshot, getServerSnapshot = _c.getServerSnapshot;
58
488
  var state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
59
489
  useEffect(function () {
60
490
  resolvedBloc.props = props;
@@ -1 +1 @@
1
- {"version":3,"file":"blac-react.esm.js","sources":["../src/externalBlocStore.ts","../src/useResolvedBloc.ts","../src/useBloc.tsx"],"sourcesContent":["import { BlocBase, ValueType } from \"blac\";\n\nexport interface ExternalStore<B extends BlocBase<any>> {\n subscribe: (onStoreChange: () => void) => () => void;\n getSnapshot: () => ValueType<B>;\n getServerSnapshot?: () => ValueType<B>;\n}\n\nconst externalBlocStore = <B extends BlocBase<any>>(\n bloc: B,\n dependencySelector: (state: ValueType<B>) => unknown\n): ExternalStore<B> => {\n let lastDependencyCheck = dependencySelector(bloc.state);\n return {\n subscribe: (listener: () => void) => {\n const unSub = bloc.addEventListenerStateChange(data => {\n const newDependencyCheck = dependencySelector(data);\n if (newDependencyCheck !== lastDependencyCheck) {\n lastDependencyCheck = newDependencyCheck;\n listener();\n }\n });\n return () => {\n unSub();\n };\n },\n getSnapshot: (): ValueType<B> => bloc.state,\n getServerSnapshot: (): ValueType<B> => bloc.state\n };\n};\n\nexport default externalBlocStore;\n","import { Blac, BlocBase, BlocConstructor, BlocInstanceId, BlocProps } from \"blac\";\nimport { useMemo } from \"react\";\n\nconst useResolvedBloc = <B extends BlocBase<S>, S>(\n bloc: BlocConstructor<B>,\n options: { id?: BlocInstanceId; props?: BlocProps } = {}\n): B => useMemo(() => Blac.getInstance().getBloc(bloc, {\n id: options.id,\n props: options.props\n}), [options.id]);\n\nexport default useResolvedBloc;\n","import { BlocBase, BlocConstructor, BlocInstanceId, BlocProps, CubitPropsType, ValueType } from \"blac\";\nimport { useEffect, useMemo, useSyncExternalStore } from \"react\";\nimport externalBlocStore, { ExternalStore } from \"./externalBlocStore\";\nimport useResolvedBloc from \"./useResolvedBloc\";\n\nexport type BlocHookData<B extends BlocBase<S>, S> = [\n value: ValueType<B>,\n instance: B,\n];\n\n\nexport interface BlocHookOptions<B extends BlocBase<S>, S> {\n id?: string;\n dependencySelector?: (state: ValueType<B>) => unknown;\n props?: CubitPropsType<B>;\n}\n\nexport type BlocHookDependencySelector<B extends BlocBase<S>, S> = (state: ValueType<B>) => unknown;\n\nclass UseBlocClass {\n static useBloc<B extends BlocBase<S>, S>(\n bloc: BlocConstructor<B>\n ): BlocHookData<B, S>;\n static useBloc<B extends BlocBase<S>, S>(\n bloc: BlocConstructor<B>,\n options: BlocHookOptions<B, S>\n ): BlocHookData<B, S>;\n static useBloc<B extends BlocBase<S>, S>(\n bloc: BlocConstructor<B>,\n depsSelector: BlocHookDependencySelector<B, S>\n ): BlocHookData<B, S>;\n static useBloc<B extends BlocBase<S>, S>(\n bloc: BlocConstructor<B>,\n instanceId: BlocInstanceId\n ): BlocHookData<B, S>;\n static useBloc<B extends BlocBase<S>, S>(\n bloc: BlocConstructor<B>,\n options?: BlocHookOptions<B, S> | BlocHookDependencySelector<B, S> | BlocInstanceId\n ): BlocHookData<B, S> {\n // default options\n let dependencySelector: BlocHookDependencySelector<B, S> = (state: ValueType<B>) => state;\n let blocId: BlocInstanceId | undefined;\n let props: BlocProps = {};\n\n // parse options\n if (typeof options === \"function\") {\n dependencySelector = options;\n }\n\n if (typeof options === \"string\") {\n blocId = options;\n }\n\n if (typeof options === \"object\") {\n dependencySelector = options.dependencySelector ?? dependencySelector;\n blocId = options.id;\n props = options.props ?? props;\n }\n\n\n const resolvedBloc = useResolvedBloc<B, S>(bloc, { id: blocId, props });\n\n if (!resolvedBloc) {\n throw new Error(`useBloc: could not resolve: ${bloc.name || bloc}`);\n }\n\n const { subscribe, getSnapshot, getServerSnapshot } = useMemo<ExternalStore<B>>(\n () => externalBlocStore(resolvedBloc, dependencySelector),\n [resolvedBloc]\n );\n\n const state = useSyncExternalStore<ValueType<B>>(subscribe, getSnapshot, getServerSnapshot);\n\n useEffect(() => {\n resolvedBloc.props = props;\n }, [props]);\n\n return [state, resolvedBloc];\n }\n}\n\nconst useBloc = UseBlocClass.useBloc;\n\nexport default useBloc;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blac-react.esm.js","sources":["../src/externalBlocStore.ts","../../blac/src/Blac.ts","../../blac/src/BlacObserver.ts","../../blac/src/BlocBase.ts","../../blac/src/Cubit.ts","../../blac/src/Bloc.ts","../src/useBloc.tsx"],"sourcesContent":["import { BlocBase } from 'blac/src';\n\nexport interface ExternalStore<B extends BlocBase<S>, S> {\n subscribe: (onStoreChange: () => void) => () => void;\n getSnapshot: () => S;\n getServerSnapshot?: () => S;\n}\n\nconst externalBlocStore = <B extends BlocBase<S>, S>(\n bloc: B,\n dependencySelector: (state: S) => unknown,\n): ExternalStore<B, S> => {\n let lastDependencyCheck = dependencySelector(bloc.state);\n\n return {\n subscribe: (listener: () => void) => {\n const unSub = bloc.addEventListenerStateChange((data) => {\n const newDependencyCheck = dependencySelector(data);\n if (newDependencyCheck !== lastDependencyCheck) {\n lastDependencyCheck = newDependencyCheck;\n listener();\n }\n });\n return () => {\n unSub();\n };\n },\n getSnapshot: (): S => bloc.state,\n getServerSnapshot: (): S => bloc.state,\n };\n};\n\nexport default externalBlocStore;\n","import { BlocBase, BlocInstanceId } from './BlocBase';\nimport { BlocBaseAbstract, BlocConstructor } from './types';\nimport { BlocProps } from './Cubit';\nimport { BlacPlugin } from './BlacPlugin';\n\nexport interface BlacConfig {\n exposeBlacInstance?: boolean;\n}\n\nexport enum BlacEvent {\n BLOC_DISPOSED = 'BLOC_DISPOSED',\n LISTENER_REMOVED = 'LISTENER_REMOVED',\n LISTENER_ADDED = 'LISTENER_ADDED',\n STATE_CHANGED = 'STATE_CHANGED',\n BLOC_CREATED = 'BLOC_CREATED',\n}\n\nexport interface EventParams {\n [BlacEvent.BLOC_DISPOSED]: undefined;\n [BlacEvent.LISTENER_REMOVED]: undefined;\n [BlacEvent.LISTENER_ADDED]: undefined;\n [BlacEvent.BLOC_CREATED]: undefined;\n [BlacEvent.STATE_CHANGED]: {\n newState: any;\n oldState: any;\n };\n}\n\nexport class Blac {\n static instance: Blac = new Blac();\n static getAllBlocs = Blac.instance.getAllBlocs;\n static addPlugin = Blac.instance.addPlugin;\n static configure = Blac.instance.configure;\n blocInstanceMap: Map<string, BlocBase<any>> = new Map();\n isolatedBlocMap: Map<Function, BlocBase<any>[]> = new Map();\n pluginList: BlacPlugin[] = [];\n customPropsMap: Map<Function, BlocProps> = new Map();\n postChangesToDocument = false;\n\n constructor() {\n if (Blac.instance) {\n return Blac.instance;\n }\n\n Blac.instance = this;\n console.log('Blac Init');\n }\n\n static getInstance(): Blac {\n return Blac.instance;\n }\n\n addPlugin = (plugin: BlacPlugin): void => {\n // check if already added\n const index = this.pluginList.findIndex((p) => p.name === plugin.name);\n if (index !== -1) return;\n this.pluginList.push(plugin);\n };\n\n reportToPlugins = <B extends BlacEvent>(\n event: B,\n bloc: BlocBase<any>,\n params?: EventParams[B],\n ) => {\n this.pluginList.forEach((plugin) => {\n plugin.onEvent(event, bloc, params);\n });\n };\n\n report = <B extends BlacEvent>(\n event: B,\n bloc: BlocBase<any>,\n params?: EventParams[B],\n ) => {\n const base = bloc.constructor as unknown as BlocBaseAbstract;\n\n switch (event) {\n case BlacEvent.BLOC_DISPOSED:\n this.disposeBloc(bloc);\n break;\n case BlacEvent.LISTENER_REMOVED:\n if (bloc.observer.size === 0 && !base.keepAlive) this.disposeBloc(bloc);\n break;\n }\n\n this.reportToPlugins(event, bloc, params);\n };\n\n disposeBloc = (bloc: BlocBase<any>): void => {\n const base = bloc.constructor as unknown as BlocBaseAbstract;\n if (!base.isolated) {\n this.unregisterBlocInstance(bloc);\n } else {\n this.unregisterIsolatedBlocInstance(bloc);\n }\n };\n\n createBlocInstanceMapKey(blocClassName: string, id: BlocInstanceId): string {\n return `${blocClassName}:${id}`;\n }\n\n unregisterBlocInstance(bloc: BlocBase<any>): void {\n const key = this.createBlocInstanceMapKey(bloc.name, bloc.id);\n this.blocInstanceMap.delete(key);\n }\n\n registerBlocInstance(bloc: BlocBase<any>): void {\n const key = this.createBlocInstanceMapKey(bloc.name, bloc.id);\n this.blocInstanceMap.set(key, bloc);\n }\n\n findRegisteredBlocInstance<B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n id: BlocInstanceId,\n ): InstanceType<BlocConstructor<B>> | undefined {\n const base = blocClass as unknown as BlocBaseAbstract;\n if (base.isolated) return undefined;\n\n const key = this.createBlocInstanceMapKey(blocClass.name, id);\n return this.blocInstanceMap.get(key) as InstanceType<BlocConstructor<B>>;\n }\n\n registerIsolatedBlocInstance(bloc: BlocBase<any>): void {\n const blocClass = bloc.constructor;\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) {\n blocs.push(bloc);\n } else {\n this.isolatedBlocMap.set(blocClass, [bloc]);\n }\n }\n\n findIsolatedBlocInstance<B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n id: BlocInstanceId,\n ): InstanceType<BlocConstructor<B>> | undefined {\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) {\n return blocs.find((b) => b.id === id) as InstanceType<BlocConstructor<B>>;\n }\n return undefined;\n }\n\n unregisterIsolatedBlocInstance(bloc: BlocBase<any>): void {\n const blocClass = bloc.constructor;\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) {\n const index = blocs.findIndex((b) => b.id === bloc.id);\n blocs.splice(index, 1);\n }\n }\n\n setCustomProps(\n blocClass: BlocBaseAbstract,\n props: BlocProps | undefined,\n ): void {\n if (!props) return;\n this.customPropsMap.set(blocClass, props);\n }\n\n getCustomProps(blocClass: BlocBaseAbstract): BlocProps | undefined {\n const props = this.customPropsMap.get(blocClass);\n this.customPropsMap.delete(blocClass);\n return props;\n }\n\n createNewBlocInstance<B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n id: BlocInstanceId,\n props: BlocProps | undefined,\n ): InstanceType<BlocConstructor<B>> {\n const base = blocClass as unknown as BlocBaseAbstract;\n const hasCreateMethod = Object.prototype.hasOwnProperty.call(\n blocClass,\n 'create',\n );\n\n this.setCustomProps(base, props);\n const newBloc = hasCreateMethod ? base.create() : new blocClass();\n newBloc.updateId(id);\n\n if (base.isolated) {\n this.registerIsolatedBlocInstance(newBloc);\n return newBloc as InstanceType<BlocConstructor<B>>;\n }\n\n this.registerBlocInstance(newBloc);\n return newBloc as InstanceType<BlocConstructor<B>>;\n }\n\n getBloc<B extends BlocBase<S>, S>(\n blocClass: BlocConstructor<B>,\n options: {\n id?: BlocInstanceId;\n props?: BlocProps;\n reconnect?: boolean;\n } = {},\n ): InstanceType<BlocConstructor<B>> {\n const base = blocClass as unknown as BlocBaseAbstract;\n const isIsolated = base.isolated;\n const id = options.id || blocClass.name;\n const registered = isIsolated\n ? this.findIsolatedBlocInstance(blocClass, id)\n : this.findRegisteredBlocInstance(blocClass, id);\n const { reconnect } = options;\n if (registered) {\n if (reconnect) {\n registered.dispose();\n } else {\n return registered;\n }\n }\n return this.createNewBlocInstance(blocClass, id, options.props);\n }\n\n getAllBlocs = async <B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n options: {\n searchIsolated?: boolean;\n } = {},\n ): Promise<B[]> => {\n const base = blocClass as unknown as BlocBaseAbstract;\n\n const { searchIsolated = base.isolated } = options;\n\n if (searchIsolated) {\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) return blocs as B[];\n } else {\n const blocs = Array.from(this.blocInstanceMap.values());\n return blocs.filter((b) => b instanceof blocClass) as B[];\n }\n return [];\n };\n\n configure = (config: BlacConfig) => {\n if (config.exposeBlacInstance) {\n // window.__blac = this;\n }\n };\n}\n\ndeclare global {\n interface Window {\n // __blac?: Blac;\n }\n}\n","export type BlacObserver<S> = (\n newState: S,\n oldState: S\n) => void | Promise<void>;\n\nexport class BlacObservable<S> {\n private _observers = new Set<BlacObserver<S>>();\n\n get size(): number {\n return this._observers.size;\n }\n\n subscribe(observer: BlacObserver<S>): () => void {\n this._observers.add(observer);\n return () => this.unsubscribe(observer);\n }\n\n unsubscribe(observer: BlacObserver<S>) {\n this._observers.delete(observer);\n }\n\n notify(newState: S, oldState: S) {\n this._observers.forEach((observer) => observer(newState, oldState));\n }\n\n dispose() {\n this._observers.clear();\n }\n}\n","import { Blac, BlacEvent } from './Blac';\nimport { BlacObservable } from './BlacObserver';\nimport { BlocProps } from './Cubit';\n\nexport type BlocInstanceId = string | number | undefined;\n\nexport abstract class BlocBase<S, P extends BlocProps = {}> {\n static isolated = false;\n static keepAlive = false;\n static create: <S extends any>() => BlocBase<S>;\n static isBlacClass = true;\n public isolated = false;\n public isBlacLive = true;\n public observer: BlacObservable<any>;\n public blac = Blac.getInstance();\n public id: BlocInstanceId;\n public props: P = {} as P;\n public readonly createdAt = Date.now();\n\n // onConnect(): void;\n // onDisconnect(): void;\n\n constructor(initialState: S) {\n this.observer = new BlacObservable();\n this._state = initialState;\n this.blac.report(BlacEvent.BLOC_CREATED, this);\n this.id = this.constructor.name;\n this.isolated = (this.constructor as any).isolated;\n // this.onConnect?.();\n }\n\n public _state: S;\n\n get state(): S {\n return this._state;\n }\n\n get name() {\n return this.constructor.name;\n }\n\n updateId = (id?: BlocInstanceId) => {\n const originalId = this.id;\n if (!id || id === originalId) return;\n this.id = id;\n };\n\n addEventListenerStateChange = (\n callback: (newState: S, oldState: S) => void,\n ): (() => void) => {\n this.blac.report(BlacEvent.LISTENER_ADDED, this);\n this.observer.subscribe(callback);\n return () => this.handleUnsubscribe(callback);\n };\n\n dispose() {\n this.blac.report(BlacEvent.BLOC_DISPOSED, this);\n this.isBlacLive = false;\n this.observer.dispose();\n // this.onDisconnect?.();\n }\n\n private handleUnsubscribe = (\n callback: (newState: S, oldState: S) => void,\n ): void => {\n this.observer.unsubscribe(callback);\n this.blac.report(BlacEvent.LISTENER_REMOVED, this);\n };\n}\n","import { BlocBase } from './BlocBase';\nimport { Blac, BlacEvent } from './Blac';\n\nexport type BlocProps = Record<string | number, any>;\n\nexport abstract class Cubit<S, P extends BlocProps = {}> extends BlocBase<S> {\n static create: () => Cubit<any, any>;\n props: P = {} as P;\n\n constructor(initialState: S) {\n super(initialState);\n const newProps = Blac.getInstance().getCustomProps(this.constructor as any);\n this.props = { ...this.props, ...newProps };\n }\n\n /**\n * Update the state then will notify all observers\n * @param state: new state\n **/\n emit(state: S): void {\n if (state === this.state) {\n return;\n }\n\n const oldState = this.state;\n const newState = state;\n this._state = state;\n this.observer.notify(newState, oldState);\n\n this.blac.report(BlacEvent.STATE_CHANGED, this, {\n newState,\n oldState,\n });\n }\n\n /**\n * Merges current state object with the parameter \"state\" and emits the new state\n * Warning: only works when the state is an object.\n * @param state: Partial state that should change\n **/\n patch(\n statePatch: S extends object ? Partial<S> : S,\n ignoreChangeCheck = false,\n ): void {\n let changes = false;\n if (!ignoreChangeCheck) {\n for (const key in statePatch) {\n const current = (this.state as any)[key];\n if (statePatch[key] !== current) {\n changes = true;\n break;\n }\n }\n }\n\n if (changes) {\n this.emit({ ...this.state, ...statePatch });\n }\n }\n}\n","import { BlocBase } from './BlocBase';\nimport { BlacEvent } from './Blac';\n\nexport abstract class Bloc<S, A> extends BlocBase<S> {\n static create: () => BlocBase<any>;\n\n /**\n * The reducer is called whenever a new action is emited,\n * @param action: the action from \"emit\"\n * @param state: the current state\n * @returns: the new state\n */\n abstract reducer(action: A, state: S): S;\n\n /**\n * Emit a new action, the reducer should digest the action and update the state accordingly\n * @param action: action t obe sent to the reducer\n */\n emit = (action: A): void => {\n const oldState = this.state;\n const newState = this.reducer(action, this.state);\n this._state = newState;\n this.observer.notify(newState, oldState);\n\n this.blac.report(BlacEvent.STATE_CHANGED, this, {\n newState,\n oldState,\n });\n };\n}\n","import {\n Blac,\n BlocBase,\n BlocConstructor,\n BlocInstanceId,\n BlocProps,\n CubitPropsType,\n ValueType,\n} from 'blac/src';\nimport { useEffect, useId, useMemo, useRef, useSyncExternalStore } from 'react';\nimport externalBlocStore from './externalBlocStore';\n\nexport type BlocHookData<B extends BlocBase<S>, S> = [\n value: ValueType<B>,\n instance: B,\n];\n\n// type BlocHookData<B extends BlocBase<S>, S> = [S, InstanceType<B>]; // B is the bloc class, S is the state of the bloc\n// type UseBlocClassResult<B, S> = BlocHookData<B, S>;\n\nexport interface BlocHookOptions<B extends BlocBase<S>, S> {\n id?: string;\n dependencySelector?: (state: ValueType<B>) => unknown;\n props?: CubitPropsType<B>;\n}\n\nexport type BlocHookDependencySelector<B extends BlocBase<S>, S> = (\n state: ValueType<B>,\n) => unknown;\n\nexport class UseBlocClass {\n // constructor, no options\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n options: BlocHookOptions<InstanceType<B>, S>,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n depsSelector: BlocHookDependencySelector<InstanceType<B>, S>,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n instanceId: string,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n options?:\n | BlocHookOptions<InstanceType<B>, S>\n | BlocHookDependencySelector<InstanceType<B>, S>\n | BlocInstanceId,\n ): BlocHookData<InstanceType<B>, S> {\n const rid = useId();\n // default options\n let dependencySelector: BlocHookDependencySelector<InstanceType<B>, S> = (\n state: ValueType<InstanceType<B>>,\n ) => state;\n let blocId: BlocInstanceId | undefined;\n let props: BlocProps = {};\n\n // parse options\n\n // if options is a function, its a dependencySelector\n if (typeof options === 'function') {\n dependencySelector = options;\n }\n\n // if options is a string its an ID\n if (typeof options === 'string') {\n blocId = options;\n }\n\n if (typeof options === 'object') {\n dependencySelector = options.dependencySelector ?? dependencySelector;\n blocId = options.id;\n props = options.props ?? props;\n }\n\n const base = bloc as unknown as BlocBase<S>;\n const isIsolated = base.isolated;\n if (isIsolated) {\n blocId = rid;\n }\n\n // const now = Date.now();\n // const createdAt = useRef(now);\n // const dateChanged = now !== createdAt;\n\n // resolve the bloc, get the existing instance of the bloc or create a new one\n // const resolvedBloc = useMemo(\n // () =>\n\n const resolvedBloc = Blac.getInstance().getBloc(bloc, {\n id: blocId,\n props,\n reconnect: false,\n }) as InstanceType<B>;\n // [renderId.current],\n // );\n\n if (!resolvedBloc) {\n throw new Error(`useBloc: could not resolve: ${bloc.name || bloc}`);\n }\n\n const { subscribe, getSnapshot, getServerSnapshot } = useMemo(\n () => externalBlocStore(resolvedBloc, dependencySelector),\n [resolvedBloc.createdAt],\n );\n\n const state = useSyncExternalStore<ValueType<InstanceType<B>>>(\n subscribe,\n getSnapshot,\n getServerSnapshot,\n );\n\n useEffect(() => {\n resolvedBloc.props = props;\n }, [props]);\n\n return [state, resolvedBloc];\n }\n}\n\nconst useBloc = UseBlocClass.useBloc;\n\nexport default useBloc;\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var react = require('react');
4
- var blac = require('blac');
5
4
 
6
5
  var externalBlocStore = function (bloc, dependencySelector) {
7
6
  var lastDependencyCheck = dependencySelector(bloc.state);
@@ -19,44 +18,475 @@ var externalBlocStore = function (bloc, dependencySelector) {
19
18
  };
20
19
  },
21
20
  getSnapshot: function () { return bloc.state; },
22
- getServerSnapshot: function () { return bloc.state; }
21
+ getServerSnapshot: function () { return bloc.state; },
23
22
  };
24
23
  };
25
24
 
26
- var useResolvedBloc = function (bloc, options) {
27
- if (options === void 0) { options = {}; }
28
- return react.useMemo(function () { return blac.Blac.getInstance().getBloc(bloc, {
29
- id: options.id,
30
- props: options.props
31
- }); }, [options.id]);
25
+ /******************************************************************************
26
+ Copyright (c) Microsoft Corporation.
27
+
28
+ Permission to use, copy, modify, and/or distribute this software for any
29
+ purpose with or without fee is hereby granted.
30
+
31
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
32
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
33
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
34
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
35
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
36
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
37
+ PERFORMANCE OF THIS SOFTWARE.
38
+ ***************************************************************************** */
39
+ /* global Reflect, Promise, SuppressedError, Symbol */
40
+
41
+ var extendStatics = function(d, b) {
42
+ extendStatics = Object.setPrototypeOf ||
43
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
44
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
45
+ return extendStatics(d, b);
46
+ };
47
+
48
+ function __extends(d, b) {
49
+ if (typeof b !== "function" && b !== null)
50
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
51
+ extendStatics(d, b);
52
+ function __() { this.constructor = d; }
53
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
54
+ }
55
+
56
+ var __assign = function() {
57
+ __assign = Object.assign || function __assign(t) {
58
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
59
+ s = arguments[i];
60
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
61
+ }
62
+ return t;
63
+ };
64
+ return __assign.apply(this, arguments);
65
+ };
66
+
67
+ function __awaiter(thisArg, _arguments, P, generator) {
68
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
69
+ return new (P || (P = Promise))(function (resolve, reject) {
70
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
71
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
72
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
73
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
74
+ });
75
+ }
76
+
77
+ function __generator(thisArg, body) {
78
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
79
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
80
+ function verb(n) { return function (v) { return step([n, v]); }; }
81
+ function step(op) {
82
+ if (f) throw new TypeError("Generator is already executing.");
83
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
84
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
85
+ if (y = 0, t) op = [op[0] & 2, t.value];
86
+ switch (op[0]) {
87
+ case 0: case 1: t = op; break;
88
+ case 4: _.label++; return { value: op[1], done: false };
89
+ case 5: _.label++; y = op[1]; op = [0]; continue;
90
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
91
+ default:
92
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
93
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
94
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
95
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
96
+ if (t[2]) _.ops.pop();
97
+ _.trys.pop(); continue;
98
+ }
99
+ op = body.call(thisArg, _);
100
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
101
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
102
+ }
103
+ }
104
+
105
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
106
+ var e = new Error(message);
107
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
32
108
  };
33
109
 
110
+ var BlacEvent;
111
+ (function (BlacEvent) {
112
+ BlacEvent["BLOC_DISPOSED"] = "BLOC_DISPOSED";
113
+ BlacEvent["LISTENER_REMOVED"] = "LISTENER_REMOVED";
114
+ BlacEvent["LISTENER_ADDED"] = "LISTENER_ADDED";
115
+ BlacEvent["STATE_CHANGED"] = "STATE_CHANGED";
116
+ BlacEvent["BLOC_CREATED"] = "BLOC_CREATED";
117
+ })(BlacEvent || (BlacEvent = {}));
118
+ var Blac = /** @class */ (function () {
119
+ function Blac() {
120
+ var _this = this;
121
+ this.blocInstanceMap = new Map();
122
+ this.isolatedBlocMap = new Map();
123
+ this.pluginList = [];
124
+ this.customPropsMap = new Map();
125
+ this.postChangesToDocument = false;
126
+ this.addPlugin = function (plugin) {
127
+ // check if already added
128
+ var index = _this.pluginList.findIndex(function (p) { return p.name === plugin.name; });
129
+ if (index !== -1)
130
+ return;
131
+ _this.pluginList.push(plugin);
132
+ };
133
+ this.reportToPlugins = function (event, bloc, params) {
134
+ _this.pluginList.forEach(function (plugin) {
135
+ plugin.onEvent(event, bloc, params);
136
+ });
137
+ };
138
+ this.report = function (event, bloc, params) {
139
+ var base = bloc.constructor;
140
+ switch (event) {
141
+ case BlacEvent.BLOC_DISPOSED:
142
+ _this.disposeBloc(bloc);
143
+ break;
144
+ case BlacEvent.LISTENER_REMOVED:
145
+ if (bloc.observer.size === 0 && !base.keepAlive)
146
+ _this.disposeBloc(bloc);
147
+ break;
148
+ }
149
+ _this.reportToPlugins(event, bloc, params);
150
+ };
151
+ this.disposeBloc = function (bloc) {
152
+ var base = bloc.constructor;
153
+ if (!base.isolated) {
154
+ _this.unregisterBlocInstance(bloc);
155
+ }
156
+ else {
157
+ _this.unregisterIsolatedBlocInstance(bloc);
158
+ }
159
+ };
160
+ this.getAllBlocs = function (blocClass, options) {
161
+ if (options === void 0) { options = {}; }
162
+ return __awaiter(_this, void 0, void 0, function () {
163
+ var base, searchIsolated, blocs, blocs;
164
+ var _a;
165
+ return __generator(this, function (_b) {
166
+ base = blocClass;
167
+ searchIsolated = (_a = options.searchIsolated, _a === void 0 ? base.isolated : _a);
168
+ if (searchIsolated) {
169
+ blocs = this.isolatedBlocMap.get(blocClass);
170
+ if (blocs)
171
+ return [2 /*return*/, blocs];
172
+ }
173
+ else {
174
+ blocs = Array.from(this.blocInstanceMap.values());
175
+ return [2 /*return*/, blocs.filter(function (b) { return b instanceof blocClass; })];
176
+ }
177
+ return [2 /*return*/, []];
178
+ });
179
+ });
180
+ };
181
+ this.configure = function (config) {
182
+ if (config.exposeBlacInstance) ;
183
+ };
184
+ if (Blac.instance) {
185
+ return Blac.instance;
186
+ }
187
+ Blac.instance = this;
188
+ console.log('Blac Init');
189
+ }
190
+ Blac.getInstance = function () {
191
+ return Blac.instance;
192
+ };
193
+ Blac.prototype.createBlocInstanceMapKey = function (blocClassName, id) {
194
+ return "".concat(blocClassName, ":").concat(id);
195
+ };
196
+ Blac.prototype.unregisterBlocInstance = function (bloc) {
197
+ var key = this.createBlocInstanceMapKey(bloc.name, bloc.id);
198
+ this.blocInstanceMap.delete(key);
199
+ };
200
+ Blac.prototype.registerBlocInstance = function (bloc) {
201
+ var key = this.createBlocInstanceMapKey(bloc.name, bloc.id);
202
+ this.blocInstanceMap.set(key, bloc);
203
+ };
204
+ Blac.prototype.findRegisteredBlocInstance = function (blocClass, id) {
205
+ var base = blocClass;
206
+ if (base.isolated)
207
+ return undefined;
208
+ var key = this.createBlocInstanceMapKey(blocClass.name, id);
209
+ return this.blocInstanceMap.get(key);
210
+ };
211
+ Blac.prototype.registerIsolatedBlocInstance = function (bloc) {
212
+ var blocClass = bloc.constructor;
213
+ var blocs = this.isolatedBlocMap.get(blocClass);
214
+ if (blocs) {
215
+ blocs.push(bloc);
216
+ }
217
+ else {
218
+ this.isolatedBlocMap.set(blocClass, [bloc]);
219
+ }
220
+ };
221
+ Blac.prototype.findIsolatedBlocInstance = function (blocClass, id) {
222
+ var blocs = this.isolatedBlocMap.get(blocClass);
223
+ if (blocs) {
224
+ return blocs.find(function (b) { return b.id === id; });
225
+ }
226
+ return undefined;
227
+ };
228
+ Blac.prototype.unregisterIsolatedBlocInstance = function (bloc) {
229
+ var blocClass = bloc.constructor;
230
+ var blocs = this.isolatedBlocMap.get(blocClass);
231
+ if (blocs) {
232
+ var index = blocs.findIndex(function (b) { return b.id === bloc.id; });
233
+ blocs.splice(index, 1);
234
+ }
235
+ };
236
+ Blac.prototype.setCustomProps = function (blocClass, props) {
237
+ if (!props)
238
+ return;
239
+ this.customPropsMap.set(blocClass, props);
240
+ };
241
+ Blac.prototype.getCustomProps = function (blocClass) {
242
+ var props = this.customPropsMap.get(blocClass);
243
+ this.customPropsMap.delete(blocClass);
244
+ return props;
245
+ };
246
+ Blac.prototype.createNewBlocInstance = function (blocClass, id, props) {
247
+ var base = blocClass;
248
+ var hasCreateMethod = Object.prototype.hasOwnProperty.call(blocClass, 'create');
249
+ this.setCustomProps(base, props);
250
+ var newBloc = hasCreateMethod ? base.create() : new blocClass();
251
+ newBloc.updateId(id);
252
+ if (base.isolated) {
253
+ this.registerIsolatedBlocInstance(newBloc);
254
+ return newBloc;
255
+ }
256
+ this.registerBlocInstance(newBloc);
257
+ return newBloc;
258
+ };
259
+ Blac.prototype.getBloc = function (blocClass, options) {
260
+ if (options === void 0) { options = {}; }
261
+ var base = blocClass;
262
+ var isIsolated = base.isolated;
263
+ var id = options.id || blocClass.name;
264
+ var registered = isIsolated
265
+ ? this.findIsolatedBlocInstance(blocClass, id)
266
+ : this.findRegisteredBlocInstance(blocClass, id);
267
+ var reconnect = options.reconnect;
268
+ if (registered) {
269
+ if (reconnect) {
270
+ registered.dispose();
271
+ }
272
+ else {
273
+ return registered;
274
+ }
275
+ }
276
+ return this.createNewBlocInstance(blocClass, id, options.props);
277
+ };
278
+ Blac.instance = new Blac();
279
+ Blac.getAllBlocs = Blac.instance.getAllBlocs;
280
+ Blac.addPlugin = Blac.instance.addPlugin;
281
+ Blac.configure = Blac.instance.configure;
282
+ return Blac;
283
+ }());
284
+
285
+ var BlacObservable = /** @class */ (function () {
286
+ function BlacObservable() {
287
+ this._observers = new Set();
288
+ }
289
+ Object.defineProperty(BlacObservable.prototype, "size", {
290
+ get: function () {
291
+ return this._observers.size;
292
+ },
293
+ enumerable: false,
294
+ configurable: true
295
+ });
296
+ BlacObservable.prototype.subscribe = function (observer) {
297
+ var _this = this;
298
+ this._observers.add(observer);
299
+ return function () { return _this.unsubscribe(observer); };
300
+ };
301
+ BlacObservable.prototype.unsubscribe = function (observer) {
302
+ this._observers.delete(observer);
303
+ };
304
+ BlacObservable.prototype.notify = function (newState, oldState) {
305
+ this._observers.forEach(function (observer) { return observer(newState, oldState); });
306
+ };
307
+ BlacObservable.prototype.dispose = function () {
308
+ this._observers.clear();
309
+ };
310
+ return BlacObservable;
311
+ }());
312
+
313
+ var BlocBase = /** @class */ (function () {
314
+ // onConnect(): void;
315
+ // onDisconnect(): void;
316
+ function BlocBase(initialState) {
317
+ var _this = this;
318
+ this.isolated = false;
319
+ this.isBlacLive = true;
320
+ this.blac = Blac.getInstance();
321
+ this.props = {};
322
+ this.createdAt = Date.now();
323
+ this.updateId = function (id) {
324
+ var originalId = _this.id;
325
+ if (!id || id === originalId)
326
+ return;
327
+ _this.id = id;
328
+ };
329
+ this.addEventListenerStateChange = function (callback) {
330
+ _this.blac.report(BlacEvent.LISTENER_ADDED, _this);
331
+ _this.observer.subscribe(callback);
332
+ return function () { return _this.handleUnsubscribe(callback); };
333
+ };
334
+ this.handleUnsubscribe = function (callback) {
335
+ _this.observer.unsubscribe(callback);
336
+ _this.blac.report(BlacEvent.LISTENER_REMOVED, _this);
337
+ };
338
+ this.observer = new BlacObservable();
339
+ this._state = initialState;
340
+ this.blac.report(BlacEvent.BLOC_CREATED, this);
341
+ this.id = this.constructor.name;
342
+ this.isolated = this.constructor.isolated;
343
+ // this.onConnect?.();
344
+ }
345
+ Object.defineProperty(BlocBase.prototype, "state", {
346
+ get: function () {
347
+ return this._state;
348
+ },
349
+ enumerable: false,
350
+ configurable: true
351
+ });
352
+ Object.defineProperty(BlocBase.prototype, "name", {
353
+ get: function () {
354
+ return this.constructor.name;
355
+ },
356
+ enumerable: false,
357
+ configurable: true
358
+ });
359
+ BlocBase.prototype.dispose = function () {
360
+ this.blac.report(BlacEvent.BLOC_DISPOSED, this);
361
+ this.isBlacLive = false;
362
+ this.observer.dispose();
363
+ // this.onDisconnect?.();
364
+ };
365
+ BlocBase.isolated = false;
366
+ BlocBase.keepAlive = false;
367
+ BlocBase.isBlacClass = true;
368
+ return BlocBase;
369
+ }());
370
+
371
+ /** @class */ ((function (_super) {
372
+ __extends(Cubit, _super);
373
+ function Cubit(initialState) {
374
+ var _this = _super.call(this, initialState) || this;
375
+ _this.props = {};
376
+ var newProps = Blac.getInstance().getCustomProps(_this.constructor);
377
+ _this.props = __assign(__assign({}, _this.props), newProps);
378
+ return _this;
379
+ }
380
+ /**
381
+ * Update the state then will notify all observers
382
+ * @param state: new state
383
+ **/
384
+ Cubit.prototype.emit = function (state) {
385
+ if (state === this.state) {
386
+ return;
387
+ }
388
+ var oldState = this.state;
389
+ var newState = state;
390
+ this._state = state;
391
+ this.observer.notify(newState, oldState);
392
+ this.blac.report(BlacEvent.STATE_CHANGED, this, {
393
+ newState: newState,
394
+ oldState: oldState,
395
+ });
396
+ };
397
+ /**
398
+ * Merges current state object with the parameter "state" and emits the new state
399
+ * Warning: only works when the state is an object.
400
+ * @param state: Partial state that should change
401
+ **/
402
+ Cubit.prototype.patch = function (statePatch, ignoreChangeCheck) {
403
+ if (ignoreChangeCheck === void 0) { ignoreChangeCheck = false; }
404
+ var changes = false;
405
+ if (!ignoreChangeCheck) {
406
+ for (var key in statePatch) {
407
+ var current = this.state[key];
408
+ if (statePatch[key] !== current) {
409
+ changes = true;
410
+ break;
411
+ }
412
+ }
413
+ }
414
+ if (changes) {
415
+ this.emit(__assign(__assign({}, this.state), statePatch));
416
+ }
417
+ };
418
+ return Cubit;
419
+ })(BlocBase));
420
+
421
+ /** @class */ ((function (_super) {
422
+ __extends(Bloc, _super);
423
+ function Bloc() {
424
+ var _this = _super !== null && _super.apply(this, arguments) || this;
425
+ /**
426
+ * Emit a new action, the reducer should digest the action and update the state accordingly
427
+ * @param action: action t obe sent to the reducer
428
+ */
429
+ _this.emit = function (action) {
430
+ var oldState = _this.state;
431
+ var newState = _this.reducer(action, _this.state);
432
+ _this._state = newState;
433
+ _this.observer.notify(newState, oldState);
434
+ _this.blac.report(BlacEvent.STATE_CHANGED, _this, {
435
+ newState: newState,
436
+ oldState: oldState,
437
+ });
438
+ };
439
+ return _this;
440
+ }
441
+ return Bloc;
442
+ })(BlocBase));
443
+
34
444
  var UseBlocClass = /** @class */ (function () {
35
445
  function UseBlocClass() {
36
446
  }
37
447
  UseBlocClass.useBloc = function (bloc, options) {
38
448
  var _a, _b;
449
+ var rid = react.useId();
39
450
  // default options
40
451
  var dependencySelector = function (state) { return state; };
41
452
  var blocId;
42
453
  var props = {};
43
454
  // parse options
44
- if (typeof options === "function") {
455
+ // if options is a function, its a dependencySelector
456
+ if (typeof options === 'function') {
45
457
  dependencySelector = options;
46
458
  }
47
- if (typeof options === "string") {
459
+ // if options is a string its an ID
460
+ if (typeof options === 'string') {
48
461
  blocId = options;
49
462
  }
50
- if (typeof options === "object") {
463
+ if (typeof options === 'object') {
51
464
  dependencySelector = (_a = options.dependencySelector) !== null && _a !== void 0 ? _a : dependencySelector;
52
465
  blocId = options.id;
53
466
  props = (_b = options.props) !== null && _b !== void 0 ? _b : props;
54
467
  }
55
- var resolvedBloc = useResolvedBloc(bloc, { id: blocId, props: props });
468
+ var base = bloc;
469
+ var isIsolated = base.isolated;
470
+ if (isIsolated) {
471
+ blocId = rid;
472
+ }
473
+ // const now = Date.now();
474
+ // const createdAt = useRef(now);
475
+ // const dateChanged = now !== createdAt;
476
+ // resolve the bloc, get the existing instance of the bloc or create a new one
477
+ // const resolvedBloc = useMemo(
478
+ // () =>
479
+ var resolvedBloc = Blac.getInstance().getBloc(bloc, {
480
+ id: blocId,
481
+ props: props,
482
+ reconnect: false,
483
+ });
484
+ // [renderId.current],
485
+ // );
56
486
  if (!resolvedBloc) {
57
487
  throw new Error("useBloc: could not resolve: ".concat(bloc.name || bloc));
58
488
  }
59
- var _c = react.useMemo(function () { return externalBlocStore(resolvedBloc, dependencySelector); }, [resolvedBloc]), subscribe = _c.subscribe, getSnapshot = _c.getSnapshot, getServerSnapshot = _c.getServerSnapshot;
489
+ var _c = react.useMemo(function () { return externalBlocStore(resolvedBloc, dependencySelector); }, [resolvedBloc.createdAt]), subscribe = _c.subscribe, getSnapshot = _c.getSnapshot, getServerSnapshot = _c.getServerSnapshot;
60
490
  var state = react.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
61
491
  react.useEffect(function () {
62
492
  resolvedBloc.props = props;
@@ -1 +1 @@
1
- {"version":3,"file":"blac-react.js","sources":["../src/externalBlocStore.ts","../src/useResolvedBloc.ts","../src/useBloc.tsx"],"sourcesContent":["import { BlocBase, ValueType } from \"blac\";\n\nexport interface ExternalStore<B extends BlocBase<any>> {\n subscribe: (onStoreChange: () => void) => () => void;\n getSnapshot: () => ValueType<B>;\n getServerSnapshot?: () => ValueType<B>;\n}\n\nconst externalBlocStore = <B extends BlocBase<any>>(\n bloc: B,\n dependencySelector: (state: ValueType<B>) => unknown\n): ExternalStore<B> => {\n let lastDependencyCheck = dependencySelector(bloc.state);\n return {\n subscribe: (listener: () => void) => {\n const unSub = bloc.addEventListenerStateChange(data => {\n const newDependencyCheck = dependencySelector(data);\n if (newDependencyCheck !== lastDependencyCheck) {\n lastDependencyCheck = newDependencyCheck;\n listener();\n }\n });\n return () => {\n unSub();\n };\n },\n getSnapshot: (): ValueType<B> => bloc.state,\n getServerSnapshot: (): ValueType<B> => bloc.state\n };\n};\n\nexport default externalBlocStore;\n","import { Blac, BlocBase, BlocConstructor, BlocInstanceId, BlocProps } from \"blac\";\nimport { useMemo } from \"react\";\n\nconst useResolvedBloc = <B extends BlocBase<S>, S>(\n bloc: BlocConstructor<B>,\n options: { id?: BlocInstanceId; props?: BlocProps } = {}\n): B => useMemo(() => Blac.getInstance().getBloc(bloc, {\n id: options.id,\n props: options.props\n}), [options.id]);\n\nexport default useResolvedBloc;\n","import { BlocBase, BlocConstructor, BlocInstanceId, BlocProps, CubitPropsType, ValueType } from \"blac\";\nimport { useEffect, useMemo, useSyncExternalStore } from \"react\";\nimport externalBlocStore, { ExternalStore } from \"./externalBlocStore\";\nimport useResolvedBloc from \"./useResolvedBloc\";\n\nexport type BlocHookData<B extends BlocBase<S>, S> = [\n value: ValueType<B>,\n instance: B,\n];\n\n\nexport interface BlocHookOptions<B extends BlocBase<S>, S> {\n id?: string;\n dependencySelector?: (state: ValueType<B>) => unknown;\n props?: CubitPropsType<B>;\n}\n\nexport type BlocHookDependencySelector<B extends BlocBase<S>, S> = (state: ValueType<B>) => unknown;\n\nclass UseBlocClass {\n static useBloc<B extends BlocBase<S>, S>(\n bloc: BlocConstructor<B>\n ): BlocHookData<B, S>;\n static useBloc<B extends BlocBase<S>, S>(\n bloc: BlocConstructor<B>,\n options: BlocHookOptions<B, S>\n ): BlocHookData<B, S>;\n static useBloc<B extends BlocBase<S>, S>(\n bloc: BlocConstructor<B>,\n depsSelector: BlocHookDependencySelector<B, S>\n ): BlocHookData<B, S>;\n static useBloc<B extends BlocBase<S>, S>(\n bloc: BlocConstructor<B>,\n instanceId: BlocInstanceId\n ): BlocHookData<B, S>;\n static useBloc<B extends BlocBase<S>, S>(\n bloc: BlocConstructor<B>,\n options?: BlocHookOptions<B, S> | BlocHookDependencySelector<B, S> | BlocInstanceId\n ): BlocHookData<B, S> {\n // default options\n let dependencySelector: BlocHookDependencySelector<B, S> = (state: ValueType<B>) => state;\n let blocId: BlocInstanceId | undefined;\n let props: BlocProps = {};\n\n // parse options\n if (typeof options === \"function\") {\n dependencySelector = options;\n }\n\n if (typeof options === \"string\") {\n blocId = options;\n }\n\n if (typeof options === \"object\") {\n dependencySelector = options.dependencySelector ?? dependencySelector;\n blocId = options.id;\n props = options.props ?? props;\n }\n\n\n const resolvedBloc = useResolvedBloc<B, S>(bloc, { id: blocId, props });\n\n if (!resolvedBloc) {\n throw new Error(`useBloc: could not resolve: ${bloc.name || bloc}`);\n }\n\n const { subscribe, getSnapshot, getServerSnapshot } = useMemo<ExternalStore<B>>(\n () => externalBlocStore(resolvedBloc, dependencySelector),\n [resolvedBloc]\n );\n\n const state = useSyncExternalStore<ValueType<B>>(subscribe, getSnapshot, getServerSnapshot);\n\n useEffect(() => {\n resolvedBloc.props = props;\n }, [props]);\n\n return [state, resolvedBloc];\n }\n}\n\nconst useBloc = UseBlocClass.useBloc;\n\nexport default useBloc;\n"],"names":["useMemo","Blac","useSyncExternalStore","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"blac-react.js","sources":["../src/externalBlocStore.ts","../../blac/src/Blac.ts","../../blac/src/BlacObserver.ts","../../blac/src/BlocBase.ts","../../blac/src/Cubit.ts","../../blac/src/Bloc.ts","../src/useBloc.tsx"],"sourcesContent":["import { BlocBase } from 'blac/src';\n\nexport interface ExternalStore<B extends BlocBase<S>, S> {\n subscribe: (onStoreChange: () => void) => () => void;\n getSnapshot: () => S;\n getServerSnapshot?: () => S;\n}\n\nconst externalBlocStore = <B extends BlocBase<S>, S>(\n bloc: B,\n dependencySelector: (state: S) => unknown,\n): ExternalStore<B, S> => {\n let lastDependencyCheck = dependencySelector(bloc.state);\n\n return {\n subscribe: (listener: () => void) => {\n const unSub = bloc.addEventListenerStateChange((data) => {\n const newDependencyCheck = dependencySelector(data);\n if (newDependencyCheck !== lastDependencyCheck) {\n lastDependencyCheck = newDependencyCheck;\n listener();\n }\n });\n return () => {\n unSub();\n };\n },\n getSnapshot: (): S => bloc.state,\n getServerSnapshot: (): S => bloc.state,\n };\n};\n\nexport default externalBlocStore;\n","import { BlocBase, BlocInstanceId } from './BlocBase';\nimport { BlocBaseAbstract, BlocConstructor } from './types';\nimport { BlocProps } from './Cubit';\nimport { BlacPlugin } from './BlacPlugin';\n\nexport interface BlacConfig {\n exposeBlacInstance?: boolean;\n}\n\nexport enum BlacEvent {\n BLOC_DISPOSED = 'BLOC_DISPOSED',\n LISTENER_REMOVED = 'LISTENER_REMOVED',\n LISTENER_ADDED = 'LISTENER_ADDED',\n STATE_CHANGED = 'STATE_CHANGED',\n BLOC_CREATED = 'BLOC_CREATED',\n}\n\nexport interface EventParams {\n [BlacEvent.BLOC_DISPOSED]: undefined;\n [BlacEvent.LISTENER_REMOVED]: undefined;\n [BlacEvent.LISTENER_ADDED]: undefined;\n [BlacEvent.BLOC_CREATED]: undefined;\n [BlacEvent.STATE_CHANGED]: {\n newState: any;\n oldState: any;\n };\n}\n\nexport class Blac {\n static instance: Blac = new Blac();\n static getAllBlocs = Blac.instance.getAllBlocs;\n static addPlugin = Blac.instance.addPlugin;\n static configure = Blac.instance.configure;\n blocInstanceMap: Map<string, BlocBase<any>> = new Map();\n isolatedBlocMap: Map<Function, BlocBase<any>[]> = new Map();\n pluginList: BlacPlugin[] = [];\n customPropsMap: Map<Function, BlocProps> = new Map();\n postChangesToDocument = false;\n\n constructor() {\n if (Blac.instance) {\n return Blac.instance;\n }\n\n Blac.instance = this;\n console.log('Blac Init');\n }\n\n static getInstance(): Blac {\n return Blac.instance;\n }\n\n addPlugin = (plugin: BlacPlugin): void => {\n // check if already added\n const index = this.pluginList.findIndex((p) => p.name === plugin.name);\n if (index !== -1) return;\n this.pluginList.push(plugin);\n };\n\n reportToPlugins = <B extends BlacEvent>(\n event: B,\n bloc: BlocBase<any>,\n params?: EventParams[B],\n ) => {\n this.pluginList.forEach((plugin) => {\n plugin.onEvent(event, bloc, params);\n });\n };\n\n report = <B extends BlacEvent>(\n event: B,\n bloc: BlocBase<any>,\n params?: EventParams[B],\n ) => {\n const base = bloc.constructor as unknown as BlocBaseAbstract;\n\n switch (event) {\n case BlacEvent.BLOC_DISPOSED:\n this.disposeBloc(bloc);\n break;\n case BlacEvent.LISTENER_REMOVED:\n if (bloc.observer.size === 0 && !base.keepAlive) this.disposeBloc(bloc);\n break;\n }\n\n this.reportToPlugins(event, bloc, params);\n };\n\n disposeBloc = (bloc: BlocBase<any>): void => {\n const base = bloc.constructor as unknown as BlocBaseAbstract;\n if (!base.isolated) {\n this.unregisterBlocInstance(bloc);\n } else {\n this.unregisterIsolatedBlocInstance(bloc);\n }\n };\n\n createBlocInstanceMapKey(blocClassName: string, id: BlocInstanceId): string {\n return `${blocClassName}:${id}`;\n }\n\n unregisterBlocInstance(bloc: BlocBase<any>): void {\n const key = this.createBlocInstanceMapKey(bloc.name, bloc.id);\n this.blocInstanceMap.delete(key);\n }\n\n registerBlocInstance(bloc: BlocBase<any>): void {\n const key = this.createBlocInstanceMapKey(bloc.name, bloc.id);\n this.blocInstanceMap.set(key, bloc);\n }\n\n findRegisteredBlocInstance<B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n id: BlocInstanceId,\n ): InstanceType<BlocConstructor<B>> | undefined {\n const base = blocClass as unknown as BlocBaseAbstract;\n if (base.isolated) return undefined;\n\n const key = this.createBlocInstanceMapKey(blocClass.name, id);\n return this.blocInstanceMap.get(key) as InstanceType<BlocConstructor<B>>;\n }\n\n registerIsolatedBlocInstance(bloc: BlocBase<any>): void {\n const blocClass = bloc.constructor;\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) {\n blocs.push(bloc);\n } else {\n this.isolatedBlocMap.set(blocClass, [bloc]);\n }\n }\n\n findIsolatedBlocInstance<B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n id: BlocInstanceId,\n ): InstanceType<BlocConstructor<B>> | undefined {\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) {\n return blocs.find((b) => b.id === id) as InstanceType<BlocConstructor<B>>;\n }\n return undefined;\n }\n\n unregisterIsolatedBlocInstance(bloc: BlocBase<any>): void {\n const blocClass = bloc.constructor;\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) {\n const index = blocs.findIndex((b) => b.id === bloc.id);\n blocs.splice(index, 1);\n }\n }\n\n setCustomProps(\n blocClass: BlocBaseAbstract,\n props: BlocProps | undefined,\n ): void {\n if (!props) return;\n this.customPropsMap.set(blocClass, props);\n }\n\n getCustomProps(blocClass: BlocBaseAbstract): BlocProps | undefined {\n const props = this.customPropsMap.get(blocClass);\n this.customPropsMap.delete(blocClass);\n return props;\n }\n\n createNewBlocInstance<B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n id: BlocInstanceId,\n props: BlocProps | undefined,\n ): InstanceType<BlocConstructor<B>> {\n const base = blocClass as unknown as BlocBaseAbstract;\n const hasCreateMethod = Object.prototype.hasOwnProperty.call(\n blocClass,\n 'create',\n );\n\n this.setCustomProps(base, props);\n const newBloc = hasCreateMethod ? base.create() : new blocClass();\n newBloc.updateId(id);\n\n if (base.isolated) {\n this.registerIsolatedBlocInstance(newBloc);\n return newBloc as InstanceType<BlocConstructor<B>>;\n }\n\n this.registerBlocInstance(newBloc);\n return newBloc as InstanceType<BlocConstructor<B>>;\n }\n\n getBloc<B extends BlocBase<S>, S>(\n blocClass: BlocConstructor<B>,\n options: {\n id?: BlocInstanceId;\n props?: BlocProps;\n reconnect?: boolean;\n } = {},\n ): InstanceType<BlocConstructor<B>> {\n const base = blocClass as unknown as BlocBaseAbstract;\n const isIsolated = base.isolated;\n const id = options.id || blocClass.name;\n const registered = isIsolated\n ? this.findIsolatedBlocInstance(blocClass, id)\n : this.findRegisteredBlocInstance(blocClass, id);\n const { reconnect } = options;\n if (registered) {\n if (reconnect) {\n registered.dispose();\n } else {\n return registered;\n }\n }\n return this.createNewBlocInstance(blocClass, id, options.props);\n }\n\n getAllBlocs = async <B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n options: {\n searchIsolated?: boolean;\n } = {},\n ): Promise<B[]> => {\n const base = blocClass as unknown as BlocBaseAbstract;\n\n const { searchIsolated = base.isolated } = options;\n\n if (searchIsolated) {\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) return blocs as B[];\n } else {\n const blocs = Array.from(this.blocInstanceMap.values());\n return blocs.filter((b) => b instanceof blocClass) as B[];\n }\n return [];\n };\n\n configure = (config: BlacConfig) => {\n if (config.exposeBlacInstance) {\n // window.__blac = this;\n }\n };\n}\n\ndeclare global {\n interface Window {\n // __blac?: Blac;\n }\n}\n","export type BlacObserver<S> = (\n newState: S,\n oldState: S\n) => void | Promise<void>;\n\nexport class BlacObservable<S> {\n private _observers = new Set<BlacObserver<S>>();\n\n get size(): number {\n return this._observers.size;\n }\n\n subscribe(observer: BlacObserver<S>): () => void {\n this._observers.add(observer);\n return () => this.unsubscribe(observer);\n }\n\n unsubscribe(observer: BlacObserver<S>) {\n this._observers.delete(observer);\n }\n\n notify(newState: S, oldState: S) {\n this._observers.forEach((observer) => observer(newState, oldState));\n }\n\n dispose() {\n this._observers.clear();\n }\n}\n","import { Blac, BlacEvent } from './Blac';\nimport { BlacObservable } from './BlacObserver';\nimport { BlocProps } from './Cubit';\n\nexport type BlocInstanceId = string | number | undefined;\n\nexport abstract class BlocBase<S, P extends BlocProps = {}> {\n static isolated = false;\n static keepAlive = false;\n static create: <S extends any>() => BlocBase<S>;\n static isBlacClass = true;\n public isolated = false;\n public isBlacLive = true;\n public observer: BlacObservable<any>;\n public blac = Blac.getInstance();\n public id: BlocInstanceId;\n public props: P = {} as P;\n public readonly createdAt = Date.now();\n\n // onConnect(): void;\n // onDisconnect(): void;\n\n constructor(initialState: S) {\n this.observer = new BlacObservable();\n this._state = initialState;\n this.blac.report(BlacEvent.BLOC_CREATED, this);\n this.id = this.constructor.name;\n this.isolated = (this.constructor as any).isolated;\n // this.onConnect?.();\n }\n\n public _state: S;\n\n get state(): S {\n return this._state;\n }\n\n get name() {\n return this.constructor.name;\n }\n\n updateId = (id?: BlocInstanceId) => {\n const originalId = this.id;\n if (!id || id === originalId) return;\n this.id = id;\n };\n\n addEventListenerStateChange = (\n callback: (newState: S, oldState: S) => void,\n ): (() => void) => {\n this.blac.report(BlacEvent.LISTENER_ADDED, this);\n this.observer.subscribe(callback);\n return () => this.handleUnsubscribe(callback);\n };\n\n dispose() {\n this.blac.report(BlacEvent.BLOC_DISPOSED, this);\n this.isBlacLive = false;\n this.observer.dispose();\n // this.onDisconnect?.();\n }\n\n private handleUnsubscribe = (\n callback: (newState: S, oldState: S) => void,\n ): void => {\n this.observer.unsubscribe(callback);\n this.blac.report(BlacEvent.LISTENER_REMOVED, this);\n };\n}\n","import { BlocBase } from './BlocBase';\nimport { Blac, BlacEvent } from './Blac';\n\nexport type BlocProps = Record<string | number, any>;\n\nexport abstract class Cubit<S, P extends BlocProps = {}> extends BlocBase<S> {\n static create: () => Cubit<any, any>;\n props: P = {} as P;\n\n constructor(initialState: S) {\n super(initialState);\n const newProps = Blac.getInstance().getCustomProps(this.constructor as any);\n this.props = { ...this.props, ...newProps };\n }\n\n /**\n * Update the state then will notify all observers\n * @param state: new state\n **/\n emit(state: S): void {\n if (state === this.state) {\n return;\n }\n\n const oldState = this.state;\n const newState = state;\n this._state = state;\n this.observer.notify(newState, oldState);\n\n this.blac.report(BlacEvent.STATE_CHANGED, this, {\n newState,\n oldState,\n });\n }\n\n /**\n * Merges current state object with the parameter \"state\" and emits the new state\n * Warning: only works when the state is an object.\n * @param state: Partial state that should change\n **/\n patch(\n statePatch: S extends object ? Partial<S> : S,\n ignoreChangeCheck = false,\n ): void {\n let changes = false;\n if (!ignoreChangeCheck) {\n for (const key in statePatch) {\n const current = (this.state as any)[key];\n if (statePatch[key] !== current) {\n changes = true;\n break;\n }\n }\n }\n\n if (changes) {\n this.emit({ ...this.state, ...statePatch });\n }\n }\n}\n","import { BlocBase } from './BlocBase';\nimport { BlacEvent } from './Blac';\n\nexport abstract class Bloc<S, A> extends BlocBase<S> {\n static create: () => BlocBase<any>;\n\n /**\n * The reducer is called whenever a new action is emited,\n * @param action: the action from \"emit\"\n * @param state: the current state\n * @returns: the new state\n */\n abstract reducer(action: A, state: S): S;\n\n /**\n * Emit a new action, the reducer should digest the action and update the state accordingly\n * @param action: action t obe sent to the reducer\n */\n emit = (action: A): void => {\n const oldState = this.state;\n const newState = this.reducer(action, this.state);\n this._state = newState;\n this.observer.notify(newState, oldState);\n\n this.blac.report(BlacEvent.STATE_CHANGED, this, {\n newState,\n oldState,\n });\n };\n}\n","import {\n Blac,\n BlocBase,\n BlocConstructor,\n BlocInstanceId,\n BlocProps,\n CubitPropsType,\n ValueType,\n} from 'blac/src';\nimport { useEffect, useId, useMemo, useRef, useSyncExternalStore } from 'react';\nimport externalBlocStore from './externalBlocStore';\n\nexport type BlocHookData<B extends BlocBase<S>, S> = [\n value: ValueType<B>,\n instance: B,\n];\n\n// type BlocHookData<B extends BlocBase<S>, S> = [S, InstanceType<B>]; // B is the bloc class, S is the state of the bloc\n// type UseBlocClassResult<B, S> = BlocHookData<B, S>;\n\nexport interface BlocHookOptions<B extends BlocBase<S>, S> {\n id?: string;\n dependencySelector?: (state: ValueType<B>) => unknown;\n props?: CubitPropsType<B>;\n}\n\nexport type BlocHookDependencySelector<B extends BlocBase<S>, S> = (\n state: ValueType<B>,\n) => unknown;\n\nexport class UseBlocClass {\n // constructor, no options\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n options: BlocHookOptions<InstanceType<B>, S>,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n depsSelector: BlocHookDependencySelector<InstanceType<B>, S>,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n instanceId: string,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n options?:\n | BlocHookOptions<InstanceType<B>, S>\n | BlocHookDependencySelector<InstanceType<B>, S>\n | BlocInstanceId,\n ): BlocHookData<InstanceType<B>, S> {\n const rid = useId();\n // default options\n let dependencySelector: BlocHookDependencySelector<InstanceType<B>, S> = (\n state: ValueType<InstanceType<B>>,\n ) => state;\n let blocId: BlocInstanceId | undefined;\n let props: BlocProps = {};\n\n // parse options\n\n // if options is a function, its a dependencySelector\n if (typeof options === 'function') {\n dependencySelector = options;\n }\n\n // if options is a string its an ID\n if (typeof options === 'string') {\n blocId = options;\n }\n\n if (typeof options === 'object') {\n dependencySelector = options.dependencySelector ?? dependencySelector;\n blocId = options.id;\n props = options.props ?? props;\n }\n\n const base = bloc as unknown as BlocBase<S>;\n const isIsolated = base.isolated;\n if (isIsolated) {\n blocId = rid;\n }\n\n // const now = Date.now();\n // const createdAt = useRef(now);\n // const dateChanged = now !== createdAt;\n\n // resolve the bloc, get the existing instance of the bloc or create a new one\n // const resolvedBloc = useMemo(\n // () =>\n\n const resolvedBloc = Blac.getInstance().getBloc(bloc, {\n id: blocId,\n props,\n reconnect: false,\n }) as InstanceType<B>;\n // [renderId.current],\n // );\n\n if (!resolvedBloc) {\n throw new Error(`useBloc: could not resolve: ${bloc.name || bloc}`);\n }\n\n const { subscribe, getSnapshot, getServerSnapshot } = useMemo(\n () => externalBlocStore(resolvedBloc, dependencySelector),\n [resolvedBloc.createdAt],\n );\n\n const state = useSyncExternalStore<ValueType<InstanceType<B>>>(\n subscribe,\n getSnapshot,\n getServerSnapshot,\n );\n\n useEffect(() => {\n resolvedBloc.props = props;\n }, [props]);\n\n return [state, resolvedBloc];\n }\n}\n\nconst useBloc = UseBlocClass.useBloc;\n\nexport default useBloc;\n"],"names":["useId","useMemo","useSyncExternalStore","useEffect"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blac/react",
3
- "version": "0.0.18",
3
+ "version": "0.0.20",
4
4
  "license": "MIT",
5
5
  "main": "dist/blac-react.js",
6
6
  "module": "dist/blac-react.esm.js",
@@ -1,3 +0,0 @@
1
- import { defineConfig } from 'vitest/config';
2
- export default defineConfig({});
3
- //# sourceMappingURL=vitest.config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,eAAe,YAAY,CAAC,EAE3B,CAAC,CAAA"}