@inkeep/cxkit-primitives 0.0.0-dev-20250313015805 → 0.0.0-dev-20250313232451
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/components/embedded-search/use-inkeep-search.cjs +1 -1
- package/dist/components/embedded-search/use-inkeep-search.js +81 -73
- package/dist/providers/base-events-provider.cjs +1 -1
- package/dist/providers/base-events-provider.js +1 -1
- package/dist/utils/graphql-client.cjs +1 -1
- package/dist/utils/graphql-client.js +3 -2
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),Y=require("../../providers/config-provider.cjs"),Z=require("../../hooks/use-media-query.cjs"),ee=require("./search-query.graphql.cjs"),te=require("./transform-results.cjs"),se=require("../../providers/search-events-provider.cjs"),re=require("../../hooks/use-instant-update.cjs"),ne=require("../../utils/graphql-client.cjs"),ae=()=>{const{baseSettings:O,searchSettings:x}=Y.useInkeepConfig(),{apiKey:R,aiApiBaseUrl:B,userAuthToken:l,filters:Q}=O,{maxResults:q,placeholder:C,defaultQuery:H,debounceTimeMs:T,onQueryChange:$,searchFunctionsRef:z,tabs:i,filters:k}=x,{logEvent:v}=se.useSearchEvents(),[a,E]=t.useState(H),M=t.useRef(null),[w,h]=t.useState(!1),[D,f]=t.useState(null),[K,c]=t.useState("NONE"),W=t.useCallback(e=>{c(e)},[]),[d,y]=t.useState([]),s=te.useTransformResults(d,a),I=typeof i?.[0]=="string"?i[0]:i[0][0],[b,A]=t.useState(I),{disableTransition:P,disabled:G}=re.useInstantUpdate(),J=t.useCallback(e=>{P(),A(e);const r=s[e][0].id;c(r)},[s,P]);t.useEffect(()=>{let e=b in s?b:Object.keys(s)[0];if(!s[e]?.length){const n=Object.keys(s).find(u=>s[u]?.length);n?e=n:e=I}if(!e)return;A(e);const r=s[e]?.[0];r&&c(r.id)},[s]);const g=Z.useMediaQuery("(max-width: 768px)"),o=t.useRef({}),m=t.useRef(null),p=t.useRef(null);t.useImperativeHandle(z,()=>({updateQuery(e){E(e)},focusInput:()=>{M.current?.focus()}}));const U=`${B}/graphql`,_=t.useMemo(()=>({Authorization:`Bearer ${R}`,"Content-Type":"application/json",...l?{"User-Token":l}:{}}),[R,l]),j=t.useCallback(async e=>{const r=new AbortController;m.current=r;try{f(null);const u=(await ne.graphqlRequest(U,ee.default,{searchInput:e},_,r.signal))?.search.searchHits;o.current[e.searchQuery]=u,y(u)}catch(n){if(n.name==="AbortError")return;f("Failed to fetch search results. Please try again.")}finally{h(!1)}},[U,_]),F=t.useCallback(e=>{const r=o.current[e.searchQuery];v({eventName:"search_query_response_received",properties:{searchQuery:e.searchQuery,totalResults:r?.length}})},[]),L=()=>{m.current&&(m.current.abort(),h(!1))},N=t.useCallback(e=>{if(p.current&&window.clearTimeout(p.current),!e.searchQuery){L(),y([]),f(null);return}p.current=window.setTimeout(()=>{L(),v({eventName:"search_query_submitted",properties:{searchQuery:e.searchQuery}}),o.current[e.searchQuery]?(y(o.current[e.searchQuery]),F(e)):(h(!0),j(e).then(()=>{F(e)}))},T)},[T,j]),S=t.useMemo(()=>({searchQuery:a,filters:{...Q,...k,limit:q}}),[a,q,Q,k]);t.useEffect(()=>{$?.(S.searchQuery),N(S)},[N,S]);const V=t.useCallback(e=>E(e.target.value),[]),X=t.useMemo(()=>C||(g?"Search...":"Search for anything..."),[C,g]);return{results:s,resultsList:d,hasContent:d.length>0||w,loading:w,error:D,query:a,onInput:V,placeholder:X,tab:b,onTabChange:J,selectedItem:K,setSelectedItem:c,onSelectedItemChange:W,transitionsDisabled:G,inputRef:M,isMobile:g}};exports.useInkeepSearch=ae;
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useState as s, useRef as
|
|
3
|
-
import { useInkeepConfig as
|
|
4
|
-
import { useMediaQuery as
|
|
5
|
-
import
|
|
6
|
-
import { useTransformResults as
|
|
7
|
-
import { useSearchEvents as
|
|
8
|
-
import { useInstantUpdate as
|
|
9
|
-
import { graphqlRequest as
|
|
10
|
-
const
|
|
11
|
-
const { baseSettings:
|
|
12
|
-
maxResults:
|
|
13
|
-
placeholder:
|
|
14
|
-
defaultQuery:
|
|
15
|
-
debounceTimeMs:
|
|
16
|
-
onQueryChange:
|
|
17
|
-
searchFunctionsRef:
|
|
2
|
+
import { useState as s, useRef as u, useCallback as n, useEffect as P, useImperativeHandle as re, useMemo as S } from "react";
|
|
3
|
+
import { useInkeepConfig as se } from "../../providers/config-provider.js";
|
|
4
|
+
import { useMediaQuery as ne } from "../../hooks/use-media-query.js";
|
|
5
|
+
import oe from "./search-query.graphql.js";
|
|
6
|
+
import { useTransformResults as ce } from "./transform-results.js";
|
|
7
|
+
import { useSearchEvents as ae } from "../../providers/search-events-provider.js";
|
|
8
|
+
import { useInstantUpdate as ie } from "../../hooks/use-instant-update.js";
|
|
9
|
+
import { graphqlRequest as le } from "../../utils/graphql-client.js";
|
|
10
|
+
const ge = () => {
|
|
11
|
+
const { baseSettings: $, searchSettings: z } = se(), { apiKey: C, aiApiBaseUrl: D, userAuthToken: h, filters: v } = $, {
|
|
12
|
+
maxResults: k,
|
|
13
|
+
placeholder: w,
|
|
14
|
+
defaultQuery: K,
|
|
15
|
+
debounceTimeMs: q,
|
|
16
|
+
onQueryChange: W,
|
|
17
|
+
searchFunctionsRef: G,
|
|
18
18
|
tabs: f,
|
|
19
|
-
filters:
|
|
20
|
-
} =
|
|
19
|
+
filters: E
|
|
20
|
+
} = z, { logEvent: A } = ae(), [c, I] = s(K), _ = u(null), [x, m] = s(!1), [J, d] = s(null), [V, a] = s("NONE"), X = n((e) => {
|
|
21
21
|
a(e);
|
|
22
|
-
}, []), [
|
|
22
|
+
}, []), [y, p] = s([]), t = ce(y, c), F = typeof f?.[0] == "string" ? f[0] : f[0][0], [b, L] = s(F), { disableTransition: M, disabled: Y } = ie(), Z = n(
|
|
23
23
|
(e) => {
|
|
24
24
|
M(), L(e);
|
|
25
25
|
const r = t[e][0].id;
|
|
@@ -27,10 +27,10 @@ const be = () => {
|
|
|
27
27
|
},
|
|
28
28
|
[t, M]
|
|
29
29
|
);
|
|
30
|
-
|
|
31
|
-
let e =
|
|
30
|
+
P(() => {
|
|
31
|
+
let e = b in t ? b : Object.keys(t)[0];
|
|
32
32
|
if (!t[e]?.length) {
|
|
33
|
-
const o = Object.keys(t).find((
|
|
33
|
+
const o = Object.keys(t).find((l) => t[l]?.length);
|
|
34
34
|
o ? e = o : e = F;
|
|
35
35
|
}
|
|
36
36
|
if (!e) return;
|
|
@@ -38,106 +38,114 @@ const be = () => {
|
|
|
38
38
|
const r = t[e]?.[0];
|
|
39
39
|
r && a(r.id);
|
|
40
40
|
}, [t]);
|
|
41
|
-
const
|
|
42
|
-
|
|
41
|
+
const g = ne("(max-width: 768px)"), i = u({}), Q = u(null), R = u(null);
|
|
42
|
+
re(G, () => ({
|
|
43
43
|
updateQuery(e) {
|
|
44
|
-
|
|
44
|
+
I(e);
|
|
45
45
|
},
|
|
46
46
|
focusInput: () => {
|
|
47
|
-
|
|
47
|
+
_.current?.focus();
|
|
48
48
|
}
|
|
49
49
|
}));
|
|
50
|
-
const N = `${
|
|
50
|
+
const N = `${D}/graphql`, U = S(
|
|
51
51
|
() => ({
|
|
52
|
-
Authorization: `Bearer ${
|
|
52
|
+
Authorization: `Bearer ${C}`,
|
|
53
53
|
"Content-Type": "application/json",
|
|
54
54
|
...h ? { "User-Token": h } : {}
|
|
55
55
|
}),
|
|
56
|
-
[
|
|
56
|
+
[C, h]
|
|
57
57
|
), j = n(
|
|
58
58
|
async (e) => {
|
|
59
|
-
g.current && g.current.abort();
|
|
60
59
|
const r = new AbortController();
|
|
61
|
-
|
|
60
|
+
Q.current = r;
|
|
62
61
|
try {
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
|
|
62
|
+
d(null);
|
|
63
|
+
const l = (await le(
|
|
64
|
+
N,
|
|
65
|
+
oe,
|
|
66
|
+
{ searchInput: e },
|
|
67
|
+
U,
|
|
68
|
+
r.signal
|
|
69
|
+
))?.search.searchHits;
|
|
70
|
+
i.current[e.searchQuery] = l, p(l);
|
|
66
71
|
} catch (o) {
|
|
67
72
|
if (o.name === "AbortError")
|
|
68
73
|
return;
|
|
69
|
-
|
|
74
|
+
d("Failed to fetch search results. Please try again.");
|
|
75
|
+
} finally {
|
|
76
|
+
m(!1);
|
|
70
77
|
}
|
|
71
|
-
x(!1);
|
|
72
78
|
},
|
|
73
79
|
[N, U]
|
|
74
80
|
), O = n((e) => {
|
|
75
81
|
const r = i.current[e.searchQuery];
|
|
76
|
-
|
|
82
|
+
A({
|
|
77
83
|
eventName: "search_query_response_received",
|
|
78
84
|
properties: {
|
|
79
85
|
searchQuery: e.searchQuery,
|
|
80
86
|
totalResults: r?.length
|
|
81
87
|
}
|
|
82
88
|
});
|
|
83
|
-
}, []), B =
|
|
89
|
+
}, []), B = () => {
|
|
90
|
+
Q.current && (Q.current.abort(), m(!1));
|
|
91
|
+
}, H = n(
|
|
84
92
|
(e) => {
|
|
85
|
-
if (
|
|
86
|
-
p([]),
|
|
93
|
+
if (R.current && window.clearTimeout(R.current), !e.searchQuery) {
|
|
94
|
+
B(), p([]), d(null);
|
|
87
95
|
return;
|
|
88
96
|
}
|
|
89
|
-
|
|
90
|
-
|
|
97
|
+
R.current = window.setTimeout(() => {
|
|
98
|
+
B(), A({
|
|
91
99
|
eventName: "search_query_submitted",
|
|
92
100
|
properties: {
|
|
93
101
|
searchQuery: e.searchQuery
|
|
94
102
|
}
|
|
95
|
-
}), i.current[e.searchQuery] ? (p(i.current[e.searchQuery]), O(e)) : j(e).then(() => {
|
|
103
|
+
}), i.current[e.searchQuery] ? (p(i.current[e.searchQuery]), O(e)) : (m(!0), j(e).then(() => {
|
|
96
104
|
O(e);
|
|
97
|
-
});
|
|
98
|
-
},
|
|
105
|
+
}));
|
|
106
|
+
}, q);
|
|
99
107
|
},
|
|
100
|
-
[
|
|
101
|
-
),
|
|
108
|
+
[q, j]
|
|
109
|
+
), T = S(
|
|
102
110
|
() => ({
|
|
103
111
|
searchQuery: c,
|
|
104
112
|
filters: {
|
|
105
|
-
...
|
|
106
|
-
...
|
|
107
|
-
limit:
|
|
113
|
+
...v,
|
|
114
|
+
...E,
|
|
115
|
+
limit: k
|
|
108
116
|
}
|
|
109
117
|
}),
|
|
110
|
-
[c,
|
|
118
|
+
[c, k, v, E]
|
|
111
119
|
);
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}, [
|
|
115
|
-
const
|
|
116
|
-
(e) =>
|
|
120
|
+
P(() => {
|
|
121
|
+
W?.(T.searchQuery), H(T);
|
|
122
|
+
}, [H, T]);
|
|
123
|
+
const ee = n(
|
|
124
|
+
(e) => I(e.target.value),
|
|
117
125
|
[]
|
|
118
|
-
),
|
|
119
|
-
() =>
|
|
120
|
-
[
|
|
126
|
+
), te = S(
|
|
127
|
+
() => w || (g ? "Search..." : "Search for anything..."),
|
|
128
|
+
[w, g]
|
|
121
129
|
);
|
|
122
130
|
return {
|
|
123
131
|
results: t,
|
|
124
|
-
resultsList:
|
|
125
|
-
hasContent:
|
|
126
|
-
loading:
|
|
127
|
-
error:
|
|
132
|
+
resultsList: y,
|
|
133
|
+
hasContent: y.length > 0 || x,
|
|
134
|
+
loading: x,
|
|
135
|
+
error: J,
|
|
128
136
|
query: c,
|
|
129
|
-
onInput:
|
|
130
|
-
placeholder:
|
|
131
|
-
tab:
|
|
132
|
-
onTabChange:
|
|
133
|
-
selectedItem:
|
|
137
|
+
onInput: ee,
|
|
138
|
+
placeholder: te,
|
|
139
|
+
tab: b,
|
|
140
|
+
onTabChange: Z,
|
|
141
|
+
selectedItem: V,
|
|
134
142
|
setSelectedItem: a,
|
|
135
|
-
onSelectedItemChange:
|
|
136
|
-
transitionsDisabled:
|
|
137
|
-
inputRef:
|
|
138
|
-
isMobile:
|
|
143
|
+
onSelectedItemChange: X,
|
|
144
|
+
transitionsDisabled: Y,
|
|
145
|
+
inputRef: _,
|
|
146
|
+
isMobile: g
|
|
139
147
|
};
|
|
140
148
|
};
|
|
141
149
|
export {
|
|
142
|
-
|
|
150
|
+
ge as useInkeepSearch
|
|
143
151
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("react/jsx-runtime"),t=require("react"),y=require("../atoms/api/analytics/events.cjs"),B=require("./config-provider.cjs"),b=require("./user-provider.cjs"),p=t.createContext(void 0),f=({children:e})=>{const{baseSettings:s,componentType:n}=B.useInkeepConfig(),{apiKey:o,analyticsApiBaseUrl:r,tags:i,privacyPreferences:d,env:E}=s,{userProperties:c}=b.useUser(),a=t.useMemo(()=>({widgetLibraryVersion:"0.5.
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("react/jsx-runtime"),t=require("react"),y=require("../atoms/api/analytics/events.cjs"),B=require("./config-provider.cjs"),b=require("./user-provider.cjs"),p=t.createContext(void 0),f=({children:e})=>{const{baseSettings:s,componentType:n}=B.useInkeepConfig(),{apiKey:o,analyticsApiBaseUrl:r,tags:i,privacyPreferences:d,env:E}=s,{userProperties:c}=b.useUser(),a=t.useMemo(()=>({widgetLibraryVersion:"0.5.26",componentType:n,tags:i}),[n,i]),u=!d.optOutAllAnalytics&&E!=="development",g={logEvent:t.useCallback(async v=>{const m={...a,...v.properties},l={eventName:v.eventName,properties:m,userProperties:c};u&&y.logEvent(l,o,r),s.onEvent?.(l)},[u,s,o,r,c,a])};return P.jsx(p.Provider,{value:g,children:e})},x=()=>{const e=t.useContext(p);if(!e)throw new Error("useBaseEvents must be used within a BaseEventsProvider");return e};exports.BaseEventsProvider=f;exports.useBaseEvents=x;
|
|
@@ -7,7 +7,7 @@ import { useUser as b } from "./user-provider.js";
|
|
|
7
7
|
const m = x(void 0), U = ({ children: e }) => {
|
|
8
8
|
const { baseSettings: t, componentType: o } = C(), { apiKey: n, analyticsApiBaseUrl: s, tags: r, privacyPreferences: u, env: l } = t, { userProperties: i } = b(), a = d(
|
|
9
9
|
() => ({
|
|
10
|
-
widgetLibraryVersion: "0.5.
|
|
10
|
+
widgetLibraryVersion: "0.5.26",
|
|
11
11
|
componentType: o,
|
|
12
12
|
tags: r
|
|
13
13
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});async function
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});async function i(r,s,o,n,a){const e=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json",...n},signal:a,body:JSON.stringify({query:s,variables:o})});if(!e.ok)throw new Error(`Network response was not OK (status: ${e.status})`);const t=await e.json();if(t.errors?.length)throw new Error(t.errors[0].message);return t.data}exports.graphqlRequest=i;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
async function
|
|
2
|
+
async function i(r, s, o, n, a) {
|
|
3
3
|
const t = await fetch(r, {
|
|
4
4
|
method: "POST",
|
|
5
5
|
headers: {
|
|
6
6
|
"Content-Type": "application/json",
|
|
7
7
|
...n
|
|
8
8
|
},
|
|
9
|
+
signal: a,
|
|
9
10
|
body: JSON.stringify({
|
|
10
11
|
query: s,
|
|
11
12
|
variables: o
|
|
@@ -19,5 +20,5 @@ async function a(r, s, o, n) {
|
|
|
19
20
|
return e.data;
|
|
20
21
|
}
|
|
21
22
|
export {
|
|
22
|
-
|
|
23
|
+
i as graphqlRequest
|
|
23
24
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inkeep/cxkit-primitives",
|
|
3
|
-
"version": "0.0.0-dev-
|
|
3
|
+
"version": "0.0.0-dev-20250313232451",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Inkeep, Inc. Customer License (IICL) v1.1",
|
|
6
6
|
"homepage": "",
|
|
@@ -58,9 +58,9 @@
|
|
|
58
58
|
"rehype-raw": "7.0.0",
|
|
59
59
|
"unist-util-visit": "^5.0.0",
|
|
60
60
|
"use-sync-external-store": "^1.4.0",
|
|
61
|
-
"@inkeep/cxkit-color-mode": "0.0.0-dev-
|
|
62
|
-
"@inkeep/cxkit-theme": "0.0.0-dev-
|
|
63
|
-
"@inkeep/cxkit-types": "0.0.0-dev-
|
|
61
|
+
"@inkeep/cxkit-color-mode": "0.0.0-dev-20250313232451",
|
|
62
|
+
"@inkeep/cxkit-theme": "0.0.0-dev-20250313232451",
|
|
63
|
+
"@inkeep/cxkit-types": "0.0.0-dev-20250313232451"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"@biomejs/biome": "1.9.4",
|