@alwatr/render-state
Version:
Clone deeply nested objects and arrays in JavaScript.
8 lines (7 loc) • 2.04 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../src/main.ts"],
"sourcesContent": ["import {createLogger} from '@alwatr/logger';\n\nimport type {} from '@alwatr/nano-build';\n\nconst logger = createLogger(__package_name__);\n\nexport const renderState = <R, T extends string>(\n state: T,\n renderRecord: Record<T | '_default', undefined | T | (() => R)>,\n thisArg: unknown = null,\n): R | undefined => {\n logger.logMethodArgs?.('renderState', {state, renderRecord});\n\n let render = renderRecord[state];\n\n if (typeof render === 'string') {\n render = renderRecord[render as T];\n }\n\n if (render === undefined) {\n if (renderRecord._default === undefined) {\n logger.error('renderState', 'invalid_render_state');\n return;\n }\n // else\n if (typeof renderRecord._default === 'string') {\n if (renderRecord[renderRecord._default] === undefined) {\n logger.error('renderState', 'invalid_default_render');\n return;\n }\n // else\n return renderState(renderRecord._default, renderRecord, thisArg);\n }\n // else\n render = renderRecord._default;\n }\n\n if (typeof render !== 'function') {\n logger.error('renderState', 'invalid_render_state');\n return;\n }\n\n try {\n return render.call(thisArg);\n }\n catch (err) {\n logger.error('renderState', 'render_error', err);\n return;\n }\n};\n"],
"mappings": ";;qqBAAA,qIAA2B,0BAI3B,IAAM,UAAS,4BAAa,sBAAgB,EAErC,IAAM,YAAc,CACzB,MACA,aACA,QAAmB,OACD,CAClB,OAAO,gBAAgB,cAAe,CAAC,MAAO,YAAY,CAAC,EAE3D,IAAI,OAAS,aAAa,KAAK,EAE/B,GAAI,OAAO,SAAW,SAAU,CAC9B,OAAS,aAAa,MAAW,CACnC,CAEA,GAAI,SAAW,OAAW,CACxB,GAAI,aAAa,WAAa,OAAW,CACvC,OAAO,MAAM,cAAe,sBAAsB,EAClD,MACF,CAEA,GAAI,OAAO,aAAa,WAAa,SAAU,CAC7C,GAAI,aAAa,aAAa,QAAQ,IAAM,OAAW,CACrD,OAAO,MAAM,cAAe,wBAAwB,EACpD,MACF,CAEA,OAAO,YAAY,aAAa,SAAU,aAAc,OAAO,CACjE,CAEA,OAAS,aAAa,QACxB,CAEA,GAAI,OAAO,SAAW,WAAY,CAChC,OAAO,MAAM,cAAe,sBAAsB,EAClD,MACF,CAEA,GAAI,CACF,OAAO,OAAO,KAAK,OAAO,CAC5B,OACO,IAAK,CACV,OAAO,MAAM,cAAe,eAAgB,GAAG,EAC/C,MACF,CACF",
"names": []
}