@uniformdev/canvas-next-rsc-client 19.55.2-alpha.48 → 19.55.2-alpha.52

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/index.d.mts CHANGED
@@ -1,13 +1,22 @@
1
- import { AppDirectoryContextState, ComponentProps, PersonalizeProps, TestProps, AppDirectoryContext } from '@uniformdev/canvas-next-rsc-shared';
2
- import * as react from 'react';
3
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { PureContextualEditingComponentWrapperProps } from '@uniformdev/canvas-react/core';
3
+ import * as react from 'react';
4
+ import { PropsWithChildren } from 'react';
5
+ import { AppDirectoryContextState, PersonalizeProps, ComponentProps, TestProps, AppDirectoryContext } from '@uniformdev/canvas-next-rsc-shared';
6
+
7
+ declare const ClientContextualEditingComponentWrapper: (props: PropsWithChildren<PureContextualEditingComponentWrapperProps>) => react_jsx_runtime.JSX.Element;
8
+
9
+ declare const ClientContextUpdate: () => react_jsx_runtime.JSX.Element;
4
10
 
5
11
  declare const ContextUpdateTransferClient: ({ update, ts, }: {
6
12
  update: Partial<AppDirectoryContextState>;
7
13
  ts: number;
8
14
  }) => null;
9
15
 
10
- declare const PersonalizeClient: (props: ComponentProps<PersonalizeProps>) => react.FunctionComponentElement<{
16
+ type PersonalizeClientProps = PersonalizeProps & {
17
+ indexes: number[];
18
+ };
19
+ declare const PersonalizeClient: (props: ComponentProps<PersonalizeClientProps>) => react.FunctionComponentElement<{
11
20
  children?: react.ReactNode;
12
21
  }>;
13
22
 
@@ -28,4 +37,4 @@ declare const useUniformContext: () => {
28
37
  context: AppDirectoryContext | undefined;
29
38
  };
30
39
 
31
- export { ContextUpdateTransferClient, PersonalizeClient, TestClient, UniformScript, useInitUniformContext, useUniformContext };
40
+ export { ClientContextUpdate, ClientContextualEditingComponentWrapper, ContextUpdateTransferClient, PersonalizeClient, PersonalizeClientProps, TestClient, UniformScript, useInitUniformContext, useUniformContext };
package/dist/index.d.ts CHANGED
@@ -1,13 +1,22 @@
1
- import { AppDirectoryContextState, ComponentProps, PersonalizeProps, TestProps, AppDirectoryContext } from '@uniformdev/canvas-next-rsc-shared';
2
- import * as react from 'react';
3
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { PureContextualEditingComponentWrapperProps } from '@uniformdev/canvas-react/core';
3
+ import * as react from 'react';
4
+ import { PropsWithChildren } from 'react';
5
+ import { AppDirectoryContextState, PersonalizeProps, ComponentProps, TestProps, AppDirectoryContext } from '@uniformdev/canvas-next-rsc-shared';
6
+
7
+ declare const ClientContextualEditingComponentWrapper: (props: PropsWithChildren<PureContextualEditingComponentWrapperProps>) => react_jsx_runtime.JSX.Element;
8
+
9
+ declare const ClientContextUpdate: () => react_jsx_runtime.JSX.Element;
4
10
 
5
11
  declare const ContextUpdateTransferClient: ({ update, ts, }: {
6
12
  update: Partial<AppDirectoryContextState>;
7
13
  ts: number;
8
14
  }) => null;
9
15
 
10
- declare const PersonalizeClient: (props: ComponentProps<PersonalizeProps>) => react.FunctionComponentElement<{
16
+ type PersonalizeClientProps = PersonalizeProps & {
17
+ indexes: number[];
18
+ };
19
+ declare const PersonalizeClient: (props: ComponentProps<PersonalizeClientProps>) => react.FunctionComponentElement<{
11
20
  children?: react.ReactNode;
12
21
  }>;
13
22
 
@@ -28,4 +37,4 @@ declare const useUniformContext: () => {
28
37
  context: AppDirectoryContext | undefined;
29
38
  };
30
39
 
31
- export { ContextUpdateTransferClient, PersonalizeClient, TestClient, UniformScript, useInitUniformContext, useUniformContext };
40
+ export { ClientContextUpdate, ClientContextualEditingComponentWrapper, ContextUpdateTransferClient, PersonalizeClient, PersonalizeClientProps, TestClient, UniformScript, useInitUniformContext, useUniformContext };
package/dist/index.esm.js CHANGED
@@ -1,7 +1,31 @@
1
1
  "use client";
2
2
 
3
- // src/components/ContextUpdateTransferClient.tsx
4
- import { useEffect as useEffect2, useState as useState2 } from "react";
3
+ // src/components/ClientContextualEditingComponentWrapper.tsx
4
+ import { IN_CONTEXT_EDITOR_QUERY_STRING_PARAM } from "@uniformdev/canvas";
5
+ import {
6
+ PureContextualEditingComponentWrapper
7
+ } from "@uniformdev/canvas-react/core";
8
+ import { useSearchParams } from "next/navigation";
9
+ import { Suspense } from "react";
10
+ import { Fragment, jsx } from "react/jsx-runtime";
11
+ var ClientContextualEditingComponentWrapper = (props) => {
12
+ return /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(ClientContextualEditingComponentWrapperInner, { ...props }) });
13
+ };
14
+ var ClientContextualEditingComponentWrapperInner = ({
15
+ children,
16
+ ...rest
17
+ }) => {
18
+ const searchParams = useSearchParams();
19
+ const inContextMode = searchParams.get(IN_CONTEXT_EDITOR_QUERY_STRING_PARAM) === "true";
20
+ if (!inContextMode) {
21
+ return /* @__PURE__ */ jsx(Fragment, { children });
22
+ }
23
+ return /* @__PURE__ */ jsx(PureContextualEditingComponentWrapper, { ...rest, children });
24
+ };
25
+
26
+ // src/components/ClientContextUpdate.tsx
27
+ import { useParams, useSearchParams as useSearchParams2 } from "next/navigation";
28
+ import { Suspense as Suspense2, useEffect as useEffect2 } from "react";
5
29
 
