@gravity-ui/page-constructor 6.0.0-beta.5 → 6.0.0-beta.7

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 (205) hide show
  1. package/build/cjs/blocks/CardLayout/CardLayout.js +1 -1
  2. package/build/cjs/blocks/CardLayout/CardLayout.js.map +1 -1
  3. package/build/cjs/blocks/Form/schema.js +1 -1
  4. package/build/cjs/blocks/Form/schema.js.map +1 -1
  5. package/build/cjs/blocks/Header/Header.css +6 -0
  6. package/build/cjs/blocks/Header/Header.js +10 -4
  7. package/build/cjs/blocks/Header/Header.js.map +1 -1
  8. package/build/cjs/blocks/Header/schema.d.ts +6 -0
  9. package/build/cjs/blocks/Header/schema.js +3 -0
  10. package/build/cjs/blocks/Header/schema.js.map +1 -1
  11. package/build/cjs/blocks/HeaderSlider/schema.d.ts +3 -0
  12. package/build/cjs/blocks/HeaderSlider/schema.js +1 -1
  13. package/build/cjs/blocks/HeaderSlider/schema.js.map +1 -1
  14. package/build/cjs/blocks/Info/schema.js +1 -1
  15. package/build/cjs/blocks/Info/schema.js.map +1 -1
  16. package/build/cjs/blocks/Media/schema.js +1 -1
  17. package/build/cjs/blocks/Media/schema.js.map +1 -1
  18. package/build/cjs/blocks/Questions/schema.js +1 -1
  19. package/build/cjs/blocks/Questions/schema.js.map +1 -1
  20. package/build/cjs/blocks/Slider/Slider.js +3 -3
  21. package/build/cjs/blocks/Slider/Slider.js.map +1 -1
  22. package/build/cjs/blocks/Slider/utils.js +1 -1
  23. package/build/cjs/blocks/Slider/utils.js.map +1 -1
  24. package/build/cjs/blocks/SliderNew/utils.js +2 -2
  25. package/build/cjs/blocks/SliderNew/utils.js.map +1 -1
  26. package/build/cjs/blocks/Tabs/schema.js +1 -1
  27. package/build/cjs/blocks/Tabs/schema.js.map +1 -1
  28. package/build/cjs/components/BalancedMasonry/BalancedMasonry.js +3 -3
  29. package/build/cjs/components/BalancedMasonry/BalancedMasonry.js.map +1 -1
  30. package/build/cjs/components/FullWidthBackground/FullWidthBackground.js +1 -1
  31. package/build/cjs/components/FullWidthBackground/FullWidthBackground.js.map +1 -1
  32. package/build/cjs/components/ImageBase/ImageBase.js +1 -1
  33. package/build/cjs/components/ImageBase/ImageBase.js.map +1 -1
  34. package/build/cjs/components/Map/GoogleMap.js +1 -1
  35. package/build/cjs/components/Map/GoogleMap.js.map +1 -1
  36. package/build/cjs/components/Map/YMap/YandexMap.js +1 -1
  37. package/build/cjs/components/Map/YMap/YandexMap.js.map +1 -1
  38. package/build/cjs/components/Media/Image/Image.js +1 -1
  39. package/build/cjs/components/Media/Image/Image.js.map +1 -1
  40. package/build/cjs/components/OutsideClick/OutsideClick.js +1 -1
  41. package/build/cjs/components/OutsideClick/OutsideClick.js.map +1 -1
  42. package/build/cjs/components/OverflowScroller/OverflowScroller.js +1 -1
  43. package/build/cjs/components/OverflowScroller/OverflowScroller.js.map +1 -1
  44. package/build/cjs/components/ReactPlayer/ReactPlayer.js +1 -1
  45. package/build/cjs/components/ReactPlayer/ReactPlayer.js.map +1 -1
  46. package/build/cjs/components/VideoBlock/VideoBlock.js +1 -1
  47. package/build/cjs/components/VideoBlock/VideoBlock.js.map +1 -1
  48. package/build/cjs/containers/PageConstructor/PageConstructor.css +1 -0
  49. package/build/cjs/containers/PageConstructor/components/ConstructorBlock/ConstructorBlock.js +1 -1
  50. package/build/cjs/containers/PageConstructor/components/ConstructorBlock/ConstructorBlock.js.map +1 -1
  51. package/build/cjs/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +1 -1
  52. package/build/cjs/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js.map +1 -1
  53. package/build/cjs/editor/components/BlockForm/BlockForm.js +2 -2
  54. package/build/cjs/editor/components/BlockForm/BlockForm.js.map +1 -1
  55. package/build/cjs/editor/components/CodeEditor/CodeEditor.js +1 -1
  56. package/build/cjs/editor/components/CodeEditor/CodeEditor.js.map +1 -1
  57. package/build/cjs/editor/components/PageSettings/PageSettings.js +1 -1
  58. package/build/cjs/editor/components/PageSettings/PageSettings.js.map +1 -1
  59. package/build/cjs/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.js +1 -1
  60. package/build/cjs/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.js.map +1 -1
  61. package/build/cjs/editor/dynamic-forms-custom/config.js +1 -1
  62. package/build/cjs/editor/dynamic-forms-custom/config.js.map +1 -1
  63. package/build/cjs/editor/dynamic-forms-custom/hooks/useOneOf.js +2 -2
  64. package/build/cjs/editor/dynamic-forms-custom/hooks/useOneOf.js.map +1 -1
  65. package/build/cjs/editor/store/main/utils.js +1 -1
  66. package/build/cjs/editor/store/main/utils.js.map +1 -1
  67. package/build/cjs/editor/utils/index.js +1 -1
  68. package/build/cjs/editor/utils/index.js.map +1 -1
  69. package/build/cjs/editor/utils/validation.js +1 -1
  70. package/build/cjs/editor/utils/validation.js.map +1 -1
  71. package/build/cjs/hooks/useFocus.js +1 -1
  72. package/build/cjs/hooks/useFocus.js.map +1 -1
  73. package/build/cjs/hooks/useHeightCalculator.js +1 -1
  74. package/build/cjs/hooks/useHeightCalculator.js.map +1 -1
  75. package/build/cjs/hooks/useWindowBreakpoint.js +1 -1
  76. package/build/cjs/hooks/useWindowBreakpoint.js.map +1 -1
  77. package/build/cjs/models/constructor-items/blocks.d.ts +1 -0
  78. package/build/cjs/models/constructor-items/blocks.js.map +1 -1
  79. package/build/cjs/navigation/components/NavigationItem/NavigationItem.js +1 -1
  80. package/build/cjs/navigation/components/NavigationItem/NavigationItem.js.map +1 -1
  81. package/build/cjs/navigation/components/NavigationItem/hooks/useNavigationItemMap.js +1 -1
  82. package/build/cjs/navigation/components/NavigationItem/hooks/useNavigationItemMap.js.map +1 -1
  83. package/build/cjs/navigation/hooks/useShowBorder.js +1 -1
  84. package/build/cjs/navigation/hooks/useShowBorder.js.map +1 -1
  85. package/build/cjs/navigation/schema.js +1 -1
  86. package/build/cjs/navigation/schema.js.map +1 -1
  87. package/build/cjs/sub-blocks/BackgroundCard/schema.js +1 -1
  88. package/build/cjs/sub-blocks/BackgroundCard/schema.js.map +1 -1
  89. package/build/cjs/sub-blocks/BasicCard/schema.js +1 -1
  90. package/build/cjs/sub-blocks/BasicCard/schema.js.map +1 -1
  91. package/build/cjs/sub-blocks/ImageCard/schema.js +1 -1
  92. package/build/cjs/sub-blocks/ImageCard/schema.js.map +1 -1
  93. package/build/cjs/sub-blocks/LayoutItem/schema.js +1 -1
  94. package/build/cjs/sub-blocks/LayoutItem/schema.js.map +1 -1
  95. package/build/cjs/sub-blocks/PriceDetailed/CombinedPriceDetailed/CombinedPriceDetailed.js +1 -1
  96. package/build/cjs/sub-blocks/PriceDetailed/CombinedPriceDetailed/CombinedPriceDetailed.js.map +1 -1
  97. package/build/cjs/text-transform/transformers.js +2 -2
  98. package/build/cjs/text-transform/transformers.js.map +1 -1
  99. package/build/cjs/utils/blocks.js +2 -2
  100. package/build/cjs/utils/blocks.js.map +1 -1
  101. package/build/esm/blocks/CardLayout/CardLayout.js +1 -1
  102. package/build/esm/blocks/CardLayout/CardLayout.js.map +1 -1
  103. package/build/esm/blocks/Form/schema.js +1 -1
  104. package/build/esm/blocks/Form/schema.js.map +1 -1
  105. package/build/esm/blocks/Header/Header.css +6 -0
  106. package/build/esm/blocks/Header/Header.js +10 -4
  107. package/build/esm/blocks/Header/Header.js.map +1 -1
  108. package/build/esm/blocks/Header/schema.d.ts +6 -0
  109. package/build/esm/blocks/Header/schema.js +3 -0
  110. package/build/esm/blocks/Header/schema.js.map +1 -1
  111. package/build/esm/blocks/HeaderSlider/schema.d.ts +3 -0
  112. package/build/esm/blocks/HeaderSlider/schema.js +1 -1
  113. package/build/esm/blocks/HeaderSlider/schema.js.map +1 -1
  114. package/build/esm/blocks/Info/schema.js +1 -1
  115. package/build/esm/blocks/Info/schema.js.map +1 -1
  116. package/build/esm/blocks/Media/schema.js +1 -1
  117. package/build/esm/blocks/Media/schema.js.map +1 -1
  118. package/build/esm/blocks/Questions/schema.js +1 -1
  119. package/build/esm/blocks/Questions/schema.js.map +1 -1
  120. package/build/esm/blocks/Slider/Slider.js +3 -3
  121. package/build/esm/blocks/Slider/Slider.js.map +1 -1
  122. package/build/esm/blocks/Slider/utils.js +1 -1
  123. package/build/esm/blocks/Slider/utils.js.map +1 -1
  124. package/build/esm/blocks/SliderNew/utils.js +2 -2
  125. package/build/esm/blocks/SliderNew/utils.js.map +1 -1
  126. package/build/esm/blocks/Tabs/schema.js +1 -1
  127. package/build/esm/blocks/Tabs/schema.js.map +1 -1
  128. package/build/esm/components/BalancedMasonry/BalancedMasonry.js +3 -3
  129. package/build/esm/components/BalancedMasonry/BalancedMasonry.js.map +1 -1
  130. package/build/esm/components/FullWidthBackground/FullWidthBackground.js +1 -1
  131. package/build/esm/components/FullWidthBackground/FullWidthBackground.js.map +1 -1
  132. package/build/esm/components/ImageBase/ImageBase.js +1 -1
  133. package/build/esm/components/ImageBase/ImageBase.js.map +1 -1
  134. package/build/esm/components/Map/GoogleMap.js +1 -1
  135. package/build/esm/components/Map/GoogleMap.js.map +1 -1
  136. package/build/esm/components/Map/YMap/YandexMap.js +1 -1
  137. package/build/esm/components/Map/YMap/YandexMap.js.map +1 -1
  138. package/build/esm/components/Media/Image/Image.js +1 -1
  139. package/build/esm/components/Media/Image/Image.js.map +1 -1
  140. package/build/esm/components/OutsideClick/OutsideClick.js +1 -1
  141. package/build/esm/components/OutsideClick/OutsideClick.js.map +1 -1
  142. package/build/esm/components/OverflowScroller/OverflowScroller.js +1 -1
  143. package/build/esm/components/OverflowScroller/OverflowScroller.js.map +1 -1
  144. package/build/esm/components/ReactPlayer/ReactPlayer.js +1 -1
  145. package/build/esm/components/ReactPlayer/ReactPlayer.js.map +1 -1
  146. package/build/esm/components/VideoBlock/VideoBlock.js +1 -1
  147. package/build/esm/components/VideoBlock/VideoBlock.js.map +1 -1
  148. package/build/esm/containers/PageConstructor/PageConstructor.css +1 -0
  149. package/build/esm/containers/PageConstructor/components/ConstructorBlock/ConstructorBlock.js +1 -1
  150. package/build/esm/containers/PageConstructor/components/ConstructorBlock/ConstructorBlock.js.map +1 -1
  151. package/build/esm/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +1 -1
  152. package/build/esm/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js.map +1 -1
  153. package/build/esm/editor/components/BlockForm/BlockForm.js +2 -2
  154. package/build/esm/editor/components/BlockForm/BlockForm.js.map +1 -1
  155. package/build/esm/editor/components/CodeEditor/CodeEditor.js +1 -1
  156. package/build/esm/editor/components/CodeEditor/CodeEditor.js.map +1 -1
  157. package/build/esm/editor/components/PageSettings/PageSettings.js +1 -1
  158. package/build/esm/editor/components/PageSettings/PageSettings.js.map +1 -1
  159. package/build/esm/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.js +1 -1
  160. package/build/esm/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.js.map +1 -1
  161. package/build/esm/editor/dynamic-forms-custom/config.js +1 -1
  162. package/build/esm/editor/dynamic-forms-custom/config.js.map +1 -1
  163. package/build/esm/editor/dynamic-forms-custom/hooks/useOneOf.js +2 -2
  164. package/build/esm/editor/dynamic-forms-custom/hooks/useOneOf.js.map +1 -1
  165. package/build/esm/editor/store/main/utils.js +1 -1
  166. package/build/esm/editor/store/main/utils.js.map +1 -1
  167. package/build/esm/editor/utils/index.js +1 -1
  168. package/build/esm/editor/utils/index.js.map +1 -1
  169. package/build/esm/editor/utils/validation.js +1 -1
  170. package/build/esm/editor/utils/validation.js.map +1 -1
  171. package/build/esm/hooks/useFocus.js +1 -1
  172. package/build/esm/hooks/useFocus.js.map +1 -1
  173. package/build/esm/hooks/useHeightCalculator.js +1 -1
  174. package/build/esm/hooks/useHeightCalculator.js.map +1 -1
  175. package/build/esm/hooks/useWindowBreakpoint.js +1 -1
  176. package/build/esm/hooks/useWindowBreakpoint.js.map +1 -1
  177. package/build/esm/models/constructor-items/blocks.d.ts +1 -0
  178. package/build/esm/models/constructor-items/blocks.js.map +1 -1
  179. package/build/esm/navigation/components/NavigationItem/NavigationItem.js +1 -1
  180. package/build/esm/navigation/components/NavigationItem/NavigationItem.js.map +1 -1
  181. package/build/esm/navigation/components/NavigationItem/hooks/useNavigationItemMap.js +1 -1
  182. package/build/esm/navigation/components/NavigationItem/hooks/useNavigationItemMap.js.map +1 -1
  183. package/build/esm/navigation/hooks/useShowBorder.js +1 -1
  184. package/build/esm/navigation/hooks/useShowBorder.js.map +1 -1
  185. package/build/esm/navigation/schema.js +1 -1
  186. package/build/esm/navigation/schema.js.map +1 -1
  187. package/build/esm/sub-blocks/BackgroundCard/schema.js +1 -1
  188. package/build/esm/sub-blocks/BackgroundCard/schema.js.map +1 -1
  189. package/build/esm/sub-blocks/BasicCard/schema.js +1 -1
  190. package/build/esm/sub-blocks/BasicCard/schema.js.map +1 -1
  191. package/build/esm/sub-blocks/ImageCard/schema.js +1 -1
  192. package/build/esm/sub-blocks/ImageCard/schema.js.map +1 -1
  193. package/build/esm/sub-blocks/LayoutItem/schema.js +1 -1
  194. package/build/esm/sub-blocks/LayoutItem/schema.js.map +1 -1
  195. package/build/esm/sub-blocks/PriceDetailed/CombinedPriceDetailed/CombinedPriceDetailed.js +1 -1
  196. package/build/esm/sub-blocks/PriceDetailed/CombinedPriceDetailed/CombinedPriceDetailed.js.map +1 -1
  197. package/build/esm/text-transform/transformers.js +2 -2
  198. package/build/esm/text-transform/transformers.js.map +1 -1
  199. package/build/esm/utils/blocks.js +2 -2
  200. package/build/esm/utils/blocks.js.map +1 -1
  201. package/package.json +6 -6
  202. package/schema/index.js +1 -1
  203. package/server/models/constructor-items/blocks.d.ts +1 -0
  204. package/styles/root.scss +1 -0
  205. package/widget/2957.index.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"VideoBlock.js","sourceRoot":"../../../../src","sources":["components/VideoBlock/VideoBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {PlayFill} from '@gravity-ui/icons';\nimport {Icon, useActionHandlers, useUniqId} from '@gravity-ui/uikit';\nimport debounce from 'lodash/debounce';\nimport {v4 as uuidv4} from 'uuid';\n\nimport {useAnalytics} from '../../hooks/useAnalytics';\nimport {AnalyticsEventsBase, DefaultEventNames} from '../../models/common';\nimport {block, getPageSearchParams} from '../../utils';\nimport Image from '../Image/Image';\n\nimport {i18n} from './i18n';\n\nimport './VideoBlock.scss';\n\nconst RECORD_URL = 'https://www.youtube.com/embed/';\nconst STREAM_URL = 'https://www.youtube.com/embed/live_stream?channel=';\nconst RECORD_RE = /[0-9A-Za-z_-]{11}/;\nconst STREAM_RE = /[0-9A-Za-z_-]{23,25}/;\nconst AUTOPLAY_DELAY = 300;\n\nexport const AUTOPLAY_ATTRIBUTES = {\n autoplay: 1,\n mute: 1,\n};\nconst NO_AUTOPLAY_ATTRIBUTES = {\n autoplay: 0,\n};\n\nconst b = block('VideoBlock');\n\nfunction getYoutubeVideoSrc(stream?: string, record?: string) {\n if (!stream && !record) {\n return null;\n }\n\n const [videoLink, url, re] = stream\n ? [stream, STREAM_URL, STREAM_RE]\n : [record, RECORD_URL, RECORD_RE];\n const match = videoLink?.match(re);\n let src;\n\n if (match && match.length) {\n src = url + match[0];\n }\n\n return src;\n}\n\nexport function getHeight(width: number): number {\n return (width / 16) * 9;\n}\n\nexport interface VideoBlockProps extends AnalyticsEventsBase {\n id?: string;\n stream?: string;\n record?: string;\n videoIframe?: string;\n attributes?: Record<string, string>;\n className?: string;\n previewImg?: string;\n playButton?: React.ReactNode;\n playButtonId?: string;\n height?: number;\n fullscreen?: boolean;\n autoplay?: boolean;\n onImageLoad?: () => void;\n}\n\nconst VideoBlock = (props: VideoBlockProps) => {\n const {\n stream,\n record,\n videoIframe,\n attributes,\n className,\n id,\n previewImg,\n playButton,\n playButtonId,\n height,\n fullscreen,\n analyticsEvents,\n autoplay,\n onImageLoad,\n } = props;\n const handleAnalytics = useAnalytics(DefaultEventNames.VideoPreview);\n\n const src = videoIframe ? videoIframe : getYoutubeVideoSrc(stream, record);\n const ref = React.useRef<HTMLDivElement>(null);\n const [hidePreview, setHidePreview] = React.useState(false);\n const [currentHeight, setCurrentHeight] = React.useState(height || undefined);\n const fullId = React.useMemo(() => id || uuidv4(), [id]);\n const buttonId = useUniqId();\n\n const [isPlaying, setIsPlaying] = React.useState(!previewImg);\n\n const iframeSrc = React.useMemo(() => {\n if (src && isPlaying) {\n try {\n const url = new URL(src);\n const searchParams = getPageSearchParams({\n ...(attributes || {}),\n ...(previewImg || autoplay ? AUTOPLAY_ATTRIBUTES : NO_AUTOPLAY_ATTRIBUTES),\n });\n\n searchParams.forEach((value, key) => {\n url.searchParams.set(key, value);\n });\n\n return url.href;\n } catch (e) {\n return src;\n }\n }\n\n return undefined;\n }, [attributes, autoplay, isPlaying, previewImg, src]);\n\n const onPreviewClick = React.useCallback(() => {\n handleAnalytics(analyticsEvents);\n\n setIsPlaying(true);\n\n setTimeout(() => setHidePreview(true), AUTOPLAY_DELAY);\n }, [handleAnalytics, analyticsEvents]);\n\n const {onKeyDown: onPreviewKeyDown} = useActionHandlers(onPreviewClick);\n\n React.useEffect(() => {\n const updateSize = debounce(() => {\n setCurrentHeight(\n ref.current ? Math.round(getHeight(ref.current.offsetWidth)) : undefined,\n );\n }, 100);\n\n updateSize();\n window.addEventListener('resize', updateSize, {passive: true});\n return () => {\n window.removeEventListener('resize', updateSize);\n };\n }, [height]);\n\n const iframeContent = React.useMemo(() => {\n return (\n <iframe\n id={fullId}\n src={iframeSrc}\n width=\"100%\"\n height=\"100%\"\n title={i18n('iframe-title')}\n frameBorder=\"0\"\n allowFullScreen={true}\n allow=\"autoplay; fullscreen; encrypted-media; accelerometer; gyroscope; picture-in-picture; clipboard-write; web-share; screen-wake-lock\"\n loading=\"lazy\"\n />\n );\n }, [fullId, iframeSrc]);\n\n React.useEffect(() => {\n setHidePreview(false);\n }, [src]);\n\n if (!src) {\n return null;\n }\n\n return (\n <div className={b(null, className)} style={{height: currentHeight}} ref={ref}>\n {iframeContent}\n {previewImg && !hidePreview && !fullscreen && (\n <div\n className={b('preview')}\n onClick={onPreviewClick}\n onKeyDown={onPreviewKeyDown}\n role=\"button\"\n tabIndex={0}\n aria-labelledby={playButton ? playButtonId : buttonId}\n >\n <Image\n src={previewImg}\n className={b('image')}\n containerClassName={b('image-wrapper')}\n onLoad={onImageLoad}\n />\n {playButton || (\n <button title=\"Play\" id={buttonId} className={b('button')}>\n <Icon className={b('icon')} data={PlayFill} size={24} />\n </button>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default VideoBlock;\n"]}
