box-overflow-core
Version:
Headless UI for automatically collapsing boxes when overflow.
1 lines • 1.44 kB
Source Map (JSON)
{"version":3,"file":"utils.cjs","sources":["../../src/utils.ts"],"sourcesContent":["/**\n * @author shunzi <tobyzsj@gmail.com>\n * @date 2024-03-26 10:44:40\n */\n\nexport function isElementNode(node: Node): node is HTMLElement {\n return node.nodeType === Node.ELEMENT_NODE\n}\n\nexport function notNil<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined\n}\n\nexport function memo< TDeps extends readonly any[], Result>(getDeps: () => [...TDeps], fn: (...P: [...TDeps]) => Result) {\n let deps: [...TDeps] = [] as never as [...TDeps]\n let result: Result | undefined\n let firstRun = true\n\n return () => {\n const newDeps = getDeps()\n const depsChanged\n = newDeps.length !== deps.length\n || newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (!depsChanged && !firstRun)\n return result!\n\n firstRun = false\n deps = newDeps\n\n result = fn(...newDeps)\n\n return result!\n }\n}\n"],"names":[],"mappings":";;AAKO,SAAS,cAAc,MAAiC;AACtD,SAAA,KAAK,aAAa,KAAK;AAChC;AAEO,SAAS,OAAU,OAAyC;AAC1D,SAAA,UAAU,QAAQ,UAAU;AACrC;AAEgB,SAAA,KAA4C,SAA2B,IAAkC;AACvH,MAAI,OAAmB,CAAA;AACnB,MAAA;AACJ,MAAI,WAAW;AAEf,SAAO,MAAM;AACX,UAAM,UAAU;AAChB,UAAM,cACJ,QAAQ,WAAW,KAAK,UACvB,QAAQ,KAAK,CAAC,KAAU,UAAkB,KAAK,KAAK,MAAM,GAAG;AAE5D,QAAA,CAAC,eAAe,CAAC;AACZ,aAAA;AAEE,eAAA;AACJ,WAAA;AAEE,aAAA,GAAG,GAAG,OAAO;AAEf,WAAA;AAAA,EAAA;AAEX;;;;"}