@meonode/ui 1.4.5 → 1.4.6

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.
@@ -1 +1 @@
1
- "use strict";var e=require("../helper/common.helper.cjs");const t=Symbol.for("@meonode/ui/serverActiveTheme"),r=Symbol.for("@meonode/ui/serverThemeVariables");function o(e){return`--meonode-theme-${e.replace(/[^\w.-]/g,"-").replace(/\./g,"-")}`}function s(){return e.getGlobalState(r,()=>({byName:new Map}))}exports.buildThemeVariablesCss=function(e){if(!e?.system||"object"!=typeof e.system)return"";const t=[],r=[{path:"",value:e.system}];for(;r.length>0;){const e=r.pop();if(!e||!e.value||"object"!=typeof e.value)continue;const s=e.value;for(const[n,l]of Object.entries(s)){const s=e.path?`${e.path}.${n}`:n;if(null!=l)if("string"!=typeof l&&"number"!=typeof l&&"boolean"!=typeof l){if("object"==typeof l){const e=l.default;"string"!=typeof e&&"number"!=typeof e&&"boolean"!=typeof e||t.push([o(s),String(e)]),r.push({path:s,value:l})}}else t.push([o(s),String(l)])}}return 0===t.length?"":`:root{${t.sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${e}:${t};`).join("")}}`},exports.consumeServerThemeVariablesCss=function(){const e=s();if(0===e.byName.size)return;const t=Array.from(e.byName.entries()).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${e}:${t};`).join("");return e.byName.clear(),t?{id:"theme-vars",cssText:`:root{${t}}`}:void 0},exports.getActiveServerTheme=function(){return e.getGlobalState(t,()=>({})).activeTheme},exports.registerServerThemeVariables=function(e){if(!e?.system||"object"!=typeof e.system)return;const t=s(),r=[{path:"",value:e.system}];for(;r.length>0;){const e=r.pop();if(!e||!e.value||"object"!=typeof e.value)continue;const s=e.value;for(const[n,l]of Object.entries(s)){const s=e.path?`${e.path}.${n}`:n;if(null!=l)if("string"!=typeof l&&"number"!=typeof l&&"boolean"!=typeof l){if("object"==typeof l){const e=l.default;"string"!=typeof e&&"number"!=typeof e&&"boolean"!=typeof e||t.byName.set(o(s),String(e)),r.push({path:s,value:l})}}else t.byName.set(o(s),String(l))}}},exports.replaceThemeTokensWithCssVars=function(e){const t=/theme\.([a-zA-Z0-9_.-]+)/g,r=e=>{if(!e.includes("theme."))return e;t.lastIndex=0;let r=!1;const s=e.replace(t,(e,t)=>(r=!0,`var(${o(t)})`));return r?s:e},s=e=>{if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype};if("string"==typeof e)return r(e);if(!s(e)&&!Array.isArray(e))return e;const n=[{value:e,isProcessed:!1}],l=new Map,a=new Set;for(;n.length>0;){const e=n[n.length-1],t=e.value;if(s(t)||Array.isArray(t))if(l.has(t))n.pop();else if(e.isProcessed){n.pop(),a.delete(t);let e=t;if(Array.isArray(t)){let o=null;for(let e=0;e<t.length;e++){const n=t[e];let a=n;"string"==typeof n?a=r(n):(s(n)||Array.isArray(n))&&(a=l.get(n)??n),a!==n&&(null===o&&(o=[...t]),o[e]=a)}null!==o&&(e=o)}else{let o=null;const n=t;for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e)){const t=n[e];let a=e,i=t;e.includes("theme.")&&(a=r(e)),"string"==typeof t?i=r(t):(s(t)||Array.isArray(t))&&(i=l.get(t)??t),i===t&&a===e||(null===o&&(o={...n}),a!==e&&delete o[e],o[a]=i)}null!==o&&(e=o)}l.set(t,e)}else{e.isProcessed=!0,a.add(t);const r=Array.isArray(t)?t:Object.values(t);for(let e=r.length-1;e>=0;e--){const t=r[e];!s(t)&&!Array.isArray(t)||a.has(t)||n.push({value:t,isProcessed:!1})}}else n.pop()}return l.get(e)??e},exports.setActiveServerTheme=function(r){e.getGlobalState(t,()=>({})).activeTheme=r};
1
+ "use strict";var e=require("../helper/common.helper.cjs");const t=Symbol.for("@meonode/ui/serverActiveTheme"),r=Symbol.for("@meonode/ui/serverThemeVariables");function o(e){return`--meonode-theme-${e.replace(/[^\w.-]/g,"-").replace(/\./g,"-")}`}function s(){return e.getGlobalState(r,()=>({byName:new Map}))}const n=new WeakMap;exports.buildThemeVariablesCss=function(e){if(!e?.system||"object"!=typeof e.system)return"";const t=[],r=[{path:"",value:e.system}];for(;r.length>0;){const e=r.pop();if(!e||!e.value||"object"!=typeof e.value)continue;const s=e.value;for(const[n,l]of Object.entries(s)){const s=e.path?`${e.path}.${n}`:n;if(null!=l)if("string"!=typeof l&&"number"!=typeof l&&"boolean"!=typeof l){if("object"==typeof l){const e=l.default;"string"!=typeof e&&"number"!=typeof e&&"boolean"!=typeof e||t.push([o(s),String(e)]),r.push({path:s,value:l})}}else t.push([o(s),String(l)])}}return 0===t.length?"":`:root{${t.sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${e}:${t};`).join("")}}`},exports.consumeServerThemeVariablesCss=function(){const e=s();if(0===e.byName.size)return;const t=Array.from(e.byName.entries()).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${e}:${t};`).join("");return e.byName.clear(),t?{id:"theme-vars",cssText:`:root{${t}}`}:void 0},exports.getActiveServerTheme=function(){return e.getGlobalState(t,()=>({})).activeTheme},exports.registerServerThemeVariables=function(e){if(!e?.system||"object"!=typeof e.system)return;const t=s(),r=[{path:"",value:e.system}];for(;r.length>0;){const e=r.pop();if(!e||!e.value||"object"!=typeof e.value)continue;const s=e.value;for(const[n,l]of Object.entries(s)){const s=e.path?`${e.path}.${n}`:n;if(null!=l)if("string"!=typeof l&&"number"!=typeof l&&"boolean"!=typeof l){if("object"==typeof l){const e=l.default;"string"!=typeof e&&"number"!=typeof e&&"boolean"!=typeof e||t.byName.set(o(s),String(e)),r.push({path:s,value:l})}}else t.byName.set(o(s),String(l))}}},exports.replaceThemeTokensWithCssVars=function(e){const t=/theme\.([a-zA-Z0-9_.-]+)/g,r=e=>{if(!e.includes("theme."))return e;t.lastIndex=0;let r=!1;const s=e.replace(t,(e,t)=>(r=!0,`var(${o(t)})`));return r?s:e},s=e=>{if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype};if("string"==typeof e)return r(e);if(!s(e)&&!Array.isArray(e))return e;const l=n.get(e);if(void 0!==l)return l;const a=[{value:e,isProcessed:!1}],i=new Map,c=new Set;for(;a.length>0;){const e=a[a.length-1],t=e.value;if(s(t)||Array.isArray(t))if(i.has(t))a.pop();else if(e.isProcessed){a.pop(),c.delete(t);let e=t;if(Array.isArray(t)){let o=null;for(let e=0;e<t.length;e++){const n=t[e];let l=n;"string"==typeof n?l=r(n):(s(n)||Array.isArray(n))&&(l=i.get(n)??n),l!==n&&(null===o&&(o=[...t]),o[e]=l)}null!==o&&(e=o)}else{let o=null;const n=t;for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e)){const t=n[e];let l=t;"string"==typeof t?l=r(t):(s(t)||Array.isArray(t))&&(l=i.get(t)??t),l!==t&&(null===o&&(o={...n}),o[e]=l)}null!==o&&(e=o)}i.set(t,e)}else{e.isProcessed=!0,c.add(t);const r=Array.isArray(t)?t:Object.values(t);for(let e=r.length-1;e>=0;e--){const t=r[e];!s(t)&&!Array.isArray(t)||c.has(t)||a.push({value:t,isProcessed:!1})}}else a.pop()}const p=i.get(e)??e;return n.set(e,p),p!==e&&"object"==typeof p&&null!==p&&n.set(p,p),p},exports.setActiveServerTheme=function(r){e.getGlobalState(t,()=>({})).activeTheme=r};
@@ -1 +1 @@
1
- import{getGlobalState as e}from"../helper/common.helper.js";const t=Symbol.for("@meonode/ui/serverActiveTheme"),o=Symbol.for("@meonode/ui/serverThemeVariables");function r(){return e(t,()=>({})).activeTheme}function n(o){e(t,()=>({})).activeTheme=o}function s(e){return`--meonode-theme-${e.replace(/[^\w.-]/g,"-").replace(/\./g,"-")}`}function l(){return e(o,()=>({byName:new Map}))}function a(e){if(!e?.system||"object"!=typeof e.system)return;const t=l(),o=[{path:"",value:e.system}];for(;o.length>0;){const e=o.pop();if(!e||!e.value||"object"!=typeof e.value)continue;const r=e.value;for(const[n,l]of Object.entries(r)){const r=e.path?`${e.path}.${n}`:n;if(null!=l)if("string"!=typeof l&&"number"!=typeof l&&"boolean"!=typeof l){if("object"==typeof l){const e=l.default;"string"!=typeof e&&"number"!=typeof e&&"boolean"!=typeof e||t.byName.set(s(r),String(e)),o.push({path:r,value:l})}}else t.byName.set(s(r),String(l))}}}function i(){const e=l();if(0===e.byName.size)return;const t=Array.from(e.byName.entries()).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${e}:${t};`).join("");return e.byName.clear(),t?{id:"theme-vars",cssText:`:root{${t}}`}:void 0}function f(e){if(!e?.system||"object"!=typeof e.system)return"";const t=[],o=[{path:"",value:e.system}];for(;o.length>0;){const e=o.pop();if(!e||!e.value||"object"!=typeof e.value)continue;const r=e.value;for(const[n,l]of Object.entries(r)){const r=e.path?`${e.path}.${n}`:n;if(null!=l)if("string"!=typeof l&&"number"!=typeof l&&"boolean"!=typeof l){if("object"==typeof l){const e=l.default;"string"!=typeof e&&"number"!=typeof e&&"boolean"!=typeof e||t.push([s(r),String(e)]),o.push({path:r,value:l})}}else t.push([s(r),String(l)])}}if(0===t.length)return"";return`:root{${t.sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${e}:${t};`).join("")}}`}function c(e){const t=/theme\.([a-zA-Z0-9_.-]+)/g,o=e=>{if(!e.includes("theme."))return e;t.lastIndex=0;let o=!1;const r=e.replace(t,(e,t)=>(o=!0,`var(${s(t)})`));return o?r:e},r=e=>{if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype};if("string"==typeof e)return o(e);if(!r(e)&&!Array.isArray(e))return e;const n=[{value:e,isProcessed:!1}],l=new Map,a=new Set;for(;n.length>0;){const e=n[n.length-1],t=e.value;if(r(t)||Array.isArray(t))if(l.has(t))n.pop();else if(e.isProcessed){n.pop(),a.delete(t);let e=t;if(Array.isArray(t)){let n=null;for(let e=0;e<t.length;e++){const s=t[e];let a=s;"string"==typeof s?a=o(s):(r(s)||Array.isArray(s))&&(a=l.get(s)??s),a!==s&&(null===n&&(n=[...t]),n[e]=a)}null!==n&&(e=n)}else{let n=null;const s=t;for(const e in s)if(Object.prototype.hasOwnProperty.call(s,e)){const t=s[e];let a=e,i=t;e.includes("theme.")&&(a=o(e)),"string"==typeof t?i=o(t):(r(t)||Array.isArray(t))&&(i=l.get(t)??t),i===t&&a===e||(null===n&&(n={...s}),a!==e&&delete n[e],n[a]=i)}null!==n&&(e=n)}l.set(t,e)}else{e.isProcessed=!0,a.add(t);const o=Array.isArray(t)?t:Object.values(t);for(let e=o.length-1;e>=0;e--){const t=o[e];!r(t)&&!Array.isArray(t)||a.has(t)||n.push({value:t,isProcessed:!1})}}else n.pop()}return l.get(e)??e}export{f as buildThemeVariablesCss,i as consumeServerThemeVariablesCss,r as getActiveServerTheme,a as registerServerThemeVariables,c as replaceThemeTokensWithCssVars,n as setActiveServerTheme};
1
+ import{getGlobalState as e}from"../helper/common.helper.js";const t=Symbol.for("@meonode/ui/serverActiveTheme"),o=Symbol.for("@meonode/ui/serverThemeVariables");function r(){return e(t,()=>({})).activeTheme}function n(o){e(t,()=>({})).activeTheme=o}function s(e){return`--meonode-theme-${e.replace(/[^\w.-]/g,"-").replace(/\./g,"-")}`}function l(){return e(o,()=>({byName:new Map}))}function a(e){if(!e?.system||"object"!=typeof e.system)return;const t=l(),o=[{path:"",value:e.system}];for(;o.length>0;){const e=o.pop();if(!e||!e.value||"object"!=typeof e.value)continue;const r=e.value;for(const[n,l]of Object.entries(r)){const r=e.path?`${e.path}.${n}`:n;if(null!=l)if("string"!=typeof l&&"number"!=typeof l&&"boolean"!=typeof l){if("object"==typeof l){const e=l.default;"string"!=typeof e&&"number"!=typeof e&&"boolean"!=typeof e||t.byName.set(s(r),String(e)),o.push({path:r,value:l})}}else t.byName.set(s(r),String(l))}}}function i(){const e=l();if(0===e.byName.size)return;const t=Array.from(e.byName.entries()).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${e}:${t};`).join("");return e.byName.clear(),t?{id:"theme-vars",cssText:`:root{${t}}`}:void 0}function c(e){if(!e?.system||"object"!=typeof e.system)return"";const t=[],o=[{path:"",value:e.system}];for(;o.length>0;){const e=o.pop();if(!e||!e.value||"object"!=typeof e.value)continue;const r=e.value;for(const[n,l]of Object.entries(r)){const r=e.path?`${e.path}.${n}`:n;if(null!=l)if("string"!=typeof l&&"number"!=typeof l&&"boolean"!=typeof l){if("object"==typeof l){const e=l.default;"string"!=typeof e&&"number"!=typeof e&&"boolean"!=typeof e||t.push([s(r),String(e)]),o.push({path:r,value:l})}}else t.push([s(r),String(l)])}}if(0===t.length)return"";return`:root{${t.sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${e}:${t};`).join("")}}`}const f=new WeakMap;function p(e){const t=/theme\.([a-zA-Z0-9_.-]+)/g,o=e=>{if(!e.includes("theme."))return e;t.lastIndex=0;let o=!1;const r=e.replace(t,(e,t)=>(o=!0,`var(${s(t)})`));return o?r:e},r=e=>{if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype};if("string"==typeof e)return o(e);if(!r(e)&&!Array.isArray(e))return e;const n=f.get(e);if(void 0!==n)return n;const l=[{value:e,isProcessed:!1}],a=new Map,i=new Set;for(;l.length>0;){const e=l[l.length-1],t=e.value;if(r(t)||Array.isArray(t))if(a.has(t))l.pop();else if(e.isProcessed){l.pop(),i.delete(t);let e=t;if(Array.isArray(t)){let n=null;for(let e=0;e<t.length;e++){const s=t[e];let l=s;"string"==typeof s?l=o(s):(r(s)||Array.isArray(s))&&(l=a.get(s)??s),l!==s&&(null===n&&(n=[...t]),n[e]=l)}null!==n&&(e=n)}else{let n=null;const s=t;for(const e in s)if(Object.prototype.hasOwnProperty.call(s,e)){const t=s[e];let l=t;"string"==typeof t?l=o(t):(r(t)||Array.isArray(t))&&(l=a.get(t)??t),l!==t&&(null===n&&(n={...s}),n[e]=l)}null!==n&&(e=n)}a.set(t,e)}else{e.isProcessed=!0,i.add(t);const o=Array.isArray(t)?t:Object.values(t);for(let e=o.length-1;e>=0;e--){const t=o[e];!r(t)&&!Array.isArray(t)||i.has(t)||l.push({value:t,isProcessed:!1})}}else l.pop()}const c=a.get(e)??e;return f.set(e,c),c!==e&&"object"==typeof c&&null!==c&&f.set(c,c),c}export{c as buildThemeVariablesCss,i as consumeServerThemeVariablesCss,r as getActiveServerTheme,a as registerServerThemeVariables,p as replaceThemeTokensWithCssVars,n as setActiveServerTheme};
@@ -24,8 +24,13 @@ export declare function buildThemeVariablesCss(theme: Theme): string;
24
24
  * matters when forwarding props to memoized components.
25
25
  * - Iterative with a manual work stack — safe for deeply nested trees.
26
26
  * - Detects cycles via a path Set.
27
- * - Replaces tokens inside object keys too (e.g. nested selectors/media
28
- * queries that embed `theme.*` references).
27
+ * - Only transforms string **values**, never object keys. Keys that hold
28
+ * theme tokens (e.g. `'@media (max-width: theme.breakpoint.md)'`) must
29
+ * resolve to concrete values, since CSS variables are invalid inside
30
+ * media features and selector text. Key resolution is left to
31
+ * `ThemeUtil.resolveObjWithTheme`, which has access to the live theme.
32
+ * - Memoized via a module-level WeakMap so the same input reference (e.g.
33
+ * a `sx` object defined outside a render body) is converted at most once.
29
34
  */
30
35
  export declare function replaceThemeTokensWithCssVars<T>(value: T): T;
31
36
  //# sourceMappingURL=server-theme.util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-theme.util.d.ts","sourceRoot":"","sources":["../../../src/util/server-theme.util.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAapD,wBAAgB,oBAAoB,IAAI,KAAK,GAAG,SAAS,CAExD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAEvD;AAUD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CA6B/D;AAED,wBAAgB,8BAA8B,IAAI;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAU5F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAmC3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,6BAA6B,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CA0G5D"}
1
+ {"version":3,"file":"server-theme.util.d.ts","sourceRoot":"","sources":["../../../src/util/server-theme.util.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAapD,wBAAgB,oBAAoB,IAAI,KAAK,GAAG,SAAS,CAExD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAEvD;AAUD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CA6B/D;AAED,wBAAgB,8BAA8B,IAAI;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAU5F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAmC3D;AAWD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,6BAA6B,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAiH5D"}
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": "1.4.5",
4
+ "version": "1.4.6",
5
5
  "type": "module",
6
6
  "main": "./dist/main.js",
7
7
  "types": "./dist/main.d.ts",