@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
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { VNodeType } from '../../types/index.js';
|
|
2
|
+
import { createRealNode } from '../create.js';
|
|
3
|
+
import { activate } from '../mount.js';
|
|
4
|
+
import { setupElementVNode, setupFragmentVNode, setupFunctionComponentVNode, } from '../vnode-helpers.js';
|
|
5
|
+
import { diffClassComponent } from './class.js';
|
|
6
|
+
import { removeNode, replaceNode } from './dom-ops.js';
|
|
7
|
+
import { diffPrimitive } from './primitive.js';
|
|
8
|
+
import { patchProps } from './props.js';
|
|
9
|
+
import { shallowEqual } from './utils.js';
|
|
10
|
+
// ============================================
|
|
11
|
+
// Children Diff
|
|
12
|
+
// ============================================
|
|
13
|
+
/**
|
|
14
|
+
* Diff children arrays
|
|
15
|
+
*
|
|
16
|
+
* Performance optimized: All children are VNodes (primitives wrapped in PrimitiveVNode by h()).
|
|
17
|
+
* No need for primitive type checking - directly diff VNodes using cached __node__ references.
|
|
18
|
+
*/
|
|
19
|
+
export function diffChildren(oldChildren, newChildren, container) {
|
|
20
|
+
const oldLen = oldChildren.length;
|
|
21
|
+
const newLen = newChildren.length;
|
|
22
|
+
const commonLen = Math.min(oldLen, newLen);
|
|
23
|
+
// Diff common children - all are VNodes with __node__ cache
|
|
24
|
+
for (let i = 0; i < commonLen; i++) {
|
|
25
|
+
diff(oldChildren[i], newChildren[i], container);
|
|
26
|
+
}
|
|
27
|
+
// Remove extra old children
|
|
28
|
+
if (oldLen > newLen) {
|
|
29
|
+
for (let i = commonLen; i < oldLen; i++) {
|
|
30
|
+
removeNode(oldChildren[i], container);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Append new children
|
|
34
|
+
if (newLen > oldLen) {
|
|
35
|
+
for (let i = commonLen; i < newLen; i++) {
|
|
36
|
+
const node = createRealNode(newChildren[i]);
|
|
37
|
+
if (node) {
|
|
38
|
+
if (Array.isArray(node)) {
|
|
39
|
+
node.forEach(n => container.appendChild(n));
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
container.appendChild(node);
|
|
43
|
+
}
|
|
44
|
+
activate({ vnode: newChildren[i], container });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// ============================================
|
|
50
|
+
// Element Diff
|
|
51
|
+
// ============================================
|
|
52
|
+
/**
|
|
53
|
+
* Diff Element VNode
|
|
54
|
+
* - Reuse DOM node
|
|
55
|
+
* - Patch props
|
|
56
|
+
* - Recursively diff children
|
|
57
|
+
*/
|
|
58
|
+
function diffElement(oldVNode, newVNode, container) {
|
|
59
|
+
const oldElementVNode = oldVNode;
|
|
60
|
+
const newElementVNode = newVNode;
|
|
61
|
+
// Tag name changed - replace entire element
|
|
62
|
+
if (oldElementVNode.type !== newElementVNode.type) {
|
|
63
|
+
replaceNode(oldElementVNode, newElementVNode, container);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
// Reuse DOM element
|
|
67
|
+
const element = oldElementVNode.__node__;
|
|
68
|
+
if (!element) {
|
|
69
|
+
// DOM doesn't exist, replace node
|
|
70
|
+
replaceNode(oldElementVNode, newElementVNode, container);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// Setup ElementVNode: save DOM reference
|
|
74
|
+
setupElementVNode(newElementVNode, element);
|
|
75
|
+
// Patch props
|
|
76
|
+
patchProps(element, oldElementVNode.props, newElementVNode.props);
|
|
77
|
+
// Diff children
|
|
78
|
+
diffChildren(oldElementVNode.children, newElementVNode.children, element);
|
|
79
|
+
}
|
|
80
|
+
// ============================================
|
|
81
|
+
// Fragment Diff
|
|
82
|
+
// ============================================
|
|
83
|
+
/**
|
|
84
|
+
* Diff Fragment VNode
|
|
85
|
+
* - Diff children array
|
|
86
|
+
* - Update __node__ array
|
|
87
|
+
*/
|
|
88
|
+
function diffFragment(oldVNode, newVNode, container) {
|
|
89
|
+
const newFragmentVNode = newVNode;
|
|
90
|
+
// Diff children
|
|
91
|
+
diffChildren(oldVNode.children, newFragmentVNode.children, container);
|
|
92
|
+
// Update __node__ reference (collect all current child nodes)
|
|
93
|
+
const newNodes = [];
|
|
94
|
+
for (const child of newFragmentVNode.children) {
|
|
95
|
+
if (child && typeof child === 'object' && '__node__' in child) {
|
|
96
|
+
const dom = child.__node__;
|
|
97
|
+
if (dom) {
|
|
98
|
+
if (Array.isArray(dom)) {
|
|
99
|
+
newNodes.push(...dom);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
newNodes.push(dom);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Setup FragmentVNode: save DOM nodes array reference
|
|
108
|
+
setupFragmentVNode(newFragmentVNode, newNodes);
|
|
109
|
+
}
|
|
110
|
+
// ============================================
|
|
111
|
+
// Function Component Diff
|
|
112
|
+
// ============================================
|
|
113
|
+
/**
|
|
114
|
+
* Diff Function Component VNode
|
|
115
|
+
* - Shallow compare props
|
|
116
|
+
* - Re-call function if props changed
|
|
117
|
+
* - Recursively diff __render__
|
|
118
|
+
*/
|
|
119
|
+
function diffFunctionComponent(oldVNode, newVNode, container) {
|
|
120
|
+
const oldFuncVNode = oldVNode;
|
|
121
|
+
const newFuncVNode = newVNode;
|
|
122
|
+
// Function changed - replace
|
|
123
|
+
if (oldFuncVNode.type !== newFuncVNode.type) {
|
|
124
|
+
replaceNode(oldFuncVNode, newFuncVNode, container);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
// Shallow compare props
|
|
128
|
+
if (shallowEqual(oldFuncVNode.props, newFuncVNode.props)) {
|
|
129
|
+
// Props unchanged - reuse rendered result
|
|
130
|
+
// Setup FunctionComponentVNode with reused data
|
|
131
|
+
setupFunctionComponentVNode(newFuncVNode, oldFuncVNode.__render__, oldFuncVNode.__node__ ?? null);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
// Props changed - re-call function
|
|
135
|
+
// Merge children into props
|
|
136
|
+
const propsWithChildren = {
|
|
137
|
+
...newFuncVNode.props,
|
|
138
|
+
children: newFuncVNode.children.length === 1
|
|
139
|
+
? newFuncVNode.children[0]
|
|
140
|
+
: newFuncVNode.children,
|
|
141
|
+
};
|
|
142
|
+
// Call function component with typed signature
|
|
143
|
+
const funcComponent = newFuncVNode.type;
|
|
144
|
+
const rendered = funcComponent(propsWithChildren);
|
|
145
|
+
// Store rendered VNode (only if it's a VNode object)
|
|
146
|
+
const renderedVNode = rendered && typeof rendered === 'object' && '__type__' in rendered
|
|
147
|
+
? rendered
|
|
148
|
+
: undefined;
|
|
149
|
+
// Diff old and new rendered result
|
|
150
|
+
const oldRendered = oldFuncVNode.__render__;
|
|
151
|
+
diff(oldRendered, rendered, container);
|
|
152
|
+
// Update __node__ reference (only for non-ClassComponent VNodes)
|
|
153
|
+
let domNode = null;
|
|
154
|
+
if (renderedVNode &&
|
|
155
|
+
renderedVNode.__type__ !== VNodeType.ClassComponent &&
|
|
156
|
+
'__node__' in renderedVNode) {
|
|
157
|
+
domNode = renderedVNode.__node__ ?? null;
|
|
158
|
+
}
|
|
159
|
+
// Setup FunctionComponentVNode: save rendered VNode and DOM reference
|
|
160
|
+
setupFunctionComponentVNode(newFuncVNode, renderedVNode, domNode);
|
|
161
|
+
}
|
|
162
|
+
// ============================================
|
|
163
|
+
// Main Diff Entry
|
|
164
|
+
// ============================================
|
|
165
|
+
/**
|
|
166
|
+
* Diff and patch VNode tree
|
|
167
|
+
*
|
|
168
|
+
* @param oldVNode - Old VNode (can be array from slots)
|
|
169
|
+
* @param newVNode - New VNode (can be array from slots)
|
|
170
|
+
* @param container - Container element
|
|
171
|
+
*/
|
|
172
|
+
export function diff(oldVNode, newVNode, container) {
|
|
173
|
+
// Handle array types (e.g., from slots)
|
|
174
|
+
// If either is array, use diffChildren for array comparison
|
|
175
|
+
if (Array.isArray(oldVNode) || Array.isArray(newVNode)) {
|
|
176
|
+
const oldChildren = Array.isArray(oldVNode) ? oldVNode : [oldVNode];
|
|
177
|
+
const newChildren = Array.isArray(newVNode) ? newVNode : [newVNode];
|
|
178
|
+
diffChildren(oldChildren, newChildren, container);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
// Both null/undefined - no changes
|
|
182
|
+
if (!oldVNode && !newVNode) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
// Old exists, new is null - remove
|
|
186
|
+
if (oldVNode && !newVNode) {
|
|
187
|
+
removeNode(oldVNode, container);
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
// Old is null, new exists - create and mount
|
|
191
|
+
if (!oldVNode && newVNode) {
|
|
192
|
+
const node = createRealNode(newVNode);
|
|
193
|
+
if (node) {
|
|
194
|
+
if (Array.isArray(node)) {
|
|
195
|
+
node.forEach(n => container.appendChild(n));
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
container.appendChild(node);
|
|
199
|
+
}
|
|
200
|
+
activate({ vnode: newVNode, container });
|
|
201
|
+
}
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
// All children are VNodes (primitives wrapped in PrimitiveVNode by h())
|
|
205
|
+
// Direct type assertion - no need for expensive typeof checks
|
|
206
|
+
const oldVN = oldVNode;
|
|
207
|
+
const newVN = newVNode;
|
|
208
|
+
// Type mismatch - replace entire node
|
|
209
|
+
if (oldVN.__type__ !== newVN.__type__) {
|
|
210
|
+
replaceNode(oldVN, newVN, container);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
// Same type - diff by type
|
|
214
|
+
switch (newVN.__type__) {
|
|
215
|
+
case VNodeType.Element:
|
|
216
|
+
diffElement(oldVN, newVN, container);
|
|
217
|
+
break;
|
|
218
|
+
case VNodeType.Fragment:
|
|
219
|
+
diffFragment(oldVN, newVN, container);
|
|
220
|
+
break;
|
|
221
|
+
case VNodeType.FunctionComponent:
|
|
222
|
+
diffFunctionComponent(oldVN, newVN, container);
|
|
223
|
+
break;
|
|
224
|
+
case VNodeType.ClassComponent:
|
|
225
|
+
diffClassComponent(oldVN, newVN, container);
|
|
226
|
+
break;
|
|
227
|
+
case VNodeType.Primitive:
|
|
228
|
+
diffPrimitive(oldVN, newVN, container);
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=reconciler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconciler.js","sourceRoot":"","sources":["../../../src/renderer/diff/reconciler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fukict/basic - Diff: Utils
|
|
3
|
+
*
|
|
4
|
+
* Pure utility functions with no external dependencies
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Shallow compare two objects
|
|
8
|
+
*/
|
|
9
|
+
export declare function shallowEqual(a: Record<string, unknown> | null, b: Record<string, unknown> | null): boolean;
|
|
10
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/renderer/diff/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,YAAY,CAC1B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACjC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAChC,OAAO,CAYT"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fukict/basic - Diff: Utils
|
|
3
|
+
*
|
|
4
|
+
* Pure utility functions with no external dependencies
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Shallow compare two objects
|
|
8
|
+
*/
|
|
9
|
+
export function shallowEqual(a, b) {
|
|
10
|
+
if (a === b)
|
|
11
|
+
return true;
|
|
12
|
+
if (!a || !b)
|
|
13
|
+
return false;
|
|
14
|
+
let countA = 0;
|
|
15
|
+
for (const key in a) {
|
|
16
|
+
if (a[key] !== b[key])
|
|
17
|
+
return false;
|
|
18
|
+
countA++;
|
|
19
|
+
}
|
|
20
|
+
let countB = 0;
|
|
21
|
+
for (const _ in b)
|
|
22
|
+
countB++;
|
|
23
|
+
return countA === countB;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/renderer/diff/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,CAAiC,EACjC,CAAiC;IAEjC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAE3B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,EAAE,CAAC;IACX,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,CAAC;QAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,MAAM,KAAK,MAAM,CAAC;AAC3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAO3D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC;;;;;;GAMG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,OAAO,GACjB,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CA2CrB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,UAAU,EACpB,SAAS,CAAC,EAAE,KAAK,GAChB,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAgCtB;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAYjD"}
|
package/dist/renderer/index.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Main rendering API
|
|
5
5
|
*/
|
|
6
|
+
import { getDevInfo } from '../dev.js';
|
|
6
7
|
import * as dom from '../dom/index.js';
|
|
7
8
|
import { createRealNode } from './create.js';
|
|
8
9
|
import { removeNode } from './diff/index.js';
|
|
@@ -28,9 +29,25 @@ export function attach(vnode, container) {
|
|
|
28
29
|
createRealNode(vnode);
|
|
29
30
|
// 2. Activate: mount DOM and trigger lifecycle
|
|
30
31
|
activate({ vnode, container });
|
|
32
|
+
// Dev mode: expose runtime info and notify debugging tools
|
|
33
|
+
if (process.env.NODE_ENV !== 'production' && typeof window !== 'undefined') {
|
|
34
|
+
const devInfo = getDevInfo();
|
|
35
|
+
if (devInfo) {
|
|
36
|
+
devInfo.roots.push({ vnode, container });
|
|
37
|
+
window.dispatchEvent(new CustomEvent('fukict:attach', { detail: { vnode, container } }));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
31
40
|
// Return unmount function
|
|
32
41
|
return () => {
|
|
33
42
|
removeNode(vnode, container);
|
|
43
|
+
// Dev mode: remove root from debug info
|
|
44
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
45
|
+
const devInfo = getDevInfo();
|
|
46
|
+
if (devInfo) {
|
|
47
|
+
devInfo.roots = devInfo.roots.filter(r => r.vnode !== vnode || r.container !== container);
|
|
48
|
+
window.dispatchEvent(new CustomEvent('fukict:detach', { detail: { vnode, container } }));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
34
51
|
};
|
|
35
52
|
}
|
|
36
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"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"}
|
package/dist/renderer/mount.js
CHANGED
|
@@ -7,9 +7,9 @@ import { VNodeType } from '../types/index.js';
|
|
|
7
7
|
* (since they handle their own children).
|
|
8
8
|
*/
|
|
9
9
|
function autoActivateClassComponentsInTree(vnode, _container) {
|
|
10
|
-
// Special handling for FunctionComponent: use
|
|
10
|
+
// Special handling for FunctionComponent: use __render__ instead of children
|
|
11
11
|
if (vnode.__type__ === VNodeType.FunctionComponent) {
|
|
12
|
-
const rendered = vnode.
|
|
12
|
+
const rendered = vnode.__render__;
|
|
13
13
|
if (rendered && typeof rendered === 'object' && '__type__' in rendered) {
|
|
14
14
|
autoActivateClassComponentsInTree(rendered, _container);
|
|
15
15
|
}
|
|
@@ -23,7 +23,7 @@ function autoActivateClassComponentsInTree(vnode, _container) {
|
|
|
23
23
|
// If child is a ClassComponent, activate it and stop recursion
|
|
24
24
|
if (childVNode.__type__ === VNodeType.ClassComponent) {
|
|
25
25
|
const instance = childVNode.__instance__;
|
|
26
|
-
const placeholder = childVNode.
|
|
26
|
+
const placeholder = childVNode.__node__;
|
|
27
27
|
// Placeholder is already in DOM (from parent's createRealNode)
|
|
28
28
|
// Use placeholder replacement mounting
|
|
29
29
|
if (instance && placeholder && placeholder.parentNode) {
|
|
@@ -68,7 +68,7 @@ function activateClassComponent(ctx) {
|
|
|
68
68
|
*/
|
|
69
69
|
function activateElement(ctx) {
|
|
70
70
|
const { vnode, container, placeholder, onMounted } = ctx;
|
|
71
|
-
const dom = vnode.
|
|
71
|
+
const dom = vnode.__node__;
|
|
72
72
|
const actualContainer = container || placeholder?.parentNode;
|
|
73
73
|
if (!actualContainer)
|
|
74
74
|
return;
|
|
@@ -90,7 +90,7 @@ function activateElement(ctx) {
|
|
|
90
90
|
*/
|
|
91
91
|
function activateFragment(ctx) {
|
|
92
92
|
const { vnode, container, placeholder, onMounted } = ctx;
|
|
93
|
-
const domArray = vnode.
|
|
93
|
+
const domArray = vnode.__node__;
|
|
94
94
|
const actualContainer = container || placeholder?.parentNode;
|
|
95
95
|
if (!actualContainer)
|
|
96
96
|
return;
|
|
@@ -117,7 +117,7 @@ function activateFragment(ctx) {
|
|
|
117
117
|
*/
|
|
118
118
|
function activateFunctionComponent(ctx) {
|
|
119
119
|
const { vnode, container, placeholder, onMounted } = ctx;
|
|
120
|
-
const dom = vnode.
|
|
120
|
+
const dom = vnode.__node__;
|
|
121
121
|
const actualContainer = container || placeholder?.parentNode;
|
|
122
122
|
if (!actualContainer)
|
|
123
123
|
return;
|
|
@@ -146,8 +146,8 @@ function activateFunctionComponent(ctx) {
|
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
onMounted?.();
|
|
149
|
-
// Auto-activate all ClassComponents in
|
|
150
|
-
const rendered = vnode.
|
|
149
|
+
// Auto-activate all ClassComponents in __render__ tree
|
|
150
|
+
const rendered = vnode.__render__;
|
|
151
151
|
if (rendered && typeof rendered === 'object' && '__type__' in rendered) {
|
|
152
152
|
autoActivateClassComponentsInTree(rendered, actualContainer);
|
|
153
153
|
}
|
|
@@ -157,7 +157,7 @@ function activateFunctionComponent(ctx) {
|
|
|
157
157
|
*/
|
|
158
158
|
function activatePrimitive(ctx) {
|
|
159
159
|
const { vnode, container, placeholder, onMounted } = ctx;
|
|
160
|
-
const dom = vnode.
|
|
160
|
+
const dom = vnode.__node__;
|
|
161
161
|
const actualContainer = container || placeholder?.parentNode;
|
|
162
162
|
if (!actualContainer)
|
|
163
163
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../../src/renderer/mount.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAiD9C;;;;;;GAMG;AACH,SAAS,iCAAiC,CACxC,KAAY,EACZ,UAAmB;IAEnB
|
|
1
|
+
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../../src/renderer/mount.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @param element - The DOM element
|
|
8
8
|
*/
|
|
9
9
|
export function setupElementVNode(vnode, element) {
|
|
10
|
-
vnode.
|
|
10
|
+
vnode.__node__ = element;
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
13
|
* Setup FragmentVNode with DOM nodes array reference
|
|
@@ -18,7 +18,7 @@ export function setupElementVNode(vnode, element) {
|
|
|
18
18
|
* @param nodes - The array of DOM nodes
|
|
19
19
|
*/
|
|
20
20
|
export function setupFragmentVNode(vnode, nodes) {
|
|
21
|
-
vnode.
|
|
21
|
+
vnode.__node__ = nodes;
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
24
|
* Setup FunctionComponentVNode with rendered VNode and DOM reference
|
|
@@ -30,8 +30,8 @@ export function setupFragmentVNode(vnode, nodes) {
|
|
|
30
30
|
* @param domNode - The DOM node or nodes (can be null or Node or Node[])
|
|
31
31
|
*/
|
|
32
32
|
export function setupFunctionComponentVNode(vnode, rendered, domNode) {
|
|
33
|
-
vnode.
|
|
34
|
-
vnode.
|
|
33
|
+
vnode.__render__ = rendered;
|
|
34
|
+
vnode.__node__ = domNode;
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* Setup PrimitiveVNode with DOM reference
|
|
@@ -42,6 +42,6 @@ export function setupFunctionComponentVNode(vnode, rendered, domNode) {
|
|
|
42
42
|
* @param node - The Text or Comment node
|
|
43
43
|
*/
|
|
44
44
|
export function setupPrimitiveVNode(vnode, node) {
|
|
45
|
-
vnode.
|
|
45
|
+
vnode.__node__ = node;
|
|
46
46
|
}
|
|
47
47
|
//# sourceMappingURL=vnode-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vnode-helpers.js","sourceRoot":"","sources":["../../src/renderer/vnode-helpers.ts"],"names":[],"mappings":"AAaA;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAmB,EAAE,OAAgB;IACrE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"vnode-helpers.js","sourceRoot":"","sources":["../../src/renderer/vnode-helpers.ts"],"names":[],"mappings":"AAaA;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAmB,EAAE,OAAgB;IACrE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC3B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAoB,EAAE,KAAa;IACpE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;AACzB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAA6B,EAC7B,QAA2B,EAC3B,OAA6B;IAE7B,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;IAC5B,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC3B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAqB,EACrB,IAAoB;IAEpB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB,CAAC"}
|
package/dist/types/class.d.ts
CHANGED
|
@@ -84,9 +84,9 @@ export interface FukictComponent<P extends Record<string, any> = {}, S extends S
|
|
|
84
84
|
/** Refs object (can be extended by subclasses) */
|
|
85
85
|
readonly refs: Refs;
|
|
86
86
|
/** Current rendered VNode (internal, framework use) */
|
|
87
|
-
|
|
87
|
+
_render: VNode | null;
|
|
88
88
|
/** Parent DOM container (internal, framework use) */
|
|
89
|
-
|
|
89
|
+
_container: Element | null;
|
|
90
90
|
/** Render method (must be implemented) */
|
|
91
91
|
render(): VNode;
|
|
92
92
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../src/types/class.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,GAAG;IAC1B,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG;IAClE;;;;;OAKG;IACH,OAAO,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC;;;;;OAKG;IACH,aAAa,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;;;;OAKG;IACH,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAC9B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EAClC,CAAC,SAAS,KAAK,GAAG,KAAK,CACvB,SAAQ,eAAe,CAAC,CAAC,CAAC;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAElB,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAElB,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEpB,uDAAuD;IACvD,
|
|
1
|
+
{"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../src/types/class.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,GAAG;IAC1B,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG;IAClE;;;;;OAKG;IACH,OAAO,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC;;;;;OAKG;IACH,aAAa,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;;;;OAKG;IACH,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAC9B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EAClC,CAAC,SAAS,KAAK,GAAG,KAAK,CACvB,SAAQ,eAAe,CAAC,CAAC,CAAC;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAElB,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAElB,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEpB,uDAAuD;IACvD,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC;IAEtB,qDAAqD;IACrD,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAE3B,0CAA0C;IAC1C,MAAM,IAAI,KAAK,CAAC;IAEhB;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAE3B;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEpE;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IACvB,CAAC,SAAS,eAAe,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IACvB,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAC3B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EACnC,CAAC,SAAS,KAAK,GAAG,KAAK,IACrB,KAAK,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
|
package/dist/types/core.d.ts
CHANGED
|
@@ -50,60 +50,59 @@ interface VNodeBase {
|
|
|
50
50
|
/**
|
|
51
51
|
* Element VNode
|
|
52
52
|
* - type: string (tag name like 'div', 'span')
|
|
53
|
-
* -
|
|
53
|
+
* - __node__: Node (single DOM element)
|
|
54
54
|
*/
|
|
55
55
|
export interface ElementVNode extends VNodeBase {
|
|
56
56
|
__type__: VNodeType.Element;
|
|
57
57
|
type: string;
|
|
58
|
-
|
|
58
|
+
__node__?: Node | null;
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
61
61
|
* Fragment VNode
|
|
62
62
|
* - type: Fragment symbol
|
|
63
|
-
* -
|
|
63
|
+
* - __node__: Node[] (all child nodes)
|
|
64
64
|
*/
|
|
65
65
|
export interface FragmentVNode extends VNodeBase {
|
|
66
66
|
__type__: VNodeType.Fragment;
|
|
67
67
|
type: symbol;
|
|
68
|
-
|
|
68
|
+
__node__?: Node[] | null;
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
71
|
* Function Component VNode
|
|
72
72
|
* - type: Function
|
|
73
|
-
* -
|
|
74
|
-
* -
|
|
73
|
+
* - __render__: VNode (cached result of function call)
|
|
74
|
+
* - __node__: Node | Node[] (depends on rendered result)
|
|
75
75
|
*/
|
|
76
76
|
export interface FunctionComponentVNode extends VNodeBase {
|
|
77
77
|
__type__: VNodeType.FunctionComponent;
|
|
78
78
|
type: Function;
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
__render__?: VNode;
|
|
80
|
+
__node__?: Node | Node[] | null;
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
83
|
* Class Component VNode
|
|
84
84
|
* - type: Function (class constructor)
|
|
85
85
|
* - __instance__: FukictInstance (component instance)
|
|
86
|
-
* -
|
|
87
|
-
* - __dom__: ❌ NOT USED (managed by instance)
|
|
86
|
+
* - __node__: Comment node as placeholder for insertion position
|
|
88
87
|
*/
|
|
89
88
|
export interface ClassComponentVNode extends VNodeBase {
|
|
90
89
|
__type__: VNodeType.ClassComponent;
|
|
91
90
|
type: Function;
|
|
92
91
|
__instance__?: any;
|
|
93
|
-
|
|
92
|
+
__node__?: Comment;
|
|
94
93
|
}
|
|
95
94
|
/**
|
|
96
95
|
* Primitive VNode
|
|
97
96
|
* - type: 'primitive'
|
|
98
97
|
* - value: string | number | boolean | null | undefined
|
|
99
|
-
* -
|
|
98
|
+
* - __node__: Text | Comment | null
|
|
100
99
|
* - Wraps primitive values to maintain stable VNode tree structure
|
|
101
100
|
*/
|
|
102
101
|
export interface PrimitiveVNode extends VNodeBase {
|
|
103
102
|
__type__: VNodeType.Primitive;
|
|
104
103
|
type: 'primitive';
|
|
105
104
|
value: PrimitiveValue;
|
|
106
|
-
|
|
105
|
+
__node__?: Text | Comment | null;
|
|
107
106
|
props: null;
|
|
108
107
|
children: [];
|
|
109
108
|
}
|
|
@@ -115,13 +114,13 @@ export interface PrimitiveVNode extends VNodeBase {
|
|
|
115
114
|
* ```typescript
|
|
116
115
|
* if (vnode.__type__ === VNodeType.Element) {
|
|
117
116
|
* // vnode is ElementVNode
|
|
118
|
-
* const element: Node = vnode.
|
|
117
|
+
* const element: Node = vnode.__node__;
|
|
119
118
|
* } else if (vnode.__type__ === VNodeType.Fragment) {
|
|
120
119
|
* // vnode is FragmentVNode
|
|
121
|
-
* const nodes: Node[] = vnode.
|
|
120
|
+
* const nodes: Node[] = vnode.__node__;
|
|
122
121
|
* } else if (vnode.__type__ === VNodeType.FunctionComponent) {
|
|
123
122
|
* // vnode is FunctionComponentVNode
|
|
124
|
-
* const rendered = vnode.
|
|
123
|
+
* const rendered = vnode.__render__;
|
|
125
124
|
* } else if (vnode.__type__ === VNodeType.ClassComponent) {
|
|
126
125
|
* // vnode is ClassComponentVNode
|
|
127
126
|
* const instance = vnode.__instance__;
|
package/dist/types/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE1E;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,UAAU,EAAE,CAAC;AAEjB;;GAEG;AACH,oBAAY,SAAS;IACnB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,iBAAiB,aAAa;IAC9B,cAAc,UAAU;IACxB,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,UAAU,SAAS;IACjB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAElC,mBAAmB;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;IAEvB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE1E;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,UAAU,EAAE,CAAC;AAEjB;;GAEG;AACH,oBAAY,SAAS;IACnB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,iBAAiB,aAAa;IAC9B,cAAc,UAAU;IACxB,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,UAAU,SAAS;IACjB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAElC,mBAAmB;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;IAEvB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAuB,SAAQ,SAAS;IACvD,QAAQ,EAAE,SAAS,CAAC,iBAAiB,CAAC;IACtC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,QAAQ,EAAE,SAAS,CAAC,cAAc,CAAC;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;IAGjC,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,EAAE,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,KAAK,GACb,YAAY,GACZ,aAAa,GACb,sBAAsB,GACtB,mBAAmB,GACnB,cAAc,CAAC;AAEnB;;GAEG;AACH,eAAO,MAAM,QAAQ,eAAqB,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC"}
|
package/dist/types/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAyBA;;GAEG;AACH,MAAM,CAAN,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,gCAAmB,CAAA;IACnB,kCAAqB,CAAA;IACrB,2CAA8B,CAAA;IAC9B,qCAAwB,CAAA;IACxB,oCAAuB,CAAA;AACzB,CAAC,EANW,SAAS,KAAT,SAAS,QAMpB;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAyBA;;GAEG;AACH,MAAM,CAAN,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,gCAAmB,CAAA;IACnB,kCAAqB,CAAA;IACrB,2CAA8B,CAAA;IAC9B,qCAAwB,CAAA;IACxB,oCAAuB,CAAA;AACzB,CAAC,EANW,SAAS,KAAT,SAAS,QAMpB;AAgID;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global type declarations for Fukict dev-mode runtime info.
|
|
3
|
+
*
|
|
4
|
+
* Only the base structure is declared here. Ecosystem packages
|
|
5
|
+
* extend `__FUKICT__` via the `registerDevContext` API from @fukict/basic.
|
|
6
|
+
*/
|
|
7
|
+
export interface FukictDevInfo {
|
|
8
|
+
version: string;
|
|
9
|
+
roots: Array<{
|
|
10
|
+
vnode: unknown;
|
|
11
|
+
container: Element;
|
|
12
|
+
}>;
|
|
13
|
+
/** Extensible by ecosystem packages via registerDevContext() */
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
declare global {
|
|
17
|
+
interface Window {
|
|
18
|
+
__FUKICT__?: FukictDevInfo;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=dev.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/types/dev.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACrD,gEAAgE;IAChE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,CAAC,EAAE,aAAa,CAAC;KAC5B;CACF"}
|