@fukict/basic 0.1.9 → 0.1.11

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 (99) hide show
  1. package/README.md +1 -1
  2. package/dist/component-class/fukict.d.ts +17 -18
  3. package/dist/component-class/fukict.d.ts.map +1 -1
  4. package/dist/component-class/fukict.js +56 -65
  5. package/dist/component-class/fukict.js.map +1 -1
  6. package/dist/dev.d.ts +26 -0
  7. package/dist/dev.d.ts.map +1 -0
  8. package/dist/dev.js +46 -0
  9. package/dist/dev.js.map +1 -0
  10. package/dist/index.d.ts +2 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/metadata.d.ts +1 -1
  15. package/dist/metadata.js +1 -1
  16. package/dist/metadata.js.map +1 -1
  17. package/dist/renderer/class-helpers.d.ts +1 -2
  18. package/dist/renderer/class-helpers.d.ts.map +1 -1
  19. package/dist/renderer/class-helpers.js +6 -7
  20. package/dist/renderer/class-helpers.js.map +1 -1
  21. package/dist/renderer/create.d.ts +1 -1
  22. package/dist/renderer/create.d.ts.map +1 -1
  23. package/dist/renderer/create.js +3 -3
  24. package/dist/renderer/create.js.map +1 -1
  25. package/dist/renderer/diff/class.d.ts.map +1 -1
  26. package/dist/renderer/diff/class.js +3 -9
  27. package/dist/renderer/diff/class.js.map +1 -1
  28. package/dist/renderer/diff/dom-ops.d.ts +16 -0
  29. package/dist/renderer/diff/dom-ops.d.ts.map +1 -0
  30. package/dist/renderer/diff/{helpers.js → dom-ops.js} +42 -81
  31. package/dist/renderer/diff/dom-ops.js.map +1 -0
  32. package/dist/renderer/diff/index.d.ts +5 -13
  33. package/dist/renderer/diff/index.d.ts.map +1 -1
  34. package/dist/renderer/diff/index.js +10 -103
  35. package/dist/renderer/diff/index.js.map +1 -1
  36. package/dist/renderer/diff/primitive.d.ts.map +1 -1
  37. package/dist/renderer/diff/primitive.js +3 -8
  38. package/dist/renderer/diff/primitive.js.map +1 -1
  39. package/dist/renderer/diff/props.js +5 -5
  40. package/dist/renderer/diff/props.js.map +1 -1
  41. package/dist/renderer/diff/reconciler.d.ts +17 -0
  42. package/dist/renderer/diff/reconciler.d.ts.map +1 -0
  43. package/dist/renderer/diff/reconciler.js +232 -0
  44. package/dist/renderer/diff/reconciler.js.map +1 -0
  45. package/dist/renderer/diff/utils.d.ts +10 -0
  46. package/dist/renderer/diff/utils.d.ts.map +1 -0
  47. package/dist/renderer/diff/utils.js +25 -0
  48. package/dist/renderer/diff/utils.js.map +1 -0
  49. package/dist/renderer/index.d.ts.map +1 -1
  50. package/dist/renderer/index.js +17 -0
  51. package/dist/renderer/index.js.map +1 -1
  52. package/dist/renderer/mount.js +9 -9
  53. package/dist/renderer/mount.js.map +1 -1
  54. package/dist/renderer/vnode-helpers.js +5 -5
  55. package/dist/renderer/vnode-helpers.js.map +1 -1
  56. package/dist/types/class.d.ts +2 -2
  57. package/dist/types/class.d.ts.map +1 -1
  58. package/dist/types/core.d.ts +15 -16
  59. package/dist/types/core.d.ts.map +1 -1
  60. package/dist/types/core.js.map +1 -1
  61. package/dist/types/dev.d.ts +21 -0
  62. package/dist/types/dev.d.ts.map +1 -0
  63. package/dist/types/dev.js +8 -0
  64. package/dist/types/dev.js.map +1 -0
  65. package/dist/types/dom-attributes.d.ts.map +1 -1
  66. package/dist/types/index.d.ts +1 -0
  67. package/dist/types/index.d.ts.map +1 -1
  68. package/dist/types/jsx.d.ts.map +1 -1
  69. package/dist/utils/context.d.ts +2 -3
  70. package/dist/utils/context.d.ts.map +1 -1
  71. package/dist/utils/context.js +6 -22
  72. package/dist/utils/context.js.map +1 -1
  73. package/dist/utils/dom-helpers.d.ts +3 -3
  74. package/dist/utils/dom-helpers.js +7 -7
  75. package/dist/utils/dom-helpers.js.map +1 -1
  76. package/dist/vnode.d.ts +5 -0
  77. package/dist/vnode.d.ts.map +1 -1
  78. package/dist/vnode.js +9 -7
  79. package/dist/vnode.js.map +1 -1
  80. package/package.json +18 -18
  81. package/dist/renderer/diff/children.d.ts +0 -12
  82. package/dist/renderer/diff/children.d.ts.map +0 -1
  83. package/dist/renderer/diff/children.js +0 -55
  84. package/dist/renderer/diff/children.js.map +0 -1
  85. package/dist/renderer/diff/element.d.ts +0 -14
  86. package/dist/renderer/diff/element.d.ts.map +0 -1
  87. package/dist/renderer/diff/element.js +0 -38
  88. package/dist/renderer/diff/element.js.map +0 -1
  89. package/dist/renderer/diff/fragment.d.ts +0 -13
  90. package/dist/renderer/diff/fragment.d.ts.map +0 -1
  91. package/dist/renderer/diff/fragment.js +0 -35
  92. package/dist/renderer/diff/fragment.js.map +0 -1
  93. package/dist/renderer/diff/function.d.ts +0 -9
  94. package/dist/renderer/diff/function.d.ts.map +0 -1
  95. package/dist/renderer/diff/function.js +0 -59
  96. package/dist/renderer/diff/function.js.map +0 -1
  97. package/dist/renderer/diff/helpers.d.ts +0 -19
  98. package/dist/renderer/diff/helpers.d.ts.map +0 -1
  99. package/dist/renderer/diff/helpers.js.map +0 -1
