@meonode/ui 1.2.0-0 → 1.3.0-beta.1
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/cjs/core.node.cjs +1 -1
- package/dist/cjs/util/node.util.cjs +1 -1
- package/dist/esm/components/html.node.d.ts +262 -262
- package/dist/esm/components/portal-host.client.d.ts +1 -15
- package/dist/esm/components/portal-host.client.d.ts.map +1 -1
- package/dist/esm/components/portal-host.d.ts +1 -1
- package/dist/esm/components/portal-provider.d.ts +1 -1
- package/dist/esm/components/react.node.d.ts +3 -3
- package/dist/esm/components/style-registry.client.d.ts.map +1 -1
- package/dist/esm/components/styled-renderer.client.d.ts +1 -1
- package/dist/esm/components/styled-renderer.client.d.ts.map +1 -1
- package/dist/esm/components/theme-provider.d.ts +1 -1
- package/dist/esm/constant/common.const.d.ts +1 -1
- package/dist/esm/core.node.d.ts.map +1 -1
- package/dist/esm/core.node.js +1 -1
- package/dist/esm/helper/common.helper.d.ts +1 -1
- package/dist/esm/helper/common.helper.d.ts.map +1 -1
- package/dist/esm/helper/react-is.helper.d.ts +1 -1
- package/dist/esm/helper/react-is.helper.d.ts.map +1 -1
- package/dist/esm/hook/usePortal.d.ts +2 -2
- package/dist/esm/hook/usePortal.d.ts.map +1 -1
- package/dist/esm/nextjs-registry/index.d.ts +1 -1
- package/dist/esm/util/mount-tracker.util.d.ts.map +1 -1
- package/dist/esm/util/navigation-cache-manager.util.d.ts.map +1 -1
- package/dist/esm/util/node.util.d.ts +13 -2
- package/dist/esm/util/node.util.d.ts.map +1 -1
- package/dist/esm/util/node.util.js +1 -1
- package/dist/esm/util/theme.util.d.ts +2 -2
- package/dist/esm/util/theme.util.d.ts.map +1 -1
- package/package.json +26 -21
- package/CHANGELOG.md +0 -1352
package/dist/cjs/core.node.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("react"),t=require("./helper/react-is.helper.cjs"),n=require("./helper/common.helper.cjs"),
|
|
1
|
+
"use strict";var e=require("react"),t=require("./helper/react-is.helper.cjs"),n=require("./helper/common.helper.cjs"),r=require("./components/styled-renderer.client.cjs"),s=require("./constant/common.const.cjs"),o=require("./util/mount-tracker.util.cjs"),i=require("./components/meonode-unmounter.client.cjs"),a=require("./util/navigation-cache-manager.util.cjs"),l=require("./util/node.util.cjs");const c=Symbol.for("@meonode/ui/BaseNode/elementCache"),d=Symbol.for("@meonode/ui/BaseNode/navigationStarted"),h=Symbol.for("@meonode/ui/BaseNode/renderContextPool"),u=Symbol.for("@meonode/ui/BaseNode/cacheCleanupRegistry");class m{static _idCounter=0;instanceId="m"+ ++m._idCounter;element;rawProps={};isBaseNode=!0;_props;_deps;stableKey;lastPropsObj;lastSignature;static get elementCache(){return n.getGlobalState(c,()=>new Map)}static get _navigationStarted(){return n.getGlobalState(d,()=>({value:!1})).value}static set _navigationStarted(e){n.getGlobalState(d,()=>({value:!1})).value=e}static get renderContextPool(){return n.getGlobalState(h,()=>[])}static acquireRenderContext(){const e=m.renderContextPool;return e.length>0?e.pop():{workStack:new Array(512),renderedElements:new Map}}static releaseRenderContext(e){m.renderContextPool.length<50&&e.workStack.length<2048&&(e.workStack.length=0,e.renderedElements.clear(),m.renderContextPool.push(e))}constructor(e,r={},s){if(!t.isValidElementType(e)){const t=n.getComponentType(e);if(l.NodeUtil.isNodeInstance(e))throw new Error("Invalid element type: MeoNode UI instance provided!");throw new Error(`Invalid element type: ${t} provided!`)}this.element=e,this.rawProps=r,this._deps=s;const{ref:o,children:i,...c}=r;this.stableKey=this._getStableKey(c),l.NodeUtil.isServer||m._navigationStarted||(a.NavigationCacheManagerUtil.getInstance().start(),m._navigationStarted=!0)}get props(){return this._props||(this._props=l.NodeUtil.processProps(this.rawProps,this.stableKey)),this._props}get dependencies(){return this._deps}_getStableKey({key:e,...t}){if(l.NodeUtil.isServer)return;if(this.lastPropsObj===t)return this.lastSignature;this.lastPropsObj=t;const r=Object.keys(t),o=r.length;if(o>100){const e=l.NodeUtil.extractCriticalProps(t,r);this.lastSignature=l.NodeUtil.createPropSignature(this.element,e),s.__DEBUG__&&o>200&&console.warn(`MeoNode: Large props (${o} keys) on "${n.getElementTypeName(this.element)}". Consider splitting.`)}else this.lastSignature=l.NodeUtil.createPropSignature(this.element,t);return null!=e?`${String(e)}:${this.lastSignature}`:this.lastSignature}static get cacheCleanupRegistry(){return n.getGlobalState(u,()=>new FinalizationRegistry(e=>{const{cacheKey:t,instanceId:n}=e,r=m.elementCache.get(t);r?.instanceId===n&&m.elementCache.delete(t),o.MountTrackerUtil.isMounted(t)&&o.MountTrackerUtil.untrackMount(t)}))}render(s=!1){const o=l.NodeUtil.shouldCacheElement(this)?m.elementCache.get(this.stableKey):void 0,a=l.NodeUtil.shouldNodeUpdate(o?.prevDeps,this._deps,s);if(!a&&o?.renderedElement)return o.accessCount+=1,o.renderedElement;const c=!a,d=m.acquireRenderContext();let{workStack:h}=d;const{renderedElements:u}=d;let p=0;try{const s=e=>{if(e>h.length){const t=Math.max(e,h.length<<1),n=new Array(t);for(let e=0;e<p;e++)n[e]=h[e];h=n}};for(h[p++]={node:this,isProcessed:!1,blocked:c};p>0;){const o=h[p-1];if(!o){p--;continue}const{node:i,isProcessed:a,blocked:c}=o;if(a){p--;const{children:s,key:o,css:a,nativeProps:c,disableEmotion:d,...h}=i.props;let g=[];if(s){const e=Array.isArray(s)?s:[s],t=e.length;g=new Array(t);for(let n=0;n<t;n++){const t=e[n];if(l.NodeUtil.isNodeInstance(t)){const e=u.get(t);if(!e)throw new Error(`[MeoNode] Missing rendered element for child node: ${t.stableKey}`);g[n]=e}else g[n]=t}}const y={...h,key:o,...c};let f;if(i.element===e.Fragment||t.isFragment(i.element))f=e.createElement(i.element,{key:o},...g);else{if(l.NodeUtil.isServer&&"function"==typeof i.element&&!l.NodeUtil.isClientReference(i.element)){const t=0===g.length?void 0:1===g.length?g[0]:g,n=void 0===t?y:{...y,children:t},r=i.element(n);f=l.NodeUtil.isPromiseLike(r)?e.createElement(e.Fragment,{key:o},r):l.NodeUtil.isNodeInstance(r)?r.render():e.createElement(e.Fragment,{key:o},r),u.set(i,f);continue}f=!d&&(a||!n.hasNoStyleTag(i.element))?e.createElement(r.default,{element:i.element,...y,css:a,suppressHydrationWarning:!0},...g):e.createElement(i.element,y,...g)}if(i!==this&&l.NodeUtil.shouldCacheElement(i)){const e=m.elementCache.get(i.stableKey);if(e)e.prevDeps=i._deps,e.renderedElement=f,e.accessCount+=1;else{const e={prevDeps:i._deps,renderedElement:f,nodeRef:new WeakRef(i),createdAt:Date.now(),accessCount:1,instanceId:i.instanceId};m.elementCache.set(i.stableKey,e),m.cacheCleanupRegistry.register(i,{cacheKey:i.stableKey,instanceId:i.instanceId},i)}}u.set(i,f)}else{o.isProcessed=!0;const e=i.props.children;if(e){const t=Array.isArray(e)?e:[e];let n=0;for(let e=0;e<t.length;e++)l.NodeUtil.isNodeInstance(t[e])&&n++;s(p+n);for(let e=t.length-1;e>=0;e--){const n=t[e];if(!l.NodeUtil.isNodeInstance(n))continue;const r=l.NodeUtil.shouldCacheElement(n)?m.elementCache.get(n.stableKey):void 0,s=l.NodeUtil.shouldNodeUpdate(r?.prevDeps,n._deps,c);if(!s&&r?.renderedElement){u.set(n,r.renderedElement);continue}const o=c||!s;h[p++]={node:n,isProcessed:!1,blocked:o}}}}}let o=u.get(this);if(!l.NodeUtil.isServer&&this.stableKey&&(o=e.createElement(i.default,{node:this},o)),l.NodeUtil.shouldCacheElement(this)){const e=m.elementCache.get(this.stableKey);if(e)e.prevDeps=this._deps,e.renderedElement=o,e.accessCount+=1;else{const e={prevDeps:this._deps,renderedElement:o,nodeRef:new WeakRef(this),createdAt:Date.now(),accessCount:1,instanceId:this.instanceId};m.elementCache.set(this.stableKey,e),m.cacheCleanupRegistry.register(this,{cacheKey:this.stableKey,instanceId:this.instanceId},this)}}return o}finally{for(let e=0;e<p;e++)h[e]=null;m.releaseRenderContext({workStack:h,renderedElements:u})}}static clearCaches(){const e=Array.from(m.elementCache.keys());s.__DEBUG__&&console.log(`[MeoNode] clearCaches: Clearing ${e.length} entries`);for(const t of e){const e=m.elementCache.get(t);if(e){const n=e.nodeRef?.deref();if(n)try{m.cacheCleanupRegistry.unregister(n),n.lastSignature=void 0,n.lastPropsObj=void 0}catch{s.__DEBUG__&&console.warn(`[MeoNode] Could not unregister ${t} from FinalizationRegistry`)}}}m.elementCache.clear(),o.MountTrackerUtil.cleanup(),s.__DEBUG__&&console.log("[MeoNode] All caches cleared")}}function p(e,t={},n){return new m(e,t,n)}p.clearCaches=m.clearCaches,exports.BaseNode=m,exports.Node=p,exports.createChildrenFirstNode=function(e,t){const n=(n,r,s)=>p(e,{...t,...r,children:n},s);return n.element=e,n},exports.createNode=function(e,t){const n=(n,r)=>p(e,{...t,...n},r);return n.element=e,n};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("react"),t=require("../helper/react-is.helper.cjs"),o=require("../helper/common.helper.cjs"),n=require("../constant/common.const.cjs"),r=require("../core.node.cjs");const s=Symbol.for("@meonode/ui/NodeUtil/functionSignatureCache");class i{constructor(){}static isServer="undefined"==typeof window;static get _functionSignatureCache(){return o.getGlobalState(s,()=>new WeakMap)}static CRITICAL_PROPS=new Set(["css","className","disableEmotion","props"]);static _propFuncCache=new WeakMap;static isNodeInstance=e=>e instanceof r.BaseNode;static isStyleProp=i.isServer||"undefined"==typeof document?()=>!1:e=>e in document.body.style;static hashString(e){let t=2166136261,o=5381;for(let n=0;n<e.length;n++){const r=e.charCodeAt(n);t^=r,t=Math.imul(t,16777619),o=Math.imul(o,33)^r}return`${(t>>>0).toString(36)}_${(o>>>0).toString(36)}`}static hashCSS(e){const t=Object.keys(e);let o=t.length;for(let n=0;n<Math.min(t.length,10);n++){const r=t[n],s=e[r];o=(o<<5)-o+r.charCodeAt(0),o&=o,"string"==typeof s&&(o=(o<<5)-o+s.length)}return o.toString(36)}static createPropSignature(e,t){if(i.isServer)return;const n=o.getElementTypeName(e),r=Object.keys(t);r.length>1&&r.sort();const s=[`${n}:`];if("function"==typeof e){let t=i._functionSignatureCache.get(e);t||(t=i.hashString(e.toString()),i._functionSignatureCache.set(e,t)),s.push(t)}for(const e of r){const o=t[e];let n;const r=typeof o;if("string"===r||"number"===r||"boolean"===r)n=`${e}:${o};`;else if(null===o)n=`${e}:null;`;else if(void 0===o)n=`${e}:undefined;`;else if("css"===e&&"object"==typeof o)n=`css:${this.hashCSS(o)};`;else if(Array.isArray(o)){const t=o.filter(e=>{const t=typeof e;return"string"===t||"number"===t||"boolean"===t||null===e});n=t.length===o.length?`${e}:[${t.join(",")}];`:`${e}:[${o.length}];`}else if(o&&o.isBaseNode)n=`${e}:${o.stableKey};`;else if("function"===r){let t=i._propFuncCache.get(o);t||(t=i.hashString(o.toString()),i._propFuncCache.set(o,t)),n=`${e}:${t};`}else{n=`${e}:{${Object.keys(o).sort().join(",")}};`}s.push(n)}return i.hashString(s.join(","))}static extractCriticalProps(e,t){const o={_keyCount:t.length};let n=0;for(const r of t){if(n>=50)break;if(i.CRITICAL_PROPS.has(r)){o[r]=e[r],n++;continue}const s=r.charCodeAt(0);111!==s||110!==r.charCodeAt(1)?!(97===s&&114===r.charCodeAt(1)&&105===r.charCodeAt(2)&&97===r.charCodeAt(3)||100===s&&97===r.charCodeAt(1)&&116===r.charCodeAt(2)&&97===r.charCodeAt(3))?t.length<=100&&i.isStyleProp(r)&&(o[r]=e[r],n++):(o[r]=e[r],n++):(o[r]=e[r],n++)}return o}static processProps(e={},t){const{ref:n,key:r,children:s,css:
|
|
1
|
+
"use strict";var e=require("react"),t=require("../helper/react-is.helper.cjs"),o=require("../helper/common.helper.cjs"),n=require("../constant/common.const.cjs"),r=require("../core.node.cjs");const s=Symbol.for("@meonode/ui/NodeUtil/functionSignatureCache");class i{constructor(){}static isServer="undefined"==typeof window;static get _functionSignatureCache(){return o.getGlobalState(s,()=>new WeakMap)}static CRITICAL_PROPS=new Set(["css","className","disableEmotion","props"]);static _propFuncCache=new WeakMap;static isPromiseLike(e){return!!e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof e.then}static isClientReference(e){return!(!e||"object"!=typeof e&&"function"!=typeof e)&&e.$$typeof===Symbol.for("react.client.reference")}static isNodeInstance=e=>e instanceof r.BaseNode;static isStyleProp=i.isServer||"undefined"==typeof document?()=>!1:e=>e in document.body.style;static hashString(e){let t=2166136261,o=5381;for(let n=0;n<e.length;n++){const r=e.charCodeAt(n);t^=r,t=Math.imul(t,16777619),o=Math.imul(o,33)^r}return`${(t>>>0).toString(36)}_${(o>>>0).toString(36)}`}static hashCSS(e){const t=Object.keys(e);let o=t.length;for(let n=0;n<Math.min(t.length,10);n++){const r=t[n],s=e[r];o=(o<<5)-o+r.charCodeAt(0),o&=o,"string"==typeof s&&(o=(o<<5)-o+s.length)}return o.toString(36)}static createPropSignature(e,t){if(i.isServer)return;const n=o.getElementTypeName(e),r=Object.keys(t);r.length>1&&r.sort();const s=[`${n}:`];if("function"==typeof e){let t=i._functionSignatureCache.get(e);t||(t=i.hashString(e.toString()),i._functionSignatureCache.set(e,t)),s.push(t)}for(const e of r){const o=t[e];let n;const r=typeof o;if("string"===r||"number"===r||"boolean"===r)n=`${e}:${o};`;else if(null===o)n=`${e}:null;`;else if(void 0===o)n=`${e}:undefined;`;else if("css"===e&&"object"==typeof o)n=`css:${this.hashCSS(o)};`;else if(Array.isArray(o)){const t=o.filter(e=>{const t=typeof e;return"string"===t||"number"===t||"boolean"===t||null===e});n=t.length===o.length?`${e}:[${t.join(",")}];`:`${e}:[${o.length}];`}else if(o&&o.isBaseNode)n=`${e}:${o.stableKey};`;else if("function"===r){let t=i._propFuncCache.get(o);t||(t=i.hashString(o.toString()),i._propFuncCache.set(o,t)),n=`${e}:${t};`}else{n=`${e}:{${Object.keys(o).sort().join(",")}};`}s.push(n)}return i.hashString(s.join(","))}static extractCriticalProps(e,t){const o={_keyCount:t.length};let n=0;for(const r of t){if(n>=50)break;if(i.CRITICAL_PROPS.has(r)){o[r]=e[r],n++;continue}const s=r.charCodeAt(0);111!==s||110!==r.charCodeAt(1)?!(97===s&&114===r.charCodeAt(1)&&105===r.charCodeAt(2)&&97===r.charCodeAt(3)||100===s&&97===r.charCodeAt(1)&&116===r.charCodeAt(2)&&97===r.charCodeAt(3))?t.length<=100&&i.isStyleProp(r)&&(o[r]=e[r],n++):(o[r]=e[r],n++):(o[r]=e[r],n++)}return o}static processProps(e={},t){const{ref:n,key:r,children:s,css:c,props:a={},disableEmotion:d,...l}=e;if(0===Object.keys(l).length&&!c)return o.omitUndefined({ref:n,key:r,disableEmotion:d,nativeProps:o.omitUndefined(a),children:i._processChildren(s,d)});const p={},f={},u=Object.keys(l);for(let e=0;e<u.length;e++){const t=u[e],o=l[t],n=typeof o;"string"===n||"number"===n||"boolean"===n?p[t]=o:f[t]=o}const y=o.getCSSProps(p),h=o.getCSSProps(f),m=o.getDOMProps(l),b={...y,...h,...c},g=i._processChildren(s,d,t);return o.omitUndefined({ref:n,key:r,css:b,...m,disableEmotion:d,nativeProps:o.omitUndefined(a),children:g})}static _processChildren(e,t,o){if(e)return"function"==typeof e?e:Array.isArray(e)?1===e.length?i.processRawNode(e[0],t,`${o}_0`):e.map((e,n)=>i.processRawNode(e,t,`${o}_${n}`)):i.processRawNode(e,t,o)}static shouldCacheElement(e){return!i.isServer&&!!e.stableKey&&!!e.dependencies}static shouldNodeUpdate(e,t,o){if(i.isServer)return!0;if(o)return!1;if(void 0===t)return!0;if(void 0===e)return!0;if(t.length!==e.length)return!0;for(let o=0;o<t.length;o++)if(!Object.is(t[o],e[o]))return!0;return!1}static processRawNode(o,n,s){if(null==o||"string"==typeof o||"number"==typeof o||"boolean"==typeof o)return o;if(i.isNodeInstance(o)){if(s||n&&!o.rawProps.disableEmotion){const e=new r.BaseNode(o.element,o.rawProps,o.dependencies);return e.stableKey=`${s}:${e.stableKey}`,n&&!e.rawProps.disableEmotion&&(e.rawProps.disableEmotion=!0),e}return o}if(i.isFunctionChild(o))return new r.BaseNode(i.functionRenderer,{props:{render:o,disableEmotion:n}},void 0);if(e.isValidElement(o)){if("string"==typeof o.type){const{style:e,...t}=o.props,s={...t,...e||{}};return new r.BaseNode(o.type,{...s,...null!==o.key&&void 0!==o.key?{key:o.key}:{},disableEmotion:n},void 0)}return new r.BaseNode(o.type,{...o.props,...null!==o.key&&void 0!==o.key?{key:o.key}:{},disableEmotion:n},void 0)}return t.isReactClassComponent(o)||t.isMemo(o)||t.isForwardRef(o)?new r.BaseNode(o,{disableEmotion:n},void 0):o instanceof e.Component?i.processRawNode(o.render(),n,s):o}static isFunctionChild(e){if("function"!=typeof e||t.isReactClassComponent(e)||t.isMemo(e)||t.isForwardRef(e))return!1;try{return!(e.prototype&&"function"==typeof e.prototype.render)}catch(e){return n.__DEBUG__&&console.error("MeoNode: Error checking if a node is a function child.",e),!0}}static functionRenderer({render:t,disableEmotion:s}){let c;try{c=t()}catch(e){n.__DEBUG__&&console.error("MeoNode: Error executing function-as-a-child.",e),c=null}if(null==c||"string"==typeof c||"number"==typeof c||"boolean"==typeof c)return c;if(i.isNodeInstance(c))return s&&!c.rawProps.disableEmotion?new r.BaseNode(c.element,{...c.rawProps,disableEmotion:!0}).render():c.render();if(Array.isArray(c)){const e=(e,t)=>{try{return`${o.getElementTypeName(e)}-${t}`}catch(e){return n.__DEBUG__&&console.error("MeoNode: Could not determine element type name for key in function-as-a-child.",e),`item-${t}`}};return c.map((t,o)=>i.renderProcessedNode({processedElement:i.processRawNode(t,s),passedKey:e(t,o),disableEmotion:s}))}if(c instanceof e.Component)return i.renderProcessedNode({processedElement:i.processRawNode(c.render(),s),disableEmotion:s});const a=i.processRawNode(c,s);return a?i.renderProcessedNode({processedElement:a,disableEmotion:s}):c}static renderProcessedNode({processedElement:o,passedKey:n,disableEmotion:s}){const c={};if(void 0!==n&&(c.key=n),i.isNodeInstance(o)){const e=o.rawProps?.key;return o.rawProps.disableEmotion=s,e===n?o.render():new r.BaseNode(o.element,{...o.rawProps,...c}).render()}return t.isReactClassComponent(o)?new r.BaseNode(o,{...c,disableEmotion:s}).render():o instanceof e.Component?o.render():"function"==typeof o?e.createElement(o,{key:n}):o}}exports.NodeUtil=i;
|