react-datocms 3.0.15 → 3.1.0

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/cjs/index.js CHANGED
@@ -14,4 +14,5 @@ __exportStar(require("./Image/index"), exports);
14
14
  __exportStar(require("./Seo/index"), exports);
15
15
  __exportStar(require("./useQuerySubscription/index"), exports);
16
16
  __exportStar(require("./StructuredText/index"), exports);
17
+ __exportStar(require("./useSiteSearch/index"), exports);
17
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA8B;AAC9B,8CAA4B;AAC5B,+DAA6C;AAC7C,yDAAuC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA8B;AAC9B,8CAA4B;AAC5B,+DAA6C;AAC7C,yDAAuC;AACvC,wDAAsC"}
@@ -66,11 +66,11 @@ function useQuerySubscription(options) {
66
66
  var enabled = options.enabled, initialData = options.initialData, other = __rest(options, ["enabled", "initialData"]);
67
67
  var _a = (0, react_1.useState)(null), error = _a[0], setError = _a[1];
68
68
  var _b = (0, react_1.useState)(null), data = _b[0], setData = _b[1];
69
- var _c = (0, react_1.useState)(enabled ? "connecting" : "closed"), status = _c[0], setStatus = _c[1];
69
+ var _c = (0, react_1.useState)(enabled ? 'connecting' : 'closed'), status = _c[0], setStatus = _c[1];
70
70
  var subscribeToQueryOptions = other;
71
71
  (0, use_deep_compare_effect_1.useDeepCompareEffectNoCheck)(function () {
72
72
  if (enabled === false) {
73
- setStatus("closed");
73
+ setStatus('closed');
74
74
  return function () {
75
75
  // we don't have to perform any uninstall
76
76
  };
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
32
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
33
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
34
+ return new (P || (P = Promise))(function (resolve, reject) {
35
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
36
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
37
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
38
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
39
+ });
40
+ };
41
+ var __generator = (this && this.__generator) || function (thisArg, body) {
42
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
43
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
44
+ function verb(n) { return function (v) { return step([n, v]); }; }
45
+ function step(op) {
46
+ if (f) throw new TypeError("Generator is already executing.");
47
+ while (_) try {
48
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
49
+ if (y = 0, t) op = [op[0] & 2, t.value];
50
+ switch (op[0]) {
51
+ case 0: case 1: t = op; break;
52
+ case 4: _.label++; return { value: op[1], done: false };
53
+ case 5: _.label++; y = op[1]; op = [0]; continue;
54
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
55
+ default:
56
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
57
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
58
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
59
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
60
+ if (t[2]) _.ops.pop();
61
+ _.trys.pop(); continue;
62
+ }
63
+ op = body.call(thisArg, _);
64
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
65
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
66
+ }
67
+ };
68
+ var __importDefault = (this && this.__importDefault) || function (mod) {
69
+ return (mod && mod.__esModule) ? mod : { "default": mod };
70
+ };
71
+ exports.__esModule = true;
72
+ exports.useSiteSearch = void 0;
73
+ var react_1 = __importStar(require("react"));
74
+ var react_string_replace_1 = __importDefault(require("react-string-replace"));
75
+ var defaultHighlighter = function (text, key) { return (react_1["default"].createElement("mark", { key: key }, text)); };
76
+ function MatchHighlighter(_a) {
77
+ var children = _a.children, highlighter = _a.highlighter, context = _a.context;
78
+ return (react_1["default"].createElement(react_1["default"].Fragment, null, (0, react_string_replace_1["default"])(children, /\[h\](.+?)\[\/h\]/g, function (match, index) {
79
+ return highlighter(match, index.toString(), context);
80
+ })));
81
+ }
82
+ function useSiteSearch(config) {
83
+ var _this = this;
84
+ var _a, _b, _c;
85
+ var _d = (0, react_1.useState)({
86
+ query: ((_a = config.initialState) === null || _a === void 0 ? void 0 : _a.query) || '',
87
+ page: ((_b = config.initialState) === null || _b === void 0 ? void 0 : _b.page) || 0,
88
+ locale: (_c = config.initialState) === null || _c === void 0 ? void 0 : _c.locale
89
+ }), state = _d[0], setState = _d[1];
90
+ var _e = (0, react_1.useState)(), error = _e[0], setError = _e[1];
91
+ var _f = (0, react_1.useState)(), response = _f[0], setResponse = _f[1];
92
+ var resultsPerPage = config.resultsPerPage || 8;
93
+ (0, react_1.useEffect)(function () {
94
+ var isCancelled = false;
95
+ var run = function () { return __awaiter(_this, void 0, void 0, function () {
96
+ var response_1, e_1;
97
+ return __generator(this, function (_a) {
98
+ switch (_a.label) {
99
+ case 0:
100
+ _a.trys.push([0, 2, , 3]);
101
+ setError(undefined);
102
+ if (!state.query) {
103
+ setResponse({ data: [], meta: { total_count: 0 } });
104
+ return [2 /*return*/];
105
+ }
106
+ setResponse(undefined);
107
+ return [4 /*yield*/, config.client.searchResults.rawList({
108
+ filter: {
109
+ query: state.query,
110
+ locale: state.locale,
111
+ build_trigger_id: config.buildTriggerId
112
+ },
113
+ page: {
114
+ limit: resultsPerPage,
115
+ offset: resultsPerPage * state.page
116
+ }
117
+ })];
118
+ case 1:
119
+ response_1 = _a.sent();
120
+ if (!isCancelled) {
121
+ setResponse(response_1);
122
+ }
123
+ return [3 /*break*/, 3];
124
+ case 2:
125
+ e_1 = _a.sent();
126
+ if (isCancelled) {
127
+ return [2 /*return*/];
128
+ }
129
+ if (e_1 instanceof Error) {
130
+ setError(e_1.message);
131
+ }
132
+ else {
133
+ setError('Unknown error!');
134
+ }
135
+ return [3 /*break*/, 3];
136
+ case 3: return [2 /*return*/];
137
+ }
138
+ });
139
+ }); };
140
+ run();
141
+ return function () {
142
+ isCancelled = true;
143
+ };
144
+ }, [
145
+ resultsPerPage,
146
+ state,
147
+ config.buildTriggerId,
148
+ config.client.config.apiToken,
149
+ ]);
150
+ var publicSetQuery = (0, react_1.useCallback)(function (newQuery) {
151
+ setState(function (oldState) { return (__assign(__assign({}, oldState), { query: newQuery, page: 0 })); });
152
+ }, [setState]);
153
+ var publicSetPage = (0, react_1.useCallback)(function (newPage) {
154
+ setState(function (oldState) { return (__assign(__assign({}, oldState), { page: newPage })); });
155
+ }, [setState]);
156
+ var publicSetLocale = (0, react_1.useCallback)(function (newLocale) {
157
+ setState(function (oldState) { return (__assign(__assign({}, oldState), { locale: newLocale, page: 0 })); });
158
+ }, [setState]);
159
+ var highlighter = config.highlightMatch || defaultHighlighter;
160
+ return {
161
+ state: {
162
+ query: state.query,
163
+ setQuery: publicSetQuery,
164
+ page: state.page,
165
+ setPage: publicSetPage,
166
+ locale: state.locale,
167
+ setLocale: publicSetLocale
168
+ },
169
+ error: error,
170
+ data: state.query === ''
171
+ ? {
172
+ pageResults: [],
173
+ totalResults: 0,
174
+ totalPages: 0
175
+ }
176
+ : response
177
+ ? {
178
+ pageResults: response.data.map(function (rawSearchResult) { return ({
179
+ id: rawSearchResult.id,
180
+ url: rawSearchResult.attributes.url,
181
+ title: rawSearchResult.attributes.highlight.title ? (react_1["default"].createElement(MatchHighlighter, { highlighter: highlighter, context: "title" }, rawSearchResult.attributes.highlight.title[0])) : (rawSearchResult.attributes.title),
182
+ bodyExcerpt: rawSearchResult.attributes.highlight.body ? (react_1["default"].createElement(MatchHighlighter, { highlighter: highlighter, context: "bodyExcerpt" }, rawSearchResult.attributes.highlight.body[0])) : (rawSearchResult.attributes.body_excerpt),
183
+ raw: rawSearchResult
184
+ }); }),
185
+ totalResults: response.meta.total_count,
186
+ totalPages: Math.ceil(response.meta.total_count / resultsPerPage)
187
+ }
188
+ : undefined
189
+ };
190
+ }
191
+ exports.useSiteSearch = useSiteSearch;
192
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/useSiteSearch/index.tsx"],"names":[],"mappings":"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"}
@@ -2,3 +2,4 @@ export * from './Image/index';
2
2
  export * from './Seo/index';
3
3
  export * from './useQuerySubscription/index';
4
4
  export * from './StructuredText/index';
5
+ export * from './useSiteSearch/index';
package/dist/esm/index.js CHANGED
@@ -2,4 +2,5 @@ export * from './Image/index';
2
2
  export * from './Seo/index';
3
3
  export * from './useQuerySubscription/index';
4
4
  export * from './StructuredText/index';
5
+ export * from './useSiteSearch/index';
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
@@ -1,5 +1,5 @@
1
- import { ChannelErrorData, ConnectionStatus, Options } from "datocms-listen";
2
- export declare type SubscribeToQueryOptions<QueryResult, QueryVariables> = Omit<Options<QueryResult, QueryVariables>, "onStatusChange" | "onUpdate" | "onChannelError">;
1
+ import { ChannelErrorData, ConnectionStatus, Options } from 'datocms-listen';
2
+ export declare type SubscribeToQueryOptions<QueryResult, QueryVariables> = Omit<Options<QueryResult, QueryVariables>, 'onStatusChange' | 'onUpdate' | 'onChannelError'>;
3
3
  export declare type EnabledQueryListenerOptions<QueryResult, QueryVariables> = {
4
4
  /** Whether the subscription has to be performed or not */
5
5
  enabled?: true;
@@ -56,18 +56,18 @@ var __rest = (this && this.__rest) || function (s, e) {
56
56
  }
57
57
  return t;
58
58
  };
59
- import { useState } from "react";
60
- import { subscribeToQuery, } from "datocms-listen";
61
- import { useDeepCompareEffectNoCheck as useDeepCompareEffect } from "use-deep-compare-effect";
59
+ import { useState } from 'react';
60
+ import { subscribeToQuery, } from 'datocms-listen';
61
+ import { useDeepCompareEffectNoCheck as useDeepCompareEffect } from 'use-deep-compare-effect';
62
62
  export function useQuerySubscription(options) {
63
63
  var enabled = options.enabled, initialData = options.initialData, other = __rest(options, ["enabled", "initialData"]);
64
64
  var _a = useState(null), error = _a[0], setError = _a[1];
65
65
  var _b = useState(null), data = _b[0], setData = _b[1];
66
- var _c = useState(enabled ? "connecting" : "closed"), status = _c[0], setStatus = _c[1];
66
+ var _c = useState(enabled ? 'connecting' : 'closed'), status = _c[0], setStatus = _c[1];
67
67
  var subscribeToQueryOptions = other;
68
68
  useDeepCompareEffect(function () {
69
69
  if (enabled === false) {
70
- setStatus("closed");
70
+ setStatus('closed');
71
71
  return function () {
72
72
  // we don't have to perform any uninstall
73
73
  };
@@ -0,0 +1,81 @@
1
+ import React from 'react';
2
+ declare type SearchResultInstancesHrefSchema = {
3
+ page?: {
4
+ offset?: number;
5
+ limit?: number;
6
+ [k: string]: unknown;
7
+ };
8
+ filter: {
9
+ query: string;
10
+ build_trigger_id?: string;
11
+ locale?: string;
12
+ [k: string]: unknown;
13
+ };
14
+ [k: string]: unknown;
15
+ };
16
+ declare type SearchResultInstancesTargetSchema = {
17
+ data: RawSearchResult[];
18
+ meta: {
19
+ total_count: number;
20
+ };
21
+ };
22
+ export declare type RawSearchResult = {
23
+ type: 'search_result';
24
+ id: string;
25
+ attributes: {
26
+ title: string;
27
+ body_excerpt: string;
28
+ url: string;
29
+ score: number;
30
+ highlight: {
31
+ title?: string[] | null;
32
+ body?: string[] | null;
33
+ };
34
+ };
35
+ };
36
+ declare class GenericClient {
37
+ config: {
38
+ apiToken: string | null;
39
+ };
40
+ searchResults: {
41
+ rawList(queryParams: SearchResultInstancesHrefSchema): Promise<SearchResultInstancesTargetSchema>;
42
+ };
43
+ }
44
+ declare type Highlighter = (match: string, key: string, context: 'title' | 'bodyExcerpt') => React.ReactNode;
45
+ export declare type UseSiteSearchConfig<Client extends GenericClient> = {
46
+ client: Client;
47
+ buildTriggerId: string;
48
+ resultsPerPage?: number;
49
+ highlightMatch?: Highlighter;
50
+ initialState?: {
51
+ locale?: string;
52
+ page?: number;
53
+ query?: string;
54
+ };
55
+ };
56
+ declare type SearchResult = {
57
+ id: string;
58
+ title: React.ReactNode;
59
+ bodyExcerpt: React.ReactNode;
60
+ url: string;
61
+ raw: RawSearchResult;
62
+ };
63
+ export declare type UseSiteSearchData = {
64
+ pageResults: SearchResult[];
65
+ totalResults: number;
66
+ totalPages: number;
67
+ };
68
+ export declare type UseSiteSearchResult = {
69
+ state: {
70
+ query: string;
71
+ setQuery: (newQuery: string) => void;
72
+ locale: string | undefined;
73
+ setLocale: (newLocale: string) => void;
74
+ page: number;
75
+ setPage: (newPage: number) => void;
76
+ };
77
+ data?: UseSiteSearchData;
78
+ error?: string;
79
+ };
80
+ export declare function useSiteSearch<Client extends GenericClient>(config: UseSiteSearchConfig<Client>): UseSiteSearchResult;
81
+ export {};
@@ -0,0 +1,166 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (_) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import React, { useCallback, useEffect, useState } from 'react';
49
+ import reactStringReplace from 'react-string-replace';
50
+ var defaultHighlighter = function (text, key) { return (React.createElement("mark", { key: key }, text)); };
51
+ function MatchHighlighter(_a) {
52
+ var children = _a.children, highlighter = _a.highlighter, context = _a.context;
53
+ return (React.createElement(React.Fragment, null, reactStringReplace(children, /\[h\](.+?)\[\/h\]/g, function (match, index) {
54
+ return highlighter(match, index.toString(), context);
55
+ })));
56
+ }
57
+ export function useSiteSearch(config) {
58
+ var _this = this;
59
+ var _a, _b, _c;
60
+ var _d = useState({
61
+ query: ((_a = config.initialState) === null || _a === void 0 ? void 0 : _a.query) || '',
62
+ page: ((_b = config.initialState) === null || _b === void 0 ? void 0 : _b.page) || 0,
63
+ locale: (_c = config.initialState) === null || _c === void 0 ? void 0 : _c.locale
64
+ }), state = _d[0], setState = _d[1];
65
+ var _e = useState(), error = _e[0], setError = _e[1];
66
+ var _f = useState(), response = _f[0], setResponse = _f[1];
67
+ var resultsPerPage = config.resultsPerPage || 8;
68
+ useEffect(function () {
69
+ var isCancelled = false;
70
+ var run = function () { return __awaiter(_this, void 0, void 0, function () {
71
+ var response_1, e_1;
72
+ return __generator(this, function (_a) {
73
+ switch (_a.label) {
74
+ case 0:
75
+ _a.trys.push([0, 2, , 3]);
76
+ setError(undefined);
77
+ if (!state.query) {
78
+ setResponse({ data: [], meta: { total_count: 0 } });
79
+ return [2 /*return*/];
80
+ }
81
+ setResponse(undefined);
82
+ return [4 /*yield*/, config.client.searchResults.rawList({
83
+ filter: {
84
+ query: state.query,
85
+ locale: state.locale,
86
+ build_trigger_id: config.buildTriggerId
87
+ },
88
+ page: {
89
+ limit: resultsPerPage,
90
+ offset: resultsPerPage * state.page
91
+ }
92
+ })];
93
+ case 1:
94
+ response_1 = _a.sent();
95
+ if (!isCancelled) {
96
+ setResponse(response_1);
97
+ }
98
+ return [3 /*break*/, 3];
99
+ case 2:
100
+ e_1 = _a.sent();
101
+ if (isCancelled) {
102
+ return [2 /*return*/];
103
+ }
104
+ if (e_1 instanceof Error) {
105
+ setError(e_1.message);
106
+ }
107
+ else {
108
+ setError('Unknown error!');
109
+ }
110
+ return [3 /*break*/, 3];
111
+ case 3: return [2 /*return*/];
112
+ }
113
+ });
114
+ }); };
115
+ run();
116
+ return function () {
117
+ isCancelled = true;
118
+ };
119
+ }, [
120
+ resultsPerPage,
121
+ state,
122
+ config.buildTriggerId,
123
+ config.client.config.apiToken,
124
+ ]);
125
+ var publicSetQuery = useCallback(function (newQuery) {
126
+ setState(function (oldState) { return (__assign(__assign({}, oldState), { query: newQuery, page: 0 })); });
127
+ }, [setState]);
128
+ var publicSetPage = useCallback(function (newPage) {
129
+ setState(function (oldState) { return (__assign(__assign({}, oldState), { page: newPage })); });
130
+ }, [setState]);
131
+ var publicSetLocale = useCallback(function (newLocale) {
132
+ setState(function (oldState) { return (__assign(__assign({}, oldState), { locale: newLocale, page: 0 })); });
133
+ }, [setState]);
134
+ var highlighter = config.highlightMatch || defaultHighlighter;
135
+ return {
136
+ state: {
137
+ query: state.query,
138
+ setQuery: publicSetQuery,
139
+ page: state.page,
140
+ setPage: publicSetPage,
141
+ locale: state.locale,
142
+ setLocale: publicSetLocale
143
+ },
144
+ error: error,
145
+ data: state.query === ''
146
+ ? {
147
+ pageResults: [],
148
+ totalResults: 0,
149
+ totalPages: 0
150
+ }
151
+ : response
152
+ ? {
153
+ pageResults: response.data.map(function (rawSearchResult) { return ({
154
+ id: rawSearchResult.id,
155
+ url: rawSearchResult.attributes.url,
156
+ title: rawSearchResult.attributes.highlight.title ? (React.createElement(MatchHighlighter, { highlighter: highlighter, context: "title" }, rawSearchResult.attributes.highlight.title[0])) : (rawSearchResult.attributes.title),
157
+ bodyExcerpt: rawSearchResult.attributes.highlight.body ? (React.createElement(MatchHighlighter, { highlighter: highlighter, context: "bodyExcerpt" }, rawSearchResult.attributes.highlight.body[0])) : (rawSearchResult.attributes.body_excerpt),
158
+ raw: rawSearchResult
159
+ }); }),
160
+ totalResults: response.meta.total_count,
161
+ totalPages: Math.ceil(response.meta.total_count / resultsPerPage)
162
+ }
163
+ : undefined
164
+ };
165
+ }
166
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/useSiteSearch/index.tsx"],"names":[],"mappings":"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"}
@@ -2,3 +2,4 @@ export * from './Image/index';
2
2
  export * from './Seo/index';
3
3
  export * from './useQuerySubscription/index';
4
4
  export * from './StructuredText/index';
5
+ export * from './useSiteSearch/index';
@@ -1,5 +1,5 @@
1
- import { ChannelErrorData, ConnectionStatus, Options } from "datocms-listen";
2
- export declare type SubscribeToQueryOptions<QueryResult, QueryVariables> = Omit<Options<QueryResult, QueryVariables>, "onStatusChange" | "onUpdate" | "onChannelError">;
1
+ import { ChannelErrorData, ConnectionStatus, Options } from 'datocms-listen';
2
+ export declare type SubscribeToQueryOptions<QueryResult, QueryVariables> = Omit<Options<QueryResult, QueryVariables>, 'onStatusChange' | 'onUpdate' | 'onChannelError'>;
3
3
  export declare type EnabledQueryListenerOptions<QueryResult, QueryVariables> = {
4
4
  /** Whether the subscription has to be performed or not */
5
5
  enabled?: true;
@@ -0,0 +1,81 @@
1
+ import React from 'react';
2
+ declare type SearchResultInstancesHrefSchema = {
3
+ page?: {
4
+ offset?: number;
5
+ limit?: number;
6
+ [k: string]: unknown;
7
+ };
8
+ filter: {
9
+ query: string;
10
+ build_trigger_id?: string;
11
+ locale?: string;
12
+ [k: string]: unknown;
13
+ };
14
+ [k: string]: unknown;
15
+ };
16
+ declare type SearchResultInstancesTargetSchema = {
17
+ data: RawSearchResult[];
18
+ meta: {
19
+ total_count: number;
20
+ };
21
+ };
22
+ export declare type RawSearchResult = {
23
+ type: 'search_result';
24
+ id: string;
25
+ attributes: {
26
+ title: string;
27
+ body_excerpt: string;
28
+ url: string;
29
+ score: number;
30
+ highlight: {
31
+ title?: string[] | null;
32
+ body?: string[] | null;
33
+ };
34
+ };
35
+ };
36
+ declare class GenericClient {
37
+ config: {
38
+ apiToken: string | null;
39
+ };
40
+ searchResults: {
41
+ rawList(queryParams: SearchResultInstancesHrefSchema): Promise<SearchResultInstancesTargetSchema>;
42
+ };
43
+ }
44
+ declare type Highlighter = (match: string, key: string, context: 'title' | 'bodyExcerpt') => React.ReactNode;
45
+ export declare type UseSiteSearchConfig<Client extends GenericClient> = {
46
+ client: Client;
47
+ buildTriggerId: string;
48
+ resultsPerPage?: number;
49
+ highlightMatch?: Highlighter;
50
+ initialState?: {
51
+ locale?: string;
52
+ page?: number;
53
+ query?: string;
54
+ };
55
+ };
56
+ declare type SearchResult = {
57
+ id: string;
58
+ title: React.ReactNode;
59
+ bodyExcerpt: React.ReactNode;
60
+ url: string;
61
+ raw: RawSearchResult;
62
+ };
63
+ export declare type UseSiteSearchData = {
64
+ pageResults: SearchResult[];
65
+ totalResults: number;
66
+ totalPages: number;
67
+ };
68
+ export declare type UseSiteSearchResult = {
69
+ state: {
70
+ query: string;
71
+ setQuery: (newQuery: string) => void;
72
+ locale: string | undefined;
73
+ setLocale: (newLocale: string) => void;
74
+ page: number;
75
+ setPage: (newPage: number) => void;
76
+ };
77
+ data?: UseSiteSearchData;
78
+ error?: string;
79
+ };
80
+ export declare function useSiteSearch<Client extends GenericClient>(config: UseSiteSearchConfig<Client>): UseSiteSearchResult;
81
+ export {};