6
30
  // src/hooks/useUniformContext.ts
7
31
  import { useEffect, useState } from "react";
@@ -23,14 +47,37 @@ var useUniformContext = () => {
23
47
  };
24
48
  };
25
49
 
50
+ // src/components/ClientContextUpdate.tsx
51
+ import { Fragment as Fragment2, jsx as jsx2 } from "react/jsx-runtime";
52
+ var ClientContextUpdate = () => {
53
+ return /* @__PURE__ */ jsx2(Suspense2, { children: /* @__PURE__ */ jsx2(ClientContextUpdateInner, {}) });
54
+ };
55
+ var ClientContextUpdateInner = () => {
56
+ const params = useParams();
57
+ const searchParams = useSearchParams2();
58
+ const { context } = useUniformContext();
59
+ useEffect2(() => {
60
+ if (!context || typeof window === "undefined") {
61
+ return;
62
+ }
63
+ const convertedSearchParams = Object.fromEntries(searchParams.entries());
64
+ context.update({
65
+ params,
66
+ searchParams: convertedSearchParams
67
+ });
68
+ }, [params, searchParams, context]);
69
+ return /* @__PURE__ */ jsx2(Fragment2, {});
70
+ };
71
+
26
72
  // src/components/ContextUpdateTransferClient.tsx