package/README.md CHANGED
@@ -472,7 +472,7 @@ class Form extends Fukict {
472
472
  }
473
473
 
474
474
  render() {
475
- return <input ref={(el) => (this.inputRef = el)} />;
475
+ return <input ref={el => (this.inputRef = el)} />;
476
476
  }
477
477
  }
478
478
 
@@ -50,16 +50,22 @@ 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
+ * Static marker for class component detection (avoids instanceof check)
55
+ * Used by vnode.ts to detect class components without circular dependency
56
+ * @internal
57
+ */
58
+ static readonly __isFukictComponent__ = true;
53
59
  /**
54
60
  * Unique component instance ID (for debugging)
55
61
  * @internal
56
62
  */
57
- readonly __id__: number;
63
+ readonly $id: number;
58
64
  /**
59
65
  * Component name (for debugging)
60
66
  * @internal
61
67
  */
62
- readonly __name__: string;
68
+ readonly $name: string;
63
69
  /**
64
70
  * Component props (readonly)
65
71
  * Automatically includes optional children property and fukict attributes
@@ -85,30 +91,23 @@ export declare abstract class Fukict<P extends Record<string, any> = {}, S exten
85
91
  * Current rendered VNode (component's internal render result)
86
92
  * @internal
87
93
  */
88
- __vnode__: VNode | null;
94
+ _render: VNode | null;
89
95
  /**
90
- * Wrapper VNode (ClassComponentVNode that wraps this instance in parent's tree)
91
- * Used for context traversal - child can access parent's context via __wrapper__
96
+ * Parent component instance
97
+ * Used for context traversal - child can access parent's context via _parent
92
98
  * @internal
93
99
  */
94
- __wrapper__: VNode | null;
100
+ _parent: Fukict | null;
95
101
  /**
96
102
  * Parent DOM container
97
103
  * @internal
98
104
  */
99
- __container__: Element | null;
100
- /**
101
- * Component placeholder (in container mode)
102
- * @internal
103
- */
104
- __placeholder__: Comment | null;
105
+ _container: Element | null;
105
106
  /**
106
- * Lifecycle execution flags (prevent re-entrant calls during lifecycle)
107
+ * Lifecycle phase (prevents re-entrant calls during lifecycle)
107
108
  * @internal
108
109
  */
109
- __inUpdating__: boolean;
110
- __inMounting__: boolean;
111
- __inUnmounting__: boolean;
110
+ _phase: 'idle' | 'mounting' | 'updating' | 'unmounting';
112
111
  /**
113
112
  * Constructor
114
113
  */
@@ -150,8 +149,8 @@ export declare abstract class Fukict<P extends Record<string, any> = {}, S exten
150
149
  * if context not found.
151
150
  *
152
151
  * Search order:
153
- * 1. Current component's __vnode__.__context__ (if component provided its own context)
154
- * 2. Parent component's context (via __wrapper__.__parentInstance__)
152
+ * 1. Current component's _render.__context__ (if component provided its own context)
153
+ * 2. Parent component's context (via _parent)
155
154
  *
156
155
  * @param key - Context key (Symbol or string)
157
156
  * @param defaultValue - Default value if context not found
