@mappoh/nova 0.5.0 → 0.5.1

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.
@@ -39,6 +39,7 @@ export declare abstract class Component extends HTMLElement {
39
39
  private _renderScheduled;
40
40
  private _cleanups;
41
41
  private _instance;
42
+ private _instanceStrings;
42
43
  private _styleInjected;
43
44
  private _usesAdoptedSheets;
44
45
  private _afterRenderCallbacks;
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/component/component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/component/component.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  */
11
11
  import { SafeHTML } from './html';
12
12
  import { TemplateResult, createInstance } from './template';
13
+ import { _resetHookIndex } from './connect';
13
14
  /** Shadow DOM base reset — mirrors the document-level reset.css for encapsulated components.
14
15
  * NOTE: `*` must NOT set margin/padding — it bleeds into child custom elements' :host
15
16
  * styles via the encapsulation context cascade (outer styles beat :host). */
@@ -41,6 +42,7 @@ export class Component extends HTMLElement {
41
42
  _renderScheduled = false;
42
43
  _cleanups = [];
43
44
  _instance = null;
45
+ _instanceStrings = null;
44
46
  _styleInjected = false;
45
47
  _usesAdoptedSheets = false;
46
48
  _afterRenderCallbacks = [];
@@ -102,6 +104,8 @@ export class Component extends HTMLElement {
102
104
  this._renderScheduled = true;
103
105
  queueMicrotask(() => {
104
106
  this._renderScheduled = false;
107
+ if (!this._mounted)
108
+ return; // Component disconnected before microtask fired
105
109
  this._performRender();
106
110
  if (this._mounted)
107
111
  this.onUpdate();
@@ -145,13 +149,16 @@ export class Component extends HTMLElement {
145
149
  }
146
150
  /** Perform the actual DOM update */
147
151
  _performRender() {
152
+ // Reset useComputed call-order index before each render pass
153
+ _resetHookIndex(this);
148
154
  const content = this.render();
149
155
  if (content instanceof TemplateResult) {
150
156
  // Template parts engine — surgical DOM updates
151
157
  if (this._instance &&
158
+ this._instanceStrings === content.strings &&
152
159
  this._instance.nodes.length > 0 &&
153
160
  this._instance.nodes[0].parentNode) {
154
- // Same component, update Parts only
161
+ // Same template structure — update Parts only
155
162
  this._instance.update(content.values);
156
163
  }
157
164
  else {
@@ -168,12 +175,13 @@ export class Component extends HTMLElement {
168
175
  }
169
176
  }
170
177
  else {
171
- this._root.innerHTML = '';
178
+ this._root.textContent = '';
172
179
  }
173
180
  this._ensureStyles();
174
181
  const instance = createInstance(content);
175
182
  this._root.appendChild(instance.fragment);
176
183
  this._instance = instance;
184
+ this._instanceStrings = content.strings;
177
185
  }
178
186
  }
179
187
  else if (content instanceof SafeHTML) {
@@ -182,6 +190,7 @@ export class Component extends HTMLElement {
182
190
  this._instance.dispose();
183
191
  this._instance = null;
184
192
  }
193
+ this._instanceStrings = null;
185
194
  this._styleInjected = false;
186
195
  const ctor = this.constructor;
187
196
  if (ctor.shadow) {
@@ -211,6 +220,7 @@ export class Component extends HTMLElement {
211
220
  this._instance.dispose();
212
221
  this._instance = null;
213
222
  }
223
+ this._instanceStrings = null;
214
224
  this._styleInjected = false;
215
225
  // Run auto-cleanups registered by useStore/useSignal/useEffect
216
226
  for (const fn of this._cleanups)
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -19,6 +19,9 @@ interface SubscribableStore<T> {
19
19
  * When the value changes, the component re-renders.
20
20
  * Cleanup is automatic on disconnect.
21
21
  *
22
+ * IMPORTANT: Call from onMount(), NOT from render(). Each call creates a new
23
+ * subscription — calling from render() accumulates duplicate subscriptions.
24
+ *
22
25
  * @returns The current value of the signal.
23
26
  */
24
27
  export declare function useSignal<T>(component: Component, signal: Subscribable<T>): T;
@@ -26,6 +29,9 @@ export declare function useSignal<T>(component: Component, signal: Subscribable<
26
29
  * Connect a simple store to a component by key(s).
27
30
  * When any of the specified keys change, the component re-renders.
28
31
  * Cleanup is automatic on disconnect.
32
+ *
33
+ * IMPORTANT: Call from onMount(), NOT from render(). Each call creates new
34
+ * subscriptions — calling from render() accumulates duplicate subscriptions.
29
35
  */
30
36
  export declare function useStore<T extends Record<string, any>>(component: Component, store: SubscribableStore<T>, ...keys: (keyof T)[]): void;
31
37
  /**
@@ -56,29 +62,25 @@ export interface TickHandle {
56
62
  * @returns TickHandle with pause/resume/destroy controls
57
63
  */
58
64
  export declare function useTick(component: Component, callback: (elapsed: number) => void, intervalMs: number): TickHandle;
65
+ /** Reset the useComputed call-order index. Called from _performRender before render(). */
66
+ export declare function _resetHookIndex(component: object): void;
59
67
  /**
60
68
  * Memoize an expensive computation inside a component's render().
61
69
  * The function is only re-executed when dependencies change (shallow Object.is comparison).
70
+ * Uses call-order indexing (like React hooks) — safe with inline arrow functions.
71
+ * The call index is reset synchronously in _performRender before each render().
62
72
  * Cleanup is automatic on component disconnect.
63
73
  *
74
+ * Note: Like React hooks, useComputed calls must not be conditional or reordered between renders.
75
+ *
64
76
  * @param component The component to tie lifecycle to
65
77
  * @param fn The computation function
66
78
  * @param deps Dependency array — recompute when any dep changes
67
79
  * @returns The cached (or freshly computed) result
68
80
  */
69
81
  export declare function useComputed<T>(component: Component, fn: () => T, deps: unknown[]): T;
70
- export interface IntervalHandle {
71
- /** Pause the interval */
72
- pause(): void;
73
- /** Resume after pause */
74
- resume(): void;
75
- /** Change the interval duration (restarts the timer) */
76
- setInterval(ms: number): void;
77
- /** Whether the interval is currently running */
78
- readonly active: boolean;
79
- /** Stop and clean up */
80
- destroy(): void;
81
- }
82
+ /** Same shape as TickHandle — kept as a separate type for API clarity */
83
+ export type IntervalHandle = TickHandle;
82
84
  /**
83
85
  * Create an auto-cleaned interval tied to a component's lifecycle.
84
86
  * Unlike useTick, this does NOT pause when the tab is hidden — critical
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/component/connect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,yFAAyF;AACzF,UAAU,YAAY,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC;IACN,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC/C;AAED,kEAAkE;AAClE,UAAU,iBAAiB,CAAC,CAAC;IAC3B,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC5F;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAM7E;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACpD,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC3B,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GACnB,IAAI,CAON;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAKnF;AAID,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,KAAK,IAAI,IAAI,CAAC;IACd,yBAAyB;IACzB,MAAM,IAAI,IAAI,CAAC;IACf,wDAAwD;IACxD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,4EAA4E;IAC5E,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACrB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACnC,UAAU,EAAE,MAAM,GACjB,UAAU,CAuDZ;AAMD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,MAAM,CAAC,EACX,IAAI,EAAE,OAAO,EAAE,GACd,CAAC,CAkBH;AAID,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,KAAK,IAAI,IAAI,CAAC;IACd,yBAAyB;IACzB,MAAM,IAAI,IAAI,CAAC;IACf,wDAAwD;IACxD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,wBAAwB;IACxB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACnC,UAAU,EAAE,MAAM,GACjB,cAAc,CA0ChB;AAID;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAwBtE;AAID;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAOtE"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/component/connect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,yFAAyF;AACzF,UAAU,YAAY,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC;IACN,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC/C;AAED,kEAAkE;AAClE,UAAU,iBAAiB,CAAC,CAAC;IAC3B,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC5F;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAM7E;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACpD,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC3B,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GACnB,IAAI,CAON;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAKnF;AAID,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,KAAK,IAAI,IAAI,CAAC;IACd,yBAAyB;IACzB,MAAM,IAAI,IAAI,CAAC;IACf,wDAAwD;IACxD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,4EAA4E;IAC5E,OAAO,IAAI,IAAI,CAAC;CACjB;AAmED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACrB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACnC,UAAU,EAAE,MAAM,GACjB,UAAU,CAEZ;AAOD,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEvD;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,MAAM,CAAC,EACX,IAAI,EAAE,OAAO,EAAE,GACd,CAAC,CAqBH;AAID,yEAAyE;AACzE,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC;AAExC;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACnC,UAAU,EAAE,MAAM,GACjB,cAAc,CAEhB;AAID;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAmCtE;AAID;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAOtE"}
@@ -9,6 +9,9 @@
9
9
  * When the value changes, the component re-renders.
10
10
  * Cleanup is automatic on disconnect.
11
11
  *
12
+ * IMPORTANT: Call from onMount(), NOT from render(). Each call creates a new
13
+ * subscription — calling from render() accumulates duplicate subscriptions.
14
+ *
12
15
  * @returns The current value of the signal.
13
16
  */
14
17
  export function useSignal(component, signal) {
@@ -22,6 +25,9 @@ export function useSignal(component, signal) {
22
25
  * Connect a simple store to a component by key(s).
23
26
  * When any of the specified keys change, the component re-renders.
24
27
  * Cleanup is automatic on disconnect.
28
+ *
29
+ * IMPORTANT: Call from onMount(), NOT from render(). Each call creates new
30
+ * subscriptions — calling from render() accumulates duplicate subscriptions.
25
31
  */
26
32
  export function useStore(component, store, ...keys) {
27
33
  for (const key of keys) {
@@ -41,20 +47,12 @@ export function useEffect(component, fn) {
41
47
  component._addCleanup(cleanup);
42
48
  }
43
49
  }
44
- /**
45
- * Create an auto-cleaned interval tied to a component's lifecycle.
46
- * Automatically pauses when the document tab is hidden and resumes when visible.
47
- * Cleanup is automatic on component disconnect.
48
- *
49
- * @param component The component to tie lifecycle to
50
- * @param callback Function called on each tick. Receives elapsed ms since start.
51
- * @param intervalMs Interval in milliseconds
52
- * @returns TickHandle with pause/resume/destroy controls
53
- */
54
- export function useTick(component, callback, intervalMs) {
50
+ /** Shared factory for useTick and useInterval */
51
+ function createTimer(component, callback, intervalMs, pauseOnHidden) {
55
52
  let id = null;
56
53
  let running = false;
57
54
  let ms = intervalMs;
55
+ let destroyed = false;
58
56
  const startTime = Date.now();
59
57
  function tick() {
60
58
  callback(Date.now() - startTime);
@@ -74,20 +72,20 @@ export function useTick(component, callback, intervalMs) {
74
72
  id = null;
75
73
  }
76
74
  }
77
- // Pause when tab is hidden, resume when visible
78
- function onVisibility() {
79
- if (document.hidden) {
80
- if (running)
81
- stop();
82
- }
83
- else {
84
- if (!destroyed)
85
- start();
86
- }
75
+ let onVisibility = null;
76
+ if (pauseOnHidden) {
77
+ onVisibility = () => {
78
+ if (document.hidden) {
79
+ if (running)
80
+ stop();
81
+ }
82
+ else {
83
+ if (!destroyed)
84
+ start();
85
+ }
86
+ };
87
+ document.addEventListener('visibilitychange', onVisibility);
87
88
  }
88
- let destroyed = false;
89
- document.addEventListener('visibilitychange', onVisibility);
90
- // Start immediately
91
89
  start();
92
90
  const handle = {
93
91
  pause() { stop(); },
@@ -106,19 +104,44 @@ export function useTick(component, callback, intervalMs) {
106
104
  return;
107
105
  destroyed = true;
108
106
  stop();
109
- document.removeEventListener('visibilitychange', onVisibility);
107
+ if (onVisibility) {
108
+ document.removeEventListener('visibilitychange', onVisibility);
109
+ }
110
110
  },
111
111
  };
112
112
  component._addCleanup(handle.destroy);
113
113
  return handle;
114
114
  }
115
+ /**
116
+ * Create an auto-cleaned interval tied to a component's lifecycle.
117
+ * Automatically pauses when the document tab is hidden and resumes when visible.
118
+ * Cleanup is automatic on component disconnect.
119
+ *
120
+ * @param component The component to tie lifecycle to
121
+ * @param callback Function called on each tick. Receives elapsed ms since start.
122
+ * @param intervalMs Interval in milliseconds
123
+ * @returns TickHandle with pause/resume/destroy controls
124
+ */
125
+ export function useTick(component, callback, intervalMs) {
126
+ return createTimer(component, callback, intervalMs, true);
127
+ }
115
128
  /* ---- Computed / Memoization Helper ---- */
129
+ /** Call-order index for useComputed — reset by _resetHookIndex before each render */
130
+ const hookIdx = new WeakMap();
131
+ /** Reset the useComputed call-order index. Called from _performRender before render(). */
132
+ export function _resetHookIndex(component) {
133
+ hookIdx.set(component, 0);
134
+ }
116
135
  const computedCache = new WeakMap();
117
136
  /**
118
137
  * Memoize an expensive computation inside a component's render().
119
138
  * The function is only re-executed when dependencies change (shallow Object.is comparison).
139
+ * Uses call-order indexing (like React hooks) — safe with inline arrow functions.
140
+ * The call index is reset synchronously in _performRender before each render().
120
141
  * Cleanup is automatic on component disconnect.
121
142
  *
143
+ * Note: Like React hooks, useComputed calls must not be conditional or reordered between renders.
144
+ *
122
145
  * @param component The component to tie lifecycle to
123
146
  * @param fn The computation function
124
147
  * @param deps Dependency array — recompute when any dep changes
@@ -131,7 +154,9 @@ export function useComputed(component, fn, deps) {
131
154
  computedCache.set(component, cache);
132
155
  component._addCleanup(() => computedCache.delete(component));
133
156
  }
134
- const entry = cache.get(fn);
157
+ const key = hookIdx.get(component) ?? 0;
158
+ hookIdx.set(component, key + 1);
159
+ const entry = cache.get(key);
135
160
  if (entry) {
136
161
  const changed = deps.length !== entry.deps.length ||
137
162
  deps.some((d, i) => !Object.is(d, entry.deps[i]));
@@ -139,7 +164,7 @@ export function useComputed(component, fn, deps) {
139
164
  return entry.result;
140
165
  }
141
166
  const result = fn();
142
- cache.set(fn, { deps, result });
167
+ cache.set(key, { deps, result });
143
168
  return result;
144
169
  }
145
170
  /**
@@ -152,51 +177,7 @@ export function useComputed(component, fn, deps) {
152
177
  * @param intervalMs Interval in milliseconds
153
178
  */
154
179
  export function useInterval(component, callback, intervalMs) {
155
- let id = null;
156
- let running = false;
157
- let ms = intervalMs;
158
- let destroyed = false;
159
- const startTime = Date.now();
160
- function tick() {
161
- callback(Date.now() - startTime);
162
- }
163
- function start() {
164
- if (running)
165
- return;
166
- running = true;
167
- id = setInterval(tick, ms);
168
- }
169
- function stop() {
170
- if (!running)
171
- return;
172
- running = false;
173
- if (id !== null) {
174
- clearInterval(id);
175
- id = null;
176
- }
177
- }
178
- start();
179
- const handle = {
180
- pause() { stop(); },
181
- resume() { if (!destroyed)
182
- start(); },
183
- setInterval(newMs) {
184
- ms = newMs;
185
- if (running) {
186
- stop();
187
- start();
188
- }
189
- },
190
- get active() { return running; },
191
- destroy() {
192
- if (destroyed)
193
- return;
194
- destroyed = true;
195
- stop();
196
- },
197
- };
198
- component._addCleanup(handle.destroy);
199
- return handle;
180
+ return createTimer(component, callback, intervalMs, false);
200
181
  }
201
182
  /* ---- Scroll Helper ---- */
202
183
  /**
@@ -208,7 +189,17 @@ export function useInterval(component, callback, intervalMs) {
208
189
  * @param selector CSS selector for the scrollable element within shadow DOM
209
190
  */
210
191
  export function useScroll(component, selector) {
192
+ let cleanup = null;
193
+ let disposed = false;
194
+ // Register cleanup immediately so fast unmount is safe
195
+ component._addCleanup(() => {
196
+ disposed = true;
197
+ if (cleanup)
198
+ cleanup();
199
+ });
211
200
  queueMicrotask(() => {
201
+ if (disposed)
202
+ return; // Component already disconnected
212
203
  const root = component._root;
213
204
  const el = root.querySelector(selector);
214
205
  if (!el)
@@ -227,7 +218,7 @@ export function useScroll(component, selector) {
227
218
  }
228
219
  }
229
220
  component.addEventListener('wheel', onWheel, { passive: false });
230
- component._addCleanup(() => component.removeEventListener('wheel', onWheel));
221
+ cleanup = () => component.removeEventListener('wheel', onWheel);
231
222
  });
232
223
  }
233
224
  /* ---- After-Render Hook ---- */
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../src/component/portal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAoC,MAAM,YAAY,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,kCAAkC;IAClC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC;IAC7D,kDAAkD;IAClD,OAAO,IAAI,IAAI,CAAC;CACjB;AAsBD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,cAAc,EAC9C,OAAO,CAAC,EAAE,aAAa,GACtB,cAAc,CAmBhB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,cAAc,EAC9C,OAAO,CAAC,EAAE,aAAa,GACtB,cAAc,CAIhB"}
1
+ {"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../src/component/portal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAoC,MAAM,YAAY,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,kCAAkC;IAClC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC;IAC7D,kDAAkD;IAClD,OAAO,IAAI,IAAI,CAAC;CACjB;AAmCD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,cAAc,EAC9C,OAAO,CAAC,EAAE,aAAa,GACtB,cAAc,CAqBhB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,cAAc,EAC9C,OAAO,CAAC,EAAE,aAAa,GACtB,cAAc,CAIhB"}
@@ -5,7 +5,16 @@
5
5
  * Useful for tooltips, dropdowns, and modals that need to escape overflow clipping.
6
6
  */
7
7
  import { TemplateResult, createInstance } from './template';
8
- function renderInto(wrapper, content, prevInstance) {
8
+ function renderInto(wrapper, content, prevInstance, prevStrings) {
9
+ // Surgical update: reuse Parts Engine instance when same template structure
10
+ if (content instanceof TemplateResult &&
11
+ prevInstance &&
12
+ prevStrings === content.strings &&
13
+ prevInstance.nodes[0]?.parentNode) {
14
+ prevInstance.update(content.values);
15
+ return prevInstance;
16
+ }
17
+ // Different content type, different template, or first render — full replace
9
18
  if (prevInstance)
10
19
  prevInstance.dispose();
11
20
  wrapper.textContent = '';
@@ -31,12 +40,14 @@ export function createPortal(content, options) {
31
40
  wrapper.setAttribute('data-nova-portal', '');
32
41
  if (options?.class)
33
42
  wrapper.className = options.class;
34
- let instance = renderInto(wrapper, content, null);
43
+ let instance = renderInto(wrapper, content, null, null);
44
+ let prevStrings = content instanceof TemplateResult ? content.strings : null;
35
45
  target.appendChild(wrapper);
36
46
  return {
37
47
  get container() { return wrapper; },
38
48
  update(c) {
39
- instance = renderInto(wrapper, c, instance);
49
+ instance = renderInto(wrapper, c, instance, prevStrings);
50
+ prevStrings = c instanceof TemplateResult ? c.strings : null;
40
51
  },
41
52
  destroy() {
42
53
  if (instance) {
@@ -1 +1 @@
1
- {"version":3,"file":"portal.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAoB,cAAc,EAAE,MAAM,YAAY,CAAC;AAkB9E,SAAS,UAAU,CACjB,OAAoB,EACpB,OAA8C,EAC9C,YAAqC;IAErC,IAAI,YAAY;QAAE,YAAY,CAAC,OAAO,EAAE,CAAC;IACzC,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC;IAEzB,IAAI,OAAO,YAAY,cAAc,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,OAA8C,EAC9C,OAAuB;IAEvB,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,OAAO,EAAE,KAAK;QAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAEtD,IAAI,QAAQ,GAA4B,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3E,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAE5B,OAAO;QACL,IAAI,SAAS,KAAK,OAAO,OAAO,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,CAAwC;YAC7C,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO;YACL,IAAI,QAAQ,EAAE,CAAC;gBAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAAC,QAAQ,GAAG,IAAI,CAAC;YAAC,CAAC;YACtD,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,SAAoB,EACpB,OAA8C,EAC9C,OAAuB;IAEvB,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"portal.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAoB,cAAc,EAAE,MAAM,YAAY,CAAC;AAkB9E,SAAS,UAAU,CACjB,OAAoB,EACpB,OAA8C,EAC9C,YAAqC,EACrC,WAAwC;IAExC,4EAA4E;IAC5E,IACE,OAAO,YAAY,cAAc;QACjC,YAAY;QACZ,WAAW,KAAK,OAAO,CAAC,OAAO;QAC/B,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EACjC,CAAC;QACD,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,6EAA6E;IAC7E,IAAI,YAAY;QAAE,YAAY,CAAC,OAAO,EAAE,CAAC;IACzC,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC;IAEzB,IAAI,OAAO,YAAY,cAAc,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,OAA8C,EAC9C,OAAuB;IAEvB,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,OAAO,EAAE,KAAK;QAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAEtD,IAAI,QAAQ,GAA4B,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjF,IAAI,WAAW,GAAgC,OAAO,YAAY,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1G,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAE5B,OAAO;QACL,IAAI,SAAS,KAAK,OAAO,OAAO,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,CAAwC;YAC7C,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YACzD,WAAW,GAAG,CAAC,YAAY,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D,CAAC;QACD,OAAO;YACL,IAAI,QAAQ,EAAE,CAAC;gBAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAAC,QAAQ,GAAG,IAAI,CAAC;YAAC,CAAC;YACtD,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,SAAoB,EACpB,OAA8C,EAC9C,OAAuB;IAEvB,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"slot-styles.d.ts","sourceRoot":"","sources":["../../src/component/slot-styles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAkCrE"}
1
+ {"version":3,"file":"slot-styles.d.ts","sourceRoot":"","sources":["../../src/component/slot-styles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA+D7C;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAwBrE"}
@@ -6,6 +6,60 @@
6
6
  */
7
7
  /** Track instance counts per tag for cleanup */
8
8
  const instanceCounts = new Map();
9
+ /** Scope CSS selectors with a tag prefix. Handles comma-separated selectors,
10
+ * @media/@supports (scopes inner selectors), and @keyframes/@font-face (leaves alone). */
11
+ function scopeCSS(css, tag) {
12
+ // Strip CSS comments to prevent braces inside comments from corrupting the parser
13
+ css = css.replace(/\/\*[\s\S]*?\*\//g, '');
14
+ let result = '';
15
+ let i = 0;
16
+ let depth = 0;
17
+ let atSkipDepth = -1; // brace depth when we entered a non-scopable @-rule
18
+ while (i < css.length) {
19
+ const openIdx = css.indexOf('{', i);
20
+ const closeIdx = css.indexOf('}', i);
21
+ if (openIdx === -1 && closeIdx === -1) {
22
+ result += css.slice(i);
23
+ break;
24
+ }
25
+ if (openIdx !== -1 && (closeIdx === -1 || openIdx < closeIdx)) {
26
+ const before = css.slice(i, openIdx);
27
+ const trimmed = before.trim();
28
+ if (trimmed.startsWith('@')) {
29
+ result += before + '{';
30
+ // @keyframes and @font-face: don't scope inner content
31
+ if (/^@(keyframes|font-face)\b/i.test(trimmed)) {
32
+ atSkipDepth = depth;
33
+ }
34
+ }
35
+ else if (atSkipDepth >= 0) {
36
+ // Inside non-scopable @-rule (e.g. keyframe stops)
37
+ result += before + '{';
38
+ }
39
+ else {
40
+ // Normal selector — prefix each comma-separated part
41
+ const leading = before.match(/^(\s*)/)?.[1] ?? '';
42
+ const scoped = trimmed.split(',')
43
+ .map(s => s.trim())
44
+ .filter(Boolean)
45
+ .map(s => `${tag} ${s}`)
46
+ .join(', ');
47
+ result += leading + scoped + ' {';
48
+ }
49
+ depth++;
50
+ i = openIdx + 1;
51
+ }
52
+ else {
53
+ result += css.slice(i, closeIdx + 1);
54
+ depth--;
55
+ if (atSkipDepth >= 0 && depth <= atSkipDepth) {
56
+ atSkipDepth = -1;
57
+ }
58
+ i = closeIdx + 1;
59
+ }
60
+ }
61
+ return result;
62
+ }
9
63
  /**
10
64
  * Inject styles into the light DOM scoped to a component's tag name.
11
65
  * Allows styling of slotted content at any depth (not just direct children).
@@ -22,16 +76,9 @@ export function slotStyles(component, styles) {
22
76
  instanceCounts.set(tag, (instanceCounts.get(tag) ?? 0) + 1);
23
77
  // Inject once per tag
24
78
  if (!document.getElementById(styleId)) {
25
- // Scope all top-level selectors to this component's tag
26
- const scoped = styles.replace(/([^{}@]+)\{/g, (match, selector) => {
27
- // Don't scope @-rules (media queries, keyframes, etc.)
28
- if (selector.trim().startsWith('@'))
29
- return match;
30
- return `${tag} ${selector.trim()} {`;
31
- });
32
79
  const style = document.createElement('style');
33
80
  style.id = styleId;
34
- style.textContent = scoped;
81
+ style.textContent = scopeCSS(styles, tag);
35
82
  document.head.appendChild(style);
36
83
  }
37
84
  component._addCleanup(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"slot-styles.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,gDAAgD;AAChD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,SAAoB,EAAE,MAAc;IAC7D,MAAM,GAAG,GAAI,SAAS,CAAC,WAAgC,CAAC,GAAG,CAAC;IAC5D,MAAM,OAAO,GAAG,aAAa,GAAG,EAAE,CAAC;IAEnC,uBAAuB;IACvB,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5D,sBAAsB;IACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,wDAAwD;QACxD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAC3B,cAAc,EACd,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;YAC1B,uDAAuD;YACvD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAClD,OAAO,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;QACvC,CAAC,CACF,CAAC;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC;QACnB,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE;QACzB,MAAM,KAAK,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACjD,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/B,mDAAmD;QACnD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"slot-styles.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mappoh/nova",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Nova — a lightweight web engine built on Web Components",
5
5
  "license": "MIT",
6
6
  "author": "mappoh",