@knocklabs/react-core 0.13.6 → 0.13.8

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/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.13.8
4
+
5
+ ### Patch Changes
6
+
7
+ - 31dffc1: [Guides] Use `readyToTarget` to coordinate fetching guides in guide toolbar v2
8
+ - Updated dependencies [af81cf2]
9
+ - Updated dependencies [31dffc1]
10
+ - Updated dependencies [2798bbb]
11
+ - @knocklabs/client@0.21.8
12
+
13
+ ## 0.13.7
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies [6d3c9e2]
18
+ - @knocklabs/client@0.21.7
19
+
3
20
  ## 0.13.6
4
21
 
5
22
  ### Patch Changes
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("@knocklabs/client"),K=require("react"),v=require("../../core/context/KnockProvider.js"),P=require("../../core/hooks/useStableOptions.js");require("date-fns");function m(e){if(e&&typeof e=="object"&&"default"in e)return e;const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const c=m(K),a=c.createContext(void 0),g=({channelId:e,readyToTarget:r,listenForUpdates:t=!0,colorMode:o="light",targetParams:b={},trackLocationFromWindow:u=!0,trackDebugParams:s=!1,orderResolutionDuration:l=0,throttleCheckInterval:d,children:k})=>{let i;try{i=v.useKnockClient()}catch{throw new Error("KnockGuideProvider must be used within a KnockProvider")}const f=P(b),n=c.useMemo(()=>new p.KnockGuideClient(i,e,f,{trackLocationFromWindow:u,trackDebugParams:s,orderResolutionDuration:l,throttleCheckInterval:d}),[i,e,f,u,s,l,d]);return c.useEffect(()=>(r&&(n.fetch(),t&&n.subscribe()),()=>n.cleanup()),[r,t,n]),c.createElement(a.Provider,{value:{client:n,colorMode:o}},k)};exports.KnockGuideContext=a;exports.KnockGuideProvider=g;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("@knocklabs/client"),p=require("react"),m=require("../../core/context/KnockProvider.js"),v=require("../../core/hooks/useStableOptions.js");require("date-fns");function C(e){if(e&&typeof e=="object"&&"default"in e)return e;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const i=C(p),k=i.createContext(void 0),P=({channelId:e,readyToTarget:n,listenForUpdates:t=!0,colorMode:o="light",targetParams:K={},trackLocationFromWindow:u=!0,trackDebugParams:s=!1,orderResolutionDuration:l=0,throttleCheckInterval:f,children:g})=>{let c;try{c=m.useKnockClient()}catch{throw new Error("KnockGuideProvider must be used within a KnockProvider")}const a=v(K),r=i.useMemo(()=>new b.KnockGuideClient(c,e,a,{trackLocationFromWindow:u,trackDebugParams:s,orderResolutionDuration:l,throttleCheckInterval:f}),[c,e,a,u,s,l,f]);return i.useEffect(()=>{const d=b.KnockGuideClient.getToolbarRunConfigFromUrl();return n&&!d.isVisible&&(r.fetch(),t&&r.subscribe()),()=>r.cleanup()},[n,t,r]),i.createElement(k.Provider,{value:{client:r,colorMode:o}},g)};exports.KnockGuideContext=k;exports.KnockGuideProvider=P;
2
2
  //# sourceMappingURL=KnockGuideProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KnockGuideProvider.js","sources":["../../../../../src/modules/guide/context/KnockGuideProvider.tsx"],"sourcesContent":["import Knock, {\n KnockGuideClient,\n KnockGuideTargetParams,\n} from \"@knocklabs/client\";\nimport * as React from \"react\";\n\nimport { useKnockClient, useStableOptions } from \"../../core\";\nimport { ColorMode } from \"../../core/constants\";\n\ntype KnockGuideProviderValue = {\n client: KnockGuideClient;\n colorMode: ColorMode;\n};\n\nexport const KnockGuideContext = React.createContext<\n KnockGuideProviderValue | undefined\n>(undefined);\n\nexport type KnockGuideProviderProps = {\n channelId: string;\n readyToTarget: boolean;\n listenForUpdates?: boolean;\n colorMode?: ColorMode;\n targetParams?: KnockGuideTargetParams;\n trackLocationFromWindow?: boolean;\n trackDebugParams?: boolean;\n orderResolutionDuration?: number; // in milliseconds\n throttleCheckInterval?: number; // in milliseconds\n};\n\nexport const KnockGuideProvider: React.FC<\n React.PropsWithChildren<KnockGuideProviderProps>\n> = ({\n channelId,\n readyToTarget,\n listenForUpdates = true,\n colorMode = \"light\",\n targetParams = {},\n trackLocationFromWindow = true,\n // Whether the guide client should look for debug params in url/local storage\n // to launch guide toolbar. Set to true if using toolbar v1.\n // TODO(KNO-11523): Remove this once we ship v2.\n trackDebugParams = false,\n // Default to 0 which works well for react apps as this \"yields\" to react for\n // one render cyle first and close the group stage.\n orderResolutionDuration = 0,\n throttleCheckInterval,\n children,\n}) => {\n let knock: Knock;\n\n try {\n knock = useKnockClient();\n } catch (_) {\n throw new Error(\"KnockGuideProvider must be used within a KnockProvider\");\n }\n\n const stableTargetParams = useStableOptions(targetParams);\n\n const knockGuideClient = React.useMemo(() => {\n return new KnockGuideClient(knock, channelId, stableTargetParams, {\n trackLocationFromWindow,\n trackDebugParams,\n orderResolutionDuration,\n throttleCheckInterval,\n });\n }, [\n knock,\n channelId,\n stableTargetParams,\n trackLocationFromWindow,\n trackDebugParams,\n orderResolutionDuration,\n throttleCheckInterval,\n ]);\n\n React.useEffect(() => {\n if (readyToTarget) {\n knockGuideClient.fetch();\n if (listenForUpdates) knockGuideClient.subscribe();\n }\n\n return () => knockGuideClient.cleanup();\n }, [readyToTarget, listenForUpdates, knockGuideClient]);\n\n return (\n <KnockGuideContext.Provider\n value={{\n client: knockGuideClient,\n colorMode,\n }}\n >\n {children}\n </KnockGuideContext.Provider>\n );\n};\n"],"names":["KnockGuideContext","React","createContext","undefined","KnockGuideProvider","channelId","readyToTarget","listenForUpdates","colorMode","targetParams","trackLocationFromWindow","trackDebugParams","orderResolutionDuration","throttleCheckInterval","children","knock","useKnockClient","Error","stableTargetParams","useStableOptions","knockGuideClient","useMemo","KnockGuideClient","useEffect","fetch","subscribe","cleanup","client"],"mappings":"0kBAcaA,EAAoBC,EAAMC,cAErCC,MAAS,EAcEC,EAETA,CAAC,CACHC,UAAAA,EACAC,cAAAA,EACAC,iBAAAA,EAAmB,GACnBC,UAAAA,EAAY,QACZC,aAAAA,EAAe,CAAC,EAChBC,wBAAAA,EAA0B,GAI1BC,iBAAAA,EAAmB,GAGnBC,wBAAAA,EAA0B,EAC1BC,sBAAAA,EACAC,SAAAA,CACF,IAAM,CACAC,IAAAA,EAEA,GAAA,CACFA,EAAQC,EAAAA,eAAe,OACb,CACJ,MAAA,IAAIC,MAAM,wDAAwD,CAAA,CAGpEC,MAAAA,EAAqBC,EAAiBV,CAAY,EAElDW,EAAmBnB,EAAMoB,QAAQ,IAC9B,IAAIC,EAAAA,iBAAiBP,EAAOV,EAAWa,EAAoB,CAChER,wBAAAA,EACAC,iBAAAA,EACAC,wBAAAA,EACAC,sBAAAA,CAAAA,CACD,EACA,CACDE,EACAV,EACAa,EACAR,EACAC,EACAC,EACAC,CAAqB,CACtB,EAEDZ,OAAAA,EAAMsB,UAAU,KACVjB,IACFc,EAAiBI,MAAM,EACnBjB,KAAmCkB,UAAU,GAG5C,IAAML,EAAiBM,QAAQ,GACrC,CAACpB,EAAeC,EAAkBa,CAAgB,CAAC,EAGnDnB,EAAA,cAAAD,EAAkB,SAAlB,CACC,MAAO,CACL2B,OAAQP,EACRZ,UAAAA,IAGDM,CACH,CAEJ"}
1
+ {"version":3,"file":"KnockGuideProvider.js","sources":["../../../../../src/modules/guide/context/KnockGuideProvider.tsx"],"sourcesContent":["import Knock, {\n KnockGuideClient,\n KnockGuideTargetParams,\n} from \"@knocklabs/client\";\nimport * as React from \"react\";\n\nimport { useKnockClient, useStableOptions } from \"../../core\";\nimport { ColorMode } from \"../../core/constants\";\n\ntype KnockGuideProviderValue = {\n client: KnockGuideClient;\n colorMode: ColorMode;\n};\n\nexport const KnockGuideContext = React.createContext<\n KnockGuideProviderValue | undefined\n>(undefined);\n\nexport type KnockGuideProviderProps = {\n channelId: string;\n readyToTarget: boolean;\n listenForUpdates?: boolean;\n colorMode?: ColorMode;\n targetParams?: KnockGuideTargetParams;\n trackLocationFromWindow?: boolean;\n trackDebugParams?: boolean;\n orderResolutionDuration?: number; // in milliseconds\n throttleCheckInterval?: number; // in milliseconds\n};\n\nexport const KnockGuideProvider: React.FC<\n React.PropsWithChildren<KnockGuideProviderProps>\n> = ({\n channelId,\n readyToTarget,\n listenForUpdates = true,\n colorMode = \"light\",\n targetParams = {},\n trackLocationFromWindow = true,\n // Whether the guide client should look for debug params in url/local storage\n // to launch guide toolbar. Set to true if using toolbar v1.\n // TODO(KNO-11523): Remove this once we ship v2.\n trackDebugParams = false,\n // Default to 0 which works well for react apps as this \"yields\" to react for\n // one render cyle first and close the group stage.\n orderResolutionDuration = 0,\n throttleCheckInterval,\n children,\n}) => {\n let knock: Knock;\n\n try {\n knock = useKnockClient();\n } catch (_) {\n throw new Error(\"KnockGuideProvider must be used within a KnockProvider\");\n }\n\n const stableTargetParams = useStableOptions(targetParams);\n\n const knockGuideClient = React.useMemo(() => {\n return new KnockGuideClient(knock, channelId, stableTargetParams, {\n trackLocationFromWindow,\n trackDebugParams,\n orderResolutionDuration,\n throttleCheckInterval,\n });\n }, [\n knock,\n channelId,\n stableTargetParams,\n trackLocationFromWindow,\n trackDebugParams,\n orderResolutionDuration,\n throttleCheckInterval,\n ]);\n\n React.useEffect(() => {\n // When the toolbar v2 is visible, defer fetch/subscribe to the toolbar\n // so it can drive the debugging session lifecycle.\n const toolbarRunConfig = KnockGuideClient.getToolbarRunConfigFromUrl();\n\n if (readyToTarget && !toolbarRunConfig.isVisible) {\n knockGuideClient.fetch();\n if (listenForUpdates) knockGuideClient.subscribe();\n }\n\n return () => knockGuideClient.cleanup();\n }, [readyToTarget, listenForUpdates, knockGuideClient]);\n\n return (\n <KnockGuideContext.Provider\n value={{\n client: knockGuideClient,\n colorMode,\n }}\n >\n {children}\n </KnockGuideContext.Provider>\n );\n};\n"],"names":["KnockGuideContext","React","createContext","undefined","KnockGuideProvider","channelId","readyToTarget","listenForUpdates","colorMode","targetParams","trackLocationFromWindow","trackDebugParams","orderResolutionDuration","throttleCheckInterval","children","knock","useKnockClient","Error","stableTargetParams","useStableOptions","knockGuideClient","useMemo","KnockGuideClient","useEffect","toolbarRunConfig","getToolbarRunConfigFromUrl","isVisible","fetch","subscribe","cleanup","client"],"mappings":"0kBAcaA,EAAoBC,EAAMC,cAErCC,MAAS,EAcEC,EAETA,CAAC,CACHC,UAAAA,EACAC,cAAAA,EACAC,iBAAAA,EAAmB,GACnBC,UAAAA,EAAY,QACZC,aAAAA,EAAe,CAAC,EAChBC,wBAAAA,EAA0B,GAI1BC,iBAAAA,EAAmB,GAGnBC,wBAAAA,EAA0B,EAC1BC,sBAAAA,EACAC,SAAAA,CACF,IAAM,CACAC,IAAAA,EAEA,GAAA,CACFA,EAAQC,EAAAA,eAAe,OACb,CACJ,MAAA,IAAIC,MAAM,wDAAwD,CAAA,CAGpEC,MAAAA,EAAqBC,EAAiBV,CAAY,EAElDW,EAAmBnB,EAAMoB,QAAQ,IAC9B,IAAIC,EAAAA,iBAAiBP,EAAOV,EAAWa,EAAoB,CAChER,wBAAAA,EACAC,iBAAAA,EACAC,wBAAAA,EACAC,sBAAAA,CAAAA,CACD,EACA,CACDE,EACAV,EACAa,EACAR,EACAC,EACAC,EACAC,CAAqB,CACtB,EAEDZ,OAAAA,EAAMsB,UAAU,IAAM,CAGdC,MAAAA,EAAmBF,mBAAiBG,2BAA2B,EAEjEnB,OAAAA,GAAiB,CAACkB,EAAiBE,YACrCN,EAAiBO,MAAM,EACnBpB,KAAmCqB,UAAU,GAG5C,IAAMR,EAAiBS,QAAQ,CACrC,EAAA,CAACvB,EAAeC,EAAkBa,CAAgB,CAAC,EAGnDnB,EAAA,cAAAD,EAAkB,SAAlB,CACC,MAAO,CACL8B,OAAQV,EACRZ,UAAAA,IAGDM,CACH,CAEJ"}
@@ -1,14 +1,14 @@
1
- import { KnockGuideClient as d } from "@knocklabs/client";
1
+ import { KnockGuideClient as b } from "@knocklabs/client";
2
2
  import * as t from "react";
3
- import { useKnockClient as K } from "../../core/context/KnockProvider.mjs";
4
- import v from "../../core/hooks/useStableOptions.mjs";
3
+ import { useKnockClient as C } from "../../core/context/KnockProvider.mjs";
4
+ import K from "../../core/hooks/useStableOptions.mjs";
5
5
  import "date-fns";
6
- const G = t.createContext(void 0), x = ({
7
- channelId: o,
6
+ const a = t.createContext(void 0), w = ({
7
+ channelId: r,
8
8
  readyToTarget: i,
9
9
  listenForUpdates: n = !0,
10
10
  colorMode: k = "light",
11
- targetParams: l = {},
11
+ targetParams: p = {},
12
12
  trackLocationFromWindow: c = !0,
13
13
  // Whether the guide client should look for debug params in url/local storage
14
14
  // to launch guide toolbar. Set to true if using toolbar v1.
@@ -17,28 +17,31 @@ const G = t.createContext(void 0), x = ({
17
17
  // Default to 0 which works well for react apps as this "yields" to react for
18
18
  // one render cyle first and close the group stage.
19
19
  orderResolutionDuration: s = 0,
20
- throttleCheckInterval: m,
21
- children: p
20
+ throttleCheckInterval: f,
21
+ children: d
22
22
  }) => {
23
- let r;
23
+ let o;
24
24
  try {
25
- r = K();
25
+ o = C();
26
26
  } catch {
27
27
  throw new Error("KnockGuideProvider must be used within a KnockProvider");
28
28
  }
29
- const f = v(l), e = t.useMemo(() => new d(r, o, f, {
29
+ const m = K(p), e = t.useMemo(() => new b(o, r, m, {
30
30
  trackLocationFromWindow: c,
31
31
  trackDebugParams: u,
32
32
  orderResolutionDuration: s,
33
- throttleCheckInterval: m
34
- }), [r, o, f, c, u, s, m]);
35
- return t.useEffect(() => (i && (e.fetch(), n && e.subscribe()), () => e.cleanup()), [i, n, e]), /* @__PURE__ */ t.createElement(G.Provider, { value: {
33
+ throttleCheckInterval: f
34
+ }), [o, r, m, c, u, s, f]);
35
+ return t.useEffect(() => {
36
+ const l = b.getToolbarRunConfigFromUrl();
37
+ return i && !l.isVisible && (e.fetch(), n && e.subscribe()), () => e.cleanup();
38
+ }, [i, n, e]), /* @__PURE__ */ t.createElement(a.Provider, { value: {
36
39
  client: e,
37
40
  colorMode: k
38
- } }, p);
41
+ } }, d);
39
42
  };
40
43
  export {
41
- G as KnockGuideContext,
42
- x as KnockGuideProvider
44
+ a as KnockGuideContext,
45
+ w as KnockGuideProvider
43
46
  };
44
47
  //# sourceMappingURL=KnockGuideProvider.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"KnockGuideProvider.mjs","sources":["../../../../../src/modules/guide/context/KnockGuideProvider.tsx"],"sourcesContent":["import Knock, {\n KnockGuideClient,\n KnockGuideTargetParams,\n} from \"@knocklabs/client\";\nimport * as React from \"react\";\n\nimport { useKnockClient, useStableOptions } from \"../../core\";\nimport { ColorMode } from \"../../core/constants\";\n\ntype KnockGuideProviderValue = {\n client: KnockGuideClient;\n colorMode: ColorMode;\n};\n\nexport const KnockGuideContext = React.createContext<\n KnockGuideProviderValue | undefined\n>(undefined);\n\nexport type KnockGuideProviderProps = {\n channelId: string;\n readyToTarget: boolean;\n listenForUpdates?: boolean;\n colorMode?: ColorMode;\n targetParams?: KnockGuideTargetParams;\n trackLocationFromWindow?: boolean;\n trackDebugParams?: boolean;\n orderResolutionDuration?: number; // in milliseconds\n throttleCheckInterval?: number; // in milliseconds\n};\n\nexport const KnockGuideProvider: React.FC<\n React.PropsWithChildren<KnockGuideProviderProps>\n> = ({\n channelId,\n readyToTarget,\n listenForUpdates = true,\n colorMode = \"light\",\n targetParams = {},\n trackLocationFromWindow = true,\n // Whether the guide client should look for debug params in url/local storage\n // to launch guide toolbar. Set to true if using toolbar v1.\n // TODO(KNO-11523): Remove this once we ship v2.\n trackDebugParams = false,\n // Default to 0 which works well for react apps as this \"yields\" to react for\n // one render cyle first and close the group stage.\n orderResolutionDuration = 0,\n throttleCheckInterval,\n children,\n}) => {\n let knock: Knock;\n\n try {\n knock = useKnockClient();\n } catch (_) {\n throw new Error(\"KnockGuideProvider must be used within a KnockProvider\");\n }\n\n const stableTargetParams = useStableOptions(targetParams);\n\n const knockGuideClient = React.useMemo(() => {\n return new KnockGuideClient(knock, channelId, stableTargetParams, {\n trackLocationFromWindow,\n trackDebugParams,\n orderResolutionDuration,\n throttleCheckInterval,\n });\n }, [\n knock,\n channelId,\n stableTargetParams,\n trackLocationFromWindow,\n trackDebugParams,\n orderResolutionDuration,\n throttleCheckInterval,\n ]);\n\n React.useEffect(() => {\n if (readyToTarget) {\n knockGuideClient.fetch();\n if (listenForUpdates) knockGuideClient.subscribe();\n }\n\n return () => knockGuideClient.cleanup();\n }, [readyToTarget, listenForUpdates, knockGuideClient]);\n\n return (\n <KnockGuideContext.Provider\n value={{\n client: knockGuideClient,\n colorMode,\n }}\n >\n {children}\n </KnockGuideContext.Provider>\n );\n};\n"],"names":["KnockGuideContext","React","createContext","undefined","KnockGuideProvider","channelId","readyToTarget","listenForUpdates","colorMode","targetParams","trackLocationFromWindow","trackDebugParams","orderResolutionDuration","throttleCheckInterval","children","knock","useKnockClient","Error","stableTargetParams","useStableOptions","knockGuideClient","useMemo","KnockGuideClient","useEffect","fetch","subscribe","cleanup","client"],"mappings":";;;;;AAcaA,MAAAA,IAAoBC,EAAMC,cAErCC,MAAS,GAcEC,IAETA,CAAC;AAAA,EACHC,WAAAA;AAAAA,EACAC,eAAAA;AAAAA,EACAC,kBAAAA,IAAmB;AAAA,EACnBC,WAAAA,IAAY;AAAA,EACZC,cAAAA,IAAe,CAAC;AAAA,EAChBC,yBAAAA,IAA0B;AAAA;AAAA;AAAA;AAAA,EAI1BC,kBAAAA,IAAmB;AAAA;AAAA;AAAA,EAGnBC,yBAAAA,IAA0B;AAAA,EAC1BC,uBAAAA;AAAAA,EACAC,UAAAA;AACF,MAAM;AACAC,MAAAA;AAEA,MAAA;AACFA,IAAAA,IAAQC,EAAe;AAAA,UACb;AACJ,UAAA,IAAIC,MAAM,wDAAwD;AAAA,EAAA;AAGpEC,QAAAA,IAAqBC,EAAiBV,CAAY,GAElDW,IAAmBnB,EAAMoB,QAAQ,MAC9B,IAAIC,EAAiBP,GAAOV,GAAWa,GAAoB;AAAA,IAChER,yBAAAA;AAAAA,IACAC,kBAAAA;AAAAA,IACAC,yBAAAA;AAAAA,IACAC,uBAAAA;AAAAA,EAAAA,CACD,GACA,CACDE,GACAV,GACAa,GACAR,GACAC,GACAC,GACAC,CAAqB,CACtB;AAEDZ,SAAAA,EAAMsB,UAAU,OACVjB,MACFc,EAAiBI,MAAM,GACnBjB,OAAmCkB,UAAU,IAG5C,MAAML,EAAiBM,QAAQ,IACrC,CAACpB,GAAeC,GAAkBa,CAAgB,CAAC,GAGnD,gBAAAnB,EAAA,cAAAD,EAAkB,UAAlB,EACC,OAAO;AAAA,IACL2B,QAAQP;AAAAA,IACRZ,WAAAA;AAAAA,OAGDM,CACH;AAEJ;"}
1
+ {"version":3,"file":"KnockGuideProvider.mjs","sources":["../../../../../src/modules/guide/context/KnockGuideProvider.tsx"],"sourcesContent":["import Knock, {\n KnockGuideClient,\n KnockGuideTargetParams,\n} from \"@knocklabs/client\";\nimport * as React from \"react\";\n\nimport { useKnockClient, useStableOptions } from \"../../core\";\nimport { ColorMode } from \"../../core/constants\";\n\ntype KnockGuideProviderValue = {\n client: KnockGuideClient;\n colorMode: ColorMode;\n};\n\nexport const KnockGuideContext = React.createContext<\n KnockGuideProviderValue | undefined\n>(undefined);\n\nexport type KnockGuideProviderProps = {\n channelId: string;\n readyToTarget: boolean;\n listenForUpdates?: boolean;\n colorMode?: ColorMode;\n targetParams?: KnockGuideTargetParams;\n trackLocationFromWindow?: boolean;\n trackDebugParams?: boolean;\n orderResolutionDuration?: number; // in milliseconds\n throttleCheckInterval?: number; // in milliseconds\n};\n\nexport const KnockGuideProvider: React.FC<\n React.PropsWithChildren<KnockGuideProviderProps>\n> = ({\n channelId,\n readyToTarget,\n listenForUpdates = true,\n colorMode = \"light\",\n targetParams = {},\n trackLocationFromWindow = true,\n // Whether the guide client should look for debug params in url/local storage\n // to launch guide toolbar. Set to true if using toolbar v1.\n // TODO(KNO-11523): Remove this once we ship v2.\n trackDebugParams = false,\n // Default to 0 which works well for react apps as this \"yields\" to react for\n // one render cyle first and close the group stage.\n orderResolutionDuration = 0,\n throttleCheckInterval,\n children,\n}) => {\n let knock: Knock;\n\n try {\n knock = useKnockClient();\n } catch (_) {\n throw new Error(\"KnockGuideProvider must be used within a KnockProvider\");\n }\n\n const stableTargetParams = useStableOptions(targetParams);\n\n const knockGuideClient = React.useMemo(() => {\n return new KnockGuideClient(knock, channelId, stableTargetParams, {\n trackLocationFromWindow,\n trackDebugParams,\n orderResolutionDuration,\n throttleCheckInterval,\n });\n }, [\n knock,\n channelId,\n stableTargetParams,\n trackLocationFromWindow,\n trackDebugParams,\n orderResolutionDuration,\n throttleCheckInterval,\n ]);\n\n React.useEffect(() => {\n // When the toolbar v2 is visible, defer fetch/subscribe to the toolbar\n // so it can drive the debugging session lifecycle.\n const toolbarRunConfig = KnockGuideClient.getToolbarRunConfigFromUrl();\n\n if (readyToTarget && !toolbarRunConfig.isVisible) {\n knockGuideClient.fetch();\n if (listenForUpdates) knockGuideClient.subscribe();\n }\n\n return () => knockGuideClient.cleanup();\n }, [readyToTarget, listenForUpdates, knockGuideClient]);\n\n return (\n <KnockGuideContext.Provider\n value={{\n client: knockGuideClient,\n colorMode,\n }}\n >\n {children}\n </KnockGuideContext.Provider>\n );\n};\n"],"names":["KnockGuideContext","React","createContext","undefined","KnockGuideProvider","channelId","readyToTarget","listenForUpdates","colorMode","targetParams","trackLocationFromWindow","trackDebugParams","orderResolutionDuration","throttleCheckInterval","children","knock","useKnockClient","Error","stableTargetParams","useStableOptions","knockGuideClient","useMemo","KnockGuideClient","useEffect","toolbarRunConfig","getToolbarRunConfigFromUrl","isVisible","fetch","subscribe","cleanup","client"],"mappings":";;;;;AAcaA,MAAAA,IAAoBC,EAAMC,cAErCC,MAAS,GAcEC,IAETA,CAAC;AAAA,EACHC,WAAAA;AAAAA,EACAC,eAAAA;AAAAA,EACAC,kBAAAA,IAAmB;AAAA,EACnBC,WAAAA,IAAY;AAAA,EACZC,cAAAA,IAAe,CAAC;AAAA,EAChBC,yBAAAA,IAA0B;AAAA;AAAA;AAAA;AAAA,EAI1BC,kBAAAA,IAAmB;AAAA;AAAA;AAAA,EAGnBC,yBAAAA,IAA0B;AAAA,EAC1BC,uBAAAA;AAAAA,EACAC,UAAAA;AACF,MAAM;AACAC,MAAAA;AAEA,MAAA;AACFA,IAAAA,IAAQC,EAAe;AAAA,UACb;AACJ,UAAA,IAAIC,MAAM,wDAAwD;AAAA,EAAA;AAGpEC,QAAAA,IAAqBC,EAAiBV,CAAY,GAElDW,IAAmBnB,EAAMoB,QAAQ,MAC9B,IAAIC,EAAiBP,GAAOV,GAAWa,GAAoB;AAAA,IAChER,yBAAAA;AAAAA,IACAC,kBAAAA;AAAAA,IACAC,yBAAAA;AAAAA,IACAC,uBAAAA;AAAAA,EAAAA,CACD,GACA,CACDE,GACAV,GACAa,GACAR,GACAC,GACAC,GACAC,CAAqB,CACtB;AAEDZ,SAAAA,EAAMsB,UAAU,MAAM;AAGdC,UAAAA,IAAmBF,EAAiBG,2BAA2B;AAEjEnB,WAAAA,KAAiB,CAACkB,EAAiBE,cACrCN,EAAiBO,MAAM,GACnBpB,OAAmCqB,UAAU,IAG5C,MAAMR,EAAiBS,QAAQ;AAAA,EACrC,GAAA,CAACvB,GAAeC,GAAkBa,CAAgB,CAAC,GAGnD,gBAAAnB,EAAA,cAAAD,EAAkB,UAAlB,EACC,OAAO;AAAA,IACL8B,QAAQV;AAAAA,IACRZ,WAAAA;AAAAA,OAGDM,CACH;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"KnockGuideProvider.d.ts","sourceRoot":"","sources":["../../../../../src/modules/guide/context/KnockGuideProvider.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,KAAK,uBAAuB,GAAG;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,oDAElB,CAAC;AAEb,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CACvC,KAAK,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAgEjD,CAAC"}
1
+ {"version":3,"file":"KnockGuideProvider.d.ts","sourceRoot":"","sources":["../../../../../src/modules/guide/context/KnockGuideProvider.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,KAAK,uBAAuB,GAAG;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,oDAElB,CAAC;AAEb,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CACvC,KAAK,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAoEjD,CAAC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@knocklabs/react-core",
3
3
  "description": "A set of React components to build notification experiences powered by Knock",
4
4
  "author": "@knocklabs",
5
- "version": "0.13.6",
5
+ "version": "0.13.8",
6
6
  "license": "MIT",
7
7
  "main": "dist/cjs/index.js",
8
8
  "module": "dist/esm/index.mjs",
@@ -47,7 +47,7 @@
47
47
  "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
48
48
  },
49
49
  "dependencies": {
50
- "@knocklabs/client": "^0.21.6",
50
+ "@knocklabs/client": "^0.21.8",
51
51
  "@tanstack/react-store": "^0.7.3",
52
52
  "date-fns": "^4.0.0",
53
53
  "fast-deep-equal": "^3.1.3",
@@ -65,7 +65,7 @@
65
65
  "babel-plugin-react-require": "^4.0.3",
66
66
  "eslint": "^8.56.0",
67
67
  "eslint-plugin-react-hooks": "^5.2.0",
68
- "eslint-plugin-react-refresh": "^0.4.14",
68
+ "eslint-plugin-react-refresh": "^0.5.2",
69
69
  "jsdom": "^27.1.0",
70
70
  "react": "^19.0.0",
71
71
  "react-dom": "^19.0.0",
@@ -75,7 +75,11 @@ export const KnockGuideProvider: React.FC<
75
75
  ]);
76
76
 
77
77
  React.useEffect(() => {
78
- if (readyToTarget) {
78
+ // When the toolbar v2 is visible, defer fetch/subscribe to the toolbar
79
+ // so it can drive the debugging session lifecycle.
80
+ const toolbarRunConfig = KnockGuideClient.getToolbarRunConfigFromUrl();
81
+
82
+ if (readyToTarget && !toolbarRunConfig.isVisible) {
79
83
  knockGuideClient.fetch();
80
84
  if (listenForUpdates) knockGuideClient.subscribe();
81
85
  }