@fukict/basic 0.1.0 → 0.1.2

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 (69) hide show
  1. package/README.md +510 -0
  2. package/dist/component-class/fukict.d.ts +7 -9
  3. package/dist/component-class/fukict.d.ts.map +1 -1
  4. package/dist/component-class/fukict.js +22 -20
  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 +2 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/metadata.d.ts +1 -1
  14. package/dist/metadata.js +1 -1
  15. package/dist/renderer/attributes.d.ts +2 -2
  16. package/dist/renderer/attributes.d.ts.map +1 -1
  17. package/dist/renderer/attributes.js +4 -14
  18. package/dist/renderer/attributes.js.map +1 -1
  19. package/dist/renderer/class-helpers.d.ts +19 -0
  20. package/dist/renderer/class-helpers.d.ts.map +1 -0
  21. package/dist/renderer/class-helpers.js +49 -0
  22. package/dist/renderer/class-helpers.js.map +1 -0
  23. package/dist/renderer/create.d.ts.map +1 -1
  24. package/dist/renderer/create.js +47 -43
  25. package/dist/renderer/create.js.map +1 -1
  26. package/dist/renderer/diff/class.d.ts +8 -1
  27. package/dist/renderer/diff/class.d.ts.map +1 -1
  28. package/dist/renderer/diff/class.js +14 -7
  29. package/dist/renderer/diff/class.js.map +1 -1
  30. package/dist/renderer/diff/element.d.ts.map +1 -1
  31. package/dist/renderer/diff/element.js +11 -7
  32. package/dist/renderer/diff/element.js.map +1 -1
  33. package/dist/renderer/diff/fragment.d.ts.map +1 -1
  34. package/dist/renderer/diff/fragment.js +6 -3
  35. package/dist/renderer/diff/fragment.js.map +1 -1
  36. package/dist/renderer/diff/function.d.ts.map +1 -1
  37. package/dist/renderer/diff/function.js +13 -12
  38. package/dist/renderer/diff/function.js.map +1 -1
  39. package/dist/renderer/diff/helpers.d.ts.map +1 -1
  40. package/dist/renderer/diff/helpers.js +13 -0
  41. package/dist/renderer/diff/helpers.js.map +1 -1
  42. package/dist/renderer/diff/index.d.ts.map +1 -1
  43. package/dist/renderer/diff/index.js +4 -0
  44. package/dist/renderer/diff/index.js.map +1 -1
  45. package/dist/renderer/diff/primitive.d.ts +12 -0
  46. package/dist/renderer/diff/primitive.d.ts.map +1 -0
  47. package/dist/renderer/diff/primitive.js +50 -0
  48. package/dist/renderer/diff/primitive.js.map +1 -0
  49. package/dist/renderer/mount.d.ts.map +1 -1
  50. package/dist/renderer/mount.js +30 -0
  51. package/dist/renderer/mount.js.map +1 -1
  52. package/dist/renderer/vnode-helpers.d.ts +44 -0
  53. package/dist/renderer/vnode-helpers.d.ts.map +1 -0
  54. package/dist/renderer/vnode-helpers.js +47 -0
  55. package/dist/renderer/vnode-helpers.js.map +1 -0
  56. package/dist/types/class.d.ts +25 -2
  57. package/dist/types/class.d.ts.map +1 -1
  58. package/dist/types/core.d.ts +27 -3
  59. package/dist/types/core.d.ts.map +1 -1
  60. package/dist/types/core.js +1 -0
  61. package/dist/types/core.js.map +1 -1
  62. package/dist/types/index.d.ts +2 -2
  63. package/dist/types/index.d.ts.map +1 -1
  64. package/dist/types/index.js.map +1 -1
  65. package/dist/vnode.d.ts +9 -3
  66. package/dist/vnode.d.ts.map +1 -1
  67. package/dist/vnode.js +71 -2
  68. package/dist/vnode.js.map +1 -1
  69. package/package.json +4 -1
