@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.
- package/bundle/blocks.schema.json +1 -1
- package/bundle/bundle.umd.js +145 -66
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/components/Calculator/CalculatorContent.d.ts +18 -17
- package/bundle/components/Calculator/DepositCalculatorForm.d.ts +2 -2
- package/bundle/components/Calculator/rangeHelpers.d.ts +1 -0
- package/bundle/components/Calculator/renderMonthsInput.d.ts +1 -0
- package/bundle/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
- package/bundle/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
- package/bundle/components/Filtration/FiltrationContent.d.ts +18 -8
- package/bundle/components/Footer/MediaButton.d.ts +3 -4
- package/bundle/content-page-repository/ContentPageRepository.d.ts +1 -5
- package/bundle/content-page-repository/alignImg.d.ts +9 -0
- package/bundle/content-page-repository/computeImgOutputPath.d.ts +3 -0
- package/bundle/content-page-repository/resizeImg.d.ts +3 -0
- package/bundle/content-page-repository/transformContentPage.d.ts +1 -0
- package/bundle/content-page-repository/transformImg.d.ts +6 -5
- package/bundle/content-page-repository/transformPicture.d.ts +1 -1
- package/bundle/ui-kit/InputListRange/InputListRange.d.ts +2 -0
- package/bundle/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
- package/bundle/utils/arrayByRange.d.ts +1 -0
- package/bundle/utils/isPictureSizeEmpty.d.ts +2 -2
- package/bundle/utils/mergeIntervals.d.ts +1 -0
- package/dist/components/Calculator/CalculatorContent.d.ts +18 -17
- package/dist/components/Calculator/CreditCalculatorForm.js.map +1 -1
- package/dist/components/Calculator/DepositCalculatorForm.d.ts +2 -2
- package/dist/components/Calculator/DepositCalculatorForm.js +21 -11
- package/dist/components/Calculator/DepositCalculatorForm.js.map +1 -1
- package/dist/components/Calculator/constants.js +1 -1
- package/dist/components/Calculator/constants.js.map +1 -1
- package/dist/components/Calculator/rangeHelpers.d.ts +1 -0
- package/dist/components/Calculator/rangeHelpers.js +4 -1
- package/dist/components/Calculator/rangeHelpers.js.map +1 -1
- package/dist/components/Calculator/renderMonthsInput.d.ts +1 -0
- package/dist/components/Calculator/renderMonthsInput.js +3 -2
- package/dist/components/Calculator/renderMonthsInput.js.map +1 -1
- package/dist/components/Calculator/useCreditCalculatorParams.js +27 -29
- package/dist/components/Calculator/useCreditCalculatorParams.js.map +1 -1
- package/dist/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
- package/dist/components/Calculator/useDepositCalculatorParams.js +22 -6
- package/dist/components/Calculator/useDepositCalculatorParams.js.map +1 -1
- package/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
- package/dist/components/Filtration/Filtration.js +1 -1
- package/dist/components/Filtration/Filtration.js.map +1 -1
- package/dist/components/Filtration/FiltrationContent.d.ts +18 -8
- package/dist/components/Filtration/FiltrationInner.js +9 -5
- package/dist/components/Filtration/FiltrationInner.js.map +1 -1
- package/dist/components/Filtration/renderFormItem.js +6 -5
- package/dist/components/Filtration/renderFormItem.js.map +1 -1
- package/dist/components/Footer/MediaButton.d.ts +3 -4
- package/dist/components/Footer/MediaButton.js.map +1 -1
- package/dist/content-page-repository/ContentPageRepository.d.ts +1 -5
- package/dist/content-page-repository/ContentPageRepository.js +7 -25
- package/dist/content-page-repository/ContentPageRepository.js.map +1 -1
- package/dist/content-page-repository/alignImg.d.ts +9 -0
- package/dist/content-page-repository/alignImg.js +23 -0
- package/dist/content-page-repository/alignImg.js.map +1 -0
- package/dist/content-page-repository/computeImgOutputPath.d.ts +3 -0
- package/dist/content-page-repository/computeImgOutputPath.js +18 -0
- package/dist/content-page-repository/computeImgOutputPath.js.map +1 -0
- package/dist/content-page-repository/resizeImg.d.ts +3 -0
- package/dist/content-page-repository/resizeImg.js +19 -0
- package/dist/content-page-repository/resizeImg.js.map +1 -0
- package/dist/content-page-repository/transformContentPage.d.ts +1 -0
- package/dist/content-page-repository/transformContentPage.js +25 -19
- package/dist/content-page-repository/transformContentPage.js.map +1 -1
- package/dist/content-page-repository/transformImg.d.ts +6 -5
- package/dist/content-page-repository/transformImg.js +26 -76
- package/dist/content-page-repository/transformImg.js.map +1 -1
- package/dist/content-page-repository/transformPicture.d.ts +1 -1
- package/dist/content-page-repository/transformPicture.js +8 -16
- package/dist/content-page-repository/transformPicture.js.map +1 -1
- package/dist/ui-kit/InputListRange/InputListRange.d.ts +2 -0
- package/dist/ui-kit/InputListRange/InputListRange.js +41 -0
- package/dist/ui-kit/InputListRange/InputListRange.js.map +1 -0
- package/dist/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
- package/dist/ui-kit/InputListRange/InputListRangeProps.js +2 -0
- package/dist/ui-kit/InputListRange/InputListRangeProps.js.map +1 -0
- package/dist/ui-kit/Select/Select.js +2 -1
- package/dist/ui-kit/Select/Select.js.map +1 -1
- package/dist/utils/arrayByRange.d.ts +1 -0
- package/dist/utils/arrayByRange.js +5 -0
- package/dist/utils/arrayByRange.js.map +1 -0
- package/dist/utils/isPictureSizeEmpty.d.ts +2 -2
- package/dist/utils/isPictureSizeEmpty.js +1 -1
- package/dist/utils/isPictureSizeEmpty.js.map +1 -1
- package/dist/utils/mergeIntervals.d.ts +1 -0
- package/dist/utils/mergeIntervals.js +20 -0
- package/dist/utils/mergeIntervals.js.map +1 -0
- package/lib/common.css +1 -1
- package/lib/components/Calculator/CalculatorContent.d.ts +18 -17
- package/lib/components/Calculator/CreditCalculatorForm.js.map +1 -1
- package/lib/components/Calculator/DepositCalculatorForm.d.ts +2 -2
- package/lib/components/Calculator/DepositCalculatorForm.js +22 -12
- package/lib/components/Calculator/DepositCalculatorForm.js.map +1 -1
- package/lib/components/Calculator/constants.js +1 -1
- package/lib/components/Calculator/constants.js.map +1 -1
- package/lib/components/Calculator/rangeHelpers.d.ts +1 -0
- package/lib/components/Calculator/rangeHelpers.js +2 -0
- package/lib/components/Calculator/rangeHelpers.js.map +1 -1
- package/lib/components/Calculator/renderMonthsInput.d.ts +1 -0
- package/lib/components/Calculator/renderMonthsInput.js +3 -2
- package/lib/components/Calculator/renderMonthsInput.js.map +1 -1
- package/lib/components/Calculator/useCreditCalculatorParams.js +27 -29
- package/lib/components/Calculator/useCreditCalculatorParams.js.map +1 -1
- package/lib/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
- package/lib/components/Calculator/useDepositCalculatorParams.js +22 -6
- package/lib/components/Calculator/useDepositCalculatorParams.js.map +1 -1
- package/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
- package/lib/components/Filtration/Filtration.js +1 -1
- package/lib/components/Filtration/Filtration.js.map +1 -1
- package/lib/components/Filtration/FiltrationContent.d.ts +18 -8
- package/lib/components/Filtration/FiltrationInner.js +9 -5
- package/lib/components/Filtration/FiltrationInner.js.map +1 -1
- package/lib/components/Filtration/renderFormItem.js +6 -5
- package/lib/components/Filtration/renderFormItem.js.map +1 -1
- package/lib/components/Footer/MediaButton.d.ts +3 -4
- package/lib/components/Footer/MediaButton.js.map +1 -1
- package/lib/content-page-repository/ContentPageRepository.d.ts +1 -5
- package/lib/content-page-repository/ContentPageRepository.js +8 -26
- package/lib/content-page-repository/ContentPageRepository.js.map +1 -1
- package/lib/content-page-repository/alignImg.d.ts +9 -0
- package/lib/content-page-repository/alignImg.js +17 -0
- package/lib/content-page-repository/alignImg.js.map +1 -0
- package/lib/content-page-repository/computeImgOutputPath.d.ts +3 -0
- package/lib/content-page-repository/computeImgOutputPath.js +12 -0
- package/lib/content-page-repository/computeImgOutputPath.js.map +1 -0
- package/lib/content-page-repository/resizeImg.d.ts +3 -0
- package/lib/content-page-repository/resizeImg.js +13 -0
- package/lib/content-page-repository/resizeImg.js.map +1 -0
- package/lib/content-page-repository/transformContentPage.d.ts +1 -0
- package/lib/content-page-repository/transformContentPage.js +23 -18
- package/lib/content-page-repository/transformContentPage.js.map +1 -1
- package/lib/content-page-repository/transformImg.d.ts +6 -5
- package/lib/content-page-repository/transformImg.js +26 -76
- package/lib/content-page-repository/transformImg.js.map +1 -1
- package/lib/content-page-repository/transformPicture.d.ts +1 -1
- package/lib/content-page-repository/transformPicture.js +8 -16
- package/lib/content-page-repository/transformPicture.js.map +1 -1
- package/lib/ui-kit/InputListRange/InputListRange.d.ts +2 -0
- package/lib/ui-kit/InputListRange/InputListRange.js +39 -0
- package/lib/ui-kit/InputListRange/InputListRange.js.map +1 -0
- package/lib/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
- package/lib/ui-kit/InputListRange/InputListRangeProps.js +2 -0
- package/lib/ui-kit/InputListRange/InputListRangeProps.js.map +1 -0
- package/lib/ui-kit/Select/Select.js +2 -1
- package/lib/ui-kit/Select/Select.js.map +1 -1
- package/lib/utils/arrayByRange.d.ts +1 -0
- package/lib/utils/arrayByRange.js +2 -0
- package/lib/utils/arrayByRange.js.map +1 -0
- package/lib/utils/isPictureSizeEmpty.d.ts +2 -2
- package/lib/utils/isPictureSizeEmpty.js +1 -1
- package/lib/utils/isPictureSizeEmpty.js.map +1 -1
- package/lib/utils/mergeIntervals.d.ts +1 -0
- package/lib/utils/mergeIntervals.js +17 -0
- package/lib/utils/mergeIntervals.js.map +1 -0
- package/mobile/bundle/bundle.umd.js +1 -1
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/components/Calculator/CalculatorContent.d.ts +18 -17
- package/mobile/bundle/components/Calculator/DepositCalculatorForm.d.ts +2 -2
- package/mobile/bundle/components/Calculator/rangeHelpers.d.ts +1 -0
- package/mobile/bundle/components/Calculator/renderMonthsInput.d.ts +1 -0
- package/mobile/bundle/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
- package/mobile/bundle/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
- package/mobile/bundle/components/Filtration/FiltrationContent.d.ts +18 -8
- package/mobile/bundle/components/Footer/MediaButton.d.ts +3 -4
- package/mobile/bundle/content-page-repository/ContentPageRepository.d.ts +1 -5
- package/mobile/bundle/content-page-repository/alignImg.d.ts +9 -0
- package/mobile/bundle/content-page-repository/computeImgOutputPath.d.ts +3 -0
- package/mobile/bundle/content-page-repository/resizeImg.d.ts +3 -0
- package/mobile/bundle/content-page-repository/transformContentPage.d.ts +1 -0
- package/mobile/bundle/content-page-repository/transformImg.d.ts +6 -5
- package/mobile/bundle/content-page-repository/transformPicture.d.ts +1 -1
- package/mobile/bundle/ui-kit/InputListRange/InputListRange.d.ts +2 -0
- package/mobile/bundle/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
- package/mobile/bundle/utils/arrayByRange.d.ts +1 -0
- package/mobile/bundle/utils/isPictureSizeEmpty.d.ts +2 -2
- package/mobile/bundle/utils/mergeIntervals.d.ts +1 -0
- package/mobile/dist/components/Calculator/CalculatorContent.d.ts +18 -17
- package/mobile/dist/components/Calculator/CreditCalculatorForm.js.map +1 -1
- package/mobile/dist/components/Calculator/DepositCalculatorForm.d.ts +2 -2
- package/mobile/dist/components/Calculator/DepositCalculatorForm.js +21 -11
- package/mobile/dist/components/Calculator/DepositCalculatorForm.js.map +1 -1
- package/mobile/dist/components/Calculator/constants.js +1 -1
- package/mobile/dist/components/Calculator/constants.js.map +1 -1
- package/mobile/dist/components/Calculator/rangeHelpers.d.ts +1 -0
- package/mobile/dist/components/Calculator/rangeHelpers.js +4 -1
- package/mobile/dist/components/Calculator/rangeHelpers.js.map +1 -1
- package/mobile/dist/components/Calculator/renderMonthsInput.d.ts +1 -0
- package/mobile/dist/components/Calculator/renderMonthsInput.js +3 -2
- package/mobile/dist/components/Calculator/renderMonthsInput.js.map +1 -1
- package/mobile/dist/components/Calculator/useCreditCalculatorParams.js +27 -29
- package/mobile/dist/components/Calculator/useCreditCalculatorParams.js.map +1 -1
- package/mobile/dist/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
- package/mobile/dist/components/Calculator/useDepositCalculatorParams.js +22 -6
- package/mobile/dist/components/Calculator/useDepositCalculatorParams.js.map +1 -1
- package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
- package/mobile/dist/components/Filtration/Filtration.js +1 -1
- package/mobile/dist/components/Filtration/Filtration.js.map +1 -1
- package/mobile/dist/components/Filtration/FiltrationContent.d.ts +18 -8
- package/mobile/dist/components/Filtration/FiltrationInner.js +9 -5
- package/mobile/dist/components/Filtration/FiltrationInner.js.map +1 -1
- package/mobile/dist/components/Filtration/renderFormItem.js +6 -5
- package/mobile/dist/components/Filtration/renderFormItem.js.map +1 -1
- package/mobile/dist/components/Footer/MediaButton.d.ts +3 -4
- package/mobile/dist/components/Footer/MediaButton.js.map +1 -1
- package/mobile/dist/content-page-repository/ContentPageRepository.d.ts +1 -5
- package/mobile/dist/content-page-repository/ContentPageRepository.js +7 -25
- package/mobile/dist/content-page-repository/ContentPageRepository.js.map +1 -1
- package/mobile/dist/content-page-repository/alignImg.d.ts +9 -0
- package/mobile/dist/content-page-repository/alignImg.js +23 -0
- package/mobile/dist/content-page-repository/alignImg.js.map +1 -0
- package/mobile/dist/content-page-repository/computeImgOutputPath.d.ts +3 -0
- package/mobile/dist/content-page-repository/computeImgOutputPath.js +18 -0
- package/mobile/dist/content-page-repository/computeImgOutputPath.js.map +1 -0
- package/mobile/dist/content-page-repository/resizeImg.d.ts +3 -0
- package/mobile/dist/content-page-repository/resizeImg.js +19 -0
- package/mobile/dist/content-page-repository/resizeImg.js.map +1 -0
- package/mobile/dist/content-page-repository/transformContentPage.d.ts +1 -0
- package/mobile/dist/content-page-repository/transformContentPage.js +25 -19
- package/mobile/dist/content-page-repository/transformContentPage.js.map +1 -1
- package/mobile/dist/content-page-repository/transformImg.d.ts +6 -5
- package/mobile/dist/content-page-repository/transformImg.js +26 -76
- package/mobile/dist/content-page-repository/transformImg.js.map +1 -1
- package/mobile/dist/content-page-repository/transformPicture.d.ts +1 -1
- package/mobile/dist/content-page-repository/transformPicture.js +8 -16
- package/mobile/dist/content-page-repository/transformPicture.js.map +1 -1
- package/mobile/dist/ui-kit/InputListRange/InputListRange.d.ts +2 -0
- package/mobile/dist/ui-kit/InputListRange/InputListRange.js +41 -0
- package/mobile/dist/ui-kit/InputListRange/InputListRange.js.map +1 -0
- package/mobile/dist/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
- package/mobile/dist/ui-kit/InputListRange/InputListRangeProps.js +2 -0
- package/mobile/dist/ui-kit/InputListRange/InputListRangeProps.js.map +1 -0
- package/mobile/dist/ui-kit/Select/Select.js +2 -1
- package/mobile/dist/ui-kit/Select/Select.js.map +1 -1
- package/mobile/dist/utils/arrayByRange.d.ts +1 -0
- package/mobile/dist/utils/arrayByRange.js +5 -0
- package/mobile/dist/utils/arrayByRange.js.map +1 -0
- package/mobile/dist/utils/isPictureSizeEmpty.d.ts +2 -2
- package/mobile/dist/utils/isPictureSizeEmpty.js +1 -1
- package/mobile/dist/utils/isPictureSizeEmpty.js.map +1 -1
- package/mobile/dist/utils/mergeIntervals.d.ts +1 -0
- package/mobile/dist/utils/mergeIntervals.js +20 -0
- package/mobile/dist/utils/mergeIntervals.js.map +1 -0
- package/mobile/lib/components/Calculator/CalculatorContent.d.ts +18 -17
- package/mobile/lib/components/Calculator/CreditCalculatorForm.js.map +1 -1
- package/mobile/lib/components/Calculator/DepositCalculatorForm.d.ts +2 -2
- package/mobile/lib/components/Calculator/DepositCalculatorForm.js +22 -12
- package/mobile/lib/components/Calculator/DepositCalculatorForm.js.map +1 -1
- package/mobile/lib/components/Calculator/constants.js +1 -1
- package/mobile/lib/components/Calculator/constants.js.map +1 -1
- package/mobile/lib/components/Calculator/rangeHelpers.d.ts +1 -0
- package/mobile/lib/components/Calculator/rangeHelpers.js +2 -0
- package/mobile/lib/components/Calculator/rangeHelpers.js.map +1 -1
- package/mobile/lib/components/Calculator/renderMonthsInput.d.ts +1 -0
- package/mobile/lib/components/Calculator/renderMonthsInput.js +3 -2
- package/mobile/lib/components/Calculator/renderMonthsInput.js.map +1 -1
- package/mobile/lib/components/Calculator/useCreditCalculatorParams.js +27 -29
- package/mobile/lib/components/Calculator/useCreditCalculatorParams.js.map +1 -1
- package/mobile/lib/components/Calculator/useDepositCalculatorParams.d.ts +3 -1
- package/mobile/lib/components/Calculator/useDepositCalculatorParams.js +22 -6
- package/mobile/lib/components/Calculator/useDepositCalculatorParams.js.map +1 -1
- package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +2 -6
- package/mobile/lib/components/Filtration/Filtration.js +1 -1
- package/mobile/lib/components/Filtration/Filtration.js.map +1 -1
- package/mobile/lib/components/Filtration/FiltrationContent.d.ts +18 -8
- package/mobile/lib/components/Filtration/FiltrationInner.js +9 -5
- package/mobile/lib/components/Filtration/FiltrationInner.js.map +1 -1
- package/mobile/lib/components/Filtration/renderFormItem.js +6 -5
- package/mobile/lib/components/Filtration/renderFormItem.js.map +1 -1
- package/mobile/lib/components/Footer/MediaButton.d.ts +3 -4
- package/mobile/lib/components/Footer/MediaButton.js.map +1 -1
- package/mobile/lib/content-page-repository/ContentPageRepository.d.ts +1 -5
- package/mobile/lib/content-page-repository/ContentPageRepository.js +8 -26
- package/mobile/lib/content-page-repository/ContentPageRepository.js.map +1 -1
- package/mobile/lib/content-page-repository/alignImg.d.ts +9 -0
- package/mobile/lib/content-page-repository/alignImg.js +17 -0
- package/mobile/lib/content-page-repository/alignImg.js.map +1 -0
- package/mobile/lib/content-page-repository/computeImgOutputPath.d.ts +3 -0
- package/mobile/lib/content-page-repository/computeImgOutputPath.js +12 -0
- package/mobile/lib/content-page-repository/computeImgOutputPath.js.map +1 -0
- package/mobile/lib/content-page-repository/resizeImg.d.ts +3 -0
- package/mobile/lib/content-page-repository/resizeImg.js +13 -0
- package/mobile/lib/content-page-repository/resizeImg.js.map +1 -0
- package/mobile/lib/content-page-repository/transformContentPage.d.ts +1 -0
- package/mobile/lib/content-page-repository/transformContentPage.js +23 -18
- package/mobile/lib/content-page-repository/transformContentPage.js.map +1 -1
- package/mobile/lib/content-page-repository/transformImg.d.ts +6 -5
- package/mobile/lib/content-page-repository/transformImg.js +26 -76
- package/mobile/lib/content-page-repository/transformImg.js.map +1 -1
- package/mobile/lib/content-page-repository/transformPicture.d.ts +1 -1
- package/mobile/lib/content-page-repository/transformPicture.js +8 -16
- package/mobile/lib/content-page-repository/transformPicture.js.map +1 -1
- package/mobile/lib/ui-kit/InputListRange/InputListRange.d.ts +2 -0
- package/mobile/lib/ui-kit/InputListRange/InputListRange.js +39 -0
- package/mobile/lib/ui-kit/InputListRange/InputListRange.js.map +1 -0
- package/mobile/lib/ui-kit/InputListRange/InputListRangeProps.d.ts +10 -0
- package/mobile/lib/ui-kit/InputListRange/InputListRangeProps.js +2 -0
- package/mobile/lib/ui-kit/InputListRange/InputListRangeProps.js.map +1 -0
- package/mobile/lib/ui-kit/Select/Select.js +2 -1
- package/mobile/lib/ui-kit/Select/Select.js.map +1 -1
- package/mobile/lib/utils/arrayByRange.d.ts +1 -0
- package/mobile/lib/utils/arrayByRange.js +2 -0
- package/mobile/lib/utils/arrayByRange.js.map +1 -0
- package/mobile/lib/utils/isPictureSizeEmpty.d.ts +2 -2
- package/mobile/lib/utils/isPictureSizeEmpty.js +1 -1
- package/mobile/lib/utils/isPictureSizeEmpty.js.map +1 -1
- package/mobile/lib/utils/mergeIntervals.d.ts +1 -0
- package/mobile/lib/utils/mergeIntervals.js +17 -0
- package/mobile/lib/utils/mergeIntervals.js.map +1 -0
- package/mobile/src/components/Calculator/Calculator.example.json +3 -1
- package/mobile/src/components/Calculator/CalculatorContent.ts +20 -19
- package/mobile/src/components/Calculator/CreditCalculatorForm.tsx +6 -7
- package/mobile/src/components/Calculator/DepositCalculatorForm.tsx +48 -15
- package/mobile/src/components/Calculator/constants.ts +1 -1
- package/mobile/src/components/Calculator/rangeHelpers.ts +10 -0
- package/mobile/src/components/Calculator/renderMonthsInput.tsx +13 -2
- package/mobile/src/components/Calculator/useCreditCalculatorParams.ts +8 -10
- package/mobile/src/components/Calculator/useDepositCalculatorParams.ts +36 -9
- package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.example.json +1 -2
- package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCardContent.ts +2 -8
- package/mobile/src/components/Filtration/Filtration.example.json +39 -19
- package/mobile/src/components/Filtration/Filtration.tsx +3 -8
- package/mobile/src/components/Filtration/FiltrationContent.ts +19 -8
- package/mobile/src/components/Filtration/FiltrationInner.tsx +31 -12
- package/mobile/src/components/Filtration/renderFormItem.tsx +20 -20
- package/mobile/src/components/Footer/MediaButton.tsx +3 -5
- package/mobile/src/components/RichTextBlock/RichTextBlock.example.json +1 -1
- package/mobile/src/content-page-repository/ContentPageRepository.ts +8 -40
- package/mobile/src/content-page-repository/alignImg.ts +32 -0
- package/mobile/src/content-page-repository/computeImgOutputPath.ts +20 -0
- package/mobile/src/content-page-repository/resizeImg.ts +18 -0
- package/mobile/src/content-page-repository/transformContentPage.ts +25 -18
- package/mobile/src/content-page-repository/transformImg.ts +49 -121
- package/mobile/src/content-page-repository/transformPicture.ts +9 -21
- package/mobile/src/ui-kit/InputListRange/InputListRange.tsx +99 -0
- package/mobile/src/ui-kit/InputListRange/InputListRangeProps.ts +11 -0
- package/mobile/src/ui-kit/Select/Select.tsx +8 -1
- package/mobile/src/utils/arrayByRange.ts +4 -0
- package/mobile/src/utils/isPictureSizeEmpty.ts +3 -3
- package/mobile/src/utils/mergeIntervals.ts +19 -0
- package/package.json +1 -1
- package/src/components/Calculator/Calculator.example.json +3 -1
- package/src/components/Calculator/Calculator.fixture.tsx +4 -0
- package/src/components/Calculator/CalculatorContent.ts +20 -19
- package/src/components/Calculator/CreditCalculatorForm.tsx +6 -7
- package/src/components/Calculator/DepositCalculatorForm.tsx +48 -15
- package/src/components/Calculator/constants.ts +1 -1
- package/src/components/Calculator/rangeHelpers.ts +10 -0
- package/src/components/Calculator/renderMonthsInput.tsx +13 -2
- package/src/components/Calculator/useCreditCalculatorParams.ts +8 -10
- package/src/components/Calculator/useDepositCalculatorParams.ts +36 -9
- package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.example.json +1 -2
- package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.fixture.tsx +0 -9
- package/src/components/CarouselRecommendationCard/CarouselRecommendationCardContent.ts +2 -8
- package/src/components/Filtration/Filtration.example.json +39 -19
- package/src/components/Filtration/Filtration.fixture.tsx +36 -20
- package/src/components/Filtration/Filtration.tsx +3 -8
- package/src/components/Filtration/FiltrationContent.ts +19 -8
- package/src/components/Filtration/FiltrationInner.tsx +31 -12
- package/src/components/Filtration/renderFormItem.tsx +20 -20
- package/src/components/Footer/MediaButton.tsx +3 -5
- package/src/components/RichTextBlock/RichTextBlock.example.json +1 -1
- package/src/content-page-repository/ContentPageRepository.ts +8 -40
- package/src/content-page-repository/alignImg.ts +32 -0
- package/src/content-page-repository/computeImgOutputPath.ts +20 -0
- package/src/content-page-repository/resizeImg.ts +18 -0
- package/src/content-page-repository/transformContentPage.ts +25 -18
- package/src/content-page-repository/transformImg.ts +49 -121
- package/src/content-page-repository/transformPicture.ts +9 -21
- package/src/ui-kit/InputListRange/InputListRange.tsx +99 -0
- package/src/ui-kit/InputListRange/InputListRangeProps.ts +11 -0
- package/src/ui-kit/Select/Select.tsx +8 -1
- package/src/utils/arrayByRange.ts +4 -0
- package/src/utils/isPictureSizeEmpty.ts +3 -3
- package/src/utils/mergeIntervals.ts +19 -0
- package/bundle/content-page-repository/transformImgPath.d.ts +0 -8
- package/dist/content-page-repository/transformImgPath.d.ts +0 -8
- package/dist/content-page-repository/transformImgPath.js +0 -22
- package/dist/content-page-repository/transformImgPath.js.map +0 -1
- package/lib/content-page-repository/transformImgPath.d.ts +0 -8
- package/lib/content-page-repository/transformImgPath.js +0 -16
- package/lib/content-page-repository/transformImgPath.js.map +0 -1
- package/mobile/bundle/content-page-repository/transformImgPath.d.ts +0 -8
- package/mobile/dist/content-page-repository/transformImgPath.d.ts +0 -8
- package/mobile/dist/content-page-repository/transformImgPath.js +0 -22
- package/mobile/dist/content-page-repository/transformImgPath.js.map +0 -1
- package/mobile/lib/content-page-repository/transformImgPath.d.ts +0 -8
- package/mobile/lib/content-page-repository/transformImgPath.js +0 -16
- package/mobile/lib/content-page-repository/transformImgPath.js.map +0 -1
- package/mobile/src/content-page-repository/transformImgPath.ts +0 -30
- package/src/content-page-repository/transformImgPath.ts +0 -30
|
@@ -3,35 +3,55 @@
|
|
|
3
3
|
"filtrationSchema": {
|
|
4
4
|
"propertyType": {
|
|
5
5
|
"title": "Тип недвижимости",
|
|
6
|
-
"type": "
|
|
7
|
-
"
|
|
8
|
-
|
|
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": "
|
|
13
|
-
"
|
|
14
|
-
|
|
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": "
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
"
|
|
22
|
-
"
|
|
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": "
|
|
32
|
-
"
|
|
33
|
-
|
|
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(
|
|
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?:
|
|
52
|
+
propertyType?: StringArray;
|
|
51
53
|
/** @title Этап строительства */
|
|
52
|
-
stage?:
|
|
54
|
+
stage?: StringArray;
|
|
53
55
|
/** @title Категории */
|
|
54
|
-
categories?:
|
|
56
|
+
categories?: StringArray;
|
|
55
57
|
/** @title Дополнительно */
|
|
56
|
-
extraOptions?:
|
|
58
|
+
extraOptions?: StringArray;
|
|
57
59
|
};
|
|
58
60
|
|
|
59
61
|
/**
|
|
@@ -67,14 +69,24 @@ export type ResetButton = {
|
|
|
67
69
|
/**
|
|
68
70
|
* @title Цвет кнопки
|
|
69
71
|
*/
|
|
70
|
-
|
|
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
|
-
/**
|
|
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
|
-
|
|
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
|
|
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(
|
|
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,
|
|
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 '
|
|
13
|
-
return
|
|
12
|
+
case 'array':
|
|
13
|
+
return renderCheckboxes(key, register)(item);
|
|
14
14
|
default:
|
|
15
15
|
return null;
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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 {
|
|
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 {
|
|
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
|
|
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": "<
|
|
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
|
-
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
26
|
+
return JSON.parse(await readFile(generatedPagePath(filePath), 'utf-8'));
|
|
27
|
+
}
|
|
61
28
|
|
|
62
|
-
|
|
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
|
-
|
|
21
|
-
const isMarkdown =
|
|
22
|
-
const isHTML =
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return await transformPicture(
|
|
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
|
-
|
|
43
|
+
await writeFile(generatedPagePath(pagePath), JSON.stringify(result), 'utf-8');
|
|
42
44
|
|
|
43
|
-
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
44
47
|
|
|
45
|
-
const
|
|
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');
|