@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,188 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /* eslint-disable no-param-reassign */
5
+ /* eslint-disable no-not-accumulator-reassign/no-not-accumulator-reassign */
6
+ const dynamic_forms_1 = require("@gravity-ui/dynamic-forms");
7
+ const models_1 = require("../../../models");
8
+ const detect_1 = require("./detect");
9
+ const views_1 = require("./views");
10
+ class FormSpecParser {
11
+ constructor() {
12
+ this.schema = {};
13
+ this.definitions = {};
14
+ this.getChildrenSpec = (data) => {
15
+ var _a, _b, _c;
16
+ const childrenType = (_c = (_b = (_a = data.items) === null || _a === void 0 ? void 0 : _a.$ref) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop();
17
+ return this.definitions[childrenType];
18
+ };
19
+ this.getRequiredProperties = (data) => Array.isArray(data.required) ? data.required : [];
20
+ this.childrenParser = ({ data, name, required }) => {
21
+ const childSpec = this.getChildrenSpec(data);
22
+ const properties = childSpec &&
23
+ Object.entries(childSpec).reduce((parsedChildSpecProperties, [childName, childSchema]) => {
24
+ const childRequiredProperties = this.getRequiredProperties(childSchema);
25
+ const childProperies = childSchema.properties &&
26
+ Object.entries(childSchema.properties).reduce((parsedChildProperties, [childPropertyName, childPropertyData]) => {
27
+ parsedChildProperties[childPropertyName] = this.parseSchemaProperty({
28
+ data: childPropertyData,
29
+ name: childPropertyName,
30
+ required: childRequiredProperties.includes(childPropertyName),
31
+ });
32
+ return parsedChildProperties;
33
+ }, {});
34
+ const childJsonSchema = Object.assign(Object.assign({}, childSchema), { properties: Object.assign(Object.assign({}, childSchema.properties), { type: {
35
+ type: dynamic_forms_1.SpecTypes.String,
36
+ enum: [childName],
37
+ } }) });
38
+ parsedChildSpecProperties[childName] = {
39
+ type: dynamic_forms_1.SpecTypes.Array,
40
+ items: Object.assign(Object.assign({}, childSchema), { type: dynamic_forms_1.SpecTypes.Object, properties: Object.assign(Object.assign({}, childProperies), { type: {
41
+ type: dynamic_forms_1.SpecTypes.String,
42
+ defaultValue: childName,
43
+ viewSpec: {
44
+ type: 'hidden',
45
+ },
46
+ } }), viewSpec: childProperies &&
47
+ (0, views_1.getObjectViewSpec)({
48
+ properties: childProperies,
49
+ layoutTitle: childName,
50
+ }), __schema: childJsonSchema }),
51
+ required: false,
52
+ viewSpec: (0, views_1.getArrayViewSpec)({ layoutTitle: childName }),
53
+ __schema: {
54
+ type: dynamic_forms_1.SpecTypes.Array,
55
+ items: childJsonSchema,
56
+ },
57
+ };
58
+ return parsedChildSpecProperties;
59
+ }, {});
60
+ return {
61
+ type: dynamic_forms_1.SpecTypes.Object,
62
+ properties,
63
+ viewSpec: {
64
+ type: 'oneof_custom',
65
+ layout: 'row',
66
+ layoutTitle: name,
67
+ oneOfParams: {
68
+ toggler: 'select',
69
+ },
70
+ },
71
+ required,
72
+ };
73
+ };
74
+ this.oneOfParser = ({ data, name, required }) => {
75
+ const requiredProperties = this.getRequiredProperties(data);
76
+ const properties = data.oneOf &&
77
+ data.oneOf.reduce((result, propertyData, index) => {
78
+ const propertyName = (propertyData === null || propertyData === void 0 ? void 0 : propertyData.optionName)
79
+ ? propertyData === null || propertyData === void 0 ? void 0 : propertyData.optionName
80
+ : `${name}_${index}`;
81
+ result[propertyName] = this.parseSchemaProperty({
82
+ data: propertyData,
83
+ name: propertyName,
84
+ required: requiredProperties.includes(propertyName),
85
+ });
86
+ return result;
87
+ }, {});
88
+ return {
89
+ type: dynamic_forms_1.SpecTypes.Object,
90
+ properties,
91
+ required,
92
+ viewSpec: (0, views_1.getOneOfViewSpec)({ layoutTitle: name }),
93
+ };
94
+ };
95
+ this.arrayParser = ({ data, name }) => {
96
+ const items = data.items && this.parseSchemaProperty({ data: data.items, name });
97
+ return Object.assign(Object.assign({}, data), { type: dynamic_forms_1.SpecTypes.Array, items, viewSpec: (0, views_1.getArrayViewSpec)({ layoutTitle: name }) });
98
+ };
99
+ this.objectParser = ({ data, name, required }) => {
100
+ const requiredProperties = this.getRequiredProperties(data);
101
+ const properties = data.properties &&
102
+ Object.entries(data.properties).reduce((result, [propertyName, propertyData]) => {
103
+ result[propertyName] = this.parseSchemaProperty({
104
+ data: propertyData,
105
+ name: propertyName,
106
+ required: requiredProperties.includes(propertyName),
107
+ });
108
+ return result;
109
+ }, {});
110
+ return Object.assign(Object.assign({}, data), { type: dynamic_forms_1.SpecTypes.Object, properties, viewSpec: (0, views_1.getObjectViewSpec)({ properties, layoutTitle: name }), required });
111
+ };
112
+ this.primitiveParser = ({ data, name, required }) => {
113
+ return Object.assign(Object.assign({}, data), { type: data.type, required, defaultValue: data.default, viewSpec: (0, views_1.getPrimitiveViewSpec)({ layoutTitle: name, data }), validator: 'base' });
114
+ };
115
+ //eslint-disable-next-line @typescript-eslint/member-ordering
116
+ this.schemaParserMap = {
117
+ [detect_1.ParserType.Object]: this.objectParser,
118
+ [detect_1.ParserType.Array]: this.arrayParser,
119
+ [detect_1.ParserType.Primitive]: this.primitiveParser,
120
+ [detect_1.ParserType.OneOf]: this.oneOfParser,
121
+ [detect_1.ParserType.Children]: this.childrenParser,
122
+ };
123
+ }
124
+ /**
125
+ * Transforms page-constructor json schema into dynamic-forms specs for each block
126
+ *
127
+ * @param schema {Schema} - page-constructor json schema
128
+ * @returns {FormSpecs} - object containig dynamic-forms specs for each constructor block
129
+ */
130
+ parse(schema) {
131
+ this.init(schema);
132
+ return this.getFormSpec();
133
+ }
134
+ parseSchemaProperty({ data, name, required }) {
135
+ const parserType = (0, detect_1.detectParserType)(data);
136
+ const parser = this.schemaParserMap[parserType];
137
+ return Object.assign(Object.assign({}, parser({ data, name, required })), {
138
+ //save json schema from constructor to compare with incoming intial data inside oneOf form fields
139
+ __schema: data });
140
+ }
141
+ getBlocksSpec() {
142
+ const blocks = this.definitions.children;
143
+ return Object.values(models_1.BlockType).reduce((result, blockName) => {
144
+ result[blockName] = this.parseSchemaProperty({
145
+ name: blockName,
146
+ data: Object.assign({}, blocks[blockName]),
147
+ required: true,
148
+ });
149
+ return result;
150
+ }, {});
151
+ }
152
+ getPageSpec() {
153
+ var _a;
154
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
155
+ const _b = ((_a = this.schema) === null || _a === void 0 ? void 0 : _a.properties) || {}, { blocks } = _b, pageSchema = tslib_1.__rest(_b, ["blocks"]);
156
+ const requiredProperties = this.getRequiredProperties(this.schema);
157
+ const properties = Object.entries(pageSchema).reduce((result, [propertyName, propertyData]) => {
158
+ result[propertyName] = this.parseSchemaProperty({
159
+ name: propertyName,
160
+ data: propertyData,
161
+ required: requiredProperties.includes(propertyName),
162
+ });
163
+ return result;
164
+ }, {});
165
+ return {
166
+ type: dynamic_forms_1.SpecTypes.Object,
167
+ properties,
168
+ viewSpec: (0, views_1.getObjectViewSpec)({ properties, layout: 'section' }),
169
+ required: true,
170
+ };
171
+ }
172
+ getFormSpec() {
173
+ return {
174
+ blocks: this.getBlocksSpec(),
175
+ page: this.getPageSpec(),
176
+ };
177
+ }
178
+ init(schema) {
179
+ this.schema = schema;
180
+ if (schema.definitions) {
181
+ this.definitions = Object.entries(schema.definitions).reduce((result, [childType, childSpec]) => {
182
+ result[childType] = childSpec === null || childSpec === void 0 ? void 0 : childSpec.selectCases;
183
+ return result;
184
+ }, {});
185
+ }
186
+ }
187
+ }
188
+ exports.default = new FormSpecParser();
@@ -0,0 +1,29 @@
1
+ import { Spec as DynamicFormSpec, ObjectSpec } from '@gravity-ui/dynamic-forms';
2
+ import { BlockType } from '../../../models';
3
+ import { Schema } from '../../../schema';
4
+ export type OneOfSpec = {
5
+ oneOf: DynamicFormSpec[];
6
+ viewSpec: ObjectSpec['viewSpec'];
7
+ };
8
+ export type CustomObjectSpec = Omit<ObjectSpec, 'properties'> & {
9
+ properties: Record<string, CustomSpec>;
10
+ };
11
+ export interface SpecCustomProps {
12
+ disabled?: boolean;
13
+ inputType?: string;
14
+ __schema?: Schema;
15
+ }
16
+ export type Spec = Exclude<DynamicFormSpec, 'ObjectSpec'> | CustomObjectSpec | OneOfSpec;
17
+ export type CustomSpec = Spec & SpecCustomProps;
18
+ export type BlocksSpec = Record<BlockType, CustomSpec>;
19
+ export type PageSpec = CustomSpec;
20
+ export interface FormSpecs {
21
+ blocks: BlocksSpec;
22
+ page: PageSpec;
23
+ }
24
+ export interface SchemaParserParams {
25
+ data: Schema;
26
+ name: string;
27
+ required?: Schema['required'];
28
+ }
29
+ export type SchemaParser = (params: SchemaParserParams) => CustomSpec;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,37 @@
1
+ import { Schema } from '../../../schema';
2
+ import { CustomObjectSpec, CustomSpec } from './types';
3
+ interface BaseParams {
4
+ layoutTitle?: string;
5
+ }
6
+ interface GetObjectViewSpecParams extends BaseParams, Partial<Extract<CustomSpec, CustomObjectSpec>> {
7
+ layout?: string;
8
+ }
9
+ type GetPrimitiveViewSpecParams = BaseParams & Schema;
10
+ export declare const getOneOfViewSpec: ({ layoutTitle }: BaseParams) => {
11
+ type: string;
12
+ layout: string;
13
+ layoutTitle: string | undefined;
14
+ oneOfParams: {
15
+ toggler: "select";
16
+ };
17
+ };
18
+ export declare const getObjectViewSpec: ({ properties, disabled, layoutTitle, layout, }: GetObjectViewSpecParams) => {
19
+ layoutTitle: string | undefined;
20
+ type: string;
21
+ layout: string;
22
+ order: string[] | undefined;
23
+ disabled: boolean | undefined;
24
+ };
25
+ export declare const getArrayViewSpec: ({ layoutTitle }: BaseParams) => {
26
+ layoutTitle: string | undefined;
27
+ type: string;
28
+ layout: string;
29
+ layoutOpen: boolean;
30
+ itemLabel: string;
31
+ };
32
+ export declare const getPrimitiveViewSpec: ({ layoutTitle, ...data }: GetPrimitiveViewSpecParams) => {
33
+ layout: string;
34
+ type: any;
35
+ layoutTitle: string | undefined;
36
+ };
37
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPrimitiveViewSpec = exports.getArrayViewSpec = exports.getObjectViewSpec = exports.getOneOfViewSpec = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const getOneOfViewSpec = ({ layoutTitle }) => {
6
+ return {
7
+ type: 'oneof_custom',
8
+ layout: 'row',
9
+ layoutTitle,
10
+ oneOfParams: {
11
+ toggler: 'select',
12
+ },
13
+ };
14
+ };
15
+ exports.getOneOfViewSpec = getOneOfViewSpec;
16
+ const getObjectViewSpec = ({ properties, disabled, layoutTitle, layout = 'accordeon', }) => {
17
+ return {
18
+ layoutTitle,
19
+ type: 'base',
20
+ layout,
21
+ order: properties && Object.keys(properties).sort(),
22
+ disabled,
23
+ };
24
+ };
25
+ exports.getObjectViewSpec = getObjectViewSpec;
26
+ const getArrayViewSpec = ({ layoutTitle }) => ({
27
+ layoutTitle,
28
+ type: 'base',
29
+ layout: 'accordeon',
30
+ layoutOpen: true,
31
+ itemLabel: 'Add Item',
32
+ });
33
+ exports.getArrayViewSpec = getArrayViewSpec;
34
+ const getPrimitiveViewSpec = (_a) => {
35
+ var { layoutTitle } = _a, data = tslib_1.__rest(_a, ["layoutTitle"]);
36
+ let type = (data === null || data === void 0 ? void 0 : data.inputType) || 'base';
37
+ if (data && 'enum' in data && data.enum) {
38
+ type = 'select';
39
+ }
40
+ return {
41
+ layout: 'row',
42
+ type,
43
+ layoutTitle,
44
+ };
45
+ };
46
+ exports.getPrimitiveViewSpec = getPrimitiveViewSpec;
@@ -0,0 +1,2 @@
1
+ import { SchemaCustomConfig } from '../../schema';
2
+ export default function useFormSpec(customSchema?: SchemaCustomConfig): import("../dynamic-forms-custom/parser/types").FormSpecs;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const react_1 = require("react");
5
+ const schema_1 = require("../../schema");
6
+ const parser_1 = tslib_1.__importDefault(require("../dynamic-forms-custom/parser"));
7
+ function useFormSpec(customSchema) {
8
+ return (0, react_1.useMemo)(() => {
9
+ const schema = (0, schema_1.generateDefaultSchema)(customSchema);
10
+ return parser_1.default.parse(schema);
11
+ }, [customSchema]);
12
+ }
13
+ exports.default = useFormSpec;
@@ -0,0 +1 @@
1
+ export default function usePreviousValue<T>(value: T): T | undefined;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("react");
4
+ function usePreviousValue(value) {
5
+ const ref = (0, react_1.useRef)();
6
+ (0, react_1.useEffect)(() => {
7
+ ref.current = value;
8
+ }, [value]);
9
+ return ref.current;
10
+ }
11
+ exports.default = usePreviousValue;
@@ -1,2 +1,2 @@
1
- export { Editor } from './Containers/Editor';
1
+ export { Editor } from './containers/Editor/Editor';
2
2
  export * from './types';
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Editor = void 0;
4
4
  const tslib_1 = require("tslib");
5
- var Editor_1 = require("./Containers/Editor");
5
+ var Editor_1 = require("./containers/Editor/Editor");
6
6
  Object.defineProperty(exports, "Editor", { enumerable: true, get: function () { return Editor_1.Editor; } });
7
7
  tslib_1.__exportStar(require("./types"), exports);
@@ -1,15 +1,14 @@
1
- import { Block } from '../../models';
2
- import { EditorProps } from '../types';
1
+ import { Block, BlockDecorationProps, PageContent } from '../../models';
2
+ import { EditBlockProps, EditorProps, ViewModeItem } from '../types';
3
3
  export type EditorBlockId = number | string;
4
4
  export declare function useEditorState({ content: intialContent, custom }: Omit<EditorProps, 'children'>): {
5
- content: import("../../models").PageContent;
6
- editControlsProps: {
7
- activeBlockId: import("./reducer").EditorBlockId;
8
- orderedBlocksCount: number;
9
- onDelete: (id: EditorBlockId) => void;
10
- onSelect: (id: EditorBlockId) => void;
11
- onCopy: (index: number) => void;
12
- onOrderChange: (oldIndex: number, newIndex: number) => void;
13
- };
5
+ activeBlockIndex: number;
6
+ content: PageContent;
7
+ errorBoundaryState: number;
8
+ viewMode: ViewModeItem;
9
+ injectEditBlockProps: ({ type, index: relativeIndex, children, }: BlockDecorationProps) => EditBlockProps;
14
10
  onAdd: (block: Block) => void;
11
+ onSelect: (index: number) => void;
12
+ onContentUpdate: (newContent: PageContent) => void;
13
+ onViewModeUpdate: (newViewMode: ViewModeItem) => void;
15
14
  };
@@ -4,29 +4,80 @@ exports.useEditorState = void 0;
4
4
  const react_1 = require("react");
5
5
  const models_1 = require("../../models");
6
6
  const utils_1 = require("../../utils");
7
+ const EditBlock_1 = require("../components/EditBlock/EditBlock");
8
+ const types_1 = require("../types");
7
9
  const reducer_1 = require("./reducer");
8
10
  const utils_2 = require("./utils");
9
11
  function useEditorState({ content: intialContent, custom }) {
10
- const headerBlockTypes = (0, react_1.useMemo)(() => [...models_1.HeaderBlockTypes, ...(0, utils_1.getCustomHeaderTypes)(custom)], [custom]);
11
- const reducer = (0, react_1.useMemo)(() => (0, reducer_1.getReducer)(headerBlockTypes), [headerBlockTypes]);
12
- const [{ activeBlockId, content, orderedBlocksCount }, dispatch] = (0, react_1.useReducer)(reducer, {
13
- activeBlockId: 0,
14
- orderedBlocksCount: (0, utils_1.getOrderedBlocks)(intialContent.blocks, headerBlockTypes).length,
12
+ const [{ activeBlockIndex, content, errorBoundaryState, viewMode }, dispatch] = (0, react_1.useReducer)(reducer_1.reducer, {
13
+ activeBlockIndex: 0,
14
+ errorBoundaryState: 0,
15
15
  content: (0, utils_2.addEditorProps)(intialContent),
16
+ viewMode: types_1.ViewModeItem.Edititng,
16
17
  });
17
18
  return (0, react_1.useMemo)(() => {
19
+ const headerBlockTypes = [...models_1.HeaderBlockTypes, ...(0, utils_1.getCustomHeaderTypes)(custom)];
20
+ const contentHasHeader = Boolean((0, utils_1.getHeaderBlock)(content.blocks, headerBlockTypes));
21
+ const checkIsHeader = (type) => headerBlockTypes.includes(type);
22
+ const onAdd = (block) => {
23
+ const isHeader = checkIsHeader(block.type);
24
+ if (contentHasHeader && isHeader) {
25
+ //TODO: add warning that it should be only one header block
26
+ return;
27
+ }
28
+ // eslint-disable-next-line no-nested-ternary
29
+ const index = isHeader
30
+ ? 0
31
+ : activeBlockIndex === -1
32
+ ? content.blocks.length
33
+ : activeBlockIndex + 1;
34
+ dispatch({ type: reducer_1.ADD_BLOCK, payload: { block, index } });
35
+ };
36
+ const onSelect = (index) => dispatch({ type: reducer_1.SELECT_BLOCK, payload: index });
37
+ const onContentUpdate = (newContent) => dispatch({ type: reducer_1.UPDATE_CONTENT, payload: newContent });
38
+ const onViewModeUpdate = (newViewMode) => dispatch({ type: reducer_1.UPDATE_VIEW_MODE, payload: newViewMode });
39
+ const injectEditBlockProps = ({ type, index: relativeIndex = 0, children, }) => {
40
+ const orderedBlocksStartIndex = contentHasHeader ? 1 : 0;
41
+ const isHeader = checkIsHeader(type);
42
+ const index = isHeader ? 0 : relativeIndex + orderedBlocksStartIndex;
43
+ const isActive = activeBlockIndex === index;
44
+ const actions = {
45
+ [EditBlock_1.EditBlockControls.Delete]: () => dispatch({ type: reducer_1.DELETE_BLOCK, payload: index }),
46
+ };
47
+ if (!isHeader) {
48
+ actions[EditBlock_1.EditBlockControls.Copy] = () => dispatch({ type: reducer_1.COPY_BLOCK, payload: index });
49
+ if (index > orderedBlocksStartIndex) {
50
+ actions[EditBlock_1.EditBlockControls.Up] = () => dispatch({
51
+ type: reducer_1.ORDER_BLOCK,
52
+ payload: { oldIndex: index, newIndex: index - 1 },
53
+ });
54
+ }
55
+ if (index < content.blocks.length - 1) {
56
+ actions[EditBlock_1.EditBlockControls.Down] = () => dispatch({
57
+ type: reducer_1.ORDER_BLOCK,
58
+ payload: { oldIndex: index, newIndex: index + 1 },
59
+ });
60
+ }
61
+ }
62
+ return {
63
+ children,
64
+ isHeader,
65
+ isActive,
66
+ actions,
67
+ onSelect: () => onSelect(index),
68
+ };
69
+ };
18
70
  return {
71
+ activeBlockIndex,
19
72
  content,
20
- editControlsProps: {
21
- activeBlockId,
22
- orderedBlocksCount,
23
- onDelete: (id) => dispatch({ type: reducer_1.DELETE_BLOCK, payload: id }),
24
- onSelect: (id) => dispatch({ type: reducer_1.SELECT_BLOCK, payload: id }),
25
- onCopy: (index) => dispatch({ type: reducer_1.COPY_BLOCK, payload: index }),
26
- onOrderChange: (oldIndex, newIndex) => dispatch({ type: reducer_1.ORDER_BLOCK, payload: { oldIndex, newIndex } }),
27
- },
28
- onAdd: (block) => dispatch({ type: reducer_1.ADD_BLOCK, payload: block }),
73
+ errorBoundaryState,
74
+ viewMode,
75
+ injectEditBlockProps,
76
+ onAdd,
77
+ onSelect,
78
+ onContentUpdate,
79
+ onViewModeUpdate,
29
80
  };
30
- }, [content, activeBlockId, orderedBlocksCount]);
81
+ }, [content, activeBlockIndex, errorBoundaryState, custom, viewMode]);
31
82
  }
32
83
  exports.useEditorState = useEditorState;
@@ -1,28 +1,35 @@
1
- import { Block, CustomConfig, PageContent } from '../../models';
1
+ import { Block, PageContent } from '../../models';
2
+ import { ViewModeItem } from '../types';
2
3
  export type EditorBlockId = number | string;
3
4
  interface EditorState {
4
5
  content: PageContent;
5
- activeBlockId: EditorBlockId;
6
- orderedBlocksCount: number;
7
- custom?: CustomConfig;
6
+ activeBlockIndex: number;
7
+ errorBoundaryState: number;
8
+ viewMode: ViewModeItem;
8
9
  }
9
10
  interface OrderBlockParams {
10
11
  oldIndex: number;
11
12
  newIndex: number;
12
13
  }
14
+ interface AddBlockParams {
15
+ block: Block;
16
+ index: number;
17
+ }
13
18
  export declare const SELECT_BLOCK = "SELECT_BLOCK";
14
19
  export declare const DELETE_BLOCK = "DELETE_BLOCK";
15
20
  export declare const COPY_BLOCK = "COPY_BLOCK";
16
21
  export declare const ADD_BLOCK = "ADD_BLOCK";
17
22
  export declare const SET_REGION = "SET_REGION";
18
23
  export declare const ORDER_BLOCK = "ORDER_BLOCK";
24
+ export declare const UPDATE_CONTENT = "UPDATE_CONTENT";
25
+ export declare const UPDATE_VIEW_MODE = "UPDATE_VIEW_MODE";
19
26
  interface SelectBlock {
20
27
  type: typeof SELECT_BLOCK;
21
- payload: EditorBlockId;
28
+ payload: number;
22
29
  }
23
30
  interface DeleteBlock {
24
31
  type: typeof DELETE_BLOCK;
25
- payload: EditorBlockId;
32
+ payload: number;
26
33
  }
27
34
  interface CopyBlock {
28
35
  type: typeof COPY_BLOCK;
@@ -30,12 +37,20 @@ interface CopyBlock {
30
37
  }
31
38
  interface AddBlock {
32
39
  type: typeof ADD_BLOCK;
33
- payload: Block;
40
+ payload: AddBlockParams;
34
41
  }
35
42
  interface OrderBlock {
36
43
  type: typeof ORDER_BLOCK;
37
44
  payload: OrderBlockParams;
38
45
  }
39
- export type EditorAction = SelectBlock | DeleteBlock | CopyBlock | AddBlock | OrderBlock;
40
- export declare const getReducer: (headerBlockTypes: string[]) => (state: EditorState, action: EditorAction) => EditorState;
46
+ interface UpdateContent {
47
+ type: typeof UPDATE_CONTENT;
48
+ payload: PageContent;
49
+ }
50
+ interface UpdateViewMode {
51
+ type: typeof UPDATE_VIEW_MODE;
52
+ payload: ViewModeItem;
53
+ }
54
+ export type EditorAction = SelectBlock | DeleteBlock | CopyBlock | AddBlock | OrderBlock | UpdateContent | UpdateViewMode;
55
+ export declare const reducer: (state: EditorState, action: EditorAction) => EditorState;
41
56
  export {};
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getReducer = exports.ORDER_BLOCK = exports.SET_REGION = exports.ADD_BLOCK = exports.COPY_BLOCK = exports.DELETE_BLOCK = exports.SELECT_BLOCK = void 0;
4
- const utils_1 = require("../../utils");
5
- const utils_2 = require("./utils");
3
+ exports.reducer = exports.UPDATE_VIEW_MODE = exports.UPDATE_CONTENT = exports.ORDER_BLOCK = exports.SET_REGION = exports.ADD_BLOCK = exports.COPY_BLOCK = exports.DELETE_BLOCK = exports.SELECT_BLOCK = void 0;
4
+ const utils_1 = require("./utils");
6
5
  // actions
7
6
  exports.SELECT_BLOCK = 'SELECT_BLOCK';
8
7
  exports.DELETE_BLOCK = 'DELETE_BLOCK';
@@ -10,50 +9,37 @@ exports.COPY_BLOCK = 'COPY_BLOCK';
10
9
  exports.ADD_BLOCK = 'ADD_BLOCK';
11
10
  exports.SET_REGION = 'SET_REGION';
12
11
  exports.ORDER_BLOCK = 'ORDER_BLOCK';
12
+ exports.UPDATE_CONTENT = 'UPDATE_CONTENT';
13
+ exports.UPDATE_VIEW_MODE = 'UPDATE_VIEW_MODE';
13
14
  // reducer
14
- const getReducer = (headerBlockTypes) => (state, action) => {
15
+ const reducer = (state, action) => {
15
16
  const { content } = state;
16
- const header = (0, utils_1.getHeaderBlock)(content.blocks, headerBlockTypes);
17
- const orderedBlocks = (0, utils_1.getOrderedBlocks)(content.blocks, headerBlockTypes);
18
- const withHeader = (blocks) => [header, ...blocks].filter(Boolean);
19
- const getNewState = (blocks, activeBlockId) => (Object.assign(Object.assign({}, state), { content: Object.assign(Object.assign({}, content), { blocks }), activeBlockId, orderedBlocksCount: orderedBlocks.length }));
17
+ const getNewState = (blocks, activeBlockIndex) => (Object.assign(Object.assign({}, state), { content: Object.assign(Object.assign({}, content), { blocks }), activeBlockIndex }));
20
18
  switch (action.type) {
19
+ case exports.UPDATE_CONTENT:
20
+ return Object.assign(Object.assign({}, state), { content: action.payload, errorBoundaryState: (0, utils_1.getErrorBoundaryState)(state.errorBoundaryState) });
21
21
  case exports.SELECT_BLOCK:
22
- return getNewState(content.blocks, action.payload);
22
+ return Object.assign(Object.assign({}, state), { activeBlockIndex: action.payload });
23
23
  case exports.DELETE_BLOCK: {
24
24
  const blockId = action.payload;
25
- return getNewState(typeof blockId === 'string'
26
- ? content.blocks.filter(({ type }) => type !== blockId)
27
- : withHeader(orderedBlocks.filter((_block, index) => index !== blockId)), -1);
25
+ return getNewState(content.blocks.filter((_block, index) => index !== blockId), -1);
28
26
  }
29
27
  case exports.COPY_BLOCK: {
30
28
  const index = action.payload;
31
- return getNewState(withHeader((0, utils_2.duplicateBlock)(orderedBlocks, index)), index + 1);
29
+ return getNewState((0, utils_1.duplicateBlock)(content.blocks, index), index + 1);
32
30
  }
33
31
  case exports.ADD_BLOCK: {
34
- let blocks;
35
- let activeBlockId;
36
- const block = action.payload;
37
- if (headerBlockTypes.includes(block.type)) {
38
- blocks = header ? blocks : [block, ...orderedBlocks];
39
- activeBlockId = block.type;
40
- }
41
- else {
42
- const newBlockIndex = (0, utils_2.getNewBlockIndex)(state.activeBlockId, orderedBlocks.length);
43
- blocks = withHeader((0, utils_2.addBlock)(orderedBlocks, block, newBlockIndex));
44
- activeBlockId = newBlockIndex;
45
- }
46
- if (blocks) {
47
- return getNewState(blocks, activeBlockId);
48
- }
49
- return state;
32
+ const { block, index } = action.payload;
33
+ return getNewState((0, utils_1.addBlock)(content.blocks, block, index), index);
50
34
  }
51
35
  case exports.ORDER_BLOCK: {
52
36
  const { oldIndex, newIndex } = action.payload;
53
- return getNewState(withHeader((0, utils_2.changeBlocksOrder)(orderedBlocks, oldIndex, newIndex)), newIndex);
37
+ return getNewState((0, utils_1.changeBlocksOrder)(content.blocks, oldIndex, newIndex), newIndex);
54
38
  }
39
+ case exports.UPDATE_VIEW_MODE:
40
+ return Object.assign(Object.assign({}, state), { viewMode: action.payload });
55
41
  default:
56
42
  return state;
57
43
  }
58
44
  };
59
- exports.getReducer = getReducer;
45
+ exports.reducer = reducer;
@@ -10,3 +10,4 @@ export declare const addEditorProps: (content: PageContent) => {
10
10
  menu?: import("../../models").Menu | undefined;
11
11
  background?: import("../../models").ThemedMediaProps | undefined;
12
12
  };
13
+ export declare const getErrorBoundaryState: (prevState: number) => number;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addEditorProps = exports.addBlock = exports.getNewBlockIndex = exports.duplicateBlock = exports.changeBlocksOrder = void 0;
3
+ exports.getErrorBoundaryState = exports.addEditorProps = exports.addBlock = exports.getNewBlockIndex = exports.duplicateBlock = exports.changeBlocksOrder = void 0;
4
4
  const changeBlocksOrder = (array, oldIndex, newIndex) => {
5
5
  const result = [...array];
6
6
  const element = result.splice(oldIndex, 1)[0];
@@ -32,3 +32,5 @@ const addEditorProps = (content) => {
32
32
  return Object.assign(Object.assign({}, content), { animated: false });
33
33
  };
34
34
  exports.addEditorProps = addEditorProps;
35
+ const getErrorBoundaryState = (prevState) => prevState === Number.MAX_SAFE_INTEGER ? 0 : prevState + 1;
36
+ exports.getErrorBoundaryState = getErrorBoundaryState;
@@ -0,0 +1,5 @@
1
+ :root {
2
+ --editor-header-height: 48px;
3
+ --editor-divider-width: 12px;
4
+ --editor-left-column-width: calc(400px + var(--editor-divider-width));
5
+ }