@blac/react 0.0.20 → 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.
- package/dist/blac-react.esm.js +17 -23
- package/dist/blac-react.esm.js.map +1 -1
- package/dist/blac-react.js +16 -22
- package/dist/blac-react.js.map +1 -1
- package/package.json +3 -2
package/dist/blac-react.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useId, useMemo, useSyncExternalStore
|
|
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
|
|
@@ -231,20 +230,10 @@ var Blac = /** @class */ (function () {
|
|
|
231
230
|
blocs.splice(index, 1);
|
|
232
231
|
}
|
|
233
232
|
};
|
|
234
|
-
Blac.prototype.setCustomProps = function (blocClass, props) {
|
|
235
|
-
if (!props)
|
|
236
|
-
return;
|
|
237
|
-
this.customPropsMap.set(blocClass, props);
|
|
238
|
-
};
|
|
239
|
-
Blac.prototype.getCustomProps = function (blocClass) {
|
|
240
|
-
var props = this.customPropsMap.get(blocClass);
|
|
241
|
-
this.customPropsMap.delete(blocClass);
|
|
242
|
-
return props;
|
|
243
|
-
};
|
|
244
233
|
Blac.prototype.createNewBlocInstance = function (blocClass, id, props) {
|
|
245
234
|
var base = blocClass;
|
|
246
235
|
var hasCreateMethod = Object.prototype.hasOwnProperty.call(blocClass, 'create');
|
|
247
|
-
|
|
236
|
+
base._propsOnInit = props;
|
|
248
237
|
var newBloc = hasCreateMethod ? base.create() : new blocClass();
|
|
249
238
|
newBloc.updateId(id);
|
|
250
239
|
if (base.isolated) {
|
|
@@ -316,7 +305,7 @@ var BlocBase = /** @class */ (function () {
|
|
|
316
305
|
this.isolated = false;
|
|
317
306
|
this.isBlacLive = true;
|
|
318
307
|
this.blac = Blac.getInstance();
|
|
319
|
-
|
|
308
|
+
// public props: P = {} as P;
|
|
320
309
|
this.createdAt = Date.now();
|
|
321
310
|
this.updateId = function (id) {
|
|
322
311
|
var originalId = _this.id;
|
|
@@ -338,8 +327,17 @@ var BlocBase = /** @class */ (function () {
|
|
|
338
327
|
this.blac.report(BlacEvent.BLOC_CREATED, this);
|
|
339
328
|
this.id = this.constructor.name;
|
|
340
329
|
this.isolated = this.constructor.isolated;
|
|
341
|
-
// this.onConnect?.();
|
|
342
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
|
+
});
|
|
343
341
|
Object.defineProperty(BlocBase.prototype, "state", {
|
|
344
342
|
get: function () {
|
|
345
343
|
return this._state;
|
|
@@ -369,11 +367,7 @@ var BlocBase = /** @class */ (function () {
|
|
|
369
367
|
/** @class */ ((function (_super) {
|
|
370
368
|
__extends(Cubit, _super);
|
|
371
369
|
function Cubit(initialState) {
|
|
372
|
-
|
|
373
|
-
_this.props = {};
|
|
374
|
-
var newProps = Blac.getInstance().getCustomProps(_this.constructor);
|
|
375
|
-
_this.props = __assign(__assign({}, _this.props), newProps);
|
|
376
|
-
return _this;
|
|
370
|
+
return _super.call(this, initialState) || this;
|
|
377
371
|
}
|
|
378
372
|
/**
|
|
379
373
|
* Update the state then will notify all observers
|
|
@@ -486,9 +480,9 @@ var UseBlocClass = /** @class */ (function () {
|
|
|
486
480
|
}
|
|
487
481
|
var _c = useMemo(function () { return externalBlocStore(resolvedBloc, dependencySelector); }, [resolvedBloc.createdAt]), subscribe = _c.subscribe, getSnapshot = _c.getSnapshot, getServerSnapshot = _c.getServerSnapshot;
|
|
488
482
|
var state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
489
|
-
useEffect(
|
|
490
|
-
|
|
491
|
-
}, [props]);
|
|
483
|
+
// useEffect(() => {
|
|
484
|
+
// resolvedBloc.props = props;
|
|
485
|
+
// }, [props]);
|
|
492
486
|
return [state, resolvedBloc];
|
|
493
487
|
};
|
|
494
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 findIsolatedBlocInstance<B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n id: BlocInstanceId,\n ): InstanceType<BlocConstructor<B>> | undefined {\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) {\n return blocs.find((b) => b.id === id) as InstanceType<BlocConstructor<B>>;\n }\n return undefined;\n }\n\n unregisterIsolatedBlocInstance(bloc: BlocBase<any>): void {\n const blocClass = bloc.constructor;\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) {\n const index = blocs.findIndex((b) => b.id === bloc.id);\n blocs.splice(index, 1);\n }\n }\n\n setCustomProps(\n blocClass: BlocBaseAbstract,\n props: BlocProps | undefined,\n ): void {\n if (!props) return;\n this.customPropsMap.set(blocClass, props);\n }\n\n getCustomProps(blocClass: BlocBaseAbstract): BlocProps | undefined {\n const props = this.customPropsMap.get(blocClass);\n this.customPropsMap.delete(blocClass);\n return props;\n }\n\n createNewBlocInstance<B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n id: BlocInstanceId,\n props: BlocProps | undefined,\n ): InstanceType<BlocConstructor<B>> {\n const base = blocClass as unknown as BlocBaseAbstract;\n const hasCreateMethod = Object.prototype.hasOwnProperty.call(\n blocClass,\n 'create',\n );\n\n this.setCustomProps(base, props);\n const newBloc = hasCreateMethod ? base.create() : new blocClass();\n newBloc.updateId(id);\n\n if (base.isolated) {\n this.registerIsolatedBlocInstance(newBloc);\n return newBloc as InstanceType<BlocConstructor<B>>;\n }\n\n this.registerBlocInstance(newBloc);\n return newBloc as InstanceType<BlocConstructor<B>>;\n }\n\n getBloc<B extends BlocBase<S>, S>(\n blocClass: BlocConstructor<B>,\n options: {\n id?: BlocInstanceId;\n props?: BlocProps;\n reconnect?: boolean;\n } = {},\n ): InstanceType<BlocConstructor<B>> {\n const base = blocClass as unknown as BlocBaseAbstract;\n const isIsolated = base.isolated;\n const id = options.id || blocClass.name;\n const registered = isIsolated\n ? this.findIsolatedBlocInstance(blocClass, id)\n : this.findRegisteredBlocInstance(blocClass, id);\n const { reconnect } = options;\n if (registered) {\n if (reconnect) {\n registered.dispose();\n } else {\n return registered;\n }\n }\n return this.createNewBlocInstance(blocClass, id, options.props);\n }\n\n getAllBlocs = async <B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n options: {\n searchIsolated?: boolean;\n } = {},\n ): Promise<B[]> => {\n const base = blocClass as unknown as BlocBaseAbstract;\n\n const { searchIsolated = base.isolated } = options;\n\n if (searchIsolated) {\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) return blocs as B[];\n } else {\n const blocs = Array.from(this.blocInstanceMap.values());\n return blocs.filter((b) => b instanceof blocClass) as B[];\n }\n return [];\n };\n\n configure = (config: BlacConfig) => {\n if (config.exposeBlacInstance) {\n // window.__blac = this;\n }\n };\n}\n\ndeclare global {\n interface Window {\n // __blac?: Blac;\n }\n}\n","export type BlacObserver<S> = (\n newState: S,\n oldState: S\n) => void | Promise<void>;\n\nexport class BlacObservable<S> {\n private _observers = new Set<BlacObserver<S>>();\n\n get size(): number {\n return this._observers.size;\n }\n\n subscribe(observer: BlacObserver<S>): () => void {\n this._observers.add(observer);\n return () => this.unsubscribe(observer);\n }\n\n unsubscribe(observer: BlacObserver<S>) {\n this._observers.delete(observer);\n }\n\n notify(newState: S, oldState: S) {\n this._observers.forEach((observer) => observer(newState, oldState));\n }\n\n dispose() {\n this._observers.clear();\n }\n}\n","import { Blac, BlacEvent } from './Blac';\nimport { BlacObservable } from './BlacObserver';\nimport { BlocProps } from './Cubit';\n\nexport type BlocInstanceId = string | number | undefined;\n\nexport abstract class BlocBase<S, P extends BlocProps = {}> {\n static isolated = false;\n static keepAlive = false;\n static create: <S extends any>() => BlocBase<S>;\n static isBlacClass = true;\n public isolated = false;\n public isBlacLive = true;\n public observer: BlacObservable<any>;\n public blac = Blac.getInstance();\n public id: BlocInstanceId;\n public props: P = {} as P;\n public readonly createdAt = Date.now();\n\n // onConnect(): void;\n // onDisconnect(): void;\n\n constructor(initialState: S) {\n this.observer = new BlacObservable();\n this._state = initialState;\n this.blac.report(BlacEvent.BLOC_CREATED, this);\n this.id = this.constructor.name;\n this.isolated = (this.constructor as any).isolated;\n // this.onConnect?.();\n }\n\n public _state: S;\n\n get state(): S {\n return this._state;\n }\n\n get name() {\n return this.constructor.name;\n }\n\n updateId = (id?: BlocInstanceId) => {\n const originalId = this.id;\n if (!id || id === originalId) return;\n this.id = id;\n };\n\n addEventListenerStateChange = (\n callback: (newState: S, oldState: S) => void,\n ): (() => void) => {\n this.blac.report(BlacEvent.LISTENER_ADDED, this);\n this.observer.subscribe(callback);\n return () => this.handleUnsubscribe(callback);\n };\n\n dispose() {\n this.blac.report(BlacEvent.BLOC_DISPOSED, this);\n this.isBlacLive = false;\n this.observer.dispose();\n // this.onDisconnect?.();\n }\n\n private handleUnsubscribe = (\n callback: (newState: S, oldState: S) => void,\n ): void => {\n this.observer.unsubscribe(callback);\n this.blac.report(BlacEvent.LISTENER_REMOVED, this);\n };\n}\n","import { BlocBase } from './BlocBase';\nimport { Blac, BlacEvent } from './Blac';\n\nexport type BlocProps = Record<string | number, any>;\n\nexport abstract class Cubit<S, P extends BlocProps = {}> extends BlocBase<S> {\n static create: () => Cubit<any, any>;\n props: P = {} as P;\n\n constructor(initialState: S) {\n super(initialState);\n const newProps = Blac.getInstance().getCustomProps(this.constructor as any);\n this.props = { ...this.props, ...newProps };\n }\n\n /**\n * Update the state then will notify all observers\n * @param state: new state\n **/\n emit(state: S): void {\n if (state === this.state) {\n return;\n }\n\n const oldState = this.state;\n const newState = state;\n this._state = state;\n this.observer.notify(newState, oldState);\n\n this.blac.report(BlacEvent.STATE_CHANGED, this, {\n newState,\n oldState,\n });\n }\n\n /**\n * Merges current state object with the parameter \"state\" and emits the new state\n * Warning: only works when the state is an object.\n * @param state: Partial state that should change\n **/\n patch(\n statePatch: S extends object ? Partial<S> : S,\n ignoreChangeCheck = false,\n ): void {\n let changes = false;\n if (!ignoreChangeCheck) {\n for (const key in statePatch) {\n const current = (this.state as any)[key];\n if (statePatch[key] !== current) {\n changes = true;\n break;\n }\n }\n }\n\n if (changes) {\n this.emit({ ...this.state, ...statePatch });\n }\n }\n}\n","import { BlocBase } from './BlocBase';\nimport { BlacEvent } from './Blac';\n\nexport abstract class Bloc<S, A> extends BlocBase<S> {\n static create: () => BlocBase<any>;\n\n /**\n * The reducer is called whenever a new action is emited,\n * @param action: the action from \"emit\"\n * @param state: the current state\n * @returns: the new state\n */\n abstract reducer(action: A, state: S): S;\n\n /**\n * Emit a new action, the reducer should digest the action and update the state accordingly\n * @param action: action t obe sent to the reducer\n */\n emit = (action: A): void => {\n const oldState = this.state;\n const newState = this.reducer(action, this.state);\n this._state = newState;\n this.observer.notify(newState, oldState);\n\n this.blac.report(BlacEvent.STATE_CHANGED, this, {\n newState,\n oldState,\n });\n };\n}\n","import {\n Blac,\n BlocBase,\n BlocConstructor,\n BlocInstanceId,\n BlocProps,\n CubitPropsType,\n ValueType,\n} from 'blac/src';\nimport { useEffect, useId, useMemo, useRef, useSyncExternalStore } from 'react';\nimport externalBlocStore from './externalBlocStore';\n\nexport type BlocHookData<B extends BlocBase<S>, S> = [\n value: ValueType<B>,\n instance: B,\n];\n\n// type BlocHookData<B extends BlocBase<S>, S> = [S, InstanceType<B>]; // B is the bloc class, S is the state of the bloc\n// type UseBlocClassResult<B, S> = BlocHookData<B, S>;\n\nexport interface BlocHookOptions<B extends BlocBase<S>, S> {\n id?: string;\n dependencySelector?: (state: ValueType<B>) => unknown;\n props?: CubitPropsType<B>;\n}\n\nexport type BlocHookDependencySelector<B extends BlocBase<S>, S> = (\n state: ValueType<B>,\n) => unknown;\n\nexport class UseBlocClass {\n // constructor, no options\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n options: BlocHookOptions<InstanceType<B>, S>,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n depsSelector: BlocHookDependencySelector<InstanceType<B>, S>,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n instanceId: string,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n options?:\n | BlocHookOptions<InstanceType<B>, S>\n | BlocHookDependencySelector<InstanceType<B>, S>\n | BlocInstanceId,\n ): BlocHookData<InstanceType<B>, S> {\n const rid = useId();\n // default options\n let dependencySelector: BlocHookDependencySelector<InstanceType<B>, S> = (\n state: ValueType<InstanceType<B>>,\n ) => state;\n let blocId: BlocInstanceId | undefined;\n let props: BlocProps = {};\n\n // parse options\n\n // if options is a function, its a dependencySelector\n if (typeof options === 'function') {\n dependencySelector = options;\n }\n\n // if options is a string its an ID\n if (typeof options === 'string') {\n blocId = options;\n }\n\n if (typeof options === 'object') {\n dependencySelector = options.dependencySelector ?? dependencySelector;\n blocId = options.id;\n props = options.props ?? props;\n }\n\n const base = bloc as unknown as BlocBase<S>;\n const isIsolated = base.isolated;\n if (isIsolated) {\n blocId = rid;\n }\n\n // const now = Date.now();\n // const createdAt = useRef(now);\n // const dateChanged = now !== createdAt;\n\n // resolve the bloc, get the existing instance of the bloc or create a new one\n // const resolvedBloc = useMemo(\n // () =>\n\n const resolvedBloc = Blac.getInstance().getBloc(bloc, {\n id: blocId,\n props,\n reconnect: false,\n }) as InstanceType<B>;\n // [renderId.current],\n // );\n\n if (!resolvedBloc) {\n throw new Error(`useBloc: could not resolve: ${bloc.name || bloc}`);\n }\n\n const { subscribe, getSnapshot, getServerSnapshot } = useMemo(\n () => externalBlocStore(resolvedBloc, dependencySelector),\n [resolvedBloc.createdAt],\n );\n\n const state = useSyncExternalStore<ValueType<InstanceType<B>>>(\n subscribe,\n getSnapshot,\n getServerSnapshot,\n );\n\n useEffect(() => {\n resolvedBloc.props = props;\n }, [props]);\n\n return [state, resolvedBloc];\n }\n}\n\nconst useBloc = UseBlocClass.useBloc;\n\nexport default useBloc;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"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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"}
|
package/dist/blac-react.js
CHANGED
|
@@ -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
|
|
@@ -233,20 +232,10 @@ var Blac = /** @class */ (function () {
|
|
|
233
232
|
blocs.splice(index, 1);
|
|
234
233
|
}
|
|
235
234
|
};
|
|
236
|
-
Blac.prototype.setCustomProps = function (blocClass, props) {
|
|
237
|
-
if (!props)
|
|
238
|
-
return;
|
|
239
|
-
this.customPropsMap.set(blocClass, props);
|
|
240
|
-
};
|
|
241
|
-
Blac.prototype.getCustomProps = function (blocClass) {
|
|
242
|
-
var props = this.customPropsMap.get(blocClass);
|
|
243
|
-
this.customPropsMap.delete(blocClass);
|
|
244
|
-
return props;
|
|
245
|
-
};
|
|
246
235
|
Blac.prototype.createNewBlocInstance = function (blocClass, id, props) {
|
|
247
236
|
var base = blocClass;
|
|
248
237
|
var hasCreateMethod = Object.prototype.hasOwnProperty.call(blocClass, 'create');
|
|
249
|
-
|
|
238
|
+
base._propsOnInit = props;
|
|
250
239
|
var newBloc = hasCreateMethod ? base.create() : new blocClass();
|
|
251
240
|
newBloc.updateId(id);
|
|
252
241
|
if (base.isolated) {
|
|
@@ -318,7 +307,7 @@ var BlocBase = /** @class */ (function () {
|
|
|
318
307
|
this.isolated = false;
|
|
319
308
|
this.isBlacLive = true;
|
|
320
309
|
this.blac = Blac.getInstance();
|
|
321
|
-
|
|
310
|
+
// public props: P = {} as P;
|
|
322
311
|
this.createdAt = Date.now();
|
|
323
312
|
this.updateId = function (id) {
|
|
324
313
|
var originalId = _this.id;
|
|
@@ -340,8 +329,17 @@ var BlocBase = /** @class */ (function () {
|
|
|
340
329
|
this.blac.report(BlacEvent.BLOC_CREATED, this);
|
|
341
330
|
this.id = this.constructor.name;
|
|
342
331
|
this.isolated = this.constructor.isolated;
|
|
343
|
-
// this.onConnect?.();
|
|
344
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
|
+
});
|
|
345
343
|
Object.defineProperty(BlocBase.prototype, "state", {
|
|
346
344
|
get: function () {
|
|
347
345
|
return this._state;
|
|
@@ -371,11 +369,7 @@ var BlocBase = /** @class */ (function () {
|
|
|
371
369
|
/** @class */ ((function (_super) {
|
|
372
370
|
__extends(Cubit, _super);
|
|
373
371
|
function Cubit(initialState) {
|
|
374
|
-
|
|
375
|
-
_this.props = {};
|
|
376
|
-
var newProps = Blac.getInstance().getCustomProps(_this.constructor);
|
|
377
|
-
_this.props = __assign(__assign({}, _this.props), newProps);
|
|
378
|
-
return _this;
|
|
372
|
+
return _super.call(this, initialState) || this;
|
|
379
373
|
}
|
|
380
374
|
/**
|
|
381
375
|
* Update the state then will notify all observers
|
|
@@ -488,9 +482,9 @@ var UseBlocClass = /** @class */ (function () {
|
|
|
488
482
|
}
|
|
489
483
|
var _c = react.useMemo(function () { return externalBlocStore(resolvedBloc, dependencySelector); }, [resolvedBloc.createdAt]), subscribe = _c.subscribe, getSnapshot = _c.getSnapshot, getServerSnapshot = _c.getServerSnapshot;
|
|
490
484
|
var state = react.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
}, [props]);
|
|
485
|
+
// useEffect(() => {
|
|
486
|
+
// resolvedBloc.props = props;
|
|
487
|
+
// }, [props]);
|
|
494
488
|
return [state, resolvedBloc];
|
|
495
489
|
};
|
|
496
490
|
return UseBlocClass;
|
package/dist/blac-react.js.map
CHANGED
|
@@ -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 findIsolatedBlocInstance<B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n id: BlocInstanceId,\n ): InstanceType<BlocConstructor<B>> | undefined {\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) {\n return blocs.find((b) => b.id === id) as InstanceType<BlocConstructor<B>>;\n }\n return undefined;\n }\n\n unregisterIsolatedBlocInstance(bloc: BlocBase<any>): void {\n const blocClass = bloc.constructor;\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) {\n const index = blocs.findIndex((b) => b.id === bloc.id);\n blocs.splice(index, 1);\n }\n }\n\n setCustomProps(\n blocClass: BlocBaseAbstract,\n props: BlocProps | undefined,\n ): void {\n if (!props) return;\n this.customPropsMap.set(blocClass, props);\n }\n\n getCustomProps(blocClass: BlocBaseAbstract): BlocProps | undefined {\n const props = this.customPropsMap.get(blocClass);\n this.customPropsMap.delete(blocClass);\n return props;\n }\n\n createNewBlocInstance<B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n id: BlocInstanceId,\n props: BlocProps | undefined,\n ): InstanceType<BlocConstructor<B>> {\n const base = blocClass as unknown as BlocBaseAbstract;\n const hasCreateMethod = Object.prototype.hasOwnProperty.call(\n blocClass,\n 'create',\n );\n\n this.setCustomProps(base, props);\n const newBloc = hasCreateMethod ? base.create() : new blocClass();\n newBloc.updateId(id);\n\n if (base.isolated) {\n this.registerIsolatedBlocInstance(newBloc);\n return newBloc as InstanceType<BlocConstructor<B>>;\n }\n\n this.registerBlocInstance(newBloc);\n return newBloc as InstanceType<BlocConstructor<B>>;\n }\n\n getBloc<B extends BlocBase<S>, S>(\n blocClass: BlocConstructor<B>,\n options: {\n id?: BlocInstanceId;\n props?: BlocProps;\n reconnect?: boolean;\n } = {},\n ): InstanceType<BlocConstructor<B>> {\n const base = blocClass as unknown as BlocBaseAbstract;\n const isIsolated = base.isolated;\n const id = options.id || blocClass.name;\n const registered = isIsolated\n ? this.findIsolatedBlocInstance(blocClass, id)\n : this.findRegisteredBlocInstance(blocClass, id);\n const { reconnect } = options;\n if (registered) {\n if (reconnect) {\n registered.dispose();\n } else {\n return registered;\n }\n }\n return this.createNewBlocInstance(blocClass, id, options.props);\n }\n\n getAllBlocs = async <B extends BlocBase<any>>(\n blocClass: BlocConstructor<B>,\n options: {\n searchIsolated?: boolean;\n } = {},\n ): Promise<B[]> => {\n const base = blocClass as unknown as BlocBaseAbstract;\n\n const { searchIsolated = base.isolated } = options;\n\n if (searchIsolated) {\n const blocs = this.isolatedBlocMap.get(blocClass);\n if (blocs) return blocs as B[];\n } else {\n const blocs = Array.from(this.blocInstanceMap.values());\n return blocs.filter((b) => b instanceof blocClass) as B[];\n }\n return [];\n };\n\n configure = (config: BlacConfig) => {\n if (config.exposeBlacInstance) {\n // window.__blac = this;\n }\n };\n}\n\ndeclare global {\n interface Window {\n // __blac?: Blac;\n }\n}\n","export type BlacObserver<S> = (\n newState: S,\n oldState: S\n) => void | Promise<void>;\n\nexport class BlacObservable<S> {\n private _observers = new Set<BlacObserver<S>>();\n\n get size(): number {\n return this._observers.size;\n }\n\n subscribe(observer: BlacObserver<S>): () => void {\n this._observers.add(observer);\n return () => this.unsubscribe(observer);\n }\n\n unsubscribe(observer: BlacObserver<S>) {\n this._observers.delete(observer);\n }\n\n notify(newState: S, oldState: S) {\n this._observers.forEach((observer) => observer(newState, oldState));\n }\n\n dispose() {\n this._observers.clear();\n }\n}\n","import { Blac, BlacEvent } from './Blac';\nimport { BlacObservable } from './BlacObserver';\nimport { BlocProps } from './Cubit';\n\nexport type BlocInstanceId = string | number | undefined;\n\nexport abstract class BlocBase<S, P extends BlocProps = {}> {\n static isolated = false;\n static keepAlive = false;\n static create: <S extends any>() => BlocBase<S>;\n static isBlacClass = true;\n public isolated = false;\n public isBlacLive = true;\n public observer: BlacObservable<any>;\n public blac = Blac.getInstance();\n public id: BlocInstanceId;\n public props: P = {} as P;\n public readonly createdAt = Date.now();\n\n // onConnect(): void;\n // onDisconnect(): void;\n\n constructor(initialState: S) {\n this.observer = new BlacObservable();\n this._state = initialState;\n this.blac.report(BlacEvent.BLOC_CREATED, this);\n this.id = this.constructor.name;\n this.isolated = (this.constructor as any).isolated;\n // this.onConnect?.();\n }\n\n public _state: S;\n\n get state(): S {\n return this._state;\n }\n\n get name() {\n return this.constructor.name;\n }\n\n updateId = (id?: BlocInstanceId) => {\n const originalId = this.id;\n if (!id || id === originalId) return;\n this.id = id;\n };\n\n addEventListenerStateChange = (\n callback: (newState: S, oldState: S) => void,\n ): (() => void) => {\n this.blac.report(BlacEvent.LISTENER_ADDED, this);\n this.observer.subscribe(callback);\n return () => this.handleUnsubscribe(callback);\n };\n\n dispose() {\n this.blac.report(BlacEvent.BLOC_DISPOSED, this);\n this.isBlacLive = false;\n this.observer.dispose();\n // this.onDisconnect?.();\n }\n\n private handleUnsubscribe = (\n callback: (newState: S, oldState: S) => void,\n ): void => {\n this.observer.unsubscribe(callback);\n this.blac.report(BlacEvent.LISTENER_REMOVED, this);\n };\n}\n","import { BlocBase } from './BlocBase';\nimport { Blac, BlacEvent } from './Blac';\n\nexport type BlocProps = Record<string | number, any>;\n\nexport abstract class Cubit<S, P extends BlocProps = {}> extends BlocBase<S> {\n static create: () => Cubit<any, any>;\n props: P = {} as P;\n\n constructor(initialState: S) {\n super(initialState);\n const newProps = Blac.getInstance().getCustomProps(this.constructor as any);\n this.props = { ...this.props, ...newProps };\n }\n\n /**\n * Update the state then will notify all observers\n * @param state: new state\n **/\n emit(state: S): void {\n if (state === this.state) {\n return;\n }\n\n const oldState = this.state;\n const newState = state;\n this._state = state;\n this.observer.notify(newState, oldState);\n\n this.blac.report(BlacEvent.STATE_CHANGED, this, {\n newState,\n oldState,\n });\n }\n\n /**\n * Merges current state object with the parameter \"state\" and emits the new state\n * Warning: only works when the state is an object.\n * @param state: Partial state that should change\n **/\n patch(\n statePatch: S extends object ? Partial<S> : S,\n ignoreChangeCheck = false,\n ): void {\n let changes = false;\n if (!ignoreChangeCheck) {\n for (const key in statePatch) {\n const current = (this.state as any)[key];\n if (statePatch[key] !== current) {\n changes = true;\n break;\n }\n }\n }\n\n if (changes) {\n this.emit({ ...this.state, ...statePatch });\n }\n }\n}\n","import { BlocBase } from './BlocBase';\nimport { BlacEvent } from './Blac';\n\nexport abstract class Bloc<S, A> extends BlocBase<S> {\n static create: () => BlocBase<any>;\n\n /**\n * The reducer is called whenever a new action is emited,\n * @param action: the action from \"emit\"\n * @param state: the current state\n * @returns: the new state\n */\n abstract reducer(action: A, state: S): S;\n\n /**\n * Emit a new action, the reducer should digest the action and update the state accordingly\n * @param action: action t obe sent to the reducer\n */\n emit = (action: A): void => {\n const oldState = this.state;\n const newState = this.reducer(action, this.state);\n this._state = newState;\n this.observer.notify(newState, oldState);\n\n this.blac.report(BlacEvent.STATE_CHANGED, this, {\n newState,\n oldState,\n });\n };\n}\n","import {\n Blac,\n BlocBase,\n BlocConstructor,\n BlocInstanceId,\n BlocProps,\n CubitPropsType,\n ValueType,\n} from 'blac/src';\nimport { useEffect, useId, useMemo, useRef, useSyncExternalStore } from 'react';\nimport externalBlocStore from './externalBlocStore';\n\nexport type BlocHookData<B extends BlocBase<S>, S> = [\n value: ValueType<B>,\n instance: B,\n];\n\n// type BlocHookData<B extends BlocBase<S>, S> = [S, InstanceType<B>]; // B is the bloc class, S is the state of the bloc\n// type UseBlocClassResult<B, S> = BlocHookData<B, S>;\n\nexport interface BlocHookOptions<B extends BlocBase<S>, S> {\n id?: string;\n dependencySelector?: (state: ValueType<B>) => unknown;\n props?: CubitPropsType<B>;\n}\n\nexport type BlocHookDependencySelector<B extends BlocBase<S>, S> = (\n state: ValueType<B>,\n) => unknown;\n\nexport class UseBlocClass {\n // constructor, no options\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n options: BlocHookOptions<InstanceType<B>, S>,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n depsSelector: BlocHookDependencySelector<InstanceType<B>, S>,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n instanceId: string,\n ): BlocHookData<InstanceType<B>, S>;\n static useBloc<B extends BlocConstructor<BlocBase<S>>, S>(\n bloc: B,\n options?:\n | BlocHookOptions<InstanceType<B>, S>\n | BlocHookDependencySelector<InstanceType<B>, S>\n | BlocInstanceId,\n ): BlocHookData<InstanceType<B>, S> {\n const rid = useId();\n // default options\n let dependencySelector: BlocHookDependencySelector<InstanceType<B>, S> = (\n state: ValueType<InstanceType<B>>,\n ) => state;\n let blocId: BlocInstanceId | undefined;\n let props: BlocProps = {};\n\n // parse options\n\n // if options is a function, its a dependencySelector\n if (typeof options === 'function') {\n dependencySelector = options;\n }\n\n // if options is a string its an ID\n if (typeof options === 'string') {\n blocId = options;\n }\n\n if (typeof options === 'object') {\n dependencySelector = options.dependencySelector ?? dependencySelector;\n blocId = options.id;\n props = options.props ?? props;\n }\n\n const base = bloc as unknown as BlocBase<S>;\n const isIsolated = base.isolated;\n if (isIsolated) {\n blocId = rid;\n }\n\n // const now = Date.now();\n // const createdAt = useRef(now);\n // const dateChanged = now !== createdAt;\n\n // resolve the bloc, get the existing instance of the bloc or create a new one\n // const resolvedBloc = useMemo(\n // () =>\n\n const resolvedBloc = Blac.getInstance().getBloc(bloc, {\n id: blocId,\n props,\n reconnect: false,\n }) as InstanceType<B>;\n // [renderId.current],\n // );\n\n if (!resolvedBloc) {\n throw new Error(`useBloc: could not resolve: ${bloc.name || bloc}`);\n }\n\n const { subscribe, getSnapshot, getServerSnapshot } = useMemo(\n () => externalBlocStore(resolvedBloc, dependencySelector),\n [resolvedBloc.createdAt],\n );\n\n const state = useSyncExternalStore<ValueType<InstanceType<B>>>(\n subscribe,\n getSnapshot,\n getServerSnapshot,\n );\n\n useEffect(() => {\n resolvedBloc.props = props;\n }, [props]);\n\n return [state, resolvedBloc];\n }\n}\n\nconst useBloc = UseBlocClass.useBloc;\n\nexport default useBloc;\n"],"names":["useId","useMemo","useSyncExternalStore","useEffect"],"mappings":"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"}
|
|
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.
|
|
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": "*"
|