@blac/react 2.0.0-rc.1 → 2.0.0-rc.11

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 +0,0 @@
1
- {"version":3,"file":"useBloc.js","sourceRoot":"","sources":["../src/useBloc.ts"],"names":[],"mappings":";;AAAA,qCAMoB;AACpB,iCAAyE;AAUzE;;GAEG;AACH,SAAS,OAAO,CACd,eAAkB,EAClB,OAMC;IAED,oDAAoD;IACpD,MAAM,WAAW,GAAG,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC;IAC9B,WAAW,CAAC,OAAO,EAAE,CAAC;IAEtB,MAAM,YAAY,GAAG,IAAA,cAAM,EAAS,EAAE,CAAC,CAAC;IAExC,mCAAmC;IACnC,MAAM,aAAa,GAAG,IAAA,cAAM,EAAS,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC3B,6CAA6C;QAC7C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEhC,4DAA4D;YAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAEtB,6DAA6D;gBAC7D,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAElE,+DAA+D;gBAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBACnD,CAAC;gBAED,uCAAuC;gBACvC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;oBAClD,uCAAuC;gBACzC,CAAC;gBAED,IACE,KAAK;oBACL,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;oBACrB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;oBAC3B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAC3B,CAAC;oBACD,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM;gBACR,CAAC;YACH,CAAC;YAED,iEAAiE;YACjE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC;gBACtC,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACtC,0DAA0D;oBAC1D,aAAa,CAAC,OAAO;wBACnB,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACN,aAAa,CAAC,OAAO,GAAG,WAAW,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,aAAa,CAAC,OAAO,GAAG,WAAW,CAAC;QACtC,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,iBAAiB,GAAG,OAAO,CAAC;IAElC,mDAAmD;IACnD,MAAM,WAAW,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC/B,IAAI,iBAAiB,EAAE,UAAU,EAAE,CAAC;YAClC,OAAO,iBAAiB,CAAC,UAAU,CAAC;QACtC,CAAC;QACD,IAAI,iBAAiB,EAAE,WAAW,EAAE,CAAC;YACnC,OAAO,IAAA,kCAA2B,EAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;QAC5E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;IAEpE,uEAAuE;IACvE,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC3B,MAAM,UAAU,GAAG,IAAI,kBAAW,CAChC;YACE,YAAY,EAAE,YAAY;YAC1B,eAAe;SAChB,EACD;YACE,UAAU,EAAE,iBAAiB,EAAE,UAAU;YACzC,YAAY,EAAE,iBAAiB,EAAE,YAAY;YAC7C,WAAW,EAAE,iBAAiB,EAAE,WAAW;YAC3C,OAAO,EAAE,iBAAiB,EAAE,OAAO;YACnC,SAAS,EAAE,iBAAiB,EAAE,SAAS;SACxC,CACF,CAAC;QACF,0CAA0C;QAC1C,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1B,UAAU,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,6CAA6C;IAEjF,qEAAqE;IACrE,gDAAgD;IAChD,OAAO,CAAC,aAAa,EAAE,CAAC;IAExB,8BAA8B;IAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;IAEvB,qGAAqG;IACrG,MAAM,kBAAkB,GAAG,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC;IACrC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,OAAO,GAAG;YAChB,UAAU,EAAE,iBAAiB,EAAE,UAAU;YACzC,YAAY,EAAE,iBAAiB,EAAE,YAAY;YAC7C,WAAW,EAAE,iBAAiB,EAAE,WAAW;YAC3C,OAAO,EAAE,iBAAiB,EAAE,OAAO;YACnC,SAAS,EAAE,iBAAiB,EAAE,SAAS;SACxC,CAAC;IACJ,CAAC,EAAE;QACD,OAAO;QACP,iBAAiB,EAAE,YAAY;QAC/B,iBAAiB,EAAE,OAAO;QAC1B,iBAAiB,EAAE,SAAS;KAC7B,CAAC,CAAC;IAEH,4CAA4C;IAC5C,MAAM,gBAAgB,GAAG,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC;IACnC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,wDAAwD;IACxD,MAAM,kBAAkB,GAAG,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC7B,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAE3B,OAAO,CAAC,aAAyB,EAAE,EAAE;YACnC,kBAAkB,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC;gBAC7C,QAAQ,EAAE,GAAG,EAAE;oBACb,aAAa,EAAE,CAAC;gBAClB,CAAC;aACF,CAAC,CAAC;YAEH,OAAO,GAAG,EAAE;gBACV,WAAW,EAAE,CAAC;YAChB,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,aAAa,GAAG,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC;IAChC,MAAM,mBAAmB,GAAG,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC;IAEtC,MAAM,QAAQ,GAA+B,IAAA,4BAAoB,EAC/D,SAAS;IACT,eAAe;IACf,GAAG,EAAE;QACH,aAAa,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,+CAA+C;IAC/C,GAAG,EAAE;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;QAClC,mBAAmB,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC,CACF,CAAC;IAEF,wDAAwD;IACxD,MAAM,cAAc,GAAG,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC9B,cAAc,CAAC,OAAO,EAAE,CAAC;QACzB,4EAA4E;QAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3C,OAAO,UAAU,CAAC;IACpB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAExB,MAAM,aAAa,GAAG,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC7B,aAAa,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,wBAAwB;IACxB,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACjC,CAAC;AAED,kBAAe,OAAO,CAAC"}
@@ -1,31 +0,0 @@
1
- import { BlocBase, BlocConstructor, BlocState } from '@blac/core';
2
- interface ExternalStoreOptions<B extends BlocBase<any>> {
3
- id?: string;
4
- staticProps?: ConstructorParameters<BlocConstructor<B>>[0];
5
- selector?: (currentState: BlocState<B>, previousState: BlocState<B>, instance: B) => any[];
6
- }
7
- interface ExternalStore<T> {
8
- getSnapshot: () => T | undefined;
9
- subscribe: (listener: () => void) => () => void;
10
- getServerSnapshot?: () => T | undefined;
11
- }
12
- interface ExternalBlocStoreResult<B extends BlocBase<any>> {
13
- externalStore: ExternalStore<BlocState<B>>;
14
- instance: {
15
- current: B | null;
16
- };
17
- usedKeys: {
18
- current: Set<string>;
19
- };
20
- usedClassPropKeys: {
21
- current: Set<string>;
22
- };
23
- rid: string;
24
- }
25
- /**
26
- * Hook for using an external bloc store
27
- * Provides low-level access to bloc instances for use with React's useSyncExternalStore
28
- */
29
- export default function useExternalBlocStore<B extends BlocConstructor<BlocBase<any>>>(blocConstructor: B, options?: ExternalStoreOptions<InstanceType<B>>): ExternalBlocStoreResult<InstanceType<B>>;
30
- export {};
31
- //# sourceMappingURL=useExternalBlocStore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useExternalBlocStore.d.ts","sourceRoot":"","sources":["../src/useExternalBlocStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,eAAe,EACf,SAAS,EAEV,MAAM,YAAY,CAAC;AAGpB,UAAU,oBAAoB,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC;IACpD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,QAAQ,CAAC,EAAE,CACT,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,EAC1B,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,EAC3B,QAAQ,EAAE,CAAC,KACR,GAAG,EAAE,CAAC;CACZ;AAED,UAAU,aAAa,CAAC,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,iBAAiB,CAAC,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CACzC;AAED,UAAU,uBAAuB,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC;IACvD,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,QAAQ,EAAE;QAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC;IAChC,QAAQ,EAAE;QAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;IACnC,iBAAiB,EAAE;QAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;IAC5C,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,CAAC,SAAS,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAExC,eAAe,EAAE,CAAC,EAClB,OAAO,GAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAM,GAClD,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAsG1C"}
@@ -1,93 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = useExternalBlocStore;
4
- const core_1 = require("@blac/core");
5
- const react_1 = require("react");
6
- /**
7
- * Hook for using an external bloc store
8
- * Provides low-level access to bloc instances for use with React's useSyncExternalStore
9
- */
10
- function useExternalBlocStore(blocConstructor, options = {}) {
11
- const ridRef = (0, react_1.useRef)(`external-${(0, core_1.generateUUID)()}`);
12
- const usedKeysRef = (0, react_1.useRef)(new Set());
13
- const usedClassPropKeysRef = (0, react_1.useRef)(new Set());
14
- const instanceRef = (0, react_1.useRef)(null);
15
- // Get or create bloc instance
16
- const bloc = (0, react_1.useMemo)(() => {
17
- const blac = core_1.Blac.getInstance();
18
- const base = blocConstructor;
19
- // For isolated blocs, always create a new instance
20
- if (base.constructor.isolated ||
21
- blocConstructor.isolated) {
22
- const newBloc = new blocConstructor(options?.staticProps);
23
- const uniqueId = options?.id || `${blocConstructor.name}_${(0, core_1.generateUUID)()}`;
24
- newBloc._id = uniqueId;
25
- blac.activateBloc(newBloc);
26
- return newBloc;
27
- }
28
- // For shared blocs, use the existing getBloc logic
29
- return blac.getBloc(blocConstructor, {
30
- id: options?.id,
31
- constructorParams: options?.staticProps,
32
- });
33
- }, [blocConstructor, options?.id]);
34
- // Create external store interface
35
- const externalStore = (0, react_1.useMemo)(() => ({
36
- getSnapshot: () => {
37
- const currentInstance = instanceRef.current;
38
- return currentInstance ? currentInstance.state : undefined;
39
- },
40
- subscribe: (listener) => {
41
- const currentInstance = instanceRef.current;
42
- if (!currentInstance) {
43
- // Return no-op unsubscribe if no instance
44
- return () => { };
45
- }
46
- // Wrap listener to handle errors gracefully
47
- const safeListener = (newState, oldState) => {
48
- try {
49
- // Reset tracking keys on each listener call
50
- usedKeysRef.current.clear();
51
- usedClassPropKeysRef.current.clear();
52
- // Call selector if provided
53
- if (options.selector && currentInstance) {
54
- options.selector(newState, oldState, currentInstance);
55
- }
56
- // Call listener with state if it expects it
57
- if (listener.length > 0) {
58
- listener(newState);
59
- }
60
- else {
61
- listener();
62
- }
63
- }
64
- catch (error) {
65
- console.error('Listener error in useExternalBlocStore:', error);
66
- // Don't rethrow to prevent breaking other listeners
67
- }
68
- };
69
- // Store the previous state for the listener
70
- let previousState = currentInstance.state;
71
- const unsubscribe = currentInstance.subscribe((state) => {
72
- const oldState = previousState;
73
- previousState = state;
74
- safeListener(state, oldState);
75
- });
76
- return unsubscribe;
77
- },
78
- getServerSnapshot: () => {
79
- const currentInstance = instanceRef.current;
80
- return currentInstance ? currentInstance.state : undefined;
81
- },
82
- }), []);
83
- // Update instance ref
84
- instanceRef.current = bloc;
85
- return {
86
- externalStore,
87
- instance: instanceRef,
88
- usedKeys: usedKeysRef,
89
- usedClassPropKeys: usedClassPropKeysRef,
90
- rid: ridRef.current,
91
- };
92
- }
93
- //# sourceMappingURL=useExternalBlocStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useExternalBlocStore.js","sourceRoot":"","sources":["../src/useExternalBlocStore.ts"],"names":[],"mappings":"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"}