1
+ {"version":3,"file":"VideoBlock.js","sourceRoot":"../../../../src","sources":["components/VideoBlock/VideoBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AACrE,OAAO,QAAQ,2BAAwB;AACvC,OAAO,EAAC,EAAE,IAAI,MAAM,EAAC,MAAM,MAAM,CAAC;AAElC,OAAO,EAAC,YAAY,EAAC,oCAAiC;AACtD,OAAO,EAAsB,iBAAiB,EAAC,+BAA4B;AAC3E,OAAO,EAAC,KAAK,EAAE,mBAAmB,EAAC,6BAAoB;AACvD,OAAO,KAAK,0BAAuB;AAEnC,OAAO,EAAC,IAAI,EAAC,wBAAe;AAE5B,OAAO,kBAAkB,CAAC;AAE1B,MAAM,UAAU,GAAG,gCAAgC,CAAC;AACpD,MAAM,UAAU,GAAG,oDAAoD,CAAC;AACxE,MAAM,SAAS,GAAG,mBAAmB,CAAC;AACtC,MAAM,SAAS,GAAG,sBAAsB,CAAC;AACzC,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;CACV,CAAC;AACF,MAAM,sBAAsB,GAAG;IAC3B,QAAQ,EAAE,CAAC;CACd,CAAC;AAEF,MAAM,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AAE9B,SAAS,kBAAkB,CAAC,MAAe,EAAE,MAAe;IACxD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,MAAM;QAC/B,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC;QACjC,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,GAAG,CAAC;IAER,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACnC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAkBD,MAAM,UAAU,GAAG,CAAC,KAAsB,EAAE,EAAE;IAC1C,MAAM,EACF,MAAM,EACN,MAAM,EACN,WAAW,EACX,UAAU,EACV,SAAS,EACT,EAAE,EACF,UAAU,EACV,UAAU,EACV,YAAY,EACZ,MAAM,EACN,UAAU,EACV,eAAe,EACf,QAAQ,EACR,WAAW,GACd,GAAG,KAAK,CAAC;IACV,MAAM,eAAe,GAAG,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAErE,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;IAE7B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzB,MAAM,YAAY,GAAG,mBAAmB,iCACjC,CAAC,UAAU,IAAI,EAAE,CAAC,GAClB,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAC5E,CAAC;gBAEH,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;oBAChC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;gBAEH,OAAO,GAAG,CAAC,IAAI,CAAC;YACpB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,GAAG,CAAC;YACf,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IAEvD,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC1C,eAAe,CAAC,eAAe,CAAC,CAAC;QAEjC,YAAY,CAAC,IAAI,CAAC,CAAC;QAEnB,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;IAC3D,CAAC,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;IAEvC,MAAM,EAAC,SAAS,EAAE,gBAAgB,EAAC,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAExE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,EAAE;YAC7B,gBAAgB,CACZ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAC3E,CAAC;QACN,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,UAAU,EAAE,CAAC;QACb,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QAC/D,OAAO,GAAG,EAAE;YACR,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACrD,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACrC,OAAO,CACH,iBACI,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,SAAS,EACd,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,EAC3B,WAAW,EAAC,GAAG,EACf,eAAe,EAAE,IAAI,EACrB,KAAK,EAAC,mIAAmI,EACzI,OAAO,EAAC,MAAM,GAChB,CACL,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAExB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,EAAC,MAAM,EAAE,aAAa,EAAC,EAAE,GAAG,EAAE,GAAG,aACvE,aAAa,EACb,UAAU,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,IAAI,CAC1C,eACI,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EACvB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,gBAAgB,EAC3B,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,qBACM,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,aAErD,KAAC,KAAK,IACF,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EACrB,kBAAkB,EAAE,CAAC,CAAC,eAAe,CAAC,EACtC,MAAM,EAAE,WAAW,GACrB,EACD,UAAU,IAAI,CACX,iBAAQ,KAAK,EAAC,MAAM,EAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YACrD,KAAC,IAAI,IAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAI,GACnD,CACZ,IACC,CACT,IACC,CACT,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {PlayFill} from '@gravity-ui/icons';\nimport {Icon, useActionHandlers, useUniqId} from '@gravity-ui/uikit';\nimport debounce from 'lodash/debounce';\nimport {v4 as uuidv4} from 'uuid';\n\nimport {useAnalytics} from '../../hooks/useAnalytics';\nimport {AnalyticsEventsBase, DefaultEventNames} from '../../models/common';\nimport {block, getPageSearchParams} from '../../utils';\nimport Image from '../Image/Image';\n\nimport {i18n} from './i18n';\n\nimport './VideoBlock.scss';\n\nconst RECORD_URL = 'https://www.youtube.com/embed/';\nconst STREAM_URL = 'https://www.youtube.com/embed/live_stream?channel=';\nconst RECORD_RE = /[0-9A-Za-z_-]{11}/;\nconst STREAM_RE = /[0-9A-Za-z_-]{23,25}/;\nconst AUTOPLAY_DELAY = 300;\n\nexport const AUTOPLAY_ATTRIBUTES = {\n autoplay: 1,\n mute: 1,\n};\nconst NO_AUTOPLAY_ATTRIBUTES = {\n autoplay: 0,\n};\n\nconst b = block('VideoBlock');\n\nfunction getYoutubeVideoSrc(stream?: string, record?: string) {\n if (!stream && !record) {\n return null;\n }\n\n const [videoLink, url, re] = stream\n ? [stream, STREAM_URL, STREAM_RE]\n : [record, RECORD_URL, RECORD_RE];\n const match = videoLink?.match(re);\n let src;\n\n if (match && match.length) {\n src = url + match[0];\n }\n\n return src;\n}\n\nexport function getHeight(width: number): number {\n return (width / 16) * 9;\n}\n\nexport interface VideoBlockProps extends AnalyticsEventsBase {\n id?: string;\n stream?: string;\n record?: string;\n videoIframe?: string;\n attributes?: Record<string, string>;\n className?: string;\n previewImg?: string;\n playButton?: React.ReactNode;\n playButtonId?: string;\n height?: number;\n fullscreen?: boolean;\n autoplay?: boolean;\n onImageLoad?: () => void;\n}\n\nconst VideoBlock = (props: VideoBlockProps) => {\n const {\n stream,\n record,\n videoIframe,\n attributes,\n className,\n id,\n previewImg,\n playButton,\n playButtonId,\n height,\n fullscreen,\n analyticsEvents,\n autoplay,\n onImageLoad,\n } = props;\n const handleAnalytics = useAnalytics(DefaultEventNames.VideoPreview);\n\n const src = videoIframe ? videoIframe : getYoutubeVideoSrc(stream, record);\n const ref = React.useRef<HTMLDivElement>(null);\n const [hidePreview, setHidePreview] = React.useState(false);\n const [currentHeight, setCurrentHeight] = React.useState(height || undefined);\n const fullId = React.useMemo(() => id || uuidv4(), [id]);\n const buttonId = useUniqId();\n\n const [isPlaying, setIsPlaying] = React.useState(!previewImg);\n\n const iframeSrc = React.useMemo(() => {\n if (src && isPlaying) {\n try {\n const url = new URL(src);\n const searchParams = getPageSearchParams({\n ...(attributes || {}),\n ...(previewImg || autoplay ? AUTOPLAY_ATTRIBUTES : NO_AUTOPLAY_ATTRIBUTES),\n });\n\n searchParams.forEach((value, key) => {\n url.searchParams.set(key, value);\n });\n\n return url.href;\n } catch (e) {\n return src;\n }\n }\n\n return undefined;\n }, [attributes, autoplay, isPlaying, previewImg, src]);\n\n const onPreviewClick = React.useCallback(() => {\n handleAnalytics(analyticsEvents);\n\n setIsPlaying(true);\n\n setTimeout(() => setHidePreview(true), AUTOPLAY_DELAY);\n }, [handleAnalytics, analyticsEvents]);\n\n const {onKeyDown: onPreviewKeyDown} = useActionHandlers(onPreviewClick);\n\n React.useEffect(() => {\n const updateSize = debounce(() => {\n setCurrentHeight(\n ref.current ? Math.round(getHeight(ref.current.offsetWidth)) : undefined,\n );\n }, 100);\n\n updateSize();\n window.addEventListener('resize', updateSize, {passive: true});\n return () => {\n window.removeEventListener('resize', updateSize);\n };\n }, [height]);\n\n const iframeContent = React.useMemo(() => {\n return (\n <iframe\n id={fullId}\n src={iframeSrc}\n width=\"100%\"\n height=\"100%\"\n title={i18n('iframe-title')}\n frameBorder=\"0\"\n allowFullScreen={true}\n allow=\"autoplay; fullscreen; encrypted-media; accelerometer; gyroscope; picture-in-picture; clipboard-write; web-share; screen-wake-lock\"\n loading=\"lazy\"\n />\n );\n }, [fullId, iframeSrc]);\n\n React.useEffect(() => {\n setHidePreview(false);\n }, [src]);\n\n if (!src) {\n return null;\n }\n\n return (\n <div className={b(null, className)} style={{height: currentHeight}} ref={ref}>\n {iframeContent}\n {previewImg && !hidePreview && !fullscreen && (\n <div\n className={b('preview')}\n onClick={onPreviewClick}\n onKeyDown={onPreviewKeyDown}\n role=\"button\"\n tabIndex={0}\n aria-labelledby={playButton ? playButtonId : buttonId}\n >\n <Image\n src={previewImg}\n className={b('image')}\n containerClassName={b('image-wrapper')}\n onLoad={onImageLoad}\n />\n {playButton || (\n <button title=\"Play\" id={buttonId} className={b('button')}>\n <Icon className={b('icon')} data={PlayFill} size={24} />\n </button>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default VideoBlock;\n"]}
@@ -1,4 +1,5 @@
1
1
  @charset "UTF-8";
