UNPKG

react-with-hoc

Version:

Work with React and HOCs (Higher-Order Components)

40 lines 5.91 kB
import { componentDisplayName } from "./componentDisplayName"; export const createHocNameFunction = selector => { return function hocName({ Component, hoc }, ...args) { function parseArg(arg) { if (typeof arg === "string") { return arg; } if (typeof arg === "number") { return String(arg); } if (typeof arg === "function") { return arg.name || "[unnamed function]"; } if (Array.isArray(arg)) { return arg.map(a => parseArg(a)).filter(Boolean).join("."); } if (arg === undefined || typeof arg === "function") { return undefined; } if (arg === null) { return "null"; } if (typeof arg === "object") { return Object.keys(arg).join("."); } return String(arg); } const nameByArgs = (() => { const arg = selector(...args); return parseArg(arg); })(); return `${[hoc.name, nameByArgs].filter(Boolean).join(".")}(${componentDisplayName.get(Component)})`; }; }; export const defaultHocName = createHocNameFunction(firstArg => firstArg); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21wb25lbnREaXNwbGF5TmFtZSIsImNyZWF0ZUhvY05hbWVGdW5jdGlvbiIsInNlbGVjdG9yIiwiaG9jTmFtZSIsIkNvbXBvbmVudCIsImhvYyIsImFyZ3MiLCJwYXJzZUFyZyIsImFyZyIsIlN0cmluZyIsIm5hbWUiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJhIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJrZXlzIiwibmFtZUJ5QXJncyIsImdldCIsImRlZmF1bHRIb2NOYW1lIiwiZmlyc3RBcmciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaG9jTmFtZUZvcldpdGhTdHlsZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29tcG9uZW50RGlzcGxheU5hbWUgfSBmcm9tIFwiLi9jb21wb25lbnREaXNwbGF5TmFtZVwiO1xuaW1wb3J0IHsgR2V0SG9jQXJncywgSG9jRGVmaW5pdGlvbiwgTmV3SG9jUmV0dXJuIH0gZnJvbSBcIi4vbmV3SG9jXCI7XG5cbmV4cG9ydCB0eXBlIEhvY05hbWVGYWN0b3J5ID0gKFxuICB7XG4gICAgQ29tcG9uZW50LFxuICAgIGhvYyxcbiAgfToge1xuICAgIENvbXBvbmVudDogQ29tcG9uZW50VHlwZTxhbnk+O1xuICAgIGhvYzogSG9jRGVmaW5pdGlvbjxhbnk+O1xuICB9LFxuICAuLi5hcmdzOiBhbnlcbikgPT4gc3RyaW5nO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlSG9jTmFtZUZ1bmN0aW9uID0gPFROZXdIb2NSZXR1cm4gZXh0ZW5kcyBOZXdIb2NSZXR1cm48YW55Pj4oXG4gIHNlbGVjdG9yOiAoLi4uYXJnczogR2V0SG9jQXJnczxUTmV3SG9jUmV0dXJuPikgPT4gdW5rbm93biB8IHVuZGVmaW5lZCxcbik6IEhvY05hbWVGYWN0b3J5ID0+IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGhvY05hbWUoXG4gICAge1xuICAgICAgQ29tcG9uZW50LFxuICAgICAgaG9jLFxuICAgIH06IHtcbiAgICAgIENvbXBvbmVudDogQ29tcG9uZW50VHlwZTxhbnk+O1xuICAgICAgaG9jOiBIb2NEZWZpbml0aW9uPEdldEhvY0FyZ3M8VE5ld0hvY1JldHVybj4+O1xuICAgIH0sXG4gICAgLi4uYXJnczogR2V0SG9jQXJnczxUTmV3SG9jUmV0dXJuPlxuICApOiBzdHJpbmcge1xuICAgIGZ1bmN0aW9uIHBhcnNlQXJnKGFyZzogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgIGlmICh0eXBlb2YgYXJnID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiBhcmc7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGFyZyA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gU3RyaW5nKGFyZyk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGFyZyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBhcmcubmFtZSB8fCBcIlt1bm5hbWVkIGZ1bmN0aW9uXVwiO1xuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgICByZXR1cm4gYXJnXG4gICAgICAgICAgLm1hcCgoYSkgPT4gcGFyc2VBcmcoYSkpXG4gICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgIC5qb2luKFwiLlwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmcgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgYXJnID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChhcmcgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBhcmcgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGFyZykuam9pbihcIi5cIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gU3RyaW5nKGFyZyk7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZUJ5QXJncyA9ICgoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgICAgIGNvbnN0IGFyZyA9IHNlbGVjdG9yKC4uLmFyZ3MpO1xuXG4gICAgICByZXR1cm4gcGFyc2VBcmcoYXJnKTtcbiAgICB9KSgpO1xuXG4gICAgcmV0dXJuIGAke1tob2MubmFtZSwgbmFtZUJ5QXJnc11cbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKFwiLlwiKX0oJHtjb21wb25lbnREaXNwbGF5TmFtZS5nZXQoQ29tcG9uZW50KX0pYDtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0SG9jTmFtZTogSG9jTmFtZUZhY3RvcnkgPSBjcmVhdGVIb2NOYW1lRnVuY3Rpb24oXG4gIChmaXJzdEFyZzogdW5rbm93bikgPT4gZmlyc3RBcmcsXG4pO1xuIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxvQkFBb0IsUUFBUSx3QkFBd0I7QUFjN0QsT0FBTyxNQUFNQyxxQkFBcUIsR0FDaENDLFFBQXFFLElBQ2xEO0VBQ25CLE9BQU8sU0FBU0MsT0FBT0EsQ0FDckI7SUFDRUMsU0FBUztJQUNUQztFQUlGLENBQUMsRUFDRCxHQUFHQyxJQUErQixFQUMxQjtJQUNSLFNBQVNDLFFBQVFBLENBQUNDLEdBQVEsRUFBc0I7TUFDOUMsSUFBSSxPQUFPQSxHQUFHLEtBQUssUUFBUSxFQUFFO1FBQzNCLE9BQU9BLEdBQUc7TUFDWjtNQUNBLElBQUksT0FBT0EsR0FBRyxLQUFLLFFBQVEsRUFBRTtRQUMzQixPQUFPQyxNQUFNLENBQUNELEdBQUcsQ0FBQztNQUNwQjtNQUNBLElBQUksT0FBT0EsR0FBRyxLQUFLLFVBQVUsRUFBRTtRQUM3QixPQUFPQSxHQUFHLENBQUNFLElBQUksSUFBSSxvQkFBb0I7TUFDekM7TUFDQSxJQUFJQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0osR0FBRyxDQUFDLEVBQUU7UUFDdEIsT0FBT0EsR0FBRyxDQUNQSyxHQUFHLENBQUVDLENBQUMsSUFBS1AsUUFBUSxDQUFDTyxDQUFDLENBQUMsQ0FBQyxDQUN2QkMsTUFBTSxDQUFDQyxPQUFPLENBQUMsQ0FDZkMsSUFBSSxDQUFDLEdBQUcsQ0FBQztNQUNkO01BQ0EsSUFBSVQsR0FBRyxLQUFLVSxTQUFTLElBQUksT0FBT1YsR0FBRyxLQUFLLFVBQVUsRUFBRTtRQUNsRCxPQUFPVSxTQUFTO01BQ2xCO01BQ0EsSUFBSVYsR0FBRyxLQUFLLElBQUksRUFBRTtRQUNoQixPQUFPLE1BQU07TUFDZjtNQUNBLElBQUksT0FBT0EsR0FBRyxLQUFLLFFBQVEsRUFBRTtRQUMzQixPQUFPVyxNQUFNLENBQUNDLElBQUksQ0FBQ1osR0FBRyxDQUFDLENBQUNTLElBQUksQ0FBQyxHQUFHLENBQUM7TUFDbkM7TUFDQSxPQUFPUixNQUFNLENBQUNELEdBQUcsQ0FBQztJQUNwQjtJQUVBLE1BQU1hLFVBQVUsR0FBRyxDQUFDLE1BQTBCO01BQzVDLE1BQU1iLEdBQUcsR0FBR04sUUFBUSxDQUFDLEdBQUdJLElBQUksQ0FBQztNQUU3QixPQUFPQyxRQUFRLENBQUNDLEdBQUcsQ0FBQztJQUN0QixDQUFDLEVBQUUsQ0FBQztJQUVKLE9BQVEsR0FBRSxDQUFDSCxHQUFHLENBQUNLLElBQUksRUFBRVcsVUFBVSxDQUFDLENBQzdCTixNQUFNLENBQUNDLE9BQU8sQ0FBQyxDQUNmQyxJQUFJLENBQUMsR0FBRyxDQUFFLElBQUdqQixvQkFBb0IsQ0FBQ3NCLEdBQUcsQ0FBQ2xCLFNBQVMsQ0FBRSxHQUFFO0VBQ3hELENBQUM7QUFDSCxDQUFDO0FBRUQsT0FBTyxNQUFNbUIsY0FBOEIsR0FBR3RCLHFCQUFxQixDQUNoRXVCLFFBQWlCLElBQUtBLFFBQ3pCLENBQUMifQ== //# sourceMappingURL=hocNameForWithStyle.js.map