package/README.md ADDED
@@ -0,0 +1,510 @@
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
+ // Type-safe refs declaration
186
+ declare readonly refs: {
187
+ child: Counter;
188
+ };
189
+
190
+ mounted() {
191
+ // Access child component instance directly
192
+ console.log('Child count:', this.refs.child?.count);
193
+ }
194
+
195
+ render() {
196
+ return (
197
+ <div>
198
+ <Counter fukict:ref="child" />
199
+ <button on:click={() => this.refs.child?.increment()}>
200
+ Increment from parent
201
+ </button>
202
+ </div>
203
+ );
204
+ }
205
+ }
206
+ ```
207
+
208
+ **DOM Refs** with `ref` callback:
209
+
210
+ ```tsx
211
+ class AutoFocusInput extends Fukict {
212
+ private inputRef?: HTMLInputElement;
213
+
214
+ mounted() {
215
+ this.inputRef?.focus();
216
+ }
217
+
218
+ render() {
219
+ return <input ref={el => (this.inputRef = el)} />;
220
+ }
221
+ }
222
+ ```
223
+
224
+ **Or use `fukict:ref` for DOM elements:**
225
+
226
+ ```tsx
227
+ class AutoFocusInput extends Fukict {
228
+ declare readonly refs: {
229
+ input: HTMLInputElement;
230
+ };
231
+
232
+ mounted() {
233
+ this.refs.input?.focus();
234
+ }
235
+
236
+ render() {
237
+ return <input fukict:ref="input" />;
238
+ }
239
+ }
240
+ ```
241
+
242
+ ### Slots (Children)
243
+
244
+ ```tsx
245
+ interface CardProps {
246
+ title: string;
247
+ footer?: string;
248
+ }
249
+
250
+ class Card extends Fukict<CardProps> {
251
+ render() {
252
+ return (
253
+ <div class="card">
254
+ <div class="card-header">
255
+ <h2>{this.props.title}</h2>
256
+ </div>
257
+ <div class="card-body">{this.slots.default}</div>
258
+ {this.props.footer && (
259
+ <div class="card-footer">{this.props.footer}</div>
260
+ )}
261
+ </div>
262
+ );
263
+ }
264
+ }
265
+
266
+ // Usage
267
+ <Card title="My Card" footer="Card footer">
268
+ <p>This is the card content</p>
269
+ <button>Action</button>
270
+ </Card>;
271
+ ```
272
+
273
+ ### Detached Rendering
274
+
275
+ Use `fukict:detach` to prevent component from being re-rendered when parent updates:
276
+
277
+ ```tsx
278
+ class Parent extends Fukict {
279
+ private count = 0;
280
+
281
+ increment = () => {
282
+ this.count++;
283
+ this.update(this.props);
284
+ };
285
+
286
+ render() {
287
+ return (
288
+ <div>
289
+ <p>Parent count: {this.count}</p>
290
+ {/* This component won't re-render when parent updates */}
291
+ <ExpensiveComponent fukict:detach={true} />
292
+ <button on:click={this.increment}>Increment</button>
293
+ </div>
294
+ );
295
+ }
296
+ }
297
+ ```
298
+
299
+ ## Lifecycle Hooks
300
+
301
+ ```tsx
302
+ class LifecycleDemo extends Fukict {
303
+ // Called after component is mounted to DOM
304
+ mounted() {
305
+ console.log('Mounted');
306
+ }
307
+
308
+ // Called before component is removed from DOM
309
+ beforeUnmount() {
310
+ console.log('Before unmount');
311
+ }
312
+
313
+ // Called after component updates
314
+ updated() {
315
+ console.log('Updated');
316
+ }
317
+
318
+ render() {
319
+ return <div>Lifecycle Demo</div>;
320
+ }
321
+ }
322
+ ```
323
+
324
+ ## Advanced Features
325
+
326
+ ### Component Update Control
327
+
328
+ ```tsx
329
+ class OptimizedComponent extends Fukict<{ data: string }> {
330
+ // Manually trigger updates
331
+ handleChange = () => {
332
+ // Update with new props
333
+ this.update({ data: 'new data' });
334
+ };
335
+
336
+ render() {
337
+ return (
338
+ <div>
339
+ <p>{this.props.data}</p>
340
+ <button on:click={this.handleChange}>Change</button>
341
+ </div>
342
+ );
343
+ }
344
+ }
345
+ ```
346
+
347
+ ### DOM Utilities
348
+
349
+ ```tsx
350
+ import {
351
+ createRealNode,
352
+ getAllDomNodes,
353
+ getFirstDomNode,
354
+ isDomArray,
355
+ isVNode,
356
+ normalizeDom,
357
+ } from '@fukict/basic';
358
+
359
+ // Create DOM node from VNode
360
+ const vnode = <div>Hello</div>;
361
+ const domNode = createRealNode(vnode);
362
+
363
+ // Get DOM nodes from VNode
364
+ const firstNode = getFirstDomNode(vnode);
365
+ const allNodes = getAllDomNodes(vnode);
366
+
367
+ // Type checks
368
+ if (isVNode(value)) {
369
+ // value is a VNode
370
+ }
371
+
372
+ if (isDomArray(nodes)) {
373
+ // nodes is an array of DOM elements
374
+ }
375
+ ```
376
+
377
+ ### Type Definitions
378
+
379
+ ```tsx
380
+ import type {
381
+ CSSProperties,
382
+ ClassComponentVNode,
383
+ ElementVNode,
384
+ FukictComponent,
385
+ FukictProps,
386
+ FunctionComponentVNode,
387
+ HTMLAttributes,
388
+ SVGAttributes,
389
+ VNode,
390
+ } from '@fukict/basic';
391
+
392
+ // Custom component props
393
+ interface MyComponentProps extends FukictProps {
394
+ title: string;
395
+ count: number;
396
+ onClick?: (e: MouseEvent) => void;
397
+ }
398
+
399
+ // Custom element with specific attributes
400
+ type ButtonElement = ElementVNode & {
401
+ props: HTMLAttributes & {
402
+ type?: 'button' | 'submit' | 'reset';
403
+ };
404
+ };
405
+ ```
406
+
407
+ ## Performance Tips
408
+
409
+ 1. **Use `fukict:detach`** for components that don't need to react to parent updates
410
+ 2. **Minimize renders** by only calling `update()` when necessary
411
+ 3. **Reuse components** instead of recreating them
412
+ 4. **Event handlers** are automatically optimized with event delegation
413
+ 5. **Refs** provide direct access to avoid unnecessary queries
414
+
415
+ ## Best Practices
416
+
417
+ ### Component Organization
418
+
419
+ ```tsx
420
+ // ✅ Good: Separate concerns
421
+ class TodoList extends Fukict<{ items: Todo[] }> {
422
+ render() {
423
+ return (
424
+ <ul>
425
+ {this.props.items.map(item => (
426
+ <TodoItem item={item} />
427
+ ))}
428
+ </ul>
429
+ );
430
+ }
431
+ }
432
+
433
+ // ❌ Bad: Too much in one component
434
+ class TodoApp extends Fukict {
435
+ render() {
436
+ return <div>{/* Everything in one component */}</div>;
437
+ }
438
+ }
439
+ ```
440
+
441
+ ### Event Handlers
442
+
443
+ ```tsx
444
+ // ✅ Good: Arrow function as class property
445
+ class Button extends Fukict {
446
+ handleClick = () => {
447
+ console.log('Clicked');
448
+ };
449
+
450
+ render() {
451
+ return <button on:click={this.handleClick}>Click</button>;
452
+ }
453
+ }
454
+
455
+ // ❌ Bad: Creates new function on every render
456
+ class Button extends Fukict {
457
+ render() {
458
+ return <button on:click={() => console.log('Clicked')}>Click</button>;
459
+ }
460
+ }
461
+ ```
462
+
463
+ ### Refs Usage
464
+
465
+ ```tsx
466
+ // ✅ Good: Use refs for direct DOM access
467
+ class Form extends Fukict {
468
+ private inputRef?: HTMLInputElement;
469
+
470
+ focus() {
471
+ this.inputRef?.focus();
472
+ }
473
+
474
+ render() {
475
+ return <input ref={(el) => (this.inputRef = el)} />;
476
+ }
477
+ }
478
+
479
+ // ❌ Bad: Query DOM manually
480
+ class Form extends Fukict {
481
+ focus() {
482
+ document.querySelector('input')?.focus(); // Don't do this
483
+ }
484
+
485
+ render() {
486
+ return <input />;
487
+ }
488
+ }
489
+ ```
490
+
491
+ ## Examples
492
+
493
+ See the [examples](../../examples) directory for complete examples:
494
+
495
+ - [Basic usage](../../examples/basic-vite)
496
+ - [Router integration](../../examples/infra-router)
497
+ - [State management](../../examples/infra-flux)
498
+ - [Complete app](../../examples/complete)
499
+
500
+ ## Related Packages
501
+
502
+ - [@fukict/babel-preset](../babel-preset) - JSX transformation (required)
503
+ - [@fukict/vite-plugin](../vite-plugin) - Vite integration (recommended)
504
+ - [@fukict/router](../router) - SPA routing
505
+ - [@fukict/flux](../flux) - State management
506
+ - [@fukict/i18n](../i18n) - Internationalization
507
+
508
+ ## License
509
+
510
+ MIT
@@ -1,4 +1,4 @@
1
- import type { Ref, Slots } from '../types/class.js';
1
+ import type { Refs, Slots } from '../types/class.js';
2
2
  import type { VNode, VNodeChild } from '../types/core.js';
3
3
  import type { FukictDetachAttribute, FukictRefAttribute, FukictSlotAttribute } from '../types/dom-attributes.js';
4
4
  /**
@@ -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
@@ -78,9 +73,10 @@ export declare abstract class Fukict<P extends Record<string, any> = {}, S exten
78
73
  */
79
74
  protected slots: S;
80
75
  /**
81
- * Refs map (shared with framework and user)
76
+ * Refs object (shared with framework and user)
77
+ * Can be extended by subclasses with specific ref types
82
78
  */
83
- readonly refs: Map<string | symbol, Ref>;
79
+ readonly refs: Refs;
84
80
  /**
85
81
  * Current rendered VNode (component's internal render result)
86
82
  * @internal
@@ -115,8 +111,10 @@ export declare abstract class Fukict<P extends Record<string, any> = {}, S exten
115
111
  constructor(props: FukictComponentProps<P>);
116
112
  /**
117
113
  * Render method (must be implemented by subclass)
114
+ *
115
+ * @returns VNode to render, or null/undefined to render nothing
118
116
  */
119
- abstract render(): VNode;
117
+ abstract render(): VNode | null | undefined;
120
118
  /**
121
119
  * Provide context value at current component level
122
120
  *
@@ -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,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAOpC;;;;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;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEpB;;;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;;;;OAIG;IACH,QAAQ,CAAC,MAAM,IAAI,KAAK,GAAG,IAAI,GAAG,SAAS;IAE3C;;;;;;;;;;;;;;;;;;;;;;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;IAiDhD;;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"}
@@ -5,6 +5,7 @@ import { createRealNode } from '../renderer/create.js';
5
5
  import { diff, removeNode } from '../renderer/diff/index.js';
6
6
  import { activate } from '../renderer/mount.js';
7
7
  import { createImmutableProxy, getParentContext } from '../utils/context.js';
8
+ import { createPrimitiveVNode } from '../vnode.js';
8
9
  // Global component instance counter for unique IDs
9
10
  let componentIdCounter = 0;
10
11
  /**
@@ -44,11 +45,6 @@ let componentIdCounter = 0;
44
45
  * ```
