lkd-web-kit 0.0.12 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -250,7 +250,7 @@ export declare const nullableInput: <T extends ZodTypeAny>(schema: T, message?:
250
250
  export declare const PageDataProvider: ({ value, children }: PageDataProviderProps) => JSX.Element;
251
251
 
252
252
  declare interface PageDataProviderProps {
253
- children: default_2.ReactNode;
253
+ children: React.ReactNode;
254
254
  value: any;
255
255
  }
256
256
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/contexts/NavigationHistoryContext/index.tsx"],"sourcesContent":["'use client';\r\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation';\r\nimport React, { createContext, ReactNode, useContext, useEffect, useState } from 'react';\r\n\r\n// Defining types for the context value\r\ninterface NavigationHistoryContextType {\r\n history: string[];\r\n}\r\n\r\n// Creating the context with a proper type\r\nconst NavigationHistoryContext = createContext<NavigationHistoryContextType | null>(null);\r\n\r\n// Props type for the provider component\r\ninterface NavigationHistoryProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\n/**\r\n * Proveedor de historial de navegación\r\n * Solo se encarga de registrar las rutas visitadas\r\n */\r\nexport function NavigationHistoryProvider({ children }: NavigationHistoryProviderProps) {\r\n const pathname = usePathname();\r\n const searchParams = useSearchParams();\r\n\r\n // Estado para almacenar el historial de navegación\r\n const [history, setHistory] = useState<string[]>([]);\r\n\r\n // Efecto para actualizar el historial cuando cambia la ruta o los parámetros\r\n useEffect(() => {\r\n // Creamos la URL completa (ruta + parámetros)\r\n const fullPath = searchParams?.size ? `${pathname}?${searchParams.toString()}` : pathname;\r\n\r\n if (fullPath) {\r\n setHistory((prev) => {\r\n // Evitar duplicados consecutivos\r\n if (prev.length > 0 && prev[prev.length - 1] === fullPath) {\r\n return prev;\r\n }\r\n return [...prev, fullPath];\r\n });\r\n }\r\n }, [pathname, searchParams]);\r\n\r\n return (\r\n <NavigationHistoryContext.Provider value={{ history }}>\r\n {children}\r\n </NavigationHistoryContext.Provider>\r\n );\r\n}\r\n\r\n// Return type for the useNavigationHistory hook\r\ninterface NavigationHistoryHook {\r\n history: string[];\r\n goBack: (fallback?: string) => void;\r\n currentRoute: string | null;\r\n hasPreviousRoute: boolean;\r\n getPreviousRoute: () => string | null;\r\n}\r\n\r\nexport const QP_BACK_URL_NAME = 'backUrl';\r\n\r\n/**\r\n * Hook para usar el historial de navegación\r\n * @returns {NavigationHistoryHook} Objeto con el historial y la función goBack\r\n */\r\nexport function useNavigationHistory(): NavigationHistoryHook {\r\n const context = useContext(NavigationHistoryContext);\r\n const router = useRouter();\r\n\r\n if (!context) {\r\n throw new Error('useNavigationHistory debe usarse dentro de un NavigationHistoryProvider');\r\n }\r\n\r\n const searchParams = useSearchParams();\r\n\r\n const { history } = context;\r\n\r\n /**\r\n * Navega hacia atrás en el historial o a la ruta de fallback\r\n * @param {string} fallback - Ruta a la que ir si no hay historial previo\r\n */\r\n const goBack = (fallback?: string) => {\r\n const returnUrl = searchParams.get(QP_BACK_URL_NAME);\r\n if (returnUrl) {\r\n router.push(returnUrl);\r\n return;\r\n }\r\n\r\n if (history.length <= 1) {\r\n router.push(fallback ?? '/');\r\n return;\r\n }\r\n\r\n // Obtener las dos últimas rutas\r\n const previousRoute = history[history.length - 2];\r\n const currentRoute = history[history.length - 1];\r\n\r\n // Si hay más de 2 rutas en el historial y detectamos un patrón de bucle\r\n if (history.length >= 3 && history[history.length - 3] === currentRoute) {\r\n // Ir a una ruta segura (home) o a la ruta de fallback\r\n router.push(fallback ?? '/');\r\n return;\r\n }\r\n\r\n // Navegación normal\r\n router.push(previousRoute ?? '/');\r\n };\r\n\r\n return {\r\n history,\r\n goBack,\r\n currentRoute: history.length > 0 ? history[history.length - 1] : null,\r\n hasPreviousRoute: history.length > 1,\r\n getPreviousRoute: () => (history.length >= 2 ? history[history.length - 2] : null),\r\n };\r\n}\r\n"],"names":["NavigationHistoryContext","createContext","NavigationHistoryProvider","children","pathname","usePathname","searchParams","useSearchParams","history","setHistory","useState","useEffect","fullPath","prev","jsx","QP_BACK_URL_NAME","useNavigationHistory","context","useContext","router","useRouter","fallback","returnUrl","previousRoute","currentRoute"],"mappings":"yNAUMA,EAA2BC,6BAAmD,IAAI,EAWxE,SAAAC,EAA0B,CAAE,SAAAC,GAA4C,CACtF,MAAMC,EAAWC,EAAAA,kBAAAA,YAAY,EACvBC,EAAeC,EAAAA,kBAAAA,gBAAgB,EAG/B,CAACC,EAASC,CAAU,EAAIC,EAAAA,aAAAA,SAAmB,CAAA,CAAE,EAGnDC,OAAAA,EAAAA,aAAAA,UAAU,IAAM,CAER,MAAAC,EAAWN,GAAc,KAAO,GAAGF,CAAQ,IAAIE,EAAa,UAAU,GAAKF,EAE7EQ,GACFH,EAAYI,GAENA,EAAK,OAAS,GAAKA,EAAKA,EAAK,OAAS,CAAC,IAAMD,EACxCC,EAEF,CAAC,GAAGA,EAAMD,CAAQ,CAC1B,CACH,EACC,CAACR,EAAUE,CAAY,CAAC,EAGzBQ,EAAA,IAACd,EAAyB,SAAzB,CAAkC,MAAO,CAAE,QAAAQ,CAAA,EACzC,SAAAL,EACH,CAEJ,CAWO,MAAMY,EAAmB,UAMzB,SAASC,GAA8C,CACtD,MAAAC,EAAUC,0BAAWlB,CAAwB,EAC7CmB,EAASC,EAAAA,kBAAAA,UAAU,EAEzB,GAAI,CAACH,EACG,MAAA,IAAI,MAAM,yEAAyE,EAG3F,MAAMX,EAAeC,EAAAA,kBAAAA,gBAAgB,EAE/B,CAAE,QAAAC,GAAYS,EAiCb,MAAA,CACL,QAAAT,EACA,OA7Bca,GAAsB,CAC9B,MAAAC,EAAYhB,EAAa,IAAIS,CAAgB,EACnD,GAAIO,EAAW,CACbH,EAAO,KAAKG,CAAS,EACrB,MAAA,CAGE,GAAAd,EAAQ,QAAU,EAAG,CAChBW,EAAA,KAAKE,GAAY,GAAG,EAC3B,MAAA,CAIF,MAAME,EAAgBf,EAAQA,EAAQ,OAAS,CAAC,EAC1CgB,EAAehB,EAAQA,EAAQ,OAAS,CAAC,EAG3C,GAAAA,EAAQ,QAAU,GAAKA,EAAQA,EAAQ,OAAS,CAAC,IAAMgB,EAAc,CAEhEL,EAAA,KAAKE,GAAY,GAAG,EAC3B,MAAA,CAIKF,EAAA,KAAKI,GAAiB,GAAG,CAClC,EAKE,aAAcf,EAAQ,OAAS,EAAIA,EAAQA,EAAQ,OAAS,CAAC,EAAI,KACjE,iBAAkBA,EAAQ,OAAS,EACnC,iBAAkB,IAAOA,EAAQ,QAAU,EAAIA,EAAQA,EAAQ,OAAS,CAAC,EAAI,IAC/E,CACF"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/contexts/NavigationHistoryContext/index.tsx"],"sourcesContent":["'use client';\r\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation';\r\nimport { createContext, ReactNode, useContext, useEffect, useState } from 'react';\r\n\r\n// Defining types for the context value\r\ninterface NavigationHistoryContextType {\r\n history: string[];\r\n}\r\n\r\n// Creating the context with a proper type\r\nconst NavigationHistoryContext = createContext<NavigationHistoryContextType | null>(null);\r\n\r\n// Props type for the provider component\r\ninterface NavigationHistoryProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\n/**\r\n * Proveedor de historial de navegación\r\n * Solo se encarga de registrar las rutas visitadas\r\n */\r\nexport function NavigationHistoryProvider({ children }: NavigationHistoryProviderProps) {\r\n const pathname = usePathname();\r\n const searchParams = useSearchParams();\r\n\r\n // Estado para almacenar el historial de navegación\r\n const [history, setHistory] = useState<string[]>([]);\r\n\r\n // Efecto para actualizar el historial cuando cambia la ruta o los parámetros\r\n useEffect(() => {\r\n // Creamos la URL completa (ruta + parámetros)\r\n const fullPath = searchParams?.size ? `${pathname}?${searchParams.toString()}` : pathname;\r\n\r\n if (fullPath) {\r\n setHistory((prev) => {\r\n // Evitar duplicados consecutivos\r\n if (prev.length > 0 && prev[prev.length - 1] === fullPath) {\r\n return prev;\r\n }\r\n return [...prev, fullPath];\r\n });\r\n }\r\n }, [pathname, searchParams]);\r\n\r\n return (\r\n <NavigationHistoryContext.Provider value={{ history }}>\r\n {children}\r\n </NavigationHistoryContext.Provider>\r\n );\r\n}\r\n\r\n// Return type for the useNavigationHistory hook\r\ninterface NavigationHistoryHook {\r\n history: string[];\r\n goBack: (fallback?: string) => void;\r\n currentRoute: string | null;\r\n hasPreviousRoute: boolean;\r\n getPreviousRoute: () => string | null;\r\n}\r\n\r\nexport const QP_BACK_URL_NAME = 'backUrl';\r\n\r\n/**\r\n * Hook para usar el historial de navegación\r\n * @returns {NavigationHistoryHook} Objeto con el historial y la función goBack\r\n */\r\nexport function useNavigationHistory(): NavigationHistoryHook {\r\n const context = useContext(NavigationHistoryContext);\r\n const router = useRouter();\r\n\r\n if (!context) {\r\n throw new Error('useNavigationHistory debe usarse dentro de un NavigationHistoryProvider');\r\n }\r\n\r\n const searchParams = useSearchParams();\r\n\r\n const { history } = context;\r\n\r\n /**\r\n * Navega hacia atrás en el historial o a la ruta de fallback\r\n * @param {string} fallback - Ruta a la que ir si no hay historial previo\r\n */\r\n const goBack = (fallback?: string) => {\r\n const returnUrl = searchParams.get(QP_BACK_URL_NAME);\r\n if (returnUrl) {\r\n router.push(returnUrl);\r\n return;\r\n }\r\n\r\n if (history.length <= 1) {\r\n router.push(fallback ?? '/');\r\n return;\r\n }\r\n\r\n // Obtener las dos últimas rutas\r\n const previousRoute = history[history.length - 2];\r\n const currentRoute = history[history.length - 1];\r\n\r\n // Si hay más de 2 rutas en el historial y detectamos un patrón de bucle\r\n if (history.length >= 3 && history[history.length - 3] === currentRoute) {\r\n // Ir a una ruta segura (home) o a la ruta de fallback\r\n router.push(fallback ?? '/');\r\n return;\r\n }\r\n\r\n // Navegación normal\r\n router.push(previousRoute ?? '/');\r\n };\r\n\r\n return {\r\n history,\r\n goBack,\r\n currentRoute: history.length > 0 ? history[history.length - 1] : null,\r\n hasPreviousRoute: history.length > 1,\r\n getPreviousRoute: () => (history.length >= 2 ? history[history.length - 2] : null),\r\n };\r\n}\r\n"],"names":["NavigationHistoryContext","createContext","NavigationHistoryProvider","children","pathname","usePathname","searchParams","useSearchParams","history","setHistory","useState","useEffect","fullPath","prev","jsx","QP_BACK_URL_NAME","useNavigationHistory","context","useContext","router","useRouter","fallback","returnUrl","previousRoute","currentRoute"],"mappings":"yNAUMA,EAA2BC,6BAAmD,IAAI,EAWxE,SAAAC,EAA0B,CAAE,SAAAC,GAA4C,CACtF,MAAMC,EAAWC,EAAAA,kBAAAA,YAAY,EACvBC,EAAeC,EAAAA,kBAAAA,gBAAgB,EAG/B,CAACC,EAASC,CAAU,EAAIC,EAAAA,aAAAA,SAAmB,CAAA,CAAE,EAGnDC,OAAAA,EAAAA,aAAAA,UAAU,IAAM,CAER,MAAAC,EAAWN,GAAc,KAAO,GAAGF,CAAQ,IAAIE,EAAa,UAAU,GAAKF,EAE7EQ,GACFH,EAAYI,GAENA,EAAK,OAAS,GAAKA,EAAKA,EAAK,OAAS,CAAC,IAAMD,EACxCC,EAEF,CAAC,GAAGA,EAAMD,CAAQ,CAC1B,CACH,EACC,CAACR,EAAUE,CAAY,CAAC,EAGzBQ,EAAA,IAACd,EAAyB,SAAzB,CAAkC,MAAO,CAAE,QAAAQ,CAAA,EACzC,SAAAL,EACH,CAEJ,CAWO,MAAMY,EAAmB,UAMzB,SAASC,GAA8C,CACtD,MAAAC,EAAUC,0BAAWlB,CAAwB,EAC7CmB,EAASC,EAAAA,kBAAAA,UAAU,EAEzB,GAAI,CAACH,EACG,MAAA,IAAI,MAAM,yEAAyE,EAG3F,MAAMX,EAAeC,EAAAA,kBAAAA,gBAAgB,EAE/B,CAAE,QAAAC,GAAYS,EAiCb,MAAA,CACL,QAAAT,EACA,OA7Bca,GAAsB,CAC9B,MAAAC,EAAYhB,EAAa,IAAIS,CAAgB,EACnD,GAAIO,EAAW,CACbH,EAAO,KAAKG,CAAS,EACrB,MAAA,CAGE,GAAAd,EAAQ,QAAU,EAAG,CAChBW,EAAA,KAAKE,GAAY,GAAG,EAC3B,MAAA,CAIF,MAAME,EAAgBf,EAAQA,EAAQ,OAAS,CAAC,EAC1CgB,EAAehB,EAAQA,EAAQ,OAAS,CAAC,EAG3C,GAAAA,EAAQ,QAAU,GAAKA,EAAQA,EAAQ,OAAS,CAAC,IAAMgB,EAAc,CAEhEL,EAAA,KAAKE,GAAY,GAAG,EAC3B,MAAA,CAIKF,EAAA,KAAKI,GAAiB,GAAG,CAClC,EAKE,aAAcf,EAAQ,OAAS,EAAIA,EAAQA,EAAQ,OAAS,CAAC,EAAI,KACjE,iBAAkBA,EAAQ,OAAS,EACnC,iBAAkB,IAAOA,EAAQ,QAAU,EAAIA,EAAQA,EAAQ,OAAS,CAAC,EAAI,IAC/E,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/contexts/NavigationHistoryContext/index.tsx"],"sourcesContent":["'use client';\r\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation';\r\nimport React, { createContext, ReactNode, useContext, useEffect, useState } from 'react';\r\n\r\n// Defining types for the context value\r\ninterface NavigationHistoryContextType {\r\n history: string[];\r\n}\r\n\r\n// Creating the context with a proper type\r\nconst NavigationHistoryContext = createContext<NavigationHistoryContextType | null>(null);\r\n\r\n// Props type for the provider component\r\ninterface NavigationHistoryProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\n/**\r\n * Proveedor de historial de navegación\r\n * Solo se encarga de registrar las rutas visitadas\r\n */\r\nexport function NavigationHistoryProvider({ children }: NavigationHistoryProviderProps) {\r\n const pathname = usePathname();\r\n const searchParams = useSearchParams();\r\n\r\n // Estado para almacenar el historial de navegación\r\n const [history, setHistory] = useState<string[]>([]);\r\n\r\n // Efecto para actualizar el historial cuando cambia la ruta o los parámetros\r\n useEffect(() => {\r\n // Creamos la URL completa (ruta + parámetros)\r\n const fullPath = searchParams?.size ? `${pathname}?${searchParams.toString()}` : pathname;\r\n\r\n if (fullPath) {\r\n setHistory((prev) => {\r\n // Evitar duplicados consecutivos\r\n if (prev.length > 0 && prev[prev.length - 1] === fullPath) {\r\n return prev;\r\n }\r\n return [...prev, fullPath];\r\n });\r\n }\r\n }, [pathname, searchParams]);\r\n\r\n return (\r\n <NavigationHistoryContext.Provider value={{ history }}>\r\n {children}\r\n </NavigationHistoryContext.Provider>\r\n );\r\n}\r\n\r\n// Return type for the useNavigationHistory hook\r\ninterface NavigationHistoryHook {\r\n history: string[];\r\n goBack: (fallback?: string) => void;\r\n currentRoute: string | null;\r\n hasPreviousRoute: boolean;\r\n getPreviousRoute: () => string | null;\r\n}\r\n\r\nexport const QP_BACK_URL_NAME = 'backUrl';\r\n\r\n/**\r\n * Hook para usar el historial de navegación\r\n * @returns {NavigationHistoryHook} Objeto con el historial y la función goBack\r\n */\r\nexport function useNavigationHistory(): NavigationHistoryHook {\r\n const context = useContext(NavigationHistoryContext);\r\n const router = useRouter();\r\n\r\n if (!context) {\r\n throw new Error('useNavigationHistory debe usarse dentro de un NavigationHistoryProvider');\r\n }\r\n\r\n const searchParams = useSearchParams();\r\n\r\n const { history } = context;\r\n\r\n /**\r\n * Navega hacia atrás en el historial o a la ruta de fallback\r\n * @param {string} fallback - Ruta a la que ir si no hay historial previo\r\n */\r\n const goBack = (fallback?: string) => {\r\n const returnUrl = searchParams.get(QP_BACK_URL_NAME);\r\n if (returnUrl) {\r\n router.push(returnUrl);\r\n return;\r\n }\r\n\r\n if (history.length <= 1) {\r\n router.push(fallback ?? '/');\r\n return;\r\n }\r\n\r\n // Obtener las dos últimas rutas\r\n const previousRoute = history[history.length - 2];\r\n const currentRoute = history[history.length - 1];\r\n\r\n // Si hay más de 2 rutas en el historial y detectamos un patrón de bucle\r\n if (history.length >= 3 && history[history.length - 3] === currentRoute) {\r\n // Ir a una ruta segura (home) o a la ruta de fallback\r\n router.push(fallback ?? '/');\r\n return;\r\n }\r\n\r\n // Navegación normal\r\n router.push(previousRoute ?? '/');\r\n };\r\n\r\n return {\r\n history,\r\n goBack,\r\n currentRoute: history.length > 0 ? history[history.length - 1] : null,\r\n hasPreviousRoute: history.length > 1,\r\n getPreviousRoute: () => (history.length >= 2 ? history[history.length - 2] : null),\r\n };\r\n}\r\n"],"names":["NavigationHistoryContext","createContext","NavigationHistoryProvider","children","pathname","usePathname","searchParams","useSearchParams","history","setHistory","useState","useEffect","fullPath","prev","jsx","QP_BACK_URL_NAME","useNavigationHistory","context","useContext","router","useRouter","fallback","returnUrl","previousRoute","currentRoute"],"mappings":";;;;AAUA,MAAMA,IAA2BC,gBAAmD,IAAI;AAWxE,SAAAC,EAA0B,EAAE,UAAAC,KAA4C;AACtF,QAAMC,IAAWC,EAAAA,YAAY,GACvBC,IAAeC,EAAAA,gBAAgB,GAG/B,CAACC,GAASC,CAAU,IAAIC,EAAAA,SAAmB,CAAA,CAAE;AAGnDC,SAAAA,EAAAA,UAAU,MAAM;AAER,UAAAC,IAAWN,GAAc,OAAO,GAAGF,CAAQ,IAAIE,EAAa,UAAU,KAAKF;AAEjF,IAAIQ,KACFH,EAAW,CAACI,MAENA,EAAK,SAAS,KAAKA,EAAKA,EAAK,SAAS,CAAC,MAAMD,IACxCC,IAEF,CAAC,GAAGA,GAAMD,CAAQ,CAC1B;AAAA,EACH,GACC,CAACR,GAAUE,CAAY,CAAC,GAGzB,gBAAAQ,EAACd,EAAyB,UAAzB,EAAkC,OAAO,EAAE,SAAAQ,EAAA,GACzC,UAAAL,GACH;AAEJ;AAWO,MAAMY,IAAmB;AAMzB,SAASC,IAA8C;AACtD,QAAAC,IAAUC,aAAWlB,CAAwB,GAC7CmB,IAASC,EAAAA,UAAU;AAEzB,MAAI,CAACH;AACG,UAAA,IAAI,MAAM,yEAAyE;AAG3F,QAAMX,IAAeC,EAAAA,gBAAgB,GAE/B,EAAE,SAAAC,MAAYS;AAiCb,SAAA;AAAA,IACL,SAAAT;AAAA,IACA,QA7Ba,CAACa,MAAsB;AAC9B,YAAAC,IAAYhB,EAAa,IAAIS,CAAgB;AACnD,UAAIO,GAAW;AACb,QAAAH,EAAO,KAAKG,CAAS;AACrB;AAAA,MAAA;AAGE,UAAAd,EAAQ,UAAU,GAAG;AAChB,QAAAW,EAAA,KAAKE,KAAY,GAAG;AAC3B;AAAA,MAAA;AAIF,YAAME,IAAgBf,EAAQA,EAAQ,SAAS,CAAC,GAC1CgB,IAAehB,EAAQA,EAAQ,SAAS,CAAC;AAG3C,UAAAA,EAAQ,UAAU,KAAKA,EAAQA,EAAQ,SAAS,CAAC,MAAMgB,GAAc;AAEhE,QAAAL,EAAA,KAAKE,KAAY,GAAG;AAC3B;AAAA,MAAA;AAIK,MAAAF,EAAA,KAAKI,KAAiB,GAAG;AAAA,IAClC;AAAA,IAKE,cAAcf,EAAQ,SAAS,IAAIA,EAAQA,EAAQ,SAAS,CAAC,IAAI;AAAA,IACjE,kBAAkBA,EAAQ,SAAS;AAAA,IACnC,kBAAkB,MAAOA,EAAQ,UAAU,IAAIA,EAAQA,EAAQ,SAAS,CAAC,IAAI;AAAA,EAC/E;AACF;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/contexts/NavigationHistoryContext/index.tsx"],"sourcesContent":["'use client';\r\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation';\r\nimport { createContext, ReactNode, useContext, useEffect, useState } from 'react';\r\n\r\n// Defining types for the context value\r\ninterface NavigationHistoryContextType {\r\n history: string[];\r\n}\r\n\r\n// Creating the context with a proper type\r\nconst NavigationHistoryContext = createContext<NavigationHistoryContextType | null>(null);\r\n\r\n// Props type for the provider component\r\ninterface NavigationHistoryProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\n/**\r\n * Proveedor de historial de navegación\r\n * Solo se encarga de registrar las rutas visitadas\r\n */\r\nexport function NavigationHistoryProvider({ children }: NavigationHistoryProviderProps) {\r\n const pathname = usePathname();\r\n const searchParams = useSearchParams();\r\n\r\n // Estado para almacenar el historial de navegación\r\n const [history, setHistory] = useState<string[]>([]);\r\n\r\n // Efecto para actualizar el historial cuando cambia la ruta o los parámetros\r\n useEffect(() => {\r\n // Creamos la URL completa (ruta + parámetros)\r\n const fullPath = searchParams?.size ? `${pathname}?${searchParams.toString()}` : pathname;\r\n\r\n if (fullPath) {\r\n setHistory((prev) => {\r\n // Evitar duplicados consecutivos\r\n if (prev.length > 0 && prev[prev.length - 1] === fullPath) {\r\n return prev;\r\n }\r\n return [...prev, fullPath];\r\n });\r\n }\r\n }, [pathname, searchParams]);\r\n\r\n return (\r\n <NavigationHistoryContext.Provider value={{ history }}>\r\n {children}\r\n </NavigationHistoryContext.Provider>\r\n );\r\n}\r\n\r\n// Return type for the useNavigationHistory hook\r\ninterface NavigationHistoryHook {\r\n history: string[];\r\n goBack: (fallback?: string) => void;\r\n currentRoute: string | null;\r\n hasPreviousRoute: boolean;\r\n getPreviousRoute: () => string | null;\r\n}\r\n\r\nexport const QP_BACK_URL_NAME = 'backUrl';\r\n\r\n/**\r\n * Hook para usar el historial de navegación\r\n * @returns {NavigationHistoryHook} Objeto con el historial y la función goBack\r\n */\r\nexport function useNavigationHistory(): NavigationHistoryHook {\r\n const context = useContext(NavigationHistoryContext);\r\n const router = useRouter();\r\n\r\n if (!context) {\r\n throw new Error('useNavigationHistory debe usarse dentro de un NavigationHistoryProvider');\r\n }\r\n\r\n const searchParams = useSearchParams();\r\n\r\n const { history } = context;\r\n\r\n /**\r\n * Navega hacia atrás en el historial o a la ruta de fallback\r\n * @param {string} fallback - Ruta a la que ir si no hay historial previo\r\n */\r\n const goBack = (fallback?: string) => {\r\n const returnUrl = searchParams.get(QP_BACK_URL_NAME);\r\n if (returnUrl) {\r\n router.push(returnUrl);\r\n return;\r\n }\r\n\r\n if (history.length <= 1) {\r\n router.push(fallback ?? '/');\r\n return;\r\n }\r\n\r\n // Obtener las dos últimas rutas\r\n const previousRoute = history[history.length - 2];\r\n const currentRoute = history[history.length - 1];\r\n\r\n // Si hay más de 2 rutas en el historial y detectamos un patrón de bucle\r\n if (history.length >= 3 && history[history.length - 3] === currentRoute) {\r\n // Ir a una ruta segura (home) o a la ruta de fallback\r\n router.push(fallback ?? '/');\r\n return;\r\n }\r\n\r\n // Navegación normal\r\n router.push(previousRoute ?? '/');\r\n };\r\n\r\n return {\r\n history,\r\n goBack,\r\n currentRoute: history.length > 0 ? history[history.length - 1] : null,\r\n hasPreviousRoute: history.length > 1,\r\n getPreviousRoute: () => (history.length >= 2 ? history[history.length - 2] : null),\r\n };\r\n}\r\n"],"names":["NavigationHistoryContext","createContext","NavigationHistoryProvider","children","pathname","usePathname","searchParams","useSearchParams","history","setHistory","useState","useEffect","fullPath","prev","jsx","QP_BACK_URL_NAME","useNavigationHistory","context","useContext","router","useRouter","fallback","returnUrl","previousRoute","currentRoute"],"mappings":";;;;AAUA,MAAMA,IAA2BC,gBAAmD,IAAI;AAWxE,SAAAC,EAA0B,EAAE,UAAAC,KAA4C;AACtF,QAAMC,IAAWC,EAAAA,YAAY,GACvBC,IAAeC,EAAAA,gBAAgB,GAG/B,CAACC,GAASC,CAAU,IAAIC,EAAAA,SAAmB,CAAA,CAAE;AAGnDC,SAAAA,EAAAA,UAAU,MAAM;AAER,UAAAC,IAAWN,GAAc,OAAO,GAAGF,CAAQ,IAAIE,EAAa,UAAU,KAAKF;AAEjF,IAAIQ,KACFH,EAAW,CAACI,MAENA,EAAK,SAAS,KAAKA,EAAKA,EAAK,SAAS,CAAC,MAAMD,IACxCC,IAEF,CAAC,GAAGA,GAAMD,CAAQ,CAC1B;AAAA,EACH,GACC,CAACR,GAAUE,CAAY,CAAC,GAGzB,gBAAAQ,EAACd,EAAyB,UAAzB,EAAkC,OAAO,EAAE,SAAAQ,EAAA,GACzC,UAAAL,GACH;AAEJ;AAWO,MAAMY,IAAmB;AAMzB,SAASC,IAA8C;AACtD,QAAAC,IAAUC,aAAWlB,CAAwB,GAC7CmB,IAASC,EAAAA,UAAU;AAEzB,MAAI,CAACH;AACG,UAAA,IAAI,MAAM,yEAAyE;AAG3F,QAAMX,IAAeC,EAAAA,gBAAgB,GAE/B,EAAE,SAAAC,MAAYS;AAiCb,SAAA;AAAA,IACL,SAAAT;AAAA,IACA,QA7Ba,CAACa,MAAsB;AAC9B,YAAAC,IAAYhB,EAAa,IAAIS,CAAgB;AACnD,UAAIO,GAAW;AACb,QAAAH,EAAO,KAAKG,CAAS;AACrB;AAAA,MAAA;AAGE,UAAAd,EAAQ,UAAU,GAAG;AAChB,QAAAW,EAAA,KAAKE,KAAY,GAAG;AAC3B;AAAA,MAAA;AAIF,YAAME,IAAgBf,EAAQA,EAAQ,SAAS,CAAC,GAC1CgB,IAAehB,EAAQA,EAAQ,SAAS,CAAC;AAG3C,UAAAA,EAAQ,UAAU,KAAKA,EAAQA,EAAQ,SAAS,CAAC,MAAMgB,GAAc;AAEhE,QAAAL,EAAA,KAAKE,KAAY,GAAG;AAC3B;AAAA,MAAA;AAIK,MAAAF,EAAA,KAAKI,KAAiB,GAAG;AAAA,IAClC;AAAA,IAKE,cAAcf,EAAQ,SAAS,IAAIA,EAAQA,EAAQ,SAAS,CAAC,IAAI;AAAA,IACjE,kBAAkBA,EAAQ,SAAS;AAAA,IACnC,kBAAkB,MAAOA,EAAQ,UAAU,IAAIA,EAAQA,EAAQ,SAAS,CAAC,IAAI;AAAA,EAC/E;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/contexts/PageDataContext/index.tsx"],"sourcesContent":["\"use client\";\r\nimport React, { createContext, useContext } from \"react\";\r\n\r\nconst PageData = createContext<any | undefined>(undefined);\r\n\r\ninterface PageDataProviderProps {\r\n children: React.ReactNode;\r\n value: any;\r\n}\r\n\r\nexport const PageDataProvider = ({\r\n value,\r\n children\r\n}: PageDataProviderProps) => (\r\n <PageData.Provider value={value}>{children}</PageData.Provider>\r\n);\r\nexport const usePageData = <T,>(): T => {\r\n const data = useContext(PageData);\r\n if (data === undefined) throw new Error(\"Out of context: usePageData\");\r\n\r\n return data;\r\n};\r\n"],"names":["PageData","createContext","PageDataProvider","value","children","jsx","usePageData","data","useContext"],"mappings":"2KAGMA,EAAWC,6BAA+B,MAAS,EAO5CC,EAAmB,CAAC,CAC/B,MAAAC,EACA,SAAAC,CACF,IACGC,EAAA,IAAAL,EAAS,SAAT,CAAkB,MAAAG,EAAe,SAAAC,CAAS,CAAA,EAEhCE,EAAc,IAAa,CAChC,MAAAC,EAAOC,0BAAWR,CAAQ,EAChC,GAAIO,IAAS,OAAiB,MAAA,IAAI,MAAM,6BAA6B,EAE9D,OAAAA,CACT"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/contexts/PageDataContext/index.tsx"],"sourcesContent":["\"use client\";\r\nimport { createContext, useContext } from \"react\";\r\n\r\nconst PageData = createContext<any | undefined>(undefined);\r\n\r\ninterface PageDataProviderProps {\r\n children: React.ReactNode;\r\n value: any;\r\n}\r\n\r\nexport const PageDataProvider = ({\r\n value,\r\n children\r\n}: PageDataProviderProps) => (\r\n <PageData.Provider value={value}>{children}</PageData.Provider>\r\n);\r\nexport const usePageData = <T,>(): T => {\r\n const data = useContext(PageData);\r\n if (data === undefined) throw new Error(\"Out of context: usePageData\");\r\n\r\n return data;\r\n};\r\n"],"names":["PageData","createContext","PageDataProvider","value","children","jsx","usePageData","data","useContext"],"mappings":"2KAGMA,EAAWC,6BAA+B,MAAS,EAO5CC,EAAmB,CAAC,CAC/B,MAAAC,EACA,SAAAC,CACF,IACGC,EAAA,IAAAL,EAAS,SAAT,CAAkB,MAAAG,EAAe,SAAAC,CAAS,CAAA,EAEhCE,EAAc,IAAa,CAChC,MAAAC,EAAOC,0BAAWR,CAAQ,EAChC,GAAIO,IAAS,OAAiB,MAAA,IAAI,MAAM,6BAA6B,EAE9D,OAAAA,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/contexts/PageDataContext/index.tsx"],"sourcesContent":["\"use client\";\r\nimport React, { createContext, useContext } from \"react\";\r\n\r\nconst PageData = createContext<any | undefined>(undefined);\r\n\r\ninterface PageDataProviderProps {\r\n children: React.ReactNode;\r\n value: any;\r\n}\r\n\r\nexport const PageDataProvider = ({\r\n value,\r\n children\r\n}: PageDataProviderProps) => (\r\n <PageData.Provider value={value}>{children}</PageData.Provider>\r\n);\r\nexport const usePageData = <T,>(): T => {\r\n const data = useContext(PageData);\r\n if (data === undefined) throw new Error(\"Out of context: usePageData\");\r\n\r\n return data;\r\n};\r\n"],"names":["PageData","createContext","PageDataProvider","value","children","jsx","usePageData","data","useContext"],"mappings":";;;AAGA,MAAMA,IAAWC,gBAA+B,MAAS,GAO5CC,IAAmB,CAAC;AAAA,EAC/B,OAAAC;AAAA,EACA,UAAAC;AACF,MACG,gBAAAC,EAAAL,EAAS,UAAT,EAAkB,OAAAG,GAAe,UAAAC,EAAS,CAAA,GAEhCE,IAAc,MAAa;AAChC,QAAAC,IAAOC,aAAWR,CAAQ;AAChC,MAAIO,MAAS,OAAiB,OAAA,IAAI,MAAM,6BAA6B;AAE9D,SAAAA;AACT;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/contexts/PageDataContext/index.tsx"],"sourcesContent":["\"use client\";\r\nimport { createContext, useContext } from \"react\";\r\n\r\nconst PageData = createContext<any | undefined>(undefined);\r\n\r\ninterface PageDataProviderProps {\r\n children: React.ReactNode;\r\n value: any;\r\n}\r\n\r\nexport const PageDataProvider = ({\r\n value,\r\n children\r\n}: PageDataProviderProps) => (\r\n <PageData.Provider value={value}>{children}</PageData.Provider>\r\n);\r\nexport const usePageData = <T,>(): T => {\r\n const data = useContext(PageData);\r\n if (data === undefined) throw new Error(\"Out of context: usePageData\");\r\n\r\n return data;\r\n};\r\n"],"names":["PageData","createContext","PageDataProvider","value","children","jsx","usePageData","data","useContext"],"mappings":";;;AAGA,MAAMA,IAAWC,gBAA+B,MAAS,GAO5CC,IAAmB,CAAC;AAAA,EAC/B,OAAAC;AAAA,EACA,UAAAC;AACF,MACG,gBAAAC,EAAAL,EAAS,UAAT,EAAkB,OAAAG,GAAe,UAAAC,EAAS,CAAA,GAEhCE,IAAc,MAAa;AAChC,QAAAC,IAAOC,aAAWR,CAAQ;AAChC,MAAIO,MAAS,OAAiB,OAAA,IAAI,MAAM,6BAA6B;AAE9D,SAAAA;AACT;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lkd-web-kit",
3
- "version": "0.0.12",
3
+ "version": "0.0.13",
4
4
  "description": "A template for creating React component libraries with Vite.",
5
5
  "author": "LKD",
6
6
  "license": "MIT",