@@ -1 +1 @@
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;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAEpB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IAErB;;;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;IAgDhD;;;;;OAKG;IACH,OAAO,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhC;;;;;OAKG;IACH,aAAa,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEtC;;;;;OAKG;IACH,OAAO,CAAC,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAElE;;;;;OAKG;IACH,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI;IA8BtD;;;;;OAKG;IACH,OAAO,IAAI,IAAI;CAkBhB"}
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;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,qBAAqB,QAAQ;IAE7C;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAElD;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAEpB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IAErB;;;OAGG;IACH,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC;IAEtB;;;;OAIG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB;;;OAGG;IACH,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAE3B;;;OAGG;IACH,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;IAExD;;OAEG;gBACS,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAiB1C;;;;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;IAsBhB;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAgDhD;;;;;OAKG;IACH,OAAO,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhC;;;;;OAKG;IACH,aAAa,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEtC;;;;;OAKG;IACH,OAAO,CAAC,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAElE;;;;;OAKG;IACH,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI;IA6BtD;;;;;OAKG;IACH,OAAO,IAAI,IAAI;CAkBhB"}
@@ -45,16 +45,22 @@ let componentIdCounter = 0;
45
45
  * ```
46
46
  */
47
47
  export class Fukict {
48
+ /**
49
+ * Static marker for class component detection (avoids instanceof check)
50
+ * Used by vnode.ts to detect class components without circular dependency
51
+ * @internal
52
+ */
53
+ static __isFukictComponent__ = true;
48
54
  /**
49
55
  * Unique component instance ID (for debugging)
50
56
  * @internal
51
57
  */
52
- __id__;
58
+ $id;
53
59
  /**
54
60
  * Component name (for debugging)
55
61
  * @internal
56
62
  */
57
- __name__;
63
+ $name;
58
64
  /**
59
65
  * Component props (readonly)
60
66
  * Automatically includes optional children property and fukict attributes
@@ -80,47 +86,37 @@ export class Fukict {
80
86
  * Current rendered VNode (component's internal render result)
81
87
  * @internal
82
88
  */
83
- __vnode__;
89
+ _render;
84
90
  /**
85
- * Wrapper VNode (ClassComponentVNode that wraps this instance in parent's tree)
86
- * Used for context traversal - child can access parent's context via __wrapper__
91
+ * Parent component instance
92
+ * Used for context traversal - child can access parent's context via _parent
87
93
  * @internal
88
94
  */
89
- __wrapper__;
95
+ _parent;
90
96
  /**
91
97
  * Parent DOM container
92
98
  * @internal
93
99
  */
94
- __container__;
100
+ _container;
95
101
  /**
96
- * Component placeholder (in container mode)
102
+ * Lifecycle phase (prevents re-entrant calls during lifecycle)
97
103
  * @internal
98
104
  */
99
- __placeholder__;
100
- /**
101
- * Lifecycle execution flags (prevent re-entrant calls during lifecycle)
102
- * @internal
103
- */
104
- __inUpdating__;
105
- __inMounting__;
106
- __inUnmounting__;
105
+ _phase;
107
106
  /**
108
107
  * Constructor
109
108
  */
110
109
  constructor(props) {
111
- this.__id__ = ++componentIdCounter;
112
- this.__name__ = this.constructor.name;
110
+ this.$id = ++componentIdCounter;
111
+ this.$name = this.constructor.name;
113
112
  this.props = props;
114
113
  this.$slots = {};
115
114
  // Initialize instance fields (avoid field initializers for better memory efficiency)
116
115
  this.$refs = {};
117
- this.__vnode__ = null;
118
- this.__wrapper__ = null;
119
- this.__container__ = null;
120
- this.__placeholder__ = null;
121
- this.__inUpdating__ = false;
122
- this.__inMounting__ = false;
123
- this.__inUnmounting__ = false;
116
+ this._render = null;
117
+ this._parent = null;
118
+ this._container = null;
119
+ this._phase = 'idle';
124
120
  // Note: Do NOT call render() here!
125
121
  // render() will be called in mount() after subclass constructor completes
126
122
  }
@@ -148,17 +144,17 @@ export class Fukict {
148
144
  * ```
149
145
  */
