@meonode/ui 0.1.50 → 0.1.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/core.node.js
CHANGED
|
@@ -19,8 +19,8 @@ if(a instanceof BaseNode){var f;return null!==(f=a.rawProps)&&void 0!==f&&f.node
|
|
|
19
19
|
if(a instanceof React.Component)return a.props.nodetheme||void 0===e?a.render():new BaseNode(a.render(),_objectSpread(_objectSpread({},a.props),{},{nodetheme:e})).render();// Validate element type before returning
|
|
20
20
|
if(!isValidElementType(a)){var g=getComponentType(a);throw new Error("Invalid element type: ".concat(g," provided!"))}// Return valid React elements as-is
|
|
21
21
|
return a}),this.element=a,this.rawProps=c;// Destructure raw props into relevant parts
|
|
22
|
-
var d=c.children,e=c.nodetheme,f=c.theme,g=_objectWithoutProperties(c,_excluded),h=f||e,i=this._resolveObjWithTheme(g,h),j=getCSSProps(i),k=getDOMProps(i),l=void 0;// Resolve any theme variables in the remaining props
|
|
23
|
-
// Extract style-related props that match valid CSS properties
|
|
22
|
+
var d=c.children,e=c.nodetheme,f=c.theme,g=_objectWithoutProperties(c,_excluded),h=f||e,i=this._resolveObjWithTheme(g,h),j=_objectSpread({minHeight:0,minWidth:0},getCSSProps(i)),k=getDOMProps(i),l=void 0;// Resolve any theme variables in the remaining props
|
|
23
|
+
// Extract style-related props that match valid CSS properties and add default minHeight/minWidth
|
|
24
24
|
// Extract remaining props that are valid DOM attributes
|
|
25
25
|
// Process children while maintaining theme inheritance
|
|
26
26
|
// Combine processed props into final normalized form
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hook/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"./useClasses";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function getServerStyles(): string;
|
|
2
|
+
type CSSValue = string | number;
|
|
3
|
+
interface NestedStyle {
|
|
4
|
+
[key: string]: CSSValue | NestedStyle;
|
|
5
|
+
}
|
|
6
|
+
interface StyleObject extends NestedStyle {
|
|
7
|
+
[key: string]: CSSValue | StyleObject;
|
|
8
|
+
}
|
|
9
|
+
export declare function useClasses(sxObject: StyleObject, deps?: any[]): string;
|
|
10
|
+
export declare function purgeStyles(): void;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=useClasses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useClasses.d.ts","sourceRoot":"","sources":["../../src/hook/useClasses.ts"],"names":[],"mappings":"AAMA,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAuBD,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;AAC/B,UAAU,WAAW;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAA;CACtC;AACD,UAAU,WAAY,SAAQ,WAAW;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAA;CACtC;AA+CD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,GAAE,GAAG,EAAO,GAAG,MAAM,CA2F1E;AA4GD,wBAAgB,WAAW,SAa1B"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
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 _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(b,c){if(b){if("string"==typeof b)return _arrayLikeToArray(b,c);var a={}.toString.call(b).slice(8,-1);return"Object"===a&&b.constructor&&(a=b.constructor.name),"Map"===a||"Set"===a?Array.from(b):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?_arrayLikeToArray(b,c):void 0}}function _arrayLikeToArray(b,c){(null==c||c>b.length)&&(c=b.length);for(var d=0,f=Array(c);d<c;d++)f[d]=b[d];return f}function _iterableToArrayLimit(b,c){var d=null==b?null:"undefined"!=typeof Symbol&&b[Symbol.iterator]||b["@@iterator"];if(null!=d){var g,h,j,k,l=[],a=!0,m=!1;try{if(j=(d=d.call(b)).next,0===c){if(Object(d)!==d)return;a=!1}else for(;!(a=(g=j.call(d)).done)&&(l.push(g.value),l.length!==c);a=!0);}catch(a){m=!0,h=a}finally{try{if(!a&&null!=d["return"]&&(k=d["return"](),Object(k)!==k))return}finally{if(m)throw h}}return l}}function _arrayWithHoles(a){if(Array.isArray(a))return a}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{useEffect,useMemo}from"react";// Server-side rendering support
|
|
2
|
+
var serverStyles=[],serverRuleIndex=0;export function getServerStyles(){return serverStyles.join("\n")}// Client-side style management
|
|
3
|
+
var styleSheet;if("undefined"!=typeof document){var styleTag=document.head.querySelector("#__sx")||function(){var a=document.createElement("style");return a.id="__sx",document.head.appendChild(a),a}();styleSheet=styleTag.sheet}var ruleIndex=0,sxCache=new Map,refCountMap=new Map,ruleMap=new Map,unitlessProperties=new Set(["animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth"]);// Improved type definitions
|
|
4
|
+
// Unitless CSS properties
|
|
5
|
+
export function useClasses(a){var b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[],c=useMemo(function(){return"".concat(stableStringify(a),"::").concat(stableStringify(b))},[a,b]);// Stable cache key generation
|
|
6
|
+
// Manage reference counting
|
|
7
|
+
// Return cached className if available
|
|
8
|
+
if(useEffect(function(){return refCountMap.set(c,(refCountMap.get(c)||0)+1),function(){var a=refCountMap.get(c)||1;1===a?(removeStyleRules(c),sxCache["delete"](c),refCountMap["delete"](c)):refCountMap.set(c,a-1)}},[c]),sxCache.has(c))return sxCache.get(c);// Generate new className
|
|
9
|
+
var d="sx-".concat(ruleIndex++),e=[],f={},g={},h={},i={};// Process style object
|
|
10
|
+
for(var j in a){var k=a[j];// Handle nested selectors
|
|
11
|
+
if(j.startsWith("&")){var l=j.replace(/&/g,".".concat(d)),m=toCssString(k);m&&e.push("".concat(l," { ").concat(m," }"))}// Handle media queries
|
|
12
|
+
else j.startsWith("@media")?processAtRuleBlock(j,k,d,g):j.startsWith("@container")?processAtRuleBlock(j,k,d,h):j.startsWith("@supports")?processAtRuleBlock(j,k,d,i):f[j]=k}// Add base styles
|
|
13
|
+
var n=toCssString(f);// Inject styles
|
|
14
|
+
if(n&&e.unshift(".".concat(d," { ").concat(n," }")),processAtRuleBlocks(g,e),processAtRuleBlocks(h,e),processAtRuleBlocks(i,e),"undefined"==typeof document){// Server-side rendering
|
|
15
|
+
var o="sx-".concat(serverRuleIndex++),p=e.map(function(a){return a.replace(new RegExp(d,"g"),o)}).join("\n");return serverStyles.push(p),sxCache.set(c,o),o}// Cache and return
|
|
16
|
+
return styleSheet&&// Client-side injection
|
|
17
|
+
injectStyles(e),ruleMap.set(c,e),sxCache.set(c,d),d}// Helper function to process at-rule blocks
|
|
18
|
+
function processAtRuleBlock(a,b,c,d){for(var e in d[a]||(d[a]=[]),b){var f=b[e],g=".".concat(c);if(e.startsWith("&")){var h=e.replace(/&/g,g),i=toCssString(f);i&&d[a].push("".concat(h," { ").concat(i," }"))}else{var j=toCssString(_defineProperty({},e,f));j&&d[a].push("".concat(g," { ").concat(j," }"))}}}// Helper to finalize at-rule blocks
|
|
19
|
+
function processAtRuleBlocks(a,b){for(var c=0,d=Object.entries(a);c<d.length;c++){var e=_slicedToArray(d[c],2),f=e[0],g=e[1];g.length&&b.push("".concat(f," { ").concat(g.join(" ")," }"))}}// Inject styles using CSSStyleSheet API
|
|
20
|
+
function injectStyles(a){if(styleSheet){var b,c=_createForOfIteratorHelper(a);try{for(c.s();!(b=c.n()).done;){var d=b.value;try{styleSheet.insertRule(d,styleSheet.cssRules.length)}catch(a){console.error("Failed to insert CSS rule: ".concat(d),a)}}}catch(a){c.e(a)}finally{c.f()}}}// Remove unused style rules
|
|
21
|
+
function removeStyleRules(a){var b=ruleMap.get(a);if(b&&styleSheet){// Find and remove rules in reverse order
|
|
22
|
+
for(var c,d=styleSheet.cssRules.length-1;0<=d;d--)c=styleSheet.cssRules[d],b.includes(c.cssText)&&styleSheet.deleteRule(d);ruleMap["delete"](a)}}// Convert style objects to CSS strings with nesting support
|
|
23
|
+
function toCssString(a){return Object.entries(a).map(function(a){var b=_slicedToArray(a,2),c=b[0],d=b[1];// Handle nested objects recursively
|
|
24
|
+
return"object"===_typeof(d)&&null!==d?toCssString(d):"number"!=typeof d||isUnitlessProperty(c)?"".concat(camelToKebab(c),": ").concat(d,";"):"".concat(camelToKebab(c),": ").concat(d,"px;");// Handle numeric values
|
|
25
|
+
}).join(" ")}// Check if property is unitless
|
|
26
|
+
function isUnitlessProperty(a){return unitlessProperties.has(a)}// Stable JSON stringification
|
|
27
|
+
function stableStringify(a){if(null===a||"object"!==_typeof(a))return JSON.stringify(a);if(Array.isArray(a))return"[".concat(a.map(stableStringify).join(","),"]");var b=Object.keys(a).sort(),c=b.map(function(b){return"\"".concat(b,"\":").concat(stableStringify(a[b]))});return"{".concat(c.join(","),"}")}// Convert camelCase to kebab-case
|
|
28
|
+
function camelToKebab(a){return a.replace(/([A-Z])([A-Z])/g,"$1-$2").replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}// Global style cleanup function
|
|
29
|
+
export function purgeStyles(){if(styleSheet)for(;0<styleSheet.cssRules.length;)styleSheet.deleteRule(0);serverStyles=[],sxCache.clear(),ruleMap.clear(),refCountMap.clear(),ruleIndex=0,serverRuleIndex=0}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meonode/ui",
|
|
3
3
|
"description": "A structured approach to component composition with built-in theming, prop separation, and dynamic children handling.",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.52",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/main.js",
|
|
7
7
|
"types": "./dist/main.d.ts",
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
".": {
|
|
10
10
|
"import": "./dist/main.js",
|
|
11
11
|
"types": "./dist/main.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"./hook": {
|
|
14
|
+
"import": "./dist/hook/index.js",
|
|
15
|
+
"types": "./dist/hook/index.d.ts"
|
|
12
16
|
}
|
|
13
17
|
},
|
|
14
18
|
"files": [
|