@meonode/ui 0.3.15 → 0.3.17-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/CHANGELOG.md +41 -16
- package/dist/components/react.node.d.ts +20 -0
- package/dist/components/react.node.d.ts.map +1 -1
- package/dist/components/react.node.js +17 -1
- package/dist/constants/common.const.d.ts +1 -0
- package/dist/constants/common.const.d.ts.map +1 -1
- package/dist/core.node.d.ts +82 -34
- package/dist/core.node.d.ts.map +1 -1
- package/dist/core.node.js +117 -54
- package/dist/helper/node.helper.d.ts +2 -2
- package/dist/helper/node.helper.d.ts.map +1 -1
- package/dist/helper/react-is.helper.d.ts.map +1 -1
- package/dist/helper/react-is.helper.js +1 -1
- package/dist/helper/theme.helper.d.ts +7 -13
- package/dist/helper/theme.helper.d.ts.map +1 -1
- package/dist/helper/theme.helper.js +14 -41
- package/dist/hook/usePortal.d.ts +4 -0
- package/dist/hook/usePortal.d.ts.map +1 -1
- package/dist/hook/usePortal.js +4 -1
- package/dist/hook/useTheme.d.ts +1 -1
- package/dist/hook/useTheme.js +1 -1
- package/dist/node.type.d.ts +11 -3
- package/dist/node.type.d.ts.map +1 -1
- package/package.json +5 -4
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,31 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.3.17] - 2025-11-12
|
|
9
|
+
|
|
10
|
+
### Perf
|
|
11
|
+
- **core**: implement iterative renderer and prop caching ([`8a3a264`](https://github.com/l7aromeo/meonode-ui/commit/8a3a264be68bd041b6340636f5f7ee2b0caa63ff))
|
|
12
|
+
- **helper**: refactor theme resolution logic for improved performance and cache correctness ([`9614cb8`](https://github.com/l7aromeo/meonode-ui/commit/9614cb8d2aeae0d9bd2f9cf3edd51c022cd93273))
|
|
13
|
+
|
|
14
|
+
### Chore
|
|
15
|
+
- fix typo in JSDoc comment for useTheme hook ([`de0ddd9`](https://github.com/l7aromeo/meonode-ui/commit/de0ddd9a6308f4a76b6ad843a6139d42bd3fcf53))
|
|
16
|
+
- add deprecation notice to usePortal hook for future removal ([`f8a2923`](https://github.com/l7aromeo/meonode-ui/commit/f8a29230cad3962addb8cf28ed3538e6de236181))
|
|
17
|
+
- update PortalProps type definition to provide a default type parameter ([`de73ba5`](https://github.com/l7aromeo/meonode-ui/commit/de73ba5b9d9dd51637b24b0309d681309d9338ae))
|
|
18
|
+
- update isNodeInstance type guard to use BaseNode instead of NodeInstance ([`2c69d05`](https://github.com/l7aromeo/meonode-ui/commit/2c69d05b3d1593a976e439ca7404696b781e5012))
|
|
19
|
+
- rename jest.config.mjs to jest.config.ts and update configuration for TypeScript support ([`a3213eb`](https://github.com/l7aromeo/meonode-ui/commit/a3213eb5b91a55364cb4f5362005bc2a46934de5))
|
|
20
|
+
- **scripts**: increase stack size for jest test and fix build commands ([`e046cdf`](https://github.com/l7aromeo/meonode-ui/commit/e046cdf397e2cf418e09e149a9e0cf1e48f3d926))
|
|
21
|
+
- update tsconfig.json to exclude dist and node_modules directories ([`eeb9577`](https://github.com/l7aromeo/meonode-ui/commit/eeb957722ab7a26cbe59047c068f9955b082502e))
|
|
22
|
+
- update tsconfig.json with enhanced compiler options and path mappings for better development experience ([`89bc1a4`](https://github.com/l7aromeo/meonode-ui/commit/89bc1a42c23f015acfed1bcb860ebb6a4c684fc1))
|
|
23
|
+
|
|
24
|
+
## [0.3.16] - 2025-11-05
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- **tests**: add tests for Fragment, Suspense, and Activity components to verify styling prop handling ([`2af386f`](https://github.com/l7aromeo/meonode-ui/commit/2af386f))
|
|
28
|
+
- **core**: enhance NodeProps type to conditionally include built-in React components ([`3b8a4cb`](https://github.com/l7aromeo/meonode-ui/commit/3b8a4cb))
|
|
29
|
+
- **react**: add REACT_ACTIVITY_TYPE to react-is helper ([`e91e48f`](https://github.com/l7aromeo/meonode-ui/commit/e91e48f))
|
|
30
|
+
- **core**: export NO_STYLE_TAGS type for better type inference ([`a6db6e8`](https://github.com/l7aromeo/meonode-ui/commit/a6db6e8))
|
|
31
|
+
- **react**: add Fragment component to create a container without extra DOM elements ([`d5e376a`](https://github.com/l7aromeo/meonode-ui/commit/d5e376a))
|
|
32
|
+
|
|
8
33
|
## [0.3.15] - 2025-11-04
|
|
9
34
|
|
|
10
35
|
### Added
|
|
@@ -35,7 +60,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
35
60
|
|
|
36
61
|
### Changed
|
|
37
62
|
- **chore**: update dependencies in package.json and yarn.lock ([`0c0ced6`](https://github.com/l7aromeo/meonode-ui/commit/0c0ced68662bb701634d49dc79da86e4ddce5392))
|
|
38
|
-
- **chore**: remove 'use strict' directive from multiple files ([`17d79dc`](https://github.com/l7aromeo/meonode-ui/commit/17d79dcb105a8c2062695071c3f587f6db9a5711))
|
|
63
|
+
- **chore**: remove \'use strict\' directive from multiple files ([`17d79dc`](https://github.com/l7aromeo/meonode-ui/commit/17d79dcb105a8c2062695071c3f587f6db9a5711))
|
|
39
64
|
|
|
40
65
|
### Docs
|
|
41
66
|
- **docs**: update Node.js version requirement in CONTRIBUTING.md ([`4c577c3`](https://github.com/l7aromeo/meonode-ui/commit/4c577c3e23294bdc188cda5b14375af1cb967888))
|
|
@@ -136,7 +161,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
136
161
|
- **feat(theme):** use React Context for theme propagation
|
|
137
162
|
|
|
138
163
|
**Before**:
|
|
139
|
-
|
|
164
|
+
```typescript
|
|
140
165
|
import { Div } from '@meonode/ui';
|
|
141
166
|
|
|
142
167
|
const App = () => {
|
|
@@ -147,10 +172,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
147
172
|
children: 'Hello world!',
|
|
148
173
|
});
|
|
149
174
|
};
|
|
150
|
-
|
|
175
|
+
```
|
|
151
176
|
|
|
152
177
|
**After**:
|
|
153
|
-
|
|
178
|
+
```typescript
|
|
154
179
|
import { Div, ThemeProvider } from '@meonode/ui';
|
|
155
180
|
|
|
156
181
|
const App = () => {
|
|
@@ -173,7 +198,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
173
198
|
],
|
|
174
199
|
});
|
|
175
200
|
};
|
|
176
|
-
|
|
201
|
+
```
|
|
177
202
|
|
|
178
203
|
## [0.2.21] - 2025-09-23
|
|
179
204
|
|
|
@@ -233,7 +258,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
233
258
|
|
|
234
259
|
- **feat(portal)**: use `usePortal` hook to make the portal reactive to state changes
|
|
235
260
|
|
|
236
|
-
|
|
261
|
+
```typescript
|
|
237
262
|
import { Button, Div, Node, Portal, type PortalProps } from '@meonode/ui';
|
|
238
263
|
import { usePortal } from '@meonode/ui';
|
|
239
264
|
import { useState } from 'react';
|
|
@@ -272,7 +297,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
272
297
|
],
|
|
273
298
|
}).render();
|
|
274
299
|
};
|
|
275
|
-
|
|
300
|
+
```
|
|
276
301
|
|
|
277
302
|
## [0.2.17] - 2025-09-14
|
|
278
303
|
|
|
@@ -384,22 +409,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
384
409
|
- **core**: add top-level `render` function for a cleaner and simpler API when mounting a Meonode instance to the DOM.
|
|
385
410
|
This abstracts away the need to manually use `react-dom/client`.
|
|
386
411
|
- **Before**:
|
|
387
|
-
|
|
412
|
+
```typescript
|
|
388
413
|
import { createRoot } from 'react-dom/client';
|
|
389
414
|
import { Div } from '@meonode/ui';
|
|
390
415
|
|
|
391
416
|
const container = document.getElementById('root');
|
|
392
417
|
const root = createRoot(container);
|
|
393
418
|
root.render(Div({ children: 'Hello' }).render());
|
|
394
|
-
|
|
419
|
+
```
|
|
395
420
|
- **After**:
|
|
396
|
-
|
|
421
|
+
```typescript
|
|
397
422
|
import { Div } from '@meonode/ui';
|
|
398
423
|
import { render } from '@meonode/ui/client';
|
|
399
424
|
|
|
400
425
|
const container = document.getElementById('root');
|
|
401
426
|
render(Div({ children: 'Hello' }), container);
|
|
402
|
-
|
|
427
|
+
```
|
|
403
428
|
- **constants**: add `NO_STYLE_TAGS` array and `noStyleTagsSet` for quick lookup of tags that should not receive styles
|
|
404
429
|
|
|
405
430
|
### Enhanced
|
|
@@ -431,8 +456,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
431
456
|
- Simplifies and unifies the typing system for node factories (`createNode`, `createChildrenFirstNode`).
|
|
432
457
|
- Improves developer experience when working with prebuilt components:
|
|
433
458
|
- Example:
|
|
434
|
-
|
|
435
|
-
import { Div, Input } from '@meonode/ui'
|
|
459
|
+
```typescript
|
|
460
|
+
import { Div, Input } from '@meonode/ui'
|
|
436
461
|
|
|
437
462
|
// Add new props
|
|
438
463
|
Div<{ field: string }>({ field: 'Hello' })
|
|
@@ -441,7 +466,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
441
466
|
Input<{ onChange: (e: { target: { value: string } }) => void }>({
|
|
442
467
|
onChange: ({ target }) => console.log(target.value),
|
|
443
468
|
})
|
|
444
|
-
|
|
469
|
+
```
|
|
445
470
|
Extending prebuilt components is now safer and more predictable, with generic props always taking precedence when keys
|
|
446
471
|
overlap.
|
|
447
472
|
|
|
@@ -473,7 +498,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
473
498
|
### Added
|
|
474
499
|
|
|
475
500
|
- **core**: Exposed the original element via the created Node for easier access and debugging.
|
|
476
|
-
|
|
501
|
+
```typescript
|
|
477
502
|
import { createNode } from "@meonode/ui";
|
|
478
503
|
|
|
479
504
|
// Create a Node wrapping a 'div' element
|
|
@@ -481,7 +506,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
481
506
|
|
|
482
507
|
// Access the underlying element type
|
|
483
508
|
console.log(MyComp.element); // 'div'
|
|
484
|
-
|
|
509
|
+
```
|
|
485
510
|
|
|
486
511
|
## [0.2.3] - 2025-09-01
|
|
487
512
|
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A container that does not render any extra DOM element.
|
|
3
|
+
* @see {@link https://react.dev/reference/react/Fragment React Docs}
|
|
4
|
+
* @example
|
|
5
|
+
*
|
|
6
|
+
* ```typescript
|
|
7
|
+
* import { Fragment, Div, Span } from '@meonode/ui';
|
|
8
|
+
*
|
|
9
|
+
* Fragment({
|
|
10
|
+
* children: [
|
|
11
|
+
* Div('First Div'),
|
|
12
|
+
* Span('A Span inside Fragment'),
|
|
13
|
+
* Div('Second Div'),
|
|
14
|
+
* ],
|
|
15
|
+
* })
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare const Fragment: (<AdditionalProps extends Record<string, any> = Record<string, any>>(props?: import("../node.type").MergedProps<import("react").ExoticComponent<import("react").FragmentProps>, AdditionalProps> | undefined) => import("../node.type").NodeInstance<import("react").ExoticComponent<import("react").FragmentProps>>) & {
|
|
19
|
+
element: import("react").ExoticComponent<import("react").FragmentProps>;
|
|
20
|
+
};
|
|
1
21
|
/**
|
|
2
22
|
* Lets you hide and restore the UI and internal state of its children.
|
|
3
23
|
* @see {@link https://react.dev/reference/react/Activity React Docs}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.node.d.ts","sourceRoot":"","sources":["../../src/components/react.node.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ;;CAA2B,CAAA;AAEhD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ;;CAA2B,CAAA"}
|
|
1
|
+
{"version":3,"file":"react.node.d.ts","sourceRoot":"","sources":["../../src/components/react.node.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,QAAQ;;CAA2B,CAAA;AAEhD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ;;CAA2B,CAAA;AAEhD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ;;CAA2B,CAAA"}
|
|
@@ -1,4 +1,20 @@
|
|
|
1
|
-
import{Activity as BaseActivity,Suspense as BaseSuspense}from"react";import{createNode}from"../core.node.js";/**
|
|
1
|
+
import{Fragment as BaseFragment,Activity as BaseActivity,Suspense as BaseSuspense}from"react";import{createNode}from"../core.node.js";/**
|
|
2
|
+
* A container that does not render any extra DOM element.
|
|
3
|
+
* @see {@link https://react.dev/reference/react/Fragment React Docs}
|
|
4
|
+
* @example
|
|
5
|
+
*
|
|
6
|
+
* ```typescript
|
|
7
|
+
* import { Fragment, Div, Span } from '@meonode/ui';
|
|
8
|
+
*
|
|
9
|
+
* Fragment({
|
|
10
|
+
* children: [
|
|
11
|
+
* Div('First Div'),
|
|
12
|
+
* Span('A Span inside Fragment'),
|
|
13
|
+
* Div('Second Div'),
|
|
14
|
+
* ],
|
|
15
|
+
* })
|
|
16
|
+
* ```
|
|
17
|
+
*/export var Fragment=createNode(BaseFragment);/**
|
|
2
18
|
* Lets you hide and restore the UI and internal state of its children.
|
|
3
19
|
* @see {@link https://react.dev/reference/react/Activity React Docs}
|
|
4
20
|
* @example
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export declare const NO_STYLE_TAGS: readonly ["html", "head", "meta", "link", "script", "style", "noscript", "template", "slot", "base", "param", "source", "track", "wbr", "embed", "object", "iframe", "frame", "frameset", "applet", "bgsound", "noembed", "noframes"];
|
|
2
2
|
export declare const noStyleTagsSet: Set<"applet" | "base" | "bgsound" | "embed" | "frame" | "frameset" | "head" | "html" | "iframe" | "link" | "meta" | "noembed" | "noframes" | "noscript" | "object" | "param" | "script" | "slot" | "source" | "style" | "template" | "track" | "wbr">;
|
|
3
|
+
export type NO_STYLE_TAGS = typeof NO_STYLE_TAGS;
|
|
3
4
|
//# sourceMappingURL=common.const.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.const.d.ts","sourceRoot":"","sources":["../../src/constants/common.const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,uOAwBhB,CAAA;AAEV,eAAO,MAAM,cAAc,uPAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"common.const.d.ts","sourceRoot":"","sources":["../../src/constants/common.const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,uOAwBhB,CAAA;AAEV,eAAO,MAAM,cAAc,uPAAyB,CAAA;AACpD,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA"}
|
package/dist/core.node.d.ts
CHANGED
|
@@ -1,85 +1,131 @@
|
|
|
1
1
|
import { type ReactElement } from 'react';
|
|
2
2
|
import type { Children, FinalNodeProps, HasRequiredProps, MergedProps, NodeElementType, NodeInstance, NodePortal, NodeProps, PropsOf } from './node.type.js';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* @template E The type of React element or component this node represents
|
|
4
|
+
* The core abstraction of the MeoNode library. It wraps a React element or component,
|
|
5
|
+
* providing a unified interface for processing props, normalizing children, and handling styles.
|
|
6
|
+
* This class is central to the library's ability to offer a JSX-free, fluent API for building UIs.
|
|
7
|
+
* It uses an iterative rendering approach to handle deeply nested structures without causing stack overflows.
|
|
8
|
+
* @class BaseNode
|
|
9
|
+
* @template E - The type of React element or component this node represents.
|
|
10
10
|
*/
|
|
11
11
|
export declare class BaseNode<E extends NodeElementType> implements NodeInstance<E> {
|
|
12
|
-
/** The underlying React element or component type that this node represents */
|
|
13
12
|
element: E;
|
|
14
|
-
/** Original props passed during construction, preserved for cloning/recreation */
|
|
15
13
|
rawProps: Partial<NodeProps<E>>;
|
|
16
|
-
/** Flag to identify BaseNode instances */
|
|
17
14
|
readonly isBaseNode: boolean;
|
|
18
|
-
/** Processed props after style processing, and child normalization */
|
|
19
15
|
private _props?;
|
|
20
|
-
/** DOM element used for portal rendering */
|
|
21
16
|
private _portalDOMElement;
|
|
22
|
-
/** React root instance for portal rendering */
|
|
23
17
|
private _portalReactRoot;
|
|
24
|
-
/** Cache for normalized children */
|
|
25
|
-
private _normalizedChildren?;
|
|
26
|
-
/** Indicates whether the code is running on the server (true) or client (false) */
|
|
27
18
|
private static _isServer;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
*/
|
|
19
|
+
private static _propProcessingCache;
|
|
20
|
+
private static _isValidElement;
|
|
31
21
|
constructor(element: E, rawProps?: Partial<NodeProps<E>>);
|
|
32
22
|
/**
|
|
33
23
|
* Lazily processes and retrieves the final, normalized props for the node.
|
|
24
|
+
* The props are processed only once and then cached for subsequent accesses.
|
|
25
|
+
* @getter props
|
|
34
26
|
*/
|
|
35
27
|
get props(): FinalNodeProps;
|
|
36
28
|
/**
|
|
37
|
-
*
|
|
29
|
+
* A fast, non-cryptographic hash function (FNV-1a) used to generate a unique signature for a set of props.
|
|
30
|
+
* This is significantly faster than `JSON.stringify` for creating cache keys.
|
|
31
|
+
* @method _hashString
|
|
32
|
+
*/
|
|
33
|
+
private static _hashString;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a unique, stable signature from a set of props. This signature is used as a key for caching computed CSS props.
|
|
36
|
+
* It serializes only primitive values and the structure of objects/arrays to ensure speed and stability.
|
|
37
|
+
* @method _createPropSignature
|
|
38
|
+
*/
|
|
39
|
+
private static _createPropSignature;
|
|
40
|
+
/**
|
|
41
|
+
* Retrieves computed CSS props from the cache if available. If not, it computes them,
|
|
42
|
+
* adds them to the cache, and then returns them. An LRU-like mechanism is used to prevent the cache from growing indefinitely.
|
|
43
|
+
* @method _getCachedCssProps
|
|
44
|
+
*/
|
|
45
|
+
private static _getCachedCssProps;
|
|
46
|
+
/**
|
|
47
|
+
* Separates props into cacheable (primitives, arrays, plain objects) and non-cacheable (functions) groups.
|
|
48
|
+
* This is crucial for ensuring that only serializable, static values are used for generating cache signatures.
|
|
49
|
+
* @method _splitProps
|
|
50
|
+
*/
|
|
51
|
+
private static _splitProps;
|
|
52
|
+
/**
|
|
53
|
+
* The main prop processing pipeline. It orchestrates splitting props, generating cache signatures,
|
|
54
|
+
* retrieving cached CSS props, computing DOM props, and normalizing children.
|
|
55
|
+
* @method _processProps
|
|
38
56
|
*/
|
|
39
57
|
private _processProps;
|
|
40
58
|
/**
|
|
41
|
-
*
|
|
59
|
+
* Processes the `children` prop of a node. It handles single children, arrays of children,
|
|
60
|
+
* and function-as-a-child render props, passing them to `_processRawNode` for normalization.
|
|
61
|
+
* @method _processChildren
|
|
42
62
|
*/
|
|
43
63
|
private _processChildren;
|
|
44
64
|
/**
|
|
45
|
-
*
|
|
65
|
+
* The core normalization function for a single child. It takes any valid `NodeElement`
|
|
66
|
+
* (primitive, React element, function, `BaseNode` instance) and converts it into a standardized `BaseNode`
|
|
67
|
+
* instance if it isn't one already. This ensures a consistent structure for the iterative renderer.
|
|
68
|
+
* @method _processRawNode
|
|
46
69
|
*/
|
|
47
|
-
private static
|
|
70
|
+
private static _processRawNode;
|
|
48
71
|
/**
|
|
49
|
-
*
|
|
72
|
+
* A helper to reliably identify if a given function is a "function-as-a-child" (render prop)
|
|
73
|
+
* rather than a standard Function Component.
|
|
74
|
+
* @method _isFunctionChild
|
|
50
75
|
*/
|
|
51
76
|
private static _isFunctionChild;
|
|
52
77
|
/**
|
|
53
|
-
*
|
|
78
|
+
* A wrapper component that executes a function-as-a-child and processes its return value.
|
|
79
|
+
* @method _functionRenderer
|
|
54
80
|
*/
|
|
55
81
|
private static _functionRenderer;
|
|
56
82
|
/**
|
|
57
|
-
*
|
|
83
|
+
* A legacy helper for the recursive child processing path. This is primarily used by `_functionRenderer`.
|
|
84
|
+
* @method _renderProcessedNode
|
|
58
85
|
*/
|
|
59
|
-
private static
|
|
60
|
-
/**
|
|
61
|
-
* Normalizes a processed child node into a final, renderable `ReactNode`.
|
|
62
|
-
*/
|
|
63
|
-
private _normalizeChild;
|
|
86
|
+
private static _renderProcessedNode;
|
|
64
87
|
/**
|
|
65
|
-
* Renders the `BaseNode` into a
|
|
88
|
+
* Renders the `BaseNode` and its entire subtree into a ReactElement.
|
|
89
|
+
* This method uses an **iterative (non-recursive) approach** with a manual work stack.
|
|
90
|
+
* This is a crucial architectural choice to prevent "Maximum call stack size exceeded" errors
|
|
91
|
+
* when rendering very deeply nested component trees, a common limitation of naive recursive rendering.
|
|
92
|
+
*
|
|
93
|
+
* The process works in two phases for each node:
|
|
94
|
+
* 1. **Begin Phase:** When a node is first visited, its children are pushed onto the stack. This ensures a bottom-up build.
|
|
95
|
+
* 2. **Complete Phase:** After all of a node's descendants have been rendered, the loop returns to the node.
|
|
96
|
+
* It then collects the rendered children from a temporary map and creates its own React element.
|
|
97
|
+
* @method render
|
|
66
98
|
*/
|
|
67
99
|
render(): ReactElement<FinalNodeProps>;
|
|
68
100
|
/**
|
|
69
|
-
*
|
|
101
|
+
* Ensures that the necessary DOM element and React root are available for portal rendering.
|
|
102
|
+
* This is only executed on the client-side.
|
|
103
|
+
* @method _ensurePortalInfrastructure
|
|
70
104
|
*/
|
|
71
105
|
private _ensurePortalInfrastructure;
|
|
72
106
|
/**
|
|
73
|
-
* Portal
|
|
107
|
+
* Renders the node into a React Portal, mounting it directly under `document.body`.
|
|
108
|
+
* Returns a handle with `update` and `unmount` methods to control the portal's lifecycle.
|
|
109
|
+
* @method toPortal
|
|
74
110
|
*/
|
|
75
111
|
toPortal(): NodePortal;
|
|
112
|
+
/**
|
|
113
|
+
* A static method to clear all internal caches. This is primarily useful for testing
|
|
114
|
+
* to ensure that tests run in a clean, isolated state.
|
|
115
|
+
* @method clearCaches
|
|
116
|
+
*/
|
|
117
|
+
static clearCaches(): void;
|
|
76
118
|
}
|
|
77
119
|
/**
|
|
78
|
-
*
|
|
120
|
+
* The primary factory function for creating a `BaseNode` instance.
|
|
121
|
+
* It's the simplest way to wrap a component or element.
|
|
122
|
+
* @function Node
|
|
79
123
|
*/
|
|
80
124
|
export declare function Node<AdditionalProps extends Record<string, any>, E extends NodeElementType>(element: E, props?: MergedProps<E, AdditionalProps>, additionalProps?: AdditionalProps): NodeInstance<E>;
|
|
81
125
|
/**
|
|
82
126
|
* Creates a curried node factory for a given React element or component type.
|
|
127
|
+
* This is useful for creating reusable, specialized factory functions (e.g., `const Div = createNode('div')`).
|
|
128
|
+
* @function createNode
|
|
83
129
|
*/
|
|
84
130
|
export declare function createNode<AdditionalInitialProps extends Record<string, any>, E extends NodeElementType>(element: E, initialProps?: MergedProps<E, AdditionalInitialProps>): HasRequiredProps<PropsOf<E>> extends true ? (<AdditionalProps extends Record<string, any> = Record<string, any>>(props: MergedProps<E, AdditionalProps>) => NodeInstance<E>) & {
|
|
85
131
|
element: E;
|
|
@@ -88,6 +134,8 @@ export declare function createNode<AdditionalInitialProps extends Record<string,
|
|
|
88
134
|
};
|
|
89
135
|
/**
|
|
90
136
|
* Creates a node factory function where the first argument is `children` and the second is `props`.
|
|
137
|
+
* This provides a more ergonomic API for components that primarily wrap content (e.g., `P('Some text')`).
|
|
138
|
+
* @function createChildrenFirstNode
|
|
91
139
|
*/
|
|
92
140
|
export declare function createChildrenFirstNode<AdditionalInitialProps extends Record<string, any>, E extends NodeElementType>(element: E, initialProps?: Omit<NodeProps<E>, keyof AdditionalInitialProps | 'children'> & AdditionalInitialProps): HasRequiredProps<PropsOf<E>> extends true ? (<AdditionalProps extends Record<string, any> = Record<string, any>>(children: Children, props: Omit<MergedProps<E, AdditionalProps>, 'children'>) => NodeInstance<E>) & {
|
|
93
141
|
element: E;
|
package/dist/core.node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.node.d.ts","sourceRoot":"","sources":["../src/core.node.ts"],"names":[],"mappings":"AAAA,OAAc,EAKZ,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"core.node.d.ts","sourceRoot":"","sources":["../src/core.node.ts"],"names":[],"mappings":"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"}
|
package/dist/core.node.js
CHANGED
|
@@ -1,59 +1,122 @@
|
|
|
1
|
-
var _excluded=["ref","key","children","css","props","disableEmotion"],_excluded2=["style"],_excluded3=["
|
|
2
|
-
*
|
|
3
|
-
* This
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
7
|
-
* @
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
var _excluded=["ref","key","children","css","props","disableEmotion"],_excluded2=["style"],_excluded3=["children","key","css","nativeProps","disableEmotion"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _objectWithoutProperties(a,b){if(null==a)return{};var c,d,e=_objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],-1===b.indexOf(c)&&{}.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c={};for(var d in a)if({}.hasOwnProperty.call(a,d)){if(-1!==b.indexOf(d))continue;c[d]=a[d]}return c}function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _createForOfIteratorHelper(b,c){var d="undefined"!=typeof Symbol&&b[Symbol.iterator]||b["@@iterator"];if(!d){if(Array.isArray(b)||(d=_unsupportedIterableToArray(b))||c&&b&&"number"==typeof b.length){d&&(b=d);var e=0,f=function F(){};return{s:f,n:function n(){return e>=b.length?{done:!0}:{done:!1,value:b[e++]}},e:function e(a){throw a},f:f}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var g,h=!0,i=!1;return{s:function s(){d=d.call(b)},n:function n(){var a=d.next();return h=a.done,a},e:function e(a){i=!0,g=a},f:function f(){try{h||null==d["return"]||d["return"]()}finally{if(i)throw g}}}}function _unsupportedIterableToArray(b,c){if(b){if("string"==typeof b)return _arrayLikeToArray(b,c);var a={}.toString.call(b).slice(8,-1);return"Object"===a&&b.constructor&&(a=b.constructor.name),"Map"===a||"Set"===a?Array.from(b):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?_arrayLikeToArray(b,c):void 0}}function _arrayLikeToArray(b,c){(null==c||c>b.length)&&(c=b.length);for(var d=0,f=Array(c);d<c;d++)f[d]=b[d];return f}function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!=_typeof(a)||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}import React,{createElement,isValidElement,Fragment}from"react";import{isNodeInstance}from"./helper/node.helper.js";import{isForwardRef,isFragment,isMemo,isReactClassComponent,isValidElementType}from"./helper/react-is.helper.js";import{createRoot}from"react-dom/client";import{getComponentType,getCSSProps,getDOMProps,getElementTypeName,hasNoStyleTag,omitUndefined}from"./helper/common.helper.js";import StyledRenderer from"./components/styled-renderer.client.js";/**
|
|
2
|
+
* Defines the structure for caching CSS property processing results.
|
|
3
|
+
* This cache helps to avoid re-computing CSS props for the same set of input props,
|
|
4
|
+
* significantly speeding up rendering for components with static styles.
|
|
5
|
+
* @interface PropProcessingCache
|
|
6
|
+
* @property {Record<string, any>} cssProps - The computed CSS properties.
|
|
7
|
+
* @property {string} signature - A unique signature generated from the cacheable props.
|
|
8
|
+
*//**
|
|
9
|
+
* The core abstraction of the MeoNode library. It wraps a React element or component,
|
|
10
|
+
* providing a unified interface for processing props, normalizing children, and handling styles.
|
|
11
|
+
* This class is central to the library's ability to offer a JSX-free, fluent API for building UIs.
|
|
12
|
+
* It uses an iterative rendering approach to handle deeply nested structures without causing stack overflows.
|
|
13
|
+
* @class BaseNode
|
|
14
|
+
* @template E - The type of React element or component this node represents.
|
|
15
|
+
*/export class BaseNode{constructor(a){var b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};// Element type validation is performed once at construction to prevent invalid nodes from being created.
|
|
16
|
+
if(_defineProperty(this,"rawProps",{}),_defineProperty(this,"isBaseNode",!0),_defineProperty(this,"_portalDOMElement",null),_defineProperty(this,"_portalReactRoot",null),!BaseNode._isValidElement(a)){var c=getComponentType(a);throw new Error("Invalid element type: ".concat(c," provided!"))}this.element=a,this.rawProps=b}/**
|
|
13
17
|
* Lazily processes and retrieves the final, normalized props for the node.
|
|
14
|
-
|
|
15
|
-
*
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
*
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
*
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if(BaseNode.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
*
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
var
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
18
|
+
* The props are processed only once and then cached for subsequent accesses.
|
|
19
|
+
* @getter props
|
|
20
|
+
*/get props(){return this._props||(this._props=this._processProps()),this._props}// --- Prop Caching and Processing ---
|
|
21
|
+
/**
|
|
22
|
+
* A fast, non-cryptographic hash function (FNV-1a) used to generate a unique signature for a set of props.
|
|
23
|
+
* This is significantly faster than `JSON.stringify` for creating cache keys.
|
|
24
|
+
* @method _hashString
|
|
25
|
+
*/static _hashString(a){// FNV offset basis
|
|
26
|
+
for(var b=Math.imul,c=2166136261,d=0;d<a.length;d++)c^=a.charCodeAt(d),c=b(c,16777619);return(c>>>0).toString(36)}/**
|
|
27
|
+
* Creates a unique, stable signature from a set of props. This signature is used as a key for caching computed CSS props.
|
|
28
|
+
* It serializes only primitive values and the structure of objects/arrays to ensure speed and stability.
|
|
29
|
+
* @method _createPropSignature
|
|
30
|
+
*/static _createPropSignature(a){var b,c=Object.keys(a).sort(),d="",e=_createForOfIteratorHelper(c);try{for(e.s();!(b=e.n()).done;){var f=b.value,g=a[f],h=void 0,i=_typeof(g);h="string"===i||"number"===i||"boolean"===i?"".concat(f,":").concat(g,";"):null===g?"".concat(f,":null;"):void 0===g?"".concat(f,":undefined;"):Array.isArray(g)?"".concat(f,":[").concat(g.length,"];"):"".concat(f,":{").concat(Object.keys(g).length,"};"),d+=h}}catch(a){e.e(a)}finally{e.f()}return BaseNode._hashString(d)}/**
|
|
31
|
+
* Retrieves computed CSS props from the cache if available. If not, it computes them,
|
|
32
|
+
* adds them to the cache, and then returns them. An LRU-like mechanism is used to prevent the cache from growing indefinitely.
|
|
33
|
+
* @method _getCachedCssProps
|
|
34
|
+
*/static _getCachedCssProps(a,b){var c=BaseNode._propProcessingCache.get(b);if(c)return{cssProps:c.cssProps};var d=getCSSProps(a);// LRU-like cache eviction policy.
|
|
35
|
+
if(BaseNode._propProcessingCache.set(b,{cssProps:d,signature:b}),500<BaseNode._propProcessingCache.size){var e=BaseNode._propProcessingCache.keys().next().value;e&&BaseNode._propProcessingCache["delete"](e)}return{cssProps:d}}/**
|
|
36
|
+
* Separates props into cacheable (primitives, arrays, plain objects) and non-cacheable (functions) groups.
|
|
37
|
+
* This is crucial for ensuring that only serializable, static values are used for generating cache signatures.
|
|
38
|
+
* @method _splitProps
|
|
39
|
+
*/static _splitProps(a){var b={};for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&"function"!=typeof a[c]&&(b[c]=a[c]);return{cacheable:b}}/**
|
|
40
|
+
* The main prop processing pipeline. It orchestrates splitting props, generating cache signatures,
|
|
41
|
+
* retrieving cached CSS props, computing DOM props, and normalizing children.
|
|
42
|
+
* @method _processProps
|
|
43
|
+
*/_processProps(){var a=this.rawProps,b=a.ref,c=a.key,d=a.children,e=a.css,f=a.props,g=void 0===f?{}:f,h=a.disableEmotion,i=_objectWithoutProperties(a,_excluded);// --- Fast Path Optimization ---
|
|
44
|
+
// For simple nodes with no styling props, we can bypass most of the expensive processing.
|
|
45
|
+
// This dramatically improves performance for deeply nested, unstyled structures.
|
|
46
|
+
if(0===Object.keys(i).length&&!e)return omitUndefined({ref:b,key:c,css:{},style:g.style,disableEmotion:h,nativeProps:omitUndefined(g),children:this._processChildren(d,h)});// --- Prop Caching and Computation ---
|
|
47
|
+
var j=BaseNode._splitProps(i),k=j.cacheable,l=BaseNode._createPropSignature(k),m=BaseNode._getCachedCssProps(k,l),n=m.cssProps,o=getDOMProps(i),p=_objectSpread(_objectSpread({},n),e),q=this._processChildren(d,h);// DOM props (like event handlers) are always computed fresh to ensure reference correctness.
|
|
48
|
+
// Merge computed CSS props with any explicit `css` prop provided.
|
|
49
|
+
// --- Child Normalization ---
|
|
50
|
+
// --- Final Assembly ---
|
|
51
|
+
return omitUndefined(_objectSpread(_objectSpread({ref:b,key:c,css:p,style:g.style},o),{},{disableEmotion:h,nativeProps:omitUndefined(g),children:q}))}// --- Child Processing ---
|
|
52
|
+
/**
|
|
53
|
+
* Processes the `children` prop of a node. It handles single children, arrays of children,
|
|
54
|
+
* and function-as-a-child render props, passing them to `_processRawNode` for normalization.
|
|
55
|
+
* @method _processChildren
|
|
56
|
+
*/_processChildren(a,b){return a?"function"==typeof a?a:Array.isArray(a)?a.map(function(a){return BaseNode._processRawNode(a,b)}):BaseNode._processRawNode(a,b):void 0}/**
|
|
57
|
+
* The core normalization function for a single child. It takes any valid `NodeElement`
|
|
58
|
+
* (primitive, React element, function, `BaseNode` instance) and converts it into a standardized `BaseNode`
|
|
59
|
+
* instance if it isn't one already. This ensures a consistent structure for the iterative renderer.
|
|
60
|
+
* @method _processRawNode
|
|
61
|
+
*/static _processRawNode(a,b){// Primitives and null/undefined are returned as-is.
|
|
62
|
+
if(null===a||a===void 0||"string"==typeof a||"number"==typeof a||"boolean"==typeof a)return a;// If it's already a BaseNode, just ensure the `disableEmotion` flag is propagated.
|
|
63
|
+
if(isNodeInstance(a))return b&&!a.rawProps.disableEmotion?new BaseNode(a.element,_objectSpread(_objectSpread({},a.rawProps),{},{disableEmotion:!0})):a;// Handle function-as-a-child (render props).
|
|
64
|
+
if(BaseNode._isFunctionChild(a))return new BaseNode(BaseNode._functionRenderer,{props:{render:a,disableEmotion:b}});// Handle standard React elements.
|
|
65
|
+
if(isValidElement(a)){var c=a.props,d=c.style,e=_objectWithoutProperties(c,_excluded2),f=_objectSpread(_objectSpread({},e),d||{});return new BaseNode(a.type,_objectSpread(_objectSpread(_objectSpread({},f),null!==a.key&&void 0!==a.key?{key:a.key}:{}),{},{disableEmotion:b}))}// Handle component classes and memos.
|
|
66
|
+
return isReactClassComponent(a)||isMemo(a)||isForwardRef(a)?new BaseNode(a,{disableEmotion:b}):a instanceof React.Component?BaseNode._processRawNode(a.render(),b):a;// Handle component instances.
|
|
67
|
+
}/**
|
|
68
|
+
* A helper to reliably identify if a given function is a "function-as-a-child" (render prop)
|
|
69
|
+
* rather than a standard Function Component.
|
|
70
|
+
* @method _isFunctionChild
|
|
71
|
+
*/static _isFunctionChild(a){if("function"!=typeof a||isReactClassComponent(a)||isMemo(a)||isForwardRef(a))return!1;try{return!(a.prototype&&"function"==typeof a.prototype.render)}catch(a){return!0}}/**
|
|
72
|
+
* A wrapper component that executes a function-as-a-child and processes its return value.
|
|
73
|
+
* @method _functionRenderer
|
|
74
|
+
*/static _functionRenderer(a){var b,c=a.render,d=a.disableEmotion;try{b=c()}catch(a){b=null}if(null===b||b===void 0)return b;if(isNodeInstance(b))return d&&!b.rawProps.disableEmotion?new BaseNode(b.element,_objectSpread(_objectSpread({},b.rawProps),{},{disableEmotion:!0})).render():b.render();if(Array.isArray(b))return b.map(function(a,b){return BaseNode._renderProcessedNode({processedElement:BaseNode._processRawNode(a,d),passedKey:"".concat(getElementTypeName(a),"-").concat(b)})});if(b instanceof React.Component)return BaseNode._renderProcessedNode({processedElement:BaseNode._processRawNode(b.render(),d),disableEmotion:d});if("string"==typeof b||"number"==typeof b||"boolean"==typeof b)return b;var e=BaseNode._processRawNode(b,d);return e?BaseNode._renderProcessedNode({processedElement:e,disableEmotion:d}):b}/**
|
|
75
|
+
* A legacy helper for the recursive child processing path. This is primarily used by `_functionRenderer`.
|
|
76
|
+
* @method _renderProcessedNode
|
|
77
|
+
*/static _renderProcessedNode(a){var b=a.processedElement,c=a.passedKey,d=a.disableEmotion,e={};if(void 0!==c&&(e.key=c),isNodeInstance(b)){var f,g=null===(f=b.rawProps)||void 0===f?void 0:f.key;return b.rawProps.disableEmotion=d,g===c?b.render():new BaseNode(b.element,_objectSpread(_objectSpread({},b.rawProps),e)).render()}return isReactClassComponent(b)?new BaseNode(b,_objectSpread(_objectSpread({},e),{},{disableEmotion:d})).render():b instanceof React.Component?b.render():"function"==typeof b?createElement(b,{key:c}):b}// --- Iterative Renderer ---
|
|
78
|
+
/**
|
|
79
|
+
* Renders the `BaseNode` and its entire subtree into a ReactElement.
|
|
80
|
+
* This method uses an **iterative (non-recursive) approach** with a manual work stack.
|
|
81
|
+
* This is a crucial architectural choice to prevent "Maximum call stack size exceeded" errors
|
|
82
|
+
* when rendering very deeply nested component trees, a common limitation of naive recursive rendering.
|
|
83
|
+
*
|
|
84
|
+
* The process works in two phases for each node:
|
|
85
|
+
* 1. **Begin Phase:** When a node is first visited, its children are pushed onto the stack. This ensures a bottom-up build.
|
|
86
|
+
* 2. **Complete Phase:** After all of a node's descendants have been rendered, the loop returns to the node.
|
|
87
|
+
* It then collects the rendered children from a temporary map and creates its own React element.
|
|
88
|
+
* @method render
|
|
89
|
+
*/render(){for(var a=[{node:this,isProcessed:!1}],b=new Map;0<a.length;){var c=a[a.length-1],d=c.node,e=c.isProcessed;// Peek at the top of the stack
|
|
90
|
+
if(!e){c.isProcessed=!0;var f=d.props.children;if(f)// Push children in reverse order to maintain the correct processing sequence.
|
|
91
|
+
for(var g=(Array.isArray(f)?f:[f]).filter(isNodeInstance),h=g.length-1;0<=h;h--)a.push({node:g[h],isProcessed:!1})}else{a.pop();// Pop the completed work.
|
|
92
|
+
var j=d.props,k=j.children,l=j.key,m=j.css,n=j.nativeProps,o=j.disableEmotion,p=_objectWithoutProperties(j,_excluded3),q=[];// Collect rendered children from the map.
|
|
93
|
+
k&&(q=(Array.isArray(k)?k:[k]).map(function(a){return isNodeInstance(a)?b.get(a):isValidElement(a)?a:a}));var r=_objectSpread(_objectSpread({},p),{},{key:l},n),s=void 0;// Handle special cases like Fragment.
|
|
94
|
+
if(d.element===Fragment||isFragment(d.element))s=createElement(d.element,{key:l},...q);else{// Determine if the component should be styled with Emotion.
|
|
95
|
+
var t=m&&!o&&!hasNoStyleTag(d.element);s=t?createElement(StyledRenderer,_objectSpread(_objectSpread({element:d.element},r),{},{css:m,suppressHydrationWarning:!0}),...q):createElement(d.element,r,...q)}// Store the final rendered element in the map for its parent to retrieve.
|
|
96
|
+
b.set(d,s)}}return b.get(this)}// --- Portal System ---
|
|
97
|
+
/**
|
|
98
|
+
* Ensures that the necessary DOM element and React root are available for portal rendering.
|
|
99
|
+
* This is only executed on the client-side.
|
|
100
|
+
* @method _ensurePortalInfrastructure
|
|
101
|
+
*/_ensurePortalInfrastructure(){if(BaseNode._isServer)return!1;if(this._portalDOMElement&&this._portalReactRoot&&this._portalDOMElement.isConnected)return!0;if(this._portalDOMElement&&!this._portalDOMElement.isConnected){if(this._portalReactRoot){try{this._portalReactRoot.unmount()}catch(a){/* empty */}this._portalReactRoot=null}this._portalDOMElement=null}if(this._portalDOMElement||(this._portalDOMElement=document.createElement("div"),document.body.appendChild(this._portalDOMElement)),!this._portalReactRoot){if(!this._portalDOMElement)return!1;var a=createRoot(this._portalDOMElement);this._portalReactRoot={render:a.render.bind(a),unmount:a.unmount.bind(a),update:function update(){}}}return!0}/**
|
|
102
|
+
* Renders the node into a React Portal, mounting it directly under `document.body`.
|
|
103
|
+
* Returns a handle with `update` and `unmount` methods to control the portal's lifecycle.
|
|
104
|
+
* @method toPortal
|
|
105
|
+
*/toPortal(){var a=this;if(!this._ensurePortalInfrastructure()||!this._portalReactRoot)throw new Error("toPortal() can only be called in a client-side environment where document.body is available.");(function renderCurrent(){try{a._portalReactRoot.render(a.render())}catch(a){/* empty */}})();try{var b=this._portalReactRoot.unmount.bind(this._portalReactRoot),c=this._portalReactRoot;return c.update=function(b){try{if(!a._portalReactRoot)return;var c=isNodeInstance(b)?b.render():b;a._portalReactRoot.render(c)}catch(a){/* empty */}},c.unmount=function(){try{b()}catch(a){/* empty */}if(a._portalDOMElement){try{a._portalDOMElement.parentNode&&a._portalDOMElement.parentNode.removeChild(a._portalDOMElement)}catch(a){/* empty */}a._portalDOMElement=null}a._portalReactRoot=null},c}catch(a){return this._portalReactRoot}}/**
|
|
106
|
+
* A static method to clear all internal caches. This is primarily useful for testing
|
|
107
|
+
* to ensure that tests run in a clean, isolated state.
|
|
108
|
+
* @method clearCaches
|
|
109
|
+
*/static clearCaches(){BaseNode._propProcessingCache.clear()}}// --- Factory Functions ---
|
|
110
|
+
/**
|
|
111
|
+
* The primary factory function for creating a `BaseNode` instance.
|
|
112
|
+
* It's the simplest way to wrap a component or element.
|
|
113
|
+
* @function Node
|
|
114
|
+
*/_defineProperty(BaseNode,"_isServer","undefined"==typeof window),_defineProperty(BaseNode,"_propProcessingCache",new Map),_defineProperty(BaseNode,"_isValidElement",isValidElementType);export function Node(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},c=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},d=_objectSpread(_objectSpread({},b),c);return new BaseNode(a,d)}/**
|
|
56
115
|
* Creates a curried node factory for a given React element or component type.
|
|
116
|
+
* This is useful for creating reusable, specialized factory functions (e.g., `const Div = createNode('div')`).
|
|
117
|
+
* @function createNode
|
|
57
118
|
*/export function createNode(a,b){var c=function Instance(c){return Node(a,_objectSpread(_objectSpread({},b),c))};return c.element=a,c}/**
|
|
58
119
|
* Creates a node factory function where the first argument is `children` and the second is `props`.
|
|
120
|
+
* This provides a more ergonomic API for components that primarily wrap content (e.g., `P('Some text')`).
|
|
121
|
+
* @function createChildrenFirstNode
|
|
59
122
|
*/export function createChildrenFirstNode(a,b){var c=function Instance(c,d){return Node(a,_objectSpread(_objectSpread(_objectSpread({},b),d),{},{children:c}))};return c.element=a,c}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CSSInterpolation } from '@emotion/serialize';
|
|
2
|
-
import
|
|
2
|
+
import { BaseNode } from '../core.node.js';
|
|
3
3
|
/**
|
|
4
4
|
* Type guard to check if an object is a NodeInstance.
|
|
5
5
|
*
|
|
@@ -11,7 +11,7 @@ import type { NodeInstance } from '../node.type.js';
|
|
|
11
11
|
* @param obj The object to check.
|
|
12
12
|
* @returns True if the object is a NodeInstance, false otherwise.
|
|
13
13
|
*/
|
|
14
|
-
export declare const isNodeInstance: (obj: unknown) => obj is
|
|
14
|
+
export declare const isNodeInstance: (obj: unknown) => obj is BaseNode<any>;
|
|
15
15
|
/**
|
|
16
16
|
* Resolves default CSS styles to fix common flexbox layout issues.
|
|
17
17
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.helper.d.ts","sourceRoot":"","sources":["../../src/helper/node.helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAiB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"node.helper.d.ts","sourceRoot":"","sources":["../../src/helper/node.helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAiB,MAAM,oBAAoB,CAAA;AAEzE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,wCAS1B,CAAA;AA8DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,eAAO,MAAM,mBAAmB,iCAmE/B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-is.helper.d.ts","sourceRoot":"","sources":["../../src/helper/react-is.helper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,eAA2C,CAAA;AAC1E,eAAO,MAAM,iBAAiB,eAA6B,CAAA;AAC3D,eAAO,MAAM,mBAAmB,eAA+B,CAAA;AAC/D,eAAO,MAAM,sBAAsB,eAAkC,CAAA;AACrE,eAAO,MAAM,mBAAmB,eAA+B,CAAA;AAC/D,eAAO,MAAM,mBAAmB,eAA+B,CAAA;AAC/D,eAAO,MAAM,mBAAmB,eAA+B,CAAA;AAC/D,eAAO,MAAM,kBAAkB,eAA8B,CAAA;AAC7D,eAAO,MAAM,sBAAsB,eAAkC,CAAA;AACrE,eAAO,MAAM,mBAAmB,eAA+B,CAAA;AAC/D,eAAO,MAAM,wBAAwB,eAAoC,CAAA;AACzE,eAAO,MAAM,eAAe,eAA2B,CAAA;AACvD,eAAO,MAAM,eAAe,eAA2B,CAAA;AACvD,eAAO,MAAM,0BAA0B,eAAsC,CAAA;AAC7E,eAAO,MAAM,sBAAsB,eAAuC,CAAA;AAC1E,eAAO,MAAM,mBAAmB,eAA+B,CAAA;AAE/D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB,OAAO,kBAAkB,GACzB,OAAO,iBAAiB,GACxB,OAAO,mBAAmB,GAC1B,OAAO,sBAAsB,GAC7B,OAAO,mBAAmB,GAC1B,OAAO,mBAAmB,GAC1B,OAAO,mBAAmB,GAC1B,OAAO,kBAAkB,GACzB,OAAO,sBAAsB,GAC7B,OAAO,mBAAmB,GAC1B,OAAO,wBAAwB,GAC/B,OAAO,eAAe,GACtB,OAAO,eAAe,GACtB,OAAO,0BAA0B,GACjC,OAAO,sBAAsB,GAC7B,OAAO,mBAAmB,CAAA;AAE9B;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,GAAG,CAAA;IAEV,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAoCpE;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,8BAAuE,CAAA;AAErG;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,8BAAuE,CAAA;AAErG;;;;GAIG;AACH,eAAO,MAAM,SAAS,8BACyF,CAAA;AAE/G;;;;GAIG;AACH,eAAO,MAAM,YAAY,8BAA0E,CAAA;AAEnG;;;;GAIG;AACH,eAAO,MAAM,UAAU,8BAAuE,CAAA;AAE9F;;;;GAIG;AACH,eAAO,MAAM,MAAM,8BAAmE,CAAA;AAEtF;;;;GAIG;AACH,eAAO,MAAM,MAAM,8BAAmE,CAAA;AAEtF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,8BAAqE,CAAA;AAE1F;;;;GAIG;AACH,eAAO,MAAM,UAAU,8BAAuE,CAAA;AAE9F;;;;GAIG;AACH,eAAO,MAAM,YAAY,8BAA0E,CAAA;AAEnG;;;;GAIG;AACH,eAAO,MAAM,UAAU,8BAAuE,CAAA;AAE9F;;;;GAIG;AACH,eAAO,MAAM,cAAc,8BAA4E,CAAA;AAEvG;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,8BAA8E,CAAA;AAE3G;;;;GAIG;AACH,eAAO,MAAM,UAAU,8BAAuE,CAAA;
|
|
1
|
+
{"version":3,"file":"react-is.helper.d.ts","sourceRoot":"","sources":["../../src/helper/react-is.helper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,eAA2C,CAAA;AAC1E,eAAO,MAAM,iBAAiB,eAA6B,CAAA;AAC3D,eAAO,MAAM,mBAAmB,eAA+B,CAAA;AAC/D,eAAO,MAAM,sBAAsB,eAAkC,CAAA;AACrE,eAAO,MAAM,mBAAmB,eAA+B,CAAA;AAC/D,eAAO,MAAM,mBAAmB,eAA+B,CAAA;AAC/D,eAAO,MAAM,mBAAmB,eAA+B,CAAA;AAC/D,eAAO,MAAM,kBAAkB,eAA8B,CAAA;AAC7D,eAAO,MAAM,sBAAsB,eAAkC,CAAA;AACrE,eAAO,MAAM,mBAAmB,eAA+B,CAAA;AAC/D,eAAO,MAAM,wBAAwB,eAAoC,CAAA;AACzE,eAAO,MAAM,eAAe,eAA2B,CAAA;AACvD,eAAO,MAAM,eAAe,eAA2B,CAAA;AACvD,eAAO,MAAM,0BAA0B,eAAsC,CAAA;AAC7E,eAAO,MAAM,sBAAsB,eAAuC,CAAA;AAC1E,eAAO,MAAM,mBAAmB,eAA+B,CAAA;AAE/D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB,OAAO,kBAAkB,GACzB,OAAO,iBAAiB,GACxB,OAAO,mBAAmB,GAC1B,OAAO,sBAAsB,GAC7B,OAAO,mBAAmB,GAC1B,OAAO,mBAAmB,GAC1B,OAAO,mBAAmB,GAC1B,OAAO,kBAAkB,GACzB,OAAO,sBAAsB,GAC7B,OAAO,mBAAmB,GAC1B,OAAO,wBAAwB,GAC/B,OAAO,eAAe,GACtB,OAAO,eAAe,GACtB,OAAO,0BAA0B,GACjC,OAAO,sBAAsB,GAC7B,OAAO,mBAAmB,CAAA;AAE9B;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,GAAG,CAAA;IAEV,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAoCpE;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,8BAAuE,CAAA;AAErG;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,8BAAuE,CAAA;AAErG;;;;GAIG;AACH,eAAO,MAAM,SAAS,8BACyF,CAAA;AAE/G;;;;GAIG;AACH,eAAO,MAAM,YAAY,8BAA0E,CAAA;AAEnG;;;;GAIG;AACH,eAAO,MAAM,UAAU,8BAAuE,CAAA;AAE9F;;;;GAIG;AACH,eAAO,MAAM,MAAM,8BAAmE,CAAA;AAEtF;;;;GAIG;AACH,eAAO,MAAM,MAAM,8BAAmE,CAAA;AAEtF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,8BAAqE,CAAA;AAE1F;;;;GAIG;AACH,eAAO,MAAM,UAAU,8BAAuE,CAAA;AAE9F;;;;GAIG;AACH,eAAO,MAAM,YAAY,8BAA0E,CAAA;AAEnG;;;;GAIG;AACH,eAAO,MAAM,UAAU,8BAAuE,CAAA;AAE9F;;;;GAIG;AACH,eAAO,MAAM,cAAc,8BAA4E,CAAA;AAEvG;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,8BAA8E,CAAA;AAE3G;;;;GAIG;AACH,eAAO,MAAM,UAAU,8BAAuE,CAAA;AAiB9F;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,qBAgBnC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,8DAQjC,CAAA"}
|
|
@@ -77,7 +77,7 @@ function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof
|
|
|
77
77
|
* Set of known valid React special element types.
|
|
78
78
|
* Used for quick validation of element types in isValidElementType().
|
|
79
79
|
* Includes Fragment, Profiler, StrictMode, Suspense and SuspenseList.
|
|
80
|
-
*/var knownValidSymbols=new Set([REACT_FRAGMENT_TYPE,REACT_PROFILER_TYPE,REACT_STRICT_MODE_TYPE,REACT_SUSPENSE_TYPE,REACT_SUSPENSE_LIST_TYPE,REACT_VIEW_TRANSITION_TYPE]);/**
|
|
80
|
+
*/var knownValidSymbols=new Set([REACT_FRAGMENT_TYPE,REACT_PROFILER_TYPE,REACT_STRICT_MODE_TYPE,REACT_SUSPENSE_TYPE,REACT_SUSPENSE_LIST_TYPE,REACT_VIEW_TRANSITION_TYPE,REACT_ACTIVITY_TYPE]);/**
|
|
81
81
|
* Checks if a type is a valid React element type that can be rendered.
|
|
82
82
|
* This includes strings (for DOM elements), functions (for components),
|
|
83
83
|
* and various React-specific types like Fragment, Context, etc.
|
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
import type { Theme } from '../node.type.js';
|
|
2
2
|
/**
|
|
3
|
-
* Resolves theme variable references in an object's values
|
|
4
|
-
* This function
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* @param theme The theme object containing variable definitions. Optional.
|
|
11
|
-
* @param options Options to control processing behavior.
|
|
12
|
-
* - processFunctions: If true, functions within the object will be executed with the theme as an argument.
|
|
13
|
-
* If false, functions will be ignored. Defaults to false.
|
|
14
|
-
* @returns A new object (or array) with all theme variables resolved to their corresponding values,
|
|
15
|
-
* or the original object (or array) if no changes were necessary.
|
|
3
|
+
* Resolves theme variable references in an object's values iteratively.
|
|
4
|
+
* This function uses a manual work stack to traverse the object, which prevents
|
|
5
|
+
* "Maximum call stack size exceeded" errors for deeply nested objects.
|
|
6
|
+
* It performs a "smart merge" by using a copy-on-write strategy, creating new
|
|
7
|
+
* objects/arrays only when a value inside them has changed. This preserves
|
|
8
|
+
* object references for unchanged parts of the tree, which is critical for
|
|
9
|
+
* React's reconciliation and memoization.
|
|
16
10
|
*/
|
|
17
11
|
export declare const resolveObjWithTheme: (obj?: Record<string, any>, theme?: Theme | undefined, options?: {
|
|
18
12
|
processFunctions?: boolean | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.helper.d.ts","sourceRoot":"","sources":["../../src/helper/theme.helper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"theme.helper.d.ts","sourceRoot":"","sources":["../../src/helper/theme.helper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,mBAAmB,CAAA;AAoE3D;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB;;SAoH/B,CAAA"}
|
|
@@ -1,43 +1,16 @@
|
|
|
1
1
|
function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!=_typeof(a)||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}import{getValueByPath}from"./common.helper.js";import{ObjHelper}from"./obj.helper.js";/**
|
|
2
2
|
* Cache manager for theme resolution operations.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
*/getPathLookup(a,b){var c="".concat(ObjHelper.stringify(a),"_").concat(b);return this._pathLookupCache.has(c)?(this._stats.pathHits++,this._pathLookupCache.get(c)):(this._stats.pathMisses++,null)}/**
|
|
18
|
-
* Cache theme path lookup result
|
|
19
|
-
*/setPathLookup(a,b,c){var d="".concat(ObjHelper.stringify(a),"_").concat(b);this._pathLookupCache.set(d,c)}/**
|
|
20
|
-
* Get the shared regex instance (reused for performance)
|
|
21
|
-
*/getThemeRegex(){return this._themeRegex.lastIndex=0,this._themeRegex}/**
|
|
22
|
-
* Check if we should use caching (server-side only for RSC optimization)
|
|
23
|
-
*/shouldCache(){return"undefined"==typeof window}}// Module-level cache instance
|
|
24
|
-
_defineProperty(ThemeResolverCache,"_instance",null);var themeCache=ThemeResolverCache.getInstance();/**
|
|
25
|
-
* Resolves theme variable references in an object's values recursively.
|
|
26
|
-
* This function performs a "smart merge" to maintain object reference identity
|
|
27
|
-
* for parts of the object that do not contain resolved theme variables or
|
|
28
|
-
* other modifications. Only creates new objects or properties when a change occurs.
|
|
29
|
-
* Handles nested objects and arrays, and prevents circular references.
|
|
30
|
-
* Theme variables are referenced using the format "theme.path.to.value".
|
|
31
|
-
* @param obj The object (or array) whose values should be resolved against the theme. Defaults to an empty object.
|
|
32
|
-
* @param theme The theme object containing variable definitions. Optional.
|
|
33
|
-
* @param options Options to control processing behavior.
|
|
34
|
-
* - processFunctions: If true, functions within the object will be executed with the theme as an argument.
|
|
35
|
-
* If false, functions will be ignored. Defaults to false.
|
|
36
|
-
* @returns A new object (or array) with all theme variables resolved to their corresponding values,
|
|
37
|
-
* or the original object (or array) if no changes were necessary.
|
|
38
|
-
*/export var resolveObjWithTheme=function resolveObjWithTheme(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},b=1<arguments.length?arguments[1]:void 0,c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},d=c.processFunctions;if(!b||!!b&&"object"===_typeof(b)&&0===Object.keys(b).length||0===Object.keys(a).length)return a;// Ensure theme has a valid system property
|
|
39
|
-
var e=null===b||void 0===b?void 0:b.system;if(!e||"object"!==_typeof(e)||0===Object.keys(e).length)return a;// Check cache first (only on server-side for RSC optimization)
|
|
40
|
-
if(themeCache.shouldCache()){// Note: Caching is based on the input object. If processFunctions changes behavior,
|
|
41
|
-
// a more complex cache key may be needed in the future.
|
|
42
|
-
var f=themeCache.getResolution(a,e);if(null!==f)return f}var g=function resolveRecursively(a,c){if(null===a||"object"!==_typeof(a))return a;if(c.has(a))return a;c.add(a);var f=function processThemeString(a){var b=a,c=!1,d=themeCache.getThemeRegex();return b=b.replace(d,function(a,b){var d=themeCache.getPathLookup(e,b);return null===d&&(d=getValueByPath(e,b),themeCache.setPathLookup(e,b,d)),void 0!==d&&null!==d?(c=!0,"object"===_typeof(d)&&!Array.isArray(d)&&"default"in d?d["default"]:d):a}),c?b:a};if(Array.isArray(a)){for(var h=a,j=!1,k=0;k<a.length;k++){var l=a[k],m=g(l,c);m===l?j&&(h[k]=l):(!j&&(h=[...a],j=!0),h[k]=m)}return h}var n=a,o=!1;for(var p in a){var q=a[p],r=q;if("function"!=typeof q)("object"!==_typeof(q)||null===q||Array.isArray(q)||Object.getPrototypeOf(q)===Object.prototype||null===Object.getPrototypeOf(q))&&("object"===_typeof(q)||"string"==typeof q)?"string"==typeof q&&q.includes("theme.")?r=f(q):"object"===_typeof(q)&&null!==q&&(r=g(q,c)):r=q;else if(void 0!==d&&d){var s=q(b);// Process string results that contain theme references
|
|
43
|
-
r="string"==typeof s&&s.includes("theme.")?f(s):g(s,c)}else r=q;r===q?o&&(n[p]=q):(!o&&(n=_objectSpread({},a),o=!0),n[p]=r)}return n},h=g(a,new Set);return themeCache.shouldCache()&&themeCache.setResolution(a,e,h),h};
|
|
3
|
+
*/class ThemeResolverCache{constructor(){_defineProperty(this,"_resolutionCache",new Map),_defineProperty(this,"_pathLookupCache",new Map),_defineProperty(this,"_themeRegex",/theme\.([a-zA-Z0-9_.-]+)/g)}static getInstance(){return ThemeResolverCache._instance||(ThemeResolverCache._instance=new ThemeResolverCache),ThemeResolverCache._instance}/**
|
|
4
|
+
* Generate a stable cache key from object and theme, including the theme mode.
|
|
5
|
+
*/_generateCacheKey(a,b){// Including theme.mode is critical for cache correctness.
|
|
6
|
+
return"".concat(ObjHelper.stringify(a),"_").concat(b.mode,"_").concat(ObjHelper.stringify(b.system))}getResolution(a,b){var c=this._generateCacheKey(a,b);return this._resolutionCache.get(c)||null}setResolution(a,b,c){var d=this._generateCacheKey(a,b);this._resolutionCache.set(d,c)}getPathLookup(a,b){var c="".concat(ObjHelper.stringify(a),"_").concat(b);return this._pathLookupCache.get(c)||null}setPathLookup(a,b,c){var d="".concat(ObjHelper.stringify(a),"_").concat(b);this._pathLookupCache.set(d,c)}getThemeRegex(){return this._themeRegex.lastIndex=0,this._themeRegex}shouldCache(){return"undefined"==typeof window}}_defineProperty(ThemeResolverCache,"_instance",null);var themeCache=ThemeResolverCache.getInstance(),isPlainObject=function isPlainObject(a){if("object"!==_typeof(a)||null===a)return!1;var b=Object.getPrototypeOf(a);return null===b||b===Object.prototype};/**
|
|
7
|
+
* Resolves theme variable references in an object's values iteratively.
|
|
8
|
+
* This function uses a manual work stack to traverse the object, which prevents
|
|
9
|
+
* "Maximum call stack size exceeded" errors for deeply nested objects.
|
|
10
|
+
* It performs a "smart merge" by using a copy-on-write strategy, creating new
|
|
11
|
+
* objects/arrays only when a value inside them has changed. This preserves
|
|
12
|
+
* object references for unchanged parts of the tree, which is critical for
|
|
13
|
+
* React's reconciliation and memoization.
|
|
14
|
+
*/export var resolveObjWithTheme=function resolveObjWithTheme(){var a,b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},c=1<arguments.length?arguments[1]:void 0,d=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},e=d.processFunctions;if(!c||!c.system||"object"!==_typeof(c.system)||0===Object.keys(c.system).length||0===Object.keys(b).length)return b;var f=c.system;if(themeCache.shouldCache()){var g=themeCache.getResolution(b,c);if(null!==g)return g}// Used for cycle detection within the current traversal path.
|
|
15
|
+
for(var h=[{value:b,isProcessed:!1}],j=new Map,k=new Set,l=function processThemeString(a){var b=themeCache.getThemeRegex(),c=!1,d=a.replace(b,function(a,b){var d=themeCache.getPathLookup(f,b);return null===d&&(d=getValueByPath(f,b),themeCache.setPathLookup(f,b,d)),void 0!==d&&null!==d?(c=!0,"object"===_typeof(d)&&!Array.isArray(d)&&"default"in d?d["default"]:d):a});return c?d:a};0<h.length;){var m=h[h.length-1],n=m.value;if(!isPlainObject(n)&&!Array.isArray(n)){h.pop();continue}if(j.has(n)){h.pop();continue}if(!m.isProcessed){m.isProcessed=!0,k.add(n);for(var o,p=Array.isArray(n)?n:Object.values(n),q=p.length-1;0<=q;q--)o=p[q],(isPlainObject(o)||Array.isArray(o))&&!k.has(o)&&h.push({value:o,isProcessed:!1})}else{h.pop(),k["delete"](n);// Unwind the path
|
|
16
|
+
var r=n;if(Array.isArray(n)){for(var s=null,t=0;t<n.length;t++){var u,v=n[t],w=null!==(u=j.get(v))&&void 0!==u?u:v;w!==v&&(null===s&&(s=[...n]),s[t]=w)}null!==s&&(r=s)}else{var x=null;for(var y in n)if(Object.prototype.hasOwnProperty.call(n,y)){var z,A=n[y],B=null!==(z=j.get(A))&&void 0!==z?z:A;if("function"==typeof B&&void 0!==e&&e){var C=B(c);B="string"==typeof C&&C.includes("theme.")?l(C):C}else"string"==typeof B&&B.includes("theme.")&&(B=l(B));B!==A&&(null===x&&(x=_objectSpread({},n)),x[y]=B)}null!==x&&(r=x)}j.set(n,r)}}var D=null!==(a=j.get(b))&&void 0!==a?a:b;return themeCache.shouldCache()&&themeCache.setResolution(b,c,D),D};
|
package/dist/hook/usePortal.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { type ReactElement } from 'react';
|
|
2
2
|
import type { NodePortal, PortalProps } from '../node.type.js';
|
|
3
|
+
/**
|
|
4
|
+
* Hook for managing a portal that renders node components outside the React component tree.
|
|
5
|
+
* @deprecated This hook is unstable and will likely be removed in future versions
|
|
6
|
+
*/
|
|
3
7
|
export declare function usePortal<T extends any[]>(deps?: T): {
|
|
4
8
|
portal: NodePortal | undefined;
|
|
5
9
|
setPortal: (p: NodePortal) => NodePortal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePortal.d.ts","sourceRoot":"","sources":["../../src/hook/usePortal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAkC,MAAM,OAAO,CAAA;AACzE,OAAO,KAAK,EAAmB,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAGjF,wBAAgB,SAAS,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,IAAI,GAAE,CAAsB;;;sBAGhC,CAAC;EAgCvC"}
|
|
1
|
+
{"version":3,"file":"usePortal.d.ts","sourceRoot":"","sources":["../../src/hook/usePortal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAkC,MAAM,OAAO,CAAA;AACzE,OAAO,KAAK,EAAmB,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAGjF;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,IAAI,GAAE,CAAsB;;;sBAGhC,CAAC;EAgCvC"}
|
package/dist/hook/usePortal.js
CHANGED
|
@@ -1 +1,4 @@
|
|
|
1
|
-
"use client";function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(b,c){if(b){if("string"==typeof b)return _arrayLikeToArray(b,c);var a={}.toString.call(b).slice(8,-1);return"Object"===a&&b.constructor&&(a=b.constructor.name),"Map"===a||"Set"===a?Array.from(b):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?_arrayLikeToArray(b,c):void 0}}function _arrayLikeToArray(b,c){(null==c||c>b.length)&&(c=b.length);for(var d=0,f=Array(c);d<c;d++)f[d]=b[d];return f}function _iterableToArrayLimit(b,c){var d=null==b?null:"undefined"!=typeof Symbol&&b[Symbol.iterator]||b["@@iterator"];if(null!=d){var g,h,j,k,l=[],a=!0,m=!1;try{if(j=(d=d.call(b)).next,0===c){if(Object(d)!==d)return;a=!1}else for(;!(a=(g=j.call(d)).done)&&(l.push(g.value),l.length!==c);a=!0);}catch(a){m=!0,h=a}finally{try{if(!a&&null!=d["return"]&&(k=d["return"](),Object(k)!==k))return}finally{if(m)throw h}}return l}}function _arrayWithHoles(a){if(Array.isArray(a))return a}import{useCallback,useEffect,useRef}from"react";import{Node}from"../core.node.js"
|
|
1
|
+
"use client";function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(b,c){if(b){if("string"==typeof b)return _arrayLikeToArray(b,c);var a={}.toString.call(b).slice(8,-1);return"Object"===a&&b.constructor&&(a=b.constructor.name),"Map"===a||"Set"===a?Array.from(b):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?_arrayLikeToArray(b,c):void 0}}function _arrayLikeToArray(b,c){(null==c||c>b.length)&&(c=b.length);for(var d=0,f=Array(c);d<c;d++)f[d]=b[d];return f}function _iterableToArrayLimit(b,c){var d=null==b?null:"undefined"!=typeof Symbol&&b[Symbol.iterator]||b["@@iterator"];if(null!=d){var g,h,j,k,l=[],a=!0,m=!1;try{if(j=(d=d.call(b)).next,0===c){if(Object(d)!==d)return;a=!1}else for(;!(a=(g=j.call(d)).done)&&(l.push(g.value),l.length!==c);a=!0);}catch(a){m=!0,h=a}finally{try{if(!a&&null!=d["return"]&&(k=d["return"](),Object(k)!==k))return}finally{if(m)throw h}}return l}}function _arrayWithHoles(a){if(Array.isArray(a))return a}import{useCallback,useEffect,useRef}from"react";import{Node}from"../core.node.js";/**
|
|
2
|
+
* Hook for managing a portal that renders node components outside the React component tree.
|
|
3
|
+
* @deprecated This hook is unstable and will likely be removed in future versions
|
|
4
|
+
*/export function usePortal(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],b=useRef({}),c=useCallback(function(a){return b.current.component=a,new Proxy(a,{apply:function apply(a,c,d){var e=_slicedToArray(d,1),f=e[0];return b.current.props=f,a.call(c,f)}})},[]);return useEffect(function(){var a=b.current,c=a.portal,d=a.component,e=a.props;c&&d&&c.update(Node(d,e))},a),useEffect(function(){return function(){var a;null===(a=b.current.portal)||void 0===a||a.unmount(),b.current.portal=void 0,b.current.component=void 0,b.current.props=void 0}},[]),{portal:b.current.portal,setPortal:function setPortal(a){return b.current.portal=a},createComponent:c}}
|
package/dist/hook/useTheme.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* A hook that provides access to the theme context.
|
|
3
3
|
* It also handles side effects like updating localStorage and applying the theme to the document root.
|
|
4
4
|
* @returns {ThemeContextValue} The theme context value.
|
|
5
|
-
* @throws {Error} If used outside
|
|
5
|
+
* @throws {Error} If used outside a ThemeProvider.
|
|
6
6
|
*/
|
|
7
7
|
export declare const useTheme: () => import("../components/theme-provider.client.js").ThemeContextValue;
|
|
8
8
|
//# sourceMappingURL=useTheme.d.ts.map
|
package/dist/hook/useTheme.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* A hook that provides access to the theme context.
|
|
3
3
|
* It also handles side effects like updating localStorage and applying the theme to the document root.
|
|
4
4
|
* @returns {ThemeContextValue} The theme context value.
|
|
5
|
-
* @throws {Error} If used outside
|
|
5
|
+
* @throws {Error} If used outside a ThemeProvider.
|
|
6
6
|
*/export var useTheme=function useTheme(){var a=useContext(ThemeContext);if(!a)throw new Error("useTheme must be used within a ThemeProvider");var b=a.theme;return useEffect(function(){// Sync theme mode with localStorage
|
|
7
7
|
var a=localStorage.getItem("theme");a&&a===b.mode||localStorage.setItem("theme",b.mode);// Apply theme to document root
|
|
8
8
|
var c=document.documentElement;"dark"===b.mode?(c.setAttribute("data-theme","dark"),c.classList.add("dark-theme"),c.classList.remove("light-theme")):(c.setAttribute("data-theme","light"),c.classList.add("light-theme"),c.classList.remove("dark-theme"))},[b.mode,b.system]),a};
|
package/dist/node.type.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { type CSSProperties, type ReactNode, type JSX, type ElementType, type ComponentType, type JSXElementConstructor, type Component, type ExoticComponent, type ReactElement } from 'react';
|
|
1
|
+
import React, { type CSSProperties, type ReactNode, type JSX, type ElementType, type ComponentType, type JSXElementConstructor, type Component, type ExoticComponent, type ReactElement, type FragmentProps, type SuspenseProps, type ActivityProps } from 'react';
|
|
2
2
|
import type { NO_STYLE_TAGS } from './constants/common.const.js';
|
|
3
3
|
import type { ComponentNodeProps } from './hoc/component.hoc.js';
|
|
4
4
|
import type { CSSObject, CSSInterpolation } from '@emotion/serialize';
|
|
@@ -10,6 +10,11 @@ export type HasRequiredProps<T> = RequiredKeys<T> extends never ? false : true;
|
|
|
10
10
|
export interface ReactAttributes {
|
|
11
11
|
key?: string;
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Type guard to check if a given element is a built-in React component (Fragment, Suspense, Activity).
|
|
15
|
+
* @template E - The element type to check
|
|
16
|
+
*/
|
|
17
|
+
export type IsReactBuiltInComponent<E> = E extends ExoticComponent<FragmentProps> ? true : E extends ExoticComponent<SuspenseProps> ? true : E extends ExoticComponent<ActivityProps> ? true : false;
|
|
13
18
|
/**
|
|
14
19
|
* Excludes array types from ReactNode, ensuring a single, non-array React element or primitive.
|
|
15
20
|
*/
|
|
@@ -140,12 +145,15 @@ export type HasNoStyleProp<E extends NodeElement> = E extends NoStyleTags ? true
|
|
|
140
145
|
* - Maintains React's key prop for reconciliation
|
|
141
146
|
* @template E - The element type these props apply to
|
|
142
147
|
*/
|
|
143
|
-
export type NodeProps<E extends NodeElement> = Omit<PropsOf<E>, keyof CSSProperties | 'children' | 'style' | 'props' | 'key'> & ReactAttributes & (HasCSSCompatibleStyleProp<PropsOf<E>> extends true ? ThemedCSSProperties : object) & (HasNoStyleProp<E> extends false ? Partial<{
|
|
148
|
+
export type NodeProps<E extends NodeElement> = IsReactBuiltInComponent<E> extends false ? Omit<PropsOf<E>, keyof CSSProperties | 'children' | 'style' | 'props' | 'key'> & ReactAttributes & (HasCSSCompatibleStyleProp<PropsOf<E>> extends true ? ThemedCSSProperties : object) & (HasNoStyleProp<E> extends false ? Partial<{
|
|
144
149
|
css: CssProp;
|
|
145
150
|
}> : object) & Partial<{
|
|
146
151
|
disableEmotion: boolean;
|
|
147
152
|
props: Partial<Omit<PropsOf<E>, 'children'>>;
|
|
148
153
|
children: Children;
|
|
154
|
+
}> : PropsOf<E> & ReactAttributes & Partial<{
|
|
155
|
+
disableEmotion: boolean;
|
|
156
|
+
children: Children;
|
|
149
157
|
}>;
|
|
150
158
|
/**
|
|
151
159
|
* Function type for dynamic node content generation.
|
|
@@ -187,7 +195,7 @@ export interface BasePortalProps {
|
|
|
187
195
|
* Extends the component's own props with portal-specific functionality.
|
|
188
196
|
* @template T The component's own prop types
|
|
189
197
|
*/
|
|
190
|
-
export type PortalProps<T extends BasePortalProps | Record<string, any>> = T & BasePortalProps;
|
|
198
|
+
export type PortalProps<T extends BasePortalProps | Record<string, any> = Record<string, any>> = T & BasePortalProps;
|
|
191
199
|
/**
|
|
192
200
|
* Interface representing a portal instance with lifecycle methods.
|
|
193
201
|
* Provides methods to unmount the portal and update its content dynamically.
|
package/dist/node.type.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.type.d.ts","sourceRoot":"","sources":["../src/node.type.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"node.type.d.ts","sourceRoot":"","sources":["../src/node.type.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meonode/ui",
|
|
3
3
|
"description": "A structured approach to component composition, direct CSS-first prop styling, built-in theming, smart prop handling (including raw property pass-through), and dynamic children.",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.17-0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/main.js",
|
|
7
7
|
"types": "./dist/main.d.ts",
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"scripts": {
|
|
29
29
|
"watch:build": "yarn dlx nodemon --watch src --ext ts,tsx,js,json --exec \"yarn build\"",
|
|
30
30
|
"lint": "eslint --fix",
|
|
31
|
-
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js --ci",
|
|
31
|
+
"test": "node --stack-size=10000 --experimental-vm-modules node_modules/jest/bin/jest.js --ci",
|
|
32
32
|
"prebuild": "yarn lint && yarn test",
|
|
33
|
-
"build": "yarn prebuild && rm -rf ./dist && babel src --out-dir dist --extensions \".ts,.tsx,.js\" && tsgo
|
|
33
|
+
"build": "yarn prebuild && rm -rf ./dist && babel src --out-dir dist --extensions \".ts,.tsx,.js\" && tsgo -p tsconfig.build.json --diagnostics && tsc-alias -p tsconfig.build.json",
|
|
34
34
|
"publish:pre": "./prepublish.sh && yarn build && yarn version -i prerelease && yarn npm publish --tag next",
|
|
35
35
|
"publish:patch": "./prepublish.sh && yarn build && yarn version -i patch && yarn npm publish --tag latest",
|
|
36
36
|
"publish:minor": "./prepublish.sh && yarn build && yarn version -i minor && yarn npm publish --tag latest",
|
|
@@ -112,5 +112,6 @@
|
|
|
112
112
|
"accessible-components",
|
|
113
113
|
"meonode-ui",
|
|
114
114
|
"meonode"
|
|
115
|
-
]
|
|
115
|
+
],
|
|
116
|
+
"stableVersion": "0.3.16"
|
|
116
117
|
}
|