150
146
  provideContext(key, value) {
151
- if (!this.__vnode__) {
152
- console.warn(`[Fukict] Cannot provide context in component "${this.__name__}": __vnode__ is null. ` +
147
+ if (!this._render) {
148
+ console.warn(`[Fukict] Cannot provide context in component "${this.$name}": _render is null. ` +
153
149
  `Make sure to call provideContext() after component is mounted.`);
154
150
  return;
155
151
  }
156
- if (!this.__vnode__.__context__) {
157
- this.__vnode__.__context__ = {
158
- __parent__: getParentContext(this.__vnode__),
152
+ if (!this._render.__context__) {
153
+ this._render.__context__ = {
154
+ __parent__: getParentContext(this._render),
159
155
  };
160
156
  }
161
- this.__vnode__.__context__[key] = createImmutableProxy(value);
157
+ this._render.__context__[key] = createImmutableProxy(value);
162
158
  }
163
159
  /**
164
160
  * Get context value from current or parent contexts
@@ -167,8 +163,8 @@ export class Fukict {
167
163
  * if context not found.
168
164
  *
169
165
  * Search order:
170
- * 1. Current component's __vnode__.__context__ (if component provided its own context)
171
- * 2. Parent component's context (via __wrapper__.__parentInstance__)
166
+ * 1. Current component's _render.__context__ (if component provided its own context)
167
+ * 2. Parent component's context (via _parent)
172
168
  *
173
169
  * @param key - Context key (Symbol or string)
174
170
  * @param defaultValue - Default value if context not found
@@ -191,8 +187,8 @@ export class Fukict {
191
187
  */
192
188
  getContext(key, defaultValue) {
193
189
  // First, check if this component has its own context
194
- if (this.__vnode__ && this.__vnode__.__context__) {
195
- let currentContext = this.__vnode__.__context__;
190
+ if (this._render && this._render.__context__) {
191
+ let currentContext = this._render.__context__;
196
192
  // Traverse up the chain starting from current component
197
193
  while (currentContext) {
198
194
  if (key in currentContext) {
@@ -202,12 +198,8 @@ export class Fukict {
202
198
  }
203
199
  }
204
200
  // If not found in own context chain, look in parent component
205
- if (this.__wrapper__) {
206
- const parentInstance = this.__wrapper__.__parentInstance__;
207
- if (parentInstance) {
208
- // Recursively search in parent
209
- return parentInstance.getContext(key, defaultValue);
210
- }
201
+ if (this._parent) {
202
+ return this._parent.getContext(key, defaultValue);
211
203
  }
212
204
  return defaultValue;
213
205
  }
@@ -222,13 +214,13 @@ export class Fukict {
222
214
  */
223
215
  update(newProps) {
224
216
  // Prevent re-entrant update during lifecycle hooks
225
- if (this.__inUpdating__ || this.__inMounting__ || this.__inUnmounting__) {
226
- console.warn(`[Fukict] Component "${this.__name__}" tried to update during lifecycle execution. ` +
217
+ if (this._phase !== 'idle') {
218
+ console.warn(`[Fukict] Component "${this.$name}" tried to update during lifecycle execution (phase: ${this._phase}). ` +
227
219
  `This is not allowed and the update was ignored. ` +
228
220
  `Do not call update() or trigger parent updates in mounted/updated/beforeUnmount hooks.`);
229
221
  return;
230
222
  }
231
- this.__inUpdating__ = true;
223
+ this._phase = 'updating';
232
224
  const prevProps = this.props;
233
225
  // Update props (use current props if not provided)
234
226
  if (newProps !== undefined) {
@@ -241,18 +233,18 @@ export class Fukict {
241
233
  ? createPrimitiveVNode(rawVNode)
242
234
  : rawVNode;
243
235
  // Preserve context from old VNode to new VNode
244
- if (this.__vnode__?.__context__) {
245
- newVNode.__context__ = this.__vnode__.__context__;
236
+ if (this._render?.__context__) {
237
+ newVNode.__context__ = this._render.__context__;
246
238
  }
247
239
  // Diff and patch (let diff handle all cases including PrimitiveVNode)
248
- if (this.__vnode__ && this.__container__) {
249
- diff(this.__vnode__, newVNode, this.__container__);
240
+ if (this._render && this._container) {
241
+ diff(this._render, newVNode, this._container);
250
242
  }
251
- this.__vnode__ = newVNode;
243
+ this._render = newVNode;
252
244
  // Call lifecycle hook (protected from re-entry)
253
245
  // eslint-disable-next-line @typescript-eslint/no-floating-promises -- async lifecycle hooks are intentionally not awaited
254
246
  this.updated?.(prevProps);
255
- this.__inUpdating__ = false;
247
+ this._phase = 'idle';
256
248
  }
257
249
  /**
258
250
  * Mount component to DOM
@@ -261,26 +253,25 @@ export class Fukict {
261
253
  * @sealed
262
254
  */
263
255
  mount(container, placeholder) {
264
- this.__placeholder__ = placeholder || null;
265
- this.__container__ = placeholder?.parentElement || container;
266
- this.__inMounting__ = true;
256
+ this._container = placeholder?.parentElement || container;
257
+ this._phase = 'mounting';
267
258
  // First render (if not already rendered)
268
- if (!this.__vnode__) {
259
+ if (!this._render) {
269
260
  const rawVNode = this.render();
270
261
  // Wrap null/undefined as PrimitiveVNode
271
- this.__vnode__ =
262
+ this._render =
272
263
  rawVNode === null || rawVNode === undefined
273
264
  ? createPrimitiveVNode(rawVNode)
274
265
  : rawVNode;
275
266
  }
276
- // Create real DOM for instance.__vnode__ (pass this for fukict:ref)
277
- createRealNode(this.__vnode__, this);
278
- // Recursively activate nested components in instance.__vnode__
267
+ // Create real DOM for instance._render (pass this for fukict:ref)
268
+ createRealNode(this._render, this);
269
+ // Recursively activate nested components in instance._render
279
270
  activate({
280
- vnode: this.__vnode__,
271
+ vnode: this._render,
281
272
  ...(placeholder ? { placeholder } : { container }),
282
273
  onMounted: () => {
283
- this.__inMounting__ = false;
274
+ this._phase = 'idle';
284
275
  // eslint-disable-next-line @typescript-eslint/no-floating-promises -- async lifecycle hooks are intentionally not awaited
285
276
  this.mounted?.();
286
277
  },
@@ -293,17 +284,17 @@ export class Fukict {
293
284
  * @sealed
294
285
  */
295
286
  unmount() {
296
- this.__inUnmounting__ = true;
287
+ this._phase = 'unmounting';
297
288
  // eslint-disable-next-line @typescript-eslint/no-floating-promises -- async lifecycle hooks are intentionally not awaited
298
289
  this.beforeUnmount?.();
299
- removeNode(this.__vnode__, this.__container__);
290
+ removeNode(this._render, this._container);
300
291
  // Clear all refs ($refs now store instances directly, not Ref wrappers)
301
292
  for (const key in this.$refs) {
302
293
  delete this.$refs[key];
303
294
  }
304
- this.__vnode__ = null;
305
- this.__container__ = null;
306
- this.__inUnmounting__ = false;
295
+ this._render = null;
296
+ this._container = null;
297
+ this._phase = 'idle';
307
298
  }
308
299
  }
309
300
  //# sourceMappingURL=fukict.js.map
@@ -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":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAShD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,mDAAmD;AACnD,IAAI,kBAAkB,GAAG,CAAC,CAAC;AAoB3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,OAAgB,MAAM;IAI1B;;;;OAIG;IACH,MAAM,CAAU,qBAAqB,GAAG,IAAI,CAAC;IAE7C;;;OAGG;IACM,GAAG,CAAS;IAErB;;;OAGG;IACM,KAAK,CAAS;IAEvB;;;OAGG;IACgB,KAAK,CAA0B;IAElD;;;;;;;OAOG;IACO,MAAM,CAAI;IAEpB;;;;;OAKG;IACM,KAAK,CAAO;IAErB;;;OAGG;IACH,OAAO,CAAe;IAEtB;;;;OAIG;IACH,OAAO,CAAgB;IAEvB;;;OAGG;IACH,UAAU,CAAiB;IAE3B;;;OAGG;IACH,MAAM,CAAkD;IAExD;;OAEG;IACH,YAAY,KAA8B;QACxC,IAAI,CAAC,GAAG,GAAG,EAAE,kBAAkB,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,EAAO,CAAC;QAEtB,qFAAqF;QACrF,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,mCAAmC;QACnC,0EAA0E;IAC5E,CAAC;IASD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACO,cAAc,CAAI,GAAoB,EAAE,KAAQ;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CACV,iDAAiD,IAAI,CAAC,KAAK,sBAAsB;gBAC/E,gEAAgE,CACnE,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG;gBACzB,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;aAC3C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACO,UAAU,CAClB,GAAoB,EACpB,YAAgB;QAEhB,qDAAqD;QACrD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,cAAc,GAA4B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YAEvE,wDAAwD;YACxD,OAAO,cAAc,EAAE,CAAC;gBACtB,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;oBAC1B,OAAO,cAAc,CAAC,GAAG,CAAM,CAAC;gBAClC,CAAC;gBACD,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAkC;QACvC,mDAAmD;QACnD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CACV,uBAAuB,IAAI,CAAC,KAAK,wDAAwD,IAAI,CAAC,MAAM,KAAK;gBACvG,kDAAkD;gBAClD,wFAAwF,CAC3F,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAE7B,mDAAmD;QACnD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAiC,GAAG,QAAQ,CAAC;QACrD,CAAC;QAED,YAAY;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE/B,qEAAqE;QACrE,MAAM,QAAQ,GACZ,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS;YACzC,CAAC,CAAE,oBAAoB,CAAC,QAAQ,CAAW;YAC3C,CAAC,CAAC,QAAQ,CAAC;QAEf,+CAA+C;QAC/C,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;YAC9B,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAClD,CAAC;QAED,sEAAsE;QACtE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QAExB,gDAAgD;QAChD,0HAA0H;QAC1H,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;QAE1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IA0BD;;;;;OAKG;IACH,KAAK,CAAC,SAAkB,EAAE,WAAqB;QAC7C,IAAI,CAAC,UAAU,GAAG,WAAW,EAAE,aAAa,IAAI,SAAS,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QAEzB,yCAAyC;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,wCAAwC;YACxC,IAAI,CAAC,OAAO;gBACV,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS;oBACzC,CAAC,CAAE,oBAAoB,CAAC,QAAQ,CAAW;oBAC3C,CAAC,CAAC,QAAQ,CAAC;QACjB,CAAC;QAED,kEAAkE;QAClE,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEnC,6DAA6D;QAC7D,QAAQ,CAAC;YACP,KAAK,EAAE,IAAI,CAAC,OAAO;YACnB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;YAClD,SAAS,EAAE,GAAG,EAAE;gBACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,0HAA0H;gBAC1H,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,OAAO;QACL,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAE3B,0HAA0H;QAC1H,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QAEvB,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAqB,CAAC,CAAC;QAErD,wEAAwE;QACxE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC"}
package/dist/dev.d.ts ADDED
@@ -0,0 +1,26 @@
1
+ import { FukictDevInfo } from './types';
2
+ /**
3
+ * Get or initialize the global dev info object.
4
+ * Returns `undefined` in production or non-browser environments.
5
+ */
6
+ export declare function getDevInfo(): FukictDevInfo | undefined;
7
+ /**
8
+ * Register ecosystem package dev context onto `window.__FUKICT__`.
9
+ *
10
+ * @param key - Context key (e.g. 'stores', 'router')
11
+ * @param value - Context value
12
+ * @returns The dev info object, or `undefined` if not in dev mode
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // In @fukict/flux
17
+ * import { registerDevContext } from '@fukict/basic';
18
+ * registerDevContext('stores', []);
19
+ *
20
+ * // In @fukict/router
21
+ * import { registerDevContext } from '@fukict/basic';
22
+ * registerDevContext('router', { instance: this, mode, routes });
23
+ * ```
24
+ */
25
+ export declare function registerDevContext(key: string, value: unknown): FukictDevInfo | undefined;
26
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;;GAGG;AACH,wBAAgB,UAAU,IAAI,aAAa,GAAG,SAAS,CAQtD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,aAAa,GAAG,SAAS,CAM3B"}
package/dist/dev.js ADDED
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Dev-mode utilities for Fukict ecosystem packages.
3
+ *
4
+ * Provides a unified API for registering dev context on `window.__FUKICT__`.
5
+ * Only active in dev mode (process.env.NODE_ENV !== 'production').
6
+ */
7
+ import { METADATA } from './metadata.js';
8
+ /**
9
+ * Get or initialize the global dev info object.
10
+ * Returns `undefined` in production or non-browser environments.
11
+ */
12
+ export function getDevInfo() {
13
+ if (process.env.NODE_ENV !== 'production' && typeof window !== 'undefined') {
14
+ if (!window.__FUKICT__) {
15
+ window.__FUKICT__ = { version: METADATA.version, roots: [] };
16
+ }
17
+ return window.__FUKICT__;
18
+ }
19
+ return undefined;
20
+ }
21
+ /**
22
+ * Register ecosystem package dev context onto `window.__FUKICT__`.
23
+ *
24
+ * @param key - Context key (e.g. 'stores', 'router')
25
+ * @param value - Context value
26
+ * @returns The dev info object, or `undefined` if not in dev mode
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * // In @fukict/flux
31
+ * import { registerDevContext } from '@fukict/basic';
32
+ * registerDevContext('stores', []);
33
+ *
34
+ * // In @fukict/router
35
+ * import { registerDevContext } from '@fukict/basic';
36
+ * registerDevContext('router', { instance: this, mode, routes });
37
+ * ```
38
+ */
39
+ export function registerDevContext(key, value) {
40
+ const devInfo = getDevInfo();
41
+ if (devInfo) {
42
+ devInfo[key] = value;
43
+ }
44
+ return devInfo;
45
+ }
46
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,MAAM,CAAC,UAAU,CAAC;IAC3B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,KAAc;IAEd,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,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.9";
8
+ export declare const VERSION: "0.1.11";
9
9
  export type { VNode, VNodeChild, ElementVNode, FragmentVNode, FunctionComponentVNode, ClassComponentVNode, UnregisterFn, RefCallback, CSSProperties, ClassValue, RuntimeAttributes, EventHandlers, HTMLAttributes, SVGAttributes, Slots, Ref, Refs, 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';
@@ -19,4 +19,5 @@ export { attach, replaceNode, unmount, diff } from './renderer/index.js';
19
19
  export { createRealNode } from './renderer/create.js';
20
20
  export { isDomArray, normalizeDom, getFirstDomNode, getAllDomNodes, isVNode, } from './utils/dom-helpers.js';
21
21
  export * as dom from './dom/index.js';
22
+ export { getDevInfo, registerDevContext } from './dev.js';
22
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,eAAO,MAAM,OAAO,SAAmB,CAAC;AAGxC,YAAY,EACV,KAAK,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,aAAa,EACb,KAAK,EACL,GAAG,EACH,IAAI,EACJ,eAAe,EACf,eAAe,EACf,WAAW,EACX,WAAW,EACX,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,YAAY,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,OAAO,GACR,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,eAAO,MAAM,OAAO,UAAmB,CAAC;AAGxC,YAAY,EACV,KAAK,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,aAAa,EACb,KAAK,EACL,GAAG,EACH,IAAI,EACJ,eAAe,EACf,eAAe,EACf,WAAW,EACX,WAAW,EACX,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,YAAY,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,OAAO,GACR,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -23,4 +23,6 @@ export { createRealNode } from './renderer/create.js';
23
23
  export { isDomArray, normalizeDom, getFirstDomNode, getAllDomNodes, isVNode, } from './utils/dom-helpers.js';
24
24
  // DOM utilities (exported for widget package use)
25
25
  export * as dom from './dom/index.js';
26
+ // Dev-mode utilities (for ecosystem packages)
27
+ export { getDevInfo, registerDevContext } from './dev.js';
26
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,mBAAmB;AACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AA+BxC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAE/D,kBAAkB;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,qBAAqB;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,YAAY;AACZ,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEzE,gDAAgD;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,uBAAuB;AACvB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,OAAO,GACR,MAAM,wBAAwB,CAAC;AAEhC,kDAAkD;AAClD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,mBAAmB;AACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AA+BxC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAE/D,kBAAkB;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,qBAAqB;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,YAAY;AACZ,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEzE,gDAAgD;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,uBAAuB;AACvB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,OAAO,GACR,MAAM,wBAAwB,CAAC;AAEhC,kDAAkD;AAClD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AAEtC,8CAA8C;AAC9C,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC"}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  export declare const METADATA: {
6
6
  readonly name: "@fukict/basic";
7
- readonly version: "0.1.9";
7
+ readonly version: "0.1.11";
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.9',
7
+ version: '0.1.11',
8
8
  description: 'Lightweight DOM rendering basic with extension mechanism',
9
9
  author: 'Fukict Team',
10
10
  license: 'MIT',
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,0DAA0D;IACvE,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,sCAAsC;CAC1C,CAAC"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,0DAA0D;IACvE,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,sCAAsC;CAC1C,CAAC"}
@@ -6,8 +6,7 @@ import type { ClassComponentVNode } from '../types/index.js';
6
6
  * 1. Saves instance to vnode
7
7
  * 2. Extracts and sets slots from children, marks slot owner
8
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
9
+ * 4. Sets parent instance reference
11
10
  *
12
11
  * Used by both renderClassComponent (create) and diffClassComponent (update).
13
12
  *
@@ -1 +1 @@
1
- {"version":3,"file":"class-helpers.d.ts","sourceRoot":"","sources":["../../src/renderer/class-helpers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAS,MAAM,mBAAmB,CAAC;AAgDpE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,OAAO,EACjB,cAAc,CAAC,EAAE,OAAO,GACvB,IAAI,CA0CN"}
1
+ {"version":3,"file":"class-helpers.d.ts","sourceRoot":"","sources":["../../src/renderer/class-helpers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAS,MAAM,mBAAmB,CAAC;AAgDpE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,OAAO,EACjB,cAAc,CAAC,EAAE,OAAO,GACvB,IAAI,CAuCN"}
@@ -39,8 +39,7 @@ function markRefOwner(slots, refOwner) {
39
39
  * 1. Saves instance to vnode
40
40
  * 2. Extracts and sets slots from children, marks slot owner
41
41
  * 3. Registers instance to parent's $refs (if fukict:ref is specified)
42
- * 4. Updates wrapper VNode reference
43
- * 5. Updates parent instance reference on wrapper VNode
42
+ * 4. Sets parent instance reference
44
43
  *
45
44
  * Used by both renderClassComponent (create) and diffClassComponent (update).
46
45
  *
@@ -73,11 +72,11 @@ export function setupClassComponentVNode(vnode, instance, parentInstance) {
73
72
  targetInternal.$refs[refName] = instance;
74
73
  }
75
74
  }
76
- // 4. Update wrapper VNode reference
77
- instanceInternal.__wrapper__ = vnode;
78
- // 5. Update parent instance reference on wrapper VNode (for context chain)
79
- if (parentInstance) {
80
- vnode.__parentInstance__ = parentInstance;
75
+ // 4. Set parent instance reference (for context chain)
76
+ // Only update when parentInstance is explicitly provided (during creation).
77
+ // During diff, parentInstance is undefined preserve existing _parent.
78
+ if (parentInstance !== undefined) {
79
+ instanceInternal._parent = parentInstance;
81
80
  }
82
81
  }
83
82
  //# sourceMappingURL=class-helpers.js.map
@@ -1 +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;AAqB1D;;;;;;;;;;;GAWG;AACH,SAAS,YAAY,CAAC,KAA8B,EAAE,QAAiB;IACrE,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACnB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;oBAC7D,KAA2B,CAAC,YAAY,GAAG,QAAQ,CAAC;gBACvD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACjE,IAA0B,CAAC,YAAY,GAAG,QAAQ,CAAC;QACtD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;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,6EAA6E;IAC7E,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE3C,yDAAyD;QACzD,uFAAuF;QACvF,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAEpC,gBAAgB,CAAC,MAAM,GAAG,KAAK,CAAC;IAClC,CAAC;IAED,4CAA4C;IAC5C,2DAA2D;IAC3D,wDAAwD;IACxD,MAAM,SAAS,GAAI,KAA2B,CAAC,YAAY,IAAI,cAAc,CAAC;IAE9E,IAAI,SAAS,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAY,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,cAAc,GAAG,SAAsC,CAAC;YAE9D,8DAA8D;YAC9D,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;QAC3C,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
+ {"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;AAqB1D;;;;;;;;;;;GAWG;AACH,SAAS,YAAY,CAAC,KAA8B,EAAE,QAAiB;IACrE,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACnB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;oBAC7D,KAA2B,CAAC,YAAY,GAAG,QAAQ,CAAC;gBACvD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACjE,IAA0B,CAAC,YAAY,GAAG,QAAQ,CAAC;QACtD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;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,6EAA6E;IAC7E,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE3C,yDAAyD;QACzD,uFAAuF;QACvF,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAEpC,gBAAgB,CAAC,MAAM,GAAG,KAAK,CAAC;IAClC,CAAC;IAED,4CAA4C;IAC5C,2DAA2D;IAC3D,wDAAwD;IACxD,MAAM,SAAS,GAAI,KAA2B,CAAC,YAAY,IAAI,cAAc,CAAC;IAE9E,IAAI,SAAS,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAY,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,cAAc,GAAG,SAAsC,CAAC;YAE9D,8DAA8D;YAC9D,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,4EAA4E;IAC5E,wEAAwE;IACxE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,gBAAgB,CAAC,OAAO,GAAG,cAAc,CAAC;IAC5C,CAAC;AACH,CAAC"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Create real DOM nodes from VNode (supports Node | Node[] return)
5
5
  */
6
- import { Fukict } from '../component-class/fukict.js';
6
+ import type { Fukict } from '../component-class/fukict.js';
7
7
  import type { VNode, VNodeChild } from '../types/index.js';
8
8
  /**
9
9
  * Create real DOM node(s) from VNode
@@ -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;AAGtD,OAAO,KAAK,EAMV,KAAK,EACL,UAAU,EACX,MAAM,mBAAmB,CAAC;AAW3B;;;;;;;;;;;;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,CAqBtB"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/renderer/create.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAG3D,OAAO,KAAK,EAMV,KAAK,EACL,UAAU,EACX,MAAM,mBAAmB,CAAC;AAY3B;;;;;;;;;;;;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,CAqBtB"}
@@ -155,7 +155,7 @@ function renderFunctionComponent(vnode, componentInstance) {
155
155
  // Type assertion after runtime check
156
156
  const funcVNode = vnode;
157
157
  const { type, props, children } = funcVNode;
158
- // Merge children into props (like React)
158
+ // Merge children into props
159
159
  const propsWithChildren = {
160
160
  ...props,
161
161
  children: children.length === 1 ? children[0] : children,
@@ -193,9 +193,9 @@ function renderClassComponent(vnode, componentInstance) {
193
193
  // 2. Setup ClassComponentVNode: instance, slots, refs, wrapper, parent reference
194
194
  setupClassComponentVNode(classVNode, instance, componentInstance);
195
195
  // 3. Create comment placeholder with instance ID and name
196
- const placeholder = dom.createComment(`fukict:${instance.__name__}#${instance.__id__}`);
196
+ const placeholder = dom.createComment(`fukict:${instance.$name}#${instance.$id}`);
197
197
  // 4. Save placeholder to vnode
198
- classVNode.__placeholder__ = placeholder;
198
+ classVNode.__node__ = placeholder;
199
199
  return placeholder;
200
200
  }
201
201
  /**