@redneckz/wildless-cms-uni-blocks 0.9.10 → 0.9.12

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 (392) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +145 -66
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/Calculator/CalculatorContent.d.ts +18 -17
  5. package/bundle/components/Calculator/DepositCalculatorForm.d.ts +2 -2
  6. package/bundle/components/Calculator/rangeHelpers.d.ts +1 -0
  7. package/bundle/components/Calculator/renderMonthsInput.d.ts +1 -0
  8. package/bundle/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
  9. package/bundle/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
  10. package/bundle/components/Filtration/FiltrationContent.d.ts +18 -8
  11. package/bundle/components/Footer/MediaButton.d.ts +3 -4
  12. package/bundle/content-page-repository/ContentPageRepository.d.ts +1 -5
  13. package/bundle/content-page-repository/alignImg.d.ts +9 -0
  14. package/bundle/content-page-repository/computeImgOutputPath.d.ts +3 -0
  15. package/bundle/content-page-repository/resizeImg.d.ts +3 -0
  16. package/bundle/content-page-repository/transformContentPage.d.ts +1 -0
  17. package/bundle/content-page-repository/transformImg.d.ts +6 -5
  18. package/bundle/content-page-repository/transformPicture.d.ts +1 -1
  19. package/bundle/ui-kit/InputListRange/InputListRange.d.ts +2 -0
  20. package/bundle/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
  21. package/bundle/utils/arrayByRange.d.ts +1 -0
  22. package/bundle/utils/isPictureSizeEmpty.d.ts +2 -2
  23. package/bundle/utils/mergeIntervals.d.ts +1 -0
  24. package/dist/components/Calculator/CalculatorContent.d.ts +18 -17
  25. package/dist/components/Calculator/CreditCalculatorForm.js.map +1 -1
  26. package/dist/components/Calculator/DepositCalculatorForm.d.ts +2 -2
  27. package/dist/components/Calculator/DepositCalculatorForm.js +21 -11
  28. package/dist/components/Calculator/DepositCalculatorForm.js.map +1 -1
  29. package/dist/components/Calculator/constants.js +1 -1
  30. package/dist/components/Calculator/constants.js.map +1 -1
  31. package/dist/components/Calculator/rangeHelpers.d.ts +1 -0
  32. package/dist/components/Calculator/rangeHelpers.js +4 -1
  33. package/dist/components/Calculator/rangeHelpers.js.map +1 -1
  34. package/dist/components/Calculator/renderMonthsInput.d.ts +1 -0
  35. package/dist/components/Calculator/renderMonthsInput.js +3 -2
  36. package/dist/components/Calculator/renderMonthsInput.js.map +1 -1
  37. package/dist/components/Calculator/useCreditCalculatorParams.js +27 -29
  38. package/dist/components/Calculator/useCreditCalculatorParams.js.map +1 -1
  39. package/dist/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
  40. package/dist/components/Calculator/useDepositCalculatorParams.js +22 -6
  41. package/dist/components/Calculator/useDepositCalculatorParams.js.map +1 -1
  42. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
  43. package/dist/components/Filtration/Filtration.js +1 -1
  44. package/dist/components/Filtration/Filtration.js.map +1 -1
  45. package/dist/components/Filtration/FiltrationContent.d.ts +18 -8
  46. package/dist/components/Filtration/FiltrationInner.js +9 -5
  47. package/dist/components/Filtration/FiltrationInner.js.map +1 -1
  48. package/dist/components/Filtration/renderFormItem.js +6 -5
  49. package/dist/components/Filtration/renderFormItem.js.map +1 -1
  50. package/dist/components/Footer/MediaButton.d.ts +3 -4
  51. package/dist/components/Footer/MediaButton.js.map +1 -1
  52. package/dist/content-page-repository/ContentPageRepository.d.ts +1 -5
  53. package/dist/content-page-repository/ContentPageRepository.js +7 -25
  54. package/dist/content-page-repository/ContentPageRepository.js.map +1 -1
  55. package/dist/content-page-repository/alignImg.d.ts +9 -0
  56. package/dist/content-page-repository/alignImg.js +23 -0
  57. package/dist/content-page-repository/alignImg.js.map +1 -0
  58. package/dist/content-page-repository/computeImgOutputPath.d.ts +3 -0
  59. package/dist/content-page-repository/computeImgOutputPath.js +18 -0
  60. package/dist/content-page-repository/computeImgOutputPath.js.map +1 -0
  61. package/dist/content-page-repository/resizeImg.d.ts +3 -0
  62. package/dist/content-page-repository/resizeImg.js +19 -0
  63. package/dist/content-page-repository/resizeImg.js.map +1 -0
  64. package/dist/content-page-repository/transformContentPage.d.ts +1 -0
  65. package/dist/content-page-repository/transformContentPage.js +25 -19
  66. package/dist/content-page-repository/transformContentPage.js.map +1 -1
  67. package/dist/content-page-repository/transformImg.d.ts +6 -5
  68. package/dist/content-page-repository/transformImg.js +26 -76
  69. package/dist/content-page-repository/transformImg.js.map +1 -1
  70. package/dist/content-page-repository/transformPicture.d.ts +1 -1
  71. package/dist/content-page-repository/transformPicture.js +8 -16
  72. package/dist/content-page-repository/transformPicture.js.map +1 -1
  73. package/dist/ui-kit/InputListRange/InputListRange.d.ts +2 -0
  74. package/dist/ui-kit/InputListRange/InputListRange.js +41 -0
  75. package/dist/ui-kit/InputListRange/InputListRange.js.map +1 -0
  76. package/dist/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
  77. package/dist/ui-kit/InputListRange/InputListRangeProps.js +2 -0
  78. package/dist/ui-kit/InputListRange/InputListRangeProps.js.map +1 -0
  79. package/dist/ui-kit/Select/Select.js +2 -1
  80. package/dist/ui-kit/Select/Select.js.map +1 -1
  81. package/dist/utils/arrayByRange.d.ts +1 -0
  82. package/dist/utils/arrayByRange.js +5 -0
  83. package/dist/utils/arrayByRange.js.map +1 -0
  84. package/dist/utils/isPictureSizeEmpty.d.ts +2 -2
  85. package/dist/utils/isPictureSizeEmpty.js +1 -1
  86. package/dist/utils/isPictureSizeEmpty.js.map +1 -1
  87. package/dist/utils/mergeIntervals.d.ts +1 -0
  88. package/dist/utils/mergeIntervals.js +20 -0
  89. package/dist/utils/mergeIntervals.js.map +1 -0
  90. package/lib/common.css +1 -1
  91. package/lib/components/Calculator/CalculatorContent.d.ts +18 -17
  92. package/lib/components/Calculator/CreditCalculatorForm.js.map +1 -1
  93. package/lib/components/Calculator/DepositCalculatorForm.d.ts +2 -2
  94. package/lib/components/Calculator/DepositCalculatorForm.js +22 -12
  95. package/lib/components/Calculator/DepositCalculatorForm.js.map +1 -1
  96. package/lib/components/Calculator/constants.js +1 -1
  97. package/lib/components/Calculator/constants.js.map +1 -1
  98. package/lib/components/Calculator/rangeHelpers.d.ts +1 -0
  99. package/lib/components/Calculator/rangeHelpers.js +2 -0
  100. package/lib/components/Calculator/rangeHelpers.js.map +1 -1
  101. package/lib/components/Calculator/renderMonthsInput.d.ts +1 -0
  102. package/lib/components/Calculator/renderMonthsInput.js +3 -2
  103. package/lib/components/Calculator/renderMonthsInput.js.map +1 -1
  104. package/lib/components/Calculator/useCreditCalculatorParams.js +27 -29
  105. package/lib/components/Calculator/useCreditCalculatorParams.js.map +1 -1
  106. package/lib/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
  107. package/lib/components/Calculator/useDepositCalculatorParams.js +22 -6
  108. package/lib/components/Calculator/useDepositCalculatorParams.js.map +1 -1
  109. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
  110. package/lib/components/Filtration/Filtration.js +1 -1
  111. package/lib/components/Filtration/Filtration.js.map +1 -1
  112. package/lib/components/Filtration/FiltrationContent.d.ts +18 -8
  113. package/lib/components/Filtration/FiltrationInner.js +9 -5
  114. package/lib/components/Filtration/FiltrationInner.js.map +1 -1
  115. package/lib/components/Filtration/renderFormItem.js +6 -5
  116. package/lib/components/Filtration/renderFormItem.js.map +1 -1
  117. package/lib/components/Footer/MediaButton.d.ts +3 -4
  118. package/lib/components/Footer/MediaButton.js.map +1 -1
  119. package/lib/content-page-repository/ContentPageRepository.d.ts +1 -5
  120. package/lib/content-page-repository/ContentPageRepository.js +8 -26
  121. package/lib/content-page-repository/ContentPageRepository.js.map +1 -1
  122. package/lib/content-page-repository/alignImg.d.ts +9 -0
  123. package/lib/content-page-repository/alignImg.js +17 -0
  124. package/lib/content-page-repository/alignImg.js.map +1 -0
  125. package/lib/content-page-repository/computeImgOutputPath.d.ts +3 -0
  126. package/lib/content-page-repository/computeImgOutputPath.js +12 -0
  127. package/lib/content-page-repository/computeImgOutputPath.js.map +1 -0
  128. package/lib/content-page-repository/resizeImg.d.ts +3 -0
  129. package/lib/content-page-repository/resizeImg.js +13 -0
  130. package/lib/content-page-repository/resizeImg.js.map +1 -0
  131. package/lib/content-page-repository/transformContentPage.d.ts +1 -0
  132. package/lib/content-page-repository/transformContentPage.js +23 -18
  133. package/lib/content-page-repository/transformContentPage.js.map +1 -1
  134. package/lib/content-page-repository/transformImg.d.ts +6 -5
  135. package/lib/content-page-repository/transformImg.js +26 -76
  136. package/lib/content-page-repository/transformImg.js.map +1 -1
  137. package/lib/content-page-repository/transformPicture.d.ts +1 -1
  138. package/lib/content-page-repository/transformPicture.js +8 -16
  139. package/lib/content-page-repository/transformPicture.js.map +1 -1
  140. package/lib/ui-kit/InputListRange/InputListRange.d.ts +2 -0
  141. package/lib/ui-kit/InputListRange/InputListRange.js +39 -0
  142. package/lib/ui-kit/InputListRange/InputListRange.js.map +1 -0
  143. package/lib/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
  144. package/lib/ui-kit/InputListRange/InputListRangeProps.js +2 -0
  145. package/lib/ui-kit/InputListRange/InputListRangeProps.js.map +1 -0
  146. package/lib/ui-kit/Select/Select.js +2 -1
  147. package/lib/ui-kit/Select/Select.js.map +1 -1
  148. package/lib/utils/arrayByRange.d.ts +1 -0
  149. package/lib/utils/arrayByRange.js +2 -0
  150. package/lib/utils/arrayByRange.js.map +1 -0
  151. package/lib/utils/isPictureSizeEmpty.d.ts +2 -2
  152. package/lib/utils/isPictureSizeEmpty.js +1 -1
  153. package/lib/utils/isPictureSizeEmpty.js.map +1 -1
  154. package/lib/utils/mergeIntervals.d.ts +1 -0
  155. package/lib/utils/mergeIntervals.js +17 -0
  156. package/lib/utils/mergeIntervals.js.map +1 -0
  157. package/mobile/bundle/bundle.umd.js +1 -1
  158. package/mobile/bundle/bundle.umd.min.js +1 -1
  159. package/mobile/bundle/components/Calculator/CalculatorContent.d.ts +18 -17
  160. package/mobile/bundle/components/Calculator/DepositCalculatorForm.d.ts +2 -2
  161. package/mobile/bundle/components/Calculator/rangeHelpers.d.ts +1 -0
  162. package/mobile/bundle/components/Calculator/renderMonthsInput.d.ts +1 -0
  163. package/mobile/bundle/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
  164. package/mobile/bundle/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
  165. package/mobile/bundle/components/Filtration/FiltrationContent.d.ts +18 -8
  166. package/mobile/bundle/components/Footer/MediaButton.d.ts +3 -4
  167. package/mobile/bundle/content-page-repository/ContentPageRepository.d.ts +1 -5
  168. package/mobile/bundle/content-page-repository/alignImg.d.ts +9 -0
  169. package/mobile/bundle/content-page-repository/computeImgOutputPath.d.ts +3 -0
  170. package/mobile/bundle/content-page-repository/resizeImg.d.ts +3 -0
  171. package/mobile/bundle/content-page-repository/transformContentPage.d.ts +1 -0
  172. package/mobile/bundle/content-page-repository/transformImg.d.ts +6 -5
  173. package/mobile/bundle/content-page-repository/transformPicture.d.ts +1 -1
  174. package/mobile/bundle/ui-kit/InputListRange/InputListRange.d.ts +2 -0
  175. package/mobile/bundle/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
  176. package/mobile/bundle/utils/arrayByRange.d.ts +1 -0
  177. package/mobile/bundle/utils/isPictureSizeEmpty.d.ts +2 -2
  178. package/mobile/bundle/utils/mergeIntervals.d.ts +1 -0
  179. package/mobile/dist/components/Calculator/CalculatorContent.d.ts +18 -17
  180. package/mobile/dist/components/Calculator/CreditCalculatorForm.js.map +1 -1
  181. package/mobile/dist/components/Calculator/DepositCalculatorForm.d.ts +2 -2
  182. package/mobile/dist/components/Calculator/DepositCalculatorForm.js +21 -11
  183. package/mobile/dist/components/Calculator/DepositCalculatorForm.js.map +1 -1
  184. package/mobile/dist/components/Calculator/constants.js +1 -1
  185. package/mobile/dist/components/Calculator/constants.js.map +1 -1
  186. package/mobile/dist/components/Calculator/rangeHelpers.d.ts +1 -0
  187. package/mobile/dist/components/Calculator/rangeHelpers.js +4 -1
  188. package/mobile/dist/components/Calculator/rangeHelpers.js.map +1 -1
  189. package/mobile/dist/components/Calculator/renderMonthsInput.d.ts +1 -0
  190. package/mobile/dist/components/Calculator/renderMonthsInput.js +3 -2
  191. package/mobile/dist/components/Calculator/renderMonthsInput.js.map +1 -1
  192. package/mobile/dist/components/Calculator/useCreditCalculatorParams.js +27 -29
  193. package/mobile/dist/components/Calculator/useCreditCalculatorParams.js.map +1 -1
  194. package/mobile/dist/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
  195. package/mobile/dist/components/Calculator/useDepositCalculatorParams.js +22 -6
  196. package/mobile/dist/components/Calculator/useDepositCalculatorParams.js.map +1 -1
  197. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
  198. package/mobile/dist/components/Filtration/Filtration.js +1 -1
  199. package/mobile/dist/components/Filtration/Filtration.js.map +1 -1
  200. package/mobile/dist/components/Filtration/FiltrationContent.d.ts +18 -8
  201. package/mobile/dist/components/Filtration/FiltrationInner.js +9 -5
  202. package/mobile/dist/components/Filtration/FiltrationInner.js.map +1 -1
  203. package/mobile/dist/components/Filtration/renderFormItem.js +6 -5
  204. package/mobile/dist/components/Filtration/renderFormItem.js.map +1 -1
  205. package/mobile/dist/components/Footer/MediaButton.d.ts +3 -4
  206. package/mobile/dist/components/Footer/MediaButton.js.map +1 -1
  207. package/mobile/dist/content-page-repository/ContentPageRepository.d.ts +1 -5
  208. package/mobile/dist/content-page-repository/ContentPageRepository.js +7 -25
  209. package/mobile/dist/content-page-repository/ContentPageRepository.js.map +1 -1
  210. package/mobile/dist/content-page-repository/alignImg.d.ts +9 -0
  211. package/mobile/dist/content-page-repository/alignImg.js +23 -0
  212. package/mobile/dist/content-page-repository/alignImg.js.map +1 -0
  213. package/mobile/dist/content-page-repository/computeImgOutputPath.d.ts +3 -0
  214. package/mobile/dist/content-page-repository/computeImgOutputPath.js +18 -0
  215. package/mobile/dist/content-page-repository/computeImgOutputPath.js.map +1 -0
  216. package/mobile/dist/content-page-repository/resizeImg.d.ts +3 -0
  217. package/mobile/dist/content-page-repository/resizeImg.js +19 -0
  218. package/mobile/dist/content-page-repository/resizeImg.js.map +1 -0
  219. package/mobile/dist/content-page-repository/transformContentPage.d.ts +1 -0
  220. package/mobile/dist/content-page-repository/transformContentPage.js +25 -19
  221. package/mobile/dist/content-page-repository/transformContentPage.js.map +1 -1
  222. package/mobile/dist/content-page-repository/transformImg.d.ts +6 -5
  223. package/mobile/dist/content-page-repository/transformImg.js +26 -76
  224. package/mobile/dist/content-page-repository/transformImg.js.map +1 -1
  225. package/mobile/dist/content-page-repository/transformPicture.d.ts +1 -1
  226. package/mobile/dist/content-page-repository/transformPicture.js +8 -16
  227. package/mobile/dist/content-page-repository/transformPicture.js.map +1 -1
  228. package/mobile/dist/ui-kit/InputListRange/InputListRange.d.ts +2 -0
  229. package/mobile/dist/ui-kit/InputListRange/InputListRange.js +41 -0
  230. package/mobile/dist/ui-kit/InputListRange/InputListRange.js.map +1 -0
  231. package/mobile/dist/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
  232. package/mobile/dist/ui-kit/InputListRange/InputListRangeProps.js +2 -0
  233. package/mobile/dist/ui-kit/InputListRange/InputListRangeProps.js.map +1 -0
  234. package/mobile/dist/ui-kit/Select/Select.js +2 -1
  235. package/mobile/dist/ui-kit/Select/Select.js.map +1 -1
  236. package/mobile/dist/utils/arrayByRange.d.ts +1 -0
  237. package/mobile/dist/utils/arrayByRange.js +5 -0
  238. package/mobile/dist/utils/arrayByRange.js.map +1 -0
  239. package/mobile/dist/utils/isPictureSizeEmpty.d.ts +2 -2
  240. package/mobile/dist/utils/isPictureSizeEmpty.js +1 -1
  241. package/mobile/dist/utils/isPictureSizeEmpty.js.map +1 -1
  242. package/mobile/dist/utils/mergeIntervals.d.ts +1 -0
  243. package/mobile/dist/utils/mergeIntervals.js +20 -0
  244. package/mobile/dist/utils/mergeIntervals.js.map +1 -0
  245. package/mobile/lib/components/Calculator/CalculatorContent.d.ts +18 -17
  246. package/mobile/lib/components/Calculator/CreditCalculatorForm.js.map +1 -1
  247. package/mobile/lib/components/Calculator/DepositCalculatorForm.d.ts +2 -2
  248. package/mobile/lib/components/Calculator/DepositCalculatorForm.js +22 -12
  249. package/mobile/lib/components/Calculator/DepositCalculatorForm.js.map +1 -1
  250. package/mobile/lib/components/Calculator/constants.js +1 -1
  251. package/mobile/lib/components/Calculator/constants.js.map +1 -1
  252. package/mobile/lib/components/Calculator/rangeHelpers.d.ts +1 -0
  253. package/mobile/lib/components/Calculator/rangeHelpers.js +2 -0
  254. package/mobile/lib/components/Calculator/rangeHelpers.js.map +1 -1
  255. package/mobile/lib/components/Calculator/renderMonthsInput.d.ts +1 -0
  256. package/mobile/lib/components/Calculator/renderMonthsInput.js +3 -2
  257. package/mobile/lib/components/Calculator/renderMonthsInput.js.map +1 -1
  258. package/mobile/lib/components/Calculator/useCreditCalculatorParams.js +27 -29
  259. package/mobile/lib/components/Calculator/useCreditCalculatorParams.js.map +1 -1
  260. package/mobile/lib/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
  261. package/mobile/lib/components/Calculator/useDepositCalculatorParams.js +22 -6
  262. package/mobile/lib/components/Calculator/useDepositCalculatorParams.js.map +1 -1
  263. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
  264. package/mobile/lib/components/Filtration/Filtration.js +1 -1
  265. package/mobile/lib/components/Filtration/Filtration.js.map +1 -1
  266. package/mobile/lib/components/Filtration/FiltrationContent.d.ts +18 -8
  267. package/mobile/lib/components/Filtration/FiltrationInner.js +9 -5
  268. package/mobile/lib/components/Filtration/FiltrationInner.js.map +1 -1
  269. package/mobile/lib/components/Filtration/renderFormItem.js +6 -5
  270. package/mobile/lib/components/Filtration/renderFormItem.js.map +1 -1
  271. package/mobile/lib/components/Footer/MediaButton.d.ts +3 -4
  272. package/mobile/lib/components/Footer/MediaButton.js.map +1 -1
  273. package/mobile/lib/content-page-repository/ContentPageRepository.d.ts +1 -5
  274. package/mobile/lib/content-page-repository/ContentPageRepository.js +8 -26
  275. package/mobile/lib/content-page-repository/ContentPageRepository.js.map +1 -1
  276. package/mobile/lib/content-page-repository/alignImg.d.ts +9 -0
  277. package/mobile/lib/content-page-repository/alignImg.js +17 -0
  278. package/mobile/lib/content-page-repository/alignImg.js.map +1 -0
  279. package/mobile/lib/content-page-repository/computeImgOutputPath.d.ts +3 -0
  280. package/mobile/lib/content-page-repository/computeImgOutputPath.js +12 -0
  281. package/mobile/lib/content-page-repository/computeImgOutputPath.js.map +1 -0
  282. package/mobile/lib/content-page-repository/resizeImg.d.ts +3 -0
  283. package/mobile/lib/content-page-repository/resizeImg.js +13 -0
  284. package/mobile/lib/content-page-repository/resizeImg.js.map +1 -0
  285. package/mobile/lib/content-page-repository/transformContentPage.d.ts +1 -0
  286. package/mobile/lib/content-page-repository/transformContentPage.js +23 -18
  287. package/mobile/lib/content-page-repository/transformContentPage.js.map +1 -1
  288. package/mobile/lib/content-page-repository/transformImg.d.ts +6 -5
  289. package/mobile/lib/content-page-repository/transformImg.js +26 -76
  290. package/mobile/lib/content-page-repository/transformImg.js.map +1 -1
  291. package/mobile/lib/content-page-repository/transformPicture.d.ts +1 -1
  292. package/mobile/lib/content-page-repository/transformPicture.js +8 -16
  293. package/mobile/lib/content-page-repository/transformPicture.js.map +1 -1
  294. package/mobile/lib/ui-kit/InputListRange/InputListRange.d.ts +2 -0
  295. package/mobile/lib/ui-kit/InputListRange/InputListRange.js +39 -0
  296. package/mobile/lib/ui-kit/InputListRange/InputListRange.js.map +1 -0
  297. package/mobile/lib/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
  298. package/mobile/lib/ui-kit/InputListRange/InputListRangeProps.js +2 -0
  299. package/mobile/lib/ui-kit/InputListRange/InputListRangeProps.js.map +1 -0
  300. package/mobile/lib/ui-kit/Select/Select.js +2 -1
  301. package/mobile/lib/ui-kit/Select/Select.js.map +1 -1
  302. package/mobile/lib/utils/arrayByRange.d.ts +1 -0
  303. package/mobile/lib/utils/arrayByRange.js +2 -0
  304. package/mobile/lib/utils/arrayByRange.js.map +1 -0
  305. package/mobile/lib/utils/isPictureSizeEmpty.d.ts +2 -2
  306. package/mobile/lib/utils/isPictureSizeEmpty.js +1 -1
  307. package/mobile/lib/utils/isPictureSizeEmpty.js.map +1 -1
  308. package/mobile/lib/utils/mergeIntervals.d.ts +1 -0
  309. package/mobile/lib/utils/mergeIntervals.js +17 -0
  310. package/mobile/lib/utils/mergeIntervals.js.map +1 -0
  311. package/mobile/src/components/Calculator/Calculator.example.json +3 -1
  312. package/mobile/src/components/Calculator/CalculatorContent.ts +20 -19
  313. package/mobile/src/components/Calculator/CreditCalculatorForm.tsx +6 -7
  314. package/mobile/src/components/Calculator/DepositCalculatorForm.tsx +48 -15
  315. package/mobile/src/components/Calculator/constants.ts +1 -1
  316. package/mobile/src/components/Calculator/rangeHelpers.ts +10 -0
  317. package/mobile/src/components/Calculator/renderMonthsInput.tsx +13 -2
  318. package/mobile/src/components/Calculator/useCreditCalculatorParams.ts +8 -10
  319. package/mobile/src/components/Calculator/useDepositCalculatorParams.ts +36 -9
  320. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.example.json +1 -2
  321. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCardContent.ts +2 -8
  322. package/mobile/src/components/Filtration/Filtration.example.json +39 -19
  323. package/mobile/src/components/Filtration/Filtration.tsx +3 -8
  324. package/mobile/src/components/Filtration/FiltrationContent.ts +19 -8
  325. package/mobile/src/components/Filtration/FiltrationInner.tsx +31 -12
  326. package/mobile/src/components/Filtration/renderFormItem.tsx +20 -20
  327. package/mobile/src/components/Footer/MediaButton.tsx +3 -5
  328. package/mobile/src/components/RichTextBlock/RichTextBlock.example.json +1 -1
  329. package/mobile/src/content-page-repository/ContentPageRepository.ts +8 -40
  330. package/mobile/src/content-page-repository/alignImg.ts +32 -0
  331. package/mobile/src/content-page-repository/computeImgOutputPath.ts +20 -0
  332. package/mobile/src/content-page-repository/resizeImg.ts +18 -0
  333. package/mobile/src/content-page-repository/transformContentPage.ts +25 -18
  334. package/mobile/src/content-page-repository/transformImg.ts +49 -121
  335. package/mobile/src/content-page-repository/transformPicture.ts +9 -21
  336. package/mobile/src/ui-kit/InputListRange/InputListRange.tsx +99 -0
  337. package/mobile/src/ui-kit/InputListRange/InputListRangeProps.ts +11 -0
  338. package/mobile/src/ui-kit/Select/Select.tsx +8 -1
  339. package/mobile/src/utils/arrayByRange.ts +4 -0
  340. package/mobile/src/utils/isPictureSizeEmpty.ts +3 -3
  341. package/mobile/src/utils/mergeIntervals.ts +19 -0
  342. package/package.json +1 -1
  343. package/src/components/Calculator/Calculator.example.json +3 -1
  344. package/src/components/Calculator/Calculator.fixture.tsx +4 -0
  345. package/src/components/Calculator/CalculatorContent.ts +20 -19
  346. package/src/components/Calculator/CreditCalculatorForm.tsx +6 -7
  347. package/src/components/Calculator/DepositCalculatorForm.tsx +48 -15
  348. package/src/components/Calculator/constants.ts +1 -1
  349. package/src/components/Calculator/rangeHelpers.ts +10 -0
  350. package/src/components/Calculator/renderMonthsInput.tsx +13 -2
  351. package/src/components/Calculator/useCreditCalculatorParams.ts +8 -10
  352. package/src/components/Calculator/useDepositCalculatorParams.ts +36 -9
  353. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.example.json +1 -2
  354. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.fixture.tsx +0 -9
  355. package/src/components/CarouselRecommendationCard/CarouselRecommendationCardContent.ts +2 -8
  356. package/src/components/Filtration/Filtration.example.json +39 -19
  357. package/src/components/Filtration/Filtration.fixture.tsx +36 -20
  358. package/src/components/Filtration/Filtration.tsx +3 -8
  359. package/src/components/Filtration/FiltrationContent.ts +19 -8
  360. package/src/components/Filtration/FiltrationInner.tsx +31 -12
  361. package/src/components/Filtration/renderFormItem.tsx +20 -20
  362. package/src/components/Footer/MediaButton.tsx +3 -5
  363. package/src/components/RichTextBlock/RichTextBlock.example.json +1 -1
  364. package/src/content-page-repository/ContentPageRepository.ts +8 -40
  365. package/src/content-page-repository/alignImg.ts +32 -0
  366. package/src/content-page-repository/computeImgOutputPath.ts +20 -0
  367. package/src/content-page-repository/resizeImg.ts +18 -0
  368. package/src/content-page-repository/transformContentPage.ts +25 -18
  369. package/src/content-page-repository/transformImg.ts +49 -121
  370. package/src/content-page-repository/transformPicture.ts +9 -21
  371. package/src/ui-kit/InputListRange/InputListRange.tsx +99 -0
  372. package/src/ui-kit/InputListRange/InputListRangeProps.ts +11 -0
  373. package/src/ui-kit/Select/Select.tsx +8 -1
  374. package/src/utils/arrayByRange.ts +4 -0
  375. package/src/utils/isPictureSizeEmpty.ts +3 -3
  376. package/src/utils/mergeIntervals.ts +19 -0
  377. package/bundle/content-page-repository/transformImgPath.d.ts +0 -8
  378. package/dist/content-page-repository/transformImgPath.d.ts +0 -8
  379. package/dist/content-page-repository/transformImgPath.js +0 -22
  380. package/dist/content-page-repository/transformImgPath.js.map +0 -1
  381. package/lib/content-page-repository/transformImgPath.d.ts +0 -8
  382. package/lib/content-page-repository/transformImgPath.js +0 -16
  383. package/lib/content-page-repository/transformImgPath.js.map +0 -1
  384. package/mobile/bundle/content-page-repository/transformImgPath.d.ts +0 -8
  385. package/mobile/dist/content-page-repository/transformImgPath.d.ts +0 -8
  386. package/mobile/dist/content-page-repository/transformImgPath.js +0 -22
  387. package/mobile/dist/content-page-repository/transformImgPath.js.map +0 -1
  388. package/mobile/lib/content-page-repository/transformImgPath.d.ts +0 -8
  389. package/mobile/lib/content-page-repository/transformImgPath.js +0 -16
  390. package/mobile/lib/content-page-repository/transformImgPath.js.map +0 -1
  391. package/mobile/src/content-page-repository/transformImgPath.ts +0 -30
  392. package/src/content-page-repository/transformImgPath.ts +0 -30
