@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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { OptimizedImageItem } from '../Image/Image.types';
|
|
2
2
|
export interface PopoverData {
|
|
3
|
-
title
|
|
4
|
-
body
|
|
5
|
-
id
|
|
3
|
+
title?: string;
|
|
4
|
+
body?: string;
|
|
5
|
+
id?: string;
|
|
6
6
|
show: boolean;
|
|
7
7
|
}
|
|
8
8
|
export interface SingleDot {
|
|
@@ -27,12 +27,12 @@ export interface DotsOnImageProps {
|
|
|
27
27
|
cc?: string;
|
|
28
28
|
display?: string;
|
|
29
29
|
optimized?: {
|
|
30
|
-
original
|
|
30
|
+
original?: string;
|
|
31
31
|
w325: OptimizedImageItem;
|
|
32
|
-
w520
|
|
33
|
-
w650
|
|
34
|
-
w980
|
|
35
|
-
w1335
|
|
32
|
+
w520?: OptimizedImageItem;
|
|
33
|
+
w650?: OptimizedImageItem;
|
|
34
|
+
w980?: OptimizedImageItem;
|
|
35
|
+
w1335?: OptimizedImageItem;
|
|
36
36
|
};
|
|
37
37
|
width?: number;
|
|
38
38
|
height?: number;
|
|
@@ -25,12 +25,12 @@ export interface ImageProps {
|
|
|
25
25
|
export interface PictureProps {
|
|
26
26
|
source?: object;
|
|
27
27
|
optimized?: {
|
|
28
|
-
original
|
|
28
|
+
original?: string;
|
|
29
29
|
w325: OptimizedImageItem;
|
|
30
|
-
w520
|
|
31
|
-
w650
|
|
32
|
-
w980
|
|
33
|
-
w1335
|
|
30
|
+
w520?: OptimizedImageItem;
|
|
31
|
+
w650?: OptimizedImageItem;
|
|
32
|
+
w980?: OptimizedImageItem;
|
|
33
|
+
w1335?: OptimizedImageItem;
|
|
34
34
|
};
|
|
35
35
|
alt?: string;
|
|
36
36
|
fallbackSource: string;
|
|
@@ -6,7 +6,7 @@ export declare type lightBox = {
|
|
|
6
6
|
};
|
|
7
7
|
export interface RawHtmlBlockProps {
|
|
8
8
|
block: any;
|
|
9
|
-
styleContext
|
|
9
|
+
styleContext?: string[] | string;
|
|
10
10
|
isRead?: boolean | undefined;
|
|
11
11
|
isListened?: boolean | undefined;
|
|
12
12
|
isInBookmarks?: boolean | undefined;
|
|
@@ -481,16 +481,16 @@ var Image = function Image(_ref) {
|
|
|
481
481
|
})));
|
|
482
482
|
};
|
|
483
483
|
|
|
484
|
-
var styles$5 = {"root":"DotsOnImage-module_root__2XP3Q","dot":"DotsOnImage-module_dot__H1wua","popover":"DotsOnImage-module_popover__35Cpj","popoverTitle":"DotsOnImage-module_popoverTitle__343d8"};
|
|
484
|
+
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"};
|
|
485
485
|
|
|
486
486
|
var DotsOnImage = function DotsOnImage(_ref) {
|
|
487
|
-
var block = _ref.block
|
|
488
|
-
|
|
489
|
-
width = block.width,
|
|
490
|
-
height = block.height,
|
|
491
|
-
credit = block.credit,
|
|
492
|
-
display = block.display,
|
|
493
|
-
dots = block.dots;
|
|
487
|
+
var _ref$block = _ref.block,
|
|
488
|
+
optimized = _ref$block.optimized,
|
|
489
|
+
width = _ref$block.width,
|
|
490
|
+
height = _ref$block.height,
|
|
491
|
+
credit = _ref$block.credit,
|
|
492
|
+
display = _ref$block.display,
|
|
493
|
+
dots = _ref$block.dots;
|
|
494
494
|
|
|
495
495
|
var _useState = React.useState({
|
|
496
496
|
title: null,
|
|
@@ -513,7 +513,7 @@ var DotsOnImage = function DotsOnImage(_ref) {
|
|
|
513
513
|
|
|
514
514
|
return React__default.createElement("div", {
|
|
515
515
|
"data-testid": "dots-on-image",
|
|
516
|
-
className:
|
|
516
|
+
className: styles$5.root
|
|
517
517
|
}, React__default.createElement("div", {
|
|
518
518
|
className: styles$5.dots
|
|
519
519
|
}, dots.map(function (dot) {
|
|
@@ -545,7 +545,18 @@ var DotsOnImage = function DotsOnImage(_ref) {
|
|
|
545
545
|
display: display
|
|
546
546
|
})), popover.show && React__default.createElement("div", {
|
|
547
547
|
className: styles$5.popover
|
|
548
|
-
}, React__default.createElement("
|
|
548
|
+
}, React__default.createElement("button", {
|
|
549
|
+
className: styles$5.dismiss,
|
|
550
|
+
type: "button",
|
|
551
|
+
onClick: function onClick() {
|
|
552
|
+
return setPopover({
|
|
553
|
+
show: false
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
}, React__default.createElement(SvgSymbol, {
|
|
557
|
+
icon: "cross",
|
|
558
|
+
size: "unset"
|
|
559
|
+
})), React__default.createElement("div", {
|
|
549
560
|
className: styles$5.popoverTitle
|
|
550
561
|
}, popover.title), React__default.createElement("div", {
|
|
551
562
|
className: styles$5.popoverBody,
|
|
@@ -995,33 +1006,18 @@ var DangerousHTML = function DangerousHTML(_ref) {
|
|
|
995
1006
|
});
|
|
996
1007
|
};
|
|
997
1008
|
|
|
998
|
-
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","
|
|
1009
|
+
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"};
|
|
999
1010
|
|
|
1000
|
-
var
|
|
1001
|
-
var
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
_ref$block$data = _ref$block.data,
|
|
1005
|
-
display = _ref$block$data.display,
|
|
1006
|
-
onlyOn = _ref$block$data.only_on,
|
|
1007
|
-
provider = _ref$block$data.provider,
|
|
1008
|
-
cc = _ref$block$data.cc,
|
|
1009
|
-
optimized = _ref$block$data.optimized,
|
|
1010
|
-
small = _ref$block$data.small_url,
|
|
1011
|
-
large = _ref$block$data.large_url,
|
|
1012
|
-
styleContext = _ref.styleContext,
|
|
1013
|
-
children = _ref.children;
|
|
1011
|
+
var EmbedGif = function EmbedGif(_ref) {
|
|
1012
|
+
var gif = _ref.gif,
|
|
1013
|
+
mp4Url = _ref.mp4Url,
|
|
1014
|
+
style = _ref.style;
|
|
1014
1015
|
|
|
1015
1016
|
var _useState = React.useState(false),
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
var _useState2 = React.useState(false),
|
|
1020
|
-
videoFrozen = _useState2[0],
|
|
1021
|
-
setVideoFrozen = _useState2[1];
|
|
1017
|
+
videoFrozen = _useState[0],
|
|
1018
|
+
setVideoFrozen = _useState[1];
|
|
1022
1019
|
|
|
1023
1020
|
var videoElem = React.useRef(null);
|
|
1024
|
-
var wrapperElem = React.useRef(null);
|
|
1025
1021
|
|
|
1026
1022
|
var handleVideoTouch = function handleVideoTouch() {
|
|
1027
1023
|
videoElem.current.play();
|
|
@@ -1037,31 +1033,72 @@ var EmbedBlock = function EmbedBlock(_ref) {
|
|
|
1037
1033
|
React.useEffect(function () {
|
|
1038
1034
|
var video = videoElem.current;
|
|
1039
1035
|
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
viewportWidth = _viewportSize.width;
|
|
1036
|
+
var _viewportSize = viewportSize(),
|
|
1037
|
+
viewportWidth = _viewportSize.width;
|
|
1043
1038
|
|
|
1044
|
-
|
|
1039
|
+
enableInlineVideo(video);
|
|
1045
1040
|
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
}
|
|
1054
|
-
|
|
1055
|
-
video.addEventListener('error', handleVideoError);
|
|
1041
|
+
if (viewportWidth >= MediaQuerySizes.MOBILE) {
|
|
1042
|
+
video.setAttribute('autoplay', true);
|
|
1043
|
+
video.play();
|
|
1044
|
+
} else {
|
|
1045
|
+
setVideoFrozen(true);
|
|
1046
|
+
video.pause();
|
|
1047
|
+
video.addEventListener('touchstart', handleVideoTouch);
|
|
1056
1048
|
}
|
|
1057
1049
|
|
|
1050
|
+
video.addEventListener('error', handleVideoError);
|
|
1058
1051
|
return function () {
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
video.removeEventListener('error', handleVideoError);
|
|
1062
|
-
}
|
|
1052
|
+
video.removeEventListener('touchstart', handleVideoTouch);
|
|
1053
|
+
video.removeEventListener('error', handleVideoError);
|
|
1063
1054
|
};
|
|
1064
1055
|
}, []);
|
|
1056
|
+
return React__default.createElement("div", {
|
|
1057
|
+
className: styles$h.figure
|
|
1058
|
+
}, React__default.createElement("div", {
|
|
1059
|
+
className: styles$h.objectWrap,
|
|
1060
|
+
style: style,
|
|
1061
|
+
"data-frozen": videoFrozen
|
|
1062
|
+
}, React__default.createElement("video", {
|
|
1063
|
+
playsInline: true,
|
|
1064
|
+
muted: true,
|
|
1065
|
+
loop: true,
|
|
1066
|
+
autoPlay: true,
|
|
1067
|
+
preload: "metadata",
|
|
1068
|
+
"data-gif": gif,
|
|
1069
|
+
ref: videoElem
|
|
1070
|
+
}, React__default.createElement("source", {
|
|
1071
|
+
src: "https://meduza.io" + mp4Url,
|
|
1072
|
+
type: "video/mp4"
|
|
1073
|
+
}))));
|
|
1074
|
+
};
|
|
1075
|
+
|
|
1076
|
+
var EmbedBlock = function EmbedBlock(_ref) {
|
|
1077
|
+
var block = _ref.block,
|
|
1078
|
+
_ref$block = _ref.block,
|
|
1079
|
+
data = _ref$block.data,
|
|
1080
|
+
_ref$block$data = _ref$block.data,
|
|
1081
|
+
html = _ref$block$data.html,
|
|
1082
|
+
display = _ref$block$data.display,
|
|
1083
|
+
onlyOn = _ref$block$data.only_on,
|
|
1084
|
+
provider = _ref$block$data.provider,
|
|
1085
|
+
cc = _ref$block$data.cc,
|
|
1086
|
+
optimized = _ref$block$data.optimized,
|
|
1087
|
+
small = _ref$block$data.small_url,
|
|
1088
|
+
large = _ref$block$data.large_url,
|
|
1089
|
+
gifUrl = _ref$block$data.gif_url,
|
|
1090
|
+
mp4Url = _ref$block$data.mp4_url,
|
|
1091
|
+
styleContext = _ref.styleContext,
|
|
1092
|
+
children = _ref.children;
|
|
1093
|
+
|
|
1094
|
+
var _useState = React.useState(false),
|
|
1095
|
+
isPopoverShown = _useState[0],
|
|
1096
|
+
setIsPopoverShown = _useState[1];
|
|
1097
|
+
|
|
1098
|
+
var style = {};
|
|
1099
|
+
var isProportional = block.data.height && block.data.width;
|
|
1100
|
+
var fullWidthProviders = ['youtube', 'vimeo', 'onetv', 'coub', 'facebook_video'];
|
|
1101
|
+
var mobileFullwidth = fullWidthProviders.indexOf(provider) || block.type === 'dots_on_image';
|
|
1065
1102
|
|
|
1066
1103
|
var renderCC = function renderCC(context) {
|
|
1067
1104
|
return React__default.createElement(MediaCaption, {
|
|
@@ -1072,30 +1109,14 @@ var EmbedBlock = function EmbedBlock(_ref) {
|
|
|
1072
1109
|
};
|
|
1073
1110
|
|
|
1074
1111
|
var renderEmbed = function renderEmbed(style) {
|
|
1075
|
-
var html = block.data.html;
|
|
1076
|
-
|
|
1077
1112
|
switch (block.type) {
|
|
1078
1113
|
case 'gif':
|
|
1079
1114
|
{
|
|
1080
|
-
return React__default.createElement(
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
ref: wrapperElem,
|
|
1086
|
-
"data-frozen": videoFrozen
|
|
1087
|
-
}, React__default.createElement("video", {
|
|
1088
|
-
playsInline: true,
|
|
1089
|
-
muted: true,
|
|
1090
|
-
loop: true,
|
|
1091
|
-
autoPlay: true,
|
|
1092
|
-
preload: "metadata",
|
|
1093
|
-
"data-gif": block.data.gif_url,
|
|
1094
|
-
ref: videoElem
|
|
1095
|
-
}, React__default.createElement("source", {
|
|
1096
|
-
src: "https://meduza.io" + block.data.mp4_url,
|
|
1097
|
-
type: "video/mp4"
|
|
1098
|
-
}))));
|
|
1115
|
+
return React__default.createElement(EmbedGif, {
|
|
1116
|
+
gif: gifUrl,
|
|
1117
|
+
mp4Url: mp4Url,
|
|
1118
|
+
style: style
|
|
1119
|
+
});
|
|
1099
1120
|
}
|
|
1100
1121
|
|
|
1101
1122
|
case 'image':
|
|
@@ -1125,6 +1146,15 @@ var EmbedBlock = function EmbedBlock(_ref) {
|
|
|
1125
1146
|
}));
|
|
1126
1147
|
}
|
|
1127
1148
|
|
|
1149
|
+
case 'dots_on_image':
|
|
1150
|
+
{
|
|
1151
|
+
return React__default.createElement("div", {
|
|
1152
|
+
className: styles$h.figure
|
|
1153
|
+
}, React__default.createElement(DotsOnImage, {
|
|
1154
|
+
block: data
|
|
1155
|
+
}));
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1128
1158
|
default:
|
|
1129
1159
|
{
|
|
1130
1160
|
return React__default.createElement("div", {
|
|
@@ -1138,29 +1168,27 @@ var EmbedBlock = function EmbedBlock(_ref) {
|
|
|
1138
1168
|
})));
|
|
1139
1169
|
}
|
|
1140
1170
|
}
|
|
1141
|
-
};
|
|
1171
|
+
}; // Убираем из контекста все, что не начинается с приставки isIn,
|
|
1172
|
+
// чтобы не применились лишние модификаторы
|
|
1173
|
+
// TODO: в w6 модификаторы должны передаваться явно
|
|
1142
1174
|
|
|
1143
|
-
var style = {};
|
|
1144
|
-
var isProportional; // @TODO: Разобраться зачем это было нужно
|
|
1145
|
-
// const className = Object.keys(styleContext)
|
|
1146
|
-
// .filter(key => key.startsWith('isIn') && styles[key])
|
|
1147
|
-
// .reduce((acc, key) => {
|
|
1148
|
-
// acc.push([styles[key], true])
|
|
1149
|
-
// return acc
|
|
1150
|
-
// }, [])
|
|
1151
1175
|
|
|
1152
|
-
|
|
1176
|
+
var filteredContext = Object.keys(styleContext).filter(function (key) {
|
|
1177
|
+
return key.startsWith('isIn') && styles$h[key];
|
|
1178
|
+
}).reduce(function (acc, key) {
|
|
1179
|
+
acc.push([styles$h[key], true]);
|
|
1180
|
+
return acc;
|
|
1181
|
+
}, []);
|
|
1153
1182
|
|
|
1154
|
-
if (
|
|
1183
|
+
if (isProportional) {
|
|
1155
1184
|
style.paddingBottom = block.data.height / block.data.width * 100 + "%";
|
|
1156
1185
|
style.height = 0;
|
|
1157
|
-
isProportional = true;
|
|
1158
1186
|
}
|
|
1159
1187
|
|
|
1160
|
-
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.
|
|
1188
|
+
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]];
|
|
1161
1189
|
|
|
1162
1190
|
if (styleContext) {
|
|
1163
|
-
classNames = makeStyleContext(classNames,
|
|
1191
|
+
classNames = makeStyleContext(classNames, filteredContext, styles$h);
|
|
1164
1192
|
}
|
|
1165
1193
|
|
|
1166
1194
|
return React__default.createElement("figure", {
|
|
@@ -1872,6 +1900,7 @@ var RenderBlocks = function RenderBlocks(_ref) {
|
|
|
1872
1900
|
case 'embed_code':
|
|
1873
1901
|
case 'game_embed':
|
|
1874
1902
|
case 'image':
|
|
1903
|
+
case 'dots_on_image':
|
|
1875
1904
|
case 'gif':
|
|
1876
1905
|
return React__default.createElement(EmbedBlockContainer, {
|
|
1877
1906
|
block: block,
|