@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":"Header.js","sourceRoot":"../../../../src","sources":["blocks/Header/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAsB,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAE9E,OAAO,EAAC,QAAQ,EAAC,8CAA2C;AAC5D,OAAO,EAAC,OAAO,EAAC,4CAAyC;AACzD,OAAO,EAAC,cAAc,EAAC,2BAAwB;AAC/C,OAAO,EAAC,aAAa,EAAC,wCAAqC;AAC3D,OAAO,EAAC,eAAe,EAAC,0CAAuC;AAE/D,OAAO,EAAC,kBAAkB,EAAC,iCAA8B;AACzD,OAAO,EACH,cAAc,EACd,WAAW,IAAI,kBAAkB,EACjC,qBAAqB,GACxB,8BAA2B;AAC5B,OAAO,EAAC,eAAe,EAAC,0CAAuC;AAC/D,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD,MAAM,wBAAwB,GAAwC;IAClE,OAAO,EAAE,qBAAqB,CAAC,EAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,EAAC,CAAC;IAC/D,IAAI,EAAE,qBAAqB,CAAC,EAAC,IAAI,EAAE,cAAc,CAAC,OAAO,EAAC,CAAC;CAC9D,CAAC;AAEF,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;IAC3C,IAAI,EAAE,cAAc,CAAC,cAAc;IACnC,OAAO,EAAE,gBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAkB,EAAE,EAAE;IACzC,MAAM,EAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAC,GAAG,KAAK,CAAC;IACjD,MAAM,EAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,GAAG,EAAE,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACtF,MAAM,EAAC,MAAM,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjD,MAAM,EAAC,WAAW,GAAG,kBAAkB,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAEtD,MAAM,EAAC,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC;IAE/D,MAAM,WAAW,GAAG,cAAc,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;IAErD,IAAI,KAAK,KAAK,MAAM,IAAI,WAAW,EAAE,CAAC;QAClC,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;IAC/B,CAAC;IAED,WAAW,CAAC,eAAe,GAAG,gBAAgB,CAAC;IAE/C,OAAO,CACH,KAAC,OAAO,IACJ,QAAQ,EAAE;YACN,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,YAED,KAAC,WAAW,oBACJ,KAAK,IACT,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,WAAW,kCAAM,WAAW,GAAK,iBAAiB,aAElD,KAAC,QAAQ,IACL,MAAM,EAAE,EAAE,EACV,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,wBAAwB,EAAE,wBAAwB,EAClD,KAAK,EAAE,KAAK,EACZ,EAAE,EAAC,4BAA4B,GACjC,IACQ,GACR,CACb,CAAC;AACN,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {AnalyticsEventsProp, HeaderBlock} from '@gravity-ui/page-constructor';\n\nimport {PostInfo} from '../../components/PostInfo/PostInfo';\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {DefaultGoalIds} from '../../constants';\nimport {LocaleContext} from '../../contexts/LocaleContext';\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {HeaderProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {\n getBreadcrumbs,\n getBlogPath as getDefaultBlogPath,\n prepareAnalyticsEvent,\n} from '../../utils/common';\nimport {SettingsContext} from '../../contexts/SettingsContext';\nimport {AnalyticsCounter} from '../../counters/utils';\n\nconst analyticsEventsContainer: Record<string, AnalyticsEventsProp> = {\n sharing: prepareAnalyticsEvent({name: DefaultGoalIds.shareTop}),\n save: prepareAnalyticsEvent({name: DefaultGoalIds.saveTop}),\n};\n\nconst breadcrumbsGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.breadcrumbsTop,\n counter: AnalyticsCounter.CrossSite,\n});\n\nexport const Header = (props: HeaderProps) => {\n const {theme, paddingTop, paddingBottom} = props;\n const {post, breadcrumbs: customBreadcrumbs = {}} = React.useContext(PostPageContext);\n const {locale} = React.useContext(LocaleContext);\n const {getBlogPath = getDefaultBlogPath} = React.useContext(SettingsContext);\n const blogPath = getBlogPath(locale.pathPrefix || '');\n\n const {description, title, id, date, readingTime, tags} = post;\n\n const breadcrumbs = getBreadcrumbs({tags, blogPath});\n\n if (theme === 'dark' && breadcrumbs) {\n breadcrumbs.theme = 'dark';\n }\n\n breadcrumbs.analyticsEvents = breadcrumbsGoals;\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n >\n <HeaderBlock\n {...props}\n title={title}\n description={description}\n breadcrumbs={{...breadcrumbs, ...customBreadcrumbs}}\n >\n <PostInfo\n postId={id}\n date={date}\n readingTime={readingTime}\n analyticsEventsContainer={analyticsEventsContainer}\n theme={theme}\n qa=\"blog-header-meta-container\"\n />\n </HeaderBlock>\n </Wrapper>\n );\n};\n"]}
1
+ {"version":3,"file":"Header.js","sourceRoot":"../../../../src","sources":["blocks/Header/Header.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {AnalyticsEventsProp, HeaderBlock} from '@gravity-ui/page-constructor';\n\nimport {PostInfo} from '../../components/PostInfo/PostInfo';\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {DefaultGoalIds} from '../../constants';\nimport {LocaleContext} from '../../contexts/LocaleContext';\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {SettingsContext} from '../../contexts/SettingsContext';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {HeaderProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {block} from '../../utils/cn';\nimport {\n getBreadcrumbs,\n getBlogPath as getDefaultBlogPath,\n prepareAnalyticsEvent,\n} from '../../utils/common';\n\nimport './Header.scss';\n\nconst b = block('header-block');\n\nconst analyticsEventsContainer: Record<string, AnalyticsEventsProp> = {\n sharing: prepareAnalyticsEvent({name: DefaultGoalIds.shareTop}),\n save: prepareAnalyticsEvent({name: DefaultGoalIds.saveTop}),\n};\n\nconst breadcrumbsGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.breadcrumbsTop,\n counter: AnalyticsCounter.CrossSite,\n});\n\nexport const Header = (props: HeaderProps) => {\n const {theme, paddingTop, paddingBottom, imageInGrid = true} = props;\n const {post, breadcrumbs: customBreadcrumbs = {}} = React.useContext(PostPageContext);\n const {locale} = React.useContext(LocaleContext);\n const {getBlogPath = getDefaultBlogPath} = React.useContext(SettingsContext);\n const blogPath = getBlogPath(locale.pathPrefix || '');\n\n const {description, title, id, date, readingTime, tags} = post;\n\n const breadcrumbs = getBreadcrumbs({tags, blogPath});\n\n if (theme === 'dark' && breadcrumbs) {\n breadcrumbs.theme = 'dark';\n }\n\n breadcrumbs.analyticsEvents = breadcrumbsGoals;\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n >\n <div className={b({'image-out-grid': !imageInGrid})}>\n <HeaderBlock\n {...props}\n title={title}\n description={description}\n breadcrumbs={{...breadcrumbs, ...customBreadcrumbs}}\n mediaClassName={b('image')}\n gridClassName={b('grid')}\n contentWrapperClassName={b('content-wrapper')}\n contentInnerClassName={b('content-inner')}\n >\n <PostInfo\n postId={id}\n date={date}\n readingTime={readingTime}\n analyticsEventsContainer={analyticsEventsContainer}\n theme={theme}\n qa=\"blog-header-meta-container\"\n />\n </HeaderBlock>\n </div>\n </Wrapper>\n );\n};\n"]}
@@ -5,12 +5,12 @@ import { PostInfo } from "../../components/PostInfo/PostInfo.js";
5
5
  import { Wrapper } from "../../components/Wrapper/Wrapper.js";
6
6
  import { DefaultGoalIds } from "../../constants.js";
7
7
  import { LocaleContext } from "../../contexts/LocaleContext.js";
8
- import { SettingsContext } from "../../contexts/SettingsContext.js";
9
8
  import { PostPageContext } from "../../contexts/PostPageContext.js";
9
+ import { SettingsContext } from "../../contexts/SettingsContext.js";
10
+ import { AnalyticsCounter } from "../../counters/utils.js";
10
11
  import { PaddingsDirections } from "../../models/paddings.js";
11
12
  import { block } from "../../utils/cn.js";
12
13
  import { getBreadcrumbs, getBlogPath as getDefaultBlogPath, getMergedAnalyticsEvents, getQaAttributes, prepareAnalyticsEvent, } from "../../utils/common.js";
13
- import { AnalyticsCounter } from "../../counters/utils.js";
14
14
  import './Meta.css';
15
15
  const b = block('meta');