@@ -3,35 +3,55 @@
3
3
  "filtrationSchema": {
4
4
  "propertyType": {
5
5
  "title": "Тип недвижимости",
6
- "type": "string",
7
- "enum": ["flat", "apartment", "house", "storeRoom", "parkingSpace"],
8
- "enumNames": ["Квартира", "Апартаменты", "Жилой дом", "Кладовая", "Машино-место"]
6
+ "type": "array",
7
+ "items": {
8
+ "type": "string",
9
+ "enum": ["flat", "apartment", "house", "storeRoom", "parkingSpace"],
10
+ "enumNames": ["Квартира", "Апартаменты", "Жилой дом", "Кладовая", "Машино-место"]
11
+ }
9
12
  },
10
13
  "stage": {
11
14
  "title": "Этап строительства",
12
- "type": "string",
13
- "enum": ["built", "inProgress"],
14
- "enumNames": ["Готовое жильё", "Строящиеся"]
15
+ "type": "array",
16
+ "items": {
17
+ "type": "string",
18
+ "enum": ["built", "inProgress"],
19
+ "enumNames": ["Готовое жильё", "Строящиеся"]
20
+ }
15
21
  },
16
22
  "categories": {
17
23
  "title": "Категории",
18
- "type": "string",
19
- "enum": ["salaryClient", "IT", "youngFamily", "military", "medicalWorker", "scientist"],
20
- "enumNames": [
21
- "Зарплатный клиент",
22
- "IT-специалист",
23
- "Молодая семья",
24
- "Военнослужащий",
25
- "Медицинский работник",
26
- "Научный сотрудник"
27
- ]
24
+ "type": "array",
25
+ "items": {
26
+ "type": "string",
27
+ "enum": ["salaryClient", "IT", "youngFamily", "military", "medicalWorker", "scientist"],
28
+ "enumNames": [
29
+ "Зарплатный клиент",
30
+ "IT-специалист",
31
+ "Молодая семья",
32
+ "Военнослужащий",
33
+ "Медицинский работник",
34
+ "Научный сотрудник"
35
+ ]
36
+ }
28
37
  },
29
38
  "extraOptions": {
30
39
  "title": "Дополнительно",
31
- "type": "string",
32
- "enum": ["preferentialMortgage", "children"],
33
- "enumNames": ["Льготная ипотека", "Дети"]
40
+ "type": "array",
41
+ "items": {
42
+ "type": "string",
43
+ "enum": ["preferentialMortgage", "children"],
44
+ "enumNames": ["Льготная ипотека", "Дети"]
45
+ }
34
46
  }
47
+ },
48
+ "resetButton": {
49
+ "text": "Очистить фильтры",
50
+ "version": "secondary"
51
+ },
52
+ "notFound": {
53
+ "title": "Нет подходящей ипотечной программы",
54
+ "description": "Попробуйте очистить фильтры"
35
55
  }
