renderify-js
Version:
Render components easily and elegantly
1 lines • 2.73 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../src/Renderify.tsx"],"sourcesContent":["// src/index.ts\nexport { default as Renderify } from \"./Renderify\";\nexport * from \"./Renderify\";","import React from \"react\";\nimport { useEffect, useState } from \"react\";\n\ntype RenderifyProps = {\n condition: boolean;\n elseShow?: React.ReactNode;\n children: React.ReactNode;\n delay?: number;\n noDestroy?: boolean;\n onShow?: () => void;\n onHide?: () => void;\n};\n\nconst Renderify: React.FC<RenderifyProps> = ({\n condition,\n elseShow = null,\n children,\n onShow,\n onHide,\n noDestroy = false,\n delay = 0,\n}) => {\n const [shouldRender, setShouldRender] = useState(condition);\n\n useEffect(() => {\n let timeout: ReturnType<typeof setTimeout>;\n\n if (delay > 0) {\n timeout = setTimeout(() => {\n setShouldRender(condition);\n }, delay);\n } else {\n setShouldRender(condition);\n }\n\n return () => clearTimeout(timeout);\n }, [condition, delay]);\n\n useEffect(() => {\n if (shouldRender) {\n onShow?.();\n } else {\n onHide?.();\n }\n }, [shouldRender]);\n\n const renderifyManager = () => {\n if (!noDestroy) {\n return shouldRender ? children : elseShow;\n }\n\n return (\n <>\n <div\n style={\n !shouldRender\n ? { display: \"none\" }\n : { display: \"contents\" }\n }\n >\n {children}\n </div>\n <div\n style={\n shouldRender\n ? { display: \"none\" }\n : { display: \"contents\" }\n }\n >\n {elseShow}\n </div>\n </>\n );\n };\n\n return <>{renderifyManager()}</>;\n};\n\nexport default Renderify;"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,mBAAoC;AAmD9B;AAvCN,IAAM,YAAsC,CAAC;AAAA,EAC3C;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ;AACV,MAAM;AACJ,QAAM,CAAC,cAAc,eAAe,QAAI,uBAAS,SAAS;AAE1D,8BAAU,MAAM;AACd,QAAI;AAEJ,QAAI,QAAQ,GAAG;AACb,gBAAU,WAAW,MAAM;AACzB,wBAAgB,SAAS;AAAA,MAC3B,GAAG,KAAK;AAAA,IACV,OAAO;AACL,sBAAgB,SAAS;AAAA,IAC3B;AAEA,WAAO,MAAM,aAAa,OAAO;AAAA,EACnC,GAAG,CAAC,WAAW,KAAK,CAAC;AAErB,8BAAU,MAAM;AACd,QAAI,cAAc;AAChB;AAAA,IACF,OAAO;AACL;AAAA,IACF;AAAA,EACF,GAAG,CAAC,YAAY,CAAC;AAEjB,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC,WAAW;AACd,aAAO,eAAe,WAAW;AAAA,IACnC;AAEA,WACE,4EACE;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,OACE,CAAC,eACG,EAAE,SAAS,OAAO,IAClB,EAAE,SAAS,WAAW;AAAA,UAG3B;AAAA;AAAA,MACH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,OACE,eACI,EAAE,SAAS,OAAO,IAClB,EAAE,SAAS,WAAW;AAAA,UAG3B;AAAA;AAAA,MACH;AAAA,OACF;AAAA,EAEJ;AAEA,SAAO,2EAAG,2BAAiB,GAAE;AAC/B;AAEA,IAAO,oBAAQ;","names":[]}