@redneckz/wildless-cms-uni-blocks 0.14.973 → 0.14.974

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 (47) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +25 -11
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/GalleryLayout/utils.d.ts +2 -2
  5. package/bundle/components/ProductBlock/ProductBlock.d.ts +4 -0
  6. package/bundle/components/ProductBlock/ProductBlockContent.d.ts +2 -2
  7. package/bundle/model/HeadlineType.d.ts +14 -1
  8. package/dist/components/GalleryLayout/utils.d.ts +2 -2
  9. package/dist/components/ProductBlock/ProductBlock.d.ts +4 -0
  10. package/dist/components/ProductBlock/ProductBlock.js +16 -1
  11. package/dist/components/ProductBlock/ProductBlock.js.map +1 -1
  12. package/dist/components/ProductBlock/ProductBlockContent.d.ts +2 -2
  13. package/dist/model/HeadlineType.d.ts +14 -1
  14. package/lib/components/GalleryLayout/utils.d.ts +2 -2
  15. package/lib/components/ProductBlock/ProductBlock.d.ts +4 -0
  16. package/lib/components/ProductBlock/ProductBlock.fixture.d.ts +1 -0
  17. package/lib/components/ProductBlock/ProductBlock.js +16 -1
  18. package/lib/components/ProductBlock/ProductBlock.js.map +1 -1
  19. package/lib/components/ProductBlock/ProductBlockContent.d.ts +2 -2
  20. package/lib/model/HeadlineType.d.ts +14 -1
  21. package/mobile/bundle/bundle.umd.js +25 -11
  22. package/mobile/bundle/bundle.umd.min.js +1 -1
  23. package/mobile/bundle/components/GalleryLayout/utils.d.ts +2 -2
  24. package/mobile/bundle/components/ProductBlock/ProductBlock.d.ts +4 -0
  25. package/mobile/bundle/components/ProductBlock/ProductBlockContent.d.ts +2 -2
  26. package/mobile/bundle/model/HeadlineType.d.ts +14 -1
  27. package/mobile/dist/components/GalleryLayout/utils.d.ts +2 -2
  28. package/mobile/dist/components/ProductBlock/ProductBlock.d.ts +4 -0
  29. package/mobile/dist/components/ProductBlock/ProductBlock.js +16 -1
  30. package/mobile/dist/components/ProductBlock/ProductBlock.js.map +1 -1
  31. package/mobile/dist/components/ProductBlock/ProductBlockContent.d.ts +2 -2
  32. package/mobile/dist/model/HeadlineType.d.ts +14 -1
  33. package/mobile/lib/components/GalleryLayout/utils.d.ts +2 -2
  34. package/mobile/lib/components/ProductBlock/ProductBlock.d.ts +4 -0
  35. package/mobile/lib/components/ProductBlock/ProductBlock.js +16 -1
  36. package/mobile/lib/components/ProductBlock/ProductBlock.js.map +1 -1
  37. package/mobile/lib/components/ProductBlock/ProductBlockContent.d.ts +2 -2
  38. package/mobile/lib/model/HeadlineType.d.ts +14 -1
  39. package/mobile/src/components/ProductBlock/ProductBlock.tsx +57 -14
  40. package/mobile/src/components/ProductBlock/ProductBlockContent.ts +6 -2
  41. package/mobile/src/model/HeadlineType.ts +20 -1
  42. package/package.json +1 -1
  43. package/src/components/ProductBlock/ProductBlock.fixture.tsx +22 -0
  44. package/src/components/ProductBlock/ProductBlock.tsx +57 -14
  45. package/src/components/ProductBlock/ProductBlockContent.ts +6 -2
  46. package/src/icons/IconName.ts +4 -4
  47. package/src/model/HeadlineType.ts +20 -1
@@ -2,7 +2,7 @@ import { type BlockDef } from '../../model/ContentPageDef';
2
2
  import { type LinkProps } from '../../model/LinkProps';
3
3
  export declare const getChildStyle: (index: number) => "lg:col-span-1 lg:row-span-1" | "lg:col-span-2 lg:row-span-2";
