{"version":3,"sources":["../src/utils/constants/common/urlPaths.ts","../src/hooks/useXPage.ts"],"names":["EDITABLE_PATHS","React","nanoid","atomFamily","selector","useRecoilState","useRecoilValue","useSetRecoilState","USE_X_PAGE","USE_X_PAGE_SELECTOR","opts","path","USE_X_PATH","newValue","value","payload","el","useXPage","initData","page","setXPage","useXPageUpdater"],"mappings":"yCAcO,IAAMA,EAA6B,CACxC,IACA,QACA,mBACA,YACA,aACF,ECpBA,UAAYC,MAAW,QACvB,OAAS,UAAAC,MAAc,SACvB,OACE,cAAAC,EACA,YAAAC,EAEA,kBAAAC,EACA,kBAAAC,EACA,qBAAAC,MACK,SAMA,IAAMC,EAAaL,EAAuC,CAC/D,IAAK,aACL,QAAS,CAAC,CACZ,CAAC,EASYM,EAAsBL,EAA2B,CAC5D,IAAK,sBAEL,IAAMM,GAAS,CACb,IAAMC,EAAOD,EAAK,IAAIE,CAAU,EAEhC,OAAKD,EAEYD,EAAK,IAAIF,EAAWG,CAAI,CAAC,EAFxB,CAAC,CAKrB,EAEA,IAAK,CAACD,EAAMG,IAA+B,CAEzC,IAAMC,EAAQD,EAEd,GAAIC,EAAM,MACR,GAAId,EAAe,SAASc,EAAM,IAAI,EAAG,CACvC,IAAMC,EAAUD,EAAM,SAAS,IAAKE,IAAQ,CAC1C,GAAGA,EACH,OAAQ,CACN,MAAOd,EAAO,CAAC,EACf,GAAGc,EAAG,MACR,CACF,EAAE,EAEF,OAAON,EAAK,IAAIF,EAAWM,EAAM,IAAI,EAAGC,CAAO,CACjD,MAGG,CACH,IAAMJ,EAAOD,EAAK,IAAIE,CAAU,EAEhC,OAAKD,EAEED,EAAK,IACVF,EAAWG,CAAI,EACdE,EAA8B,IAAKG,IAAQ,CAC1C,GAAGA,EACH,OAAQ,CACN,MAAOd,EAAO,CAAC,EACf,GAAGc,EAAG,MACR,CACF,EAAE,CACJ,EAXW,MAYb,CACF,CACF,CAAC,EAEM,SAASC,EAASC,EAA6B,CACpD,GAAM,CAACC,EAAMC,CAAQ,EAAIf,EAAeI,CAAmB,EAE3D,OAAM,YAAU,IAAM,CAChBS,GACFE,EAASF,CAAQ,CAErB,EAAG,CAACA,CAAQ,CAAC,EAIN,CAAE,MAFKC,EAEE,SAAAC,CAAS,CAC3B,CAEO,SAASC,GAAqD,CACnE,OAAOd,EAAkBE,CAAmB,CAC9C","sourcesContent":["import { TUrlPath } from \"../../types/elements/XText.types\";\n\nexport const URL_PATHS: TUrlPath[] = [\n  \"/\",\n  \"/shop\",\n  // \"/categories/[slug]\",\n  \"/about-us\",\n  \"/contact-us\",\n  // \"/blog\",\n  // \"/blog/[slug]\",\n  // \"/checkout\",\n  \"/products/[slug]\",\n];\n\nexport const EDITABLE_PATHS: TUrlPath[] = [\n  \"/\",\n  \"/shop\",\n  \"/products/[slug]\",\n  \"/about-us\",\n  \"/contact-us\",\n];\n","import * as React from \"react\";\nimport { nanoid } from \"nanoid\";\nimport {\n  atomFamily,\n  selector,\n  SetterOrUpdater,\n  useRecoilState,\n  useRecoilValue,\n  useSetRecoilState,\n} from \"recoil\";\nimport { TComponentType } from \"../utils/types/common/components.types\";\nimport { TUrlPath } from \"../utils/types/elements/XText.types\";\nimport { USE_X_PATH } from \"./useXPath\";\nimport { EDITABLE_PATHS } from \"../utils/constants/common/urlPaths\";\n\nexport const USE_X_PAGE = atomFamily<TComponentType[], TUrlPath>({\n  key: \"USE_X_PAGE\",\n  default: [],\n});\n\nexport type TUpdateXPageArgsWithPath = {\n  path: TUrlPath;\n  elements: TComponentType[];\n};\n\nexport type TUpdateXPageArgs = TComponentType[] | TUpdateXPageArgsWithPath;\n\nexport const USE_X_PAGE_SELECTOR = selector<TUpdateXPageArgs>({\n  key: \"USE_X_PAGE_SELECTOR\",\n\n  get: (opts) => {\n    const path = opts.get(USE_X_PATH);\n\n    if (!path) return [];\n\n    const elements = opts.get(USE_X_PAGE(path));\n\n    return elements;\n  },\n\n  set: (opts, newValue: TUpdateXPageArgs) => {\n    // IF THE CODE MANUALLY SET THE PATH WE UPDATE THE PATH INDIVIDUALLY\n    const value = newValue as TUpdateXPageArgsWithPath;\n\n    if (value.path) {\n      if (EDITABLE_PATHS.includes(value.path)) {\n        const payload = value.elements.map((el) => ({\n          ...el,\n          config: {\n            index: nanoid(5),\n            ...el.config,\n          },\n        }));\n\n        return opts.set(USE_X_PAGE(value.path), payload);\n      }\n    }\n    // IF THE PATH IS NOT PROVIDED WE UPDATE THE CURRENT PATH\n    else {\n      const path = opts.get(USE_X_PATH);\n\n      if (!path) return;\n\n      return opts.set(\n        USE_X_PAGE(path),\n        (newValue as TComponentType[]).map((el) => ({\n          ...el,\n          config: {\n            index: nanoid(5),\n            ...el.config,\n          },\n        }))\n      );\n    }\n  },\n});\n\nexport function useXPage(initData?: TComponentType[]) {\n  const [page, setXPage] = useRecoilState(USE_X_PAGE_SELECTOR);\n\n  React.useEffect(() => {\n    if (initData) {\n      setXPage(initData);\n    }\n  }, [initData]);\n\n  const xPage = page as TComponentType[];\n\n  return { xPage, setXPage };\n}\n\nexport function useXPageUpdater(): SetterOrUpdater<TUpdateXPageArgs> {\n  return useSetRecoilState(USE_X_PAGE_SELECTOR);\n}\n\nexport function useXPageValue() {\n  return useRecoilValue(USE_X_PAGE_SELECTOR) as TComponentType[];\n}\n"]}