@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.
- package/dist/component/component.d.ts +1 -0
- package/dist/component/component.d.ts.map +1 -1
- package/dist/component/component.js +12 -2
- package/dist/component/component.js.map +1 -1
- package/dist/component/connect.d.ts +14 -12
- package/dist/component/connect.d.ts.map +1 -1
- package/dist/component/connect.js +64 -73
- package/dist/component/connect.js.map +1 -1
- package/dist/component/portal.d.ts.map +1 -1
- package/dist/component/portal.js +14 -3
- package/dist/component/portal.js.map +1 -1
- package/dist/component/slot-styles.d.ts.map +1 -1
- package/dist/component/slot-styles.js +55 -8
- package/dist/component/slot-styles.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/component/component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,cAAc,EAAoC,MAAM,YAAY,CAAC;
|
|
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
|
|
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.
|
|
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
|
-
|
|
71
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA;;;;;GAKG;AAeH
|
|
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;
|
|
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"}
|
package/dist/component/portal.js
CHANGED
|
@@ -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;
|
|
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;
|
|
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 =
|
|
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
|
|
1
|
+
{"version":3,"file":"slot-styles.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|