@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.
- package/README.md +1 -1
- package/dist/component-class/fukict.d.ts +17 -18
- package/dist/component-class/fukict.d.ts.map +1 -1
- package/dist/component-class/fukict.js +56 -65
- package/dist/component-class/fukict.js.map +1 -1
- package/dist/dev.d.ts +26 -0
- package/dist/dev.d.ts.map +1 -0
- package/dist/dev.js +46 -0
- package/dist/dev.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +1 -1
- package/dist/metadata.js +1 -1
- package/dist/metadata.js.map +1 -1
- package/dist/renderer/class-helpers.d.ts +1 -2
- package/dist/renderer/class-helpers.d.ts.map +1 -1
- package/dist/renderer/class-helpers.js +6 -7
- package/dist/renderer/class-helpers.js.map +1 -1
- package/dist/renderer/create.d.ts +1 -1
- package/dist/renderer/create.d.ts.map +1 -1
- package/dist/renderer/create.js +3 -3
- package/dist/renderer/create.js.map +1 -1
- package/dist/renderer/diff/class.d.ts.map +1 -1
- package/dist/renderer/diff/class.js +3 -9
- package/dist/renderer/diff/class.js.map +1 -1
- package/dist/renderer/diff/dom-ops.d.ts +16 -0
- package/dist/renderer/diff/dom-ops.d.ts.map +1 -0
- package/dist/renderer/diff/{helpers.js → dom-ops.js} +42 -81
- package/dist/renderer/diff/dom-ops.js.map +1 -0
- package/dist/renderer/diff/index.d.ts +5 -13
- package/dist/renderer/diff/index.d.ts.map +1 -1
- package/dist/renderer/diff/index.js +10 -103
- package/dist/renderer/diff/index.js.map +1 -1
- package/dist/renderer/diff/primitive.d.ts.map +1 -1
- package/dist/renderer/diff/primitive.js +3 -8
- package/dist/renderer/diff/primitive.js.map +1 -1
- package/dist/renderer/diff/props.js +5 -5
- package/dist/renderer/diff/props.js.map +1 -1
- package/dist/renderer/diff/reconciler.d.ts +17 -0
- package/dist/renderer/diff/reconciler.d.ts.map +1 -0
- package/dist/renderer/diff/reconciler.js +232 -0
- package/dist/renderer/diff/reconciler.js.map +1 -0
- package/dist/renderer/diff/utils.d.ts +10 -0
- package/dist/renderer/diff/utils.d.ts.map +1 -0
- package/dist/renderer/diff/utils.js +25 -0
- package/dist/renderer/diff/utils.js.map +1 -0
- package/dist/renderer/index.d.ts.map +1 -1
- package/dist/renderer/index.js +17 -0
- package/dist/renderer/index.js.map +1 -1
- package/dist/renderer/mount.js +9 -9
- package/dist/renderer/mount.js.map +1 -1
- package/dist/renderer/vnode-helpers.js +5 -5
- package/dist/renderer/vnode-helpers.js.map +1 -1
- package/dist/types/class.d.ts +2 -2
- package/dist/types/class.d.ts.map +1 -1
- package/dist/types/core.d.ts +15 -16
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/core.js.map +1 -1
- package/dist/types/dev.d.ts +21 -0
- package/dist/types/dev.d.ts.map +1 -0
- package/dist/types/dev.js +8 -0
- package/dist/types/dev.js.map +1 -0
- package/dist/types/dom-attributes.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/jsx.d.ts.map +1 -1
- package/dist/utils/context.d.ts +2 -3
- package/dist/utils/context.d.ts.map +1 -1
- package/dist/utils/context.js +6 -22
- package/dist/utils/context.js.map +1 -1
- package/dist/utils/dom-helpers.d.ts +3 -3
- package/dist/utils/dom-helpers.js +7 -7
- package/dist/utils/dom-helpers.js.map +1 -1
- package/dist/vnode.d.ts +5 -0
- package/dist/vnode.d.ts.map +1 -1
- package/dist/vnode.js +9 -7
- package/dist/vnode.js.map +1 -1
- package/package.json +18 -18
- package/dist/renderer/diff/children.d.ts +0 -12
- package/dist/renderer/diff/children.d.ts.map +0 -1
- package/dist/renderer/diff/children.js +0 -55
- package/dist/renderer/diff/children.js.map +0 -1
- package/dist/renderer/diff/element.d.ts +0 -14
- package/dist/renderer/diff/element.d.ts.map +0 -1
- package/dist/renderer/diff/element.js +0 -38
- package/dist/renderer/diff/element.js.map +0 -1
- package/dist/renderer/diff/fragment.d.ts +0 -13
- package/dist/renderer/diff/fragment.d.ts.map +0 -1
- package/dist/renderer/diff/fragment.js +0 -35
- package/dist/renderer/diff/fragment.js.map +0 -1
- package/dist/renderer/diff/function.d.ts +0 -9
- package/dist/renderer/diff/function.d.ts.map +0 -1
- package/dist/renderer/diff/function.js +0 -59
- package/dist/renderer/diff/function.js.map +0 -1
- package/dist/renderer/diff/helpers.d.ts +0 -19
- package/dist/renderer/diff/helpers.d.ts.map +0 -1
- package/dist/renderer/diff/helpers.js.map +0 -1
package/README.md
CHANGED
|
@@ -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
|
|
63
|
+
readonly $id: number;
|
|
58
64
|
/**
|
|
59
65
|
* Component name (for debugging)
|
|
60
66
|
* @internal
|
|
61
67
|
*/
|
|
62
|
-
readonly
|
|
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
|
-
|
|
94
|
+
_render: VNode | null;
|
|
89
95
|
/**
|
|
90
|
-
*
|
|
91
|
-
* Used for context traversal - child can access parent's context via
|
|
96
|
+
* Parent component instance
|
|
97
|
+
* Used for context traversal - child can access parent's context via _parent
|
|
92
98
|
* @internal
|
|
93
99
|
*/
|
|
94
|
-
|
|
100
|
+
_parent: Fukict | null;
|
|
95
101
|
/**
|
|
96
102
|
* Parent DOM container
|
|
97
103
|
* @internal
|
|
98
104
|
*/
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Component placeholder (in container mode)
|
|
102
|
-
* @internal
|
|
103
|
-
*/
|
|
104
|
-
__placeholder__: Comment | null;
|
|
105
|
+
_container: Element | null;
|
|
105
106
|
/**
|
|
106
|
-
* Lifecycle
|
|
107
|
+
* Lifecycle phase (prevents re-entrant calls during lifecycle)
|
|
107
108
|
* @internal
|
|
108
109
|
*/
|
|
109
|
-
|
|
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
|
|
154
|
-
* 2. Parent component's context (via
|
|
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,
|
|
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
|
-
|
|
58
|
+
$id;
|
|
53
59
|
/**
|
|
54
60
|
* Component name (for debugging)
|
|
55
61
|
* @internal
|
|
56
62
|
*/
|
|
57
|
-
|
|
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
|
-
|
|
89
|
+
_render;
|
|
84
90
|
/**
|
|
85
|
-
*
|
|
86
|
-
* Used for context traversal - child can access parent's context via
|
|
91
|
+
* Parent component instance
|
|
92
|
+
* Used for context traversal - child can access parent's context via _parent
|
|
87
93
|
* @internal
|
|
88
94
|
*/
|
|
89
|
-
|
|
95
|
+
_parent;
|
|
90
96
|
/**
|
|
91
97
|
* Parent DOM container
|
|
92
98
|
* @internal
|
|
93
99
|
*/
|
|
94
|
-
|
|
100
|
+
_container;
|
|
95
101
|
/**
|
|
96
|
-
*
|
|
102
|
+
* Lifecycle phase (prevents re-entrant calls during lifecycle)
|
|
97
103
|
* @internal
|
|
98
104
|
*/
|
|
99
|
-
|
|
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
|
|
112
|
-
this
|
|
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.
|
|
118
|
-
this.
|
|
119
|
-
this.
|
|
120
|
-
this.
|
|
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.
|
|
152
|
-
console.warn(`[Fukict] Cannot provide context in component "${this
|
|
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.
|
|
157
|
-
this.
|
|
158
|
-
__parent__: getParentContext(this.
|
|
152
|
+
if (!this._render.__context__) {
|
|
153
|
+
this._render.__context__ = {
|
|
154
|
+
__parent__: getParentContext(this._render),
|
|
159
155
|
};
|
|
160
156
|
}
|
|
161
|
-
this.
|
|
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
|
|
171
|
-
* 2. Parent component's context (via
|
|
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.
|
|
195
|
-
let currentContext = this.
|
|
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.
|
|
206
|
-
|
|
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.
|
|
226
|
-
console.warn(`[Fukict] Component "${this
|
|
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.
|
|
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.
|
|
245
|
-
newVNode.__context__ = this.
|
|
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.
|
|
249
|
-
diff(this.
|
|
240
|
+
if (this._render && this._container) {
|
|
241
|
+
diff(this._render, newVNode, this._container);
|
|
250
242
|
}
|
|
251
|
-
this.
|
|
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.
|
|
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.
|
|
265
|
-
this.
|
|
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.
|
|
259
|
+
if (!this._render) {
|
|
269
260
|
const rawVNode = this.render();
|
|
270
261
|
// Wrap null/undefined as PrimitiveVNode
|
|
271
|
-
this.
|
|
262
|
+
this._render =
|
|
272
263
|
rawVNode === null || rawVNode === undefined
|
|
273
264
|
? createPrimitiveVNode(rawVNode)
|
|
274
265
|
: rawVNode;
|
|
275
266
|
}
|
|
276
|
-
// Create real DOM for instance.
|
|
277
|
-
createRealNode(this.
|
|
278
|
-
// Recursively activate nested components in instance.
|
|
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.
|
|
271
|
+
vnode: this._render,
|
|
281
272
|
...(placeholder ? { placeholder } : { container }),
|
|
282
273
|
onMounted: () => {
|
|
283
|
-
this.
|
|
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.
|
|
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.
|
|
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.
|
|
305
|
-
this.
|
|
306
|
-
this.
|
|
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":"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;;;OAGG;IACM,
|
|
1
|
+
{"version":3,"file":"fukict.js","sourceRoot":"","sources":["../../src/component-class/fukict.ts"],"names":[],"mappings":"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"}
|
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
|
package/dist/dev.js.map
ADDED
|
@@ -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.
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/metadata.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export declare const METADATA: {
|
|
6
6
|
readonly name: "@fukict/basic";
|
|
7
|
-
readonly version: "0.1.
|
|
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
package/dist/metadata.js.map
CHANGED
|
@@ -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,
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
77
|
-
|
|
78
|
-
//
|
|
79
|
-
if (parentInstance) {
|
|
80
|
-
|
|
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
|
|
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;
|
|
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"}
|
package/dist/renderer/create.js
CHANGED
|
@@ -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
|
|
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
|
|
196
|
+
const placeholder = dom.createComment(`fukict:${instance.$name}#${instance.$id}`);
|
|
197
197
|
// 4. Save placeholder to vnode
|
|
198
|
-
classVNode.
|
|
198
|
+
classVNode.__node__ = placeholder;
|
|
199
199
|
return placeholder;
|
|
200
200
|
}
|
|
201
201
|
/**
|