@fukict/basic 0.1.0 → 0.1.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.
Files changed (37) hide show
  1. package/README.md +489 -0
  2. package/dist/component-class/fukict.d.ts +0 -5
  3. package/dist/component-class/fukict.d.ts.map +1 -1
  4. package/dist/component-class/fukict.js +0 -5
  5. package/dist/component-class/fukict.js.map +1 -1
  6. package/dist/component-function/define.d.ts +1 -1
  7. package/dist/component-function/define.d.ts.map +1 -1
  8. package/dist/component-function/define.js +1 -4
  9. package/dist/component-function/define.js.map +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/metadata.d.ts +1 -1
  12. package/dist/metadata.js +1 -1
  13. package/dist/renderer/class-helpers.d.ts +19 -0
  14. package/dist/renderer/class-helpers.d.ts.map +1 -0
  15. package/dist/renderer/class-helpers.js +55 -0
  16. package/dist/renderer/class-helpers.js.map +1 -0
  17. package/dist/renderer/create.d.ts.map +1 -1
  18. package/dist/renderer/create.js +19 -43
  19. package/dist/renderer/create.js.map +1 -1
  20. package/dist/renderer/diff/class.d.ts +8 -1
  21. package/dist/renderer/diff/class.d.ts.map +1 -1
  22. package/dist/renderer/diff/class.js +14 -7
  23. package/dist/renderer/diff/class.js.map +1 -1
  24. package/dist/renderer/diff/element.d.ts.map +1 -1
  25. package/dist/renderer/diff/element.js +11 -7
  26. package/dist/renderer/diff/element.js.map +1 -1
  27. package/dist/renderer/diff/fragment.d.ts.map +1 -1
  28. package/dist/renderer/diff/fragment.js +6 -3
  29. package/dist/renderer/diff/fragment.js.map +1 -1
  30. package/dist/renderer/diff/function.d.ts.map +1 -1
  31. package/dist/renderer/diff/function.js +13 -12
  32. package/dist/renderer/diff/function.js.map +1 -1
  33. package/dist/renderer/vnode-helpers.d.ts +35 -0
  34. package/dist/renderer/vnode-helpers.d.ts.map +1 -0
  35. package/dist/renderer/vnode-helpers.js +36 -0
  36. package/dist/renderer/vnode-helpers.js.map +1 -0
  37. package/package.json +1 -1