36
56
  }
37
57
  }
@@ -15,19 +15,14 @@ export const Filtration: JSXBlock<FiltrationProps> = JSX<FiltrationProps>(
15
15
  const { formState, register, resetForm } = useForm();
16
16
 
17
17
  return (
18
- <BlockWrapper className={style('p-9', className)} {...rest}>
19
- <form className="flex justify-between">
18
+ <BlockWrapper className={style(className)} version="transparent" {...rest}>
19
+ <form className="flex justify-between bg-white p-9 mb-1">
20
20
  <div className="flex gap-11">
21
21
  {Object.keys(filtrationSchema).map(renderFormItem(filtrationSchema, register))}
22
22
  </div>
23
23
  {resetButton ? (
24
24
  <div>
25
- <Button
26
- className="w-72"
27
- text={resetButton.text}
28
- version={resetButton.buttonVersion}
29
- onClick={resetForm}
30
- />
25
+ <Button className="w-72" onClick={resetForm} {...resetButton} />
31
26
  </div>
32
27
  ) : null}
33
28
  </form>
@@ -1,4 +1,5 @@
1
1
  import type { ButtonVersion } from '../../model/ButtonVersion';
2
+ import type { DescriptionProps, TitleProps } from '../../model/HeadlineType';
2
3
 
3
4
  /**
4
5
  * @title Заголовок
@@ -33,6 +34,7 @@ export type StringArray = {
33
34
  * @hidden
34
35
  */
35
36
  type?: 'array';
37
+ /** @title */
36
38
  items?: {
37
39
  /**
38
40
  * @default string
@@ -47,13 +49,13 @@ export type StringArray = {
47
49
  // TODO: Make customizable to implement arbitrary filtration blocks
48
50
  export type FiltrationSchema = {
49
51
  /** @title Тип недвижимости */
50
- propertyType?: StringEnum;
52
+ propertyType?: StringArray;
51
53
  /** @title Этап строительства */
52
- stage?: StringEnum;
54
+ stage?: StringArray;
53
55
  /** @title Категории */
54
- categories?: StringEnum;
56
+ categories?: StringArray;
55
57
  /** @title Дополнительно */
56
- extraOptions?: StringEnum;
58
+ extraOptions?: StringArray;
57
59
  };
58
60
 
59
61
  /**
@@ -67,14 +69,24 @@ export type ResetButton = {
67
69
  /**
68
70
  * @title Цвет кнопки
69
71
  */
70
- buttonVersion: ButtonVersion;
72
+ version: ButtonVersion;
71
73
  };
72
74
 
75
+ /**
76
+ * @title Плитка "Не найдено"
77
+ */
78
+ export type NotFound = TitleProps & DescriptionProps;
79
+
73
80
  export interface FiltrationInnerContent {
74
- /** @title Название кнопки */
81
+ /** @title Название сворачивающейся кнопки */
75
82
  label?: string;
76
- /** @title Количество отображаемых предметов */
83
+ /**
84
+ * @title Количество отображаемых предметов
85
+ * @minimum 1
86
+ */
77
87
  topItemsCount?: number;
88
+ resetButton?: ResetButton;
89
+ notFound?: NotFound;
78
90
  }
79
91
 
80
92
  /**
@@ -83,5 +95,4 @@ export interface FiltrationInnerContent {
83
95
  export interface FiltrationContent extends FiltrationInnerContent {
84
96
  /** @title Параметры фильтрации */
85
97
  filtrationSchema?: FiltrationSchema;
86
- resetButton?: ResetButton;
87
98
  }
