@atlaskit/smart-card 23.4.8 → 23.5.1

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.
Files changed (82) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/constants.js +10 -2
  3. package/dist/cjs/index.js +6 -0
  4. package/dist/cjs/state/flexible-ui-context/utils.js +16 -0
  5. package/dist/cjs/utils/flexible.js +8 -2
  6. package/dist/cjs/version.json +1 -1
  7. package/dist/cjs/view/BlockCard/components/flexible/footer/index.js +2 -2
  8. package/dist/cjs/view/BlockCard/index.js +83 -12
  9. package/dist/cjs/view/BlockCard/views/flexible/FlexibleResolvedView.js +108 -0
  10. package/dist/cjs/view/BlockCard/views/flexible/FlexibleUnauthorisedView.js +1 -1
  11. package/dist/cjs/view/CardWithUrl/component.js +4 -2
  12. package/dist/cjs/view/FlexibleCard/components/blocks/preview-block/index.js +6 -9
  13. package/dist/cjs/view/FlexibleCard/components/blocks/preview-block/resolved/index.js +109 -0
  14. package/dist/cjs/view/FlexibleCard/components/common/image-icon/index.js +4 -2
  15. package/dist/cjs/view/FlexibleCard/components/container/index.js +40 -4
  16. package/dist/cjs/view/FlexibleCard/components/elements/lozenge/index.js +12 -4
  17. package/dist/cjs/view/FlexibleCard/components/elements/media/index.js +2 -0
  18. package/dist/cjs/view/HoverCard/components/HoverCardContent.js +18 -6
  19. package/dist/cjs/view/HoverCard/utils.js +41 -2
  20. package/dist/es2019/constants.js +8 -1
  21. package/dist/es2019/index.js +1 -1
  22. package/dist/es2019/state/flexible-ui-context/utils.js +5 -0
  23. package/dist/es2019/utils/flexible.js +3 -2
  24. package/dist/es2019/version.json +1 -1
  25. package/dist/es2019/view/BlockCard/components/flexible/footer/index.js +2 -2
  26. package/dist/es2019/view/BlockCard/index.js +80 -13
  27. package/dist/es2019/view/BlockCard/views/flexible/FlexibleErroredView.js +2 -2
  28. package/dist/es2019/view/BlockCard/views/flexible/FlexibleForbiddenView.js +2 -2
  29. package/dist/es2019/view/BlockCard/views/flexible/FlexibleNotFoundView.js +2 -2
  30. package/dist/es2019/view/BlockCard/views/flexible/FlexibleResolvedView.js +81 -0
  31. package/dist/es2019/view/BlockCard/views/flexible/FlexibleUnauthorisedView.js +3 -3
  32. package/dist/es2019/view/CardWithUrl/component.js +4 -2
  33. package/dist/es2019/view/FlexibleCard/components/blocks/preview-block/index.js +6 -7
  34. package/dist/es2019/view/FlexibleCard/components/blocks/preview-block/resolved/index.js +103 -0
  35. package/dist/es2019/view/FlexibleCard/components/common/image-icon/index.js +4 -2
  36. package/dist/es2019/view/FlexibleCard/components/container/index.js +73 -21
  37. package/dist/es2019/view/FlexibleCard/components/elements/lozenge/index.js +22 -3
  38. package/dist/es2019/view/FlexibleCard/components/elements/media/index.js +2 -0
  39. package/dist/es2019/view/HoverCard/components/HoverCardContent.js +14 -4
  40. package/dist/es2019/view/HoverCard/utils.js +20 -0
  41. package/dist/esm/constants.js +8 -1
  42. package/dist/esm/index.js +1 -1
  43. package/dist/esm/state/flexible-ui-context/utils.js +7 -0
  44. package/dist/esm/utils/flexible.js +4 -1
  45. package/dist/esm/version.json +1 -1
  46. package/dist/esm/view/BlockCard/components/flexible/footer/index.js +2 -2
  47. package/dist/esm/view/BlockCard/index.js +77 -12
  48. package/dist/esm/view/BlockCard/views/flexible/FlexibleErroredView.js +2 -2
  49. package/dist/esm/view/BlockCard/views/flexible/FlexibleForbiddenView.js +2 -2
  50. package/dist/esm/view/BlockCard/views/flexible/FlexibleNotFoundView.js +2 -2
  51. package/dist/esm/view/BlockCard/views/flexible/FlexibleResolvedView.js +87 -0
  52. package/dist/esm/view/BlockCard/views/flexible/FlexibleUnauthorisedView.js +3 -3
  53. package/dist/esm/view/CardWithUrl/component.js +4 -2
  54. package/dist/esm/view/FlexibleCard/components/blocks/preview-block/index.js +7 -8
  55. package/dist/esm/view/FlexibleCard/components/blocks/preview-block/resolved/index.js +86 -0
  56. package/dist/esm/view/FlexibleCard/components/common/image-icon/index.js +4 -2
  57. package/dist/esm/view/FlexibleCard/components/container/index.js +42 -6
  58. package/dist/esm/view/FlexibleCard/components/elements/lozenge/index.js +11 -4
  59. package/dist/esm/view/FlexibleCard/components/elements/media/index.js +2 -0
  60. package/dist/esm/view/HoverCard/components/HoverCardContent.js +17 -6
  61. package/dist/esm/view/HoverCard/utils.js +34 -0
  62. package/dist/types/constants.d.ts +4 -0
  63. package/dist/types/index.d.ts +1 -1
  64. package/dist/types/state/flexible-ui-context/utils.d.ts +6 -0
  65. package/dist/types/utils/flexible.d.ts +1 -0
  66. package/dist/types/view/BlockCard/components/flexible/footer/index.d.ts +2 -2
  67. package/dist/types/view/BlockCard/index.d.ts +1 -0
  68. package/dist/types/view/BlockCard/types.d.ts +1 -0
  69. package/dist/types/view/BlockCard/views/flexible/FlexibleResolvedView.d.ts +9 -0
  70. package/dist/types/view/BlockCard/views/flexible/FlexibleUnauthorisedView.d.ts +1 -1
  71. package/dist/types/view/FlexibleCard/components/blocks/preview-block/index.d.ts +1 -0
  72. package/dist/types/view/FlexibleCard/components/blocks/preview-block/resolved/index.d.ts +11 -0
  73. package/dist/types/view/FlexibleCard/components/blocks/preview-block/types.d.ts +15 -0
  74. package/dist/types/view/FlexibleCard/components/common/image-icon/types.d.ts +1 -0
  75. package/dist/types/view/FlexibleCard/components/container/index.d.ts +2 -2
  76. package/dist/types/view/FlexibleCard/components/container/types.d.ts +4 -0
  77. package/dist/types/view/FlexibleCard/components/elements/lozenge/types.d.ts +5 -0
  78. package/dist/types/view/FlexibleCard/components/elements/media/types.d.ts +1 -0
  79. package/dist/types/view/HoverCard/utils.d.ts +3 -0
  80. package/package.json +2 -2
  81. package/report.api.md +10 -0
  82. package/tmp/api-report-tmp.d.ts +10 -0