2
+ @import url("https://fonts.googleapis.com/css2?family=Inter:wght@500&display=swap");
2
3
  @import '~@diplodoc/transform/dist/css/yfm.css';
3
4
  /* use this for style redefinitions to awoid problems with
4
5
  unpredictable css rules order in build */
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
- import pick from 'lodash/pick';
3
+ import pick from "lodash/pick.js";
4
4
  import BlockBase from "../../../../components/BlockBase/BlockBase.js";
5
5
  import { BlockDecoration } from "../../../../customization/BlockDecoration.js";
6
6
  import { block } from "../../../../utils/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"ConstructorBlock.js","sourceRoot":"../../../../../../src","sources":["containers/PageConstructor/components/ConstructorBlock/ConstructorBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,IAAI,MAAM,aAAa,CAAC;AAE/B,OAAO,SAAS,sDAAmD;AACnE,OAAO,EAAC,eAAe,EAAC,qDAAkD;AAE1E,OAAO,EAAC,KAAK,EAAC,mCAA0B;AAExC,OAAO,wBAAwB,CAAC;AAMhC,MAAM,CAAC,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAErC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC7B,KAAK,GAAG,CAAC,EACT,IAAI,EACJ,QAAQ,GACqC,EAAE,EAAE;IACjD,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC;IACpB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAChC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,EAClE,CAAC,IAAI,CAAC,CACT,CAAC;IAEF,OAAO,CACH,KAAC,eAAe,kBAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAAM,cAAc,cACzD,KAAC,SAAS,kBAAC,SAAS,EAAE,CAAC,CAAC,EAAC,IAAI,EAAC,CAAC,IAAM,cAAc,cAC9C,QAAQ,IACD,IACE,CACrB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport pick from 'lodash/pick';\n\nimport BlockBase from '../../../../components/BlockBase/BlockBase';\nimport {BlockDecoration} from '../../../../customization/BlockDecoration';\nimport {BlockDecorationProps, ConstructorBlock as ConstructorBlockType} from '../../../../models';\nimport {block} from '../../../../utils';\n\nimport './ConstructorBlock.scss';\n\ninterface ConstructorBlockProps extends Pick<BlockDecorationProps, 'index'> {\n data: ConstructorBlockType;\n}\n\nconst b = block('constructor-block');\n\nexport const ConstructorBlock = ({\n index = 0,\n data,\n children,\n}: React.PropsWithChildren<ConstructorBlockProps>) => {\n const {type} = data;\n const blockBaseProps = React.useMemo(\n () => pick(data, ['anchor', 'visible', 'resetPaddings', 'indent']),\n [data],\n );\n\n return (\n <BlockDecoration type={type} index={index} {...blockBaseProps}>\n <BlockBase className={b({type})} {...blockBaseProps}>\n {children}\n </BlockBase>\n </BlockDecoration>\n );\n};\n"]}
