1import { l as __assign } from "./vendor-shared-CkCIh-Sx.js"; 2import { r as rehacktExports, t as mergeOptions, v as useQueryInternals, w as getDefaultFetchPolicy, x as useIsomorphicLayoutEffect, y as createMakeWatchQueryOptions, z as getObsQueryOptions, C as toQueryResult } from "./index-Cn8jK25t.js"; 3var EAGER_METHODS = [ 4 "refetch", 5 "reobserve", 6 "fetchMore", 7 "updateQuery", 8 "startPolling", 9 "stopPolling", 10 "subscribeToMore" 11]; 12function useLazyQuery(query, options) { 13 var _a; 14 var execOptionsRef = rehacktExports.useRef(); 15 var optionsRef = rehacktExports.useRef(); 16 var queryRef = rehacktExports.useRef(); 17 var merged = mergeOptions(options, execOptionsRef.current || {}); 18 var document = (_a = merged === null || merged === void 0 ? void 0 : merged.query) !== null && _a !== void 0 ? _a : query; 19 optionsRef.current = options; 20 queryRef.current = document; 21 var queryHookOptions = __assign(__assign({}, merged), { skip: !execOptionsRef.current }); 22 var _b = useQueryInternals(document, queryHookOptions), obsQueryFields = _b.obsQueryFields, useQueryResult = _b.result, client = _b.client, resultData = _b.resultData, observable = _b.observable, onQueryExecuted = _b.onQueryExecuted; 23 var initialFetchPolicy = observable.options.initialFetchPolicy || getDefaultFetchPolicy(queryHookOptions.defaultOptions, client.defaultOptions); 24 var forceUpdateState = rehacktExports.useReducer(function(tick) { 25 return tick + 1; 26 }, 0)[1]; 27 var eagerMethods = rehacktExports.useMemo(function() { 28 var eagerMethods2 = {}; 29 var _loop_1 = function(key2) { 30 var method = obsQueryFields[key2]; 31 eagerMethods2[key2] = function() { 32 if (!execOptionsRef.current) { 33 execOptionsRef.current = /* @__PURE__ */ Object.create(null); 34 forceUpdateState(); 35 } 36 return method.apply(this, arguments); 37 }; 38 }; 39 for (var _i = 0, EAGER_METHODS_1 = EAGER_METHODS; _i < EAGER_METHODS_1.length; _i++) { 40 var key = EAGER_METHODS_1[_i]; 41 _loop_1(key); 42 } 43 return eagerMethods2; 44 }, [forceUpdateState, obsQueryFields]); 45 var called = !!execOptionsRef.current; 46 var result = rehacktExports.useMemo(function() { 47 return __assign(__assign(__assign({}, useQueryResult), eagerMethods), { called }); 48 }, [useQueryResult, eagerMethods, called]); 49 var execute = rehacktExports.useCallback(function(executeOptions) { 50 execOptionsRef.current = executeOptions ? __assign(__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : { 51 fetchPolicy: initialFetchPolicy 52 }; 53 var options2 = mergeOptions(optionsRef.current, __assign({ query: queryRef.current }, execOptionsRef.current)); 54 var promise = executeQuery(resultData, observable, client, document, __assign(__assign({}, options2), { skip: false }), onQueryExecuted).then(function(queryResult) { 55 return Object.assign(queryResult, eagerMethods); 56 }); 57 promise.catch(function() { 58 }); 59 return promise; 60 }, [ 61 client, 62 document, 63 eagerMethods, 64 initialFetchPolicy, 65 observable, 66 resultData, 67 onQueryExecuted 68 ]); 69 var executeRef = rehacktExports.useRef(execute); 70 useIsomorphicLayoutEffect(function() { 71 executeRef.current = execute; 72 }); 73 var stableExecute = rehacktExports.useCallback(function() { 74 var args = []; 75 for (var _i = 0; _i < arguments.length; _i++) { 76 args[_i] = arguments[_i]; 77 } 78 return executeRef.current.apply(executeRef, args); 79 }, []); 80 return [stableExecute, result]; 81} 82function executeQuery(resultData, observable, client, currentQuery, options, onQueryExecuted) { 83 var query = options.query || currentQuery; 84 var watchQueryOptions = createMakeWatchQueryOptions(client, query, options, false)(observable); 85 var concast = observable.reobserveAsConcast(getObsQueryOptions(observable, client, options, watchQueryOptions)); 86 onQueryExecuted(watchQueryOptions); 87 return new Promise(function(resolve) { 88 var result; 89 concast.subscribe({ 90 next: function(value) { 91 result = value; 92 }, 93 error: function() { 94 resolve(toQueryResult(observable.getCurrentResult(), resultData.previousData, observable, client)); 95 }, 96 complete: function() { 97 resolve(toQueryResult(result, resultData.previousData, observable, client)); 98 } 99 }); 100 }); 101} 102export { 103 useLazyQuery as u 104};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.