@meonode/ui 0.2.13 → 0.2.15

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 CHANGED
@@ -5,59 +5,107 @@ 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.15] - 2025-09-12
9
+
10
+ ### Added
11
+
12
+ - **feat(cache)**: implement hybrid caching strategy for processed children using WeakMap and Map to improve performance
13
+ and memory management
14
+ - **feat(helper)**: implement nodeSignature for stable signatures and improve createStableHash with bounded traversal
15
+ - **feat(helper)**: enhance ObjHelper.stringify method for deterministic serialization with sorted keys and special type
16
+ handling
17
+
18
+ ### Refactor
19
+
20
+ - **refactor**: improve type definitions and error handling in rendering methods
21
+
22
+ ### Test
23
+
24
+ - **test(tests)**: add performance tests for rendering a single-page layout in React
25
+ - **test**: add cleanup after each test and verify component display names for debugging
26
+
27
+ ## [0.2.14] - 2025-09-12
28
+
29
+ ### Added
30
+
31
+ - **feat**: Add `Container` alias for `Div` to simplify general-purpose container usage.
32
+ - **feat**: Add caching for processed children to optimize performance in `BaseNode` class.
33
+
34
+ ### Removed
35
+
36
+ - **feat**: Remove `shallowEqual` utility function from `common.helper.ts`.
37
+
38
+ ### Fixed
39
+
40
+ - **feat**: Improve performance by optimizing existing key checks and handling null values in rendering functions.
41
+
8
42
  ## [0.2.13] - 2025-09-11
9
43
 
10
44
  ### Added
45
+
11
46
  - **feat**: Add pre-commit hook for linting and testing, update package.json scripts.
12
47
  - **feat**: Add Jest configuration and setup for testing with TypeScript.
13
48
  - **test**: Add comprehensive tests for BaseNode core functionality.
14
49
 
15
50
  ### Fixed
16
- - **core**: Remove stylable elements from NO_STYLE_TAGS to ensure only non-visual/metadata tags are excluded from CSS styling.
51
+
52
+ - **core**: Remove stylable elements from NO_STYLE_TAGS to ensure only non-visual/metadata tags are excluded from CSS
53
+ styling.
17
54
 
18
55
  ## [0.2.12] - 2025-09-11
19
56
 
20
57
  ### Fixed
21
- - **core.node**: Removed the child processing cache to fix a critical bug that caused infinite page loads in server-side rendering environments.
58
+
59
+ - **core.node**: Removed the child processing cache to fix a critical bug that caused infinite page loads in server-side
60
+ rendering environments.
22
61
  - **helper**: Corrected the element type retrieval logic within the hashing function used for child node processing.
23
62
 
24
63
  ## [0.2.11] - 2025-09-11
25
64
 
26
65
  ### Enhanced
27
- - **core.node**: Significantly improved JSDoc documentation for the `BaseNode` class, providing better clarity on prop processing, child handling, and rendering logic.
28
- - **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.
66
+
67
+ - **core.node**: Significantly improved JSDoc documentation for the `BaseNode` class, providing better clarity on prop
68
+ processing, child handling, and rendering logic.
69
+ - **core.node**: Overhauled the child processing and caching mechanism to improve server-side performance and resolve a
70
+ memory leak. This includes a move from object stringification to a more performant hashing strategy for cache keys and
71
+ the introduction of a cache management policy.
29
72
 
30
73
  ### Fixed
74
+
31
75
  - **helper**: Corrected an issue in flexbox style processing where an unnecessary string check was performed.
32
76
  - **core.node**: Updated a function placeholder to adhere to the unused parameter naming convention.
33
77
 
34
78
  ## [0.2.10] - 2025-09-10
35
79
 
36
80
  ### Added
37
- - **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`.
38
- - **Before**:
39
- ```typescript
40
- import { createRoot } from 'react-dom/client';
41
- import { Div } from '@meonode/ui';
42
-
43
- const container = document.getElementById('root');
44
- const root = createRoot(container);
45
- root.render(Div({ children: 'Hello' }).render());
46
- ```
47
- - **After**:
48
- ```typescript
49
- import { Div } from '@meonode/ui';
50
- import { render } from '@meonode/ui/client';
51
81
 