1
+ {"version":3,"file":"ConstructorBlock.js","sourceRoot":"../../../../../../src","sources":["containers/PageConstructor/components/ConstructorBlock/ConstructorBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,IAAI,uBAAoB;AAE/B,OAAO,SAAS,sDAAmD;AACnE,OAAO,EAAC,eAAe,EAAC,qDAAkD;AAE1E,OAAO,EAAC,KAAK,EAAC,mCAA0B;AAExC,OAAO,wBAAwB,CAAC;AAMhC,MAAM,CAAC,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAErC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC7B,KAAK,GAAG,CAAC,EACT,IAAI,EACJ,QAAQ,GACqC,EAAE,EAAE;IACjD,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC;IACpB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAChC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,EAClE,CAAC,IAAI,CAAC,CACT,CAAC;IAEF,OAAO,CACH,KAAC,eAAe,kBAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAAM,cAAc,cACzD,KAAC,SAAS,kBAAC,SAAS,EAAE,CAAC,CAAC,EAAC,IAAI,EAAC,CAAC,IAAM,cAAc,cAC9C,QAAQ,IACD,IACE,CACrB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport pick from 'lodash/pick';\n\nimport BlockBase from '../../../../components/BlockBase/BlockBase';\nimport {BlockDecoration} from '../../../../customization/BlockDecoration';\nimport {BlockDecorationProps, ConstructorBlock as ConstructorBlockType} from '../../../../models';\nimport {block} from '../../../../utils';\n\nimport './ConstructorBlock.scss';\n\ninterface ConstructorBlockProps extends Pick<BlockDecorationProps, 'index'> {\n data: ConstructorBlockType;\n}\n\nconst b = block('constructor-block');\n\nexport const ConstructorBlock = ({\n index = 0,\n data,\n children,\n}: React.PropsWithChildren<ConstructorBlockProps>) => {\n const {type} = data;\n const blockBaseProps = React.useMemo(\n () => pick(data, ['anchor', 'visible', 'resetPaddings', 'indent']),\n [data],\n );\n\n return (\n <BlockDecoration type={type} index={index} {...blockBaseProps}>\n <BlockBase className={b({type})} {...blockBaseProps}>\n {children}\n </BlockBase>\n </BlockDecoration>\n );\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
- import get from 'lodash/get';
3
+ import get from "lodash/get.js";
4
4
  import { InnerContext } from "../../../../context/innerContext/index.js";
5
5
  import { BlockDecoration } from "../../../../customization/BlockDecoration.js";
6
6
  import { getBlockKey } from "../../../../utils/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"ConstructorBlocks.js","sourceRoot":"../../../../../../src","sources":["containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport get from 'lodash/get';\n\nimport {InnerContext} from '../../../../context/innerContext';\nimport {BlockDecoration} from '../../../../customization/BlockDecoration';\nimport {\n BlockType,\n ConstructorBlock as ConstructorBlockType,\n LoadableProps,\n SubBlock,\n} from '../../../../models';\nimport {getBlockKey} from '../../../../utils';\nimport {ConstructorBlock} from '../ConstructorBlock/ConstructorBlock';\nimport {ConstructorItem} from '../ConstructorItem';\nimport {ConstructorLoadable} from '../ConstructorLoadable';\n\nexport interface ConstructorBlocksProps {\n items: ConstructorBlockType[];\n}\n\nexport const ConstructorBlocks: React.FC<ConstructorBlocksProps> = ({items}) => {\n const {blockTypes, loadables, itemMap, shouldRenderBlock} = React.useContext(InnerContext);\n\n const renderer = (\n parentId = '',\n item: ConstructorBlockType,\n index: number,\n ): React.ReactElement | null => {\n if (!itemMap[item.type]) {\n return parentId ? null : (\n <BlockDecoration type={item.type as BlockType} index={index}>\n {null}\n </BlockDecoration>\n );\n }\n\n let itemElement;\n const key = getBlockKey(item, index);\n const blockId = parentId ? `${parentId}_${key}` : key;\n if (shouldRenderBlock && !shouldRenderBlock(item, blockId)) {\n return null;\n }\n\n if ('loadable' in item && item.loadable) {\n const {source, serviceId, params} = item.loadable as LoadableProps;\n const config = get(loadables, source);\n\n if (!config) {\n return null;\n }\n\n itemElement = (\n <ConstructorLoadable\n block={item}\n key={blockId}\n blockKey={blockId}\n config={config}\n serviceId={serviceId}\n params={params}\n />\n );\n } else {\n let children;\n if ('children' in item && item.children) {\n children = (item.children as SubBlock[]).map(renderer.bind(null, blockId));\n }\n\n itemElement = (\n <ConstructorItem data={item} key={blockId} blockKey={blockId}>\n {children}\n </ConstructorItem>\n );\n }\n\n return blockTypes.includes(item.type) ? (\n //TODO: replace ConstructorBlock (and delete it) with BlockBase when all\n // components relying on constructor inner structure like Slider or blog-constructor will be refactored\n <ConstructorBlock data={item} key={blockId} index={index}>\n {itemElement}\n </ConstructorBlock>\n ) : (\n itemElement\n );\n };\n\n return <React.Fragment>{items.map(renderer.bind(null, ''))}</React.Fragment>;\n};\n"]}
1
+ {"version":3,"file":"ConstructorBlocks.js","sourceRoot":"../../../../../../src","sources":["containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport get from 'lodash/get';\n\nimport {InnerContext} from '../../../../context/innerContext';\nimport {BlockDecoration} from '../../../../customization/BlockDecoration';\nimport {\n BlockType,\n ConstructorBlock as ConstructorBlockType,\n LoadableProps,\n SubBlock,\n} from '../../../../models';\nimport {getBlockKey} from '../../../../utils';\nimport {ConstructorBlock} from '../ConstructorBlock/ConstructorBlock';\nimport {ConstructorItem} from '../ConstructorItem';\nimport {ConstructorLoadable} from '../ConstructorLoadable';\n\nexport interface ConstructorBlocksProps {\n items: ConstructorBlockType[];\n}\n\nexport const ConstructorBlocks: React.FC<ConstructorBlocksProps> = ({items}) => {\n const {blockTypes, loadables, itemMap, shouldRenderBlock} = React.useContext(InnerContext);\n\n const renderer = (\n parentId = '',\n item: ConstructorBlockType,\n index: number,\n ): React.ReactElement | null => {\n if (!itemMap[item.type]) {\n return parentId ? null : (\n <BlockDecoration type={item.type as BlockType} index={index}>\n {null}\n </BlockDecoration>\n );\n }\n\n let itemElement;\n const key = getBlockKey(item, index);\n const blockId = parentId ? `${parentId}_${key}` : key;\n if (shouldRenderBlock && !shouldRenderBlock(item, blockId)) {\n return null;\n }\n\n if ('loadable' in item && item.loadable) {\n const {source, serviceId, params} = item.loadable as LoadableProps;\n const config = get(loadables, source);\n\n if (!config) {\n return null;\n }\n\n itemElement = (\n <ConstructorLoadable\n block={item}\n key={blockId}\n blockKey={blockId}\n config={config}\n serviceId={serviceId}\n params={params}\n />\n );\n } else {\n let children;\n if ('children' in item && item.children) {\n children = (item.children as SubBlock[]).map(renderer.bind(null, blockId));\n }\n\n itemElement = (\n <ConstructorItem data={item} key={blockId} blockKey={blockId}>\n {children}\n </ConstructorItem>\n );\n }\n\n return blockTypes.includes(item.type) ? (\n //TODO: replace ConstructorBlock (and delete it) with BlockBase when all\n // components relying on constructor inner structure like Slider or blog-constructor will be refactored\n <ConstructorBlock data={item} key={blockId} index={index}>\n {itemElement}\n </ConstructorBlock>\n ) : (\n itemElement\n );\n };\n\n return <React.Fragment>{items.map(renderer.bind(null, ''))}</React.Fragment>;\n};\n"]}
@@ -2,8 +2,8 @@ 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 { DynamicField, SimpleVerticalAccordeon } from '@gravity-ui/dynamic-forms';
5
- import isEqual from 'lodash/isEqual';
6
- import noop from 'lodash/noop';
5
+ import isEqual from "lodash/isEqual.js";
6
+ import noop from "lodash/noop.js";
7
7
  import { Form as FinalForm, FormSpy } from 'react-final-form';
8
8
  import { dynamicConfig } from "../../dynamic-forms-custom/config.js";
9
9
  import usePreviousValue from "../../hooks/usePreviousValue.js";
@@ -1 +1 @@
1
- {"version":3,"file":"BlockForm.js","sourceRoot":"../../../../../src","sources":["editor/components/BlockForm/BlockForm.tsx"],"names":[],"mappings":";;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,YAAY,EAAE,uBAAuB,EAAO,MAAM,2BAA2B,CAAC;AACtF,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,EAAC,IAAI,IAAI,SAAS,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAG5D,OAAO,EAAC,aAAa,EAAC,6CAA0C;AAEhE,OAAO,gBAAgB,wCAAqC;AAU5D,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC/B,CAAC,EAAqF,EAAE,EAAE;QAAxF,YAAwB,EAAxB,EAAO,IAAI,OAAa,EAAR,OAAO,cAAjB,QAAkB,CAAD,EAAxB,EAA2B,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,OAAiB;IAClF,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CACtB,GAAG,EAAE,CAAC,iCACC,OAAO,KACV,QAAQ,kCACD,OAAO,CAAC,QAAQ,KACnB,UAAU,EAAE,MAAM,OAExB,EACF,CAAC,OAAO,EAAE,MAAM,CAAC,CACpB,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CACH,KAAC,uBAAuB,IACpB,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,EACxC,YAAY,EAAE,QAAQ,YAE4C,GAAG,GAC/C,CAC7B,CAAC;IACN,CAAC;IAED,OAAO,CACH,KAAC,SAAS,IAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,YAClD,GAAG,EAAE,CAAC,CACH,MAAC,KAAK,CAAC,QAAQ,eACX,KAAC,OAAO,IACJ,QAAQ,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE;wBACnB,gEAAgE;wBAChE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;4BACxC,QAAQ,iBAAE,IAAI,IAAK,MAAM,CAAC,OAAO,EAAE,CAAC;wBACxC,CAAC;oBACL,CAAC,EACD,YAAY,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,GAC9B,EACF,KAAC,YAAY,IACT,IAAI,EAAC,SAAS,EACd,IAAI,EAAE,IAAY,EAClB,MAAM,EAAE,aAAa,EACrB,uBAAuB,SACzB,IACW,CACpB,GACO,CACf,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {DynamicField, SimpleVerticalAccordeon, Spec} from '@gravity-ui/dynamic-forms';\nimport isEqual from 'lodash/isEqual';\nimport noop from 'lodash/noop';\nimport {Form as FinalForm, FormSpy} from 'react-final-form';\n\nimport {Block, ConstructorBlock} from '../../../models';\nimport {dynamicConfig} from '../../dynamic-forms-custom/config';\nimport {CustomSpec} from '../../dynamic-forms-custom/parser/types';\nimport usePreviousValue from '../../hooks/usePreviousValue';\n\ninterface BlockFormProps {\n data: ConstructorBlock;\n spec: CustomSpec;\n onChange: (data: Block) => void;\n onSelect: () => void;\n active?: boolean;\n}\n\nexport const BlockForm = React.memo(\n ({data: {type, ...content}, onChange, onSelect, active, spec: specRaw}: BlockFormProps) => {\n const initialValues = React.useMemo(() => ({content}), [content]);\n const prevContent = usePreviousValue(content);\n const spec = React.useMemo(\n () => ({\n ...specRaw,\n viewSpec: {\n ...specRaw.viewSpec,\n layoutOpen: active,\n },\n }),\n [specRaw, active],\n );\n\n if (!active) {\n return (\n <SimpleVerticalAccordeon\n open={false}\n name={type}\n title={spec.viewSpec.layoutTitle || type}\n onOpenChange={onSelect}\n >\n {/* SimpleVerticalAccordeon requires children, put dummy value*/}{' '}\n </SimpleVerticalAccordeon>\n );\n }\n\n return (\n <FinalForm initialValues={initialValues} onSubmit={noop}>\n {() => (\n <React.Fragment>\n <FormSpy\n onChange={({values}) => {\n // fix for FormSpy onChange called twice without content changes\n if (!isEqual(values.content, prevContent)) {\n onChange({type, ...values.content});\n }\n }}\n subscription={{values: true}}\n />\n <DynamicField\n name=\"content\"\n spec={spec as Spec}\n config={dynamicConfig}\n withoutInsertFFDebounce\n />\n </React.Fragment>\n )}\n </FinalForm>\n );\n },\n);\n\nBlockForm.displayName = 'BlockForm';\n"]}
1
+ {"version":3,"file":"BlockForm.js","sourceRoot":"../../../../../src","sources":["editor/components/BlockForm/BlockForm.tsx"],"names":[],"mappings":";;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,YAAY,EAAE,uBAAuB,EAAO,MAAM,2BAA2B,CAAC;AACtF,OAAO,OAAO,0BAAuB;AACrC,OAAO,IAAI,uBAAoB;AAC/B,OAAO,EAAC,IAAI,IAAI,SAAS,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAG5D,OAAO,EAAC,aAAa,EAAC,6CAA0C;AAEhE,OAAO,gBAAgB,wCAAqC;AAU5D,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC/B,CAAC,EAAqF,EAAE,EAAE;QAAxF,YAAwB,EAAxB,EAAO,IAAI,OAAa,EAAR,OAAO,cAAjB,QAAkB,CAAD,EAAxB,EAA2B,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,OAAiB;IAClF,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CACtB,GAAG,EAAE,CAAC,iCACC,OAAO,KACV,QAAQ,kCACD,OAAO,CAAC,QAAQ,KACnB,UAAU,EAAE,MAAM,OAExB,EACF,CAAC,OAAO,EAAE,MAAM,CAAC,CACpB,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CACH,KAAC,uBAAuB,IACpB,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,EACxC,YAAY,EAAE,QAAQ,YAE4C,GAAG,GAC/C,CAC7B,CAAC;IACN,CAAC;IAED,OAAO,CACH,KAAC,SAAS,IAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,YAClD,GAAG,EAAE,CAAC,CACH,MAAC,KAAK,CAAC,QAAQ,eACX,KAAC,OAAO,IACJ,QAAQ,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE;wBACnB,gEAAgE;wBAChE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;4BACxC,QAAQ,iBAAE,IAAI,IAAK,MAAM,CAAC,OAAO,EAAE,CAAC;wBACxC,CAAC;oBACL,CAAC,EACD,YAAY,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,GAC9B,EACF,KAAC,YAAY,IACT,IAAI,EAAC,SAAS,EACd,IAAI,EAAE,IAAY,EAClB,MAAM,EAAE,aAAa,EACrB,uBAAuB,SACzB,IACW,CACpB,GACO,CACf,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {DynamicField, SimpleVerticalAccordeon, Spec} from '@gravity-ui/dynamic-forms';\nimport isEqual from 'lodash/isEqual';\nimport noop from 'lodash/noop';\nimport {Form as FinalForm, FormSpy} from 'react-final-form';\n\nimport {Block, ConstructorBlock} from '../../../models';\nimport {dynamicConfig} from '../../dynamic-forms-custom/config';\nimport {CustomSpec} from '../../dynamic-forms-custom/parser/types';\nimport usePreviousValue from '../../hooks/usePreviousValue';\n\ninterface BlockFormProps {\n data: ConstructorBlock;\n spec: CustomSpec;\n onChange: (data: Block) => void;\n onSelect: () => void;\n active?: boolean;\n}\n\nexport const BlockForm = React.memo(\n ({data: {type, ...content}, onChange, onSelect, active, spec: specRaw}: BlockFormProps) => {\n const initialValues = React.useMemo(() => ({content}), [content]);\n const prevContent = usePreviousValue(content);\n const spec = React.useMemo(\n () => ({\n ...specRaw,\n viewSpec: {\n ...specRaw.viewSpec,\n layoutOpen: active,\n },\n }),\n [specRaw, active],\n );\n\n if (!active) {\n return (\n <SimpleVerticalAccordeon\n open={false}\n name={type}\n title={spec.viewSpec.layoutTitle || type}\n onOpenChange={onSelect}\n >\n {/* SimpleVerticalAccordeon requires children, put dummy value*/}{' '}\n </SimpleVerticalAccordeon>\n );\n }\n\n return (\n <FinalForm initialValues={initialValues} onSubmit={noop}>\n {() => (\n <React.Fragment>\n <FormSpy\n onChange={({values}) => {\n // fix for FormSpy onChange called twice without content changes\n if (!isEqual(values.content, prevContent)) {\n onChange({type, ...values.content});\n }\n }}\n subscription={{values: true}}\n />\n <DynamicField\n name=\"content\"\n spec={spec as Spec}\n config={dynamicConfig}\n withoutInsertFFDebounce\n />\n </React.Fragment>\n )}\n </FinalForm>\n );\n },\n);\n\nBlockForm.displayName = 'BlockForm';\n"]}
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
3
  import { ChevronsCollapseUpRight, ChevronsExpandUpRight } from '@gravity-ui/icons';
4
4
  import { Button, Icon } from '@gravity-ui/uikit';
5
- import debounce from 'lodash/debounce';
5
+ import debounce from "lodash/debounce.js";
6
6
  import MonacoEditor from 'react-monaco-editor';
7
7
  import { Theme } from "../../../models/index.js";
8
8
  import { block } from "../../../utils/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"CodeEditor.js","sourceRoot":"../../../../../src","sources":["editor/components/CodeEditor/CodeEditor.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,uBAAuB,EAAE,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAc,KAAK,EAAC,iCAAwB;AACnD,OAAO,EAAC,KAAK,EAAC,gCAAuB;AACrC,OAAO,EAAC,aAAa,EAAC,yBAAsB;AAC5C,OAAO,EAAC,SAAS,EAAC,4BAAyB;AAG3C,OAAO,EAAC,OAAO,EAAC,uBAAoB;AAEpC,OAAO,kBAAkB,CAAC;AAE1B,MAAM,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;AAE/B,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAWvC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAChC,CAAC,EAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,IAAI,EAAkB,EAAE,EAAE;IACzF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,EAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAE9D,uDAAuD;IACvD,MAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAC5C,QAAQ,CAAC,CAAC,OAAe,EAAE,EAAE;QACzB,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAE5C,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAC7B,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACjC,CAAC,EAAE,0BAA0B,CAAC,EAC9B,CAAC,QAAQ,EAAE,SAAS,CAAC,CACxB,CAAC;IAEF,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,EAAC,UAAU,EAAE,gBAAgB,EAAC,CAAC,aAC7C,cAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YACvB,KAAC,MAAM,IACH,IAAI,EAAC,gBAAgB,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC,gBAAgB,CAAC,YAE1D,KAAC,IAAI,IACD,IAAI,EACA,gBAAgB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,qBAAqB,EAEtE,IAAI,EAAE,EAAE,GACV,GACG,GACP,EACN,cAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,KAAC,YAAY,IAET,YAAY,EAAE,IAAI,EAClB,KAAK,EAAE,IAAI,EACX,QAAQ,EAAC,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IANzC,MAAM,CAAC,gBAAgB,CAAC,CAO/B,GACA,EACN,cAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YACtB,OAAO,IAAI,CACR,cAAK,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC,YAClC,cAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,CAAC,YACjD,OAAO,CAAC,IAAI,GACX,GACJ,CACT,GACC,IACJ,CACT,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {ChevronsCollapseUpRight, ChevronsExpandUpRight} from '@gravity-ui/icons';\nimport {Button, Icon} from '@gravity-ui/uikit';\nimport debounce from 'lodash/debounce';\nimport MonacoEditor from 'react-monaco-editor';\n\nimport {PageContent, Theme} from '../../../models';\nimport {block} from '../../../utils';\nimport {EditorContext} from '../../context';\nimport {parseCode} from '../../utils/code';\nimport {CodeEditorMessageProps} from '../../utils/validation';\n\nimport {options} from './constants';\n\nimport './CodeEditor.scss';\n\nconst b = block('code-editor');\n\nconst ON_CHANGE_DEBOUNCE_TIMEOUT = 300;\n\ninterface CodeEditorProps {\n code: string;\n fullscreenModeOn: boolean;\n validator: (code: string) => CodeEditorMessageProps;\n onFullscreenModeOnUpdate: (fullscreenModeOn: boolean) => void;\n onChange: (content: PageContent) => void;\n message?: CodeEditorMessageProps;\n}\n\nexport const CodeEditor = React.memo(\n ({onChange, validator, fullscreenModeOn, onFullscreenModeOnUpdate, code}: CodeEditorProps) => {\n const [message, setMessage] = React.useState(() => validator(code));\n const {theme = Theme.Light} = React.useContext(EditorContext);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const onChangeWithValidation = React.useCallback(\n debounce((newCode: string) => {\n const validationResult = validator(newCode);\n\n setMessage(validationResult);\n onChange(parseCode(newCode));\n }, ON_CHANGE_DEBOUNCE_TIMEOUT),\n [onChange, validator],\n );\n\n return (\n <div className={b({fullscreen: fullscreenModeOn})}>\n <div className={b('header')}>\n <Button\n view=\"flat-secondary\"\n onClick={() => onFullscreenModeOnUpdate(!fullscreenModeOn)}\n >\n <Icon\n data={\n fullscreenModeOn ? ChevronsCollapseUpRight : ChevronsExpandUpRight\n }\n size={16}\n />\n </Button>\n </div>\n <div className={b('code')}>\n <MonacoEditor\n key={String(fullscreenModeOn)}\n defaultValue={code}\n value={code}\n language=\"yaml\"\n options={options}\n onChange={onChangeWithValidation}\n theme={theme === Theme.Dark ? 'vs-dark' : 'vs'}\n />\n </div>\n <div className={b('footer')}>\n {message && (\n <div className={b('message-container')}>\n <div className={b('message', {status: message.status})}>\n {message.text}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\nCodeEditor.displayName = 'CodeEditor';\n"]}
1
+ {"version":3,"file":"CodeEditor.js","sourceRoot":"../../../../../src","sources":["editor/components/CodeEditor/CodeEditor.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,uBAAuB,EAAE,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,QAAQ,2BAAwB;AACvC,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAc,KAAK,EAAC,iCAAwB;AACnD,OAAO,EAAC,KAAK,EAAC,gCAAuB;AACrC,OAAO,EAAC,aAAa,EAAC,yBAAsB;AAC5C,OAAO,EAAC,SAAS,EAAC,4BAAyB;AAG3C,OAAO,EAAC,OAAO,EAAC,uBAAoB;AAEpC,OAAO,kBAAkB,CAAC;AAE1B,MAAM,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;AAE/B,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAWvC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAChC,CAAC,EAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,IAAI,EAAkB,EAAE,EAAE;IACzF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,EAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAE9D,uDAAuD;IACvD,MAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAC5C,QAAQ,CAAC,CAAC,OAAe,EAAE,EAAE;QACzB,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAE5C,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAC7B,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACjC,CAAC,EAAE,0BAA0B,CAAC,EAC9B,CAAC,QAAQ,EAAE,SAAS,CAAC,CACxB,CAAC;IAEF,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,EAAC,UAAU,EAAE,gBAAgB,EAAC,CAAC,aAC7C,cAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YACvB,KAAC,MAAM,IACH,IAAI,EAAC,gBAAgB,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC,gBAAgB,CAAC,YAE1D,KAAC,IAAI,IACD,IAAI,EACA,gBAAgB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,qBAAqB,EAEtE,IAAI,EAAE,EAAE,GACV,GACG,GACP,EACN,cAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,KAAC,YAAY,IAET,YAAY,EAAE,IAAI,EAClB,KAAK,EAAE,IAAI,EACX,QAAQ,EAAC,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IANzC,MAAM,CAAC,gBAAgB,CAAC,CAO/B,GACA,EACN,cAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YACtB,OAAO,IAAI,CACR,cAAK,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC,YAClC,cAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,CAAC,YACjD,OAAO,CAAC,IAAI,GACX,GACJ,CACT,GACC,IACJ,CACT,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {ChevronsCollapseUpRight, ChevronsExpandUpRight} from '@gravity-ui/icons';\nimport {Button, Icon} from '@gravity-ui/uikit';\nimport debounce from 'lodash/debounce';\nimport MonacoEditor from 'react-monaco-editor';\n\nimport {PageContent, Theme} from '../../../models';\nimport {block} from '../../../utils';\nimport {EditorContext} from '../../context';\nimport {parseCode} from '../../utils/code';\nimport {CodeEditorMessageProps} from '../../utils/validation';\n\nimport {options} from './constants';\n\nimport './CodeEditor.scss';\n\nconst b = block('code-editor');\n\nconst ON_CHANGE_DEBOUNCE_TIMEOUT = 300;\n\ninterface CodeEditorProps {\n code: string;\n fullscreenModeOn: boolean;\n validator: (code: string) => CodeEditorMessageProps;\n onFullscreenModeOnUpdate: (fullscreenModeOn: boolean) => void;\n onChange: (content: PageContent) => void;\n message?: CodeEditorMessageProps;\n}\n\nexport const CodeEditor = React.memo(\n ({onChange, validator, fullscreenModeOn, onFullscreenModeOnUpdate, code}: CodeEditorProps) => {\n const [message, setMessage] = React.useState(() => validator(code));\n const {theme = Theme.Light} = React.useContext(EditorContext);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const onChangeWithValidation = React.useCallback(\n debounce((newCode: string) => {\n const validationResult = validator(newCode);\n\n setMessage(validationResult);\n onChange(parseCode(newCode));\n }, ON_CHANGE_DEBOUNCE_TIMEOUT),\n [onChange, validator],\n );\n\n return (\n <div className={b({fullscreen: fullscreenModeOn})}>\n <div className={b('header')}>\n <Button\n view=\"flat-secondary\"\n onClick={() => onFullscreenModeOnUpdate(!fullscreenModeOn)}\n >\n <Icon\n data={\n fullscreenModeOn ? ChevronsCollapseUpRight : ChevronsExpandUpRight\n }\n size={16}\n />\n </Button>\n </div>\n <div className={b('code')}>\n <MonacoEditor\n key={String(fullscreenModeOn)}\n defaultValue={code}\n value={code}\n language=\"yaml\"\n options={options}\n onChange={onChangeWithValidation}\n theme={theme === Theme.Dark ? 'vs-dark' : 'vs'}\n />\n </div>\n <div className={b('footer')}>\n {message && (\n <div className={b('message-container')}>\n <div className={b('message', {status: message.status})}>\n {message.text}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\nCodeEditor.displayName = 'CodeEditor';\n"]}
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
4
  import { DynamicField } from '@gravity-ui/dynamic-forms';
5
5
  import { Disclosure } from '@gravity-ui/uikit';
6
- import noop from 'lodash/noop';
6
+ import noop from "lodash/noop.js";
7
7
  import { Form as FinalForm, FormSpy } from 'react-final-form';
8
8
  import { block } from "../../../utils/index.js";
9
9
  import { dynamicConfig } from "../../dynamic-forms-custom/config.js";
@@ -1 +1 @@
1
- {"version":3,"file":"PageSettings.js","sourceRoot":"../../../../../src","sources":["editor/components/PageSettings/PageSettings.tsx"],"names":[],"mappings":";;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,YAAY,EAAO,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAE7C,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,EAAC,IAAI,IAAI,SAAS,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAG5D,OAAO,EAAC,KAAK,EAAC,gCAAuB;AACrC,OAAO,EAAC,aAAa,EAAC,6CAA0C;AAChE,OAAO,WAAW,mCAAgC;AAElD,OAAO,EAAC,IAAI,EAAC,wBAAe;AAE5B,OAAO,oBAAoB,CAAC;AAE5B,MAAM,CAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAQxC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAoB,EAAE,EAAE;IAC3E,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IAEpC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACnC,MAAM,KAAuB,OAAO,IAAI,EAAE,EAApC,EAAC,MAAM,EAAE,CAAC,OAA0B,EAArB,IAAI,cAAnB,UAAoB,CAAgB,CAAC;QAE3C,OAAO,IAAI,CAAC;QACZ,uDAAuD;IAC3D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACH,KAAC,UAAU,IAAC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAC,GAAG,YACjF,cAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,KAAC,SAAS,IAAC,aAAa,EAAE,EAAC,OAAO,EAAE,WAAW,EAAC,EAAE,QAAQ,EAAE,IAAI,YAC3D,GAAG,EAAE,CAAC,CACH,0BACI,KAAC,OAAO,IACJ,QAAQ,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,QAAQ,iCAAK,OAAO,GAAK,MAAM,CAAC,OAAO,EAAE,EACjE,YAAY,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,GAC9B,EACF,KAAC,YAAY,IACT,IAAI,EAAC,SAAS,EACd,IAAI,EAAE,QAAgB,EACtB,MAAM,EAAE,aAAa,GACvB,IACA,CACT,GACO,GACV,GACG,CAChB,CAAC;AACN,CAAC,CAAC;AAEF,YAAY,CAAC,WAAW,GAAG,cAAc,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {DynamicField, Spec} from '@gravity-ui/dynamic-forms';\nimport {Disclosure} from '@gravity-ui/uikit';\nimport {JSONSchema4} from 'json-schema';\nimport noop from 'lodash/noop';\nimport {Form as FinalForm, FormSpy} from 'react-final-form';\n\nimport {PageContent} from '../../../models';\nimport {block} from '../../../utils';\nimport {dynamicConfig} from '../../dynamic-forms-custom/config';\nimport useFormSpec from '../../hooks/useFormSpec';\n\nimport {i18n} from './i18n';\n\nimport './PageSettings.scss';\n\nconst b = block('editor-page-settings');\n\nexport interface PageSettingsProps {\n content: PageContent;\n schema: JSONSchema4;\n onChange: (content: PageContent) => void;\n}\n\nexport const PageSettings = ({schema, content, onChange}: PageSettingsProps) => {\n const spec = useFormSpec(schema);\n const {page: pageSpec} = spec || {};\n\n const initialPage = React.useMemo(() => {\n const {blocks: _, ...page} = content || {};\n\n return page;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <Disclosure className={b('container')} summary={i18n('page-settings-title')} size=\"l\">\n <div className={b('form')}>\n <FinalForm initialValues={{content: initialPage}} onSubmit={noop}>\n {() => (\n <div>\n <FormSpy\n onChange={({values}) => onChange({...content, ...values.content})}\n subscription={{values: true}}\n />\n <DynamicField\n name=\"content\"\n spec={pageSpec as Spec}\n config={dynamicConfig}\n />\n </div>\n )}\n </FinalForm>\n </div>\n </Disclosure>\n );\n};\n\nPageSettings.displayName = 'PageSettings';\n"]}
1
+ {"version":3,"file":"PageSettings.js","sourceRoot":"../../../../../src","sources":["editor/components/PageSettings/PageSettings.tsx"],"names":[],"mappings":";;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,YAAY,EAAO,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAE7C,OAAO,IAAI,uBAAoB;AAC/B,OAAO,EAAC,IAAI,IAAI,SAAS,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAG5D,OAAO,EAAC,KAAK,EAAC,gCAAuB;AACrC,OAAO,EAAC,aAAa,EAAC,6CAA0C;AAChE,OAAO,WAAW,mCAAgC;AAElD,OAAO,EAAC,IAAI,EAAC,wBAAe;AAE5B,OAAO,oBAAoB,CAAC;AAE5B,MAAM,CAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAQxC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAoB,EAAE,EAAE;IAC3E,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IAEpC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACnC,MAAM,KAAuB,OAAO,IAAI,EAAE,EAApC,EAAC,MAAM,EAAE,CAAC,OAA0B,EAArB,IAAI,cAAnB,UAAoB,CAAgB,CAAC;QAE3C,OAAO,IAAI,CAAC;QACZ,uDAAuD;IAC3D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACH,KAAC,UAAU,IAAC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAC,GAAG,YACjF,cAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,KAAC,SAAS,IAAC,aAAa,EAAE,EAAC,OAAO,EAAE,WAAW,EAAC,EAAE,QAAQ,EAAE,IAAI,YAC3D,GAAG,EAAE,CAAC,CACH,0BACI,KAAC,OAAO,IACJ,QAAQ,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,QAAQ,iCAAK,OAAO,GAAK,MAAM,CAAC,OAAO,EAAE,EACjE,YAAY,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,GAC9B,EACF,KAAC,YAAY,IACT,IAAI,EAAC,SAAS,EACd,IAAI,EAAE,QAAgB,EACtB,MAAM,EAAE,aAAa,GACvB,IACA,CACT,GACO,GACV,GACG,CAChB,CAAC;AACN,CAAC,CAAC;AAEF,YAAY,CAAC,WAAW,GAAG,cAAc,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {DynamicField, Spec} from '@gravity-ui/dynamic-forms';\nimport {Disclosure} from '@gravity-ui/uikit';\nimport {JSONSchema4} from 'json-schema';\nimport noop from 'lodash/noop';\nimport {Form as FinalForm, FormSpy} from 'react-final-form';\n\nimport {PageContent} from '../../../models';\nimport {block} from '../../../utils';\nimport {dynamicConfig} from '../../dynamic-forms-custom/config';\nimport useFormSpec from '../../hooks/useFormSpec';\n\nimport {i18n} from './i18n';\n\nimport './PageSettings.scss';\n\nconst b = block('editor-page-settings');\n\nexport interface PageSettingsProps {\n content: PageContent;\n schema: JSONSchema4;\n onChange: (content: PageContent) => void;\n}\n\nexport const PageSettings = ({schema, content, onChange}: PageSettingsProps) => {\n const spec = useFormSpec(schema);\n const {page: pageSpec} = spec || {};\n\n const initialPage = React.useMemo(() => {\n const {blocks: _, ...page} = content || {};\n\n return page;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <Disclosure className={b('container')} summary={i18n('page-settings-title')} size=\"l\">\n <div className={b('form')}>\n <FinalForm initialValues={{content: initialPage}} onSubmit={noop}>\n {() => (\n <div>\n <FormSpy\n onChange={({values}) => onChange({...content, ...values.content})}\n subscription={{values: true}}\n />\n <DynamicField\n name=\"content\"\n spec={pageSpec as Spec}\n config={dynamicConfig}\n />\n </div>\n )}\n </FinalForm>\n </div>\n </Disclosure>\n );\n};\n\nPageSettings.displayName = 'PageSettings';\n"]}
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
3
  import { Controller, GroupIndent, SpecTypes, transformArrOut, } from '@gravity-ui/dynamic-forms';
4
4
  import Ajv from 'ajv';
5
- import isEmpty from 'lodash/isEmpty';
5
+ import isEmpty from "lodash/isEmpty.js";
6
6
  import { block } from "../../../../utils/index.js";
7
7
  import { getSpecTypeDefaultValue, useOneOf } from "../../hooks/useOneOf.js";
8
8
  import './OneOfCustom.css';
@@ -1 +1 @@
1
- {"version":3,"file":"OneOfCustom.js","sourceRoot":"../../../../../../src","sources":["editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {\n Controller,\n FieldObjectValue,\n FieldValue,\n GroupIndent,\n ObjectIndependentInputProps,\n ObjectSpec,\n SpecTypes,\n ValidateError,\n transformArrOut,\n} from '@gravity-ui/dynamic-forms';\nimport Ajv from 'ajv';\nimport isEmpty from 'lodash/isEmpty';\n\nimport {block} from '../../../../utils';\nimport {getSpecTypeDefaultValue, useOneOf} from '../../hooks/useOneOf';\nimport {SpecCustomProps} from '../../parser/types';\n\nimport './OneOfCustom.scss';\n\nconst b = block('one-of-custom');\n\nconst ajv = new Ajv({\n $data: true,\n strict: false,\n strictSchema: false,\n strictTypes: false,\n strictRequired: false,\n});\n\nconst getOneOfCustomSpecDefaultType = (spec: ObjectSpec) =>\n spec.viewSpec?.order?.[0] || Object.keys(spec.properties || {})[0];\n\n// dynamic-forms pass {} as default value for required properties of all types\n// this function replaces {} with default value accordingly to selected OneOf option spec type\nconst getControllerDefautValue = (value: FieldValue, valueSpecType?: SpecTypes) => {\n const isDefaultValue = typeof value === 'object' && isEmpty(value);\n const defaultValue = valueSpecType ? getSpecTypeDefaultValue(valueSpecType) : undefined;\n\n return isDefaultValue ? (defaultValue as FieldValue) : value;\n};\n\n/**\n * Customization of @gravity-ui/dynamic-forms OneOf component\n *\n * Main differences from original component:\n *\n * 1. Custom component can detect initial data type by it's json schema passed it __schema property of spec and\n * shows according input\n *\n * 2. Custom component doesn't create additional nested level of data for each OneOf option and doesn't wraps data value, e.g.\n *\n * custom component: {propertyName: propertyValue}\n * original component: {propertyName: {option1: {value: propertyValue}}}\n *\n * @param {ObjectIndependentInputProps} props - props of original OneOf component\n * @returns {React.FC<ObjectIndependentInputProps>}\n */\nexport const OneOfCustom: React.FC<ObjectIndependentInputProps> = (props) => {\n const {spec, input, name} = props;\n const {properties} = spec;\n\n //getting oneOf option type from initial value\n const valueType = React.useMemo(\n () =>\n (properties &&\n Object.keys(properties)?.find((key) => {\n const fieldSchema = (properties?.[key] as SpecCustomProps).__schema;\n\n return fieldSchema && ajv.validate(fieldSchema, transformArrOut(input.value));\n })) ||\n getOneOfCustomSpecDefaultType(spec),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n const {oneOfValue, specProperties, toggler} = useOneOf({\n props: {\n ...props,\n input: {\n ...input,\n value: valueType ? {[valueType]: input.value} : input.value,\n },\n },\n });\n\n const parentOnChange = React.useCallback(\n (\n _childName: string,\n childValue: FieldValue,\n childErrors?: Record<string, ValidateError>,\n ) => {\n input.onChange(childValue as FieldObjectValue, childErrors);\n },\n [input],\n );\n\n const parentOnUnmount = React.useCallback(\n (childName: string) => input.onChange((currentValue) => currentValue, {[childName]: false}),\n [input],\n );\n\n const valueSpecType = specProperties[oneOfValue]?.type || SpecTypes.Object;\n\n return (\n <div className={b()}>\n <div>{toggler}</div>\n {specProperties[oneOfValue] && (\n <GroupIndent>\n <Controller\n value={getControllerDefautValue(input.value, valueSpecType)}\n name={name}\n spec={specProperties[oneOfValue]}\n parentOnChange={parentOnChange}\n parentOnUnmount={parentOnUnmount}\n key={`${name}.${oneOfValue}`}\n />\n </GroupIndent>\n )}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"OneOfCustom.js","sourceRoot":"../../../../../../src","sources":["editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {\n Controller,\n FieldObjectValue,\n FieldValue,\n GroupIndent,\n ObjectIndependentInputProps,\n ObjectSpec,\n SpecTypes,\n ValidateError,\n transformArrOut,\n} from '@gravity-ui/dynamic-forms';\nimport Ajv from 'ajv';\nimport isEmpty from 'lodash/isEmpty';\n\nimport {block} from '../../../../utils';\nimport {getSpecTypeDefaultValue, useOneOf} from '../../hooks/useOneOf';\nimport {SpecCustomProps} from '../../parser/types';\n\nimport './OneOfCustom.scss';\n\nconst b = block('one-of-custom');\n\nconst ajv = new Ajv({\n $data: true,\n strict: false,\n strictSchema: false,\n strictTypes: false,\n strictRequired: false,\n});\n\nconst getOneOfCustomSpecDefaultType = (spec: ObjectSpec) =>\n spec.viewSpec?.order?.[0] || Object.keys(spec.properties || {})[0];\n\n// dynamic-forms pass {} as default value for required properties of all types\n// this function replaces {} with default value accordingly to selected OneOf option spec type\nconst getControllerDefautValue = (value: FieldValue, valueSpecType?: SpecTypes) => {\n const isDefaultValue = typeof value === 'object' && isEmpty(value);\n const defaultValue = valueSpecType ? getSpecTypeDefaultValue(valueSpecType) : undefined;\n\n return isDefaultValue ? (defaultValue as FieldValue) : value;\n};\n\n/**\n * Customization of @gravity-ui/dynamic-forms OneOf component\n *\n * Main differences from original component:\n *\n * 1. Custom component can detect initial data type by it's json schema passed it __schema property of spec and\n * shows according input\n *\n * 2. Custom component doesn't create additional nested level of data for each OneOf option and doesn't wraps data value, e.g.\n *\n * custom component: {propertyName: propertyValue}\n * original component: {propertyName: {option1: {value: propertyValue}}}\n *\n * @param {ObjectIndependentInputProps} props - props of original OneOf component\n * @returns {React.FC<ObjectIndependentInputProps>}\n */\nexport const OneOfCustom: React.FC<ObjectIndependentInputProps> = (props) => {\n const {spec, input, name} = props;\n const {properties} = spec;\n\n //getting oneOf option type from initial value\n const valueType = React.useMemo(\n () =>\n (properties &&\n Object.keys(properties)?.find((key) => {\n const fieldSchema = (properties?.[key] as SpecCustomProps).__schema;\n\n return fieldSchema && ajv.validate(fieldSchema, transformArrOut(input.value));\n })) ||\n getOneOfCustomSpecDefaultType(spec),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n const {oneOfValue, specProperties, toggler} = useOneOf({\n props: {\n ...props,\n input: {\n ...input,\n value: valueType ? {[valueType]: input.value} : input.value,\n },\n },\n });\n\n const parentOnChange = React.useCallback(\n (\n _childName: string,\n childValue: FieldValue,\n childErrors?: Record<string, ValidateError>,\n ) => {\n input.onChange(childValue as FieldObjectValue, childErrors);\n },\n [input],\n );\n\n const parentOnUnmount = React.useCallback(\n (childName: string) => input.onChange((currentValue) => currentValue, {[childName]: false}),\n [input],\n );\n\n const valueSpecType = specProperties[oneOfValue]?.type || SpecTypes.Object;\n\n return (\n <div className={b()}>\n <div>{toggler}</div>\n {specProperties[oneOfValue] && (\n <GroupIndent>\n <Controller\n value={getControllerDefautValue(input.value, valueSpecType)}\n name={name}\n spec={specProperties[oneOfValue]}\n parentOnChange={parentOnChange}\n parentOnUnmount={parentOnUnmount}\n key={`${name}.${oneOfValue}`}\n />\n </GroupIndent>\n )}\n </div>\n );\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import { dynamicConfig as libConfig } from '@gravity-ui/dynamic-forms';
2
- import cloneDeep from 'lodash/cloneDeep';
2
+ import cloneDeep from "lodash/cloneDeep.js";
3
3
  import { OneOfCustom } from "./components/OneOfCustom/OneOfCustom.js";
4
4
  const getDynamicConfig = () => {
5
5
  const dynamicConfig = cloneDeep(libConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"../../../../src","sources":["editor/dynamic-forms-custom/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,aAAa,IAAI,SAAS,EAAC,MAAM,2BAA2B,CAAC;AACxF,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAC,WAAW,EAAC,gDAA6C;AAEjE,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC1B,MAAM,aAAa,GAAsB,SAAS,CAAC,SAAS,CAAC,CAAC;IAE9D,aAAa;IACb,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;IAE1F,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC","sourcesContent":["import {DynamicFormConfig, dynamicConfig as libConfig} from '@gravity-ui/dynamic-forms';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport {OneOfCustom} from './components/OneOfCustom/OneOfCustom';\n\nconst getDynamicConfig = () => {\n const dynamicConfig: DynamicFormConfig = cloneDeep(libConfig);\n\n // @ts-ignore\n dynamicConfig.object.inputs['oneof_custom'] = {Component: OneOfCustom, independent: true};\n\n return dynamicConfig;\n};\n\nexport const dynamicConfig = getDynamicConfig();\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"../../../../src","sources":["editor/dynamic-forms-custom/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,aAAa,IAAI,SAAS,EAAC,MAAM,2BAA2B,CAAC;AACxF,OAAO,SAAS,4BAAyB;AAEzC,OAAO,EAAC,WAAW,EAAC,gDAA6C;AAEjE,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC1B,MAAM,aAAa,GAAsB,SAAS,CAAC,SAAS,CAAC,CAAC;IAE9D,aAAa;IACb,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;IAE1F,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC","sourcesContent":["import {DynamicFormConfig, dynamicConfig as libConfig} from '@gravity-ui/dynamic-forms';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport {OneOfCustom} from './components/OneOfCustom/OneOfCustom';\n\nconst getDynamicConfig = () => {\n const dynamicConfig: DynamicFormConfig = cloneDeep(libConfig);\n\n // @ts-ignore\n dynamicConfig.object.inputs['oneof_custom'] = {Component: OneOfCustom, independent: true};\n\n return dynamicConfig;\n};\n\nexport const dynamicConfig = getDynamicConfig();\n"]}
@@ -2,8 +2,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
3
  import { SpecTypes, } from '@gravity-ui/dynamic-forms';
4
4
  import { SegmentedRadioGroup, Select } from '@gravity-ui/uikit';
5
- import isObjectLike from 'lodash/isObjectLike';
6
- import some from 'lodash/some';
5
+ import isObjectLike from "lodash/isObjectLike.js";
6
+ import some from "lodash/some.js";
7
7
  const MAX_TAB_TITLE_LENGTH = 20;
8
8
  export const getSpecTypeDefaultValue = (type) => {
9
9
  switch (type) {
@@ -1 +1 @@
1
- {"version":3,"file":"useOneOf.js","sourceRoot":"../../../../../src","sources":["editor/dynamic-forms-custom/hooks/useOneOf.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {\n FieldObjectValue,\n ObjectIndependentInputProps,\n Spec,\n SpecTypes,\n} from '@gravity-ui/dynamic-forms';\nimport {SegmentedRadioGroup, Select} from '@gravity-ui/uikit';\nimport isObjectLike from 'lodash/isObjectLike';\nimport some from 'lodash/some';\n\nconst MAX_TAB_TITLE_LENGTH = 20;\n\nexport interface UseOneOfParams {\n props: ObjectIndependentInputProps;\n onTogglerChange?: (value: string) => void;\n}\n\nexport const getSpecTypeDefaultValue = (type: SpecTypes) => {\n switch (type) {\n case SpecTypes.Array:\n return [];\n case SpecTypes.Boolean:\n case SpecTypes.Number:\n case SpecTypes.String:\n return undefined;\n default:\n return {};\n }\n};\n\nexport const useOneOf = ({props, onTogglerChange}: UseOneOfParams) => {\n const {name, input, spec, Layout} = props;\n const {order, disabled, oneOfParams} = spec.viewSpec;\n\n const specProperties = React.useMemo(\n () => (isObjectLike(spec.properties) ? (spec.properties as Record<string, Spec>) : {}),\n [spec.properties],\n );\n\n const [oneOfValue, setOneOfValue] = React.useState(() => {\n let valueKeys: string[] | undefined;\n\n if (isObjectLike(input.value)) {\n const keys = Object.keys(input.value);\n\n if (keys.length) {\n valueKeys = keys;\n }\n }\n\n return (valueKeys || order || Object.keys(specProperties))[0];\n });\n\n const onOneOfChange = React.useCallback(\n ([newValue]: string[]) => {\n if (newValue !== oneOfValue) {\n const specType = specProperties[newValue]?.type || SpecTypes.Object;\n input.onChange(getSpecTypeDefaultValue(specType) as FieldObjectValue);\n setOneOfValue(newValue);\n onTogglerChange?.(newValue);\n }\n },\n [setOneOfValue, input, oneOfValue, specProperties, onTogglerChange],\n );\n\n const options = React.useMemo(\n () =>\n (order || Object.keys(specProperties)).map((value) => {\n const title =\n spec.description?.[value] ||\n specProperties[value]?.viewSpec.layoutTitle ||\n value ||\n '';\n\n return {\n value,\n title,\n content: title,\n };\n }),\n [spec.description, order, specProperties],\n );\n\n const togglerInput = React.useMemo(() => {\n if (\n oneOfParams?.toggler !== 'radio' &&\n (oneOfParams?.toggler === 'select' ||\n options.length > 3 ||\n some(options, ({title}) => title.length > MAX_TAB_TITLE_LENGTH))\n ) {\n return (\n <Select\n width=\"max\"\n value={[oneOfValue]}\n onUpdate={onOneOfChange}\n options={options}\n disabled={disabled}\n filterable={options.length > 7}\n qa={name}\n />\n );\n }\n\n return (\n <SegmentedRadioGroup\n value={oneOfValue}\n onChange={(event) => onOneOfChange([event.target.value])}\n disabled={disabled}\n qa={name}\n >\n {options.map(({value, title}) => (\n <SegmentedRadioGroup.Option key={value} value={value}>\n {title}\n </SegmentedRadioGroup.Option>\n ))}\n </SegmentedRadioGroup>\n );\n }, [options, oneOfValue, onOneOfChange, name, oneOfParams?.toggler, disabled]);\n\n const toggler = React.useMemo(() => {\n if (Layout) {\n return <Layout {...props}>{togglerInput}</Layout>;\n }\n\n return togglerInput;\n }, [Layout, togglerInput, props]);\n\n return {oneOfValue, specProperties, toggler, togglerInput};\n};\n"]}
1
+ {"version":3,"file":"useOneOf.js","sourceRoot":"../../../../../src","sources":["editor/dynamic-forms-custom/hooks/useOneOf.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {\n FieldObjectValue,\n ObjectIndependentInputProps,\n Spec,\n SpecTypes,\n} from '@gravity-ui/dynamic-forms';\nimport {SegmentedRadioGroup, Select} from '@gravity-ui/uikit';\nimport isObjectLike from 'lodash/isObjectLike';\nimport some from 'lodash/some';\n\nconst MAX_TAB_TITLE_LENGTH = 20;\n\nexport interface UseOneOfParams {\n props: ObjectIndependentInputProps;\n onTogglerChange?: (value: string) => void;\n}\n\nexport const getSpecTypeDefaultValue = (type: SpecTypes) => {\n switch (type) {\n case SpecTypes.Array:\n return [];\n case SpecTypes.Boolean:\n case SpecTypes.Number:\n case SpecTypes.String:\n return undefined;\n default:\n return {};\n }\n};\n\nexport const useOneOf = ({props, onTogglerChange}: UseOneOfParams) => {\n const {name, input, spec, Layout} = props;\n const {order, disabled, oneOfParams} = spec.viewSpec;\n\n const specProperties = React.useMemo(\n () => (isObjectLike(spec.properties) ? (spec.properties as Record<string, Spec>) : {}),\n [spec.properties],\n );\n\n const [oneOfValue, setOneOfValue] = React.useState(() => {\n let valueKeys: string[] | undefined;\n\n if (isObjectLike(input.value)) {\n const keys = Object.keys(input.value);\n\n if (keys.length) {\n valueKeys = keys;\n }\n }\n\n return (valueKeys || order || Object.keys(specProperties))[0];\n });\n\n const onOneOfChange = React.useCallback(\n ([newValue]: string[]) => {\n if (newValue !== oneOfValue) {\n const specType = specProperties[newValue]?.type || SpecTypes.Object;\n input.onChange(getSpecTypeDefaultValue(specType) as FieldObjectValue);\n setOneOfValue(newValue);\n onTogglerChange?.(newValue);\n }\n },\n [setOneOfValue, input, oneOfValue, specProperties, onTogglerChange],\n );\n\n const options = React.useMemo(\n () =>\n (order || Object.keys(specProperties)).map((value) => {\n const title =\n spec.description?.[value] ||\n specProperties[value]?.viewSpec.layoutTitle ||\n value ||\n '';\n\n return {\n value,\n title,\n content: title,\n };\n }),\n [spec.description, order, specProperties],\n );\n\n const togglerInput = React.useMemo(() => {\n if (\n oneOfParams?.toggler !== 'radio' &&\n (oneOfParams?.toggler === 'select' ||\n options.length > 3 ||\n some(options, ({title}) => title.length > MAX_TAB_TITLE_LENGTH))\n ) {\n return (\n <Select\n width=\"max\"\n value={[oneOfValue]}\n onUpdate={onOneOfChange}\n options={options}\n disabled={disabled}\n filterable={options.length > 7}\n qa={name}\n />\n );\n }\n\n return (\n <SegmentedRadioGroup\n value={oneOfValue}\n onChange={(event) => onOneOfChange([event.target.value])}\n disabled={disabled}\n qa={name}\n >\n {options.map(({value, title}) => (\n <SegmentedRadioGroup.Option key={value} value={value}>\n {title}\n </SegmentedRadioGroup.Option>\n ))}\n </SegmentedRadioGroup>\n );\n }, [options, oneOfValue, onOneOfChange, name, oneOfParams?.toggler, disabled]);\n\n const toggler = React.useMemo(() => {\n if (Layout) {\n return <Layout {...props}>{togglerInput}</Layout>;\n }\n\n return togglerInput;\n }, [Layout, togglerInput, props]);\n\n return {oneOfValue, specProperties, toggler, togglerInput};\n};\n"]}
@@ -1,4 +1,4 @@
1
- import cloneDeep from 'lodash/cloneDeep';
1
+ import cloneDeep from "lodash/cloneDeep.js";
2
2
  export const changeBlocksOrder = (array, oldIndex, newIndex) => {
3
3
  const result = [...array];
4
4
  const element = result.splice(oldIndex, 1)[0];
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"../../../../../src","sources":["editor/store/main/utils.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAMzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,KAAyB,EACzB,QAAgB,EAChB,QAAgB,EAClB,EAAE;IACA,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAEpC,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAyB,EAAE,KAAa,EAAE,EAAE;IACvE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAiB,EAAE,kBAA0B,EAAE,EAAE;IAC9E,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QACZ,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED,iCAAiC;IACjC,OAAO,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAyB,EAAE,KAAuB,EAAE,KAAa,EAAE,EAAE;IAC1F,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAE/B,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAoB,EAAE,EAAE;IACnD,uCAAW,OAAO,KAAE,QAAQ,EAAE,KAAK,IAAE;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,SAAiB,EAAE,EAAE,CACvD,SAAS,KAAK,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\n\nimport {ConstructorBlock, PageContent} from '../../../models';\n\nimport {EditorBlockId} from './reducer';\n\nexport const changeBlocksOrder = (\n array: ConstructorBlock[],\n oldIndex: number,\n newIndex: number,\n) => {\n const result = [...array];\n const element = result.splice(oldIndex, 1)[0];\n result.splice(newIndex, 0, element);\n\n return result;\n};\n\nexport const duplicateBlock = (array: ConstructorBlock[], index: number) => {\n const result = [...array];\n result.splice(index + 1, 0, cloneDeep(result[index]));\n\n return result;\n};\n\nexport const getNewBlockIndex = (id: EditorBlockId, orderedBlocksCount: number) => {\n if (id === -1) {\n return orderedBlocksCount;\n }\n\n // id === 'string' - header block\n return typeof id === 'string' ? 0 : id + 1;\n};\n\nexport const addBlock = (array: ConstructorBlock[], block: ConstructorBlock, index: number) => {\n const result = [...array];\n result.splice(index, 0, block);\n\n return result;\n};\n\nexport const addEditorProps = (content: PageContent) => {\n return {...content, animated: false};\n};\n\nexport const getErrorBoundaryState = (prevState: number) =>\n prevState === Number.MAX_SAFE_INTEGER ? 0 : prevState + 1;\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"../../../../../src","sources":["editor/store/main/utils.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,4BAAyB;AAMzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,KAAyB,EACzB,QAAgB,EAChB,QAAgB,EAClB,EAAE;IACA,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAEpC,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAyB,EAAE,KAAa,EAAE,EAAE;IACvE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAiB,EAAE,kBAA0B,EAAE,EAAE;IAC9E,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QACZ,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED,iCAAiC;IACjC,OAAO,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAyB,EAAE,KAAuB,EAAE,KAAa,EAAE,EAAE;IAC1F,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAE/B,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAoB,EAAE,EAAE;IACnD,uCAAW,OAAO,KAAE,QAAQ,EAAE,KAAK,IAAE;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,SAAiB,EAAE,EAAE,CACvD,SAAS,KAAK,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\n\nimport {ConstructorBlock, PageContent} from '../../../models';\n\nimport {EditorBlockId} from './reducer';\n\nexport const changeBlocksOrder = (\n array: ConstructorBlock[],\n oldIndex: number,\n newIndex: number,\n) => {\n const result = [...array];\n const element = result.splice(oldIndex, 1)[0];\n result.splice(newIndex, 0, element);\n\n return result;\n};\n\nexport const duplicateBlock = (array: ConstructorBlock[], index: number) => {\n const result = [...array];\n result.splice(index + 1, 0, cloneDeep(result[index]));\n\n return result;\n};\n\nexport const getNewBlockIndex = (id: EditorBlockId, orderedBlocksCount: number) => {\n if (id === -1) {\n return orderedBlocksCount;\n }\n\n // id === 'string' - header block\n return typeof id === 'string' ? 0 : id + 1;\n};\n\nexport const addBlock = (array: ConstructorBlock[], block: ConstructorBlock, index: number) => {\n const result = [...array];\n result.splice(index, 0, block);\n\n return result;\n};\n\nexport const addEditorProps = (content: PageContent) => {\n return {...content, animated: false};\n};\n\nexport const getErrorBoundaryState = (prevState: number) =>\n prevState === Number.MAX_SAFE_INTEGER ? 0 : prevState + 1;\n"]}
@@ -1,4 +1,4 @@
1
- import capitalize from 'lodash/capitalize';
1
+ import capitalize from "lodash/capitalize.js";
2
2
  import { ViewModeItem } from "../types/index.js";
3
3
  export const formatBlockName = (name) => capitalize(name).replace(/(block|-)/g, ' ');
4
4
  export const addCustomDecorator = (decorators, custom = {}) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["editor/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAC,YAAY,EAAC,0BAAiB;AAEtC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AAE7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAA4B,EAAE,SAAS,EAAkB,EAAE,EAAE;IAC5F,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAEjD,uCACO,MAAM,KACT,UAAU,kCACH,gBAAgB,KACnB,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,OAE/D;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAC,KAAK,EAAE,IAAI,EAAuB,EAAE,EAAE,CAC9D,GAAG,IAAI,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAsB,EAAE,EAAE,CACpD,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC","sourcesContent":["import capitalize from 'lodash/capitalize';\n\nimport {BlockDecorationProps, BlockDecorator, CustomConfig} from '../../models';\nimport {ViewModeItem} from '../types';\n\nexport const formatBlockName = (name: string) => capitalize(name).replace(/(block|-)/g, ' ');\n\nexport const addCustomDecorator = (decorators: BlockDecorator[], custom = {} as CustomConfig) => {\n const customDecorators = custom.decorators || {};\n\n return {\n ...custom,\n decorators: {\n ...customDecorators,\n block: [...(customDecorators.block || []), ...decorators],\n },\n };\n};\n\nexport const getBlockId = ({index, type}: BlockDecorationProps) =>\n `${type}${index === undefined ? '' : `-${index}`}`;\n\nexport const checkIsMobile = (viewMode: ViewModeItem) =>\n [ViewModeItem.Mobile, ViewModeItem.Tablet].includes(viewMode);\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["editor/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,6BAA0B;AAG3C,OAAO,EAAC,YAAY,EAAC,0BAAiB;AAEtC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AAE7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAA4B,EAAE,SAAS,EAAkB,EAAE,EAAE;IAC5F,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAEjD,uCACO,MAAM,KACT,UAAU,kCACH,gBAAgB,KACnB,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,OAE/D;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAC,KAAK,EAAE,IAAI,EAAuB,EAAE,EAAE,CAC9D,GAAG,IAAI,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAsB,EAAE,EAAE,CACpD,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC","sourcesContent":["import capitalize from 'lodash/capitalize';\n\nimport {BlockDecorationProps, BlockDecorator, CustomConfig} from '../../models';\nimport {ViewModeItem} from '../types';\n\nexport const formatBlockName = (name: string) => capitalize(name).replace(/(block|-)/g, ' ');\n\nexport const addCustomDecorator = (decorators: BlockDecorator[], custom = {} as CustomConfig) => {\n const customDecorators = custom.decorators || {};\n\n return {\n ...custom,\n decorators: {\n ...customDecorators,\n block: [...(customDecorators.block || []), ...decorators],\n },\n };\n};\n\nexport const getBlockId = ({index, type}: BlockDecorationProps) =>\n `${type}${index === undefined ? '' : `-${index}`}`;\n\nexport const checkIsMobile = (viewMode: ViewModeItem) =>\n [ViewModeItem.Mobile, ViewModeItem.Tablet].includes(viewMode);\n"]}
@@ -2,7 +2,7 @@ import Ajv from 'ajv';
2
2
  import ajvKeywords from 'ajv-keywords';
3
3
  import yaml from 'js-yaml';
4
4
  import SourceMap from 'js-yaml-source-map';
5
- import isArray from 'lodash/isArray';
5
+ import isArray from "lodash/isArray.js";
6
6
  const SUCCESS_MESSAGE = 'Valid';
7
7
  export var CodeEditorMessageStatus;
8
8
  (function (CodeEditorMessageStatus) {
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"../../../../src","sources":["editor/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,GAAoC,MAAM,KAAK,CAAC;AACvD,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAE3C,OAAO,OAAO,MAAM,gBAAgB,CAAC;AAErC,MAAM,eAAe,GAAG,OAAO,CAAC;AAMhC,MAAM,CAAN,IAAY,uBAIX;AAJD,WAAY,uBAAuB;IAC/B,8CAAmB,CAAA;IACnB,8CAAmB,CAAA;IACnB,0CAAe,CAAA;AACnB,CAAC,EAJW,uBAAuB,KAAvB,uBAAuB,QAIlC;AAED,MAAM,UAAU,eAAe,CAAC,MAAmB;IAC/C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;IACtF,0DAA0D;IAC1D,+EAA+E;IAC/E,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAE3B,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,SAA2B;IACjE,IAAI,MAA8B,CAAC;IAEnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,EAAC,MAAM,EAAE,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAC,CAAC;IAC5E,CAAC;IAED,IAAI,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC;QAEhE,SAAS,CAAC,IAAI,CAAC,CAAC;QAEhB,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CACjC,CAAC,EAAC,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAc,EAAE,EAAE;gBACzD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC1E,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBAC7D,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBACjB,OAAO,GAAG,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1C,CAAC;oBACD,OAAO,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC;gBAC9B,CAAC,CAAC,CAAC;gBACH,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,OAAO,GAAG,GAAG,GAAG,YAAY,IAAI,UAAU,KAAK,OAAO,KAAK,YAAY,CAAC,IAAI,CACxE,IAAI,CACP,EAAE,CAAC;YACR,CAAC,CACJ,CAAC;YACF,MAAM,GAAG,EAAC,MAAM,EAAE,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,EAAC,MAAM,EAAE,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAC,CAAC;QAC9E,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,EAAC,OAAO,EAAC,GAAG,CAAsB,CAAC;QACzC,MAAM,GAAG,EAAC,MAAM,EAAE,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAiB,EAAC,CAAC;IAC9E,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC","sourcesContent":["import Ajv, {ErrorObject, ValidateFunction} from 'ajv';\nimport ajvKeywords from 'ajv-keywords';\nimport yaml from 'js-yaml';\nimport SourceMap from 'js-yaml-source-map';\nimport {JSONSchema4} from 'json-schema';\nimport isArray from 'lodash/isArray';\n\nconst SUCCESS_MESSAGE = 'Valid';\nexport interface CodeEditorMessageProps {\n text: string;\n status: CodeEditorMessageStatus;\n}\n\nexport enum CodeEditorMessageStatus {\n SUCCESS = 'success',\n WARNING = 'warning',\n ERROR = 'error',\n}\n\nexport function createValidator(schema: JSONSchema4) {\n const ajv = new Ajv({$data: true, allErrors: true, schemas: [schema], strict: false});\n // TODO: select is deprecated, replace with discriminator:\n // https://github.com/ajv-validator/ajv-keywords#selectselectcasesselectdefault\n ajvKeywords(ajv, 'select');\n\n return ajv.compile(schema);\n}\n\nexport function validate(content: string, validator: ValidateFunction) {\n let result: CodeEditorMessageProps;\n\n if (!content) {\n return {status: CodeEditorMessageStatus.SUCCESS, text: SUCCESS_MESSAGE};\n }\n\n try {\n const jsYamlMap = new SourceMap();\n const data = yaml.load(content, {listener: jsYamlMap.listen()});\n\n validator(data);\n\n if (validator.errors) {\n const messages = validator.errors.map(\n ({instancePath, schemaPath, message, params}: ErrorObject) => {\n const pointer = jsYamlMap.lookup(instancePath.split('/').filter(Boolean));\n const stringParams = Object.entries(params).map(([key, value]) => {\n if (isArray(value)) {\n return `${key}: ${value.join(' | ')}`;\n }\n return `${key}: ${value}`;\n });\n const ref = pointer ? `${pointer.line}: ` : '';\n return `${ref}${instancePath || schemaPath}: ${message}\\n${stringParams.join(\n '\\n',\n )}`;\n },\n );\n result = {status: CodeEditorMessageStatus.WARNING, text: messages.join('\\n\\n')};\n } else {\n result = {status: CodeEditorMessageStatus.SUCCESS, text: SUCCESS_MESSAGE};\n }\n } catch (e) {\n const {message} = e as {message: string};\n result = {status: CodeEditorMessageStatus.ERROR, text: message as string};\n }\n\n return result;\n}\n"]}
1
+ {"version":3,"file":"validation.js","sourceRoot":"../../../../src","sources":["editor/utils/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import Ajv, {ErrorObject, ValidateFunction} from 'ajv';\nimport ajvKeywords from 'ajv-keywords';\nimport yaml from 'js-yaml';\nimport SourceMap from 'js-yaml-source-map';\nimport {JSONSchema4} from 'json-schema';\nimport isArray from 'lodash/isArray';\n\nconst SUCCESS_MESSAGE = 'Valid';\nexport interface CodeEditorMessageProps {\n text: string;\n status: CodeEditorMessageStatus;\n}\n\nexport enum CodeEditorMessageStatus {\n SUCCESS = 'success',\n WARNING = 'warning',\n ERROR = 'error',\n}\n\nexport function createValidator(schema: JSONSchema4) {\n const ajv = new Ajv({$data: true, allErrors: true, schemas: [schema], strict: false});\n // TODO: select is deprecated, replace with discriminator:\n // https://github.com/ajv-validator/ajv-keywords#selectselectcasesselectdefault\n ajvKeywords(ajv, 'select');\n\n return ajv.compile(schema);\n}\n\nexport function validate(content: string, validator: ValidateFunction) {\n let result: CodeEditorMessageProps;\n\n if (!content) {\n return {status: CodeEditorMessageStatus.SUCCESS, text: SUCCESS_MESSAGE};\n }\n\n try {\n const jsYamlMap = new SourceMap();\n const data = yaml.load(content, {listener: jsYamlMap.listen()});\n\n validator(data);\n\n if (validator.errors) {\n const messages = validator.errors.map(\n ({instancePath, schemaPath, message, params}: ErrorObject) => {\n const pointer = jsYamlMap.lookup(instancePath.split('/').filter(Boolean));\n const stringParams = Object.entries(params).map(([key, value]) => {\n if (isArray(value)) {\n return `${key}: ${value.join(' | ')}`;\n }\n return `${key}: ${value}`;\n });\n const ref = pointer ? `${pointer.line}: ` : '';\n return `${ref}${instancePath || schemaPath}: ${message}\\n${stringParams.join(\n '\\n',\n )}`;\n },\n );\n result = {status: CodeEditorMessageStatus.WARNING, text: messages.join('\\n\\n')};\n } else {\n result = {status: CodeEditorMessageStatus.SUCCESS, text: SUCCESS_MESSAGE};\n }\n } catch (e) {\n const {message} = e as {message: string};\n result = {status: CodeEditorMessageStatus.ERROR, text: message as string};\n }\n\n return result;\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import noop from 'lodash/noop';
2
+ import noop from "lodash/noop.js";
3
3
  import { MobileContext } from "../context/mobileContext/index.js";
4
4
  export default function useFocus(element) {
5
5
  const isMobile = React.useContext(MobileContext);
@@ -1 +1 @@
1
- {"version":3,"file":"useFocus.js","sourceRoot":"../../../src","sources":["hooks/useFocus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,IAAI,MAAM,aAAa,CAAC;AAE/B,OAAO,EAAC,aAAa,EAAC,0CAAiC;AAEvD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,OAAqB;IAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAEjD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEnE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,QAAQ,EAAE,CAAC;gBACX,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;gBAClE,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;YACxE,CAAC;YAED,OAAO,GAAG,EAAE;gBACR,IAAI,QAAQ,EAAE,CAAC;oBACX,OAAO,CAAC,mBAAmB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;oBACpD,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;gBAC1D,CAAC;YACL,CAAC,CAAC;QACN,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE9C,OAAO;QACH,QAAQ;QACR,QAAQ;QACR,UAAU;KACb,CAAC;AACN,CAAC","sourcesContent":["import * as React from 'react';\n\nimport noop from 'lodash/noop';\n\nimport {MobileContext} from '../context/mobileContext';\n\nexport default function useFocus(element?: HTMLElement) {\n const isMobile = React.useContext(MobileContext);\n\n const [hasFocus, setHasFocus] = React.useState(false);\n const setFocus = React.useCallback(() => setHasFocus(true), []);\n const unsetFocus = React.useCallback(() => setHasFocus(false), []);\n\n React.useEffect(() => {\n if (element) {\n if (isMobile) {\n element.addEventListener('pointerdown', setFocus, {passive: true});\n } else {\n element.addEventListener('mouseenter', setFocus, {passive: true});\n element.addEventListener('mouseleave', unsetFocus, {passive: true});\n }\n\n return () => {\n if (isMobile) {\n element.removeEventListener('pointerdown', setFocus);\n } else {\n element.removeEventListener('mouseenter', setFocus);\n element.removeEventListener('mouseleave', unsetFocus);\n }\n };\n }\n\n return noop;\n }, [element, isMobile, setFocus, unsetFocus]);\n\n return {\n hasFocus,\n setFocus,\n unsetFocus,\n };\n}\n"]}
1
+ {"version":3,"file":"useFocus.js","sourceRoot":"../../../src","sources":["hooks/useFocus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,IAAI,uBAAoB;AAE/B,OAAO,EAAC,aAAa,EAAC,0CAAiC;AAEvD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,OAAqB;IAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAEjD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEnE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,QAAQ,EAAE,CAAC;gBACX,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;gBAClE,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;YACxE,CAAC;YAED,OAAO,GAAG,EAAE;gBACR,IAAI,QAAQ,EAAE,CAAC;oBACX,OAAO,CAAC,mBAAmB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;oBACpD,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;gBAC1D,CAAC;YACL,CAAC,CAAC;QACN,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE9C,OAAO;QACH,QAAQ;QACR,QAAQ;QACR,UAAU;KACb,CAAC;AACN,CAAC","sourcesContent":["import * as React from 'react';\n\nimport noop from 'lodash/noop';\n\nimport {MobileContext} from '../context/mobileContext';\n\nexport default function useFocus(element?: HTMLElement) {\n const isMobile = React.useContext(MobileContext);\n\n const [hasFocus, setHasFocus] = React.useState(false);\n const setFocus = React.useCallback(() => setHasFocus(true), []);\n const unsetFocus = React.useCallback(() => setHasFocus(false), []);\n\n React.useEffect(() => {\n if (element) {\n if (isMobile) {\n element.addEventListener('pointerdown', setFocus, {passive: true});\n } else {\n element.addEventListener('mouseenter', setFocus, {passive: true});\n element.addEventListener('mouseleave', unsetFocus, {passive: true});\n }\n\n return () => {\n if (isMobile) {\n element.removeEventListener('pointerdown', setFocus);\n } else {\n element.removeEventListener('mouseenter', setFocus);\n element.removeEventListener('mouseleave', unsetFocus);\n }\n };\n }\n\n return noop;\n }, [element, isMobile, setFocus, unsetFocus]);\n\n return {\n hasFocus,\n setFocus,\n unsetFocus,\n };\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import debounce from 'lodash/debounce';
2
+ import debounce from "lodash/debounce.js";
3
3
  const DEFAULT_RECALCULATE_ON_RESIZE_DELAY = 1000;
4
4
  const DEFAULT_OPTIONS = {
5
5
  recalculateOnResizeDelay: DEFAULT_RECALCULATE_ON_RESIZE_DELAY,
@@ -1 +1 @@
1
- {"version":3,"file":"useHeightCalculator.js","sourceRoot":"../../../src","sources":["hooks/useHeightCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAMvC,MAAM,mCAAmC,GAAG,IAAI,CAAC;AACjD,MAAM,eAAe,GAAG;IACpB,wBAAwB,EAAE,mCAAmC;CAChE,CAAC;AAEF,MAAM,mBAAmB,GAGC,CAAC,YAAY,EAAE,OAAO,GAAG,eAAe,EAAE,EAAE;IAClE,MAAM,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAClE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAqB,SAAS,CAAC,CAAC;IAE5F,MAAM,wBAAwB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACpD,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,YAAY,KAAK,eAAe;YAC7E,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9D,CAAC,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAExD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,MAAM,YAAY,GAAG,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC;QAElF,YAAY,EAAE,CAAC;QAEf,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QACjE,OAAO,GAAG,EAAE;YACR,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACvD,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAEzD,OAAO,eAAe,CAAC;AAC3B,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC","sourcesContent":["import * as React from 'react';\n\nimport debounce from 'lodash/debounce';\n\ntype HeightCalculatorOptions = {\n recalculateOnResizeDelay: number;\n};\n\nconst DEFAULT_RECALCULATE_ON_RESIZE_DELAY = 1000;\nconst DEFAULT_OPTIONS = {\n recalculateOnResizeDelay: DEFAULT_RECALCULATE_ON_RESIZE_DELAY,\n};\n\nconst useHeightCalculator: (\n containerRef: React.RefObject<HTMLElement>,\n options?: HeightCalculatorOptions,\n) => number | undefined = (containerRef, options = DEFAULT_OPTIONS) => {\n const recalculateOnResizeDelay = options.recalculateOnResizeDelay;\n const [containerHeight, setContainerHeight] = React.useState<number | undefined>(undefined);\n\n const calculateContainerHeight = React.useCallback(() => {\n if (containerRef.current && containerRef.current.offsetHeight !== containerHeight)\n setContainerHeight(containerRef.current.offsetHeight);\n }, [containerRef, containerHeight, setContainerHeight]);\n\n React.useEffect(() => {\n const handleResize = debounce(calculateContainerHeight, recalculateOnResizeDelay);\n\n handleResize();\n\n window.addEventListener('resize', handleResize, {passive: true});\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [calculateContainerHeight, recalculateOnResizeDelay]);\n\n return containerHeight;\n};\n\nexport default useHeightCalculator;\n"]}
1
+ {"version":3,"file":"useHeightCalculator.js","sourceRoot":"../../../src","sources":["hooks/useHeightCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,QAAQ,2BAAwB;AAMvC,MAAM,mCAAmC,GAAG,IAAI,CAAC;AACjD,MAAM,eAAe,GAAG;IACpB,wBAAwB,EAAE,mCAAmC;CAChE,CAAC;AAEF,MAAM,mBAAmB,GAGC,CAAC,YAAY,EAAE,OAAO,GAAG,eAAe,EAAE,EAAE;IAClE,MAAM,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAClE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAqB,SAAS,CAAC,CAAC;IAE5F,MAAM,wBAAwB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACpD,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,YAAY,KAAK,eAAe;YAC7E,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9D,CAAC,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAExD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,MAAM,YAAY,GAAG,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC;QAElF,YAAY,EAAE,CAAC;QAEf,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QACjE,OAAO,GAAG,EAAE;YACR,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACvD,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAEzD,OAAO,eAAe,CAAC;AAC3B,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC","sourcesContent":["import * as React from 'react';\n\nimport debounce from 'lodash/debounce';\n\ntype HeightCalculatorOptions = {\n recalculateOnResizeDelay: number;\n};\n\nconst DEFAULT_RECALCULATE_ON_RESIZE_DELAY = 1000;\nconst DEFAULT_OPTIONS = {\n recalculateOnResizeDelay: DEFAULT_RECALCULATE_ON_RESIZE_DELAY,\n};\n\nconst useHeightCalculator: (\n containerRef: React.RefObject<HTMLElement>,\n options?: HeightCalculatorOptions,\n) => number | undefined = (containerRef, options = DEFAULT_OPTIONS) => {\n const recalculateOnResizeDelay = options.recalculateOnResizeDelay;\n const [containerHeight, setContainerHeight] = React.useState<number | undefined>(undefined);\n\n const calculateContainerHeight = React.useCallback(() => {\n if (containerRef.current && containerRef.current.offsetHeight !== containerHeight)\n setContainerHeight(containerRef.current.offsetHeight);\n }, [containerRef, containerHeight, setContainerHeight]);\n\n React.useEffect(() => {\n const handleResize = debounce(calculateContainerHeight, recalculateOnResizeDelay);\n\n handleResize();\n\n window.addEventListener('resize', handleResize, {passive: true});\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [calculateContainerHeight, recalculateOnResizeDelay]);\n\n return containerHeight;\n};\n\nexport default useHeightCalculator;\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import debounce from 'lodash/debounce';
2
+ import debounce from "lodash/debounce.js";
3
3
  import { BREAKPOINTS } from "../constants.js";
4
4
  function calculate(windowWidth) {
5
5
  const breakpointsSorted = Object.values(BREAKPOINTS).sort((b1, b2) => b1 - b2);
@@ -1 +1 @@
1
- {"version":3,"file":"useWindowBreakpoint.js","sourceRoot":"../../../src","sources":["hooks/useWindowBreakpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAC,WAAW,EAAC,wBAAqB;AAEzC,SAAS,SAAS,CAAC,WAAmB;IAClC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAE/E,IAAI,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAElC,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,GAAG,UAAU,CAAC;QACxB,CAAC;aAAM,CAAC;YACJ,OAAO,MAAM,CAAC;QAClB,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB;IACvC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAEnE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE;YACzB,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAChD,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,MAAM,EAAE,CAAC;QAET,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QAE3D,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,UAAU,CAAC;AACtB,CAAC","sourcesContent":["import * as React from 'react';\n\nimport debounce from 'lodash/debounce';\n\nimport {BREAKPOINTS} from '../constants';\n\nfunction calculate(windowWidth: number) {\n const breakpointsSorted = Object.values(BREAKPOINTS).sort((b1, b2) => b1 - b2);\n\n let result = breakpointsSorted[0];\n\n for (const breakpoint of breakpointsSorted) {\n if (windowWidth >= breakpoint) {\n result = breakpoint;\n } else {\n return result;\n }\n }\n\n return result;\n}\n\nexport default function useWindowBreakpoint() {\n const [breakpoint, setBreakpoint] = React.useState(BREAKPOINTS.sm);\n\n React.useEffect(() => {\n setBreakpoint(calculate(window.innerWidth));\n\n const detect = debounce(() => {\n setBreakpoint(calculate(window.innerWidth));\n }, 100);\n\n detect();\n\n window.addEventListener('resize', detect, {passive: true});\n\n return () => window.removeEventListener('resize', detect);\n }, []);\n\n return breakpoint;\n}\n"]}
1
+ {"version":3,"file":"useWindowBreakpoint.js","sourceRoot":"../../../src","sources":["hooks/useWindowBreakpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,QAAQ,2BAAwB;AAEvC,OAAO,EAAC,WAAW,EAAC,wBAAqB;AAEzC,SAAS,SAAS,CAAC,WAAmB;IAClC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAE/E,IAAI,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAElC,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,GAAG,UAAU,CAAC;QACxB,CAAC;aAAM,CAAC;YACJ,OAAO,MAAM,CAAC;QAClB,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB;IACvC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAEnE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE;YACzB,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAChD,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,MAAM,EAAE,CAAC;QAET,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QAE3D,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,UAAU,CAAC;AACtB,CAAC","sourcesContent":["import * as React from 'react';\n\nimport debounce from 'lodash/debounce';\n\nimport {BREAKPOINTS} from '../constants';\n\nfunction calculate(windowWidth: number) {\n const breakpointsSorted = Object.values(BREAKPOINTS).sort((b1, b2) => b1 - b2);\n\n let result = breakpointsSorted[0];\n\n for (const breakpoint of breakpointsSorted) {\n if (windowWidth >= breakpoint) {\n result = breakpoint;\n } else {\n return result;\n }\n }\n\n return result;\n}\n\nexport default function useWindowBreakpoint() {\n const [breakpoint, setBreakpoint] = React.useState(BREAKPOINTS.sm);\n\n React.useEffect(() => {\n setBreakpoint(calculate(window.innerWidth));\n\n const detect = debounce(() => {\n setBreakpoint(calculate(window.innerWidth));\n }, 100);\n\n detect();\n\n window.addEventListener('resize', detect, {passive: true});\n\n return () => window.removeEventListener('resize', detect);\n }, []);\n\n return breakpoint;\n}\n"]}
@@ -123,6 +123,7 @@ export interface HeaderBlockProps {
123
123
  image?: ThemedImage;
124
124
  video?: ThemedMediaVideoProps;
125
125
  mediaView?: MediaView;
126
+ centered?: boolean;
126
127
  background?: ThemedHeaderBlockBackground;
127
128
  theme?: 'light' | 'dark';
128
129
  verticalOffset?: '0' | 's' | 'm' | 'l' | 'xl';