@gravity-ui/page-constructor 3.4.0 → 3.5.0-alpha.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 (270) hide show
  1. package/CHANGELOG.md +0 -27
  2. package/README.md +0 -2
  3. package/build/cjs/blocks/Banner/schema.d.ts +21 -63
  4. package/build/cjs/blocks/CardLayout/schema.d.ts +4 -10
  5. package/build/cjs/blocks/Companies/schema.d.ts +2 -5
  6. package/build/cjs/blocks/ContentLayout/ContentLayout.js +2 -3
  7. package/build/cjs/blocks/ContentLayout/schema.d.ts +61 -107
  8. package/build/cjs/blocks/ContentLayout/schema.js +18 -23
  9. package/build/cjs/blocks/ExtendedFeatures/schema.d.ts +4 -31
  10. package/build/cjs/blocks/ExtendedFeatures/schema.js +3 -2
  11. package/build/cjs/blocks/FilterBlock/schema.d.ts +5 -13
  12. package/build/cjs/blocks/FilterBlock/schema.js +2 -13
  13. package/build/cjs/blocks/Header/Header.css +7 -6
  14. package/build/cjs/blocks/Header/schema.d.ts +36 -92
  15. package/build/cjs/blocks/Header/schema.js +0 -1
  16. package/build/cjs/blocks/HeaderSlider/schema.d.ts +53 -48
  17. package/build/cjs/blocks/HeaderSlider/schema.js +1 -3
  18. package/build/cjs/blocks/Icons/schema.d.ts +1 -3
  19. package/build/cjs/blocks/Icons/schema.js +1 -2
  20. package/build/cjs/blocks/Info/schema.d.ts +8 -19
  21. package/build/cjs/blocks/Map/schema.d.ts +6 -17
  22. package/build/cjs/blocks/Media/schema.d.ts +152 -204
  23. package/build/cjs/blocks/Media/schema.js +1 -1
  24. package/build/cjs/blocks/PromoFeaturesBlock/schema.d.ts +8 -22
  25. package/build/cjs/blocks/PromoFeaturesBlock/schema.js +0 -1
  26. package/build/cjs/blocks/Questions/schema.d.ts +3 -7
  27. package/build/cjs/blocks/Slider/schema.d.ts +18 -13
  28. package/build/cjs/blocks/Slider/schema.js +5 -4
  29. package/build/cjs/blocks/Table/schema.d.ts +2 -5
  30. package/build/cjs/blocks/Table/schema.js +2 -12
  31. package/build/cjs/blocks/Tabs/schema.d.ts +16 -43
  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 +0 -1
  35. package/build/cjs/components/Image/schema.js +2 -3
  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 +6 -5
  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/EditBlock/EditBlock.d.ts +4 -0
  44. package/build/cjs/editor/Components/EditBlock/EditBlock.js +32 -0
  45. package/build/cjs/editor/Containers/Editor.d.ts +2 -0
  46. package/build/cjs/editor/Containers/Editor.js +24 -0
  47. package/build/cjs/editor/index.d.ts +1 -1
  48. package/build/cjs/editor/index.js +1 -1
  49. package/build/cjs/editor/store/index.d.ts +11 -10
  50. package/build/cjs/editor/store/index.js +15 -66
  51. package/build/cjs/editor/store/reducer.d.ts +9 -24
  52. package/build/cjs/editor/store/reducer.js +31 -17
  53. package/build/cjs/editor/store/utils.d.ts +0 -1
  54. package/build/cjs/editor/store/utils.js +1 -3
  55. package/build/cjs/editor/types/index.d.ts +9 -15
  56. package/build/cjs/editor/types/index.js +0 -6
  57. package/build/cjs/editor/utils/index.d.ts +3 -4
  58. package/build/cjs/editor/utils/index.js +4 -6
  59. package/build/cjs/grid/Col/Col.d.ts +1 -1
  60. package/build/cjs/models/constructor-items/blocks.d.ts +8 -13
  61. package/build/cjs/models/constructor.d.ts +2 -2
  62. package/build/cjs/models/customization.d.ts +8 -3
  63. package/build/cjs/models/navigation.d.ts +0 -1
  64. package/build/cjs/navigation/components/Header/Header.css +0 -2
  65. package/build/cjs/navigation/components/Header/Header.js +4 -15
  66. package/build/cjs/navigation/schema.d.ts +0 -1
  67. package/build/cjs/schema/index.d.ts +228 -9
  68. package/build/cjs/schema/index.js +46 -8
  69. package/build/cjs/schema/validators/common.d.ts +27 -71
  70. package/build/cjs/schema/validators/common.js +17 -50
  71. package/build/cjs/sub-blocks/BackgroundCard/schema.d.ts +5 -12
  72. package/build/cjs/sub-blocks/BasicCard/schema.d.ts +3 -8
  73. package/build/cjs/sub-blocks/Content/schema.d.ts +6 -14
  74. package/build/cjs/sub-blocks/Content/schema.js +1 -9
  75. package/build/cjs/sub-blocks/LayoutItem/schema.d.ts +9 -23
  76. package/build/cjs/sub-blocks/MediaCard/schema.d.ts +6 -16
  77. package/build/cjs/sub-blocks/PriceDetailed/schema.d.ts +0 -1
  78. package/build/cjs/sub-blocks/PriceDetailed/schema.js +1 -5
  79. package/build/cjs/sub-blocks/Quote/schema.d.ts +2 -6
  80. package/build/cjs/text-transform/utils.js +6 -1
  81. package/build/esm/blocks/Banner/schema.d.ts +21 -63
  82. package/build/esm/blocks/CardLayout/schema.d.ts +4 -10
  83. package/build/esm/blocks/Companies/schema.d.ts +2 -5
  84. package/build/esm/blocks/ContentLayout/ContentLayout.js +2 -3
  85. package/build/esm/blocks/ContentLayout/schema.d.ts +61 -107
  86. package/build/esm/blocks/ContentLayout/schema.js +18 -23
  87. package/build/esm/blocks/ExtendedFeatures/schema.d.ts +4 -31
  88. package/build/esm/blocks/ExtendedFeatures/schema.js +4 -3
  89. package/build/esm/blocks/FilterBlock/schema.d.ts +5 -13
  90. package/build/esm/blocks/FilterBlock/schema.js +2 -13
  91. package/build/esm/blocks/Header/Header.css +7 -6
  92. package/build/esm/blocks/Header/schema.d.ts +36 -92
  93. package/build/esm/blocks/Header/schema.js +0 -1
  94. package/build/esm/blocks/HeaderSlider/schema.d.ts +53 -48
  95. package/build/esm/blocks/HeaderSlider/schema.js +1 -2
  96. package/build/esm/blocks/Icons/schema.d.ts +1 -3
  97. package/build/esm/blocks/Icons/schema.js +1 -2
  98. package/build/esm/blocks/Info/schema.d.ts +8 -19
  99. package/build/esm/blocks/Map/schema.d.ts +6 -17
  100. package/build/esm/blocks/Media/schema.d.ts +152 -204
  101. package/build/esm/blocks/Media/schema.js +2 -2
  102. package/build/esm/blocks/PromoFeaturesBlock/schema.d.ts +8 -22
  103. package/build/esm/blocks/PromoFeaturesBlock/schema.js +0 -1
  104. package/build/esm/blocks/Questions/schema.d.ts +3 -7
  105. package/build/esm/blocks/Slider/schema.d.ts +18 -13
  106. package/build/esm/blocks/Slider/schema.js +5 -4
  107. package/build/esm/blocks/Table/schema.d.ts +2 -5
  108. package/build/esm/blocks/Table/schema.js +2 -12
  109. package/build/esm/blocks/Tabs/schema.d.ts +16 -43
  110. package/build/esm/components/BlockBase/BlockBase.js +2 -2
  111. package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +1 -1
  112. package/build/esm/components/Image/schema.d.ts +0 -1
  113. package/build/esm/components/Image/schema.js +2 -3
  114. package/build/esm/containers/PageConstructor/components/ConstructorBlock/ConstructorBlock.js +1 -1
  115. package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +1 -1
  116. package/build/esm/customization/BlockDecoration.d.ts +1 -1
  117. package/build/esm/customization/BlockDecoration.js +6 -6
  118. package/build/esm/editor/{components → Components}/AddBlock/AddBlock.css +1 -1
  119. package/build/esm/editor/Components/AddBlock/AddBlock.d.ts +8 -0
  120. package/build/esm/editor/{components → Components}/AddBlock/AddBlock.js +2 -2
  121. package/build/esm/editor/Components/EditBlock/EditBlock.d.ts +5 -0
  122. package/build/esm/editor/Components/EditBlock/EditBlock.js +30 -0
  123. package/build/esm/editor/Containers/Editor.d.ts +2 -0
  124. package/build/esm/editor/Containers/Editor.js +20 -0
  125. package/build/esm/editor/index.d.ts +1 -1
  126. package/build/esm/editor/index.js +1 -1
  127. package/build/esm/editor/store/index.d.ts +11 -10
  128. package/build/esm/editor/store/index.js +17 -68
  129. package/build/esm/editor/store/reducer.d.ts +9 -24
  130. package/build/esm/editor/store/reducer.js +29 -15
  131. package/build/esm/editor/store/utils.d.ts +0 -1
  132. package/build/esm/editor/store/utils.js +0 -1
  133. package/build/esm/editor/types/index.d.ts +9 -15
  134. package/build/esm/editor/types/index.js +1 -5
  135. package/build/esm/editor/utils/index.d.ts +3 -4
  136. package/build/esm/editor/utils/index.js +3 -4
  137. package/build/esm/grid/Col/Col.d.ts +1 -1
  138. package/build/esm/models/constructor-items/blocks.d.ts +8 -13
  139. package/build/esm/models/constructor.d.ts +2 -2
  140. package/build/esm/models/customization.d.ts +8 -3
  141. package/build/esm/models/navigation.d.ts +0 -1
  142. package/build/esm/navigation/components/Header/Header.css +0 -2
  143. package/build/esm/navigation/components/Header/Header.js +5 -16
  144. package/build/esm/navigation/schema.d.ts +0 -1
  145. package/build/esm/schema/index.d.ts +228 -9
  146. package/build/esm/schema/index.js +42 -4
  147. package/build/esm/schema/validators/common.d.ts +27 -71
  148. package/build/esm/schema/validators/common.js +16 -49
  149. package/build/esm/sub-blocks/BackgroundCard/schema.d.ts +5 -12
  150. package/build/esm/sub-blocks/BasicCard/schema.d.ts +3 -8
  151. package/build/esm/sub-blocks/Content/schema.d.ts +6 -14
  152. package/build/esm/sub-blocks/Content/schema.js +1 -9
  153. package/build/esm/sub-blocks/LayoutItem/schema.d.ts +9 -23
  154. package/build/esm/sub-blocks/MediaCard/schema.d.ts +6 -16
  155. package/build/esm/sub-blocks/PriceDetailed/schema.d.ts +0 -1
  156. package/build/esm/sub-blocks/PriceDetailed/schema.js +1 -5
  157. package/build/esm/sub-blocks/Quote/schema.d.ts +2 -6
  158. package/build/esm/text-transform/utils.js +6 -1
  159. package/package.json +4 -5
  160. package/server/models/constructor-items/blocks.d.ts +8 -13
  161. package/server/models/constructor.d.ts +2 -2
  162. package/server/models/customization.d.ts +8 -3
  163. package/server/models/navigation.d.ts +0 -1
  164. package/server/text-transform/utils.js +6 -1
  165. package/build/cjs/editor/components/AddBlock/AddBlock.d.ts +0 -7
  166. package/build/cjs/editor/components/BlockForm/BlockForm.d.ts +0 -12
  167. package/build/cjs/editor/components/BlockForm/BlockForm.js +0 -33
  168. package/build/cjs/editor/components/ControlPanel/ControlPanel.css +0 -26
  169. package/build/cjs/editor/components/ControlPanel/ControlPanel.d.ts +0 -8
  170. package/build/cjs/editor/components/ControlPanel/ControlPanel.js +0 -24
  171. package/build/cjs/editor/components/ControlPanel/i18n/en.json +0 -3
  172. package/build/cjs/editor/components/ControlPanel/i18n/index.d.ts +0 -2
  173. package/build/cjs/editor/components/ControlPanel/i18n/index.js +0 -8
  174. package/build/cjs/editor/components/ControlPanel/i18n/ru.json +0 -3
  175. package/build/cjs/editor/components/EditBlock/EditBlock.d.ts +0 -13
  176. package/build/cjs/editor/components/EditBlock/EditBlock.js +0 -44
  177. package/build/cjs/editor/components/ErrorBoundary/ErrorBoundary.css +0 -27
  178. package/build/cjs/editor/components/ErrorBoundary/ErrorBoundary.d.ts +0 -13
  179. package/build/cjs/editor/components/ErrorBoundary/ErrorBoundary.js +0 -35
  180. package/build/cjs/editor/components/ErrorBoundary/i18n/en.json +0 -4
  181. package/build/cjs/editor/components/ErrorBoundary/i18n/index.d.ts +0 -2
  182. package/build/cjs/editor/components/ErrorBoundary/i18n/index.js +0 -8
  183. package/build/cjs/editor/components/ErrorBoundary/i18n/ru.json +0 -4
  184. package/build/cjs/editor/components/Layout/Layout.css +0 -36
  185. package/build/cjs/editor/components/Layout/Layout.d.ts +0 -16
  186. package/build/cjs/editor/components/Layout/Layout.js +0 -34
  187. package/build/cjs/editor/components/PagePropsForm/PagePropsForm.d.ts +0 -10
  188. package/build/cjs/editor/components/PagePropsForm/PagePropsForm.js +0 -17
  189. package/build/cjs/editor/containers/Editor/Editor.d.ts +0 -2
  190. package/build/cjs/editor/containers/Editor/Editor.js +0 -40
  191. package/build/cjs/editor/containers/Form/Form.css +0 -94
  192. package/build/cjs/editor/containers/Form/Form.d.ts +0 -11
  193. package/build/cjs/editor/containers/Form/Form.js +0 -47
  194. package/build/cjs/editor/containers/Form/dynamic-form-custom.css +0 -0
  195. package/build/cjs/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.css +0 -27
  196. package/build/cjs/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.d.ts +0 -19
  197. package/build/cjs/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.js +0 -72
  198. package/build/cjs/editor/dynamic-forms-custom/config.d.ts +0 -2
  199. package/build/cjs/editor/dynamic-forms-custom/config.js +0 -13
  200. package/build/cjs/editor/dynamic-forms-custom/hooks/useOneOf.d.ts +0 -12
  201. package/build/cjs/editor/dynamic-forms-custom/hooks/useOneOf.js +0 -75
  202. package/build/cjs/editor/dynamic-forms-custom/parser/detect.d.ts +0 -9
  203. package/build/cjs/editor/dynamic-forms-custom/parser/detect.js +0 -36
  204. package/build/cjs/editor/dynamic-forms-custom/parser/index.d.ts +0 -28
  205. package/build/cjs/editor/dynamic-forms-custom/parser/index.js +0 -188
  206. package/build/cjs/editor/dynamic-forms-custom/parser/types.d.ts +0 -29
  207. package/build/cjs/editor/dynamic-forms-custom/parser/types.js +0 -2
  208. package/build/cjs/editor/dynamic-forms-custom/parser/views.d.ts +0 -37
  209. package/build/cjs/editor/dynamic-forms-custom/parser/views.js +0 -46
  210. package/build/cjs/editor/hooks/useFormSpec.d.ts +0 -2
  211. package/build/cjs/editor/hooks/useFormSpec.js +0 -13
  212. package/build/cjs/editor/hooks/usePreviousValue.d.ts +0 -1
  213. package/build/cjs/editor/hooks/usePreviousValue.js +0 -11
  214. package/build/cjs/editor/styles/root.css +0 -5
  215. package/build/cjs/schema/constants.d.ts +0 -908
  216. package/build/cjs/schema/constants.js +0 -42
  217. package/build/esm/editor/components/AddBlock/AddBlock.d.ts +0 -8
  218. package/build/esm/editor/components/BlockForm/BlockForm.d.ts +0 -12
  219. package/build/esm/editor/components/BlockForm/BlockForm.js +0 -30
  220. package/build/esm/editor/components/ControlPanel/ControlPanel.css +0 -26
  221. package/build/esm/editor/components/ControlPanel/ControlPanel.d.ts +0 -9
  222. package/build/esm/editor/components/ControlPanel/ControlPanel.js +0 -22
  223. package/build/esm/editor/components/ControlPanel/i18n/en.json +0 -3
  224. package/build/esm/editor/components/ControlPanel/i18n/index.d.ts +0 -2
  225. package/build/esm/editor/components/ControlPanel/i18n/index.js +0 -5
  226. package/build/esm/editor/components/ControlPanel/i18n/ru.json +0 -3
  227. package/build/esm/editor/components/EditBlock/EditBlock.d.ts +0 -14
  228. package/build/esm/editor/components/EditBlock/EditBlock.js +0 -41
  229. package/build/esm/editor/components/ErrorBoundary/ErrorBoundary.css +0 -27
  230. package/build/esm/editor/components/ErrorBoundary/ErrorBoundary.d.ts +0 -14
  231. package/build/esm/editor/components/ErrorBoundary/ErrorBoundary.js +0 -31
  232. package/build/esm/editor/components/ErrorBoundary/i18n/en.json +0 -4
  233. package/build/esm/editor/components/ErrorBoundary/i18n/index.d.ts +0 -2
  234. package/build/esm/editor/components/ErrorBoundary/i18n/index.js +0 -5
  235. package/build/esm/editor/components/ErrorBoundary/i18n/ru.json +0 -4
  236. package/build/esm/editor/components/Layout/Layout.css +0 -36
  237. package/build/esm/editor/components/Layout/Layout.d.ts +0 -17
  238. package/build/esm/editor/components/Layout/Layout.js +0 -32
  239. package/build/esm/editor/components/PagePropsForm/PagePropsForm.d.ts +0 -10
  240. package/build/esm/editor/components/PagePropsForm/PagePropsForm.js +0 -13
  241. package/build/esm/editor/containers/Editor/Editor.d.ts +0 -2
  242. package/build/esm/editor/containers/Editor/Editor.js +0 -36
  243. package/build/esm/editor/containers/Form/Form.css +0 -94
  244. package/build/esm/editor/containers/Form/Form.d.ts +0 -12
  245. package/build/esm/editor/containers/Form/Form.js +0 -45
  246. package/build/esm/editor/containers/Form/dynamic-form-custom.css +0 -0
  247. package/build/esm/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.css +0 -27
  248. package/build/esm/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.d.ts +0 -20
  249. package/build/esm/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.js +0 -68
  250. package/build/esm/editor/dynamic-forms-custom/config.d.ts +0 -2
  251. package/build/esm/editor/dynamic-forms-custom/config.js +0 -9
  252. package/build/esm/editor/dynamic-forms-custom/hooks/useOneOf.d.ts +0 -12
  253. package/build/esm/editor/dynamic-forms-custom/hooks/useOneOf.js +0 -69
  254. package/build/esm/editor/dynamic-forms-custom/parser/detect.d.ts +0 -9
  255. package/build/esm/editor/dynamic-forms-custom/parser/detect.js +0 -32
  256. package/build/esm/editor/dynamic-forms-custom/parser/index.d.ts +0 -28
  257. package/build/esm/editor/dynamic-forms-custom/parser/index.js +0 -186
  258. package/build/esm/editor/dynamic-forms-custom/parser/types.d.ts +0 -29
  259. package/build/esm/editor/dynamic-forms-custom/parser/types.js +0 -1
  260. package/build/esm/editor/dynamic-forms-custom/parser/views.d.ts +0 -37
  261. package/build/esm/editor/dynamic-forms-custom/parser/views.js +0 -39
  262. package/build/esm/editor/hooks/useFormSpec.d.ts +0 -2
  263. package/build/esm/editor/hooks/useFormSpec.js +0 -9
  264. package/build/esm/editor/hooks/usePreviousValue.d.ts +0 -1
  265. package/build/esm/editor/hooks/usePreviousValue.js +0 -8
  266. package/build/esm/editor/styles/root.css +0 -5
  267. package/build/esm/schema/constants.d.ts +0 -908
  268. package/build/esm/schema/constants.js +0 -39
  269. /package/build/cjs/editor/{components → Components}/EditBlock/EditBlock.css +0 -0
  270. /package/build/esm/editor/{components → Components}/EditBlock/EditBlock.css +0 -0
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EditBlockControls = void 0;
4
- const tslib_1 = require("tslib");
5
- const react_1 = tslib_1.__importStar(require("react"));
6
- const icons_1 = require("@gravity-ui/icons");
7
- const utils_1 = require("../../../utils");
8
- const b = (0, utils_1.block)('edit-block');
9
- var EditBlockControls;
10
- (function (EditBlockControls) {
11
- EditBlockControls["Up"] = "up";
12
- EditBlockControls["Down"] = "down";
13
- EditBlockControls["Copy"] = "copy";
14
- EditBlockControls["Delete"] = "delete";
15
- })(EditBlockControls = exports.EditBlockControls || (exports.EditBlockControls = {}));
16
- const actionsOrder = [
17
- EditBlockControls.Up,
18
- EditBlockControls.Down,
19
- EditBlockControls.Copy,
20
- EditBlockControls.Delete,
21
- ];
22
- const editBlockControlsIcons = {
23
- [EditBlockControls.Up]: icons_1.ChevronUp,
24
- [EditBlockControls.Down]: icons_1.ChevronDown,
25
- [EditBlockControls.Copy]: icons_1.Copy,
26
- [EditBlockControls.Delete]: icons_1.TrashBin,
27
- };
28
- const EditBlock = ({ actions, isActive, onSelect, isHeader, children }) => {
29
- const ref = (0, react_1.useRef)(null);
30
- (0, react_1.useEffect)(() => {
31
- if (isActive && ref.current) {
32
- //TODO: add behavior 'smooth' after addiiton of dynamic form layout open/close managing support
33
- ref.current.scrollIntoView({ block: 'center' });
34
- }
35
- }, [isActive]);
36
- return (react_1.default.createElement("div", { className: b(), onClick: onSelect, ref: ref },
37
- react_1.default.createElement("div", { className: b('controls', { active: isActive, isHeader }) }, isActive && (react_1.default.createElement("div", { className: b('controls-content'), onClick: (e) => e.stopPropagation() }, actionsOrder.map((action) => {
38
- const Icon = editBlockControlsIcons[action];
39
- return actions[action] ? (react_1.default.createElement("div", { key: action, className: b('control'), onClick: actions[action] },
40
- react_1.default.createElement(Icon, null))) : null;
41
- })))),
42
- children));
43
- };
44
- exports.default = react_1.default.memo(EditBlock);
@@ -1,27 +0,0 @@
1
- /* use this for style redefinitions to awoid problems with
2
- unpredictable css rules order in build */
3
- .pc-error-boundary__container {
4
- display: flex;
5
- width: 100%;
6
- padding: 32px;
7
- background-color: var(--yc-color-base-background);
8
- border-radius: var(--pc-border-radius);
9
- box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.06), 0px 4px 24px rgba(0, 0, 0, 0.06);
10
- }
11
- .pc-error-boundary__header {
12
- margin-top: 0;
13
- }
14
- .pc-error-boundary__error {
15
- display: block;
16
- color: var(--yc-color-text-danger);
17
- max-height: 160px;
18
- overflow: auto;
19
- }
20
- .pc-error-boundary__image {
21
- flex: 0 0 auto;
22
- width: 200px;
23
- height: 200px;
24
- background-repeat: no-repeat;
25
- background-size: contain;
26
- background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48c3R5bGU+LnN0MHtmaWxsOiNlY2YyZjl9LnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiMyZWU1YzA7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwfS5zdDJ7ZmlsbDojMDA3Y2U5fS5zdDN7ZmlsbDojMDAyMzZifS5zdDR7ZmlsbDojMDBlNmM1fS5zdDExe2ZpbGw6I2ZmNDY0NX0uc3QxNXtmaWxsOm5vbmU7c3Ryb2tlOiMyZWU1YzA7c3Ryb2tlLXdpZHRoOjMuNzI1MjtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTB9LnN0MTUsLnN0MTZ7c3Ryb2tlLWxpbmVjYXA6cm91bmR9LnN0MTYsLnN0MTd7ZmlsbDpub25lO3N0cm9rZTojMDA3Y2U5O3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMH0uc3QxOHtmaWxsOiNmYzB9PC9zdHlsZT48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTMxLjcgMjkzLjdoMjM1LjJWMTc5LjRjMC05LjEtNy40LTE2LjUtMTYuNS0xNi41SDEzMS43djEzMC44eiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xODguMyAyOTUuNEg3MS43VjU1LjJjMC0xMi41IDEwLjEtMTcuNyAyMi42LTE3LjdoOTR2MjU3Ljl6TTIzMS4zIDI0Ny4zaDg5Ljh2LTIyMGMwLTEwLjQtOC41LTE0LjgtMTguOS0xNC44aC03MC45djIzNC44eiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0yODQuNiAxNDkuOWgxMi43YzYuOSAwIDEyLjQgNi4yIDEyLjQgMTMuN3Y1OS41TTI4NC42IDE5Ni45aDYuNGMzLjUgMCA2LjMgMi4yIDYuMyA5Ljd2NjMuNSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0yODQuNiAxMTYuN0gzMDVjOS40IDAgMTcgNy42IDE3IDE3djkwLjEiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjg0LjYgODcuNmgyNi42YzEyLjYgMCAyMi44IDEwLjIgMjIuOCAyMi44djEyMy4xTTE3Ni40IDY2LjRoMTA3Ljl2MTA3LjlIMTc2LjR6TTE3Ni40IDE3NC4zaDEwNy45djEwNy45SDE3Ni40eiIvPjxwYXRoIGNsYXNzPSJzdDE1IiBkPSJNMjIxLjkgNzkuMWg0OS40TTIyMS45IDg3LjZoMzAuOE0yMjEuOSA5Ni4yaDQ5LjQiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIxOTAiIGN5PSI3OS4xIiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIxOTguNiIgY3k9Ijc5LjEiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjIwNy4yIiBjeT0iNzkuMSIgcj0iMi4xIi8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMTkwIiBjeT0iODcuNiIgcj0iMi4xIi8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMTk4LjYiIGN5PSI4Ny42IiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIyMDcuMiIgY3k9Ijg3LjYiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjE5MCIgY3k9Ijk2LjIiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjE5OC42IiBjeT0iOTYuMiIgcj0iMi4xIi8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMjA3LjIiIGN5PSI5Ni4yIiByPSIyLjEiLz48cGF0aCBjbGFzcz0ic3QxNSIgZD0iTTIyMS45IDExMS4zaDQ5LjRNMjIxLjkgMTE5LjloNDkuNE0yMjEuOSAxMjguNWg0MS40Ii8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMTkwIiBjeT0iMTExLjMiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjE5OC42IiBjeT0iMTExLjMiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjIwNy4yIiBjeT0iMTExLjMiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjE5MCIgY3k9IjExOS45IiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIxOTguNiIgY3k9IjExOS45IiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIyMDcuMiIgY3k9IjExOS45IiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIxOTAiIGN5PSIxMjguNSIgcj0iMi4xIi8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMTk4LjYiIGN5PSIxMjguNSIgcj0iMi4xIi8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMjA3LjIiIGN5PSIxMjguNSIgcj0iMi4xIi8+PHBhdGggY2xhc3M9InN0MTUiIGQ9Ik0yMjEuOSAxNDMuNWg0OS40TTIyMS45IDE1Mi4xaDQ5LjRNMjIxLjkgMTYwLjdoNDkuNCIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjE5MCIgY3k9IjE0My41IiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIxOTguNiIgY3k9IjE0My41IiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIyMDcuMiIgY3k9IjE0My41IiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIxOTAiIGN5PSIxNTIuMSIgcj0iMi4xIi8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMTk4LjYiIGN5PSIxNTIuMSIgcj0iMi4xIi8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMjA3LjIiIGN5PSIxNTIuMSIgcj0iMi4xIi8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMTkwIiBjeT0iMTYwLjciIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjE5OC42IiBjeT0iMTYwLjciIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjIwNy4yIiBjeT0iMTYwLjciIHI9IjIuMSIvPjxnPjxwYXRoIGNsYXNzPSJzdDE1IiBkPSJNMjIxLjkgMTg3LjRoNDkuNE0yMjEuOSAxOTUuOWgzMC44TTIyMS45IDIwNC41aDQ5LjQiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIxOTAiIGN5PSIxODcuNCIgcj0iMi4xIi8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMTk4LjYiIGN5PSIxODcuNCIgcj0iMi4xIi8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMjA3LjIiIGN5PSIxODcuNCIgcj0iMi4xIi8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMTkwIiBjeT0iMTk1LjkiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjE5OC42IiBjeT0iMTk1LjkiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjIwNy4yIiBjeT0iMTk1LjkiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjE5MCIgY3k9IjIwNC41IiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIxOTguNiIgY3k9IjIwNC41IiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIyMDcuMiIgY3k9IjIwNC41IiByPSIyLjEiLz48cGF0aCBjbGFzcz0ic3QxNSIgZD0iTTIyMS45IDIxOS42aDQ5LjRNMjIxLjkgMjI4LjJoNDkuNE0yMjEuOSAyMzYuOGg0MS40Ii8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMTkwIiBjeT0iMjE5LjYiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjE5OC42IiBjeT0iMjE5LjYiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjIwNy4yIiBjeT0iMjE5LjYiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjE5MCIgY3k9IjIyOC4yIiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIxOTguNiIgY3k9IjIyOC4yIiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIyMDcuMiIgY3k9IjIyOC4yIiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIxOTAiIGN5PSIyMzYuOCIgcj0iMi4xIi8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMTk4LjYiIGN5PSIyMzYuOCIgcj0iMi4xIi8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMjA3LjIiIGN5PSIyMzYuOCIgcj0iMi4xIi8+PHBhdGggY2xhc3M9InN0MTUiIGQ9Ik0yMjEuOSAyNTEuOGg0OS40TTIyMS45IDI2MC40aDQ5LjRNMjIxLjkgMjY5aDE0Ii8+PGNpcmNsZSBjbGFzcz0ic3Q0IiBjeD0iMTkwIiBjeT0iMjUxLjgiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjE5OC42IiBjeT0iMjUxLjgiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjIwNy4yIiBjeT0iMjUxLjgiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjE5MCIgY3k9IjI2MC40IiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIxOTguNiIgY3k9IjI2MC40IiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIyMDcuMiIgY3k9IjI2MC40IiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIxOTAiIGN5PSIyNjkiIHI9IjIuMSIvPjxjaXJjbGUgY2xhc3M9InN0NCIgY3g9IjE5OC42IiBjeT0iMjY5IiByPSIyLjEiLz48Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIyMDcuMiIgY3k9IjI2OSIgcj0iMi4xIi8+PC9nPjxnPjxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik03Mi44IDE3My4xYy03LjMgMi45LTI3LjkgMTQuNC0yNy45IDI3LjUgMCAzLjcgMi4yIDguMSAxNyA2LjIgMjcuMS0zLjUgNzcuOS0xLjggNzcuOS0xLjhsNTcuOS00LjYtMTI0LjktMjcuM3oiLz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNNDcuMiAyMDQuNWw1NS4xLTcuN2MxLjQtLjIgMi42LTIuNSAyLjYtNVY3NC4zYzAtMi41LTIuNy0zLjUtNC4yLTMuMWwtNTMuNSAxOGMtMS4yLjQtMi4yIDIuNi0yLjIgNXYxMDYuNWMtLjEgMi4zLjkgNCAyLjIgMy44eiIvPjxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0xOTcuOCAyMDAuM2wtOTUuNS0zLjdjLTIuNS0uMS00LjUtMi4yLTQuNS00LjZWNzVjMC0yLjUgMi00LjIgNC41LTMuOUwxOTcuOCA4M2MyLjEuMyAzLjkgMi4zIDMuOSA0LjZ2MTA4LjhjMCAyLjItMS43IDQtMy45IDMuOXoiLz48cGF0aCBjbGFzcz0ic3QxNyIgZD0iTTk3LjkgMTEyLjZsMTAzLjggMTAuNSIvPjxwYXRoIGNsYXNzPSJzdDE2IiBkPSJNMTEzLjMgODUuNmw3NS45IDkuMU0xMTMuMyAxMzAuNWw3NS45IDcuMU0xMTMuMyAxNzIuN2w3NS45IDQuMiIvPjxwYXRoIGNsYXNzPSJzdDE3IiBkPSJNOTYuMSAxNTUuNmwxMDUuNiA3LjJNOTYuMSAxOTUuM2wxMDUuNiAzLjYiLz48L2c+PGc+PHBhdGggY2xhc3M9InN0MiIgZD0iTTQ3LjIgMzI0LjZsNTUuNCA2LjFjMS40LjEgMi42LTEuOSAyLjYtNC40VjIwNS41YzAtMi41LTEuMi00LjUtMi42LTQuNGwtNTUuNCA3LjRjLTEuMi4xLTIuMyAyLjEtMi4zIDQuNHYxMDcuMmMwIDIuNCAxIDQuNCAyLjMgNC41eiIvPjxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0xOTguOCAzMjYuNWwtOTYuMSA0LjJjLTIuNS4xLTQuNS0xLjktNC41LTQuNFYyMDUuNWMwLTIuNSAyLTQuNSA0LjUtNC40bDk2LjEgNC4yYzIuMi4xIDMuOSAyLjEgMy45IDQuNFYzMjJjLjEgMi40LTEuNyA0LjQtMy45IDQuNXoiLz48cGF0aCBjbGFzcz0ic3QxNyIgZD0iTTk4LjIgMjQ0LjNsMTA0LjYgMi4xTTk2LjQgMjg4LjlsMTA2LjQtMS41Ii8+PHBhdGggY2xhc3M9InN0MTYiIGQ9Ik0xMTMuMyAyMTQuN2w3Ni4xIDNNMTEzLjMgMjU5LjZsNzYuMS45TTExMy4zIDMwMS43bDc2LjEtMiIvPjwvZz48Zz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTUxIDMzNi40bDcwIDcuN2MxLjguMSAzLjMtMi40IDMuMy01LjZWMTg2YzAtMy4yLTEuNS01LjctMy4zLTUuNmwtNzAgOS4zYy0xLjYuMS0yLjggMi42LTIuOCA1LjZ2MTM1LjRjMCAzLjEgMS4zIDUuNiAyLjggNS43eiIvPjxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0zNDIuNSAzMzguOGwtMTIxLjMgNS4zYy0zLjEuMS01LjctMi40LTUuNy01LjZWMTg2YzAtMy4yIDIuNS01LjcgNS43LTUuNmwxMjEuMyA1LjNjMi43LjEgNC45IDIuNiA0LjkgNS42djE0MS44YzAgMy4xLTIuMiA1LjYtNC45IDUuN3oiLz48cGF0aCBjbGFzcz0ic3QxNyIgZD0iTTIxNS41IDIzNS4xbDEzMS45IDIuNk0yMTMuMiAyOTEuM2wxMzQuMi0xLjgiLz48cGF0aCBjbGFzcz0ic3QxMSIgZD0iTTIzNC4zIDE5OC40YzAgMS44LTEuMyAzLjMtMyAzLjItMS43LS4xLTMtMS43LTMtMy41czEuNC0zLjMgMy0zLjJjMS42LjEgMyAxLjcgMyAzLjV6Ii8+PHBhdGggY2xhc3M9InN0MTgiIGQ9Ik0yNDggMTk5LjJjMCAxLjgtMS4zIDMuMi0zIDMuMi0xLjYtLjEtMy0xLjYtMy0zLjVzMS4zLTMuMyAzLTMuMmMxLjcuMSAzIDEuNiAzIDMuNXpNMjYxLjQgMTk5LjljMCAxLjgtMS4zIDMuMi0yLjkgMy4xLTEuNi0uMS0yLjktMS42LTIuOS0zLjQgMC0xLjggMS4zLTMuMiAyLjktMy4xIDEuNi4xIDIuOSAxLjYgMi45IDMuNHoiLz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMjc0LjYgMjAwLjZjMCAxLjgtMS4zIDMuMi0yLjggMy4xLTEuNi0uMS0yLjgtMS42LTIuOC0zLjRzMS4zLTMuMiAyLjgtMy4xYzEuNS4xIDIuOCAxLjYgMi44IDMuNHpNMjg3LjUgMjAxLjNjMCAxLjgtMS4yIDMuMi0yLjggMy4xLTEuNS0uMS0yLjgtMS42LTIuOC0zLjRzMS4zLTMuMiAyLjgtMy4xYzEuNS4yIDIuOCAxLjcgMi44IDMuNHpNMzAwLjEgMjAyYzAgMS44LTEuMiAzLjEtMi43IDMtMS41LS4xLTIuNy0xLjYtMi43LTMuMyAwLTEuOCAxLjItMy4xIDIuNy0zIDEuNS4xIDIuNyAxLjYgMi43IDMuM3pNMzEyLjUgMjAyLjdjMCAxLjctMS4yIDMuMS0yLjcgMy0xLjUtLjEtMi43LTEuNi0yLjctMy4zIDAtMS44IDEuMi0zLjEgMi43LTMgMS41LjEgMi43IDEuNiAyLjcgMy4zek0zMjQuNyAyMDMuNGMwIDEuNy0xLjIgMy4xLTIuNiAzLTEuNS0uMS0yLjYtMS41LTIuNi0zLjMgMC0xLjcgMS4yLTMuMSAyLjYtMyAxLjQuMSAyLjYgMS42IDIuNiAzLjN6TTMzNi42IDIwNC4xYzAgMS43LTEuMiAzLTIuNiAzLTEuNC0uMS0yLjYtMS41LTIuNi0zLjIgMC0xLjcgMS4yLTMgMi42LTMgMS41IDAgMi42IDEuNCAyLjYgMy4yeiIvPjxnPjxwYXRoIGNsYXNzPSJzdDExIiBkPSJNMjM0LjMgMjUzLjhjMCAxLjgtMS4zIDMuMy0zIDMuM3MtMy0xLjUtMy0zLjQgMS40LTMuMyAzLTMuMyAzIDEuNSAzIDMuNHpNMjQ4IDI1My45YzAgMS44LTEuMyAzLjMtMyAzLjMtMS42IDAtMy0xLjUtMy0zLjRzMS4zLTMuMyAzLTMuM2MxLjcuMSAzIDEuNiAzIDMuNHoiLz48cGF0aCBjbGFzcz0ic3QxOCIgZD0iTTI2MS40IDI1NC4xYzAgMS44LTEuMyAzLjMtMi45IDMuMi0xLjYgMC0yLjktMS41LTIuOS0zLjNzMS4zLTMuMyAyLjktMy4yYzEuNiAwIDIuOSAxLjUgMi45IDMuM3pNMjc0LjYgMjU0LjNjMCAxLjgtMS4zIDMuMi0yLjggMy4yLTEuNiAwLTIuOC0xLjUtMi44LTMuM3MxLjMtMy4yIDIuOC0zLjJjMS41LjEgMi44IDEuNSAyLjggMy4zek0yODcuNSAyNTQuNWMwIDEuOC0xLjIgMy4yLTIuOCAzLjItMS41IDAtMi44LTEuNS0yLjgtMy4zczEuMy0zLjIgMi44LTMuMmMxLjUuMSAyLjggMS41IDIuOCAzLjN6Ii8+PHBhdGggY2xhc3M9InN0MiIgZD0iTTMwMC4xIDI1NC43YzAgMS44LTEuMiAzLjItMi43IDMuMi0xLjUgMC0yLjctMS41LTIuNy0zLjIgMC0xLjggMS4yLTMuMiAyLjctMy4yIDEuNSAwIDIuNyAxLjQgMi43IDMuMnpNMzEyLjUgMjU0LjljMCAxLjctMS4yIDMuMS0yLjcgMy4xLTEuNSAwLTIuNy0xLjQtMi43LTMuMnMxLjItMy4xIDIuNy0zLjFjMS41IDAgMi43IDEuNCAyLjcgMy4yek0zMjQuNyAyNTVjMCAxLjctMS4yIDMuMS0yLjYgMy4xLTEuNSAwLTIuNi0xLjQtMi42LTMuMiAwLTEuNyAxLjItMy4xIDIuNi0zLjEgMS40LjEgMi42IDEuNSAyLjYgMy4yek0zMzYuNiAyNTUuMmMwIDEuNy0xLjIgMy4xLTIuNiAzLjEtMS40IDAtMi42LTEuNC0yLjYtMy4xIDAtMS43IDEuMi0zLjEgMi42LTMuMSAxLjUgMCAyLjYgMS40IDIuNiAzLjF6Ii8+PC9nPjxnPjxwYXRoIGNsYXNzPSJzdDExIiBkPSJNMjM0LjMgMzA5LjFjMCAxLjgtMS4zIDMuNC0zIDMuNHMtMy0xLjQtMy0zLjMgMS40LTMuNCAzLTMuNCAzIDEuNCAzIDMuM3oiLz48cGF0aCBjbGFzcz0ic3QxOCIgZD0iTTI0OCAzMDguN2MwIDEuOC0xLjMgMy40LTMgMy40LTEuNiAwLTMtMS40LTMtMy4yIDAtMS44IDEuMy0zLjQgMy0zLjQgMS43LS4xIDMgMS40IDMgMy4yek0yNjEuNCAzMDguNGMwIDEuOC0xLjMgMy4zLTIuOSAzLjQtMS42IDAtMi45LTEuNC0yLjktMy4yIDAtMS44IDEuMy0zLjMgMi45LTMuNCAxLjYtLjEgMi45IDEuNCAyLjkgMy4yek0yNzQuNiAzMDhjMCAxLjgtMS4zIDMuMy0yLjggMy4zLTEuNiAwLTIuOC0xLjQtMi44LTMuMnMxLjMtMy4zIDIuOC0zLjNjMS41IDAgMi44IDEuNCAyLjggMy4yeiIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0yODcuNSAzMDcuN2MwIDEuOC0xLjIgMy4zLTIuOCAzLjMtMS41IDAtMi44LTEuNC0yLjgtMy4xIDAtMS44IDEuMy0zLjMgMi44LTMuMyAxLjUtLjEgMi44IDEuMyAyLjggMy4xek0zMDAuMSAzMDcuM2MwIDEuOC0xLjIgMy4yLTIuNyAzLjMtMS41IDAtMi43LTEuNC0yLjctMy4xIDAtMS44IDEuMi0zLjIgMi43LTMuMyAxLjUgMCAyLjcgMS40IDIuNyAzLjF6TTMxMi41IDMwN2MwIDEuNy0xLjIgMy4yLTIuNyAzLjItMS41IDAtMi43LTEuMy0yLjctMy4xczEuMi0zLjIgMi43LTMuMmMxLjUgMCAyLjcgMS40IDIuNyAzLjF6TTMyNC43IDMwNi43YzAgMS43LTEuMiAzLjItMi42IDMuMi0xLjUgMC0yLjYtMS4zLTIuNi0zLjFzMS4yLTMuMiAyLjYtMy4yYzEuNCAwIDIuNiAxLjMgMi42IDMuMXpNMzM2LjYgMzA2LjNjMCAxLjctMS4yIDMuMS0yLjYgMy4yLTEuNCAwLTIuNi0xLjMtMi42LTNzMS4yLTMuMSAyLjYtMy4yYzEuNSAwIDIuNiAxLjMgMi42IDN6Ii8+PC9nPjwvZz48Zz48cGF0aCBjbGFzcz0ic3QzIiBkPSJNNTkuNCAxMDNjMCAxLjggMS40IDMuMiAzLjEgMi45IDEuNy0uMiAzLjEtMS45IDMuMS0zLjhzLTEuNC0zLjItMy4xLTIuOWMtMS43LjItMy4xIDEuOS0zLjEgMy44ek01OS40IDE0MC41YzAgMS44IDEuNCAzLjIgMy4xIDIuOSAxLjctLjIgMy4xLTEuOSAzLjEtMy44cy0xLjQtMy4yLTMuMS0yLjljLTEuNy4zLTMuMSAyLTMuMSAzLjh6TTU5LjQgMTc4LjFjMCAxLjggMS40IDMuMiAzLjEgMi45IDEuNy0uMiAzLjEtMS45IDMuMS0zLjhzLTEuNC0zLjItMy4xLTIuOWMtMS43LjMtMy4xIDItMy4xIDMuOHoiLz48L2c+PGc+PHBhdGggY2xhc3M9InN0MyIgZD0iTTU5LjQgMjI4LjdjMCAxLjggMS40IDMuMiAzLjEgMi45IDEuNy0uMiAzLjEtMS45IDMuMS0zLjhzLTEuNC0zLjItMy4xLTIuOWMtMS43LjMtMy4xIDItMy4xIDMuOHpNNTkuNCAyNjYuM2MwIDEuOCAxLjQgMy4yIDMuMSAyLjkgMS43LS4yIDMuMS0xLjkgMy4xLTMuOHMtMS40LTMuMi0zLjEtMi45Yy0xLjcuMy0zLjEgMi0zLjEgMy44ek01OS40IDMwMy45YzAgMS44IDEuNCAzLjIgMy4xIDIuOSAxLjctLjIgMy4xLTEuOSAzLjEtMy44cy0xLjQtMy4yLTMuMS0yLjljLTEuNy4zLTMuMSAxLjktMy4xIDMuOHoiLz48L2c+PGc+PHBhdGggY2xhc3M9InN0MyIgZD0iTTE2Mi4zIDIxMy44YzAgMi40IDEuOCA0LjEgNCAzLjggMi4yLS4zIDQuMS0yLjUgNC4xLTQuOXMtMS44LTQuMS00LjEtMy44Yy0yLjIuMy00IDIuNS00IDQuOXpNMTYyLjMgMjYzLjFjMCAyLjQgMS44IDQuMSA0IDMuOCAyLjItLjMgNC4xLTIuNSA0LjEtNC45cy0xLjgtNC4xLTQuMS0zLjhjLTIuMi4zLTQgMi41LTQgNC45ek0xNjIuMyAzMTIuNGMwIDIuNCAxLjggNC4xIDQgMy44IDIuMi0uMyA0LjEtMi41IDQuMS00LjkgMC0yLjQtMS44LTQuMS00LjEtMy44LTIuMi4zLTQgMi41LTQgNC45eiIvPjwvZz48Zz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjEuNyAxMDIuNmwtMjItMS43Yy0zLjktLjMtNy4yIDIuOC03LjIgNi43djIwNi41Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTYxLjcgMTQwLjFsLTIyLTEuN2MtMy45LS4zLTcuMiAyLjgtNy4yIDYuN3Y5MS44Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTYxLjcgMTc3LjlsLTIyLS44Yy0zLjktLjMtNy4yIDIuOC03LjIgNi43djc2LjEiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjEuNyAyMjcuOWwtMjIgLjFjLTMuOS0uMy03LjIgMi44LTcuMiA2Ljd2NzYuMSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik02MS43IDI2NS44bC0yMiAuMWMtMy45LS4zLTcuMiAyLjgtNy4yIDYuN3Y0OC45Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTYxLjcgMzAzLjdsLTIyIC4xYy0zLjktLjMtNy4yIDIuOC03LjIgNi43djE2Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTMyLjUgMzI0LjF2NS43YzAgMy4zLjIgNi41IDMuMSA3LjIgMi44LjcgODMuOCAxMy41IDkwLjUgMTQuNCA2LjcuOSA4LjYtMi40IDguNi01LjlWMjIzLjljMC01LjggNC43LTEwLjUgMTAuNS0xMC42bDIwLjMtLjIiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTM0LjYgMzAyLjZ2LTI5LjJjMC01LjggNC43LTEwLjUgMTAuNS0xMC42bDIwLjMtLjJNMTM0LjYgMzM4LjJWMzIzYzAtNS44IDQuNy0xMC41IDEwLjUtMTAuNmwyMC4zLS4yIi8+PC9nPjwvc3ZnPgo=");
27
- }
@@ -1,13 +0,0 @@
1
- import React, { ErrorInfo, PropsWithChildren } from 'react';
2
- import { BlockDecorationProps } from '../../../models';
3
- interface ErrorBoundaryProps extends PropsWithChildren, Partial<BlockDecorationProps> {
4
- }
5
- interface ErrorBoundaryState {
6
- error?: string;
7
- }
8
- export declare class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {
9
- state: ErrorBoundaryState;
10
- componentDidCatch(error: Error, info: ErrorInfo): void;
11
- render(): string | number | boolean | React.ReactFragment | JSX.Element | null | undefined;
12
- }
13
- export {};
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ErrorBoundary = void 0;
4
- const tslib_1 = require("tslib");
5
- const react_1 = tslib_1.__importDefault(require("react"));
6
- const utils_1 = require("../../../utils");
7
- const utils_2 = require("../../utils");
8
- const i18n_1 = tslib_1.__importDefault(require("./i18n"));
9
- const b = (0, utils_1.block)('error-boundary');
10
- class ErrorBoundary extends react_1.default.Component {
11
- constructor() {
12
- super(...arguments);
13
- this.state = {};
14
- }
15
- componentDidCatch(error, info) {
16
- this.setState({ error: `${error.message} ${info === null || info === void 0 ? void 0 : info.componentStack}` });
17
- }
18
- render() {
19
- const { type, index } = this.props;
20
- const { error } = this.state;
21
- const header = type
22
- ? (0, i18n_1.default)('error-block-header', { id: (0, utils_2.getBlockId)({ type, index }) })
23
- : (0, i18n_1.default)('error-page-header');
24
- if (this.state.error) {
25
- return (react_1.default.createElement("div", { className: b() },
26
- react_1.default.createElement("div", { className: b('container') },
27
- react_1.default.createElement("div", { className: b('image') }),
28
- react_1.default.createElement("div", { className: b('content') },
29
- react_1.default.createElement("h2", { className: b('header') }, header),
30
- react_1.default.createElement("code", { className: b('error') }, error)))));
31
- }
32
- return this.props.children;
33
- }
34
- }
35
- exports.ErrorBoundary = ErrorBoundary;
@@ -1,4 +0,0 @@
1
- {
2
- "error-block-header": "An error occurred in {{id}}",
3
- "error-page-header": "An error occurred"
4
- }
@@ -1,2 +0,0 @@
1
- declare const _default: (key: string, params?: import("@gravity-ui/i18n").Params | undefined) => string;
2
- export default _default;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const registerKeyset_1 = require("../../../../utils/registerKeyset");
5
- const en_json_1 = tslib_1.__importDefault(require("./en.json"));
6
- const ru_json_1 = tslib_1.__importDefault(require("./ru.json"));
7
- const COMPONENT = 'ErrorBoundary';
8
- exports.default = (0, registerKeyset_1.registerKeyset)({ en: en_json_1.default, ru: ru_json_1.default }, COMPONENT);
@@ -1,4 +0,0 @@
1
- {
2
- "error-block-header": "Ошибка в блоке {{id}}",
3
- "error-page-header": "Ошибка"
4
- }
@@ -1,36 +0,0 @@
1
- /* use this for style redefinitions to awoid problems with
2
- unpredictable css rules order in build */
3
- :root {
4
- --editor-header-height: 48px;
5
- --editor-divider-width: 12px;
6
- --editor-left-column-width: calc(400px + var(--editor-divider-width));
7
- }
8
-
9
- .pc-editor-layout__left, .pc-editor-layout__right {
10
- --yc-scrollbar-width: 0;
11
- height: calc(100vh - var(--editor-header-height));
12
- max-height: calc(100vh - var(--editor-header-height));
13
- overflow-y: auto;
14
- }
15
-
16
- .pc-editor-layout {
17
- position: relative;
18
- }
19
- .pc-editor-layout__panel {
20
- top: 0;
21
- position: sticky;
22
- z-index: 2;
23
- }
24
- .pc-editor-layout__container {
25
- position: relative;
26
- display: flex;
27
- justify-content: center;
28
- z-index: 1;
29
- }
30
- .pc-editor-layout__left {
31
- flex: 0 0 auto;
32
- padding: 8px 20px 20px;
33
- width: var(--editor-left-column-width);
34
- border-right: var(--editor-divider-width) solid var(--yc-color-line-generic);
35
- overflow-x: auto;
36
- }
@@ -1,16 +0,0 @@
1
- import React, { PropsWithChildren } from 'react';
2
- import { ViewModeItem } from '../../types';
3
- export interface LayoutProps {
4
- mode: ViewModeItem;
5
- onModeChange: (mode: ViewModeItem) => void;
6
- }
7
- declare const Layout: {
8
- ({ children, mode, onModeChange }: PropsWithChildren<LayoutProps>): JSX.Element;
9
- Left: React.FC<{
10
- children?: React.ReactNode;
11
- }>;
12
- Right: React.FC<{
13
- children?: React.ReactNode;
14
- }>;
15
- };
16
- export default Layout;
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const react_1 = tslib_1.__importStar(require("react"));
5
- const utils_1 = require("../../../utils");
6
- const ControlPanel_1 = tslib_1.__importDefault(require("../ControlPanel/ControlPanel"));
7
- const b = (0, utils_1.block)('editor-layout');
8
- const Left = () => null;
9
- const Right = () => null;
10
- const Layout = ({ children, mode, onModeChange }) => {
11
- let left, right;
12
- function handleChild(child) {
13
- switch (child === null || child === void 0 ? void 0 : child.type) {
14
- case Left:
15
- left = child === null || child === void 0 ? void 0 : child.props.children;
16
- break;
17
- case Right:
18
- right = child === null || child === void 0 ? void 0 : child.props.children;
19
- break;
20
- }
21
- }
22
- if (react_1.default.Children.toArray(children).length) {
23
- react_1.Children.forEach(children, handleChild);
24
- }
25
- return (react_1.default.createElement("div", { className: b() },
26
- react_1.default.createElement(ControlPanel_1.default, { viewMode: mode, onViewModeChange: onModeChange, className: b('panel') }),
27
- react_1.default.createElement("div", { className: b('container') },
28
- react_1.default.createElement(react_1.Fragment, null,
29
- left && react_1.default.createElement("div", { className: b('left') }, left),
30
- right && react_1.default.createElement("div", { className: b('right') }, right)))));
31
- };
32
- Layout.Left = Left;
33
- Layout.Right = Right;
34
- exports.default = Layout;
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import { PageContent } from '../../../models';
3
- import { CustomSpec } from '../../dynamic-forms-custom/parser/types';
4
- export type PagePropsFormData = Omit<PageContent, 'blocks'>;
5
- export interface PagePropsFormProps {
6
- data: PagePropsFormData;
7
- spec: CustomSpec;
8
- onChange: (data: PagePropsFormData) => void;
9
- }
10
- export declare const PagePropsForm: React.MemoExoticComponent<({ data: content, spec, onChange }: PagePropsFormProps) => JSX.Element>;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PagePropsForm = 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 lodash_1 = tslib_1.__importDefault(require("lodash"));
8
- const react_final_form_1 = require("react-final-form");
9
- const config_1 = require("../../dynamic-forms-custom/config");
10
- exports.PagePropsForm = (0, react_1.memo)(({ data: content, spec, onChange }) => {
11
- // eslint-disable-next-line react-hooks/exhaustive-deps
12
- const initialValues = (0, react_1.useMemo)(() => ({ content }), []);
13
- return (react_1.default.createElement(react_final_form_1.Form, { initialValues: initialValues, onSubmit: lodash_1.default.noop }, () => (react_1.default.createElement("div", null,
14
- react_1.default.createElement(react_final_form_1.FormSpy, { onChange: ({ values }) => onChange(Object.assign({}, values.content)), subscription: { values: true } }),
15
- react_1.default.createElement(dynamic_forms_1.DynamicField, { name: "content", spec: spec, config: config_1.dynamicConfig })))));
16
- });
17
- exports.PagePropsForm.displayName = 'PagePropsForm';
@@ -1,2 +0,0 @@
1
- import { EditorProps } from '../../types';
2
- export declare const Editor: ({ children, customSchema, onChange, ...rest }: EditorProps) => JSX.Element;
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Editor = void 0;
4
- const tslib_1 = require("tslib");
5
- const react_1 = tslib_1.__importStar(require("react"));
6
- const AddBlock_1 = tslib_1.__importDefault(require("../../components/AddBlock/AddBlock"));
7
- const EditBlock_1 = tslib_1.__importDefault(require("../../components/EditBlock/EditBlock"));
8
- const ErrorBoundary_1 = require("../../components/ErrorBoundary/ErrorBoundary");
9
- const Layout_1 = tslib_1.__importDefault(require("../../components/Layout/Layout"));
10
- const useFormSpec_1 = tslib_1.__importDefault(require("../../hooks/useFormSpec"));
11
- const store_1 = require("../../store");
12
- const types_1 = require("../../types");
13
- const utils_1 = require("../../utils");
14
- const Form_1 = require("../Form/Form");
15
- const Editor = (_a) => {
16
- var { children, customSchema, onChange } = _a, rest = tslib_1.__rest(_a, ["children", "customSchema", "onChange"]);
17
- const { content, activeBlockIndex, errorBoundaryState, viewMode, onContentUpdate, onViewModeUpdate, onAdd, onSelect, injectEditBlockProps, } = (0, store_1.useEditorState)(rest);
18
- const isEditingMode = viewMode === types_1.ViewModeItem.Edititng;
19
- const constructorProps = (0, react_1.useMemo)(() => {
20
- const custom = isEditingMode
21
- ? (0, utils_1.addCustomDecorator)([
22
- (props) => (react_1.default.createElement(EditBlock_1.default, Object.assign({}, injectEditBlockProps(props)))),
23
- // need errorBoundaryState flag to reset error on content update
24
- (props) => (react_1.default.createElement(ErrorBoundary_1.ErrorBoundary, Object.assign({}, props, { key: `${(0, utils_1.getBlockId)(props)}-${errorBoundaryState}` }))),
25
- ], rest.custom)
26
- : rest.custom;
27
- return { content, custom };
28
- }, [injectEditBlockProps, content, errorBoundaryState, isEditingMode, rest.custom]);
29
- (0, react_1.useEffect)(() => {
30
- onChange === null || onChange === void 0 ? void 0 : onChange(content);
31
- }, [content, onChange]);
32
- const formSpecs = (0, useFormSpec_1.default)(customSchema);
33
- return (react_1.default.createElement(Layout_1.default, { mode: viewMode, onModeChange: onViewModeUpdate },
34
- isEditingMode && (react_1.default.createElement(Layout_1.default.Left, null,
35
- react_1.default.createElement(Form_1.Form, { content: content, onChange: onContentUpdate, activeBlockIndex: activeBlockIndex, onSelect: onSelect, spec: formSpecs }))),
36
- react_1.default.createElement(Layout_1.default.Right, null,
37
- react_1.default.createElement(ErrorBoundary_1.ErrorBoundary, { key: errorBoundaryState }, children(constructorProps)),
38
- isEditingMode && react_1.default.createElement(AddBlock_1.default, { onAdd: onAdd }))));
39
- };
40
- exports.Editor = Editor;
@@ -1,94 +0,0 @@
1
- /* use this for style redefinitions to awoid problems with
2
- unpredictable css rules order in build */
3
- .pc-editor-form {
4
- --top-level-font-size: var(--yc-text-display-2-font-size);
5
- --top-level-line-height: var(--yc-text-display-2-line-height);
6
- --block-propery-font-size: var(--yc-text-body-3-font-size);
7
- --block-property-line-height: var(--yc-text-body-3-line-height);
8
- --nested-property-font-size: var(--yc-text-body-1-font-size);
9
- --nested-property-line-height: var(--yc-text-body-1-line-height);
10
- --complex-nested-property-font-size: var(--yc-text-body-2-font-size);
11
- --complex-nested-property-line-height: var(--yc-text-body-2-line-height);
12
- --input-min-width: 150px;
13
- --property-title-width: 140px;
14
- --button-height: 48px;
15
- --icon-size: 32px;
16
- --icon-margin: 42px;
17
- --property-font-weight: 500;
18
- --header-text-size: var(--top-level-font-size);
19
- --header-line-height: var(--top-level-line-height);
20
- --text-size: var(--top-level-font-size);
21
- --line-height: var(--top-level-line-height);
22
- }
23
- .pc-editor-form .df-use-search .df-use-search {
24
- --button-height: 32px;
25
- --icon-size: 20px;
26
- --icon-margin: 30px;
27
- --header-text-size: var(--block-propery-font-size);
28
- --header-line-height: var(--block-property-line-height);
29
- --text-size: var(--block-propery-font-size);
30
- --line-height: var(--block-property-line-height);
31
- }
32
- .pc-editor-form .df-use-search .df-use-search .df-use-search {
33
- --button-height: 28px;
34
- --icon-size: 16px;
35
- --icon-margin: 25px;
36
- --property-font-weight: 400;
37
- --header-text-size: var(--complex-nested-property-font-size);
38
- --header-line-height: var(--complex-nested-property-line-height);
39
- --text-size: var(--nested-property-font-size);
40
- --line-height: var(--nested-property-line-height);
41
- }
42
- .pc-editor-form .df-row {
43
- width: inherit;
44
- }
45
- .pc-editor-form .df-row__left {
46
- width: var(--property-title-width);
47
- }
48
- .pc-editor-form .df-row__title {
49
- font-size: var(--text-size);
50
- line-height: var(--line-height);
51
- font-weight: var(--property-font-weight);
52
- white-space: nowrap;
53
- }
54
- .pc-editor-form .df-simple-vertical-accordeon textarea {
55
- min-width: var(--input-min-width);
56
- min-height: var(--input-min-width);
57
- }
58
- .pc-editor-form .df-simple-vertical-accordeon__header .yc-button {
59
- font-size: var(--header-text-size);
60
- line-height: var(--header-line-height);
61
- }
62
- .pc-editor-form .df-simple-vertical-accordeon__header .yc-button {
63
- --yc-button-height: var(--button-height);
64
- display: flex;
65
- justify-content: center;
66
- align-items: center;
67
- }
68
- .pc-editor-form .df-simple-vertical-accordeon__header .yc-button .yc-button__icon-inner > svg {
69
- width: var(--icon-size);
70
- height: var(--icon-size);
71
- color: var(--yc-color-text-hint);
72
- }
73
- .pc-editor-form .df-simple-vertical-accordeon__header .yc-button .yc-button__icon_side_right ~ .yc-button__text {
74
- margin-right: var(--icon-margin);
75
- }
76
- .pc-editor-form .df-simple-vertical-accordeon__body,
77
- .pc-editor-form .df-group-indent > .df-use-search {
78
- margin-top: 0;
79
- margin-left: 1px;
80
- padding-top: 12px;
81
- padding-left: 16px;
82
- border-left: 1px solid var(--yc-color-line-generic-accent);
83
- }
84
- .pc-editor-form .g-select,
85
- .pc-editor-form .yc-text-input {
86
- width: var(--input-min-width);
87
- }
88
- .pc-editor-form + .pc-editor-form {
89
- margin-top: 12px;
90
- }
91
- .pc-editor-form__tabs {
92
- --yc-color-base-special: var(--yc-color-promo-base-neon);
93
- margin-bottom: 20px;
94
- }
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
- import { PageContent } from '../../../models';
3
- import { FormSpecs } from '../../dynamic-forms-custom/parser/types';
4
- export interface FormProps {
5
- content: PageContent;
6
- activeBlockIndex: number;
7
- spec: FormSpecs;
8
- onChange: (content: PageContent) => void;
9
- onSelect: (index: number) => void;
10
- }
11
- export declare const Form: React.MemoExoticComponent<({ content, onChange, activeBlockIndex, onSelect, spec }: FormProps) => JSX.Element>;
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Form = void 0;
4
- const tslib_1 = require("tslib");
5
- const react_1 = tslib_1.__importStar(require("react"));
6
- const uikit_1 = require("@gravity-ui/uikit");
7
- const utils_1 = require("../../../utils");
8
- const BlockForm_1 = require("../../components/BlockForm/BlockForm");
9
- const PagePropsForm_1 = require("../../components/PagePropsForm/PagePropsForm");
10
- var FormTab;
11
- (function (FormTab) {
12
- FormTab["Blocks"] = "blocks";
13
- FormTab["Page"] = "page";
14
- })(FormTab || (FormTab = {}));
15
- const b = (0, utils_1.block)('editor-form');
16
- const tabsItems = Object.values(FormTab).map((tab) => ({
17
- id: tab,
18
- title: tab,
19
- }));
20
- exports.Form = (0, react_1.memo)(({ content, onChange, activeBlockIndex, onSelect, spec }) => {
21
- const [activeTab, setActiveTab] = react_1.default.useState(FormTab.Blocks);
22
- const _a = content || {}, { blocks } = _a, page = tslib_1.__rest(_a, ["blocks"]);
23
- const { blocks: blocksSpec, page: pageSpec } = spec || {};
24
- let form;
25
- switch (activeTab) {
26
- case FormTab.Page: {
27
- form = (react_1.default.createElement(PagePropsForm_1.PagePropsForm, { spec: pageSpec, data: page, onChange: (data) => {
28
- return onChange(Object.assign(Object.assign({}, content), data));
29
- } }));
30
- break;
31
- }
32
- case FormTab.Blocks: {
33
- form = (react_1.default.createElement(react_1.Fragment, null, blocks.map((blockData, index) => (react_1.default.createElement(BlockForm_1.BlockForm, { spec: blocksSpec[blockData.type], key: (0, utils_1.getBlockKey)(blockData, index), data: blockData, active: activeBlockIndex === index, onChange: (data) => {
34
- onChange(Object.assign(Object.assign({}, content), { blocks: [
35
- ...blocks.slice(0, index),
36
- data,
37
- ...blocks.slice(index + 1),
38
- ] }));
39
- }, onSelect: () => onSelect(index) })))));
40
- break;
41
- }
42
- }
43
- return (react_1.default.createElement("div", { className: b() },
44
- react_1.default.createElement(uikit_1.Tabs, { activeTab: activeTab, className: b('tabs'), items: tabsItems, onSelectTab: setActiveTab }),
45
- form));
46
- });
47
- exports.Form.displayName = 'Form';
@@ -1,27 +0,0 @@
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
- }
@@ -1,19 +0,0 @@
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>;
@@ -1,72 +0,0 @@
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;
@@ -1,2 +0,0 @@
1
- import { DynamicFormConfig } from '@gravity-ui/dynamic-forms';
2
- export declare const dynamicConfig: DynamicFormConfig;
@@ -1,13 +0,0 @@
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();