73
+ import { useEffect as useEffect3, useState as useState2 } from "react";
27
74
  var ContextUpdateTransferClient = ({
28
75
  update,
29
76
  ts
30
77
  }) => {
31
78
  const { context } = useUniformContext();
32
79
  const [lastLogged, setLastLogged] = useState2(void 0);
33
- useEffect2(() => {
80
+ useEffect3(() => {
34
81
  const shouldBeLogged = (!ts || lastLogged !== ts) && Object.keys(update).length > 0;
35
82
  const hasContext = typeof context !== "undefined";
36
83
  if (shouldBeLogged && hasContext) {
@@ -44,59 +91,61 @@ var ContextUpdateTransferClient = ({
44
91
  // src/components/PersonalizeClient.ts
45
92
  import { CANVAS_PERSONALIZE_SLOT } from "@uniformdev/canvas";
46
93
  import { runPersonalization } from "@uniformdev/canvas-next-rsc-shared";
47
- import { createElement, Fragment, useMemo } from "react";
94
+ import { createElement, Fragment as Fragment3, useEffect as useEffect4, useState as useState3 } from "react";
48
95
  var PersonalizeClient = (props) => {
49
96
  const { slots } = props;
50
97
  const { context } = useUniformContext();
51
- const indexes = useMemo(() => {
98
+ const [indexesToShow, setIndexesToShow] = useState3(props.indexes);
99
+ useEffect4(() => {
52
100
  const result = runPersonalization({
53
101
  ...props,
54
102
  contextInstance: context
55
103
  });
56
- return result.indexes;
104
+ setIndexesToShow(result.indexes);
57
105
  }, [props, context]);
58
- const slotsToShow = indexes.map((key) => {
106
+ const slotsToShow = indexesToShow.map((key) => {
59
107
  var _a;
60
108
  return (_a = slots[CANVAS_PERSONALIZE_SLOT]) == null ? void 0 : _a.items[key];
61
109
  });
62
- return createElement(Fragment, void 0, slotsToShow);
110
+ return createElement(Fragment3, void 0, slotsToShow);
63
111
  };
64
112
 
65
113
  // src/components/TestClient.ts
66
114
  import { CANVAS_TEST_SLOT } from "@uniformdev/canvas";
67
115
  import { runTest } from "@uniformdev/canvas-next-rsc-shared";
68
- import { createElement as createElement2, Fragment as Fragment2, useMemo as useMemo2 } from "react";
116
+ import { createElement as createElement2, Fragment as Fragment4, useEffect as useEffect5, useState as useState4 } from "react";
69
117
  var TestClient = (props) => {
70
118
  var _a;
71
119
  const { slots } = props;
72
120
  const { context } = useUniformContext();
73
- const index = useMemo2(() => {
121
+ const [index, setIndex] = useState4(0);
122
+ useEffect5(() => {
74
123
  const result = runTest({
75
124
  ...props,
76
125
  contextInstance: context
77
126
  });
78
- return result.index;
127
+ setIndex(result.index);
79
128
  }, [props, context]);
80
129
  if (typeof index !== "number") {
81
130
  return null;
82
131
  }
83
- return createElement2(Fragment2, void 0, (_a = slots == null ? void 0 : slots[CANVAS_TEST_SLOT]) == null ? void 0 : _a.items[index]);
132
+ return createElement2(Fragment4, void 0, (_a = slots == null ? void 0 : slots[CANVAS_TEST_SLOT]) == null ? void 0 : _a.items[index]);
84
133
  };
85
134
 
86
135
  // src/components/UniformScriptClient.tsx
87
136
  import {
88
137
  createCanvasChannel,
89
- IN_CONTEXT_EDITOR_QUERY_STRING_PARAM,
138
+ IN_CONTEXT_EDITOR_QUERY_STRING_PARAM as IN_CONTEXT_EDITOR_QUERY_STRING_PARAM2,
90
139
  isAllowedReferrer
91
140
  } from "@uniformdev/canvas";
92
- import { useRouter, useSearchParams } from "next/navigation";
93
- import { useEffect as useEffect3, useMemo as useMemo3 } from "react";
94
- import { Fragment as Fragment3, jsx } from "react/jsx-runtime";
141
+ import { useRouter, useSearchParams as useSearchParams3 } from "next/navigation";
142
+ import { useEffect as useEffect6, useMemo } from "react";
143
+ import { Fragment as Fragment5, jsx as jsx3 } from "react/jsx-runtime";
95
144
  var UniformScript = () => {
96
145
  const router = useRouter();
97
- const params = useSearchParams();
98
- const enabled = params.get(IN_CONTEXT_EDITOR_QUERY_STRING_PARAM) === "true";
99
- const channel = useMemo3(() => {
146
+ const params = useSearchParams3();
147
+ const enabled = params.get(IN_CONTEXT_EDITOR_QUERY_STRING_PARAM2) === "true";
148
+ const channel = useMemo(() => {
100
149
  var _a;
101
150
  if (typeof window === "undefined") {
102
151
  return;
@@ -107,7 +156,7 @@ var UniformScript = () => {
107
156
  });
108
157
  return instance;
109
158
  }, []);
110
- useEffect3(() => {
159
+ useEffect6(() => {
111
160
  if (!channel) {
112
161
  return;
113
162
  }
@@ -118,7 +167,7 @@ var UniformScript = () => {
118
167
  unsubscribeFromEditorUpdates();
119
168
  };
120
169
  }, [channel, router]);
121
- useEffect3(() => {
170
+ useEffect6(() => {
122
171
  if (typeof window === "undefined") {
123
172
  return;
124
173
  }
@@ -139,14 +188,14 @@ var UniformScript = () => {
139
188
  existing.remove();
140
189
  }
141
190
  }, [enabled]);
142
- return /* @__PURE__ */ jsx(Fragment3, {});
191
+ return /* @__PURE__ */ jsx3(Fragment5, {});
143
192
  };
144
193
 
145
194
  // src/hooks/useInitUniformContext.ts
146
- import { useEffect as useEffect4, useState as useState3 } from "react";
195
+ import { useEffect as useEffect7, useState as useState5 } from "react";
147
196
  var useInitUniformContext = (callback) => {
148
- const [called, setCalled] = useState3(false);
149
- useEffect4(() => {
197
+ const [called, setCalled] = useState5(false);
198
+ useEffect7(() => {
150
199
  if (typeof window === "undefined" || called || typeof window.__UNIFORM_CONTEXT__ !== "undefined") {
151
200
  return;
152
201
  }
@@ -157,6 +206,8 @@ var useInitUniformContext = (callback) => {
157
206
  }, [called, callback]);
158
207
  };
159
208
  export {
209
+ ClientContextUpdate,
210
+ ClientContextualEditingComponentWrapper,
160
211
  ContextUpdateTransferClient,
161
212
  PersonalizeClient,
162
213
  TestClient,
package/dist/index.js CHANGED
@@ -21,6 +21,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  // src/index.ts
22
22
  var src_exports = {};
23
23
  __export(src_exports, {
24
+ ClientContextUpdate: () => ClientContextUpdate,
25
+ ClientContextualEditingComponentWrapper: () => ClientContextualEditingComponentWrapper,
24
26
  ContextUpdateTransferClient: () => ContextUpdateTransferClient,
25
27
  PersonalizeClient: () => PersonalizeClient,
26
28
  TestClient: () => TestClient,
@@ -30,16 +32,38 @@ __export(src_exports, {
30
32
  });
31
33
  module.exports = __toCommonJS(src_exports);
32
34
 
33
- // src/components/ContextUpdateTransferClient.tsx
34
- var import_react2 = require("react");
35
+ // src/components/ClientContextualEditingComponentWrapper.tsx
36
+ var import_canvas = require("@uniformdev/canvas");
37
+ var import_core = require("@uniformdev/canvas-react/core");
38
+ var import_navigation = require("next/navigation");
39
+ var import_react = require("react");
40
+ var import_jsx_runtime = require("react/jsx-runtime");
41
+ var ClientContextualEditingComponentWrapper = (props) => {
42
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ClientContextualEditingComponentWrapperInner, { ...props }) });
43
+ };
44
+ var ClientContextualEditingComponentWrapperInner = ({
45
+ children,
46
+ ...rest
47
+ }) => {
48
+ const searchParams = (0, import_navigation.useSearchParams)();
49
+ const inContextMode = searchParams.get(import_canvas.IN_CONTEXT_EDITOR_QUERY_STRING_PARAM) === "true";
50
+ if (!inContextMode) {
51
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });
52
+ }
53
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.PureContextualEditingComponentWrapper, { ...rest, children });
54
+ };
55
+
56
+ // src/components/ClientContextUpdate.tsx
57
+ var import_navigation2 = require("next/navigation");
58
+ var import_react3 = require("react");
35
59
 
36
60
  // src/hooks/useUniformContext.ts
37
- var import_react = require("react");
61
+ var import_react2 = require("react");
38
62
  var useUniformContext = () => {
39
- const [context, setContext] = (0, import_react.useState)(
63
+ const [context, setContext] = (0, import_react2.useState)(
40
64
  typeof window !== "undefined" ? window.__UNIFORM_CONTEXT__ : void 0
41
65
  );
42
- (0, import_react.useEffect)(() => {
66
+ (0, import_react2.useEffect)(() => {
43
67
  const listener = () => {
44
68
  setContext(window.__UNIFORM_CONTEXT__);
45
69
  };
@@ -53,14 +77,37 @@ var useUniformContext = () => {
53
77
  };
54
78
  };
55
79
 
80
+ // src/components/ClientContextUpdate.tsx
81
+ var import_jsx_runtime2 = require("react/jsx-runtime");
82
+ var ClientContextUpdate = () => {
83
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react3.Suspense, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ClientContextUpdateInner, {}) });
84
+ };
85
+ var ClientContextUpdateInner = () => {
86
+ const params = (0, import_navigation2.useParams)();
87
+ const searchParams = (0, import_navigation2.useSearchParams)();
88
+ const { context } = useUniformContext();
89
+ (0, import_react3.useEffect)(() => {
90
+ if (!context || typeof window === "undefined") {
91
+ return;
92
+ }
93
+ const convertedSearchParams = Object.fromEntries(searchParams.entries());
94
+ context.update({
95
+ params,
96
+ searchParams: convertedSearchParams
97
+ });
98
+ }, [params, searchParams, context]);
99
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, {});
100
+ };
101
+
56
102
  // src/components/ContextUpdateTransferClient.tsx
103
+ var import_react4 = require("react");
57
104
  var ContextUpdateTransferClient = ({
58
105
  update,
59
106
  ts
60
107
  }) => {
61
108
  const { context } = useUniformContext();
62
- const [lastLogged, setLastLogged] = (0, import_react2.useState)(void 0);
63
- (0, import_react2.useEffect)(() => {
109
+ const [lastLogged, setLastLogged] = (0, import_react4.useState)(void 0);
110
+ (0, import_react4.useEffect)(() => {
64
111
  const shouldBeLogged = (!ts || lastLogged !== ts) && Object.keys(update).length > 0;
65
112
  const hasContext = typeof context !== "undefined";
66
113
  if (shouldBeLogged && hasContext) {
@@ -72,68 +119,70 @@ var ContextUpdateTransferClient = ({
72
119
  };
73
120
 
74
121
  // src/components/PersonalizeClient.ts
75
- var import_canvas = require("@uniformdev/canvas");
122
+ var import_canvas2 = require("@uniformdev/canvas");
76
123
  var import_canvas_next_rsc_shared = require("@uniformdev/canvas-next-rsc-shared");
77
- var import_react3 = require("react");
124
+ var import_react5 = require("react");
78
125
  var PersonalizeClient = (props) => {
79
126
  const { slots } = props;
80
127
  const { context } = useUniformContext();
81
- const indexes = (0, import_react3.useMemo)(() => {
128
+ const [indexesToShow, setIndexesToShow] = (0, import_react5.useState)(props.indexes);
129
+ (0, import_react5.useEffect)(() => {
82
130
  const result = (0, import_canvas_next_rsc_shared.runPersonalization)({
83
131
  ...props,
84
132
  contextInstance: context
85
133
  });
86
- return result.indexes;
134
+ setIndexesToShow(result.indexes);
87
135
  }, [props, context]);
88
- const slotsToShow = indexes.map((key) => {
136
+ const slotsToShow = indexesToShow.map((key) => {
89
137
  var _a;
90
- return (_a = slots[import_canvas.CANVAS_PERSONALIZE_SLOT]) == null ? void 0 : _a.items[key];
138
+ return (_a = slots[import_canvas2.CANVAS_PERSONALIZE_SLOT]) == null ? void 0 : _a.items[key];
91
139
  });
92
- return (0, import_react3.createElement)(import_react3.Fragment, void 0, slotsToShow);
140
+ return (0, import_react5.createElement)(import_react5.Fragment, void 0, slotsToShow);
93
141
  };
94
142
 
95
143
  // src/components/TestClient.ts
96
- var import_canvas2 = require("@uniformdev/canvas");
144
+ var import_canvas3 = require("@uniformdev/canvas");
97
145
  var import_canvas_next_rsc_shared2 = require("@uniformdev/canvas-next-rsc-shared");
98
- var import_react4 = require("react");
146
+ var import_react6 = require("react");
99
147
  var TestClient = (props) => {
100
148
  var _a;
101
149
  const { slots } = props;
102
150
  const { context } = useUniformContext();
103
- const index = (0, import_react4.useMemo)(() => {
151
+ const [index, setIndex] = (0, import_react6.useState)(0);
152
+ (0, import_react6.useEffect)(() => {
104
153
  const result = (0, import_canvas_next_rsc_shared2.runTest)({
105
154
  ...props,
106
155
  contextInstance: context
107
156
  });
108
- return result.index;
157
+ setIndex(result.index);
109
158
  }, [props, context]);
110
159
  if (typeof index !== "number") {
111
160
  return null;
112
161
  }
113
- return (0, import_react4.createElement)(import_react4.Fragment, void 0, (_a = slots == null ? void 0 : slots[import_canvas2.CANVAS_TEST_SLOT]) == null ? void 0 : _a.items[index]);
162
+ return (0, import_react6.createElement)(import_react6.Fragment, void 0, (_a = slots == null ? void 0 : slots[import_canvas3.CANVAS_TEST_SLOT]) == null ? void 0 : _a.items[index]);
114
163
  };
115
164
 
116
165
  // src/components/UniformScriptClient.tsx
117
- var import_canvas3 = require("@uniformdev/canvas");
118
- var import_navigation = require("next/navigation");
119
- var import_react5 = require("react");
120
- var import_jsx_runtime = require("react/jsx-runtime");
166
+ var import_canvas4 = require("@uniformdev/canvas");
167
+ var import_navigation3 = require("next/navigation");
168
+ var import_react7 = require("react");
169
+ var import_jsx_runtime3 = require("react/jsx-runtime");
121
170
  var UniformScript = () => {
122
- const router = (0, import_navigation.useRouter)();
123
- const params = (0, import_navigation.useSearchParams)();
124
- const enabled = params.get(import_canvas3.IN_CONTEXT_EDITOR_QUERY_STRING_PARAM) === "true";
125
- const channel = (0, import_react5.useMemo)(() => {
171
+ const router = (0, import_navigation3.useRouter)();
172
+ const params = (0, import_navigation3.useSearchParams)();
173
+ const enabled = params.get(import_canvas4.IN_CONTEXT_EDITOR_QUERY_STRING_PARAM) === "true";
174
+ const channel = (0, import_react7.useMemo)(() => {
126
175
  var _a;
127
176
  if (typeof window === "undefined") {
128
177
  return;
129
178
  }
130
- const instance = (0, import_canvas3.createCanvasChannel)({
179
+ const instance = (0, import_canvas4.createCanvasChannel)({
131
180
  broadcastTo: [(_a = window.opener) != null ? _a : window.top],
132
181
  listenTo: [window]
133
182
  });
134
183
  return instance;
135
184
  }, []);
136
- (0, import_react5.useEffect)(() => {
185
+ (0, import_react7.useEffect)(() => {
137
186
  if (!channel) {
138
187
  return;
139
188
  }
@@ -144,14 +193,14 @@ var UniformScript = () => {
144
193
  unsubscribeFromEditorUpdates();
145
194
  };
146
195
  }, [channel, router]);
147
- (0, import_react5.useEffect)(() => {
196
+ (0, import_react7.useEffect)(() => {
148
197
  if (typeof window === "undefined") {
149
198
  return;
150
199
  }
151
200
  const existing = document.getElementById("uniform-script");
152
201
  if (enabled) {
153
202
  if (!existing) {
154
- const textHost = (0, import_canvas3.isAllowedReferrer)(window.document.referrer) ? window.document.referrer : "https://uniform.app/";
203
+ const textHost = (0, import_canvas4.isAllowedReferrer)(window.document.referrer) ? window.document.referrer : "https://uniform.app/";
155
204
  const bundleHost = new URL(textHost);
156
205
  bundleHost.pathname = "/files/canvas-in-context-embed/index.js";
157
206
  const script = document.createElement("script");
@@ -165,14 +214,14 @@ var UniformScript = () => {
165
214
  existing.remove();
166
215
  }
167
216
  }, [enabled]);
168
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {});
217
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {});
169
218
  };
170
219
 
171
220
  // src/hooks/useInitUniformContext.ts
172
- var import_react6 = require("react");
221
+ var import_react8 = require("react");
173
222
  var useInitUniformContext = (callback) => {
174
- const [called, setCalled] = (0, import_react6.useState)(false);
175
- (0, import_react6.useEffect)(() => {
223
+ const [called, setCalled] = (0, import_react8.useState)(false);
224
+ (0, import_react8.useEffect)(() => {
176
225
  if (typeof window === "undefined" || called || typeof window.__UNIFORM_CONTEXT__ !== "undefined") {
177
226
  return;
178
227
  }
@@ -184,6 +233,8 @@ var useInitUniformContext = (callback) => {
184
233
  };
185
234
  // Annotate the CommonJS export names for ESM import in node:
186
235
  0 && (module.exports = {
236
+ ClientContextUpdate,
237
+ ClientContextualEditingComponentWrapper,
187
238
  ContextUpdateTransferClient,
188
239
  PersonalizeClient,
189
240
  TestClient,
package/dist/index.mjs CHANGED
@@ -1,7 +1,31 @@
1
1
  "use client";
2
2
 
3
- // src/components/ContextUpdateTransferClient.tsx
4
- import { useEffect as useEffect2, useState as useState2 } from "react";
3
+ // src/components/ClientContextualEditingComponentWrapper.tsx
4
+ import { IN_CONTEXT_EDITOR_QUERY_STRING_PARAM } from "@uniformdev/canvas";
5
+ import {
6
+ PureContextualEditingComponentWrapper
7
+ } from "@uniformdev/canvas-react/core";
8
+ import { useSearchParams } from "next/navigation";
9
+ import { Suspense } from "react";
10
+ import { Fragment, jsx } from "react/jsx-runtime";
11
+ var ClientContextualEditingComponentWrapper = (props) => {
12
+ return /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(ClientContextualEditingComponentWrapperInner, { ...props }) });
13
+ };
14
+ var ClientContextualEditingComponentWrapperInner = ({
15
+ children,
16
+ ...rest
17
+ }) => {
18
+ const searchParams = useSearchParams();
19
+ const inContextMode = searchParams.get(IN_CONTEXT_EDITOR_QUERY_STRING_PARAM) === "true";
20
+ if (!inContextMode) {
21
+ return /* @__PURE__ */ jsx(Fragment, { children });
22
+ }
23
+ return /* @__PURE__ */ jsx(PureContextualEditingComponentWrapper, { ...rest, children });
24
+ };
25
+
26
+ // src/components/ClientContextUpdate.tsx
27
+ import { useParams, useSearchParams as useSearchParams2 } from "next/navigation";
28
+ import { Suspense as Suspense2, useEffect as useEffect2 } from "react";
5
29
 
6
30
  // src/hooks/useUniformContext.ts
7
31
  import { useEffect, useState } from "react";
@@ -23,14 +47,37 @@ var useUniformContext = () => {
23
47
  };
24
48
  };
25
49
 
50
+ // src/components/ClientContextUpdate.tsx
51
+ import { Fragment as Fragment2, jsx as jsx2 } from "react/jsx-runtime";
52
+ var ClientContextUpdate = () => {
53
+ return /* @__PURE__ */ jsx2(Suspense2, { children: /* @__PURE__ */ jsx2(ClientContextUpdateInner, {}) });
54
+ };
55
+ var ClientContextUpdateInner = () => {
56
+ const params = useParams();
57
+ const searchParams = useSearchParams2();
58
+ const { context } = useUniformContext();
59
+ useEffect2(() => {
60
+ if (!context || typeof window === "undefined") {
61
+ return;
62
+ }
63
+ const convertedSearchParams = Object.fromEntries(searchParams.entries());
64
+ context.update({
65
+ params,
66
+ searchParams: convertedSearchParams
67
+ });
68
+ }, [params, searchParams, context]);
69
+ return /* @__PURE__ */ jsx2(Fragment2, {});
70
+ };
71
+
26
72
  // src/components/ContextUpdateTransferClient.tsx
73
+ import { useEffect as useEffect3, useState as useState2 } from "react";
27
74
  var ContextUpdateTransferClient = ({
28
75
  update,
29
76
  ts
30
77
  }) => {
31
78
  const { context } = useUniformContext();
32
79
  const [lastLogged, setLastLogged] = useState2(void 0);
33
- useEffect2(() => {
80
+ useEffect3(() => {
34
81
  const shouldBeLogged = (!ts || lastLogged !== ts) && Object.keys(update).length > 0;
35
82
  const hasContext = typeof context !== "undefined";
36
83
  if (shouldBeLogged && hasContext) {
@@ -44,59 +91,61 @@ var ContextUpdateTransferClient = ({
44
91
  // src/components/PersonalizeClient.ts
45
92
  import { CANVAS_PERSONALIZE_SLOT } from "@uniformdev/canvas";
46
93
  import { runPersonalization } from "@uniformdev/canvas-next-rsc-shared";
47
- import { createElement, Fragment, useMemo } from "react";
94
+ import { createElement, Fragment as Fragment3, useEffect as useEffect4, useState as useState3 } from "react";
48
95
  var PersonalizeClient = (props) => {
49
96
  const { slots } = props;
50
97
  const { context } = useUniformContext();
51
- const indexes = useMemo(() => {
98
+ const [indexesToShow, setIndexesToShow] = useState3(props.indexes);
99
+ useEffect4(() => {
52
100
  const result = runPersonalization({
53
101
  ...props,
54
102
  contextInstance: context
55
103
  });
56
- return result.indexes;
104
+ setIndexesToShow(result.indexes);
57
105
  }, [props, context]);
58
- const slotsToShow = indexes.map((key) => {
106
+ const slotsToShow = indexesToShow.map((key) => {
59
107
  var _a;
60
108
  return (_a = slots[CANVAS_PERSONALIZE_SLOT]) == null ? void 0 : _a.items[key];
61
109
  });
62
- return createElement(Fragment, void 0, slotsToShow);
110
+ return createElement(Fragment3, void 0, slotsToShow);
63
111
  };
64
112
 
65
113
  // src/components/TestClient.ts
66
114
  import { CANVAS_TEST_SLOT } from "@uniformdev/canvas";
67
115
  import { runTest } from "@uniformdev/canvas-next-rsc-shared";
68
- import { createElement as createElement2, Fragment as Fragment2, useMemo as useMemo2 } from "react";
116
+ import { createElement as createElement2, Fragment as Fragment4, useEffect as useEffect5, useState as useState4 } from "react";
69
117
  var TestClient = (props) => {
70
118
  var _a;
71
119
  const { slots } = props;
72
120
  const { context } = useUniformContext();
73
- const index = useMemo2(() => {
121
+ const [index, setIndex] = useState4(0);
122
+ useEffect5(() => {
74
123
  const result = runTest({
75
124
  ...props,
76
125
  contextInstance: context
77
126
  });
78
- return result.index;
127
+ setIndex(result.index);
79
128
  }, [props, context]);
80
129
  if (typeof index !== "number") {
81
130
  return null;
82
131
  }
83
- return createElement2(Fragment2, void 0, (_a = slots == null ? void 0 : slots[CANVAS_TEST_SLOT]) == null ? void 0 : _a.items[index]);
132
+ return createElement2(Fragment4, void 0, (_a = slots == null ? void 0 : slots[CANVAS_TEST_SLOT]) == null ? void 0 : _a.items[index]);
84
133
  };
85
134
 
86
135
  // src/components/UniformScriptClient.tsx
87
136
  import {
88
137
  createCanvasChannel,
89
- IN_CONTEXT_EDITOR_QUERY_STRING_PARAM,
138
+ IN_CONTEXT_EDITOR_QUERY_STRING_PARAM as IN_CONTEXT_EDITOR_QUERY_STRING_PARAM2,
90
139
  isAllowedReferrer
91
140
  } from "@uniformdev/canvas";
92
- import { useRouter, useSearchParams } from "next/navigation";
93
- import { useEffect as useEffect3, useMemo as useMemo3 } from "react";
94
- import { Fragment as Fragment3, jsx } from "react/jsx-runtime";
141
+ import { useRouter, useSearchParams as useSearchParams3 } from "next/navigation";
142
+ import { useEffect as useEffect6, useMemo } from "react";
143
+ import { Fragment as Fragment5, jsx as jsx3 } from "react/jsx-runtime";
95
144
  var UniformScript = () => {
96
145
  const router = useRouter();
97
- const params = useSearchParams();
98
- const enabled = params.get(IN_CONTEXT_EDITOR_QUERY_STRING_PARAM) === "true";
99
- const channel = useMemo3(() => {
146
+ const params = useSearchParams3();
147
+ const enabled = params.get(IN_CONTEXT_EDITOR_QUERY_STRING_PARAM2) === "true";
148
+ const channel = useMemo(() => {
100
149
  var _a;
101
150
  if (typeof window === "undefined") {
102
151
  return;
@@ -107,7 +156,7 @@ var UniformScript = () => {
107
156
  });
108
157
  return instance;
109
158
  }, []);
110
- useEffect3(() => {
159
+ useEffect6(() => {
111
160
  if (!channel) {
112
161
  return;
113
162
  }
@@ -118,7 +167,7 @@ var UniformScript = () => {
118
167
  unsubscribeFromEditorUpdates();
119
168
  };
120
169
  }, [channel, router]);
121
- useEffect3(() => {
170
+ useEffect6(() => {
122
171
  if (typeof window === "undefined") {
123
172
  return;
124
173
  }
@@ -139,14 +188,14 @@ var UniformScript = () => {
139
188
  existing.remove();
140
189
  }
141
190
  }, [enabled]);
142
- return /* @__PURE__ */ jsx(Fragment3, {});
191
+ return /* @__PURE__ */ jsx3(Fragment5, {});
143
192
  };
144
193
 
145
194
  // src/hooks/useInitUniformContext.ts
146
- import { useEffect as useEffect4, useState as useState3 } from "react";
195
+ import { useEffect as useEffect7, useState as useState5 } from "react";
147
196
  var useInitUniformContext = (callback) => {
148
- const [called, setCalled] = useState3(false);
149
- useEffect4(() => {
197
+ const [called, setCalled] = useState5(false);
198
+ useEffect7(() => {
150
199
  if (typeof window === "undefined" || called || typeof window.__UNIFORM_CONTEXT__ !== "undefined") {
151
200
  return;
152
201
  }
@@ -157,6 +206,8 @@ var useInitUniformContext = (callback) => {
157
206
  }, [called, callback]);
158
207
  };
159
208
  export {
209
+ ClientContextUpdate,
210
+ ClientContextualEditingComponentWrapper,
160
211
  ContextUpdateTransferClient,
161
212
  PersonalizeClient,
162
213
  TestClient,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/canvas-next-rsc-client",
3
- "version": "19.55.2-alpha.48+3b4e395a3",
3
+ "version": "19.55.2-alpha.52+12f0e007e",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
5
  "scripts": {
6
6
  "build": "tsup",
@@ -32,8 +32,9 @@
32
32
  "react-dom": "18.2.0"
33
33
  },
34
34
  "dependencies": {
35
- "@uniformdev/canvas": "19.55.2-alpha.48+3b4e395a3",
36
- "@uniformdev/canvas-next-rsc-shared": "^19.55.2-alpha.48+3b4e395a3"
35
+ "@uniformdev/canvas": "19.55.2-alpha.52+12f0e007e",
36
+ "@uniformdev/canvas-next-rsc-shared": "^19.55.2-alpha.52+12f0e007e",
37
+ "@uniformdev/canvas-react": "^19.55.2-alpha.52+12f0e007e"
37
38
  },
38
39
  "engines": {
39
40
  "node": ">=16.14.0"
@@ -46,5 +47,5 @@
46
47
  "publishConfig": {
47
48
  "access": "public"
48
49
  },
49
- "gitHead": "3b4e395a30a0c38676df3b030b30337e492d4cc7"
50
+ "gitHead": "12f0e007e1b47387c6422a52d7a8473f8bae0969"
50
51
  }