@gravity-ui/blog-constructor 8.1.0 → 8.2.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 (93) hide show
  1. package/build/cjs/blocks/Banner/Banner.js +2 -2
  2. package/build/cjs/blocks/Banner/Banner.js.map +1 -1
  3. package/build/cjs/blocks/CTA/CTA.js +2 -2
  4. package/build/cjs/blocks/CTA/CTA.js.map +1 -1
  5. package/build/cjs/blocks/Header/Header.css +54 -0
  6. package/build/cjs/blocks/Header/Header.js +6 -4
  7. package/build/cjs/blocks/Header/Header.js.map +1 -1
  8. package/build/cjs/blocks/Meta/Meta.js +2 -2
  9. package/build/cjs/blocks/Meta/Meta.js.map +1 -1
  10. package/build/cjs/blocks/Suggest/Suggest.js +2 -2
  11. package/build/cjs/blocks/Suggest/Suggest.js.map +1 -1
  12. package/build/cjs/components/FeedHeader/components/Controls/Controls.js +2 -2
  13. package/build/cjs/components/FeedHeader/components/Controls/Controls.js.map +1 -1
  14. package/build/cjs/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.js +1 -1
  15. package/build/cjs/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.js.map +1 -1
  16. package/build/cjs/components/Paginator/Paginator.js +2 -2
  17. package/build/cjs/components/Paginator/Paginator.js.map +1 -1
  18. package/build/cjs/components/PostCard/PostCard.js +1 -1
  19. package/build/cjs/components/PostCard/PostCard.js.map +1 -1
  20. package/build/cjs/components/PostInfo/PostInfo.js +2 -2
  21. package/build/cjs/components/PostInfo/PostInfo.js.map +1 -1
  22. package/build/cjs/components/PostInfo/SuggestPostInfo.js +2 -2
  23. package/build/cjs/components/PostInfo/SuggestPostInfo.js.map +1 -1
  24. package/build/cjs/components/PostInfo/components/ReadingTime.js +1 -1
  25. package/build/cjs/components/PostInfo/components/ReadingTime.js.map +1 -1
  26. package/build/cjs/components/PostInfo/components/Save.js +2 -2
  27. package/build/cjs/components/PostInfo/components/Save.js.map +1 -1
  28. package/build/cjs/components/PostInfo/components/Sharing.js +1 -1
  29. package/build/cjs/components/PostInfo/components/Sharing.js.map +1 -1
  30. package/build/cjs/components/Search/Search.js +1 -1
  31. package/build/cjs/components/Search/Search.js.map +1 -1
  32. package/build/cjs/containers/BlogPage/BlogPage.js +1 -1
  33. package/build/cjs/containers/BlogPage/BlogPage.js.map +1 -1
  34. package/build/cjs/containers/BlogPostPage/BlogPostPage.js +1 -1
  35. package/build/cjs/containers/BlogPostPage/BlogPostPage.js.map +1 -1
  36. package/build/cjs/contexts/LocaleContext.js.map +1 -1
  37. package/build/cjs/contexts/PostPageContext.d.ts +1 -1
  38. package/build/cjs/contexts/PostPageContext.js.map +1 -1
  39. package/build/cjs/contexts/SettingsContext.js.map +1 -1
  40. package/build/cjs/models/blocks.d.ts +5 -1
  41. package/build/cjs/models/blocks.js.map +1 -1
  42. package/build/cjs/utils/common.d.ts +1 -1
  43. package/build/cjs/utils/common.js +1 -1
  44. package/build/cjs/utils/common.js.map +1 -1
  45. package/build/esm/blocks/Banner/Banner.js +2 -2
  46. package/build/esm/blocks/Banner/Banner.js.map +1 -1
  47. package/build/esm/blocks/CTA/CTA.js +2 -2
  48. package/build/esm/blocks/CTA/CTA.js.map +1 -1
  49. package/build/esm/blocks/Header/Header.css +54 -0
  50. package/build/esm/blocks/Header/Header.d.ts +1 -0
  51. package/build/esm/blocks/Header/Header.js +7 -4
  52. package/build/esm/blocks/Header/Header.js.map +1 -1
  53. package/build/esm/blocks/Meta/Meta.js +2 -2
  54. package/build/esm/blocks/Meta/Meta.js.map +1 -1
  55. package/build/esm/blocks/Suggest/Suggest.js +2 -2
  56. package/build/esm/blocks/Suggest/Suggest.js.map +1 -1
  57. package/build/esm/components/FeedHeader/components/Controls/Controls.js +2 -2
  58. package/build/esm/components/FeedHeader/components/Controls/Controls.js.map +1 -1
  59. package/build/esm/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.js +1 -1
  60. package/build/esm/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.js.map +1 -1
  61. package/build/esm/components/Paginator/Paginator.js +2 -2
  62. package/build/esm/components/Paginator/Paginator.js.map +1 -1
  63. package/build/esm/components/PostCard/PostCard.js +1 -1
  64. package/build/esm/components/PostCard/PostCard.js.map +1 -1
  65. package/build/esm/components/PostInfo/PostInfo.js +2 -2
  66. package/build/esm/components/PostInfo/PostInfo.js.map +1 -1
  67. package/build/esm/components/PostInfo/SuggestPostInfo.js +2 -2
  68. package/build/esm/components/PostInfo/SuggestPostInfo.js.map +1 -1
  69. package/build/esm/components/PostInfo/components/ReadingTime.js +1 -1
  70. package/build/esm/components/PostInfo/components/ReadingTime.js.map +1 -1
  71. package/build/esm/components/PostInfo/components/Save.js +2 -2
  72. package/build/esm/components/PostInfo/components/Save.js.map +1 -1
  73. package/build/esm/components/PostInfo/components/Sharing.js +1 -1
  74. package/build/esm/components/PostInfo/components/Sharing.js.map +1 -1
  75. package/build/esm/components/Search/Search.js +1 -1
  76. package/build/esm/components/Search/Search.js.map +1 -1
  77. package/build/esm/containers/BlogPage/BlogPage.js +1 -1
  78. package/build/esm/containers/BlogPage/BlogPage.js.map +1 -1
  79. package/build/esm/containers/BlogPostPage/BlogPostPage.js +1 -1
  80. package/build/esm/containers/BlogPostPage/BlogPostPage.js.map +1 -1
  81. package/build/esm/contexts/LocaleContext.js.map +1 -1
  82. package/build/esm/contexts/PostPageContext.d.ts +1 -1
  83. package/build/esm/contexts/PostPageContext.js.map +1 -1
  84. package/build/esm/contexts/SettingsContext.js.map +1 -1
  85. package/build/esm/models/blocks.d.ts +5 -1
  86. package/build/esm/models/blocks.js.map +1 -1
  87. package/build/esm/utils/common.d.ts +1 -1
  88. package/build/esm/utils/common.js +1 -1
  89. package/build/esm/utils/common.js.map +1 -1
  90. package/package.json +2 -2
  91. package/server/data/transformPost.d.ts +1 -1
  92. package/server/models/blocks.d.ts +5 -1
  93. package/styles/storybook/index.scss +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"SuggestPostInfo.js","sourceRoot":"../../../../src","sources":["components/PostInfo/SuggestPostInfo.tsx"],"names":[],"mappings":";;;;AAAA,sDAA8C;AAC9C,mDAA4F;AAC5F,0CAAqC;AAErC,+CAAuC;AACvC,6DAAqD;AACrD,+CAAuC;AACvC,kDAAyD;AACzD,kDAA+C;AAI/C,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,WAAW,CAAC,CAAC;AAE7B,MAAM,UAAU,GAAG,IAAA,8BAAqB,EAAC,EAAC,IAAI,EAAE,0BAAc,CAAC,WAAW,EAAC,CAAC,CAAC;AAgB7E;;;;;;;;;;;;;;;GAeG;AACI,MAAM,eAAe,GAAG,CAAC,EAC5B,MAAM,EACN,IAAI,EACJ,WAAW,EACX,KAAK,EACL,IAAI,GAAG,qBAAY,CAAC,KAAK,EACzB,EAAE,EACF,MAAM,EACN,aAAa,GACM,EAAE,EAAE;IACvB,MAAM,EAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAC,GAAG,IAAA,mBAAQ,EAAC;QACnD,OAAO,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW;QAC3B,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QACxB,kBAAkB,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QACrC,MAAM,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,OAAO,CACH,iCAAK,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,aAC1B,iCAAK,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC,aACjC,IAAI,IAAI,uBAAC,WAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAI,EACpD,WAAW,IAAI,CACZ,uBAAC,yBAAW,IAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,GAAI,CAC3E,IACC,EACL,KAAK,IAAI,MAAM,IAAI,CAChB,uBAAC,WAAI,IACD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,EACjB,eAAe,EAAE,UAAU,EAC3B,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,UAAU,EAC1B,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,EAAE,GACR,CACL,IACC,CACT,CAAC;AACN,CAAC,CAAC;AAtCW,QAAA,eAAe,mBAsC1B","sourcesContent":["import {useLikes} from '../../hooks/useLikes';\nimport {PostCardSize, PostData, QAProps, ToggleLikeCallbackType} from '../../models/common';\nimport {block} from '../../utils/cn';\n\nimport {Date} from './components/Date';\nimport {ReadingTime} from './components/ReadingTime';\nimport {Save} from './components/Save';\nimport {prepareAnalyticsEvent} from '../../utils/common';\nimport {DefaultGoalIds} from '../../constants';\n\nimport './PostInfo.scss';\n\nconst b = block('post-info');\n\nconst saveEvents = prepareAnalyticsEvent({name: DefaultGoalIds.saveSuggest});\n\nexport interface SuggestPostInfoProps\n extends Pick<PostData, 'date' | 'readingTime' | 'hasUserLike'>,\n QAProps {\n postId: PostData['blogPostId'];\n size?: PostCardSize;\n likes?: {\n likesCount?: number;\n hasUserLike?: boolean;\n toggleLike?: ToggleLikeCallbackType;\n };\n dateId?: string;\n readingTimeId?: string;\n}\n\n/**\n * Suggest blog card info component\n *\n * @param postId - post id\n * @param date - post create date\n * @param readingTime - post reading time\n * @param hasUserLike - flag that the user liked the post\n * @param likes - likes count\n * @param qa - test-attr\n * @param size - text size\n * @param isModernIcon - flag what we need render 'bookmark' icon\n * @param dateId - id value for element with post date. Useful when providing accessible description\n * @param readingTimeId - id value for element with reading time. Useful when providing accessible description\n *\n * @returns jsx\n */\nexport const SuggestPostInfo = ({\n postId,\n date,\n readingTime,\n likes,\n size = PostCardSize.SMALL,\n qa,\n dateId,\n readingTimeId,\n}: SuggestPostInfoProps) => {\n const {hasUserLike, likesCount, handleLike} = useLikes({\n hasLike: likes?.hasUserLike,\n count: likes?.likesCount,\n toggleLikeCallback: likes?.toggleLike,\n postId: postId,\n });\n\n return (\n <div className={b('container')}>\n <div className={b('suggest-container')}>\n {date && <Date date={date} size={size} id={dateId} />}\n {readingTime && (\n <ReadingTime readingTime={readingTime} size={size} id={readingTimeId} />\n )}\n </div>\n {likes && postId && (\n <Save\n postId={postId}\n title={likesCount}\n analyticsEvents={saveEvents}\n hasUserLike={hasUserLike}\n handleUserLike={handleLike}\n size={size}\n qa={qa}\n />\n )}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"SuggestPostInfo.js","sourceRoot":"../../../../src","sources":["components/PostInfo/SuggestPostInfo.tsx"],"names":[],"mappings":";;;;AAAA,kDAA+C;AAC/C,sDAA8C;AAC9C,mDAA4F;AAC5F,0CAAqC;AACrC,kDAAyD;AAEzD,+CAAuC;AACvC,6DAAqD;AACrD,+CAAuC;AAIvC,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,WAAW,CAAC,CAAC;AAE7B,MAAM,UAAU,GAAG,IAAA,8BAAqB,EAAC,EAAC,IAAI,EAAE,0BAAc,CAAC,WAAW,EAAC,CAAC,CAAC;AAgB7E;;;;;;;;;;;;;;;GAeG;AACI,MAAM,eAAe,GAAG,CAAC,EAC5B,MAAM,EACN,IAAI,EACJ,WAAW,EACX,KAAK,EACL,IAAI,GAAG,qBAAY,CAAC,KAAK,EACzB,EAAE,EACF,MAAM,EACN,aAAa,GACM,EAAE,EAAE;IACvB,MAAM,EAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAC,GAAG,IAAA,mBAAQ,EAAC;QACnD,OAAO,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW;QAC3B,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QACxB,kBAAkB,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QACrC,MAAM,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,OAAO,CACH,iCAAK,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,aAC1B,iCAAK,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC,aACjC,IAAI,IAAI,uBAAC,WAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAI,EACpD,WAAW,IAAI,CACZ,uBAAC,yBAAW,IAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,GAAI,CAC3E,IACC,EACL,KAAK,IAAI,MAAM,IAAI,CAChB,uBAAC,WAAI,IACD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,EACjB,eAAe,EAAE,UAAU,EAC3B,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,UAAU,EAC1B,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,EAAE,GACR,CACL,IACC,CACT,CAAC;AACN,CAAC,CAAC;AAtCW,QAAA,eAAe,mBAsC1B","sourcesContent":["import {DefaultGoalIds} from '../../constants';\nimport {useLikes} from '../../hooks/useLikes';\nimport {PostCardSize, PostData, QAProps, ToggleLikeCallbackType} from '../../models/common';\nimport {block} from '../../utils/cn';\nimport {prepareAnalyticsEvent} from '../../utils/common';\n\nimport {Date} from './components/Date';\nimport {ReadingTime} from './components/ReadingTime';\nimport {Save} from './components/Save';\n\nimport './PostInfo.scss';\n\nconst b = block('post-info');\n\nconst saveEvents = prepareAnalyticsEvent({name: DefaultGoalIds.saveSuggest});\n\nexport interface SuggestPostInfoProps\n extends Pick<PostData, 'date' | 'readingTime' | 'hasUserLike'>,\n QAProps {\n postId: PostData['blogPostId'];\n size?: PostCardSize;\n likes?: {\n likesCount?: number;\n hasUserLike?: boolean;\n toggleLike?: ToggleLikeCallbackType;\n };\n dateId?: string;\n readingTimeId?: string;\n}\n\n/**\n * Suggest blog card info component\n *\n * @param postId - post id\n * @param date - post create date\n * @param readingTime - post reading time\n * @param hasUserLike - flag that the user liked the post\n * @param likes - likes count\n * @param qa - test-attr\n * @param size - text size\n * @param isModernIcon - flag what we need render 'bookmark' icon\n * @param dateId - id value for element with post date. Useful when providing accessible description\n * @param readingTimeId - id value for element with reading time. Useful when providing accessible description\n *\n * @returns jsx\n */\nexport const SuggestPostInfo = ({\n postId,\n date,\n readingTime,\n likes,\n size = PostCardSize.SMALL,\n qa,\n dateId,\n readingTimeId,\n}: SuggestPostInfoProps) => {\n const {hasUserLike, likesCount, handleLike} = useLikes({\n hasLike: likes?.hasUserLike,\n count: likes?.likesCount,\n toggleLikeCallback: likes?.toggleLike,\n postId: postId,\n });\n\n return (\n <div className={b('container')}>\n <div className={b('suggest-container')}>\n {date && <Date date={date} size={size} id={dateId} />}\n {readingTime && (\n <ReadingTime readingTime={readingTime} size={size} id={readingTimeId} />\n )}\n </div>\n {likes && postId && (\n <Save\n postId={postId}\n title={likesCount}\n analyticsEvents={saveEvents}\n hasUserLike={hasUserLike}\n handleUserLike={handleLike}\n size={size}\n qa={qa}\n />\n )}\n </div>\n );\n};\n"]}
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ReadingTime = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- const uikit_1 = require("@gravity-ui/uikit");
6
5
  const icons_1 = require("@gravity-ui/icons");
6
+ const uikit_1 = require("@gravity-ui/uikit");
7
7
  const i18n_1 = require("../../../i18n/index.js");
8
8
  const cn_1 = require("../../../utils/cn.js");
9
9
  const b = (0, cn_1.block)('post-info');
@@ -1 +1 @@
1
- {"version":3,"file":"ReadingTime.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/ReadingTime.tsx"],"names":[],"mappings":";;;;AAAA,6CAAuC;AACvC,6CAAwC;AAExC,iDAA2C;AAC3C,6CAAwC;AAKxC,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,WAAW,CAAC,CAAC;AAE7B,MAAM,SAAS,GAAG,EAAE,CAAC;AAQd,MAAM,WAAW,GAAG,CAAC,EAAC,WAAW,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAmB,EAAE,EAAE,CAAC,CAChF,iCAAK,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,IAAI,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,aAAW,EAAE,aAClD,iCAAM,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACtB,uBAAC,YAAI,IAAC,IAAI,EAAE,aAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,GAAI,GAC/D,EACN,IAAA,WAAI,EAAC,aAAM,CAAC,kBAAkB,EAAE,EAAC,KAAK,EAAE,WAAW,EAAC,CAAC,IACpD,CACT,CAAC;AAPW,QAAA,WAAW,eAOtB","sourcesContent":["import {Icon} from '@gravity-ui/uikit';\nimport {Clock} from '@gravity-ui/icons';\n\nimport {Keyset, i18n} from '../../../i18n';\nimport {block} from '../../../utils/cn';\n\nimport {QAProps} from '../../../models/common';\nimport '../PostInfo.scss';\n\nconst b = block('post-info');\n\nconst ICON_SIZE = 16;\n\ntype ReadingTimeProps = QAProps & {\n readingTime: number;\n size?: 's' | 'm';\n id?: string;\n};\n\nexport const ReadingTime = ({readingTime, size = 's', id, qa}: ReadingTimeProps) => (\n <div className={b('item', {size})} id={id} data-qa={qa}>\n <span className={b('icon')}>\n <Icon data={Clock} size={ICON_SIZE} className={b('icon-color')} />\n </span>\n {i18n(Keyset.ContextReadingTime, {count: readingTime})}\n </div>\n);\n"]}
1
+ {"version":3,"file":"ReadingTime.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/ReadingTime.tsx"],"names":[],"mappings":";;;;AAAA,6CAAwC;AACxC,6CAAuC;AAEvC,iDAA2C;AAE3C,6CAAwC;AAIxC,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,WAAW,CAAC,CAAC;AAE7B,MAAM,SAAS,GAAG,EAAE,CAAC;AAQd,MAAM,WAAW,GAAG,CAAC,EAAC,WAAW,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAmB,EAAE,EAAE,CAAC,CAChF,iCAAK,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,IAAI,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,aAAW,EAAE,aAClD,iCAAM,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACtB,uBAAC,YAAI,IAAC,IAAI,EAAE,aAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,GAAI,GAC/D,EACN,IAAA,WAAI,EAAC,aAAM,CAAC,kBAAkB,EAAE,EAAC,KAAK,EAAE,WAAW,EAAC,CAAC,IACpD,CACT,CAAC;AAPW,QAAA,WAAW,eAOtB","sourcesContent":["import {Clock} from '@gravity-ui/icons';\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {Keyset, i18n} from '../../../i18n';\nimport {QAProps} from '../../../models/common';\nimport {block} from '../../../utils/cn';\n\nimport '../PostInfo.scss';\n\nconst b = block('post-info');\n\nconst ICON_SIZE = 16;\n\ntype ReadingTimeProps = QAProps & {\n readingTime: number;\n size?: 's' | 'm';\n id?: string;\n};\n\nexport const ReadingTime = ({readingTime, size = 's', id, qa}: ReadingTimeProps) => (\n <div className={b('item', {size})} id={id} data-qa={qa}>\n <span className={b('icon')}>\n <Icon data={Clock} size={ICON_SIZE} className={b('icon-color')} />\n </span>\n {i18n(Keyset.ContextReadingTime, {count: readingTime})}\n </div>\n);\n"]}
@@ -4,14 +4,14 @@ exports.Save = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const React = tslib_1.__importStar(require("react"));
7
+ const icons_1 = require("@gravity-ui/icons");
7
8
  const page_constructor_1 = require("@gravity-ui/page-constructor");
