@blac/react 0.0.19 → 0.0.21

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,4 +1,4 @@
1
- import { useMemo, useSyncExternalStore, useEffect } from 'react';
1
+ import { useId, useMemo, useSyncExternalStore } from 'react';
2
2
 
3
3
  var externalBlocStore = function (bloc, dependencySelector) {
4
4
  var lastDependencyCheck = dependencySelector(bloc.state);
@@ -119,7 +119,6 @@ var Blac = /** @class */ (function () {
119
119
  this.blocInstanceMap = new Map();
120
120
  this.isolatedBlocMap = new Map();
121
121
  this.pluginList = [];
122
- this.customPropsMap = new Map();
123
122
  this.postChangesToDocument = false;
124
123
  this.addPlugin = function (plugin) {
125
124
  // check if already added
@@ -216,6 +215,13 @@ var Blac = /** @class */ (function () {
216
215
  this.isolatedBlocMap.set(blocClass, [bloc]);
217
216
  }
218
217
  };
218
+ Blac.prototype.findIsolatedBlocInstance = function (blocClass, id) {
219
+ var blocs = this.isolatedBlocMap.get(blocClass);
220
+ if (blocs) {
221
+ return blocs.find(function (b) { return b.id === id; });
222
+ }
223
+ return undefined;
224
+ };
219
225
  Blac.prototype.unregisterIsolatedBlocInstance = function (bloc) {
220
226
  var blocClass = bloc.constructor;
221
227
  var blocs = this.isolatedBlocMap.get(blocClass);
@@ -224,20 +230,10 @@ var Blac = /** @class */ (function () {
224
230
  blocs.splice(index, 1);
225
231
  }
226
232
  };
227
- Blac.prototype.setCustomProps = function (blocClass, props) {
228
- if (!props)
229
- return;
230
- this.customPropsMap.set(blocClass, props);
231
- };
232
- Blac.prototype.getCustomProps = function (blocClass) {
233
- var props = this.customPropsMap.get(blocClass);
234
- this.customPropsMap.delete(blocClass);
235
- return props;
236
- };
237
233
  Blac.prototype.createNewBlocInstance = function (blocClass, id, props) {
238
234
  var base = blocClass;
239
235
  var hasCreateMethod = Object.prototype.hasOwnProperty.call(blocClass, 'create');
240
- this.setCustomProps(base, props);
236
+ base._propsOnInit = props;
241
237
  var newBloc = hasCreateMethod ? base.create() : new blocClass();
242
238
  newBloc.updateId(id);
243
239
  if (base.isolated) {
@@ -249,8 +245,12 @@ var Blac = /** @class */ (function () {
249
245
  };
250
246
  Blac.prototype.getBloc = function (blocClass, options) {
251
247
  if (options === void 0) { options = {}; }
248
+ var base = blocClass;
249
+ var isIsolated = base.isolated;
252
250
  var id = options.id || blocClass.name;
253
- var registered = this.findRegisteredBlocInstance(blocClass, id);
251
+ var registered = isIsolated
252
+ ? this.findIsolatedBlocInstance(blocClass, id)
253
+ : this.findRegisteredBlocInstance(blocClass, id);
254
254
  var reconnect = options.reconnect;
255
255
  if (registered) {
256
256
  if (reconnect) {
@@ -305,7 +305,7 @@ var BlocBase = /** @class */ (function () {
305
305
  this.isolated = false;
306
306
  this.isBlacLive = true;
307
307
  this.blac = Blac.getInstance();
308
- this.props = {};
308
+ // public props: P = {} as P;
309
309
  this.createdAt = Date.now();
310
310
  this.updateId = function (id) {
311
311
  var originalId = _this.id;
@@ -327,8 +327,17 @@ var BlocBase = /** @class */ (function () {
327
327
  this.blac.report(BlacEvent.BLOC_CREATED, this);
328
328
  this.id = this.constructor.name;
329
329
  this.isolated = this.constructor.isolated;
330
- // this.onConnect?.();
331
330
  }
331
+ Object.defineProperty(BlocBase.prototype, "props", {
332
+ get: function () {
333
+ var p = this.constructor._propsOnInit;
334
+ if (!p)
335
+ return {};
336
+ return p;
337
+ },
338
+ enumerable: false,
339
+ configurable: true
340
+ });
332
341
  Object.defineProperty(BlocBase.prototype, "state", {
333
342
  get: function () {
334
343
  return this._state;
@@ -358,11 +367,7 @@ var BlocBase = /** @class */ (function () {
358
367
  /** @class */ ((function (_super) {
359
368
  __extends(Cubit, _super);
360
369
  function Cubit(initialState) {
361
- var _this = _super.call(this, initialState) || this;
362
- _this.props = {};
363
- var newProps = Blac.getInstance().getCustomProps(_this.constructor);
364
- _this.props = __assign(__assign({}, _this.props), newProps);
365
- return _this;
370
+ return _super.call(this, initialState) || this;
366
371
  }
367
372
  /**
368
373
  * Update the state then will notify all observers
@@ -433,6 +438,7 @@ var UseBlocClass = /** @class */ (function () {
433
438
  }
434
439
  UseBlocClass.useBloc = function (bloc, options) {
435
440
  var _a, _b;
441
+ var rid = useId();
436
442
  // default options
437
443
  var dependencySelector = function (state) { return state; };
438
444
  var blocId;
@@ -451,6 +457,11 @@ var UseBlocClass = /** @class */ (function () {
451
457
  blocId = options.id;
452
458
  props = (_b = options.props) !== null && _b !== void 0 ? _b : props;
453
459
  }
460
+ var base = bloc;
461
+ var isIsolated = base.isolated;
462
+ if (isIsolated) {
463
+ blocId = rid;
464
+ }
454
465
  // const now = Date.now();
455
466
  // const createdAt = useRef(now);
456
467
  // const dateChanged = now !== createdAt;
@@ -469,9 +480,9 @@ var UseBlocClass = /** @class */ (function () {
469
480
  }
470
481
  var _c = useMemo(function () { return externalBlocStore(resolvedBloc, dependencySelector); }, [resolvedBloc.createdAt]), subscribe = _c.subscribe, getSnapshot = _c.getSnapshot, getServerSnapshot = _c.getServerSnapshot;
471
482
  var state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
472
- useEffect(function () {
473
- resolvedBloc.props = props;
474
- }, [props]);
483
+ // useEffect(() => {
484
+ // resolvedBloc.props = props;
485
+ // }, [props]);
475
486
  return [state, resolvedBloc];
476
487
  };
477
488
  return UseBlocClass;
@@ -1 +1 @@
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 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 id = options.id || blocClass.name;\n const registered = 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, 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 // 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 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 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
+ {"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 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":[],"mappings":"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"}
@@ -121,7 +121,6 @@ var Blac = /** @class */ (function () {
121
121
  this.blocInstanceMap = new Map();
122
122
  this.isolatedBlocMap = new Map();
123
123
  this.pluginList = [];
124
- this.customPropsMap = new Map();
125
124
  this.postChangesToDocument = false;
126
125
  this.addPlugin = function (plugin) {
127
126
  // check if already added
@@ -218,6 +217,13 @@ var Blac = /** @class */ (function () {
218
217
  this.isolatedBlocMap.set(blocClass, [bloc]);
219
218
  }
220
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
+ };
221
227
  Blac.prototype.unregisterIsolatedBlocInstance = function (bloc) {
222
228
  var blocClass = bloc.constructor;
223
229
  var blocs = this.isolatedBlocMap.get(blocClass);
@@ -226,20 +232,10 @@ var Blac = /** @class */ (function () {
226
232
  blocs.splice(index, 1);
227
233
  }
228
234
  };
229
- Blac.prototype.setCustomProps = function (blocClass, props) {
230
- if (!props)
231
- return;
232
- this.customPropsMap.set(blocClass, props);
233
- };
234
- Blac.prototype.getCustomProps = function (blocClass) {
235
- var props = this.customPropsMap.get(blocClass);
236
- this.customPropsMap.delete(blocClass);
237
- return props;
238
- };
239
235
  Blac.prototype.createNewBlocInstance = function (blocClass, id, props) {
240
236
  var base = blocClass;
241
237
  var hasCreateMethod = Object.prototype.hasOwnProperty.call(blocClass, 'create');
242
- this.setCustomProps(base, props);
238
+ base._propsOnInit = props;
243
239
  var newBloc = hasCreateMethod ? base.create() : new blocClass();
244
240
  newBloc.updateId(id);
245
241
  if (base.isolated) {
@@ -251,8 +247,12 @@ var Blac = /** @class */ (function () {
251
247
  };
252
248
  Blac.prototype.getBloc = function (blocClass, options) {
253
249
  if (options === void 0) { options = {}; }
250
+ var base = blocClass;
251
+ var isIsolated = base.isolated;
254
252
  var id = options.id || blocClass.name;
255
- var registered = this.findRegisteredBlocInstance(blocClass, id);
253
+ var registered = isIsolated
254
+ ? this.findIsolatedBlocInstance(blocClass, id)
255
+ : this.findRegisteredBlocInstance(blocClass, id);
256
256
  var reconnect = options.reconnect;
257
257
  if (registered) {
258
258
  if (reconnect) {
@@ -307,7 +307,7 @@ var BlocBase = /** @class */ (function () {
307
307
  this.isolated = false;
308
308
  this.isBlacLive = true;
309
309
  this.blac = Blac.getInstance();
310
- this.props = {};
310
+ // public props: P = {} as P;
311
311
  this.createdAt = Date.now();
312
312
  this.updateId = function (id) {
313
313
  var originalId = _this.id;
@@ -329,8 +329,17 @@ var BlocBase = /** @class */ (function () {
329
329
  this.blac.report(BlacEvent.BLOC_CREATED, this);
330
330
  this.id = this.constructor.name;
331
331
  this.isolated = this.constructor.isolated;
332
- // this.onConnect?.();
333
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
+ });
334
343
  Object.defineProperty(BlocBase.prototype, "state", {
335
344
  get: function () {
336
345
  return this._state;
@@ -360,11 +369,7 @@ var BlocBase = /** @class */ (function () {
360
369
  /** @class */ ((function (_super) {
361
370
  __extends(Cubit, _super);
362
371
  function Cubit(initialState) {
363
- var _this = _super.call(this, initialState) || this;
364
- _this.props = {};
365
- var newProps = Blac.getInstance().getCustomProps(_this.constructor);
366
- _this.props = __assign(__assign({}, _this.props), newProps);
367
- return _this;
372
+ return _super.call(this, initialState) || this;
368
373
  }
369
374
  /**
370
375
  * Update the state then will notify all observers
@@ -435,6 +440,7 @@ var UseBlocClass = /** @class */ (function () {
435
440
  }
436
441
  UseBlocClass.useBloc = function (bloc, options) {
437
442
  var _a, _b;
443
+ var rid = react.useId();
438
444
  // default options
439
445
  var dependencySelector = function (state) { return state; };
440
446
  var blocId;
@@ -453,6 +459,11 @@ var UseBlocClass = /** @class */ (function () {
453
459
  blocId = options.id;
454
460
  props = (_b = options.props) !== null && _b !== void 0 ? _b : props;
455
461
  }
462
+ var base = bloc;
463
+ var isIsolated = base.isolated;
464
+ if (isIsolated) {
465
+ blocId = rid;
466
+ }
456
467
  // const now = Date.now();
457
468
  // const createdAt = useRef(now);
458
469
  // const dateChanged = now !== createdAt;
@@ -471,9 +482,9 @@ var UseBlocClass = /** @class */ (function () {
471
482
  }
472
483
  var _c = react.useMemo(function () { return externalBlocStore(resolvedBloc, dependencySelector); }, [resolvedBloc.createdAt]), subscribe = _c.subscribe, getSnapshot = _c.getSnapshot, getServerSnapshot = _c.getServerSnapshot;
473
484
  var state = react.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
474
- react.useEffect(function () {
475
- resolvedBloc.props = props;
476
- }, [props]);
485
+ // useEffect(() => {
486
+ // resolvedBloc.props = props;
487
+ // }, [props]);
477
488
  return [state, resolvedBloc];
478
489
  };
479
490
  return UseBlocClass;
@@ -1 +1 @@
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 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 id = options.id || blocClass.name;\n const registered = 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, 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 // 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 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 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":["useMemo","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 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blac/react",
3
- "version": "0.0.19",
3
+ "version": "0.0.21",
4
4
  "license": "MIT",
5
5
  "main": "dist/blac-react.js",
6
6
  "module": "dist/blac-react.esm.js",
@@ -19,7 +19,8 @@
19
19
  "build": "rollup -c rollup.config.lib.js",
20
20
  "dev": "rollup -c rollup.config.lib.js --watch",
21
21
  "prettier": "prettier --write ./src",
22
- "test": "vitest run --coverage"
22
+ "test": "vitest run --coverage",
23
+ "pub": "npm run build && npm publish"
23
24
  },
24
25
  "dependencies": {
25
26
  "blac": "*"