package/README.md ADDED
@@ -0,0 +1,489 @@
1
+ # @fukict/basic
2
+
3
+ Lightweight DOM rendering engine with compile-time optimization and zero dependencies.
4
+
5
+ ## Features
6
+
7
+ - **Lightweight**: Core rendering engine with minimal overhead
8
+ - **VNode System**: Virtual DOM with efficient diff algorithm
9
+ - **Component Model**: Both class and function components
10
+ - **Lifecycle Hooks**: Full lifecycle management (mounted, beforeUnmount, etc.)
11
+ - **Refs Management**: Component and DOM element references
12
+ - **Slots System**: Children composition with named slots
13
+ - **Event Handling**: Optimized event delegation with `on:` prefix
14
+ - **TypeScript**: Complete type definitions with excellent IDE support
15
+ - **Zero Dependencies**: No external runtime dependencies
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ pnpm add @fukict/basic
21
+ pnpm add -D @fukict/babel-preset @fukict/vite-plugin
22
+ ```
23
+
24
+ ## Quick Start
25
+
26
+ ### Vite Setup
27
+
28
+ ```typescript
29
+ // vite.config.ts
30
+ import fukict from '@fukict/vite-plugin';
31
+
32
+ import { defineConfig } from 'vite';
33
+
34
+ export default defineConfig({
35
+ plugins: [fukict()],
36
+ });
37
+ ```
38
+
39
+ ### TypeScript Configuration
40
+
41
+ ```json
42
+ {
43
+ "compilerOptions": {
44
+ "jsx": "preserve",
45
+ "jsxImportSource": "@fukict/basic"
46
+ }
47
+ }
48
+ ```
49
+
50
+ ## Component Types
51
+
52
+ ### Class Components
53
+
54
+ Extend `Fukict` for components with lifecycle and state:
55
+
56
+ ```tsx
57
+ import { Fukict } from '@fukict/basic';
58
+
59
+ interface CounterProps {
60
+ initial?: number;
61
+ }
62
+
63
+ class Counter extends Fukict<CounterProps> {
64
+ private count = this.props.initial ?? 0;
65
+ private timer?: number;
66
+
67
+ increment = () => {
68
+ this.count++;
69
+ this.update(this.props);
70
+ };
71
+
72
+ mounted() {
73
+ console.log('Component mounted');
74
+ this.timer = setInterval(this.increment, 1000);
75
+ }
76
+
77
+ beforeUnmount() {
78
+ console.log('Component will unmount');
79
+ clearInterval(this.timer);
80
+ }
81
+
82
+ render() {
83
+ return (
84
+ <div>
85
+ <p>Count: {this.count}</p>
86
+ <button on:click={this.increment}>Increment</button>
87
+ </div>
88
+ );
89
+ }
90
+ }
91
+ ```
92
+
93
+ ### Function Components
94
+
95
+ Use `defineFukict()` for simple, stateless components:
96
+
97
+ ```tsx
98
+ import { defineFukict } from '@fukict/basic';
99
+
100
+ interface GreetingProps {
101
+ name: string;
102
+ age?: number;
103
+ }
104
+
105
+ const Greeting = defineFukict<GreetingProps>(({ name, age }) => (
106
+ <div>
107
+ <h1>Hello {name}!</h1>
108
+ {age && <p>You are {age} years old</p>}
109
+ </div>
110
+ ));
111
+ ```
112
+
113
+ ## Core API
114
+
115
+ ### Rendering
116
+
117
+ ```tsx
118
+ import { attach, replaceNode, unmount } from '@fukict/basic';
119
+
120
+ // Attach component to DOM
121
+ const vnode = attach(<App />, document.getElementById('app')!);
122
+
123
+ // Replace component
124
+ replaceNode(<NewApp />, vnode);
125
+
126
+ // Unmount component
127
+ unmount(vnode);
128
+ ```
129
+
130
+ ### VNode Creation
131
+
132
+ ```tsx
133
+ import { h, hyperscript, Fragment } from '@fukict/basic';
134
+
135
+ // Using JSX (recommended)
136
+ const element = <div class="container">Content</div>;
137
+
138
+ // Using hyperscript
139
+ const element = h('div', { class: 'container' }, ['Content']);
140
+
141
+ // Fragment
142
+ const list = (
143
+ <Fragment>
144
+ <li>Item 1</li>
145
+ <li>Item 2</li>
146
+ </Fragment>
147
+ );
148
+ ```
149
+
150
+ ### Event Handling
151
+
152
+ Use `on:` prefix for event listeners:
153
+
154
+ ```tsx
155
+ class Form extends Fukict {
156
+ private value = '';
157
+
158
+ handleInput = (e: Event) => {
159
+ this.value = (e.target as HTMLInputElement).value;
160
+ this.update(this.props);
161
+ };
162
+
163
+ handleSubmit = (e: Event) => {
164
+ e.preventDefault();
165
+ console.log('Submitted:', this.value);
166
+ };
167
+
168
+ render() {
169
+ return (
170
+ <form on:submit={this.handleSubmit}>
171
+ <input on:input={this.handleInput} value={this.value} />
172
+ <button type="submit">Submit</button>
173
+ </form>
174
+ );
175
+ }
176
+ }
177
+ ```
178
+
179
+ ### Refs
180
+
181
+ **Component Refs** with `fukict:ref`:
182
+
183
+ ```tsx
184
+ class Parent extends Fukict {
185
+ private childRef?: Counter;
186
+
187
+ mounted() {
188
+ // Access child component instance
189
+ console.log('Child count:', this.childRef?.count);
190
+ }
191
+
192
+ render() {
193
+ return (
194
+ <div>
195
+ <Counter fukict:ref={el => (this.childRef = el)} />
196
+ <button on:click={() => this.childRef?.increment()}>
197
+ Increment from parent
198
+ </button>
199
+ </div>
200
+ );
201
+ }
202
+ }
203
+ ```
204
+
205
+ **DOM Refs** with `ref`:
206
+
207
+ ```tsx
208
+ class AutoFocusInput extends Fukict {
209
+ private inputRef?: HTMLInputElement;
210
+
211
+ mounted() {
212
+ this.inputRef?.focus();
213
+ }
214
+
215
+ render() {
216
+ return <input ref={el => (this.inputRef = el)} />;
217
+ }
218
+ }
219
+ ```
220
+
221
+ ### Slots (Children)
222
+
223
+ ```tsx
224
+ interface CardProps {
225
+ title: string;
226
+ footer?: string;
227
+ }
228
+
229
+ class Card extends Fukict<CardProps> {
230
+ render() {
231
+ return (
232
+ <div class="card">
233
+ <div class="card-header">
234
+ <h2>{this.props.title}</h2>
235
+ </div>
236
+ <div class="card-body">{this.slots.default}</div>
237
+ {this.props.footer && (
238
+ <div class="card-footer">{this.props.footer}</div>
239
+ )}
240
+ </div>
241
+ );
242
+ }
243
+ }
244
+
245
+ // Usage
246
+ <Card title="My Card" footer="Card footer">
247
+ <p>This is the card content</p>
248
+ <button>Action</button>
249
+ </Card>;
250
+ ```
251
+
252
+ ### Detached Rendering
253
+
254
+ Use `fukict:detach` to prevent component from being re-rendered when parent updates:
255
+
256
+ ```tsx
257
+ class Parent extends Fukict {
258
+ private count = 0;
259
+
260
+ increment = () => {
261
+ this.count++;
262
+ this.update(this.props);
263
+ };
264
+
265
+ render() {
266
+ return (
267
+ <div>
268
+ <p>Parent count: {this.count}</p>
269
+ {/* This component won't re-render when parent updates */}
270
+ <ExpensiveComponent fukict:detach={true} />
271
+ <button on:click={this.increment}>Increment</button>
272
+ </div>
273
+ );
274
+ }
275
+ }
276
+ ```
277
+
278
+ ## Lifecycle Hooks
279
+
280
+ ```tsx
281
+ class LifecycleDemo extends Fukict {
282
+ // Called after component is mounted to DOM
283
+ mounted() {
284
+ console.log('Mounted');
285
+ }
286
+
287
+ // Called before component is removed from DOM
288
+ beforeUnmount() {
289
+ console.log('Before unmount');
290
+ }
291
+
292
+ // Called after component updates
293
+ updated() {
294
+ console.log('Updated');
295
+ }
296
+
297
+ render() {
298
+ return <div>Lifecycle Demo</div>;
299
+ }
300
+ }
301
+ ```
302
+
303
+ ## Advanced Features
304
+
305
+ ### Component Update Control
306
+
307
+ ```tsx
308
+ class OptimizedComponent extends Fukict<{ data: string }> {
309
+ // Manually trigger updates
310
+ handleChange = () => {
311
+ // Update with new props
312
+ this.update({ data: 'new data' });
313
+ };
314
+
315
+ render() {
316
+ return (
317
+ <div>
318
+ <p>{this.props.data}</p>
319
+ <button on:click={this.handleChange}>Change</button>
320
+ </div>
321
+ );
322
+ }
323
+ }
324
+ ```
325
+
326
+ ### DOM Utilities
327
+
328
+ ```tsx
329
+ import {
330
+ createRealNode,
331
+ getAllDomNodes,
332
+ getFirstDomNode,
333
+ isDomArray,
334
+ isVNode,
335
+ normalizeDom,
336
+ } from '@fukict/basic';
337
+
338
+ // Create DOM node from VNode
339
+ const vnode = <div>Hello</div>;
340
+ const domNode = createRealNode(vnode);
341
+
342
+ // Get DOM nodes from VNode
343
+ const firstNode = getFirstDomNode(vnode);
344
+ const allNodes = getAllDomNodes(vnode);
345
+
346
+ // Type checks
347
+ if (isVNode(value)) {
348
+ // value is a VNode
349
+ }
350
+
351
+ if (isDomArray(nodes)) {
352
+ // nodes is an array of DOM elements
353
+ }
354
+ ```
355
+
356
+ ### Type Definitions
357
+
358
+ ```tsx
359
+ import type {
360
+ CSSProperties,
361
+ ClassComponentVNode,
362
+ ElementVNode,
363
+ FukictComponent,
364
+ FukictProps,
365
+ FunctionComponentVNode,
366
+ HTMLAttributes,
367
+ SVGAttributes,
368
+ VNode,
369
+ } from '@fukict/basic';
370
+
371
+ // Custom component props
372
+ interface MyComponentProps extends FukictProps {
373
+ title: string;
374
+ count: number;
375
+ onClick?: (e: MouseEvent) => void;
376
+ }
377
+
378
+ // Custom element with specific attributes
379
+ type ButtonElement = ElementVNode & {
380
+ props: HTMLAttributes & {
381
+ type?: 'button' | 'submit' | 'reset';
382
+ };
383
+ };
384
+ ```
385
+
386
+ ## Performance Tips
387
+
388
+ 1. **Use `fukict:detach`** for components that don't need to react to parent updates
389
+ 2. **Minimize renders** by only calling `update()` when necessary
390
+ 3. **Reuse components** instead of recreating them
391
+ 4. **Event handlers** are automatically optimized with event delegation
392
+ 5. **Refs** provide direct access to avoid unnecessary queries
393
+
394
+ ## Best Practices
395
+
396
+ ### Component Organization
397
+
398
+ ```tsx
399
+ // ✅ Good: Separate concerns
400
+ class TodoList extends Fukict<{ items: Todo[] }> {
401
+ render() {
402
+ return (
403
+ <ul>
404
+ {this.props.items.map(item => (
405
+ <TodoItem item={item} />
406
+ ))}
407
+ </ul>
408
+ );
409
+ }
410
+ }
411
+
412
+ // ❌ Bad: Too much in one component
413
+ class TodoApp extends Fukict {
414
+ render() {
415
+ return <div>{/* Everything in one component */}</div>;
416
+ }
417
+ }
418
+ ```
419
+
420
+ ### Event Handlers
421
+
422
+ ```tsx
423
+ // ✅ Good: Arrow function as class property
424
+ class Button extends Fukict {
425
+ handleClick = () => {
426
+ console.log('Clicked');
427
+ };
428
+
429
+ render() {
430
+ return <button on:click={this.handleClick}>Click</button>;
431
+ }
432
+ }
433
+
434
+ // ❌ Bad: Creates new function on every render
435
+ class Button extends Fukict {
436
+ render() {
437
+ return <button on:click={() => console.log('Clicked')}>Click</button>;
438
+ }
439
+ }
440
+ ```
441
+
442
+ ### Refs Usage
443
+
444
+ ```tsx
445
+ // ✅ Good: Use refs for direct DOM access
446
+ class Form extends Fukict {
447
+ private inputRef?: HTMLInputElement;
448
+
449
+ focus() {
450
+ this.inputRef?.focus();
451
+ }
452
+
453
+ render() {
454
+ return <input ref={(el) => (this.inputRef = el)} />;
455
+ }
456
+ }
457
+
458
+ // ❌ Bad: Query DOM manually
459
+ class Form extends Fukict {
460
+ focus() {
461
+ document.querySelector('input')?.focus(); // Don't do this
462
+ }
463
+
464
+ render() {
465
+ return <input />;
466
+ }
467
+ }
468
+ ```
469
+
470
+ ## Examples
471
+
472
+ See the [examples](../../examples) directory for complete examples:
473
+
474
+ - [Basic usage](../../examples/basic-vite)
475
+ - [Router integration](../../examples/infra-router)
476
+ - [State management](../../examples/infra-flux)
477
+ - [Complete app](../../examples/complete)
478
+
479
+ ## Related Packages
480
+
481
+ - [@fukict/babel-preset](../babel-preset) - JSX transformation (required)
482
+ - [@fukict/vite-plugin](../vite-plugin) - Vite integration (recommended)
483
+ - [@fukict/router](../router) - SPA routing
484
+ - [@fukict/flux](../flux) - State management
485
+ - [@fukict/i18n](../i18n) - Internationalization
486
+
487
+ ## License
488
+
489
+ MIT
@@ -50,11 +50,6 @@ export type FukictComponentProps<P extends Record<string, any>> = P & BaseProps
50
50
  * ```