@@ -1,3 +1,4 @@
1
+ import { useFeatureFlag } from '@atlaskit/link-provider';
1
2
  import ShortcutIcon from '@atlaskit/icon/glyph/shortcut';
2
3
  import { extractType } from '@atlaskit/linking-common/extractors';
3
4
  import React, { useCallback, useEffect, useMemo, useRef } from 'react';
@@ -9,7 +10,7 @@ import { isSpecialEvent } from '../../../utils';
9
10
  import FlexibleCard from '../../FlexibleCard';
10
11
  import { FooterBlock, MetadataBlock, SnippetBlock, TitleBlock } from '../../FlexibleCard/components/blocks';
11
12
  import { flexibleUiOptions, footerBlockCss, metadataBlockCss, titleBlockCss, hiddenSnippetStyles } from '../styled';
12
- import { getSimulatedMetadata, SMART_CARD_ANALYTICS_DISPLAY } from '../utils';
13
+ import { toActionableMetadata, getSimulatedMetadata, SMART_CARD_ANALYTICS_DISPLAY } from '../utils';
13
14
  import HoverCardLoadingView from './HoverCardLoadingView';
14
15
  import SnippetOrPreview from './SnippetOrPreview';
15
16
  export var getOpenAction = function getOpenAction(url, analytics, onActionClick) {
@@ -63,6 +64,7 @@ var HoverCardContent = function HoverCardContent(_ref) {
63
64
  onResolve = _ref.onResolve,
64
65
  renderers = _ref.renderers,
65
66
  url = _ref.url;
67
+ var showActionableElement = useFeatureFlag('enableActionableElement');
66
68
  var actions = useSmartCardActions(id, url, analytics);
67
69
  useEffect(function () {
68
70
  actions.loadMetadata();
@@ -95,12 +97,21 @@ var HoverCardContent = function HoverCardContent(_ref) {
95
97
  return toFooterActions(cardActions, onActionClick);
96
98
  }, [cardActions, onActionClick]);
97
99
  var data = (_cardState$details = cardState.details) === null || _cardState$details === void 0 ? void 0 : _cardState$details.data;
98
- var types = data ? extractType(data) : undefined; //TODO: EDM-3224 deleted simulated and use real JsonLd
99
100
 
100
- var _extractMetadata = extractMetadata(getSimulatedMetadata(extensionKey, types)),
101
- primary = _extractMetadata.primary,
102
- secondary = _extractMetadata.secondary,
103
- subtitle = _extractMetadata.subtitle;
101
+ var _useMemo = useMemo(function () {
102
+ var types = data ? extractType(data) : undefined; //TODO: EDM-3224 deleted simulated and use real JsonLd
103
+
104
+ var metadata = extractMetadata(getSimulatedMetadata(extensionKey, types));
105
+ var primary = showActionableElement ? toActionableMetadata(onActionClick, extensionKey, types, cardActions, metadata.primary) : metadata.primary;
106
+ return {
107
+ primary: primary,
108
+ secondary: metadata.secondary,
109
+ subtitle: metadata.subtitle
110
+ };
111
+ }, [cardActions, data, extensionKey, onActionClick, showActionableElement]),
112
+ primary = _useMemo.primary,
113
+ secondary = _useMemo.secondary,
114
+ subtitle = _useMemo.subtitle;
104
115
 
105
116
  var titleMaxLines = subtitle && subtitle.length > 0 ? 1 : 2;
106
117
  var snippetHeight = React.useRef(0);
@@ -1,3 +1,9 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
+
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
+
1
7
  import { ElementName } from '../../constants';
2
8
  export var SMART_CARD_ANALYTICS_DISPLAY = 'flexible';
3
9
  export var getSimulatedMetadata = function getSimulatedMetadata() {
@@ -80,4 +86,32 @@ export var getSimulatedMetadata = function getSimulatedMetadata() {
80
86
  }
81
87
  };
82
88
  }
89
+ };
90
+ export var toActionableMetadata = function toActionableMetadata(onActionClick, extensionKey) {
91
+ var types = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
92
+ var cardActions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
93
+ var elementItems = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
94
+
95
+ // Actionable State for Jira issue
96
+ if (extensionKey === 'jira-object-provider' && types !== null && types !== void 0 && types.includes('atlassian:Task')) {
97
+ var previewAction = cardActions.find(function (action) {
98
+ return action.id === 'preview-content';
99
+ });
100
+
101
+ if (previewAction) {
102
+ return elementItems.map(function (elementItem) {
103
+ return elementItem.name === ElementName.State ? _objectSpread(_objectSpread({}, elementItem), {}, {
104
+ onClick: function onClick() {
105
+ if (onActionClick) {
106
+ onActionClick(previewAction.id);
107
+ }
108
+
109
+ return previewAction.invoke();
110
+ }
111
+ }) : elementItem;
112
+ });
113
+ }
114
+ }
115
+
116
+ return elementItems;
83
117
  };
@@ -189,3 +189,7 @@ export declare enum IconType {
189
189
  export declare enum MediaType {
190
190
  Image = "image"
191
191
  }
192
+ export declare enum MediaPlacement {
193
+ Left = "left",
194
+ Right = "right"
195
+ }
@@ -16,7 +16,7 @@ export { SmartLinkEvents } from './utils/analytics/analytics';
16
16
  export { useSmartLinkEvents } from './view/SmartLinkEvents/useSmartLinkEvents';
17
17
  export { contentFooterClassName, metadataListClassName, blockCardResolvingViewClassName, blockCardResolvedViewClassName, blockCardForbiddenViewClassName, blockCardIconImageClassName, blockCardResolvedViewByClassName, blockCardForbiddenViewLinkClassName, blockCardContentClassName, blockCardContentHeaderClassName, blockCardContentHeaderNameClassName, blockCardNotFoundViewClassName, blockCardErroredViewClassName, } from './classNames';
18
18
  export { loadingPlaceholderClassName } from './view/CardWithUrl/component-lazy/LazyFallback';
19
- export { ActionName, ElementName, SmartLinkDirection, SmartLinkPosition, SmartLinkSize, SmartLinkTheme, } from './constants';
19
+ export { ActionName, ElementName, MediaPlacement, SmartLinkDirection, SmartLinkPosition, SmartLinkSize, SmartLinkTheme, } from './constants';
20
20
  export { MetadataBlock, PreviewBlock, SnippetBlock, TitleBlock, FooterBlock, } from './view/FlexibleCard/components/blocks';
21
21
  export type { ActionItem, ElementItem, OnActionMenuOpenChangeOptions, } from './view/FlexibleCard/components/blocks/types';
22
22
  export type { AnalyticsAction, AnalyticsActionSubject, AnalyticsPayload, AnalyticsHandler, } from './utils/types';
@@ -0,0 +1,6 @@
1
+ import { FlexibleUiDataContext } from './types';
2
+ /**
3
+ * Returns true if preview data is available in the FlexibleUiDataContext
4
+ * @param context is the FlexibleUiDataContext
5
+ */
6
+ export declare const isFlexUiPreviewPresent: (context?: FlexibleUiDataContext | undefined) => boolean;
@@ -3,3 +3,4 @@ export declare const isFlexibleUiCard: (children?: React.ReactNode) => boolean;
3
3
  export declare const isFlexibleUiBlock: (node: React.ReactNode) => boolean;
4
4
  export declare const isFlexibleUiElement: (node: React.ReactNode) => boolean;
5
5
  export declare const isFlexibleUiTitleBlock: (node: React.ReactNode) => boolean;
6
+ export declare const isFlexibleUiPreviewBlock: (node: React.ReactNode) => boolean;
@@ -8,5 +8,5 @@ import { FooterBlockProps } from '../../../../FlexibleCard/components/blocks/foo
8
8
  * @see CustomBlock
9
9
  * @param props are the data required for the block, such as actions to be displayed.
10
10
  */
11
- declare const Footer: React.FC<FooterBlockProps>;
12
- export default Footer;
11
+ declare const BlockCardFooter: React.FC<FooterBlockProps>;
12
+ export default BlockCardFooter;
@@ -1,3 +1,4 @@
1
+ /** @jsx jsx */
1
2
  import { FC } from 'react';
2
3
  import { BlockCardProps } from './types';
3
4
  import { AuthorizeAction } from './actions/AuthorizeAction';
@@ -22,4 +22,5 @@ export declare type BlockCardProps = {
22
22
  renderers?: CardProviderRenderers;
23
23
  platform?: CardPlatform;
24
24
  analytics: AnalyticsFacade;
25
+ enableFlexibleBlockCard?: boolean;
25
26
  };
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { FlexibleBlockCardProps } from './types';
3
+ /**
4
+ * This view represents a Block card that has an 'Resolved' status.
5
+ * @see SmartLinkStatus
6
+ * @see FlexibleCardProps
7
+ */
8
+ declare const FlexibleResolvedView: ({ cardState, onClick, onError, testId, ui, url, }: FlexibleBlockCardProps) => JSX.Element;
9
+ export default FlexibleResolvedView;
@@ -5,7 +5,7 @@ import { FlexibleBlockCardProps } from './types';
5
5
  * It should have a "Connect" button that will allow a user to connect their account and view the block card.
6
6
  *
7
7
  * @see SmartLinkStatus
8
- * @see UnauthorisedViewProps
8
+ * @see FlexibleCardProps
9
9
  */
10
10
  declare const FlexibleUnauthorisedView: ({ cardState, providerName, onAuthorize, onClick, onError, testId, ui, url, }: FlexibleBlockCardProps) => JSX.Element;
11
11
  export default FlexibleUnauthorisedView;
@@ -1,3 +1,4 @@
1
+ /** @jsx jsx */
1
2
  import React from 'react';
2
3
  import { PreviewBlockProps } from './types';
3
4
  /**
@@ -0,0 +1,11 @@
1
+ /** @jsx jsx */
2
+ import React from 'react';
3
+ import { PreviewBlockProps } from '../types';
4
+ /**
5
+ * Represents a resolved PreviewBlock, which typically contains media or other large format content.
6
+ * @public
7
+ * @param {PreviewBlock} PreviewBlock
8
+ * @see Block
9
+ */
10
+ declare const PreviewBlockResolvedView: React.FC<PreviewBlockProps>;
11
+ export default PreviewBlockResolvedView;
@@ -1,8 +1,23 @@
1
1
  import { BlockProps } from '../types';
2
+ import { MediaPlacement } from '../../../../../constants';
3
+ export declare type OnPreviewRenderOptions = {
4
+ placement?: MediaPlacement;
5
+ };
2
6
  export declare type PreviewBlockProps = {
7
+ /**
8
+ * Indicate whether preview block should ignore the padding its parent container.
9
+ * Default is false.
10
+ */
11
+ ignoreContainerPadding?: boolean;
3
12
  /**
4
13
  * Function to be called on error loading media.
5
14
  * @internal
6
15
  */
7
16
  onError?: () => void;
17
+ /**
18
+ * The placement of the preview block in relation of its container.
19
+ * This makes the preview block leave flex layout to absolute positioning
20
+ * to the left/right of the container.
21
+ */
22
+ placement?: MediaPlacement;
8
23
  } & BlockProps;
@@ -4,4 +4,5 @@ export declare type ImageIconProps = {
4
4
  testId?: string;
5
5
  url: string;
6
6
  onError?: () => void;
7
+ onLoad?: () => void;
7
8
  };
@@ -2,8 +2,8 @@
2
2
  import React from 'react';
3
3
  import { SerializedStyles } from '@emotion/react';
4
4
  import { SmartLinkSize } from '../../../../constants';
5
- import { ContainerProps } from './types';
6
- export declare const getContainerStyles: (size: SmartLinkSize, hideBackground: boolean, hideElevation: boolean, hidePadding: boolean, clickableContainer: boolean) => SerializedStyles;
5
+ import { ChildrenOptions, ContainerProps } from './types';
6
+ export declare const getContainerStyles: (size: SmartLinkSize, hideBackground: boolean, hideElevation: boolean, hidePadding: boolean, clickableContainer: boolean, childrenOptions: ChildrenOptions) => SerializedStyles;
7
7
  /**
8
8
  * A container is a hidden component that build the Flexible Smart Link.
9
9
  * All of the Flexible UI components are wrapped inside the container.
@@ -23,3 +23,7 @@ export declare type ContainerProps = FlexibleUiOptions & {
23
23
  */
24
24
  testId?: string;
25
25
  };
26
+ export declare type ChildrenOptions = {
27
+ previewOnLeft?: boolean;
28
+ previewOnRight?: boolean;
29
+ };
@@ -6,6 +6,11 @@ export declare type LozengeProps = ElementProps & {
6
6
  * Determines the appearance of the Atlaskit lozenge.
7
7
  */
8
8
  appearance?: LozengeAppearance;
9
+ /**
10
+ * DO NOT USE! This is an experiment code and may be removed at any given time.
11
+ * @internal
12
+ */
13
+ onClick?: () => void;
9
14
  /**
10
15
  * The text to display within the lozenge.
11
16
  */
@@ -14,4 +14,5 @@ export declare type MediaProps = ElementProps & {
14
14
  * @internal
15
15
  */
16
16
  onError?: () => void;
17
+ onLoad?: () => void;
17
18
  };
@@ -1,3 +1,6 @@
1
1
  import { JsonLd } from 'json-ld-types';
2
+ import { LinkAction } from '../../state/hooks-external/useSmartLinkActions';
3
+ import { ElementItem } from '../FlexibleCard/components/blocks/types';
2
4
  export declare const SMART_CARD_ANALYTICS_DISPLAY = "flexible";
3
5
  export declare const getSimulatedMetadata: (extensionKey?: string, types?: JsonLd.Primitives.ObjectType[]) => JsonLd.Primitives.Property<any>;
6
+ export declare const toActionableMetadata: (onActionClick: (actionId: string) => void, extensionKey?: string | undefined, types?: JsonLd.Primitives.ObjectType[], cardActions?: LinkAction[], elementItems?: ElementItem[]) => ElementItem[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "23.4.8",
3
+ "version": "23.5.1",
4
4
  "description": "Smart card component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -33,7 +33,7 @@
33
33
  "@atlaskit/icon-object": "^6.2.0",
34
34
  "@atlaskit/icon-priority": "^6.3.0",
35
35
  "@atlaskit/in-product-testing": "^0.1.0",
36
- "@atlaskit/linking-common": "^1.12.0",
36
+ "@atlaskit/linking-common": "^1.14.0",
37
37
  "@atlaskit/logo": "^13.10.0",
38
38
  "@atlaskit/lozenge": "^11.3.0",
39
39
  "@atlaskit/media-common": "^2.17.0",
package/report.api.md CHANGED
@@ -571,6 +571,14 @@ type LinkIcon = {
571
571
  // @public (undocumented)
572
572
  export const loadingPlaceholderClassName = 'smart-link-loading-placeholder';
573
573
 
574
+ // @public (undocumented)
575
+ export enum MediaPlacement {
576
+ // (undocumented)
577
+ Left = 'left',
578
+ // (undocumented)
579
+ Right = 'right',
580
+ }
581
+
574
582
  // @public
575
583
  export const MetadataBlock: React_2.FC<MetadataBlockProps>;
576
584
 
@@ -636,7 +644,9 @@ export const PreviewBlock: React_2.FC<PreviewBlockProps>;
636
644
 
637
645
  // @public (undocumented)
638
646
  type PreviewBlockProps = {
647
+ ignoreContainerPadding?: boolean;
639
648
  onError?: () => void;
649
+ placement?: MediaPlacement;
640
650
  } & BlockProps;
641
651
 
642
652
  // @public (undocumented)
@@ -457,6 +457,14 @@ type LinkIcon = {
457
457
  // @public (undocumented)
458
458
  export const loadingPlaceholderClassName = "smart-link-loading-placeholder";
459
459
 
460
+ // @public (undocumented)
461
+ export enum MediaPlacement {
462
+ // (undocumented)
463
+ Left = "left",
464
+ // (undocumented)
465
+ Right = "right"
466
+ }
467
+
460
468
  // @public
461
469
  export const MetadataBlock: React_2.FC<MetadataBlockProps>;
462
470
 
@@ -519,7 +527,9 @@ export const PreviewBlock: React_2.FC<PreviewBlockProps>;
519
527
 
520
528
  // @public (undocumented)
521
529
  type PreviewBlockProps = {
530
+ ignoreContainerPadding?: boolean;
522
531
  onError?: () => void;
532
+ placement?: MediaPlacement;
523
533
  } & BlockProps;
524
534
 
525
535
  // @public (undocumented)