@meonode/ui 0.4.6 → 0.4.8

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/dist/client.d.ts +2 -2
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +1 -1
  5. package/dist/components/html.node.d.ts +139 -139
  6. package/dist/components/html.node.js +139 -139
  7. package/dist/components/meonode-unmounter.client.d.ts +6 -3
  8. package/dist/components/meonode-unmounter.client.d.ts.map +1 -1
  9. package/dist/components/meonode-unmounter.client.js +4 -2
  10. package/dist/components/react.node.d.ts +3 -3
  11. package/dist/components/react.node.js +3 -3
  12. package/dist/components/registry.client.js +6 -6
  13. package/dist/components/styled-renderer.client.js +2 -2
  14. package/dist/components/theme-provider.client.js +2 -2
  15. package/dist/components/theme-provider.d.ts +1 -1
  16. package/dist/components/theme-provider.js +1 -1
  17. package/dist/constants/common.const.js +1 -1
  18. package/dist/constants/css-properties.const.js +1 -1
  19. package/dist/core.node.d.ts +10 -10
  20. package/dist/core.node.d.ts.map +1 -1
  21. package/dist/core.node.js +39 -37
  22. package/dist/helper/common.helper.js +9 -9
  23. package/dist/helper/obj.helper.js +14 -14
  24. package/dist/helper/react-is.helper.js +21 -21
  25. package/dist/hoc/component.hoc.js +1 -1
  26. package/dist/hoc/portal.hoc.js +13 -13
  27. package/dist/hook/usePortal.js +2 -2
  28. package/dist/hook/useTheme.js +3 -3
  29. package/dist/nextjs-registry/index.d.ts +1 -1
  30. package/dist/nextjs-registry/index.js +1 -1
  31. package/dist/types/node.type.d.ts +5 -0
  32. package/dist/types/node.type.d.ts.map +1 -1
  33. package/dist/util/mount-tracker.util.js +3 -3
  34. package/dist/util/navigation-cache-manager.util.d.ts +5 -0
  35. package/dist/util/navigation-cache-manager.util.d.ts.map +1 -1
  36. package/dist/util/navigation-cache-manager.util.js +7 -7
  37. package/dist/util/node.util.d.ts +22 -26
  38. package/dist/util/node.util.d.ts.map +1 -1
  39. package/dist/util/node.util.js +75 -69
  40. package/dist/util/theme.util.d.ts +6 -6
  41. package/dist/util/theme.util.d.ts.map +1 -1
  42. package/dist/util/theme.util.js +17 -16
  43. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"node.util.d.ts","sourceRoot":"","sources":["../../src/util/node.util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.util.d.ts","sourceRoot":"","sources":["../../src/util/node.util.ts"],"names":[],"mappings":"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"}