52
- const container = document.getElementById('root');
53
- render(Div({ children: 'Hello' }), container);
54
- ```
82
+ - **core**: add top-level `render` function for a cleaner and simpler API when mounting a Meonode instance to the DOM.
83
+ This abstracts away the need to manually use `react-dom/client`.
84
+ - **Before**:
85
+ ```typescript
86
+ import { createRoot } from 'react-dom/client';
87
+ import { Div } from '@meonode/ui';
88
+
89
+ const container = document.getElementById('root');
90
+ const root = createRoot(container);
91
+ root.render(Div({ children: 'Hello' }).render());
92
+ ```
93
+ - **After**:
94
+ ```typescript
95
+ import { Div } from '@meonode/ui';
96
+ import { render } from '@meonode/ui/client';
97
+
98
+ const container = document.getElementById('root');
99
+ render(Div({ children: 'Hello' }), container);
100
+ ```
55
101
  - **constants**: add `NO_STYLE_TAGS` array and `noStyleTagsSet` for quick lookup of tags that should not receive styles
56
102
 
57
103
  ### Enhanced
104
+
58
105
  - **core**: enhance `StyledRenderer` integration to check for no-style tags
59
106
 
60
107
  ### Changed
108
+
61
109
  - **helper**: update CSS property set to use constants and add no-style tag check
62
110
  - **package**: update dependencies to latest versions
63
111
  - **directory**: rename `data` directory to `constants` for clarity
@@ -66,14 +114,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66
114
  ## [0.2.9] - 2025-09-05
67
115
 
68
116
  ### Fixed
117
+
69
118
  - **core.types**: corrected `MergedProps` definition to restore proper TypeScript inference and props autocomplete
70
- - Fixes regression from v0.2.8 where `createNode` and `createChildrenFirstNode` lost autocomplete for props due to incorrect `MergedProps` typing
119
+ - Fixes regression from v0.2.8 where `createNode` and `createChildrenFirstNode` lost autocomplete for props due to
120
+ incorrect `MergedProps` typing
71
121
 
72
122
  ## [0.2.8] - 2025-09-05
73
123
 
74
124
  ### Changed
125
+
75
126
  - **core.node**: refactor props handling to use a single utility type:
76
- - `MergedProps<E, AdditionalProps>` — merges `NodeProps<E>` with custom props, giving precedence to overlapping keys from `AdditionalProps`.
127
+ - `MergedProps<E, AdditionalProps>` — merges `NodeProps<E>` with custom props, giving precedence to overlapping keys
128
+ from `AdditionalProps`.
77
129
  - Simplifies and unifies the typing system for node factories (`createNode`, `createChildrenFirstNode`).
78
130
  - Improves developer experience when working with prebuilt components:
79
131
  - Example:
@@ -88,11 +140,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
88
140
  onChange: ({ target }) => console.log(target.value),
89
141
  })
90
142
  ```
91
- Extending prebuilt components is now safer and more predictable, with generic props always taking precedence when keys overlap.
143
+ Extending prebuilt components is now safer and more predictable, with generic props always taking precedence when keys
144
+ overlap.
92
145
 
93
146
  - **helpers**: reorganize helper files and update import paths
94
147
 
95
148
  ### Fixed
149
+
96
150
  - **styled-renderer**: make `children` prop optional in `StyledRendererProps`
97
151
 
98
152
  ## [0.2.7] - 2025-09-04
@@ -104,7 +158,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
104
158
  ## [0.2.6] - 2025-09-04
105
159
 
106
160
  - **deps**: update TypeScript ESLint, native-preview, and jsdoc to latest versions
107
- - **core.node**: improve generateIndexedKeyIfNeeded to accept object parameters and enhance key uniqueness with children count
161
+ - **core.node**: improve generateIndexedKeyIfNeeded to accept object parameters and enhance key uniqueness with children
162
+ count
108
163
  - **imports**: update import paths to include file extensions for compatibility
109
164
 
110
165
  ## [0.2.5] - 2025-09-03
@@ -114,6 +169,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
114
169
  ## [0.2.4] - 2025-09-02
115
170
 
116
171
  ### Added
172
+
117
173
  - **core**: Exposed the original element via the created Node for easier access and debugging.
