UNPKG

material-ui-popup-state

Version:

easiest way to create menus, popovers, and poppers with material-ui

2 lines (1 loc) 2.07 kB
{"version":3,"file":"chainEventHandlers.mjs","names":["chainEventHandlers","first","rest","result","obj","key","value","prev","args"],"sources":["src/chainEventHandlers.ts"],"sourcesContent":["type Assign<A, B> = {\n [K in keyof A | keyof B]: K extends keyof A ?\n K extends keyof B ?\n NonNullable<A[K]> extends (...args: any[]) => any ?\n NonNullable<B[K]> extends (...args: any[]) => any ?\n A[K] | B[K]\n : B[K]\n : B[K]\n : A[K]\n : K extends keyof B ? B[K]\n : never\n}\n\ntype MergeObjectsArray<T extends object[]> =\n T extends [infer F, ...infer R] ?\n Assign<F, R extends object[] ? MergeObjectsArray<R> : NonNullable<unknown>>\n : NonNullable<unknown>\n\ntype PrettyObject<T> = { [K in keyof T]: T[K] } & NonNullable<unknown>\n\nexport function chainEventHandlers<\n First extends Record<string, any>,\n Rest extends Record<string, any>[],\n>(\n first: First,\n ...rest: Rest\n): PrettyObject<MergeObjectsArray<[First, ...Rest]>> {\n const result: Record<string, any> = { ...first }\n for (const obj of rest) {\n for (const key in obj) {\n const value = obj[key]\n const prev = result[key]\n if (typeof prev === 'function' && typeof value === 'function') {\n result[key] = (...args: any[]) => {\n prev(...args)\n return value(...args)\n }\n } else {\n result[key] = value\n }\n }\n }\n return result as MergeObjectsArray<[First, ...Rest]>\n}\n"],"mappings":"AAoBA,OAAO,SAASA,kBAAkBA,CAIhCC,KAAY,EACZ,GAAGC,IAAU,EACsC;EACnD,MAAMC,MAA2B,GAAG;IAAE,GAAGF;EAAM,CAAC;EAChD,KAAK,MAAMG,GAAG,IAAIF,IAAI,EAAE;IACtB,KAAK,MAAMG,GAAG,IAAID,GAAG,EAAE;MACrB,MAAME,KAAK,GAAGF,GAAG,CAACC,GAAG,CAAC;MACtB,MAAME,IAAI,GAAGJ,MAAM,CAACE,GAAG,CAAC;MACxB,IAAI,OAAOE,IAAI,KAAK,UAAU,IAAI,OAAOD,KAAK,KAAK,UAAU,EAAE;QAC7DH,MAAM,CAACE,GAAG,CAAC,GAAG,CAAC,GAAGG,IAAW,KAAK;UAChCD,IAAI,CAAC,GAAGC,IAAI,CAAC;UACb,OAAOF,KAAK,CAAC,GAAGE,IAAI,CAAC;QACvB,CAAC;MACH,CAAC,MAAM;QACLL,MAAM,CAACE,GAAG,CAAC,GAAGC,KAAK;MACrB;IACF;EACF;EACA,OAAOH,MAAM;AACf","ignoreList":[]}