{"version":3,"file":"index.mjs","sources":["../../withMemo.tsx","../../hooks/useTranslatedText.ts","../../helpers/classnames.ts","../../helpers/extractors.ts","../../index.ts"],"sourcesContent":["import { memo } from \"react\";\r\n\r\n\r\ntype PropsAreEqual<P> = (prevProps: Readonly<P>, nextProps: Readonly<P>) => boolean;\r\n\r\n/**\r\n * Wrapper per React.memo che preserva i tipi generici\r\n */\r\nexport function withMemo<T extends React.ComponentType<any>>(\r\n  Component: T,\r\n  propsAreEqual?: PropsAreEqual<React.ComponentProps<T>>\r\n): T {\r\n  return memo(Component, propsAreEqual) as unknown as T;\r\n}","import { useCallback } from \"react\";\r\nimport type { TOptions } from \"i18next\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport const useTranslatedText = (ns?: string) => {\r\n  const { t } = useTranslation(ns);\r\n\r\n  const traslateText = useCallback(\r\n    (text: string, options?: TOptions) => {\r\n      if (!text) return \"\";\r\n      return t(text, options);\r\n    },\r\n    [t]\r\n  );\r\n  return { traslateText };\r\n};\r\n","import { type ClassValue, clsx } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\n// Utility per combinare classi Tailwind in modo sicuro\r\nexport function cn(...inputs: ClassValue[]) {\r\n  return twMerge(clsx(inputs));\r\n}\r\n","type ExtractorCache<T> = Map<string, T>;\r\n\r\nconst EMPTY_OBJECT = {};\r\nfunction createExtractor<\r\n  T extends Record<string, unknown>,\r\n  K extends keyof T = keyof T,\r\n>(allData: T, cache: ExtractorCache<Partial<T>>, usedKeys?: K[]): T {\r\n  if (!allData) return EMPTY_OBJECT as T;\r\n  const keys = usedKeys ?? (Object.keys(allData) as K[]);\r\n\r\n  const key = JSON.stringify(keys);\r\n  const previous = cache.get(key);\r\n\r\n  const extracted = Object.fromEntries(\r\n    Object.entries(allData).filter(([k]) => keys.includes(k as K))\r\n  ) as T;\r\n\r\n  if (!previous || JSON.stringify(previous) !== JSON.stringify(extracted)) {\r\n    cache.set(key, extracted);\r\n  }\r\n\r\n  return (cache.get(key) || extracted) as T;\r\n}\r\nexport { type ExtractorCache, createExtractor };\r\n","export { withMemo } from \"./withMemo\";\r\nexport * from \"./hooks\";\r\nexport * from \"./helpers\";\r\nexport interface AppLinks {\r\n  privacy: string;\r\n  cookie: string;\r\n  eula: string;\r\n  mail: string;\r\n  telephone: string;\r\n  website: string;\r\n}\r\nexport let appLinks: AppLinks = {\r\n  privacy: \"\",\r\n  cookie: \"\",\r\n  eula: \"\",\r\n  mail: \"gaddario98@gmail.com\",\r\n  telephone: \"+393280098770\",\r\n  website: \"www.giosueaddario.it\",\r\n};\r\n\r\nexport const setAppLinks = (links: Partial<AppLinks>) => {\r\n  appLinks = { ...appLinks, ...links };\r\n};\r\n\r\nexport const trimObject = <T extends object>(obj: T): T =>\r\n  Object.entries(obj)?.reduce(\r\n    (prev, [key, val]) => ({\r\n      ...prev,\r\n      [key]:\r\n        typeof val === \"string\" && ![\"password\", \"pPassword\"].includes(key)\r\n          ? val?.trim()\r\n          : val,\r\n    }),\r\n    {} as T\r\n  );\r\n"],"names":[],"mappings":";;;;;AAKA;;AAEG;AACa,SAAA,QAAQ,CACtB,SAAY,EACZ,aAAsD,EAAA;AAEtD,IAAA,OAAO,IAAI,CAAC,SAAS,EAAE,aAAa,CAAiB;AACvD;;ACTa,MAAA,iBAAiB,GAAG,CAAC,EAAW,KAAI;IAC/C,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC;IAEhC,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,IAAY,EAAE,OAAkB,KAAI;AACnC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;AACpB,QAAA,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC;AACzB,KAAC,EACD,CAAC,CAAC,CAAC,CACJ;IACD,OAAO,EAAE,YAAY,EAAE;AACzB;;ACZA;AACgB,SAAA,EAAE,CAAC,GAAG,MAAoB,EAAA;AACxC,IAAA,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B;;ACJA,MAAM,YAAY,GAAG,EAAE;AACvB,SAAS,eAAe,CAGtB,OAAU,EAAE,KAAiC,EAAE,QAAc,EAAA;AAC7D,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,YAAiB;AACtC,IAAA,MAAM,IAAI,GAAG,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,MAAA,GAAA,QAAQ,GAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAS;IAEtD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AAE/B,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAClC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAM,CAAC,CAAC,CAC1D;AAEN,IAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;AACvE,QAAA,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC;;IAG3B,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS;AACrC;;ACXW,IAAA,QAAQ,GAAa;AAC9B,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,IAAI,EAAE,sBAAsB;AAC5B,IAAA,SAAS,EAAE,eAAe;AAC1B,IAAA,OAAO,EAAE,sBAAsB;;AAGpB,MAAA,WAAW,GAAG,CAAC,KAAwB,KAAI;AACtD,IAAA,QAAQ,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,QAAQ,CAAK,EAAA,KAAK,CAAE;AACtC;AAEa,MAAA,UAAU,GAAG,CAAmB,GAAM,KAAO;;AACxD,IAAA,OAAA,MAAA,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,MAAM,CACzB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,sCACZ,IAAI,CAAA,EAAA,EACP,CAAC,GAAG,GACF,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG;cAC9D,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,IAAI;AACX,cAAE,GAAG,EAAA,CAAA,CACT,EACF,EAAO,CACR;;;;;"}