118
174
  ```typescript
119
175
  import { createNode } from "@meonode/ui";
@@ -128,49 +184,61 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
128
184
  ## [0.2.3] - 2025-09-01
129
185
 
130
186
  ### Fixed
187
+
131
188
  - **types**: Remove forbidden css import to resolve RSC error
132
189
 
133
190
  ### Changed
191
+
134
192
  - **package**: Bump version to 0.2.3
135
193
 
136
194
  ## [0.2.2] - 2025-09-01
137
195
 
138
196
  ### Added
197
+
139
198
  - **core**: Include nativeProps in props extraction for improved component flexibility
140
199
 
141
200
  ### Enhanced
201
+
142
202
  - **types**: Enhance StyledRendererProps and FinalNodeProps for improved type safety
143
203
 
144
204
  ### Changed
205
+
145
206
  - **package**: Bump version to 0.2.2
146
207
 
147
208
  ## [0.2.1] - 2025-09-01
148
209
 
149
210
  ### Changed
211
+
150
212
  - **types**: Update CSS type from CSSObject to CSSInterpolation for better compatibility
151
213
  - **package**: Bump version to 0.2.1
152
214
 
153
215
  ## [0.2.0] - 2025-08-31
154
216
 
155
217
  ### Added
218
+
156
219
  - **docs**: Add badges for NPM version, license, and bundle size to README
157
220
 
158
221
  ### Enhanced
222
+
159
223
  - **docs**: Update installation instructions and enhance clarity in core concepts
160
224
  - **docs**: Enhance documentation with new examples and improved clarity
161
225
 
162
226
  ### Removed
227
+
163
228
  - **package**: Remove deprecated hook entry from package.json
164
229
 
165
230
  ### Fixed
231
+
166
232
  - **core.node**: Add suppressHydrationWarning to propsForCreateElement
167
233
 
168
234
  ### Changed
235
+
169
236
  - **package**: Bump version to 0.2.0
170
237
 
171
238
  ## [0.1.121] - 2025-08-30
172
239
 
173
240
  ### Changed
241
+
174
242
  - **core.node**: Simplify style resolution and improve prop handling
175
243
  - **StyledRenderer**: Remove unused style prop and simplify component
176
244
  - **package**: Bump version to 0.1.121
@@ -178,6 +246,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
178
246
  ## [0.1.120] - 2025-08-30
179
247
 
180
248
  ### Added
249
+
181
250
  - **styles**: Add Emotion support and Next.js style registry integration
182
251
  - Add @emotion/react and @emotion/cache dependencies
183
252
  - Add StyledRenderer and StyleRegistry components for Emotion
@@ -185,37 +254,45 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
185
254
  - Add nextjs-registry export for Next.js style registry
186
255
 
187
256
  ### Enhanced
257
+
188
258
  - **core**: Enhance style handling with StyledRenderer for Emotion support
189
259
 
190
260
  ### Fixed
261
+
191
262
  - **deps**: Update peerDependencies for Emotion and React to use version constraints
192
263
  - **deps**: Update @types/react and @types/react-dom to latest versions
193
264
 
194
265
  ### Changed
266
+
195
267
  - **package**: Update peerDependencies for @emotion/cache
196
268
  - **package**: Bump version to 0.1.120
197
269
 
198
270
  ## [0.1.118] - 2025-08-30
199
271
 
200
272
  ### Fixed
273
+
201
274
  - **deps**: Update peerDependencies for Emotion and React to use version constraints
202
275
 
203
276
  ### Changed
277
+
204
278
  - **package**: Bump version to 0.1.118
205
279
 
206
280
  ## [0.1.117] - 2025-08-30
207
281
 
208
282
  ### Added
283
+
209
284
  - **flexbox**: Improve default style resolution and add flex shorthand parser
210
285
  - Add parseFlexShorthand to extract flex-grow, shrink, and basis
211
286
  - Enhance resolveDefaultStyle to respect explicit flex/flexShrink values
212
287
  - Improve handling of minHeight, minWidth, and flexShrink for flex items
213
288
 
214
289
  ### Enhanced
290
+
215
291
  - **core**: Refine type of finalChildren for improved type safety
216
292
  - **docs**: Update documentation for clarity on flexbox scrolling fixes
217
293
 
218
294
  ### Changed
295
+
219
296
  - **core**: Move comments position for better readability
220
297
  - **imports**: Remove .js extensions from internal imports
221
298
  - **package**: Bump version to 0.1.117
@@ -223,6 +300,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
223
300
  ## [0.1.116] - 2025-08-27
224
301
 
225
302
  ### Changed
303
+
226
304
  - **package**: Bump version to 0.1.116
227
305
 
228
306
  ---
@@ -233,17 +311,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
233
311
  - The project focuses on building React UIs with type-safe fluency without JSX syntax
234
312
  - Recent development has emphasized Emotion integration, type safety improvements, and enhanced flexbox support
235
313
  - For a complete history, view all commits on GitHub: [View all commits](https://github.com/l7aromeo/meonode-ui/commits)
236
-
237
- ## Development Highlights
238
-
239
- ### Major Features Added
240
- - **Emotion Support**: Complete integration with @emotion/react for CSS-in-JS styling
241
- - **Next.js Integration**: Style registry support for server-side rendering
242
- - **Enhanced Type Safety**: Improved TypeScript definitions and prop handling
243
- - **Flexbox Enhancements**: Advanced flex shorthand parsing and default style resolution
244
-
245
- ### Core Improvements
246
- - Better component flexibility with native props extraction
247
- - Simplified style resolution and prop handling
248
- - Enhanced documentation and examples
249
- - Improved dependency management and version constraints