frosty 0.0.13 → 0.0.14
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/_native.js +3 -4
- package/dist/_native.js.map +1 -1
- package/dist/_native.mjs +2 -3
- package/dist/_native.mjs.map +1 -1
- package/dist/dom.js +3 -4
- package/dist/dom.js.map +1 -1
- package/dist/dom.mjs +3 -4
- package/dist/dom.mjs.map +1 -1
- package/dist/index.d.ts +307 -6
- package/dist/index.js +668 -27
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +639 -6
- package/dist/index.mjs.map +1 -1
- package/dist/internals/{common-CEjwzc0j.js → common-FG7T3c2f.js} +2 -2
- package/dist/internals/{common-CEjwzc0j.js.map → common-FG7T3c2f.js.map} +1 -1
- package/dist/internals/{common-CQOkvSXp.mjs → common-KSKXTzR8.mjs} +2 -2
- package/dist/internals/{common-CQOkvSXp.mjs.map → common-KSKXTzR8.mjs.map} +1 -1
- package/dist/internals/{renderer-CTxeL82F.mjs → renderer-GTnF-hYa.mjs} +2 -3
- package/dist/internals/{renderer-CTxeL82F.mjs.map → renderer-GTnF-hYa.mjs.map} +1 -1
- package/dist/internals/{renderer-BL3b1IbL.js → renderer-jjw2FwKT.js} +8 -9
- package/dist/internals/{renderer-BL3b1IbL.js.map → renderer-jjw2FwKT.js.map} +1 -1
- package/dist/internals/{sync-Cq3pCYO3.mjs → sync-B9zfuWYQ.mjs} +60 -60
- package/dist/internals/sync-B9zfuWYQ.mjs.map +1 -0
- package/dist/internals/{sync-CSxmMfGm.js → sync-BIbWmXEq.js} +74 -74
- package/dist/internals/sync-BIbWmXEq.js.map +1 -0
- package/dist/internals/{state-BiYNImPF.mjs → utils-BJL3yvTI.mjs} +61 -48
- package/dist/internals/utils-BJL3yvTI.mjs.map +1 -0
- package/dist/internals/{state-DH_D-jro.js → utils-Bipfwp1R.js} +61 -47
- package/dist/internals/utils-Bipfwp1R.js.map +1 -0
- package/dist/jsx-runtime.js +29 -2
- package/dist/jsx-runtime.js.map +1 -1
- package/dist/jsx-runtime.mjs +29 -2
- package/dist/jsx-runtime.mjs.map +1 -1
- package/dist/server-dom.js +3 -4
- package/dist/server-dom.js.map +1 -1
- package/dist/server-dom.mjs +3 -4
- package/dist/server-dom.mjs.map +1 -1
- package/dist/web.d.ts +2 -2
- package/dist/web.js +30 -15
- package/dist/web.js.map +1 -1
- package/dist/web.mjs +26 -11
- package/dist/web.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/hooks.d.ts +0 -301
- package/dist/hooks.d.ts.map +0 -1
- package/dist/hooks.js +0 -456
- package/dist/hooks.js.map +0 -1
- package/dist/hooks.mjs +0 -447
- package/dist/hooks.mjs.map +0 -1
- package/dist/internals/fragment-B0rB4qEp.js +0 -32
- package/dist/internals/fragment-B0rB4qEp.js.map +0 -1
- package/dist/internals/fragment-DPs1AriN.mjs +0 -30
- package/dist/internals/fragment-DPs1AriN.mjs.map +0 -1
- package/dist/internals/state-0jEjYdYV.js +0 -203
- package/dist/internals/state-0jEjYdYV.js.map +0 -1
- package/dist/internals/state-BiYNImPF.mjs.map +0 -1
- package/dist/internals/state-DH_D-jro.js.map +0 -1
- package/dist/internals/state-zydBhS8M.mjs +0 -197
- package/dist/internals/state-zydBhS8M.mjs.map +0 -1
- package/dist/internals/sync-CSxmMfGm.js.map +0 -1
- package/dist/internals/sync-Cq3pCYO3.mjs.map +0 -1
- package/dist/internals/utils-DAEKakog.mjs +0 -42
- package/dist/internals/utils-DAEKakog.mjs.map +0 -1
- package/dist/internals/utils-Dc66ARNS.js +0 -44
- package/dist/internals/utils-Dc66ARNS.js.map +0 -1
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var _ = require('lodash');
|
|
4
|
-
var sync = require('./sync-CSxmMfGm.js');
|
|
5
|
-
|
|
6
|
-
//
|
|
7
|
-
// debounce.ts
|
|
8
|
-
//
|
|
9
|
-
// The MIT License
|
|
10
|
-
// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.
|
|
11
|
-
//
|
|
12
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
13
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
14
|
-
// in the Software without restriction, including without limitation the rights
|
|
15
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
16
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
17
|
-
// furnished to do so, subject to the following conditions:
|
|
18
|
-
//
|
|
19
|
-
// The above copyright notice and this permission notice shall be included in
|
|
20
|
-
// all copies or substantial portions of the Software.
|
|
21
|
-
//
|
|
22
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
23
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
24
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
25
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
26
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
27
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
28
|
-
// THE SOFTWARE.
|
|
29
|
-
//
|
|
30
|
-
const debounce = (callback, settings) => {
|
|
31
|
-
const { wait, ...options } = settings;
|
|
32
|
-
return _.debounce(callback, wait, {
|
|
33
|
-
...options,
|
|
34
|
-
leading: 'leading' in options ? !!options.leading : true,
|
|
35
|
-
trailing: 'trailing' in options ? !!options.trailing : true,
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
const asyncDebounce = (func, settings) => {
|
|
39
|
-
let preflight;
|
|
40
|
-
const debounced = debounce(async (resolve, ...args) => {
|
|
41
|
-
const result = func(...args);
|
|
42
|
-
if (_.isFunction(resolve))
|
|
43
|
-
resolve(result);
|
|
44
|
-
return result;
|
|
45
|
-
}, settings);
|
|
46
|
-
return (...args) => {
|
|
47
|
-
if (_.isNil(preflight)) {
|
|
48
|
-
preflight = new Promise(r => debounced(r, ...args));
|
|
49
|
-
return preflight;
|
|
50
|
-
}
|
|
51
|
-
return debounced(undefined, ...args) ?? preflight;
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* A hook that creates a debounced version of a function.
|
|
56
|
-
* The debounced function delays invoking the callback until after
|
|
57
|
-
* the specified wait time has elapsed since the last time it was called.
|
|
58
|
-
*
|
|
59
|
-
* This is useful for optimizing performance in scenarios where frequent
|
|
60
|
-
* function calls (e.g., during user input or window resizing) can be expensive.
|
|
61
|
-
*
|
|
62
|
-
* @template T The type of the callback function.
|
|
63
|
-
* @param callback The function to debounce.
|
|
64
|
-
* @param settings Configuration options for debouncing, including:
|
|
65
|
-
* - `wait` (number): The number of milliseconds to delay.
|
|
66
|
-
* - Other lodash debounce options such as `leading` and `trailing`.
|
|
67
|
-
* @returns A debounced version of the callback function.
|
|
68
|
-
*/
|
|
69
|
-
const useDebounce = (callback, settings) => {
|
|
70
|
-
const store = sync._useMemo('useDebounce', () => {
|
|
71
|
-
const store = {
|
|
72
|
-
current: callback,
|
|
73
|
-
stable: debounce(((...args) => store.current(...args)), settings),
|
|
74
|
-
};
|
|
75
|
-
return store;
|
|
76
|
-
}, null);
|
|
77
|
-
store.current = callback;
|
|
78
|
-
return store.stable;
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* A hook that creates a debounced version of an asynchronous function.
|
|
82
|
-
* The debounced function delays invoking the callback until after
|
|
83
|
-
* the specified wait time has elapsed since the last time it was called.
|
|
84
|
-
*
|
|
85
|
-
* This is particularly useful for scenarios where frequent API calls
|
|
86
|
-
* or other asynchronous operations need to be throttled to improve performance.
|
|
87
|
-
*
|
|
88
|
-
* @template T The type of the asynchronous callback function.
|
|
89
|
-
* @param callback The asynchronous function to debounce.
|
|
90
|
-
* @param settings Configuration options for debouncing, including:
|
|
91
|
-
* - `wait` (number): The number of milliseconds to delay.
|
|
92
|
-
* - Other lodash debounce options such as `leading` and `trailing`.
|
|
93
|
-
* @returns A debounced version of the asynchronous callback function.
|
|
94
|
-
*/
|
|
95
|
-
const useAsyncDebounce = (callback, settings) => {
|
|
96
|
-
const store = sync._useMemo('useAsyncDebounce', () => {
|
|
97
|
-
const store = {
|
|
98
|
-
current: callback,
|
|
99
|
-
stable: asyncDebounce(((...args) => store.current(...args)), settings),
|
|
100
|
-
};
|
|
101
|
-
return store;
|
|
102
|
-
}, null);
|
|
103
|
-
store.current = callback;
|
|
104
|
-
return store.stable;
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
//
|
|
108
|
-
// memo.ts
|
|
109
|
-
//
|
|
110
|
-
// The MIT License
|
|
111
|
-
// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.
|
|
112
|
-
//
|
|
113
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
114
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
115
|
-
// in the Software without restriction, including without limitation the rights
|
|
116
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
117
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
118
|
-
// furnished to do so, subject to the following conditions:
|
|
119
|
-
//
|
|
120
|
-
// The above copyright notice and this permission notice shall be included in
|
|
121
|
-
// all copies or substantial portions of the Software.
|
|
122
|
-
//
|
|
123
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
124
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
125
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
126
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
127
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
128
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
129
|
-
// THE SOFTWARE.
|
|
130
|
-
//
|
|
131
|
-
function useRef(initialValue) {
|
|
132
|
-
return sync._useMemo('useRef', () => ({ current: initialValue }), null);
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Associates a reference with a value created by an initializer function.
|
|
136
|
-
*
|
|
137
|
-
* @template T The type of the reference.
|
|
138
|
-
* @template R The type of the value created by the initializer function.
|
|
139
|
-
* @param ref A reference object or a callback function to receive the value.
|
|
140
|
-
* @param init A function that initializes and returns the value to associate with the reference.
|
|
141
|
-
* @param deps An optional dependency array. The initializer function is re-executed when the dependencies change.
|
|
142
|
-
*/
|
|
143
|
-
const useRefHandle = (ref, init, deps) => sync._useEffect('useRefHandle', () => {
|
|
144
|
-
try {
|
|
145
|
-
if (ref) {
|
|
146
|
-
const _ref = init();
|
|
147
|
-
if (typeof ref === 'function')
|
|
148
|
-
ref(_ref);
|
|
149
|
-
else if (typeof ref === 'object')
|
|
150
|
-
ref.current = _ref;
|
|
151
|
-
}
|
|
152
|
-
return () => void 0;
|
|
153
|
-
}
|
|
154
|
-
catch (e) {
|
|
155
|
-
console.error(e);
|
|
156
|
-
return () => void 0;
|
|
157
|
-
}
|
|
158
|
-
}, deps);
|
|
159
|
-
|
|
160
|
-
//
|
|
161
|
-
// memo.ts
|
|
162
|
-
//
|
|
163
|
-
// The MIT License
|
|
164
|
-
// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.
|
|
165
|
-
//
|
|
166
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
167
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
168
|
-
// in the Software without restriction, including without limitation the rights
|
|
169
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
170
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
171
|
-
// furnished to do so, subject to the following conditions:
|
|
172
|
-
//
|
|
173
|
-
// The above copyright notice and this permission notice shall be included in
|
|
174
|
-
// all copies or substantial portions of the Software.
|
|
175
|
-
//
|
|
176
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
177
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
178
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
179
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
180
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
181
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
182
|
-
// THE SOFTWARE.
|
|
183
|
-
//
|
|
184
|
-
function useState(initialState) {
|
|
185
|
-
const { value, setValue } = sync._useMemo('useState', ({ node }) => {
|
|
186
|
-
const state = {
|
|
187
|
-
value: _.isFunction(initialState) ? initialState() : initialState,
|
|
188
|
-
setValue: (dispatch) => {
|
|
189
|
-
state.value = _.isFunction(dispatch) ? dispatch(state.value) : dispatch;
|
|
190
|
-
node?._setDirty();
|
|
191
|
-
},
|
|
192
|
-
};
|
|
193
|
-
return state;
|
|
194
|
-
}, null);
|
|
195
|
-
return [value, setValue];
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
exports.useAsyncDebounce = useAsyncDebounce;
|
|
199
|
-
exports.useDebounce = useDebounce;
|
|
200
|
-
exports.useRef = useRef;
|
|
201
|
-
exports.useRefHandle = useRefHandle;
|
|
202
|
-
exports.useState = useState;
|
|
203
|
-
//# sourceMappingURL=state-0jEjYdYV.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-0jEjYdYV.js","sources":["../../../src/core/hooks/debounce.ts","../../../src/core/hooks/ref.ts","../../../src/core/hooks/state.ts"],"sourcesContent":["//\n// debounce.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { _useMemo } from '../reconciler/hooks';\n\nconst debounce = <T extends (...args: any) => any>(\n callback: T,\n settings: _.DebounceSettings & { wait?: number; },\n) => {\n const { wait, ...options } = settings;\n return _.debounce(callback, wait, {\n ...options,\n leading: 'leading' in options ? !!options.leading : true,\n trailing: 'trailing' in options ? !!options.trailing : true,\n });\n}\n\nconst asyncDebounce = <T extends (...args: any) => PromiseLike<any>>(\n func: T,\n settings: _.DebounceSettings & { wait?: number; },\n) => {\n\n type R = T extends (...args: any) => PromiseLike<infer R> ? R : never;\n let preflight: Promise<R>;\n\n const debounced = debounce(async (\n resolve?: (value: PromiseLike<R>) => void,\n ...args: Parameters<T>\n ) => {\n const result = func(...args as any) as PromiseLike<R>;\n if (_.isFunction(resolve)) resolve(result);\n return result;\n }, settings);\n\n return (...args: Parameters<T>) => {\n if (_.isNil(preflight)) {\n preflight = new Promise<R>(r => debounced(r, ...args));\n return preflight;\n }\n return debounced(undefined, ...args) ?? preflight;\n };\n};\n\n/**\n * A hook that creates a debounced version of a function.\n * The debounced function delays invoking the callback until after\n * the specified wait time has elapsed since the last time it was called.\n * \n * This is useful for optimizing performance in scenarios where frequent\n * function calls (e.g., during user input or window resizing) can be expensive.\n * \n * @template T The type of the callback function.\n * @param callback The function to debounce.\n * @param settings Configuration options for debouncing, including:\n * - `wait` (number): The number of milliseconds to delay.\n * - Other lodash debounce options such as `leading` and `trailing`.\n * @returns A debounced version of the callback function.\n */\nexport const useDebounce = <T extends (...args: any) => any>(\n callback: T,\n settings: _.DebounceSettings & { wait?: number; },\n) => {\n const store = _useMemo('useDebounce', () => {\n const store = {\n current: callback,\n stable: debounce(((...args) => store.current(...args)) as T, settings),\n };\n return store;\n }, null);\n store.current = callback;\n return store.stable;\n}\n\n/**\n * A hook that creates a debounced version of an asynchronous function.\n * The debounced function delays invoking the callback until after\n * the specified wait time has elapsed since the last time it was called.\n * \n * This is particularly useful for scenarios where frequent API calls\n * or other asynchronous operations need to be throttled to improve performance.\n * \n * @template T The type of the asynchronous callback function.\n * @param callback The asynchronous function to debounce.\n * @param settings Configuration options for debouncing, including:\n * - `wait` (number): The number of milliseconds to delay.\n * - Other lodash debounce options such as `leading` and `trailing`.\n * @returns A debounced version of the asynchronous callback function.\n */\nexport const useAsyncDebounce = <T extends (...args: any) => PromiseLike<any>>(\n callback: T,\n settings: _.DebounceSettings & { wait?: number; },\n) => {\n const store = _useMemo('useAsyncDebounce', () => {\n const store = {\n current: callback,\n stable: asyncDebounce(((...args) => store.current(...args)) as T, settings),\n };\n return store;\n }, null);\n store.current = callback;\n return store.stable;\n}\n","//\n// memo.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { _useEffect, _useMemo } from '../reconciler/hooks';\nimport { Ref, RefObject } from '../types/common';\n\n/**\n * Creates a mutable reference object that persists across function calls.\n * \n * @template T The type of the value stored in the reference.\n * @param initialValue The initial value to store in the reference.\n * @returns An object with a `current` property that holds the value.\n */\nexport function useRef<T>(initialValue: T): RefObject<T>;\nexport function useRef<T = undefined>(): RefObject<T | undefined>;\n\nexport function useRef(initialValue?: any) {\n return _useMemo('useRef', () => ({ current: initialValue }), null);\n}\n\n/**\n * Associates a reference with a value created by an initializer function.\n * \n * @template T The type of the reference.\n * @template R The type of the value created by the initializer function.\n * @param ref A reference object or a callback function to receive the value.\n * @param init A function that initializes and returns the value to associate with the reference.\n * @param deps An optional dependency array. The initializer function is re-executed when the dependencies change.\n */\nexport const useRefHandle = <T, R extends T>(\n ref: Ref<T> | undefined,\n init: () => R,\n deps?: any\n) => _useEffect('useRefHandle', () => {\n try {\n if (ref) {\n const _ref = init();\n if (typeof ref === 'function') ref(_ref);\n else if (typeof ref === 'object') ref.current = _ref;\n }\n return () => void 0;\n } catch (e) {\n console.error(e);\n return () => void 0;\n }\n}, deps);","//\n// memo.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { _useMemo } from '../reconciler/hooks';\nimport { SetStateAction } from '../types/common';\n\n/**\n * A hook function for managing state within a custom framework or library.\n *\n * @template T - The type of the state value.\n * @param - The initial state value or a function that returns the initial state.\n * @returns - A tuple containing the current state value and a function to update the state.\n *\n * The `useState` function provides a way to manage stateful values. It returns the current state\n * and a setter function that can update the state. The setter function accepts either a new value\n * or a function that receives the current state and returns the updated state.\n *\n * Example:\n * ```typescript\n * const [count, setCount] = useState(0);\n * setCount(5); // Updates the state to 5\n * setCount(prev => prev + 1); // Updates the state to the previous value + 1\n * ```\n */\nexport function useState<T>(initialState: T | (() => T)): [T, (dispatch: SetStateAction<T>) => void];\nexport function useState<T = undefined>(): [T | undefined, (dispatch: SetStateAction<T | undefined>) => void];\n\nexport function useState(initialState?: any) {\n const { value, setValue } = _useMemo('useState', ({ node }) => {\n const state = {\n value: _.isFunction(initialState) ? initialState() : initialState,\n setValue: (dispatch: SetStateAction<any>) => {\n state.value = _.isFunction(dispatch) ? dispatch(state.value) : dispatch;\n node?._setDirty();\n },\n };\n return state;\n }, null);\n return [value, setValue];\n}\n"],"names":["_useMemo","_useEffect"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-BiYNImPF.mjs","sources":["../../../src/core/hooks/context.ts","../../../src/core/types/context.ts","../../../src/core/reconciler/utils.ts","../../../src/core/reconciler/vnode.ts","../../../src/core/reconciler/events.ts","../../../src/core/types/props.ts","../../../src/core/types/error.ts","../../../src/core/reconciler/state.ts"],"sourcesContent":["//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { _contextDefaultValue, Context } from '../types/context';\nimport { reconciler } from '../reconciler/state';\n\n/**\n * A hook that retrieves the current value of a context and optionally applies\n * a selector function to transform the context value. This hook ensures that the component\n * subscribes to the context and re-renders when the context value changes.\n *\n * @template T - The type of the context value.\n * @template R - The type of the transformed value returned by the selector.\n * @param context - The context object to retrieve the value from.\n * @param selector - An optional selector function to transform the context value.\n * Defaults to an identity function.\n * @returns - The current value of the context, optionally transformed by the selector.\n *\n * @throws - Throws an error if the provided context is invalid or if the hook\n * is used outside of a render function.\n *\n * @example\n * const MyContext = createContext({ user: null });\n * \n * function MyComponent() {\n * const user = useContext(MyContext, context => context.user);\n * return <div>{user ? `Hello, ${user.name}` : 'Hello, Guest'}</div>;\n * }\n */\nexport const useContext = <T, R = T>(\n context: Context<T>,\n selector: (state: T) => R = v => v as any\n) => {\n if (!reconciler.isContext(context)) throw Error(`Invalid type of ${context}`);\n const state = reconciler.currentHookState;\n if (!state) throw Error('useContext must be used within a render function.');\n const { contextValue, listens } = state;\n listens.add(context);\n const { value = _contextDefaultValue.get(context) } = contextValue.get(context) ?? {};\n return selector(value);\n}\n","//\n// context.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { ComponentType, ElementNode } from './common';\nimport { useContext } from '../hooks/context';\n\nexport const _contextDefaultValue = new WeakMap<Context<any>, any>();\n\nexport type Context<Value> = ReturnType<typeof _createContext<Value>>;\nexport type ContextType<C extends Context<any>> = C extends Context<infer T> ? T : never;\n\nconst _createContext = <Value extends unknown>(defaultValue: Value) => {\n const _context: ComponentType<{\n value: Value;\n children?: ElementNode | ((value: Value) => ElementNode);\n }> = ({ value, children }) => {\n return _.isFunction(children) ? children(value) : children;\n };\n const Consumer: ComponentType<{\n children: (value: Value) => ElementNode;\n }> = ({ children }) => {\n const value = useContext(_context as Context<Value>);\n return children(value);\n };\n _contextDefaultValue.set(_context as Context<Value>, defaultValue);\n return _.assign(_context, { Consumer });\n};\n\n/**\n * Creates a new context object with an optional default value.\n * \n * A context object allows you to share a value across a component tree\n * without explicitly passing it as a prop to every level.\n * \n * @template Value - The type of the value to be stored in the context.\n * @param - The default value for the context.\n * @returns A context object that can be used to provide and consume the value.\n */\nexport function createContext<Value>(defaultValue: Value): Context<Value>;\nexport function createContext<Value = undefined>(): Context<Value | undefined>;\n\nexport function createContext(defaultValue?: any) {\n return _createContext(defaultValue);\n}\n","//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\n\nexport const equalDeps = (lhs: any, rhs: any) => _.isEqual(lhs ?? null, rhs);\n","//\n// vnode.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { ComponentNode, NativeElementType } from '../types/component';\nimport { Context } from '../types/context';\nimport { reconciler } from './state';\nimport { myersSync } from 'myers.js';\nimport { EventEmitter } from './events';\nimport { equalDeps } from './utils';\nimport { _Renderer } from '../renderer';\nimport { PropsType } from '../types/runtime';\n\nexport type VNodeState = {\n hook: string;\n deps: any;\n data?: any;\n mount?: () => () => void;\n};\n\nexport type _ContextState = {\n value: any;\n state: number;\n node: VNode;\n};\n\nexport class VNode {\n\n /** @internal */\n _component: ComponentNode;\n\n private _event: EventEmitter;\n private _props: PropsType = {};\n private _error?: any;\n private _children: (VNode | string)[] = [];\n private _state?: VNodeState[];\n private _dirty = true;\n private _listens = new Map<Context<any>, Omit<_ContextState, 'value'>>();\n\n /** @internal */\n _content_state = 0;\n private _content_value?: any;\n\n /** @internal */\n constructor(component: ComponentNode, event: EventEmitter) {\n this._component = component;\n this._event = event;\n }\n\n /** @internal */\n _resolve_children(child: any): (VNode | string)[] {\n if (_.isBoolean(child) || _.isNil(child)) return [];\n if (_.isString(child)) return [child];\n if (_.isNumber(child)) return [`${child}`];\n if (child instanceof ComponentNode) return [new VNode(child, this._event)];\n if (_.isArrayLikeObject(child)) return _.flatMap(child, x => this._resolve_children(x));\n if (typeof child[Symbol.iterator] === 'function') return _.flatMap([...child], x => this._resolve_children(x));\n throw Error(`${child} are not valid as a child.`);\n }\n\n get type() {\n return this._component.type;\n }\n\n get props() {\n return this._props;\n }\n\n get key() {\n return this._component.key;\n }\n\n get state() {\n return this._state ?? [];\n }\n\n get children() {\n return this._children;\n }\n\n get error() {\n return this._error;\n }\n\n /** @internal */\n _setDirty() {\n this._dirty = true;\n this._event.emit('onchange');\n }\n\n /** @internal */\n private _check_context(values: Map<Context<any>, Omit<_ContextState, 'value'>>) {\n return this._listens.entries().every(([k, v]) => {\n const { state, node } = values.get(k) ?? {};\n return state === v.state && node === v.node;\n });\n }\n\n /** @internal */\n _updateIfNeed(options: {\n renderer: _Renderer<any>;\n stack: VNode[];\n propsProvider: VNode[];\n errorBoundary?: VNode;\n contextValue: Map<Context<any>, _ContextState>;\n }) {\n if (!this._dirty && this._check_context(options.contextValue)) return false;\n try {\n const { type, props: _props } = this._component;\n const props = options.propsProvider.reduceRight((p, node) => node.props.callback({ type, props: p }), _props);\n let children: (VNode | string)[];\n if (_.isString(type) || type.prototype instanceof NativeElementType) {\n children = this._resolve_children(props.children);\n } else if (reconciler.isContext(type)) {\n const { value } = props;\n if (!equalDeps(this._content_value, value)) this._content_state += 1;\n this._content_value = value;\n children = this._resolve_children(type(props as any));\n } else if (_.isFunction(type)) {\n const { rendered, state } = reconciler.withHookState({\n renderer: options.renderer,\n node: this,\n state: this._state,\n stack: options.stack,\n contextValue: options.contextValue,\n }, (state) => ({ rendered: type(props), state }));\n this._state = state.state;\n this._listens = new Map(options.contextValue.entries().filter(([k]) => state.listens.has(k)));\n children = this._resolve_children(rendered);\n } else {\n throw Error(`Invalid node type ${type}`);\n }\n const diff = myersSync(this._children, children, {\n compare: (lhs, rhs) => {\n if (_.isString(lhs) && _.isString(rhs)) return lhs === rhs;\n if (lhs instanceof VNode && rhs instanceof VNode) return lhs._component._equal(rhs._component);\n return false;\n },\n });\n this._props = _.omit(props, 'children');\n this._children = _.flatMap(diff, x => x.equivalent ?? x.insert ?? []);\n this._error = undefined;\n for (const [i, item] of this._children.entries()) {\n if (!(item instanceof VNode)) continue;\n if (!(children[i] instanceof VNode)) continue;\n if (!equalDeps(item._component.props, children[i]._component.props)) item._dirty = true;\n item._component = children[i]._component;\n }\n } catch (error) {\n this._props = {};\n this._children = [];\n this._error = error;\n (async () => {\n try {\n const { onError, silent } = options.errorBoundary?.props ?? {};\n if (!silent) console.error(error);\n if (_.isFunction(onError)) await onError(error, this._component, _.map(options.stack, x => x._component));\n } catch (e) {\n console.error(e);\n }\n })();\n } finally {\n this._dirty = false;\n }\n return true;\n }\n}\n","//\n// events.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\n\nexport class EventEmitter {\n\n private _listeners: Record<string, ((...args: any[]) => void)[]> = {};\n\n register(event: string, callback: (event: string, ...args: any[]) => void) {\n if (_.isNil(this._listeners[event])) this._listeners[event] = [];\n const _callback = (...args: any[]) => callback(event, ...args);\n this._listeners[event].push(_callback);\n return {\n remove: () => {\n this._listeners[event] = _.filter(this._listeners[event], x => x !== _callback);\n },\n };\n }\n\n emit(event: string, ...args: any[]) {\n this._listeners[event]?.forEach(async callback => {\n try {\n await callback(...args)\n } catch (e) {\n console.error(e);\n }\n });\n }\n}\n","//\n// props.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { ComponentType, PropsWithChildren } from './common';\nimport { NativeElementType } from './component';\nimport { _ElementType, PropsType } from './runtime';\n\ntype PropsProviderProps = PropsWithChildren<{\n callback: (v: {\n type: _ElementType | typeof NativeElementType,\n props: PropsType\n }) => PropsType | undefined | null;\n}>;\n\nexport const PropsProvider: ComponentType<PropsProviderProps> = ({ children }) => {\n return children;\n}\n","//\n// error.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { ComponentType, PropsWithChildren } from './common';\nimport { ComponentNode } from './component';\n\ntype ErrorBoundaryProps = PropsWithChildren<{\n silent?: boolean;\n onError?: (\n error: any,\n component: ComponentNode,\n stack: ComponentNode[],\n ) => void;\n}>;\n\nexport const ErrorBoundary: ComponentType<ErrorBoundaryProps> = ({ children }) => {\n return children;\n}\n","//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { ComponentNode } from '../types/component';\nimport { _contextDefaultValue, Context } from '../types/context';\nimport { _ContextState, VNode, VNodeState } from './vnode';\nimport { EventEmitter } from './events';\nimport { PropsProvider } from '../types/props';\nimport { ErrorBoundary } from '../types/error';\nimport { _Renderer } from '../renderer';\n\nclass HookState {\n\n renderer: _Renderer<any>;\n\n contextValue: Map<Context<any>, _ContextState>;\n prevState?: VNodeState[];\n state: VNodeState[] = [];\n stack: VNode[] = [];\n node?: VNode;\n\n listens = new WeakSet<Context<any>>();\n\n constructor(options: {\n renderer: _Renderer<any>;\n node: VNode;\n stack: VNode[];\n state?: VNodeState[];\n contextValue: Map<Context<any>, _ContextState>;\n }) {\n this.renderer = options.renderer;\n this.node = options.node;\n this.stack = options.stack;\n this.prevState = options.state;\n this.contextValue = options.contextValue ?? new Map();\n }\n}\n\nexport const reconciler = new class {\n\n /** @internal */\n _registry = new WeakMap<any, string>();\n\n /** @internal */\n _currentHookState: HookState | undefined;\n\n get currentHookState() {\n return this._currentHookState;\n }\n\n isContext(type: any): type is Context<any> {\n return _contextDefaultValue.has(type as any);\n }\n\n withHookState<R = void>(\n options: ConstructorParameters<typeof HookState>[0],\n callback: (state: HookState) => R,\n ) {\n try {\n const state = new HookState(options);\n reconciler._currentHookState = state;\n return callback(state);\n } finally {\n reconciler._currentHookState = undefined;\n }\n }\n\n buildVNodes(component: ComponentNode, renderer: _Renderer<any>) {\n const event = new EventEmitter();\n const root = new VNode(component, event);\n const excute = function* () {\n const items: {\n node: VNode;\n stack: VNode[];\n propsProvider: VNode[];\n errorBoundary?: VNode;\n contextValue: Map<Context<any>, _ContextState>;\n }[] = [{\n node: root,\n stack: [],\n propsProvider: [],\n contextValue: new Map(),\n }];\n let item;\n while (item = items.shift()) {\n\n const { node, stack, propsProvider, errorBoundary, contextValue } = item;\n yield {\n node,\n stack,\n updated: node._updateIfNeed({\n renderer,\n stack,\n propsProvider,\n errorBoundary,\n contextValue\n }),\n };\n\n let _contextValue = contextValue;\n if (reconciler.isContext(node.type)) {\n _contextValue = new Map(_contextValue);\n _contextValue.set(node.type, {\n value: node.props.value,\n state: node._content_state,\n node: node,\n });\n }\n\n const _propsProvider = node.type === PropsProvider ? [...propsProvider, node] : propsProvider;\n const _errorBoundary = node.type === ErrorBoundary ? node : errorBoundary;\n\n const _stack = [...stack, node];\n for (const item of node.children) {\n if (item instanceof VNode) {\n items.push({\n node: item,\n stack: _stack,\n propsProvider: _propsProvider,\n errorBoundary: _errorBoundary,\n contextValue: _contextValue,\n });\n }\n }\n }\n };\n return { node: root, event, excute };\n }\n};\n"],"names":[],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACI,MAAM,UAAU,GAAG,CACxB,OAAmB,EACnB,QAA4B,GAAA,CAAC,IAAI,CAAQ,KACvC;AACF,IAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;AAAE,QAAA,MAAM,KAAK,CAAC,CAAA,gBAAA,EAAmB,OAAO,CAAA,CAAE,CAAC;AAC7E,IAAA,MAAM,KAAK,GAAG,UAAU,CAAC,gBAAgB;AACzC,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,MAAM,KAAK,CAAC,mDAAmD,CAAC;AAC5E,IAAA,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK;AACvC,IAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACpB,IAAA,MAAM,EAAE,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;AACrF,IAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMO,MAAM,oBAAoB,GAAG,IAAI,OAAO,EAAqB;AAKpE,MAAM,cAAc,GAAG,CAAwB,YAAmB,KAAI;IACpE,MAAM,QAAQ,GAGT,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;AAC3B,QAAA,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ;AAC5D,KAAC;AACD,IAAA,MAAM,QAAQ,GAET,CAAC,EAAE,QAAQ,EAAE,KAAI;AACpB,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,QAA0B,CAAC;AACpD,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB,KAAC;AACD,IAAA,oBAAoB,CAAC,GAAG,CAAC,QAA0B,EAAE,YAAY,CAAC;IAClE,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC;AACzC,CAAC;AAeK,SAAU,aAAa,CAAC,YAAkB,EAAA;AAC9C,IAAA,OAAO,cAAc,CAAC,YAAY,CAAC;AACrC;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAIa,SAAS,GAAG,CAAC,GAAQ,EAAE,GAAQ,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE,GAAG;;AC3B3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAyBa,KAAK,CAAA;;AAGhB,IAAA,UAAU;AAEF,IAAA,MAAM;IACN,MAAM,GAAc,EAAE;AACtB,IAAA,MAAM;IACN,SAAS,GAAuB,EAAE;AAClC,IAAA,MAAM;IACN,MAAM,GAAG,IAAI;AACb,IAAA,QAAQ,GAAG,IAAI,GAAG,EAA8C;;IAGxE,cAAc,GAAG,CAAC;AACV,IAAA,cAAc;;IAGtB,WAAY,CAAA,SAAwB,EAAE,KAAmB,EAAA;AACvD,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;;AAIrB,IAAA,iBAAiB,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;AACnD,QAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC;QAC1C,IAAI,KAAK,YAAY,aAAa;YAAE,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,UAAU;YAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9G,QAAA,MAAM,KAAK,CAAC,CAAA,EAAG,KAAK,CAAA,0BAAA,CAA4B,CAAC;;AAGnD,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI;;AAG7B,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;AAGpB,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG;;AAG5B,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,IAAI,EAAE;;AAG1B,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;AAGvB,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;;IAIpB,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;;;AAItB,IAAA,cAAc,CAAC,MAAuD,EAAA;AAC5E,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI;AAC9C,YAAA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;YAC3C,OAAO,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI;AAC7C,SAAC,CAAC;;;AAIJ,IAAA,aAAa,CAAC,OAMb,EAAA;AACC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC;AAAE,YAAA,OAAO,KAAK;AAC3E,QAAA,IAAI;YACF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU;AAC/C,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;AAC7G,YAAA,IAAI,QAA4B;AAChC,YAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,YAAY,iBAAiB,EAAE;gBACnE,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;;AAC5C,iBAAA,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AACrC,gBAAA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK;gBACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;AAAE,oBAAA,IAAI,CAAC,cAAc,IAAI,CAAC;AACpE,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;gBAC3B,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAY,CAAC,CAAC;;AAChD,iBAAA,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBAC7B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,aAAa,CAAC;oBACnD,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1B,oBAAA,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,IAAI,CAAC,MAAM;oBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,YAAY,EAAE,OAAO,CAAC,YAAY;AACnC,iBAAA,EAAE,CAAC,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACjD,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK;AACzB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7F,gBAAA,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;;iBACtC;AACL,gBAAA,MAAM,KAAK,CAAC,CAAA,kBAAA,EAAqB,IAAI,CAAA,CAAE,CAAC;;YAE1C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;AAC/C,gBAAA,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAI;AACpB,oBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;wBAAE,OAAO,GAAG,KAAK,GAAG;AAC1D,oBAAA,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,YAAY,KAAK;wBAAE,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;AAC9F,oBAAA,OAAO,KAAK;iBACb;AACF,aAAA,CAAC;YACF,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC;YACvC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;AACrE,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS;AACvB,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE;AAChD,gBAAA,IAAI,EAAE,IAAI,YAAY,KAAK,CAAC;oBAAE;gBAC9B,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC;oBAAE;AACrC,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;AAAE,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;gBACvF,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU;;;QAE1C,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;YACnB,CAAC,YAAW;AACV,gBAAA,IAAI;AACF,oBAAA,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;AAC9D,oBAAA,IAAI,CAAC,MAAM;AAAE,wBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACjC,oBAAA,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;wBAAE,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;;gBACzG,OAAO,CAAC,EAAE;AACV,oBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;;aAEnB,GAAG;;gBACI;AACR,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAErB,QAAA,OAAO,IAAI;;AAEd;;AC5LD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAIa,YAAY,CAAA;IAEf,UAAU,GAAiD,EAAE;IAErE,QAAQ,CAAC,KAAa,EAAE,QAAiD,EAAA;QACvE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE;AAChE,QAAA,MAAM,SAAS,GAAG,CAAC,GAAG,IAAW,KAAK,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,OAAO;YACL,MAAM,EAAE,MAAK;gBACX,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;aAChF;SACF;;AAGH,IAAA,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,OAAM,QAAQ,KAAG;AAC/C,YAAA,IAAI;AACF,gBAAA,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC;;YACvB,OAAO,CAAC,EAAE;AACV,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;;AAEpB,SAAC,CAAC;;AAEL;;ACnDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAaa,aAAa,GAAsC,CAAC,EAAE,QAAQ,EAAE,KAAI;AAC/E,IAAA,OAAO,QAAQ;AACjB;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAca,aAAa,GAAsC,CAAC,EAAE,QAAQ,EAAE,KAAI;AAC/E,IAAA,OAAO,QAAQ;AACjB;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA,MAAM,SAAS,CAAA;AAEb,IAAA,QAAQ;AAER,IAAA,YAAY;AACZ,IAAA,SAAS;IACT,KAAK,GAAiB,EAAE;IACxB,KAAK,GAAY,EAAE;AACnB,IAAA,IAAI;AAEJ,IAAA,OAAO,GAAG,IAAI,OAAO,EAAgB;AAErC,IAAA,WAAA,CAAY,OAMX,EAAA;AACC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK;QAC9B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,GAAG,EAAE;;AAExD;AAEM,MAAM,UAAU,GAAG,IAAI,MAAA;;AAG5B,IAAA,SAAS,GAAG,IAAI,OAAO,EAAe;;AAGtC,IAAA,iBAAiB;AAEjB,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB;;AAG/B,IAAA,SAAS,CAAC,IAAS,EAAA;AACjB,QAAA,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAW,CAAC;;IAG9C,aAAa,CACX,OAAmD,EACnD,QAAiC,EAAA;AAEjC,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC;AACpC,YAAA,UAAU,CAAC,iBAAiB,GAAG,KAAK;AACpC,YAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;;gBACd;AACR,YAAA,UAAU,CAAC,iBAAiB,GAAG,SAAS;;;IAI5C,WAAW,CAAC,SAAwB,EAAE,QAAwB,EAAA;AAC5D,QAAA,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE;QAChC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;QACxC,MAAM,MAAM,GAAG,aAAS;YACtB,MAAM,KAAK,GAML,CAAC;AACL,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,aAAa,EAAE,EAAE;oBACjB,YAAY,EAAE,IAAI,GAAG,EAAE;AACxB,iBAAA,CAAC;AACF,YAAA,IAAI,IAAI;AACR,YAAA,OAAO,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE;AAE3B,gBAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,IAAI;gBACxE,MAAM;oBACJ,IAAI;oBACJ,KAAK;AACL,oBAAA,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC;wBAC1B,QAAQ;wBACR,KAAK;wBACL,aAAa;wBACb,aAAa;wBACb;qBACD,CAAC;iBACH;gBAED,IAAI,aAAa,GAAG,YAAY;gBAChC,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnC,oBAAA,aAAa,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC;AACtC,oBAAA,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;AAC3B,wBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;wBACvB,KAAK,EAAE,IAAI,CAAC,cAAc;AAC1B,wBAAA,IAAI,EAAE,IAAI;AACX,qBAAA,CAAC;;gBAGJ,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,KAAK,aAAa,GAAG,CAAC,GAAG,aAAa,EAAE,IAAI,CAAC,GAAG,aAAa;AAC7F,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,KAAK,aAAa,GAAG,IAAI,GAAG,aAAa;gBAEzE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC;AAC/B,gBAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AAChC,oBAAA,IAAI,IAAI,YAAY,KAAK,EAAE;wBACzB,KAAK,CAAC,IAAI,CAAC;AACT,4BAAA,IAAI,EAAE,IAAI;AACV,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,aAAa,EAAE,cAAc;AAC7B,4BAAA,aAAa,EAAE,cAAc;AAC7B,4BAAA,YAAY,EAAE,aAAa;AAC5B,yBAAA,CAAC;;;;AAIV,SAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-DH_D-jro.js","sources":["../../../src/core/hooks/context.ts","../../../src/core/types/context.ts","../../../src/core/reconciler/utils.ts","../../../src/core/reconciler/vnode.ts","../../../src/core/reconciler/events.ts","../../../src/core/types/props.ts","../../../src/core/types/error.ts","../../../src/core/reconciler/state.ts"],"sourcesContent":["//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { _contextDefaultValue, Context } from '../types/context';\nimport { reconciler } from '../reconciler/state';\n\n/**\n * A hook that retrieves the current value of a context and optionally applies\n * a selector function to transform the context value. This hook ensures that the component\n * subscribes to the context and re-renders when the context value changes.\n *\n * @template T - The type of the context value.\n * @template R - The type of the transformed value returned by the selector.\n * @param context - The context object to retrieve the value from.\n * @param selector - An optional selector function to transform the context value.\n * Defaults to an identity function.\n * @returns - The current value of the context, optionally transformed by the selector.\n *\n * @throws - Throws an error if the provided context is invalid or if the hook\n * is used outside of a render function.\n *\n * @example\n * const MyContext = createContext({ user: null });\n * \n * function MyComponent() {\n * const user = useContext(MyContext, context => context.user);\n * return <div>{user ? `Hello, ${user.name}` : 'Hello, Guest'}</div>;\n * }\n */\nexport const useContext = <T, R = T>(\n context: Context<T>,\n selector: (state: T) => R = v => v as any\n) => {\n if (!reconciler.isContext(context)) throw Error(`Invalid type of ${context}`);\n const state = reconciler.currentHookState;\n if (!state) throw Error('useContext must be used within a render function.');\n const { contextValue, listens } = state;\n listens.add(context);\n const { value = _contextDefaultValue.get(context) } = contextValue.get(context) ?? {};\n return selector(value);\n}\n","//\n// context.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { ComponentType, ElementNode } from './common';\nimport { useContext } from '../hooks/context';\n\nexport const _contextDefaultValue = new WeakMap<Context<any>, any>();\n\nexport type Context<Value> = ReturnType<typeof _createContext<Value>>;\nexport type ContextType<C extends Context<any>> = C extends Context<infer T> ? T : never;\n\nconst _createContext = <Value extends unknown>(defaultValue: Value) => {\n const _context: ComponentType<{\n value: Value;\n children?: ElementNode | ((value: Value) => ElementNode);\n }> = ({ value, children }) => {\n return _.isFunction(children) ? children(value) : children;\n };\n const Consumer: ComponentType<{\n children: (value: Value) => ElementNode;\n }> = ({ children }) => {\n const value = useContext(_context as Context<Value>);\n return children(value);\n };\n _contextDefaultValue.set(_context as Context<Value>, defaultValue);\n return _.assign(_context, { Consumer });\n};\n\n/**\n * Creates a new context object with an optional default value.\n * \n * A context object allows you to share a value across a component tree\n * without explicitly passing it as a prop to every level.\n * \n * @template Value - The type of the value to be stored in the context.\n * @param - The default value for the context.\n * @returns A context object that can be used to provide and consume the value.\n */\nexport function createContext<Value>(defaultValue: Value): Context<Value>;\nexport function createContext<Value = undefined>(): Context<Value | undefined>;\n\nexport function createContext(defaultValue?: any) {\n return _createContext(defaultValue);\n}\n","//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\n\nexport const equalDeps = (lhs: any, rhs: any) => _.isEqual(lhs ?? null, rhs);\n","//\n// vnode.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { ComponentNode, NativeElementType } from '../types/component';\nimport { Context } from '../types/context';\nimport { reconciler } from './state';\nimport { myersSync } from 'myers.js';\nimport { EventEmitter } from './events';\nimport { equalDeps } from './utils';\nimport { _Renderer } from '../renderer';\nimport { PropsType } from '../types/runtime';\n\nexport type VNodeState = {\n hook: string;\n deps: any;\n data?: any;\n mount?: () => () => void;\n};\n\nexport type _ContextState = {\n value: any;\n state: number;\n node: VNode;\n};\n\nexport class VNode {\n\n /** @internal */\n _component: ComponentNode;\n\n private _event: EventEmitter;\n private _props: PropsType = {};\n private _error?: any;\n private _children: (VNode | string)[] = [];\n private _state?: VNodeState[];\n private _dirty = true;\n private _listens = new Map<Context<any>, Omit<_ContextState, 'value'>>();\n\n /** @internal */\n _content_state = 0;\n private _content_value?: any;\n\n /** @internal */\n constructor(component: ComponentNode, event: EventEmitter) {\n this._component = component;\n this._event = event;\n }\n\n /** @internal */\n _resolve_children(child: any): (VNode | string)[] {\n if (_.isBoolean(child) || _.isNil(child)) return [];\n if (_.isString(child)) return [child];\n if (_.isNumber(child)) return [`${child}`];\n if (child instanceof ComponentNode) return [new VNode(child, this._event)];\n if (_.isArrayLikeObject(child)) return _.flatMap(child, x => this._resolve_children(x));\n if (typeof child[Symbol.iterator] === 'function') return _.flatMap([...child], x => this._resolve_children(x));\n throw Error(`${child} are not valid as a child.`);\n }\n\n get type() {\n return this._component.type;\n }\n\n get props() {\n return this._props;\n }\n\n get key() {\n return this._component.key;\n }\n\n get state() {\n return this._state ?? [];\n }\n\n get children() {\n return this._children;\n }\n\n get error() {\n return this._error;\n }\n\n /** @internal */\n _setDirty() {\n this._dirty = true;\n this._event.emit('onchange');\n }\n\n /** @internal */\n private _check_context(values: Map<Context<any>, Omit<_ContextState, 'value'>>) {\n return this._listens.entries().every(([k, v]) => {\n const { state, node } = values.get(k) ?? {};\n return state === v.state && node === v.node;\n });\n }\n\n /** @internal */\n _updateIfNeed(options: {\n renderer: _Renderer<any>;\n stack: VNode[];\n propsProvider: VNode[];\n errorBoundary?: VNode;\n contextValue: Map<Context<any>, _ContextState>;\n }) {\n if (!this._dirty && this._check_context(options.contextValue)) return false;\n try {\n const { type, props: _props } = this._component;\n const props = options.propsProvider.reduceRight((p, node) => node.props.callback({ type, props: p }), _props);\n let children: (VNode | string)[];\n if (_.isString(type) || type.prototype instanceof NativeElementType) {\n children = this._resolve_children(props.children);\n } else if (reconciler.isContext(type)) {\n const { value } = props;\n if (!equalDeps(this._content_value, value)) this._content_state += 1;\n this._content_value = value;\n children = this._resolve_children(type(props as any));\n } else if (_.isFunction(type)) {\n const { rendered, state } = reconciler.withHookState({\n renderer: options.renderer,\n node: this,\n state: this._state,\n stack: options.stack,\n contextValue: options.contextValue,\n }, (state) => ({ rendered: type(props), state }));\n this._state = state.state;\n this._listens = new Map(options.contextValue.entries().filter(([k]) => state.listens.has(k)));\n children = this._resolve_children(rendered);\n } else {\n throw Error(`Invalid node type ${type}`);\n }\n const diff = myersSync(this._children, children, {\n compare: (lhs, rhs) => {\n if (_.isString(lhs) && _.isString(rhs)) return lhs === rhs;\n if (lhs instanceof VNode && rhs instanceof VNode) return lhs._component._equal(rhs._component);\n return false;\n },\n });\n this._props = _.omit(props, 'children');\n this._children = _.flatMap(diff, x => x.equivalent ?? x.insert ?? []);\n this._error = undefined;\n for (const [i, item] of this._children.entries()) {\n if (!(item instanceof VNode)) continue;\n if (!(children[i] instanceof VNode)) continue;\n if (!equalDeps(item._component.props, children[i]._component.props)) item._dirty = true;\n item._component = children[i]._component;\n }\n } catch (error) {\n this._props = {};\n this._children = [];\n this._error = error;\n (async () => {\n try {\n const { onError, silent } = options.errorBoundary?.props ?? {};\n if (!silent) console.error(error);\n if (_.isFunction(onError)) await onError(error, this._component, _.map(options.stack, x => x._component));\n } catch (e) {\n console.error(e);\n }\n })();\n } finally {\n this._dirty = false;\n }\n return true;\n }\n}\n","//\n// events.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\n\nexport class EventEmitter {\n\n private _listeners: Record<string, ((...args: any[]) => void)[]> = {};\n\n register(event: string, callback: (event: string, ...args: any[]) => void) {\n if (_.isNil(this._listeners[event])) this._listeners[event] = [];\n const _callback = (...args: any[]) => callback(event, ...args);\n this._listeners[event].push(_callback);\n return {\n remove: () => {\n this._listeners[event] = _.filter(this._listeners[event], x => x !== _callback);\n },\n };\n }\n\n emit(event: string, ...args: any[]) {\n this._listeners[event]?.forEach(async callback => {\n try {\n await callback(...args)\n } catch (e) {\n console.error(e);\n }\n });\n }\n}\n","//\n// props.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { ComponentType, PropsWithChildren } from './common';\nimport { NativeElementType } from './component';\nimport { _ElementType, PropsType } from './runtime';\n\ntype PropsProviderProps = PropsWithChildren<{\n callback: (v: {\n type: _ElementType | typeof NativeElementType,\n props: PropsType\n }) => PropsType | undefined | null;\n}>;\n\nexport const PropsProvider: ComponentType<PropsProviderProps> = ({ children }) => {\n return children;\n}\n","//\n// error.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { ComponentType, PropsWithChildren } from './common';\nimport { ComponentNode } from './component';\n\ntype ErrorBoundaryProps = PropsWithChildren<{\n silent?: boolean;\n onError?: (\n error: any,\n component: ComponentNode,\n stack: ComponentNode[],\n ) => void;\n}>;\n\nexport const ErrorBoundary: ComponentType<ErrorBoundaryProps> = ({ children }) => {\n return children;\n}\n","//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { ComponentNode } from '../types/component';\nimport { _contextDefaultValue, Context } from '../types/context';\nimport { _ContextState, VNode, VNodeState } from './vnode';\nimport { EventEmitter } from './events';\nimport { PropsProvider } from '../types/props';\nimport { ErrorBoundary } from '../types/error';\nimport { _Renderer } from '../renderer';\n\nclass HookState {\n\n renderer: _Renderer<any>;\n\n contextValue: Map<Context<any>, _ContextState>;\n prevState?: VNodeState[];\n state: VNodeState[] = [];\n stack: VNode[] = [];\n node?: VNode;\n\n listens = new WeakSet<Context<any>>();\n\n constructor(options: {\n renderer: _Renderer<any>;\n node: VNode;\n stack: VNode[];\n state?: VNodeState[];\n contextValue: Map<Context<any>, _ContextState>;\n }) {\n this.renderer = options.renderer;\n this.node = options.node;\n this.stack = options.stack;\n this.prevState = options.state;\n this.contextValue = options.contextValue ?? new Map();\n }\n}\n\nexport const reconciler = new class {\n\n /** @internal */\n _registry = new WeakMap<any, string>();\n\n /** @internal */\n _currentHookState: HookState | undefined;\n\n get currentHookState() {\n return this._currentHookState;\n }\n\n isContext(type: any): type is Context<any> {\n return _contextDefaultValue.has(type as any);\n }\n\n withHookState<R = void>(\n options: ConstructorParameters<typeof HookState>[0],\n callback: (state: HookState) => R,\n ) {\n try {\n const state = new HookState(options);\n reconciler._currentHookState = state;\n return callback(state);\n } finally {\n reconciler._currentHookState = undefined;\n }\n }\n\n buildVNodes(component: ComponentNode, renderer: _Renderer<any>) {\n const event = new EventEmitter();\n const root = new VNode(component, event);\n const excute = function* () {\n const items: {\n node: VNode;\n stack: VNode[];\n propsProvider: VNode[];\n errorBoundary?: VNode;\n contextValue: Map<Context<any>, _ContextState>;\n }[] = [{\n node: root,\n stack: [],\n propsProvider: [],\n contextValue: new Map(),\n }];\n let item;\n while (item = items.shift()) {\n\n const { node, stack, propsProvider, errorBoundary, contextValue } = item;\n yield {\n node,\n stack,\n updated: node._updateIfNeed({\n renderer,\n stack,\n propsProvider,\n errorBoundary,\n contextValue\n }),\n };\n\n let _contextValue = contextValue;\n if (reconciler.isContext(node.type)) {\n _contextValue = new Map(_contextValue);\n _contextValue.set(node.type, {\n value: node.props.value,\n state: node._content_state,\n node: node,\n });\n }\n\n const _propsProvider = node.type === PropsProvider ? [...propsProvider, node] : propsProvider;\n const _errorBoundary = node.type === ErrorBoundary ? node : errorBoundary;\n\n const _stack = [...stack, node];\n for (const item of node.children) {\n if (item instanceof VNode) {\n items.push({\n node: item,\n stack: _stack,\n propsProvider: _propsProvider,\n errorBoundary: _errorBoundary,\n contextValue: _contextValue,\n });\n }\n }\n }\n };\n return { node: root, event, excute };\n }\n};\n"],"names":["ComponentNode","NativeElementType","myersSync"],"mappings":"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"}
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import _ from 'lodash';
|
|
2
|
-
import { _ as _useMemo, d as _useEffect } from './sync-Cq3pCYO3.mjs';
|
|
3
|
-
|
|
4
|
-
//
|
|
5
|
-
// debounce.ts
|
|
6
|
-
//
|
|
7
|
-
// The MIT License
|
|
8
|
-
// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.
|
|
9
|
-
//
|
|
10
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
12
|
-
// in the Software without restriction, including without limitation the rights
|
|
13
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
15
|
-
// furnished to do so, subject to the following conditions:
|
|
16
|
-
//
|
|
17
|
-
// The above copyright notice and this permission notice shall be included in
|
|
18
|
-
// all copies or substantial portions of the Software.
|
|
19
|
-
//
|
|
20
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
26
|
-
// THE SOFTWARE.
|
|
27
|
-
//
|
|
28
|
-
const debounce = (callback, settings) => {
|
|
29
|
-
const { wait, ...options } = settings;
|
|
30
|
-
return _.debounce(callback, wait, {
|
|
31
|
-
...options,
|
|
32
|
-
leading: 'leading' in options ? !!options.leading : true,
|
|
33
|
-
trailing: 'trailing' in options ? !!options.trailing : true,
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
const asyncDebounce = (func, settings) => {
|
|
37
|
-
let preflight;
|
|
38
|
-
const debounced = debounce(async (resolve, ...args) => {
|
|
39
|
-
const result = func(...args);
|
|
40
|
-
if (_.isFunction(resolve))
|
|
41
|
-
resolve(result);
|
|
42
|
-
return result;
|
|
43
|
-
}, settings);
|
|
44
|
-
return (...args) => {
|
|
45
|
-
if (_.isNil(preflight)) {
|
|
46
|
-
preflight = new Promise(r => debounced(r, ...args));
|
|
47
|
-
return preflight;
|
|
48
|
-
}
|
|
49
|
-
return debounced(undefined, ...args) ?? preflight;
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* A hook that creates a debounced version of a function.
|
|
54
|
-
* The debounced function delays invoking the callback until after
|
|
55
|
-
* the specified wait time has elapsed since the last time it was called.
|
|
56
|
-
*
|
|
57
|
-
* This is useful for optimizing performance in scenarios where frequent
|
|
58
|
-
* function calls (e.g., during user input or window resizing) can be expensive.
|
|
59
|
-
*
|
|
60
|
-
* @template T The type of the callback function.
|
|
61
|
-
* @param callback The function to debounce.
|
|
62
|
-
* @param settings Configuration options for debouncing, including:
|
|
63
|
-
* - `wait` (number): The number of milliseconds to delay.
|
|
64
|
-
* - Other lodash debounce options such as `leading` and `trailing`.
|
|
65
|
-
* @returns A debounced version of the callback function.
|
|
66
|
-
*/
|
|
67
|
-
const useDebounce = (callback, settings) => {
|
|
68
|
-
const store = _useMemo('useDebounce', () => {
|
|
69
|
-
const store = {
|
|
70
|
-
current: callback,
|
|
71
|
-
stable: debounce(((...args) => store.current(...args)), settings),
|
|
72
|
-
};
|
|
73
|
-
return store;
|
|
74
|
-
}, null);
|
|
75
|
-
store.current = callback;
|
|
76
|
-
return store.stable;
|
|
77
|
-
};
|
|
78
|
-
/**
|
|
79
|
-
* A hook that creates a debounced version of an asynchronous function.
|
|
80
|
-
* The debounced function delays invoking the callback until after
|
|
81
|
-
* the specified wait time has elapsed since the last time it was called.
|
|
82
|
-
*
|
|
83
|
-
* This is particularly useful for scenarios where frequent API calls
|
|
84
|
-
* or other asynchronous operations need to be throttled to improve performance.
|
|
85
|
-
*
|
|
86
|
-
* @template T The type of the asynchronous callback function.
|
|
87
|
-
* @param callback The asynchronous function to debounce.
|
|
88
|
-
* @param settings Configuration options for debouncing, including:
|
|
89
|
-
* - `wait` (number): The number of milliseconds to delay.
|
|
90
|
-
* - Other lodash debounce options such as `leading` and `trailing`.
|
|
91
|
-
* @returns A debounced version of the asynchronous callback function.
|
|
92
|
-
*/
|
|
93
|
-
const useAsyncDebounce = (callback, settings) => {
|
|
94
|
-
const store = _useMemo('useAsyncDebounce', () => {
|
|
95
|
-
const store = {
|
|
96
|
-
current: callback,
|
|
97
|
-
stable: asyncDebounce(((...args) => store.current(...args)), settings),
|
|
98
|
-
};
|
|
99
|
-
return store;
|
|
100
|
-
}, null);
|
|
101
|
-
store.current = callback;
|
|
102
|
-
return store.stable;
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
//
|
|
106
|
-
// memo.ts
|
|
107
|
-
//
|
|
108
|
-
// The MIT License
|
|
109
|
-
// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.
|
|
110
|
-
//
|
|
111
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
112
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
113
|
-
// in the Software without restriction, including without limitation the rights
|
|
114
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
115
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
116
|
-
// furnished to do so, subject to the following conditions:
|
|
117
|
-
//
|
|
118
|
-
// The above copyright notice and this permission notice shall be included in
|
|
119
|
-
// all copies or substantial portions of the Software.
|
|
120
|
-
//
|
|
121
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
122
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
123
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
124
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
125
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
126
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
127
|
-
// THE SOFTWARE.
|
|
128
|
-
//
|
|
129
|
-
function useRef(initialValue) {
|
|
130
|
-
return _useMemo('useRef', () => ({ current: initialValue }), null);
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Associates a reference with a value created by an initializer function.
|
|
134
|
-
*
|
|
135
|
-
* @template T The type of the reference.
|
|
136
|
-
* @template R The type of the value created by the initializer function.
|
|
137
|
-
* @param ref A reference object or a callback function to receive the value.
|
|
138
|
-
* @param init A function that initializes and returns the value to associate with the reference.
|
|
139
|
-
* @param deps An optional dependency array. The initializer function is re-executed when the dependencies change.
|
|
140
|
-
*/
|
|
141
|
-
const useRefHandle = (ref, init, deps) => _useEffect('useRefHandle', () => {
|
|
142
|
-
try {
|
|
143
|
-
if (ref) {
|
|
144
|
-
const _ref = init();
|
|
145
|
-
if (typeof ref === 'function')
|
|
146
|
-
ref(_ref);
|
|
147
|
-
else if (typeof ref === 'object')
|
|
148
|
-
ref.current = _ref;
|
|
149
|
-
}
|
|
150
|
-
return () => void 0;
|
|
151
|
-
}
|
|
152
|
-
catch (e) {
|
|
153
|
-
console.error(e);
|
|
154
|
-
return () => void 0;
|
|
155
|
-
}
|
|
156
|
-
}, deps);
|
|
157
|
-
|
|
158
|
-
//
|
|
159
|
-
// memo.ts
|
|
160
|
-
//
|
|
161
|
-
// The MIT License
|
|
162
|
-
// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.
|
|
163
|
-
//
|
|
164
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
165
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
166
|
-
// in the Software without restriction, including without limitation the rights
|
|
167
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
168
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
169
|
-
// furnished to do so, subject to the following conditions:
|
|
170
|
-
//
|
|
171
|
-
// The above copyright notice and this permission notice shall be included in
|
|
172
|
-
// all copies or substantial portions of the Software.
|
|
173
|
-
//
|
|
174
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
175
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
176
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
177
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
178
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
179
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
180
|
-
// THE SOFTWARE.
|
|
181
|
-
//
|
|
182
|
-
function useState(initialState) {
|
|
183
|
-
const { value, setValue } = _useMemo('useState', ({ node }) => {
|
|
184
|
-
const state = {
|
|
185
|
-
value: _.isFunction(initialState) ? initialState() : initialState,
|
|
186
|
-
setValue: (dispatch) => {
|
|
187
|
-
state.value = _.isFunction(dispatch) ? dispatch(state.value) : dispatch;
|
|
188
|
-
node?._setDirty();
|
|
189
|
-
},
|
|
190
|
-
};
|
|
191
|
-
return state;
|
|
192
|
-
}, null);
|
|
193
|
-
return [value, setValue];
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
export { useDebounce as a, useRef as b, useRefHandle as c, useState as d, useAsyncDebounce as u };
|
|
197
|
-
//# sourceMappingURL=state-zydBhS8M.mjs.map
|