@meduza/ui-kit-2 0.1.3 → 0.1.5

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 (32) hide show
  1. package/dist/DotsOnImage/DotsOnImage.types.d.ts +8 -8
  2. package/dist/EmbedBlock/EmbedBlock.types.d.ts +6 -0
  3. package/dist/EmbedBlock/EmbedGif.d.ts +3 -0
  4. package/dist/Image/Image.types.d.ts +5 -5
  5. package/dist/RawHtmlBlock/RawHtmlBlock.types.d.ts +1 -1
  6. package/dist/ui-kit-2.cjs.development.js +114 -85
  7. package/dist/ui-kit-2.cjs.development.js.map +1 -1
  8. package/dist/ui-kit-2.cjs.production.min.js +1 -1
  9. package/dist/ui-kit-2.cjs.production.min.js.map +1 -1
  10. package/dist/ui-kit-2.esm.js +114 -85
  11. package/dist/ui-kit-2.esm.js.map +1 -1
  12. package/dist/ui-kit.css +787 -789
  13. package/package.json +1 -1
  14. package/src/DotsOnImage/DotsOnImage.module.css +25 -1
  15. package/src/DotsOnImage/DotsOnImage.types.ts +8 -8
  16. package/src/DotsOnImage/index.tsx +12 -8
  17. package/src/EmbedBlock/EmbedBlock.module.css +3 -15
  18. package/src/EmbedBlock/EmbedBlock.stories.tsx +0 -1
  19. package/src/EmbedBlock/EmbedBlock.tsx +41 -95
  20. package/src/EmbedBlock/EmbedBlock.types.ts +7 -0
  21. package/src/EmbedBlock/EmbedGif.tsx +73 -0
  22. package/src/EmbedBlock/mock.json +75 -0
  23. package/src/Image/Image.types.ts +5 -5
  24. package/src/RawHtmlBlock/RawHtmlBlock.stories.tsx +1 -1
  25. package/src/RawHtmlBlock/RawHtmlBlock.types.ts +1 -1
  26. package/src/RenderBlocks/RenderBlocks.stories.tsx +1 -1
  27. package/src/RenderBlocks/index.tsx +1 -0
  28. package/src/RichTitle/RichTitle.types.ts +1 -1
  29. package/src/SimpleBlock/SimpleBlock.types.ts +1 -1
  30. package/src/SimpleTitle/SimpleTitle.types.ts +1 -1
  31. package/src/SourceBlock/SourceBlock.types.ts +1 -1
  32. package/src/Spoiler/Spoiler.types.ts +1 -1
@@ -474,16 +474,16 @@ var Image = function Image(_ref) {
474
474
  })));
475
475
  };
476
476
 
477
- var styles$5 = {"root":"DotsOnImage-module_root__2XP3Q","dot":"DotsOnImage-module_dot__H1wua","popover":"DotsOnImage-module_popover__35Cpj","popoverTitle":"DotsOnImage-module_popoverTitle__343d8"};
477
+ var styles$5 = {"root":"DotsOnImage-module_root__2XP3Q","dot":"DotsOnImage-module_dot__H1wua","popover":"DotsOnImage-module_popover__35Cpj","popoverTitle":"DotsOnImage-module_popoverTitle__343d8","dismiss":"DotsOnImage-module_dismiss__1EWXd"};
478
478
 
