nexa-reactivity 0.4.3 → 0.4.5

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 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAWA,qBAAa,MAAM;IAKf,OAAO,CAAC,EAAE;IAJL,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAK;IACxB,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;gBAG3B,EAAE,EAAE,MAAM,IAAI,EACtB,SAAS,CAAC,EAAE,MAAM,IAAI;IAKxB,GAAG,IAAI,IAAI;IAWX,OAAO,IAAI,IAAI;CAGhB;AASD,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAE3D;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBzE;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAsB3E;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAQlC"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAyBA,qBAAa,MAAM;IAKf,OAAO,CAAC,EAAE;IAJL,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAK;IACxB,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;gBAG3B,EAAE,EAAE,MAAM,IAAI,EACtB,SAAS,CAAC,EAAE,MAAM,IAAI;IAKxB,GAAG,IAAI,IAAI;IAWX,OAAO,IAAI,IAAI;CAGhB;AASD,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAE3D;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBzE;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAsB3E;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAQlC"}
package/dist/core.js CHANGED
@@ -1,13 +1,18 @@
1
- const globalObj = typeof globalThis !== 'undefined' ? globalThis : (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {}));
2
- if (globalObj.__NEXA_REACTIVITY__) {
3
- console.warn('⚠️ Multiple instances of nexa-reactivity detected! This will break reactivity.');
1
+ const globalObj = (typeof globalThis !== 'undefined'
2
+ ? globalThis
3
+ : (typeof window !== 'undefined'
4
+ ? window
5
+ : (typeof self !== 'undefined' ? self : {})));
6
+ // Initialize shared state if not present
7
+ if (!globalObj.__NEXA_REACTIVITY_STATE__) {
8
+ globalObj.__NEXA_REACTIVITY_STATE__ = {
9
+ activeEffect: null,
10
+ batchDepth: 0,
11
+ pendingEffects: new Set(),
12
+ targetToEffectsMap: new WeakMap()
13
+ };
4
14
  }
5
- ;
6
- globalObj.__NEXA_REACTIVITY__ = true;
7
- let activeEffect = null;
8
- let batchDepth = 0;
9
- const pendingEffects = new Set();
10
- const targetToEffectsMap = new WeakMap();
15
+ const state = globalObj.__NEXA_REACTIVITY_STATE__;
11
16
  export class Effect {
12
17
  fn;
13
18
  deps = [];
@@ -18,13 +23,13 @@ export class Effect {
18
23
  }
19
24
  run() {
20
25
  cleanupDeps(this);
21
- const prev = activeEffect;
22
- activeEffect = this;
26
+ const prev = state.activeEffect;
27
+ state.activeEffect = this;
23
28
  try {
24
29
  this.fn();
25
30
  }
26
31
  finally {
27
- activeEffect = prev;
32
+ state.activeEffect = prev;
28
33
  }
29
34
  }
30
35
  dispose() {
@@ -38,29 +43,29 @@ function cleanupDeps(effect) {
38
43
  effect.deps = [];
39
44
  }
40
45
  export function getActiveEffect() {
41
- return activeEffect;
46
+ return state.activeEffect;
42
47
  }
43
48
  export function setActiveEffect(effect) {
44
- activeEffect = effect;
49
+ state.activeEffect = effect;
45
50
  }
46
51
  export function track(target, key) {
47
- if (!activeEffect)
52
+ if (!state.activeEffect)
48
53
  return;
49
- let depsMap = targetToEffectsMap.get(target);
54
+ let depsMap = state.targetToEffectsMap.get(target);
50
55
  if (!depsMap) {
51
56
  depsMap = new Map();
52
- targetToEffectsMap.set(target, depsMap);
57
+ state.targetToEffectsMap.set(target, depsMap);
53
58
  }
54
59
  let deps = depsMap.get(key);
55
60
  if (!deps) {
56
61
  deps = new Set();
57
62
  depsMap.set(key, deps);
58
63
  }
59
- deps.add(activeEffect);
60
- activeEffect.deps.push(deps);
64
+ deps.add(state.activeEffect);
65
+ state.activeEffect.deps.push(deps);
61
66
  }
62
67
  export function trigger(target, key) {
63
- const depsMap = targetToEffectsMap.get(target);
68
+ const depsMap = state.targetToEffectsMap.get(target);
64
69
  if (!depsMap)
65
70
  return;
66
71
  const deps = depsMap.get(key);
@@ -72,7 +77,7 @@ export function trigger(target, key) {
72
77
  if (effect.scheduler) {
73
78
  effect.scheduler();
74
79
  }
75
- pendingEffects.add(effect);
80
+ state.pendingEffects.add(effect);
76
81
  }
77
82
  else {
78
83
  if (effect.scheduler) {
@@ -85,23 +90,23 @@ export function trigger(target, key) {
85
90
  }
86
91
  }
87
92
  export function isBatching() {
88
- return batchDepth > 0;
93
+ return state.batchDepth > 0;
89
94
  }
90
95
  export function beginBatch() {
91
- batchDepth++;
96
+ state.batchDepth++;
92
97
  }
93
98
  export function endBatch() {
94
- batchDepth--;
95
- if (batchDepth <= 0) {
96
- batchDepth = 0;
99
+ state.batchDepth--;
100
+ if (state.batchDepth <= 0) {
101
+ state.batchDepth = 0;
97
102
  flushPending();
98
103
  return true;
99
104
  }
100
105
  return false;
101
106
  }
102
107
  function flushPending() {
103
- const effects = new Set(pendingEffects);
104
- pendingEffects.clear();
108
+ const effects = new Set(state.pendingEffects);
109
+ state.pendingEffects.clear();
105
110
  for (const effect of effects) {
106
111
  if (!effect.scheduler) {
107
112
  effect.run();
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexa-reactivity",
3
- "version": "0.4.3",
3
+ "version": "0.4.5",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",