@blac/react 0.0.21 → 0.0.23
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.cjs.js +2 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.es.js +49 -0
- package/dist/index.es.js.map +1 -0
- package/dist/vite.config.d.ts +2 -0
- package/dist/vitest.config.d.ts +2 -0
- package/package.json +7 -8
- package/vite.config.ts +30 -0
- package/dist/blac-react.d.ts +0 -28
- package/dist/blac-react.esm.js +0 -493
- package/dist/blac-react.esm.js.map +0 -1
- package/dist/blac-react.js +0 -496
- package/dist/blac-react.js.map +0 -1
package/dist/blac-react.js
DELETED
|
@@ -1,496 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var react = require('react');
|
|
4
|
-
|
|
5
|
-
var externalBlocStore = function (bloc, dependencySelector) {
|
|
6
|
-
var lastDependencyCheck = dependencySelector(bloc.state);
|
|
7
|
-
return {
|
|
8
|
-
subscribe: function (listener) {
|
|
9
|
-
var unSub = bloc.addEventListenerStateChange(function (data) {
|
|
10
|
-
var newDependencyCheck = dependencySelector(data);
|
|
11
|
-
if (newDependencyCheck !== lastDependencyCheck) {
|
|
12
|
-
lastDependencyCheck = newDependencyCheck;
|
|
13
|
-
listener();
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
return function () {
|
|
17
|
-
unSub();
|
|
18
|
-
};
|
|
19
|
-
},
|
|
20
|
-
getSnapshot: function () { return bloc.state; },
|
|
21
|
-
getServerSnapshot: function () { return bloc.state; },
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
|
|
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;
|
|
108
|
-
};
|
|
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.postChangesToDocument = false;
|
|
125
|
-
this.addPlugin = function (plugin) {
|
|
126
|
-
// check if already added
|
|
127
|
-
var index = _this.pluginList.findIndex(function (p) { return p.name === plugin.name; });
|
|
128
|
-
if (index !== -1)
|
|
129
|
-
return;
|
|
130
|
-
_this.pluginList.push(plugin);
|
|
131
|
-
};
|
|
132
|
-
this.reportToPlugins = function (event, bloc, params) {
|
|
133
|
-
_this.pluginList.forEach(function (plugin) {
|
|
134
|
-
plugin.onEvent(event, bloc, params);
|
|
135
|
-
});
|
|
136
|
-
};
|
|
137
|
-
this.report = function (event, bloc, params) {
|
|
138
|
-
var base = bloc.constructor;
|
|
139
|
-
switch (event) {
|
|
140
|
-
case BlacEvent.BLOC_DISPOSED:
|
|
141
|
-
_this.disposeBloc(bloc);
|
|
142
|
-
break;
|
|
143
|
-
case BlacEvent.LISTENER_REMOVED:
|
|
144
|
-
if (bloc.observer.size === 0 && !base.keepAlive)
|
|
145
|
-
_this.disposeBloc(bloc);
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
_this.reportToPlugins(event, bloc, params);
|
|
149
|
-
};
|
|
150
|
-
this.disposeBloc = function (bloc) {
|
|
151
|
-
var base = bloc.constructor;
|
|
152
|
-
if (!base.isolated) {
|
|
153
|
-
_this.unregisterBlocInstance(bloc);
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
_this.unregisterIsolatedBlocInstance(bloc);
|
|
157
|
-
}
|
|
158
|
-
};
|
|
159
|
-
this.getAllBlocs = function (blocClass, options) {
|
|
160
|
-
if (options === void 0) { options = {}; }
|
|
161
|
-
return __awaiter(_this, void 0, void 0, function () {
|
|
162
|
-
var base, searchIsolated, blocs, blocs;
|
|
163
|
-
var _a;
|
|
164
|
-
return __generator(this, function (_b) {
|
|
165
|
-
base = blocClass;
|
|
166
|
-
searchIsolated = (_a = options.searchIsolated, _a === void 0 ? base.isolated : _a);
|
|
167
|
-
if (searchIsolated) {
|
|
168
|
-
blocs = this.isolatedBlocMap.get(blocClass);
|
|
169
|
-
if (blocs)
|
|
170
|
-
return [2 /*return*/, blocs];
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
blocs = Array.from(this.blocInstanceMap.values());
|
|
174
|
-
return [2 /*return*/, blocs.filter(function (b) { return b instanceof blocClass; })];
|
|
175
|
-
}
|
|
176
|
-
return [2 /*return*/, []];
|
|
177
|
-
});
|
|
178
|
-
});
|
|
179
|
-
};
|
|
180
|
-
this.configure = function (config) {
|
|
181
|
-
if (config.exposeBlacInstance) ;
|
|
182
|
-
};
|
|
183
|
-
if (Blac.instance) {
|
|
184
|
-
return Blac.instance;
|
|
185
|
-
}
|
|
186
|
-
Blac.instance = this;
|
|
187
|
-
console.log('Blac Init');
|
|
188
|
-
}
|
|
189
|
-
Blac.getInstance = function () {
|
|
190
|
-
return Blac.instance;
|
|
191
|
-
};
|
|
192
|
-
Blac.prototype.createBlocInstanceMapKey = function (blocClassName, id) {
|
|
193
|
-
return "".concat(blocClassName, ":").concat(id);
|
|
194
|
-
};
|
|
195
|
-
Blac.prototype.unregisterBlocInstance = function (bloc) {
|
|
196
|
-
var key = this.createBlocInstanceMapKey(bloc.name, bloc.id);
|
|
197
|
-
this.blocInstanceMap.delete(key);
|
|
198
|
-
};
|
|
199
|
-
Blac.prototype.registerBlocInstance = function (bloc) {
|
|
200
|
-
var key = this.createBlocInstanceMapKey(bloc.name, bloc.id);
|
|
201
|
-
this.blocInstanceMap.set(key, bloc);
|
|
202
|
-
};
|
|
203
|
-
Blac.prototype.findRegisteredBlocInstance = function (blocClass, id) {
|
|
204
|
-
var base = blocClass;
|
|
205
|
-
if (base.isolated)
|
|
206
|
-
return undefined;
|
|
207
|
-
var key = this.createBlocInstanceMapKey(blocClass.name, id);
|
|
208
|
-
return this.blocInstanceMap.get(key);
|
|
209
|
-
};
|
|
210
|
-
Blac.prototype.registerIsolatedBlocInstance = function (bloc) {
|
|
211
|
-
var blocClass = bloc.constructor;
|
|
212
|
-
var blocs = this.isolatedBlocMap.get(blocClass);
|
|
213
|
-
if (blocs) {
|
|
214
|
-
blocs.push(bloc);
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
this.isolatedBlocMap.set(blocClass, [bloc]);
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
Blac.prototype.findIsolatedBlocInstance = function (blocClass, id) {
|
|
221
|
-
var blocs = this.isolatedBlocMap.get(blocClass);
|
|
222
|
-
if (blocs) {
|
|
223
|
-
return blocs.find(function (b) { return b.id === id; });
|
|
224
|
-
}
|
|
225
|
-
return undefined;
|
|
226
|
-
};
|
|
227
|
-
Blac.prototype.unregisterIsolatedBlocInstance = function (bloc) {
|
|
228
|
-
var blocClass = bloc.constructor;
|
|
229
|
-
var blocs = this.isolatedBlocMap.get(blocClass);
|
|
230
|
-
if (blocs) {
|
|
231
|
-
var index = blocs.findIndex(function (b) { return b.id === bloc.id; });
|
|
232
|
-
blocs.splice(index, 1);
|
|
233
|
-
}
|
|
234
|
-
};
|
|
235
|
-
Blac.prototype.createNewBlocInstance = function (blocClass, id, props) {
|
|
236
|
-
var base = blocClass;
|
|
237
|
-
var hasCreateMethod = Object.prototype.hasOwnProperty.call(blocClass, 'create');
|
|
238
|
-
base._propsOnInit = props;
|
|
239
|
-
var newBloc = hasCreateMethod ? base.create() : new blocClass();
|
|
240
|
-
newBloc.updateId(id);
|
|
241
|
-
if (base.isolated) {
|
|
242
|
-
this.registerIsolatedBlocInstance(newBloc);
|
|
243
|
-
return newBloc;
|
|
244
|
-
}
|
|
245
|
-
this.registerBlocInstance(newBloc);
|
|
246
|
-
return newBloc;
|
|
247
|
-
};
|
|
248
|
-
Blac.prototype.getBloc = function (blocClass, options) {
|
|
249
|
-
if (options === void 0) { options = {}; }
|
|
250
|
-
var base = blocClass;
|
|
251
|
-
var isIsolated = base.isolated;
|
|
252
|
-
var id = options.id || blocClass.name;
|
|
253
|
-
var registered = isIsolated
|
|
254
|
-
? this.findIsolatedBlocInstance(blocClass, id)
|
|
255
|
-
: this.findRegisteredBlocInstance(blocClass, id);
|
|
256
|
-
var reconnect = options.reconnect;
|
|
257
|
-
if (registered) {
|
|
258
|
-
if (reconnect) {
|
|
259
|
-
registered.dispose();
|
|
260
|
-
}
|
|
261
|
-
else {
|
|
262
|
-
return registered;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
return this.createNewBlocInstance(blocClass, id, options.props);
|
|
266
|
-
};
|
|
267
|
-
Blac.instance = new Blac();
|
|
268
|
-
Blac.getAllBlocs = Blac.instance.getAllBlocs;
|
|
269
|
-
Blac.addPlugin = Blac.instance.addPlugin;
|
|
270
|
-
Blac.configure = Blac.instance.configure;
|
|
271
|
-
return Blac;
|
|
272
|
-
}());
|
|
273
|
-
|
|
274
|
-
var BlacObservable = /** @class */ (function () {
|
|
275
|
-
function BlacObservable() {
|
|
276
|
-
this._observers = new Set();
|
|
277
|
-
}
|
|
278
|
-
Object.defineProperty(BlacObservable.prototype, "size", {
|
|
279
|
-
get: function () {
|
|
280
|
-
return this._observers.size;
|
|
281
|
-
},
|
|
282
|
-
enumerable: false,
|
|
283
|
-
configurable: true
|
|
284
|
-
});
|
|
285
|
-
BlacObservable.prototype.subscribe = function (observer) {
|
|
286
|
-
var _this = this;
|
|
287
|
-
this._observers.add(observer);
|
|
288
|
-
return function () { return _this.unsubscribe(observer); };
|
|
289
|
-
};
|
|
290
|
-
BlacObservable.prototype.unsubscribe = function (observer) {
|
|
291
|
-
this._observers.delete(observer);
|
|
292
|
-
};
|
|
293
|
-
BlacObservable.prototype.notify = function (newState, oldState) {
|
|
294
|
-
this._observers.forEach(function (observer) { return observer(newState, oldState); });
|
|
295
|
-
};
|
|
296
|
-
BlacObservable.prototype.dispose = function () {
|
|
297
|
-
this._observers.clear();
|
|
298
|
-
};
|
|
299
|
-
return BlacObservable;
|
|
300
|
-
}());
|
|
301
|
-
|
|
302
|
-
var BlocBase = /** @class */ (function () {
|
|
303
|
-
// onConnect(): void;
|
|
304
|
-
// onDisconnect(): void;
|
|
305
|
-
function BlocBase(initialState) {
|
|
306
|
-
var _this = this;
|
|
307
|
-
this.isolated = false;
|
|
308
|
-
this.isBlacLive = true;
|
|
309
|
-
this.blac = Blac.getInstance();
|
|
310
|
-
// public props: P = {} as P;
|
|
311
|
-
this.createdAt = Date.now();
|
|
312
|
-
this.updateId = function (id) {
|
|
313
|
-
var originalId = _this.id;
|
|
314
|
-
if (!id || id === originalId)
|
|
315
|
-
return;
|
|
316
|
-
_this.id = id;
|
|
317
|
-
};
|
|
318
|
-
this.addEventListenerStateChange = function (callback) {
|
|
319
|
-
_this.blac.report(BlacEvent.LISTENER_ADDED, _this);
|
|
320
|
-
_this.observer.subscribe(callback);
|
|
321
|
-
return function () { return _this.handleUnsubscribe(callback); };
|
|
322
|
-
};
|
|
323
|
-
this.handleUnsubscribe = function (callback) {
|
|
324
|
-
_this.observer.unsubscribe(callback);
|
|
325
|
-
_this.blac.report(BlacEvent.LISTENER_REMOVED, _this);
|
|
326
|
-
};
|
|
327
|
-
this.observer = new BlacObservable();
|
|
328
|
-
this._state = initialState;
|
|
329
|
-
this.blac.report(BlacEvent.BLOC_CREATED, this);
|
|
330
|
-
this.id = this.constructor.name;
|
|
331
|
-
this.isolated = this.constructor.isolated;
|
|
332
|
-
}
|
|
333
|
-
Object.defineProperty(BlocBase.prototype, "props", {
|
|
334
|
-
get: function () {
|
|
335
|
-
var p = this.constructor._propsOnInit;
|
|
336
|
-
if (!p)
|
|
337
|
-
return {};
|
|
338
|
-
return p;
|
|
339
|
-
},
|
|
340
|
-
enumerable: false,
|
|
341
|
-
configurable: true
|
|
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
|
-
return _super.call(this, initialState) || this;
|
|
373
|
-
}
|
|
374
|
-
/**
|
|
375
|
-
* Update the state then will notify all observers
|
|
376
|
-
* @param state: new state
|
|
377
|
-
**/
|
|
378
|
-
Cubit.prototype.emit = function (state) {
|
|
379
|
-
if (state === this.state) {
|
|
380
|
-
return;
|
|
381
|
-
}
|
|
382
|
-
var oldState = this.state;
|
|
383
|
-
var newState = state;
|
|
384
|
-
this._state = state;
|
|
385
|
-
this.observer.notify(newState, oldState);
|
|
386
|
-
this.blac.report(BlacEvent.STATE_CHANGED, this, {
|
|
387
|
-
newState: newState,
|
|
388
|
-
oldState: oldState,
|
|
389
|
-
});
|
|
390
|
-
};
|
|
391
|
-
/**
|
|
392
|
-
* Merges current state object with the parameter "state" and emits the new state
|
|
393
|
-
* Warning: only works when the state is an object.
|
|
394
|
-
* @param state: Partial state that should change
|
|
395
|
-
**/
|
|
396
|
-
Cubit.prototype.patch = function (statePatch, ignoreChangeCheck) {
|
|
397
|
-
if (ignoreChangeCheck === void 0) { ignoreChangeCheck = false; }
|
|
398
|
-
var changes = false;
|
|
399
|
-
if (!ignoreChangeCheck) {
|
|
400
|
-
for (var key in statePatch) {
|
|
401
|
-
var current = this.state[key];
|
|
402
|
-
if (statePatch[key] !== current) {
|
|
403
|
-
changes = true;
|
|
404
|
-
break;
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
if (changes) {
|
|
409
|
-
this.emit(__assign(__assign({}, this.state), statePatch));
|
|
410
|
-
}
|
|
411
|
-
};
|
|
412
|
-
return Cubit;
|
|
413
|
-
})(BlocBase));
|
|
414
|
-
|
|
415
|
-
/** @class */ ((function (_super) {
|
|
416
|
-
__extends(Bloc, _super);
|
|
417
|
-
function Bloc() {
|
|
418
|
-
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
419
|
-
/**
|
|
420
|
-
* Emit a new action, the reducer should digest the action and update the state accordingly
|
|
421
|
-
* @param action: action t obe sent to the reducer
|
|
422
|
-
*/
|
|
423
|
-
_this.emit = function (action) {
|
|
424
|
-
var oldState = _this.state;
|
|
425
|
-
var newState = _this.reducer(action, _this.state);
|
|
426
|
-
_this._state = newState;
|
|
427
|
-
_this.observer.notify(newState, oldState);
|
|
428
|
-
_this.blac.report(BlacEvent.STATE_CHANGED, _this, {
|
|
429
|
-
newState: newState,
|
|
430
|
-
oldState: oldState,
|
|
431
|
-
});
|
|
432
|
-
};
|
|
433
|
-
return _this;
|
|
434
|
-
}
|
|
435
|
-
return Bloc;
|
|
436
|
-
})(BlocBase));
|
|
437
|
-
|
|
438
|
-
var UseBlocClass = /** @class */ (function () {
|
|
439
|
-
function UseBlocClass() {
|
|
440
|
-
}
|
|
441
|
-
UseBlocClass.useBloc = function (bloc, options) {
|
|
442
|
-
var _a, _b;
|
|
443
|
-
var rid = react.useId();
|
|
444
|
-
// default options
|
|
445
|
-
var dependencySelector = function (state) { return state; };
|
|
446
|
-
var blocId;
|
|
447
|
-
var props = {};
|
|
448
|
-
// parse options
|
|
449
|
-
// if options is a function, its a dependencySelector
|
|
450
|
-
if (typeof options === 'function') {
|
|
451
|
-
dependencySelector = options;
|
|
452
|
-
}
|
|
453
|
-
// if options is a string its an ID
|
|
454
|
-
if (typeof options === 'string') {
|
|
455
|
-
blocId = options;
|
|
456
|
-
}
|
|
457
|
-
if (typeof options === 'object') {
|
|
458
|
-
dependencySelector = (_a = options.dependencySelector) !== null && _a !== void 0 ? _a : dependencySelector;
|
|
459
|
-
blocId = options.id;
|
|
460
|
-
props = (_b = options.props) !== null && _b !== void 0 ? _b : props;
|
|
461
|
-
}
|
|
462
|
-
var base = bloc;
|
|
463
|
-
var isIsolated = base.isolated;
|
|
464
|
-
if (isIsolated) {
|
|
465
|
-
blocId = rid;
|
|
466
|
-
}
|
|
467
|
-
// const now = Date.now();
|
|
468
|
-
// const createdAt = useRef(now);
|
|
469
|
-
// const dateChanged = now !== createdAt;
|
|
470
|
-
// resolve the bloc, get the existing instance of the bloc or create a new one
|
|
471
|
-
// const resolvedBloc = useMemo(
|
|
472
|
-
// () =>
|
|
473
|
-
var resolvedBloc = Blac.getInstance().getBloc(bloc, {
|
|
474
|
-
id: blocId,
|
|
475
|
-
props: props,
|
|
476
|
-
reconnect: false,
|
|
477
|
-
});
|
|
478
|
-
// [renderId.current],
|
|
479
|
-
// );
|
|
480
|
-
if (!resolvedBloc) {
|
|
481
|
-
throw new Error("useBloc: could not resolve: ".concat(bloc.name || bloc));
|
|
482
|
-
}
|
|
483
|
-
var _c = react.useMemo(function () { return externalBlocStore(resolvedBloc, dependencySelector); }, [resolvedBloc.createdAt]), subscribe = _c.subscribe, getSnapshot = _c.getSnapshot, getServerSnapshot = _c.getServerSnapshot;
|
|
484
|
-
var state = react.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
485
|
-
// useEffect(() => {
|
|
486
|
-
// resolvedBloc.props = props;
|
|
487
|
-
// }, [props]);
|
|
488
|
-
return [state, resolvedBloc];
|
|
489
|
-
};
|
|
490
|
-
return UseBlocClass;
|
|
491
|
-
}());
|
|
492
|
-
var useBloc = UseBlocClass.useBloc;
|
|
493
|
-
|
|
494
|
-
exports.externalBlocStore = externalBlocStore;
|
|
495
|
-
exports.useBloc = useBloc;
|
|
496
|
-
//# sourceMappingURL=blac-react.js.map
|
package/dist/blac-react.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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 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 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 base._propsOnInit = 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\n const { reconnect } = options;\n\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 static _propsOnInit: BlocProps | undefined;\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 }\n\n get props(): P {\n const p = (this.constructor as any)._propsOnInit as P;\n if (!p) return {} as P;\n return p;\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<\n S,\n P\n> {\n static create: () => Cubit<any, any>;\n\n constructor(initialState: S) {\n super(initialState);\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"],"mappings":"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"}
|