{"version":3,"file":"useMergePrismicPreviewData.cjs","sources":["../../src/useMergePrismicPreviewData.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport { getDocument } from \"./lib/getDocument\";\nimport { hasOwnProperty } from \"./lib/hasOwnProperty\";\n\nimport { usePrismicPreviewStore } from \"./usePrismicPreviewStore\";\n\ntype MergePreviewDataArgs<TStaticDataNode> = {\n\tstaticDataNode: TStaticDataNode;\n\tpublishedDocumentIDs: string[];\n};\n\nconst mergePreviewData = <TStaticDataNode>({\n\tstaticDataNode,\n\tpublishedDocumentIDs,\n}: MergePreviewDataArgs<TStaticDataNode>): TStaticDataNode => {\n\tconst castedData: unknown = staticDataNode;\n\n\tif (\n\t\ttypeof castedData === \"object\" &&\n\t\tcastedData !== null &&\n\t\t!Array.isArray(castedData)\n\t) {\n\t\tif (hasOwnProperty(castedData, \"_previewable\")) {\n\t\t\tconst replacement = getDocument(castedData._previewable as string);\n\n\t\t\tif (replacement) {\n\t\t\t\treturn replacement as unknown as typeof staticDataNode;\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tpublishedDocumentIDs.length > 0 &&\n\t\t\t\t\t!publishedDocumentIDs.includes(castedData._previewable as string)\n\t\t\t\t) {\n\t\t\t\t\treturn null as unknown as typeof staticDataNode;\n\t\t\t\t} else {\n\t\t\t\t\treturn staticDataNode;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst newNode = {} as TStaticDataNode;\n\n\t\t\tfor (const key in castedData) {\n\t\t\t\tnewNode[key as keyof typeof newNode] = mergePreviewData({\n\t\t\t\t\tstaticDataNode: castedData[key as keyof typeof castedData],\n\t\t\t\t\tpublishedDocumentIDs,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn newNode;\n\t\t}\n\t} else if (Array.isArray(staticDataNode)) {\n\t\treturn staticDataNode.map((element) => {\n\t\t\treturn mergePreviewData({\n\t\t\t\tstaticDataNode: element,\n\t\t\t\tpublishedDocumentIDs,\n\t\t\t});\n\t\t}) as typeof staticDataNode;\n\t} else {\n\t\treturn staticDataNode;\n\t}\n};\n\nexport const useMergePrismicPreviewData = <\n\tTStaticData extends Record<string, unknown>,\n>(\n\tstaticData: TStaticData | undefined,\n): TStaticData | undefined => {\n\tconst isBootstrapped = usePrismicPreviewStore(\n\t\t(state) => state.isBootstrapped,\n\t);\n\tconst publishedDocumentIDs = usePrismicPreviewStore(\n\t\t(state) => state.publishedDocumentIDs,\n\t);\n\tconst documents = usePrismicPreviewStore((state) => state.documents);\n\n\treturn React.useMemo(() => {\n\t\tif (staticData) {\n\t\t\tconst hasPreviewData =\n\t\t\t\tpublishedDocumentIDs.length > 0 || Object.keys(documents).length > 0;\n\n\t\t\tif (isBootstrapped && hasPreviewData) {\n\t\t\t\treturn mergePreviewData({\n\t\t\t\t\tstaticDataNode: staticData,\n\t\t\t\t\tpublishedDocumentIDs,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn staticData;\n\t\t\t}\n\t\t}\n\t}, [documents, publishedDocumentIDs, isBootstrapped, staticData]);\n};\n"],"names":["hasOwnProperty","getDocument","usePrismicPreviewStore","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAM,mBAAmB,CAAkB,EAC1C,gBACA,2BAC4D;AAC5D,QAAM,aAAsB;AAG3B,MAAA,OAAO,eAAe,YACtB,eAAe,QACf,CAAC,MAAM,QAAQ,UAAU,GACxB;AACG,QAAAA,eAAA,eAAe,YAAY,cAAc,GAAG;AACzC,YAAA,cAAcC,YAAAA,YAAY,WAAW,YAAsB;AAEjE,UAAI,aAAa;AACT,eAAA;AAAA,MAAA,OACD;AAEL,YAAA,qBAAqB,SAAS,KAC9B,CAAC,qBAAqB,SAAS,WAAW,YAAsB,GAC/D;AACM,iBAAA;AAAA,QAAA,OACD;AACC,iBAAA;AAAA,QACP;AAAA,MACD;AAAA,IAAA,OACK;AACN,YAAM,UAAU,CAAA;AAEhB,iBAAW,OAAO,YAAY;AACrB,gBAAA,GAA2B,IAAI,iBAAiB;AAAA,UACvD,gBAAgB,WAAW,GAA8B;AAAA,UACzD;AAAA,QAAA,CACA;AAAA,MACD;AAEM,aAAA;AAAA,IACP;AAAA,EACS,WAAA,MAAM,QAAQ,cAAc,GAAG;AAClC,WAAA,eAAe,IAAI,CAAC,YAAW;AACrC,aAAO,iBAAiB;AAAA,QACvB,gBAAgB;AAAA,QAChB;AAAA,MAAA,CACA;AAAA,IAAA,CACD;AAAA,EAAA,OACK;AACC,WAAA;AAAA,EACP;AACF;AAEa,MAAA,6BAA6B,CAGzC,eAC4B;AAC5B,QAAM,iBAAiBC,uBAAAA,uBACtB,CAAC,UAAU,MAAM,cAAc;AAEhC,QAAM,uBAAuBA,uBAAAA,uBAC5B,CAAC,UAAU,MAAM,oBAAoB;AAEtC,QAAM,YAAYA,uBAAAA,uBAAuB,CAAC,UAAU,MAAM,SAAS;AAE5D,SAAAC,iBAAM,QAAQ,MAAK;AACzB,QAAI,YAAY;AACT,YAAA,iBACL,qBAAqB,SAAS,KAAK,OAAO,KAAK,SAAS,EAAE,SAAS;AAEpE,UAAI,kBAAkB,gBAAgB;AACrC,eAAO,iBAAiB;AAAA,UACvB,gBAAgB;AAAA,UAChB;AAAA,QAAA,CACA;AAAA,MAAA,OACK;AACC,eAAA;AAAA,MACP;AAAA,IACD;AAAA,KACC,CAAC,WAAW,sBAAsB,gBAAgB,UAAU,CAAC;AACjE;;"}