@gravity-ui/page-constructor 3.5.0-alpha.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +2 -0
  3. package/build/cjs/blocks/Banner/schema.d.ts +63 -21
  4. package/build/cjs/blocks/CardLayout/schema.d.ts +10 -4
  5. package/build/cjs/blocks/Companies/schema.d.ts +5 -2
  6. package/build/cjs/blocks/ContentLayout/ContentLayout.js +3 -2
  7. package/build/cjs/blocks/ContentLayout/schema.d.ts +107 -61
  8. package/build/cjs/blocks/ContentLayout/schema.js +23 -18
  9. package/build/cjs/blocks/ExtendedFeatures/schema.d.ts +31 -4
  10. package/build/cjs/blocks/ExtendedFeatures/schema.js +2 -3
  11. package/build/cjs/blocks/FilterBlock/schema.d.ts +13 -5
  12. package/build/cjs/blocks/FilterBlock/schema.js +13 -2
  13. package/build/cjs/blocks/Header/Header.css +6 -7
  14. package/build/cjs/blocks/Header/schema.d.ts +92 -36
  15. package/build/cjs/blocks/Header/schema.js +1 -0
  16. package/build/cjs/blocks/HeaderSlider/schema.d.ts +48 -53
  17. package/build/cjs/blocks/HeaderSlider/schema.js +3 -1
  18. package/build/cjs/blocks/Icons/schema.d.ts +3 -1
  19. package/build/cjs/blocks/Icons/schema.js +2 -1
  20. package/build/cjs/blocks/Info/schema.d.ts +19 -8
  21. package/build/cjs/blocks/Map/schema.d.ts +17 -6
  22. package/build/cjs/blocks/Media/schema.d.ts +204 -152
  23. package/build/cjs/blocks/Media/schema.js +1 -1
  24. package/build/cjs/blocks/PromoFeaturesBlock/schema.d.ts +22 -8
  25. package/build/cjs/blocks/PromoFeaturesBlock/schema.js +1 -0
  26. package/build/cjs/blocks/Questions/schema.d.ts +7 -3
  27. package/build/cjs/blocks/Slider/schema.d.ts +13 -18
  28. package/build/cjs/blocks/Slider/schema.js +4 -5
  29. package/build/cjs/blocks/Table/schema.d.ts +5 -2
  30. package/build/cjs/blocks/Table/schema.js +12 -2
  31. package/build/cjs/blocks/Tabs/schema.d.ts +43 -16
  32. package/build/cjs/components/BlockBase/BlockBase.js +2 -2
  33. package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +1 -1
  34. package/build/cjs/components/Image/schema.d.ts +1 -0
  35. package/build/cjs/components/Image/schema.js +3 -2
  36. package/build/cjs/containers/PageConstructor/components/ConstructorBlock/ConstructorBlock.js +1 -1
  37. package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +1 -1
  38. package/build/cjs/customization/BlockDecoration.d.ts +1 -1
  39. package/build/cjs/customization/BlockDecoration.js +5 -6
  40. package/build/cjs/editor/{Components → components}/AddBlock/AddBlock.css +1 -1
  41. package/build/cjs/editor/components/AddBlock/AddBlock.d.ts +7 -0
  42. package/build/cjs/editor/{Components → components}/AddBlock/AddBlock.js +2 -2
  43. package/build/cjs/editor/components/BlockForm/BlockForm.d.ts +12 -0
  44. package/build/cjs/editor/components/BlockForm/BlockForm.js +33 -0
  45. package/build/cjs/editor/components/ControlPanel/ControlPanel.css +26 -0
  46. package/build/cjs/editor/components/ControlPanel/ControlPanel.d.ts +8 -0
  47. package/build/cjs/editor/components/ControlPanel/ControlPanel.js +25 -0
  48. package/build/cjs/editor/components/ControlPanel/i18n/en.json +3 -0
  49. package/build/cjs/editor/components/ControlPanel/i18n/index.d.ts +2 -0
  50. package/build/cjs/editor/components/ControlPanel/i18n/index.js +8 -0
  51. package/build/cjs/editor/components/ControlPanel/i18n/ru.json +3 -0
  52. package/build/cjs/editor/components/EditBlock/EditBlock.d.ts +13 -0
  53. package/build/cjs/editor/components/EditBlock/EditBlock.js +44 -0
  54. package/build/cjs/editor/components/ErrorBoundary/ErrorBoundary.css +27 -0
  55. package/build/cjs/editor/components/ErrorBoundary/ErrorBoundary.d.ts +13 -0
  56. package/build/cjs/editor/components/ErrorBoundary/ErrorBoundary.js +35 -0
  57. package/build/cjs/editor/components/ErrorBoundary/i18n/en.json +4 -0
  58. package/build/cjs/editor/components/ErrorBoundary/i18n/index.d.ts +2 -0
  59. package/build/cjs/editor/components/ErrorBoundary/i18n/index.js +8 -0
  60. package/build/cjs/editor/components/ErrorBoundary/i18n/ru.json +4 -0
  61. package/build/cjs/editor/components/Layout/Layout.css +39 -0
  62. package/build/cjs/editor/components/Layout/Layout.d.ts +16 -0
  63. package/build/cjs/editor/components/Layout/Layout.js +34 -0
  64. package/build/cjs/editor/components/PagePropsForm/PagePropsForm.d.ts +10 -0
  65. package/build/cjs/editor/components/PagePropsForm/PagePropsForm.js +17 -0
  66. package/build/cjs/editor/containers/Editor/Editor.d.ts +2 -0
  67. package/build/cjs/editor/containers/Editor/Editor.js +40 -0
  68. package/build/cjs/editor/containers/Form/Form.css +94 -0
  69. package/build/cjs/editor/containers/Form/Form.d.ts +11 -0
  70. package/build/cjs/editor/containers/Form/Form.js +47 -0
  71. package/build/cjs/editor/containers/Form/dynamic-form-custom.css +0 -0
  72. package/build/cjs/editor/data/templates/banner-block.json +25 -0
  73. package/build/cjs/editor/data/templates/card-layout-block.json +39 -0
  74. package/build/cjs/editor/data/templates/companies-block.json +20 -0
  75. package/build/cjs/editor/data/templates/content-layout-block.json +56 -0
  76. package/build/cjs/editor/data/templates/extended-features-block.json +56 -0
  77. package/build/cjs/editor/data/templates/filter-block.json +62 -0
  78. package/build/cjs/editor/data/templates/header-block.json +19 -0
  79. package/build/cjs/editor/data/templates/header-slider-block.json +69 -0
  80. package/build/cjs/editor/data/templates/icons-block.json +32 -0
  81. package/build/cjs/editor/data/templates/info-block.json +40 -0
  82. package/build/cjs/editor/data/templates/link-table-block.json +10 -0
  83. package/build/cjs/editor/data/templates/map-block.json +48 -0
  84. package/build/cjs/editor/data/templates/media-block.json +15 -0
  85. package/build/cjs/editor/data/templates/preview-block.json +38 -0
  86. package/build/cjs/editor/data/templates/promo-features-block.json +52 -0
  87. package/build/cjs/editor/data/templates/questions-block.json +105 -0
  88. package/build/cjs/editor/data/templates/security-block.json +36 -0
  89. package/build/cjs/editor/data/templates/share-block.json +6 -0
  90. package/build/cjs/editor/data/templates/simple-block.json +7 -0
  91. package/build/cjs/editor/data/templates/slider-block.json +46 -0
  92. package/build/cjs/editor/data/templates/table-block.json +18 -0
  93. package/build/cjs/editor/data/templates/tabs-block.json +90 -0
  94. package/build/cjs/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.css +27 -0
  95. package/build/cjs/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.d.ts +19 -0
  96. package/build/cjs/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.js +72 -0
  97. package/build/cjs/editor/dynamic-forms-custom/config.d.ts +2 -0
  98. package/build/cjs/editor/dynamic-forms-custom/config.js +13 -0
  99. package/build/cjs/editor/dynamic-forms-custom/hooks/useOneOf.d.ts +12 -0
  100. package/build/cjs/editor/dynamic-forms-custom/hooks/useOneOf.js +75 -0
  101. package/build/cjs/editor/dynamic-forms-custom/parser/detect.d.ts +9 -0
  102. package/build/cjs/editor/dynamic-forms-custom/parser/detect.js +36 -0
  103. package/build/cjs/editor/dynamic-forms-custom/parser/index.d.ts +28 -0
  104. package/build/cjs/editor/dynamic-forms-custom/parser/index.js +188 -0
  105. package/build/cjs/editor/dynamic-forms-custom/parser/types.d.ts +29 -0
  106. package/build/cjs/editor/dynamic-forms-custom/parser/types.js +2 -0
  107. package/build/cjs/editor/dynamic-forms-custom/parser/views.d.ts +37 -0
  108. package/build/cjs/editor/dynamic-forms-custom/parser/views.js +46 -0
  109. package/build/cjs/editor/hooks/useFormSpec.d.ts +2 -0
  110. package/build/cjs/editor/hooks/useFormSpec.js +13 -0
  111. package/build/cjs/editor/hooks/usePreviousValue.d.ts +1 -0
  112. package/build/cjs/editor/hooks/usePreviousValue.js +11 -0
  113. package/build/cjs/editor/index.d.ts +1 -1
  114. package/build/cjs/editor/index.js +1 -1
  115. package/build/cjs/editor/store/index.d.ts +10 -11
  116. package/build/cjs/editor/store/index.js +66 -15
  117. package/build/cjs/editor/store/reducer.d.ts +24 -9
  118. package/build/cjs/editor/store/reducer.js +17 -31
  119. package/build/cjs/editor/store/utils.d.ts +1 -0
  120. package/build/cjs/editor/store/utils.js +3 -1
  121. package/build/cjs/editor/styles/root.css +5 -0
  122. package/build/cjs/editor/types/index.d.ts +15 -9
  123. package/build/cjs/editor/types/index.js +6 -0
  124. package/build/cjs/editor/utils/index.d.ts +4 -3
  125. package/build/cjs/editor/utils/index.js +6 -4
  126. package/build/cjs/grid/Col/Col.d.ts +1 -1
  127. package/build/cjs/models/constructor-items/blocks.d.ts +13 -8
  128. package/build/cjs/models/constructor.d.ts +2 -2
  129. package/build/cjs/models/customization.d.ts +3 -8
  130. package/build/cjs/models/navigation.d.ts +1 -0
  131. package/build/cjs/navigation/components/Header/Header.css +2 -0
  132. package/build/cjs/navigation/components/Header/Header.js +15 -4
  133. package/build/cjs/navigation/schema.d.ts +1 -0
  134. package/build/cjs/schema/constants.d.ts +908 -0
  135. package/build/cjs/schema/constants.js +42 -0
  136. package/build/cjs/schema/index.d.ts +9 -228
  137. package/build/cjs/schema/index.js +8 -46
  138. package/build/cjs/schema/validators/common.d.ts +71 -27
  139. package/build/cjs/schema/validators/common.js +50 -17
  140. package/build/cjs/sub-blocks/BackgroundCard/schema.d.ts +12 -5
  141. package/build/cjs/sub-blocks/BasicCard/schema.d.ts +8 -3
  142. package/build/cjs/sub-blocks/Content/schema.d.ts +14 -6
  143. package/build/cjs/sub-blocks/Content/schema.js +9 -1
  144. package/build/cjs/sub-blocks/LayoutItem/schema.d.ts +23 -9
  145. package/build/cjs/sub-blocks/MediaCard/schema.d.ts +16 -6
  146. package/build/cjs/sub-blocks/PriceDetailed/schema.d.ts +1 -0
  147. package/build/cjs/sub-blocks/PriceDetailed/schema.js +5 -1
  148. package/build/cjs/sub-blocks/Quote/schema.d.ts +6 -2
  149. package/build/esm/blocks/Banner/schema.d.ts +63 -21
  150. package/build/esm/blocks/CardLayout/schema.d.ts +10 -4
  151. package/build/esm/blocks/Companies/schema.d.ts +5 -2
  152. package/build/esm/blocks/ContentLayout/ContentLayout.js +3 -2
  153. package/build/esm/blocks/ContentLayout/schema.d.ts +107 -61
  154. package/build/esm/blocks/ContentLayout/schema.js +23 -18
  155. package/build/esm/blocks/ExtendedFeatures/schema.d.ts +31 -4
  156. package/build/esm/blocks/ExtendedFeatures/schema.js +3 -4
  157. package/build/esm/blocks/FilterBlock/schema.d.ts +13 -5
  158. package/build/esm/blocks/FilterBlock/schema.js +13 -2
  159. package/build/esm/blocks/Header/Header.css +6 -7
  160. package/build/esm/blocks/Header/schema.d.ts +92 -36
  161. package/build/esm/blocks/Header/schema.js +1 -0
  162. package/build/esm/blocks/HeaderSlider/schema.d.ts +48 -53
  163. package/build/esm/blocks/HeaderSlider/schema.js +2 -1
  164. package/build/esm/blocks/Icons/schema.d.ts +3 -1
  165. package/build/esm/blocks/Icons/schema.js +2 -1
  166. package/build/esm/blocks/Info/schema.d.ts +19 -8
  167. package/build/esm/blocks/Map/schema.d.ts +17 -6
  168. package/build/esm/blocks/Media/schema.d.ts +204 -152
  169. package/build/esm/blocks/Media/schema.js +2 -2
  170. package/build/esm/blocks/PromoFeaturesBlock/schema.d.ts +22 -8
  171. package/build/esm/blocks/PromoFeaturesBlock/schema.js +1 -0
  172. package/build/esm/blocks/Questions/schema.d.ts +7 -3
  173. package/build/esm/blocks/Slider/schema.d.ts +13 -18
  174. package/build/esm/blocks/Slider/schema.js +4 -5
  175. package/build/esm/blocks/Table/schema.d.ts +5 -2
  176. package/build/esm/blocks/Table/schema.js +12 -2
  177. package/build/esm/blocks/Tabs/schema.d.ts +43 -16
  178. package/build/esm/components/BlockBase/BlockBase.js +2 -2
  179. package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +1 -1
  180. package/build/esm/components/Image/schema.d.ts +1 -0
  181. package/build/esm/components/Image/schema.js +3 -2
  182. package/build/esm/containers/PageConstructor/components/ConstructorBlock/ConstructorBlock.js +1 -1
  183. package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +1 -1
  184. package/build/esm/customization/BlockDecoration.d.ts +1 -1
  185. package/build/esm/customization/BlockDecoration.js +6 -6
  186. package/build/esm/editor/{Components → components}/AddBlock/AddBlock.css +1 -1
  187. package/build/esm/editor/components/AddBlock/AddBlock.d.ts +8 -0
  188. package/build/esm/editor/{Components → components}/AddBlock/AddBlock.js +2 -2
  189. package/build/esm/editor/components/BlockForm/BlockForm.d.ts +12 -0
  190. package/build/esm/editor/components/BlockForm/BlockForm.js +30 -0
  191. package/build/esm/editor/components/ControlPanel/ControlPanel.css +26 -0
  192. package/build/esm/editor/components/ControlPanel/ControlPanel.d.ts +9 -0
  193. package/build/esm/editor/components/ControlPanel/ControlPanel.js +23 -0
  194. package/build/esm/editor/components/ControlPanel/i18n/en.json +3 -0
  195. package/build/esm/editor/components/ControlPanel/i18n/index.d.ts +2 -0
  196. package/build/esm/editor/components/ControlPanel/i18n/index.js +5 -0
  197. package/build/esm/editor/components/ControlPanel/i18n/ru.json +3 -0
  198. package/build/esm/editor/components/EditBlock/EditBlock.d.ts +14 -0
  199. package/build/esm/editor/components/EditBlock/EditBlock.js +41 -0
  200. package/build/esm/editor/components/ErrorBoundary/ErrorBoundary.css +27 -0
  201. package/build/esm/editor/components/ErrorBoundary/ErrorBoundary.d.ts +14 -0
  202. package/build/esm/editor/components/ErrorBoundary/ErrorBoundary.js +31 -0
  203. package/build/esm/editor/components/ErrorBoundary/i18n/en.json +4 -0
  204. package/build/esm/editor/components/ErrorBoundary/i18n/index.d.ts +2 -0
  205. package/build/esm/editor/components/ErrorBoundary/i18n/index.js +5 -0
  206. package/build/esm/editor/components/ErrorBoundary/i18n/ru.json +4 -0
  207. package/build/esm/editor/components/Layout/Layout.css +39 -0
  208. package/build/esm/editor/components/Layout/Layout.d.ts +17 -0
  209. package/build/esm/editor/components/Layout/Layout.js +32 -0
  210. package/build/esm/editor/components/PagePropsForm/PagePropsForm.d.ts +10 -0
  211. package/build/esm/editor/components/PagePropsForm/PagePropsForm.js +13 -0
  212. package/build/esm/editor/containers/Editor/Editor.d.ts +2 -0
  213. package/build/esm/editor/containers/Editor/Editor.js +36 -0
  214. package/build/esm/editor/containers/Form/Form.css +94 -0
  215. package/build/esm/editor/containers/Form/Form.d.ts +12 -0
  216. package/build/esm/editor/containers/Form/Form.js +45 -0
  217. package/build/esm/editor/containers/Form/dynamic-form-custom.css +0 -0
  218. package/build/esm/editor/data/templates/banner-block.json +25 -0
  219. package/build/esm/editor/data/templates/card-layout-block.json +39 -0
  220. package/build/esm/editor/data/templates/companies-block.json +20 -0
  221. package/build/esm/editor/data/templates/content-layout-block.json +56 -0
  222. package/build/esm/editor/data/templates/extended-features-block.json +56 -0
  223. package/build/esm/editor/data/templates/filter-block.json +62 -0
  224. package/build/esm/editor/data/templates/header-block.json +19 -0
  225. package/build/esm/editor/data/templates/header-slider-block.json +69 -0
  226. package/build/esm/editor/data/templates/icons-block.json +32 -0
  227. package/build/esm/editor/data/templates/info-block.json +40 -0
  228. package/build/esm/editor/data/templates/link-table-block.json +10 -0
  229. package/build/esm/editor/data/templates/map-block.json +48 -0
  230. package/build/esm/editor/data/templates/media-block.json +15 -0
  231. package/build/esm/editor/data/templates/preview-block.json +38 -0
  232. package/build/esm/editor/data/templates/promo-features-block.json +52 -0
  233. package/build/esm/editor/data/templates/questions-block.json +105 -0
  234. package/build/esm/editor/data/templates/security-block.json +36 -0
  235. package/build/esm/editor/data/templates/share-block.json +6 -0
  236. package/build/esm/editor/data/templates/simple-block.json +7 -0
  237. package/build/esm/editor/data/templates/slider-block.json +46 -0
  238. package/build/esm/editor/data/templates/table-block.json +18 -0
  239. package/build/esm/editor/data/templates/tabs-block.json +90 -0
  240. package/build/esm/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.css +27 -0
  241. package/build/esm/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.d.ts +20 -0
  242. package/build/esm/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.js +68 -0
  243. package/build/esm/editor/dynamic-forms-custom/config.d.ts +2 -0
  244. package/build/esm/editor/dynamic-forms-custom/config.js +9 -0
  245. package/build/esm/editor/dynamic-forms-custom/hooks/useOneOf.d.ts +12 -0
  246. package/build/esm/editor/dynamic-forms-custom/hooks/useOneOf.js +69 -0
  247. package/build/esm/editor/dynamic-forms-custom/parser/detect.d.ts +9 -0
  248. package/build/esm/editor/dynamic-forms-custom/parser/detect.js +32 -0
  249. package/build/esm/editor/dynamic-forms-custom/parser/index.d.ts +28 -0
  250. package/build/esm/editor/dynamic-forms-custom/parser/index.js +186 -0
  251. package/build/esm/editor/dynamic-forms-custom/parser/types.d.ts +29 -0
  252. package/build/esm/editor/dynamic-forms-custom/parser/types.js +1 -0
  253. package/build/esm/editor/dynamic-forms-custom/parser/views.d.ts +37 -0
  254. package/build/esm/editor/dynamic-forms-custom/parser/views.js +39 -0
  255. package/build/esm/editor/hooks/useFormSpec.d.ts +2 -0
  256. package/build/esm/editor/hooks/useFormSpec.js +9 -0
  257. package/build/esm/editor/hooks/usePreviousValue.d.ts +1 -0
  258. package/build/esm/editor/hooks/usePreviousValue.js +8 -0
  259. package/build/esm/editor/index.d.ts +1 -1
  260. package/build/esm/editor/index.js +1 -1
  261. package/build/esm/editor/store/index.d.ts +10 -11
  262. package/build/esm/editor/store/index.js +68 -17
  263. package/build/esm/editor/store/reducer.d.ts +24 -9
  264. package/build/esm/editor/store/reducer.js +15 -29
  265. package/build/esm/editor/store/utils.d.ts +1 -0
  266. package/build/esm/editor/store/utils.js +1 -0
  267. package/build/esm/editor/styles/root.css +5 -0
  268. package/build/esm/editor/types/index.d.ts +15 -9
  269. package/build/esm/editor/types/index.js +5 -1
  270. package/build/esm/editor/utils/index.d.ts +4 -3
  271. package/build/esm/editor/utils/index.js +4 -3
  272. package/build/esm/grid/Col/Col.d.ts +1 -1
  273. package/build/esm/models/constructor-items/blocks.d.ts +13 -8
  274. package/build/esm/models/constructor.d.ts +2 -2
  275. package/build/esm/models/customization.d.ts +3 -8
  276. package/build/esm/models/navigation.d.ts +1 -0
  277. package/build/esm/navigation/components/Header/Header.css +2 -0
  278. package/build/esm/navigation/components/Header/Header.js +16 -5
  279. package/build/esm/navigation/schema.d.ts +1 -0
  280. package/build/esm/schema/constants.d.ts +908 -0
  281. package/build/esm/schema/constants.js +39 -0
  282. package/build/esm/schema/index.d.ts +9 -228
  283. package/build/esm/schema/index.js +4 -42
  284. package/build/esm/schema/validators/common.d.ts +71 -27
  285. package/build/esm/schema/validators/common.js +49 -16
  286. package/build/esm/sub-blocks/BackgroundCard/schema.d.ts +12 -5
  287. package/build/esm/sub-blocks/BasicCard/schema.d.ts +8 -3
  288. package/build/esm/sub-blocks/Content/schema.d.ts +14 -6
  289. package/build/esm/sub-blocks/Content/schema.js +9 -1
  290. package/build/esm/sub-blocks/LayoutItem/schema.d.ts +23 -9
  291. package/build/esm/sub-blocks/MediaCard/schema.d.ts +16 -6
  292. package/build/esm/sub-blocks/PriceDetailed/schema.d.ts +1 -0
  293. package/build/esm/sub-blocks/PriceDetailed/schema.js +5 -1
  294. package/build/esm/sub-blocks/Quote/schema.d.ts +6 -2
  295. package/package.json +39 -7
  296. package/server/models/constructor-items/blocks.d.ts +13 -8
  297. package/server/models/constructor.d.ts +2 -2
  298. package/server/models/customization.d.ts +3 -8
  299. package/server/models/navigation.d.ts +1 -0
  300. package/build/cjs/editor/Components/AddBlock/AddBlock.d.ts +0 -7
  301. package/build/cjs/editor/Components/EditBlock/EditBlock.d.ts +0 -4
  302. package/build/cjs/editor/Components/EditBlock/EditBlock.js +0 -32
  303. package/build/cjs/editor/Containers/Editor.d.ts +0 -2
  304. package/build/cjs/editor/Containers/Editor.js +0 -24
  305. package/build/esm/editor/Components/AddBlock/AddBlock.d.ts +0 -8
  306. package/build/esm/editor/Components/EditBlock/EditBlock.d.ts +0 -5
  307. package/build/esm/editor/Components/EditBlock/EditBlock.js +0 -30
  308. package/build/esm/editor/Containers/Editor.d.ts +0 -2
  309. package/build/esm/editor/Containers/Editor.js +0 -20
  310. /package/build/cjs/editor/{Components → components}/EditBlock/EditBlock.css +0 -0
  311. /package/build/esm/editor/{Components → components}/EditBlock/EditBlock.css +0 -0
