@fukict/basic 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +510 -0
- package/dist/component-class/fukict.d.ts +7 -9
- package/dist/component-class/fukict.d.ts.map +1 -1
- package/dist/component-class/fukict.js +22 -20
- package/dist/component-class/fukict.js.map +1 -1
- package/dist/component-function/define.d.ts +1 -1
- package/dist/component-function/define.d.ts.map +1 -1
- package/dist/component-function/define.js +1 -4
- package/dist/component-function/define.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +1 -1
- package/dist/metadata.js +1 -1
- package/dist/renderer/attributes.d.ts +2 -2
- package/dist/renderer/attributes.d.ts.map +1 -1
- package/dist/renderer/attributes.js +4 -14
- package/dist/renderer/attributes.js.map +1 -1
- package/dist/renderer/class-helpers.d.ts +19 -0
- package/dist/renderer/class-helpers.d.ts.map +1 -0
- package/dist/renderer/class-helpers.js +49 -0
- package/dist/renderer/class-helpers.js.map +1 -0
- package/dist/renderer/create.d.ts.map +1 -1
- package/dist/renderer/create.js +47 -43
- package/dist/renderer/create.js.map +1 -1
- package/dist/renderer/diff/class.d.ts +8 -1
- package/dist/renderer/diff/class.d.ts.map +1 -1
- package/dist/renderer/diff/class.js +14 -7
- package/dist/renderer/diff/class.js.map +1 -1
- package/dist/renderer/diff/element.d.ts.map +1 -1
- package/dist/renderer/diff/element.js +11 -7
- package/dist/renderer/diff/element.js.map +1 -1
- package/dist/renderer/diff/fragment.d.ts.map +1 -1
- package/dist/renderer/diff/fragment.js +6 -3
- package/dist/renderer/diff/fragment.js.map +1 -1
- package/dist/renderer/diff/function.d.ts.map +1 -1
- package/dist/renderer/diff/function.js +13 -12
- package/dist/renderer/diff/function.js.map +1 -1
- package/dist/renderer/diff/helpers.d.ts.map +1 -1
- package/dist/renderer/diff/helpers.js +13 -0
- package/dist/renderer/diff/helpers.js.map +1 -1
- package/dist/renderer/diff/index.d.ts.map +1 -1
- package/dist/renderer/diff/index.js +4 -0
- package/dist/renderer/diff/index.js.map +1 -1
- package/dist/renderer/diff/primitive.d.ts +12 -0
- package/dist/renderer/diff/primitive.d.ts.map +1 -0
- package/dist/renderer/diff/primitive.js +50 -0
- package/dist/renderer/diff/primitive.js.map +1 -0
- package/dist/renderer/mount.d.ts.map +1 -1
- package/dist/renderer/mount.js +30 -0
- package/dist/renderer/mount.js.map +1 -1
- package/dist/renderer/vnode-helpers.d.ts +44 -0
- package/dist/renderer/vnode-helpers.d.ts.map +1 -0
- package/dist/renderer/vnode-helpers.js +47 -0
- package/dist/renderer/vnode-helpers.js.map +1 -0
- package/dist/types/class.d.ts +25 -2
- package/dist/types/class.d.ts.map +1 -1
- package/dist/types/core.d.ts +27 -3
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/core.js +1 -0
- package/dist/types/core.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/vnode.d.ts +9 -3
- package/dist/vnode.d.ts.map +1 -1
- package/dist/vnode.js +71 -2
- package/dist/vnode.js.map +1 -1
- package/package.json +4 -1
package/dist/vnode.js
CHANGED
|
@@ -5,6 +5,71 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Fukict } from './component-class/fukict.js';
|
|
7
7
|
import { Fragment, VNodeType } from './types/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Create a PrimitiveVNode from a primitive value
|
|
10
|
+
*/
|
|
11
|
+
export function createPrimitiveVNode(value) {
|
|
12
|
+
return {
|
|
13
|
+
__type__: VNodeType.Primitive,
|
|
14
|
+
type: 'primitive',
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
16
|
+
value,
|
|
17
|
+
props: null,
|
|
18
|
+
children: [],
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Type guard for primitive values
|
|
23
|
+
*/
|
|
24
|
+
function isPrimitiveValue(value) {
|
|
25
|
+
return (typeof value === 'string' ||
|
|
26
|
+
typeof value === 'number' ||
|
|
27
|
+
typeof value === 'boolean' ||
|
|
28
|
+
value === null ||
|
|
29
|
+
value === undefined);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Normalize a single child to VNode
|
|
33
|
+
* Converts primitive values to PrimitiveVNode
|
|
34
|
+
*/
|
|
35
|
+
function normalizeChild(child) {
|
|
36
|
+
// Already a VNode
|
|
37
|
+
if (child && typeof child === 'object' && '__type__' in child) {
|
|
38
|
+
return child;
|
|
39
|
+
}
|
|
40
|
+
// Primitive values -> PrimitiveVNode
|
|
41
|
+
if (isPrimitiveValue(child)) {
|
|
42
|
+
// Type guard ensures child is PrimitiveValue
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
44
|
+
return createPrimitiveVNode(child);
|
|
45
|
+
}
|
|
46
|
+
// Arrays should be flattened before this point
|
|
47
|
+
if (Array.isArray(child)) {
|
|
48
|
+
console.warn('Nested array in normalizeChild, should be flattened first');
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Flatten and normalize children array
|
|
55
|
+
* Converts all children to VNode instances
|
|
56
|
+
*/
|
|
57
|
+
function normalizeChildren(children) {
|
|
58
|
+
const result = [];
|
|
59
|
+
for (const child of children) {
|
|
60
|
+
// Flatten nested arrays (from slots, map, etc.)
|
|
61
|
+
if (Array.isArray(child)) {
|
|
62
|
+
result.push(...normalizeChildren(child));
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const normalized = normalizeChild(child);
|
|
66
|
+
if (normalized !== null) {
|
|
67
|
+
result.push(normalized);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
8
73
|
/**
|
|
9
74
|
* Detect VNode type at runtime (fallback if babel-plugin is not used)
|
|
10
75
|
*/
|
|
@@ -36,16 +101,20 @@ function detectVNodeType(type) {
|
|
|
36
101
|
* The __type__ field should be added by babel-plugin at compile time.
|
|
37
102
|
* If not present, we detect it at runtime (slower but works).
|
|
38
103
|
*
|
|
104
|
+
* Children are normalized: all primitive values are wrapped in PrimitiveVNode.
|
|
105
|
+
*
|
|
39
106
|
* @param type - Element tag name or component function
|
|
40
107
|
* @param props - Properties (including on: prefixed events)
|
|
41
|
-
* @param children - Child nodes
|
|
108
|
+
* @param children - Child nodes (accepts any type, will be normalized)
|
|
42
109
|
* @returns VNode (plain structure, __type__ expected from babel-plugin)
|
|
43
110
|
*/
|
|
44
111
|
export function hyperscript(type, props, children) {
|
|
112
|
+
// Normalize children to VNode[]
|
|
113
|
+
const normalizedChildren = normalizeChildren(children);
|
|
45
114
|
const vnode = {
|
|
46
115
|
type,
|
|
47
116
|
props: props || {},
|
|
48
|
-
children,
|
|
117
|
+
children: normalizedChildren,
|
|
49
118
|
};
|
|
50
119
|
// If __type__ not set by babel-plugin, detect it at runtime
|
|
51
120
|
if (!('__type__' in vnode)) {
|
package/dist/vnode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vnode.js","sourceRoot":"","sources":["../src/vnode.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;GAEG;AACH,SAAS,eAAe,CAAC,IAAyC;IAChE,WAAW;IACX,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,4BAA4B;IAC5B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC,OAAO,CAAC;IAC3B,CAAC;IAED,WAAW;IACX,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,mCAAmC;QACnC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,YAAY,MAAM,EAAE,CAAC;YACvD,OAAO,SAAS,CAAC,cAAc,CAAC;QAClC,CAAC;QAED,qBAAqB;QACrB,OAAO,SAAS,CAAC,iBAAiB,CAAC;IACrC,CAAC;IAED,sBAAsB;IACtB,OAAO,SAAS,CAAC,OAAO,CAAC;AAC3B,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"vnode.js","sourceRoot":"","sources":["../src/vnode.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fukict/basic",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Lightweight DOM rendering basic with extension mechanism",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fukict",
|
|
@@ -52,6 +52,9 @@
|
|
|
52
52
|
"engines": {
|
|
53
53
|
"node": ">=16.0.0"
|
|
54
54
|
},
|
|
55
|
+
"publishConfig": {
|
|
56
|
+
"registry": "https://registry.npmjs.org/"
|
|
57
|
+
},
|
|
55
58
|
"scripts": {
|
|
56
59
|
"build": "tsx ../../scripts/build-package.ts --pkg-name basic --no-watch",
|
|
57
60
|
"dev": "tsx ../../scripts/build-package.ts --pkg-name basic --watch",
|