@@ -5,10 +5,11 @@ import type { UniBlockProps } from '../../model/JSXBlock';
5
5
  import { DefaultFoldButton } from '../../ui-kit/Foldable/DefaultFoldButton';
6
6
  import { Foldable } from '../../ui-kit/Foldable/Foldable';
7
7
  import { FoldableSection } from '../../ui-kit/Foldable/FoldableSection';
8
+ import { Paragraph } from '../../ui-kit/Paragraph/Paragraph';
9
+ import { Text } from '../../ui-kit/Text/Text';
8
10
  import { style } from '../../utils/style';
9
- import { ErrorBlock } from '../ErrorBlock/ErrorBlock';
10
11
  import { checkShouldRenderBlock } from './checkShouldRenderBlock';
11
- import type { FiltrationInnerContent } from './FiltrationContent';
12
+ import type { FiltrationInnerContent, NotFound } from './FiltrationContent';
12
13
 
13
14
  const ICONS: IconName[] = ['ArrowDownIcon', 'ArrowUpIcon'];
14
15
 
@@ -19,7 +20,7 @@ interface FiltrationInnerProps extends FiltrationInnerContent, UniBlockProps {
19
20
  }
20
21
 
21
22
  export const FiltrationInner = JSX<FiltrationInnerProps>(
22
- ({ label = '', filtrationState = {}, topItemsCount = 0, block, ...rest }) => {
23
+ ({ label = '', filtrationState = {}, topItemsCount = 0, block, notFound, ...rest }) => {
23
24
  const blocksToRender =
24
25
  block?.blocks?.filter((b) => checkShouldRenderBlock(filtrationState, b.content || {})) || [];
25
26
 
@@ -30,28 +31,27 @@ export const FiltrationInner = JSX<FiltrationInnerProps>(
30
31
 
31
32
  return (
32
33
  <div>
33
- <div className={style(blocksToRender.length ? 'hidden' : '')}>
34
- <ErrorBlock
35
- error={{ errorContentType: 'Image' }}
36
- title="Нет подходящей ипотечной программы"
37
- subtitle="Попробуйте очистить фильтры"
38
- />
34
+ <div className={style(blocksToRender.length ? 'hidden' : 'block')}>
35
+ {notFound ? renderNotFound(notFound) : null}
39
36
  </div>
40
37
  <div className={style(blocksToRender.length ? '' : 'hidden')}>
41
- <div className={resultsGridStyle}>
38
+ <div className={style('mb-1', resultsGridStyle)}>
42
39
  {renderBlocksList(visibleBlocks, { ...rest.options, parent: block })}
43
40
  </div>
44
41
  <Foldable
45
42
  renderFoldableSection={({ isUnfolded }) => {
46
43
  return (
47
- <FoldableSection className={resultsGridStyle} isUnfolded={isUnfolded}>
44
+ <FoldableSection
45
+ className={style(resultsGridStyle, isUnfolded ? 'mb-1' : '')}
46
+ isUnfolded={isUnfolded}
47
+ >
48
48
  {renderBlocksList(hiddenBlocks, { ...rest.options, parent: block })}
49
49
  </FoldableSection>
50
50
  );
51
51
  }}
52
52
  renderFoldButton={({ isUnfolded, onToggle }) => (
53
53
  <DefaultFoldButton
54
- className={style('mt-11', topItemsCount < 1 ? 'hidden' : '')}
54
+ className={style(topItemsCount < 1 ? 'hidden' : '')}
55
55
  disabled={!hiddenBlocks?.length}
56
56
  label={label}
57
57
  icon={ICONS[Number(isUnfolded)]}
@@ -65,3 +65,22 @@ export const FiltrationInner = JSX<FiltrationInnerProps>(
65
65
  );
66
66
  },
67
67
  );
68
+
69
+ function renderNotFound({ title, description }: NotFound) {
70
+ return (
71
+ <div className="bg-white py-20">
72
+ {title ? (
73
+ <div className="mb-2">
74
+ <Paragraph align="text-center">
75
+ <Text size="text-h4">{title}</Text>
76
+ </Paragraph>
77
+ </div>
78
+ ) : null}
79
+ {description ? (
80
+ <Paragraph size="text-xl" font="font-light" align="text-center">
81
+ {description}
82
+ </Paragraph>
83
+ ) : null}
84
+ </div>
85
+ );
86
+ }
@@ -1,7 +1,7 @@
1
1
  import type { FormElementRegisterer } from '../../hooks/useForm';
2
2
  import { SlideCheckboxGroup } from '../../ui-kit/SlideCheckboxGroup/SlideCheckboxGroup';
3
3
  import { Text } from '../../ui-kit/Text/Text';
4
- import type { FiltrationSchema, StringEnum } from './FiltrationContent';
4
+ import type { FiltrationSchema, StringArray } from './FiltrationContent';
5
5
 
6
6
  export const renderFormItem =
7
7
  (filtrationSchema: FiltrationSchema, register: FormElementRegisterer) => (key: string) => {
@@ -9,28 +9,28 @@ export const renderFormItem =
9
9
  const type = item?.type;
10
10
 
11
11
  switch (type) {
12
- case 'string':
13
- return renderRadioButtons(key, register)(item);
12
+ case 'array':
13
+ return renderCheckboxes(key, register)(item);
14
14
  default:
15
15
  return null;
16
16
  }
17
17
  };
18
18
 
19
- const renderRadioButtons =
20
- (key: string, register: FormElementRegisterer) => (item?: StringEnum) => {
21
- const options =
22
- item?.enum?.map((e, i) => ({ value: e, title: item?.enumNames?.[i] || '' })) || [];
19
+ const renderCheckboxes = (key: string, register: FormElementRegisterer) => (item?: StringArray) => {
20
+ const options =
21
+ item?.items?.enum?.map((e, i) => ({ value: e, title: item?.items?.enumNames?.[i] || '' })) ||
22
+ [];
23
23
 
24
- return (
25
- <div role="radiogroup" key={key}>
26
- {item?.title ? (
27
- <div className="mb-4">
28
- <Text size="text-m" font="font-light" color="text-secondary-text">
29
- {item.title}
30
- </Text>
31
- </div>
32
- ) : null}
33
- <SlideCheckboxGroup items={options} multiple={false} {...register(key)} />
34
- </div>
35
- );
36
- };
24
+ return (
25
+ <div key={key}>
26
+ {item?.title ? (
27
+ <div className="mb-4">
28
+ <Text size="text-m" font="font-light" color="text-secondary-text">
29
+ {item.title}
30
+ </Text>
31
+ </div>
32
+ ) : null}
33
+ <SlideCheckboxGroup items={options} multiple {...register(key)} />
34
+ </div>
35
+ );
36
+ };
@@ -1,8 +1,7 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import type { IconVersion } from '../../model/IconVersion';
3
- import type { Picture } from '../../model/Picture';
2
+ import type { IconProps, Picture } from '../../model/Picture';
4
3
  import { Button } from '../../ui-kit/Button/Button';
5
- import type { ButtonWithIconProps } from '../../ui-kit/Button/ButtonProps';
4
+ import type { ButtonProps } from '../../ui-kit/Button/ButtonProps';
6
5
  import { Img } from '../../ui-kit/Img/Img';
7
6
  import { getIconWithVersion } from '../../utils/getIconWithVersion';
8
7
  import { style } from '../../utils/style';
@@ -46,8 +45,7 @@ const ICONS_MAP: Array<{
46
45
 
47
46
  export type ButtonSize = 'default' | 'small';
48
47
 
49
- interface MediaButtonProps extends ButtonWithIconProps {
50
- iconVersion?: IconVersion;
48
+ interface MediaButtonProps extends ButtonProps, IconProps {
51
49
  buttonSize?: ButtonSize;
52
50
  }
53
51
 
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "content": {
3
- "__html": "<p class=\"h1\">Заголовок 1</p>\n<p class=\"h2\">Заголовок 2</p>\n<p class=\"h3\">Заголовок 3</p>\n<p class=\"h4\">Заголовок 4</p>\n<p class=\"h5\">Заголовок 5</p>\n<p class=\"h6\">Заголовок 6</p>\n<p>Параграф, в котором много текста и даже <a href=\"#\">ссылка</a></p>\n<p><strong>Жирный текст</strong>, <em>Наклонный текст</em></p>\n<ul>\n <li>Список с точками</li>\n <li>Список с точками</li>\n</ul>\n<ol>\n <li>Нумерованный список</li>\n <li>Нумерованный список</li>\n</ol>\n"
3
+ "__html": "<h1>Заголовок 1</h1>\n<h2>Заголовок 2</h2>\n<h3>Заголовок 3</h3>\n<h4>Заголовок 4</h4>\n<h5>Заголовок 5</h5>\n<h6>Заголовок 6</h6>\n<p>Параграф, в котором много текста и даже <a href=\"#\">ссылка</a></p>\n<p><strong>Жирный текст</strong>, <em>Наклонный текст</em></p>\n<ul>\n <li>Список с точками</li>\n <li>Список с точками</li>\n</ul>\n<ol>\n <li>Нумерованный список</li>\n <li>Нумерованный список</li>\n</ol>\n"
4
4
  }
5
5
  }
@@ -1,26 +1,16 @@
1
+ import fs from 'fs';
1
2
  import glob from 'glob';
2
3
  import util from 'util';
3
4
  import type { ContentPageDef } from '../model/ContentPageDef';
4
5
  import type { TransformationOptions } from './TransformationOptions';
5
- import { transformContentPage } from './transformContentPage';
6
+ import { generatedPagePath, transformContentPage } from './transformContentPage';
6
7
 
7
- const INDEX_PAGE_SLUG = 'index';
8
8
  const find = util.promisify(glob);
9
-
10
- const bySlug = (slug: string) => (content: ContentPageDef) => content.slug === slug;
11
- const byCustomPageType = (type?: string) => (content: ContentPageDef) =>
12
- type ? content._customPageType === type : !content._customPageType;
13
-
14
- const not =
15
- <Arg>(predicate: (_: Arg) => boolean) =>
16
- (_: Arg) =>
17
- !predicate(_);
9
+ const readFile = util.promisify(fs.readFile);
18
10
 
19
11
  export class ContentPageRepository {
20
12
  public static readonly inst = new ContentPageRepository();
21
13
 
22
- private cache: Record<string, ContentPageDef> = {};
23
-
24
14
  constructor(
25
15
  private readonly options: TransformationOptions = {
26
16
  contentDir: 'content',
@@ -28,37 +18,15 @@ export class ContentPageRepository {
28
18
  },
29
19
  ) {}
30
20
 
31
- async listAllContentPages(): Promise<string[]> {
21
+ listAllContentPages(): Promise<string[]> {
32
22
  return find(`${this.options.contentDir}/**/*.page.json`);
33
23
  }
34
24
 
35
- async getAllContentPages(): Promise<ContentPageDef[]> {
36
- const pagePaths = await this.listAllContentPages();
37
-
38
- return Promise.all(pagePaths.map((_) => this.readPage(_)));
39
- }
40
-
41
- async getSecondaryContentPages(customPageType?: string): Promise<ContentPageDef[]> {
42
- const pages = await this.getAllContentPages();
43
-
44
- return pages.filter(not(bySlug(INDEX_PAGE_SLUG))).filter(byCustomPageType(customPageType));
45
- }
46
-
47
- async getContentPageBySlug(slug: string): Promise<ContentPageDef | undefined> {
48
- const pages = await this.getAllContentPages();
49
-
50
- return pages.find(bySlug(slug));
51
- }
52
-
53
- async getIndexPage(): Promise<ContentPageDef | undefined> {
54
- return this.getContentPageBySlug(INDEX_PAGE_SLUG);
55
- }
56
-
57
25
  async readPage(filePath: string): Promise<ContentPageDef> {
58
- if (!(filePath in this.cache)) {
59
- this.cache[filePath] = await transformContentPage(filePath, this.options);
60
- }
26
+ return JSON.parse(await readFile(generatedPagePath(filePath), 'utf-8'));
27
+ }
61
28
 
62
- return this.cache[filePath];
29
+ generatePage(filePath: string): Promise<ContentPageDef> {
30
+ return transformContentPage(filePath, this.options);
63
31
  }
64
32
  }
@@ -0,0 +1,32 @@
1
+ import type { Sharp } from 'sharp';
2
+ import sharp from 'sharp';
3
+ import type { ImageSize } from '../model/ImageSize';
4
+ import type { ImgAlignment } from '../model/Picture';
5
+
6
+ interface ImgAlignmentParams {
7
+ containerSize?: Partial<ImageSize>;
8
+ alignment?: ImgAlignment;
9
+ }
10
+
11
+ export const alignImg =
12
+ ({ containerSize, alignment }: ImgAlignmentParams) =>
13
+ async (chain: Sharp): Promise<Sharp> =>
14
+ containerSize?.width && containerSize?.height && alignment
15
+ ? createTransparentBack(containerSize as ImageSize).composite([
16
+ {
17
+ input: await toBuffer(chain),
18
+ gravity: alignment,
19
+ },
20
+ ])
21
+ : chain;
22
+
23
+ const toBuffer = async (chain: Sharp) => (await chain.toBuffer({ resolveWithObject: true })).data;
24
+
25
+ function createTransparentBack({ width, height }: ImageSize) {
26
+ const channels = 4;
27
+ const rgbaColor = 0x00000000;
28
+
29
+ const canvas = Buffer.alloc(width * height * channels, rgbaColor);
30
+
31
+ return sharp(canvas, { raw: { width, height, channels } });
32
+ }
@@ -0,0 +1,20 @@
1
+ import path from 'path';
2
+ import type { ImgSource } from '../model/Picture';
3
+ import type { TransformationOptions } from './TransformationOptions';
4
+
5
+ export function computeImgOutputPath(
6
+ imgInputPath: string,
7
+ { contentDir, publicDir, format, size, alignment }: TransformationOptions & ImgSource,
8
+ ): string {
9
+ const imgRelativePath = path.relative(contentDir, imgInputPath);
10
+
11
+ const imgDir = path.dirname(imgRelativePath);
12
+
13
+ const inputExt = path.extname(imgRelativePath);
14
+ const fileName = path.basename(imgRelativePath, inputExt);
15
+ const suffixParts = [size?.width, size?.height, alignment].filter(Boolean);
16
+ const suffix = suffixParts.length ? `-${suffixParts.join('-')}` : '';
17
+ const ext = format ? `.${format}` : inputExt;
18
+
19
+ return path.join(publicDir, imgDir, `${fileName}${suffix}${ext}`);
20
+ }
@@ -0,0 +1,18 @@
1
+ import type { ResizeOptions, Sharp } from 'sharp';
2
+ import sharp from 'sharp';
3
+ import type { ImageSize } from '../model/ImageSize';
4
+
5
+ export const resizeImg =
6
+ (size?: Partial<ImageSize>, options?: ResizeOptions) =>
7
+ (chain: Sharp): Sharp =>
8
+ size
9
+ ? chain.resize(size.width || null, size.height || null, {
10
+ /*
11
+ * Editor behaviour with one dimension present: resize by given dimension maintaining aspect ratio. (fit: contain)
12
+ * With two dimensions present: resize trying to fill given dimensions (fit: fill)
13
+ */
14
+ fit: size.width && size.height ? sharp.fit.fill : sharp.fit.contain,
15
+ background: { r: 0, g: 0, b: 0, alpha: 0 },
16
+ ...options,
17
+ })
18
+ : chain;
@@ -9,6 +9,9 @@ import { transformMarkdown } from './transformMarkdown';
9
9
  import { transformPicture } from './transformPicture';
10
10
 
11
11
  const readFile = util.promisify(fs.readFile);
12
+ const writeFile = util.promisify(fs.writeFile);
13
+
14
+ const OUTPUT_SUFFIX = '.static';
12
15
 
13
16
  export async function transformContentPage(
14
17
  pagePath: string,
@@ -17,31 +20,35 @@ export async function transformContentPage(
17
20
  const content = await readFile(pagePath, 'utf8');
18
21
 
19
22
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
20
- return mapJSON<ContentPageDef>(JSON.parse(content), async (value: any, [key]) => {
21
- const isMarkdown = typeof value === 'string' && key?.endsWith('__md');
22
- const isHTML = typeof value === 'string' && key?.endsWith('__html');
23
-
24
- if (isMarkdown) {
25
- return await transformMarkdown(value);
26
- } else if (isHTML) {
27
- return await transformHTML(value);
28
- } else if (isPicture(value)) {
29
- try {
30
- return await transformPicture(pagePath, value, options);
31
- } catch (ex) {
32
- console.warn('Error while transforming picture on page: %s', pagePath);
33
- console.error(ex);
23
+ const result = await mapJSON<ContentPageDef>(JSON.parse(content), async (value: any, [key]) => {
24
+ const isMarkdown = isString(value) && key?.endsWith('__md');
25
+ const isHTML = isString(value) && key?.endsWith('__html');
26
+
27
+ try {
28
+ if (isMarkdown) {
29
+ return await transformMarkdown(value);
30
+ } else if (isHTML) {
31
+ return await transformHTML(value);
32
+ } else if (isPicture(value)) {
33
+ return await transformPicture(value, pagePath, options);
34
34
  }
35
+ } catch (ex) {
36
+ console.warn(`Error while transforming field "${key}" on page: ${pagePath}`);
37
+ console.error(ex);
35
38
  }
36
39
 
37
40
  return value;
38
41
  });
39
- }
40
42
 
41
- const isLocalPath = (_: any): boolean => isString(_) && _.length < 512 && !isURL(_);
43
+ await writeFile(generatedPagePath(pagePath), JSON.stringify(result), 'utf-8');
42
44
 
43
- const isString = (_: any): _ is string => Boolean(_ && typeof _ === 'string');
45
+ return result;
46
+ }
44
47
 
45
- const isURL = (src: string) => ['data:', 'https:', 'http:'].some((proto) => src.startsWith(proto));
48
+ export const generatedPagePath = (pagePath: string) => `${pagePath}${OUTPUT_SUFFIX}`;
46
49
 
47
50
  const isPicture = (_: any): _ is Picture => Boolean(_ && isLocalPath(_?.src));
51
+ const isLocalPath = (_: any): boolean => isString(_) && _.length < 1024 && !isURL(_);
52
+ const isURL = (src: string) => ['data:', 'https:', 'http:'].some((proto) => src.startsWith(proto));
53
+
54
+ const isString = (_: any): _ is string => Boolean(_ && typeof _ === 'string');