@uniformdev/canvas-next-rsc 19.79.1-alpha.11 → 19.79.1-alpha.18

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.js CHANGED
@@ -354,7 +354,7 @@ var getRouteClient = (options) => {
354
354
  } else {
355
355
  requestedUrl = new URL(req.url);
356
356
  }
357
- const tags = [];
357
+ const tags = ["route"];
358
358
  if (requestedUrl) {
359
359
  const pathKey = "path";
360
360
  const path = requestedUrl.searchParams.get(pathKey);
@@ -444,12 +444,12 @@ async function generateStaticParams() {
444
444
 
445
445
  // src/components/UniformComposition.ts
446
446
  var import_canvas7 = require("@uniformdev/canvas");
447
- var import_canvas_next_rsc_client4 = require("@uniformdev/canvas-next-rsc-client");
448
- var import_canvas_next_rsc_shared6 = require("@uniformdev/canvas-next-rsc-shared");
447
+ var import_canvas_next_rsc_client6 = require("@uniformdev/canvas-next-rsc-client");
448
+ var import_canvas_next_rsc_shared7 = require("@uniformdev/canvas-next-rsc-shared");
449
449
  var import_core = require("@uniformdev/canvas-react/core");
450
450
  var import_headers3 = require("next/headers");
451
451
  var import_navigation = require("next/navigation");
452
- var import_react6 = require("react");
452
+ var import_react8 = require("react");
453
453
 
454
454
  // src/context/createServerUniformContext.ts
455
455
  var import_canvas_next_rsc_shared2 = require("@uniformdev/canvas-next-rsc-shared");
@@ -481,11 +481,7 @@ var createServerUniformContextFromManifest = async (options) => {
481
481
  var import_canvas4 = require("@uniformdev/canvas");
482
482
  var import_canvas_next_rsc_shared3 = require("@uniformdev/canvas-next-rsc-shared");
483
483
  var import_redirect = require("@uniformdev/redirect");
484
- var retrieveRoute = async ({
485
- params,
486
- searchParams,
487
- skipPrefetch
488
- }) => {
484
+ var retrieveRoute = async ({ params, searchParams, skipPrefetch }, fetchOptions) => {
489
485
  if (!skipPrefetch) {
490
486
  void getManifest({
491
487
  searchParams
@@ -505,7 +501,8 @@ var retrieveRoute = async ({
505
501
  result = await retrieveRouteByPath({
506
502
  path: value,
507
503
  state,
508
- searchParams
504
+ searchParams,
505
+ fetchOptions
509
506
  });
510
507
  } catch (e) {
511
508
  console.warn(`Failed to retrieve route by path: ${value} with state ${state}`, e);
@@ -539,30 +536,39 @@ var retrieveRoute = async ({
539
536
  var retrieveRouteByPath = async ({
540
537
  path,
541
538
  state,
542
- searchParams
539
+ searchParams,
540
+ fetchOptions
543
541
  }) => {
544
542
  var _a;
545
543
  const client = getDefaultRouteClient({
546
544
  searchParams
547
545
  });
546
+ let queryPath = path;
547
+ if (searchParams && Object.keys(searchParams).length > 0) {
548
+ const helper = new URL((0, import_canvas_next_rsc_shared3.getBaseUrl)());
549
+ helper.pathname = path;
550
+ Object.entries(searchParams).forEach(([key, value]) => {
551
+ if (typeof value === "string") {
552
+ helper.searchParams.set(key, value);
553
+ }
554
+ });
555
+ if (helper.searchParams.size > 0) {
556
+ queryPath = `${helper.pathname}${helper.search}`;
557
+ }
558
+ }
548
559
  return await client.getRoute({
549
- path,
560
+ ...fetchOptions,
561
+ path: queryPath,
550
562
  state,
551
563
  withComponentIDs: true,
552
564
  withContentSourceMap: isOnVercelPreviewEnvironment() && ((_a = (0, import_canvas_next_rsc_shared3.getServerConfig)().experimental) == null ? void 0 : _a.vercelVisualEditing)
553
565
  });
554
566
  };
555
567
  var resolveRedirectHref = (resolveResult, path) => {
556
- let href;
557
- if (resolveResult.redirect.targetProjectMapNodeId) {
558
- const requestUrl = `${(0, import_canvas_next_rsc_shared3.getBaseUrl)()}${path}`;
559
- const expandedUrl = (0, import_redirect.getTargetVariableExpandedUrl)(requestUrl, resolveResult.redirect);
560
- const url = new URL(expandedUrl);
561
- href = url.pathname;
562
- } else {
563
- href = resolveResult.redirect.targetUrl;
564
- }
565
- return href;
568
+ const requestUrl = `${(0, import_canvas_next_rsc_shared3.getBaseUrl)()}${path}`;
569
+ const expandedUrl = (0, import_redirect.getTargetVariableExpandedUrl)(requestUrl, resolveResult.redirect);
570
+ const url = new URL(expandedUrl);
571
+ return url.pathname;
566
572
  };
567
573
  var determineState = ({ searchParams }) => {
568
574
  const draftMode2 = isDraftModeEnabled({ searchParams });
@@ -602,39 +608,56 @@ var PersonalizeClientWrapper = (props) => {
602
608
  // src/components/PersonalizeServer.ts
603
609
  var import_canvas5 = require("@uniformdev/canvas");
604
610
  var import_canvas_next_rsc_shared5 = require("@uniformdev/canvas-next-rsc-shared");
605
- var import_react4 = require("react");
611
+ var import_react5 = require("react");
612
+
613
+ // src/components/ContextPersonalizationTransfer.tsx
614
+ var import_canvas_next_rsc_client4 = require("@uniformdev/canvas-next-rsc-client");
615
+ var import_react4 = __toESM(require("react"));
616
+ var ContextPersonalizationTransfer = ({ event }) => {
617
+ return /* @__PURE__ */ import_react4.default.createElement(import_canvas_next_rsc_client4.ClientContextPersonalizationTransfer, { ts: (/* @__PURE__ */ new Date()).valueOf(), event });
618
+ };
619
+
620
+ // src/components/PersonalizeServer.ts
606
621
  var PersonalizeServer = (props) => {
607
622
  var _a;
608
- const { indexes } = (0, import_canvas_next_rsc_shared5.runPersonalization)(props);
623
+ const { indexes, event } = (0, import_canvas_next_rsc_shared5.runPersonalization)(props);
609
624
  const slot = (_a = props.slots) == null ? void 0 : _a[import_canvas5.CANVAS_PERSONALIZE_SLOT];
610
625
  const components = indexes.map((index) => {
611
626
  const component = slot.items[index];
612
627
  return component;
613
628
  });
614
- return (0, import_react4.createElement)(import_react4.Fragment, void 0, components);
629
+ const eventElement = (0, import_react5.createElement)(ContextPersonalizationTransfer, {
630
+ event
631
+ });
632
+ return (0, import_react5.createElement)(import_react5.Fragment, void 0, [...components, eventElement]);
615
633
  };
616
634
 
617
635
  // src/components/TestServer.ts
618
636
  var import_canvas6 = require("@uniformdev/canvas");
619
- var import_react5 = require("react");
620
- var TestServer = ({ test, component, contextInstance, slots }) => {
621
- var _a, _b, _c;
622
- const slot = ((_a = component.slots) == null ? void 0 : _a[import_canvas6.CANVAS_TEST_SLOT]) || [];
623
- const { result } = contextInstance.test({
624
- name: test,
625
- variations: slot.map((v, i) => {
626
- var _a2, _b2, _c2;
627
- const contextTag = (_b2 = (_a2 = v.parameters) == null ? void 0 : _a2[import_canvas6.CANVAS_TEST_VARIANT_PARAM]) == null ? void 0 : _b2.value;
628
- const id = (_c2 = contextTag == null ? void 0 : contextTag.id) != null ? _c2 : "testId" in v ? v.testId : `ab-${i}-${v.type}`;
629
- return {
630
- id,
631
- testDistribution: contextTag == null ? void 0 : contextTag.testDistribution,
632
- index: i
633
- };
634
- })
637
+ var import_canvas_next_rsc_shared6 = require("@uniformdev/canvas-next-rsc-shared");
638
+ var import_react7 = require("react");
639
+
640
+ // src/components/ContextTestTransfer.tsx
641
+ var import_canvas_next_rsc_client5 = require("@uniformdev/canvas-next-rsc-client");
642
+ var import_react6 = __toESM(require("react"));
643
+ var ContextTestTransfer = ({ event }) => {
644
+ return /* @__PURE__ */ import_react6.default.createElement(import_canvas_next_rsc_client5.ClientContextTestTransfer, { ts: (/* @__PURE__ */ new Date()).valueOf(), event });
645
+ };
646
+
647
+ // src/components/TestServer.ts
648
+ var TestServer = (props) => {
649
+ var _a, _b, _c, _d;
650
+ const { contextInstance, test } = props;
651
+ const isTestDefined = Boolean((_a = contextInstance.manifest.data.project.test) == null ? void 0 : _a[test]);
652
+ if (!isTestDefined && process.env.NODE_ENV !== "production") {
653
+ console.warn(`Test "${test}" is not defined in Uniform manifest.`);
654
+ }
655
+ const { index, event } = (0, import_canvas_next_rsc_shared6.runTest)(props);
656
+ const component = typeof index === "number" ? (_d = (_c = (_b = props.slots) == null ? void 0 : _b[import_canvas6.CANVAS_TEST_SLOT]) == null ? void 0 : _c.items[index]) != null ? _d : null : null;
657
+ const eventElement = (0, import_react7.createElement)(ContextTestTransfer, {
658
+ event
635
659
  });
636
- const components = result ? (_c = (_b = slots == null ? void 0 : slots[import_canvas6.CANVAS_TEST_SLOT]) == null ? void 0 : _b.items[result.index]) != null ? _c : null : null;
637
- return (0, import_react5.createElement)(import_react5.Fragment, void 0, components);
660
+ return (0, import_react7.createElement)(import_react7.Fragment, void 0, [component, eventElement]);
638
661
  };
639
662
 
640
663
  // src/components/UniformComposition.ts
@@ -653,7 +676,7 @@ var UniformComposition = async ({
653
676
  });
654
677
  searchParams = props.searchParams;
655
678
  }
656
- const { value: path } = (0, import_canvas_next_rsc_shared6.resolvePath)(props);
679
+ const { value: path } = (0, import_canvas_next_rsc_shared7.resolvePath)(props);
657
680
  if (!route || route.type === "notFound") {
658
681
  (0, import_navigation.notFound)();
659
682
  }
@@ -699,7 +722,7 @@ var UniformComposition = async ({
699
722
  if (props.mode === "server") {
700
723
  const headersValue = (0, import_headers3.headers)();
701
724
  const missingQuirkValue = "unknown";
702
- transfer = (0, import_react6.createElement)(ContextUpdateTransfer, {
725
+ transfer = (0, import_react8.createElement)(ContextUpdateTransfer, {
703
726
  serverContext,
704
727
  update: {
705
728
  params: props.params,
@@ -716,9 +739,9 @@ var UniformComposition = async ({
716
739
  }
717
740
  });
718
741
  } else if (props.mode === "static") {
719
- transfer = (0, import_react6.createElement)(ContextUpdateTrigger);
742
+ transfer = (0, import_react8.createElement)(ContextUpdateTrigger);
720
743
  }
721
- return (0, import_react6.createElement)(import_react6.Fragment, void 0, transfer, resolved);
744
+ return (0, import_react8.createElement)(import_react8.Fragment, void 0, transfer, resolved);
722
745
  };
723
746
  var isServerComponent = ({
724
747
  component,
@@ -726,10 +749,10 @@ var isServerComponent = ({
726
749
  }) => {
727
750
  var _a, _b;
728
751
  if (component.type === import_canvas7.CANVAS_PERSONALIZE_TYPE) {
729
- return serverContext && ((_a = (0, import_canvas_next_rsc_shared6.getServerConfig)().evaluation) == null ? void 0 : _a.personalization) !== "client";
752
+ return serverContext && ((_a = (0, import_canvas_next_rsc_shared7.getServerConfig)().evaluation) == null ? void 0 : _a.personalization) !== "client";
730
753
  }
731
754
  if (component.type === import_canvas7.CANVAS_TEST_TYPE) {
732
- return serverContext && ((_b = (0, import_canvas_next_rsc_shared6.getServerConfig)().evaluation) == null ? void 0 : _b.testing) !== "client";
755
+ return serverContext && ((_b = (0, import_canvas_next_rsc_shared7.getServerConfig)().evaluation) == null ? void 0 : _b.testing) !== "client";
733
756
  }
734
757
  };
735
758
  var resolveSystemComponent = ({
@@ -744,7 +767,7 @@ var resolveSystemComponent = ({
744
767
  return server ? PersonalizeServer : PersonalizeClientWrapper;
745
768
  }
746
769
  if (component.type === import_canvas7.CANVAS_TEST_TYPE) {
747
- return server ? TestServer : import_canvas_next_rsc_client4.TestClient;
770
+ return server ? TestServer : import_canvas_next_rsc_client6.TestClient;
748
771
  }
749
772
  return null;
750
773
  };
@@ -853,12 +876,14 @@ var resolveComponents = ({
853
876
  component,
854
877
  slots,
855
878
  contextInstance: isServer || includeContext ? serverContext : void 0,
856
- context: compositionContext
879
+ context: compositionContext,
880
+ slotName,
881
+ slotIndex: isRoot ? void 0 : componentIndex
857
882
  };
858
- const element = (0, import_react6.createElement)(resolvedComponent, componentProps);
883
+ const element = (0, import_react8.createElement)(resolvedComponent, componentProps);
859
884
  let tagElement = null;
860
885
  if (enrichmentTags == null ? void 0 : enrichmentTags.length) {
861
- tagElement = (0, import_react6.createElement)(ContextUpdateTransfer, {
886
+ tagElement = (0, import_react8.createElement)(ContextUpdateTransfer, {
862
887
  key: `${slotName}-${componentIndex}-tags`,
863
888
  update: {
864
889
  enrichments: enrichmentTags
@@ -872,11 +897,12 @@ var resolveComponents = ({
872
897
  if (tagElement) {
873
898
  elements.push(tagElement);
874
899
  }
875
- childNode = (0, import_react6.createElement)(
900
+ const isPlaceholder = (0, import_canvas7.isComponentPlaceholderId)(component == null ? void 0 : component._id);
901
+ childNode = (0, import_react8.createElement)(
876
902
  import_core.PureContextualEditingComponentWrapper,
877
903
  {
878
904
  key: `${slotName}-${componentIndex}-wrapper`,
879
- isPlaceholder: false,
905
+ isPlaceholder,
880
906
  parentComponent: parent,
881
907
  component,
882
908
  slotName,
@@ -891,8 +917,8 @@ var resolveComponents = ({
891
917
  if (tagElement) {
892
918
  elements.push(tagElement);
893
919
  }
894
- childNode = (0, import_react6.createElement)(
895
- import_canvas_next_rsc_client4.ClientContextualEditingComponentWrapper,
920
+ childNode = (0, import_react8.createElement)(
921
+ import_canvas_next_rsc_client6.ClientContextualEditingComponentWrapper,
896
922
  {
897
923
  key: `${slotName}-${componentIndex}-wrapper`,
898
924
  isPlaceholder: false,
@@ -912,8 +938,8 @@ var resolveComponents = ({
912
938
  }
913
939
  childNode = elements;
914
940
  }
915
- return (0, import_react6.createElement)(
916
- import_react6.Fragment,
941
+ return (0, import_react8.createElement)(
942
+ import_react8.Fragment,
917
943
  {
918
944
  key: !isRoot ? `${slotName}-${componentIndex}` : void 0
919
945
  },
@@ -924,10 +950,10 @@ var resolveComponents = ({
924
950
  };
925
951
 
926
952
  // src/components/UniformContext.tsx
927
- var import_canvas_next_rsc_client5 = require("@uniformdev/canvas-next-rsc-client");
928
- var import_canvas_next_rsc_shared7 = require("@uniformdev/canvas-next-rsc-shared");
929
- var import_react7 = require("react");
930
- var import_react8 = __toESM(require("react"));
953
+ var import_canvas_next_rsc_client7 = require("@uniformdev/canvas-next-rsc-client");
954
+ var import_canvas_next_rsc_shared8 = require("@uniformdev/canvas-next-rsc-shared");
955
+ var import_react9 = require("react");
956
+ var import_react10 = __toESM(require("react"));
931
957
  var UniformContext = async ({
932
958
  clientContextComponent,
933
959
  children
@@ -936,18 +962,18 @@ var UniformContext = async ({
936
962
  const manifest = await getManifest({
937
963
  searchParams: {}
938
964
  });
939
- const ContextComponent = clientContextComponent || import_canvas_next_rsc_client5.DefaultUniformClientContext;
940
- const disableDevTools = ((_a = (0, import_canvas_next_rsc_shared7.getServerConfig)().context) == null ? void 0 : _a.disableDevTools) || false;
941
- return /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, null, children, /* @__PURE__ */ import_react8.default.createElement(ContextComponent, { manifest, disableDevTools }), /* @__PURE__ */ import_react8.default.createElement(import_react7.Suspense, { fallback: /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, null) }, /* @__PURE__ */ import_react8.default.createElement(import_canvas_next_rsc_client5.UniformScript, null)));
965
+ const ContextComponent = clientContextComponent || import_canvas_next_rsc_client7.DefaultUniformClientContext;
966
+ const disableDevTools = ((_a = (0, import_canvas_next_rsc_shared8.getServerConfig)().context) == null ? void 0 : _a.disableDevTools) || false;
967
+ return /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, children, /* @__PURE__ */ import_react10.default.createElement(ContextComponent, { manifest, disableDevTools }), /* @__PURE__ */ import_react10.default.createElement(import_react9.Suspense, { fallback: /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null) }, /* @__PURE__ */ import_react10.default.createElement(import_canvas_next_rsc_client7.UniformScript, null)));
942
968
  };
943
969
 
944
970
  // src/components/UniformPlayground.tsx
945
971
  var import_canvas8 = require("@uniformdev/canvas");
946
972
  var import_navigation2 = require("next/navigation");
947
- var import_react9 = __toESM(require("react"));
973
+ var import_react11 = __toESM(require("react"));
948
974
  var UniformPlayground = async ({ searchParams, ...rest }) => {
949
975
  if (!isDraftModeEnabled({ searchParams })) {
950
- return /* @__PURE__ */ import_react9.default.createElement("div", null, /* @__PURE__ */ import_react9.default.createElement("h1", null, "Playground is only available in draft mode"));
976
+ return /* @__PURE__ */ import_react11.default.createElement("div", null, /* @__PURE__ */ import_react11.default.createElement("h1", null, "Playground is only available in draft mode"));
951
977
  }
952
978
  const id = searchParams["id"];
953
979
  if (!id) {
@@ -978,7 +1004,7 @@ var UniformPlayground = async ({ searchParams, ...rest }) => {
978
1004
  if (!composition) {
979
1005
  (0, import_navigation2.notFound)();
980
1006
  }
981
- return /* @__PURE__ */ import_react9.default.createElement(
1007
+ return /* @__PURE__ */ import_react11.default.createElement(
982
1008
  UniformComposition,
983
1009
  {
984
1010
  mode: "server",
package/dist/index.mjs CHANGED
@@ -299,7 +299,7 @@ var getRouteClient = (options) => {
299
299
  } else {
300
300
  requestedUrl = new URL(req.url);
301
301
  }
302
- const tags = [];
302
+ const tags = ["route"];
303
303
  if (requestedUrl) {
304
304
  const pathKey = "path";
305
305
  const path = requestedUrl.searchParams.get(pathKey);
@@ -394,6 +394,7 @@ import {
394
394
  CANVAS_ENRICHMENT_TAG_PARAM,
395
395
  CANVAS_PERSONALIZE_TYPE,
396
396
  CANVAS_TEST_TYPE,
397
+ isComponentPlaceholderId,
397
398
  walkNodeTree
398
399
  } from "@uniformdev/canvas";
399
400
  import { ClientContextualEditingComponentWrapper, TestClient } from "@uniformdev/canvas-next-rsc-client";
@@ -442,11 +443,7 @@ import {
442
443
  } from "@uniformdev/canvas";
443
444
  import { getBaseUrl, getServerConfig as getServerConfig2, resolvePath } from "@uniformdev/canvas-next-rsc-shared";
444
445
  import { getTargetVariableExpandedUrl } from "@uniformdev/redirect";
445
- var retrieveRoute = async ({
446
- params,
447
- searchParams,
448
- skipPrefetch
449
- }) => {
446
+ var retrieveRoute = async ({ params, searchParams, skipPrefetch }, fetchOptions) => {
450
447
  if (!skipPrefetch) {
451
448
  void getManifest({
452
449
  searchParams
@@ -466,7 +463,8 @@ var retrieveRoute = async ({
466
463
  result = await retrieveRouteByPath({
467
464
  path: value,
468
465
  state,
469
- searchParams
466
+ searchParams,
467
+ fetchOptions
470
468
  });
471
469
  } catch (e) {
472
470
  console.warn(`Failed to retrieve route by path: ${value} with state ${state}`, e);
@@ -500,30 +498,39 @@ var retrieveRoute = async ({
500
498
  var retrieveRouteByPath = async ({
501
499
  path,
502
500
  state,
503
- searchParams
501
+ searchParams,
502
+ fetchOptions
504
503
  }) => {
505
504
  var _a;
506
505
  const client = getDefaultRouteClient({
507
506
  searchParams
508
507
  });
508
+ let queryPath = path;
509
+ if (searchParams && Object.keys(searchParams).length > 0) {
510
+ const helper = new URL(getBaseUrl());
511
+ helper.pathname = path;
512
+ Object.entries(searchParams).forEach(([key, value]) => {
513
+ if (typeof value === "string") {
514
+ helper.searchParams.set(key, value);
515
+ }
516
+ });
517
+ if (helper.searchParams.size > 0) {
518
+ queryPath = `${helper.pathname}${helper.search}`;
519
+ }
520
+ }
509
521
  return await client.getRoute({
510
- path,
522
+ ...fetchOptions,
523
+ path: queryPath,
511
524
  state,
512
525
  withComponentIDs: true,
513
526
  withContentSourceMap: isOnVercelPreviewEnvironment() && ((_a = getServerConfig2().experimental) == null ? void 0 : _a.vercelVisualEditing)
514
527
  });
515
528
  };
516
529
  var resolveRedirectHref = (resolveResult, path) => {
517
- let href;
518
- if (resolveResult.redirect.targetProjectMapNodeId) {
519
- const requestUrl = `${getBaseUrl()}${path}`;
520
- const expandedUrl = getTargetVariableExpandedUrl(requestUrl, resolveResult.redirect);
521
- const url = new URL(expandedUrl);
522
- href = url.pathname;
523
- } else {
524
- href = resolveResult.redirect.targetUrl;
525
- }
526
- return href;
530
+ const requestUrl = `${getBaseUrl()}${path}`;
531
+ const expandedUrl = getTargetVariableExpandedUrl(requestUrl, resolveResult.redirect);
532
+ const url = new URL(expandedUrl);
533
+ return url.pathname;
527
534
  };
528
535
  var determineState = ({ searchParams }) => {
529
536
  const draftMode2 = isDraftModeEnabled({ searchParams });
@@ -564,38 +571,57 @@ var PersonalizeClientWrapper = (props) => {
564
571
  import { CANVAS_PERSONALIZE_SLOT } from "@uniformdev/canvas";
565
572
  import { runPersonalization as runPersonalization2 } from "@uniformdev/canvas-next-rsc-shared";
566
573
  import { createElement, Fragment } from "react";
574
+
575
+ // src/components/ContextPersonalizationTransfer.tsx
576
+ import { ClientContextPersonalizationTransfer } from "@uniformdev/canvas-next-rsc-client";
577
+ import React4 from "react";
578
+ var ContextPersonalizationTransfer = ({ event }) => {
579
+ return /* @__PURE__ */ React4.createElement(ClientContextPersonalizationTransfer, { ts: (/* @__PURE__ */ new Date()).valueOf(), event });
580
+ };
581
+
582
+ // src/components/PersonalizeServer.ts
567
583
  var PersonalizeServer = (props) => {
568
584
  var _a;
569
- const { indexes } = runPersonalization2(props);
585
+ const { indexes, event } = runPersonalization2(props);
570
586
  const slot = (_a = props.slots) == null ? void 0 : _a[CANVAS_PERSONALIZE_SLOT];
571
587
  const components = indexes.map((index) => {
572
588
  const component = slot.items[index];
573
589
  return component;
574
590
  });
575
- return createElement(Fragment, void 0, components);
591
+ const eventElement = createElement(ContextPersonalizationTransfer, {
592
+ event
593
+ });
594
+ return createElement(Fragment, void 0, [...components, eventElement]);
576
595
  };
577
596
 
578
597
  // src/components/TestServer.ts
579
- import { CANVAS_TEST_SLOT, CANVAS_TEST_VARIANT_PARAM } from "@uniformdev/canvas";
598
+ import { CANVAS_TEST_SLOT } from "@uniformdev/canvas";
599
+ import {
600
+ runTest
601
+ } from "@uniformdev/canvas-next-rsc-shared";
580
602
  import { createElement as createElement2, Fragment as Fragment2 } from "react";
581
- var TestServer = ({ test, component, contextInstance, slots }) => {
582
- var _a, _b, _c;
583
- const slot = ((_a = component.slots) == null ? void 0 : _a[CANVAS_TEST_SLOT]) || [];
584
- const { result } = contextInstance.test({
585
- name: test,
586
- variations: slot.map((v, i) => {
587
- var _a2, _b2, _c2;
588
- const contextTag = (_b2 = (_a2 = v.parameters) == null ? void 0 : _a2[CANVAS_TEST_VARIANT_PARAM]) == null ? void 0 : _b2.value;
589
- const id = (_c2 = contextTag == null ? void 0 : contextTag.id) != null ? _c2 : "testId" in v ? v.testId : `ab-${i}-${v.type}`;
590
- return {
591
- id,
592
- testDistribution: contextTag == null ? void 0 : contextTag.testDistribution,
593
- index: i
594
- };
595
- })
603
+
604
+ // src/components/ContextTestTransfer.tsx
605
+ import { ClientContextTestTransfer } from "@uniformdev/canvas-next-rsc-client";
606
+ import React5 from "react";
607
+ var ContextTestTransfer = ({ event }) => {
608
+ return /* @__PURE__ */ React5.createElement(ClientContextTestTransfer, { ts: (/* @__PURE__ */ new Date()).valueOf(), event });
609
+ };
610
+
611
+ // src/components/TestServer.ts
612
+ var TestServer = (props) => {
613
+ var _a, _b, _c, _d;
614
+ const { contextInstance, test } = props;
615
+ const isTestDefined = Boolean((_a = contextInstance.manifest.data.project.test) == null ? void 0 : _a[test]);
616
+ if (!isTestDefined && process.env.NODE_ENV !== "production") {
617
+ console.warn(`Test "${test}" is not defined in Uniform manifest.`);
618
+ }
619
+ const { index, event } = runTest(props);
620
+ const component = typeof index === "number" ? (_d = (_c = (_b = props.slots) == null ? void 0 : _b[CANVAS_TEST_SLOT]) == null ? void 0 : _c.items[index]) != null ? _d : null : null;
621
+ const eventElement = createElement2(ContextTestTransfer, {
622
+ event
596
623
  });
597
- const components = result ? (_c = (_b = slots == null ? void 0 : slots[CANVAS_TEST_SLOT]) == null ? void 0 : _b.items[result.index]) != null ? _c : null : null;
598
- return createElement2(Fragment2, void 0, components);
624
+ return createElement2(Fragment2, void 0, [component, eventElement]);
599
625
  };
600
626
 
601
627
  // src/components/UniformComposition.ts
@@ -814,7 +840,9 @@ var resolveComponents = ({
814
840
  component,
815
841
  slots,
816
842
  contextInstance: isServer || includeContext ? serverContext : void 0,
817
- context: compositionContext
843
+ context: compositionContext,
844
+ slotName,
845
+ slotIndex: isRoot ? void 0 : componentIndex
818
846
  };
819
847
  const element = createElement3(resolvedComponent, componentProps);
820
848
  let tagElement = null;
@@ -833,11 +861,12 @@ var resolveComponents = ({
833
861
  if (tagElement) {
834
862
  elements.push(tagElement);
835
863
  }
864
+ const isPlaceholder = isComponentPlaceholderId(component == null ? void 0 : component._id);
836
865
  childNode = createElement3(
837
866
  PureContextualEditingComponentWrapper,
838
867
  {
839
868
  key: `${slotName}-${componentIndex}-wrapper`,
840
- isPlaceholder: false,
869
+ isPlaceholder,
841
870
  parentComponent: parent,
842
871
  component,
843
872
  slotName,
@@ -891,7 +920,7 @@ import {
891
920
  } from "@uniformdev/canvas-next-rsc-client";
892
921
  import { getServerConfig as getServerConfig4 } from "@uniformdev/canvas-next-rsc-shared";
893
922
  import { Suspense } from "react";
894
- import React4 from "react";
923
+ import React6 from "react";
895
924
  var UniformContext = async ({
896
925
  clientContextComponent,
897
926
  children
@@ -902,16 +931,16 @@ var UniformContext = async ({
902
931
  });
903
932
  const ContextComponent = clientContextComponent || DefaultUniformClientContext;
904
933
  const disableDevTools = ((_a = getServerConfig4().context) == null ? void 0 : _a.disableDevTools) || false;
905
- return /* @__PURE__ */ React4.createElement(React4.Fragment, null, children, /* @__PURE__ */ React4.createElement(ContextComponent, { manifest, disableDevTools }), /* @__PURE__ */ React4.createElement(Suspense, { fallback: /* @__PURE__ */ React4.createElement(React4.Fragment, null) }, /* @__PURE__ */ React4.createElement(UniformScript, null)));
934
+ return /* @__PURE__ */ React6.createElement(React6.Fragment, null, children, /* @__PURE__ */ React6.createElement(ContextComponent, { manifest, disableDevTools }), /* @__PURE__ */ React6.createElement(Suspense, { fallback: /* @__PURE__ */ React6.createElement(React6.Fragment, null) }, /* @__PURE__ */ React6.createElement(UniformScript, null)));
906
935
  };
907
936
 
908
937
  // src/components/UniformPlayground.tsx
909
938
  import { CANVAS_DRAFT_STATE as CANVAS_DRAFT_STATE3, CANVAS_EDITOR_STATE as CANVAS_EDITOR_STATE3 } from "@uniformdev/canvas";
910
939
  import { notFound as notFound2 } from "next/navigation";
911
- import React5 from "react";
940
+ import React7 from "react";
912
941
  var UniformPlayground = async ({ searchParams, ...rest }) => {
913
942
  if (!isDraftModeEnabled({ searchParams })) {
914
- return /* @__PURE__ */ React5.createElement("div", null, /* @__PURE__ */ React5.createElement("h1", null, "Playground is only available in draft mode"));
943
+ return /* @__PURE__ */ React7.createElement("div", null, /* @__PURE__ */ React7.createElement("h1", null, "Playground is only available in draft mode"));
915
944
  }
916
945
  const id = searchParams["id"];
917
946
  if (!id) {
@@ -942,7 +971,7 @@ var UniformPlayground = async ({ searchParams, ...rest }) => {
942
971
  if (!composition) {
943
972
  notFound2();
944
973
  }
945
- return /* @__PURE__ */ React5.createElement(
974
+ return /* @__PURE__ */ React7.createElement(
946
975
  UniformComposition,
947
976
  {
948
977
  mode: "server",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/canvas-next-rsc",
3
- "version": "19.79.1-alpha.11+4547ef846",
3
+ "version": "19.79.1-alpha.18+12234b9350",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
5
  "scripts": {
6
6
  "build": "tsup",
@@ -53,23 +53,23 @@
53
53
  "/dist"
54
54
  ],
55
55
  "devDependencies": {
56
- "@types/node": "^18.0.0",
57
- "@types/react": "^18.2.20",
58
- "eslint": "^8.11.0",
56
+ "@types/node": "^20.0.0",
57
+ "@types/react": "18.2.40",
58
+ "eslint": "8.54.0",
59
59
  "next": "^13.4.12",
60
60
  "react": "18.2.0",
61
61
  "react-dom": "18.2.0"
62
62
  },
63
63
  "dependencies": {
64
- "@uniformdev/canvas": "19.79.1-alpha.11+4547ef846",
65
- "@uniformdev/canvas-next-rsc-client": "^19.79.1-alpha.11+4547ef846",
66
- "@uniformdev/canvas-next-rsc-shared": "^19.79.1-alpha.11+4547ef846",
67
- "@uniformdev/canvas-react": "19.79.1-alpha.11+4547ef846",
68
- "@uniformdev/context": "19.79.1-alpha.11+4547ef846",
69
- "@uniformdev/project-map": "19.79.1-alpha.11+4547ef846",
70
- "@uniformdev/redirect": "19.79.1-alpha.11+4547ef846",
71
- "@uniformdev/richtext": "19.79.1-alpha.11+4547ef846",
72
- "@uniformdev/webhooks": "19.79.1-alpha.11+4547ef846",
64
+ "@uniformdev/canvas": "19.79.1-alpha.18+12234b9350",
65
+ "@uniformdev/canvas-next-rsc-client": "^19.79.1-alpha.18+12234b9350",
66
+ "@uniformdev/canvas-next-rsc-shared": "^19.79.1-alpha.18+12234b9350",
67
+ "@uniformdev/canvas-react": "19.79.1-alpha.18+12234b9350",
68
+ "@uniformdev/context": "19.79.1-alpha.18+12234b9350",
69
+ "@uniformdev/project-map": "19.79.1-alpha.18+12234b9350",
70
+ "@uniformdev/redirect": "19.79.1-alpha.18+12234b9350",
71
+ "@uniformdev/richtext": "19.79.1-alpha.18+12234b9350",
72
+ "@uniformdev/webhooks": "19.79.1-alpha.18+12234b9350",
73
73
  "@vercel/edge-config": "^0.4.0",
74
74
  "encoding": "^0.1.13",
75
75
  "server-only": "^0.0.1",
@@ -86,5 +86,5 @@
86
86
  "publishConfig": {
87
87
  "access": "public"
88
88
  },
89
- "gitHead": "4547ef8469f21f7f2341bcd87203372c4646bc08"
89
+ "gitHead": "12234b9350cfa4209bc7e242701d2dc535ece19e"
90
90
  }