@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.
- package/dist/DotsOnImage/DotsOnImage.types.d.ts +8 -8
- package/dist/EmbedBlock/EmbedBlock.types.d.ts +6 -0
- package/dist/EmbedBlock/EmbedGif.d.ts +3 -0
- package/dist/Image/Image.types.d.ts +5 -5
- package/dist/RawHtmlBlock/RawHtmlBlock.types.d.ts +1 -1
- package/dist/ui-kit-2.cjs.development.js +114 -85
- package/dist/ui-kit-2.cjs.development.js.map +1 -1
- package/dist/ui-kit-2.cjs.production.min.js +1 -1
- package/dist/ui-kit-2.cjs.production.min.js.map +1 -1
- package/dist/ui-kit-2.esm.js +114 -85
- package/dist/ui-kit-2.esm.js.map +1 -1
- package/dist/ui-kit.css +787 -789
- package/package.json +1 -1
- package/src/DotsOnImage/DotsOnImage.module.css +25 -1
- package/src/DotsOnImage/DotsOnImage.types.ts +8 -8
- package/src/DotsOnImage/index.tsx +12 -8
- package/src/EmbedBlock/EmbedBlock.module.css +3 -15
- package/src/EmbedBlock/EmbedBlock.stories.tsx +0 -1
- package/src/EmbedBlock/EmbedBlock.tsx +41 -95
- package/src/EmbedBlock/EmbedBlock.types.ts +7 -0
- package/src/EmbedBlock/EmbedGif.tsx +73 -0
- package/src/EmbedBlock/mock.json +75 -0
- package/src/Image/Image.types.ts +5 -5
- package/src/RawHtmlBlock/RawHtmlBlock.stories.tsx +1 -1
- package/src/RawHtmlBlock/RawHtmlBlock.types.ts +1 -1
- package/src/RenderBlocks/RenderBlocks.stories.tsx +1 -1
- package/src/RenderBlocks/index.tsx +1 -0
- package/src/RichTitle/RichTitle.types.ts +1 -1
- package/src/SimpleBlock/SimpleBlock.types.ts +1 -1
- package/src/SimpleTitle/SimpleTitle.types.ts +1 -1
- package/src/SourceBlock/SourceBlock.types.ts +1 -1
- package/src/Spoiler/Spoiler.types.ts +1 -1
package/dist/ui-kit-2.esm.js
CHANGED
|
@@ -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
|
-
|
|
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:
|
|
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("
|
|
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","
|
|
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
|
|
994
|
-
var
|
|
995
|
-
|
|
996
|
-
|
|
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
|
-
|
|
1010
|
-
|
|
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
|
-
|
|
1034
|
-
|
|
1035
|
-
viewportWidth = _viewportSize.width;
|
|
1029
|
+
var _viewportSize = viewportSize(),
|
|
1030
|
+
viewportWidth = _viewportSize.width;
|
|
1036
1031
|
|
|
1037
|
-
|
|
1032
|
+
enableInlineVideo(video);
|
|
1038
1033
|
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
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
|
-
|
|
1053
|
-
|
|
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(
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
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
|
-
|
|
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 (
|
|
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.
|
|
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,
|
|
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,
|