8
9
  const uikit_1 = require("@gravity-ui/uikit");
9
- const icons_1 = require("@gravity-ui/icons");
10
10
  const LikesContext_1 = require("../../../contexts/LikesContext.js");
11
+ const i18n_1 = require("../../../i18n/index.js");
11
12
  const common_1 = require("../../../models/common.js");
12
13
  const cn_1 = require("../../../utils/cn.js");
13
14
  const common_2 = require("../../../utils/common.js");
14
- const i18n_1 = require("../../../i18n/index.js");
15
15
  const ICON_SIZE = 16;
16
16
  const b = (0, cn_1.block)('post-info');
17
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Save.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/Save.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,mEAA+E;AAC/E,6CAAkD;AAClD,6CAAyD;AAEzD,oEAA4D;AAC5D,sDAAkE;AAClE,6CAAwC;AACxC,qDAAqD;AACrD,iDAA2C;AAI3C,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,WAAW,CAAC,CAAC;AAY7B;;;;;;;;;;;GAWG;AACI,MAAM,IAAI,GAAG,CAAC,EACjB,KAAK,EACL,MAAM,EACN,WAAW,EACX,cAAc,EACd,IAAI,EACJ,KAAK,EACL,EAAE,EACF,eAAe,GACP,EAAE,EAAE;IACZ,MAAM,EAAC,UAAU,EAAE,cAAc,EAAE,aAAa,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,2BAAY,CAAC,CAAC;IACnF,MAAM,eAAe,GAAG,IAAA,+BAAY,EAAC,0BAAiB,CAAC,UAAU,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAG,IAAA,iBAAS,GAAE,CAAC;IACnC,MAAM,cAAc,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;IAEjD,OAAO,CACH,mCACI,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,EACxC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACf,6EAA6E;YAC7E,mHAAmH;YACnH,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,WAAW,CAAC,wBAAwB,EAAE,CAAC;YAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,OAAO;YACX,CAAC;YAED,8CAA8C;YAC9C,IAAI,CAAC,cAAc,IAAI,aAAa,EAAE,CAAC;gBACnC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,OAAO;YACX,CAAC;YAED,IAAA,uBAAc,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7C,cAAc,EAAE,CAAC;YACjB,eAAe,CAAC,eAAe,CAAC,CAAC;QACrC,CAAC,aACQ,EAAE,kBACG,WAAW,gBACb,cAAc,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,aAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,sBACxC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,YAE7D,iCAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAC,CAAC,aACrD,iCAAM,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACtB,uBAAC,YAAI,IACD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,oBAAY,CAAC,CAAC,CAAC,gBAAQ,EAC3C,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAC,CAAC,GAC9C,GACC,EACP,iCAAM,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,EAAC,MAAM,EAAE,UAAU,EAAC,CAAC,YAChE,KAAK,GACH,IACL,GACD,CACZ,CAAC;AACN,CAAC,CAAC;AA3DW,QAAA,IAAI,QA2Df","sourcesContent":["import * as React from 'react';\n\nimport {AnalyticsEventsProp, useAnalytics} from '@gravity-ui/page-constructor';\nimport {Icon, useUniqId} from '@gravity-ui/uikit';\nimport {Bookmark, BookmarkFill} from '@gravity-ui/icons';\n\nimport {LikesContext} from '../../../contexts/LikesContext';\nimport {DefaultEventNames, QAProps} from '../../../models/common';\nimport {block} from '../../../utils/cn';\nimport {postLikeStatus} from '../../../utils/common';\nimport {Keyset, i18n} from '../../../i18n';\n\nimport '../PostInfo.scss';\n\nconst ICON_SIZE = 16;\n\nconst b = block('post-info');\n\ntype SaveProps = QAProps & {\n title: string | number;\n postId: number | string;\n hasUserLike: boolean;\n handleUserLike: () => void;\n theme?: 'light' | 'dark';\n size?: 's' | 'm';\n analyticsEvents?: AnalyticsEventsProp;\n};\n\n/**\n * Components for 'save' blog UI-component\n *\n * @param title - post title\n * @param postId - post id\n * @param hasUserLike - flag what blog has like from current user\n * @param qa - test-attr\n * @param size - text size\n * @param analyticsEvents - a single or collection of objects detailing analytics events\n *\n * @returns jsx\n */\nexport const Save = ({\n title,\n postId,\n hasUserLike,\n handleUserLike,\n size,\n theme,\n qa,\n analyticsEvents,\n}: SaveProps) => {\n const {toggleLike, isSignedInUser, requireSignIn} = React.useContext(LikesContext);\n const handleAnalytics = useAnalytics(DefaultEventNames.SaveButton);\n const isLikeable = Boolean(toggleLike);\n\n const titleElementId = useUniqId();\n const isNumericTitle = typeof title === 'number';\n\n return (\n <button\n className={b('item', {size, save: true})}\n onClick={(event) => {\n // both preventDefault and stopImmediatePropagation required to work properly\n // https://stackoverflow.com/questions/24415631/reactjs-syntheticevent-stoppropagation-only-works-with-react-events\n event.preventDefault();\n event.nativeEvent.stopImmediatePropagation();\n\n if (!isLikeable) {\n return;\n }\n\n // Open Popup to ask the User to sign in first\n if (!isSignedInUser && requireSignIn) {\n requireSignIn(event);\n return;\n }\n\n postLikeStatus(postId, Boolean(hasUserLike));\n handleUserLike();\n handleAnalytics(analyticsEvents);\n }}\n data-qa={qa}\n aria-pressed={hasUserLike}\n aria-label={isNumericTitle ? i18n(Keyset.Save) : undefined}\n aria-describedby={isNumericTitle ? titleElementId : undefined}\n >\n <div className={b('content', {cursor: isLikeable, theme})}>\n <span className={b('icon')}>\n <Icon\n data={hasUserLike ? BookmarkFill : Bookmark}\n size={ICON_SIZE}\n className={b({filled: Boolean(hasUserLike)})}\n />\n </span>\n <span id={titleElementId} className={b('title', {cursor: isLikeable})}>\n {title}\n </span>\n </div>\n </button>\n );\n};\n"]}
1
+ {"version":3,"file":"Save.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/Save.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,6CAAyD;AACzD,mEAA+E;AAC/E,6CAAkD;AAElD,oEAA4D;AAC5D,iDAA2C;AAC3C,sDAAkE;AAClE,6CAAwC;AACxC,qDAAqD;AAIrD,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,WAAW,CAAC,CAAC;AAY7B;;;;;;;;;;;GAWG;AACI,MAAM,IAAI,GAAG,CAAC,EACjB,KAAK,EACL,MAAM,EACN,WAAW,EACX,cAAc,EACd,IAAI,EACJ,KAAK,EACL,EAAE,EACF,eAAe,GACP,EAAE,EAAE;IACZ,MAAM,EAAC,UAAU,EAAE,cAAc,EAAE,aAAa,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,2BAAY,CAAC,CAAC;IACnF,MAAM,eAAe,GAAG,IAAA,+BAAY,EAAC,0BAAiB,CAAC,UAAU,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAG,IAAA,iBAAS,GAAE,CAAC;IACnC,MAAM,cAAc,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;IAEjD,OAAO,CACH,mCACI,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,EACxC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACf,6EAA6E;YAC7E,mHAAmH;YACnH,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,WAAW,CAAC,wBAAwB,EAAE,CAAC;YAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,OAAO;YACX,CAAC;YAED,8CAA8C;YAC9C,IAAI,CAAC,cAAc,IAAI,aAAa,EAAE,CAAC;gBACnC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,OAAO;YACX,CAAC;YAED,IAAA,uBAAc,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7C,cAAc,EAAE,CAAC;YACjB,eAAe,CAAC,eAAe,CAAC,CAAC;QACrC,CAAC,aACQ,EAAE,kBACG,WAAW,gBACb,cAAc,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,aAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,sBACxC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,YAE7D,iCAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAC,CAAC,aACrD,iCAAM,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACtB,uBAAC,YAAI,IACD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,oBAAY,CAAC,CAAC,CAAC,gBAAQ,EAC3C,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAC,CAAC,GAC9C,GACC,EACP,iCAAM,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,EAAC,MAAM,EAAE,UAAU,EAAC,CAAC,YAChE,KAAK,GACH,IACL,GACD,CACZ,CAAC;AACN,CAAC,CAAC;AA3DW,QAAA,IAAI,QA2Df","sourcesContent":["import * as React from 'react';\n\nimport {Bookmark, BookmarkFill} from '@gravity-ui/icons';\nimport {AnalyticsEventsProp, useAnalytics} from '@gravity-ui/page-constructor';\nimport {Icon, useUniqId} from '@gravity-ui/uikit';\n\nimport {LikesContext} from '../../../contexts/LikesContext';\nimport {Keyset, i18n} from '../../../i18n';\nimport {DefaultEventNames, QAProps} from '../../../models/common';\nimport {block} from '../../../utils/cn';\nimport {postLikeStatus} from '../../../utils/common';\n\nimport '../PostInfo.scss';\n\nconst ICON_SIZE = 16;\n\nconst b = block('post-info');\n\ntype SaveProps = QAProps & {\n title: string | number;\n postId: number | string;\n hasUserLike: boolean;\n handleUserLike: () => void;\n theme?: 'light' | 'dark';\n size?: 's' | 'm';\n analyticsEvents?: AnalyticsEventsProp;\n};\n\n/**\n * Components for 'save' blog UI-component\n *\n * @param title - post title\n * @param postId - post id\n * @param hasUserLike - flag what blog has like from current user\n * @param qa - test-attr\n * @param size - text size\n * @param analyticsEvents - a single or collection of objects detailing analytics events\n *\n * @returns jsx\n */\nexport const Save = ({\n title,\n postId,\n hasUserLike,\n handleUserLike,\n size,\n theme,\n qa,\n analyticsEvents,\n}: SaveProps) => {\n const {toggleLike, isSignedInUser, requireSignIn} = React.useContext(LikesContext);\n const handleAnalytics = useAnalytics(DefaultEventNames.SaveButton);\n const isLikeable = Boolean(toggleLike);\n\n const titleElementId = useUniqId();\n const isNumericTitle = typeof title === 'number';\n\n return (\n <button\n className={b('item', {size, save: true})}\n onClick={(event) => {\n // both preventDefault and stopImmediatePropagation required to work properly\n // https://stackoverflow.com/questions/24415631/reactjs-syntheticevent-stoppropagation-only-works-with-react-events\n event.preventDefault();\n event.nativeEvent.stopImmediatePropagation();\n\n if (!isLikeable) {\n return;\n }\n\n // Open Popup to ask the User to sign in first\n if (!isSignedInUser && requireSignIn) {\n requireSignIn(event);\n return;\n }\n\n postLikeStatus(postId, Boolean(hasUserLike));\n handleUserLike();\n handleAnalytics(analyticsEvents);\n }}\n data-qa={qa}\n aria-pressed={hasUserLike}\n aria-label={isNumericTitle ? i18n(Keyset.Save) : undefined}\n aria-describedby={isNumericTitle ? titleElementId : undefined}\n >\n <div className={b('content', {cursor: isLikeable, theme})}>\n <span className={b('icon')}>\n <Icon\n data={hasUserLike ? BookmarkFill : Bookmark}\n size={ICON_SIZE}\n className={b({filled: Boolean(hasUserLike)})}\n />\n </span>\n <span id={titleElementId} className={b('title', {cursor: isLikeable})}>\n {title}\n </span>\n </div>\n </button>\n );\n};\n"]}
@@ -5,8 +5,8 @@ const tslib_1 = require("tslib");
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const React = tslib_1.__importStar(require("react"));
7
7
  const components_1 = require("@gravity-ui/components");
8
- const page_constructor_1 = require("@gravity-ui/page-constructor");
9
8
  const icons_1 = require("@gravity-ui/icons");
9
+ const page_constructor_1 = require("@gravity-ui/page-constructor");
10
10
  const MobileContext_1 = require("../../../contexts/MobileContext.js");
11
11
  const PostPageContext_1 = require("../../../contexts/PostPageContext.js");
12
12
  const RouterContext_1 = require("../../../contexts/RouterContext.js");
@@ -1 +1 @@
1
- {"version":3,"file":"Sharing.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/Sharing.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,uDAA0E;AAC1E,mEAA+E;AAC/E,6CAAoD;AAEpD,sEAA8D;AAC9D,0EAAkE;AAClE,sEAA8D;AAC9D,iDAA2C;AAC3C,sDAAyD;AACzD,6CAAwC;AACxC,qDAAsD;AAItD,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,WAAW,CAAC,CAAC;AAOtB,MAAM,OAAO,GAAG,CAAC,EAAC,KAAK,EAAE,eAAe,EAAe,EAAE,EAAE;IAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,6BAAa,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,6BAAa,CAAC,CAAC;IACjD,MAAM,EAAC,YAAY,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IACzD,MAAM,qBAAqB,GAAG,IAAA,+BAAY,EAAC,0BAAiB,CAAC,WAAW,CAAC,CAAC;IAE1E,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC3C,qBAAqB,CAAC,eAAe,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAE7C,OAAO,CACH,gCAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,gCAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,uBAAC,yBAAY,IACT,GAAG,EAAE,IAAA,wBAAe,EAAC,MAAM,CAAC,EAC5B,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EACrB,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,EAC1B,iBAAiB,EAAE,CAAC,CAAC,UAAU,EAAE,EAAC,KAAK,EAAC,CAAC,EACzC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,EAC5B,cAAc,EAAE,QAAQ,EACxB,SAAS,EAAE,iCAAoB,CAAC,MAAM,EACtC,WAAW,EAAE,IAAA,WAAI,EAAC,aAAM,CAAC,WAAW,CAAC,EACrC,UAAU,EAAE,yBAAiB,EAC7B,SAAS,EAAC,QAAQ,EAClB,WAAW,EAAE,KAAK,EAClB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,eAAe,GAC1B,GACA,GACJ,CACT,CAAC;AACN,CAAC,CAAC;AA/BW,QAAA,OAAO,WA+BlB","sourcesContent":["import * as React from 'react';\n\nimport {ShareLayoutDirection, SharePopover} from '@gravity-ui/components';\nimport {AnalyticsEventsProp, useAnalytics} from '@gravity-ui/page-constructor';\nimport {ArrowUpFromSquare} from '@gravity-ui/icons';\n\nimport {MobileContext} from '../../../contexts/MobileContext';\nimport {PostPageContext} from '../../../contexts/PostPageContext';\nimport {RouterContext} from '../../../contexts/RouterContext';\nimport {Keyset, i18n} from '../../../i18n';\nimport {DefaultEventNames} from '../../../models/common';\nimport {block} from '../../../utils/cn';\nimport {getAbsolutePath} from '../../../utils/common';\n\nimport '../PostInfo.scss';\n\nconst b = block('post-info');\n\ntype SharingProps = {\n theme?: 'light' | 'dark';\n analyticsEvents?: AnalyticsEventsProp;\n};\n\nexport const Sharing = ({theme, analyticsEvents}: SharingProps) => {\n const router = React.useContext(RouterContext);\n const isMobile = React.useContext(MobileContext);\n const {shareOptions} = React.useContext(PostPageContext);\n const handleAnalyticsGlobal = useAnalytics(DefaultEventNames.ShareButton);\n\n const handleAnalytics = React.useCallback(() => {\n handleAnalyticsGlobal(analyticsEvents);\n }, [analyticsEvents, handleAnalyticsGlobal]);\n\n return (\n <div className={b('item')}>\n <div className={b('icon')}>\n <SharePopover\n url={getAbsolutePath(router)}\n className={b('share')}\n iconClass={b('share-icon')}\n switcherClassName={b('switcher', {theme})}\n tooltipClassName={b('popup')}\n useWebShareApi={isMobile}\n direction={ShareLayoutDirection.Column}\n buttonTitle={i18n(Keyset.ActionShare)}\n customIcon={ArrowUpFromSquare}\n placement=\"bottom\"\n openByHover={false}\n shareOptions={shareOptions}\n onClick={handleAnalytics}\n />\n </div>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"Sharing.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/Sharing.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,uDAA0E;AAC1E,6CAAoD;AACpD,mEAA+E;AAE/E,sEAA8D;AAC9D,0EAAkE;AAClE,sEAA8D;AAC9D,iDAA2C;AAC3C,sDAAyD;AACzD,6CAAwC;AACxC,qDAAsD;AAItD,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,WAAW,CAAC,CAAC;AAOtB,MAAM,OAAO,GAAG,CAAC,EAAC,KAAK,EAAE,eAAe,EAAe,EAAE,EAAE;IAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,6BAAa,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,6BAAa,CAAC,CAAC;IACjD,MAAM,EAAC,YAAY,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IACzD,MAAM,qBAAqB,GAAG,IAAA,+BAAY,EAAC,0BAAiB,CAAC,WAAW,CAAC,CAAC;IAE1E,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC3C,qBAAqB,CAAC,eAAe,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAE7C,OAAO,CACH,gCAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,gCAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,uBAAC,yBAAY,IACT,GAAG,EAAE,IAAA,wBAAe,EAAC,MAAM,CAAC,EAC5B,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EACrB,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,EAC1B,iBAAiB,EAAE,CAAC,CAAC,UAAU,EAAE,EAAC,KAAK,EAAC,CAAC,EACzC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,EAC5B,cAAc,EAAE,QAAQ,EACxB,SAAS,EAAE,iCAAoB,CAAC,MAAM,EACtC,WAAW,EAAE,IAAA,WAAI,EAAC,aAAM,CAAC,WAAW,CAAC,EACrC,UAAU,EAAE,yBAAiB,EAC7B,SAAS,EAAC,QAAQ,EAClB,WAAW,EAAE,KAAK,EAClB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,eAAe,GAC1B,GACA,GACJ,CACT,CAAC;AACN,CAAC,CAAC;AA/BW,QAAA,OAAO,WA+BlB","sourcesContent":["import * as React from 'react';\n\nimport {ShareLayoutDirection, SharePopover} from '@gravity-ui/components';\nimport {ArrowUpFromSquare} from '@gravity-ui/icons';\nimport {AnalyticsEventsProp, useAnalytics} from '@gravity-ui/page-constructor';\n\nimport {MobileContext} from '../../../contexts/MobileContext';\nimport {PostPageContext} from '../../../contexts/PostPageContext';\nimport {RouterContext} from '../../../contexts/RouterContext';\nimport {Keyset, i18n} from '../../../i18n';\nimport {DefaultEventNames} from '../../../models/common';\nimport {block} from '../../../utils/cn';\nimport {getAbsolutePath} from '../../../utils/common';\n\nimport '../PostInfo.scss';\n\nconst b = block('post-info');\n\ntype SharingProps = {\n theme?: 'light' | 'dark';\n analyticsEvents?: AnalyticsEventsProp;\n};\n\nexport const Sharing = ({theme, analyticsEvents}: SharingProps) => {\n const router = React.useContext(RouterContext);\n const isMobile = React.useContext(MobileContext);\n const {shareOptions} = React.useContext(PostPageContext);\n const handleAnalyticsGlobal = useAnalytics(DefaultEventNames.ShareButton);\n\n const handleAnalytics = React.useCallback(() => {\n handleAnalyticsGlobal(analyticsEvents);\n }, [analyticsEvents, handleAnalyticsGlobal]);\n\n return (\n <div className={b('item')}>\n <div className={b('icon')}>\n <SharePopover\n url={getAbsolutePath(router)}\n className={b('share')}\n iconClass={b('share-icon')}\n switcherClassName={b('switcher', {theme})}\n tooltipClassName={b('popup')}\n useWebShareApi={isMobile}\n direction={ShareLayoutDirection.Column}\n buttonTitle={i18n(Keyset.ActionShare)}\n customIcon={ArrowUpFromSquare}\n placement=\"bottom\"\n openByHover={false}\n shareOptions={shareOptions}\n onClick={handleAnalytics}\n />\n </div>\n </div>\n );\n};\n"]}
@@ -4,8 +4,8 @@ exports.Search = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const React = tslib_1.__importStar(require("react"));
7
- const uikit_1 = require("@gravity-ui/uikit");
8
7
  const icons_1 = require("@gravity-ui/icons");
8
+ const uikit_1 = require("@gravity-ui/uikit");
9
9
  const debounce_1 = tslib_1.__importDefault(require("lodash/debounce.js"));
10
10
  const useIsIPhone_1 = require("../../hooks/useIsIPhone.js");
11
11
  const i18n_1 = require("../../i18n/index.js");
@@ -1 +1 @@
1
- {"version":3,"file":"Search.js","sourceRoot":"../../../../src","sources":["components/Search/Search.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {Icon, TextInput} from '@gravity-ui/uikit';\nimport {Magnifier, Xmark} from '@gravity-ui/icons';\nimport lodashDebounce from 'lodash/debounce';\n\nimport {useIsIPhone} from '../../hooks/useIsIPhone';\nimport {Keyset, i18n} from '../../i18n';\nimport {ClassNameProps} from '../../models/common';\nimport {block} from '../../utils/cn';\n\nimport './Search.scss';\n\nconst b = block('search');\n\nexport type SearchSize = 's' | 'm';\n\ninterface SearchProps extends ClassNameProps {\n value?: string;\n initialValue: string;\n onSubmit: (value: string) => void;\n debounce?: number;\n placeholder?: string;\n size?: SearchSize;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst SEARCH_ICON_SIZE = 16;\nconst CLOSE_ICON_SIZE = 20;\nconst AUTOFOCUS_TIMEOUT = 0;\n\n/**\n * Search component, placed on blog main page,\n * based on TextInput from uikit\n *\n * @returns {JSX|null}\n */\nexport const Search = ({\n className,\n initialValue,\n onSubmit,\n debounce = 300,\n placeholder = i18n(Keyset.Search),\n size = 'm',\n autoFocus = false,\n value: externalValue,\n}: SearchProps) => {\n const handleChange = lodashDebounce(onSubmit, debounce);\n\n const [value, setValue] = React.useState<string>(initialValue);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const isIPhone = useIsIPhone();\n\n React.useEffect(() => {\n if (externalValue !== undefined) {\n setValue(externalValue);\n }\n }, [externalValue]);\n\n React.useEffect(() => {\n if (autoFocus && !isIPhone) {\n setTimeout(() => inputRef?.current?.focus({preventScroll: true}), AUTOFOCUS_TIMEOUT);\n }\n }, [autoFocus, inputRef, isIPhone]);\n\n const rightContent = React.useMemo(() => {\n const isClose = Boolean(value);\n const iconSize = value ? CLOSE_ICON_SIZE : SEARCH_ICON_SIZE;\n\n const handleClick = () => {\n if (value) {\n handleChange.cancel();\n setValue('');\n onSubmit('');\n inputRef.current?.focus();\n }\n };\n\n return (\n <button\n className={b('input-icon', {close: isClose})}\n onClick={handleClick}\n aria-label={value ? i18n(Keyset.ClearAction) : undefined}\n aria-hidden={!value}\n >\n <Icon size={iconSize} data={isClose ? Xmark : Magnifier} />\n </button>\n );\n }, [handleChange, onSubmit, value]);\n\n return (\n <div className={b({size}, className)}>\n <TextInput\n className={b('search-suggest')}\n value={value}\n onUpdate={(query) => {\n setValue(query);\n handleChange(query);\n }}\n placeholder={placeholder}\n size={size === 'm' ? 'xl' : 'l'}\n controlRef={inputRef}\n view=\"clear\"\n controlProps={{\n className: b('search-suggest-control'),\n }}\n endContent={rightContent}\n />\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"Search.js","sourceRoot":"../../../../src","sources":["components/Search/Search.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {Magnifier, Xmark} from '@gravity-ui/icons';\nimport {Icon, TextInput} from '@gravity-ui/uikit';\nimport lodashDebounce from 'lodash/debounce';\n\nimport {useIsIPhone} from '../../hooks/useIsIPhone';\nimport {Keyset, i18n} from '../../i18n';\nimport {ClassNameProps} from '../../models/common';\nimport {block} from '../../utils/cn';\n\nimport './Search.scss';\n\nconst b = block('search');\n\nexport type SearchSize = 's' | 'm';\n\ninterface SearchProps extends ClassNameProps {\n value?: string;\n initialValue: string;\n onSubmit: (value: string) => void;\n debounce?: number;\n placeholder?: string;\n size?: SearchSize;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst SEARCH_ICON_SIZE = 16;\nconst CLOSE_ICON_SIZE = 20;\nconst AUTOFOCUS_TIMEOUT = 0;\n\n/**\n * Search component, placed on blog main page,\n * based on TextInput from uikit\n *\n * @returns {JSX|null}\n */\nexport const Search = ({\n className,\n initialValue,\n onSubmit,\n debounce = 300,\n placeholder = i18n(Keyset.Search),\n size = 'm',\n autoFocus = false,\n value: externalValue,\n}: SearchProps) => {\n const handleChange = lodashDebounce(onSubmit, debounce);\n\n const [value, setValue] = React.useState<string>(initialValue);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const isIPhone = useIsIPhone();\n\n React.useEffect(() => {\n if (externalValue !== undefined) {\n setValue(externalValue);\n }\n }, [externalValue]);\n\n React.useEffect(() => {\n if (autoFocus && !isIPhone) {\n setTimeout(() => inputRef?.current?.focus({preventScroll: true}), AUTOFOCUS_TIMEOUT);\n }\n }, [autoFocus, inputRef, isIPhone]);\n\n const rightContent = React.useMemo(() => {\n const isClose = Boolean(value);\n const iconSize = value ? CLOSE_ICON_SIZE : SEARCH_ICON_SIZE;\n\n const handleClick = () => {\n if (value) {\n handleChange.cancel();\n setValue('');\n onSubmit('');\n inputRef.current?.focus();\n }\n };\n\n return (\n <button\n className={b('input-icon', {close: isClose})}\n onClick={handleClick}\n aria-label={value ? i18n(Keyset.ClearAction) : undefined}\n aria-hidden={!value}\n >\n <Icon size={iconSize} data={isClose ? Xmark : Magnifier} />\n </button>\n );\n }, [handleChange, onSubmit, value]);\n\n return (\n <div className={b({size}, className)}>\n <TextInput\n className={b('search-suggest')}\n value={value}\n onUpdate={(query) => {\n setValue(query);\n handleChange(query);\n }}\n placeholder={placeholder}\n size={size === 'm' ? 'xl' : 'l'}\n controlRef={inputRef}\n view=\"clear\"\n controlProps={{\n className: b('search-suggest-control'),\n }}\n endContent={rightContent}\n />\n </div>\n );\n};\n"]}
@@ -10,8 +10,8 @@ const PromptSignIn_1 = require("../../components/PromptSignIn/PromptSignIn.js");
10
10
  const usePromptSignInProps_1 = require("../../components/PromptSignIn/hooks/usePromptSignInProps.js");
11
11
  const FeedContext_1 = require("../../contexts/FeedContext.js");
12
12
  const LikesContext_1 = require("../../contexts/LikesContext.js");
13
- const useExtendedComponentMap_1 = require("../../hooks/useExtendedComponentMap.js");
14
13
  const SettingsContext_1 = require("../../contexts/SettingsContext.js");
14
+ const useExtendedComponentMap_1 = require("../../hooks/useExtendedComponentMap.js");
15
15
  const BlogPage = ({ content, posts, tags, services, getPosts, metaData, custom, hasLikes = false, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser = false, onClickSignIn, }) => {
16
16
  const { isAnimationEnabled } = React.useContext(SettingsContext_1.SettingsContext);
17
17
  const _a = (0, usePromptSignInProps_1.usePromptSignInProps)(onClickSignIn), { requireSignIn } = _a, promptSignInProps = tslib_1.__rest(_a, ["requireSignIn"]);
@@ -1 +1 @@
1
- {"version":3,"file":"BlogPage.js","sourceRoot":"../../../../src","sources":["containers/BlogPage/BlogPage.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,mEAOsC;AAEtC,6EAAqE;AACrE,gFAAwE;AACxE,sGAA8F;AAC9F,+DAAuD;AACvD,iEAAyD;AACzD,oFAA4E;AAS5E,uEAA+D;AAsBxD,MAAM,QAAQ,GAAG,CAAC,EACrB,OAAO,EACP,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,QAAQ,GAAG,KAAK,EAChB,UAAU,EACV,UAAU,EACV,QAAQ,EACR,8BAA8B,EAC9B,cAAc,GAAG,KAAK,EACtB,aAAa,GACD,EAAE,EAAE;IAChB,MAAM,EAAC,kBAAkB,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IAC/D,MAAM,KAAwC,IAAA,2CAAoB,EAAC,aAAa,CAAC,EAA3E,EAAC,aAAa,OAA6D,EAAxD,iBAAiB,sBAApC,iBAAqC,CAAsC,CAAC;IAElF,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAClC,GAAG,EAAE,CAAC,CAAC,EAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAC,CAAC,EAC7D,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,CACxD,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,iDAAuB,EAAC,MAAM,CAAC,CAAC;IAE3D,OAAO,CACH,wBAAC,2BAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,gBAAgB,aAC1C,uBAAC,yBAAW,CAAC,QAAQ,IACjB,KAAK,EAAE;oBACH,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,UAAU,EAAE,KAAK,CAAC,KAAK;oBACvB,IAAI;oBACJ,QAAQ,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE;oBACxB,QAAQ;oBACR,8BAA8B;iBACjC,YAED,wBAAC,0CAAuB,oBAChB,QAAQ,IACZ,eAAe,kCAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,KAAI,EAAE,CAAC,KAAE,kBAAkB,gBAEzE,QAAQ,CAAC,CAAC,CAAC,uBAAC,yBAAW,oBAAK,QAAQ,EAAI,CAAC,CAAC,CAAC,IAAI,EAChD,uBAAC,kCAAe,IACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,kBAAkB,EAC1B,UAAU,EAAE,UAAU,GACxB,KACoB,GACP,EACvB,uBAAC,2BAAY,oBAAK,iBAAiB,EAAI,IACnB,CAC3B,CAAC;AACN,CAAC,CAAC;AAtDW,QAAA,QAAQ,YAsDnB","sourcesContent":["import * as React from 'react';\n\nimport {\n CustomConfig,\n NavigationData,\n PageConstructor,\n PageConstructorProvider,\n PageConstructorProviderProps,\n PageContent,\n} from '@gravity-ui/page-constructor';\n\nimport {MetaWrapper} from '../../components/MetaWrapper/MetaWrapper';\nimport {PromptSignIn} from '../../components/PromptSignIn/PromptSignIn';\nimport {usePromptSignInProps} from '../../components/PromptSignIn/hooks/usePromptSignInProps';\nimport {FeedContext} from '../../contexts/FeedContext';\nimport {LikesContext} from '../../contexts/LikesContext';\nimport {useExtendedComponentMap} from '../../hooks/useExtendedComponentMap';\nimport {\n GetPostsType,\n MetaProps,\n PostsProps,\n Service,\n Tag,\n ToggleLikeCallbackType,\n} from '../../models/common';\nimport {SettingsContext} from '../../contexts/SettingsContext';\n\nimport './BlogPage.scss';\n\nexport type BlogPageProps = {\n content: PageContent;\n posts: PostsProps;\n tags: Tag[];\n services?: Service[];\n navigation?: NavigationData;\n getPosts: GetPostsType;\n hasLikes?: boolean;\n toggleLike?: ToggleLikeCallbackType;\n metaData?: MetaProps;\n settings?: PageConstructorProviderProps;\n custom?: CustomConfig;\n pageCountForShowSupportButtons?: number;\n isSignedInUser?: boolean;\n // Required to enable Sign In on Post like\n onClickSignIn?: React.EventHandler<React.SyntheticEvent>;\n};\n\nexport const BlogPage = ({\n content,\n posts,\n tags,\n services,\n getPosts,\n metaData,\n custom,\n hasLikes = false,\n toggleLike,\n navigation,\n settings,\n pageCountForShowSupportButtons,\n isSignedInUser = false,\n onClickSignIn,\n}: BlogPageProps) => {\n const {isAnimationEnabled} = React.useContext(SettingsContext);\n const {requireSignIn, ...promptSignInProps} = usePromptSignInProps(onClickSignIn);\n\n const likesContextData = React.useMemo(\n () => ({toggleLike, hasLikes, isSignedInUser, requireSignIn}),\n [toggleLike, hasLikes, isSignedInUser, requireSignIn],\n );\n\n const actualComponentMap = useExtendedComponentMap(custom);\n\n return (\n <LikesContext.Provider value={likesContextData}>\n <FeedContext.Provider\n value={{\n posts: posts.posts,\n pinnedPost: posts.pinnedPost,\n totalCount: posts.count,\n tags,\n services: services ?? [],\n getPosts,\n pageCountForShowSupportButtons,\n }}\n >\n <PageConstructorProvider\n {...settings}\n projectSettings={{...(settings?.projectSettings || {}), isAnimationEnabled}}\n >\n {metaData ? <MetaWrapper {...metaData} /> : null}\n <PageConstructor\n content={content}\n custom={actualComponentMap}\n navigation={navigation}\n />\n </PageConstructorProvider>\n </FeedContext.Provider>\n <PromptSignIn {...promptSignInProps} />\n </LikesContext.Provider>\n );\n};\n"]}
1
+ {"version":3,"file":"BlogPage.js","sourceRoot":"../../../../src","sources":["containers/BlogPage/BlogPage.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,mEAOsC;AAEtC,6EAAqE;AACrE,gFAAwE;AACxE,sGAA8F;AAC9F,+DAAuD;AACvD,iEAAyD;AACzD,uEAA+D;AAC/D,oFAA4E;AA8BrE,MAAM,QAAQ,GAAG,CAAC,EACrB,OAAO,EACP,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,QAAQ,GAAG,KAAK,EAChB,UAAU,EACV,UAAU,EACV,QAAQ,EACR,8BAA8B,EAC9B,cAAc,GAAG,KAAK,EACtB,aAAa,GACD,EAAE,EAAE;IAChB,MAAM,EAAC,kBAAkB,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IAC/D,MAAM,KAAwC,IAAA,2CAAoB,EAAC,aAAa,CAAC,EAA3E,EAAC,aAAa,OAA6D,EAAxD,iBAAiB,sBAApC,iBAAqC,CAAsC,CAAC;IAElF,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAClC,GAAG,EAAE,CAAC,CAAC,EAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAC,CAAC,EAC7D,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,CACxD,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,iDAAuB,EAAC,MAAM,CAAC,CAAC;IAE3D,OAAO,CACH,wBAAC,2BAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,gBAAgB,aAC1C,uBAAC,yBAAW,CAAC,QAAQ,IACjB,KAAK,EAAE;oBACH,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,UAAU,EAAE,KAAK,CAAC,KAAK;oBACvB,IAAI;oBACJ,QAAQ,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE;oBACxB,QAAQ;oBACR,8BAA8B;iBACjC,YAED,wBAAC,0CAAuB,oBAChB,QAAQ,IACZ,eAAe,kCAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,KAAI,EAAE,CAAC,KAAE,kBAAkB,gBAEzE,QAAQ,CAAC,CAAC,CAAC,uBAAC,yBAAW,oBAAK,QAAQ,EAAI,CAAC,CAAC,CAAC,IAAI,EAChD,uBAAC,kCAAe,IACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,kBAAkB,EAC1B,UAAU,EAAE,UAAU,GACxB,KACoB,GACP,EACvB,uBAAC,2BAAY,oBAAK,iBAAiB,EAAI,IACnB,CAC3B,CAAC;AACN,CAAC,CAAC;AAtDW,QAAA,QAAQ,YAsDnB","sourcesContent":["import * as React from 'react';\n\nimport {\n CustomConfig,\n NavigationData,\n PageConstructor,\n PageConstructorProvider,\n PageConstructorProviderProps,\n PageContent,\n} from '@gravity-ui/page-constructor';\n\nimport {MetaWrapper} from '../../components/MetaWrapper/MetaWrapper';\nimport {PromptSignIn} from '../../components/PromptSignIn/PromptSignIn';\nimport {usePromptSignInProps} from '../../components/PromptSignIn/hooks/usePromptSignInProps';\nimport {FeedContext} from '../../contexts/FeedContext';\nimport {LikesContext} from '../../contexts/LikesContext';\nimport {SettingsContext} from '../../contexts/SettingsContext';\nimport {useExtendedComponentMap} from '../../hooks/useExtendedComponentMap';\nimport {\n GetPostsType,\n MetaProps,\n PostsProps,\n Service,\n Tag,\n ToggleLikeCallbackType,\n} from '../../models/common';\n\nimport './BlogPage.scss';\n\nexport type BlogPageProps = {\n content: PageContent;\n posts: PostsProps;\n tags: Tag[];\n services?: Service[];\n navigation?: NavigationData;\n getPosts: GetPostsType;\n hasLikes?: boolean;\n toggleLike?: ToggleLikeCallbackType;\n metaData?: MetaProps;\n settings?: PageConstructorProviderProps;\n custom?: CustomConfig;\n pageCountForShowSupportButtons?: number;\n isSignedInUser?: boolean;\n // Required to enable Sign In on Post like\n onClickSignIn?: React.EventHandler<React.SyntheticEvent>;\n};\n\nexport const BlogPage = ({\n content,\n posts,\n tags,\n services,\n getPosts,\n metaData,\n custom,\n hasLikes = false,\n toggleLike,\n navigation,\n settings,\n pageCountForShowSupportButtons,\n isSignedInUser = false,\n onClickSignIn,\n}: BlogPageProps) => {\n const {isAnimationEnabled} = React.useContext(SettingsContext);\n const {requireSignIn, ...promptSignInProps} = usePromptSignInProps(onClickSignIn);\n\n const likesContextData = React.useMemo(\n () => ({toggleLike, hasLikes, isSignedInUser, requireSignIn}),\n [toggleLike, hasLikes, isSignedInUser, requireSignIn],\n );\n\n const actualComponentMap = useExtendedComponentMap(custom);\n\n return (\n <LikesContext.Provider value={likesContextData}>\n <FeedContext.Provider\n value={{\n posts: posts.posts,\n pinnedPost: posts.pinnedPost,\n totalCount: posts.count,\n tags,\n services: services ?? [],\n getPosts,\n pageCountForShowSupportButtons,\n }}\n >\n <PageConstructorProvider\n {...settings}\n projectSettings={{...(settings?.projectSettings || {}), isAnimationEnabled}}\n >\n {metaData ? <MetaWrapper {...metaData} /> : null}\n <PageConstructor\n content={content}\n custom={actualComponentMap}\n navigation={navigation}\n />\n </PageConstructorProvider>\n </FeedContext.Provider>\n <PromptSignIn {...promptSignInProps} />\n </LikesContext.Provider>\n );\n};\n"]}
@@ -10,9 +10,9 @@ const PromptSignIn_1 = require("../../components/PromptSignIn/PromptSignIn.js");
10
10
  const usePromptSignInProps_1 = require("../../components/PromptSignIn/hooks/usePromptSignInProps.js");
11
11
  const LikesContext_1 = require("../../contexts/LikesContext.js");
12
12
  const PostPageContext_1 = require("../../contexts/PostPageContext.js");
13
+ const SettingsContext_1 = require("../../contexts/SettingsContext.js");
13
14
  const useExtendedComponentMap_1 = require("../../hooks/useExtendedComponentMap.js");
14
15
  const useLikes_1 = require("../../hooks/useLikes.js");
15
- const SettingsContext_1 = require("../../contexts/SettingsContext.js");
16
16
  const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings, microdata, navigation, custom, shareOptions, isSignedInUser = false, onClickSignIn, breadcrumbs, }) => {
17
17
  const { isAnimationEnabled } = React.useContext(SettingsContext_1.SettingsContext);
18
18
  const { hasUserLike, likesCount, handleLike } = (0, useLikes_1.useLikes)({
@@ -1 +1 @@
1
- {"version":3,"file":"BlogPostPage.js","sourceRoot":"../../../../src","sources":["containers/BlogPostPage/BlogPostPage.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAG/B,mEASsC;AAEtC,6EAAqE;AACrE,gFAAwE;AACxE,sGAA8F;AAC9F,iEAAyD;AACzD,uEAA+D;AAC/D,oFAA4E;AAC5E,sDAA8C;AAE9C,uEAA+D;AAyBxD,MAAM,YAAY,GAAG,CAAC,EACzB,QAAQ,EACR,cAAc,EACd,KAAK,EACL,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,YAAY,EACZ,cAAc,GAAG,KAAK,EACtB,aAAa,EACb,WAAW,GACK,EAAE,EAAE;IACpB,MAAM,EAAC,kBAAkB,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IAC/D,MAAM,EAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAC,GAAG,IAAA,mBAAQ,EAAC;QACnD,OAAO,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW;QAC3B,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QACxB,kBAAkB,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QACrC,MAAM,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU;KAC3B,CAAC,CAAC;IAEH,MAAM,KAAwC,IAAA,2CAAoB,EAAC,aAAa,CAAC,EAA3E,EAAC,aAAa,OAA6D,EAAxD,iBAAiB,sBAApC,iBAAqC,CAAsC,CAAC;IAElF,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAClC,GAAG,EAAE,CAAC,CAAC;QACH,UAAU,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QAC7B,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC;QACxB,cAAc;QACd,aAAa;KAChB,CAAC,EACF,CAAC,KAAK,EAAE,cAAc,EAAE,aAAa,CAAC,CACzC,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,iDAAuB,EAAC,MAAM,CAAC,CAAC;IAE3D,OAAO,CACH,wBAAC,2BAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,gBAAgB,aAC1C,uBAAC,iCAAe,CAAC,QAAQ,IACrB,KAAK,EAAE;oBACH,IAAI;oBACJ,cAAc;oBACd,KAAK,EAAE,KAAK;wBACR,CAAC,CAAC;4BACI,cAAc,EAAE,UAAU;4BAC1B,WAAW;4BACX,UAAU;yBACb;wBACH,CAAC,CAAC,SAAS;oBACf,YAAY;oBACZ,WAAW;iBACd,YAED,wBAAC,0CAAuB,oBAChB,QAAQ,IACZ,eAAe,kCAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,KAAI,EAAE,CAAC,KAAE,kBAAkB,gBAEzE,QAAQ,CAAC,CAAC,CAAC,uBAAC,yBAAW,oBAAK,QAAQ,EAAI,CAAC,CAAC,CAAC,IAAI,EAChD,uBAAC,kCAAe,IACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,kBAAkB,EAC1B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,GACtB,KACoB,GACH,EAC3B,uBAAC,2BAAY,oBAAK,iBAAiB,EAAI,IACnB,CAC3B,CAAC;AACN,CAAC,CAAC;AAtEW,QAAA,YAAY,gBAsEvB","sourcesContent":["import * as React from 'react';\n\nimport {ShareOptions} from '@gravity-ui/components';\nimport {\n CustomConfig,\n HeaderBreadCrumbsProps,\n NavigationData,\n PageConstructor,\n PageConstructorProps,\n PageConstructorProvider,\n PageConstructorProviderProps,\n PageContent,\n} from '@gravity-ui/page-constructor';\n\nimport {MetaWrapper} from '../../components/MetaWrapper/MetaWrapper';\nimport {PromptSignIn} from '../../components/PromptSignIn/PromptSignIn';\nimport {usePromptSignInProps} from '../../components/PromptSignIn/hooks/usePromptSignInProps';\nimport {LikesContext} from '../../contexts/LikesContext';\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {useExtendedComponentMap} from '../../hooks/useExtendedComponentMap';\nimport {useLikes} from '../../hooks/useLikes';\nimport {MetaProps, PostData, ToggleLikeCallbackType} from '../../models/common';\nimport {SettingsContext} from '../../contexts/SettingsContext';\n\nimport './BlogPostPage.scss';\n\nexport interface BlogPostPageProps {\n suggestedPosts: PostData[];\n metaData?: MetaProps;\n likes?: {\n hasUserLike?: boolean;\n likesCount?: number;\n toggleLike?: ToggleLikeCallbackType;\n };\n content: PageContent;\n post: PostData;\n settings?: PageConstructorProviderProps;\n navigation?: NavigationData;\n microdata?: PageConstructorProps['microdata'];\n custom?: CustomConfig;\n shareOptions?: ShareOptions[];\n isSignedInUser?: boolean;\n // Required to enable Sign In on Post like\n onClickSignIn?: React.EventHandler<React.SyntheticEvent>;\n breadcrumbs?: HeaderBreadCrumbsProps;\n}\n\nexport const BlogPostPage = ({\n metaData,\n suggestedPosts,\n likes,\n content,\n post,\n settings,\n microdata,\n navigation,\n custom,\n shareOptions,\n isSignedInUser = false,\n onClickSignIn,\n breadcrumbs,\n}: BlogPostPageProps) => {\n const {isAnimationEnabled} = React.useContext(SettingsContext);\n const {hasUserLike, likesCount, handleLike} = useLikes({\n hasLike: likes?.hasUserLike,\n count: likes?.likesCount,\n toggleLikeCallback: likes?.toggleLike,\n postId: post?.blogPostId,\n });\n\n const {requireSignIn, ...promptSignInProps} = usePromptSignInProps(onClickSignIn);\n\n const likesContextData = React.useMemo(\n () => ({\n toggleLike: likes?.toggleLike,\n hasLikes: Boolean(likes),\n isSignedInUser,\n requireSignIn,\n }),\n [likes, isSignedInUser, requireSignIn],\n );\n\n const actualComponentMap = useExtendedComponentMap(custom);\n\n return (\n <LikesContext.Provider value={likesContextData}>\n <PostPageContext.Provider\n value={{\n post,\n suggestedPosts,\n likes: likes\n ? {\n handleUserLike: handleLike,\n hasUserLike,\n likesCount,\n }\n : undefined,\n shareOptions,\n breadcrumbs,\n }}\n >\n <PageConstructorProvider\n {...settings}\n projectSettings={{...(settings?.projectSettings || {}), isAnimationEnabled}}\n >\n {metaData ? <MetaWrapper {...metaData} /> : null}\n <PageConstructor\n content={content}\n custom={actualComponentMap}\n navigation={navigation}\n microdata={microdata}\n />\n </PageConstructorProvider>\n </PostPageContext.Provider>\n <PromptSignIn {...promptSignInProps} />\n </LikesContext.Provider>\n );\n};\n"]}
1
+ {"version":3,"file":"BlogPostPage.js","sourceRoot":"../../../../src","sources":["containers/BlogPostPage/BlogPostPage.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAG/B,mEASsC;AAEtC,6EAAqE;AACrE,gFAAwE;AACxE,sGAA8F;AAC9F,iEAAyD;AACzD,uEAA+D;AAC/D,uEAA+D;AAC/D,oFAA4E;AAC5E,sDAA8C;AA0BvC,MAAM,YAAY,GAAG,CAAC,EACzB,QAAQ,EACR,cAAc,EACd,KAAK,EACL,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,YAAY,EACZ,cAAc,GAAG,KAAK,EACtB,aAAa,EACb,WAAW,GACK,EAAE,EAAE;IACpB,MAAM,EAAC,kBAAkB,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IAC/D,MAAM,EAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAC,GAAG,IAAA,mBAAQ,EAAC;QACnD,OAAO,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW;QAC3B,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QACxB,kBAAkB,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QACrC,MAAM,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU;KAC3B,CAAC,CAAC;IAEH,MAAM,KAAwC,IAAA,2CAAoB,EAAC,aAAa,CAAC,EAA3E,EAAC,aAAa,OAA6D,EAAxD,iBAAiB,sBAApC,iBAAqC,CAAsC,CAAC;IAElF,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAClC,GAAG,EAAE,CAAC,CAAC;QACH,UAAU,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QAC7B,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC;QACxB,cAAc;QACd,aAAa;KAChB,CAAC,EACF,CAAC,KAAK,EAAE,cAAc,EAAE,aAAa,CAAC,CACzC,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,iDAAuB,EAAC,MAAM,CAAC,CAAC;IAE3D,OAAO,CACH,wBAAC,2BAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,gBAAgB,aAC1C,uBAAC,iCAAe,CAAC,QAAQ,IACrB,KAAK,EAAE;oBACH,IAAI;oBACJ,cAAc;oBACd,KAAK,EAAE,KAAK;wBACR,CAAC,CAAC;4BACI,cAAc,EAAE,UAAU;4BAC1B,WAAW;4BACX,UAAU;yBACb;wBACH,CAAC,CAAC,SAAS;oBACf,YAAY;oBACZ,WAAW;iBACd,YAED,wBAAC,0CAAuB,oBAChB,QAAQ,IACZ,eAAe,kCAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,KAAI,EAAE,CAAC,KAAE,kBAAkB,gBAEzE,QAAQ,CAAC,CAAC,CAAC,uBAAC,yBAAW,oBAAK,QAAQ,EAAI,CAAC,CAAC,CAAC,IAAI,EAChD,uBAAC,kCAAe,IACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,kBAAkB,EAC1B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,GACtB,KACoB,GACH,EAC3B,uBAAC,2BAAY,oBAAK,iBAAiB,EAAI,IACnB,CAC3B,CAAC;AACN,CAAC,CAAC;AAtEW,QAAA,YAAY,gBAsEvB","sourcesContent":["import * as React from 'react';\n\nimport {ShareOptions} from '@gravity-ui/components';\nimport {\n CustomConfig,\n HeaderBreadCrumbsProps,\n NavigationData,\n PageConstructor,\n PageConstructorProps,\n PageConstructorProvider,\n PageConstructorProviderProps,\n PageContent,\n} from '@gravity-ui/page-constructor';\n\nimport {MetaWrapper} from '../../components/MetaWrapper/MetaWrapper';\nimport {PromptSignIn} from '../../components/PromptSignIn/PromptSignIn';\nimport {usePromptSignInProps} from '../../components/PromptSignIn/hooks/usePromptSignInProps';\nimport {LikesContext} from '../../contexts/LikesContext';\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {SettingsContext} from '../../contexts/SettingsContext';\nimport {useExtendedComponentMap} from '../../hooks/useExtendedComponentMap';\nimport {useLikes} from '../../hooks/useLikes';\nimport {MetaProps, PostData, ToggleLikeCallbackType} from '../../models/common';\n\nimport './BlogPostPage.scss';\n\nexport interface BlogPostPageProps {\n suggestedPosts: PostData[];\n metaData?: MetaProps;\n likes?: {\n hasUserLike?: boolean;\n likesCount?: number;\n toggleLike?: ToggleLikeCallbackType;\n };\n content: PageContent;\n post: PostData;\n settings?: PageConstructorProviderProps;\n navigation?: NavigationData;\n microdata?: PageConstructorProps['microdata'];\n custom?: CustomConfig;\n shareOptions?: ShareOptions[];\n isSignedInUser?: boolean;\n // Required to enable Sign In on Post like\n onClickSignIn?: React.EventHandler<React.SyntheticEvent>;\n breadcrumbs?: HeaderBreadCrumbsProps;\n}\n\nexport const BlogPostPage = ({\n metaData,\n suggestedPosts,\n likes,\n content,\n post,\n settings,\n microdata,\n navigation,\n custom,\n shareOptions,\n isSignedInUser = false,\n onClickSignIn,\n breadcrumbs,\n}: BlogPostPageProps) => {\n const {isAnimationEnabled} = React.useContext(SettingsContext);\n const {hasUserLike, likesCount, handleLike} = useLikes({\n hasLike: likes?.hasUserLike,\n count: likes?.likesCount,\n toggleLikeCallback: likes?.toggleLike,\n postId: post?.blogPostId,\n });\n\n const {requireSignIn, ...promptSignInProps} = usePromptSignInProps(onClickSignIn);\n\n const likesContextData = React.useMemo(\n () => ({\n toggleLike: likes?.toggleLike,\n hasLikes: Boolean(likes),\n isSignedInUser,\n requireSignIn,\n }),\n [likes, isSignedInUser, requireSignIn],\n );\n\n const actualComponentMap = useExtendedComponentMap(custom);\n\n return (\n <LikesContext.Provider value={likesContextData}>\n <PostPageContext.Provider\n value={{\n post,\n suggestedPosts,\n likes: likes\n ? {\n handleUserLike: handleLike,\n hasUserLike,\n likesCount,\n }\n : undefined,\n shareOptions,\n breadcrumbs,\n }}\n >\n <PageConstructorProvider\n {...settings}\n projectSettings={{...(settings?.projectSettings || {}), isAnimationEnabled}}\n >\n {metaData ? <MetaWrapper {...metaData} /> : null}\n <PageConstructor\n content={content}\n custom={actualComponentMap}\n navigation={navigation}\n microdata={microdata}\n />\n </PageConstructorProvider>\n </PostPageContext.Provider>\n <PromptSignIn {...promptSignInProps} />\n </LikesContext.Provider>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"LocaleContext.js","sourceRoot":"../../../src","sources":["contexts/LocaleContext.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAG/B,6CAAuC;AAM1B,QAAA,aAAa,GAAG,KAAK,CAAC,aAAa,CAAqB;IACjE,MAAM,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,YAAI,CAAC,EAAE;QACb,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,IAAI;KACnB;CACJ,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {Locale} from '../models/locale';\nimport {Lang} from '@gravity-ui/uikit';\n\nexport type LocaleContextProps = {\n locale: Locale;\n};\n\nexport const LocaleContext = React.createContext<LocaleContextProps>({\n locale: {\n code: 'en-En',\n lang: Lang.En,\n langName: 'English',\n pathPrefix: 'en',\n },\n});\n"]}
1
+ {"version":3,"file":"LocaleContext.js","sourceRoot":"../../../src","sources":["contexts/LocaleContext.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAE/B,6CAAuC;AAQ1B,QAAA,aAAa,GAAG,KAAK,CAAC,aAAa,CAAqB;IACjE,MAAM,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,YAAI,CAAC,EAAE;QACb,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,IAAI;KACnB;CACJ,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {Lang} from '@gravity-ui/uikit';\n\nimport {Locale} from '../models/locale';\n\nexport type LocaleContextProps = {\n locale: Locale;\n};\n\nexport const LocaleContext = React.createContext<LocaleContextProps>({\n locale: {\n code: 'en-En',\n lang: Lang.En,\n langName: 'English',\n pathPrefix: 'en',\n },\n});\n"]}
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { ShareOptions } from '@gravity-ui/components';
3
- import { PostData } from "../models/common.js";
4
3
  import { HeaderBreadCrumbsProps } from '@gravity-ui/page-constructor';
4
+ import { PostData } from "../models/common.js";
5
5
  export type LikesRoutineType = {
6
6
  handleUserLike: () => void;
7
7
  hasUserLike: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"PostPageContext.js","sourceRoot":"../../../src","sources":["contexts/PostPageContext.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAqBlB,QAAA,eAAe,GAAG,KAAK,CAAC,aAAa,CAC9C,EAA0B,CAC7B,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {ShareOptions} from '@gravity-ui/components';\n\nimport {PostData} from '../models/common';\nimport {HeaderBreadCrumbsProps} from '@gravity-ui/page-constructor';\n\nexport type LikesRoutineType = {\n handleUserLike: () => void;\n hasUserLike: boolean;\n likesCount: number;\n};\n\nexport interface PostPageContextProps {\n post: PostData;\n suggestedPosts: PostData[];\n likes?: LikesRoutineType;\n shareOptions?: ShareOptions[];\n breadcrumbs?: HeaderBreadCrumbsProps;\n}\n\nexport const PostPageContext = React.createContext<PostPageContextProps>(\n {} as PostPageContextProps,\n);\n"]}
1
+ {"version":3,"file":"PostPageContext.js","sourceRoot":"../../../src","sources":["contexts/PostPageContext.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAqBlB,QAAA,eAAe,GAAG,KAAK,CAAC,aAAa,CAC9C,EAA0B,CAC7B,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {ShareOptions} from '@gravity-ui/components';\nimport {HeaderBreadCrumbsProps} from '@gravity-ui/page-constructor';\n\nimport {PostData} from '../models/common';\n\nexport type LikesRoutineType = {\n handleUserLike: () => void;\n hasUserLike: boolean;\n likesCount: number;\n};\n\nexport interface PostPageContextProps {\n post: PostData;\n suggestedPosts: PostData[];\n likes?: LikesRoutineType;\n shareOptions?: ShareOptions[];\n breadcrumbs?: HeaderBreadCrumbsProps;\n}\n\nexport const PostPageContext = React.createContext<PostPageContextProps>(\n {} as PostPageContextProps,\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsContext.js","sourceRoot":"../../../src","sources":["contexts/SettingsContext.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAWlB,QAAA,eAAe,GAAG,KAAK,CAAC,aAAa,CAAuB,EAAE,CAAC,CAAC","sourcesContent":["import * as React from 'react';\nimport {CustomInfoItemComponent} from '../components/PostInfo/PostInfo';\n\nexport interface SettingsContextProps {\n addNavigationLinkForPages?: boolean;\n isAnimationEnabled?: boolean;\n\n getBlogPath?: (pathPrefix: string) => string;\n extraInfoItems?: CustomInfoItemComponent[];\n}\n\nexport const SettingsContext = React.createContext<SettingsContextProps>({});\n"]}
1
+ {"version":3,"file":"SettingsContext.js","sourceRoot":"../../../src","sources":["contexts/SettingsContext.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAYlB,QAAA,eAAe,GAAG,KAAK,CAAC,aAAa,CAAuB,EAAE,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {CustomInfoItemComponent} from '../components/PostInfo/PostInfo';\n\nexport interface SettingsContextProps {\n addNavigationLinkForPages?: boolean;\n isAnimationEnabled?: boolean;\n\n getBlogPath?: (pathPrefix: string) => string;\n extraInfoItems?: CustomInfoItemComponent[];\n}\n\nexport const SettingsContext = React.createContext<SettingsContextProps>({});\n"]}
@@ -21,7 +21,10 @@ export type ColoredTextProps = ContentBlockProps & QAProps & {
21
21
  export type CTAProps = QAProps & {
22
22
  items: Array<ContentBlockProps>;
23
23
  } & PaddingsYFMProps;
24
- export type HeaderProps = HeaderBlockProps & PaddingsYFMProps;
24
+ type HeaderBlogProps = {
25
+ imageInGrid?: boolean;
26
+ };
27
+ export type HeaderProps = HeaderBlockProps & PaddingsYFMProps & HeaderBlogProps;
25
28
  export type LayoutProps = {
26
29
  fullWidth?: boolean;
27
30
  mobileOrder?: string;
@@ -87,3 +90,4 @@ export type BlockModel = AuthorBlockModel | BannerBlockModel | ColoredTextBlockM
87
90
  export type Block = BlockModel & {
88
91
  [x: string]: any;
89
92
  };
93
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.js","sourceRoot":"../../../src","sources":["models/blocks.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\n\nimport {\n ContentBlockProps,\n FormBlockData,\n HeaderBlockProps,\n MediaProps as PCMediaProps,\n TextTheme,\n} from '@gravity-ui/page-constructor';\n\nimport {BlockType, ClassNameProps, PostData, QAProps} from './common';\nimport {PaddingsYFMProps} from './paddings';\n\n// blocks props\nexport type AuthorProps = ClassNameProps & {\n authorId: number | string;\n image: string;\n} & PaddingsYFMProps &\n QAProps;\n\nexport type BannerProps = ContentBlockProps &\n QAProps & {\n color?: string;\n image?: string;\n imageSize?: 's' | 'm';\n } & PaddingsYFMProps;\n\nexport type ColoredTextProps = ContentBlockProps &\n QAProps & {\n background?: {\n color?: string;\n image?: string;\n altText?: string;\n };\n } & PaddingsYFMProps;\n\nexport type CTAProps = QAProps & {\n items: Array<ContentBlockProps>;\n} & PaddingsYFMProps;\n\nexport type HeaderProps = HeaderBlockProps & PaddingsYFMProps;\n\nexport type LayoutProps = {\n fullWidth?: boolean;\n mobileOrder?: string;\n children: React.ReactElement[];\n} & PaddingsYFMProps;\n\nexport type MediaProps = ClassNameProps &\n PaddingsYFMProps &\n Partial<\n Pick<\n PCMediaProps,\n | 'youtube'\n | 'previewImg'\n | 'image'\n | 'video'\n | 'dataLens'\n | 'videoIframe'\n | 'videoMicrodata'\n >\n > & {\n text?: string;\n };\n\nexport type MetaProps = QAProps & {\n locale: string;\n theme?: TextTheme;\n} & PaddingsYFMProps;\n\nexport type SuggestProps = ClassNameProps & {\n posts: PostData[];\n} & PaddingsYFMProps;\n\nexport type YFMProps = {\n text: string;\n} & PaddingsYFMProps &\n QAProps;\n\nexport type FeedProps = {\n image: string;\n};\n\nexport type FormProps = {\n formData: FormBlockData;\n border?: 'shadow' | 'line' | 'none';\n} & PaddingsYFMProps &\n QAProps;\n\n// blocks models\nexport type AuthorBlockModel = {\n type: BlockType.Author;\n} & AuthorProps;\n\nexport type BannerBlockModel = {\n type: BlockType.Banner;\n} & BannerProps;\n\nexport type ColoredTextBlockModel = {\n type: BlockType.ColoredText;\n} & ColoredTextProps;\n\nexport type CTABlockModel = {\n type: BlockType.CTA;\n} & CTAProps;\n\nexport type HeaderBlockModel = {\n type: BlockType.Header;\n} & HeaderProps;\n\nexport type LayoutBlockModel = {\n type: BlockType.Layout;\n} & LayoutProps;\n\nexport type MediaBlockModel = {\n type: BlockType.Media;\n} & MediaProps;\n\nexport type MetaBlockModel = {\n type: BlockType.Meta;\n} & MetaProps;\n\nexport type SuggestBlockModel = {\n type: BlockType.Suggest;\n} & SuggestProps;\n\nexport type YFMBlockModel = {\n type: BlockType.YFM;\n} & YFMProps;\n\nexport type FeedBlockModel = {\n type: BlockType.Feed;\n} & FeedProps;\n\nexport type FormBlockModel = {\n type: BlockType.Form;\n} & FormProps;\n\nexport type BlockModel =\n | AuthorBlockModel\n | BannerBlockModel\n | ColoredTextBlockModel\n | CTABlockModel\n | HeaderBlockModel\n | LayoutBlockModel\n | MediaBlockModel\n | MetaBlockModel\n | SuggestBlockModel\n | YFMBlockModel\n | FeedBlockModel;\n\nexport type Block = BlockModel & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any;\n};\n"]}
1
+ {"version":3,"file":"blocks.js","sourceRoot":"../../../src","sources":["models/blocks.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\n\nimport {\n ContentBlockProps,\n FormBlockData,\n HeaderBlockProps,\n MediaProps as PCMediaProps,\n TextTheme,\n} from '@gravity-ui/page-constructor';\n\nimport {BlockType, ClassNameProps, PostData, QAProps} from './common';\nimport {PaddingsYFMProps} from './paddings';\n\n// blocks props\nexport type AuthorProps = ClassNameProps & {\n authorId: number | string;\n image: string;\n} & PaddingsYFMProps &\n QAProps;\n\nexport type BannerProps = ContentBlockProps &\n QAProps & {\n color?: string;\n image?: string;\n imageSize?: 's' | 'm';\n } & PaddingsYFMProps;\n\nexport type ColoredTextProps = ContentBlockProps &\n QAProps & {\n background?: {\n color?: string;\n image?: string;\n altText?: string;\n };\n } & PaddingsYFMProps;\n\nexport type CTAProps = QAProps & {\n items: Array<ContentBlockProps>;\n} & PaddingsYFMProps;\n\ntype HeaderBlogProps = {\n imageInGrid?: boolean;\n};\n\nexport type HeaderProps = HeaderBlockProps & PaddingsYFMProps & HeaderBlogProps;\n\nexport type LayoutProps = {\n fullWidth?: boolean;\n mobileOrder?: string;\n children: React.ReactElement[];\n} & PaddingsYFMProps;\n\nexport type MediaProps = ClassNameProps &\n PaddingsYFMProps &\n Partial<\n Pick<\n PCMediaProps,\n | 'youtube'\n | 'previewImg'\n | 'image'\n | 'video'\n | 'dataLens'\n | 'videoIframe'\n | 'videoMicrodata'\n >\n > & {\n text?: string;\n };\n\nexport type MetaProps = QAProps & {\n locale: string;\n theme?: TextTheme;\n} & PaddingsYFMProps;\n\nexport type SuggestProps = ClassNameProps & {\n posts: PostData[];\n} & PaddingsYFMProps;\n\nexport type YFMProps = {\n text: string;\n} & PaddingsYFMProps &\n QAProps;\n\nexport type FeedProps = {\n image: string;\n};\n\nexport type FormProps = {\n formData: FormBlockData;\n border?: 'shadow' | 'line' | 'none';\n} & PaddingsYFMProps &\n QAProps;\n\n// blocks models\nexport type AuthorBlockModel = {\n type: BlockType.Author;\n} & AuthorProps;\n\nexport type BannerBlockModel = {\n type: BlockType.Banner;\n} & BannerProps;\n\nexport type ColoredTextBlockModel = {\n type: BlockType.ColoredText;\n} & ColoredTextProps;\n\nexport type CTABlockModel = {\n type: BlockType.CTA;\n} & CTAProps;\n\nexport type HeaderBlockModel = {\n type: BlockType.Header;\n} & HeaderProps;\n\nexport type LayoutBlockModel = {\n type: BlockType.Layout;\n} & LayoutProps;\n\nexport type MediaBlockModel = {\n type: BlockType.Media;\n} & MediaProps;\n\nexport type MetaBlockModel = {\n type: BlockType.Meta;\n} & MetaProps;\n\nexport type SuggestBlockModel = {\n type: BlockType.Suggest;\n} & SuggestProps;\n\nexport type YFMBlockModel = {\n type: BlockType.YFM;\n} & YFMProps;\n\nexport type FeedBlockModel = {\n type: BlockType.Feed;\n} & FeedProps;\n\nexport type FormBlockModel = {\n type: BlockType.Form;\n} & FormProps;\n\nexport type BlockModel =\n | AuthorBlockModel\n | BannerBlockModel\n | ColoredTextBlockModel\n | CTABlockModel\n | HeaderBlockModel\n | LayoutBlockModel\n | MediaBlockModel\n | MetaBlockModel\n | SuggestBlockModel\n | YFMBlockModel\n | FeedBlockModel;\n\nexport type Block = BlockModel & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any;\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  import { AnalyticsEvent, AnalyticsEventsProp, ContentBlockProps, HeaderBreadCrumbsProps } from '@gravity-ui/page-constructor';
2
2
  import { RouterContextProps } from "../contexts/RouterContext.js";
3
- import { GetPostsRequest, Query, Tag } from "../models/common.js";
4
3
  import { AnalyticsCounter } from "../counters/utils.js";
4
+ import { GetPostsRequest, Query, Tag } from "../models/common.js";
5
5
  export interface QueryParam {
6
6
  name: string;
7
7
  value?: string | number | null;
@@ -10,8 +10,8 @@ const debounce_1 = tslib_1.__importDefault(require("lodash/debounce.js"));
10
10
  const flatten_1 = tslib_1.__importDefault(require("lodash/flatten.js"));
11
11
  const memoize_1 = tslib_1.__importDefault(require("lodash/memoize.js"));
12
12
  const constants_1 = require("../blocks/constants.js");
13
- const i18n_1 = require("../i18n/index.js");
14
13
  const utils_1 = require("../counters/utils.js");
14
+ const i18n_1 = require("../i18n/index.js");
15
15
  const QA_ATTRIBUTES_KEYS = ['container', 'content', 'wrapper', 'image', 'button'];
16
16
  function getAbsolutePath(router, url) {
17
17
  if (!router || !router.pathname) {
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"../../../src","sources":["utils/common.ts"],"names":[],"mappings":"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","sourcesContent":["import {format, parse} from 'url';\n\nimport {\n AnalyticsEvent,\n AnalyticsEventsProp,\n ContentBlockProps,\n HeaderBreadCrumbsProps,\n} from '@gravity-ui/page-constructor';\nimport camelCase from 'lodash/camelCase';\nimport debounce from 'lodash/debounce';\nimport flatten from 'lodash/flatten';\nimport memoize from 'lodash/memoize';\n\nimport {\n CONTENT_DEFAULT_COL_SIZES,\n CONTENT_DEFAULT_SIZE,\n CONTENT_DEFAULT_THEME,\n DEFAULT_PAGE,\n DEFAULT_ROWS_PER_PAGE,\n} from '../blocks/constants';\nimport {RouterContextProps} from '../contexts/RouterContext';\nimport {Keyset, i18n} from '../i18n';\nimport {GetPostsRequest, Query, Tag} from '../models/common';\nimport {AnalyticsCounter} from '../counters/utils';\n\nconst QA_ATTRIBUTES_KEYS = ['container', 'content', 'wrapper', 'image', 'button'];\n\nexport interface QueryParam {\n name: string;\n value?: string | number | null;\n}\n\nexport interface RouterActionOptions {\n shallow?: boolean;\n}\n\nexport function getAbsolutePath(router: RouterContextProps, url?: string) {\n if (!router || !router.pathname) {\n return url ?? '';\n }\n\n const parsed = parse(url || router.as || '');\n\n return format({\n ...parsed,\n protocol: parsed.protocol || 'https',\n hostname: parsed.hostname || router.hostname,\n pathname: parsed.pathname || router.pathname,\n });\n}\n\nexport const getPageSearchParams = (query: Query = {}) => {\n const searchParams = new URLSearchParams();\n\n Object.entries(query).forEach(([key, value]) => {\n searchParams.set(key, String(value));\n });\n\n return searchParams;\n};\n\nexport const scrollToHash = (hash: string, browser?: string) => {\n if (!hash) {\n return;\n }\n\n const element = document.getElementById(hash);\n\n if (!element) {\n return;\n }\n\n setTimeout(\n () => element.scrollIntoView({behavior: browser === 'Yandex' ? 'auto' : 'smooth'}),\n 0,\n );\n};\n\ntype CloudListTagStub = {};\n\nexport const getTags = memoize((tags: Tag[], blogPath: string) => {\n return tags.map(({slug, ...tag}) => {\n const queryParams = new URLSearchParams();\n queryParams.set('tags', slug);\n\n return {\n ...tag,\n id: slug,\n url: `${blogPath}?${queryParams}`,\n } as CloudListTagStub;\n });\n});\n\nconst stub = (postId: number | string) => postId;\n\nexport const postLikeStatus = debounce((postId: number | string, hasUserLike: boolean) => {\n (hasUserLike ? stub : stub)(postId);\n}, 300);\n\nexport const updateContentSizes = ({size, colSizes, theme, ...contentData}: ContentBlockProps) => ({\n ...contentData,\n size: size || CONTENT_DEFAULT_SIZE,\n colSizes: colSizes || CONTENT_DEFAULT_COL_SIZES,\n theme: theme || CONTENT_DEFAULT_THEME,\n});\n\ntype GetBreadcrumbsProps = {\n tags?: Tag[];\n blogPath: string;\n};\n\nexport const getBlogPath = (pathPrefix: string) => {\n const prefix = pathPrefix ? `/${pathPrefix}` : '';\n return `${prefix}/blog`;\n};\n\nexport function getBreadcrumbs({tags, blogPath}: GetBreadcrumbsProps) {\n const breadcrumbs: HeaderBreadCrumbsProps = {\n items: [{text: i18n(Keyset.TitleBreadcrumbs), url: blogPath}],\n theme: 'light',\n };\n\n if (tags?.length) {\n const localizedTags = getTags(tags, blogPath);\n const tag = localizedTags[0];\n // @ts-ignore todo fix\n breadcrumbs.items.push({text: tag.name, url: tag.url});\n }\n\n return breadcrumbs;\n}\n\nconst getArrayOfEvents = (events?: AnalyticsEventsProp) => {\n if (!events) {\n return [];\n }\n\n if (Array.isArray(events)) {\n return events;\n }\n\n return [events];\n};\n\nexport const getMergedAnalyticsEvents = (\n analyticEvents: AnalyticsEventsProp,\n existringEvents?: AnalyticsEventsProp,\n) => {\n const eventsAsArray = getArrayOfEvents(analyticEvents);\n const existingAsArray = getArrayOfEvents(existringEvents);\n\n return eventsAsArray.concat(existingAsArray);\n};\n\nexport const getFeedQueryParams = (queryString: Query, pageNumber?: number): GetPostsRequest => {\n const queryParams = getPageSearchParams(queryString);\n const tags = queryParams.get('tags') || undefined;\n const page = pageNumber || Number(queryParams.get('page') || DEFAULT_PAGE);\n const perPage = Number(queryParams.get('perPage') || DEFAULT_ROWS_PER_PAGE);\n const savedOnly = queryParams.get('savedOnly') === 'true';\n const search = queryParams.get('search') || undefined;\n const serviceIds = queryParams.get('services') || undefined;\n\n return {tags, page, perPage, savedOnly, search, services: serviceIds};\n};\n\nexport const scrollOnPageChange = (containerId: string) => {\n const cardsContainerEl = document.getElementById(containerId);\n const y = cardsContainerEl?.getBoundingClientRect()?.y || 0;\n\n if (y < 0) {\n scrollToHash(containerId);\n }\n};\n\nexport const getQaAttributes = (qa?: string, ...customKeys: (string | Array<string>)[]) => {\n const attributes: Record<string, string> = {};\n\n if (qa) {\n const keys = QA_ATTRIBUTES_KEYS.concat(flatten(customKeys));\n\n keys.forEach((key) => {\n attributes[camelCase(key)] = `${qa}-${key}`;\n });\n\n attributes.default = qa;\n }\n\n return attributes;\n};\n\ntype PrepareAnalyticsEventArgs = {\n name: string;\n counter?: AnalyticsCounter;\n options?: Record<string, string | number>;\n};\n\nexport const prepareAnalyticsEvent = ({\n name,\n counter = AnalyticsCounter.Main,\n options = {},\n}: PrepareAnalyticsEventArgs): AnalyticsEvent => ({\n ...options,\n name,\n counters: {\n include: [counter],\n },\n});\n"]}
1
+ {"version":3,"file":"common.js","sourceRoot":"../../../src","sources":["utils/common.ts"],"names":[],"mappings":"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","sourcesContent":["import {format, parse} from 'url';\n\nimport {\n AnalyticsEvent,\n AnalyticsEventsProp,\n ContentBlockProps,\n HeaderBreadCrumbsProps,\n} from '@gravity-ui/page-constructor';\nimport camelCase from 'lodash/camelCase';\nimport debounce from 'lodash/debounce';\nimport flatten from 'lodash/flatten';\nimport memoize from 'lodash/memoize';\n\nimport {\n CONTENT_DEFAULT_COL_SIZES,\n CONTENT_DEFAULT_SIZE,\n CONTENT_DEFAULT_THEME,\n DEFAULT_PAGE,\n DEFAULT_ROWS_PER_PAGE,\n} from '../blocks/constants';\nimport {RouterContextProps} from '../contexts/RouterContext';\nimport {AnalyticsCounter} from '../counters/utils';\nimport {Keyset, i18n} from '../i18n';\nimport {GetPostsRequest, Query, Tag} from '../models/common';\n\nconst QA_ATTRIBUTES_KEYS = ['container', 'content', 'wrapper', 'image', 'button'];\n\nexport interface QueryParam {\n name: string;\n value?: string | number | null;\n}\n\nexport interface RouterActionOptions {\n shallow?: boolean;\n}\n\nexport function getAbsolutePath(router: RouterContextProps, url?: string) {\n if (!router || !router.pathname) {\n return url ?? '';\n }\n\n const parsed = parse(url || router.as || '');\n\n return format({\n ...parsed,\n protocol: parsed.protocol || 'https',\n hostname: parsed.hostname || router.hostname,\n pathname: parsed.pathname || router.pathname,\n });\n}\n\nexport const getPageSearchParams = (query: Query = {}) => {\n const searchParams = new URLSearchParams();\n\n Object.entries(query).forEach(([key, value]) => {\n searchParams.set(key, String(value));\n });\n\n return searchParams;\n};\n\nexport const scrollToHash = (hash: string, browser?: string) => {\n if (!hash) {\n return;\n }\n\n const element = document.getElementById(hash);\n\n if (!element) {\n return;\n }\n\n setTimeout(\n () => element.scrollIntoView({behavior: browser === 'Yandex' ? 'auto' : 'smooth'}),\n 0,\n );\n};\n\ntype CloudListTagStub = {};\n\nexport const getTags = memoize((tags: Tag[], blogPath: string) => {\n return tags.map(({slug, ...tag}) => {\n const queryParams = new URLSearchParams();\n queryParams.set('tags', slug);\n\n return {\n ...tag,\n id: slug,\n url: `${blogPath}?${queryParams}`,\n } as CloudListTagStub;\n });\n});\n\nconst stub = (postId: number | string) => postId;\n\nexport const postLikeStatus = debounce((postId: number | string, hasUserLike: boolean) => {\n (hasUserLike ? stub : stub)(postId);\n}, 300);\n\nexport const updateContentSizes = ({size, colSizes, theme, ...contentData}: ContentBlockProps) => ({\n ...contentData,\n size: size || CONTENT_DEFAULT_SIZE,\n colSizes: colSizes || CONTENT_DEFAULT_COL_SIZES,\n theme: theme || CONTENT_DEFAULT_THEME,\n});\n\ntype GetBreadcrumbsProps = {\n tags?: Tag[];\n blogPath: string;\n};\n\nexport const getBlogPath = (pathPrefix: string) => {\n const prefix = pathPrefix ? `/${pathPrefix}` : '';\n return `${prefix}/blog`;\n};\n\nexport function getBreadcrumbs({tags, blogPath}: GetBreadcrumbsProps) {\n const breadcrumbs: HeaderBreadCrumbsProps = {\n items: [{text: i18n(Keyset.TitleBreadcrumbs), url: blogPath}],\n theme: 'light',\n };\n\n if (tags?.length) {\n const localizedTags = getTags(tags, blogPath);\n const tag = localizedTags[0];\n // @ts-ignore todo fix\n breadcrumbs.items.push({text: tag.name, url: tag.url});\n }\n\n return breadcrumbs;\n}\n\nconst getArrayOfEvents = (events?: AnalyticsEventsProp) => {\n if (!events) {\n return [];\n }\n\n if (Array.isArray(events)) {\n return events;\n }\n\n return [events];\n};\n\nexport const getMergedAnalyticsEvents = (\n analyticEvents: AnalyticsEventsProp,\n existringEvents?: AnalyticsEventsProp,\n) => {\n const eventsAsArray = getArrayOfEvents(analyticEvents);\n const existingAsArray = getArrayOfEvents(existringEvents);\n\n return eventsAsArray.concat(existingAsArray);\n};\n\nexport const getFeedQueryParams = (queryString: Query, pageNumber?: number): GetPostsRequest => {\n const queryParams = getPageSearchParams(queryString);\n const tags = queryParams.get('tags') || undefined;\n const page = pageNumber || Number(queryParams.get('page') || DEFAULT_PAGE);\n const perPage = Number(queryParams.get('perPage') || DEFAULT_ROWS_PER_PAGE);\n const savedOnly = queryParams.get('savedOnly') === 'true';\n const search = queryParams.get('search') || undefined;\n const serviceIds = queryParams.get('services') || undefined;\n\n return {tags, page, perPage, savedOnly, search, services: serviceIds};\n};\n\nexport const scrollOnPageChange = (containerId: string) => {\n const cardsContainerEl = document.getElementById(containerId);\n const y = cardsContainerEl?.getBoundingClientRect()?.y || 0;\n\n if (y < 0) {\n scrollToHash(containerId);\n }\n};\n\nexport const getQaAttributes = (qa?: string, ...customKeys: (string | Array<string>)[]) => {\n const attributes: Record<string, string> = {};\n\n if (qa) {\n const keys = QA_ATTRIBUTES_KEYS.concat(flatten(customKeys));\n\n keys.forEach((key) => {\n attributes[camelCase(key)] = `${qa}-${key}`;\n });\n\n attributes.default = qa;\n }\n\n return attributes;\n};\n\ntype PrepareAnalyticsEventArgs = {\n name: string;\n counter?: AnalyticsCounter;\n options?: Record<string, string | number>;\n};\n\nexport const prepareAnalyticsEvent = ({\n name,\n counter = AnalyticsCounter.Main,\n options = {},\n}: PrepareAnalyticsEventArgs): AnalyticsEvent => ({\n ...options,\n name,\n counters: {\n include: [counter],\n },\n});\n"]}
@@ -2,11 +2,11 @@ import { __rest } from "tslib";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { Content, Image } from '@gravity-ui/page-constructor';
4
4
  import { Wrapper } from "../../components/Wrapper/Wrapper.js";
5
+ import { DefaultGoalIds } from "../../constants.js";
6
+ import { AnalyticsCounter } from "../../counters/utils.js";
5
7
  import { PaddingsDirections } from "../../models/paddings.js";
6
8
  import { block } from "../../utils/cn.js";
7
9
  import { getMergedAnalyticsEvents, getQaAttributes, prepareAnalyticsEvent, updateContentSizes, } from "../../utils/common.js";
8
- import { DefaultGoalIds } from "../../constants.js";
9
- import { AnalyticsCounter } from "../../counters/utils.js";
10
10
  import './Banner.css';
11
11
  const b = block('banner');
12
12
  const BANNER_CUSTOM_QA_ATTRIBUTES = ['image-container'];
@@ -1 +1 @@
1
- {"version":3,"file":"Banner.js","sourceRoot":"../../../../src","sources":["blocks/Banner/Banner.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAC,OAAO,EAAC,4CAAyC;AAEzD,OAAO,EAAC,kBAAkB,EAAC,iCAA8B;AACzD,OAAO,EAAC,KAAK,EAAC,0BAAuB;AACrC,OAAO,EACH,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,GACrB,8BAA2B;AAC5B,OAAO,EAAC,cAAc,EAAC,2BAAwB;AAC/C,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD,OAAO,cAAc,CAAC;AAEtB,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAE1B,MAAM,2BAA2B,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAExD,MAAM,WAAW,GAAG,qBAAqB,CAAC;IACtC,IAAI,EAAE,cAAc,CAAC,YAAY;IACjC,OAAO,EAAE,gBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAQT,EAAE,EAAE;;QARK,EACnB,KAAK,EACL,SAAS,GAAG,GAAG,EACf,KAAK,EACL,UAAU,EACV,aAAa,EACb,EAAE,OAEQ,EADP,OAAO,cAPS,oEAQtB,CADa;IAEV,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;IAEtE,IAAI,KAAK,EAAE,CAAC;QACR,YAAY,CAAC,eAAe,GAAG,KAAK,CAAC;IACzC,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAA,WAAW,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACpC,mFAAmF;QACnF,MAAM,CAAC,eAAe,GAAG,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,OAAO,CACH,KAAC,OAAO,IACJ,QAAQ,EAAE;YACN,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,EACD,EAAE,EAAE,YAAY,CAAC,OAAO,EACxB,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,YAEzB,eAAK,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,aAAW,YAAY,CAAC,OAAO,aAC5E,cAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,KAAC,OAAO,oBAAK,WAAW,IAAE,EAAE,EAAE,YAAY,CAAC,OAAO,IAAI,GACpD,EACL,KAAK,IAAI,CACN,cACI,SAAS,EAAE,CAAC,CAAC,iBAAiB,EAAE,EAAC,CAAC,YAAY,CAAC,EAAE,SAAS,EAAC,CAAC,aACnD,YAAY,CAAC,cAAc,YAEpC,KAAC,KAAK,IAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,GAAI,GAC1C,CACT,IACC,GACA,CACb,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {Content, Image} from '@gravity-ui/page-constructor';\n\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {BannerProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {block} from '../../utils/cn';\nimport {\n getMergedAnalyticsEvents,\n getQaAttributes,\n prepareAnalyticsEvent,\n updateContentSizes,\n} from '../../utils/common';\nimport {DefaultGoalIds} from '../../constants';\nimport {AnalyticsCounter} from '../../counters/utils';\n\nimport './Banner.scss';\n\nconst b = block('banner');\n\nconst BANNER_CUSTOM_QA_ATTRIBUTES = ['image-container'];\n\nconst buttonGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.bannerCommon,\n counter: AnalyticsCounter.CrossSite,\n});\n\nexport const Banner = ({\n color,\n imageSize = 's',\n image,\n paddingTop,\n paddingBottom,\n qa,\n ...content\n}: BannerProps) => {\n const contentStyle: Record<string, string> = {};\n const qaAttributes = getQaAttributes(qa, BANNER_CUSTOM_QA_ATTRIBUTES);\n\n if (color) {\n contentStyle.backgroundColor = color;\n }\n\n const contentData = updateContentSizes(content);\n\n contentData.buttons?.forEach((button) => {\n // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign\n button.analyticsEvents = getMergedAnalyticsEvents(buttonGoals, button.analyticsEvents);\n });\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n qa={qaAttributes.wrapper}\n className={b('container')}\n >\n <div className={b('content')} style={contentStyle} data-qa={qaAttributes.content}>\n <div className={b('info')}>\n <Content {...contentData} qa={qaAttributes.content} />\n </div>\n {image && (\n <div\n className={b('image-container', {['image-size']: imageSize})}\n data-qa={qaAttributes.imageContainer}\n >\n <Image className={b('image')} src={image} />\n </div>\n )}\n </div>\n </Wrapper>\n );\n};\n"]}
1
+ {"version":3,"file":"Banner.js","sourceRoot":"../../../../src","sources":["blocks/Banner/Banner.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAC,OAAO,EAAC,4CAAyC;AACzD,OAAO,EAAC,cAAc,EAAC,2BAAwB;AAC/C,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD,OAAO,EAAC,kBAAkB,EAAC,iCAA8B;AACzD,OAAO,EAAC,KAAK,EAAC,0BAAuB;AACrC,OAAO,EACH,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,GACrB,8BAA2B;AAE5B,OAAO,cAAc,CAAC;AAEtB,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAE1B,MAAM,2BAA2B,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAExD,MAAM,WAAW,GAAG,qBAAqB,CAAC;IACtC,IAAI,EAAE,cAAc,CAAC,YAAY;IACjC,OAAO,EAAE,gBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAQT,EAAE,EAAE;;QARK,EACnB,KAAK,EACL,SAAS,GAAG,GAAG,EACf,KAAK,EACL,UAAU,EACV,aAAa,EACb,EAAE,OAEQ,EADP,OAAO,cAPS,oEAQtB,CADa;IAEV,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;IAEtE,IAAI,KAAK,EAAE,CAAC;QACR,YAAY,CAAC,eAAe,GAAG,KAAK,CAAC;IACzC,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAA,WAAW,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACpC,mFAAmF;QACnF,MAAM,CAAC,eAAe,GAAG,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,OAAO,CACH,KAAC,OAAO,IACJ,QAAQ,EAAE;YACN,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,EACD,EAAE,EAAE,YAAY,CAAC,OAAO,EACxB,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,YAEzB,eAAK,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,aAAW,YAAY,CAAC,OAAO,aAC5E,cAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,KAAC,OAAO,oBAAK,WAAW,IAAE,EAAE,EAAE,YAAY,CAAC,OAAO,IAAI,GACpD,EACL,KAAK,IAAI,CACN,cACI,SAAS,EAAE,CAAC,CAAC,iBAAiB,EAAE,EAAC,CAAC,YAAY,CAAC,EAAE,SAAS,EAAC,CAAC,aACnD,YAAY,CAAC,cAAc,YAEpC,KAAC,KAAK,IAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,GAAI,GAC1C,CACT,IACC,GACA,CACb,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {Content, Image} from '@gravity-ui/page-constructor';\n\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {DefaultGoalIds} from '../../constants';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {BannerProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {block} from '../../utils/cn';\nimport {\n getMergedAnalyticsEvents,\n getQaAttributes,\n prepareAnalyticsEvent,\n updateContentSizes,\n} from '../../utils/common';\n\nimport './Banner.scss';\n\nconst b = block('banner');\n\nconst BANNER_CUSTOM_QA_ATTRIBUTES = ['image-container'];\n\nconst buttonGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.bannerCommon,\n counter: AnalyticsCounter.CrossSite,\n});\n\nexport const Banner = ({\n color,\n imageSize = 's',\n image,\n paddingTop,\n paddingBottom,\n qa,\n ...content\n}: BannerProps) => {\n const contentStyle: Record<string, string> = {};\n const qaAttributes = getQaAttributes(qa, BANNER_CUSTOM_QA_ATTRIBUTES);\n\n if (color) {\n contentStyle.backgroundColor = color;\n }\n\n const contentData = updateContentSizes(content);\n\n contentData.buttons?.forEach((button) => {\n // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign\n button.analyticsEvents = getMergedAnalyticsEvents(buttonGoals, button.analyticsEvents);\n });\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n qa={qaAttributes.wrapper}\n className={b('container')}\n >\n <div className={b('content')} style={contentStyle} data-qa={qaAttributes.content}>\n <div className={b('info')}>\n <Content {...contentData} qa={qaAttributes.content} />\n </div>\n {image && (\n <div\n className={b('image-container', {['image-size']: imageSize})}\n data-qa={qaAttributes.imageContainer}\n >\n <Image className={b('image')} src={image} />\n </div>\n )}\n </div>\n </Wrapper>\n );\n};\n"]}
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Content } from '@gravity-ui/page-constructor';
3
3
  import { Wrapper } from "../../components/Wrapper/Wrapper.js";
4
+ import { DefaultGoalIds } from "../../constants.js";
5
+ import { AnalyticsCounter } from "../../counters/utils.js";
4
6
  import { PaddingsDirections } from "../../models/paddings.js";
5
7
  import { block } from "../../utils/cn.js";
6
8
  import { getMergedAnalyticsEvents, getQaAttributes, prepareAnalyticsEvent, updateContentSizes, } from "../../utils/common.js";
7
- import { DefaultGoalIds } from "../../constants.js";
8
- import { AnalyticsCounter } from "../../counters/utils.js";
9
9
  import './CTA.css';
10
10
  const b = block('cta');
11
11
  const linkGoals = prepareAnalyticsEvent({
@@ -1 +1 @@
1
- {"version":3,"file":"CTA.js","sourceRoot":"../../../../src","sources":["blocks/CTA/CTA.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,OAAO,EAAoB,MAAM,8BAA8B,CAAC;AAExE,OAAO,EAAC,OAAO,EAAC,4CAAyC;AAEzD,OAAO,EAAC,kBAAkB,EAAC,iCAA8B;AACzD,OAAO,EAAC,KAAK,EAAC,0BAAuB;AACrC,OAAO,EACH,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,GACrB,8BAA2B;AAC5B,OAAO,EAAC,cAAc,EAAC,2BAAwB;AAC/C,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD,OAAO,WAAW,CAAC;AAEnB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAEvB,MAAM,SAAS,GAAG,qBAAqB,CAAC;IACpC,IAAI,EAAE,cAAc,CAAC,GAAG;IACxB,OAAO,EAAE,gBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAW,EAAE,EAAE;IACpE,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAEjD,OAAO,CACH,KAAC,OAAO,IACJ,QAAQ,EAAE;YACN,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,EACD,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EACvB,EAAE,EAAE,YAAY,CAAC,OAAO,YAEvB,KAAK,CAAC,GAAG,CAAC,CAAC,OAA0B,EAAE,KAAa,EAAE,EAAE;;YACrD,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAEhD,MAAA,WAAW,CAAC,KAAK,0CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAChC,mFAAmF;gBACnF,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAC3C,SAAS,EACT,IAAI,CAAC,eAAe,CACvB,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,OAAO,CACH,cAAiB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,aAAW,YAAY,CAAC,IAAI,YAC7D,KAAC,OAAO,oBAAK,WAAW,IAAE,EAAE,EAAE,YAAY,CAAC,OAAO,IAAI,IADhD,KAAK,CAET,CACT,CAAC;QACN,CAAC,CAAC,GACI,CACb,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {Content, ContentBlockProps} from '@gravity-ui/page-constructor';\n\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {CTAProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {block} from '../../utils/cn';\nimport {\n getMergedAnalyticsEvents,\n getQaAttributes,\n prepareAnalyticsEvent,\n updateContentSizes,\n} from '../../utils/common';\nimport {DefaultGoalIds} from '../../constants';\nimport {AnalyticsCounter} from '../../counters/utils';\n\nimport './CTA.scss';\n\nconst b = block('cta');\n\nconst linkGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.cta,\n counter: AnalyticsCounter.CrossSite,\n});\n\nexport const CTA = ({items, paddingTop, paddingBottom, qa}: CTAProps) => {\n const qaAttributes = getQaAttributes(qa, 'card');\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n className={b('content')}\n qa={qaAttributes.wrapper}\n >\n {items.map((content: ContentBlockProps, index: number) => {\n const contentData = updateContentSizes(content);\n\n contentData.links?.forEach((link) => {\n // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign\n link.analyticsEvents = getMergedAnalyticsEvents(\n linkGoals,\n link.analyticsEvents,\n );\n });\n\n return (\n <div key={index} className={b('card')} data-qa={qaAttributes.card}>\n <Content {...contentData} qa={qaAttributes.content} />\n </div>\n );\n })}\n </Wrapper>\n );\n};\n"]}
1
+ {"version":3,"file":"CTA.js","sourceRoot":"../../../../src","sources":["blocks/CTA/CTA.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,OAAO,EAAoB,MAAM,8BAA8B,CAAC;AAExE,OAAO,EAAC,OAAO,EAAC,4CAAyC;AACzD,OAAO,EAAC,cAAc,EAAC,2BAAwB;AAC/C,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD,OAAO,EAAC,kBAAkB,EAAC,iCAA8B;AACzD,OAAO,EAAC,KAAK,EAAC,0BAAuB;AACrC,OAAO,EACH,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,GACrB,8BAA2B;AAE5B,OAAO,WAAW,CAAC;AAEnB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAEvB,MAAM,SAAS,GAAG,qBAAqB,CAAC;IACpC,IAAI,EAAE,cAAc,CAAC,GAAG;IACxB,OAAO,EAAE,gBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAW,EAAE,EAAE;IACpE,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAEjD,OAAO,CACH,KAAC,OAAO,IACJ,QAAQ,EAAE;YACN,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,EACD,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EACvB,EAAE,EAAE,YAAY,CAAC,OAAO,YAEvB,KAAK,CAAC,GAAG,CAAC,CAAC,OAA0B,EAAE,KAAa,EAAE,EAAE;;YACrD,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAEhD,MAAA,WAAW,CAAC,KAAK,0CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAChC,mFAAmF;gBACnF,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAC3C,SAAS,EACT,IAAI,CAAC,eAAe,CACvB,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,OAAO,CACH,cAAiB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,aAAW,YAAY,CAAC,IAAI,YAC7D,KAAC,OAAO,oBAAK,WAAW,IAAE,EAAE,EAAE,YAAY,CAAC,OAAO,IAAI,IADhD,KAAK,CAET,CACT,CAAC;QACN,CAAC,CAAC,GACI,CACb,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {Content, ContentBlockProps} from '@gravity-ui/page-constructor';\n\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {DefaultGoalIds} from '../../constants';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {CTAProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {block} from '../../utils/cn';\nimport {\n getMergedAnalyticsEvents,\n getQaAttributes,\n prepareAnalyticsEvent,\n updateContentSizes,\n} from '../../utils/common';\n\nimport './CTA.scss';\n\nconst b = block('cta');\n\nconst linkGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.cta,\n counter: AnalyticsCounter.CrossSite,\n});\n\nexport const CTA = ({items, paddingTop, paddingBottom, qa}: CTAProps) => {\n const qaAttributes = getQaAttributes(qa, 'card');\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n className={b('content')}\n qa={qaAttributes.wrapper}\n >\n {items.map((content: ContentBlockProps, index: number) => {\n const contentData = updateContentSizes(content);\n\n contentData.links?.forEach((link) => {\n // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign\n link.analyticsEvents = getMergedAnalyticsEvents(\n linkGoals,\n link.analyticsEvents,\n );\n });\n\n return (\n <div key={index} className={b('card')} data-qa={qaAttributes.card}>\n <Content {...contentData} qa={qaAttributes.content} />\n </div>\n );\n })}\n </Wrapper>\n );\n};\n"]}
@@ -0,0 +1,54 @@
1
+ /* use this for style redefinitions to awoid problems with
2
+ unpredictable css rules order in build */
3
+ .bc-header-block__grid {
4
+ z-index: 10;
5
+ }
6
+ .bc-header-block_image-out-grid .bc-header-block__image {
7
+ right: 16px;
8
+ left: 50%;
9
+ max-width: 1440px;
10
+ width: 100%;
11
+ transform: translateX(calc(-50% - 16px));
12
+ }
13
+ .bc-header-block_image-out-grid .bc-header-block__image img {
14
+ margin-left: auto;
15
+ width: 33.3333333333%;
16
+ border-radius: 16px;
17
+ }
18
+ .bc-header-block_image-out-grid .bc-header-block__content-wrapper {
19
+ position: static;
20
+ min-height: 420px;
21
+ }
22
+ .bc-header-block_image-out-grid .bc-header-block__content-inner {
23
+ padding-right: 0;
24
+ }
25
+ @media (min-width: 1081px) {
26
+ .bc-header-block_image-out-grid .bc-header-block__content-inner {
27
+ max-width: 66.6666666667%;
28
+ padding-right: 48px;
29
+ }
30
+ }
31
+ @media (max-width: 1081px) and (min-width: 1081px) {
32
+ .bc-header-block_image-out-grid .bc-header-block__content-inner {
33
+ max-width: calc(66.6666666667% + 48px);
34
+ padding-right: 48px;
35
+ }
36
+ }
37
+ @media (max-width: 1081px) and (min-width: 769px) {
38
+ .bc-header-block_image-out-grid .bc-header-block__image img {
39
+ width: calc(50% - 16px);
40
+ }
41
+ .bc-header-block_image-out-grid .bc-header-block__content-inner {
42
+ max-width: 50%;
43
+ padding-right: 48px;
44
+ }
45
+ }
46
+ @media (max-width: 769px) {
47
+ .bc-header-block_image-out-grid .bc-header-block__image {
48
+ display: none;
49
+ }
50
+ .bc-header-block_image-out-grid .bc-header-block__content-wrapper {
51
+ max-width: none;
52
+ min-height: auto;
53
+ }
54
+ }
@@ -1,2 +1,3 @@
1
1
  import { HeaderProps } from "../../models/blocks.js";
2
+ import './Header.css';
2
3
  export declare const Header: (props: HeaderProps) => import("react/jsx-runtime").JSX.Element;
@@ -6,10 +6,13 @@ import { Wrapper } from "../../components/Wrapper/Wrapper.js";
6
6
  import { DefaultGoalIds } from "../../constants.js";
7
7
  import { LocaleContext } from "../../contexts/LocaleContext.js";
8
8
  import { PostPageContext } from "../../contexts/PostPageContext.js";
9
- import { PaddingsDirections } from "../../models/paddings.js";
10
- import { getBreadcrumbs, getBlogPath as getDefaultBlogPath, prepareAnalyticsEvent, } from "../../utils/common.js";
11
9
  import { SettingsContext } from "../../contexts/SettingsContext.js";
12
10
  import { AnalyticsCounter } from "../../counters/utils.js";
11
+ import { PaddingsDirections } from "../../models/paddings.js";
12
+ import { block } from "../../utils/cn.js";
13
+ import { getBreadcrumbs, getBlogPath as getDefaultBlogPath, prepareAnalyticsEvent, } from "../../utils/common.js";
14
+ import './Header.css';
15
+ const b = block('header-block');
13
16
  const analyticsEventsContainer = {
14
17
  sharing: prepareAnalyticsEvent({ name: DefaultGoalIds.shareTop }),
15
18
  save: prepareAnalyticsEvent({ name: DefaultGoalIds.saveTop }),
@@ -19,7 +22,7 @@ const breadcrumbsGoals = prepareAnalyticsEvent({
19
22
  counter: AnalyticsCounter.CrossSite,
20
23
  });
21
24
  export const Header = (props) => {
22
- const { theme, paddingTop, paddingBottom } = props;
25
+ const { theme, paddingTop, paddingBottom, imageInGrid = true } = props;
23
26
  const { post, breadcrumbs: customBreadcrumbs = {} } = React.useContext(PostPageContext);
24
27
  const { locale } = React.useContext(LocaleContext);
25
28
  const { getBlogPath = getDefaultBlogPath } = React.useContext(SettingsContext);
@@ -33,6 +36,6 @@ export const Header = (props) => {
33
36
  return (_jsx(Wrapper, { paddings: {
34
37
  [PaddingsDirections.top]: paddingTop,
35
38
  [PaddingsDirections.bottom]: paddingBottom,
36
- }, children: _jsx(HeaderBlock, Object.assign({}, props, { title: title, description: description, breadcrumbs: Object.assign(Object.assign({}, breadcrumbs), customBreadcrumbs), children: _jsx(PostInfo, { postId: id, date: date, readingTime: readingTime, analyticsEventsContainer: analyticsEventsContainer, theme: theme, qa: "blog-header-meta-container" }) })) }));
39
+ }, children: _jsx("div", { className: b({ 'image-out-grid': !imageInGrid }), children: _jsx(HeaderBlock, Object.assign({}, props, { title: title, description: description, breadcrumbs: Object.assign(Object.assign({}, breadcrumbs), customBreadcrumbs), mediaClassName: b('image'), gridClassName: b('grid'), contentWrapperClassName: b('content-wrapper'), contentInnerClassName: b('content-inner'), children: _jsx(PostInfo, { postId: id, date: date, readingTime: readingTime, analyticsEventsContainer: analyticsEventsContainer, theme: theme, qa: "blog-header-meta-container" }) })) }) }));
37
40
  };
38
41
  //# sourceMappingURL=Header.js.map