479
479
  var DotsOnImage = function DotsOnImage(_ref) {
480
- var block = _ref.block;
481
- var optimized = block.optimized,
482
- width = block.width,
483
- height = block.height,
484
- credit = block.credit,
485
- display = block.display,
486
- dots = block.dots;
480
+ var _ref$block = _ref.block,
481
+ optimized = _ref$block.optimized,
482
+ width = _ref$block.width,
483
+ height = _ref$block.height,
484
+ credit = _ref$block.credit,
485
+ display = _ref$block.display,
486
+ dots = _ref$block.dots;
487
487
 
488
488
  var _useState = useState({
489
489
  title: null,
@@ -506,7 +506,7 @@ var DotsOnImage = function DotsOnImage(_ref) {
506
506
 
507
507
  return React.createElement("div", {
508
508
  "data-testid": "dots-on-image",
509
- className: makeClassName([[styles$5.root, true]])
509
+ className: styles$5.root
510
510
  }, React.createElement("div", {
511
511
  className: styles$5.dots
512
512
  }, dots.map(function (dot) {
@@ -538,7 +538,18 @@ var DotsOnImage = function DotsOnImage(_ref) {
538
538
  display: display
539
539
  })), popover.show && React.createElement("div", {
540
540
  className: styles$5.popover
541
- }, React.createElement("div", {
541
+ }, React.createElement("button", {
542
+ className: styles$5.dismiss,
543
+ type: "button",
544
+ onClick: function onClick() {
545
+ return setPopover({
546
+ show: false
547
+ });
548
+ }
549
+ }, React.createElement(SvgSymbol, {
550
+ icon: "cross",
551
+ size: "unset"
552
+ })), React.createElement("div", {
542
553
  className: styles$5.popoverTitle
543
554
  }, popover.title), React.createElement("div", {
544
555
  className: styles$5.popoverBody,
@@ -988,33 +999,18 @@ var DangerousHTML = function DangerousHTML(_ref) {
988
999
  });
989
1000
  };
990
1001
 
991
- var styles$h = {"root":"EmbedBlock-module_root__28k9U","object":"EmbedBlock-module_object__2_UZ7","objectWrap":"EmbedBlock-module_objectWrap__1aDVd","proportional":"EmbedBlock-module_proportional__3lAv4","attachment":"EmbedBlock-module_attachment__2pE0t","default":"EmbedBlock-module_default__LSDny","xs":"EmbedBlock-module_xs__1hFgW","full":"EmbedBlock-module_full__1TEjx","super_full":"EmbedBlock-module_super_full__1Fn9A","figure":"EmbedBlock-module_figure__vAvcN","dark":"EmbedBlock-module_dark__1be2G","isInGroupedBlock":"EmbedBlock-module_isInGroupedBlock__3r_i-","gameEmbed":"EmbedBlock-module_gameEmbed__AZQSo","mobile":"EmbedBlock-module_mobile__1P-eo","desktop":"EmbedBlock-module_desktop__SF5a_","control":"EmbedBlock-module_control__xr8dZ","raw_html":"EmbedBlock-module_raw_html__MQoAA","youtube":"EmbedBlock-module_youtube__3gGQ5","vimeo":"EmbedBlock-module_vimeo__kpH1s","onetv":"EmbedBlock-module_onetv__3o33d","coub":"EmbedBlock-module_coub__38Mva","facebook_video":"EmbedBlock-module_facebook_video__1_M05","card":"EmbedBlock-module_card__KTbvp","slide":"EmbedBlock-module_slide__3cL3M","cc":"EmbedBlock-module_cc__1BQ5g","isInAnswer":"EmbedBlock-module_isInAnswer__tLlgs","picture":"EmbedBlock-module_picture__186q0","wrapper":"EmbedBlock-module_wrapper__33XvX"};
1002
+ var styles$h = {"root":"EmbedBlock-module_root__28k9U","object":"EmbedBlock-module_object__2_UZ7","objectWrap":"EmbedBlock-module_objectWrap__1aDVd","proportional":"EmbedBlock-module_proportional__3lAv4","attachment":"EmbedBlock-module_attachment__2pE0t","default":"EmbedBlock-module_default__LSDny","xs":"EmbedBlock-module_xs__1hFgW","full":"EmbedBlock-module_full__1TEjx","super_full":"EmbedBlock-module_super_full__1Fn9A","figure":"EmbedBlock-module_figure__vAvcN","dark":"EmbedBlock-module_dark__1be2G","isInGroupedBlock":"EmbedBlock-module_isInGroupedBlock__3r_i-","gameEmbed":"EmbedBlock-module_gameEmbed__AZQSo","mobile":"EmbedBlock-module_mobile__1P-eo","desktop":"EmbedBlock-module_desktop__SF5a_","control":"EmbedBlock-module_control__xr8dZ","raw_html":"EmbedBlock-module_raw_html__MQoAA","mobileFullwidth":"EmbedBlock-module_mobileFullwidth__QFFLH","card":"EmbedBlock-module_card__KTbvp","slide":"EmbedBlock-module_slide__3cL3M","cc":"EmbedBlock-module_cc__1BQ5g","isInAnswer":"EmbedBlock-module_isInAnswer__tLlgs","picture":"EmbedBlock-module_picture__186q0","wrapper":"EmbedBlock-module_wrapper__33XvX"};
992
1003
 
993
- var EmbedBlock = function EmbedBlock(_ref) {
994
- var block = _ref.block,
995
- _ref$block = _ref.block,
996
- data = _ref$block.data,
997
- _ref$block$data = _ref$block.data,
998
- display = _ref$block$data.display,
999
- onlyOn = _ref$block$data.only_on,
1000
- provider = _ref$block$data.provider,
1001
- cc = _ref$block$data.cc,
1002
- optimized = _ref$block$data.optimized,
1003
- small = _ref$block$data.small_url,
1004
- large = _ref$block$data.large_url,
1005
- styleContext = _ref.styleContext,
1006
- children = _ref.children;
1004
+ var EmbedGif = function EmbedGif(_ref) {
1005
+ var gif = _ref.gif,
1006
+ mp4Url = _ref.mp4Url,
1007
+ style = _ref.style;
1007
1008
 
1008
1009
  var _useState = useState(false),
1009
- isPopoverShown = _useState[0],
1010
- setIsPopoverShown = _useState[1];
1011
-
1012
- var _useState2 = useState(false),
1013
- videoFrozen = _useState2[0],
1014
- setVideoFrozen = _useState2[1];
1010
+ videoFrozen = _useState[0],
1011
+ setVideoFrozen = _useState[1];
1015
1012
 
1016
1013
  var videoElem = useRef(null);
1017
- var wrapperElem = useRef(null);
1018
1014
 
1019
1015
  var handleVideoTouch = function handleVideoTouch() {
1020
1016
  videoElem.current.play();
@@ -1030,31 +1026,72 @@ var EmbedBlock = function EmbedBlock(_ref) {
1030
1026
  useEffect(function () {
1031
1027
  var video = videoElem.current;
1032
1028
 
1033
- if (block.type === 'gif' && video) {
1034
- var _viewportSize = viewportSize(),
1035
- viewportWidth = _viewportSize.width;
1029
+ var _viewportSize = viewportSize(),
1030
+ viewportWidth = _viewportSize.width;
1036
1031
 
1037
- enableInlineVideo(video);
1032
+ enableInlineVideo(video);
1038
1033
 
1039
- if (viewportWidth >= MediaQuerySizes.MOBILE) {
1040
- video.setAttribute('autoplay', true);
1041
- video.play();
1042
- } else {
1043
- setVideoFrozen(true);
1044
- video.pause();
1045
- video.addEventListener('touchstart', handleVideoTouch);
1046
- }
1047
-
1048
- video.addEventListener('error', handleVideoError);
1034
+ if (viewportWidth >= MediaQuerySizes.MOBILE) {
1035
+ video.setAttribute('autoplay', true);
1036
+ video.play();
1037
+ } else {
1038
+ setVideoFrozen(true);
1039
+ video.pause();
1040
+ video.addEventListener('touchstart', handleVideoTouch);
1049
1041
  }
1050
1042
 
1043
+ video.addEventListener('error', handleVideoError);
1051
1044
  return function () {
1052
- if (video) {
1053
- video.removeEventListener('touchstart', handleVideoTouch);
1054
- video.removeEventListener('error', handleVideoError);
1055
- }
1045
+ video.removeEventListener('touchstart', handleVideoTouch);
1046
+ video.removeEventListener('error', handleVideoError);
1056
1047
  };
1057
1048
  }, []);
1049
+ return React.createElement("div", {
1050
+ className: styles$h.figure
1051
+ }, React.createElement("div", {
1052
+ className: styles$h.objectWrap,
1053
+ style: style,
1054
+ "data-frozen": videoFrozen
1055
+ }, React.createElement("video", {
1056
+ playsInline: true,
1057
+ muted: true,
1058
+ loop: true,
1059
+ autoPlay: true,
1060
+ preload: "metadata",
1061
+ "data-gif": gif,
1062
+ ref: videoElem
1063
+ }, React.createElement("source", {
1064
+ src: "https://meduza.io" + mp4Url,
1065
+ type: "video/mp4"
1066
+ }))));
1067
+ };
1068
+
1069
+ var EmbedBlock = function EmbedBlock(_ref) {
1070
+ var block = _ref.block,
1071
+ _ref$block = _ref.block,
1072
+ data = _ref$block.data,
1073
+ _ref$block$data = _ref$block.data,
1074
+ html = _ref$block$data.html,
1075
+ display = _ref$block$data.display,
1076
+ onlyOn = _ref$block$data.only_on,
1077
+ provider = _ref$block$data.provider,
1078
+ cc = _ref$block$data.cc,
1079
+ optimized = _ref$block$data.optimized,
1080
+ small = _ref$block$data.small_url,
1081
+ large = _ref$block$data.large_url,
1082
+ gifUrl = _ref$block$data.gif_url,
1083
+ mp4Url = _ref$block$data.mp4_url,
1084
+ styleContext = _ref.styleContext,
1085
+ children = _ref.children;
1086
+
1087
+ var _useState = useState(false),
1088
+ isPopoverShown = _useState[0],
1089
+ setIsPopoverShown = _useState[1];
1090
+
1091
+ var style = {};
1092
+ var isProportional = block.data.height && block.data.width;
1093
+ var fullWidthProviders = ['youtube', 'vimeo', 'onetv', 'coub', 'facebook_video'];
1094
+ var mobileFullwidth = fullWidthProviders.indexOf(provider) || block.type === 'dots_on_image';
1058
1095
 
1059
1096
  var renderCC = function renderCC(context) {
1060
1097
  return React.createElement(MediaCaption, {
@@ -1065,30 +1102,14 @@ var EmbedBlock = function EmbedBlock(_ref) {
1065
1102
  };
1066
1103
 
1067
1104
  var renderEmbed = function renderEmbed(style) {
1068
- var html = block.data.html;
1069
-
1070
1105
  switch (block.type) {
1071
1106
  case 'gif':
1072
1107
  {
1073
- return React.createElement("div", {
1074
- className: styles$h.figure
1075
- }, React.createElement("div", {
1076
- className: styles$h.objectWrap,
1077
- style: style,
1078
- ref: wrapperElem,
1079
- "data-frozen": videoFrozen
1080
- }, React.createElement("video", {
1081
- playsInline: true,
1082
- muted: true,
1083
- loop: true,
1084
- autoPlay: true,
1085
- preload: "metadata",
1086
- "data-gif": block.data.gif_url,
1087
- ref: videoElem
1088
- }, React.createElement("source", {
1089
- src: "https://meduza.io" + block.data.mp4_url,
1090
- type: "video/mp4"
1091
- }))));
1108
+ return React.createElement(EmbedGif, {
1109
+ gif: gifUrl,
1110
+ mp4Url: mp4Url,
1111
+ style: style
1112
+ });
1092
1113
  }
1093
1114
 
1094
1115
  case 'image':
@@ -1118,6 +1139,15 @@ var EmbedBlock = function EmbedBlock(_ref) {
1118
1139
  }));
1119
1140
  }
1120
1141
 
1142
+ case 'dots_on_image':
1143
+ {
1144
+ return React.createElement("div", {
1145
+ className: styles$h.figure
1146
+ }, React.createElement(DotsOnImage, {
1147
+ block: data
1148
+ }));
1149
+ }
1150
+
1121
1151
  default:
1122
1152
  {
1123
1153
  return React.createElement("div", {
@@ -1131,29 +1161,27 @@ var EmbedBlock = function EmbedBlock(_ref) {
1131
1161
  })));
1132
1162
  }
1133
1163
  }
1134
- };
1164
+ }; // Убираем из контекста все, что не начинается с приставки isIn,
1165
+ // чтобы не применились лишние модификаторы
1166
+ // TODO: в w6 модификаторы должны передаваться явно
1135
1167
 
1136
- var style = {};
1137
- var isProportional; // @TODO: Разобраться зачем это было нужно
1138
- // const className = Object.keys(styleContext)
1139
- // .filter(key => key.startsWith('isIn') && styles[key])
1140
- // .reduce((acc, key) => {
1141
- // acc.push([styles[key], true])
1142
- // return acc
1143
- // }, [])
1144
1168
 
1145
- /* eslint-disable react/no-array-index-key, no-mixed-operators */
1169
+ var filteredContext = Object.keys(styleContext).filter(function (key) {
1170
+ return key.startsWith('isIn') && styles$h[key];
1171
+ }).reduce(function (acc, key) {
1172
+ acc.push([styles$h[key], true]);
1173
+ return acc;
1174
+ }, []);
1146
1175
 
1147
- if (block.data.height && block.data.width) {
1176
+ if (isProportional) {
1148
1177
  style.paddingBottom = block.data.height / block.data.width * 100 + "%";
1149
1178
  style.height = 0;
1150
- isProportional = true;
1151
1179
  }
1152
1180
 
1153
- var classNames = [[styles$h.root, true], [styles$h.cc, cc], [styles$h[display], !!display && styles$h[display]], [styles$h[provider], !!provider && !!styles$h[provider]], [styles$h[onlyOn], !!onlyOn && styles$h[onlyOn]], [styles$h.proportional, !!styles$h.proportional && isProportional]];
1181
+ var classNames = [[styles$h.root, true], [styles$h.cc, cc], [styles$h[display], !!display && styles$h[display]], [styles$h[provider], !!provider && !!styles$h[provider]], [styles$h[onlyOn], !!onlyOn && styles$h[onlyOn]], [styles$h.mobileFullwidth, mobileFullwidth], [styles$h.proportional, isProportional]];
1154
1182
 
1155
1183
  if (styleContext) {
1156
- classNames = makeStyleContext(classNames, styleContext, styles$h);
1184
+ classNames = makeStyleContext(classNames, filteredContext, styles$h);
1157
1185
  }
1158
1186
 
1159
1187
  return React.createElement("figure", {
@@ -1865,6 +1893,7 @@ var RenderBlocks = function RenderBlocks(_ref) {
1865
1893
  case 'embed_code':
1866
1894
  case 'game_embed':
1867
1895
  case 'image':
1896
+ case 'dots_on_image':
1868
1897
  case 'gif':
1869
1898
  return React.createElement(EmbedBlockContainer, {
1870
1899
  block: block,