@meonode/ui 0.2.9 → 0.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -1
- package/README.md +0 -37
- package/dist/client.d.ts +9 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +6 -0
- package/dist/constants/common.const.d.ts +3 -0
- package/dist/constants/common.const.d.ts.map +1 -0
- package/dist/constants/common.const.js +1 -0
- package/dist/constants/css-properties.const.d.ts +3 -0
- package/dist/constants/css-properties.const.d.ts.map +1 -0
- package/dist/core.node.d.ts +154 -53
- package/dist/core.node.d.ts.map +1 -1
- package/dist/core.node.js +167 -80
- package/dist/helper/common.helper.d.ts +8 -0
- package/dist/helper/common.helper.d.ts.map +1 -1
- package/dist/helper/common.helper.js +7 -2
- package/dist/helper/node.helper.d.ts +22 -16
- package/dist/helper/node.helper.d.ts.map +1 -1
- package/dist/helper/node.helper.js +22 -30
- package/dist/helper/obj.helper.d.ts +6 -0
- package/dist/helper/obj.helper.d.ts.map +1 -0
- package/dist/helper/obj.helper.js +1 -0
- package/dist/helper/theme.helper.d.ts +79 -0
- package/dist/helper/theme.helper.d.ts.map +1 -0
- package/dist/helper/theme.helper.js +59 -0
- package/dist/main.d.ts +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +1 -1
- package/dist/node.type.d.ts +12 -2
- package/dist/node.type.d.ts.map +1 -1
- package/package.json +14 -10
- package/dist/data/css-properties.d.ts +0 -3
- package/dist/data/css-properties.d.ts.map +0 -1
- /package/dist/{data/css-properties.js → constants/css-properties.const.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,48 @@ 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.2.11] - 2025-09-11
|
|
9
|
+
|
|
10
|
+
### Enhanced
|
|
11
|
+
- **core.node**: Significantly improved JSDoc documentation for the `BaseNode` class, providing better clarity on prop processing, child handling, and rendering logic.
|
|
12
|
+
- **core.node**: Overhauled the child processing and caching mechanism to improve server-side performance and resolve a memory leak. This includes a move from object stringification to a more performant hashing strategy for cache keys and the introduction of a cache management policy.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- **helper**: Corrected an issue in flexbox style processing where an unnecessary string check was performed.
|
|
16
|
+
- **core.node**: Updated a function placeholder to adhere to the unused parameter naming convention.
|
|
17
|
+
|
|
18
|
+
## [0.2.10] - 2025-09-10
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- **core**: add top-level `render` function for a cleaner and simpler API when mounting a Meonode instance to the DOM. This abstracts away the need to manually use `react-dom/client`.
|
|
22
|
+
- **Before**:
|
|
23
|
+
```typescript
|
|
24
|
+
import { createRoot } from 'react-dom/client';
|
|
25
|
+
import { Div } from '@meonode/ui';
|
|
26
|
+
|
|
27
|
+
const container = document.getElementById('root');
|
|
28
|
+
const root = createRoot(container);
|
|
29
|
+
root.render(Div({ children: 'Hello' }).render());
|
|
30
|
+
```
|
|
31
|
+
- **After**:
|
|
32
|
+
```typescript
|
|
33
|
+
import { Div } from '@meonode/ui';
|
|
34
|
+
import { render } from '@meonode/ui/client';
|
|
35
|
+
|
|
36
|
+
const container = document.getElementById('root');
|
|
37
|
+
render(Div({ children: 'Hello' }), container);
|
|
38
|
+
```
|
|
39
|
+
- **constants**: add `NO_STYLE_TAGS` array and `noStyleTagsSet` for quick lookup of tags that should not receive styles
|
|
40
|
+
|
|
41
|
+
### Enhanced
|
|
42
|
+
- **core**: enhance `StyledRenderer` integration to check for no-style tags
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
- **helper**: update CSS property set to use constants and add no-style tag check
|
|
46
|
+
- **package**: update dependencies to latest versions
|
|
47
|
+
- **directory**: rename `data` directory to `constants` for clarity
|
|
48
|
+
- **file**: rename `cssProperties.ts` to `cssProperties.const.ts` to reflect its purpose
|
|
49
|
+
|
|
8
50
|
## [0.2.9] - 2025-09-05
|
|
9
51
|
|
|
10
52
|
### Fixed
|
|
@@ -26,7 +68,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
26
68
|
Div<{ field: string }>({ field: 'Hello' })
|
|
27
69
|
|
|
28
70
|
// Override existing React props
|
|
29
|
-
Input<{ onChange: (e: { target: { value: string } }) }>({
|
|
71
|
+
Input<{ onChange: (e: { target: { value: string } }) => void }>({
|
|
30
72
|
onChange: ({ target }) => console.log(target.value),
|
|
31
73
|
})
|
|
32
74
|
```
|
package/README.md
CHANGED
|
@@ -117,43 +117,6 @@ const emotionStyles = css`
|
|
|
117
117
|
- **📱 Responsive Design**: Native media query support with optimal performance
|
|
118
118
|
- **🎨 Advanced Features**: Pseudo-classes, keyframe animations, and complex selectors
|
|
119
119
|
|
|
120
|
-
### Theme Resolution Engine
|
|
121
|
-
|
|
122
|
-
```tsx
|
|
123
|
-
// MeoNode's theme engine automatically resolves nested theme paths:
|
|
124
|
-
const theme = {
|
|
125
|
-
colors: {
|
|
126
|
-
primary: {
|
|
127
|
-
500: '#3B82F6',
|
|
128
|
-
600: '#2563EB'
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
// This syntax:
|
|
134
|
-
backgroundColor: 'theme.colors.primary.500'
|
|
135
|
-
|
|
136
|
-
// Gets resolved by the engine to:
|
|
137
|
-
backgroundColor: '#3B82F6'
|
|
138
|
-
|
|
139
|
-
// The resolution happens through Emotion's theming system:
|
|
140
|
-
import { ThemeProvider } from '@emotion/react';
|
|
141
|
-
|
|
142
|
-
// MeoNode wraps your components automatically:
|
|
143
|
-
const ThemedComponent = () => (
|
|
144
|
-
<ThemeProvider theme={theme}>
|
|
145
|
-
<div css={{
|
|
146
|
-
backgroundColor: theme.colors.primary[500], // Resolved automatically
|
|
147
|
-
'&:hover': {
|
|
148
|
-
backgroundColor: theme.colors.primary[600]
|
|
149
|
-
}
|
|
150
|
-
}}>
|
|
151
|
-
Content
|
|
152
|
-
</div>
|
|
153
|
-
</ThemeProvider>
|
|
154
|
-
);
|
|
155
|
-
```
|
|
156
|
-
|
|
157
120
|
### Style Processing Pipeline
|
|
158
121
|
|
|
159
122
|
1. **Parse Props**: MeoNode separates CSS properties from DOM attributes
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { NodeInstance } from './node.type.js';
|
|
2
|
+
/**
|
|
3
|
+
* Renders a Meonode instance into a DOM container.
|
|
4
|
+
* @param node The Meonode instance to render (e.g., created with Div(), P(), etc.).
|
|
5
|
+
* @param container The DOM element to mount the content into.
|
|
6
|
+
* @returns The React root instance.
|
|
7
|
+
*/
|
|
8
|
+
export declare function render(node: NodeInstance<any>, container: Element): import("react-dom/client").Root;
|
|
9
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGrD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,mCAIjE"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{createRoot}from"react-dom/client";/**
|
|
2
|
+
* Renders a Meonode instance into a DOM container.
|
|
3
|
+
* @param node The Meonode instance to render (e.g., created with Div(), P(), etc.).
|
|
4
|
+
* @param container The DOM element to mount the content into.
|
|
5
|
+
* @returns The React root instance.
|
|
6
|
+
*/export function render(a,b){var c=createRoot(b);return c.render(a.render()),c}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const NO_STYLE_TAGS: readonly ["html", "head", "title", "base", "meta", "link", "script", "style", "noscript", "template", "slot", "source", "track", "param", "area", "wbr", "embed", "object", "canvas", "iframe", "frame", "frameset", "applet", "bgsound", "noembed", "noframes", "picture", "svg", "math", "map", "audio", "video", "colgroup", "col", "tbody", "thead", "tfoot", "caption", "legend", "datalist", "optgroup", "option", "output", "progress", "meter", "script", "template", "track", "param", "source", "style", "link", "meta", "base", "title", "head", "html"];
|
|
2
|
+
export declare const noStyleTagsSet: Set<"applet" | "area" | "audio" | "base" | "bgsound" | "canvas" | "caption" | "col" | "colgroup" | "datalist" | "embed" | "frame" | "frameset" | "head" | "html" | "iframe" | "legend" | "link" | "map" | "math" | "meta" | "meter" | "noembed" | "noframes" | "noscript" | "object" | "optgroup" | "option" | "output" | "param" | "picture" | "progress" | "script" | "slot" | "source" | "style" | "svg" | "tbody" | "template" | "tfoot" | "thead" | "title" | "track" | "video" | "wbr">;
|
|
3
|
+
//# sourceMappingURL=common.const.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.const.d.ts","sourceRoot":"","sources":["../../src/constants/common.const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,qiBA0DhB,CAAA;AAEV,eAAO,MAAM,cAAc,+dAAyB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export var NO_STYLE_TAGS=["html","head","title","base","meta","link","script","style","noscript","template","slot","source","track","param","area","wbr","embed","object","canvas","iframe","frame","frameset","applet","bgsound","noembed","noframes","picture","svg","math","map","audio","video","colgroup","col","tbody","thead","tfoot","caption","legend","datalist","optgroup","option","output","progress","meter","script","template","track","param","source","style","link","meta","base","title","head","html"];export var noStyleTagsSet=new Set(NO_STYLE_TAGS);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const cssProperties: readonly ["MozAnimation", "MozAnimationDelay", "MozAnimationDirection", "MozAnimationDuration", "MozAnimationFillMode", "MozAnimationIterationCount", "MozAnimationName", "MozAnimationPlayState", "MozAnimationTimingFunction", "MozAppearance", "MozBinding", "MozBorderBottomColors", "MozBorderEndColor", "MozBorderEndStyle", "MozBorderEndWidth", "MozBorderImage", "MozBorderLeftColors", "MozBorderRightColors", "MozBorderStartColor", "MozBorderStartStyle", "MozBorderTopColors", "MozBoxSizing", "MozColumnCount", "MozColumnFill", "MozColumnRule", "MozColumnRuleColor", "MozColumnRuleStyle", "MozColumnRuleWidth", "MozColumnWidth", "MozColumns", "MozContextProperties", "MozFontFeatureSettings", "MozFontLanguageOverride", "MozHyphens", "MozImageRegion", "MozMarginEnd", "MozMarginStart", "MozOrient", "MozOsxFontSmoothing", "MozOutlineRadius", "MozOutlineRadiusBottomleft", "MozOutlineRadiusBottomright", "MozOutlineRadiusTopleft", "MozOutlineRadiusTopright", "MozPaddingEnd", "MozPaddingStart", "MozStackSizing", "MozTabSize", "MozTextBlink", "MozTextSizeAdjust", "MozUserFocus", "MozUserModify", "MozUserSelect", "MozWindowDragging", "MozWindowShadow", "WebkitAlignContent", "WebkitAlignItems", "WebkitAlignSelf", "WebkitAnimation", "WebkitAnimationDelay", "WebkitAnimationDirection", "WebkitAnimationDuration", "WebkitAnimationFillMode", "WebkitAnimationIterationCount", "WebkitAnimationName", "WebkitAnimationPlayState", "WebkitAnimationTimingFunction", "WebkitAppearance", "WebkitBackdropFilter", "WebkitBackfaceVisibility", "WebkitBackgroundClip", "WebkitBackgroundOrigin", "WebkitBackgroundSize", "WebkitBorderBefore", "WebkitBorderBeforeColor", "WebkitBorderBeforeStyle", "WebkitBorderBeforeWidth", "WebkitBorderBottomLeftRadius", "WebkitBorderBottomRightRadius", "WebkitBorderImage", "WebkitBorderImageSlice", "WebkitBorderRadius", "WebkitBorderTopLeftRadius", "WebkitBorderTopRightRadius", "WebkitBoxDecorationBreak", "WebkitBoxReflect", "WebkitBoxShadow", "WebkitBoxSizing", "WebkitClipPath", "WebkitColumnCount", "WebkitColumnFill", "WebkitColumnRule", "WebkitColumnRuleColor", "WebkitColumnRuleStyle", "WebkitColumnRuleWidth", "WebkitColumnSpan", "WebkitColumnWidth", "WebkitColumns", "WebkitFilter", "WebkitFlex", "WebkitFlexBasis", "WebkitFlexDirection", "WebkitFlexFlow", "WebkitFlexGrow", "WebkitFlexShrink", "WebkitFlexWrap", "WebkitFontFeatureSettings", "WebkitFontKerning", "WebkitFontSmoothing", "WebkitFontVariantLigatures", "WebkitHyphenateCharacter", "WebkitHyphens", "WebkitInitialLetter", "WebkitJustifyContent", "WebkitLineBreak", "WebkitLineClamp", "WebkitMarginEnd", "WebkitMarginStart", "WebkitMask", "WebkitMaskAttachment", "WebkitMaskBoxImage", "WebkitMaskBoxImageOutset", "WebkitMaskBoxImageRepeat", "WebkitMaskBoxImageSlice", "WebkitMaskBoxImageSource", "WebkitMaskBoxImageWidth", "WebkitMaskClip", "WebkitMaskComposite", "WebkitMaskImage", "WebkitMaskOrigin", "WebkitMaskPosition", "WebkitMaskPositionX", "WebkitMaskPositionY", "WebkitMaskRepeat", "WebkitMaskRepeatX", "WebkitMaskRepeatY", "WebkitMaskSize", "WebkitMaxInlineSize", "WebkitOrder", "WebkitOverflowScrolling", "WebkitPaddingEnd", "WebkitPaddingStart", "WebkitPerspective", "WebkitPerspectiveOrigin", "WebkitPrintColorAdjust", "WebkitRubyPosition", "WebkitScrollSnapType", "WebkitShapeMargin", "WebkitTapHighlightColor", "WebkitTextCombine", "WebkitTextDecorationColor", "WebkitTextDecorationLine", "WebkitTextDecorationSkip", "WebkitTextDecorationStyle", "WebkitTextEmphasis", "WebkitTextEmphasisColor", "WebkitTextEmphasisPosition", "WebkitTextEmphasisStyle", "WebkitTextFillColor", "WebkitTextOrientation", "WebkitTextSizeAdjust", "WebkitTextStroke", "WebkitTextStrokeColor", "WebkitTextStrokeWidth", "WebkitTextUnderlinePosition", "WebkitTouchCallout", "WebkitTransform", "WebkitTransformOrigin", "WebkitTransformStyle", "WebkitTransition", "WebkitTransitionDelay", "WebkitTransitionDuration", "WebkitTransitionProperty", "WebkitTransitionTimingFunction", "WebkitUserModify", "WebkitUserSelect", "WebkitWritingMode", "accentColor", "alignContent", "alignItems", "alignSelf", "alignTracks", "all", "animation", "animationComposition", "animationDelay", "animationDirection", "animationDuration", "animationFillMode", "animationIterationCount", "animationName", "animationPlayState", "animationRange", "animationRangeEnd", "animationRangeStart", "animationTimeline", "animationTimingFunction", "appearance", "aspectRatio", "backdropFilter", "backfaceVisibility", "background", "backgroundAttachment", "backgroundBlendMode", "backgroundClip", "backgroundColor", "backgroundImage", "backgroundOrigin", "backgroundPosition", "backgroundPositionX", "backgroundPositionY", "backgroundRepeat", "backgroundSize", "blockOverflow", "blockSize", "border", "borderBlock", "borderBlockColor", "borderBlockEnd", "borderBlockEndColor", "borderBlockEndStyle", "borderBlockEndWidth", "borderBlockStart", "borderBlockStartColor", "borderBlockStartStyle", "borderBlockStartWidth", "borderBlockStyle", "borderBlockWidth", "borderBottom", "borderBottomColor", "borderBottomLeftRadius", "borderBottomRightRadius", "borderBottomStyle", "borderBottomWidth", "borderCollapse", "borderColor", "borderEndEndRadius", "borderEndStartRadius", "borderImage", "borderImageOutset", "borderImageRepeat", "borderImageSlice", "borderImageSource", "borderImageWidth", "borderInline", "borderInlineColor", "borderInlineEnd", "borderInlineEndColor", "borderInlineEndStyle", "borderInlineEndWidth", "borderInlineStart", "borderInlineStartColor", "borderInlineStartStyle", "borderInlineStartWidth", "borderInlineStyle", "borderInlineWidth", "borderLeft", "borderLeftColor", "borderLeftStyle", "borderLeftWidth", "borderRadius", "borderRight", "borderRightColor", "borderRightStyle", "borderRightWidth", "borderSpacing", "borderStartEndRadius", "borderStartStartRadius", "borderStyle", "borderTop", "borderTopColor", "borderTopLeftRadius", "borderTopRightRadius", "borderTopStyle", "borderTopWidth", "borderWidth", "bottom", "boxDecorationBreak", "boxShadow", "boxSizing", "breakAfter", "breakBefore", "breakInside", "captionSide", "caret", "caretColor", "caretShape", "clear", "clipPath", "color", "colorAdjust", "colorScheme", "columnCount", "columnFill", "columnGap", "columnRule", "columnRuleColor", "columnRuleStyle", "columnRuleWidth", "columnSpan", "columnWidth", "columns", "contain", "containIntrinsicBlockSize", "containIntrinsicHeight", "containIntrinsicInlineSize", "containIntrinsicSize", "containIntrinsicWidth", "container", "containerName", "containerType", "content", "contentVisibility", "counterIncrement", "counterReset", "counterSet", "cursor", "direction", "display", "emptyCells", "filter", "flex", "flexBasis", "flexDirection", "flexFlow", "flexGrow", "flexShrink", "flexWrap", "float", "font", "fontFamily", "fontFeatureSettings", "fontKerning", "fontLanguageOverride", "fontOpticalSizing", "fontPalette", "fontSize", "fontSizeAdjust", "fontSmooth", "fontStretch", "fontStyle", "fontSynthesis", "fontSynthesisPosition", "fontSynthesisSmallCaps", "fontSynthesisStyle", "fontSynthesisWeight", "fontVariant", "fontVariantAlternates", "fontVariantCaps", "fontVariantEastAsian", "fontVariantEmoji", "fontVariantLigatures", "fontVariantNumeric", "fontVariantPosition", "fontVariationSettings", "fontWeight", "forcedColorAdjust", "gap", "grid", "gridArea", "gridAutoColumns", "gridAutoFlow", "gridAutoRows", "gridColumn", "gridColumnEnd", "gridColumnStart", "gridRow", "gridRowEnd", "gridRowStart", "gridTemplate", "gridTemplateAreas", "gridTemplateColumns", "gridTemplateRows", "hangingPunctuation", "height", "hyphenateCharacter", "hyphenateLimitChars", "hyphens", "imageOrientation", "imageRendering", "imageResolution", "initialLetter", "inlineSize", "inputSecurity", "inset", "insetBlock", "insetBlockEnd", "insetBlockStart", "insetInline", "insetInlineEnd", "insetInlineStart", "isolation", "justifyContent", "justifyItems", "justifySelf", "justifyTracks", "left", "letterSpacing", "lineBreak", "lineClamp", "lineHeight", "lineHeightStep", "listStyle", "listStyleImage", "listStylePosition", "listStyleType", "margin", "marginBlock", "marginBlockEnd", "marginBlockStart", "marginBottom", "marginInline", "marginInlineEnd", "marginInlineStart", "marginLeft", "marginRight", "marginTop", "marginTrim", "mask", "maskBorder", "maskBorderMode", "maskBorderOutset", "maskBorderRepeat", "maskBorderSlice", "maskBorderSource", "maskBorderWidth", "maskClip", "maskComposite", "maskImage", "maskMode", "maskOrigin", "maskPosition", "maskRepeat", "maskSize", "maskType", "masonryAutoFlow", "mathDepth", "mathShift", "mathStyle", "maxBlockSize", "maxHeight", "maxInlineSize", "maxLines", "maxWidth", "minBlockSize", "minHeight", "minInlineSize", "minWidth", "mixBlendMode", "motion", "motionDistance", "motionPath", "motionRotation", "msAccelerator", "msBlockProgression", "msContentZoomChaining", "msContentZoomLimit", "msContentZoomLimitMax", "msContentZoomLimitMin", "msContentZoomSnap", "msContentZoomSnapPoints", "msContentZoomSnapType", "msContentZooming", "msFilter", "msFlex", "msFlexDirection", "msFlexPositive", "msFlowFrom", "msFlowInto", "msGridColumns", "msGridRows", "msHighContrastAdjust", "msHyphenateLimitChars", "msHyphenateLimitLines", "msHyphenateLimitZone", "msHyphens", "msImeAlign", "msLineBreak", "msOrder", "msOverflowStyle", "msOverflowX", "msOverflowY", "msScrollChaining", "msScrollLimit", "msScrollLimitXMax", "msScrollLimitXMin", "msScrollLimitYMax", "msScrollLimitYMin", "msScrollRails", "msScrollSnapPointsX", "msScrollSnapPointsY", "msScrollSnapType", "msScrollSnapX", "msScrollSnapY", "msScrollTranslation", "msScrollbar3dlightColor", "msScrollbarArrowColor", "msScrollbarBaseColor", "msScrollbarDarkshadowColor", "msScrollbarFaceColor", "msScrollbarHighlightColor", "msScrollbarShadowColor", "msScrollbarTrackColor", "msTextAutospace", "msTextCombineHorizontal", "msTextOverflow", "msTouchAction", "msTouchSelect", "msTransform", "msTransformOrigin", "msTransition", "msTransitionDelay", "msTransitionDuration", "msTransitionProperty", "msTransitionTimingFunction", "msUserSelect", "msWordBreak", "msWrapFlow", "msWrapMargin", "msWrapThrough", "msWritingMode", "objectFit", "objectPosition", "offset", "offsetAnchor", "offsetDistance", "offsetPath", "offsetPosition", "offsetRotate", "offsetRotation", "opacity", "order", "orphans", "outline", "outlineColor", "outlineOffset", "outlineStyle", "outlineWidth", "overflow", "overflowAnchor", "overflowBlock", "overflowClipBox", "overflowClipMargin", "overflowInline", "overflowWrap", "overflowX", "overflowY", "overlay", "overscrollBehavior", "overscrollBehaviorBlock", "overscrollBehaviorInline", "overscrollBehaviorX", "overscrollBehaviorY", "padding", "paddingBlock", "paddingBlockEnd", "paddingBlockStart", "paddingBottom", "paddingInline", "paddingInlineEnd", "paddingInlineStart", "paddingLeft", "paddingRight", "paddingTop", "page", "pageBreakAfter", "pageBreakBefore", "pageBreakInside", "paintOrder", "perspective", "perspectiveOrigin", "placeContent", "placeItems", "placeSelf", "pointerEvents", "position", "printColorAdjust", "quotes", "resize", "right", "rotate", "rowGap", "rubyAlign", "rubyMerge", "rubyPosition", "scale", "scrollBehavior", "scrollMargin", "scrollMarginBlock", "scrollMarginBlockEnd", "scrollMarginBlockStart", "scrollMarginBottom", "scrollMarginInline", "scrollMarginInlineEnd", "scrollMarginInlineStart", "scrollMarginLeft", "scrollMarginRight", "scrollMarginTop", "scrollPadding", "scrollPaddingBlock", "scrollPaddingBlockEnd", "scrollPaddingBlockStart", "scrollPaddingBottom", "scrollPaddingInline", "scrollPaddingInlineEnd", "scrollPaddingInlineStart", "scrollPaddingLeft", "scrollPaddingRight", "scrollPaddingTop", "scrollSnapAlign", "scrollSnapMargin", "scrollSnapMarginBottom", "scrollSnapMarginLeft", "scrollSnapMarginRight", "scrollSnapMarginTop", "scrollSnapStop", "scrollSnapType", "scrollTimeline", "scrollTimelineAxis", "scrollTimelineName", "scrollbarColor", "scrollbarGutter", "scrollbarWidth", "shapeImageThreshold", "shapeMargin", "shapeOutside", "tabSize", "tableLayout", "textAlign", "textAlignLast", "textCombineUpright", "textDecoration", "textDecorationColor", "textDecorationLine", "textDecorationSkip", "textDecorationSkipInk", "textDecorationStyle", "textDecorationThickness", "textEmphasis", "textEmphasisColor", "textEmphasisPosition", "textEmphasisStyle", "textIndent", "textJustify", "textOrientation", "textOverflow", "textRendering", "textShadow", "textSizeAdjust", "textTransform", "textUnderlineOffset", "textUnderlinePosition", "textWrap", "timelineScope", "top", "touchAction", "transform", "transformBox", "transformOrigin", "transformStyle", "transition", "transitionBehavior", "transitionDelay", "transitionDuration", "transitionProperty", "transitionTimingFunction", "translate", "unicodeBidi", "userSelect", "verticalAlign", "viewTimeline", "viewTimelineAxis", "viewTimelineInset", "viewTimelineName", "viewTransitionName", "visibility", "whiteSpace", "whiteSpaceCollapse", "whiteSpaceTrim", "widows", "width", "willChange", "wordBreak", "wordSpacing", "wordWrap", "writingMode", "zIndex", "zoom"];
|
|
2
|
+
export default cssProperties;
|
|
3
|
+
//# sourceMappingURL=css-properties.const.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-properties.const.d.ts","sourceRoot":"","sources":["../../src/constants/css-properties.const.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,aAAa,k0ZAirBT,CAAA;AAEV,eAAe,aAAa,CAAA"}
|
package/dist/core.node.d.ts
CHANGED
|
@@ -15,87 +15,188 @@ export declare class BaseNode<E extends NodeElement> implements NodeInstance<E>
|
|
|
15
15
|
element: E;
|
|
16
16
|
/** Original props passed during construction, preserved for cloning/recreation */
|
|
17
17
|
rawProps: RawNodeProps<E>;
|
|
18
|
-
/** Processed props after theme resolution, style processing, and child normalization */
|
|
19
|
-
props: FinalNodeProps;
|
|
20
18
|
/** Flag to identify BaseNode instances */
|
|
21
19
|
readonly isBaseNode: boolean;
|
|
20
|
+
/** Processed props after theme resolution, style processing, and child normalization */
|
|
21
|
+
private _props?;
|
|
22
22
|
/** DOM element used for portal rendering */
|
|
23
23
|
private _portalDOMElement;
|
|
24
24
|
/** React root instance for portal rendering */
|
|
25
25
|
private _portalReactRoot;
|
|
26
|
+
/** Hash of the current children and theme to detect changes */
|
|
27
|
+
private _childrenHash?;
|
|
28
|
+
/** Cache for normalized children */
|
|
29
|
+
private _normalizedChildren?;
|
|
30
|
+
/** Cache for processed children on the server (uses stringified keys for effective caching) */
|
|
31
|
+
private static _childProcessingCache;
|
|
26
32
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* @param element The React element
|
|
33
|
-
* @param rawProps
|
|
33
|
+
* Constructs a new BaseNode instance.
|
|
34
|
+
*
|
|
35
|
+
* This constructor initializes a node with a given React element or component type
|
|
36
|
+
* and the raw props passed to it. The props are not processed until they are
|
|
37
|
+
* accessed via the `props` getter, allowing for lazy evaluation.
|
|
38
|
+
* @param element The React element or component type this node will represent.
|
|
39
|
+
* @param rawProps The initial, unprocessed props for the element.
|
|
34
40
|
*/
|
|
35
41
|
constructor(element: E, rawProps?: RawNodeProps<E>);
|
|
42
|
+
/**
|
|
43
|
+
* Lazily processes and retrieves the final, normalized props for the node.
|
|
44
|
+
*
|
|
45
|
+
* The first time this getter is accessed, it triggers `_processProps` to resolve
|
|
46
|
+
* themes, styles, and children. Subsequent accesses return the cached result
|
|
47
|
+
* until the node is cloned or recreated.
|
|
48
|
+
* @returns The fully processed and normalized `FinalNodeProps`.
|
|
49
|
+
*/
|
|
50
|
+
get props(): FinalNodeProps;
|
|
51
|
+
/**
|
|
52
|
+
* Performs the core logic of processing raw props into their final, normalized form.
|
|
53
|
+
*
|
|
54
|
+
* This method is called by the `props` getter on its first access. It handles:
|
|
55
|
+
* 1. **Theme Resolution**: Selects the active theme from `theme` or `nodetheme` props.
|
|
56
|
+
* 2. **Prop Resolution**: Resolves theme-aware values (functions) in `rawProps` and `nativeProps.style`.
|
|
57
|
+
* 3. **Style Extraction**: Separates style-related props (`css`, `style`) from other DOM/component props.
|
|
58
|
+
* 4. **Default Style Merging**: Combines default styles with resolved style props.
|
|
59
|
+
* 5. **Child Processing**: Normalizes the `children` prop, propagating the theme.
|
|
60
|
+
* @returns The processed `FinalNodeProps` object.
|
|
61
|
+
* @private
|
|
62
|
+
*/
|
|
63
|
+
private _processProps;
|
|
64
|
+
/**
|
|
65
|
+
* Processes raw children, wrapping them in `BaseNode` instances where necessary
|
|
66
|
+
* and propagating the theme.
|
|
67
|
+
*
|
|
68
|
+
* This method recursively processes each child to ensure consistent theme handling
|
|
69
|
+
* and to convert valid elements into `BaseNode` instances. It uses caching to
|
|
70
|
+
* optimize performance, with different strategies for server-side (string-based key)
|
|
71
|
+
* and client-side (WeakMap-based key) environments.
|
|
72
|
+
* @param children The raw child or array of children to process.
|
|
73
|
+
* @param theme The theme to propagate to the children.
|
|
74
|
+
* @returns The processed children, ready to be normalized for rendering.
|
|
75
|
+
* @private
|
|
76
|
+
*/
|
|
36
77
|
private _processChildren;
|
|
37
78
|
/**
|
|
38
|
-
* Renders a processed NodeElement into a ReactNode
|
|
79
|
+
* Renders a processed `NodeElement` into a `ReactNode`, applying a theme and key if necessary.
|
|
39
80
|
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* @param
|
|
49
|
-
* @param
|
|
50
|
-
* @
|
|
81
|
+
* This static method centralizes the logic for converting various types of processed elements
|
|
82
|
+
* into renderable React nodes. It handles:
|
|
83
|
+
* - `BaseNode` instances: Re-wraps them to apply a new key or theme.
|
|
84
|
+
* - React class components: Wraps them in a new `BaseNode`.
|
|
85
|
+
* - `NodeInstance` objects: Invokes their `render()` method.
|
|
86
|
+
* - React component instances: Invokes their `render()` method.
|
|
87
|
+
* - Functional components: Creates a React element from them.
|
|
88
|
+
* - Other valid `ReactNode` types (strings, numbers, etc.): Returns them as-is.
|
|
89
|
+
* @param processedElement The node element to render.
|
|
90
|
+
* @param passedTheme The theme to propagate.
|
|
91
|
+
* @param passedKey The React key to assign.
|
|
92
|
+
* @returns A renderable `ReactNode`.
|
|
93
|
+
* @private
|
|
94
|
+
* @static
|
|
51
95
|
*/
|
|
52
96
|
static _renderProcessedNode(processedElement: NodeElement, passedTheme: Theme | undefined, passedKey: string | undefined): ReactNode;
|
|
53
97
|
/**
|
|
54
|
-
* Renders the
|
|
98
|
+
* Renders the output of a function-as-a-child, ensuring theme propagation.
|
|
55
99
|
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* @param props
|
|
60
|
-
* @param props.render
|
|
61
|
-
* @param props.passedTheme
|
|
62
|
-
* @param props.passedKey
|
|
63
|
-
* @param props.processRawNode
|
|
64
|
-
* @returns The rendered ReactNode
|
|
100
|
+
* This method is designed to handle "render prop" style children (`() => ReactNode`).
|
|
101
|
+
* It invokes the function, processes its result, and ensures the parent's theme is
|
|
102
|
+
* correctly passed down to any `BaseNode` instances returned by the function.
|
|
103
|
+
* @param props The properties for the function renderer.
|
|
104
|
+
* @param props.render The function to execute to get the child content.
|
|
105
|
+
* @param props.passedTheme The theme to propagate to the rendered child.
|
|
106
|
+
* @param props.passedKey The React key to assign to the rendered node.
|
|
107
|
+
* @param props.processRawNode A reference to the `_processRawNode` method for recursive processing.
|
|
108
|
+
* @returns The rendered `ReactNode`.
|
|
109
|
+
* @private
|
|
65
110
|
*/
|
|
66
111
|
private _functionRenderer;
|
|
67
112
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* @param
|
|
74
|
-
* @
|
|
113
|
+
* Generates a stable key for a node, especially for elements within an array.
|
|
114
|
+
*
|
|
115
|
+
* If an `existingKey` is provided, it is returned. Otherwise, a key is generated
|
|
116
|
+
* based on the element's type name and its index within a list of siblings.
|
|
117
|
+
* This helps prevent re-rendering issues in React when dealing with dynamic lists.
|
|
118
|
+
* @param options The options for key generation.
|
|
119
|
+
* @param options.nodeIndex The index of the node in an array of children.
|
|
120
|
+
* @param options.element The element for which to generate a key.
|
|
121
|
+
* @param options.existingKey An existing key, if one was already provided.
|
|
122
|
+
* @param options.children The children of the node, used to add complexity to the key.
|
|
123
|
+
* @returns A React key, or `undefined` if no key could be generated.
|
|
124
|
+
* @private
|
|
125
|
+
*/
|
|
126
|
+
private _generateKey;
|
|
127
|
+
/**
|
|
128
|
+
* Processes a single raw node, recursively converting it into a `BaseNode` or other renderable type.
|
|
129
|
+
*
|
|
130
|
+
* This is a central method for normalizing children. It handles various types of input:
|
|
131
|
+
* - **`BaseNode` instances**: Re-creates them to ensure the correct theme and key are applied.
|
|
132
|
+
* - **Primitives**: Returns strings, numbers, booleans, null, and undefined as-is.
|
|
133
|
+
* - **Functions (Render Props)**: Wraps them in a `BaseNode` that uses `_functionRenderer` to delay execution.
|
|
134
|
+
* - **Valid React Elements**: Converts them into `BaseNode` instances, extracting props and propagating the theme.
|
|
135
|
+
* - **React Component Types**: Wraps them in a `BaseNode` with the parent theme.
|
|
136
|
+
* - **React Component Instances**: Renders them and processes the output recursively.
|
|
137
|
+
*
|
|
138
|
+
* It also generates a stable key for elements within an array if one is not provided.
|
|
139
|
+
* @param rawNode The raw child node to process.
|
|
140
|
+
* @param parentTheme The theme inherited from the parent.
|
|
141
|
+
* @param nodeIndex The index of the child if it is in an array, used for key generation.
|
|
142
|
+
* @returns A processed `NodeElement` (typically a `BaseNode` instance or a primitive).
|
|
143
|
+
* @private
|
|
75
144
|
*/
|
|
76
|
-
_processRawNode
|
|
145
|
+
private _processRawNode;
|
|
77
146
|
/**
|
|
78
|
-
* Normalizes a child node into a renderable ReactNode
|
|
79
|
-
* Processes different types of child nodes to ensure they can be properly rendered
|
|
80
|
-
* while maintaining theme inheritance.
|
|
147
|
+
* Normalizes a processed child node into a final, renderable `ReactNode`.
|
|
81
148
|
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* -
|
|
86
|
-
* -
|
|
87
|
-
*
|
|
88
|
-
* @
|
|
89
|
-
* @
|
|
149
|
+
* This method is called during the `render` phase. It takes a child that has already
|
|
150
|
+
* been processed by `_processChildren` and prepares it for `React.createElement`.
|
|
151
|
+
*
|
|
152
|
+
* - For `BaseNode` instances, it calls their `render()` method, ensuring the theme is consistent.
|
|
153
|
+
* - It validates that other children are valid React element types.
|
|
154
|
+
* - Primitives and other valid nodes are returned as-is.
|
|
155
|
+
* @param child The processed child node to normalize.
|
|
156
|
+
* @returns A renderable `ReactNode`.
|
|
157
|
+
* @throws {Error} If the child is not a valid React element type.
|
|
158
|
+
* @private
|
|
90
159
|
*/
|
|
91
160
|
private _normalizeChild;
|
|
92
161
|
/**
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
162
|
+
* Renders the `BaseNode` into a `ReactElement`.
|
|
163
|
+
*
|
|
164
|
+
* This method is the final step in the rendering pipeline. It constructs a React element
|
|
165
|
+
* by:
|
|
166
|
+
* 1. Validating that the node's `element` type is renderable.
|
|
167
|
+
* 2. Normalizing processed children into `ReactNode`s using `_normalizeChild`.
|
|
168
|
+
* 3. Caching normalized children to avoid re-processing on subsequent renders.
|
|
169
|
+
* 4. Assembling the final props, including `key`, `style`, and other attributes.
|
|
170
|
+
* 5. If the element has a `css` prop, it may be wrapped in a `StyledRenderer` to handle
|
|
171
|
+
* CSS-in-JS styling.
|
|
172
|
+
* 6. Finally, calling `React.createElement` with the element, props, and children.
|
|
173
|
+
* @returns The rendered `ReactElement`.
|
|
174
|
+
* @throws {Error} If the node's `element` is not a valid React element type.
|
|
96
175
|
*/
|
|
97
176
|
render(): ReactElement;
|
|
177
|
+
/**
|
|
178
|
+
* Ensures the necessary DOM elements for portal rendering are created and attached.
|
|
179
|
+
*
|
|
180
|
+
* On the client-side, this method checks for or creates a `div` element appended
|
|
181
|
+
* to the `document.body` and initializes a React root on it. This setup is
|
|
182
|
+
* required for the `toPortal` method to function. It is idempotent and safe
|
|
183
|
+
* to call multiple times.
|
|
184
|
+
* @returns `true` if the portal infrastructure is ready, `false` if on the server.
|
|
185
|
+
* @private
|
|
186
|
+
*/
|
|
98
187
|
private _ensurePortalInfrastructure;
|
|
188
|
+
/**
|
|
189
|
+
* Renders the node into a React Portal.
|
|
190
|
+
*
|
|
191
|
+
* This method mounts the node's rendered content into a separate DOM tree
|
|
192
|
+
* attached to the `document.body`. It's useful for rendering components like
|
|
193
|
+
* modals, tooltips, or notifications that need to appear above other UI elements.
|
|
194
|
+
*
|
|
195
|
+
* The returned object includes an `unmount` function to clean up the portal.
|
|
196
|
+
* @returns A `ReactDOMRoot` instance for managing the portal, or `null` if
|
|
197
|
+
* called in a server-side environment. The returned instance is enhanced
|
|
198
|
+
* with a custom `unmount` method that also cleans up the associated DOM element.
|
|
199
|
+
*/
|
|
99
200
|
toPortal(): ReactDOMRoot | null;
|
|
100
201
|
}
|
|
101
202
|
/**
|
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":"AACA,OAAc,EAAgD,KAAK,WAAW,EAA4B,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAC1J,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EAEd,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,OAAO,EACP,YAAY,EACZ,KAAK,EACN,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAc,KAAK,IAAI,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"core.node.d.ts","sourceRoot":"","sources":["../src/core.node.ts"],"names":[],"mappings":"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"}
|