{"version":3,"file":"useObjectAttributes.cjs","sources":["../../src/hooks/useObjectAttributes.ts"],"sourcesContent":["import { isValidElement } from 'react'\n\n// HINT: コンポーネントの引数が例えば <AnyTitle /> と { title:  <AnyTitle />, styleType: 'hoge' } のような場合\n// Object形式かどうかを判定し常に { title, ...} のように変換するutility\nexport const useObjectAttributes = <T, U>(original: T, callback: (org: Exclude<T, U>) => U): U => {\n  if (\n    // HINT: 後続の判定で利用しているtypeofはnullの場合もobject判定されてしまうため事前に判定\n    !original ||\n    // HINT: objectでない場合はReactNodeでないことも確定するためObject形式に変換する\n    typeof original !== 'object' ||\n    // HINT: ReactNodeかどうかをチェック\n    isValidElement(original)\n  ) {\n    return callback(original as Exclude<T, U>)\n  }\n\n  return original as U\n}\n"],"names":["isValidElement"],"mappings":";;;;AAEA;AACA;MACa,mBAAmB,GAAG,CAAO,QAAW,EAAE,QAAmC,KAAO;AAC/F,IAAA;;AAEE,IAAA,CAAC,QAAQ;;QAET,OAAO,QAAQ,KAAK,QAAQ;;AAE5B,QAAAA,oBAAc,CAAC,QAAQ,CAAC,EACxB;AACA,QAAA,OAAO,QAAQ,CAAC,QAAyB,CAAC;IAC5C;AAEA,IAAA,OAAO,QAAa;AACtB;;;;"}