@@ -0,0 +1,105 @@
1
+ {
2
+ "template": {
3
+ "type": "questions-block",
4
+ "title": "Lorem ipsum",
5
+ "text": "<p>Dolor sit amet, consectetur adipiscing elit <a href=\"https://example.com\">sed do eiusmod</a> tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> ",
6
+ "additionalInfo": "<p>Dolor sit amet <a href=\"https://example.com\">consectetur adipiscing</a>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> ",
7
+ "links": [
8
+ {
9
+ "url": "/security",
10
+ "text": "Learn more",
11
+ "theme": "normal",
12
+ "arrow": true
13
+ }
14
+ ],
15
+ "buttons": [
16
+ {
17
+ "text": "Button\r",
18
+ "theme": "action",
19
+ "url": "https://example.com"
20
+ }
21
+ ],
22
+ "items": [
23
+ {
24
+ "title": "Lorem ipsum dolor sit amet 0",
25
+ "text": "<p>Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> ",
26
+ "link": {
27
+ "url": "#",
28
+ "text": "Documentation",
29
+ "theme": "normal",
30
+ "arrow": true
31
+ }
32
+ },
33
+ {
34
+ "title": "Ut enim ad minim veniam, quis nostrud exercitation ullamco? 1",
35
+ "text": "<p>laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> ",
36
+ "link": {
37
+ "url": "#",
38
+ "text": "Documentation",
39
+ "theme": "normal",
40
+ "arrow": true
41
+ }
42
+ },
43
+ {
44
+ "title": "Lorem ipsum dolor sit amet 2",
45
+ "text": "<p>Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> ",
46
+ "link": {
47
+ "url": "#",
48
+ "text": "Documentation",
49
+ "theme": "normal",
50
+ "arrow": true
51
+ }
52
+ },
53
+ {
54
+ "title": "Ut enim ad minim veniam, quis nostrud exercitation ullamco? 3",
55
+ "text": "<p>laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> ",
56
+ "link": {
57
+ "url": "#",
58
+ "text": "Documentation",
59
+ "theme": "normal",
60
+ "arrow": true
61
+ }
62
+ },
63
+ {
64
+ "title": "Lorem ipsum dolor sit amet 4",
65
+ "text": "<p>Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> ",
66
+ "link": {
67
+ "url": "#",
68
+ "text": "Documentation",
69
+ "theme": "normal",
70
+ "arrow": true
71
+ }
72
+ },
73
+ {
74
+ "title": "Ut enim ad minim veniam, quis nostrud exercitation ullamco? 5",
75
+ "text": "<p>laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> ",
76
+ "link": {
77
+ "url": "#",
78
+ "text": "Documentation",
79
+ "theme": "normal",
80
+ "arrow": true
81
+ }
82
+ },
83
+ {
84
+ "title": "Lorem ipsum dolor sit amet 6",
85
+ "text": "<p>Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> ",
86
+ "link": {
87
+ "url": "#",
88
+ "text": "Documentation",
89
+ "theme": "normal",
90
+ "arrow": true
91
+ }
92
+ },
93
+ {
94
+ "title": "Ut enim ad minim veniam, quis nostrud exercitation ullamco? 7",
95
+ "text": "<p>laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> ",
96
+ "link": {
97
+ "url": "#",
98
+ "text": "Documentation",
99
+ "theme": "normal",
100
+ "arrow": true
101
+ }
102
+ }
103
+ ]
104
+ }
105
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "template": {
3
+ "type": "security-block",
4
+ "title": "Lorem ipsum dolor sit amet",
5
+ "media": {
6
+ "youtube": "0Qd3T6skprA"
7
+ },
8
+ "theme": "dark",
9
+ "points": [
10
+ {
11
+ "img": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_1_dark.svg",
12
+ "text": "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.",
13
+ "link": {
14
+ "text": "Learn more",
15
+ "url": "https://example.com"
16
+ }
17
+ },
18
+ {
19
+ "img": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_2_dark.svg",
20
+ "text": "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.",
21
+ "link": {
22
+ "text": "Learn more",
23
+ "url": "https://example.com"
24
+ }
25
+ },
26
+ {
27
+ "img": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_3_dark.svg",
28
+ "text": "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.",
29
+ "link": {
30
+ "text": "Certificates and standards",
31
+ "url": "https://example.com"
32
+ }
33
+ }
34
+ ]
35
+ }
36
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "template": {
3
+ "type": "share-block",
4
+ "items": ["facebook", "vk", "telegram", "twitter", "linkedin"]
5
+ }
6
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "template": {
3
+ "type": "simple-block",
4
+ "title": "Simple Block",
5
+ "description": "A simple block with a title and description."
6
+ }
7
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "template": {
3
+ "type": "slider-block",
4
+ "title": {
5
+ "text": "Slider",
6
+ "url": "https://example.com"
7
+ },
8
+ "children": [
9
+ {
10
+ "type": "basic-card",
11
+ "url": "https://example.com",
12
+ "title": "Lorem ipsum dolor sit amet",
13
+ "text": "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
14
+ "icon": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_1_light.svg"
15
+ },
16
+ {
17
+ "type": "basic-card",
18
+ "url": "https://example.com",
19
+ "title": "Lorem ipsum dolor sit amet",
20
+ "text": "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
21
+ "icon": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_2_light.svg"
22
+ },
23
+ {
24
+ "type": "basic-card",
25
+ "url": "https://example.com",
26
+ "title": "Lorem ipsum dolor sit amet",
27
+ "text": "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
28
+ "icon": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_3_light.svg"
29
+ },
30
+ {
31
+ "type": "basic-card",
32
+ "url": "https://example.com",
33
+ "title": "Lorem ipsum dolor sit amet",
34
+ "text": "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
35
+ "icon": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_4_light.svg"
36
+ },
37
+ {
38
+ "type": "basic-card",
39
+ "url": "https://example.com",
40
+ "title": "Lorem ipsum dolor sit amet",
41
+ "text": "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
42
+ "icon": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_1_light.svg"
43
+ }
44
+ ]
45
+ }
46
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "template": {
3
+ "type": "table-block",
4
+ "title": "Lorem ipsum dolor sit amet",
5
+ "table": {
6
+ "content": [
7
+ ["Lorem", "ipsum 1", "dolor 2", "sit 3"],
8
+ ["Lorem 1", "0", "0", "0"],
9
+ ["Lorem 2", "0", "0", "1"],
10
+ ["Lorem 3", "0", "0", "1"],
11
+ ["Lorem 4", "0", "1", "1"],
12
+ ["Lorem 5", "1", "1", "1"]
13
+ ],
14
+ "legend": ["ipsum 1", "ipsum 2"],
15
+ "justify": ["start", "center", "center", "center"]
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "template": {
3
+ "type": "tabs-block",
4
+ "title": {
5
+ "text": "Lorem ipsum"
6
+ },
7
+ "items": [
8
+ {
9
+ "tabName": "Dolor sit amet",
10
+ "title": "Lorem ipsum dolor sit amet",
11
+ "text": "**Ut enim ad minim veniam** [quis nostrud](https://example.com) exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
12
+ "buttons": [
13
+ {
14
+ "text": "Button",
15
+ "theme": "action",
16
+ "url": "https://example.com"
17
+ },
18
+ {
19
+ "text": "Button",
20
+ "theme": "outlined",
21
+ "url": "https://example.com"
22
+ }
23
+ ],
24
+ "image": {
25
+ "light": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/img_8-12_white.png",
26
+ "dark": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/img_8-12_dark.png"
27
+ }
28
+ },
29
+ {
30
+ "tabName": "Lorem ipsum",
31
+ "title": "Lorem ipsum",
32
+ "media": {
33
+ "light": {
34
+ "video": {
35
+ "src": [
36
+ "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/video_8-12_light.webm",
37
+ "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/video_8-12_light.mp4",
38
+ "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/video_8-12_light.png"
39
+ ],
40
+ "loop": {
41
+ "start": 0
42
+ }
43
+ },
44
+ "image": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/img_8-12_white.png"
45
+ },
46
+ "dark": {
47
+ "video": {
48
+ "src": [
49
+ "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/video_8-12_dark.webm",
50
+ "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/video_8-12_dark.mp4",
51
+ "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/video_8-12_dark.png"
52
+ ],
53
+ "loop": {
54
+ "start": 0
55
+ }
56
+ },
57
+ "image": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/img_8-12_dark.png"
58
+ }
59
+ },
60
+ "caption": "Dolor sit amet",
61
+ "text": "* Ut enim ad minim veniam\n* Ut enim ad minim veniam",
62
+ "links": [
63
+ {
64
+ "url": "https://example.com",
65
+ "text": "Link",
66
+ "theme": "normal",
67
+ "arrow": true
68
+ }
69
+ ]
70
+ },
71
+ {
72
+ "tabName": "Consectetur adipiscing elit",
73
+ "title": "Consectetur adipiscing elit",
74
+ "additionalInfo": "Duis aute irure dolor in [reprehenderit](https://example.com) n voluptate velit esse cillum dolore eu fugiat nulla pariatur.",
75
+ "media": {
76
+ "light": {
77
+ "youtube": "https://youtu.be/0Qd3T6skprA",
78
+ "previewImg": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/video_8-12_light.png"
79
+ },
80
+ "dark": {
81
+ "youtube": "https://youtu.be/0Qd3T6skprA",
82
+ "previewImg": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/video_8-12_dark.png"
83
+ }
84
+ },
85
+ "caption": "Consectetur adipiscing elit",
86
+ "text": "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
87
+ }
88
+ ]
89
+ }
90
+ }
@@ -0,0 +1,27 @@
1
+ .pc-one-of-custom {
2
+ display: flex;
3
+ flex-direction: column;
4
+ }
5
+ .pc-one-of-custom:last-child > .df-group-indent {
6
+ margin-bottom: 0;
7
+ }
8
+ .pc-one-of-custom .df-group-indent {
9
+ all: unset;
10
+ }
11
+ .pc-one-of-custom .df-group-indent > .df-use-search {
12
+ padding-top: 11px;
13
+ padding-left: 20px;
14
+ margin-top: 4px;
15
+ margin-bottom: 20px;
16
+ margin-left: 5px;
17
+ border-left: 1px solid var(--yc-color-line-generic-accent);
18
+ }
19
+ .pc-one-of-custom .df-group-indent > .df-use-search:empty {
20
+ display: none;
21
+ }
22
+ .pc-one-of-custom .df-group-indent > .df-use-search:last-child {
23
+ margin-bottom: 0;
24
+ }
25
+ .pc-one-of-custom .df-group-indent > .df-use-search > .df-simple-vertical-accordeon_view {
26
+ margin-top: -10px;
27
+ }
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { ObjectIndependentInputProps } from '@gravity-ui/dynamic-forms';
3
+ /**
4
+ * Customization of @gravity-ui/dynamic-forms OneOf component
5
+ *
6
+ * Main differences from original component:
7
+ *
8
+ * 1. Custom component can detect initial data type by it's json schema passed it __schema property of spec and
9
+ * shows according input
10
+ *
11
+ * 2. Custom component doesn't create additional nested level of data for each OneOf option and doesn't wraps data value, e.g.
12
+ *
13
+ * custom component: {propertyName: propertyValue}
14
+ * original component: {propertyName: {option1: {value: propertyValue}}}
15
+ *
16
+ * @param {ObjectIndependentInputProps} props - props of original OneOf component
17
+ * @returns {React.FC<ObjectIndependentInputProps>}
18
+ */
19
+ export declare const OneOfCustom: React.FC<ObjectIndependentInputProps>;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OneOfCustom = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const dynamic_forms_1 = require("@gravity-ui/dynamic-forms");
7
+ const ajv_1 = tslib_1.__importDefault(require("ajv"));
8
+ const lodash_1 = tslib_1.__importDefault(require("lodash"));
9
+ const utils_1 = require("../../../../utils");
10
+ const useOneOf_1 = require("../../hooks/useOneOf");
11
+ const b = (0, utils_1.block)('one-of-custom');
12
+ const ajv = new ajv_1.default({
13
+ $data: true,
14
+ strict: false,
15
+ strictSchema: false,
16
+ strictTypes: false,
17
+ strictRequired: false,
18
+ });
19
+ const getOneOfCustomSpecDefaultType = (spec) => { var _a, _b; return ((_b = (_a = spec.viewSpec) === null || _a === void 0 ? void 0 : _a.order) === null || _b === void 0 ? void 0 : _b[0]) || Object.keys(spec.properties || {})[0]; };
20
+ // dynamic-forms pass {} as default value for required properties of all types
21
+ // this function replaces {} with default value accordingly to selected OneOf option spec type
22
+ const getControllerDefautValue = (value, valueSpecType) => {
23
+ const isDefaultValue = typeof value === 'object' && lodash_1.default.isEmpty(value);
24
+ const defaultValue = valueSpecType ? (0, useOneOf_1.getSpecTypeDefaultValue)(valueSpecType) : undefined;
25
+ return isDefaultValue ? defaultValue : value;
26
+ };
27
+ /**
28
+ * Customization of @gravity-ui/dynamic-forms OneOf component
29
+ *
30
+ * Main differences from original component:
31
+ *
32
+ * 1. Custom component can detect initial data type by it's json schema passed it __schema property of spec and
33
+ * shows according input
34
+ *
35
+ * 2. Custom component doesn't create additional nested level of data for each OneOf option and doesn't wraps data value, e.g.
36
+ *
37
+ * custom component: {propertyName: propertyValue}
38
+ * original component: {propertyName: {option1: {value: propertyValue}}}
39
+ *
40
+ * @param {ObjectIndependentInputProps} props - props of original OneOf component
41
+ * @returns {React.FC<ObjectIndependentInputProps>}
42
+ */
43
+ const OneOfCustom = (props) => {
44
+ var _a;
45
+ const { spec, input, name } = props;
46
+ const { properties } = spec;
47
+ //getting oneOf option type from initial value
48
+ const valueType = (0, react_1.useMemo)(() => {
49
+ var _a;
50
+ return (properties &&
51
+ ((_a = Object.keys(properties)) === null || _a === void 0 ? void 0 : _a.find((key) => {
52
+ const fieldSchema = (properties === null || properties === void 0 ? void 0 : properties[key]).__schema;
53
+ return fieldSchema && ajv.validate(fieldSchema, (0, dynamic_forms_1.transformArrOut)(input.value));
54
+ }))) ||
55
+ getOneOfCustomSpecDefaultType(spec);
56
+ },
57
+ // eslint-disable-next-line react-hooks/exhaustive-deps
58
+ []);
59
+ const { oneOfValue, specProperties, toggler } = (0, useOneOf_1.useOneOf)({
60
+ props: Object.assign(Object.assign({}, props), { input: Object.assign(Object.assign({}, input), { value: valueType ? { [valueType]: input.value } : input.value }) }),
61
+ });
62
+ const parentOnChange = react_1.default.useCallback((_childName, childValue, childErrors) => {
63
+ input.onChange(childValue, childErrors);
64
+ }, [input]);
65
+ const parentOnUnmount = react_1.default.useCallback((childName) => input.onChange((currentValue) => currentValue, { [childName]: false }), [input]);
66
+ const valueSpecType = ((_a = specProperties[oneOfValue]) === null || _a === void 0 ? void 0 : _a.type) || dynamic_forms_1.SpecTypes.Object;
67
+ return (react_1.default.createElement("div", { className: b() },
68
+ react_1.default.createElement("div", null, toggler),
69
+ specProperties[oneOfValue] && (react_1.default.createElement(dynamic_forms_1.GroupIndent, null,
70
+ react_1.default.createElement(dynamic_forms_1.Controller, { value: getControllerDefautValue(input.value, valueSpecType), name: name, spec: specProperties[oneOfValue], parentOnChange: parentOnChange, parentOnUnmount: parentOnUnmount, key: `${name}.${oneOfValue}` })))));
71
+ };
72
+ exports.OneOfCustom = OneOfCustom;
@@ -0,0 +1,2 @@
1
+ import { DynamicFormConfig } from '@gravity-ui/dynamic-forms';
2
+ export declare const dynamicConfig: DynamicFormConfig;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dynamicConfig = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const dynamic_forms_1 = require("@gravity-ui/dynamic-forms");
6
+ const lodash_1 = tslib_1.__importDefault(require("lodash"));
7
+ const OneOfCustom_1 = require("./components/OneOfCustom/OneOfCustom");
8
+ const getDynamicConfig = () => {
9
+ const dynamicConfig = lodash_1.default.cloneDeep(dynamic_forms_1.dynamicConfig);
10
+ dynamicConfig.object.inputs['oneof_custom'] = { Component: OneOfCustom_1.OneOfCustom, independent: true };
11
+ return dynamicConfig;
12
+ };
13
+ exports.dynamicConfig = getDynamicConfig();
@@ -0,0 +1,12 @@
1
+ import { ObjectIndependentInputProps, Spec, SpecTypes } from '@gravity-ui/dynamic-forms';
2
+ export interface UseOneOfParams {
3
+ props: ObjectIndependentInputProps;
4
+ onTogglerChange?: (value: string) => void;
5
+ }
6
+ export declare const getSpecTypeDefaultValue: (type: SpecTypes) => {} | undefined;
7
+ export declare const useOneOf: ({ props, onTogglerChange }: UseOneOfParams) => {
8
+ oneOfValue: string;
9
+ specProperties: Record<string, Spec>;
10
+ toggler: JSX.Element;
11
+ togglerInput: JSX.Element;
12
+ };
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useOneOf = exports.getSpecTypeDefaultValue = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ const dynamic_forms_1 = require("@gravity-ui/dynamic-forms");
7
+ const uikit_1 = require("@gravity-ui/uikit");
8
+ const lodash_1 = tslib_1.__importDefault(require("lodash"));
9
+ const MAX_TAB_TITLE_LENGTH = 20;
10
+ const getSpecTypeDefaultValue = (type) => {
11
+ switch (type) {
12
+ case dynamic_forms_1.SpecTypes.Array:
13
+ return [];
14
+ case dynamic_forms_1.SpecTypes.Boolean:
15
+ case dynamic_forms_1.SpecTypes.Number:
16
+ case dynamic_forms_1.SpecTypes.String:
17
+ return undefined;
18
+ default:
19
+ return {};
20
+ }
21
+ };
22
+ exports.getSpecTypeDefaultValue = getSpecTypeDefaultValue;
23
+ const useOneOf = ({ props, onTogglerChange }) => {
24
+ const { name, input, spec, Layout } = props;
25
+ const { order, disabled, oneOfParams } = spec.viewSpec;
26
+ const specProperties = react_1.default.useMemo(() => (lodash_1.default.isObjectLike(spec.properties) ? spec.properties : {}), [spec.properties]);
27
+ const [oneOfValue, setOneOfValue] = react_1.default.useState(() => {
28
+ let valueKeys;
29
+ if (lodash_1.default.isObjectLike(input.value)) {
30
+ const keys = Object.keys(input.value);
31
+ if (keys.length) {
32
+ valueKeys = keys;
33
+ }
34
+ }
35
+ return (valueKeys || order || Object.keys(specProperties))[0];
36
+ });
37
+ const onOneOfChange = react_1.default.useCallback(([newValue]) => {
38
+ var _a;
39
+ if (newValue !== oneOfValue) {
40
+ const specType = ((_a = specProperties[newValue]) === null || _a === void 0 ? void 0 : _a.type) || dynamic_forms_1.SpecTypes.Object;
41
+ input.onChange((0, exports.getSpecTypeDefaultValue)(specType));
42
+ setOneOfValue(newValue);
43
+ onTogglerChange === null || onTogglerChange === void 0 ? void 0 : onTogglerChange(newValue);
44
+ }
45
+ }, [setOneOfValue, input, oneOfValue, specProperties, onTogglerChange]);
46
+ const options = react_1.default.useMemo(() => (order || Object.keys(specProperties)).map((value) => {
47
+ var _a, _b;
48
+ const title = ((_a = spec.description) === null || _a === void 0 ? void 0 : _a[value]) ||
49
+ ((_b = specProperties[value]) === null || _b === void 0 ? void 0 : _b.viewSpec.layoutTitle) ||
50
+ value ||
51
+ '';
52
+ return {
53
+ value,
54
+ title,
55
+ content: title,
56
+ };
57
+ }), [spec.description, order, specProperties]);
58
+ const togglerInput = react_1.default.useMemo(() => {
59
+ if ((oneOfParams === null || oneOfParams === void 0 ? void 0 : oneOfParams.toggler) !== 'radio' &&
60
+ ((oneOfParams === null || oneOfParams === void 0 ? void 0 : oneOfParams.toggler) === 'select' ||
61
+ options.length > 3 ||
62
+ lodash_1.default.some(options, ({ title }) => title.length > MAX_TAB_TITLE_LENGTH))) {
63
+ return (react_1.default.createElement(uikit_1.Select, { width: "max", value: [oneOfValue], onUpdate: onOneOfChange, options: options, disabled: disabled, filterable: options.length > 7, qa: name }));
64
+ }
65
+ return (react_1.default.createElement(uikit_1.RadioButton, { value: oneOfValue, onChange: (event) => onOneOfChange([event.target.value]), disabled: disabled, qa: name }, options.map(({ value, title }) => (react_1.default.createElement(uikit_1.RadioButton.Option, { key: value, value: value }, title)))));
66
+ }, [options, oneOfValue, onOneOfChange, name, oneOfParams === null || oneOfParams === void 0 ? void 0 : oneOfParams.toggler, disabled]);
67
+ const toggler = react_1.default.useMemo(() => {
68
+ if (Layout) {
69
+ return react_1.default.createElement(Layout, Object.assign({}, props), togglerInput);
70
+ }
71
+ return togglerInput;
72
+ }, [Layout, togglerInput, props]);
73
+ return { oneOfValue, specProperties, toggler, togglerInput };
74
+ };
75
+ exports.useOneOf = useOneOf;
@@ -0,0 +1,9 @@
1
+ import { Schema } from '../../../schema';
2
+ export declare enum ParserType {
3
+ Object = "object",
4
+ Array = "array",
5
+ Children = "children",
6
+ OneOf = "oneOf",
7
+ Primitive = "primitive"
8
+ }
9
+ export declare const detectParserType: (data: Schema) => ParserType;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectParserType = exports.ParserType = void 0;
4
+ const dynamic_forms_1 = require("@gravity-ui/dynamic-forms");
5
+ var ParserType;
6
+ (function (ParserType) {
7
+ ParserType["Object"] = "object";
8
+ ParserType["Array"] = "array";
9
+ ParserType["Children"] = "children";
10
+ ParserType["OneOf"] = "oneOf";
11
+ ParserType["Primitive"] = "primitive";
12
+ })(ParserType = exports.ParserType || (exports.ParserType = {}));
13
+ const isOneOf = (data) => 'oneOf' in data;
14
+ const isObject = (data) => 'properties' in data;
15
+ const isArray = (data) => 'type' in data && data.type === dynamic_forms_1.SpecTypes.Array;
16
+ const isChildren = (data) => 'type' in data &&
17
+ data.type === dynamic_forms_1.SpecTypes.Array &&
18
+ 'items' in data &&
19
+ typeof data.items !== 'undefined' &&
20
+ '$ref' in data.items;
21
+ //detector applying order matters!
22
+ const ParserTypeDetectors = [
23
+ { type: ParserType.OneOf, detector: isOneOf },
24
+ { type: ParserType.Children, detector: isChildren },
25
+ { type: ParserType.Object, detector: isObject },
26
+ { type: ParserType.Array, detector: isArray },
27
+ ];
28
+ const detectParserType = (data) => {
29
+ for (const { type, detector } of ParserTypeDetectors) {
30
+ if (detector(data)) {
31
+ return type;
32
+ }
33
+ }
34
+ return ParserType.Primitive;
35
+ };
36
+ exports.detectParserType = detectParserType;
@@ -0,0 +1,28 @@
1
+ import { Schema } from '../../../schema';
2
+ import { FormSpecs } from './types';
3
+ declare class FormSpecParser {
4
+ private schema;
5
+ private definitions;
6
+ /**
7
+ * Transforms page-constructor json schema into dynamic-forms specs for each block
8
+ *
9
+ * @param schema {Schema} - page-constructor json schema
10
+ * @returns {FormSpecs} - object containig dynamic-forms specs for each constructor block
11
+ */
12
+ parse(schema: Schema): FormSpecs;
13
+ private getChildrenSpec;
14
+ private getRequiredProperties;
15
+ private childrenParser;
16
+ private oneOfParser;
17
+ private arrayParser;
18
+ private objectParser;
19
+ private primitiveParser;
20
+ private schemaParserMap;
21
+ private parseSchemaProperty;
22
+ private getBlocksSpec;
23
+ private getPageSpec;
24
+ private getFormSpec;
25
+ private init;
26
+ }
27
+ declare const _default: FormSpecParser;
28
+ export default _default;