45
46
  */
46
47
  export class Fukict {
47
- /**
48
- * Component type marker for Babel plugin
49
- * @internal
50
- */
51
- static __COMPONENT_TYPE__ = 'class';
52
48
  /**
53
49
  * Unique component instance ID (for debugging)
54
50
  * @internal
@@ -72,7 +68,8 @@ export class Fukict {
72
68
  */
73
69
  slots;
74
70
  /**
75
- * Refs map (shared with framework and user)
71
+ * Refs object (shared with framework and user)
72
+ * Can be extended by subclasses with specific ref types
76
73
  */
77
74
  refs;
78
75
  /**
@@ -112,7 +109,7 @@ export class Fukict {
112
109
  this.props = props;
113
110
  this.slots = {};
114
111
  // Initialize instance fields (avoid field initializers for better memory efficiency)
115
- this.refs = new Map();
112
+ this.refs = {};
116
113
  this.__vnode__ = null;
117
114
  this.__wrapper__ = null;
118
115
  this.__container__ = null;
@@ -234,12 +231,16 @@ export class Fukict {
234
231
  this.props = newProps;
235
232
  }
236
233
  // Re-render
237
- const newVNode = this.render();
234
+ const rawVNode = this.render();
235
+ // Wrap null/undefined as PrimitiveVNode for consistent diff handling
236
+ const newVNode = rawVNode === null || rawVNode === undefined
237
+ ? createPrimitiveVNode(rawVNode)
238
+ : rawVNode;
238
239
  // Preserve context from old VNode to new VNode
239
240
  if (this.__vnode__?.__context__) {
240
241
  newVNode.__context__ = this.__vnode__.__context__;
241
242
  }
242
- // Built-in diff and patch
243
+ // Diff and patch (let diff handle all cases including PrimitiveVNode)
243
244
  if (this.__vnode__ && this.__container__) {
244
245
  diff(this.__vnode__, newVNode, this.__container__);
245
246
  }
@@ -260,21 +261,22 @@ export class Fukict {
260
261
  this.__inMounting__ = true;
261
262
  // First render (if not already rendered)
262
263
  if (!this.__vnode__) {
263
- this.__vnode__ = this.render();
264
- }
265
- if (!this.__vnode__) {
266
- this.__inMounting__ = false;
267
- return;
264
+ const rawVNode = this.render();
265
+ // Wrap null/undefined as PrimitiveVNode
266
+ this.__vnode__ =
267
+ rawVNode === null || rawVNode === undefined
268
+ ? createPrimitiveVNode(rawVNode)
269
+ : rawVNode;
268
270
  }
269
- // 1. Create real DOM for instance.__vnode__ (pass this for fukict:ref)
271
+ // Create real DOM for instance.__vnode__ (pass this for fukict:ref)
270
272
  createRealNode(this.__vnode__, this);
271
- // 2. Recursively activate nested components in instance.__vnode__
273
+ // Recursively activate nested components in instance.__vnode__
272
274
  activate({
273
275
  vnode: this.__vnode__,
274
276
  ...(placeholder ? { placeholder } : { container }),
275
277
  onMounted: () => {
276
278
  this.__inMounting__ = false;
277
- // 3. Trigger mounted() hook (protected from re-entry)
279
+ // Trigger mounted() hook (protected from re-entry)
278
280
  this.mounted?.();
279
281
  },
280
282
  });
@@ -287,10 +289,10 @@ export class Fukict {
287
289
  this.__inUnmounting__ = true;
288
290
  this.beforeUnmount?.();
289
291
  removeNode(this.__vnode__, this.__container__);
290
- for (const ref of this.refs.values()) {
291
- ref.current = null;
292
+ // Clear all refs (refs now store instances directly, not Ref wrappers)
293
+ for (const key in this.refs) {
294
+ delete this.refs[key];
292
295
  }
293
- this.refs.clear();
294
296
  this.__vnode__ = null;
295
297
  this.__container__ = null;
296
298
  this.__inUnmounting__ = false;
@@ -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"}