{"version":3,"file":"useFragment-gSqOZXVt.js","sources":["../../../node_modules/@apollo/client/react/hooks/useFragment.js"],"sourcesContent":["import { __assign, __rest } from \"tslib\";\nimport * as React from \"rehackt\";\nimport { mergeDeepArray } from \"../../utilities/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nimport { useSyncExternalStore } from \"./useSyncExternalStore.js\";\nimport { useDeepMemo, wrapHook } from \"./internal/index.js\";\nimport equal from \"@wry/equality\";\nexport function useFragment(options) {\n return wrapHook(\"useFragment\", _useFragment, useApolloClient(options.client))(options);\n}\nfunction _useFragment(options) {\n var cache = useApolloClient(options.client).cache;\n var from = options.from, rest = __rest(options, [\"from\"]);\n // We calculate the cache id seperately from `stableOptions` because we don't\n // want changes to non key fields in the `from` property to affect\n // `stableOptions` and retrigger our subscription. If the cache identifier\n // stays the same between renders, we want to reuse the existing subscription.\n var id = React.useMemo(function () { return (typeof from === \"string\" ? from : cache.identify(from)); }, [cache, from]);\n var stableOptions = useDeepMemo(function () { return (__assign(__assign({}, rest), { from: id })); }, [rest, id]);\n // Since .next is async, we need to make sure that we\n // get the correct diff on the next render given new diffOptions\n var diff = React.useMemo(function () {\n var fragment = stableOptions.fragment, fragmentName = stableOptions.fragmentName, from = stableOptions.from, _a = stableOptions.optimistic, optimistic = _a === void 0 ? true : _a;\n return {\n result: diffToResult(cache.diff(__assign(__assign({}, stableOptions), { returnPartialData: true, id: from, query: cache[\"getFragmentDoc\"](fragment, fragmentName), optimistic: optimistic }))),\n };\n }, [stableOptions, cache]);\n // Used for both getSnapshot and getServerSnapshot\n var getSnapshot = React.useCallback(function () { return diff.result; }, [diff]);\n return useSyncExternalStore(React.useCallback(function (forceUpdate) {\n var lastTimeout = 0;\n var subscription = cache.watchFragment(stableOptions).subscribe({\n next: function (result) {\n // Since `next` is called async by zen-observable, we want to avoid\n // unnecessarily rerendering this hook for the initial result\n // emitted from watchFragment which should be equal to\n // `diff.result`.\n if (equal(result, diff.result))\n return;\n diff.result = result;\n // If we get another update before we've re-rendered, bail out of\n // the update and try again. This ensures that the relative timing\n // between useQuery and useFragment stays roughly the same as\n // fixed in https://github.com/apollographql/apollo-client/pull/11083\n clearTimeout(lastTimeout);\n lastTimeout = setTimeout(forceUpdate);\n },\n });\n return function () {\n subscription.unsubscribe();\n clearTimeout(lastTimeout);\n };\n }, [cache, stableOptions, diff]), getSnapshot, getSnapshot);\n}\nfunction diffToResult(diff) {\n var result = {\n data: diff.result,\n complete: !!diff.complete,\n };\n if (diff.missing) {\n result.missing = mergeDeepArray(diff.missing.map(function (error) { return error.missing; }));\n }\n return result;\n}\n//# sourceMappingURL=useFragment.js.map"],"names":["useFragment","options","wrapHook","_useFragment","useApolloClient","cache","from","rest","__rest","id","React.useMemo","stableOptions","useDeepMemo","__assign","diff","fragment","fragmentName","_a","optimistic","diffToResult","getSnapshot","React.useCallback","useSyncExternalStore","forceUpdate","lastTimeout","subscription","result","equal","mergeDeepArray","error"],"mappings":"kLAOO,SAASA,EAAYC,EAAS,CACjC,OAAOC,EAAS,cAAeC,EAAcC,EAAgBH,EAAQ,MAAM,CAAC,EAAEA,CAAO,CACzF,CACA,SAASE,EAAaF,EAAS,CAC3B,IAAII,EAAQD,EAAgBH,EAAQ,MAAM,EAAE,MACxCK,EAAOL,EAAQ,KAAMM,EAAOC,EAAOP,EAAS,CAAC,MAAM,CAAC,EAKpDQ,EAAKC,EAAAA,QAAc,UAAY,CAAE,OAAQ,OAAOJ,GAAS,SAAWA,EAAOD,EAAM,SAASC,CAAI,CAAG,EAAI,CAACD,EAAOC,CAAI,CAAC,EAClHK,EAAgBC,EAAY,UAAY,CAAE,OAAQC,EAASA,EAAS,CAAA,EAAIN,CAAI,EAAG,CAAE,KAAME,CAAE,CAAE,CAAG,EAAI,CAACF,EAAME,CAAE,CAAC,EAG5GK,EAAOJ,EAAAA,QAAc,UAAY,CACjC,IAAIK,EAAWJ,EAAc,SAAUK,EAAeL,EAAc,aAAcL,EAAOK,EAAc,KAAMM,EAAKN,EAAc,WAAYO,EAAaD,IAAO,OAAS,GAAOA,EAChL,MAAO,CACH,OAAQE,EAAad,EAAM,KAAKQ,EAASA,EAAS,CAAA,EAAIF,CAAa,EAAG,CAAE,kBAAmB,GAAM,GAAIL,EAAM,MAAOD,EAAM,eAAkBU,EAAUC,CAAY,EAAG,WAAYE,CAAY,CAAA,CAAC,CAAC,CACzM,CACA,EAAO,CAACP,EAAeN,CAAK,CAAC,EAErBe,EAAcC,cAAkB,UAAY,CAAE,OAAOP,EAAK,MAAS,EAAE,CAACA,CAAI,CAAC,EAC/E,OAAOQ,EAAqBD,cAAkB,SAAUE,EAAa,CACjE,IAAIC,EAAc,EACdC,EAAepB,EAAM,cAAcM,CAAa,EAAE,UAAU,CAC5D,KAAM,SAAUe,EAAQ,CAKhBC,EAAMD,EAAQZ,EAAK,MAAM,IAE7BA,EAAK,OAASY,EAKd,aAAaF,CAAW,EACxBA,EAAc,WAAWD,CAAW,EACvC,CACb,CAAS,EACD,OAAO,UAAY,CACfE,EAAa,YAAW,EACxB,aAAaD,CAAW,CACpC,CACA,EAAO,CAACnB,EAAOM,EAAeG,CAAI,CAAC,EAAGM,EAAaA,CAAW,CAC9D,CACA,SAASD,EAAaL,EAAM,CACxB,IAAIY,EAAS,CACT,KAAMZ,EAAK,OACX,SAAU,CAAC,CAACA,EAAK,QACzB,EACI,OAAIA,EAAK,UACLY,EAAO,QAAUE,EAAed,EAAK,QAAQ,IAAI,SAAUe,EAAO,CAAE,OAAOA,EAAM,OAAQ,CAAE,CAAC,GAEzFH,CACX","x_google_ignoreList":[0]}