4
4
  export declare const modifyBlock: (block: BlockDef, i: number) => {
5
- content: import("../../UniBlock/UniBlockProps").UniBlockContent & import("../../model/HeadlineType").TitleProps & import("../../model/HeadlineType").DescriptionProps & import("../../model/HeadlineType").AlignProps & {
5
+ content: import("../../UniBlock/UniBlockProps").UniBlockContent & import("../../model/HeadlineType").TitleProps & import("../../model/HeadlineType").DescriptionProps & import("../../model/HeadlineType").AlignProps & import("../../model/HeadlineType").AdditionalDescriptionProps & import("../../model/HeadlineType").DynamicDescriptionProps & {
6
6
  headlineVersion?: import("../../model/HeadlineType").HeadlineVersion | undefined;
7
7
  } & import("../../ui-kit/BenefitsList/BenefitsListContent").BenefitsListContent & import("../../model/Bullets").BulletsProps & {
8
8
  __html?: string | undefined;
@@ -11,7 +11,7 @@ export declare const modifyBlock: (block: BlockDef, i: number) => {
11
11
  } & import("../../ui-kit/Tags/TagsContent").TagsContent & import("../../ui-kit/LinkButton/ButtonsSectionContent").ButtonsSectionContent & import("../../ui-kit/Img/ImgProps").ImageContent & import("../../ui-kit/BaseProductTile/BaseProductTileContent").PriceListProps & {
12
12
  imageOptions?: import("../../ui-kit/BaseProductTile/BaseProductTileContent").TileImageOptions | undefined;
13
13
  isFullWidthTitle?: boolean | undefined;
14
- } & import("../../model/HeadlineType").AdditionalDescriptionProps & {
14
+ } & {
15
15
  backwardButton?: boolean | undefined;
16
16
  } & {
17
17
  link?: LinkProps | undefined;
@@ -1,5 +1,9 @@
1
+ import type { JSONRefObject } from '../../data/JSONRefObject';
1
2
  import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
2
3
  import { type ProductBlockContent } from './ProductBlockContent';
3
4
  export interface ProductBlockProps extends UniBlockProps, ProductBlockContent {
5
+ dynamicDescriptionSource?: JSONRefObject & {
6
+ list?: Record<string, string>[];
7
+ };
4
8
  }
5
9
  export declare const ProductBlock: import("../../UniBlock/UniBlock").UniBlockComponent<ProductBlockProps>;
@@ -1,10 +1,10 @@
1
- import { type AdditionalDescriptionProps } from '../../model/HeadlineType';
1
+ import { type AdditionalDescriptionProps, type DynamicDescriptionProps } from '../../model/HeadlineType';
2
2
  import { type BaseProductTileContent } from '../../ui-kit/BaseProductTile/BaseProductTileContent';
3
3
  import { type UniBlockContent } from '../../UniBlock/UniBlockProps';
4
4
  /**
5
5
  * @title Продуктовый блок
6
6
  */
7
- export declare type ProductBlockContent = UniBlockContent & BaseProductTileContent & AdditionalDescriptionProps & {
7
+ export declare type ProductBlockContent = UniBlockContent & BaseProductTileContent & AdditionalDescriptionProps & DynamicDescriptionProps & {
8
8
  /** @title Отображать кнопку возврата */
9
9
  backwardButton?: boolean;
10
10
  };
@@ -1,3 +1,4 @@
1
+ import { type JSONRefObject } from '../data/JSONRefObject';
1
2
  import { type TextAlign } from '../ui-kit/Text/TextProps';
2
3
  /**
3
4
  * TODO: Hellfire refactoring is needed here
@@ -35,7 +36,19 @@ export declare type AdditionalDescriptionProps = {
35
36
  /** @title Дополнительное описание */
36
37
  additionalDescription?: string;
37
38
  };
38
- export declare type HeadlineCommonProps = TitleProps & DescriptionProps & AlignProps;
39
+ export declare type DynamicDescriptionProps = {
40
+ /** @title Динамическое описание по значению utm-метки */
41
+ dynamicUtmDescription?: DynamicDescription;
42
+ /** @title Справочник значений */
43
+ dynamicDescriptionSource?: JSONRefObject;
44
+ };
45
+ export declare type HeadlineCommonProps = TitleProps & DescriptionProps & AlignProps & AdditionalDescriptionProps & DynamicDescriptionProps;
39
46
  export declare type HeadlineProps = HeadlineCommonProps & {
40
47
  headlineVersion?: HeadlineVersion;
41
48
  };
49
+ export declare type DynamicDescription = {
50
+ /** @title utm-метка */
51
+ utm?: string;
52
+ /** @title Заменяемый текст */
53
+ value?: string;
54
+ };
@@ -2,7 +2,7 @@ import { type BlockDef } from '../../model/ContentPageDef';
2
2
  import { type LinkProps } from '../../model/LinkProps';
3
3
  export declare const getChildStyle: (index: number) => "lg:col-span-1 lg:row-span-1" | "lg:col-span-2 lg:row-span-2";
4
4
  export declare const modifyBlock: (block: BlockDef, i: number) => {
5
- content: import("../../UniBlock/UniBlockProps").UniBlockContent & import("../../model/HeadlineType").TitleProps & import("../../model/HeadlineType").DescriptionProps & import("../../model/HeadlineType").AlignProps & {
5
+ content: import("../../UniBlock/UniBlockProps").UniBlockContent & import("../../model/HeadlineType").TitleProps & import("../../model/HeadlineType").DescriptionProps & import("../../model/HeadlineType").AlignProps & import("../../model/HeadlineType").AdditionalDescriptionProps & import("../../model/HeadlineType").DynamicDescriptionProps & {
6
6
  headlineVersion?: import("../../model/HeadlineType").HeadlineVersion | undefined;
7
7
  } & import("../../ui-kit/BenefitsList/BenefitsListContent").BenefitsListContent & import("../../model/Bullets").BulletsProps & {
8
8
  __html?: string | undefined;
@@ -11,7 +11,7 @@ export declare const modifyBlock: (block: BlockDef, i: number) => {
11
11
  } & import("../../ui-kit/Tags/TagsContent").TagsContent & import("../../ui-kit/LinkButton/ButtonsSectionContent").ButtonsSectionContent & import("../../ui-kit/Img/ImgProps").ImageContent & import("../../ui-kit/BaseProductTile/BaseProductTileContent").PriceListProps & {
12
12
  imageOptions?: import("../../ui-kit/BaseProductTile/BaseProductTileContent").TileImageOptions | undefined;
13
13
  isFullWidthTitle?: boolean | undefined;
14
- } & import("../../model/HeadlineType").AdditionalDescriptionProps & {
14
+ } & {
15
15
  backwardButton?: boolean | undefined;
16
16
  } & {
17
17
  link?: LinkProps | undefined;
@@ -1,5 +1,9 @@
1
+ import type { JSONRefObject } from '../../data/JSONRefObject';
1
2
  import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
2
3
  import { type ProductBlockContent } from './ProductBlockContent';
3
4
  export interface ProductBlockProps extends UniBlockProps, ProductBlockContent {
5
+ dynamicDescriptionSource?: JSONRefObject & {
6
+ list?: Record<string, string>[];
7
+ };
4
8
  }
5
9
  export declare const ProductBlock: import("../../UniBlock/UniBlock").UniBlockComponent<ProductBlockProps>;
@@ -4,6 +4,21 @@ const jsx_runtime_1 = require("@redneckz/uni-jsx/jsx-runtime");
4
4
  const BaseProductTile_1 = require("../../ui-kit/BaseProductTile/BaseProductTile");
5
5
  const BlockWrapper_1 = require("../../ui-kit/BlockWrapper");
6
6
  const UniBlock_1 = require("../../UniBlock/UniBlock");
7
+ const getSessionQuery_1 = require("../../utils/getSessionQuery");
7
8
  const style_1 = require("../../utils/style");
8
- exports.ProductBlock = (0, UniBlock_1.UniBlock)(({ className, padding, defaultPadding, ...rest }) => ((0, jsx_runtime_1.jsx)(BlockWrapper_1.BlockWrapper, { className: (0, style_1.style)('overflow-hidden flex flex-col gap-3xl box-border', className), padding: "p-0", ...rest, children: (0, jsx_runtime_1.jsx)(BaseProductTile_1.BaseProductTile, { defaultPadding: defaultPadding || 'p-6xl', padding: padding, className: "grow h-full", ...rest }) })));
9
+ exports.ProductBlock = (0, UniBlock_1.UniBlock)(({ className, padding, defaultPadding, dynamicUtmDescription, dynamicDescriptionSource, description, ...rest }) => {
10
+ const formatDescription = getFormatDescription(dynamicUtmDescription, dynamicDescriptionSource?.list, description);
11
+ return ((0, jsx_runtime_1.jsx)(BlockWrapper_1.BlockWrapper, { className: (0, style_1.style)('overflow-hidden flex flex-col gap-3xl box-border', className), padding: "p-0", ...rest, children: (0, jsx_runtime_1.jsx)(BaseProductTile_1.BaseProductTile, { defaultPadding: defaultPadding || 'p-6xl', padding: padding, description: formatDescription, className: "grow h-full", ...rest }) }));
12
+ });
13
+ const getFormatDescription = (dynamicUtmDescription = {}, valuesList = [], description = '') => {
14
+ const { utm, value } = dynamicUtmDescription;
15
+ const sessionQuery = (0, getSessionQuery_1.saveSessionQuery)();
16
+ const utmValue = getUtmValue(utm ?? 'utm_source', sessionQuery);
17
+ const dynamicValue = valuesList.find((item) => item?.id === utmValue)?.value;
18
+ return dynamicValue ? description.replace(String(value), dynamicValue) : description;
19
+ };
20
+ const getUtmValue = (utm, queryString) => {
21
+ const params = new URLSearchParams(queryString);
22
+ return params.get(utm);
23
+ };
9
24
  //# sourceMappingURL=ProductBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductBlock.js","sourceRoot":"","sources":["../../../src/components/ProductBlock/ProductBlock.tsx"],"names":[],"mappings":";;;AAAA,kFAA+E;AAC/E,4DAAyD;AACzD,sDAAmD;AAEnD,6CAA0C;AAK7B,QAAA,YAAY,GAAG,IAAA,mBAAQ,EAClC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CACnD,uBAAC,2BAAY,IACX,SAAS,EAAE,IAAA,aAAK,EAAC,kDAAkD,EAAE,SAAS,CAAC,EAC/E,OAAO,EAAC,KAAK,KACT,IAAI,YAER,uBAAC,iCAAe,IACd,cAAc,EAAE,cAAc,IAAI,OAAO,EACzC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,aAAa,KACnB,IAAI,GACR,GACW,CAChB,CACF,CAAC"}
1
+ {"version":3,"file":"ProductBlock.js","sourceRoot":"","sources":["../../../src/components/ProductBlock/ProductBlock.tsx"],"names":[],"mappings":";;;AAEA,kFAA+E;AAC/E,4DAAyD;AACzD,sDAAmD;AAEnD,iEAA+D;AAC/D,6CAA0C;AAS7B,QAAA,YAAY,GAAG,IAAA,mBAAQ,EAClC,CAAC,EACC,SAAS,EACT,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,GAAG,IAAI,EACR,EAAE,EAAE;IACH,MAAM,iBAAiB,GAAG,oBAAoB,CAC5C,qBAAqB,EACrB,wBAAwB,EAAE,IAAI,EAC9B,WAAW,CACZ,CAAC;IAEF,OAAO,CACL,uBAAC,2BAAY,IACX,SAAS,EAAE,IAAA,aAAK,EAAC,kDAAkD,EAAE,SAAS,CAAC,EAC/E,OAAO,EAAC,KAAK,KACT,IAAI,YAER,uBAAC,iCAAe,IACd,cAAc,EAAE,cAAc,IAAI,OAAO,EACzC,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,iBAAiB,EAC9B,SAAS,EAAC,aAAa,KACnB,IAAI,GACR,GACW,CAChB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC3B,wBAA4C,EAAE,EAC9C,aAAuC,EAAE,EACzC,WAAW,GAAG,EAAE,EAChB,EAAE;IACF,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,qBAAqB,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAA,kCAAgB,GAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,IAAI,YAAY,EAAE,YAAY,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,QAAQ,CAAC,EAAE,KAAK,CAAC;IAE7E,OAAO,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACvF,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,WAAmB,EAAE,EAAE;IACvD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC,CAAC"}
@@ -1,10 +1,10 @@
1
- import { type AdditionalDescriptionProps } from '../../model/HeadlineType';
1
+ import { type AdditionalDescriptionProps, type DynamicDescriptionProps } from '../../model/HeadlineType';
2
2
  import { type BaseProductTileContent } from '../../ui-kit/BaseProductTile/BaseProductTileContent';
3
3
  import { type UniBlockContent } from '../../UniBlock/UniBlockProps';
4
4
  /**
5
5
  * @title Продуктовый блок
6
6
  */
7
- export declare type ProductBlockContent = UniBlockContent & BaseProductTileContent & AdditionalDescriptionProps & {
7
+ export declare type ProductBlockContent = UniBlockContent & BaseProductTileContent & AdditionalDescriptionProps & DynamicDescriptionProps & {
8
8
  /** @title Отображать кнопку возврата */
9
9
  backwardButton?: boolean;
10
10
  };
@@ -1,3 +1,4 @@
1
+ import { type JSONRefObject } from '../data/JSONRefObject';
1
2
  import { type TextAlign } from '../ui-kit/Text/TextProps';
2
3
  /**
3
4
  * TODO: Hellfire refactoring is needed here
@@ -35,7 +36,19 @@ export declare type AdditionalDescriptionProps = {
35
36
  /** @title Дополнительное описание */
36
37
  additionalDescription?: string;
37
38
  };
38
- export declare type HeadlineCommonProps = TitleProps & DescriptionProps & AlignProps;
39
+ export declare type DynamicDescriptionProps = {
40
+ /** @title Динамическое описание по значению utm-метки */
41
+ dynamicUtmDescription?: DynamicDescription;
42
+ /** @title Справочник значений */
43
+ dynamicDescriptionSource?: JSONRefObject;
44
+ };
45
+ export declare type HeadlineCommonProps = TitleProps & DescriptionProps & AlignProps & AdditionalDescriptionProps & DynamicDescriptionProps;
39
46
  export declare type HeadlineProps = HeadlineCommonProps & {
40
47
  headlineVersion?: HeadlineVersion;
41
48
  };
49
+ export declare type DynamicDescription = {
50
+ /** @title utm-метка */
51
+ utm?: string;
52
+ /** @title Заменяемый текст */
53
+ value?: string;
54
+ };
@@ -2,7 +2,7 @@ import { type BlockDef } from '../../model/ContentPageDef';
2
2
  import { type LinkProps } from '../../model/LinkProps';
3
3
  export declare const getChildStyle: (index: number) => "lg:col-span-1 lg:row-span-1" | "lg:col-span-2 lg:row-span-2";
4
4
  export declare const modifyBlock: (block: BlockDef, i: number) => {
5
- content: import("../../UniBlock/UniBlockProps").UniBlockContent & import("../../model/HeadlineType").TitleProps & import("../../model/HeadlineType").DescriptionProps & import("../../model/HeadlineType").AlignProps & {
5
+ content: import("../../UniBlock/UniBlockProps").UniBlockContent & import("../../model/HeadlineType").TitleProps & import("../../model/HeadlineType").DescriptionProps & import("../../model/HeadlineType").AlignProps & import("../../model/HeadlineType").AdditionalDescriptionProps & import("../../model/HeadlineType").DynamicDescriptionProps & {
6
6
  headlineVersion?: import("../../model/HeadlineType").HeadlineVersion | undefined;
7
7
  } & import("../../ui-kit/BenefitsList/BenefitsListContent").BenefitsListContent & import("../../model/Bullets").BulletsProps & {
8
8
  __html?: string | undefined;
@@ -11,7 +11,7 @@ export declare const modifyBlock: (block: BlockDef, i: number) => {
11
11
  } & import("../../ui-kit/Tags/TagsContent").TagsContent & import("../../ui-kit/LinkButton/ButtonsSectionContent").ButtonsSectionContent & import("../../ui-kit/Img/ImgProps").ImageContent & import("../../ui-kit/BaseProductTile/BaseProductTileContent").PriceListProps & {
12
12
  imageOptions?: import("../../ui-kit/BaseProductTile/BaseProductTileContent").TileImageOptions | undefined;
13
13
  isFullWidthTitle?: boolean | undefined;
14
- } & import("../../model/HeadlineType").AdditionalDescriptionProps & {
14
+ } & {
15
15
  backwardButton?: boolean | undefined;
16
16
  } & {
17
17
  link?: LinkProps | undefined;
@@ -1,5 +1,9 @@
1
+ import type { JSONRefObject } from '../../data/JSONRefObject';
1
2
  import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
2
3
  import { type ProductBlockContent } from './ProductBlockContent';
3
4
  export interface ProductBlockProps extends UniBlockProps, ProductBlockContent {
5
+ dynamicDescriptionSource?: JSONRefObject & {
6
+ list?: Record<string, string>[];
7
+ };
4
8
  }
5
9
  export declare const ProductBlock: import("../../UniBlock/UniBlock").UniBlockComponent<ProductBlockProps>;
@@ -12,6 +12,7 @@ declare const _default: {
12
12
  'primary with insurance': any;
13
13
  'secondary with back button': any;
14
14
  'secondary with benefits': any;
15
+ 'secondary with benefits and utm': any;
15
16
  'secondary with list': any;
16
17
  'secondary without image': any;
17
18
  'secondary without back button': any;
@@ -2,6 +2,21 @@ import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { BaseProductTile } from '../../ui-kit/BaseProductTile/BaseProductTile.js';
3
3
  import { BlockWrapper } from '../../ui-kit/BlockWrapper.js';
4
4
  import { UniBlock } from '../../UniBlock/UniBlock.js';
5
+ import { saveSessionQuery } from '../../utils/getSessionQuery.js';
5
6
  import { style } from '../../utils/style.js';
6
- export const ProductBlock = UniBlock(({ className, padding, defaultPadding, ...rest }) => (_jsx(BlockWrapper, { className: style('overflow-hidden flex flex-col gap-3xl box-border', className), padding: "p-0", ...rest, children: _jsx(BaseProductTile, { defaultPadding: defaultPadding || 'p-6xl', padding: padding, className: "grow h-full", ...rest }) })));
7
+ export const ProductBlock = UniBlock(({ className, padding, defaultPadding, dynamicUtmDescription, dynamicDescriptionSource, description, ...rest }) => {
8
+ const formatDescription = getFormatDescription(dynamicUtmDescription, dynamicDescriptionSource?.list, description);
9
+ return (_jsx(BlockWrapper, { className: style('overflow-hidden flex flex-col gap-3xl box-border', className), padding: "p-0", ...rest, children: _jsx(BaseProductTile, { defaultPadding: defaultPadding || 'p-6xl', padding: padding, description: formatDescription, className: "grow h-full", ...rest }) }));
10
+ });
11
+ const getFormatDescription = (dynamicUtmDescription = {}, valuesList = [], description = '') => {
12
+ const { utm, value } = dynamicUtmDescription;
13
+ const sessionQuery = saveSessionQuery();
14
+ const utmValue = getUtmValue(utm ?? 'utm_source', sessionQuery);
15
+ const dynamicValue = valuesList.find((item) => item?.id === utmValue)?.value;
16
+ return dynamicValue ? description.replace(String(value), dynamicValue) : description;
17
+ };
18
+ const getUtmValue = (utm, queryString) => {
19
+ const params = new URLSearchParams(queryString);
20
+ return params.get(utm);
21
+ };
7
22
  //# sourceMappingURL=ProductBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductBlock.js","sourceRoot":"","sources":["../../../src/components/ProductBlock/ProductBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAK1C,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAClC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CACnD,KAAC,YAAY,IACX,SAAS,EAAE,KAAK,CAAC,kDAAkD,EAAE,SAAS,CAAC,EAC/E,OAAO,EAAC,KAAK,KACT,IAAI,YAER,KAAC,eAAe,IACd,cAAc,EAAE,cAAc,IAAI,OAAO,EACzC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,aAAa,KACnB,IAAI,GACR,GACW,CAChB,CACF,CAAC"}
1
+ {"version":3,"file":"ProductBlock.js","sourceRoot":"","sources":["../../../src/components/ProductBlock/ProductBlock.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAS1C,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAClC,CAAC,EACC,SAAS,EACT,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,GAAG,IAAI,EACR,EAAE,EAAE;IACH,MAAM,iBAAiB,GAAG,oBAAoB,CAC5C,qBAAqB,EACrB,wBAAwB,EAAE,IAAI,EAC9B,WAAW,CACZ,CAAC;IAEF,OAAO,CACL,KAAC,YAAY,IACX,SAAS,EAAE,KAAK,CAAC,kDAAkD,EAAE,SAAS,CAAC,EAC/E,OAAO,EAAC,KAAK,KACT,IAAI,YAER,KAAC,eAAe,IACd,cAAc,EAAE,cAAc,IAAI,OAAO,EACzC,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,iBAAiB,EAC9B,SAAS,EAAC,aAAa,KACnB,IAAI,GACR,GACW,CAChB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC3B,wBAA4C,EAAE,EAC9C,aAAuC,EAAE,EACzC,WAAW,GAAG,EAAE,EAChB,EAAE;IACF,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,qBAAqB,CAAC;IAC7C,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,IAAI,YAAY,EAAE,YAAY,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,QAAQ,CAAC,EAAE,KAAK,CAAC;IAE7E,OAAO,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACvF,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,WAAmB,EAAE,EAAE;IACvD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC,CAAC"}
@@ -1,10 +1,10 @@
1
- import { type AdditionalDescriptionProps } from '../../model/HeadlineType';
1
+ import { type AdditionalDescriptionProps, type DynamicDescriptionProps } from '../../model/HeadlineType';
2
2
  import { type BaseProductTileContent } from '../../ui-kit/BaseProductTile/BaseProductTileContent';
3
3
  import { type UniBlockContent } from '../../UniBlock/UniBlockProps';
4
4
  /**
5
5
  * @title Продуктовый блок
6
6
  */
7
- export declare type ProductBlockContent = UniBlockContent & BaseProductTileContent & AdditionalDescriptionProps & {
7
+ export declare type ProductBlockContent = UniBlockContent & BaseProductTileContent & AdditionalDescriptionProps & DynamicDescriptionProps & {
8
8
  /** @title Отображать кнопку возврата */
9
9
  backwardButton?: boolean;
10
10
  };
@@ -1,3 +1,4 @@
1
+ import { type JSONRefObject } from '../data/JSONRefObject';
1
2
  import { type TextAlign } from '../ui-kit/Text/TextProps';
2
3
  /**
3
4
  * TODO: Hellfire refactoring is needed here
@@ -35,7 +36,19 @@ export declare type AdditionalDescriptionProps = {
35
36
  /** @title Дополнительное описание */
36
37
  additionalDescription?: string;
37
38
  };
38
- export declare type HeadlineCommonProps = TitleProps & DescriptionProps & AlignProps;
39
+ export declare type DynamicDescriptionProps = {
40
+ /** @title Динамическое описание по значению utm-метки */
41
+ dynamicUtmDescription?: DynamicDescription;
42
+ /** @title Справочник значений */
43
+ dynamicDescriptionSource?: JSONRefObject;
44
+ };
45
+ export declare type HeadlineCommonProps = TitleProps & DescriptionProps & AlignProps & AdditionalDescriptionProps & DynamicDescriptionProps;
39
46
  export declare type HeadlineProps = HeadlineCommonProps & {
40
47
  headlineVersion?: HeadlineVersion;
41
48
  };
49
+ export declare type DynamicDescription = {
50
+ /** @title utm-метка */
51
+ utm?: string;
52
+ /** @title Заменяемый текст */
53
+ value?: string;
54
+ };
@@ -985,7 +985,30 @@
985
985
  return OutputComponent;
986
986
  }
987
987
 
988
- const ProductBlock = UniBlock(({ className, padding, defaultPadding, ...rest }) => (jsx(BlockWrapper, { className: style('overflow-hidden flex flex-col gap-3xl box-border', className), padding: "p-0", ...rest, children: jsx(BaseProductTile, { defaultPadding: defaultPadding || 'p-6xl', padding: padding, className: "grow h-full", ...rest }) })));
988
+ const QUERY_STORAGE_KEY = 'rshb-query-params';
989
+ function saveSessionQuery() {
990
+ const result = globalThis.location?.search || globalThis.sessionStorage?.getItem(QUERY_STORAGE_KEY) || '';
991
+ if (result) {
992
+ globalThis.sessionStorage?.setItem(QUERY_STORAGE_KEY, result);
993
+ }
994
+ return result;
995
+ }
996
+
997
+ const ProductBlock = UniBlock(({ className, padding, defaultPadding, dynamicUtmDescription, dynamicDescriptionSource, description, ...rest }) => {
998
+ const formatDescription = getFormatDescription(dynamicUtmDescription, dynamicDescriptionSource?.list, description);
999
+ return (jsx(BlockWrapper, { className: style('overflow-hidden flex flex-col gap-3xl box-border', className), padding: "p-0", ...rest, children: jsx(BaseProductTile, { defaultPadding: defaultPadding || 'p-6xl', padding: padding, description: formatDescription, className: "grow h-full", ...rest }) }));
1000
+ });
1001
+ const getFormatDescription = (dynamicUtmDescription = {}, valuesList = [], description = '') => {
1002
+ const { utm, value } = dynamicUtmDescription;
1003
+ const sessionQuery = saveSessionQuery();
1004
+ const utmValue = getUtmValue(utm ?? 'utm_source', sessionQuery);
1005
+ const dynamicValue = valuesList.find((item) => item?.id === utmValue)?.value;
1006
+ return dynamicValue ? description.replace(String(value), dynamicValue) : description;
1007
+ };
1008
+ const getUtmValue = (utm, queryString) => {
1009
+ const params = new URLSearchParams(queryString);
1010
+ return params.get(utm);
1011
+ };
989
1012
 
990
1013
  const AdTile = JSX((props) => {
991
1014
  const { items } = (props.options?.page?.adSourceBook ?? {});
@@ -1013,15 +1036,6 @@
1013
1036
  locationNavigator._impl = impl;
1014
1037
  };
1015
1038
 
1016
- const QUERY_STORAGE_KEY = 'rshb-query-params';
1017
- function saveSessionQuery() {
1018
- const result = globalThis.location?.search || globalThis.sessionStorage?.getItem(QUERY_STORAGE_KEY) || '';
1019
- if (result) {
1020
- globalThis.sessionStorage?.setItem(QUERY_STORAGE_KEY, result);
1021
- }
1022
- return result;
1023
- }
1024
-
1025
1039
  const adjustSessionQuery = (href) => {
1026
1040
  const sessionQuery = saveSessionQuery();
1027
1041
  if (!isURL(href) || !sessionQuery) {
@@ -12955,7 +12969,7 @@
12955
12969
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
12956
12970
  });
12957
12971
 
12958
- const packageVersion = "0.14.972";
12972
+ const packageVersion = "0.14.973";
12959
12973
 
12960
12974
  exports.Blocks = Blocks;
12961
12975
  exports.ContentPage = ContentPage;