@redneckz/wildless-cms-uni-blocks 0.9.11 → 0.9.13

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 (350) hide show
  1. package/bin/migrateContentUnit.js +1 -1
  2. package/bundle/blocks.schema.json +1 -1
  3. package/bundle/bundle.umd.js +131 -56
  4. package/bundle/bundle.umd.min.js +1 -1
  5. package/bundle/components/Calculator/CalculatorContent.d.ts +18 -17
  6. package/bundle/components/Calculator/DepositCalculatorForm.d.ts +2 -2
  7. package/bundle/components/Calculator/rangeHelpers.d.ts +1 -0
  8. package/bundle/components/Calculator/renderMonthsInput.d.ts +1 -0
  9. package/bundle/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
  10. package/bundle/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
  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/Footer/MediaButton.d.ts +3 -4
  44. package/dist/components/Footer/MediaButton.js.map +1 -1
  45. package/dist/content-page-repository/ContentPageRepository.d.ts +1 -5
  46. package/dist/content-page-repository/ContentPageRepository.js +7 -25
  47. package/dist/content-page-repository/ContentPageRepository.js.map +1 -1
  48. package/dist/content-page-repository/alignImg.d.ts +9 -0
  49. package/dist/content-page-repository/alignImg.js +23 -0
  50. package/dist/content-page-repository/alignImg.js.map +1 -0
  51. package/dist/content-page-repository/computeImgOutputPath.d.ts +3 -0
  52. package/dist/content-page-repository/computeImgOutputPath.js +18 -0
  53. package/dist/content-page-repository/computeImgOutputPath.js.map +1 -0
  54. package/dist/content-page-repository/resizeImg.d.ts +3 -0
  55. package/dist/content-page-repository/resizeImg.js +19 -0
  56. package/dist/content-page-repository/resizeImg.js.map +1 -0
  57. package/dist/content-page-repository/transformContentPage.d.ts +1 -0
  58. package/dist/content-page-repository/transformContentPage.js +25 -19
  59. package/dist/content-page-repository/transformContentPage.js.map +1 -1
  60. package/dist/content-page-repository/transformImg.d.ts +6 -5
  61. package/dist/content-page-repository/transformImg.js +26 -76
  62. package/dist/content-page-repository/transformImg.js.map +1 -1
  63. package/dist/content-page-repository/transformPicture.d.ts +1 -1
  64. package/dist/content-page-repository/transformPicture.js +8 -16
  65. package/dist/content-page-repository/transformPicture.js.map +1 -1
  66. package/dist/ui-kit/InputListRange/InputListRange.d.ts +2 -0
  67. package/dist/ui-kit/InputListRange/InputListRange.js +41 -0
  68. package/dist/ui-kit/InputListRange/InputListRange.js.map +1 -0
  69. package/dist/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
  70. package/dist/ui-kit/InputListRange/InputListRangeProps.js +2 -0
  71. package/dist/ui-kit/InputListRange/InputListRangeProps.js.map +1 -0
  72. package/dist/ui-kit/Select/Select.js +2 -1
  73. package/dist/ui-kit/Select/Select.js.map +1 -1
  74. package/dist/utils/arrayByRange.d.ts +1 -0
  75. package/dist/utils/arrayByRange.js +5 -0
  76. package/dist/utils/arrayByRange.js.map +1 -0
  77. package/dist/utils/isPictureSizeEmpty.d.ts +2 -2
  78. package/dist/utils/isPictureSizeEmpty.js +1 -1
  79. package/dist/utils/isPictureSizeEmpty.js.map +1 -1
  80. package/dist/utils/mergeIntervals.d.ts +1 -0
  81. package/dist/utils/mergeIntervals.js +20 -0
  82. package/dist/utils/mergeIntervals.js.map +1 -0
  83. package/lib/common.css +1 -1
  84. package/lib/components/Calculator/CalculatorContent.d.ts +18 -17
  85. package/lib/components/Calculator/CreditCalculatorForm.js.map +1 -1
  86. package/lib/components/Calculator/DepositCalculatorForm.d.ts +2 -2
  87. package/lib/components/Calculator/DepositCalculatorForm.js +22 -12
  88. package/lib/components/Calculator/DepositCalculatorForm.js.map +1 -1
  89. package/lib/components/Calculator/constants.js +1 -1
  90. package/lib/components/Calculator/constants.js.map +1 -1
  91. package/lib/components/Calculator/rangeHelpers.d.ts +1 -0
  92. package/lib/components/Calculator/rangeHelpers.js +2 -0
  93. package/lib/components/Calculator/rangeHelpers.js.map +1 -1
  94. package/lib/components/Calculator/renderMonthsInput.d.ts +1 -0
  95. package/lib/components/Calculator/renderMonthsInput.js +3 -2
  96. package/lib/components/Calculator/renderMonthsInput.js.map +1 -1
  97. package/lib/components/Calculator/useCreditCalculatorParams.js +27 -29
  98. package/lib/components/Calculator/useCreditCalculatorParams.js.map +1 -1
  99. package/lib/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
  100. package/lib/components/Calculator/useDepositCalculatorParams.js +22 -6
  101. package/lib/components/Calculator/useDepositCalculatorParams.js.map +1 -1
  102. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
  103. package/lib/components/Footer/MediaButton.d.ts +3 -4
  104. package/lib/components/Footer/MediaButton.js.map +1 -1
  105. package/lib/content-page-repository/ContentPageRepository.d.ts +1 -5
  106. package/lib/content-page-repository/ContentPageRepository.js +8 -26
  107. package/lib/content-page-repository/ContentPageRepository.js.map +1 -1
  108. package/lib/content-page-repository/alignImg.d.ts +9 -0
  109. package/lib/content-page-repository/alignImg.js +17 -0
  110. package/lib/content-page-repository/alignImg.js.map +1 -0
  111. package/lib/content-page-repository/computeImgOutputPath.d.ts +3 -0
  112. package/lib/content-page-repository/computeImgOutputPath.js +12 -0
  113. package/lib/content-page-repository/computeImgOutputPath.js.map +1 -0
  114. package/lib/content-page-repository/resizeImg.d.ts +3 -0
  115. package/lib/content-page-repository/resizeImg.js +13 -0
  116. package/lib/content-page-repository/resizeImg.js.map +1 -0
  117. package/lib/content-page-repository/transformContentPage.d.ts +1 -0
  118. package/lib/content-page-repository/transformContentPage.js +23 -18
  119. package/lib/content-page-repository/transformContentPage.js.map +1 -1
  120. package/lib/content-page-repository/transformImg.d.ts +6 -5
  121. package/lib/content-page-repository/transformImg.js +26 -76
  122. package/lib/content-page-repository/transformImg.js.map +1 -1
  123. package/lib/content-page-repository/transformPicture.d.ts +1 -1
  124. package/lib/content-page-repository/transformPicture.js +8 -16
  125. package/lib/content-page-repository/transformPicture.js.map +1 -1
  126. package/lib/ui-kit/InputListRange/InputListRange.d.ts +2 -0
  127. package/lib/ui-kit/InputListRange/InputListRange.js +39 -0
  128. package/lib/ui-kit/InputListRange/InputListRange.js.map +1 -0
  129. package/lib/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
  130. package/lib/ui-kit/InputListRange/InputListRangeProps.js +2 -0
  131. package/lib/ui-kit/InputListRange/InputListRangeProps.js.map +1 -0
  132. package/lib/ui-kit/Select/Select.js +2 -1
  133. package/lib/ui-kit/Select/Select.js.map +1 -1
  134. package/lib/utils/arrayByRange.d.ts +1 -0
  135. package/lib/utils/arrayByRange.js +2 -0
  136. package/lib/utils/arrayByRange.js.map +1 -0
  137. package/lib/utils/isPictureSizeEmpty.d.ts +2 -2
  138. package/lib/utils/isPictureSizeEmpty.js +1 -1
  139. package/lib/utils/isPictureSizeEmpty.js.map +1 -1
  140. package/lib/utils/mergeIntervals.d.ts +1 -0
  141. package/lib/utils/mergeIntervals.js +17 -0
  142. package/lib/utils/mergeIntervals.js.map +1 -0
  143. package/mobile/bundle/bundle.umd.js +1 -1
  144. package/mobile/bundle/bundle.umd.min.js +1 -1
  145. package/mobile/bundle/components/Calculator/CalculatorContent.d.ts +18 -17
  146. package/mobile/bundle/components/Calculator/DepositCalculatorForm.d.ts +2 -2
  147. package/mobile/bundle/components/Calculator/rangeHelpers.d.ts +1 -0
  148. package/mobile/bundle/components/Calculator/renderMonthsInput.d.ts +1 -0
  149. package/mobile/bundle/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
  150. package/mobile/bundle/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
  151. package/mobile/bundle/components/Footer/MediaButton.d.ts +3 -4
  152. package/mobile/bundle/content-page-repository/ContentPageRepository.d.ts +1 -5
  153. package/mobile/bundle/content-page-repository/alignImg.d.ts +9 -0
  154. package/mobile/bundle/content-page-repository/computeImgOutputPath.d.ts +3 -0
  155. package/mobile/bundle/content-page-repository/resizeImg.d.ts +3 -0
  156. package/mobile/bundle/content-page-repository/transformContentPage.d.ts +1 -0
  157. package/mobile/bundle/content-page-repository/transformImg.d.ts +6 -5
  158. package/mobile/bundle/content-page-repository/transformPicture.d.ts +1 -1
  159. package/mobile/bundle/ui-kit/InputListRange/InputListRange.d.ts +2 -0
  160. package/mobile/bundle/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
  161. package/mobile/bundle/utils/arrayByRange.d.ts +1 -0
  162. package/mobile/bundle/utils/isPictureSizeEmpty.d.ts +2 -2
  163. package/mobile/bundle/utils/mergeIntervals.d.ts +1 -0
  164. package/mobile/dist/components/Calculator/CalculatorContent.d.ts +18 -17
  165. package/mobile/dist/components/Calculator/CreditCalculatorForm.js.map +1 -1
  166. package/mobile/dist/components/Calculator/DepositCalculatorForm.d.ts +2 -2
  167. package/mobile/dist/components/Calculator/DepositCalculatorForm.js +21 -11
  168. package/mobile/dist/components/Calculator/DepositCalculatorForm.js.map +1 -1
  169. package/mobile/dist/components/Calculator/constants.js +1 -1
  170. package/mobile/dist/components/Calculator/constants.js.map +1 -1
  171. package/mobile/dist/components/Calculator/rangeHelpers.d.ts +1 -0
  172. package/mobile/dist/components/Calculator/rangeHelpers.js +4 -1
  173. package/mobile/dist/components/Calculator/rangeHelpers.js.map +1 -1
  174. package/mobile/dist/components/Calculator/renderMonthsInput.d.ts +1 -0
  175. package/mobile/dist/components/Calculator/renderMonthsInput.js +3 -2
  176. package/mobile/dist/components/Calculator/renderMonthsInput.js.map +1 -1
  177. package/mobile/dist/components/Calculator/useCreditCalculatorParams.js +27 -29
  178. package/mobile/dist/components/Calculator/useCreditCalculatorParams.js.map +1 -1
  179. package/mobile/dist/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
  180. package/mobile/dist/components/Calculator/useDepositCalculatorParams.js +22 -6
  181. package/mobile/dist/components/Calculator/useDepositCalculatorParams.js.map +1 -1
  182. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
  183. package/mobile/dist/components/Footer/MediaButton.d.ts +3 -4
  184. package/mobile/dist/components/Footer/MediaButton.js.map +1 -1
  185. package/mobile/dist/content-page-repository/ContentPageRepository.d.ts +1 -5
  186. package/mobile/dist/content-page-repository/ContentPageRepository.js +7 -25
  187. package/mobile/dist/content-page-repository/ContentPageRepository.js.map +1 -1
  188. package/mobile/dist/content-page-repository/alignImg.d.ts +9 -0
  189. package/mobile/dist/content-page-repository/alignImg.js +23 -0
  190. package/mobile/dist/content-page-repository/alignImg.js.map +1 -0
  191. package/mobile/dist/content-page-repository/computeImgOutputPath.d.ts +3 -0
  192. package/mobile/dist/content-page-repository/computeImgOutputPath.js +18 -0
  193. package/mobile/dist/content-page-repository/computeImgOutputPath.js.map +1 -0
  194. package/mobile/dist/content-page-repository/resizeImg.d.ts +3 -0
  195. package/mobile/dist/content-page-repository/resizeImg.js +19 -0
  196. package/mobile/dist/content-page-repository/resizeImg.js.map +1 -0
  197. package/mobile/dist/content-page-repository/transformContentPage.d.ts +1 -0
  198. package/mobile/dist/content-page-repository/transformContentPage.js +25 -19
  199. package/mobile/dist/content-page-repository/transformContentPage.js.map +1 -1
  200. package/mobile/dist/content-page-repository/transformImg.d.ts +6 -5
  201. package/mobile/dist/content-page-repository/transformImg.js +26 -76
  202. package/mobile/dist/content-page-repository/transformImg.js.map +1 -1
  203. package/mobile/dist/content-page-repository/transformPicture.d.ts +1 -1
  204. package/mobile/dist/content-page-repository/transformPicture.js +8 -16
  205. package/mobile/dist/content-page-repository/transformPicture.js.map +1 -1
  206. package/mobile/dist/ui-kit/InputListRange/InputListRange.d.ts +2 -0
  207. package/mobile/dist/ui-kit/InputListRange/InputListRange.js +41 -0
  208. package/mobile/dist/ui-kit/InputListRange/InputListRange.js.map +1 -0
  209. package/mobile/dist/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
  210. package/mobile/dist/ui-kit/InputListRange/InputListRangeProps.js +2 -0
  211. package/mobile/dist/ui-kit/InputListRange/InputListRangeProps.js.map +1 -0
  212. package/mobile/dist/ui-kit/Select/Select.js +2 -1
  213. package/mobile/dist/ui-kit/Select/Select.js.map +1 -1
  214. package/mobile/dist/utils/arrayByRange.d.ts +1 -0
  215. package/mobile/dist/utils/arrayByRange.js +5 -0
  216. package/mobile/dist/utils/arrayByRange.js.map +1 -0
  217. package/mobile/dist/utils/isPictureSizeEmpty.d.ts +2 -2
  218. package/mobile/dist/utils/isPictureSizeEmpty.js +1 -1
  219. package/mobile/dist/utils/isPictureSizeEmpty.js.map +1 -1
  220. package/mobile/dist/utils/mergeIntervals.d.ts +1 -0
  221. package/mobile/dist/utils/mergeIntervals.js +20 -0
  222. package/mobile/dist/utils/mergeIntervals.js.map +1 -0
  223. package/mobile/lib/components/Calculator/CalculatorContent.d.ts +18 -17
  224. package/mobile/lib/components/Calculator/CreditCalculatorForm.js.map +1 -1
  225. package/mobile/lib/components/Calculator/DepositCalculatorForm.d.ts +2 -2
  226. package/mobile/lib/components/Calculator/DepositCalculatorForm.js +22 -12
  227. package/mobile/lib/components/Calculator/DepositCalculatorForm.js.map +1 -1
  228. package/mobile/lib/components/Calculator/constants.js +1 -1
  229. package/mobile/lib/components/Calculator/constants.js.map +1 -1
  230. package/mobile/lib/components/Calculator/rangeHelpers.d.ts +1 -0
  231. package/mobile/lib/components/Calculator/rangeHelpers.js +2 -0
  232. package/mobile/lib/components/Calculator/rangeHelpers.js.map +1 -1
  233. package/mobile/lib/components/Calculator/renderMonthsInput.d.ts +1 -0
  234. package/mobile/lib/components/Calculator/renderMonthsInput.js +3 -2
  235. package/mobile/lib/components/Calculator/renderMonthsInput.js.map +1 -1
  236. package/mobile/lib/components/Calculator/useCreditCalculatorParams.js +27 -29
  237. package/mobile/lib/components/Calculator/useCreditCalculatorParams.js.map +1 -1
  238. package/mobile/lib/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
  239. package/mobile/lib/components/Calculator/useDepositCalculatorParams.js +22 -6
  240. package/mobile/lib/components/Calculator/useDepositCalculatorParams.js.map +1 -1
  241. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
  242. package/mobile/lib/components/Footer/MediaButton.d.ts +3 -4
  243. package/mobile/lib/components/Footer/MediaButton.js.map +1 -1
  244. package/mobile/lib/content-page-repository/ContentPageRepository.d.ts +1 -5
  245. package/mobile/lib/content-page-repository/ContentPageRepository.js +8 -26
  246. package/mobile/lib/content-page-repository/ContentPageRepository.js.map +1 -1
  247. package/mobile/lib/content-page-repository/alignImg.d.ts +9 -0
  248. package/mobile/lib/content-page-repository/alignImg.js +17 -0
  249. package/mobile/lib/content-page-repository/alignImg.js.map +1 -0
  250. package/mobile/lib/content-page-repository/computeImgOutputPath.d.ts +3 -0
  251. package/mobile/lib/content-page-repository/computeImgOutputPath.js +12 -0
  252. package/mobile/lib/content-page-repository/computeImgOutputPath.js.map +1 -0
  253. package/mobile/lib/content-page-repository/resizeImg.d.ts +3 -0
  254. package/mobile/lib/content-page-repository/resizeImg.js +13 -0
  255. package/mobile/lib/content-page-repository/resizeImg.js.map +1 -0
  256. package/mobile/lib/content-page-repository/transformContentPage.d.ts +1 -0
  257. package/mobile/lib/content-page-repository/transformContentPage.js +23 -18
  258. package/mobile/lib/content-page-repository/transformContentPage.js.map +1 -1
  259. package/mobile/lib/content-page-repository/transformImg.d.ts +6 -5
  260. package/mobile/lib/content-page-repository/transformImg.js +26 -76
  261. package/mobile/lib/content-page-repository/transformImg.js.map +1 -1
  262. package/mobile/lib/content-page-repository/transformPicture.d.ts +1 -1
  263. package/mobile/lib/content-page-repository/transformPicture.js +8 -16
  264. package/mobile/lib/content-page-repository/transformPicture.js.map +1 -1
  265. package/mobile/lib/ui-kit/InputListRange/InputListRange.d.ts +2 -0
  266. package/mobile/lib/ui-kit/InputListRange/InputListRange.js +39 -0
  267. package/mobile/lib/ui-kit/InputListRange/InputListRange.js.map +1 -0
  268. package/mobile/lib/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
  269. package/mobile/lib/ui-kit/InputListRange/InputListRangeProps.js +2 -0
  270. package/mobile/lib/ui-kit/InputListRange/InputListRangeProps.js.map +1 -0
  271. package/mobile/lib/ui-kit/Select/Select.js +2 -1
  272. package/mobile/lib/ui-kit/Select/Select.js.map +1 -1
  273. package/mobile/lib/utils/arrayByRange.d.ts +1 -0
  274. package/mobile/lib/utils/arrayByRange.js +2 -0
  275. package/mobile/lib/utils/arrayByRange.js.map +1 -0
  276. package/mobile/lib/utils/isPictureSizeEmpty.d.ts +2 -2
  277. package/mobile/lib/utils/isPictureSizeEmpty.js +1 -1
  278. package/mobile/lib/utils/isPictureSizeEmpty.js.map +1 -1
  279. package/mobile/lib/utils/mergeIntervals.d.ts +1 -0
  280. package/mobile/lib/utils/mergeIntervals.js +17 -0
  281. package/mobile/lib/utils/mergeIntervals.js.map +1 -0
  282. package/mobile/src/components/Calculator/Calculator.example.json +3 -1
  283. package/mobile/src/components/Calculator/CalculatorContent.ts +20 -19
  284. package/mobile/src/components/Calculator/CreditCalculatorForm.tsx +6 -7
  285. package/mobile/src/components/Calculator/DepositCalculatorForm.tsx +48 -15
  286. package/mobile/src/components/Calculator/constants.ts +1 -1
  287. package/mobile/src/components/Calculator/rangeHelpers.ts +10 -0
  288. package/mobile/src/components/Calculator/renderMonthsInput.tsx +13 -2
  289. package/mobile/src/components/Calculator/useCreditCalculatorParams.ts +8 -10
  290. package/mobile/src/components/Calculator/useDepositCalculatorParams.ts +36 -9
  291. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.example.json +1 -2
  292. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCardContent.ts +2 -8
  293. package/mobile/src/components/Footer/MediaButton.tsx +3 -5
  294. package/mobile/src/content-page-repository/ContentPageRepository.ts +8 -40
  295. package/mobile/src/content-page-repository/alignImg.ts +32 -0
  296. package/mobile/src/content-page-repository/computeImgOutputPath.ts +20 -0
  297. package/mobile/src/content-page-repository/resizeImg.ts +18 -0
  298. package/mobile/src/content-page-repository/transformContentPage.ts +25 -18
  299. package/mobile/src/content-page-repository/transformImg.ts +49 -121
  300. package/mobile/src/content-page-repository/transformPicture.ts +9 -21
  301. package/mobile/src/ui-kit/InputListRange/InputListRange.tsx +99 -0
  302. package/mobile/src/ui-kit/InputListRange/InputListRangeProps.ts +11 -0
  303. package/mobile/src/ui-kit/Select/Select.tsx +8 -1
  304. package/mobile/src/utils/arrayByRange.ts +4 -0
  305. package/mobile/src/utils/isPictureSizeEmpty.ts +3 -3
  306. package/mobile/src/utils/mergeIntervals.ts +19 -0
  307. package/package.json +1 -1
  308. package/src/components/Calculator/Calculator.example.json +3 -1
  309. package/src/components/Calculator/Calculator.fixture.tsx +4 -0
  310. package/src/components/Calculator/CalculatorContent.ts +20 -19
  311. package/src/components/Calculator/CreditCalculatorForm.tsx +6 -7
  312. package/src/components/Calculator/DepositCalculatorForm.tsx +48 -15
  313. package/src/components/Calculator/constants.ts +1 -1
  314. package/src/components/Calculator/rangeHelpers.ts +10 -0
  315. package/src/components/Calculator/renderMonthsInput.tsx +13 -2
  316. package/src/components/Calculator/useCreditCalculatorParams.ts +8 -10
  317. package/src/components/Calculator/useDepositCalculatorParams.ts +36 -9
  318. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.example.json +1 -2
  319. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.fixture.tsx +0 -9
  320. package/src/components/CarouselRecommendationCard/CarouselRecommendationCardContent.ts +2 -8
  321. package/src/components/Footer/MediaButton.tsx +3 -5
  322. package/src/content-page-repository/ContentPageRepository.ts +8 -40
  323. package/src/content-page-repository/alignImg.ts +32 -0
  324. package/src/content-page-repository/computeImgOutputPath.ts +20 -0
  325. package/src/content-page-repository/resizeImg.ts +18 -0
  326. package/src/content-page-repository/transformContentPage.ts +25 -18
  327. package/src/content-page-repository/transformImg.ts +49 -121
  328. package/src/content-page-repository/transformPicture.ts +9 -21
  329. package/src/ui-kit/InputListRange/InputListRange.tsx +99 -0
  330. package/src/ui-kit/InputListRange/InputListRangeProps.ts +11 -0
  331. package/src/ui-kit/Select/Select.tsx +8 -1
  332. package/src/utils/arrayByRange.ts +4 -0
  333. package/src/utils/isPictureSizeEmpty.ts +3 -3
  334. package/src/utils/mergeIntervals.ts +19 -0
  335. package/bundle/content-page-repository/transformImgPath.d.ts +0 -8
  336. package/dist/content-page-repository/transformImgPath.d.ts +0 -8
  337. package/dist/content-page-repository/transformImgPath.js +0 -22
  338. package/dist/content-page-repository/transformImgPath.js.map +0 -1
  339. package/lib/content-page-repository/transformImgPath.d.ts +0 -8
  340. package/lib/content-page-repository/transformImgPath.js +0 -16
  341. package/lib/content-page-repository/transformImgPath.js.map +0 -1
  342. package/mobile/bundle/content-page-repository/transformImgPath.d.ts +0 -8
  343. package/mobile/dist/content-page-repository/transformImgPath.d.ts +0 -8
  344. package/mobile/dist/content-page-repository/transformImgPath.js +0 -22
  345. package/mobile/dist/content-page-repository/transformImgPath.js.map +0 -1
  346. package/mobile/lib/content-page-repository/transformImgPath.d.ts +0 -8
  347. package/mobile/lib/content-page-repository/transformImgPath.js +0 -16
  348. package/mobile/lib/content-page-repository/transformImgPath.js.map +0 -1
  349. package/mobile/src/content-page-repository/transformImgPath.ts +0 -30
  350. package/src/content-page-repository/transformImgPath.ts +0 -30
