@gravity-ui/page-constructor 1.26.0-alpha.1 → 1.26.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.
Files changed (50) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/build/cjs/blocks/FilterBlock/FilterBlock.css +1 -5
  3. package/build/cjs/blocks/Icons/Icons.js +1 -1
  4. package/build/cjs/blocks/Share/Share.js +1 -2
  5. package/build/cjs/blocks/Tabs/Tabs.css +1 -5
  6. package/build/cjs/components/BackLink/BackLink.js +1 -2
  7. package/build/cjs/components/Button/Button.js +1 -2
  8. package/build/cjs/components/FileLink/FileLink.js +1 -2
  9. package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +1 -2
  10. package/build/cjs/components/Link/Link.js +1 -2
  11. package/build/cjs/components/ReactPlayer/ReactPlayer.js +3 -1
  12. package/build/cjs/components/ReactPlayer/utils.d.ts +1 -0
  13. package/build/cjs/components/ReactPlayer/utils.js +23 -0
  14. package/build/cjs/components/Title/Title.js +1 -2
  15. package/build/cjs/components/index.d.ts +0 -1
  16. package/build/cjs/components/index.js +1 -3
  17. package/build/cjs/models/constructor-items/common.d.ts +0 -2
  18. package/build/cjs/navigation/components/NavigationItem/components/GithubButton/GithubButton.js +1 -2
  19. package/build/cjs/navigation/components/SocialIcon/SocialIcon.js +1 -1
  20. package/build/cjs/sub-blocks/Quote/Quote.js +1 -1
  21. package/build/cjs/sub-blocks/Quote/schema.d.ts +3 -0
  22. package/build/cjs/sub-blocks/Quote/schema.js +2 -0
  23. package/build/esm/blocks/FilterBlock/FilterBlock.css +1 -5
  24. package/build/esm/blocks/Icons/Icons.js +2 -2
  25. package/build/esm/blocks/Share/Share.js +1 -2
  26. package/build/esm/blocks/Tabs/Tabs.css +1 -5
  27. package/build/esm/components/BackLink/BackLink.js +1 -2
  28. package/build/esm/components/Button/Button.js +1 -2
  29. package/build/esm/components/FileLink/FileLink.js +1 -2
  30. package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +1 -2
  31. package/build/esm/components/Link/Link.js +1 -2
  32. package/build/esm/components/ReactPlayer/ReactPlayer.js +3 -1
  33. package/build/esm/components/ReactPlayer/utils.d.ts +1 -0
  34. package/build/esm/components/ReactPlayer/utils.js +19 -0
  35. package/build/esm/components/Title/Title.js +1 -2
  36. package/build/esm/components/index.d.ts +0 -1
  37. package/build/esm/components/index.js +0 -1
  38. package/build/esm/models/constructor-items/common.d.ts +0 -2
  39. package/build/esm/navigation/components/NavigationItem/components/GithubButton/GithubButton.js +1 -2
  40. package/build/esm/navigation/components/SocialIcon/SocialIcon.js +2 -2
  41. package/build/esm/sub-blocks/Quote/Quote.js +2 -2
  42. package/build/esm/sub-blocks/Quote/schema.d.ts +3 -0
  43. package/build/esm/sub-blocks/Quote/schema.js +2 -0
  44. package/package.json +2 -2
  45. package/server/models/constructor-items/common.d.ts +0 -2
  46. package/styles/mixins.scss +1 -5
  47. package/build/cjs/components/LinkBase/LinkBase.d.ts +0 -3
  48. package/build/cjs/components/LinkBase/LinkBase.js +0 -18
  49. package/build/esm/components/LinkBase/LinkBase.d.ts +0 -3
  50. package/build/esm/components/LinkBase/LinkBase.js +0 -16
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.26.0](https://github.com/gravity-ui/page-constructor/compare/v1.25.2...v1.26.0) (2023-03-29)
4
+
5
+
6
+ ### Features
7
+
8
+ * dropdown a ReactPlayer version ([#254](https://github.com/gravity-ui/page-constructor/issues/254)) ([#257](https://github.com/gravity-ui/page-constructor/issues/257)) ([4fffe1b](https://github.com/gravity-ui/page-constructor/commit/4fffe1b6c88f8bd3d8583606d4d2edf1ab18eafb))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * add tag untagged ([ce9efcf](https://github.com/gravity-ui/page-constructor/commit/ce9efcfc74eaad2cbcf3cf79494f577b0eda09b3))
14
+ * **package:** up version ([#241](https://github.com/gravity-ui/page-constructor/issues/241)) ([9b6d3f2](https://github.com/gravity-ui/page-constructor/commit/9b6d3f2ecace4e1e51c52a4c422aa44850bbefec))
15
+ * remove description and inputs ([000a85e](https://github.com/gravity-ui/page-constructor/commit/000a85ee6d1d9fedb0cef74d990be4065a750efb))
16
+ * try to release version ([6fc35f2](https://github.com/gravity-ui/page-constructor/commit/6fc35f2043097f883b9ad87bb348f73cc138be1e))
17
+
18
+ ## [1.25.3](https://github.com/gravity-ui/page-constructor/compare/v1.25.2...v1.25.3) (2023-03-27)
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * **Tabs:** wrap tabs on desktop ([#237](https://github.com/gravity-ui/page-constructor/issues/237)) ([ac7dd3d](https://github.com/gravity-ui/page-constructor/commit/ac7dd3d3573c6d633d39f88507e2bfeeb41b4f8c))
24
+
3
25
  ## [1.25.2](https://github.com/gravity-ui/page-constructor/compare/v1.25.1...v1.25.2) (2023-03-21)
4
26
 
5
27
 
@@ -16,18 +16,14 @@ unpredictable css rules order in build */
16
16
  .pc-filter-block__tabs {
17
17
  margin-bottom: 0;
18
18
  display: flex;
19
- flex-wrap: nowrap;
19
+ flex-wrap: wrap;
20
20
  justify-content: flex-start;
21
- overflow: auto;
22
21
  }
23
22
  .pc-filter-block__tabs_centered {
24
- display: flex;
25
23
  justify-content: center;
26
- flex-wrap: wrap;
27
24
  }
28
25
  @media (max-width: 769px) {
29
26
  .pc-filter-block__tabs {
30
- display: flex;
31
27
  flex-wrap: nowrap;
32
28
  justify-content: flex-start;
33
29
  overflow: auto;
@@ -10,7 +10,7 @@ const Icons = ({ title, size = 's', items }) => {
10
10
  const { hostname } = (0, react_1.useContext)(locationContext_1.LocationContext);
11
11
  return (react_1.default.createElement("div", { className: b({ size }) },
12
12
  title && react_1.default.createElement(components_1.BlockHeader, { className: b('header'), title: title, colSizes: { all: 12 } }),
13
- items.map((item) => (react_1.default.createElement(components_1.LinkBase, Object.assign({ className: b('item'), key: item.url, href: item.url }, (0, utils_1.getLinkProps)(item.url, hostname)),
13
+ items.map((item) => (react_1.default.createElement("a", Object.assign({ className: b('item'), key: item.url, href: item.url }, (0, utils_1.getLinkProps)(item.url, hostname)),
14
14
  react_1.default.createElement(components_1.Image, { className: b('image'), src: item.src }),
15
15
  react_1.default.createElement("p", { className: b('text') }, item.text))))));
16
16
  };
@@ -13,7 +13,6 @@ const Twitter_1 = require("../../icons/Twitter");
13
13
  const Linkedin_1 = require("../../icons/Linkedin");
14
14
  const Vk_1 = require("../../icons/Vk");
15
15
  const Telegram_1 = require("../../icons/Telegram");
16
- const components_1 = require("../../components");
17
16
  const icons = {
18
17
  facebook: Facebook_1.Facebook,
19
18
  twitter: Twitter_1.Twitter,
@@ -32,7 +31,7 @@ const Share = ({ items, title }) => {
32
31
  const url = (0, utils_1.getAbsolutePath)(hostname, pathname);
33
32
  const socialUrl = (0, utils_1.getShareLink)(url, type);
34
33
  const icon = icons[type];
35
- return (react_1.default.createElement(uikit_1.Button, { key: type, view: "flat", size: "l", target: "_blank", href: socialUrl, component: components_1.RouterLink, className: b('item', { type: type.toLowerCase() }), onClick: handleButtonClick }, icon && react_1.default.createElement(uikit_1.Icon, { data: icon, size: 24, className: b('icon', { type }) })));
34
+ return (react_1.default.createElement(uikit_1.Button, { key: type, view: "flat", size: "l", target: "_blank", href: socialUrl, className: b('item', { type: type.toLowerCase() }), onClick: handleButtonClick }, icon && react_1.default.createElement(uikit_1.Icon, { data: icon, size: 24, className: b('icon', { type }) })));
36
35
  }))));
37
36
  };
38
37
  exports.default = Share;
@@ -16,18 +16,14 @@ unpredictable css rules order in build */
16
16
  .pc-tabs-block__tabs {
17
17
  margin-bottom: 20px;
18
18
  display: flex;
19
- flex-wrap: nowrap;
19
+ flex-wrap: wrap;
20
20
  justify-content: flex-start;
21
- overflow: auto;
22
21
  }
23
22
  .pc-tabs-block__tabs_centered {
24
- display: flex;
25
23
  justify-content: center;
26
- flex-wrap: wrap;
27
24
  }
28
25
  @media (max-width: 769px) {
29
26
  .pc-tabs-block__tabs {
30
- display: flex;
31
27
  flex-wrap: nowrap;
32
28
  justify-content: flex-start;
33
29
  overflow: auto;
@@ -7,7 +7,6 @@ const icons_1 = require("../../icons");
7
7
  const locationContext_1 = require("../../context/locationContext");
8
8
  const hooks_1 = require("../../hooks");
9
9
  const models_1 = require("../../models");
10
- const RouterLink_1 = tslib_1.__importDefault(require("../RouterLink/RouterLink"));
11
10
  function BackLink(props) {
12
11
  const { history } = (0, react_1.useContext)(locationContext_1.LocationContext);
13
12
  const { url, title, theme = 'default', size = 'l', className, shouldHandleBackAction = false, onClick, } = props;
@@ -27,7 +26,7 @@ function BackLink(props) {
27
26
  history.push({ pathname: url });
28
27
  }
29
28
  }, [handleAnalytics, history, onClick, url]);
30
- return (react_1.default.createElement(uikit_1.Button, { component: RouterLink_1.default, className: className, view: theme === 'special' ? 'flat-contrast' : 'flat-secondary', size: size, href: shouldHandleBackAction ? undefined : url, onClick: shouldHandleBackAction ? backActionHandler : undefined },
29
+ return (react_1.default.createElement(uikit_1.Button, { className: className, view: theme === 'special' ? 'flat-contrast' : 'flat-secondary', size: size, href: shouldHandleBackAction ? undefined : url, onClick: shouldHandleBackAction ? backActionHandler : undefined },
31
30
  react_1.default.createElement(uikit_1.Icon, { data: icons_1.ArrowSidebar, size: 24 }),
32
31
  react_1.default.createElement("span", null, title)));
33
32
  }
@@ -10,7 +10,6 @@ const localeContext_1 = require("../../context/localeContext/localeContext");
10
10
  const useMetrika_1 = require("../../hooks/useMetrika");
11
11
  const hooks_1 = require("../../hooks");
12
12
  const icons_1 = require("../../icons");
13
- const RouterLink_1 = tslib_1.__importDefault(require("../RouterLink/RouterLink"));
14
13
  const b = (0, utils_1.block)('button-block');
15
14
  const Button = (props) => {
16
15
  const handleMetrika = (0, useMetrika_1.useMetrika)();
@@ -43,7 +42,7 @@ const Button = (props) => {
43
42
  image = undefined;
44
43
  }
45
44
  const buttonTheme = theme === 'scale' ? 'accent' : theme;
46
- return (react_1.default.createElement(uikit_1.Button, Object.assign({ className: buttonClass, view: (0, utils_2.toCommonView)(buttonTheme), size: (0, utils_2.toCommonSize)(size), href: url ? (0, utils_1.setUrlTld)(url, tld) : undefined, component: RouterLink_1.default }, buttonProps),
45
+ return (react_1.default.createElement(uikit_1.Button, Object.assign({ className: buttonClass, view: (0, utils_2.toCommonView)(buttonTheme), size: (0, utils_2.toCommonSize)(size), href: url ? (0, utils_1.setUrlTld)(url, tld) : undefined }, buttonProps),
47
46
  icon && buttonImg.position === 'left' ? icon : null,
48
47
  react_1.default.createElement("span", { className: b('content') },
49
48
  image && buttonImg.position === 'left' ? image : null,
@@ -5,7 +5,6 @@ const tslib_1 = require("tslib");
5
5
  const utils_1 = require("../../utils");
6
6
  const react_1 = tslib_1.__importStar(require("react"));
7
7
  const locationContext_1 = require("../../context/locationContext");
8
- const LinkBase_1 = tslib_1.__importDefault(require("../LinkBase/LinkBase"));
9
8
  const b = (0, utils_1.block)('file-link');
10
9
  const FIGMA_URL = 'https://www.figma.com';
11
10
  var FileExtension;
@@ -32,6 +31,6 @@ const FileLink = (props) => {
32
31
  return (react_1.default.createElement("div", { className: b({ ext: fileExt, type, size: textSize, theme }, className) },
33
32
  Object.values(FileExtension).includes(fileExt) && (react_1.default.createElement("div", { className: b('file-label') }, fileExt)),
34
33
  react_1.default.createElement("div", { className: b('link') },
35
- react_1.default.createElement(LinkBase_1.default, Object.assign({ href: href }, (0, utils_1.getLinkProps)(href, hostname), { onClick: onClick }), text))));
34
+ react_1.default.createElement("a", Object.assign({ href: href }, (0, utils_1.getLinkProps)(href, hostname), { onClick: onClick }), text))));
36
35
  };
37
36
  exports.default = FileLink;
@@ -4,7 +4,6 @@ const tslib_1 = require("tslib");
4
4
  const react_1 = tslib_1.__importDefault(require("react"));
5
5
  const utils_1 = require("../../utils");
6
6
  const useMetrika_1 = require("../../hooks/useMetrika");
7
- const LinkBase_1 = tslib_1.__importDefault(require("../LinkBase/LinkBase"));
8
7
  const b = (0, utils_1.block)('header-breadcrumbs');
9
8
  function HeaderBreadcrumbs(props) {
10
9
  const { items, metrikaGoals, pixelEvents, theme = 'light', className } = props;
@@ -13,6 +12,6 @@ function HeaderBreadcrumbs(props) {
13
12
  handleMetrika({ metrikaGoals, pixelEvents });
14
13
  };
15
14
  return (react_1.default.createElement("div", { className: b({ theme }, className) }, items.map((item) => (react_1.default.createElement("div", { className: b('item'), key: item.url },
16
- react_1.default.createElement(LinkBase_1.default, { href: item.url, className: b('text'), onClick: onClick }, item.text))))));
15
+ react_1.default.createElement("a", { href: item.url, className: b('text'), onClick: onClick }, item.text))))));
17
16
  }
18
17
  exports.default = HeaderBreadcrumbs;
@@ -6,7 +6,6 @@ const uikit_1 = require("@gravity-ui/uikit");
6
6
  const utils_1 = require("../../utils");
7
7
  const models_1 = require("../../models");
8
8
  const icons_1 = require("../../icons");
9
- const LinkBase_1 = tslib_1.__importDefault(require("../LinkBase/LinkBase"));
10
9
  const FileLink_1 = tslib_1.__importDefault(require("../FileLink/FileLink"));
11
10
  const BackLink_1 = tslib_1.__importDefault(require("../BackLink/BackLink"));
12
11
  const localeContext_1 = require("../../context/localeContext/localeContext");
@@ -49,7 +48,7 @@ const LinkBlock = (props) => {
49
48
  case 'normal': {
50
49
  const linkProps = (0, utils_1.getLinkProps)(url, hostname, target);
51
50
  const content = children || text;
52
- return (react_1.default.createElement(LinkBase_1.default, Object.assign({ className: b('link', { theme: colorTheme, 'has-arrow': arrow }), href: href, onClick: onClick }, linkProps), arrow ? (react_1.default.createElement(react_1.Fragment, null,
51
+ return (react_1.default.createElement("a", Object.assign({ className: b('link', { theme: colorTheme, 'has-arrow': arrow }), href: href, onClick: onClick }, linkProps), arrow ? (react_1.default.createElement(react_1.Fragment, null,
53
52
  react_1.default.createElement("span", { className: b('content') }, content),
54
53
  WORD_JOINER_SYM,
55
54
  react_1.default.createElement(uikit_1.Icon, { className: b('arrow'), data: icons_1.Chevron, size: getArrowSize(textSize) }))) : (content)));
@@ -14,6 +14,7 @@ const metrikaContext_1 = require("../../context/metrikaContext");
14
14
  const mobileContext_1 = require("../../context/mobileContext");
15
15
  const hooks_1 = require("../../hooks");
16
16
  const icons_1 = require("../../icons");
17
+ const utils_2 = require("./utils");
17
18
  const b = (0, utils_1.block)('ReactPlayer');
18
19
  const FPS = 60;
19
20
  // eslint-disable-next-line react/display-name
@@ -35,6 +36,7 @@ exports.ReactPlayerBlock = react_1.default.forwardRef((props, originRef) => {
35
36
  const [started, setStarted] = (0, react_1.useState)(autoPlay);
36
37
  const [paused, setPaused] = (0, react_1.useState)(false);
37
38
  const [ended, setEnded] = (0, react_1.useState)(false);
39
+ const videoSrc = (0, react_1.useMemo)(() => (0, utils_2.checkYoutubeVideos)(src), [src]);
38
40
  const eventsArray = (0, react_1.useMemo)(() => {
39
41
  if (analyticsEvents) {
40
42
  return Array.isArray(analyticsEvents) ? analyticsEvents : [analyticsEvents];
@@ -193,7 +195,7 @@ exports.ReactPlayerBlock = react_1.default.forwardRef((props, originRef) => {
193
195
  }, elapsedTimePercent: elapsedTimePercent }));
194
196
  }, [controls, isPlaying, customBarControlsClassName, changeMute]);
195
197
  return (react_1.default.createElement("div", { className: b({ wrapper: !currentHeight }, className), ref: ref, onClick: handleClick },
196
- react_1.default.createElement(react_player_1.default, { className: b('player'), url: src, muted: muted, controls: controls === models_1.MediaVideoControlsType.Default, height: currentHeight || '100%', width: width || '100%', light: previewImgUrl, playing: isPlaying, playIcon: playIcon, progressInterval: FPS, onClickPreview: handleClickPreview, onStart: onStart, onReady: setPlayerRef, onPlay: onPlay, onPause: onPause, onProgress: onProgress, onEnded: onEnded }),
198
+ react_1.default.createElement(react_player_1.default, { className: b('player'), url: videoSrc, muted: muted, controls: controls === models_1.MediaVideoControlsType.Default, height: currentHeight || '100%', width: width || '100%', light: previewImgUrl, playing: isPlaying, playIcon: playIcon, progressInterval: FPS, onClickPreview: handleClickPreview, onStart: onStart, onReady: setPlayerRef, onPlay: onPlay, onPause: onPause, onProgress: onProgress, onEnded: onEnded }),
197
199
  renderCustomBarControls(muted, playedPercent)));
198
200
  });
199
201
  function getHeight(width) {
@@ -0,0 +1 @@
1
+ export declare const checkYoutubeVideos: (src: string | string[]) => string | string[];
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkYoutubeVideos = void 0;
4
+ // the file serves to support live video with react-player@2.9
5
+ const LIVE_YUOTUBE_VIDEO_REGEX = /(?:youtu\.be\/live\/|youtube(?:-nocookie)?\.com\/(?:live\/))((\w|-){11})/;
6
+ const YOUTUBE_VIDEO_TEMPLATE = 'https://www.youtube.com/watch?v=';
7
+ const checkYoutubeVideos = (src) => {
8
+ if (Array.isArray(src)) {
9
+ return src.map((videoUrl) => {
10
+ var _a;
11
+ if (LIVE_YUOTUBE_VIDEO_REGEX.test(videoUrl)) {
12
+ const youtubeLiveId = (_a = videoUrl.match(LIVE_YUOTUBE_VIDEO_REGEX)) === null || _a === void 0 ? void 0 : _a[1];
13
+ if (!youtubeLiveId) {
14
+ return videoUrl;
15
+ }
16
+ return `${YOUTUBE_VIDEO_TEMPLATE}${youtubeLiveId}`;
17
+ }
18
+ return videoUrl;
19
+ });
20
+ }
21
+ return src;
22
+ };
23
+ exports.checkYoutubeVideos = checkYoutubeVideos;
@@ -5,7 +5,6 @@ const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
6
  const utils_1 = require("../../utils");
7
7
  const Anchor_1 = tslib_1.__importDefault(require("../Anchor/Anchor"));
8
- const LinkBase_1 = tslib_1.__importDefault(require("../LinkBase/LinkBase"));
9
8
  const __1 = require("../");
10
9
  const locationContext_1 = require("../../context/locationContext");
11
10
  const mobileContext_1 = require("../../context/mobileContext");
@@ -41,7 +40,7 @@ const Title = (props) => {
41
40
  content = textMarkup;
42
41
  }
43
42
  else if (url) {
44
- content = (react_1.default.createElement(LinkBase_1.default, Object.assign({ className: b('link'), href: url }, (0, utils_1.getLinkProps)(url, hostname), { onClick: onClick }), insideClickableContent));
43
+ content = (react_1.default.createElement("a", Object.assign({ className: b('link'), href: url }, (0, utils_1.getLinkProps)(url, hostname), { onClick: onClick }), insideClickableContent));
45
44
  }
46
45
  else if (onClick) {
47
46
  content = (react_1.default.createElement("span", { className: b('link'), onClick: onClick }, insideClickableContent));
@@ -17,7 +17,6 @@ export { default as HeaderBreadcrumbs } from './HeaderBreadcrumbs/HeaderBreadcru
17
17
  export { default as HeightCalculator } from './HeightCalculator/HeightCalculator';
18
18
  export { default as Image } from './Image/Image';
19
19
  export { default as Link } from './Link/Link';
20
- export { default as LinkBase } from './LinkBase/LinkBase';
21
20
  export { default as Links } from './Link/Links';
22
21
  export { default as Media } from './Media/Media';
23
22
  export { default as OutsideClick } from './OutsideClick/OutsideClick';
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.FullScreenMedia = exports.MetaInfo = exports.HTML = exports.RouterLink = exports.Author = exports.OverflowScroller = exports.Control = exports.YandexForm = exports.YFMWrapper = exports.VideoBlock = exports.UnpublishedLabel = exports.ToggleArrow = exports.Title = exports.Table = exports.ReactPlayer = exports.OutsideClick = exports.Media = exports.Links = exports.LinkBase = exports.Link = exports.Image = exports.HeightCalculator = exports.HeaderBreadcrumbs = exports.FullWidthBackground = exports.FullscreenImage = exports.Foldable = exports.FileLink = exports.ErrorWrapper = exports.CardBase = exports.Button = exports.BlockHeader = exports.BlockBase = exports.BalancedMasonry = exports.BackLink = exports.BackgroundMedia = exports.BackgroundImage = exports.AnimateBlock = exports.Anchor = void 0;
6
+ exports.FullScreenMedia = exports.MetaInfo = exports.HTML = exports.RouterLink = exports.Author = exports.OverflowScroller = exports.Control = exports.YandexForm = exports.YFMWrapper = exports.VideoBlock = exports.UnpublishedLabel = exports.ToggleArrow = exports.Title = exports.Table = exports.ReactPlayer = exports.OutsideClick = exports.Media = exports.Links = exports.Link = exports.Image = exports.HeightCalculator = exports.HeaderBreadcrumbs = exports.FullWidthBackground = exports.FullscreenImage = exports.Foldable = exports.FileLink = exports.ErrorWrapper = exports.CardBase = exports.Button = exports.BlockHeader = exports.BlockBase = exports.BalancedMasonry = exports.BackLink = exports.BackgroundMedia = exports.BackgroundImage = exports.AnimateBlock = exports.Anchor = void 0;
7
7
  var Anchor_1 = require("./Anchor/Anchor");
8
8
  Object.defineProperty(exports, "Anchor", { enumerable: true, get: function () { return __importDefault(Anchor_1).default; } });
9
9
  var AnimateBlock_1 = require("./AnimateBlock/AnimateBlock");
@@ -42,8 +42,6 @@ var Image_1 = require("./Image/Image");
42
42
  Object.defineProperty(exports, "Image", { enumerable: true, get: function () { return __importDefault(Image_1).default; } });
43
43
  var Link_1 = require("./Link/Link");
44
44
  Object.defineProperty(exports, "Link", { enumerable: true, get: function () { return __importDefault(Link_1).default; } });
45
- var LinkBase_1 = require("./LinkBase/LinkBase");
46
- Object.defineProperty(exports, "LinkBase", { enumerable: true, get: function () { return __importDefault(LinkBase_1).default; } });
47
45
  var Links_1 = require("./Link/Links");
48
46
  Object.defineProperty(exports, "Links", { enumerable: true, get: function () { return __importDefault(Links_1).default; } });
49
47
  var Media_1 = require("./Media/Media");
@@ -111,8 +111,6 @@ export interface MediaVideoProps extends AnalyticsEventsBase {
111
111
  controls?: MediaVideoControlsType;
112
112
  metrika?: MetrikaVideo;
113
113
  }
114
- export interface LinkBaseProps extends React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement> {
115
- }
116
114
  export interface LinkProps extends AnalyticsEventsBase, Stylable {
117
115
  url: string;
118
116
  text?: string;
@@ -5,7 +5,6 @@ const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
6
  const utils_1 = require("../../../../../utils");
7
7
  const models_1 = require("../../../../../models");
8
- const components_1 = require("../../../../../components");
9
8
  const b = (0, utils_1.block)('github-button');
10
9
  const DEFAULT_LABEL = 'Stars on GitHub';
11
10
  /* More information about github-buttons in https://buttons.github.io/ */
@@ -43,6 +42,6 @@ const GithubButton = ({ text, url, className, label, size, icon, }) => {
43
42
  }, []);
44
43
  return (react_1.default.createElement("div", { className: b(null, className) },
45
44
  react_1.default.createElement("span", { ref: containerRef },
46
- react_1.default.createElement(components_1.LinkBase, Object.assign({ href: url, ref: linkRef, "data-show-count": "true", "aria-label": label || DEFAULT_LABEL }, (icon && { 'data-icon': models_1.NavigationGithubButtonIcon[icon] }), (size && { 'data-size': size })), text))));
45
+ react_1.default.createElement("a", Object.assign({ href: url, ref: linkRef, "data-show-count": "true", "aria-label": label || DEFAULT_LABEL }, (icon && { 'data-icon': models_1.NavigationGithubButtonIcon[icon] }), (size && { 'data-size': size })), text))));
47
46
  };
48
47
  exports.GithubButton = GithubButton;
@@ -8,7 +8,7 @@ const utils_2 = require("../../../components/Media/Image/utils");
8
8
  const b = (0, utils_1.block)('social-icon');
9
9
  const SocialIcon = ({ icon, url, className }) => {
10
10
  const iconData = (0, utils_2.getMediaImage)(icon);
11
- return (react_1.default.createElement(components_1.LinkBase, { href: url, target: "_blank", rel: "noopener noreferrer", className: b(null, className) },
11
+ return (react_1.default.createElement("a", { href: url, target: "_blank", rel: "noopener noreferrer", className: b(null, className) },
12
12
  react_1.default.createElement(components_1.Image, Object.assign({ className: b('icon') }, iconData))));
13
13
  };
14
14
  exports.default = SocialIcon;
@@ -19,7 +19,7 @@ const Quote = (props) => {
19
19
  const handleButtonClick = (0, react_1.useCallback)(() => handleAnalytics(), [handleAnalytics]);
20
20
  const renderFooter = Boolean(author || url) && (react_1.default.createElement("div", { className: b('author-wrapper') },
21
21
  author && (react_1.default.createElement(components_1.Author, { className: b('author', { theme: textTheme }), author: author, type: models_1.AuthorType.Line })),
22
- url && buttonText && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", href: url, component: components_1.RouterLink, className: b('link-button', { theme: textTheme }), onClick: handleButtonClick }, buttonText))));
22
+ url && buttonText && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", href: url, className: b('link-button', { theme: textTheme }), onClick: handleButtonClick }, buttonText))));
23
23
  return (react_1.default.createElement("div", { className: b({ theme: textTheme, border }), style: color ? { backgroundColor: color } : {} },
24
24
  react_1.default.createElement("div", { key: text, className: b('content-wrapper') },
25
25
  react_1.default.createElement("div", null,
@@ -38,6 +38,9 @@ export declare const Quote: {
38
38
  type: string;
39
39
  pattern: string;
40
40
  };
41
+ buttonText: {
42
+ type: string;
43
+ };
41
44
  theme: {
42
45
  type: string;
43
46
  enum: string[];
@@ -18,6 +18,8 @@ exports.Quote = {
18
18
  }, url: {
19
19
  type: 'string',
20
20
  pattern: schema_1.urlPattern,
21
+ }, buttonText: {
22
+ type: 'string',
21
23
  }, theme: common_1.ThemeProps, author: common_1.authorItem }),
22
24
  },
23
25
  };
@@ -16,18 +16,14 @@ unpredictable css rules order in build */
16
16
  .pc-filter-block__tabs {
17
17
  margin-bottom: 0;
18
18
  display: flex;
19
- flex-wrap: nowrap;
19
+ flex-wrap: wrap;
20
20
  justify-content: flex-start;
21
- overflow: auto;
22
21
  }
23
22
  .pc-filter-block__tabs_centered {
24
- display: flex;
25
23
  justify-content: center;
26
- flex-wrap: wrap;
27
24
  }
28
25
  @media (max-width: 769px) {
29
26
  .pc-filter-block__tabs {
30
- display: flex;
31
27
  flex-wrap: nowrap;
32
28
  justify-content: flex-start;
33
29
  overflow: auto;
@@ -1,6 +1,6 @@
1
1
  import React, { useContext } from 'react';
2
2
  import { block, getLinkProps } from '../../utils';
3
- import { BlockHeader, Image, LinkBase } from '../../components';
3
+ import { BlockHeader, Image } from '../../components';
4
4
  import { LocationContext } from '../../context/locationContext';
5
5
  import './Icons.css';
6
6
  const b = block('icons-block');
@@ -8,7 +8,7 @@ const Icons = ({ title, size = 's', items }) => {
8
8
  const { hostname } = useContext(LocationContext);
9
9
  return (React.createElement("div", { className: b({ size }) },
10
10
  title && React.createElement(BlockHeader, { className: b('header'), title: title, colSizes: { all: 12 } }),
11
- items.map((item) => (React.createElement(LinkBase, Object.assign({ className: b('item'), key: item.url, href: item.url }, getLinkProps(item.url, hostname)),
11
+ items.map((item) => (React.createElement("a", Object.assign({ className: b('item'), key: item.url, href: item.url }, getLinkProps(item.url, hostname)),
12
12
  React.createElement(Image, { className: b('image'), src: item.src }),
13
13
  React.createElement("p", { className: b('text') }, item.text))))));
14
14
  };
@@ -10,7 +10,6 @@ import { Twitter } from '../../icons/Twitter';
10
10
  import { Linkedin } from '../../icons/Linkedin';
11
11
  import { Vk } from '../../icons/Vk';
12
12
  import { Telegram } from '../../icons/Telegram';
13
- import { RouterLink } from '../../components';
14
13
  import './Share.css';
15
14
  const icons = {
16
15
  facebook: Facebook,
@@ -30,7 +29,7 @@ const Share = ({ items, title }) => {
30
29
  const url = getAbsolutePath(hostname, pathname);
31
30
  const socialUrl = getShareLink(url, type);
32
31
  const icon = icons[type];
33
- return (React.createElement(Button, { key: type, view: "flat", size: "l", target: "_blank", href: socialUrl, component: RouterLink, className: b('item', { type: type.toLowerCase() }), onClick: handleButtonClick }, icon && React.createElement(Icon, { data: icon, size: 24, className: b('icon', { type }) })));
32
+ return (React.createElement(Button, { key: type, view: "flat", size: "l", target: "_blank", href: socialUrl, className: b('item', { type: type.toLowerCase() }), onClick: handleButtonClick }, icon && React.createElement(Icon, { data: icon, size: 24, className: b('icon', { type }) })));
34
33
  }))));
35
34
  };
36
35
  export default Share;
@@ -16,18 +16,14 @@ unpredictable css rules order in build */
16
16
  .pc-tabs-block__tabs {
17
17
  margin-bottom: 20px;
18
18
  display: flex;
19
- flex-wrap: nowrap;
19
+ flex-wrap: wrap;
20
20
  justify-content: flex-start;
21
- overflow: auto;
22
21
  }
23
22
  .pc-tabs-block__tabs_centered {
24
- display: flex;
25
23
  justify-content: center;
26
- flex-wrap: wrap;
27
24
  }
28
25
  @media (max-width: 769px) {
29
26
  .pc-tabs-block__tabs {
30
- display: flex;
31
27
  flex-wrap: nowrap;
32
28
  justify-content: flex-start;
33
29
  overflow: auto;
@@ -4,7 +4,6 @@ import { ArrowSidebar } from '../../icons';
4
4
  import { LocationContext } from '../../context/locationContext';
5
5
  import { useAnalytics } from '../../hooks';
6
6
  import { DefaultEventNames } from '../../models';
7
- import RouterLink from '../RouterLink/RouterLink';
8
7
  export default function BackLink(props) {
9
8
  const { history } = useContext(LocationContext);
10
9
  const { url, title, theme = 'default', size = 'l', className, shouldHandleBackAction = false, onClick, } = props;
@@ -24,7 +23,7 @@ export default function BackLink(props) {
24
23
  history.push({ pathname: url });
25
24
  }
26
25
  }, [handleAnalytics, history, onClick, url]);
27
- return (React.createElement(Button, { component: RouterLink, className: className, view: theme === 'special' ? 'flat-contrast' : 'flat-secondary', size: size, href: shouldHandleBackAction ? undefined : url, onClick: shouldHandleBackAction ? backActionHandler : undefined },
26
+ return (React.createElement(Button, { className: className, view: theme === 'special' ? 'flat-contrast' : 'flat-secondary', size: size, href: shouldHandleBackAction ? undefined : url, onClick: shouldHandleBackAction ? backActionHandler : undefined },
28
27
  React.createElement(Icon, { data: ArrowSidebar, size: 24 }),
29
28
  React.createElement("span", null, title)));
30
29
  }
@@ -8,7 +8,6 @@ import { LocaleContext } from '../../context/localeContext/localeContext';
8
8
  import { useMetrika } from '../../hooks/useMetrika';
9
9
  import { useAnalytics } from '../../hooks';
10
10
  import { Github } from '../../icons';
11
- import RouterLink from '../RouterLink/RouterLink';
12
11
  import './Button.css';
13
12
  const b = block('button-block');
14
13
  const Button = (props) => {
@@ -42,7 +41,7 @@ const Button = (props) => {
42
41
  image = undefined;
43
42
  }
44
43
  const buttonTheme = theme === 'scale' ? 'accent' : theme;
45
- return (React.createElement(CommonButton, Object.assign({ className: buttonClass, view: toCommonView(buttonTheme), size: toCommonSize(size), href: url ? setUrlTld(url, tld) : undefined, component: RouterLink }, buttonProps),
44
+ return (React.createElement(CommonButton, Object.assign({ className: buttonClass, view: toCommonView(buttonTheme), size: toCommonSize(size), href: url ? setUrlTld(url, tld) : undefined }, buttonProps),
46
45
  icon && buttonImg.position === 'left' ? icon : null,
47
46
  React.createElement("span", { className: b('content') },
48
47
  image && buttonImg.position === 'left' ? image : null,
@@ -1,7 +1,6 @@
1
1
  import { block, getLinkProps } from '../../utils';
2
2
  import React, { useContext } from 'react';
3
3
  import { LocationContext } from '../../context/locationContext';
4
- import LinkBase from '../LinkBase/LinkBase';
5
4
  import './FileLink.css';
6
5
  const b = block('file-link');
7
6
  const FIGMA_URL = 'https://www.figma.com';
@@ -28,6 +27,6 @@ const FileLink = (props) => {
28
27
  return (React.createElement("div", { className: b({ ext: fileExt, type, size: textSize, theme }, className) },
29
28
  Object.values(FileExtension).includes(fileExt) && (React.createElement("div", { className: b('file-label') }, fileExt)),
30
29
  React.createElement("div", { className: b('link') },
31
- React.createElement(LinkBase, Object.assign({ href: href }, getLinkProps(href, hostname), { onClick: onClick }), text))));
30
+ React.createElement("a", Object.assign({ href: href }, getLinkProps(href, hostname), { onClick: onClick }), text))));
32
31
  };
33
32
  export default FileLink;
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
2
  import { block } from '../../utils';
3
3
  import { useMetrika } from '../../hooks/useMetrika';
4
- import LinkBase from '../LinkBase/LinkBase';
5
4
  import './HeaderBreadcrumbs.css';
6
5
  const b = block('header-breadcrumbs');
7
6
  export default function HeaderBreadcrumbs(props) {
@@ -11,5 +10,5 @@ export default function HeaderBreadcrumbs(props) {
11
10
  handleMetrika({ metrikaGoals, pixelEvents });
12
11
  };
13
12
  return (React.createElement("div", { className: b({ theme }, className) }, items.map((item) => (React.createElement("div", { className: b('item'), key: item.url },
14
- React.createElement(LinkBase, { href: item.url, className: b('text'), onClick: onClick }, item.text))))));
13
+ React.createElement("a", { href: item.url, className: b('text'), onClick: onClick }, item.text))))));
15
14
  }
@@ -3,7 +3,6 @@ import { Icon } from '@gravity-ui/uikit';
3
3
  import { block, getLinkProps, setUrlTld } from '../../utils';
4
4
  import { DefaultEventNames } from '../../models';
5
5
  import { Chevron } from '../../icons';
6
- import LinkBase from '../LinkBase/LinkBase';
7
6
  import FileLink from '../FileLink/FileLink';
8
7
  import BackLink from '../BackLink/BackLink';
9
8
  import { LocaleContext } from '../../context/localeContext/localeContext';
@@ -47,7 +46,7 @@ const LinkBlock = (props) => {
47
46
  case 'normal': {
48
47
  const linkProps = getLinkProps(url, hostname, target);
49
48
  const content = children || text;
50
- return (React.createElement(LinkBase, Object.assign({ className: b('link', { theme: colorTheme, 'has-arrow': arrow }), href: href, onClick: onClick }, linkProps), arrow ? (React.createElement(Fragment, null,
49
+ return (React.createElement("a", Object.assign({ className: b('link', { theme: colorTheme, 'has-arrow': arrow }), href: href, onClick: onClick }, linkProps), arrow ? (React.createElement(Fragment, null,
51
50
  React.createElement("span", { className: b('content') }, content),
52
51
  WORD_JOINER_SYM,
53
52
  React.createElement(Icon, { className: b('arrow'), data: Chevron, size: getArrowSize(textSize) }))) : (content)));
@@ -10,6 +10,7 @@ import { MetrikaContext } from '../../context/metrikaContext';
10
10
  import { MobileContext } from '../../context/mobileContext';
11
11
  import { useAnalytics } from '../../hooks';
12
12
  import { PlayVideo } from '../../icons';
13
+ import { checkYoutubeVideos } from './utils';
13
14
  import './ReactPlayer.css';
14
15
  const b = block('ReactPlayer');
15
16
  const FPS = 60;
@@ -32,6 +33,7 @@ export const ReactPlayerBlock = React.forwardRef((props, originRef) => {
32
33
  const [started, setStarted] = useState(autoPlay);
33
34
  const [paused, setPaused] = useState(false);
34
35
  const [ended, setEnded] = useState(false);
36
+ const videoSrc = useMemo(() => checkYoutubeVideos(src), [src]);
35
37
  const eventsArray = useMemo(() => {
36
38
  if (analyticsEvents) {
37
39
  return Array.isArray(analyticsEvents) ? analyticsEvents : [analyticsEvents];
@@ -190,7 +192,7 @@ export const ReactPlayerBlock = React.forwardRef((props, originRef) => {
190
192
  }, elapsedTimePercent: elapsedTimePercent }));
191
193
  }, [controls, isPlaying, customBarControlsClassName, changeMute]);
192
194
  return (React.createElement("div", { className: b({ wrapper: !currentHeight }, className), ref: ref, onClick: handleClick },
193
- React.createElement(ReactPlayer, { className: b('player'), url: src, muted: muted, controls: controls === MediaVideoControlsType.Default, height: currentHeight || '100%', width: width || '100%', light: previewImgUrl, playing: isPlaying, playIcon: playIcon, progressInterval: FPS, onClickPreview: handleClickPreview, onStart: onStart, onReady: setPlayerRef, onPlay: onPlay, onPause: onPause, onProgress: onProgress, onEnded: onEnded }),
195
+ React.createElement(ReactPlayer, { className: b('player'), url: videoSrc, muted: muted, controls: controls === MediaVideoControlsType.Default, height: currentHeight || '100%', width: width || '100%', light: previewImgUrl, playing: isPlaying, playIcon: playIcon, progressInterval: FPS, onClickPreview: handleClickPreview, onStart: onStart, onReady: setPlayerRef, onPlay: onPlay, onPause: onPause, onProgress: onProgress, onEnded: onEnded }),
194
196
  renderCustomBarControls(muted, playedPercent)));
195
197
  });
196
198
  function getHeight(width) {
@@ -0,0 +1 @@
1
+ export declare const checkYoutubeVideos: (src: string | string[]) => string | string[];
@@ -0,0 +1,19 @@
1
+ // the file serves to support live video with react-player@2.9
2
+ const LIVE_YUOTUBE_VIDEO_REGEX = /(?:youtu\.be\/live\/|youtube(?:-nocookie)?\.com\/(?:live\/))((\w|-){11})/;
3
+ const YOUTUBE_VIDEO_TEMPLATE = 'https://www.youtube.com/watch?v=';
4
+ export const checkYoutubeVideos = (src) => {
5
+ if (Array.isArray(src)) {
6
+ return src.map((videoUrl) => {
7
+ var _a;
8
+ if (LIVE_YUOTUBE_VIDEO_REGEX.test(videoUrl)) {
9
+ const youtubeLiveId = (_a = videoUrl.match(LIVE_YUOTUBE_VIDEO_REGEX)) === null || _a === void 0 ? void 0 : _a[1];
10
+ if (!youtubeLiveId) {
11
+ return videoUrl;
12
+ }
13
+ return `${YOUTUBE_VIDEO_TEMPLATE}${youtubeLiveId}`;
14
+ }
15
+ return videoUrl;
16
+ });
17
+ }
18
+ return src;
19
+ };
@@ -1,7 +1,6 @@
1
1
  import React, { Fragment, useContext } from 'react';
2
2
  import { block, getHeaderTag, getLinkProps } from '../../utils';
3
3
  import Anchor from '../Anchor/Anchor';
4
- import LinkBase from '../LinkBase/LinkBase';
5
4
  import { ToggleArrow, HTML } from '../';
6
5
  import { LocationContext } from '../../context/locationContext';
7
6
  import { MobileContext } from '../../context/mobileContext';
@@ -37,7 +36,7 @@ const Title = (props) => {
37
36
  content = textMarkup;
38
37
  }
39
38
  else if (url) {
40
- content = (React.createElement(LinkBase, Object.assign({ className: b('link'), href: url }, getLinkProps(url, hostname), { onClick: onClick }), insideClickableContent));
39
+ content = (React.createElement("a", Object.assign({ className: b('link'), href: url }, getLinkProps(url, hostname), { onClick: onClick }), insideClickableContent));
41
40
  }
42
41
  else if (onClick) {
43
42
  content = (React.createElement("span", { className: b('link'), onClick: onClick }, insideClickableContent));
@@ -17,7 +17,6 @@ export { default as HeaderBreadcrumbs } from './HeaderBreadcrumbs/HeaderBreadcru
17
17
  export { default as HeightCalculator } from './HeightCalculator/HeightCalculator';
18
18
  export { default as Image } from './Image/Image';
19
19
  export { default as Link } from './Link/Link';
20
- export { default as LinkBase } from './LinkBase/LinkBase';
21
20
  export { default as Links } from './Link/Links';
22
21
  export { default as Media } from './Media/Media';
23
22
  export { default as OutsideClick } from './OutsideClick/OutsideClick';
@@ -17,7 +17,6 @@ export { default as HeaderBreadcrumbs } from './HeaderBreadcrumbs/HeaderBreadcru
17
17
  export { default as HeightCalculator } from './HeightCalculator/HeightCalculator';
18
18
  export { default as Image } from './Image/Image';
19
19
  export { default as Link } from './Link/Link';
20
- export { default as LinkBase } from './LinkBase/LinkBase';
21
20
  export { default as Links } from './Link/Links';
22
21
  export { default as Media } from './Media/Media';
23
22
  export { default as OutsideClick } from './OutsideClick/OutsideClick';
@@ -111,8 +111,6 @@ export interface MediaVideoProps extends AnalyticsEventsBase {
111
111
  controls?: MediaVideoControlsType;
112
112
  metrika?: MetrikaVideo;
113
113
  }
114
- export interface LinkBaseProps extends React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement> {
115
- }
116
114
  export interface LinkProps extends AnalyticsEventsBase, Stylable {
117
115
  url: string;
118
116
  text?: string;
@@ -1,7 +1,6 @@
1
1
  import React, { useRef, useEffect } from 'react';
2
2
  import { block } from '../../../../../utils';
3
3
  import { NavigationGithubButtonIcon } from '../../../../../models';
4
- import { LinkBase } from '../../../../../components';
5
4
  import './GithubButton.css';
6
5
  const b = block('github-button');
7
6
  const DEFAULT_LABEL = 'Stars on GitHub';
@@ -40,5 +39,5 @@ export const GithubButton = ({ text, url, className, label, size, icon, }) => {
40
39
  }, []);
41
40
  return (React.createElement("div", { className: b(null, className) },
42
41
  React.createElement("span", { ref: containerRef },
43
- React.createElement(LinkBase, Object.assign({ href: url, ref: linkRef, "data-show-count": "true", "aria-label": label || DEFAULT_LABEL }, (icon && { 'data-icon': NavigationGithubButtonIcon[icon] }), (size && { 'data-size': size })), text))));
42
+ React.createElement("a", Object.assign({ href: url, ref: linkRef, "data-show-count": "true", "aria-label": label || DEFAULT_LABEL }, (icon && { 'data-icon': NavigationGithubButtonIcon[icon] }), (size && { 'data-size': size })), text))));
44
43
  };
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
2
  import { block } from '../../../utils';
3
- import { Image, LinkBase } from '../../../components';
3
+ import { Image } from '../../../components';
4
4
  import { getMediaImage } from '../../../components/Media/Image/utils';
5
5
  import './SocialIcon.css';
6
6
  const b = block('social-icon');
7
7
  const SocialIcon = ({ icon, url, className }) => {
8
8
  const iconData = getMediaImage(icon);
9
- return (React.createElement(LinkBase, { href: url, target: "_blank", rel: "noopener noreferrer", className: b(null, className) },
9
+ return (React.createElement("a", { href: url, target: "_blank", rel: "noopener noreferrer", className: b(null, className) },
10
10
  React.createElement(Image, Object.assign({ className: b('icon') }, iconData))));
11
11
  };
12
12
  export default SocialIcon;
@@ -2,7 +2,7 @@ import React, { useCallback, useContext } from 'react';
2
2
  import { Button } from '@gravity-ui/uikit';
3
3
  import { block, getThemedValue } from '../../utils';
4
4
  import { AuthorType, DefaultEventNames } from '../../models';
5
- import { Author, Image, HTML, RouterLink } from '../../components';
5
+ import { Author, Image, HTML } from '../../components';
6
6
  import { ThemeValueContext } from '../../context/theme/ThemeValueContext';
7
7
  import { getMediaImage } from '../../components/Media/Image/utils';
8
8
  import { useAnalytics } from '../../hooks';
@@ -17,7 +17,7 @@ const Quote = (props) => {
17
17
  const handleButtonClick = useCallback(() => handleAnalytics(), [handleAnalytics]);
18
18
  const renderFooter = Boolean(author || url) && (React.createElement("div", { className: b('author-wrapper') },
19
19
  author && (React.createElement(Author, { className: b('author', { theme: textTheme }), author: author, type: AuthorType.Line })),
20
- url && buttonText && (React.createElement(Button, { view: "outlined", size: "xl", href: url, component: RouterLink, className: b('link-button', { theme: textTheme }), onClick: handleButtonClick }, buttonText))));
20
+ url && buttonText && (React.createElement(Button, { view: "outlined", size: "xl", href: url, className: b('link-button', { theme: textTheme }), onClick: handleButtonClick }, buttonText))));
21
21
  return (React.createElement("div", { className: b({ theme: textTheme, border }), style: color ? { backgroundColor: color } : {} },
22
22
  React.createElement("div", { key: text, className: b('content-wrapper') },
23
23
  React.createElement("div", null,
@@ -38,6 +38,9 @@ export declare const Quote: {
38
38
  type: string;
39
39
  pattern: string;
40
40
  };
41
+ buttonText: {
42
+ type: string;
43
+ };
41
44
  theme: {
42
45
  type: string;
43
46
  enum: string[];
@@ -15,6 +15,8 @@ export const Quote = {
15
15
  }, url: {
16
16
  type: 'string',
17
17
  pattern: urlPattern,
18
+ }, buttonText: {
19
+ type: 'string',
18
20
  }, theme: ThemeProps, author: authorItem }),
19
21
  },
20
22
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/page-constructor",
3
- "version": "1.26.0-alpha.1",
3
+ "version": "1.26.0",
4
4
  "description": "Gravity UI Page Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -50,7 +50,7 @@
50
50
  "bem-cn-lite": "^4.0.0",
51
51
  "github-buttons": "2.23.0",
52
52
  "lodash": "^4.17.21",
53
- "react-player": "^2.12.0",
53
+ "react-player": "^2.9.0",
54
54
  "react-slick": "^0.28.1",
55
55
  "react-spring": "^9.3.0",
56
56
  "react-transition-group": "^4.4.2",
@@ -111,8 +111,6 @@ export interface MediaVideoProps extends AnalyticsEventsBase {
111
111
  controls?: MediaVideoControlsType;
112
112
  metrika?: MetrikaVideo;
113
113
  }
114
- export interface LinkBaseProps extends React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement> {
115
- }
116
114
  export interface LinkProps extends AnalyticsEventsBase, Stylable {
117
115
  url: string;
118
116
  text?: string;
@@ -518,18 +518,14 @@ unpredictable css rules order in build */
518
518
 
519
519
  @mixin tab-panel() {
520
520
  display: flex;
521
- flex-wrap: nowrap;
521
+ flex-wrap: wrap;
522
522
  justify-content: flex-start;
523
- overflow: auto;
524
523
 
525
524
  &_centered {
526
- display: flex;
527
525
  justify-content: center;
528
- flex-wrap: wrap;
529
526
  }
530
527
 
531
528
  @media (max-width: map-get($gridBreakpoints, 'md')) {
532
- display: flex;
533
529
  flex-wrap: nowrap;
534
530
  justify-content: flex-start;
535
531
  overflow: auto;
@@ -1,3 +0,0 @@
1
- import { LinkBaseProps, WithChildren } from '../../models';
2
- declare const LinkBase: (props: WithChildren<LinkBaseProps>) => JSX.Element;
3
- export default LinkBase;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const react_1 = tslib_1.__importStar(require("react"));
5
- const lodash_1 = require("lodash");
6
- const locationContext_1 = require("../../context/locationContext");
7
- const RouterLink_1 = tslib_1.__importDefault(require("../RouterLink/RouterLink"));
8
- const LinkBase = (props) => {
9
- const { href, children } = props, linkProps = tslib_1.__rest(props, ["href", "children"]);
10
- const { Link } = (0, react_1.useContext)(locationContext_1.LocationContext);
11
- if (Link && href && !(linkProps === null || linkProps === void 0 ? void 0 : linkProps.target)) {
12
- const extractedProps = (0, lodash_1.omit)(linkProps, ['rel', 'ref']);
13
- return (react_1.default.createElement(RouterLink_1.default, { href: href },
14
- react_1.default.createElement("a", Object.assign({}, extractedProps), children)));
15
- }
16
- return (react_1.default.createElement("a", Object.assign({ href: href }, linkProps), children));
17
- };
18
- exports.default = LinkBase;
@@ -1,3 +0,0 @@
1
- import { LinkBaseProps, WithChildren } from '../../models';
2
- declare const LinkBase: (props: WithChildren<LinkBaseProps>) => JSX.Element;
3
- export default LinkBase;
@@ -1,16 +0,0 @@
1
- import { __rest } from "tslib";
2
- import React, { useContext } from 'react';
3
- import { omit } from 'lodash';
4
- import { LocationContext } from '../../context/locationContext';
5
- import RouterLink from '../RouterLink/RouterLink';
6
- const LinkBase = (props) => {
7
- const { href, children } = props, linkProps = __rest(props, ["href", "children"]);
8
- const { Link } = useContext(LocationContext);
9
- if (Link && href && !(linkProps === null || linkProps === void 0 ? void 0 : linkProps.target)) {
10
- const extractedProps = omit(linkProps, ['rel', 'ref']);
11
- return (React.createElement(RouterLink, { href: href },
12
- React.createElement("a", Object.assign({}, extractedProps), children)));
13
- }
14
- return (React.createElement("a", Object.assign({ href: href }, linkProps), children));
15
- };
16
- export default LinkBase;