16
16
  const analyticsEventsContainer = {
@@ -1 +1 @@
1
- {"version":3,"file":"Meta.js","sourceRoot":"../../../../src","sources":["blocks/Meta/Meta.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {AnalyticsEventsProp, HeaderBreadcrumbs, YFMWrapper} from '@gravity-ui/page-constructor';\n\nimport {PostInfo} from '../../components/PostInfo/PostInfo';\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {DefaultGoalIds} from '../../constants';\nimport {LocaleContext} from '../../contexts/LocaleContext';\nimport {SettingsContext} from '../../contexts/SettingsContext';\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {MetaProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {block} from '../../utils/cn';\nimport {\n getBreadcrumbs,\n getBlogPath as getDefaultBlogPath,\n getMergedAnalyticsEvents,\n getQaAttributes,\n prepareAnalyticsEvent,\n} from '../../utils/common';\nimport {AnalyticsCounter} from '../../counters/utils';\n\nimport './Meta.scss';\n\nconst b = block('meta');\n\nconst analyticsEventsContainer: Record<string, AnalyticsEventsProp> = {\n sharing: prepareAnalyticsEvent({name: DefaultGoalIds.shareBottom}),\n save: prepareAnalyticsEvent({name: DefaultGoalIds.saveBottom}),\n};\n\nconst breadcrumbsGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.breadcrumbsBottom,\n counter: AnalyticsCounter.CrossSite,\n});\n\nexport const Meta = (props: MetaProps) => {\n const {paddingTop = 'l', paddingBottom = 'l', theme = 'light', qa} = props;\n const {post, breadcrumbs: customBreadcrumbs} = React.useContext(PostPageContext);\n const {locale} = React.useContext(LocaleContext);\n const qaAttributes = getQaAttributes(qa, 'post-info');\n const {getBlogPath = getDefaultBlogPath} = React.useContext(SettingsContext);\n const blogPath = getBlogPath(locale.pathPrefix || '');\n\n const {title, id, date, readingTime, tags} = post;\n\n const breadcrumbs = getBreadcrumbs({tags, blogPath});\n\n breadcrumbs.analyticsEvents = getMergedAnalyticsEvents(breadcrumbsGoals);\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n qa={qaAttributes.wrapper}\n >\n {breadcrumbs && (\n <HeaderBreadcrumbs\n items={customBreadcrumbs?.items || breadcrumbs.items}\n className={b('breadcrumbs')}\n theme={theme}\n />\n )}\n {title && (\n <YFMWrapper\n content={title}\n modifiers={{\n blogBreadcrumbs: true,\n resetPaddings: true,\n }}\n />\n )}\n {post && (\n <PostInfo\n postId={id}\n date={date}\n readingTime={readingTime}\n analyticsEventsContainer={analyticsEventsContainer}\n qa={qaAttributes.postInfo}\n />\n )}\n </Wrapper>\n );\n};\n"]}
1
+ {"version":3,"file":"Meta.js","sourceRoot":"../../../../src","sources":["blocks/Meta/Meta.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {AnalyticsEventsProp, HeaderBreadcrumbs, YFMWrapper} from '@gravity-ui/page-constructor';\n\nimport {PostInfo} from '../../components/PostInfo/PostInfo';\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {DefaultGoalIds} from '../../constants';\nimport {LocaleContext} from '../../contexts/LocaleContext';\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {SettingsContext} from '../../contexts/SettingsContext';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {MetaProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {block} from '../../utils/cn';\nimport {\n getBreadcrumbs,\n getBlogPath as getDefaultBlogPath,\n getMergedAnalyticsEvents,\n getQaAttributes,\n prepareAnalyticsEvent,\n} from '../../utils/common';\n\nimport './Meta.scss';\n\nconst b = block('meta');\n\nconst analyticsEventsContainer: Record<string, AnalyticsEventsProp> = {\n sharing: prepareAnalyticsEvent({name: DefaultGoalIds.shareBottom}),\n save: prepareAnalyticsEvent({name: DefaultGoalIds.saveBottom}),\n};\n\nconst breadcrumbsGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.breadcrumbsBottom,\n counter: AnalyticsCounter.CrossSite,\n});\n\nexport const Meta = (props: MetaProps) => {\n const {paddingTop = 'l', paddingBottom = 'l', theme = 'light', qa} = props;\n const {post, breadcrumbs: customBreadcrumbs} = React.useContext(PostPageContext);\n const {locale} = React.useContext(LocaleContext);\n const qaAttributes = getQaAttributes(qa, 'post-info');\n const {getBlogPath = getDefaultBlogPath} = React.useContext(SettingsContext);\n const blogPath = getBlogPath(locale.pathPrefix || '');\n\n const {title, id, date, readingTime, tags} = post;\n\n const breadcrumbs = getBreadcrumbs({tags, blogPath});\n\n breadcrumbs.analyticsEvents = getMergedAnalyticsEvents(breadcrumbsGoals);\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n qa={qaAttributes.wrapper}\n >\n {breadcrumbs && (\n <HeaderBreadcrumbs\n items={customBreadcrumbs?.items || breadcrumbs.items}\n className={b('breadcrumbs')}\n theme={theme}\n />\n )}\n {title && (\n <YFMWrapper\n content={title}\n modifiers={{\n blogBreadcrumbs: true,\n resetPaddings: true,\n }}\n />\n )}\n {post && (\n <PostInfo\n postId={id}\n date={date}\n readingTime={readingTime}\n analyticsEventsContainer={analyticsEventsContainer}\n qa={qaAttributes.postInfo}\n />\n )}\n </Wrapper>\n );\n};\n"]}
@@ -3,12 +3,12 @@ import * as React from 'react';
3
3
  import { SliderBlock } from '@gravity-ui/page-constructor';
4
4
  import { PostCard } from "../../components/PostCard/PostCard.js";
5
5
  import { Wrapper } from "../../components/Wrapper/Wrapper.js";
6
+ import { DefaultGoalIds } from "../../constants.js";
6
7
  import { PostPageContext } from "../../contexts/PostPageContext.js";
8
+ import { AnalyticsCounter } from "../../counters/utils.js";
7
9
  import { Keyset, i18n } from "../../i18n/index.js";
8
10
  import { PaddingsDirections } from "../../models/paddings.js";
9
11
  import { prepareAnalyticsEvent } from "../../utils/common.js";
10
- import { DefaultGoalIds } from "../../constants.js";
11
- import { AnalyticsCounter } from "../../counters/utils.js";
12
12
  const suggestGoals = prepareAnalyticsEvent({
13
13
  name: DefaultGoalIds.suggest,
14
14
  counter: AnalyticsCounter.CrossSite,
@@ -1 +1 @@
1
- {"version":3,"file":"Suggest.js","sourceRoot":"../../../../src","sources":["blocks/Suggest/Suggest.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAC,QAAQ,EAAC,8CAA2C;AAC5D,OAAO,EAAC,OAAO,EAAC,4CAAyC;AACzD,OAAO,EAAC,eAAe,EAAC,0CAAuC;AAC/D,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,4BAAmB;AAExC,OAAO,EAAC,kBAAkB,EAAC,iCAA8B;AACzD,OAAO,EAAC,qBAAqB,EAAC,8BAA2B;AACzD,OAAO,EAAC,cAAc,EAAC,2BAAwB;AAC/C,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD,MAAM,YAAY,GAAG,qBAAqB,CAAC;IACvC,IAAI,EAAE,cAAc,CAAC,OAAO;IAC5B,OAAO,EAAE,gBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAC,UAAU,GAAG,GAAG,EAAE,aAAa,GAAG,GAAG,EAAe,EAAE,EAAE;IAC7E,MAAM,EAAC,cAAc,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAE3D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,KAAC,OAAO,IACJ,QAAQ,EAAE;YACN,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,YAED,KAAC,WAAW,IACR,YAAY,EAAE,EAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAC,EACnC,KAAK,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAC,YAEvC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,KAAC,QAAQ,IAAe,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,IAAlD,IAAI,CAAC,EAAE,CAA+C,CACxE,CAAC,GACQ,GACR,CACb,CAAC;AACN,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {SliderBlock} from '@gravity-ui/page-constructor';\n\nimport {PostCard} from '../../components/PostCard/PostCard';\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {Keyset, i18n} from '../../i18n';\nimport {SuggestProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {prepareAnalyticsEvent} from '../../utils/common';\nimport {DefaultGoalIds} from '../../constants';\nimport {AnalyticsCounter} from '../../counters/utils';\n\nconst suggestGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.suggest,\n counter: AnalyticsCounter.CrossSite,\n});\n\n/**\n * Suggested posts block\n *\n * @param posts - suggested posts list\n * @param paddingTop - padding top code\n * @param paddingBottom - padding bottom code\n *\n * @returns -jsx\n */\nexport const Suggest = ({paddingTop = 'l', paddingBottom = 'l'}: SuggestProps) => {\n const {suggestedPosts} = React.useContext(PostPageContext);\n\n if (suggestedPosts.length === 0) {\n return null;\n }\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n >\n <SliderBlock\n slidesToShow={{xl: 3, lg: 2, sm: 1}}\n title={{text: i18n(Keyset.TitleSuggest)}}\n >\n {suggestedPosts.map((post) => (\n <PostCard key={post.id} analyticsEvents={suggestGoals} post={post} />\n ))}\n </SliderBlock>\n </Wrapper>\n );\n};\n"]}
1
+ {"version":3,"file":"Suggest.js","sourceRoot":"../../../../src","sources":["blocks/Suggest/Suggest.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAC,QAAQ,EAAC,8CAA2C;AAC5D,OAAO,EAAC,OAAO,EAAC,4CAAyC;AACzD,OAAO,EAAC,cAAc,EAAC,2BAAwB;AAC/C,OAAO,EAAC,eAAe,EAAC,0CAAuC;AAC/D,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AACtD,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,4BAAmB;AAExC,OAAO,EAAC,kBAAkB,EAAC,iCAA8B;AACzD,OAAO,EAAC,qBAAqB,EAAC,8BAA2B;AAEzD,MAAM,YAAY,GAAG,qBAAqB,CAAC;IACvC,IAAI,EAAE,cAAc,CAAC,OAAO;IAC5B,OAAO,EAAE,gBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAC,UAAU,GAAG,GAAG,EAAE,aAAa,GAAG,GAAG,EAAe,EAAE,EAAE;IAC7E,MAAM,EAAC,cAAc,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAE3D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,KAAC,OAAO,IACJ,QAAQ,EAAE;YACN,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,YAED,KAAC,WAAW,IACR,YAAY,EAAE,EAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAC,EACnC,KAAK,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAC,YAEvC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,KAAC,QAAQ,IAAe,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,IAAlD,IAAI,CAAC,EAAE,CAA+C,CACxE,CAAC,GACQ,GACR,CACb,CAAC;AACN,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {SliderBlock} from '@gravity-ui/page-constructor';\n\nimport {PostCard} from '../../components/PostCard/PostCard';\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {DefaultGoalIds} from '../../constants';\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {Keyset, i18n} from '../../i18n';\nimport {SuggestProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {prepareAnalyticsEvent} from '../../utils/common';\n\nconst suggestGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.suggest,\n counter: AnalyticsCounter.CrossSite,\n});\n\n/**\n * Suggested posts block\n *\n * @param posts - suggested posts list\n * @param paddingTop - padding top code\n * @param paddingBottom - padding bottom code\n *\n * @returns -jsx\n */\nexport const Suggest = ({paddingTop = 'l', paddingBottom = 'l'}: SuggestProps) => {\n const {suggestedPosts} = React.useContext(PostPageContext);\n\n if (suggestedPosts.length === 0) {\n return null;\n }\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n >\n <SliderBlock\n slidesToShow={{xl: 3, lg: 2, sm: 1}}\n title={{text: i18n(Keyset.TitleSuggest)}}\n >\n {suggestedPosts.map((post) => (\n <PostCard key={post.id} analyticsEvents={suggestGoals} post={post} />\n ))}\n </SliderBlock>\n </Wrapper>\n );\n};\n"]}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
+ import { Bookmark } from '@gravity-ui/icons';
3
4
  import { useAnalytics } from '@gravity-ui/page-constructor';
4
5
  import { Button, Icon, MobileProvider, Select } from '@gravity-ui/uikit';
5
- import { Bookmark } from '@gravity-ui/icons';
6
6
  import { DefaultGoalIds } from "../../../../constants.js";
7
7
  import { LikesContext } from "../../../../contexts/LikesContext.js";
8
8
  import { MobileContext } from "../../../../contexts/MobileContext.js";
@@ -10,8 +10,8 @@ import { AnalyticsCounter } from "../../../../counters/utils.js";
10
10
  import { Keyset, i18n } from "../../../../i18n/index.js";
11
11
  import { DefaultEventNames } from "../../../../models/common.js";
12
12
  import { block } from "../../../../utils/cn.js";
13
- import { Search } from "../../../Search/Search.js";
14
13
  import { prepareAnalyticsEvent } from "../../../../utils/common.js";
14
+ import { Search } from "../../../Search/Search.js";
15
15
  import { renderFilter, renderOption, renderSwitcher } from "./customRenders.js";
16
16
  import './Controls.css';
17
17
  const b = block('feed-controls');
@@ -1 +1 @@
1
- {"version":3,"file":"Controls.js","sourceRoot":"../../../../../../src","sources":["components/FeedHeader/components/Controls/Controls.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {useAnalytics} from '@gravity-ui/page-constructor';\nimport {Button, Icon, MobileProvider, Select} from '@gravity-ui/uikit';\nimport {Bookmark} from '@gravity-ui/icons';\n\nimport {DefaultGoalIds} from '../../../../constants';\nimport {LikesContext} from '../../../../contexts/LikesContext';\nimport {MobileContext} from '../../../../contexts/MobileContext';\nimport {AnalyticsCounter} from '../../../../counters/utils';\nimport {Keyset, i18n} from '../../../../i18n';\nimport {DefaultEventNames, FetchArgs, Query} from '../../../../models/common';\nimport {block} from '../../../../utils/cn';\nimport {Search} from '../../../Search/Search';\nimport {prepareAnalyticsEvent} from '../../../../utils/common';\n\nimport {renderFilter, renderOption, renderSwitcher} from './customRenders';\n\nimport './Controls.scss';\n\nconst b = block('feed-controls');\n\nexport type SelectItem = {\n content: string;\n value: string;\n icon?: React.ReactNode;\n};\n\nexport type ControlsProps = {\n handleLoadData: (props: FetchArgs) => void;\n tags?: SelectItem[];\n services?: SelectItem[];\n queryParams: Query;\n};\n\nconst ICON_SIZE = 16;\nconst DEFAULT_PAGE = 1;\nconst VIRTUALIZATION_THRESHOLD = 1000;\n\nexport const Controls = ({\n handleLoadData,\n tags = [],\n services = [],\n queryParams,\n}: ControlsProps) => {\n const {hasLikes} = React.useContext(LikesContext);\n const handleAnalyticsTag = useAnalytics(DefaultEventNames.Tag);\n const handleAnalyticsService = useAnalytics(DefaultEventNames.Service);\n const handleAnalyticsSaveOnly = useAnalytics(DefaultEventNames.SaveOnly);\n\n const {\n savedOnly: savedOnlyInitial,\n search: searchInitial,\n tags: tagInitial,\n services: servicesInitial,\n } = queryParams || {};\n\n const [savedOnly, setSavedOnly] = React.useState<boolean>(savedOnlyInitial === 'true');\n const [search, setSearch] = React.useState<string>(searchInitial as string);\n\n const isMobile = React.useContext(MobileContext);\n\n const handleSavedOnly = () => {\n handleAnalyticsSaveOnly();\n setSavedOnly(!savedOnly);\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {\n savedOnly: savedOnly ? '' : 'true',\n search: '',\n tags: '',\n page: DEFAULT_PAGE,\n services: '',\n },\n });\n };\n\n const handleSearch = (searchValue: string) => {\n setSearch(searchValue);\n\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {search: searchValue, page: DEFAULT_PAGE},\n });\n };\n\n const handleTagSelect = (selectedTags: string[]) => {\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.tag,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsTag(event, {\n theme: selectedTags[0],\n });\n\n const isEmptyTag = selectedTags.some((tag) => tag === 'empty');\n\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {\n tags: isEmptyTag ? '' : selectedTags[0],\n page: DEFAULT_PAGE,\n },\n });\n };\n\n const handleServicesSelect = (selectedServices: string[]) => {\n const forAnalyticsServices = services.filter((service) => {\n return selectedServices.includes(service.value);\n });\n\n const servicesAsStringForAnalytics = forAnalyticsServices\n .map((service) => service.content)\n .join(',');\n\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.service,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsService(event, {\n service: servicesAsStringForAnalytics,\n });\n\n const servicesAsString = selectedServices.join(',');\n\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {services: servicesAsString, page: DEFAULT_PAGE},\n });\n };\n\n const tagsItems = React.useMemo(\n () => [{value: 'empty', content: i18n(Keyset.AllTags)} as unknown as SelectItem, ...tags],\n [tags],\n );\n\n const servicesItems = React.useMemo(\n () => (servicesInitial ? [...(servicesInitial as string).split(',')] : []),\n [servicesInitial],\n );\n\n return (\n <MobileProvider mobile={false}>\n <div className={b('header')}>\n <h1 className={b('header-item', {title: true})}>{i18n(Keyset.Title)}</h1>\n <div className={b('header-item', {filters: true})}>\n <div className={b('filter-item')}>\n <Search\n className={b('search')}\n placeholder={i18n(Keyset.Search)}\n initialValue={search && typeof search === 'string' ? search : ''}\n onSubmit={handleSearch}\n />\n </div>\n <div className={b('filter-item')}>\n <Select\n className={b('select')}\n size=\"xl\"\n options={tagsItems}\n defaultValue={[tagInitial] as string[]}\n onUpdate={handleTagSelect}\n placeholder={i18n(Keyset.AllTags)}\n popupClassName={b('popup', {isMobile})}\n renderControl={renderSwitcher({\n initial: [tagInitial],\n list: tagsItems,\n defaultLabel: i18n(Keyset.AllTags),\n })}\n disablePortal\n virtualizationThreshold={VIRTUALIZATION_THRESHOLD}\n renderOption={renderOption}\n />\n </div>\n\n {services.length > 0 ? (\n <div className={b('filter-item')}>\n <Select\n className={b('select')}\n size=\"xl\"\n multiple\n filterable\n hasClear\n disablePortal\n options={services}\n defaultValue={servicesItems}\n popupClassName={b('popup', {isMobile})}\n onUpdate={handleServicesSelect}\n placeholder={i18n(Keyset.AllServices)}\n renderControl={renderSwitcher({\n initial: servicesItems,\n list: services,\n defaultLabel: i18n(Keyset.AllServices),\n qa: 'service-select',\n })}\n virtualizationThreshold={VIRTUALIZATION_THRESHOLD}\n renderOption={renderOption}\n renderFilter={renderFilter}\n />\n </div>\n ) : null}\n {hasLikes ? (\n <div className={b('filter-item', {'width-auto': true})}>\n <Button\n view={'outlined'}\n className={b('saved-only-button', {savedOnly})}\n size=\"xl\"\n onClick={handleSavedOnly}\n selected={savedOnly}\n >\n <Icon\n data={Bookmark}\n size={ICON_SIZE}\n className={b('icon', {savedOnly})}\n />\n {i18n(Keyset.ActionSavedOnly)}\n </Button>\n </div>\n ) : null}\n </div>\n </div>\n </MobileProvider>\n );\n};\n"]}
1
+ {"version":3,"file":"Controls.js","sourceRoot":"../../../../../../src","sources":["components/FeedHeader/components/Controls/Controls.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {Bookmark} from '@gravity-ui/icons';\nimport {useAnalytics} from '@gravity-ui/page-constructor';\nimport {Button, Icon, MobileProvider, Select} from '@gravity-ui/uikit';\n\nimport {DefaultGoalIds} from '../../../../constants';\nimport {LikesContext} from '../../../../contexts/LikesContext';\nimport {MobileContext} from '../../../../contexts/MobileContext';\nimport {AnalyticsCounter} from '../../../../counters/utils';\nimport {Keyset, i18n} from '../../../../i18n';\nimport {DefaultEventNames, FetchArgs, Query} from '../../../../models/common';\nimport {block} from '../../../../utils/cn';\nimport {prepareAnalyticsEvent} from '../../../../utils/common';\nimport {Search} from '../../../Search/Search';\n\nimport {renderFilter, renderOption, renderSwitcher} from './customRenders';\n\nimport './Controls.scss';\n\nconst b = block('feed-controls');\n\nexport type SelectItem = {\n content: string;\n value: string;\n icon?: React.ReactNode;\n};\n\nexport type ControlsProps = {\n handleLoadData: (props: FetchArgs) => void;\n tags?: SelectItem[];\n services?: SelectItem[];\n queryParams: Query;\n};\n\nconst ICON_SIZE = 16;\nconst DEFAULT_PAGE = 1;\nconst VIRTUALIZATION_THRESHOLD = 1000;\n\nexport const Controls = ({\n handleLoadData,\n tags = [],\n services = [],\n queryParams,\n}: ControlsProps) => {\n const {hasLikes} = React.useContext(LikesContext);\n const handleAnalyticsTag = useAnalytics(DefaultEventNames.Tag);\n const handleAnalyticsService = useAnalytics(DefaultEventNames.Service);\n const handleAnalyticsSaveOnly = useAnalytics(DefaultEventNames.SaveOnly);\n\n const {\n savedOnly: savedOnlyInitial,\n search: searchInitial,\n tags: tagInitial,\n services: servicesInitial,\n } = queryParams || {};\n\n const [savedOnly, setSavedOnly] = React.useState<boolean>(savedOnlyInitial === 'true');\n const [search, setSearch] = React.useState<string>(searchInitial as string);\n\n const isMobile = React.useContext(MobileContext);\n\n const handleSavedOnly = () => {\n handleAnalyticsSaveOnly();\n setSavedOnly(!savedOnly);\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {\n savedOnly: savedOnly ? '' : 'true',\n search: '',\n tags: '',\n page: DEFAULT_PAGE,\n services: '',\n },\n });\n };\n\n const handleSearch = (searchValue: string) => {\n setSearch(searchValue);\n\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {search: searchValue, page: DEFAULT_PAGE},\n });\n };\n\n const handleTagSelect = (selectedTags: string[]) => {\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.tag,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsTag(event, {\n theme: selectedTags[0],\n });\n\n const isEmptyTag = selectedTags.some((tag) => tag === 'empty');\n\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {\n tags: isEmptyTag ? '' : selectedTags[0],\n page: DEFAULT_PAGE,\n },\n });\n };\n\n const handleServicesSelect = (selectedServices: string[]) => {\n const forAnalyticsServices = services.filter((service) => {\n return selectedServices.includes(service.value);\n });\n\n const servicesAsStringForAnalytics = forAnalyticsServices\n .map((service) => service.content)\n .join(',');\n\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.service,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsService(event, {\n service: servicesAsStringForAnalytics,\n });\n\n const servicesAsString = selectedServices.join(',');\n\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {services: servicesAsString, page: DEFAULT_PAGE},\n });\n };\n\n const tagsItems = React.useMemo(\n () => [{value: 'empty', content: i18n(Keyset.AllTags)} as unknown as SelectItem, ...tags],\n [tags],\n );\n\n const servicesItems = React.useMemo(\n () => (servicesInitial ? [...(servicesInitial as string).split(',')] : []),\n [servicesInitial],\n );\n\n return (\n <MobileProvider mobile={false}>\n <div className={b('header')}>\n <h1 className={b('header-item', {title: true})}>{i18n(Keyset.Title)}</h1>\n <div className={b('header-item', {filters: true})}>\n <div className={b('filter-item')}>\n <Search\n className={b('search')}\n placeholder={i18n(Keyset.Search)}\n initialValue={search && typeof search === 'string' ? search : ''}\n onSubmit={handleSearch}\n />\n </div>\n <div className={b('filter-item')}>\n <Select\n className={b('select')}\n size=\"xl\"\n options={tagsItems}\n defaultValue={[tagInitial] as string[]}\n onUpdate={handleTagSelect}\n placeholder={i18n(Keyset.AllTags)}\n popupClassName={b('popup', {isMobile})}\n renderControl={renderSwitcher({\n initial: [tagInitial],\n list: tagsItems,\n defaultLabel: i18n(Keyset.AllTags),\n })}\n disablePortal\n virtualizationThreshold={VIRTUALIZATION_THRESHOLD}\n renderOption={renderOption}\n />\n </div>\n\n {services.length > 0 ? (\n <div className={b('filter-item')}>\n <Select\n className={b('select')}\n size=\"xl\"\n multiple\n filterable\n hasClear\n disablePortal\n options={services}\n defaultValue={servicesItems}\n popupClassName={b('popup', {isMobile})}\n onUpdate={handleServicesSelect}\n placeholder={i18n(Keyset.AllServices)}\n renderControl={renderSwitcher({\n initial: servicesItems,\n list: services,\n defaultLabel: i18n(Keyset.AllServices),\n qa: 'service-select',\n })}\n virtualizationThreshold={VIRTUALIZATION_THRESHOLD}\n renderOption={renderOption}\n renderFilter={renderFilter}\n />\n </div>\n ) : null}\n {hasLikes ? (\n <div className={b('filter-item', {'width-auto': true})}>\n <Button\n view={'outlined'}\n className={b('saved-only-button', {savedOnly})}\n size=\"xl\"\n onClick={handleSavedOnly}\n selected={savedOnly}\n >\n <Icon\n data={Bookmark}\n size={ICON_SIZE}\n className={b('icon', {savedOnly})}\n />\n {i18n(Keyset.ActionSavedOnly)}\n </Button>\n </div>\n ) : null}\n </div>\n </div>\n </MobileProvider>\n );\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
- import { Icon, useUniqId } from '@gravity-ui/uikit';
4
3
  import { ChevronDown, Xmark } from '@gravity-ui/icons';
4
+ import { Icon, useUniqId } from '@gravity-ui/uikit';
5
5
  import { block } from "../../../../utils/cn.js";
6
6
  import './CustomSwitcher.css';
7
7
  const b = block('feed-custom-switcher');
@@ -1 +1 @@
1
- {"version":3,"file":"CustomSwitcher.js","sourceRoot":"../../../../../../src","sources":["components/FeedHeader/components/CustomSwitcher/CustomSwitcher.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,IAAI,EAAe,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAC,WAAW,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAC,KAAK,EAAC,gCAA6B;AAG3C,OAAO,sBAAsB,CAAC;AAE9B,MAAM,CAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAqBxC,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC3B,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,EAAE,GACgB,EAAE,EAAE;IACtB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,KAAK,GAAG,IAAI;aACb,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC9C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAEzC,MAAM,gBAAgB,GAAG,SAAS,EAAE,CAAC;IAErC,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,UAA6C,aAEpF,0CACa,EAAE,EACX,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,EAC9B,SAAS,EAAE,CAAC,CAAC,yBAAyB,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,EACxD,SAAS,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,IAC9B,SAAS,uBACI,gBAAgB,IACnC,EACF,cACI,EAAE,EAAE,gBAAgB,EACpB,SAAS,EAAE,CAAC,CAAC,yBAAyB,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,iCAGvD,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC,IAAI,CAAC,GACrB,EACL,WAAW;gBACR,WAAW,CAAC;oBACR,UAAU,EAAE,GAAG,EAAE,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,GAAI;iBACjE,CAAC,EACL,UAAU,IAAI,CACX,cAAK,SAAS,EAAE,CAAC,CAAC,yBAAyB,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,YACxD,UAAU,CAAC,MAAM,GAChB,CACT,EACD,cAAK,SAAS,EAAE,CAAC,CAAC,yBAAyB,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,YACvD,KAAC,IAAI,IAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAI,GAC1E,IACJ,CACT,CAAC;AACN,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {Icon, SelectProps, useUniqId} from '@gravity-ui/uikit';\nimport {ChevronDown, Xmark} from '@gravity-ui/icons';\n\nimport {block} from '../../../../utils/cn';\nimport {SelectItem} from '../Controls/Controls';\n\nimport './CustomSwitcher.scss';\n\nconst b = block('feed-custom-switcher');\n\ntype RenderControlParameters = Partial<Parameters<Required<SelectProps>['renderControl']>[0]>;\ntype TriggerProps = Required<RenderControlParameters>['triggerProps'];\n\ntype A11yKeys = {\n [K in keyof TriggerProps]-?: K extends `aria-${string}` | 'role' ? K : never;\n}[keyof TriggerProps];\n\ntype RenderControlA11yProps = Pick<TriggerProps, A11yKeys>;\n\nexport type CustomSwitcherProps = {\n initial: (string | number | null)[];\n defaultLabel: string;\n list: SelectItem[];\n controlRef: RenderControlParameters['ref'];\n a11yProps: RenderControlA11yProps;\n qa?: string;\n} & Omit<RenderControlParameters, 'ref'> &\n Pick<TriggerProps, 'id' | 'disabled' | 'type'>;\n\nconst ICON_SIZE = 12;\n\nexport const CustomSwitcher = ({\n id,\n disabled,\n type,\n initial,\n defaultLabel,\n list,\n triggerProps,\n controlRef,\n renderClear,\n a11yProps,\n qa,\n}: CustomSwitcherProps) => {\n const itemsNames = React.useMemo(() => {\n const items = list\n .filter((item) => initial.includes(item.value))\n .map((item) => item.content);\n\n return items.length ? items : [defaultLabel];\n }, [defaultLabel, initial, list]);\n const hasCounter = itemsNames.length > 1;\n\n const contentElementId = useUniqId();\n\n return (\n <div className={b('custom-switcher')} ref={controlRef as React.LegacyRef<HTMLDivElement>}>\n {/* eslint-disable-next-line jsx-a11y/role-supports-aria-props */}\n <button\n data-qa={qa}\n id={id}\n disabled={disabled}\n type={type}\n onClick={triggerProps?.onClick}\n className={b('custom-switcher-element', {overlay: true})}\n onKeyDown={triggerProps?.onKeyDown}\n {...a11yProps}\n aria-labelledby={contentElementId}\n />\n <div\n id={contentElementId}\n className={b('custom-switcher-element', {content: true})}\n aria-hidden\n >\n {itemsNames?.join(', ')}\n </div>\n {renderClear &&\n renderClear({\n renderIcon: () => <Icon data={Xmark} className={b('clear')} />,\n })}\n {hasCounter && (\n <div className={b('custom-switcher-element', {counter: true})}>\n {itemsNames.length}\n </div>\n )}\n <div className={b('custom-switcher-element', {arrow: true})}>\n <Icon data={ChevronDown} size={ICON_SIZE} className={b('switcher-arrow')} />\n </div>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"CustomSwitcher.js","sourceRoot":"../../../../../../src","sources":["components/FeedHeader/components/CustomSwitcher/CustomSwitcher.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,WAAW,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAC,IAAI,EAAe,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAC,KAAK,EAAC,gCAA6B;AAG3C,OAAO,sBAAsB,CAAC;AAE9B,MAAM,CAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAqBxC,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC3B,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,EAAE,GACgB,EAAE,EAAE;IACtB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,KAAK,GAAG,IAAI;aACb,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC9C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAEzC,MAAM,gBAAgB,GAAG,SAAS,EAAE,CAAC;IAErC,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,UAA6C,aAEpF,0CACa,EAAE,EACX,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,EAC9B,SAAS,EAAE,CAAC,CAAC,yBAAyB,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,EACxD,SAAS,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,IAC9B,SAAS,uBACI,gBAAgB,IACnC,EACF,cACI,EAAE,EAAE,gBAAgB,EACpB,SAAS,EAAE,CAAC,CAAC,yBAAyB,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,iCAGvD,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC,IAAI,CAAC,GACrB,EACL,WAAW;gBACR,WAAW,CAAC;oBACR,UAAU,EAAE,GAAG,EAAE,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,GAAI;iBACjE,CAAC,EACL,UAAU,IAAI,CACX,cAAK,SAAS,EAAE,CAAC,CAAC,yBAAyB,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,YACxD,UAAU,CAAC,MAAM,GAChB,CACT,EACD,cAAK,SAAS,EAAE,CAAC,CAAC,yBAAyB,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,YACvD,KAAC,IAAI,IAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAI,GAC1E,IACJ,CACT,CAAC;AACN,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {ChevronDown, Xmark} from '@gravity-ui/icons';\nimport {Icon, SelectProps, useUniqId} from '@gravity-ui/uikit';\n\nimport {block} from '../../../../utils/cn';\nimport {SelectItem} from '../Controls/Controls';\n\nimport './CustomSwitcher.scss';\n\nconst b = block('feed-custom-switcher');\n\ntype RenderControlParameters = Partial<Parameters<Required<SelectProps>['renderControl']>[0]>;\ntype TriggerProps = Required<RenderControlParameters>['triggerProps'];\n\ntype A11yKeys = {\n [K in keyof TriggerProps]-?: K extends `aria-${string}` | 'role' ? K : never;\n}[keyof TriggerProps];\n\ntype RenderControlA11yProps = Pick<TriggerProps, A11yKeys>;\n\nexport type CustomSwitcherProps = {\n initial: (string | number | null)[];\n defaultLabel: string;\n list: SelectItem[];\n controlRef: RenderControlParameters['ref'];\n a11yProps: RenderControlA11yProps;\n qa?: string;\n} & Omit<RenderControlParameters, 'ref'> &\n Pick<TriggerProps, 'id' | 'disabled' | 'type'>;\n\nconst ICON_SIZE = 12;\n\nexport const CustomSwitcher = ({\n id,\n disabled,\n type,\n initial,\n defaultLabel,\n list,\n triggerProps,\n controlRef,\n renderClear,\n a11yProps,\n qa,\n}: CustomSwitcherProps) => {\n const itemsNames = React.useMemo(() => {\n const items = list\n .filter((item) => initial.includes(item.value))\n .map((item) => item.content);\n\n return items.length ? items : [defaultLabel];\n }, [defaultLabel, initial, list]);\n const hasCounter = itemsNames.length > 1;\n\n const contentElementId = useUniqId();\n\n return (\n <div className={b('custom-switcher')} ref={controlRef as React.LegacyRef<HTMLDivElement>}>\n {/* eslint-disable-next-line jsx-a11y/role-supports-aria-props */}\n <button\n data-qa={qa}\n id={id}\n disabled={disabled}\n type={type}\n onClick={triggerProps?.onClick}\n className={b('custom-switcher-element', {overlay: true})}\n onKeyDown={triggerProps?.onKeyDown}\n {...a11yProps}\n aria-labelledby={contentElementId}\n />\n <div\n id={contentElementId}\n className={b('custom-switcher-element', {content: true})}\n aria-hidden\n >\n {itemsNames?.join(', ')}\n </div>\n {renderClear &&\n renderClear({\n renderIcon: () => <Icon data={Xmark} className={b('clear')} />,\n })}\n {hasCounter && (\n <div className={b('custom-switcher-element', {counter: true})}>\n {itemsNames.length}\n </div>\n )}\n <div className={b('custom-switcher-element', {arrow: true})}>\n <Icon data={ChevronDown} size={ICON_SIZE} className={b('switcher-arrow')} />\n </div>\n </div>\n );\n};\n"]}
@@ -2,16 +2,16 @@ import { __rest } from "tslib";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
4
  import { useAnalytics } from '@gravity-ui/page-constructor';
5
+ import _ from 'lodash';
5
6
  import { DefaultGoalIds } from "../../constants.js";
6
7
  import { AnalyticsCounter } from "../../counters/utils.js";
7
8
  import { DefaultEventNames } from "../../models/common.js";
8
9
  import { block } from "../../utils/cn.js";
10
+ import { prepareAnalyticsEvent } from "../../utils/common.js";
9
11
  import { NavigationButton } from "./components/NavigationButton.js";
10
12
  import { PaginatorItem } from "./components/PaginatorItem.js";
11
13
  import { ArrowType } from "./types.js";
12
14
  import { getPageConfigs, getPagesCount } from "./utils.js";
13
- import { prepareAnalyticsEvent } from "../../utils/common.js";
14
- import _ from 'lodash';
15
15
  import './Paginator.css';
16
16
  const b = block('paginator');
17
17
  const DEFAULT_PAGE_COUNT_FOR_SHOW_SUPPORT_BUTTONS = 6;
@@ -1 +1 @@
1
- {"version":3,"file":"Paginator.js","sourceRoot":"../../../../src","sources":["components/Paginator/Paginator.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {useAnalytics} from '@gravity-ui/page-constructor';\n\nimport {DefaultGoalIds} from '../../constants';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {DefaultEventNames} from '../../models/common';\nimport {block} from '../../utils/cn';\n\nimport {NavigationButton} from './components/NavigationButton';\nimport {PaginatorItem} from './components/PaginatorItem';\nimport {ArrowType, PaginatorItemProps, PaginatorProps} from './types';\nimport {getPageConfigs, getPagesCount} from './utils';\nimport {prepareAnalyticsEvent} from '../../utils/common';\n\nimport _ from 'lodash';\n\nimport './Paginator.scss';\n\nconst b = block('paginator');\n\nconst DEFAULT_PAGE_COUNT_FOR_SHOW_SUPPORT_BUTTONS = 6;\n\nexport const Paginator = ({\n itemsPerPage,\n totalItems,\n maxPages,\n page,\n className,\n onPageChange,\n queryParams,\n pageCountForShowSupportButtons = DEFAULT_PAGE_COUNT_FOR_SHOW_SUPPORT_BUTTONS,\n}: PaginatorProps) => {\n const [pagesCount, setPagesCount] = React.useState(\n getPagesCount({itemsPerPage, totalItems, maxPages}),\n );\n\n const nonPagedQuery = React.useMemo(() => {\n return _.omit(queryParams, ['page']);\n }, [queryParams]);\n\n React.useEffect(() => {\n const count = getPagesCount({itemsPerPage, totalItems, maxPages});\n setPagesCount(count);\n }, [itemsPerPage, totalItems, maxPages]);\n\n const handlePageChange = (pageIndex: number) => onPageChange?.(pageIndex);\n\n const isShowSupportButtons = React.useMemo(\n () => pagesCount > pageCountForShowSupportButtons,\n [pageCountForShowSupportButtons, pagesCount],\n );\n\n const handleAnalyticsHome = useAnalytics(DefaultEventNames.PaginatorHome);\n const handleAnalyticsNext = useAnalytics(DefaultEventNames.PaginatorNext);\n const handleAnalyticsPage = useAnalytics(DefaultEventNames.PaginatorPage);\n\n if (pagesCount <= 1) {\n return null;\n }\n\n const handleArrowClick = (type: ArrowType | number) => {\n let newPage = page;\n\n if (type === 'prev' && page > 1) {\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.home,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsHome(event);\n newPage = 1;\n } else if (type === 'next' && page < pagesCount) {\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.next,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsNext(event);\n newPage = page + 1;\n }\n\n if (newPage !== page) {\n handlePageChange(newPage);\n }\n };\n\n const handlePageClick = (index: number | ArrowType) => {\n if (index !== page && typeof index === 'number') {\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.page,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsPage(event, {page: String(index)});\n handlePageChange(index);\n }\n };\n\n const paginatorItems = getPageConfigs({\n page,\n pagesCount,\n queryParams: nonPagedQuery,\n handlePageClick,\n });\n\n if (page > 1 && isShowSupportButtons) {\n paginatorItems.unshift({\n key: ArrowType.Prev,\n dataKey: ArrowType.Prev,\n queryParams: nonPagedQuery,\n mods: {type: ArrowType.Prev},\n onClick: handleArrowClick,\n index: 0,\n content: <NavigationButton arrowType={ArrowType.Prev} />,\n });\n }\n\n if (page < pagesCount && isShowSupportButtons) {\n paginatorItems.push({\n key: ArrowType.Next,\n queryParams: nonPagedQuery,\n dataKey: ArrowType.Next,\n mods: {type: ArrowType.Next},\n index: page + 1,\n onClick: handleArrowClick,\n content: <NavigationButton arrowType={ArrowType.Next} />,\n });\n }\n\n const renderPaginatorItem = (item: PaginatorItemProps) => {\n const {key, ...rest} = item;\n return <PaginatorItem key={`page_${key}`} {...rest} />;\n };\n\n return (\n <div className={b('pagination')}>\n {page > 1 && (\n <div className={b('pagination-block')}>\n <ul className={b(null, className)}>\n {paginatorItems.slice(0, 1).map(renderPaginatorItem)}\n </ul>\n </div>\n )}\n <div className={b('pagination-block')}>\n <ul className={b(null, className)}>\n {paginatorItems\n .slice(\n page > 1 ? 1 : 0,\n page < pagesCount ? paginatorItems.length - 1 : paginatorItems.length,\n )\n .map(renderPaginatorItem)}\n </ul>\n </div>\n {page < pagesCount && (\n <div className={b('pagination-block')}>\n <ul className={b(null, className)}>\n {paginatorItems\n .slice(paginatorItems.length - 1, paginatorItems.length)\n .map(renderPaginatorItem)}\n </ul>\n </div>\n )}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"Paginator.js","sourceRoot":"../../../../src","sources":["components/Paginator/Paginator.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {useAnalytics} from '@gravity-ui/page-constructor';\nimport _ from 'lodash';\n\nimport {DefaultGoalIds} from '../../constants';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {DefaultEventNames} from '../../models/common';\nimport {block} from '../../utils/cn';\nimport {prepareAnalyticsEvent} from '../../utils/common';\n\nimport {NavigationButton} from './components/NavigationButton';\nimport {PaginatorItem} from './components/PaginatorItem';\nimport {ArrowType, PaginatorItemProps, PaginatorProps} from './types';\nimport {getPageConfigs, getPagesCount} from './utils';\n\nimport './Paginator.scss';\n\nconst b = block('paginator');\n\nconst DEFAULT_PAGE_COUNT_FOR_SHOW_SUPPORT_BUTTONS = 6;\n\nexport const Paginator = ({\n itemsPerPage,\n totalItems,\n maxPages,\n page,\n className,\n onPageChange,\n queryParams,\n pageCountForShowSupportButtons = DEFAULT_PAGE_COUNT_FOR_SHOW_SUPPORT_BUTTONS,\n}: PaginatorProps) => {\n const [pagesCount, setPagesCount] = React.useState(\n getPagesCount({itemsPerPage, totalItems, maxPages}),\n );\n\n const nonPagedQuery = React.useMemo(() => {\n return _.omit(queryParams, ['page']);\n }, [queryParams]);\n\n React.useEffect(() => {\n const count = getPagesCount({itemsPerPage, totalItems, maxPages});\n setPagesCount(count);\n }, [itemsPerPage, totalItems, maxPages]);\n\n const handlePageChange = (pageIndex: number) => onPageChange?.(pageIndex);\n\n const isShowSupportButtons = React.useMemo(\n () => pagesCount > pageCountForShowSupportButtons,\n [pageCountForShowSupportButtons, pagesCount],\n );\n\n const handleAnalyticsHome = useAnalytics(DefaultEventNames.PaginatorHome);\n const handleAnalyticsNext = useAnalytics(DefaultEventNames.PaginatorNext);\n const handleAnalyticsPage = useAnalytics(DefaultEventNames.PaginatorPage);\n\n if (pagesCount <= 1) {\n return null;\n }\n\n const handleArrowClick = (type: ArrowType | number) => {\n let newPage = page;\n\n if (type === 'prev' && page > 1) {\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.home,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsHome(event);\n newPage = 1;\n } else if (type === 'next' && page < pagesCount) {\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.next,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsNext(event);\n newPage = page + 1;\n }\n\n if (newPage !== page) {\n handlePageChange(newPage);\n }\n };\n\n const handlePageClick = (index: number | ArrowType) => {\n if (index !== page && typeof index === 'number') {\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.page,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsPage(event, {page: String(index)});\n handlePageChange(index);\n }\n };\n\n const paginatorItems = getPageConfigs({\n page,\n pagesCount,\n queryParams: nonPagedQuery,\n handlePageClick,\n });\n\n if (page > 1 && isShowSupportButtons) {\n paginatorItems.unshift({\n key: ArrowType.Prev,\n dataKey: ArrowType.Prev,\n queryParams: nonPagedQuery,\n mods: {type: ArrowType.Prev},\n onClick: handleArrowClick,\n index: 0,\n content: <NavigationButton arrowType={ArrowType.Prev} />,\n });\n }\n\n if (page < pagesCount && isShowSupportButtons) {\n paginatorItems.push({\n key: ArrowType.Next,\n queryParams: nonPagedQuery,\n dataKey: ArrowType.Next,\n mods: {type: ArrowType.Next},\n index: page + 1,\n onClick: handleArrowClick,\n content: <NavigationButton arrowType={ArrowType.Next} />,\n });\n }\n\n const renderPaginatorItem = (item: PaginatorItemProps) => {\n const {key, ...rest} = item;\n return <PaginatorItem key={`page_${key}`} {...rest} />;\n };\n\n return (\n <div className={b('pagination')}>\n {page > 1 && (\n <div className={b('pagination-block')}>\n <ul className={b(null, className)}>\n {paginatorItems.slice(0, 1).map(renderPaginatorItem)}\n </ul>\n </div>\n )}\n <div className={b('pagination-block')}>\n <ul className={b(null, className)}>\n {paginatorItems\n .slice(\n page > 1 ? 1 : 0,\n page < pagesCount ? paginatorItems.length - 1 : paginatorItems.length,\n )\n .map(renderPaginatorItem)}\n </ul>\n </div>\n {page < pagesCount && (\n <div className={b('pagination-block')}>\n <ul className={b(null, className)}>\n {paginatorItems\n .slice(paginatorItems.length - 1, paginatorItems.length)\n .map(renderPaginatorItem)}\n </ul>\n </div>\n )}\n </div>\n );\n};\n"]}
@@ -3,10 +3,10 @@ import * as React from 'react';
3
3
  import { CardBase, YFMWrapper } from '@gravity-ui/page-constructor';
4
4
  import { useUniqId } from '@gravity-ui/uikit';
5
5
  import { LikesContext } from "../../contexts/LikesContext.js";
6
+ import { useAriaAttributes } from "../../hooks/useAriaAttributes.js";
6
7
  import { PostCardSize, PostCardTitleHeadingLevel } from "../../models/common.js";
7
8
  import { block } from "../../utils/cn.js";
8
9
  import { SuggestPostInfo } from "../PostInfo/SuggestPostInfo.js";
9
- import { useAriaAttributes } from "../../hooks/useAriaAttributes.js";
10
10
  import './PostCard.css';
11
11
  const b = block('post-card');
12
12
  export const PostCard = ({ post, fullWidth = false, size = PostCardSize.SMALL, showTag = false, titleHeadingLevel = PostCardTitleHeadingLevel.H3, analyticsEvents, }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"PostCard.js","sourceRoot":"../../../../src","sources":["components/PostCard/PostCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {AnalyticsEventsProp, CardBase, YFMWrapper} from '@gravity-ui/page-constructor';\nimport {useUniqId} from '@gravity-ui/uikit';\n\nimport {LikesContext} from '../../contexts/LikesContext';\nimport {PostCardSize, PostCardTitleHeadingLevel, PostData} from '../../models/common';\nimport {block} from '../../utils/cn';\nimport {SuggestPostInfo} from '../PostInfo/SuggestPostInfo';\nimport {useAriaAttributes} from '../../hooks/useAriaAttributes';\n\nimport './PostCard.scss';\n\ntype PostCardProps = {\n post: PostData;\n fullWidth?: boolean;\n showTag?: boolean;\n size?: PostCardSize;\n titleHeadingLevel?: PostCardTitleHeadingLevel;\n analyticsEvents?: AnalyticsEventsProp;\n};\n\nconst b = block('post-card');\n\nexport const PostCard = ({\n post,\n fullWidth = false,\n size = PostCardSize.SMALL,\n showTag = false,\n titleHeadingLevel = PostCardTitleHeadingLevel.H3,\n analyticsEvents,\n}: PostCardProps) => {\n const {\n title: postTitle,\n htmlTitle,\n textTitle,\n blogPostId,\n id,\n date,\n readingTime,\n hasUserLike,\n likes,\n image,\n description,\n tags,\n url,\n } = post;\n\n const title = postTitle || textTitle || htmlTitle;\n\n const {toggleLike, hasLikes} = React.useContext(LikesContext);\n\n const likesProps = React.useMemo(\n () =>\n hasLikes\n ? {\n hasUserLike,\n likesCount: likes,\n toggleLike,\n }\n : undefined,\n [hasUserLike, likes, toggleLike, hasLikes],\n );\n const titleId = useUniqId();\n const descriptionId = useUniqId();\n const dateId = useUniqId();\n const tagId = useUniqId();\n const readingTimeId = useUniqId();\n const isTagVisible = showTag && tags?.[0]?.name;\n const ariaAttributes = useAriaAttributes({\n labelIds: [isTagVisible && tagId, title && titleId],\n descriptionIds: [\n description && descriptionId,\n date && dateId,\n readingTime && readingTimeId,\n ],\n });\n\n return (\n <CardBase\n url={url}\n analyticsEvents={analyticsEvents}\n className={b('card', {fullWidth})}\n extraProps={ariaAttributes}\n >\n <CardBase.Header image={image} className={b('header', {fullWidth})}>\n <div className={b('image-container')} data-qa=\"blog-suggest-header\" />\n </CardBase.Header>\n <CardBase.Content>\n {isTagVisible && (\n <div id={tagId} className={b('tag', {size})}>\n {tags[0].name}\n </div>\n )}\n {title && (\n <YFMWrapper\n className={b('title', {size})}\n tagName={titleHeadingLevel}\n content={title}\n contentClassName={b('title', {size})}\n modifiers={{\n blog: true,\n blogCard: true,\n heading: true,\n }}\n id={titleId}\n />\n )}\n {description && (\n <YFMWrapper\n className={b('description')}\n content={description}\n modifiers={{\n blog: size === 'm',\n blogCard: true,\n }}\n id={descriptionId}\n />\n )}\n </CardBase.Content>\n <CardBase.Footer>\n <SuggestPostInfo\n postId={blogPostId || id}\n date={date}\n readingTime={readingTime}\n hasUserLike={hasUserLike}\n likes={likesProps}\n size={size}\n qa=\"blog-suggest-block\"\n dateId={dateId}\n readingTimeId={readingTimeId}\n />\n </CardBase.Footer>\n </CardBase>\n );\n};\n"]}
1
+ {"version":3,"file":"PostCard.js","sourceRoot":"../../../../src","sources":["components/PostCard/PostCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {AnalyticsEventsProp, CardBase, YFMWrapper} from '@gravity-ui/page-constructor';\nimport {useUniqId} from '@gravity-ui/uikit';\n\nimport {LikesContext} from '../../contexts/LikesContext';\nimport {useAriaAttributes} from '../../hooks/useAriaAttributes';\nimport {PostCardSize, PostCardTitleHeadingLevel, PostData} from '../../models/common';\nimport {block} from '../../utils/cn';\nimport {SuggestPostInfo} from '../PostInfo/SuggestPostInfo';\n\nimport './PostCard.scss';\n\ntype PostCardProps = {\n post: PostData;\n fullWidth?: boolean;\n showTag?: boolean;\n size?: PostCardSize;\n titleHeadingLevel?: PostCardTitleHeadingLevel;\n analyticsEvents?: AnalyticsEventsProp;\n};\n\nconst b = block('post-card');\n\nexport const PostCard = ({\n post,\n fullWidth = false,\n size = PostCardSize.SMALL,\n showTag = false,\n titleHeadingLevel = PostCardTitleHeadingLevel.H3,\n analyticsEvents,\n}: PostCardProps) => {\n const {\n title: postTitle,\n htmlTitle,\n textTitle,\n blogPostId,\n id,\n date,\n readingTime,\n hasUserLike,\n likes,\n image,\n description,\n tags,\n url,\n } = post;\n\n const title = postTitle || textTitle || htmlTitle;\n\n const {toggleLike, hasLikes} = React.useContext(LikesContext);\n\n const likesProps = React.useMemo(\n () =>\n hasLikes\n ? {\n hasUserLike,\n likesCount: likes,\n toggleLike,\n }\n : undefined,\n [hasUserLike, likes, toggleLike, hasLikes],\n );\n const titleId = useUniqId();\n const descriptionId = useUniqId();\n const dateId = useUniqId();\n const tagId = useUniqId();\n const readingTimeId = useUniqId();\n const isTagVisible = showTag && tags?.[0]?.name;\n const ariaAttributes = useAriaAttributes({\n labelIds: [isTagVisible && tagId, title && titleId],\n descriptionIds: [\n description && descriptionId,\n date && dateId,\n readingTime && readingTimeId,\n ],\n });\n\n return (\n <CardBase\n url={url}\n analyticsEvents={analyticsEvents}\n className={b('card', {fullWidth})}\n extraProps={ariaAttributes}\n >\n <CardBase.Header image={image} className={b('header', {fullWidth})}>\n <div className={b('image-container')} data-qa=\"blog-suggest-header\" />\n </CardBase.Header>\n <CardBase.Content>\n {isTagVisible && (\n <div id={tagId} className={b('tag', {size})}>\n {tags[0].name}\n </div>\n )}\n {title && (\n <YFMWrapper\n className={b('title', {size})}\n tagName={titleHeadingLevel}\n content={title}\n contentClassName={b('title', {size})}\n modifiers={{\n blog: true,\n blogCard: true,\n heading: true,\n }}\n id={titleId}\n />\n )}\n {description && (\n <YFMWrapper\n className={b('description')}\n content={description}\n modifiers={{\n blog: size === 'm',\n blogCard: true,\n }}\n id={descriptionId}\n />\n )}\n </CardBase.Content>\n <CardBase.Footer>\n <SuggestPostInfo\n postId={blogPostId || id}\n date={date}\n readingTime={readingTime}\n hasUserLike={hasUserLike}\n likes={likesProps}\n size={size}\n qa=\"blog-suggest-block\"\n dateId={dateId}\n readingTimeId={readingTimeId}\n />\n </CardBase.Footer>\n </CardBase>\n );\n};\n"]}
@@ -1,14 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
3
  import { PostPageContext } from "../../contexts/PostPageContext.js";
4
+ import { SettingsContext } from "../../contexts/SettingsContext.js";
4
5
  import { block } from "../../utils/cn.js";
6
+ import { getQaAttributes } from "../../utils/common.js";
5
7
  import { Date } from "./components/Date.js";
6
8
  import { ReadingTime } from "./components/ReadingTime.js";
7
9
  import { Save } from "./components/Save.js";
8
10
  import { Sharing } from "./components/Sharing.js";
9
- import { getQaAttributes } from "../../utils/common.js";
10
11
  import './PostInfo.css';
11
- import { SettingsContext } from "../../contexts/SettingsContext.js";
12
12
  const b = block('post-info');
13
13
  /**
14
14
  * Blog post info panel component
@@ -1 +1 @@
1
- {"version":3,"file":"PostInfo.js","sourceRoot":"../../../../src","sources":["components/PostInfo/PostInfo.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAC,eAAe,EAAC,0CAAuC;AAE/D,OAAO,EAAC,KAAK,EAAC,0BAAuB;AAErC,OAAO,EAAC,IAAI,EAAC,6BAA0B;AACvC,OAAO,EAAC,WAAW,EAAC,oCAAiC;AACrD,OAAO,EAAC,IAAI,EAAC,6BAA0B;AACvC,OAAO,EAAC,OAAO,EAAC,gCAA6B;AAC7C,OAAO,EAAC,eAAe,EAAC,8BAA2B;AAEnD,OAAO,gBAAgB,CAAC;AACxB,OAAO,EAAC,eAAe,EAAC,0CAAuC;AAE/D,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAY7B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACrB,IAAI,EACJ,WAAW,EACX,MAAM,EACN,KAAK,GAAG,OAAO,EACf,EAAE,EACF,wBAAwB,GACZ,EAAE,EAAE;IAChB,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,EAAC,cAAc,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAEzE,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,WAAW,EAAE,EAAC,KAAK,EAAC,CAAC,aAClC,IAAI,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC,IAAI,GAAI,EACnD,WAAW,IAAI,KAAC,WAAW,IAAC,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,CAAC,WAAW,GAAI,EACvF,KAAC,OAAO,IAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,OAAO,GAAI,EAC5E,KAAK,IAAI,CACN,KAAC,IAAI,IACD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,CAAC,UAAU,EACvB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,eAAe,EAAE,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,IAAI,EAC/C,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,YAAY,CAAC,IAAI,GACvB,CACL,EACA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CACvC,cAAiB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,YAChD,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,GAAI,IADnB,KAAK,CAET,CACT,CAAC,IACA,CACT,CAAC;AACN,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {AnalyticsEventsProp} from '@gravity-ui/page-constructor';\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {PostData, QAProps} 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 {Sharing} from './components/Sharing';\nimport {getQaAttributes} from '../../utils/common';\n\nimport './PostInfo.scss';\nimport {SettingsContext} from '../../contexts/SettingsContext';\n\nconst b = block('post-info');\n\nexport type CustomInfoItemComponent = React.ComponentType<{post: PostData}>;\n\ntype PostInfoProps = QAProps & {\n postId: PostData['id'];\n readingTime: PostData['readingTime'];\n date: PostData['date'];\n theme?: 'light' | 'dark';\n analyticsEventsContainer?: Record<string, AnalyticsEventsProp>;\n};\n\n/**\n * Blog post info panel component\n *\n * @param postId - post id\n * @param readingTime - post reading time\n * @param date - post create date\n * @param theme - theme name\n * @param qa - test-attr\n * @param analyticsEventsContainer - a map of records with a single or collection of objects detailing analytics events\n *\n * @returns jsx\n */\nexport const PostInfo = ({\n date,\n readingTime,\n postId,\n theme = 'light',\n qa,\n analyticsEventsContainer,\n}: PostInfoProps) => {\n const {post, likes} = React.useContext(PostPageContext);\n const {extraInfoItems} = React.useContext(SettingsContext);\n const qaAttributes = getQaAttributes(qa, 'date', 'reading-time', 'save');\n\n return (\n <div className={b('container', {theme})}>\n {date && <Date date={date} qa={qaAttributes.date} />}\n {readingTime && <ReadingTime readingTime={readingTime} qa={qaAttributes.readingTime} />}\n <Sharing theme={theme} analyticsEvents={analyticsEventsContainer?.sharing} />\n {likes && (\n <Save\n postId={postId}\n title={likes.likesCount}\n hasUserLike={likes.hasUserLike}\n handleUserLike={likes.handleUserLike}\n analyticsEvents={analyticsEventsContainer?.save}\n theme={theme}\n qa={qaAttributes.save}\n />\n )}\n {extraInfoItems?.map((Component, index) => (\n <div key={index} className={b('item', {extra: true})}>\n <Component post={post} />\n </div>\n ))}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"PostInfo.js","sourceRoot":"../../../../src","sources":["components/PostInfo/PostInfo.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAC,eAAe,EAAC,0CAAuC;AAC/D,OAAO,EAAC,eAAe,EAAC,0CAAuC;AAE/D,OAAO,EAAC,KAAK,EAAC,0BAAuB;AACrC,OAAO,EAAC,eAAe,EAAC,8BAA2B;AAEnD,OAAO,EAAC,IAAI,EAAC,6BAA0B;AACvC,OAAO,EAAC,WAAW,EAAC,oCAAiC;AACrD,OAAO,EAAC,IAAI,EAAC,6BAA0B;AACvC,OAAO,EAAC,OAAO,EAAC,gCAA6B;AAE7C,OAAO,gBAAgB,CAAC;AAExB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAY7B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACrB,IAAI,EACJ,WAAW,EACX,MAAM,EACN,KAAK,GAAG,OAAO,EACf,EAAE,EACF,wBAAwB,GACZ,EAAE,EAAE;IAChB,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,EAAC,cAAc,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAEzE,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,WAAW,EAAE,EAAC,KAAK,EAAC,CAAC,aAClC,IAAI,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC,IAAI,GAAI,EACnD,WAAW,IAAI,KAAC,WAAW,IAAC,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,CAAC,WAAW,GAAI,EACvF,KAAC,OAAO,IAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,OAAO,GAAI,EAC5E,KAAK,IAAI,CACN,KAAC,IAAI,IACD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,CAAC,UAAU,EACvB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,eAAe,EAAE,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,IAAI,EAC/C,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,YAAY,CAAC,IAAI,GACvB,CACL,EACA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CACvC,cAAiB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,YAChD,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,GAAI,IADnB,KAAK,CAET,CACT,CAAC,IACA,CACT,CAAC;AACN,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {AnalyticsEventsProp} from '@gravity-ui/page-constructor';\n\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {SettingsContext} from '../../contexts/SettingsContext';\nimport {PostData, QAProps} from '../../models/common';\nimport {block} from '../../utils/cn';\nimport {getQaAttributes} from '../../utils/common';\n\nimport {Date} from './components/Date';\nimport {ReadingTime} from './components/ReadingTime';\nimport {Save} from './components/Save';\nimport {Sharing} from './components/Sharing';\n\nimport './PostInfo.scss';\n\nconst b = block('post-info');\n\nexport type CustomInfoItemComponent = React.ComponentType<{post: PostData}>;\n\ntype PostInfoProps = QAProps & {\n postId: PostData['id'];\n readingTime: PostData['readingTime'];\n date: PostData['date'];\n theme?: 'light' | 'dark';\n analyticsEventsContainer?: Record<string, AnalyticsEventsProp>;\n};\n\n/**\n * Blog post info panel component\n *\n * @param postId - post id\n * @param readingTime - post reading time\n * @param date - post create date\n * @param theme - theme name\n * @param qa - test-attr\n * @param analyticsEventsContainer - a map of records with a single or collection of objects detailing analytics events\n *\n * @returns jsx\n */\nexport const PostInfo = ({\n date,\n readingTime,\n postId,\n theme = 'light',\n qa,\n analyticsEventsContainer,\n}: PostInfoProps) => {\n const {post, likes} = React.useContext(PostPageContext);\n const {extraInfoItems} = React.useContext(SettingsContext);\n const qaAttributes = getQaAttributes(qa, 'date', 'reading-time', 'save');\n\n return (\n <div className={b('container', {theme})}>\n {date && <Date date={date} qa={qaAttributes.date} />}\n {readingTime && <ReadingTime readingTime={readingTime} qa={qaAttributes.readingTime} />}\n <Sharing theme={theme} analyticsEvents={analyticsEventsContainer?.sharing} />\n {likes && (\n <Save\n postId={postId}\n title={likes.likesCount}\n hasUserLike={likes.hasUserLike}\n handleUserLike={likes.handleUserLike}\n analyticsEvents={analyticsEventsContainer?.save}\n theme={theme}\n qa={qaAttributes.save}\n />\n )}\n {extraInfoItems?.map((Component, index) => (\n <div key={index} className={b('item', {extra: true})}>\n <Component post={post} />\n </div>\n ))}\n </div>\n );\n};\n"]}
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { DefaultGoalIds } from "../../constants.js";
2
3
  import { useLikes } from "../../hooks/useLikes.js";
3
4
  import { PostCardSize } from "../../models/common.js";
4
5
  import { block } from "../../utils/cn.js";
6
+ import { prepareAnalyticsEvent } from "../../utils/common.js";
5
7
  import { Date } from "./components/Date.js";
6
8
  import { ReadingTime } from "./components/ReadingTime.js";
7
9
  import { Save } from "./components/Save.js";
8
- import { prepareAnalyticsEvent } from "../../utils/common.js";
9
- import { DefaultGoalIds } from "../../constants.js";
10
10
  import './PostInfo.css';
11
11
  const b = block('post-info');
12
12
  const saveEvents = prepareAnalyticsEvent({ name: DefaultGoalIds.saveSuggest });
@@ -1 +1 @@
1
- {"version":3,"file":"SuggestPostInfo.js","sourceRoot":"../../../../src","sources":["components/PostInfo/SuggestPostInfo.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,QAAQ,EAAC,gCAA6B;AAC9C,OAAO,EAAC,YAAY,EAA4C,+BAA4B;AAC5F,OAAO,EAAC,KAAK,EAAC,0BAAuB;AAErC,OAAO,EAAC,IAAI,EAAC,6BAA0B;AACvC,OAAO,EAAC,WAAW,EAAC,oCAAiC;AACrD,OAAO,EAAC,IAAI,EAAC,6BAA0B;AACvC,OAAO,EAAC,qBAAqB,EAAC,8BAA2B;AACzD,OAAO,EAAC,cAAc,EAAC,2BAAwB;AAE/C,OAAO,gBAAgB,CAAC;AAExB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAE7B,MAAM,UAAU,GAAG,qBAAqB,CAAC,EAAC,IAAI,EAAE,cAAc,CAAC,WAAW,EAAC,CAAC,CAAC;AAgB7E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC5B,MAAM,EACN,IAAI,EACJ,WAAW,EACX,KAAK,EACL,IAAI,GAAG,YAAY,CAAC,KAAK,EACzB,EAAE,EACF,MAAM,EACN,aAAa,GACM,EAAE,EAAE;IACvB,MAAM,EAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAC,GAAG,QAAQ,CAAC;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,eAAK,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,aAC1B,eAAK,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC,aACjC,IAAI,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAI,EACpD,WAAW,IAAI,CACZ,KAAC,WAAW,IAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,GAAI,CAC3E,IACC,EACL,KAAK,IAAI,MAAM,IAAI,CAChB,KAAC,IAAI,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","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,OAAO,EAAC,cAAc,EAAC,2BAAwB;AAC/C,OAAO,EAAC,QAAQ,EAAC,gCAA6B;AAC9C,OAAO,EAAC,YAAY,EAA4C,+BAA4B;AAC5F,OAAO,EAAC,KAAK,EAAC,0BAAuB;AACrC,OAAO,EAAC,qBAAqB,EAAC,8BAA2B;AAEzD,OAAO,EAAC,IAAI,EAAC,6BAA0B;AACvC,OAAO,EAAC,WAAW,EAAC,oCAAiC;AACrD,OAAO,EAAC,IAAI,EAAC,6BAA0B;AAEvC,OAAO,gBAAgB,CAAC;AAExB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAE7B,MAAM,UAAU,GAAG,qBAAqB,CAAC,EAAC,IAAI,EAAE,cAAc,CAAC,WAAW,EAAC,CAAC,CAAC;AAgB7E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC5B,MAAM,EACN,IAAI,EACJ,WAAW,EACX,KAAK,EACL,IAAI,GAAG,YAAY,CAAC,KAAK,EACzB,EAAE,EACF,MAAM,EACN,aAAa,GACM,EAAE,EAAE;IACvB,MAAM,EAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAC,GAAG,QAAQ,CAAC;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,eAAK,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,aAC1B,eAAK,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC,aACjC,IAAI,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAI,EACpD,WAAW,IAAI,CACZ,KAAC,WAAW,IAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,GAAI,CAC3E,IACC,EACL,KAAK,IAAI,MAAM,IAAI,CAChB,KAAC,IAAI,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","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"]}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Icon } from '@gravity-ui/uikit';
3
2
  import { Clock } from '@gravity-ui/icons';
3
+ import { Icon } from '@gravity-ui/uikit';
4
4
  import { Keyset, i18n } from "../../../i18n/index.js";
5
5
  import { block } from "../../../utils/cn.js";
6
6
  import '../PostInfo.css';
@@ -1 +1 @@
1
- {"version":3,"file":"ReadingTime.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/ReadingTime.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,+BAAsB;AAC3C,OAAO,EAAC,KAAK,EAAC,6BAA0B;AAGxC,OAAO,iBAAiB,CAAC;AAEzB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAE7B,MAAM,SAAS,GAAG,EAAE,CAAC;AAQrB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAC,WAAW,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAmB,EAAE,EAAE,CAAC,CAChF,eAAK,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,IAAI,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,aAAW,EAAE,aAClD,eAAM,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACtB,KAAC,IAAI,IAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,GAAI,GAC/D,EACN,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAC,KAAK,EAAE,WAAW,EAAC,CAAC,IACpD,CACT,CAAC","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,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,+BAAsB;AAE3C,OAAO,EAAC,KAAK,EAAC,6BAA0B;AAExC,OAAO,iBAAiB,CAAC;AAEzB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAE7B,MAAM,SAAS,GAAG,EAAE,CAAC;AAQrB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAC,WAAW,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAmB,EAAE,EAAE,CAAC,CAChF,eAAK,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,IAAI,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,aAAW,EAAE,aAClD,eAAM,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACtB,KAAC,IAAI,IAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,GAAI,GAC/D,EACN,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAC,KAAK,EAAE,WAAW,EAAC,CAAC,IACpD,CACT,CAAC","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"]}
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
+ import { Bookmark, BookmarkFill } from '@gravity-ui/icons';
3
4
  import { useAnalytics } from '@gravity-ui/page-constructor';
4
5
  import { Icon, useUniqId } from '@gravity-ui/uikit';
5
- import { Bookmark, BookmarkFill } from '@gravity-ui/icons';
6
6
  import { LikesContext } from "../../../contexts/LikesContext.js";
7
+ import { Keyset, i18n } from "../../../i18n/index.js";
7
8
  import { DefaultEventNames } from "../../../models/common.js";
8
9
  import { block } from "../../../utils/cn.js";
9
10
  import { postLikeStatus } from "../../../utils/common.js";
10
- import { Keyset, i18n } from "../../../i18n/index.js";
11
11
  import '../PostInfo.css';
12
12
  const ICON_SIZE = 16;
13
13
  const b = block('post-info');
@@ -1 +1 @@
1
- {"version":3,"file":"Save.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/Save.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAsB,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAC,IAAI,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAC,YAAY,EAAC,0CAAuC;AAC5D,OAAO,EAAC,iBAAiB,EAAU,kCAA+B;AAClE,OAAO,EAAC,KAAK,EAAC,6BAA0B;AACxC,OAAO,EAAC,cAAc,EAAC,iCAA8B;AACrD,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,+BAAsB;AAE3C,OAAO,iBAAiB,CAAC;AAEzB,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAY7B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,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,YAAY,CAAC,CAAC;IACnF,MAAM,eAAe,GAAG,YAAY,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAG,SAAS,EAAE,CAAC;IACnC,MAAM,cAAc,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;IAEjD,OAAO,CACH,iBACI,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,cAAc,CAAC,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,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,sBACxC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,YAE7D,eAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAC,CAAC,aACrD,eAAM,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACtB,KAAC,IAAI,IACD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAC3C,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAC,CAAC,GAC9C,GACC,EACP,eAAM,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","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,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAsB,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAC,IAAI,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAC,YAAY,EAAC,0CAAuC;AAC5D,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,+BAAsB;AAC3C,OAAO,EAAC,iBAAiB,EAAU,kCAA+B;AAClE,OAAO,EAAC,KAAK,EAAC,6BAA0B;AACxC,OAAO,EAAC,cAAc,EAAC,iCAA8B;AAErD,OAAO,iBAAiB,CAAC;AAEzB,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAY7B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,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,YAAY,CAAC,CAAC;IACnF,MAAM,eAAe,GAAG,YAAY,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAG,SAAS,EAAE,CAAC;IACnC,MAAM,cAAc,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;IAEjD,OAAO,CACH,iBACI,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,cAAc,CAAC,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,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,sBACxC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,YAE7D,eAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAC,CAAC,aACrD,eAAM,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACtB,KAAC,IAAI,IACD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAC3C,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAC,CAAC,GAC9C,GACC,EACP,eAAM,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","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"]}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
3
  import { ShareLayoutDirection, SharePopover } from '@gravity-ui/components';
4
- import { useAnalytics } from '@gravity-ui/page-constructor';
5
4
  import { ArrowUpFromSquare } from '@gravity-ui/icons';
5
+ import { useAnalytics } from '@gravity-ui/page-constructor';
6
6
  import { MobileContext } from "../../../contexts/MobileContext.js";
7
7
  import { PostPageContext } from "../../../contexts/PostPageContext.js";
8
8
  import { RouterContext } from "../../../contexts/RouterContext.js";
@@ -1 +1 @@
1
- {"version":3,"file":"Sharing.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/Sharing.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,oBAAoB,EAAE,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAsB,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAC,aAAa,EAAC,2CAAwC;AAC9D,OAAO,EAAC,eAAe,EAAC,6CAA0C;AAClE,OAAO,EAAC,aAAa,EAAC,2CAAwC;AAC9D,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,+BAAsB;AAC3C,OAAO,EAAC,iBAAiB,EAAC,kCAA+B;AACzD,OAAO,EAAC,KAAK,EAAC,6BAA0B;AACxC,OAAO,EAAC,eAAe,EAAC,iCAA8B;AAEtD,OAAO,iBAAiB,CAAC;AAEzB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAO7B,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAC,KAAK,EAAE,eAAe,EAAe,EAAE,EAAE;IAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjD,MAAM,EAAC,YAAY,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACzD,MAAM,qBAAqB,GAAG,YAAY,CAAC,iBAAiB,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,cAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,cAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,KAAC,YAAY,IACT,GAAG,EAAE,eAAe,CAAC,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,oBAAoB,CAAC,MAAM,EACtC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EACrC,UAAU,EAAE,iBAAiB,EAC7B,SAAS,EAAC,QAAQ,EAClB,WAAW,EAAE,KAAK,EAClB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,eAAe,GAC1B,GACA,GACJ,CACT,CAAC;AACN,CAAC,CAAC","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,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,oBAAoB,EAAE,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAsB,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAE/E,OAAO,EAAC,aAAa,EAAC,2CAAwC;AAC9D,OAAO,EAAC,eAAe,EAAC,6CAA0C;AAClE,OAAO,EAAC,aAAa,EAAC,2CAAwC;AAC9D,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,+BAAsB;AAC3C,OAAO,EAAC,iBAAiB,EAAC,kCAA+B;AACzD,OAAO,EAAC,KAAK,EAAC,6BAA0B;AACxC,OAAO,EAAC,eAAe,EAAC,iCAA8B;AAEtD,OAAO,iBAAiB,CAAC;AAEzB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAO7B,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAC,KAAK,EAAE,eAAe,EAAe,EAAE,EAAE;IAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjD,MAAM,EAAC,YAAY,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACzD,MAAM,qBAAqB,GAAG,YAAY,CAAC,iBAAiB,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,cAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,cAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,KAAC,YAAY,IACT,GAAG,EAAE,eAAe,CAAC,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,oBAAoB,CAAC,MAAM,EACtC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EACrC,UAAU,EAAE,iBAAiB,EAC7B,SAAS,EAAC,QAAQ,EAClB,WAAW,EAAE,KAAK,EAClB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,eAAe,GAC1B,GACA,GACJ,CACT,CAAC;AACN,CAAC,CAAC","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"]}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
- import { Icon, TextInput } from '@gravity-ui/uikit';
4
3
  import { Magnifier, Xmark } from '@gravity-ui/icons';
4
+ import { Icon, TextInput } from '@gravity-ui/uikit';
5
5
  import lodashDebounce from "lodash/debounce.js";
6
6
  import { useIsIPhone } from "../../hooks/useIsIPhone.js";
7
7
  import { Keyset, i18n } from "../../i18n/index.js";