51
51
  */
52
52
  export declare abstract class Fukict<P extends Record<string, any> = {}, S extends Slots = Slots> {
53
- /**
54
- * Component type marker for Babel plugin
55
- * @internal
56
- */
57
- static readonly __COMPONENT_TYPE__: "class";
58
53
  /**
59
54
  * Unique component instance ID (for debugging)
60
55
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"fukict.d.ts","sourceRoot":"","sources":["../../src/component-class/fukict.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAMpC;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,GACjE,SAAS,GACT,kBAAkB,GAClB,mBAAmB,GACnB,qBAAqB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,8BAAsB,MAAM,CAC1B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EAClC,CAAC,SAAS,KAAK,GAAG,KAAK;IAEvB;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAG,OAAO,CAAU;IAEtD;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAElD;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzC;;;OAGG;IACH,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC;IAExB;;;;OAIG;IACH,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC;IAE1B;;;OAGG;IACH,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;IAE9B;;;OAGG;IACH,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAEhC;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;OAEG;gBACS,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAoB1C;;OAEG;IACH,QAAQ,CAAC,MAAM,IAAI,KAAK;IAExB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAkBjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,SAAS,CAAC,UAAU,CAAC,CAAC,EACpB,GAAG,EAAE,MAAM,GAAG,MAAM,EACpB,YAAY,CAAC,EAAE,CAAC,GACf,CAAC,GAAG,SAAS;IA4BhB;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IA2ChD;;OAEG;IACH,OAAO,CAAC,IAAI,IAAI;IAEhB;;OAEG;IACH,aAAa,CAAC,IAAI,IAAI;IAEtB;;OAEG;IACH,OAAO,CAAC,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAElD;;;OAGG;IACH,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI;IA8BtD;;;OAGG;IACH,OAAO,IAAI,IAAI;CAiBhB"}
1
+ {"version":3,"file":"fukict.d.ts","sourceRoot":"","sources":["../../src/component-class/fukict.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAMpC;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,GACjE,SAAS,GACT,kBAAkB,GAClB,mBAAmB,GACnB,qBAAqB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,8BAAsB,MAAM,CAC1B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EAClC,CAAC,SAAS,KAAK,GAAG,KAAK;IAEvB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAElD;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzC;;;OAGG;IACH,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC;IAExB;;;;OAIG;IACH,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC;IAE1B;;;OAGG;IACH,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;IAE9B;;;OAGG;IACH,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAEhC;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;OAEG;gBACS,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAoB1C;;OAEG;IACH,QAAQ,CAAC,MAAM,IAAI,KAAK;IAExB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAkBjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,SAAS,CAAC,UAAU,CAAC,CAAC,EACpB,GAAG,EAAE,MAAM,GAAG,MAAM,EACpB,YAAY,CAAC,EAAE,CAAC,GACf,CAAC,GAAG,SAAS;IA4BhB;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IA2ChD;;OAEG;IACH,OAAO,CAAC,IAAI,IAAI;IAEhB;;OAEG;IACH,aAAa,CAAC,IAAI,IAAI;IAEtB;;OAEG;IACH,OAAO,CAAC,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAElD;;;OAGG;IACH,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI;IA8BtD;;;OAGG;IACH,OAAO,IAAI,IAAI;CAiBhB"}
@@ -44,11 +44,6 @@ let componentIdCounter = 0;
44
44
  * ```
45
45
  */
46
46
  export class Fukict {
47
- /**
48
- * Component type marker for Babel plugin
49
- * @internal
50
- */
51
- static __COMPONENT_TYPE__ = 'class';
52
47
  /**
53
48
  * Unique component instance ID (for debugging)
54
49
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"fukict.js","sourceRoot":"","sources":["../../src/component-class/fukict.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fukict.js","sourceRoot":"","sources":["../../src/component-class/fukict.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ export type FunctionComponent<P = {}> = (props: FunctionComponentProps<P>) => VN
30
30
  * ```
31
31
  *
32
32
  * @param fn - Function component
33
- * @returns The same function with better types and __COMPONENT_TYPE__ marker
33
+ * @returns The same function with better types
34
34
  */
35
35
  export declare function defineFukict<P = {}>(fn: FunctionComponent<P>): FunctionComponent<P>;
36
36
  //# sourceMappingURL=define.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../src/component-function/define.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;GAGG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAC5C,mBAAmB,GAAG;IACpB,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;CACtC,CAAC;AAEJ;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,EAAE,IAAI,CACtC,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAC7B,KAAK,GAAG,IAAI,CAAC;AAElB;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAG,EAAE,EACjC,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,GACvB,iBAAiB,CAAC,CAAC,CAAC,CAKtB"}
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../src/component-function/define.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;GAGG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAC5C,mBAAmB,GAAG;IACpB,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;CACtC,CAAC;AAEJ;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,EAAE,IAAI,CACtC,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAC7B,KAAK,GAAG,IAAI,CAAC;AAElB;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAG,EAAE,EACjC,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,GACvB,iBAAiB,CAAC,CAAC,CAAC,CAEtB"}
@@ -12,12 +12,9 @@
12
12
  * ```
13
13
  *
14
14
  * @param fn - Function component
15
- * @returns The same function with better types and __COMPONENT_TYPE__ marker
15
+ * @returns The same function with better types
16
16
  */
17
17
  export function defineFukict(fn) {
18
- // Add component type marker for Babel plugin
19
- fn.__COMPONENT_TYPE__ =
20
- 'function';
21
18
  return fn;
22
19
  }
23
20
  //# sourceMappingURL=define.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/component-function/define.ts"],"names":[],"mappings":"AAwBA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,YAAY,CAC1B,EAAwB;IAExB,6CAA6C;IAC5C,EAAiD,CAAC,kBAAkB;QACnE,UAAU,CAAC;IACb,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/component-function/define.ts"],"names":[],"mappings":"AAwBA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,YAAY,CAC1B,EAAwB;IAExB,OAAO,EAAE,CAAC;AACZ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { METADATA } from './metadata.js';
7
7
  export { METADATA };
8
- export declare const VERSION: "0.1.0";
8
+ export declare const VERSION: "0.1.1";
9
9
  export type { VNode, VNodeChild, ElementVNode, FragmentVNode, FunctionComponentVNode, ClassComponentVNode, UnregisterFn, RefCallback, CSSProperties, ClassValue, RuntimeAttributes, EventHandlers, HTMLAttributes, SVGAttributes, Slots, Ref, FukictLifecycle, FukictComponent, FukictProps, FukictSlots, FukictConstructor, } from './types/index.js';
10
10
  export type { Context, ContextData } from './types/context.js';
11
11
  export { VNodeType } from './types/index.js';
@@ -4,7 +4,7 @@
4
4
  */
5
5
  export declare const METADATA: {
6
6
  readonly name: "@fukict/basic";
7
- readonly version: "0.1.0";
7
+ readonly version: "0.1.1";
8
8
  readonly description: "Lightweight DOM rendering basic with extension mechanism";
9
9
  readonly author: "Fukict Team";
10
10
  readonly license: "MIT";
package/dist/metadata.js CHANGED
@@ -4,7 +4,7 @@
4
4
  */
5
5
  export const METADATA = {
6
6
  name: '@fukict/basic',
7
- version: '0.1.0',
7
+ version: '0.1.1',
8
8
  description: 'Lightweight DOM rendering basic with extension mechanism',
9
9
  author: 'Fukict Team',
10
10
  license: 'MIT',
@@ -0,0 +1,19 @@
1
+ import type { ClassComponentVNode } from '../types/index.js';
2
+ /**
3
+ * Setup ClassComponentVNode with instance, slots, refs, and parent references
4
+ *
5
+ * This function handles the common logic for both creating and updating class components:
6
+ * 1. Saves instance to vnode
7
+ * 2. Extracts and sets slots from children
8
+ * 3. Registers instance to parent's refs (if fukict:ref is specified)
9
+ * 4. Updates wrapper VNode reference
10
+ * 5. Updates parent instance reference on wrapper VNode
11
+ *
12
+ * Used by both renderClassComponent (create) and diffClassComponent (update).
13
+ *
14
+ * @param vnode - The ClassComponentVNode to setup
15
+ * @param instance - The class component instance
16
+ * @param parentInstance - The parent component instance (optional)
17
+ */
18
+ export declare function setupClassComponentVNode(vnode: ClassComponentVNode, instance: unknown, parentInstance?: unknown): void;
19
+ //# sourceMappingURL=class-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-helpers.d.ts","sourceRoot":"","sources":["../../src/renderer/class-helpers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAS,MAAM,mBAAmB,CAAC;AAYpE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,OAAO,EACjB,cAAc,CAAC,EAAE,OAAO,GACvB,IAAI,CAuCN"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @fukict/basic - Class Component Shared Utilities
3
+ *
4
+ * Shared logic for creating and updating class components
5
+ */
6
+ import { extractSlots } from '../component-class/slot.js';
7
+ /**
8
+ * Setup ClassComponentVNode with instance, slots, refs, and parent references
9
+ *
10
+ * This function handles the common logic for both creating and updating class components:
11
+ * 1. Saves instance to vnode
12
+ * 2. Extracts and sets slots from children
13
+ * 3. Registers instance to parent's refs (if fukict:ref is specified)
14
+ * 4. Updates wrapper VNode reference
15
+ * 5. Updates parent instance reference on wrapper VNode
16
+ *
17
+ * Used by both renderClassComponent (create) and diffClassComponent (update).
18
+ *
19
+ * @param vnode - The ClassComponentVNode to setup
20
+ * @param instance - The class component instance
21
+ * @param parentInstance - The parent component instance (optional)
22
+ */
23
+ export function setupClassComponentVNode(vnode, instance, parentInstance) {
24
+ const instanceInternal = instance;
25
+ // 1. Save instance to vnode
26
+ vnode.__instance__ = instance;
27
+ // 2. Extract and set slots from children
28
+ if (vnode.children) {
29
+ instanceInternal.slots = extractSlots(vnode.children);
30
+ }
31
+ // 3. Handle fukict:ref for class components
32
+ // If parent is a class component and this component has fukict:ref,
33
+ // register this instance to parent's refs
34
+ if (parentInstance && vnode.props && vnode.props['fukict:ref']) {
35
+ const refName = vnode.props['fukict:ref'];
36
+ if (typeof refName === 'string') {
37
+ const parentInternal = parentInstance;
38
+ // Create or update ref in parent component
39
+ if (!parentInternal.refs.has(refName)) {
40
+ parentInternal.refs.set(refName, { current: null });
41
+ }
42
+ const ref = parentInternal.refs.get(refName);
43
+ if (ref) {
44
+ ref.current = instance;
45
+ }
46
+ }
47
+ }
48
+ // 4. Update wrapper VNode reference
49
+ instanceInternal.__wrapper__ = vnode;
50
+ // 5. Update parent instance reference on wrapper VNode (for context chain)
51
+ if (parentInstance) {
52
+ vnode.__parentInstance__ = parentInstance;
53
+ }
54
+ }
55
+ //# sourceMappingURL=class-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-helpers.js","sourceRoot":"","sources":["../../src/renderer/class-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAc1D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAA0B,EAC1B,QAAiB,EACjB,cAAwB;IAExB,MAAM,gBAAgB,GAAG,QAAqC,CAAC;IAE/D,4BAA4B;IAC5B,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC;IAE9B,yCAAyC;IACzC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,gBAAgB,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,4CAA4C;IAC5C,uEAAuE;IACvE,6CAA6C;IAC7C,IAAI,cAAc,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/D,MAAM,OAAO,GAAY,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,cAAc,GAAG,cAA2C,CAAC;YAEnE,2CAA2C;YAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,gBAAgB,CAAC,WAAW,GAAG,KAAK,CAAC;IAErC,2EAA2E;IAC3E,IAAI,cAAc,EAAE,CAAC;QAEjB,KACD,CAAC,kBAAkB,GAAG,cAAc,CAAC;IACxC,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/renderer/create.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAItD,OAAO,KAAK,EAGV,KAAK,EACL,UAAU,EACX,MAAM,mBAAmB,CAAC;AAI3B;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,UAAU,EACjB,iBAAiB,CAAC,EAAE,MAAM,GACzB,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAkCtB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,KAAK,EACZ,iBAAiB,CAAC,EAAE,MAAM,GACzB,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAkBtB"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/renderer/create.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAGtD,OAAO,KAAK,EAKV,KAAK,EACL,UAAU,EACX,MAAM,mBAAmB,CAAC;AAU3B;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,UAAU,EACjB,iBAAiB,CAAC,EAAE,MAAM,GACzB,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAkCtB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,KAAK,EACZ,iBAAiB,CAAC,EAAE,MAAM,GACzB,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAkBtB"}
@@ -1,7 +1,8 @@
1
- import { extractSlots } from '../component-class/slot.js';
2
1
  import * as dom from '../dom/index.js';
3
2
  import { VNodeType } from '../types/index.js';
4
3
  import { setAttributes } from './attributes.js';
4
+ import { setupClassComponentVNode } from './class-helpers.js';
5
+ import { setupElementVNode, setupFragmentVNode, setupFunctionComponentVNode, } from './vnode-helpers.js';
5
6
  /**
6
7
  * Create real DOM node(s) from VNode
7
8
  *
@@ -78,7 +79,8 @@ function renderElement(vnode, componentInstance) {
78
79
  if (vnode.__type__ !== VNodeType.Element) {
79
80
  throw new Error('Expected ElementVNode');
80
81
  }
81
- const { type, props, children } = vnode;
82
+ const elementVNode = vnode;
83
+ const { type, props, children } = elementVNode;
82
84
  const element = dom.createElement(type);
83
85
  // Set attributes and events
84
86
  if (props) {
@@ -102,8 +104,8 @@ function renderElement(vnode, componentInstance) {
102
104
  else {
103
105
  console.warn('Element vnode children is not an array:', vnode);
104
106
  }
105
- // 保存单个节点到 __dom__
106
- vnode.__dom__ = element;
107
+ // Setup ElementVNode: save DOM reference
108
+ setupElementVNode(elementVNode, element);
107
109
  return element;
108
110
  }
109
111
  /**
@@ -115,7 +117,8 @@ function renderFragment(vnode, componentInstance) {
115
117
  if (vnode.__type__ !== VNodeType.Fragment) {
116
118
  throw new Error('Expected FragmentVNode');
117
119
  }
118
- const { children } = vnode;
120
+ const fragmentVNode = vnode;
121
+ const { children } = fragmentVNode;
119
122
  const nodes = [];
120
123
  if (Array.isArray(children)) {
121
124
  for (const child of children) {
@@ -134,8 +137,8 @@ function renderFragment(vnode, componentInstance) {
134
137
  else {
135
138
  console.warn('Element vnode children is not an array:', vnode);
136
139
  }
137
- // 保存所有节点到 __dom__
138
- vnode.__dom__ = nodes;
140
+ // Setup FragmentVNode: save DOM nodes array reference
141
+ setupFragmentVNode(fragmentVNode, nodes);
139
142
  return nodes;
140
143
  }
141
144
  /**
@@ -159,15 +162,14 @@ function renderFunctionComponent(vnode, componentInstance) {
159
162
  const funcComponent = type;
160
163
  const rendered = funcComponent(propsWithChildren);
161
164
  if (!rendered) {
162
- funcVNode.__rendered__ = undefined;
163
- funcVNode.__dom__ = null;
165
+ // Setup FunctionComponentVNode with empty result
166
+ setupFunctionComponentVNode(funcVNode, undefined, null);
164
167
  return null;
165
168
  }
166
169
  // Render result (pass component instance for nested fukict:ref)
167
170
  const domNode = createRealNode(rendered, componentInstance);
168
- // Save rendered VNode and DOM
169
- funcVNode.__rendered__ = rendered;
170
- funcVNode.__dom__ = domNode; // 可能是 Node 或 Node[]
171
+ // Setup FunctionComponentVNode: save rendered VNode and DOM reference
172
+ setupFunctionComponentVNode(funcVNode, rendered, domNode);
171
173
  return domNode;
172
174
  }
173
175
  /**
@@ -181,42 +183,16 @@ function renderClassComponent(vnode, componentInstance) {
181
183
  }
182
184
  // Type assertion after runtime check
183
185
  const classVNode = vnode;
184
- const { type, props, children } = classVNode;
186
+ const { type, props } = classVNode;
185
187
  // 1. Create instance (only props)
186
188
  // Type assertion is safe here because we know it's a class constructor
187
189
  const ComponentClass = type;
188
190
  const instance = new ComponentClass(props ?? {});
189
- // 2. Extract and set slots from children
190
- if (children) {
191
- instance.slots = extractSlots(children);
192
- }
193
- // 3. Handle fukict:ref for class components
194
- // If parent is a class component and this component has fukict:ref,
195
- // register this instance to parent's refs
196
- if (componentInstance && props && props['fukict:ref']) {
197
- const refName = props['fukict:ref'];
198
- if (typeof refName === 'string') {
199
- // Create or update ref in parent component
200
- if (!componentInstance.refs.has(refName)) {
201
- componentInstance.refs.set(refName, { current: null });
202
- }
203
- const ref = componentInstance.refs.get(refName);
204
- if (ref) {
205
- ref.current = instance;
206
- }
207
- }
208
- }
209
- // 4. Save instance to vnode
210
- classVNode.__instance__ = instance;
211
- // 5. Save wrapper VNode to instance (for context traversal)
212
- instance.__wrapper__ = classVNode;
213
- // 6. Save parent instance reference on wrapper VNode (for context chain)
214
- if (componentInstance) {
215
- classVNode.__parentInstance__ = componentInstance;
216
- }
217
- // 7. Create comment placeholder with instance ID and name
191
+ // 2. Setup ClassComponentVNode: instance, slots, refs, wrapper, parent reference
192
+ setupClassComponentVNode(classVNode, instance, componentInstance);
193
+ // 3. Create comment placeholder with instance ID and name
218
194
  const placeholder = dom.createComment(`fukict:${instance.__name__}#${instance.__id__}`);
219
- // 8. Save placeholder to vnode
195
+ // 4. Save placeholder to vnode
220
196
  classVNode.__placeholder__ = placeholder;
221
197
  return placeholder;
222
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/renderer/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/renderer/create.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,15 @@
1
+ /**
2
+ * @fukict/basic - Diff: Class Component
3
+ *
4
+ * Diff class component VNodes
5
+ */
6
+ import type { FukictComponent } from '../../types/class.js';
1
7
  import type { VNode } from '../../types/index.js';
2
8
  /**
3
9
  * Diff Class Component VNode
10
+ * - Update slots and refs
4
11
  * - Call instance.update(newProps)
5
12
  * - Handle detached mode (fukict:detach)
6
13
  */
7
- export declare function diffClassComponent(oldVNode: VNode, newVNode: VNode, container: Element): void;
14
+ export declare function diffClassComponent(oldVNode: VNode, newVNode: VNode, container: Element, parentInstance?: FukictComponent): void;
8
15
  //# sourceMappingURL=class.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../../src/renderer/diff/class.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAuB,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAIvE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,OAAO,GACjB,IAAI,CAoCN"}
1
+ {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../../src/renderer/diff/class.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAuB,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAavE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,OAAO,EAClB,cAAc,CAAC,EAAE,eAAe,GAC/B,IAAI,CA8CN"}
@@ -1,11 +1,13 @@
1
1
  import { VNodeType } from '../../types/index.js';
2
+ import { setupClassComponentVNode } from '../class-helpers.js';
2
3
  import { replaceNode } from './helpers.js';
3
4
  /**
4
5
  * Diff Class Component VNode
6
+ * - Update slots and refs
5
7
  * - Call instance.update(newProps)
6
8
  * - Handle detached mode (fukict:detach)
7
9
  */
8
- export function diffClassComponent(oldVNode, newVNode, container) {
10
+ export function diffClassComponent(oldVNode, newVNode, container, parentInstance) {
9
11
  if (oldVNode.__type__ !== VNodeType.ClassComponent ||
10
12
  newVNode.__type__ !== VNodeType.ClassComponent) {
11
13
  throw new Error('Expected ClassComponentVNode');
@@ -20,18 +22,23 @@ export function diffClassComponent(oldVNode, newVNode, container) {
20
22
  }
21
23
  // Reuse instance
22
24
  const instance = oldClassVNode.__instance__;
23
- newClassVNode.__instance__ = instance;
25
+ if (!instance) {
26
+ console.warn('[diffClassComponent] Instance is undefined, skipping diff');
27
+ return;
28
+ }
29
+ // Setup ClassComponentVNode: instance, slots, refs, wrapper, parent reference
30
+ setupClassComponentVNode(newClassVNode, instance, parentInstance);
31
+ // Copy placeholder from old vnode
32
+ newClassVNode.__placeholder__ = oldClassVNode.__placeholder__;
24
33
  // Check detached mode
25
34
  if (newClassVNode.props && newClassVNode.props['fukict:detach']) {
26
35
  // Detached mode: only update props, skip update()
27
- if (instance) {
28
- // Use same pattern as Fukict.update() - cast to bypass readonly
29
- instance.props = newClassVNode.props;
30
- }
36
+ // Use same pattern as Fukict.update() - cast to bypass readonly
37
+ instance.props = newClassVNode.props;
31
38
  return;
32
39
  }
33
40
  // Normal mode: call instance.update(newProps)
34
- if (instance && typeof instance.update === 'function') {
41
+ if (typeof instance.update === 'function') {
35
42
  instance.update(newClassVNode.props ?? {});
36
43
  }
37
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"class.js","sourceRoot":"","sources":["../../../src/renderer/diff/class.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAe,EACf,QAAe,EACf,SAAkB;IAElB,IACE,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,cAAc;QAC9C,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,cAAc,EAC9C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,qCAAqC;IACrC,MAAM,aAAa,GAAG,QAA+B,CAAC;IACtD,MAAM,aAAa,GAAG,QAA+B,CAAC;IAEtD,2CAA2C;IAC3C,IAAI,aAAa,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;QAC9C,WAAW,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,GAAG,aAAa,CAAC,YAA2C,CAAC;IAC3E,aAAa,CAAC,YAAY,GAAG,QAAQ,CAAC;IAEtC,sBAAsB;IACtB,IAAI,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;QAChE,kDAAkD;QAClD,IAAI,QAAQ,EAAE,CAAC;YACb,gEAAgE;YAC/D,QAAQ,CAAC,KAA6B,GAAG,aAAa,CAAC,KAAK,CAAC;QAChE,CAAC;QACD,OAAO;IACT,CAAC;IAED,8CAA8C;IAC9C,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACtD,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"class.js","sourceRoot":"","sources":["../../../src/renderer/diff/class.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAU3C;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAe,EACf,QAAe,EACf,SAAkB,EAClB,cAAgC;IAEhC,IACE,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,cAAc;QAC9C,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,cAAc,EAC9C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,qCAAqC;IACrC,MAAM,aAAa,GAAG,QAA+B,CAAC;IACtD,MAAM,aAAa,GAAG,QAA+B,CAAC;IAEtD,2CAA2C;IAC3C,IAAI,aAAa,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;QAC9C,WAAW,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,GAAG,aAAa,CAAC,YAElB,CAAC;IAEd,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,8EAA8E;IAC9E,wBAAwB,CAAC,aAAa,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IAElE,kCAAkC;IAClC,aAAa,CAAC,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC;IAE9D,sBAAsB;IACtB,IAAI,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;QAChE,kDAAkD;QAClD,gEAAgE;QAC/D,QAAQ,CAAC,KAA6B,GAAG,aAAa,CAAC,KAAK,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,8CAA8C;IAC9C,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1C,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../src/renderer/diff/element.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAMlD;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,OAAO,GACjB,IAAI,CA6BN"}
1
+ {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../src/renderer/diff/element.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAgB,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAOhE;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,OAAO,GACjB,IAAI,CAiCN"}
@@ -1,4 +1,5 @@
1
1
  import { VNodeType } from '../../types/index.js';
2
+ import { setupElementVNode } from '../vnode-helpers.js';
2
3
  import { diffChildren } from './children.js';
3
4
  import { replaceNode } from './helpers.js';
4
5
  import { patchProps } from './props.js';
@@ -13,22 +14,25 @@ export function diffElement(oldVNode, newVNode, container) {
13
14
  newVNode.__type__ !== VNodeType.Element) {
14
15
  throw new Error('Expected ElementVNode');
15
16
  }
17
+ const oldElementVNode = oldVNode;
18
+ const newElementVNode = newVNode;
16
19
  // Tag name changed - replace entire element
17
- if (oldVNode.type !== newVNode.type) {
18
- replaceNode(oldVNode, newVNode, container);
20
+ if (oldElementVNode.type !== newElementVNode.type) {
21
+ replaceNode(oldElementVNode, newElementVNode, container);
19
22
  return;
20
23
  }
21
24
  // Reuse DOM element
22
- const element = oldVNode.__dom__;
25
+ const element = oldElementVNode.__dom__;
23
26
  if (!element) {
24
27
  // DOM doesn't exist, replace node
25
- replaceNode(oldVNode, newVNode, container);
28
+ replaceNode(oldElementVNode, newElementVNode, container);
26
29
  return;
27
30
  }
28
- newVNode.__dom__ = element;
31
+ // Setup ElementVNode: save DOM reference
32
+ setupElementVNode(newElementVNode, element);
29
33
  // Patch props
30
- patchProps(element, oldVNode.props, newVNode.props);
34
+ patchProps(element, oldElementVNode.props, newElementVNode.props);
31
35
  // Diff children
32
- diffChildren(oldVNode.children, newVNode.children, element);
36
+ diffChildren(oldElementVNode.children, newElementVNode.children, element);
33
37
  }
34
38
  //# sourceMappingURL=element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"element.js","sourceRoot":"","sources":["../../../src/renderer/diff/element.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,QAAe,EACf,QAAe,EACf,SAAkB;IAElB,IACE,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,OAAO;QACvC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,OAAO,EACvC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,4CAA4C;IAC5C,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,oBAAoB;IACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAkB,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,kCAAkC;QAClC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;IAE3B,cAAc;IACd,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,gBAAgB;IAChB,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"element.js","sourceRoot":"","sources":["../../../src/renderer/diff/element.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,QAAe,EACf,QAAe,EACf,SAAkB;IAElB,IACE,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,OAAO;QACvC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,OAAO,EACvC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,eAAe,GAAG,QAAwB,CAAC;IACjD,MAAM,eAAe,GAAG,QAAwB,CAAC;IAEjD,4CAA4C;IAC5C,IAAI,eAAe,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE,CAAC;QAClD,WAAW,CAAC,eAAe,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IAED,oBAAoB;IACpB,MAAM,OAAO,GAAG,eAAe,CAAC,OAAkB,CAAC;IACnD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,kCAAkC;QAClC,WAAW,CAAC,eAAe,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IAED,yCAAyC;IACzC,iBAAiB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAE5C,cAAc;IACd,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IAElE,gBAAgB;IAChB,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fragment.d.ts","sourceRoot":"","sources":["../../../src/renderer/diff/fragment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAIlD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,OAAO,GACjB,IAAI,CA0BN"}
1
+ {"version":3,"file":"fragment.d.ts","sourceRoot":"","sources":["../../../src/renderer/diff/fragment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAiB,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAKjE;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,OAAO,GACjB,IAAI,CA8BN"}
@@ -1,4 +1,5 @@
1
1
  import { VNodeType } from '../../types/index.js';
2
+ import { setupFragmentVNode } from '../vnode-helpers.js';
2
3
  import { diffChildren } from './children.js';
3
4
  /**
4
5
  * Diff Fragment VNode
@@ -10,11 +11,12 @@ export function diffFragment(oldVNode, newVNode, container) {
10
11
  newVNode.__type__ !== VNodeType.Fragment) {
11
12
  throw new Error('Expected FragmentVNode');
12
13
  }
14
+ const newFragmentVNode = newVNode;
13
15
  // Diff children
14
- diffChildren(oldVNode.children, newVNode.children, container);
16
+ diffChildren(oldVNode.children, newFragmentVNode.children, container);
15
17
  // Update __dom__ reference (collect all current child nodes)
16
18
  const newNodes = [];
17
- for (const child of newVNode.children) {
19
+ for (const child of newFragmentVNode.children) {
18
20
  if (child && typeof child === 'object' && '__dom__' in child) {
19
21
  const dom = child.__dom__;
20
22
  if (dom) {
@@ -27,6 +29,7 @@ export function diffFragment(oldVNode, newVNode, container) {
27
29
  }
28
30
  }
29
31
  }
30
- newVNode.__dom__ = newNodes;
32
+ // Setup FragmentVNode: save DOM nodes array reference
33
+ setupFragmentVNode(newFragmentVNode, newNodes);
31
34
  }
32
35
  //# sourceMappingURL=fragment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fragment.js","sourceRoot":"","sources":["../../../src/renderer/diff/fragment.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAe,EACf,QAAe,EACf,SAAkB;IAElB,IACE,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ;QACxC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,EACxC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,gBAAgB;IAChB,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE9D,6DAA6D;IAC7D,MAAM,QAAQ,GAAW,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;YAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1B,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"fragment.js","sourceRoot":"","sources":["../../../src/renderer/diff/fragment.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAe,EACf,QAAe,EACf,SAAkB;IAElB,IACE,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ;QACxC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,EACxC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,gBAAgB,GAAG,QAAyB,CAAC;IAEnD,gBAAgB;IAChB,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEtE,6DAA6D;IAC7D,MAAM,QAAQ,GAAW,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;YAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1B,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,kBAAkB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../../src/renderer/diff/function.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,KAAK,EAEN,MAAM,sBAAsB,CAAC;AAK9B;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,OAAO,GACjB,IAAI,CA4DN"}
1
+ {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../../src/renderer/diff/function.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,KAAK,EAEN,MAAM,sBAAsB,CAAC;AAM9B;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,OAAO,GACjB,IAAI,CAkEN"}
@@ -1,4 +1,5 @@
1
1
  import { VNodeType } from '../../types/index.js';
2
+ import { setupFunctionComponentVNode } from '../vnode-helpers.js';
2
3
  import { replaceNode, shallowEqual } from './helpers.js';
3
4
  import { diff } from './index.js';
4
5
  /**
@@ -23,8 +24,8 @@ export function diffFunctionComponent(oldVNode, newVNode, container) {
23
24
  // Shallow compare props
24
25
  if (shallowEqual(oldFuncVNode.props, newFuncVNode.props)) {
25
26
  // Props unchanged - reuse rendered result
26
- newFuncVNode.__rendered__ = oldFuncVNode.__rendered__;
27
- newFuncVNode.__dom__ = oldFuncVNode.__dom__;
27
+ // Setup FunctionComponentVNode with reused data
28
+ setupFunctionComponentVNode(newFuncVNode, oldFuncVNode.__rendered__, oldFuncVNode.__dom__ ?? null);
28
29
  return;
29
30
  }
30
31
  // Props changed - re-call function
@@ -39,20 +40,20 @@ export function diffFunctionComponent(oldVNode, newVNode, container) {
39
40
  const funcComponent = newFuncVNode.type;
40
41
  const rendered = funcComponent(propsWithChildren);
41
42
  // Store rendered VNode (only if it's a VNode object)
42
- if (rendered && typeof rendered === 'object' && '__type__' in rendered) {
43
- newFuncVNode.__rendered__ = rendered;
44
- }
43
+ const renderedVNode = rendered && typeof rendered === 'object' && '__type__' in rendered
44
+ ? rendered
45
+ : undefined;
45
46
  // Diff old and new rendered result
46
47
  const oldRendered = oldFuncVNode.__rendered__;
47
48
  diff(oldRendered, rendered, container);
48
49
  // Update __dom__ reference (only for non-ClassComponent VNodes)
49
- if (rendered && typeof rendered === 'object' && '__type__' in rendered) {
50
- const renderedVNode = rendered;
51
- // ClassComponentVNode doesn't have __dom__, skip for that type
52
- if (renderedVNode.__type__ !== VNodeType.ClassComponent &&
53
- '__dom__' in renderedVNode) {
54
- newFuncVNode.__dom__ = renderedVNode.__dom__;
55
- }
50
+ let domNode = null;
51
+ if (renderedVNode &&
52
+ renderedVNode.__type__ !== VNodeType.ClassComponent &&
53
+ '__dom__' in renderedVNode) {
54
+ domNode = renderedVNode.__dom__ ?? null;
56
55
  }
56
+ // Setup FunctionComponentVNode: save rendered VNode and DOM reference
57
+ setupFunctionComponentVNode(newFuncVNode, renderedVNode, domNode);
57
58
  }
58
59
  //# sourceMappingURL=function.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"function.js","sourceRoot":"","sources":["../../../src/renderer/diff/function.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAe,EACf,QAAe,EACf,SAAkB;IAElB,IACE,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,iBAAiB;QACjD,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,iBAAiB,EACjD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,qCAAqC;IACrC,MAAM,YAAY,GAAG,QAAkC,CAAC;IACxD,MAAM,YAAY,GAAG,QAAkC,CAAC;IAExD,6BAA6B;IAC7B,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;QAC5C,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,IAAI,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,0CAA0C;QAC1C,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QACtD,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,mCAAmC;IACnC,yCAAyC;IACzC,MAAM,iBAAiB,GAA4B;QACjD,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7B,QAAQ,EACN,YAAY,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAChC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1B,CAAC,CAAC,YAAY,CAAC,QAAQ;KAC5B,CAAC;IAEF,+CAA+C;IAC/C,MAAM,aAAa,GAAG,YAAY,CAAC,IAAoC,CAAC;IACxE,MAAM,QAAQ,GAAe,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAE9D,qDAAqD;IACrD,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;QACvE,YAAY,CAAC,YAAY,GAAG,QAAiB,CAAC;IAChD,CAAC;IAED,mCAAmC;IACnC,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC;IAC9C,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEvC,gEAAgE;IAChE,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;QACvE,MAAM,aAAa,GAAG,QAAiB,CAAC;QACxC,+DAA+D;QAC/D,IACE,aAAa,CAAC,QAAQ,KAAK,SAAS,CAAC,cAAc;YACnD,SAAS,IAAI,aAAa,EAC1B,CAAC;YACD,YAAY,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"function.js","sourceRoot":"","sources":["../../../src/renderer/diff/function.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAe,EACf,QAAe,EACf,SAAkB;IAElB,IACE,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,iBAAiB;QACjD,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,iBAAiB,EACjD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,qCAAqC;IACrC,MAAM,YAAY,GAAG,QAAkC,CAAC;IACxD,MAAM,YAAY,GAAG,QAAkC,CAAC;IAExD,6BAA6B;IAC7B,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;QAC5C,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,IAAI,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,0CAA0C;QAC1C,gDAAgD;QAChD,2BAA2B,CACzB,YAAY,EACZ,YAAY,CAAC,YAAY,EACzB,YAAY,CAAC,OAAO,IAAI,IAAI,CAC7B,CAAC;QACF,OAAO;IACT,CAAC;IAED,mCAAmC;IACnC,yCAAyC;IACzC,MAAM,iBAAiB,GAA4B;QACjD,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7B,QAAQ,EACN,YAAY,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAChC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1B,CAAC,CAAC,YAAY,CAAC,QAAQ;KAC5B,CAAC;IAEF,+CAA+C;IAC/C,MAAM,aAAa,GAAG,YAAY,CAAC,IAAoC,CAAC;IACxE,MAAM,QAAQ,GAAe,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAE9D,qDAAqD;IACrD,MAAM,aAAa,GACjB,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,UAAU,IAAI,QAAQ;QAChE,CAAC,CAAE,QAAkB;QACrB,CAAC,CAAC,SAAS,CAAC;IAEhB,mCAAmC;IACnC,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC;IAC9C,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEvC,gEAAgE;IAChE,IAAI,OAAO,GAAyB,IAAI,CAAC;IACzC,IACE,aAAa;QACb,aAAa,CAAC,QAAQ,KAAK,SAAS,CAAC,cAAc;QACnD,SAAS,IAAI,aAAa,EAC1B,CAAC;QACD,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC;IAC1C,CAAC;IAED,sEAAsE;IACtE,2BAA2B,CAAC,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @fukict/basic - VNode Shared Utilities
3
+ *
4
+ * Shared logic for setting up VNode references across create and diff operations
5
+ */
6
+ import type { ElementVNode, FragmentVNode, FunctionComponentVNode, VNode } from '../types/index.js';
7
+ /**
8
+ * Setup ElementVNode with DOM reference
9
+ *
10
+ * Used by both renderElement (create) and diffElement (update).
11
+ *
12
+ * @param vnode - The ElementVNode to setup
13
+ * @param element - The DOM element
14
+ */
15
+ export declare function setupElementVNode(vnode: ElementVNode, element: Element): void;
16
+ /**
17
+ * Setup FragmentVNode with DOM nodes array reference
18
+ *
19
+ * Used by both renderFragment (create) and diffFragment (update).
20
+ *
21
+ * @param vnode - The FragmentVNode to setup
22
+ * @param nodes - The array of DOM nodes
23
+ */
24
+ export declare function setupFragmentVNode(vnode: FragmentVNode, nodes: Node[]): void;
25
+ /**
26
+ * Setup FunctionComponentVNode with rendered VNode and DOM reference
27
+ *
28
+ * Used by both renderFunctionComponent (create) and diffFunctionComponent (update).
29
+ *
30
+ * @param vnode - The FunctionComponentVNode to setup
31
+ * @param rendered - The rendered VNode result (can be undefined)
32
+ * @param domNode - The DOM node or nodes (can be null or Node or Node[])
33
+ */
34
+ export declare function setupFunctionComponentVNode(vnode: FunctionComponentVNode, rendered: VNode | undefined, domNode: Node | Node[] | null): void;
35
+ //# sourceMappingURL=vnode-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vnode-helpers.d.ts","sourceRoot":"","sources":["../../src/renderer/vnode-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,KAAK,EACN,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAE7E;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAE5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,sBAAsB,EAC7B,QAAQ,EAAE,KAAK,GAAG,SAAS,EAC3B,OAAO,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,GAC5B,IAAI,CAGN"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Setup ElementVNode with DOM reference
3
+ *
4
+ * Used by both renderElement (create) and diffElement (update).
5
+ *
6
+ * @param vnode - The ElementVNode to setup
7
+ * @param element - The DOM element
8
+ */
9
+ export function setupElementVNode(vnode, element) {
10
+ vnode.__dom__ = element;
11
+ }
12
+ /**
13
+ * Setup FragmentVNode with DOM nodes array reference
14
+ *
15
+ * Used by both renderFragment (create) and diffFragment (update).
16
+ *
17
+ * @param vnode - The FragmentVNode to setup
18
+ * @param nodes - The array of DOM nodes
19
+ */
20
+ export function setupFragmentVNode(vnode, nodes) {
21
+ vnode.__dom__ = nodes;
22
+ }
23
+ /**
24
+ * Setup FunctionComponentVNode with rendered VNode and DOM reference
25
+ *
26
+ * Used by both renderFunctionComponent (create) and diffFunctionComponent (update).
27
+ *
28
+ * @param vnode - The FunctionComponentVNode to setup
29
+ * @param rendered - The rendered VNode result (can be undefined)
30
+ * @param domNode - The DOM node or nodes (can be null or Node or Node[])
31
+ */
32
+ export function setupFunctionComponentVNode(vnode, rendered, domNode) {
33
+ vnode.__rendered__ = rendered;
34
+ vnode.__dom__ = domNode;
35
+ }
36
+ //# sourceMappingURL=vnode-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vnode-helpers.js","sourceRoot":"","sources":["../../src/renderer/vnode-helpers.ts"],"names":[],"mappings":"AAYA;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAmB,EAAE,OAAgB;IACrE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAoB,EAAE,KAAa;IACpE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAA6B,EAC7B,QAA2B,EAC3B,OAA6B;IAE7B,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC;IAC9B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fukict/basic",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Lightweight DOM rendering basic with extension mechanism",
5
5
  "keywords": [
6
6
  "fukict",