@@ -1,77 +1,76 @@
1
- var _NodeUtil,_excluded=["ref","key","children","css","props","disableEmotion"],_excluded2=["style"];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 _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 _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}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,StrictMode}from"react";import{isForwardRef,isMemo,isReactClassComponent}from"../helper/react-is.helper.js";import{getCSSProps,getDOMProps,getElementTypeName,omitUndefined}from"../helper/common.helper.js";import{__DEBUG__}from"../constants/common.const.js";import{BaseNode}from"../core.node.js";import{createRoot}from"react-dom/client";/**
1
+ const _excluded=["ref","key","children","css","props","disableEmotion"],_excluded2=["style"];var _NodeUtil;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 _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}from"react";import{isForwardRef,isMemo,isReactClassComponent}from"../helper/react-is.helper.js";import{getCSSProps,getDOMProps,getElementTypeName,omitUndefined}from"../helper/common.helper.js";import{__DEBUG__}from"../constants/common.const.js";import{BaseNode}from"../core.node.js";import{createRoot}from"react-dom/client";/**
2
2
  * NodeUtil provides a collection of static utility methods and properties
3
3
  * used internally by BaseNode for various tasks such as hashing, shallow comparison,
4
4
  * and stable element ID generation. This centralizes common helper functions,
5
5
  * improving modularity and maintainability of the core library.
6
- */export class NodeUtil{constructor(){}/**
7
- * FNV-1a hash function.
8
- * @method fnv1aHash
9
- */static fnv1aHash(a){// FNV offset basis
10
- for(var b=Math.imul,c=2166136261,d=0;d<a.length;d++)c^=a.charCodeAt(d),c=b(c,16777619);return c>>>0;// Convert to unsigned 32-bit integer
11
- }/**
12
- * djb2 hash function.
13
- * @method djb2Hash
14
- */static djb2Hash(a){for(var b=5381,c=0;c<a.length;c++)b=33*b^a.charCodeAt(c);return b>>>0;// Convert to unsigned 32-bit integer
15
- }/**
6
+ */export class NodeUtil{constructor(){}// Determines if the current environment is server-side (Node.js) or client-side (browser).
7
+ /**
16
8
  * Combines FNV-1a and djb2 hash functions for a more robust signature.
17
9
  * @method hashString
18
- */static hashString(a){var b=NodeUtil.fnv1aHash(a),c=NodeUtil.djb2Hash(a);return"".concat(b.toString(36),"_").concat(c.toString(36));// Combine and convert to base36
19
- }/**
10
+ */static hashString(a){let b=2166136261,c=5381;// FNV offset basis
11
+ // djb2 init
12
+ for(let d=0;d<a.length;d++){const e=a.charCodeAt(d);// FNV-1a
13
+ // djb2
14
+ b^=e,b=Math.imul(b,16777619),c=33*c^e}return`${(b>>>0).toString(36)}_${(c>>>0).toString(36)}`}/**
20
15
  * Performs a shallow equality check between two objects.
21
16
  * @method shallowEqual
22
- */static shallowEqual(c,a){var b=Object.keys(c),d=Object.keys(a);return!(b.length!==d.length)&&b.every(function(b){return c[b]===a[b]})}/**
23
- * Generates a stable identifier for the given element type.
24
- * For primitive types (strings), it returns the string itself.
25
- * For component types (functions, classes, exotic components), it generates
26
- * and caches a unique ID using a WeakMap to ensure stability across calls.
27
- * @method getStableElementId
28
- */static getStableElementId(a){if(!NodeUtil.isServer)return a===StrictMode?StrictMode.name:"string"==typeof a?a:(NodeUtil._elementIdMap.has(a)||NodeUtil._elementIdMap.set({elementName:getElementTypeName(a)},"Component_".concat(NodeUtil._elementIdCounter++)),NodeUtil._elementIdMap.get(a));// Client-side: Use WeakMap to maintain stable IDs across calls
29
- }/**
17
+ */static shallowEqual(c,a){if(c===a)return!0;let b=0,d=0;for(const d in c){if(!(d in a)||c[d]!==a[d])return!1;b++}for(const b in a)d++;return b===d}/**
30
18
  * Creates a unique, stable signature from the element type and props.
31
19
  * This signature includes the element's type to prevent collisions between different components
32
20
  * and handles primitive values in arrays and objects for better caching.
33
21
  * @method createPropSignature
34
- */static createPropSignature(a,b){if(NodeUtil.isServer)return"";// Safe element identification that works with Next.js Client Components
35
- var c=NodeUtil.getStableElementId(a),d=Object.keys(b).sort(),e=["".concat(c,":")];if("function"==typeof a){var f=NodeUtil._functionSignatureCache.get(a);f||(f=NodeUtil.hashString(a.toString()),NodeUtil._functionSignatureCache.set(a,f)),e.push(f)}var g,h=_createForOfIteratorHelper(d);try{for(h.s();!(g=h.n()).done;){var i=g.value,j=b[i],k=void 0,l=_typeof(j);if("string"===l||"number"===l||"boolean"===l)k="".concat(i,":").concat(j,";");else if(null===j)k="".concat(i,":null;");else if(j===void 0)k="".concat(i,":undefined;");else if(Array.isArray(j)){// Hash primitive values in arrays for better cache hits
36
- var m=j.filter(function(a){var b=_typeof(a);return"string"===b||"number"===b||"boolean"===b||null===a});k=m.length===j.length?"".concat(i,":[").concat(m.join(","),"];"):"".concat(i,":[").concat(j.length,"];")}else if(j&&j.isBaseNode)k="".concat(i,":").concat(j.stableKey,";");else{// Include sorted keys for object structure signature
37
- var n=Object.keys(j).sort();k="".concat(i,":{").concat(n.join(","),"};")}e.push(k)}}catch(a){h.e(a)}finally{h.f()}return NodeUtil.hashString(e.join(","))}/**
22
+ */static createPropSignature(a,b){if(NodeUtil.isServer)return;const c=getElementTypeName(a),d=Object.keys(b).sort(),e=[`${c}:`];if("function"==typeof a){let b=NodeUtil._functionSignatureCache.get(a);b||(b=NodeUtil.hashString(a.toString()),NodeUtil._functionSignatureCache.set(a,b)),e.push(b)}for(const c of d){const a=b[c];let d;const f=typeof a;if("string"==f||"number"===f||"boolean"===f)d=`${c}:${a};`;else if(null===a)d=`${c}:null;`;else if(a===void 0)d=`${c}:undefined;`;else if(Array.isArray(a)){// Hash primitive values in arrays for better cache hits
23
+ const b=a.filter(a=>{const b=typeof a;return"string"==b||"number"===b||"boolean"===b||null===a});d=b.length===a.length?`${c}:[${b.join(",")}];`:`${c}:[${a.length}];`}else if(a&&a.isBaseNode)d=`${c}:${a.stableKey};`;else{// Include sorted keys for object structure signature
24
+ const b=Object.keys(a).sort();d=`${c}:{${b.join(",")}};`}e.push(d)}return NodeUtil.hashString(e.join(","))}/**
25
+ * Extracts "critical" props from a given set of props. Critical props are those
26
+ * that are frequently used for styling or event handling, such as `on*` handlers,
27
+ * `aria-*` attributes, `data-*` attributes, `css`, `className`, and `style`.
28
+ * This method is used to optimize prop processing by focusing on props that are
29
+ * most likely to influence rendering or behavior.
30
+ */static extractCriticalProps(a,b){const c={_keyCount:b.length};let d=0;for(const e of b){if(50<=d)break;// Fast path: direct Set check first (O(1))
31
+ if(NodeUtil.CRITICAL_PROPS.has(e)){c[e]=a[e],d++;continue}// Inline prefix checks using charCode (faster than startsWith for short prefixes)
32
+ const f=e.charCodeAt(0);// Check 'on' prefix (111 = 'o', 110 = 'n')
33
+ if(111===f&&110===e.charCodeAt(1)){c[e]=a[e],d++;continue}// Check 'aria' prefix (97 = 'a', 114 = 'r', 105 = 'i')
34
+ if(97===f&&114===e.charCodeAt(1)&&105===e.charCodeAt(2)&&97===e.charCodeAt(3)){c[e]=a[e],d++;continue}// Check 'data' prefix (100 = 'd', 97 = 'a', 116 = 't')
35
+ if(100===f&&97===e.charCodeAt(1)&&116===e.charCodeAt(2)&&97===e.charCodeAt(3)){c[e]=a[e],d++;continue}// Style prop check last (most expensive), only for smaller objects
36
+ 100>=b.length&&NodeUtil.isStyleProp(e)&&(c[e]=a[e],d++)}return c}/**
38
37
  * Retrieves computed CSS props from the cache with LRU tracking.
39
38
  * Access time and hit count are tracked for smarter eviction.
40
39
  * @method getCachedCssProps
41
- */static getCachedCssProps(a,b){if(NodeUtil.isServer||!b)return{cssProps:getCSSProps(a)};var c=BaseNode.propProcessingCache.get(b);if(c)return c.lastAccess=Date.now(),c.hitCount++,{cssProps:c.cssProps};var d=getCSSProps(a);return BaseNode.propProcessingCache.set(b,{cssProps:d,signature:b,lastAccess:Date.now(),hitCount:1}),BaseNode.propProcessingCache.size>NodeUtil.CACHE_SIZE_LIMIT&&!BaseNode.scheduledCleanup&&(BaseNode.scheduledCleanup=!0,"undefined"==typeof requestIdleCallback?setTimeout(function(){NodeUtil._evictLRUEntries(),BaseNode.scheduledCleanup=!1},100):requestIdleCallback(function(){NodeUtil._evictLRUEntries(),BaseNode.scheduledCleanup=!1},{timeout:2e3})),{cssProps:d}}/**
40
+ */static getCachedCssProps(a,b){if(NodeUtil.isServer||!b)return{cssProps:getCSSProps(a)};const c=BaseNode.propProcessingCache.get(b);if(c)return c.lastAccess=Date.now(),c.hitCount++,{cssProps:c.cssProps};const d=getCSSProps(a);return BaseNode.propProcessingCache.set(b,{cssProps:d,signature:b,lastAccess:Date.now(),hitCount:1}),BaseNode.propProcessingCache.size>NodeUtil.CACHE_SIZE_LIMIT&&!BaseNode.scheduledCleanup&&(BaseNode.scheduledCleanup=!0,"undefined"==typeof requestIdleCallback?setTimeout(()=>{NodeUtil._evictLRUEntries(),BaseNode.scheduledCleanup=!1},100):requestIdleCallback(()=>{NodeUtil._evictLRUEntries(),BaseNode.scheduledCleanup=!1},{timeout:2e3})),{cssProps:d}}/**
42
41
  * Implements an LRU eviction strategy that removes multiple entries at once.
43
42
  * It uses a scoring system where older and less frequently used entries have a higher eviction priority.
44
43
  * @method _evictLRUEntries
45
- */static _evictLRUEntries(){var a,b=Date.now(),c=[],d=_createForOfIteratorHelper(BaseNode.propProcessingCache.entries());// Calculate eviction scores for all entries
46
- try{for(d.s();!(a=d.n()).done;){var e=_slicedToArray(a.value,2),f=e[0],g=e[1],h=b-g.lastAccess,j=g.hitCount,k=h/1e3+1e3/(j+1);// Score: older age + lower frequency = higher score (more likely to evict)
44
+ */static _evictLRUEntries(){const a=Date.now(),b=[];// Calculate eviction scores for all entries
45
+ for(const[c,d]of BaseNode.propProcessingCache.entries()){const e=a-d.lastAccess,f=d.hitCount;// Score: older age + lower frequency = higher score (more likely to evict)
47
46
  // Normalize: age in seconds, frequency as inverse
48
- c.push({key:f,score:k})}// Sort by score (highest = most evictable)
49
- }catch(a){d.e(a)}finally{d.f()}c.sort(function(c,a){return a.score-c.score});// Remove top N entries
50
- for(var l=Math.min(NodeUtil.CACHE_CLEANUP_BATCH,c.length),m=0;m<l;m++)BaseNode.propProcessingCache["delete"](c[m].key)}/**
47
+ b.push({key:c,score:e/1e3+1e3/(f+1)})}// Sort by score (highest = most evictable)
48
+ b.sort((c,a)=>a.score-c.score);// Remove top N entries
49
+ const c=Math.min(NodeUtil.CACHE_CLEANUP_BATCH,b.length);for(let a=0;a<c;a++)BaseNode.propProcessingCache.delete(b[a].key)}/**
51
50
  * The main prop processing pipeline. It separates cacheable and non-cacheable props,
52
51
  * generates a signature for caching, and assembles the final props object.
53
52
  * @method processProps
54
- */static processProps(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},c=2<arguments.length?arguments[2]:void 0,d=b.ref,e=b.key,f=b.children,g=b.css,h=b.props,i=void 0===h?{}:h,j=b.disableEmotion,k=_objectWithoutProperties(b,_excluded);// --- Fast Path Optimization ---
55
- if(0===Object.keys(k).length&&!g)return omitUndefined({ref:d,key:e,disableEmotion:j,nativeProps:omitUndefined(i),children:NodeUtil._processChildren(f,j)});// --- Hybrid Caching Strategy ---
56
- var l={},m={};// 1. Categorize props into cacheable (primitives) and non-cacheable (objects/functions).
57
- for(var n in k)if(Object.prototype.hasOwnProperty.call(k,n)){var o=k[n],p=_typeof(o);"string"===p||"number"===p||"boolean"===p?l[n]=o:m[n]=o}// 2. Pass element type to signature generation
58
- var q=NodeUtil.createPropSignature(a,l),r=NodeUtil.getCachedCssProps(l,q),s=r.cssProps,t=getCSSProps(m),u=getDOMProps(k),v=_objectSpread(_objectSpread(_objectSpread({},s),t),g),w=NodeUtil._processChildren(f,j,c);// 3. Process non-cacheable props on every render to ensure correctness for functions and objects.
53
+ */static processProps(a,b={},c){const{ref:d,key:e,children:f,css:g,props:i={},disableEmotion:h}=b,j=_objectWithoutProperties(b,_excluded);// --- Fast Path Optimization ---
54
+ if(0===Object.keys(j).length&&!g)return omitUndefined({ref:d,key:e,disableEmotion:h,nativeProps:omitUndefined(i),children:NodeUtil._processChildren(f,h)});// --- Hybrid Caching Strategy ---
55
+ const k={},l={};// 1. Categorize props into cacheable (primitives) and non-cacheable (objects/functions).
56
+ for(const d in j)if(Object.prototype.hasOwnProperty.call(j,d)){const a=j[d],b=typeof a;"string"===b||"number"===b||"boolean"===b?k[d]=a:l[d]=a}// 2. Pass element type to signature generation
57
+ const m=NodeUtil.createPropSignature(a,k),{cssProps:n}=NodeUtil.getCachedCssProps(k,m),o=getCSSProps(l),p=getDOMProps(j),q=_objectSpread(_objectSpread(_objectSpread({},n),o),g),r=NodeUtil._processChildren(f,h,c);// 3. Process non-cacheable props on every render to ensure correctness for functions and objects.
59
58
  // DOM props are always processed fresh.
60
59
  // 4. Assemble the final CSS object.
61
60
  // --- Child Normalization ---
62
61
  // --- Final Assembly ---
63
- return omitUndefined(_objectSpread(_objectSpread({ref:d,key:e,css:v},u),{},{disableEmotion:j,nativeProps:omitUndefined(i),children:w}))}/**
62
+ return omitUndefined(_objectSpread(_objectSpread({ref:d,key:e,css:q},p),{},{disableEmotion:h,nativeProps:omitUndefined(i),children:r}))}/**
64
63
  * Processes and normalizes children of the node.
65
64
  * Converts raw children (React elements, primitives, or other BaseNodes) into a consistent format.
66
65
  * @param children The raw children to process.
67
66
  * @param disableEmotion If true, emotion styling will be disabled for these children.
68
67
  * @param parentStableKey The stable key of the parent node, used for generating unique keys for children.
69
- */static _processChildren(a,b,c){return a?"function"==typeof a?a:Array.isArray(a)?a.map(function(a,d){return NodeUtil.processRawNode(a,b,"".concat(c,"_").concat(d))}):NodeUtil.processRawNode(a,b,c):void 0}/**
68
+ */static _processChildren(a,b,c){return a?"function"==typeof a?a:Array.isArray(a)?a.map((a,d)=>NodeUtil.processRawNode(a,b,`${c}_${d}`)):NodeUtil.processRawNode(a,b,c):void 0}/**
70
69
  * Determines if a node should update based on its dependency array.
71
70
  * Uses a shallow comparison, similar to React's `useMemo` and `useCallback`.
72
71
  * @method shouldNodeUpdate
73
72
  */static shouldNodeUpdate(a,b,c){// SSR has no concept of re-renders, so deps system doesn't apply
74
- return!!NodeUtil.isServer||!c&&(!(void 0!==b)||!(void 0!==a)||b.length!==a.length||!!b.some(function(b,c){return!Object.is(b,a[c])}));// No deps array means always update.
73
+ return!!NodeUtil.isServer||!c&&(!(void 0!==b)||!(void 0!==a)||b.length!==a.length||!!b.some((b,c)=>!Object.is(b,a[c])));// No deps array means always update.
75
74
  // First render for this keyed component, or no previous deps.
76
75
  // Length change means update.
77
76
  // Shallow compare deps. If any have changed, update.
@@ -83,12 +82,12 @@ return!!NodeUtil.isServer||!c&&(!(void 0!==b)||!(void 0!==a)||b.length!==a.lengt
83
82
  * @method processRawNode
84
83
  */static processRawNode(a,b,c){// Primitives and null/undefined are returned as-is.
85
84
  if(null===a||a===void 0||"string"==typeof a||"number"==typeof a||"boolean"==typeof a)return a;// If it's already a BaseNode, clone it with a positional key if available.
86
- if(NodeUtil.isNodeInstance(a)){var d=c||b&&!a.rawProps.disableEmotion;if(d){// Create a new BaseNode instance.
87
- var e=new BaseNode(a.element,a.rawProps,a.dependencies);// Augment the internal stableKey with positional information.
85
+ if(NodeUtil.isNodeInstance(a)){const d=c||b&&!a.rawProps.disableEmotion;if(d){// Create a new BaseNode instance.
86
+ const d=new BaseNode(a.element,a.rawProps,a.dependencies);// Augment the internal stableKey with positional information.
88
87
  // This is purely for BaseNode's internal caching, not for React's 'key' prop.
89
- return e.stableKey="".concat(c,":").concat(e.stableKey),b&&!e.rawProps.disableEmotion&&(e.rawProps.disableEmotion=!0),e}return a}// Handle function-as-a-child (render props).
88
+ return d.stableKey=`${c}:${d.stableKey}`,b&&!d.rawProps.disableEmotion&&(d.rawProps.disableEmotion=!0),d}return a}// Handle function-as-a-child (render props).
90
89
  if(NodeUtil.isFunctionChild(a))return new BaseNode(NodeUtil.functionRenderer,{props:{render:a,disableEmotion:b}},void 0);// Handle standard React elements.
91
- if(isValidElement(a)){var f=a.props,g=f.style,h=_objectWithoutProperties(f,_excluded2),i=_objectSpread(_objectSpread({},h),g||{});return new BaseNode(a.type,_objectSpread(_objectSpread(_objectSpread({},i),null!==a.key&&void 0!==a.key?{key:a.key}:{}),{},{disableEmotion:b}),void 0)}// Handle component classes and memos.
90
+ if(isValidElement(a)){const c=a.props,{style:d}=c,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}),void 0)}// Handle component classes and memos.
92
91
  return isReactClassComponent(a)||isMemo(a)||isForwardRef(a)?new BaseNode(a,{disableEmotion:b},void 0):a instanceof React.Component?NodeUtil.processRawNode(a.render(),b,c):a;// Handle component instances.
93
92
  }/**
94
93
  * A helper to reliably identify if a given function is a "function-as-a-child" (render prop)
@@ -107,22 +106,23 @@ return isReactClassComponent(a)||isMemo(a)||isForwardRef(a)?new BaseNode(a,{disa
107
106
  * @param {Function} props.render The function-as-a-child to execute.
108
107
  * @param {boolean} [props.disableEmotion] Inherited flag to disable Emotion styling for children.
109
108
  * @returns {ReactNode | null | undefined} The processed and rendered output of the render function.
110
- */static functionRenderer(a){var b,c=a.render,d=a.disableEmotion;try{// Execute the render prop function to get its output.
111
- b=c()}catch(a){// If the render function throws, treat its output as null to prevent crashes.
112
- __DEBUG__&&console.error("MeoNode: Error executing function-as-a-child.",a),b=null}// Handle null or undefined results directly, as they are valid React render outputs.
113
- if(null===b||b===void 0)return b;// If the result is already a BaseNode instance, process it.
114
- if(NodeUtil.isNodeInstance(b))// If emotion is disabled for the parent and not explicitly re-enabled on the child,
109
+ */static functionRenderer({render:a,disableEmotion:b}){let c;try{// Execute the render prop function to get its output.
110
+ c=a()}catch(a){// If the render function throws, treat its output as null to prevent crashes.
111
+ __DEBUG__&&console.error("MeoNode: Error executing function-as-a-child.",a),c=null}// Handle null or undefined results directly, as they are valid React render outputs.
112
+ if(null===c||c===void 0)return c;// If the result is already a BaseNode instance, process it.
113
+ if(NodeUtil.isNodeInstance(c))// If emotion is disabled for the parent and not explicitly re-enabled on the child,
115
114
  // create a new BaseNode with emotion disabled and render it.
116
- return d&&!b.rawProps.disableEmotion?new BaseNode(b.element,_objectSpread(_objectSpread({},b.rawProps),{},{disableEmotion:!0})).render():b.render();// Otherwise, render the existing BaseNode directly.
115
+ return b&&!c.rawProps.disableEmotion?new BaseNode(c.element,_objectSpread(_objectSpread({},c.rawProps),{},{disableEmotion:!0})).render():c.render();// Otherwise, render the existing BaseNode directly.
117
116
  // If the result is an array, it likely contains multiple children.
118
- if(Array.isArray(b)){// Helper to generate a stable key for array items, crucial for React's reconciliation.
119
- var e=function safeGetKey(a,b){try{// Attempt to get a meaningful name for the element type.
120
- return"".concat(getElementTypeName(a),"-").concat(b)}catch(a){// Fallback to a generic key if type name cannot be determined.
121
- return __DEBUG__&&console.error("MeoNode: Could not determine element type name for key in function-as-a-child.",a),"item-".concat(b)}};// Map over the array, processing each item and assigning a key.
122
- return b.map(function(a,b){return NodeUtil.renderProcessedNode({processedElement:NodeUtil.processRawNode(a,d),passedKey:e(a,b),disableEmotion:d})})}if(b instanceof React.Component)return NodeUtil.renderProcessedNode({processedElement:NodeUtil.processRawNode(b.render(),d),disableEmotion:d});// Handle primitive types directly, as they are valid React children.
123
- if("string"==typeof b||"number"==typeof b||"boolean"==typeof b)return b;// For any other non-primitive, non-array result, process it as a single NodeElement.
124
- var f=NodeUtil.processRawNode(b,d);// If processing yields a valid element, render it.
125
- return f?NodeUtil.renderProcessedNode({processedElement:f,disableEmotion:d}):b;// Fallback: return the original result if it couldn't be processed into a renderable node.
117
+ if(Array.isArray(c)){// Helper to generate a stable key for array items, crucial for React's reconciliation.
118
+ const a=(a,b)=>{try{// Attempt to get a meaningful name for the element type.
119
+ return`${getElementTypeName(a)}-${b}`}catch(a){// Fallback to a generic key if type name cannot be determined.
120
+ return __DEBUG__&&console.error("MeoNode: Could not determine element type name for key in function-as-a-child.",a),`item-${b}`}};// Map over the array, processing each item and assigning a key.
121
+ return c.map((c,d)=>NodeUtil.renderProcessedNode({processedElement:NodeUtil.processRawNode(c,b),passedKey:a(c,d),disableEmotion:b}))}// If the result is a React component instance (e.g., `new MyClassComponent()`).
122
+ if(c instanceof React.Component)return NodeUtil.renderProcessedNode({processedElement:NodeUtil.processRawNode(c.render(),b),disableEmotion:b});// Handle primitive types directly, as they are valid React children.
123
+ if("string"==typeof c||"number"==typeof c||"boolean"==typeof c)return c;// For any other non-primitive, non-array result, process it as a single NodeElement.
124
+ const d=NodeUtil.processRawNode(c,b);// If processing yields a valid element, render it.
125
+ return d?NodeUtil.renderProcessedNode({processedElement:d,disableEmotion:b}):c;// Fallback: return the original result if it couldn't be processed into a renderable node.
126
126
  }/**
127
127
  * Renders a processed `NodeElement` into a ReactNode.
128
128
  * This helper is primarily used by `functionRenderer` to handle the output of render props,
@@ -132,18 +132,18 @@ return f?NodeUtil.renderProcessedNode({processedElement:f,disableEmotion:d}):b;/
132
132
  * This method is part of the child processing pipeline, converting internal `NodeElement` representations
133
133
  * into actual React elements that can be rendered by React.
134
134
  * @method renderProcessedNode
135
- */static renderProcessedNode(a){var b=a.processedElement,c=a.passedKey,d=a.disableEmotion,e={};// Initialize an object to hold common props that might be applied to the new BaseNode.
136
- // If a `passedKey` is provided, add it to `commonBaseNodeProps`.
135
+ */static renderProcessedNode({processedElement:a,passedKey:b,disableEmotion:c}){// Initialize an object to hold common props that might be applied to the new BaseNode.
136
+ const d={};// If a `passedKey` is provided, add it to `commonBaseNodeProps`.
137
137
  // This key is typically used for React's reconciliation process.
138
138
  // If the processed element is already a BaseNode instance.
139
- if(void 0!==c&&(e.key=c),NodeUtil.isNodeInstance(b)){var f,g=null===(f=b.rawProps)||void 0===f?void 0:f.key;// Get the existing key from the raw props of the BaseNode.
140
- // Apply the `disableEmotion` flag to the raw props of the BaseNode.
139
+ if(void 0!==b&&(d.key=b),NodeUtil.isNodeInstance(a)){// Get the existing key from the raw props of the BaseNode.
140
+ const e=a.rawProps?.key;// Apply the `disableEmotion` flag to the raw props of the BaseNode.
141
141
  // If the existing key is the same as the passed key, render the existing BaseNode directly.
142
142
  // This avoids unnecessary re-creation of the BaseNode instance.
143
- return b.rawProps.disableEmotion=d,g===c?b.render():new BaseNode(b.element,_objectSpread(_objectSpread({},b.rawProps),e)).render();// Otherwise, create a new BaseNode instance, merging existing raw props with common props, then render it.
143
+ return a.rawProps.disableEmotion=c,e===b?a.render():new BaseNode(a.element,_objectSpread(_objectSpread({},a.rawProps),d)).render();// Otherwise, create a new BaseNode instance, merging existing raw props with common props, then render it.
144
144
  }// If the processed element is a React class component (e.g., `class MyComponent extends React.Component`).
145
145
  // Create a new BaseNode for it, applying common props and `disableEmotion`, then render.
146
- 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;// If the processed element is an instance of a React component (e.g., `new MyComponent()`).
146
+ return isReactClassComponent(a)?new BaseNode(a,_objectSpread(_objectSpread({},d),{},{disableEmotion:c})).render():a instanceof React.Component?a.render():"function"==typeof a?createElement(a,{key:b}):a;// If the processed element is an instance of a React component (e.g., `new MyComponent()`).
147
147
  // Directly call its `render` method.
148
148
  // If the processed element is a function (likely a functional component or a render prop that returned a component type).
149
149
  // Create a React element directly using `createElement`, passing the `passedKey`.
@@ -152,13 +152,14 @@ return isReactClassComponent(b)?new BaseNode(b,_objectSpread(_objectSpread({},e)
152
152
  * Ensures that the necessary DOM element and React root are available for portal rendering.
153
153
  * This is only executed on the client-side.
154
154
  * @method ensurePortalInfrastructure
155
- */static ensurePortalInfrastructure(a){var b,c,d;if(NodeUtil.isServer)return!1;var e=NodeUtil.portalInfrastructure.get(a);// Check if infrastructure exists and is still connected
156
- if(null!==(b=e)&&void 0!==b&&null!==(b=b.domElement)&&void 0!==b&&b.isConnected&&null!==(c=e)&&void 0!==c&&c.reactRoot)return!0;// Clean up stale or disconnected infrastructure
157
- if(e&&(!(null!==(d=e.domElement)&&void 0!==d&&d.isConnected)||!e.reactRoot)){try{var f,g;null===(f=e.reactRoot)||void 0===f||null===(g=f.unmount)||void 0===g||g.call(f)}catch(a){__DEBUG__&&console.error("MeoNode: Error unmounting stale portal root.",a)}NodeUtil.cleanupPortalInfra(e),NodeUtil.portalInfrastructure["delete"](a),e=void 0}// Create new infrastructure
158
- var h=document.createElement("div");document.body.appendChild(h);var i=createRoot(h),j={render:i.render.bind(i),unmount:i.unmount.bind(i),update:function update(){}// Placeholder, will be overridden
159
- };return e={domElement:h,reactRoot:j},NodeUtil.portalInfrastructure.set(a,e),BaseNode.portalCleanupRegistry.register(a,{domElement:h,reactRoot:j},a),!0}static cleanupPortalInfra(a){try{var b;null!==(b=a.reactRoot)&&void 0!==b&&b.unmount&&a.reactRoot.unmount()}catch(a){__DEBUG__&&console.error("Portal cleanup error:",a)}try{var c;null!==(c=a.domElement)&&void 0!==c&&c.isConnected&&a.domElement.remove()}catch(a){__DEBUG__&&console.error("DOM removal error:",a)}}}// Unique ID generation for elements
155
+ */static ensurePortalInfrastructure(a){if(NodeUtil.isServer)return!1;let b=NodeUtil.portalInfrastructure.get(a);// Check if infrastructure exists and is still connected
156
+ if(b?.domElement?.isConnected&&b?.reactRoot)return!0;// Clean up stale or disconnected infrastructure
157
+ if(b&&(!b.domElement?.isConnected||!b.reactRoot)){try{b.reactRoot?.unmount?.()}catch(a){__DEBUG__&&console.error("MeoNode: Error unmounting stale portal root.",a)}NodeUtil.cleanupPortalInfra(b),NodeUtil.portalInfrastructure.delete(a),b=void 0}// Create new infrastructure
158
+ const c=document.createElement("div");document.body.appendChild(c);const d=createRoot(c),e={render:d.render.bind(d),unmount:d.unmount.bind(d),update:()=>{}// Placeholder, will be overridden
159
+ };return b={domElement:c,reactRoot:e},NodeUtil.portalInfrastructure.set(a,b),BaseNode.portalCleanupRegistry.register(a,{domElement:c,reactRoot:e},a),!0}static cleanupPortalInfra(a){try{a.reactRoot?.unmount&&a.reactRoot.unmount()}catch(a){__DEBUG__&&console.error("Portal cleanup error:",a)}try{a.domElement?.isConnected&&a.domElement.remove()}catch(a){__DEBUG__&&console.error("DOM removal error:",a)}}}// Unique ID generation for elements
160
160
  // Cache configuration
161
161
  // Clean up 50 entries at once when limit hit
162
+ // Critical props for signature generation and shallow comparison
162
163
  // Portal infrastructure using WeakMap for memory-safe management
163
164
  /**
164
165
  * Type guard to check if an object is a NodeInstance.
@@ -170,4 +171,9 @@ var h=document.createElement("div");document.body.appendChild(h);var i=createRoo
170
171
  * - and an 'isBaseNode' property.
171
172
  * @param obj The object to check.
172
173
  * @returns True if the object is a NodeInstance, false otherwise.
173
- */_NodeUtil=NodeUtil,_defineProperty(NodeUtil,"isServer","undefined"==typeof window),_defineProperty(NodeUtil,"_elementIdMap",new WeakMap),_defineProperty(NodeUtil,"_elementIdCounter",0),_defineProperty(NodeUtil,"_functionSignatureCache",new WeakMap),_defineProperty(NodeUtil,"CACHE_SIZE_LIMIT",500),_defineProperty(NodeUtil,"CACHE_CLEANUP_BATCH",50),_defineProperty(NodeUtil,"portalInfrastructure",new WeakMap),_defineProperty(NodeUtil,"isNodeInstance",function(a){return"object"===_typeof(a)&&null!==a&&"element"in a&&"function"==typeof a.render&&"function"==typeof a.toPortal&&"isBaseNode"in a}),_defineProperty(NodeUtil,"isStyleProp",_NodeUtil.isServer||"undefined"==typeof document?function(){return!1}:function(a){return a in document.body.style});
174
+ *//**
175
+ * Determines if a given string `k` is a valid CSS style property.
176
+ * This check is performed only on the client-side by checking if the property exists in `document.body.style`.
177
+ * On the server-side, it always returns `false`.
178
+ * @param k The string to check.
179
+ */_NodeUtil=NodeUtil,_defineProperty(NodeUtil,"isServer","undefined"==typeof window),_defineProperty(NodeUtil,"_functionSignatureCache",new WeakMap),_defineProperty(NodeUtil,"CACHE_SIZE_LIMIT",500),_defineProperty(NodeUtil,"CACHE_CLEANUP_BATCH",50),_defineProperty(NodeUtil,"CRITICAL_PROPS",new Set(["css","className","disableEmotion","props"])),_defineProperty(NodeUtil,"portalInfrastructure",new WeakMap),_defineProperty(NodeUtil,"isNodeInstance",a=>"object"==typeof a&&null!==a&&"element"in a&&"function"==typeof a.render&&"function"==typeof a.toPortal&&"isBaseNode"in a),_defineProperty(NodeUtil,"isStyleProp",_NodeUtil.isServer||"undefined"==typeof document?()=>!1:a=>a in document.body.style);
@@ -1,5 +1,5 @@
1
- import type { CSSInterpolation, CSSProperties } from '@emotion/serialize';
2
- import type { Theme } from '../types/node.type.js';
1
+ import type { CSSProperties } from '@emotion/serialize';
2
+ import type { CssProp, Theme } from '../types/node.type.js';
3
3
  /**
4
4
  * Parsed flex shorthand components for CSS flex property
5
5
  * @interface FlexComponents
@@ -34,7 +34,7 @@ export declare class ThemeUtil {
34
34
  * parseFlexShorthand('1 0 auto') // → {grow: 1, shrink: 0, basis: 'auto'}
35
35
  */
36
36
  static parseFlexShorthand(flex: CSSProperties['flex']): FlexComponents | null;
37
- static isPlainObject: (value: any) => boolean;
37
+ static isPlainObject: (value: unknown) => value is Record<string, unknown>;
38
38
  /**
39
39
  * Resolves theme variable references in an object's values iteratively.
40
40
  * This function uses a manual work stack to traverse the object, which prevents
@@ -44,9 +44,9 @@ export declare class ThemeUtil {
44
44
  * object references for unchanged parts of the tree, which is critical for
45
45
  * React's reconciliation and memoization.
46
46
  */
47
- static resolveObjWithTheme: (obj?: Record<string, any>, theme?: Theme | undefined, options?: {
47
+ static resolveObjWithTheme: <O extends Record<string, unknown>>(obj: O, theme?: Theme | undefined, options?: {
48
48
  processFunctions?: boolean | undefined;
49
- }) => any;
49
+ }) => O;
50
50
  static clearThemeCache: () => void;
51
51
  /**
52
52
  * Resolves default CSS styles to fix common flexbox layout issues.
@@ -102,7 +102,7 @@ export declare class ThemeUtil {
102
102
  * })
103
103
  * // → { display: 'flex', flexWrap: 'wrap', minHeight: 0, minWidth: 0 }
104
104
  */
105
- static resolveDefaultStyle: (style: CSSInterpolation) => {};
105
+ static resolveDefaultStyle: (style: CssProp) => {};
106
106
  }
107
107
  export {};
108
108
  //# sourceMappingURL=theme.util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme.util.d.ts","sourceRoot":"","sources":["../../src/util/theme.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,yBAAyB,CAAA;AAiGjE;;;;;;GAMG;AACH,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB;AACD,qBAAa,SAAS;IACpB,OAAO,eAAiB;IAExB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAmC;IAE5D;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAc,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,cAAc,GAAG,IAAI,CA2BnF;IAED,OAAc,aAAa,0BAM1B;IAED;;;;;;;;OAQG;IACH,OAAc,mBAAmB;;cAoHhC;IAED,OAAc,eAAe,aAE5B;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqDG;IACH,OAAc,mBAAmB,kCAmEhC;CACF"}
1
+ {"version":3,"file":"theme.util.d.ts","sourceRoot":"","sources":["../../src/util/theme.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAe,MAAM,yBAAyB,CAAA;AAiG1E;;;;;;GAMG;AACH,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB;AACD,qBAAa,SAAS;IACpB,OAAO,eAAiB;IAExB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAmC;IAE5D;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAc,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,cAAc,GAAG,IAAI,CA2BnF;IAED,OAAc,aAAa,uDAM1B;IAED;;;;;;;;OAQG;IACH,OAAc,mBAAmB,GAAI,CAAC;;YA0HrC;IAED,OAAc,eAAe,aAE5B;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqDG;IACH,OAAc,mBAAmB,yBAmEhC;CACF"}
@@ -1,9 +1,9 @@
1
- var _ThemeUtil,_excluded=["flex"];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 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{ObjHelper}from"../helper/obj.helper.js";import{getValueByPath}from"../helper/common.helper.js";/**
1
+ const _excluded=["flex"];var _ThemeUtil;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 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 _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{ObjHelper}from"../helper/obj.helper.js";import{getValueByPath}from"../helper/common.helper.js";/**
2
2
  * Cache manager for theme resolution operations.
3
3
  */class ThemeResolverCache{constructor(){_defineProperty(this,"CACHE_SIZE_LIMIT",500),_defineProperty(this,"CACHE_EVICTION_BATCH_SIZE",50),_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
4
  * Generate a stable cache key from object and theme, including the theme mode.
5
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),d=this._resolutionCache.get(c);return d&&(this._resolutionCache["delete"](c),this._resolutionCache.set(c,d)),d||null}setResolution(a,b,c){var d=this._generateCacheKey(a,b);this._resolutionCache.set(d,c),this._resolutionCache.size>this.CACHE_SIZE_LIMIT&&this._evict(this._resolutionCache)}getPathLookup(a,b){var c="".concat(ObjHelper.stringify(a),"_").concat(b),d=this._pathLookupCache.get(c);return d&&(this._pathLookupCache["delete"](c),this._pathLookupCache.set(c,d)),d||null}setPathLookup(a,b,c){var d="".concat(ObjHelper.stringify(a),"_").concat(b);this._pathLookupCache.set(d,c),this._pathLookupCache.size>this.CACHE_SIZE_LIMIT&&this._evict(this._pathLookupCache)}_evict(a){for(var b,c=a.keys(),d=0;d<this.CACHE_EVICTION_BATCH_SIZE&&(b=c.next().value,b);d++)a["delete"](b)}getThemeRegex(){return this._themeRegex.lastIndex=0,this._themeRegex}shouldCache(){return"undefined"==typeof window}clear(){this._resolutionCache.clear(),this._pathLookupCache.clear()}}/**
6
+ return`${ObjHelper.stringify(a)}_${b.mode}_${ObjHelper.stringify(b.system)}`}getResolution(a,b){const c=this._generateCacheKey(a,b),d=this._resolutionCache.get(c);return d&&(this._resolutionCache.delete(c),this._resolutionCache.set(c,d)),d||null}setResolution(a,b,c){const d=this._generateCacheKey(a,b);this._resolutionCache.set(d,c),this._resolutionCache.size>this.CACHE_SIZE_LIMIT&&this._evict(this._resolutionCache)}getPathLookup(a,b){const c=`${ObjHelper.stringify(a)}_${b}`,d=this._pathLookupCache.get(c);return d&&(this._pathLookupCache.delete(c),this._pathLookupCache.set(c,d)),d??null}setPathLookup(a,b,c){const d=`${ObjHelper.stringify(a)}_${b}`;this._pathLookupCache.set(d,c),this._pathLookupCache.size>this.CACHE_SIZE_LIMIT&&this._evict(this._pathLookupCache)}_evict(a){const b=a.keys();for(let c=0;c<this.CACHE_EVICTION_BATCH_SIZE;c++){const c=b.next().value;if(c)a.delete(c);else break}}getThemeRegex(){return this._themeRegex.lastIndex=0,this._themeRegex}shouldCache(){return"undefined"==typeof window}clear(){this._resolutionCache.clear(),this._pathLookupCache.clear()}}/**
7
7
  * Parsed flex shorthand components for CSS flex property
8
8
  * @interface FlexComponents
9
9
  * @property grow - The flex-grow value (how much the item should grow)
@@ -28,7 +28,7 @@ return"".concat(ObjHelper.stringify(a),"_").concat(b.mode,"_").concat(ObjHelper.
28
28
  * parseFlexShorthand('1 0 auto') // → {grow: 1, shrink: 0, basis: 'auto'}
29
29
  */static parseFlexShorthand(a){// Early returns for invalid inputs
30
30
  if(null===a||a===void 0)return null;// Handle numeric flex values (e.g., flex: 1)
31
- if("number"==typeof a)return{grow:a,shrink:1,basis:"0%"};if("string"!=typeof a)return null;var b=a.trim().toLowerCase();if(!b)return null;// Handle CSS keyword values
31
+ if("number"==typeof a)return{grow:a,shrink:1,basis:"0%"};if("string"!=typeof a)return null;const b=a.trim().toLowerCase();if(!b)return null;// Handle CSS keyword values
32
32
  return"none"===b?{grow:0,shrink:0,basis:"auto"}:"auto"===b?{grow:1,shrink:1,basis:"auto"}:"initial"===b?{grow:0,shrink:1,basis:"auto"}:null}}/**
33
33
  * Resolves theme variable references in an object's values iteratively.
34
34
  * This function uses a manual work stack to traverse the object, which prevents
@@ -90,11 +90,12 @@ return"none"===b?{grow:0,shrink:0,basis:"auto"}:"auto"===b?{grow:1,shrink:1,basi
90
90
  * flexWrap: 'wrap'
91
91
  * })
92
92
  * // → { display: 'flex', flexWrap: 'wrap', minHeight: 0, minWidth: 0 }
93
- */_ThemeUtil=ThemeUtil,_defineProperty(ThemeUtil,"themeCache",ThemeResolverCache.getInstance()),_defineProperty(ThemeUtil,"isPlainObject",function(a){if("object"!==_typeof(a)||null===a)return!1;var b=Object.getPrototypeOf(a);return null===b||b===Object.prototype}),_defineProperty(ThemeUtil,"resolveObjWithTheme",function(){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(_ThemeUtil.themeCache.shouldCache()){var g=_ThemeUtil.themeCache.getResolution(b,c);if(null!==g)return g}// Used for cycle detection within the current traversal path.
94
- for(var h=[{value:b,isProcessed:!1}],j=new Map,k=new Set,l=function processThemeString(a){var b=_ThemeUtil.themeCache.getThemeRegex(),c=!1,d=a.replace(b,function(a,b){var d=_ThemeUtil.themeCache.getPathLookup(f,b);return null===d&&(d=getValueByPath(f,b),_ThemeUtil.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(!_ThemeUtil.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],(_ThemeUtil.isPlainObject(o)||Array.isArray(o))&&!k.has(o)&&h.push({value:o,isProcessed:!1})}else{h.pop(),k["delete"](n);// Unwind the path
95
- 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 _ThemeUtil.themeCache.shouldCache()&&_ThemeUtil.themeCache.setResolution(b,c,D),D}),_defineProperty(ThemeUtil,"clearThemeCache",function(){_ThemeUtil.themeCache.clear()}),_defineProperty(ThemeUtil,"resolveDefaultStyle",function(a){var b;if(null===a||a===void 0||"string"==typeof a||"number"==typeof a||"boolean"==typeof a)return{};// === STEP 1: EXTRACT FLEX PROPERTY ===
93
+ */_ThemeUtil=ThemeUtil,_defineProperty(ThemeUtil,"themeCache",ThemeResolverCache.getInstance()),_defineProperty(ThemeUtil,"isPlainObject",a=>{if("object"!=typeof a||null===a)return!1;const b=Object.getPrototypeOf(a);return null===b||b===Object.prototype}),_defineProperty(ThemeUtil,"resolveObjWithTheme",(a,b,c={})=>{const{processFunctions:d=!1}=c;if(!b||!b.system||"object"!=typeof b.system||0===Object.keys(b.system).length||!a||0===Object.keys(a).length)return a;const e=b.system;if(_ThemeUtil.themeCache.shouldCache()){const c=_ThemeUtil.themeCache.getResolution(a,b);if(null!==c)return c}const f=[{value:a,isProcessed:!1}],g=new Map,h=new Set,i=a=>{const b=_ThemeUtil.themeCache.getThemeRegex();let c=!1;const d=a.replace(b,(a,b)=>{let d=_ThemeUtil.themeCache.getPathLookup(e,b);if(null===d&&(d=getValueByPath(e,b),_ThemeUtil.themeCache.setPathLookup(e,b,d)),void 0!==d&&null!==d){if(c=!0,"object"==typeof d){if(!Array.isArray(d)&&"default"in d)return d.default;throw new Error("The provided theme path is invalid!")}return d}return a});return c?d:a};// Used for cycle detection within the current traversal path.
94
+ for(;0<f.length;){const a=f[f.length-1],c=a.value;if(!_ThemeUtil.isPlainObject(c)&&!Array.isArray(c)){f.pop();continue}if(g.has(c)){f.pop();continue}if(!a.isProcessed){a.isProcessed=!0,h.add(c);const b=Array.isArray(c)?c:Object.values(c);for(let a=b.length-1;0<=a;a--){const c=b[a];// Only push containers that are not already in the current path (cycle detection).
95
+ (_ThemeUtil.isPlainObject(c)||Array.isArray(c))&&!h.has(c)&&f.push({value:c,isProcessed:!1})}}else{f.pop(),h.delete(c);// Unwind the path
96
+ let a=c;if(Array.isArray(c)){let b=null;for(let a=0;a<c.length;a++){const d=c[a],e=g.get(d)??d;e!==d&&(null===b&&(b=[...c]),b[a]=e)}null!==b&&(a=b)}else{let e=null;for(const a in c)if(Object.prototype.hasOwnProperty.call(c,a)){const f=c[a];let h=g.get(f)??f;if("function"==typeof h&&d){const a=h(b);h="string"==typeof a&&a.includes("theme.")?i(a):a}else"string"==typeof h&&h.includes("theme.")&&(h=i(h));h!==f&&(null===e&&(e=_objectSpread({},c)),e[a]=h)}null!==e&&(a=e)}g.set(c,a)}}const j=g.get(a)??a;return _ThemeUtil.themeCache.shouldCache()&&_ThemeUtil.themeCache.setResolution(a,b,j),j}),_defineProperty(ThemeUtil,"clearThemeCache",()=>{_ThemeUtil.themeCache.clear()}),_defineProperty(ThemeUtil,"resolveDefaultStyle",a=>{if(null===a||a===void 0||"string"==typeof a||"number"==typeof a||"boolean"==typeof a)return{};// === STEP 1: EXTRACT FLEX PROPERTY ===
96
97
  // Extract flex shorthand to handle it separately from individual flex properties
97
- var c=a,d=c.flex,e=_objectWithoutProperties(c,_excluded),f="flex"===e.display||"inline-flex"===e.display,g=!!(e.overflow||e.overflowY||e.overflowX),h=(null===(b=e.flexFlow)||void 0===b?void 0:b.includes("wrap"))||"wrap"===e.flexWrap||"wrap-reverse"===e.flexWrap,i="flexShrink"in a&&a.flexShrink!==void 0,j=d?_ThemeUtil.parseFlexShorthand(d):null,k=void 0;// === STEP 2: ANALYZE LAYOUT CONTEXT ===
98
+ const b=a,{flex:c}=b,d=_objectWithoutProperties(b,_excluded),e="flex"===d.display||"inline-flex"===d.display,f=!!(d.overflow||d.overflowY||d.overflowX),g=d.flexFlow?.includes("wrap")||"wrap"===d.flexWrap||"wrap-reverse"===d.flexWrap,h="flexShrink"in a&&a.flexShrink!==void 0,i=c?_ThemeUtil.parseFlexShorthand(c):null;// === STEP 2: ANALYZE LAYOUT CONTEXT ===
98
99
  // Determine what kind of element we're dealing with
99
100
  // Check if overflow is set (any overflow value indicates potential scrolling)
100
101
  // Check if flex wrapping is enabled (allows items to wrap to new lines)
@@ -102,16 +103,16 @@ var c=a,d=c.flex,e=_objectWithoutProperties(c,_excluded),f="flex"===e.display||"
102
103
  // Respect user's explicit flexShrink setting
103
104
  // Extract shrink value from flex shorthand if provided
104
105
  // === STEP 4: DETERMINE FLEX SHRINK BEHAVIOR ===
105
- // Only set flexShrink if user hasn't explicitly provided it
106
- if(!i)// If flex shorthand contains a shrink value, use that
107
- if(j)k=j.shrink;else// Apply context-based defaults
108
- if(!f)// NON-FLEX CONTAINER LOGIC:
106
+ let j;// Only set flexShrink if user hasn't explicitly provided it
107
+ if(!h)// If flex shorthand contains a shrink value, use that
108
+ if(i)j=i.shrink;else// Apply context-based defaults
109
+ if(!e)// NON-FLEX CONTAINER LOGIC:
109
110
  // Default flex-shrink to 0 to prevent unwanted shrinking of flex items
110
- k=0;else// FLEX CONTAINER LOGIC:
111
+ j=0;else// FLEX CONTAINER LOGIC:
111
112
  // Only prevent shrinking when container is constrained (no overflow handling, no wrapping)
112
- if(!g){var l="column"===e.flexDirection||"column-reverse"===e.flexDirection,m="row"===e.flexDirection||"row-reverse"===e.flexDirection||!e.flexDirection;l&&!h?k=0:m&&!h&&(k=0)}// === STEP 5: RETURN RESOLVED STYLES ===
113
+ if(!f){const a="column"===d.flexDirection||"column-reverse"===d.flexDirection,b="row"===d.flexDirection||"row-reverse"===d.flexDirection||!d.flexDirection;a&&!g?j=0:b&&!g&&(j=0)}// === STEP 5: RETURN RESOLVED STYLES ===
113
114
  // Combine all processed styles with essential defaults
114
- return _objectSpread({flex:d,// Preserve original flex shorthand
115
- flexShrink:k,// Apply computed or explicit flexShrink
115
+ return _objectSpread({flex:c,// Preserve original flex shorthand
116
+ flexShrink:j,// Apply computed or explicit flexShrink
116
117
  minHeight:0,// Fix flex item scrolling issues
117
- minWidth:0},e)});
118
+ minWidth:0},d)});
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.4.6",
4
+ "version": "0.4.8",
5
5
  "type": "module",
6
6
  "main": "./dist/main.js",
7
7
  "types": "./dist/main.d.ts",