kiru 0.48.3 → 0.50.0-preview.0
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/dist/action.d.ts +22 -0
- package/dist/action.d.ts.map +1 -0
- package/dist/action.js +20 -0
- package/dist/action.js.map +1 -0
- package/dist/components/errorBoundary.d.ts +7 -0
- package/dist/components/errorBoundary.d.ts.map +1 -0
- package/dist/components/errorBoundary.js +6 -0
- package/dist/components/errorBoundary.js.map +1 -0
- package/dist/components/index.d.ts +7 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +7 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/lazy.d.ts.map +1 -0
- package/dist/{lazy.js → components/lazy.js} +11 -11
- package/dist/components/lazy.js.map +1 -0
- package/dist/{memo.d.ts → components/memo.d.ts} +1 -1
- package/dist/components/memo.d.ts.map +1 -0
- package/dist/{memo.js → components/memo.js} +2 -2
- package/dist/components/memo.js.map +1 -0
- package/dist/components/portal.d.ts.map +1 -0
- package/dist/{portal.js → components/portal.js} +6 -6
- package/dist/components/portal.js.map +1 -0
- package/dist/components/router/index.d.ts.map +1 -0
- package/dist/components/router/index.js.map +1 -0
- package/dist/components/router/route.d.ts.map +1 -0
- package/dist/{router → components/router}/route.js +1 -1
- package/dist/components/router/route.js.map +1 -0
- package/dist/{router → components/router}/router.d.ts +1 -1
- package/dist/components/router/router.d.ts.map +1 -0
- package/dist/{router → components/router}/router.js +8 -8
- package/dist/components/router/router.js.map +1 -0
- package/dist/components/router/routerUtils.d.ts.map +1 -0
- package/dist/components/router/routerUtils.js.map +1 -0
- package/dist/components/suspense.d.ts +33 -0
- package/dist/components/suspense.d.ts.map +1 -0
- package/dist/components/suspense.js +113 -0
- package/dist/components/suspense.js.map +1 -0
- package/dist/components/transition.d.ts.map +1 -0
- package/dist/{transition.js → components/transition.js} +5 -5
- package/dist/components/transition.js.map +1 -0
- package/dist/constants.d.ts +6 -12
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +83 -12
- package/dist/constants.js.map +1 -1
- package/dist/context.js +1 -1
- package/dist/context.js.map +1 -1
- package/dist/dom.d.ts.map +1 -1
- package/dist/dom.js +9 -12
- package/dist/dom.js.map +1 -1
- package/dist/element.js +2 -2
- package/dist/element.js.map +1 -1
- package/dist/error.js +1 -1
- package/dist/error.js.map +1 -1
- package/dist/form/index.d.ts.map +1 -1
- package/dist/form/index.js +1 -2
- package/dist/form/index.js.map +1 -1
- package/dist/hmr.js +1 -1
- package/dist/hmr.js.map +1 -1
- package/dist/hooks/useAsync.d.ts.map +1 -1
- package/dist/hooks/useAsync.js +2 -2
- package/dist/hooks/useAsync.js.map +1 -1
- package/dist/hooks/useCallback.d.ts.map +1 -1
- package/dist/hooks/useCallback.js +2 -1
- package/dist/hooks/useCallback.js.map +1 -1
- package/dist/hooks/useEffect.d.ts.map +1 -1
- package/dist/hooks/useEffect.js +2 -1
- package/dist/hooks/useEffect.js.map +1 -1
- package/dist/hooks/useEffectEvent.d.ts.map +1 -1
- package/dist/hooks/useEffectEvent.js +2 -1
- package/dist/hooks/useEffectEvent.js.map +1 -1
- package/dist/hooks/useLayoutEffect.d.ts.map +1 -1
- package/dist/hooks/useLayoutEffect.js +2 -1
- package/dist/hooks/useLayoutEffect.js.map +1 -1
- package/dist/hooks/useMemo.d.ts.map +1 -1
- package/dist/hooks/useMemo.js +2 -1
- package/dist/hooks/useMemo.js.map +1 -1
- package/dist/hooks/useReducer.js +2 -2
- package/dist/hooks/useReducer.js.map +1 -1
- package/dist/hooks/useRef.d.ts.map +1 -1
- package/dist/hooks/useRef.js +2 -1
- package/dist/hooks/useRef.js.map +1 -1
- package/dist/hooks/useState.js +2 -2
- package/dist/hooks/useState.js.map +1 -1
- package/dist/hooks/useSyncExternalStore.js +2 -2
- package/dist/hooks/useSyncExternalStore.js.map +1 -1
- package/dist/hooks/useViewTransition.d.ts.map +1 -1
- package/dist/hooks/useViewTransition.js +1 -2
- package/dist/hooks/useViewTransition.js.map +1 -1
- package/dist/hooks/utils.d.ts +0 -1
- package/dist/hooks/utils.d.ts.map +1 -1
- package/dist/hooks/utils.js +2 -2
- package/dist/hooks/utils.js.map +1 -1
- package/dist/index.d.ts +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/dist/reconciler.js +8 -7
- package/dist/reconciler.js.map +1 -1
- package/dist/renderToString.d.ts.map +1 -1
- package/dist/renderToString.js +93 -38
- package/dist/renderToString.js.map +1 -1
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +48 -11
- package/dist/scheduler.js.map +1 -1
- package/dist/signals/base.d.ts.map +1 -1
- package/dist/signals/base.js +1 -2
- package/dist/signals/base.js.map +1 -1
- package/dist/signals/computed.js +1 -1
- package/dist/signals/computed.js.map +1 -1
- package/dist/signals/effect.js +1 -1
- package/dist/signals/effect.js.map +1 -1
- package/dist/signals/watch.d.ts.map +1 -1
- package/dist/signals/watch.js +2 -3
- package/dist/signals/watch.js.map +1 -1
- package/dist/ssr/server.d.ts +4 -1
- package/dist/ssr/server.d.ts.map +1 -1
- package/dist/ssr/server.js +136 -66
- package/dist/ssr/server.js.map +1 -1
- package/dist/store.d.ts +1 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +2 -2
- package/dist/store.js.map +1 -1
- package/dist/swr.js +1 -1
- package/dist/swr.js.map +1 -1
- package/dist/types.d.ts +14 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.dom.d.ts +2 -2
- package/dist/types.dom.d.ts.map +1 -1
- package/dist/types.utils.d.ts +7 -1
- package/dist/types.utils.d.ts.map +1 -1
- package/dist/utils/compare.d.ts +3 -0
- package/dist/utils/compare.d.ts.map +1 -0
- package/dist/utils/compare.js +123 -0
- package/dist/utils/compare.js.map +1 -0
- package/dist/utils/format.d.ts +20 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +136 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/generateId.d.ts.map +1 -0
- package/dist/utils/generateId.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/runtime.d.ts +11 -0
- package/dist/utils/runtime.d.ts.map +1 -0
- package/dist/utils/runtime.js +23 -0
- package/dist/utils/runtime.js.map +1 -0
- package/dist/utils/vdom.d.ts +27 -0
- package/dist/utils/vdom.d.ts.map +1 -0
- package/dist/utils/vdom.js +128 -0
- package/dist/utils/vdom.js.map +1 -0
- package/package.json +6 -6
- package/src/action.ts +42 -0
- package/src/components/errorBoundary.ts +16 -0
- package/src/components/index.ts +6 -0
- package/src/{lazy.ts → components/lazy.ts} +12 -12
- package/src/{memo.ts → components/memo.ts} +3 -3
- package/src/{portal.ts → components/portal.ts} +6 -6
- package/src/{router → components/router}/route.ts +1 -1
- package/src/{router → components/router}/router.ts +9 -9
- package/src/components/suspense.ts +193 -0
- package/src/{transition.ts → components/transition.ts} +5 -5
- package/src/constants.ts +86 -13
- package/src/context.ts +1 -1
- package/src/customEvents.ts +22 -22
- package/src/dom.ts +8 -11
- package/src/element.ts +2 -2
- package/src/error.ts +1 -1
- package/src/form/index.ts +5 -2
- package/src/hmr.ts +1 -1
- package/src/hooks/useAsync.ts +5 -3
- package/src/hooks/useCallback.ts +2 -1
- package/src/hooks/useEffect.ts +2 -6
- package/src/hooks/useEffectEvent.ts +2 -1
- package/src/hooks/useLayoutEffect.ts +2 -6
- package/src/hooks/useMemo.ts +2 -1
- package/src/hooks/useReducer.ts +2 -2
- package/src/hooks/useRef.ts +2 -1
- package/src/hooks/useState.ts +2 -2
- package/src/hooks/useSyncExternalStore.ts +2 -2
- package/src/hooks/useViewTransition.ts +1 -2
- package/src/hooks/utils.ts +2 -2
- package/src/index.ts +3 -5
- package/src/reconciler.ts +13 -11
- package/src/renderToString.ts +108 -42
- package/src/scheduler.ts +61 -14
- package/src/signals/base.ts +6 -2
- package/src/signals/computed.ts +1 -1
- package/src/signals/effect.ts +1 -1
- package/src/signals/watch.ts +2 -3
- package/src/ssr/server.ts +163 -71
- package/src/store.ts +6 -2
- package/src/swr.ts +3 -3
- package/src/types.dom.ts +2 -1
- package/src/types.ts +20 -2
- package/src/types.utils.ts +8 -0
- package/src/utils/compare.ts +125 -0
- package/src/utils/format.ts +162 -0
- package/src/utils/index.ts +7 -0
- package/src/utils/runtime.ts +25 -0
- package/src/utils/vdom.ts +195 -0
- package/dist/cloneVNode.d.ts +0 -2
- package/dist/cloneVNode.d.ts.map +0 -1
- package/dist/cloneVNode.js +0 -14
- package/dist/cloneVNode.js.map +0 -1
- package/dist/generateId.d.ts.map +0 -1
- package/dist/generateId.js.map +0 -1
- package/dist/lazy.d.ts.map +0 -1
- package/dist/lazy.js.map +0 -1
- package/dist/memo.d.ts.map +0 -1
- package/dist/memo.js.map +0 -1
- package/dist/portal.d.ts.map +0 -1
- package/dist/portal.js.map +0 -1
- package/dist/props.d.ts +0 -4
- package/dist/props.d.ts.map +0 -1
- package/dist/props.js +0 -27
- package/dist/props.js.map +0 -1
- package/dist/router/index.d.ts.map +0 -1
- package/dist/router/index.js.map +0 -1
- package/dist/router/route.d.ts.map +0 -1
- package/dist/router/route.js.map +0 -1
- package/dist/router/router.d.ts.map +0 -1
- package/dist/router/router.js.map +0 -1
- package/dist/router/routerUtils.d.ts.map +0 -1
- package/dist/router/routerUtils.js.map +0 -1
- package/dist/transition.d.ts.map +0 -1
- package/dist/transition.js.map +0 -1
- package/dist/utils.d.ts +0 -52
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -433
- package/dist/utils.js.map +0 -1
- package/dist/warning.d.ts +0 -2
- package/dist/warning.d.ts.map +0 -1
- package/dist/warning.js +0 -4
- package/dist/warning.js.map +0 -1
- package/src/cloneVNode.ts +0 -14
- package/src/props.ts +0 -34
- package/src/utils.ts +0 -518
- package/src/warning.ts +0 -9
- /package/dist/{lazy.d.ts → components/lazy.d.ts} +0 -0
- /package/dist/{portal.d.ts → components/portal.d.ts} +0 -0
- /package/dist/{router → components/router}/index.d.ts +0 -0
- /package/dist/{router → components/router}/index.js +0 -0
- /package/dist/{router → components/router}/route.d.ts +0 -0
- /package/dist/{router → components/router}/routerUtils.d.ts +0 -0
- /package/dist/{router → components/router}/routerUtils.js +0 -0
- /package/dist/{transition.d.ts → components/transition.d.ts} +0 -0
- /package/dist/{generateId.d.ts → utils/generateId.d.ts} +0 -0
- /package/dist/{generateId.js → utils/generateId.js} +0 -0
- /package/src/{router → components/router}/index.ts +0 -0
- /package/src/{router → components/router}/routerUtils.ts +0 -0
- /package/src/{generateId.ts → utils/generateId.ts} +0 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { unwrap } from "../signals/index.js";
|
|
2
|
+
import { booleanAttributes, snakeCaseAttributes } from "../constants.js";
|
|
3
|
+
export { className, encodeHtmlEntities, propFilters, propToHtmlAttr, styleObjectToString, propValueToHtmlAttrValue, propsToElementAttributes, safeStringify, };
|
|
4
|
+
const REGEX_AMP = /&/g;
|
|
5
|
+
const REGEX_LT = /</g;
|
|
6
|
+
const REGEX_GT = />/g;
|
|
7
|
+
const REGEX_SQT = /'/g;
|
|
8
|
+
const REGEX_DBLQT = /"/g;
|
|
9
|
+
const REGEX_SLASH = /\//g;
|
|
10
|
+
const REGEX_ALPHA_UPPER = /[A-Z]/g;
|
|
11
|
+
function className(...classes) {
|
|
12
|
+
return classes.filter(Boolean).join(" ");
|
|
13
|
+
}
|
|
14
|
+
function encodeHtmlEntities(text) {
|
|
15
|
+
return text
|
|
16
|
+
.replace(REGEX_AMP, "&")
|
|
17
|
+
.replace(REGEX_LT, "<")
|
|
18
|
+
.replace(REGEX_GT, ">")
|
|
19
|
+
.replace(REGEX_DBLQT, """)
|
|
20
|
+
.replace(REGEX_SQT, "'")
|
|
21
|
+
.replace(REGEX_SLASH, "/");
|
|
22
|
+
}
|
|
23
|
+
const propFilters = {
|
|
24
|
+
internalProps: ["children", "ref", "key", "innerHTML"],
|
|
25
|
+
isEvent: (key) => key.startsWith("on"),
|
|
26
|
+
isProperty: (key) => !propFilters.internalProps.includes(key) && !propFilters.isEvent(key),
|
|
27
|
+
};
|
|
28
|
+
function propToHtmlAttr(key) {
|
|
29
|
+
switch (key) {
|
|
30
|
+
case "className":
|
|
31
|
+
return "class";
|
|
32
|
+
case "htmlFor":
|
|
33
|
+
return "for";
|
|
34
|
+
case "tabIndex":
|
|
35
|
+
case "formAction":
|
|
36
|
+
case "formMethod":
|
|
37
|
+
case "formEncType":
|
|
38
|
+
case "contentEditable":
|
|
39
|
+
case "spellCheck":
|
|
40
|
+
case "allowFullScreen":
|
|
41
|
+
case "autoPlay":
|
|
42
|
+
case "disablePictureInPicture":
|
|
43
|
+
case "disableRemotePlayback":
|
|
44
|
+
case "formNoValidate":
|
|
45
|
+
case "noModule":
|
|
46
|
+
case "noValidate":
|
|
47
|
+
case "popoverTarget":
|
|
48
|
+
case "popoverTargetAction":
|
|
49
|
+
case "playsInline":
|
|
50
|
+
case "readOnly":
|
|
51
|
+
case "itemscope":
|
|
52
|
+
case "rowSpan":
|
|
53
|
+
case "crossOrigin":
|
|
54
|
+
return key.toLowerCase();
|
|
55
|
+
default:
|
|
56
|
+
if (key.indexOf("-") > -1)
|
|
57
|
+
return key;
|
|
58
|
+
if (key.startsWith("aria"))
|
|
59
|
+
return "aria-" + key.substring(4).toLowerCase();
|
|
60
|
+
return snakeCaseAttributes.get(key) || key;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function styleObjectToString(obj) {
|
|
64
|
+
let cssString = "";
|
|
65
|
+
for (const key in obj) {
|
|
66
|
+
const cssKey = key.replace(REGEX_ALPHA_UPPER, "-$&").toLowerCase();
|
|
67
|
+
cssString += `${cssKey}:${obj[key]};`;
|
|
68
|
+
}
|
|
69
|
+
return cssString;
|
|
70
|
+
}
|
|
71
|
+
function stylePropToString(style) {
|
|
72
|
+
if (typeof style === "string")
|
|
73
|
+
return style;
|
|
74
|
+
if (typeof style === "object" && !!style)
|
|
75
|
+
return styleObjectToString(style);
|
|
76
|
+
return "";
|
|
77
|
+
}
|
|
78
|
+
function propValueToHtmlAttrValue(key, value) {
|
|
79
|
+
return key === "style" && typeof value === "object" && !!value
|
|
80
|
+
? styleObjectToString(value)
|
|
81
|
+
: String(value);
|
|
82
|
+
}
|
|
83
|
+
function propsToElementAttributes(props) {
|
|
84
|
+
const attrs = [];
|
|
85
|
+
const { className, style, ...rest } = props;
|
|
86
|
+
if (className) {
|
|
87
|
+
const val = unwrap(className);
|
|
88
|
+
if (!!val)
|
|
89
|
+
attrs.push(`class="${val}"`);
|
|
90
|
+
}
|
|
91
|
+
if (style) {
|
|
92
|
+
const val = unwrap(style);
|
|
93
|
+
if (!!val)
|
|
94
|
+
attrs.push(`style="${stylePropToString(val)}"`);
|
|
95
|
+
}
|
|
96
|
+
const keys = Object.keys(rest).filter(propFilters.isProperty);
|
|
97
|
+
for (let i = 0; i < keys.length; i++) {
|
|
98
|
+
let k = keys[i];
|
|
99
|
+
let val = unwrap(props[k]);
|
|
100
|
+
if (val === null || val === undefined)
|
|
101
|
+
continue;
|
|
102
|
+
k = k.split("bind:")[1] ?? k; // normalize bind props
|
|
103
|
+
const key = propToHtmlAttr(k);
|
|
104
|
+
switch (typeof val) {
|
|
105
|
+
case "function":
|
|
106
|
+
case "symbol":
|
|
107
|
+
continue;
|
|
108
|
+
case "boolean":
|
|
109
|
+
if (booleanAttributes.has(key)) {
|
|
110
|
+
if (val)
|
|
111
|
+
attrs.push(key);
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
attrs.push(`${key}="${val}"`);
|
|
116
|
+
}
|
|
117
|
+
return attrs.join(" ");
|
|
118
|
+
}
|
|
119
|
+
function safeStringify(value, opts = { functions: true }) {
|
|
120
|
+
const seen = new WeakSet();
|
|
121
|
+
return JSON.stringify(value, (_, value) => {
|
|
122
|
+
if (typeof value === "object" && value !== null) {
|
|
123
|
+
if (seen.has(value)) {
|
|
124
|
+
return "[CIRCULAR]";
|
|
125
|
+
}
|
|
126
|
+
seen.add(value);
|
|
127
|
+
}
|
|
128
|
+
if (typeof value === "function") {
|
|
129
|
+
if (!opts.functions)
|
|
130
|
+
return `[FUNCTION (${value.name || "anonymous"})]`;
|
|
131
|
+
return value.toString();
|
|
132
|
+
}
|
|
133
|
+
return value;
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateId.d.ts","sourceRoot":"","sources":["../../src/utils/generateId.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,GAAE,MAAW,EACjB,YAAY,GAAE,MAA2B,GACxC,MAAM,CAMR"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateId.js","sourceRoot":"","sources":["../../src/utils/generateId.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GACtB,kEAA2E,CAAA;AAE7E;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EAAE,EACjB,eAAuB,kBAAkB;IAEzC,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,EAAE,IAAI,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,+CAA+C;IAC/G,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAE/B,eAAO,MAAM,IAAI,YAA0B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAE/B,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { latest, sideEffectsEnabled };
|
|
2
|
+
/**
|
|
3
|
+
* This is a no-op in production. It is used to get the latest
|
|
4
|
+
* iteration of a component or signal after HMR has happened.
|
|
5
|
+
*/
|
|
6
|
+
declare function latest<T extends Exclude<object, null>>(thing: T): T;
|
|
7
|
+
/**
|
|
8
|
+
* Returns false if called during "stream" or "string" render modes.
|
|
9
|
+
*/
|
|
10
|
+
declare function sideEffectsEnabled(): boolean;
|
|
11
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/utils/runtime.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;AAErC;;;GAGG;AACH,iBAAS,MAAM,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAQ5D;AAED;;GAEG;AACH,iBAAS,kBAAkB,IAAI,OAAO,CAErC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { __DEV__ } from "../env.js";
|
|
2
|
+
import { renderMode } from "../globals.js";
|
|
3
|
+
export { latest, sideEffectsEnabled };
|
|
4
|
+
/**
|
|
5
|
+
* This is a no-op in production. It is used to get the latest
|
|
6
|
+
* iteration of a component or signal after HMR has happened.
|
|
7
|
+
*/
|
|
8
|
+
function latest(thing) {
|
|
9
|
+
let tgt = thing;
|
|
10
|
+
if (__DEV__) {
|
|
11
|
+
while ("__next" in tgt) {
|
|
12
|
+
tgt = tgt.__next;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return tgt;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Returns false if called during "stream" or "string" render modes.
|
|
19
|
+
*/
|
|
20
|
+
function sideEffectsEnabled() {
|
|
21
|
+
return renderMode.current === "dom" || renderMode.current === "hydrate";
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/utils/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;AAErC;;;GAGG;AACH,SAAS,MAAM,CAAkC,KAAQ;IACvD,IAAI,GAAG,GAAQ,KAAK,CAAA;IACpB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,QAAQ,IAAI,GAAG,EAAE,CAAC;YACvB,GAAG,GAAG,GAAG,CAAC,MAAoB,CAAA;QAChC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB;IACzB,OAAO,UAAU,CAAC,OAAO,KAAK,KAAK,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,CAAA;AACzE,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { $FRAGMENT, $CONTEXT_PROVIDER } from "../constants.js";
|
|
2
|
+
import type { AppContext } from "../appContext.js";
|
|
3
|
+
import type { ErrorBoundaryNode } from "../types.utils.js";
|
|
4
|
+
export { cloneVNode, isVNodeDeleted, isVNode, isExoticType, isFragment, isLazy, isMemo, isContextProvider, vNodeContains, getCurrentVNode, getVNodeAppContext, commitSnapshot, traverseApply, findParent, findParentErrorBoundary, assertValidElementProps, isValidElementKeyProp, isValidElementRefProp, };
|
|
5
|
+
declare function cloneVNode(vNode: Kiru.VNode): Kiru.VNode;
|
|
6
|
+
declare function isVNodeDeleted(vNode: Kiru.VNode): boolean;
|
|
7
|
+
declare function isVNode(thing: unknown): thing is Kiru.VNode;
|
|
8
|
+
declare function isExoticType(type: Kiru.VNode["type"]): type is Kiru.ExoticSymbol;
|
|
9
|
+
declare function isFragment(vNode: Kiru.VNode): vNode is Kiru.VNode & {
|
|
10
|
+
type: typeof $FRAGMENT;
|
|
11
|
+
};
|
|
12
|
+
declare function isLazy(vNode: Kiru.VNode): boolean;
|
|
13
|
+
declare function isMemo(vNode: Kiru.VNode): boolean;
|
|
14
|
+
declare function isContextProvider(thing: unknown): thing is Kiru.VNode & {
|
|
15
|
+
type: typeof $CONTEXT_PROVIDER;
|
|
16
|
+
};
|
|
17
|
+
declare function getCurrentVNode(): Kiru.VNode | null;
|
|
18
|
+
declare function getVNodeAppContext(vNode: Kiru.VNode): AppContext | null;
|
|
19
|
+
declare function commitSnapshot(vNode: Kiru.VNode): void;
|
|
20
|
+
declare function vNodeContains(haystack: Kiru.VNode, needle: Kiru.VNode): boolean;
|
|
21
|
+
declare function traverseApply(vNode: Kiru.VNode, func: (node: Kiru.VNode) => void): void;
|
|
22
|
+
declare function findParent(vNode: Kiru.VNode, predicate: (n: Kiru.VNode) => boolean): Kiru.VNode | null;
|
|
23
|
+
declare function findParentErrorBoundary(vNode: Kiru.VNode): ErrorBoundaryNode | null;
|
|
24
|
+
declare function assertValidElementProps(vNode: Kiru.VNode): void;
|
|
25
|
+
declare function isValidElementKeyProp(thing: unknown): thing is string | number;
|
|
26
|
+
declare function isValidElementRefProp(thing: unknown): thing is Kiru.Ref<any>;
|
|
27
|
+
//# sourceMappingURL=vdom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vdom.d.ts","sourceRoot":"","sources":["../../src/utils/vdom.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,SAAS,EACT,iBAAiB,EAKlB,MAAM,iBAAiB,CAAA;AAIxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EACL,UAAU,EACV,cAAc,EACd,OAAO,EACP,YAAY,EACZ,UAAU,EACV,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,UAAU,EACV,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,GACtB,CAAA;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAUjD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAElD;AAED,iBAAS,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAEpD;AAED,iBAAS,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,YAAY,CAOzE;AAED,iBAAS,UAAU,CACjB,KAAK,EAAE,IAAI,CAAC,KAAK,GAChB,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG;IAAE,IAAI,EAAE,OAAO,SAAS,CAAA;CAAE,CAElD;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAM1C;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAM1C;AAED,iBAAS,iBAAiB,CACxB,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG;IAAE,IAAI,EAAE,OAAO,iBAAiB,CAAA;CAAE,CAE1D;AAED,iBAAS,eAAe,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAE5C;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,IAAI,CAUhE;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAQ/C;AAED,iBAAS,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAaxE;AAED,iBAAS,aAAa,CACpB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,GAC/B,IAAI,CAUN;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,KAAK,OAAO,qBAO3E;AAED,iBAAS,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,iBAAiB,GAAG,IAAI,CAK5E;AAED,iBAAS,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,QAgBjD;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,GAAG,MAAM,CAEvE;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAMrE"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Signal } from "../signals/index.js";
|
|
2
|
+
import { FLAG_DELETION, $FRAGMENT, $CONTEXT_PROVIDER, $HYDRATION_BOUNDARY, FLAG_PLACEMENT, FLAG_UPDATE, $ERROR_BOUNDARY, } from "../constants.js";
|
|
3
|
+
import { createElement } from "../index.js";
|
|
4
|
+
import { KiruError } from "../error.js";
|
|
5
|
+
import { node } from "../globals.js";
|
|
6
|
+
export { cloneVNode, isVNodeDeleted, isVNode, isExoticType, isFragment, isLazy, isMemo, isContextProvider, vNodeContains, getCurrentVNode, getVNodeAppContext, commitSnapshot, traverseApply, findParent, findParentErrorBoundary, assertValidElementProps, isValidElementKeyProp, isValidElementRefProp, };
|
|
7
|
+
function cloneVNode(vNode) {
|
|
8
|
+
const children = vNode.props.children;
|
|
9
|
+
let clonedChildren;
|
|
10
|
+
if (isVNode(children)) {
|
|
11
|
+
clonedChildren = cloneVNode(children);
|
|
12
|
+
}
|
|
13
|
+
else if (Array.isArray(children)) {
|
|
14
|
+
clonedChildren = children.map((c) => (isVNode(c) ? cloneVNode(c) : c));
|
|
15
|
+
}
|
|
16
|
+
return createElement(vNode.type, { ...vNode.props, children: clonedChildren });
|
|
17
|
+
}
|
|
18
|
+
function isVNodeDeleted(vNode) {
|
|
19
|
+
return (vNode.flags & FLAG_DELETION) !== 0;
|
|
20
|
+
}
|
|
21
|
+
function isVNode(thing) {
|
|
22
|
+
return typeof thing === "object" && thing !== null && "type" in thing;
|
|
23
|
+
}
|
|
24
|
+
function isExoticType(type) {
|
|
25
|
+
return (type === $FRAGMENT ||
|
|
26
|
+
type === $CONTEXT_PROVIDER ||
|
|
27
|
+
type === $ERROR_BOUNDARY ||
|
|
28
|
+
type === $HYDRATION_BOUNDARY);
|
|
29
|
+
}
|
|
30
|
+
function isFragment(vNode) {
|
|
31
|
+
return vNode.type === $FRAGMENT;
|
|
32
|
+
}
|
|
33
|
+
function isLazy(vNode) {
|
|
34
|
+
return (typeof vNode.type === "function" &&
|
|
35
|
+
"displayName" in vNode.type &&
|
|
36
|
+
vNode.type.displayName === "Kiru.lazy");
|
|
37
|
+
}
|
|
38
|
+
function isMemo(vNode) {
|
|
39
|
+
return (typeof vNode.type === "function" &&
|
|
40
|
+
"displayName" in vNode.type &&
|
|
41
|
+
vNode.type.displayName === "Kiru.memo");
|
|
42
|
+
}
|
|
43
|
+
function isContextProvider(thing) {
|
|
44
|
+
return isVNode(thing) && thing.type === $CONTEXT_PROVIDER;
|
|
45
|
+
}
|
|
46
|
+
function getCurrentVNode() {
|
|
47
|
+
return node.current;
|
|
48
|
+
}
|
|
49
|
+
function getVNodeAppContext(vNode) {
|
|
50
|
+
let n = vNode;
|
|
51
|
+
while (n) {
|
|
52
|
+
if (n.app) {
|
|
53
|
+
return (vNode.app = n.app);
|
|
54
|
+
}
|
|
55
|
+
n = n.parent;
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
function commitSnapshot(vNode) {
|
|
60
|
+
const { props: { children, ...props }, memoizedProps, index, } = vNode;
|
|
61
|
+
vNode.prev = { props, memoizedProps, index };
|
|
62
|
+
vNode.flags &= ~(FLAG_UPDATE | FLAG_PLACEMENT | FLAG_DELETION);
|
|
63
|
+
}
|
|
64
|
+
function vNodeContains(haystack, needle) {
|
|
65
|
+
if (needle.depth < haystack.depth)
|
|
66
|
+
return false;
|
|
67
|
+
if (haystack === needle)
|
|
68
|
+
return true;
|
|
69
|
+
let checkSiblings = false;
|
|
70
|
+
const stack = [haystack];
|
|
71
|
+
while (stack.length) {
|
|
72
|
+
const n = stack.pop();
|
|
73
|
+
if (n === needle)
|
|
74
|
+
return true;
|
|
75
|
+
n.child && stack.push(n.child);
|
|
76
|
+
checkSiblings && n.sibling && stack.push(n.sibling);
|
|
77
|
+
checkSiblings = true;
|
|
78
|
+
}
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
function traverseApply(vNode, func) {
|
|
82
|
+
func(vNode);
|
|
83
|
+
let child = vNode.child;
|
|
84
|
+
while (child) {
|
|
85
|
+
func(child);
|
|
86
|
+
if (child.child) {
|
|
87
|
+
traverseApply(child, func);
|
|
88
|
+
}
|
|
89
|
+
child = child.sibling;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function findParent(vNode, predicate) {
|
|
93
|
+
let n = vNode.parent;
|
|
94
|
+
while (n) {
|
|
95
|
+
if (predicate(n))
|
|
96
|
+
return n;
|
|
97
|
+
n = n.parent;
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
function findParentErrorBoundary(vNode) {
|
|
102
|
+
return findParent(vNode, (n) => n.type === $ERROR_BOUNDARY);
|
|
103
|
+
}
|
|
104
|
+
function assertValidElementProps(vNode) {
|
|
105
|
+
if ("children" in vNode.props && vNode.props.innerHTML) {
|
|
106
|
+
throw new KiruError({
|
|
107
|
+
message: "Cannot use both children and innerHTML on an element",
|
|
108
|
+
vNode,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
for (const key in vNode.props) {
|
|
112
|
+
if ("bind:" + key in vNode.props) {
|
|
113
|
+
throw new KiruError({
|
|
114
|
+
message: `Cannot use both bind:${key} and ${key} on an element`,
|
|
115
|
+
vNode,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function isValidElementKeyProp(thing) {
|
|
121
|
+
return typeof thing === "string" || typeof thing === "number";
|
|
122
|
+
}
|
|
123
|
+
function isValidElementRefProp(thing) {
|
|
124
|
+
return (typeof thing === "function" ||
|
|
125
|
+
(typeof thing === "object" && !!thing && "current" in thing) ||
|
|
126
|
+
Signal.isSignal(thing));
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=vdom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vdom.js","sourceRoot":"","sources":["../../src/utils/vdom.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kiru",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.50.0-preview.0",
|
|
4
4
|
"description": "A batteries-included, easy-to-use rendering library with a tiny footprint",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -15,16 +15,16 @@
|
|
|
15
15
|
"default": "./dist/form/index.js"
|
|
16
16
|
},
|
|
17
17
|
"./router": {
|
|
18
|
-
"types": "./dist/router/index.d.ts",
|
|
19
|
-
"default": "./dist/router/index.js"
|
|
18
|
+
"types": "./dist/components/router/index.d.ts",
|
|
19
|
+
"default": "./dist/components/router/index.js"
|
|
20
20
|
},
|
|
21
21
|
"./swr": {
|
|
22
22
|
"types": "./dist/swr.d.ts",
|
|
23
23
|
"default": "./dist/swr.js"
|
|
24
24
|
},
|
|
25
25
|
"./utils": {
|
|
26
|
-
"types": "./dist/utils.d.ts",
|
|
27
|
-
"default": "./dist/utils.js"
|
|
26
|
+
"types": "./dist/utils/index.d.ts",
|
|
27
|
+
"default": "./dist/utils/index.js"
|
|
28
28
|
},
|
|
29
29
|
"./ssr": {
|
|
30
30
|
"types": "./dist/ssr/index.d.ts",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
},
|
|
76
76
|
"scripts": {
|
|
77
77
|
"build": "rm -rf dist && pnpm i && tsc",
|
|
78
|
-
"test": "node --test",
|
|
78
|
+
"test": "node --test dist/**/*.test.js",
|
|
79
79
|
"dev": "tsc --watch"
|
|
80
80
|
}
|
|
81
81
|
}
|
package/src/action.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type ActionResult<T> =
|
|
2
|
+
| {
|
|
3
|
+
error: ActionError
|
|
4
|
+
data: null
|
|
5
|
+
}
|
|
6
|
+
| {
|
|
7
|
+
error: null
|
|
8
|
+
data: T
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface ActionConfig<T> {
|
|
12
|
+
/**
|
|
13
|
+
* Executes the action and returns the result.
|
|
14
|
+
*/
|
|
15
|
+
execute: () => Promise<T>
|
|
16
|
+
/**
|
|
17
|
+
* Called when the action fails.
|
|
18
|
+
*/
|
|
19
|
+
onError?: (error: ActionError) => void
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export class ActionError extends Error {
|
|
23
|
+
constructor(cause: unknown) {
|
|
24
|
+
super("Error occurred during action execution", { cause })
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function defineAction<T extends readonly unknown[], R>(
|
|
29
|
+
callback: (...args: T) => ActionConfig<R>
|
|
30
|
+
): (...args: T) => Promise<ActionResult<R>> {
|
|
31
|
+
return async (...args: T) => {
|
|
32
|
+
const { execute, onError } = callback(...args)
|
|
33
|
+
try {
|
|
34
|
+
const data = await execute()
|
|
35
|
+
return { error: null, data }
|
|
36
|
+
} catch (e) {
|
|
37
|
+
const error = new ActionError(e)
|
|
38
|
+
onError?.(error)
|
|
39
|
+
return { error, data: null }
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { $ERROR_BOUNDARY } from "../constants.js"
|
|
2
|
+
import { createElement } from "../index.js"
|
|
3
|
+
|
|
4
|
+
export interface ErrorBoundaryProps {
|
|
5
|
+
children?: JSX.Children
|
|
6
|
+
fallback?: JSX.Element | ((error: Error) => JSX.Element)
|
|
7
|
+
onError?: (error: Error) => void
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function ErrorBoundary({
|
|
11
|
+
children,
|
|
12
|
+
fallback,
|
|
13
|
+
onError,
|
|
14
|
+
}: ErrorBoundaryProps) {
|
|
15
|
+
return createElement($ERROR_BOUNDARY, { children, fallback, onError })
|
|
16
|
+
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { createElement } from "
|
|
2
|
-
import { __DEV__ } from "
|
|
3
|
-
import { KiruError } from "
|
|
4
|
-
import { node, renderMode } from "
|
|
5
|
-
import { useContext } from "
|
|
6
|
-
import { useRef } from "
|
|
7
|
-
import { useRequestUpdate } from "
|
|
8
|
-
import { hydrationStack } from "
|
|
9
|
-
import { flushSync, nextIdle } from "
|
|
1
|
+
import { createElement } from "../element.js"
|
|
2
|
+
import { __DEV__ } from "../env.js"
|
|
3
|
+
import { KiruError } from "../error.js"
|
|
4
|
+
import { node, renderMode } from "../globals.js"
|
|
5
|
+
import { useContext } from "../hooks/useContext.js"
|
|
6
|
+
import { useRef } from "../hooks/useRef.js"
|
|
7
|
+
import { useRequestUpdate } from "../hooks/utils.js"
|
|
8
|
+
import { hydrationStack } from "../hydration.js"
|
|
9
|
+
import { flushSync, nextIdle } from "../scheduler.js"
|
|
10
10
|
import {
|
|
11
11
|
HYDRATION_BOUNDARY_MARKER,
|
|
12
12
|
HydrationBoundaryContext,
|
|
13
|
-
} from "
|
|
14
|
-
import
|
|
15
|
-
import {
|
|
13
|
+
} from "../ssr/hydrationBoundary.js"
|
|
14
|
+
import { noop } from "../utils/index.js"
|
|
15
|
+
import type { SomeDom } from "../types.utils"
|
|
16
16
|
|
|
17
17
|
interface FCModule {
|
|
18
18
|
default: Kiru.FC<any>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { $MEMO } from "
|
|
2
|
-
import { createElement } from "
|
|
3
|
-
import { __DEV__ } from "
|
|
1
|
+
import { $MEMO } from "../constants.js"
|
|
2
|
+
import { createElement } from "../element.js"
|
|
3
|
+
import { __DEV__ } from "../env.js"
|
|
4
4
|
|
|
5
5
|
function _arePropsEqual<T extends Record<string, unknown>>(
|
|
6
6
|
prevProps: T,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { FLAG_STATIC_DOM } from "
|
|
2
|
-
import { __DEV__ } from "
|
|
3
|
-
import { KiruError } from "
|
|
4
|
-
import { renderMode } from "
|
|
5
|
-
import { useVNode } from "
|
|
6
|
-
import { nextIdle, requestUpdate } from "
|
|
1
|
+
import { FLAG_STATIC_DOM } from "../constants.js"
|
|
2
|
+
import { __DEV__ } from "../env.js"
|
|
3
|
+
import { KiruError } from "../error.js"
|
|
4
|
+
import { renderMode } from "../globals.js"
|
|
5
|
+
import { useVNode } from "../hooks/utils.js"
|
|
6
|
+
import { nextIdle, requestUpdate } from "../scheduler.js"
|
|
7
7
|
|
|
8
8
|
interface PortalProps {
|
|
9
9
|
children?: JSX.Children
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { createElement } from "
|
|
1
|
+
import { createElement } from "../../element.js"
|
|
2
2
|
import {
|
|
3
3
|
useState,
|
|
4
4
|
useMemo,
|
|
5
5
|
useContext,
|
|
6
6
|
useLayoutEffect,
|
|
7
7
|
useRef,
|
|
8
|
-
} from "
|
|
9
|
-
import { __DEV__ } from "
|
|
8
|
+
} from "../../hooks/index.js"
|
|
9
|
+
import { __DEV__ } from "../../env.js"
|
|
10
|
+
import { createContext } from "../../context.js"
|
|
11
|
+
import { isRoute, Route } from "./route.js"
|
|
12
|
+
import { noop } from "../../utils/index.js"
|
|
13
|
+
import { node } from "../../globals.js"
|
|
14
|
+
import type { ElementProps } from "../../types.js"
|
|
15
|
+
import { flushSync, nextIdle } from "../../scheduler.js"
|
|
10
16
|
import {
|
|
11
17
|
parsePathParams,
|
|
12
18
|
parseSearchParams,
|
|
13
19
|
routeMatchesPath,
|
|
14
20
|
} from "./routerUtils.js"
|
|
15
|
-
import { createContext } from "../context.js"
|
|
16
|
-
import { isRoute, Route } from "./route.js"
|
|
17
|
-
import { noop } from "../utils.js"
|
|
18
|
-
import { node } from "../globals.js"
|
|
19
|
-
import type { ElementProps } from "../types"
|
|
20
|
-
import { flushSync, nextIdle } from "../scheduler.js"
|
|
21
21
|
|
|
22
22
|
export interface LinkProps extends Omit<ElementProps<"a">, "href"> {
|
|
23
23
|
/**
|