@@ -4,7 +4,7 @@ import { JSX } from '@redneckz/uni-jsx';
4
4
  import { useCallback, useState } from '@redneckz/uni-jsx/lib/hooks';
5
5
  import { renderButtonsSection } from '../../ui-kit/Button/renderButtonsSection';
6
6
  import { style } from '../../utils/style';
7
- import { CommonCalculatorProps } from './CalculatorContent';
7
+ import { DepositCalculatorParamsViewSettings, DepositCalculatorProps } from './CalculatorContent';
8
8
  import { CalculatorValueBlock } from './CalculatorValueBlock';
9
9
  import { DEFAULT_MONTHS, DEFAULT_SUM } from './constants';
10
10
  import { Rate } from './Rate';
@@ -13,14 +13,14 @@ import { renderInterestPayment } from './renderInterestPayment';
13
13
  import { renderMonthsInput } from './renderMonthsInput';
14
14
  import { renderRegistrationType } from './renderRegistrationType';
15
15
  import { renderWantedSumInput } from './renderWantedSumInput';
16
- import { useDepositCalculatorParams } from './useDepositCalculatorParams';
16
+ import { DepositCalculatorParams, useDepositCalculatorParams } from './useDepositCalculatorParams';
17
17
 
18
- export interface DepositCalculatorProp extends CommonCalculatorProps {
18
+ export interface DepositCalculatorProp extends DepositCalculatorProps {
19
19
  className?: string;
20
20
  }
21
21
 
22
22
  export const DepositCalculatorForm = JSX<DepositCalculatorProp>(
23
- ({ className = '', sourceBookDir, buttons, footnote }) => {
23
+ ({ className = '', sourceBookDir, buttons, footnote, paramsViewSettings }) => {
24
24
  const [moneyValue, setMoneyValue] = useState(DEFAULT_SUM);
25
25
  const handleMoneyValue = useCallback((_: number) => setMoneyValue(_), []);
26
26
  const [monthsValue, setMonthsValue] = useState(DEFAULT_MONTHS);
@@ -42,7 +42,11 @@ export const DepositCalculatorForm = JSX<DepositCalculatorProp>(
42
42
  };
43
43
  const handleMonthsValue = useCallback((_: number) => setMonthsValue(_), []);
44
44
 
45
- const calculatorParams = useDepositCalculatorParams(userInputParams, sourceBookDir);
45
+ const calculatorParams = useDepositCalculatorParams(
46
+ userInputParams,
47
+ sourceBookDir,
48
+ paramsViewSettings,
49
+ );
46
50
  const { income, finalSum, rate } = calculatorParams;
47
51
 
48
52
  return (
@@ -62,16 +66,12 @@ export const DepositCalculatorForm = JSX<DepositCalculatorProp>(
62
66
  },
63
67
  handleMonthsValue,
64
68
  )}
65
- <div className="mt-7 flex flex-col gap-y-7">
66
- {renderInterestPayment({
67
- isMonthlyInterestPayment,
68
- callback: handleIsMonthlyInterestPayment,
69
- title: 'Выплата процентов',
70
- })}
71
- {renderRegistrationType({
72
- isRemoteRegistration,
73
- callback: handleIsRemoteRegistration,
74
- title: 'Оформление',
69
+ <div className="mt-7">
70
+ {renderDepositParamsForm({
71
+ ...calculatorParams,
72
+ ...paramsViewSettings,
73
+ handleIsMonthlyInterestPayment,
74
+ handleIsRemoteRegistration,
75
75
  })}
76
76
  </div>
77
77
  </div>
@@ -86,3 +86,36 @@ export const DepositCalculatorForm = JSX<DepositCalculatorProp>(
86
86
  );
87
87
  },
88
88
  );
89
+
90
+ interface DepositParamsFormProps
91
+ extends DepositCalculatorParams,
92
+ DepositCalculatorParamsViewSettings {
93
+ handleIsMonthlyInterestPayment?: (value: boolean) => void;
94
+ handleIsRemoteRegistration?: (value: boolean) => void;
95
+ }
96
+
97
+ const renderDepositParamsForm = ({
98
+ isMonthlyInterestPayment,
99
+ isRemoteRegistration,
100
+ isShowMonthlyInterestPayment,
101
+ isShowRemoteRegistration,
102
+ handleIsMonthlyInterestPayment,
103
+ handleIsRemoteRegistration,
104
+ }: DepositParamsFormProps) => (
105
+ <div className="flex flex-col gap-y-7">
106
+ {isShowMonthlyInterestPayment
107
+ ? renderInterestPayment({
108
+ isMonthlyInterestPayment,
109
+ callback: handleIsMonthlyInterestPayment,
110
+ title: 'Выплата процентов',
111
+ })
112
+ : null}
113
+ {isShowRemoteRegistration
114
+ ? renderRegistrationType({
115
+ isRemoteRegistration,
116
+ callback: handleIsRemoteRegistration,
117
+ title: 'Оформление',
118
+ })
119
+ : null}
120
+ </div>
121
+ );
@@ -52,7 +52,7 @@ export const DEFAULT_DEPOSIT_CALCULATOR_PARAMS: DepositCalculatorSourceBookParam
52
52
  minSum: 50000,
53
53
  maxSum: 5000000,
54
54
  minMonths: 2,
55
- maxMonths: 120,
55
+ maxMonths: 10,
56
56
  rate: 0,
57
57
  isMonthlyInterestPayment: true,
58
58
  isRemoteRegistration: true,
@@ -1,4 +1,5 @@
1
1
  import { maxBy } from '../../utils/maxBy';
2
+ import { mergeIntervals } from '../../utils/mergeIntervals';
2
3
  import { minBy } from '../../utils/minBy';
3
4
 
4
5
  export const getRangeByKeys = <
@@ -13,6 +14,15 @@ export const getRangeByKeys = <
13
14
  [maxKey]: rows.length ? maxBy()(rows.map((row) => row[maxKey])) : 0,
14
15
  });
15
16
 
17
+ export const getMergeRangesByKeys = <
18
+ MinKey extends string,
19
+ MaxKey extends string,
20
+ T extends Record<MinKey | MaxKey, number>,
21
+ >(
22
+ [minKey, maxKey]: [MinKey, MaxKey],
23
+ rows: T[] = [],
24
+ ) => mergeIntervals(rows.map((row) => [row[minKey], row[maxKey]]));
25
+
16
26
  export const checkRangeByKeys = <
17
27
  MinKey extends string,
18
28
  MaxKey extends string,
@@ -1,3 +1,4 @@
1
+ import { InputListRange } from '../../ui-kit/InputListRange/InputListRange';
1
2
  import { InputRange } from '../../ui-kit/InputRange/InputRange';
2
3
  import { clamp } from '../../utils/clamp';
3
4
 
@@ -7,6 +8,7 @@ interface RenderMonthsInputParams {
7
8
  minMonths: number;
8
9
  maxMonths: number;
9
10
  monthsValue: number;
11
+ availableMonths?: Array<number>;
10
12
  }
11
13
 
12
14
  export function renderMonthsInput(
@@ -14,14 +16,23 @@ export function renderMonthsInput(
14
16
  params: RenderMonthsInputParams,
15
17
  callback?: (value: number) => void,
16
18
  ) {
17
- const { minMonths, maxMonths, monthsValue } = params;
19
+ const { minMonths, maxMonths, monthsValue, availableMonths } = params;
18
20
  const monthText = (month: number) => {
19
21
  const text = Number(month) % 10 === 1 ? 'месяца' : 'месяцев';
20
22
 
21
23
  return `${month} ${text}`;
22
24
  };
23
25
 
24
- return (
26
+ return availableMonths?.length ? (
27
+ <InputListRange
28
+ className="mt-7"
29
+ title={title}
30
+ items={[`От ${monthText(minMonths)}`, `До ${monthText(maxMonths)}`]}
31
+ list={availableMonths}
32
+ value={clamp(monthsValue, minMonths, maxMonths)}
33
+ onChange={callback}
34
+ />
35
+ ) : (
25
36
  <InputRange
26
37
  className="mt-7"
27
38
  title={title}
@@ -41,14 +41,13 @@ export const useCreditCalculatorParams = (
41
41
  ): CreditCalculatorParams => {
42
42
  const { moneyValue, monthsValue } = userInputParams;
43
43
  const data = useCalculatorParams<CreditCalculatorData>(sourceBookDir || CREDIT_CALC_DEFAULT_DIR);
44
+ const isExcludeSalaryClient = !paramsViewSettings?.isShowSalaryClient;
45
+ const isExcludeStateEmployee = !paramsViewSettings?.isShowStateEmployee;
46
+ const isExcludePensionClient = !paramsViewSettings?.isShowPensionClient;
47
+ const isExcludeInsurance = !paramsViewSettings?.isShowInsurance;
44
48
  const creditCalculatorSourceBookParams =
45
- data?.rows?.find((row) => {
46
- const isExcludeSalaryClient = !paramsViewSettings?.isShowSalaryClient;
47
- const isExcludeStateEmployee = !paramsViewSettings?.isShowStateEmployee;
48
- const isExcludePensionClient = !paramsViewSettings?.isShowPensionClient;
49
- const isExcludeInsurance = !paramsViewSettings?.isShowInsurance;
50
-
51
- return (
49
+ data?.rows?.find(
50
+ (row) =>
52
51
  checkRowByParam({
53
52
  row,
54
53
  userInputParams,
@@ -74,9 +73,8 @@ export const useCreditCalculatorParams = (
74
73
  isExclude: isExcludeInsurance,
75
74
  }) &&
76
75
  checkRangeByKeys(moneyValue, ['minSum', 'maxSum'], row) &&
77
- checkRangeByKeys(monthsValue, ['minMonths', 'maxMonths'], row)
78
- );
79
- }) || DEFAULT_CREDIT_CALCULATOR_PARAMS;
76
+ checkRangeByKeys(monthsValue, ['minMonths', 'maxMonths'], row),
77
+ ) || DEFAULT_CREDIT_CALCULATOR_PARAMS;
80
78
 
81
79
  const { rate } = creditCalculatorSourceBookParams;
82
80
  const monthlyPayment = getMonthlyPayment(rate, userInputParams);
@@ -1,3 +1,6 @@
1
+ import { arrayByRange } from '../../utils/arrayByRange';
2
+ import { mergeIntervals } from '../../utils/mergeIntervals';
3
+ import { DepositCalculatorParamsViewSettings } from './CalculatorContent';
1
4
  import { DEFAULT_DEPOSIT_CALCULATOR_PARAMS, DEPOSIT_CALC_DEFAULT_DIR } from './constants';
2
5
  import { checkRangeByKeys, getRangeByKeys } from './rangeHelpers';
3
6
  import { useCalculatorParams } from './useCalculatorParams';
@@ -23,6 +26,7 @@ export interface DepositCalculatorUserInputParams extends CommonDepositParams {
23
26
  export interface DepositCalculatorParams
24
27
  extends DepositCalculatorSourceBookParams,
25
28
  DepositCalculatorUserInputParams {
29
+ availableMonths: number[];
26
30
  income: number;
27
31
  finalSum: number;
28
32
  }
@@ -34,21 +38,31 @@ export type DepositCalculatorData = {
34
38
  export const useDepositCalculatorParams = (
35
39
  userInputParams: DepositCalculatorUserInputParams,
36
40
  sourceBookDir?: string,
41
+ paramsViewSettings?: DepositCalculatorParamsViewSettings,
37
42
  ): DepositCalculatorParams => {
38
- const { isMonthlyInterestPayment, isRemoteRegistration, moneyValue, monthsValue } =
39
- userInputParams;
40
-
43
+ const { moneyValue, monthsValue } = userInputParams;
41
44
  const data = useCalculatorParams<DepositCalculatorData>(
42
45
  sourceBookDir || DEPOSIT_CALC_DEFAULT_DIR,
43
46
  );
44
-
47
+ const isExcludeMonthlyInterestPayment = !paramsViewSettings?.isShowMonthlyInterestPayment;
48
+ const isExcludeRemoteRegistration = !paramsViewSettings?.isShowRemoteRegistration;
45
49
  const depositCalculatorSourceBookParams =
46
50
  data?.rows?.find(
47
- (_) =>
48
- isMonthlyInterestPayment === _.isMonthlyInterestPayment &&
49
- isRemoteRegistration === _.isRemoteRegistration &&
50
- checkRangeByKeys(moneyValue, ['minSum', 'maxSum'], _) &&
51
- checkRangeByKeys(monthsValue, ['minMonths', 'maxMonths'], _),
51
+ (row) =>
52
+ checkRowByParam({
53
+ row,
54
+ userInputParams,
55
+ paramKey: 'isMonthlyInterestPayment',
56
+ isExclude: isExcludeMonthlyInterestPayment,
57
+ }) &&
58
+ checkRowByParam({
59
+ row,
60
+ userInputParams,
61
+ paramKey: 'isRemoteRegistration',
62
+ isExclude: isExcludeRemoteRegistration,
63
+ }) &&
64
+ checkRangeByKeys(moneyValue, ['minSum', 'maxSum'], row) &&
65
+ checkRangeByKeys(monthsValue, ['minMonths', 'maxMonths'], row),
52
66
  ) || DEFAULT_DEPOSIT_CALCULATOR_PARAMS;
53
67
 
54
68
  const { rate } = depositCalculatorSourceBookParams;
@@ -60,6 +74,9 @@ export const useDepositCalculatorParams = (
60
74
  ...depositCalculatorSourceBookParams,
61
75
  ...getRangeByKeys(['minSum', 'maxSum'], sourceBookRows),
62
76
  ...getRangeByKeys(['minMonths', 'maxMonths'], sourceBookRows),
77
+ availableMonths: mergeIntervals(
78
+ sourceBookRows.map((row) => [row['minMonths'], row['maxMonths']]),
79
+ ).flatMap(([start, end]) => arrayByRange(start, end)),
63
80
  ...userInputParams,
64
81
  income,
65
82
  finalSum,
@@ -78,3 +95,13 @@ const getDepositIncome = (rate: number, userInputParams: DepositCalculatorUserIn
78
95
  return Math.round((moneyValue * rate * 30 * monthsValue) / 365 / 100);
79
96
  }
80
97
  };
98
+
99
+ interface CheckRowByParamProps {
100
+ row: DepositCalculatorSourceBookParams;
101
+ userInputParams: DepositCalculatorUserInputParams;
102
+ paramKey: string;
103
+ isExclude: boolean;
104
+ }
105
+
106
+ const checkRowByParam = ({ row, userInputParams, paramKey, isExclude }: CheckRowByParamProps) =>
107
+ isExclude || userInputParams[paramKey] === row[paramKey];
@@ -27,8 +27,7 @@
27
27
  "target": "_blank",
28
28
  "version": "gray",
29
29
  "rounded": false,
30
- "aboveText": "Доступно в",
31
- "text": "Telegram"
30
+ "text": "Текст"
32
31
  }
33
32
  ],
34
33
  "version": "primary"
@@ -1,18 +1,12 @@
1
- import type { ButtonVersion } from '../../model/ButtonVersion';
2
1
  import type { HeadlineCommonProps } from '../../model/HeadlineType';
3
2
  import type { UniBlockContent } from '../../model/JSXBlock';
4
3
  import type { LinkCommonProps } from '../../model/LinkProps';
5
4
  import type { IconProps } from '../../model/Picture';
6
- import type { ButtonWithIconProps } from '../../ui-kit/Button/ButtonProps';
5
+ import type { ButtonProps } from '../../ui-kit/Button/ButtonProps';
7
6
  import type { ListContent } from '../../ui-kit/List/ListContent';
8
7
  import type { TextAlign } from '../../ui-kit/Text/TextProps';
9
8
 
10
- export type RecommendationSocialMedia = LinkCommonProps &
11
- IconProps &
12
- ButtonWithIconProps & {
13
- version: ButtonVersion;
14
- rounded?: boolean;
15
- };
9
+ export type RecommendationSocialMedia = LinkCommonProps & IconProps & ButtonProps;
16
10
 
17
11
  /**
18
12
  * @title Карточка рекомендаций
@@ -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,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');