@uniformdev/canvas-react 19.40.0 → 19.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -324,6 +324,10 @@ type CustomSlotChildRenderFunc = (options: {
324
324
  component: ComponentInstance;
325
325
  key: Key;
326
326
  }) => JSX.Element;
327
+ type UniformSlotWrapperComponentProps = {
328
+ items: ReactNode[];
329
+ slotName: string;
330
+ };
327
331
  type UniformSlotProps<TSlotNames extends string> = {
328
332
  /** Name of the slot to render */
329
333
  name: TSlotNames;
@@ -332,8 +336,17 @@ type UniformSlotProps<TSlotNames extends string> = {
332
336
  * If not specified, the resolveRenderer function on the nearest Layout will be used, if any.
333
337
  */
334
338
  resolveRenderer?: RenderComponentResolver;
335
- /** Optional render props enables wrapping all child components in the slot with some markup */
339
+ /**
340
+ * Optional render props enables wrapping all child components in the slot with some markup
341
+ *
342
+ * @deprecated Use `wrapperComponent` instead and define wrapping component for slot children inside.
343
+ */
336
344
  children?: CustomSlotChildRenderFunc;
345
+ /**
346
+ * Optional wrapper component around list of slot items that allows to control
347
+ * exactly how to render slot items, otherwise React.Fragment is being used
348
+ */
349
+ wrapperComponent?: React$1.ComponentType<UniformSlotWrapperComponentProps>;
337
350
  /**
338
351
  * Optional ReactNode to use as a placeholder in Canvas editor when the slot is empty.
339
352
  * The node is used to render a placeholder with realistic dimensions and it's never shown to users.
@@ -342,7 +355,7 @@ type UniformSlotProps<TSlotNames extends string> = {
342
355
  emptyPlaceholder?: React$1.ReactNode;
343
356
  };
344
357
  /** Renders a named Slot within a Composition. */
345
- declare function UniformSlot<TSlotNames extends string = string>({ name, resolveRenderer, children, emptyPlaceholder, }: UniformSlotProps<TSlotNames>): JSX.Element | null;
358
+ declare function UniformSlot<TSlotNames extends string = string>({ name, resolveRenderer, children, emptyPlaceholder, wrapperComponent, }: UniformSlotProps<TSlotNames>): JSX.Element | null;
346
359
 
347
360
  /**
348
361
  * Returns the attributes needed to annotate a Uniform parameter for inline editing.
@@ -391,4 +404,4 @@ declare const createComponentStoreResolver: (options: {
391
404
  defaultComponent?: React$1.ComponentType<ComponentProps<any>>;
392
405
  }) => RenderComponentResolver;
393
406
 
394
- export { ComponentProps, ComponentStore, DefaultNotImplementedComponent, NOT_IMPLEMENTED_COMPONENT, RenderComponentResolver, RenderRichTextComponentResolver, RichTextComponentProps, RichTextRendererComponent, SystemRenderConfig, SystemRenderFunction, UniformComponent, UniformComponentContextValue, UniformComponentProps, UniformComposition, UniformCompositionProps, UniformRichText, UniformRichTextNode, UniformRichTextNodeProps, UniformRichTextProps, UniformSlot, UniformSlotProps, UniformText, UniformTextProps, UseCompositionEventEffectOptions, UseUniformContextualEditingProps, UseUniformContextualEditingStateProps, componentStore, componentStoreResolver, createComponentStore, createComponentStoreResolver, getParameterAttributes, registerUniformComponent, useCompositionEventEffect, useUniformContextualEditing, useUniformContextualEditingState, useUniformCurrentComponent, useUniformCurrentComposition };
407
+ export { ComponentProps, ComponentStore, CustomSlotChildRenderFunc, DefaultNotImplementedComponent, NOT_IMPLEMENTED_COMPONENT, RenderComponentResolver, RenderRichTextComponentResolver, RichTextComponentProps, RichTextRendererComponent, SystemRenderConfig, SystemRenderFunction, UniformComponent, UniformComponentContextValue, UniformComponentProps, UniformComposition, UniformCompositionProps, UniformRichText, UniformRichTextNode, UniformRichTextNodeProps, UniformRichTextProps, UniformSlot, UniformSlotProps, UniformSlotWrapperComponentProps, UniformText, UniformTextProps, UseCompositionEventEffectOptions, UseUniformContextualEditingProps, UseUniformContextualEditingStateProps, componentStore, componentStoreResolver, createComponentStore, createComponentStoreResolver, getParameterAttributes, registerUniformComponent, useCompositionEventEffect, useUniformContextualEditing, useUniformContextualEditingState, useUniformCurrentComponent, useUniformCurrentComposition };
package/dist/index.d.ts CHANGED
@@ -324,6 +324,10 @@ type CustomSlotChildRenderFunc = (options: {
324
324
  component: ComponentInstance;
325
325
  key: Key;
326
326
  }) => JSX.Element;
327
+ type UniformSlotWrapperComponentProps = {
328
+ items: ReactNode[];
329
+ slotName: string;
330
+ };
327
331
  type UniformSlotProps<TSlotNames extends string> = {
328
332
  /** Name of the slot to render */
329
333
  name: TSlotNames;
@@ -332,8 +336,17 @@ type UniformSlotProps<TSlotNames extends string> = {
332
336
  * If not specified, the resolveRenderer function on the nearest Layout will be used, if any.
333
337
  */
334
338
  resolveRenderer?: RenderComponentResolver;
335
- /** Optional render props enables wrapping all child components in the slot with some markup */
339
+ /**
340
+ * Optional render props enables wrapping all child components in the slot with some markup
341
+ *
342
+ * @deprecated Use `wrapperComponent` instead and define wrapping component for slot children inside.
343
+ */
336
344
  children?: CustomSlotChildRenderFunc;
345
+ /**
346
+ * Optional wrapper component around list of slot items that allows to control
347
+ * exactly how to render slot items, otherwise React.Fragment is being used
348
+ */
349
+ wrapperComponent?: React$1.ComponentType<UniformSlotWrapperComponentProps>;
337
350
  /**
338
351
  * Optional ReactNode to use as a placeholder in Canvas editor when the slot is empty.
339
352
  * The node is used to render a placeholder with realistic dimensions and it's never shown to users.
@@ -342,7 +355,7 @@ type UniformSlotProps<TSlotNames extends string> = {
342
355
  emptyPlaceholder?: React$1.ReactNode;
343
356
  };
344
357
  /** Renders a named Slot within a Composition. */
345
- declare function UniformSlot<TSlotNames extends string = string>({ name, resolveRenderer, children, emptyPlaceholder, }: UniformSlotProps<TSlotNames>): JSX.Element | null;
358
+ declare function UniformSlot<TSlotNames extends string = string>({ name, resolveRenderer, children, emptyPlaceholder, wrapperComponent, }: UniformSlotProps<TSlotNames>): JSX.Element | null;
346
359
 
347
360
  /**
348
361
  * Returns the attributes needed to annotate a Uniform parameter for inline editing.
@@ -391,4 +404,4 @@ declare const createComponentStoreResolver: (options: {
391
404
  defaultComponent?: React$1.ComponentType<ComponentProps<any>>;
392
405
  }) => RenderComponentResolver;
393
406
 
394
- export { ComponentProps, ComponentStore, DefaultNotImplementedComponent, NOT_IMPLEMENTED_COMPONENT, RenderComponentResolver, RenderRichTextComponentResolver, RichTextComponentProps, RichTextRendererComponent, SystemRenderConfig, SystemRenderFunction, UniformComponent, UniformComponentContextValue, UniformComponentProps, UniformComposition, UniformCompositionProps, UniformRichText, UniformRichTextNode, UniformRichTextNodeProps, UniformRichTextProps, UniformSlot, UniformSlotProps, UniformText, UniformTextProps, UseCompositionEventEffectOptions, UseUniformContextualEditingProps, UseUniformContextualEditingStateProps, componentStore, componentStoreResolver, createComponentStore, createComponentStoreResolver, getParameterAttributes, registerUniformComponent, useCompositionEventEffect, useUniformContextualEditing, useUniformContextualEditingState, useUniformCurrentComponent, useUniformCurrentComposition };
407
+ export { ComponentProps, ComponentStore, CustomSlotChildRenderFunc, DefaultNotImplementedComponent, NOT_IMPLEMENTED_COMPONENT, RenderComponentResolver, RenderRichTextComponentResolver, RichTextComponentProps, RichTextRendererComponent, SystemRenderConfig, SystemRenderFunction, UniformComponent, UniformComponentContextValue, UniformComponentProps, UniformComposition, UniformCompositionProps, UniformRichText, UniformRichTextNode, UniformRichTextNodeProps, UniformRichTextProps, UniformSlot, UniformSlotProps, UniformSlotWrapperComponentProps, UniformText, UniformTextProps, UseCompositionEventEffectOptions, UseUniformContextualEditingProps, UseUniformContextualEditingStateProps, componentStore, componentStoreResolver, createComponentStore, createComponentStoreResolver, getParameterAttributes, registerUniformComponent, useCompositionEventEffect, useUniformContextualEditing, useUniformContextualEditingState, useUniformCurrentComponent, useUniformCurrentComposition };
package/dist/index.esm.js CHANGED
@@ -356,7 +356,8 @@ function UniformSlot({
356
356
  name,
357
357
  resolveRenderer,
358
358
  children,
359
- emptyPlaceholder
359
+ emptyPlaceholder,
360
+ wrapperComponent
360
361
  }) {
361
362
  var _a;
362
363
  const { data: parentData, resolveRenderer: parentResolveRenderer } = useUniformCurrentComponent();
@@ -374,12 +375,10 @@ function UniformSlot({
374
375
  return null;
375
376
  }
376
377
  const resolver = resolveRenderer != null ? resolveRenderer : parentResolveRenderer;
377
- const systemResolver = defaultSystemComponentResolver;
378
378
  const finalChildren = slot.map((component, index) => {
379
379
  const child = renderComponent({
380
380
  component,
381
381
  resolveRenderer: resolver,
382
- resolveSystem: systemResolver,
383
382
  key: `inner-${index}`,
384
383
  indexInSlot: index,
385
384
  slotName: name,
@@ -390,12 +389,15 @@ function UniformSlot({
390
389
  const elements = children ? children({ child, component, key: `wrapped-inner-${index}` }) : child;
391
390
  return React5.createElement(React5.Fragment, { key: index }, elements);
392
391
  });
393
- return React5.createElement(React5.Fragment, void 0, finalChildren);
392
+ if (!wrapperComponent) {
393
+ return React5.createElement(React5.Fragment, void 0, finalChildren);
394
+ }
395
+ const Wrapper = wrapperComponent;
396
+ return /* @__PURE__ */ React5.createElement(Wrapper, { items: finalChildren, slotName: name });
394
397
  }
395
398
  function renderComponent({
396
399
  component,
397
400
  resolveRenderer,
398
- resolveSystem,
399
401
  key = 0,
400
402
  indexInSlot,
401
403
  slotName,
@@ -405,7 +407,7 @@ function renderComponent({
405
407
  }) {
406
408
  const RenderComponent = resolveRenderer == null ? void 0 : resolveRenderer(component);
407
409
  if (component.type === CANVAS_TEST_TYPE) {
408
- const testComponent = resolveSystem.test(
410
+ const testComponent = defaultSystemComponentResolver.test(
409
411
  component,
410
412
  key,
411
413
  (variantComponent, key2) => {
@@ -413,7 +415,6 @@ function renderComponent({
413
415
  return renderComponent({
414
416
  component: variantComponent,
415
417
  resolveRenderer,
416
- resolveSystem,
417
418
  key: key2,
418
419
  parentComponent: component,
419
420
  slotName: CANVAS_TEST_SLOT,
@@ -437,7 +438,7 @@ function renderComponent({
437
438
  testComponent
438
439
  );
439
440
  } else if (component.type === CANVAS_PERSONALIZE_TYPE) {
440
- const personalizationComponent = resolveSystem.personalization(
441
+ const personalizationComponent = defaultSystemComponentResolver.personalization(
441
442
  component,
442
443
  key,
443
444
  (variantComponent, key2) => {
@@ -445,7 +446,6 @@ function renderComponent({
445
446
  return renderComponent({
446
447
  component: variantComponent,
447
448
  resolveRenderer,
448
- resolveSystem,
449
449
  key: key2,
450
450
  parentComponent: component,
451
451
  slotName: CANVAS_PERSONALIZE_SLOT,
package/dist/index.js CHANGED
@@ -388,7 +388,8 @@ function UniformSlot({
388
388
  name,
389
389
  resolveRenderer,
390
390
  children,
391
- emptyPlaceholder
391
+ emptyPlaceholder,
392
+ wrapperComponent
392
393
  }) {
393
394
  var _a;
394
395
  const { data: parentData, resolveRenderer: parentResolveRenderer } = useUniformCurrentComponent();
@@ -406,12 +407,10 @@ function UniformSlot({
406
407
  return null;
407
408
  }
408
409
  const resolver = resolveRenderer != null ? resolveRenderer : parentResolveRenderer;
409
- const systemResolver = defaultSystemComponentResolver;
410
410
  const finalChildren = slot.map((component, index) => {
411
411
  const child = renderComponent({
412
412
  component,
413
413
  resolveRenderer: resolver,
414
- resolveSystem: systemResolver,
415
414
  key: `inner-${index}`,
416
415
  indexInSlot: index,
417
416
  slotName: name,
@@ -422,12 +421,15 @@ function UniformSlot({
422
421
  const elements = children ? children({ child, component, key: `wrapped-inner-${index}` }) : child;
423
422
  return import_react5.default.createElement(import_react5.default.Fragment, { key: index }, elements);
424
423
  });
425
- return import_react5.default.createElement(import_react5.default.Fragment, void 0, finalChildren);
424
+ if (!wrapperComponent) {
425
+ return import_react5.default.createElement(import_react5.default.Fragment, void 0, finalChildren);
426
+ }
427
+ const Wrapper = wrapperComponent;
428
+ return /* @__PURE__ */ import_react5.default.createElement(Wrapper, { items: finalChildren, slotName: name });
426
429
  }
427
430
  function renderComponent({
428
431
  component,
429
432
  resolveRenderer,
430
- resolveSystem,
431
433
  key = 0,
432
434
  indexInSlot,
433
435
  slotName,
@@ -437,7 +439,7 @@ function renderComponent({
437
439
  }) {
438
440
  const RenderComponent = resolveRenderer == null ? void 0 : resolveRenderer(component);
439
441
  if (component.type === import_canvas5.CANVAS_TEST_TYPE) {
440
- const testComponent = resolveSystem.test(
442
+ const testComponent = defaultSystemComponentResolver.test(
441
443
  component,
442
444
  key,
443
445
  (variantComponent, key2) => {
@@ -445,7 +447,6 @@ function renderComponent({
445
447
  return renderComponent({
446
448
  component: variantComponent,
447
449
  resolveRenderer,
448
- resolveSystem,
449
450
  key: key2,
450
451
  parentComponent: component,
451
452
  slotName: import_canvas5.CANVAS_TEST_SLOT,
@@ -469,7 +470,7 @@ function renderComponent({
469
470
  testComponent
470
471
  );
471
472
  } else if (component.type === import_canvas5.CANVAS_PERSONALIZE_TYPE) {
472
- const personalizationComponent = resolveSystem.personalization(
473
+ const personalizationComponent = defaultSystemComponentResolver.personalization(
473
474
  component,
474
475
  key,
475
476
  (variantComponent, key2) => {
@@ -477,7 +478,6 @@ function renderComponent({
477
478
  return renderComponent({
478
479
  component: variantComponent,
479
480
  resolveRenderer,
480
- resolveSystem,
481
481
  key: key2,
482
482
  parentComponent: component,
483
483
  slotName: import_canvas5.CANVAS_PERSONALIZE_SLOT,
package/dist/index.mjs CHANGED
@@ -356,7 +356,8 @@ function UniformSlot({
356
356
  name,
357
357
  resolveRenderer,
358
358
  children,
359
- emptyPlaceholder
359
+ emptyPlaceholder,
360
+ wrapperComponent
360
361
  }) {
361
362
  var _a;
362
363
  const { data: parentData, resolveRenderer: parentResolveRenderer } = useUniformCurrentComponent();
@@ -374,12 +375,10 @@ function UniformSlot({
374
375
  return null;
375
376
  }
376
377
  const resolver = resolveRenderer != null ? resolveRenderer : parentResolveRenderer;
377
- const systemResolver = defaultSystemComponentResolver;
378
378
  const finalChildren = slot.map((component, index) => {
379
379
  const child = renderComponent({
380
380
  component,
381
381
  resolveRenderer: resolver,
382
- resolveSystem: systemResolver,
383
382
  key: `inner-${index}`,
384
383
  indexInSlot: index,
385
384
  slotName: name,
@@ -390,12 +389,15 @@ function UniformSlot({
390
389
  const elements = children ? children({ child, component, key: `wrapped-inner-${index}` }) : child;
391
390
  return React5.createElement(React5.Fragment, { key: index }, elements);
392
391
  });
393
- return React5.createElement(React5.Fragment, void 0, finalChildren);
392
+ if (!wrapperComponent) {
393
+ return React5.createElement(React5.Fragment, void 0, finalChildren);
394
+ }
395
+ const Wrapper = wrapperComponent;
396
+ return /* @__PURE__ */ React5.createElement(Wrapper, { items: finalChildren, slotName: name });
394
397
  }
395
398
  function renderComponent({
396
399
  component,
397
400
  resolveRenderer,
398
- resolveSystem,
399
401
  key = 0,
400
402
  indexInSlot,
401
403
  slotName,
@@ -405,7 +407,7 @@ function renderComponent({
405
407
  }) {
406
408
  const RenderComponent = resolveRenderer == null ? void 0 : resolveRenderer(component);
407
409
  if (component.type === CANVAS_TEST_TYPE) {
408
- const testComponent = resolveSystem.test(
410
+ const testComponent = defaultSystemComponentResolver.test(
409
411
  component,
410
412
  key,
411
413
  (variantComponent, key2) => {
@@ -413,7 +415,6 @@ function renderComponent({
413
415
  return renderComponent({
414
416
  component: variantComponent,
415
417
  resolveRenderer,
416
- resolveSystem,
417
418
  key: key2,
418
419
  parentComponent: component,
419
420
  slotName: CANVAS_TEST_SLOT,
@@ -437,7 +438,7 @@ function renderComponent({
437
438
  testComponent
438
439
  );
439
440
  } else if (component.type === CANVAS_PERSONALIZE_TYPE) {
440
- const personalizationComponent = resolveSystem.personalization(
441
+ const personalizationComponent = defaultSystemComponentResolver.personalization(
441
442
  component,
442
443
  key,
443
444
  (variantComponent, key2) => {
@@ -445,7 +446,6 @@ function renderComponent({
445
446
  return renderComponent({
446
447
  component: variantComponent,
447
448
  resolveRenderer,
448
- resolveSystem,
449
449
  key: key2,
450
450
  parentComponent: component,
451
451
  slotName: CANVAS_PERSONALIZE_SLOT,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/canvas-react",
3
- "version": "19.40.0",
3
+ "version": "19.41.0",
4
4
  "description": "React SDK for Uniform Canvas",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "main": "./dist/index.js",
@@ -24,10 +24,10 @@
24
24
  "document": "api-extractor run --local"
25
25
  },
26
26
  "dependencies": {
27
- "@uniformdev/canvas": "19.40.0",
28
- "@uniformdev/context": "19.40.0",
29
- "@uniformdev/context-react": "19.40.0",
30
- "@uniformdev/richtext": "19.40.0"
27
+ "@uniformdev/canvas": "19.41.0",
28
+ "@uniformdev/context": "19.41.0",
29
+ "@uniformdev/context-react": "19.41.0",
30
+ "@uniformdev/richtext": "19.41.0"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "react": ">= 16 || 17 || 18",
@@ -44,5 +44,5 @@
44
44
  "publishConfig": {
45
45
  "access": "public"
46
46
  },
47
- "gitHead": "f21fe5bd9d42379336cc7cb30e5b2f1955e8c337"
47
+ "gitHead": "cd4f9fd5bbdcba2b7f7235dbf342418a6bbaacb9"
48
48
  }